From b6e4ab8b357e404c4454894a0a54d44fe61428ca Mon Sep 17 00:00:00 2001 From: "aapanel.com" Date: Fri, 7 Nov 2025 15:30:29 +0800 Subject: [PATCH] Update to v7.55.0 --- BT-Panel | 39 + BTPanel/__init__.py | 31 +- BTPanel/languages/all/cht.json | 228 +- BTPanel/languages/all/de.json | 258 +- BTPanel/languages/all/fra.json | 218 +- BTPanel/languages/all/ind.json | 181 +- BTPanel/languages/all/it.json | 613 +- BTPanel/languages/all/kor.json | 619 +- BTPanel/languages/all/pt.json | 181 +- BTPanel/languages/all/ru.json | 175 +- BTPanel/languages/all/spa.json | 206 +- BTPanel/languages/all/tur.json | 7340 ++++---- BTPanel/languages/all/uk.json | 168 +- BTPanel/languages/all/vie.json | 183 +- BTPanel/languages/all/zh.json | 2994 ++- BTPanel/languages/cht/server.json | 2411 +-- BTPanel/languages/de/server.json | 2450 +-- BTPanel/languages/en/server.json | 2362 +-- BTPanel/languages/fra/server.json | 2397 +-- BTPanel/languages/ind/server.json | 2375 +-- BTPanel/languages/it/server.json | 2701 +-- BTPanel/languages/kor/server.json | 2641 +-- BTPanel/languages/pt/server.json | 2363 +-- BTPanel/languages/ru/server.json | 2360 +-- BTPanel/languages/settings.json | 21 +- BTPanel/languages/spa/server.json | 2346 +-- BTPanel/languages/tur/server.json | 7294 ++++---- BTPanel/languages/uk/server.json | 2362 +-- BTPanel/languages/vie/server.json | 2370 +-- BTPanel/languages/zh/server.json | 3969 +++- BTPanel/static/vite/css/Permission.css | 2 +- BTPanel/static/vite/css/UploadFile.css | 2 +- BTPanel/static/vite/css/index109.css | 2 +- BTPanel/static/vite/css/index18.css | 2 +- BTPanel/static/vite/css/index25.css | 2 +- BTPanel/static/vite/css/index28.css | 2 +- BTPanel/static/vite/css/index29.css | 2 +- BTPanel/static/vite/css/index30.css | 2 +- BTPanel/static/vite/css/index31.css | 2 +- BTPanel/static/vite/css/index48.css | 2 +- BTPanel/static/vite/css/index53.css | 2 +- BTPanel/static/vite/css/index57.css | 2 +- BTPanel/static/vite/css/index62.css | 2 +- BTPanel/static/vite/css/index63.css | 2 +- BTPanel/static/vite/css/index65.css | 2 +- BTPanel/static/vite/css/index8.css | 2 +- BTPanel/static/vite/css/index83.css | 2 +- BTPanel/static/vite/css/index87.css | 2 +- BTPanel/static/vite/css/index97.css | 2 +- BTPanel/static/vite/css/table.css | 1 + BTPanel/static/vite/images/1.png | Bin 0 -> 73389 bytes BTPanel/static/vite/images/10.png | Bin 0 -> 141057 bytes BTPanel/static/vite/images/11.png | Bin 0 -> 78994 bytes BTPanel/static/vite/images/12.png | Bin 0 -> 133343 bytes BTPanel/static/vite/images/13.png | Bin 0 -> 54936 bytes BTPanel/static/vite/images/14.png | Bin 0 -> 134689 bytes BTPanel/static/vite/images/15.png | Bin 0 -> 106791 bytes BTPanel/static/vite/images/16.png | Bin 0 -> 127296 bytes BTPanel/static/vite/images/17.png | Bin 0 -> 117638 bytes BTPanel/static/vite/images/18.png | Bin 0 -> 267527 bytes BTPanel/static/vite/images/19.png | Bin 0 -> 38612 bytes BTPanel/static/vite/images/2.png | Bin 0 -> 139495 bytes BTPanel/static/vite/images/20.png | Bin 0 -> 134019 bytes BTPanel/static/vite/images/3.png | Bin 0 -> 53270 bytes BTPanel/static/vite/images/4.png | Bin 0 -> 138352 bytes BTPanel/static/vite/images/5.png | Bin 0 -> 105802 bytes BTPanel/static/vite/images/6.png | Bin 0 -> 130922 bytes BTPanel/static/vite/images/7.png | Bin 0 -> 119413 bytes BTPanel/static/vite/images/8.png | Bin 0 -> 267995 bytes BTPanel/static/vite/images/9.png | Bin 0 -> 48106 bytes BTPanel/static/vite/images/blockade-dark.png | Bin 42744 -> 0 bytes BTPanel/static/vite/images/blockade.png | Bin 85537 -> 0 bytes BTPanel/static/vite/images/git-ps.png | Bin 0 -> 93332 bytes BTPanel/static/vite/images/global-dark.png | Bin 42228 -> 0 bytes BTPanel/static/vite/images/global.png | Bin 84181 -> 0 bytes BTPanel/static/vite/images/overview-dark.png | Bin 65650 -> 0 bytes BTPanel/static/vite/images/overview.png | Bin 119273 -> 61928 bytes BTPanel/static/vite/images/overview2.png | Bin 61928 -> 0 bytes BTPanel/static/vite/images/report-dark.png | Bin 29625 -> 0 bytes BTPanel/static/vite/images/report.png | Bin 99028 -> 0 bytes .../soft-ico/dkapp/ico-dkapp_aingdesk.png | Bin 0 -> 15328 bytes .../dkapp/ico-dkapp_aingdesk_and_ollama.png | Bin 0 -> 15328 bytes .../soft-ico/dkapp/ico-dkapp_allinssl.png | Bin 0 -> 6408 bytes .../soft-ico/dkapp/ico-dkapp_astrbot.png | Bin 0 -> 3270 bytes .../soft-ico/dkapp/ico-dkapp_baidunetdisk.png | Bin 0 -> 6312 bytes .../soft-ico/dkapp/ico-dkapp_billionmail.png | Bin 92354 -> 6290 bytes .../soft-ico/dkapp/ico-dkapp_btshieldml.png | Bin 0 -> 4802 bytes .../soft-ico/dkapp/ico-dkapp_casdoor.png | Bin 0 -> 7613 bytes .../soft-ico/dkapp/ico-dkapp_coze-studio.png | Bin 0 -> 6927 bytes .../soft-ico/dkapp/ico-dkapp_dify_v180.png | Bin 0 -> 5898 bytes .../soft-ico/dkapp/ico-dkapp_dify_v190.png | Bin 0 -> 5898 bytes .../soft-ico/dkapp/ico-dkapp_erpnext.png | Bin 0 -> 3188 bytes .../soft-ico/dkapp/ico-dkapp_fastgpt.png | Bin 0 -> 5908 bytes .../images/soft-ico/dkapp/ico-dkapp_gitea.png | Bin 0 -> 5885 bytes .../images/soft-ico/dkapp/ico-dkapp_halo.png | Bin 0 -> 7289 bytes .../soft-ico/dkapp/ico-dkapp_jaeger.png | Bin 0 -> 7144 bytes .../soft-ico/dkapp/ico-dkapp_lsky_pros.png | Bin 0 -> 5923 bytes .../ico-dkapp_mcpserver_supergateway.png | Bin 0 -> 11218 bytes .../soft-ico/dkapp/ico-dkapp_milvus.png | Bin 0 -> 6413 bytes .../images/soft-ico/dkapp/ico-dkapp_mliev.png | Bin 0 -> 4220 bytes .../dkapp/ico-dkapp_ollama_and_openwebui.png | Bin 0 -> 4126 bytes .../soft-ico/dkapp/ico-dkapp_openlist.png | Bin 0 -> 5901 bytes .../images/soft-ico/dkapp/ico-dkapp_oryx.png | Bin 0 -> 14093 bytes .../soft-ico/dkapp/ico-dkapp_plausible.png | Bin 0 -> 5190 bytes .../dkapp/ico-dkapp_pterodactyl_china.png | Bin 0 -> 6043 bytes .../soft-ico/dkapp/ico-dkapp_ragflow.png | Bin 0 -> 6407 bytes .../soft-ico/dkapp/ico-dkapp_rustdesk_pro.png | Bin 0 -> 5002 bytes .../soft-ico/dkapp/ico-dkapp_rustfs.png | Bin 0 -> 4558 bytes .../soft-ico/dkapp/ico-dkapp_searxng.png | Bin 0 -> 5204 bytes .../dkapp/ico-dkapp_tangsengdaodao.png | Bin 0 -> 247475 bytes .../soft-ico/dkapp/ico-dkapp_tdengine.png | Bin 0 -> 2605 bytes .../soft-ico/dkapp/ico-dkapp_thinkai.png | Bin 0 -> 4913 bytes .../soft-ico/dkapp/ico-dkapp_thinkcmf.png | Bin 0 -> 3475 bytes .../images/soft-ico/dkapp/ico-dkapp_ujcms.png | Bin 0 -> 3437 bytes .../soft-ico/dkapp/ico-dkapp_wireshark.png | Bin 0 -> 6599 bytes .../images/soft-ico/dkapp/ico-dkapp_zurl.png | Bin 0 -> 3618 bytes BTPanel/static/vite/images/website-dark.png | Bin 34745 -> 0 bytes BTPanel/static/vite/images/website.png | Bin 62933 -> 0 bytes BTPanel/static/vite/js/Backup-legacy.js | 2 +- BTPanel/static/vite/js/Backup.js | 2 +- BTPanel/static/vite/js/CalcVerify-legacy.js | 2 +- BTPanel/static/vite/js/CalcVerify.js | 2 +- BTPanel/static/vite/js/Compression-legacy.js | 2 +- BTPanel/static/vite/js/Compression.js | 2 +- BTPanel/static/vite/js/CveSection-legacy.js | 2 +- BTPanel/static/vite/js/CveSection.js | 2 +- BTPanel/static/vite/js/Decompress-legacy.js | 2 +- BTPanel/static/vite/js/Decompress.js | 2 +- BTPanel/static/vite/js/Del-legacy.js | 2 +- BTPanel/static/vite/js/Del.js | 2 +- BTPanel/static/vite/js/FavoriteList-legacy.js | 2 +- BTPanel/static/vite/js/FavoriteList.js | 2 +- BTPanel/static/vite/js/FileTask-legacy.js | 2 +- BTPanel/static/vite/js/FileTask.js | 2 +- .../static/vite/js/HighRiskSection-legacy.js | 2 +- BTPanel/static/vite/js/HighRiskSection.js | 2 +- BTPanel/static/vite/js/Html.js | 16 - .../static/vite/js/LowRiskSection-legacy.js | 2 +- BTPanel/static/vite/js/LowRiskSection.js | 2 +- .../static/vite/js/MaliciousSection-legacy.js | 2 +- BTPanel/static/vite/js/MaliciousSection.js | 2 +- .../static/vite/js/MidRiskSection-legacy.js | 2 +- BTPanel/static/vite/js/MidRiskSection.js | 2 +- BTPanel/static/vite/js/PasteConfirm-legacy.js | 2 +- BTPanel/static/vite/js/PasteConfirm.js | 2 +- .../vite/js/PasteSingleConfirm-legacy.js | 2 +- BTPanel/static/vite/js/PasteSingleConfirm.js | 2 +- BTPanel/static/vite/js/Permission-legacy.js | 2 +- BTPanel/static/vite/js/Permission.js | 2 +- BTPanel/static/vite/js/Progress-legacy.js | 2 +- BTPanel/static/vite/js/Progress.js | 2 +- BTPanel/static/vite/js/Properties-legacy.js | 2 +- BTPanel/static/vite/js/Properties.js | 2 +- BTPanel/static/vite/js/Recycle-legacy.js | 2 +- BTPanel/static/vite/js/Recycle.js | 2 +- .../static/vite/js/RemoteDownload-legacy.js | 2 +- BTPanel/static/vite/js/RemoteDownload.js | 2 +- .../vite/js/ResourceManagerWindow-legacy.js | 2 +- .../static/vite/js/ResourceManagerWindow.js | 2 +- .../vite/js/SearchFileContent-legacy.js | 2 +- BTPanel/static/vite/js/SearchFileContent.js | 2 +- .../static/vite/js/ServerSecSection-legacy.js | 2 +- BTPanel/static/vite/js/ServerSecSection.js | 2 +- BTPanel/static/vite/js/Share-legacy.js | 2 +- BTPanel/static/vite/js/Share.js | 2 +- ..._vue_type_script_setup_true_lang-legacy.js | 2 +- ...ail.vue_vue_type_script_setup_true_lang.js | 2 +- BTPanel/static/vite/js/ShareList-legacy.js | 2 +- BTPanel/static/vite/js/ShareList.js | 2 +- BTPanel/static/vite/js/SoftLink-legacy.js | 2 +- BTPanel/static/vite/js/SoftLink.js | 2 +- BTPanel/static/vite/js/UploadFile-legacy.js | 2 +- BTPanel/static/vite/js/UploadFile.js | 2 +- .../static/vite/js/WebVulnSection-legacy.js | 2 +- BTPanel/static/vite/js/WebVulnSection.js | 2 +- BTPanel/static/vite/js/accountState-legacy.js | 2 +- BTPanel/static/vite/js/accountState.js | 2 +- BTPanel/static/vite/js/alarm-legacy.js | 2 +- BTPanel/static/vite/js/alarm.js | 4 +- .../vite/js/app-install-third-legacy.js | 2 +- BTPanel/static/vite/js/app-install-third.js | 2 +- BTPanel/static/vite/js/app-update-legacy.js | 2 +- BTPanel/static/vite/js/app-update.js | 2 +- BTPanel/static/vite/js/attack-legacy.js | 2 +- BTPanel/static/vite/js/attack.js | 2 +- BTPanel/static/vite/js/backup-error-legacy.js | 2 +- BTPanel/static/vite/js/backup-error.js | 2 +- BTPanel/static/vite/js/backup-info-legacy.js | 2 +- BTPanel/static/vite/js/backup-info.js | 2 +- .../static/vite/js/backup-success-legacy.js | 2 +- BTPanel/static/vite/js/backup-success.js | 2 +- BTPanel/static/vite/js/batch-legacy.js | 2 +- BTPanel/static/vite/js/batch-legacy2.js | 2 +- BTPanel/static/vite/js/batch-legacy3.js | 2 +- BTPanel/static/vite/js/batch.js | 2 +- BTPanel/static/vite/js/batch2.js | 2 +- BTPanel/static/vite/js/batch3.js | 2 +- BTPanel/static/vite/js/campaign-legacy.js | 2 +- BTPanel/static/vite/js/campaign.js | 2 +- BTPanel/static/vite/js/category-legacy.js | 2 +- BTPanel/static/vite/js/category.js | 2 +- BTPanel/static/vite/js/cc-legacy.js | 2 +- BTPanel/static/vite/js/cc.js | 2 +- .../vite/js/change-verification-legacy.js | 2 +- BTPanel/static/vite/js/change-verification.js | 2 +- BTPanel/static/vite/js/clear-legacy.js | 2 +- BTPanel/static/vite/js/clear.js | 2 +- BTPanel/static/vite/js/common-legacy.js | 4 +- BTPanel/static/vite/js/common.js | 2 +- BTPanel/static/vite/js/compiler-legacy.js | 2 +- BTPanel/static/vite/js/compiler.js | 2 +- BTPanel/static/vite/js/config-legacy.js | 2 +- BTPanel/static/vite/js/config-legacy10.js | 2 +- BTPanel/static/vite/js/config-legacy11.js | 2 +- BTPanel/static/vite/js/config-legacy12.js | 2 +- BTPanel/static/vite/js/config-legacy13.js | 2 +- BTPanel/static/vite/js/config-legacy14.js | 2 +- BTPanel/static/vite/js/config-legacy2.js | 2 +- BTPanel/static/vite/js/config-legacy3.js | 2 +- BTPanel/static/vite/js/config-legacy4.js | 2 +- BTPanel/static/vite/js/config-legacy5.js | 2 +- BTPanel/static/vite/js/config-legacy6.js | 2 +- BTPanel/static/vite/js/config-legacy7.js | 2 +- BTPanel/static/vite/js/config-legacy8.js | 2 +- BTPanel/static/vite/js/config-legacy9.js | 2 +- BTPanel/static/vite/js/config.js | 2 +- BTPanel/static/vite/js/config10.js | 2 +- BTPanel/static/vite/js/config11.js | 2 +- BTPanel/static/vite/js/config12.js | 2 +- BTPanel/static/vite/js/config13.js | 2 +- BTPanel/static/vite/js/config14.js | 2 +- BTPanel/static/vite/js/config2.js | 2 +- BTPanel/static/vite/js/config3.js | 2 +- BTPanel/static/vite/js/config4.js | 2 +- BTPanel/static/vite/js/config5.js | 2 +- BTPanel/static/vite/js/config6.js | 2 +- BTPanel/static/vite/js/config7.js | 2 +- BTPanel/static/vite/js/config8.js | 2 +- BTPanel/static/vite/js/config9.js | 2 +- BTPanel/static/vite/js/count-legacy.js | 2 +- BTPanel/static/vite/js/count.js | 2 +- BTPanel/static/vite/js/custom-legacy.js | 2 +- BTPanel/static/vite/js/custom.js | 2 +- BTPanel/static/vite/js/details-legacy.js | 2 +- BTPanel/static/vite/js/details-legacy2.js | 2 +- BTPanel/static/vite/js/details-legacy3.js | 2 +- BTPanel/static/vite/js/details-legacy4.js | 2 +- BTPanel/static/vite/js/details.js | 2 +- BTPanel/static/vite/js/details2.js | 2 +- BTPanel/static/vite/js/details3.js | 2 +- BTPanel/static/vite/js/details4.js | 2 +- BTPanel/static/vite/js/disable-legacy.js | 2 +- BTPanel/static/vite/js/disable.js | 2 +- BTPanel/static/vite/js/disk-legacy.js | 2 +- BTPanel/static/vite/js/disk.js | 2 +- BTPanel/static/vite/js/domain-form-legacy.js | 2 +- BTPanel/static/vite/js/domain-form.js | 2 +- BTPanel/static/vite/js/domain-input-legacy.js | 2 +- BTPanel/static/vite/js/domain-input.js | 2 +- .../vite/js/domain-verification-legacy.js | 2 +- BTPanel/static/vite/js/domain-verification.js | 4 +- BTPanel/static/vite/js/echarts-legacy.js | 2 +- BTPanel/static/vite/js/echarts.js | 2 +- BTPanel/static/vite/js/echartsGl-legacy.js | 2 +- BTPanel/static/vite/js/echartsGl.js | 2 +- BTPanel/static/vite/js/expired-legacy.js | 2 +- BTPanel/static/vite/js/expired.js | 2 +- BTPanel/static/vite/js/export-legacy.js | 2 +- BTPanel/static/vite/js/export-legacy2.js | 2 +- BTPanel/static/vite/js/export-legacy3.js | 2 +- BTPanel/static/vite/js/export.js | 2 +- BTPanel/static/vite/js/export2.js | 2 +- BTPanel/static/vite/js/export3.js | 2 +- BTPanel/static/vite/js/ext-prompt.js | 3162 ---- BTPanel/static/vite/js/ext-searchbox.js | 385 - BTPanel/static/vite/js/file-detail-legacy.js | 2 +- BTPanel/static/vite/js/file-detail.js | 4 +- BTPanel/static/vite/js/file-edit-legacy.js | 2 +- BTPanel/static/vite/js/file-edit.js | 4 +- BTPanel/static/vite/js/file-legacy.js | 2 +- BTPanel/static/vite/js/file-legacy2.js | 2 +- BTPanel/static/vite/js/file-version.js | 2 +- BTPanel/static/vite/js/file.js | 2 +- BTPanel/static/vite/js/file2.js | 4 +- BTPanel/static/vite/js/filter-legacy.js | 2 +- BTPanel/static/vite/js/filter.js | 2 +- BTPanel/static/vite/js/form-legacy.js | 2 +- BTPanel/static/vite/js/form-legacy10.js | 2 +- BTPanel/static/vite/js/form-legacy2.js | 2 +- BTPanel/static/vite/js/form-legacy3.js | 2 +- BTPanel/static/vite/js/form-legacy4.js | 2 +- BTPanel/static/vite/js/form-legacy5.js | 2 +- BTPanel/static/vite/js/form-legacy6.js | 2 +- BTPanel/static/vite/js/form-legacy7.js | 2 +- BTPanel/static/vite/js/form-legacy8.js | 2 +- BTPanel/static/vite/js/form-legacy9.js | 2 +- BTPanel/static/vite/js/form.js | 2 +- ..._vue_type_script_setup_true_lang-legacy.js | 2 +- ...vue_type_script_setup_true_lang-legacy2.js | 2 +- ...orm.vue_vue_type_script_setup_true_lang.js | 2 +- ...rm.vue_vue_type_script_setup_true_lang2.js | 2 +- BTPanel/static/vite/js/form10.js | 2 +- BTPanel/static/vite/js/form2.js | 2 +- BTPanel/static/vite/js/form3.js | 2 +- BTPanel/static/vite/js/form4.js | 2 +- BTPanel/static/vite/js/form5.js | 2 +- BTPanel/static/vite/js/form6.js | 2 +- BTPanel/static/vite/js/form7.js | 2 +- BTPanel/static/vite/js/form8.js | 2 +- BTPanel/static/vite/js/form9.js | 2 +- BTPanel/static/vite/js/ftp-legacy.js | 2 +- BTPanel/static/vite/js/ftp.js | 2 +- BTPanel/static/vite/js/git-ps-legacy.js | 1 + BTPanel/static/vite/js/git-ps.js | 1 + BTPanel/static/vite/js/hooks-legacy.js | 2 +- BTPanel/static/vite/js/hooks.js | 2 +- BTPanel/static/vite/js/html2pdf-legacy.js | 242 +- BTPanel/static/vite/js/html2pdf.js | 784 +- BTPanel/static/vite/js/http-legacy.js | 2 +- BTPanel/static/vite/js/http.js | 2 +- BTPanel/static/vite/js/import-legacy.js | 2 +- BTPanel/static/vite/js/import.js | 2 +- BTPanel/static/vite/js/index-legacy.js | 2 +- BTPanel/static/vite/js/index-legacy10.js | 2 +- BTPanel/static/vite/js/index-legacy100.js | 2 +- BTPanel/static/vite/js/index-legacy101.js | 10 +- BTPanel/static/vite/js/index-legacy102.js | 2 +- BTPanel/static/vite/js/index-legacy103.js | 2 +- BTPanel/static/vite/js/index-legacy104.js | 2 +- BTPanel/static/vite/js/index-legacy105.js | 2 +- BTPanel/static/vite/js/index-legacy106.js | 2 +- BTPanel/static/vite/js/index-legacy107.js | 2 +- BTPanel/static/vite/js/index-legacy108.js | 2 +- BTPanel/static/vite/js/index-legacy109.js | 2 +- BTPanel/static/vite/js/index-legacy11.js | 2 +- BTPanel/static/vite/js/index-legacy110.js | 2 +- BTPanel/static/vite/js/index-legacy111.js | 2 +- BTPanel/static/vite/js/index-legacy112.js | 2 +- BTPanel/static/vite/js/index-legacy113.js | 2 +- BTPanel/static/vite/js/index-legacy114.js | 2 +- BTPanel/static/vite/js/index-legacy115.js | 2 +- BTPanel/static/vite/js/index-legacy116.js | 2 +- BTPanel/static/vite/js/index-legacy117.js | 2 +- BTPanel/static/vite/js/index-legacy118.js | 2 +- BTPanel/static/vite/js/index-legacy119.js | 2 +- BTPanel/static/vite/js/index-legacy12.js | 2 +- BTPanel/static/vite/js/index-legacy120.js | 2 +- BTPanel/static/vite/js/index-legacy121.js | 2 +- BTPanel/static/vite/js/index-legacy122.js | 2 +- BTPanel/static/vite/js/index-legacy123.js | 2 +- BTPanel/static/vite/js/index-legacy124.js | 2 +- BTPanel/static/vite/js/index-legacy125.js | 2 +- BTPanel/static/vite/js/index-legacy126.js | 2 +- BTPanel/static/vite/js/index-legacy127.js | 2 +- BTPanel/static/vite/js/index-legacy128.js | 2 +- BTPanel/static/vite/js/index-legacy129.js | 2 +- BTPanel/static/vite/js/index-legacy13.js | 2 +- BTPanel/static/vite/js/index-legacy130.js | 2 +- BTPanel/static/vite/js/index-legacy131.js | 2 +- BTPanel/static/vite/js/index-legacy132.js | 2 +- BTPanel/static/vite/js/index-legacy133.js | 2 +- BTPanel/static/vite/js/index-legacy134.js | 2 +- BTPanel/static/vite/js/index-legacy135.js | 2 +- BTPanel/static/vite/js/index-legacy136.js | 2 +- BTPanel/static/vite/js/index-legacy137.js | 2 +- BTPanel/static/vite/js/index-legacy138.js | 2 +- BTPanel/static/vite/js/index-legacy139.js | 2 +- BTPanel/static/vite/js/index-legacy14.js | 2 +- BTPanel/static/vite/js/index-legacy140.js | 2 +- BTPanel/static/vite/js/index-legacy141.js | 2 +- BTPanel/static/vite/js/index-legacy142.js | 2 +- BTPanel/static/vite/js/index-legacy143.js | 2 +- BTPanel/static/vite/js/index-legacy144.js | 2 +- BTPanel/static/vite/js/index-legacy145.js | 2 +- BTPanel/static/vite/js/index-legacy146.js | 2 +- BTPanel/static/vite/js/index-legacy147.js | 2 +- BTPanel/static/vite/js/index-legacy148.js | 2 +- BTPanel/static/vite/js/index-legacy149.js | 2 +- BTPanel/static/vite/js/index-legacy15.js | 2 +- BTPanel/static/vite/js/index-legacy150.js | 2 +- BTPanel/static/vite/js/index-legacy151.js | 2 +- BTPanel/static/vite/js/index-legacy152.js | 2 +- BTPanel/static/vite/js/index-legacy153.js | 2 +- BTPanel/static/vite/js/index-legacy154.js | 2 +- BTPanel/static/vite/js/index-legacy155.js | 2 +- BTPanel/static/vite/js/index-legacy156.js | 2 +- BTPanel/static/vite/js/index-legacy157.js | 2 +- BTPanel/static/vite/js/index-legacy158.js | 2 +- BTPanel/static/vite/js/index-legacy159.js | 2 +- BTPanel/static/vite/js/index-legacy16.js | 2 +- BTPanel/static/vite/js/index-legacy160.js | 2 +- BTPanel/static/vite/js/index-legacy161.js | 2 +- BTPanel/static/vite/js/index-legacy162.js | 2 +- BTPanel/static/vite/js/index-legacy163.js | 2 +- BTPanel/static/vite/js/index-legacy164.js | 2 +- BTPanel/static/vite/js/index-legacy165.js | 2 +- BTPanel/static/vite/js/index-legacy166.js | 2 +- BTPanel/static/vite/js/index-legacy167.js | 2 +- BTPanel/static/vite/js/index-legacy168.js | 2 +- BTPanel/static/vite/js/index-legacy169.js | 2 +- BTPanel/static/vite/js/index-legacy17.js | 2 +- BTPanel/static/vite/js/index-legacy170.js | 2 +- BTPanel/static/vite/js/index-legacy171.js | 2 +- BTPanel/static/vite/js/index-legacy172.js | 2 +- BTPanel/static/vite/js/index-legacy173.js | 2 +- BTPanel/static/vite/js/index-legacy174.js | 2 +- BTPanel/static/vite/js/index-legacy175.js | 2 +- BTPanel/static/vite/js/index-legacy176.js | 2 +- BTPanel/static/vite/js/index-legacy177.js | 10 +- BTPanel/static/vite/js/index-legacy178.js | 2 +- BTPanel/static/vite/js/index-legacy179.js | 10 +- BTPanel/static/vite/js/index-legacy18.js | 2 +- BTPanel/static/vite/js/index-legacy180.js | 2 +- BTPanel/static/vite/js/index-legacy181.js | 2 +- BTPanel/static/vite/js/index-legacy182.js | 2 +- BTPanel/static/vite/js/index-legacy183.js | 2 +- BTPanel/static/vite/js/index-legacy184.js | 2 +- BTPanel/static/vite/js/index-legacy185.js | 2 +- BTPanel/static/vite/js/index-legacy186.js | 2 +- BTPanel/static/vite/js/index-legacy187.js | 2 +- BTPanel/static/vite/js/index-legacy188.js | 2 +- BTPanel/static/vite/js/index-legacy189.js | 2 +- BTPanel/static/vite/js/index-legacy19.js | 2 +- BTPanel/static/vite/js/index-legacy190.js | 2 +- BTPanel/static/vite/js/index-legacy191.js | 2 +- BTPanel/static/vite/js/index-legacy192.js | 2 +- BTPanel/static/vite/js/index-legacy193.js | 2 +- BTPanel/static/vite/js/index-legacy194.js | 2 +- BTPanel/static/vite/js/index-legacy195.js | 2 +- BTPanel/static/vite/js/index-legacy196.js | 2 +- BTPanel/static/vite/js/index-legacy197.js | 2 +- BTPanel/static/vite/js/index-legacy198.js | 2 +- BTPanel/static/vite/js/index-legacy199.js | 2 +- BTPanel/static/vite/js/index-legacy2.js | 2 +- BTPanel/static/vite/js/index-legacy20.js | 2 +- BTPanel/static/vite/js/index-legacy200.js | 2 +- BTPanel/static/vite/js/index-legacy201.js | 2 +- BTPanel/static/vite/js/index-legacy202.js | 2 +- BTPanel/static/vite/js/index-legacy203.js | 2 +- BTPanel/static/vite/js/index-legacy204.js | 2 +- BTPanel/static/vite/js/index-legacy205.js | 2 +- BTPanel/static/vite/js/index-legacy206.js | 2 +- BTPanel/static/vite/js/index-legacy207.js | 2 +- BTPanel/static/vite/js/index-legacy208.js | 2 +- BTPanel/static/vite/js/index-legacy209.js | 2 +- BTPanel/static/vite/js/index-legacy21.js | 2 +- BTPanel/static/vite/js/index-legacy210.js | 2 +- BTPanel/static/vite/js/index-legacy211.js | 2 +- BTPanel/static/vite/js/index-legacy212.js | 2 +- BTPanel/static/vite/js/index-legacy213.js | 2 +- BTPanel/static/vite/js/index-legacy214.js | 2 +- BTPanel/static/vite/js/index-legacy215.js | 2 +- BTPanel/static/vite/js/index-legacy216.js | 2 +- BTPanel/static/vite/js/index-legacy217.js | 2 +- BTPanel/static/vite/js/index-legacy218.js | 2 +- BTPanel/static/vite/js/index-legacy219.js | 2 +- BTPanel/static/vite/js/index-legacy22.js | 2 +- BTPanel/static/vite/js/index-legacy220.js | 2 +- BTPanel/static/vite/js/index-legacy221.js | 2 +- BTPanel/static/vite/js/index-legacy222.js | 2 +- BTPanel/static/vite/js/index-legacy223.js | 2 +- BTPanel/static/vite/js/index-legacy224.js | 2 +- BTPanel/static/vite/js/index-legacy225.js | 2 +- BTPanel/static/vite/js/index-legacy226.js | 2 +- BTPanel/static/vite/js/index-legacy227.js | 2 +- BTPanel/static/vite/js/index-legacy228.js | 2 +- BTPanel/static/vite/js/index-legacy229.js | 2 +- BTPanel/static/vite/js/index-legacy23.js | 2 +- BTPanel/static/vite/js/index-legacy230.js | 2 +- BTPanel/static/vite/js/index-legacy231.js | 2 +- BTPanel/static/vite/js/index-legacy232.js | 2 +- BTPanel/static/vite/js/index-legacy233.js | 2 +- BTPanel/static/vite/js/index-legacy234.js | 2 +- BTPanel/static/vite/js/index-legacy235.js | 2 +- BTPanel/static/vite/js/index-legacy236.js | 2 +- BTPanel/static/vite/js/index-legacy237.js | 2 +- BTPanel/static/vite/js/index-legacy238.js | 2 +- BTPanel/static/vite/js/index-legacy239.js | 2 +- BTPanel/static/vite/js/index-legacy24.js | 2 +- BTPanel/static/vite/js/index-legacy240.js | 2 +- BTPanel/static/vite/js/index-legacy241.js | 2 +- BTPanel/static/vite/js/index-legacy242.js | 2 +- BTPanel/static/vite/js/index-legacy243.js | 2 +- BTPanel/static/vite/js/index-legacy244.js | 2 +- BTPanel/static/vite/js/index-legacy245.js | 2 +- BTPanel/static/vite/js/index-legacy246.js | 2 +- BTPanel/static/vite/js/index-legacy247.js | 2 +- BTPanel/static/vite/js/index-legacy248.js | 2 +- BTPanel/static/vite/js/index-legacy249.js | 2 +- BTPanel/static/vite/js/index-legacy25.js | 2 +- BTPanel/static/vite/js/index-legacy250.js | 2 +- BTPanel/static/vite/js/index-legacy251.js | 2 +- BTPanel/static/vite/js/index-legacy252.js | 2 +- BTPanel/static/vite/js/index-legacy253.js | 2 +- BTPanel/static/vite/js/index-legacy254.js | 2 +- BTPanel/static/vite/js/index-legacy255.js | 2 +- BTPanel/static/vite/js/index-legacy256.js | 2 +- BTPanel/static/vite/js/index-legacy257.js | 2 +- BTPanel/static/vite/js/index-legacy258.js | 2 +- BTPanel/static/vite/js/index-legacy259.js | 2 +- BTPanel/static/vite/js/index-legacy26.js | 2 +- BTPanel/static/vite/js/index-legacy260.js | 2 +- BTPanel/static/vite/js/index-legacy261.js | 2 +- BTPanel/static/vite/js/index-legacy262.js | 2 +- BTPanel/static/vite/js/index-legacy263.js | 2 +- BTPanel/static/vite/js/index-legacy264.js | 2 +- BTPanel/static/vite/js/index-legacy265.js | 2 +- BTPanel/static/vite/js/index-legacy266.js | 2 +- BTPanel/static/vite/js/index-legacy267.js | 2 +- BTPanel/static/vite/js/index-legacy268.js | 2 +- BTPanel/static/vite/js/index-legacy269.js | 2 +- BTPanel/static/vite/js/index-legacy27.js | 2 +- BTPanel/static/vite/js/index-legacy270.js | 2 +- BTPanel/static/vite/js/index-legacy271.js | 1 - BTPanel/static/vite/js/index-legacy272.js | 1 - BTPanel/static/vite/js/index-legacy28.js | 2 +- BTPanel/static/vite/js/index-legacy29.js | 4 +- BTPanel/static/vite/js/index-legacy3.js | 2 +- BTPanel/static/vite/js/index-legacy30.js | 2 +- BTPanel/static/vite/js/index-legacy31.js | 2 +- BTPanel/static/vite/js/index-legacy32.js | 2 +- BTPanel/static/vite/js/index-legacy33.js | 2 +- BTPanel/static/vite/js/index-legacy34.js | 2 +- BTPanel/static/vite/js/index-legacy35.js | 2 +- BTPanel/static/vite/js/index-legacy36.js | 2 +- BTPanel/static/vite/js/index-legacy37.js | 2 +- BTPanel/static/vite/js/index-legacy38.js | 2 +- BTPanel/static/vite/js/index-legacy39.js | 2 +- BTPanel/static/vite/js/index-legacy4.js | 2 +- BTPanel/static/vite/js/index-legacy40.js | 2 +- BTPanel/static/vite/js/index-legacy41.js | 2 +- BTPanel/static/vite/js/index-legacy42.js | 4 +- BTPanel/static/vite/js/index-legacy43.js | 2 +- BTPanel/static/vite/js/index-legacy44.js | 2 +- BTPanel/static/vite/js/index-legacy45.js | 2 +- BTPanel/static/vite/js/index-legacy46.js | 2 +- BTPanel/static/vite/js/index-legacy47.js | 2 +- BTPanel/static/vite/js/index-legacy48.js | 2 +- BTPanel/static/vite/js/index-legacy49.js | 2 +- BTPanel/static/vite/js/index-legacy5.js | 2 +- BTPanel/static/vite/js/index-legacy50.js | 2 +- BTPanel/static/vite/js/index-legacy51.js | 2 +- BTPanel/static/vite/js/index-legacy52.js | 2 +- BTPanel/static/vite/js/index-legacy53.js | 2 +- BTPanel/static/vite/js/index-legacy54.js | 2 +- BTPanel/static/vite/js/index-legacy55.js | 2 +- BTPanel/static/vite/js/index-legacy56.js | 2 +- BTPanel/static/vite/js/index-legacy57.js | 2 +- BTPanel/static/vite/js/index-legacy58.js | 2 +- BTPanel/static/vite/js/index-legacy59.js | 2 +- BTPanel/static/vite/js/index-legacy6.js | 2 +- BTPanel/static/vite/js/index-legacy60.js | 2 +- BTPanel/static/vite/js/index-legacy61.js | 2 +- BTPanel/static/vite/js/index-legacy62.js | 2 +- BTPanel/static/vite/js/index-legacy63.js | 2 +- BTPanel/static/vite/js/index-legacy64.js | 2 +- BTPanel/static/vite/js/index-legacy65.js | 2 +- BTPanel/static/vite/js/index-legacy66.js | 2 +- BTPanel/static/vite/js/index-legacy67.js | 2 +- BTPanel/static/vite/js/index-legacy68.js | 2 +- BTPanel/static/vite/js/index-legacy69.js | 2 +- BTPanel/static/vite/js/index-legacy7.js | 2 +- BTPanel/static/vite/js/index-legacy70.js | 2 +- BTPanel/static/vite/js/index-legacy71.js | 2 +- BTPanel/static/vite/js/index-legacy72.js | 2 +- BTPanel/static/vite/js/index-legacy73.js | 2 +- BTPanel/static/vite/js/index-legacy74.js | 2 +- BTPanel/static/vite/js/index-legacy75.js | 2 +- BTPanel/static/vite/js/index-legacy76.js | 2 +- BTPanel/static/vite/js/index-legacy77.js | 2 +- BTPanel/static/vite/js/index-legacy78.js | 2 +- BTPanel/static/vite/js/index-legacy79.js | 4 +- BTPanel/static/vite/js/index-legacy8.js | 2 +- BTPanel/static/vite/js/index-legacy80.js | 2 +- BTPanel/static/vite/js/index-legacy81.js | 2 +- BTPanel/static/vite/js/index-legacy82.js | 2 +- BTPanel/static/vite/js/index-legacy83.js | 2 +- BTPanel/static/vite/js/index-legacy84.js | 2 +- BTPanel/static/vite/js/index-legacy85.js | 4 +- BTPanel/static/vite/js/index-legacy86.js | 2 +- BTPanel/static/vite/js/index-legacy87.js | 2 +- BTPanel/static/vite/js/index-legacy88.js | 2 +- BTPanel/static/vite/js/index-legacy89.js | 2 +- BTPanel/static/vite/js/index-legacy9.js | 2 +- BTPanel/static/vite/js/index-legacy90.js | 2 +- BTPanel/static/vite/js/index-legacy91.js | 2 +- BTPanel/static/vite/js/index-legacy92.js | 2 +- BTPanel/static/vite/js/index-legacy93.js | 2 +- BTPanel/static/vite/js/index-legacy94.js | 2 +- BTPanel/static/vite/js/index-legacy95.js | 2 +- BTPanel/static/vite/js/index-legacy96.js | 2 +- BTPanel/static/vite/js/index-legacy97.js | 2 +- BTPanel/static/vite/js/index-legacy98.js | 2 +- BTPanel/static/vite/js/index-legacy99.js | 2 +- BTPanel/static/vite/js/index.es-legacy.js | 2 +- BTPanel/static/vite/js/index.es.js | 2 +- BTPanel/static/vite/js/index.js | 2 +- ..._vue_type_script_setup_true_lang-legacy.js | 2 +- ...ue_type_script_setup_true_lang-legacy10.js | 2 +- ...ue_type_script_setup_true_lang-legacy11.js | 2 +- ...ue_type_script_setup_true_lang-legacy12.js | 2 +- ...ue_type_script_setup_true_lang-legacy13.js | 2 +- ...ue_type_script_setup_true_lang-legacy14.js | 2 +- ...ue_type_script_setup_true_lang-legacy15.js | 2 +- ...ue_type_script_setup_true_lang-legacy16.js | 2 +- ...ue_type_script_setup_true_lang-legacy17.js | 2 +- ...ue_type_script_setup_true_lang-legacy18.js | 2 +- ...ue_type_script_setup_true_lang-legacy19.js | 2 +- ...vue_type_script_setup_true_lang-legacy2.js | 2 +- ...ue_type_script_setup_true_lang-legacy20.js | 2 +- ...ue_type_script_setup_true_lang-legacy21.js | 2 +- ...ue_type_script_setup_true_lang-legacy22.js | 2 +- ...ue_type_script_setup_true_lang-legacy23.js | 2 +- ...ue_type_script_setup_true_lang-legacy24.js | 2 +- ...vue_type_script_setup_true_lang-legacy3.js | 2 +- ...vue_type_script_setup_true_lang-legacy4.js | 2 +- ...vue_type_script_setup_true_lang-legacy5.js | 2 +- ...vue_type_script_setup_true_lang-legacy6.js | 2 +- ...vue_type_script_setup_true_lang-legacy7.js | 2 +- ...vue_type_script_setup_true_lang-legacy8.js | 2 +- ...vue_type_script_setup_true_lang-legacy9.js | 2 +- ...dex.vue_vue_type_script_setup_true_lang.js | 2 +- ...x.vue_vue_type_script_setup_true_lang10.js | 4 +- ...x.vue_vue_type_script_setup_true_lang11.js | 2 +- ...x.vue_vue_type_script_setup_true_lang12.js | 2 +- ...x.vue_vue_type_script_setup_true_lang13.js | 2 +- ...x.vue_vue_type_script_setup_true_lang14.js | 2 +- ...x.vue_vue_type_script_setup_true_lang15.js | 4 +- ...x.vue_vue_type_script_setup_true_lang16.js | 2 +- ...x.vue_vue_type_script_setup_true_lang17.js | 2 +- ...x.vue_vue_type_script_setup_true_lang18.js | 2 +- ...x.vue_vue_type_script_setup_true_lang19.js | 2 +- ...ex.vue_vue_type_script_setup_true_lang2.js | 2 +- ...x.vue_vue_type_script_setup_true_lang20.js | 2 +- ...x.vue_vue_type_script_setup_true_lang21.js | 2 +- ...x.vue_vue_type_script_setup_true_lang22.js | 4 +- ...x.vue_vue_type_script_setup_true_lang23.js | 4 +- ...x.vue_vue_type_script_setup_true_lang24.js | 2 +- ...ex.vue_vue_type_script_setup_true_lang3.js | 2 +- ...ex.vue_vue_type_script_setup_true_lang4.js | 2 +- ...ex.vue_vue_type_script_setup_true_lang5.js | 2 +- ...ex.vue_vue_type_script_setup_true_lang6.js | 4 +- ...ex.vue_vue_type_script_setup_true_lang7.js | 2 +- ...ex.vue_vue_type_script_setup_true_lang8.js | 2 +- ...ex.vue_vue_type_script_setup_true_lang9.js | 2 +- ....vue_vue_type_style_index_0_lang-legacy.js | 2 +- .../index.vue_vue_type_style_index_0_lang.js | 2 +- BTPanel/static/vite/js/index10.js | 2 +- BTPanel/static/vite/js/index100.js | 2 +- BTPanel/static/vite/js/index101.js | 10 +- BTPanel/static/vite/js/index102.js | 3 +- BTPanel/static/vite/js/index103.js | 3 +- BTPanel/static/vite/js/index104.js | 2 +- BTPanel/static/vite/js/index105.js | 2 +- BTPanel/static/vite/js/index106.js | 2 +- BTPanel/static/vite/js/index107.js | 2 +- BTPanel/static/vite/js/index108.js | 2 +- BTPanel/static/vite/js/index109.js | 2 +- BTPanel/static/vite/js/index11.js | 2 +- BTPanel/static/vite/js/index110.js | 2 +- BTPanel/static/vite/js/index111.js | 3 +- BTPanel/static/vite/js/index112.js | 4 +- BTPanel/static/vite/js/index113.js | 3 +- BTPanel/static/vite/js/index114.js | 2 +- BTPanel/static/vite/js/index115.js | 2 +- BTPanel/static/vite/js/index116.js | 2 +- BTPanel/static/vite/js/index117.js | 2 +- BTPanel/static/vite/js/index118.js | 2 +- BTPanel/static/vite/js/index119.js | 2 +- BTPanel/static/vite/js/index12.js | 2 +- BTPanel/static/vite/js/index120.js | 2 +- BTPanel/static/vite/js/index121.js | 2 +- BTPanel/static/vite/js/index122.js | 2 +- BTPanel/static/vite/js/index123.js | 2 +- BTPanel/static/vite/js/index124.js | 2 +- BTPanel/static/vite/js/index125.js | 2 +- BTPanel/static/vite/js/index126.js | 2 +- BTPanel/static/vite/js/index127.js | 2 +- BTPanel/static/vite/js/index128.js | 2 +- BTPanel/static/vite/js/index129.js | 3 +- BTPanel/static/vite/js/index13.js | 2 +- BTPanel/static/vite/js/index130.js | 3 +- BTPanel/static/vite/js/index131.js | 3 +- BTPanel/static/vite/js/index132.js | 3 +- BTPanel/static/vite/js/index133.js | 2 +- BTPanel/static/vite/js/index134.js | 2 +- BTPanel/static/vite/js/index135.js | 2 +- BTPanel/static/vite/js/index136.js | 2 +- BTPanel/static/vite/js/index137.js | 3 +- BTPanel/static/vite/js/index138.js | 3 +- BTPanel/static/vite/js/index139.js | 2 +- BTPanel/static/vite/js/index14.js | 2 +- BTPanel/static/vite/js/index140.js | 2 +- BTPanel/static/vite/js/index141.js | 2 +- BTPanel/static/vite/js/index142.js | 2 +- BTPanel/static/vite/js/index143.js | 2 +- BTPanel/static/vite/js/index144.js | 2 +- BTPanel/static/vite/js/index145.js | 2 +- BTPanel/static/vite/js/index146.js | 2 +- BTPanel/static/vite/js/index147.js | 2 +- BTPanel/static/vite/js/index148.js | 2 +- BTPanel/static/vite/js/index149.js | 2 +- BTPanel/static/vite/js/index15.js | 4 +- BTPanel/static/vite/js/index150.js | 2 +- BTPanel/static/vite/js/index151.js | 2 +- BTPanel/static/vite/js/index152.js | 2 +- BTPanel/static/vite/js/index153.js | 2 +- BTPanel/static/vite/js/index154.js | 2 +- BTPanel/static/vite/js/index155.js | 2 +- BTPanel/static/vite/js/index156.js | 2 +- BTPanel/static/vite/js/index157.js | 2 +- BTPanel/static/vite/js/index158.js | 2 +- BTPanel/static/vite/js/index159.js | 2 +- BTPanel/static/vite/js/index16.js | 4 +- BTPanel/static/vite/js/index160.js | 2 +- BTPanel/static/vite/js/index161.js | 3 +- BTPanel/static/vite/js/index162.js | 3 +- BTPanel/static/vite/js/index163.js | 2 +- BTPanel/static/vite/js/index164.js | 2 +- BTPanel/static/vite/js/index165.js | 2 +- BTPanel/static/vite/js/index166.js | 3 +- BTPanel/static/vite/js/index167.js | 3 +- BTPanel/static/vite/js/index168.js | 2 +- BTPanel/static/vite/js/index169.js | 2 +- BTPanel/static/vite/js/index17.js | 4 +- BTPanel/static/vite/js/index170.js | 2 +- BTPanel/static/vite/js/index171.js | 2 +- BTPanel/static/vite/js/index172.js | 2 +- BTPanel/static/vite/js/index173.js | 2 +- BTPanel/static/vite/js/index174.js | 2 +- BTPanel/static/vite/js/index175.js | 2 +- BTPanel/static/vite/js/index176.js | 3 +- BTPanel/static/vite/js/index177.js | 2 +- BTPanel/static/vite/js/index178.js | 3 +- BTPanel/static/vite/js/index179.js | 2 +- BTPanel/static/vite/js/index18.js | 2 +- BTPanel/static/vite/js/index180.js | 2 +- BTPanel/static/vite/js/index181.js | 2 +- BTPanel/static/vite/js/index182.js | 2 +- BTPanel/static/vite/js/index183.js | 2 +- BTPanel/static/vite/js/index184.js | 2 +- BTPanel/static/vite/js/index185.js | 2 +- BTPanel/static/vite/js/index186.js | 2 +- BTPanel/static/vite/js/index187.js | 2 +- BTPanel/static/vite/js/index188.js | 2 +- BTPanel/static/vite/js/index189.js | 2 +- BTPanel/static/vite/js/index19.js | 4 +- BTPanel/static/vite/js/index190.js | 2 +- BTPanel/static/vite/js/index191.js | 3 +- BTPanel/static/vite/js/index192.js | 2 +- BTPanel/static/vite/js/index193.js | 3 +- BTPanel/static/vite/js/index194.js | 2 +- BTPanel/static/vite/js/index195.js | 2 +- BTPanel/static/vite/js/index196.js | 2 +- BTPanel/static/vite/js/index197.js | 2 +- BTPanel/static/vite/js/index198.js | 2 +- BTPanel/static/vite/js/index199.js | 2 +- BTPanel/static/vite/js/index2.js | 2 +- BTPanel/static/vite/js/index20.js | 4 +- BTPanel/static/vite/js/index200.js | 2 +- BTPanel/static/vite/js/index201.js | 2 +- BTPanel/static/vite/js/index202.js | 2 +- BTPanel/static/vite/js/index203.js | 2 +- BTPanel/static/vite/js/index204.js | 2 +- BTPanel/static/vite/js/index205.js | 2 +- BTPanel/static/vite/js/index206.js | 2 +- BTPanel/static/vite/js/index207.js | 2 +- BTPanel/static/vite/js/index208.js | 2 +- BTPanel/static/vite/js/index209.js | 2 +- BTPanel/static/vite/js/index21.js | 4 +- BTPanel/static/vite/js/index210.js | 2 +- BTPanel/static/vite/js/index211.js | 2 +- BTPanel/static/vite/js/index212.js | 2 +- BTPanel/static/vite/js/index213.js | 2 +- BTPanel/static/vite/js/index214.js | 2 +- BTPanel/static/vite/js/index215.js | 2 +- BTPanel/static/vite/js/index216.js | 2 +- BTPanel/static/vite/js/index217.js | 2 +- BTPanel/static/vite/js/index218.js | 2 +- BTPanel/static/vite/js/index219.js | 2 +- BTPanel/static/vite/js/index22.js | 2 +- BTPanel/static/vite/js/index220.js | 2 +- BTPanel/static/vite/js/index221.js | 2 +- BTPanel/static/vite/js/index222.js | 2 +- BTPanel/static/vite/js/index223.js | 2 +- BTPanel/static/vite/js/index224.js | 2 +- BTPanel/static/vite/js/index225.js | 2 +- BTPanel/static/vite/js/index226.js | 2 +- BTPanel/static/vite/js/index227.js | 2 +- BTPanel/static/vite/js/index228.js | 2 +- BTPanel/static/vite/js/index229.js | 2 +- BTPanel/static/vite/js/index23.js | 4 +- BTPanel/static/vite/js/index230.js | 2 +- BTPanel/static/vite/js/index231.js | 2 +- BTPanel/static/vite/js/index232.js | 2 +- BTPanel/static/vite/js/index233.js | 2 +- BTPanel/static/vite/js/index234.js | 3 +- BTPanel/static/vite/js/index235.js | 2 +- BTPanel/static/vite/js/index236.js | 3 +- BTPanel/static/vite/js/index237.js | 2 +- BTPanel/static/vite/js/index238.js | 2 +- BTPanel/static/vite/js/index239.js | 3 +- BTPanel/static/vite/js/index24.js | 4 +- BTPanel/static/vite/js/index240.js | 3 +- BTPanel/static/vite/js/index241.js | 3 +- BTPanel/static/vite/js/index242.js | 3 +- BTPanel/static/vite/js/index243.js | 2 +- BTPanel/static/vite/js/index244.js | 2 +- BTPanel/static/vite/js/index245.js | 2 +- BTPanel/static/vite/js/index246.js | 2 +- BTPanel/static/vite/js/index247.js | 2 +- BTPanel/static/vite/js/index248.js | 2 +- BTPanel/static/vite/js/index249.js | 2 +- BTPanel/static/vite/js/index25.js | 4 +- BTPanel/static/vite/js/index250.js | 3 +- BTPanel/static/vite/js/index251.js | 2 +- BTPanel/static/vite/js/index252.js | 4 +- BTPanel/static/vite/js/index253.js | 2 +- BTPanel/static/vite/js/index254.js | 3 +- BTPanel/static/vite/js/index255.js | 2 +- BTPanel/static/vite/js/index256.js | 2 +- BTPanel/static/vite/js/index257.js | 2 +- BTPanel/static/vite/js/index258.js | 2 +- BTPanel/static/vite/js/index259.js | 3 +- BTPanel/static/vite/js/index26.js | 4 +- BTPanel/static/vite/js/index260.js | 2 +- BTPanel/static/vite/js/index261.js | 3 +- BTPanel/static/vite/js/index262.js | 2 +- BTPanel/static/vite/js/index263.js | 2 +- BTPanel/static/vite/js/index264.js | 2 +- BTPanel/static/vite/js/index265.js | 2 +- BTPanel/static/vite/js/index266.js | 2 +- BTPanel/static/vite/js/index267.js | 3 +- BTPanel/static/vite/js/index268.js | 2 +- BTPanel/static/vite/js/index269.js | 3 +- BTPanel/static/vite/js/index27.js | 4 +- BTPanel/static/vite/js/index270.js | 2 +- BTPanel/static/vite/js/index271.js | 1 - BTPanel/static/vite/js/index272.js | 1 - BTPanel/static/vite/js/index28.js | 2 +- BTPanel/static/vite/js/index29.js | 4 +- BTPanel/static/vite/js/index3.js | 2 +- BTPanel/static/vite/js/index30.js | 2 +- BTPanel/static/vite/js/index31.js | 4 +- BTPanel/static/vite/js/index32.js | 2 +- BTPanel/static/vite/js/index33.js | 4 +- BTPanel/static/vite/js/index34.js | 4 +- BTPanel/static/vite/js/index35.js | 4 +- BTPanel/static/vite/js/index36.js | 2 +- BTPanel/static/vite/js/index37.js | 2 +- BTPanel/static/vite/js/index38.js | 4 +- BTPanel/static/vite/js/index39.js | 4 +- BTPanel/static/vite/js/index4.js | 4 +- BTPanel/static/vite/js/index40.js | 2 +- BTPanel/static/vite/js/index41.js | 4 +- BTPanel/static/vite/js/index42.js | 6 +- BTPanel/static/vite/js/index43.js | 2 +- BTPanel/static/vite/js/index44.js | 2 +- BTPanel/static/vite/js/index45.js | 2 +- BTPanel/static/vite/js/index46.js | 2 +- BTPanel/static/vite/js/index47.js | 2 +- BTPanel/static/vite/js/index48.js | 2 +- BTPanel/static/vite/js/index49.js | 2 +- BTPanel/static/vite/js/index5.js | 2 +- BTPanel/static/vite/js/index50.js | 4 +- BTPanel/static/vite/js/index51.js | 4 +- BTPanel/static/vite/js/index52.js | 4 +- BTPanel/static/vite/js/index53.js | 4 +- BTPanel/static/vite/js/index54.js | 4 +- BTPanel/static/vite/js/index55.js | 2 +- BTPanel/static/vite/js/index56.js | 2 +- BTPanel/static/vite/js/index57.js | 2 +- BTPanel/static/vite/js/index58.js | 4 +- BTPanel/static/vite/js/index59.js | 4 +- BTPanel/static/vite/js/index6.js | 2 +- BTPanel/static/vite/js/index60.js | 2 +- BTPanel/static/vite/js/index61.js | 2 +- BTPanel/static/vite/js/index62.js | 2 +- BTPanel/static/vite/js/index63.js | 2 +- BTPanel/static/vite/js/index64.js | 2 +- BTPanel/static/vite/js/index65.js | 2 +- BTPanel/static/vite/js/index66.js | 2 +- BTPanel/static/vite/js/index67.js | 2 +- BTPanel/static/vite/js/index68.js | 4 +- BTPanel/static/vite/js/index69.js | 4 +- BTPanel/static/vite/js/index7.js | 2 +- BTPanel/static/vite/js/index70.js | 2 +- BTPanel/static/vite/js/index71.js | 2 +- BTPanel/static/vite/js/index72.js | 4 +- BTPanel/static/vite/js/index73.js | 4 +- BTPanel/static/vite/js/index74.js | 4 +- BTPanel/static/vite/js/index75.js | 2 +- BTPanel/static/vite/js/index76.js | 4 +- BTPanel/static/vite/js/index77.js | 2 +- BTPanel/static/vite/js/index78.js | 4 +- BTPanel/static/vite/js/index79.js | 6 +- BTPanel/static/vite/js/index8.js | 2 +- BTPanel/static/vite/js/index80.js | 4 +- BTPanel/static/vite/js/index81.js | 4 +- BTPanel/static/vite/js/index82.js | 2 +- BTPanel/static/vite/js/index83.js | 2 +- BTPanel/static/vite/js/index84.js | 4 +- BTPanel/static/vite/js/index85.js | 6 +- BTPanel/static/vite/js/index86.js | 2 +- BTPanel/static/vite/js/index87.js | 4 +- BTPanel/static/vite/js/index88.js | 4 +- BTPanel/static/vite/js/index89.js | 2 +- BTPanel/static/vite/js/index9.js | 2 +- BTPanel/static/vite/js/index90.js | 2 +- BTPanel/static/vite/js/index91.js | 2 +- BTPanel/static/vite/js/index92.js | 2 +- BTPanel/static/vite/js/index93.js | 2 +- BTPanel/static/vite/js/index94.js | 2 +- BTPanel/static/vite/js/index95.js | 2 +- BTPanel/static/vite/js/index96.js | 4 +- BTPanel/static/vite/js/index97.js | 2 +- BTPanel/static/vite/js/index98.js | 2 +- BTPanel/static/vite/js/index99.js | 2 +- BTPanel/static/vite/js/install-legacy.js | 2 +- BTPanel/static/vite/js/install.js | 2 +- BTPanel/static/vite/js/interface-legacy.js | 2 +- BTPanel/static/vite/js/interface.js | 2 +- BTPanel/static/vite/js/javascript.js | 16 - BTPanel/static/vite/js/log-legacy.js | 2 +- BTPanel/static/vite/js/log-legacy2.js | 1 + BTPanel/static/vite/js/log.js | 2 +- BTPanel/static/vite/js/log2.js | 1 + BTPanel/static/vite/js/logs-legacy.js | 2 +- BTPanel/static/vite/js/logs.js | 2 +- ..._vue_type_script_setup_true_lang-legacy.js | 2 +- ...ogs.vue_vue_type_script_setup_true_lang.js | 2 +- BTPanel/static/vite/js/mail-legacy.js | 2 +- BTPanel/static/vite/js/mail.js | 2 +- .../static/vite/js/migrate-error-legacy.js | 2 +- BTPanel/static/vite/js/migrate-error.js | 2 +- .../static/vite/js/migrate-success-legacy.js | 2 +- BTPanel/static/vite/js/migrate-success.js | 2 +- BTPanel/static/vite/js/mode-html.js | 2339 --- BTPanel/static/vite/js/mode-java.js | 1565 -- BTPanel/static/vite/js/mode-javascript.js | 1191 -- BTPanel/static/vite/js/mode-json.js | 275 - BTPanel/static/vite/js/mode-php.js | 14072 -------------- BTPanel/static/vite/js/mode-python.js | 476 - BTPanel/static/vite/js/mode-sh.js | 387 - BTPanel/static/vite/js/naive-legacy.js | 2 +- BTPanel/static/vite/js/naive.js | 2 +- BTPanel/static/vite/js/new-legacy.js | 2 +- BTPanel/static/vite/js/new-legacy2.js | 2 +- BTPanel/static/vite/js/new.js | 4 +- BTPanel/static/vite/js/new2.js | 2 +- BTPanel/static/vite/js/old-legacy.js | 2 +- BTPanel/static/vite/js/old.js | 2 +- BTPanel/static/vite/js/open-legacy.js | 2 +- BTPanel/static/vite/js/open-legacy2.js | 2 +- BTPanel/static/vite/js/open.js | 2 +- BTPanel/static/vite/js/open2.js | 2 +- BTPanel/static/vite/js/organization-legacy.js | 2 +- BTPanel/static/vite/js/organization.js | 2 +- BTPanel/static/vite/js/page_layout-legacy.js | 6 +- BTPanel/static/vite/js/page_layout.js | 6 +- BTPanel/static/vite/js/paypal-js-legacy.js | 2 +- BTPanel/static/vite/js/paypal-js.js | 2 +- BTPanel/static/vite/js/php-legacy.js | 2 +- BTPanel/static/vite/js/php-legacy2.js | 2 +- BTPanel/static/vite/js/php.js | 2 +- BTPanel/static/vite/js/php2.js | 2 +- BTPanel/static/vite/js/planned-legacy.js | 2 +- BTPanel/static/vite/js/planned.js | 2 +- BTPanel/static/vite/js/process-legacy.js | 2 +- BTPanel/static/vite/js/process.js | 2 +- BTPanel/static/vite/js/protect-legacy.js | 2 +- BTPanel/static/vite/js/protect.js | 2 +- BTPanel/static/vite/js/public-legacy.js | 2 +- BTPanel/static/vite/js/public.js | 4 +- BTPanel/static/vite/js/python.js | 16 - BTPanel/static/vite/js/quota-config-legacy.js | 2 +- BTPanel/static/vite/js/quota-config.js | 2 +- BTPanel/static/vite/js/record-legacy.js | 2 +- BTPanel/static/vite/js/record.js | 2 +- BTPanel/static/vite/js/result-legacy.js | 2 +- BTPanel/static/vite/js/result.js | 2 +- BTPanel/static/vite/js/rewrite-legacy.js | 2 +- BTPanel/static/vite/js/rewrite.js | 2 +- .../static/vite/js/risk-ignore-list-legacy.js | 2 +- BTPanel/static/vite/js/risk-ignore-list.js | 2 +- .../static/vite/js/risk-info-form-legacy.js | 2 +- BTPanel/static/vite/js/risk-info-form.js | 2 +- BTPanel/static/vite/js/risk-repair-legacy.js | 2 +- BTPanel/static/vite/js/risk-repair.js | 2 +- BTPanel/static/vite/js/risk-report-legacy.js | 2 +- BTPanel/static/vite/js/risk-report.js | 4 +- BTPanel/static/vite/js/rules-legacy.js | 2 +- BTPanel/static/vite/js/rules.js | 2 +- .../vite/js/security-news-detail-legacy.js | 2 +- .../static/vite/js/security-news-detail.js | 2 +- BTPanel/static/vite/js/set-legacy.js | 2 +- BTPanel/static/vite/js/set-legacy2.js | 2 +- BTPanel/static/vite/js/set-legacy3.js | 2 +- BTPanel/static/vite/js/set.js | 2 +- BTPanel/static/vite/js/set2.js | 2 +- BTPanel/static/vite/js/set3.js | 2 +- BTPanel/static/vite/js/setting-legacy.js | 2 +- BTPanel/static/vite/js/setting.js | 2 +- BTPanel/static/vite/js/shell-legacy.js | 2 +- BTPanel/static/vite/js/shell.js | 2 +- BTPanel/static/vite/js/site-legacy.js | 2 +- BTPanel/static/vite/js/site-legacy2.js | 2 +- BTPanel/static/vite/js/site-legacy3.js | 2 +- BTPanel/static/vite/js/site-legacy4.js | 2 +- BTPanel/static/vite/js/site.js | 2 +- BTPanel/static/vite/js/site2.js | 2 +- BTPanel/static/vite/js/site3.js | 2 +- BTPanel/static/vite/js/site4.js | 2 +- BTPanel/static/vite/js/soft-legacy.js | 2 +- BTPanel/static/vite/js/soft-legacy2.js | 2 +- BTPanel/static/vite/js/soft.js | 4 +- BTPanel/static/vite/js/soft2.js | 2 +- BTPanel/static/vite/js/ssl-legacy.js | 2 +- .../vite/js/ssl-lets-progress-legacy.js | 2 +- BTPanel/static/vite/js/ssl-lets-progress.js | 4 +- BTPanel/static/vite/js/ssl-log-legacy.js | 2 +- BTPanel/static/vite/js/ssl-log.js | 2 +- BTPanel/static/vite/js/ssl.js | 2 +- BTPanel/static/vite/js/submit-legacy.js | 2 +- BTPanel/static/vite/js/submit.js | 2 +- ..._vue_type_script_setup_true_lang-legacy.js | 2 +- ...ble.vue_vue_type_script_setup_true_lang.js | 4 +- BTPanel/static/vite/js/tableColumns-legacy.js | 2 +- BTPanel/static/vite/js/tableColumns.js | 2 +- ..._vue_type_script_setup_true_lang-legacy.js | 2 +- ...iew.vue_vue_type_script_setup_true_lang.js | 2 +- BTPanel/static/vite/js/term-legacy.js | 2 +- BTPanel/static/vite/js/term.js | 2 +- BTPanel/static/vite/js/terminal-legacy.js | 2 +- BTPanel/static/vite/js/terminal-legacy2.js | 2 +- BTPanel/static/vite/js/terminal.js | 2 +- BTPanel/static/vite/js/terminal2.js | 4 +- BTPanel/static/vite/js/theme-ambiance.js | 18 - .../static/vite/js/theme-monokai-legacy.js | 10 +- BTPanel/static/vite/js/theme-monokai.js | 10 +- BTPanel/static/vite/js/tools-legacy.js | 2 +- BTPanel/static/vite/js/tools-legacy2.js | 2 +- BTPanel/static/vite/js/tools.js | 2 +- BTPanel/static/vite/js/tools2.js | 4 +- BTPanel/static/vite/js/transition-legacy.js | 2 +- BTPanel/static/vite/js/transition.js | 2 +- BTPanel/static/vite/js/unsubscribe-legacy.js | 2 +- BTPanel/static/vite/js/unsubscribe.js | 2 +- BTPanel/static/vite/js/upload-legacy.js | 2 +- BTPanel/static/vite/js/upload.js | 4 +- BTPanel/static/vite/js/useModal-legacy.js | 2 +- BTPanel/static/vite/js/useModal-legacy2.js | 2 +- BTPanel/static/vite/js/useModal-legacy3.js | 2 +- BTPanel/static/vite/js/useModal.js | 4 +- BTPanel/static/vite/js/useModal2.js | 4 +- BTPanel/static/vite/js/useModal3.js | 4 +- BTPanel/static/vite/js/useOperate-legacy.js | 2 +- BTPanel/static/vite/js/useOperate.js | 2 +- BTPanel/static/vite/js/utils-legacy.js | 2 +- BTPanel/static/vite/js/utils-legacy2.js | 2 +- BTPanel/static/vite/js/utils-legacy3.js | 2 +- BTPanel/static/vite/js/utils.js | 2 +- BTPanel/static/vite/js/utils2.js | 4 +- BTPanel/static/vite/js/utils3.js | 2 +- BTPanel/static/vite/js/view-legacy.js | 2 +- BTPanel/static/vite/js/view.js | 2 +- BTPanel/static/vite/js/vue-legacy.js | 28 +- BTPanel/static/vite/js/vue.js | 30 +- BTPanel/static/vite/js/webserver-legacy.js | 2 +- ..._vue_type_script_setup_true_lang-legacy.js | 2 +- ...ult.vue_vue_type_script_setup_true_lang.js | 2 +- BTPanel/static/vite/js/webserver.js | 2 +- BTPanel/static/vite/js/worker-base.js | 1332 -- BTPanel/static/vite/js/worker-html.js | 10843 ----------- BTPanel/static/vite/js/worker-javascript.js | 15353 ---------------- BTPanel/static/vite/js/worker-json.js | 1626 -- BTPanel/static/vite/lang/all/cht/config.json | 3 +- BTPanel/static/vite/lang/all/cht/docker.json | 96 +- BTPanel/static/vite/lang/all/cht/ftp.json | 3 +- BTPanel/static/vite/lang/all/cht/home.json | 5 +- BTPanel/static/vite/lang/all/cht/logs.json | 3 +- BTPanel/static/vite/lang/all/cht/site.json | 5 +- BTPanel/static/vite/lang/all/de/docker.json | 108 +- BTPanel/static/vite/lang/all/de/home.json | 5 +- BTPanel/static/vite/lang/all/de/logs.json | 3 +- BTPanel/static/vite/lang/all/de/soft.json | 3 +- BTPanel/static/vite/lang/all/fra/docker.json | 108 +- BTPanel/static/vite/lang/all/fra/home.json | 5 +- BTPanel/static/vite/lang/all/fra/logs.json | 3 +- BTPanel/static/vite/lang/all/fra/soft.json | 3 +- BTPanel/static/vite/lang/all/ind/docker.json | 109 +- BTPanel/static/vite/lang/all/ind/home.json | 5 +- BTPanel/static/vite/lang/all/ind/logs.json | 3 +- BTPanel/static/vite/lang/all/ind/soft.json | 3 +- BTPanel/static/vite/lang/all/kor/docker.json | 109 +- BTPanel/static/vite/lang/all/kor/home.json | 5 +- BTPanel/static/vite/lang/all/kor/logs.json | 3 +- BTPanel/static/vite/lang/all/kor/soft.json | 3 +- BTPanel/static/vite/lang/all/pt/docker.json | 108 +- BTPanel/static/vite/lang/all/pt/home.json | 5 +- BTPanel/static/vite/lang/all/pt/logs.json | 3 +- BTPanel/static/vite/lang/all/pt/soft.json | 3 +- BTPanel/static/vite/lang/all/spa/docker.json | 108 +- BTPanel/static/vite/lang/all/spa/home.json | 5 +- BTPanel/static/vite/lang/all/spa/logs.json | 3 +- BTPanel/static/vite/lang/all/spa/soft.json | 3 +- BTPanel/static/vite/lang/all/vie/docker.json | 109 +- BTPanel/static/vite/lang/all/vie/home.json | 5 +- BTPanel/static/vite/lang/all/vie/logs.json | 3 +- BTPanel/static/vite/lang/all/vie/soft.json | 3 +- BTPanel/static/vite/lang/cht/config.json | 2 +- BTPanel/static/vite/lang/cht/docker.json | 146 +- BTPanel/static/vite/lang/cht/ftp.json | 2 +- BTPanel/static/vite/lang/cht/home.json | 3 + BTPanel/static/vite/lang/cht/logs.json | 2 +- BTPanel/static/vite/lang/cht/site.json | 10 +- BTPanel/static/vite/lang/de/docker.json | 150 +- BTPanel/static/vite/lang/de/home.json | 3 + BTPanel/static/vite/lang/de/logs.json | 2 +- BTPanel/static/vite/lang/de/soft.json | 2 +- BTPanel/static/vite/lang/en/docker.json | 1650 +- BTPanel/static/vite/lang/en/home.json | 543 +- BTPanel/static/vite/lang/en/logs.json | 98 +- BTPanel/static/vite/lang/en/soft.json | 2 +- BTPanel/static/vite/lang/fra/docker.json | 148 +- BTPanel/static/vite/lang/fra/home.json | 3 + BTPanel/static/vite/lang/fra/logs.json | 2 +- BTPanel/static/vite/lang/ind/docker.json | 150 +- BTPanel/static/vite/lang/ind/home.json | 3 + BTPanel/static/vite/lang/ind/logs.json | 2 +- BTPanel/static/vite/lang/ind/soft.json | 2 +- BTPanel/static/vite/lang/kor/docker.json | 146 +- BTPanel/static/vite/lang/kor/home.json | 3 + BTPanel/static/vite/lang/kor/logs.json | 2 +- BTPanel/static/vite/lang/kor/soft.json | 2 +- BTPanel/static/vite/lang/pt/docker.json | 148 +- BTPanel/static/vite/lang/pt/home.json | 3 + BTPanel/static/vite/lang/pt/logs.json | 2 +- BTPanel/static/vite/lang/pt/soft.json | 2 +- BTPanel/static/vite/lang/spa/docker.json | 148 +- BTPanel/static/vite/lang/spa/home.json | 3 + BTPanel/static/vite/lang/spa/logs.json | 2 +- BTPanel/static/vite/lang/spa/soft.json | 2 +- BTPanel/static/vite/lang/uk/database.json | 547 +- BTPanel/static/vite/lang/uk/docker.json | 18 +- BTPanel/static/vite/lang/uk/file.json | 11 + BTPanel/static/vite/lang/uk/home.json | 543 +- BTPanel/static/vite/lang/uk/public.json | 275 +- BTPanel/static/vite/lang/uk/soft.json | 28 +- BTPanel/static/vite/lang/uk/wp.json | 52 +- BTPanel/static/vite/lang/vie/docker.json | 148 +- BTPanel/static/vite/lang/vie/home.json | 3 + BTPanel/static/vite/lang/vie/logs.json | 2 +- BTPanel/static/vite/lang/zh/config.json | 2 +- BTPanel/static/vite/lang/zh/docker.json | 148 +- BTPanel/static/vite/lang/zh/ftp.json | 268 +- BTPanel/static/vite/lang/zh/home.json | 543 +- BTPanel/static/vite/lang/zh/logs.json | 98 +- BTPanel/static/vite/lang/zh/site.json | 1352 +- BTPanel/static/vite/oldjs/docker.js | 2 +- BTPanel/static/vite/oldjs/public.js | 22 +- BTPanel/templates/default/index_new.html | 32 +- class/acme_v2.py | 71 +- class/apache.py | 3 +- class/common.py | 2 +- class/config.py | 87 +- class/database.py | 21 +- class/files.py | 16 +- class/jobs.py | 46 +- class/panelSite.py | 2 +- class/public.py | 7173 -------- class/public/aaModel/__init__.py | 5 +- class/public/aaModel/manager.py | 126 +- class/public/common.py | 226 +- class/public/websitemgr.py | 3 +- class/userLang.py | 59 +- class_v2/ajax_v2.py | 17 +- class_v2/apache_v2.py | 3 +- class_v2/btdockerModelV2/containerModel.py | 466 +- class_v2/btdockerModelV2/dk_public.py | 8 +- class_v2/btdockerModelV2/dkgroupModel.py | 4 +- .../btdockerModelV2/dockerSock/container.py | 103 +- class_v2/btdockerModelV2/dockerSock/image.py | 52 +- .../btdockerModelV2/dockerSock/network.py | 91 + class_v2/btdockerModelV2/dockerSock/system.py | 39 + class_v2/btdockerModelV2/dockerSock/volume.py | 11 +- class_v2/btdockerModelV2/imageModel.py | 419 +- class_v2/btdockerModelV2/networkModel.py | 79 + class_v2/btdockerModelV2/projectModel.py | 20 +- class_v2/btdockerModelV2/registryModel.py | 65 +- class_v2/btdockerModelV2/securityModel.py | 683 +- class_v2/btdockerModelV2/setupModel.py | 725 +- class_v2/btdockerModelV2/statusModel.py | 61 +- class_v2/config_v2.py | 169 +- class_v2/data_v2.py | 248 +- class_v2/files_v2.py | 399 +- class_v2/firewallModelV2/comModel.py | 6 +- class_v2/git_tools.py | 996 + class_v2/one_key_wp_v2.py | 62 +- class_v2/panelModelV2/publicModel.py | 16 + class_v2/panel_auth_v2.py | 2 +- class_v2/panel_plugin_v2.py | 107 + class_v2/panel_site_v2.py | 145 +- class_v2/panel_ssl_v2.py | 1 - class_v2/plugin_deployment_v2.py | 18 +- class_v2/projectModelV2/nodejsModel.py | 13 +- class_v2/ssl_dnsV2/__init__.py | 12 + class_v2/ssl_dnsV2/api.py | 222 + class_v2/ssl_dnsV2/bind_script.sh | 170 + class_v2/ssl_dnsV2/conf.py | 108 + class_v2/ssl_dnsV2/dns_manager.py | 504 + class_v2/ssl_dnsV2/helper.py | 247 + class_v2/ssl_dnsV2/pdns_script.sh | 156 + class_v2/ssl_domainModelV2/api.py | 1 + class_v2/ssl_domainModelV2/model.py | 30 +- class_v2/ssl_domainModelV2/service.py | 192 +- class_v2/system_v2.py | 90 + class_v2/wp_toolkit/core.py | 23 +- data/softList.conf | 256 +- mod/project/docker/app/appManageMod.py | 407 +- mod/project/docker/app/base.py | 143 +- mod/project/docker/app/gpu/__init__.py | 23 + mod/project/docker/app/gpu/amd.py | 36 + mod/project/docker/app/gpu/base.py | 70 + mod/project/docker/app/gpu/constants.py | 27 + mod/project/docker/app/gpu/nvidia.py | 199 + mod/project/docker/app/gpu/tools.py | 158 + mod/project/docker/app/gpu/type.py | 0 mod/project/docker/app/sub_app/__init__.py | 0 mod/project/docker/app/sub_app/base.py | 16 + mod/project/docker/app/sub_app/downModel.py | 198 + mod/project/docker/app/sub_app/ollamaMod.py | 324 + mod/project/docker/apphub/__init__.py | 0 mod/project/docker/apphub/apphubManage.py | 258 + mod/project/docker/apphub/tool.py | 190 + mod/project/docker/comMod.py | 182 +- mod/project/docker/composeMod.py | 97 +- mod/project/docker/docker_compose/base.py | 60 +- mod/project/docker/gpuMod.py | 65 + mod/project/docker/proxy/base.py | 4 +- mod/project/proxy/comMod.py | 14 +- script/modify_ports_multiple_services.py | 77 +- task.py | 57 +- 1243 files changed, 48469 insertions(+), 87603 deletions(-) create mode 100644 BTPanel/static/vite/css/table.css create mode 100644 BTPanel/static/vite/images/1.png create mode 100644 BTPanel/static/vite/images/10.png create mode 100644 BTPanel/static/vite/images/11.png create mode 100644 BTPanel/static/vite/images/12.png create mode 100644 BTPanel/static/vite/images/13.png create mode 100644 BTPanel/static/vite/images/14.png create mode 100644 BTPanel/static/vite/images/15.png create mode 100644 BTPanel/static/vite/images/16.png create mode 100644 BTPanel/static/vite/images/17.png create mode 100644 BTPanel/static/vite/images/18.png create mode 100644 BTPanel/static/vite/images/19.png create mode 100644 BTPanel/static/vite/images/2.png create mode 100644 BTPanel/static/vite/images/20.png create mode 100644 BTPanel/static/vite/images/3.png create mode 100644 BTPanel/static/vite/images/4.png create mode 100644 BTPanel/static/vite/images/5.png create mode 100644 BTPanel/static/vite/images/6.png create mode 100644 BTPanel/static/vite/images/7.png create mode 100644 BTPanel/static/vite/images/8.png create mode 100644 BTPanel/static/vite/images/9.png delete mode 100644 BTPanel/static/vite/images/blockade-dark.png delete mode 100644 BTPanel/static/vite/images/blockade.png create mode 100644 BTPanel/static/vite/images/git-ps.png delete mode 100644 BTPanel/static/vite/images/global-dark.png delete mode 100644 BTPanel/static/vite/images/global.png delete mode 100644 BTPanel/static/vite/images/overview-dark.png delete mode 100644 BTPanel/static/vite/images/overview2.png delete mode 100644 BTPanel/static/vite/images/report-dark.png delete mode 100644 BTPanel/static/vite/images/report.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_aingdesk.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_aingdesk_and_ollama.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_allinssl.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_astrbot.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_baidunetdisk.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_btshieldml.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_casdoor.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_coze-studio.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_dify_v180.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_dify_v190.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_erpnext.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_fastgpt.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_gitea.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_halo.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_jaeger.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_lsky_pros.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_mcpserver_supergateway.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_milvus.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_mliev.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_ollama_and_openwebui.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_openlist.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_oryx.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_plausible.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_pterodactyl_china.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_ragflow.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_rustdesk_pro.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_rustfs.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_searxng.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_tangsengdaodao.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_tdengine.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_thinkai.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_thinkcmf.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_ujcms.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_wireshark.png create mode 100644 BTPanel/static/vite/images/soft-ico/dkapp/ico-dkapp_zurl.png delete mode 100644 BTPanel/static/vite/images/website-dark.png delete mode 100644 BTPanel/static/vite/images/website.png delete mode 100644 BTPanel/static/vite/js/Html.js delete mode 100644 BTPanel/static/vite/js/ext-prompt.js delete mode 100644 BTPanel/static/vite/js/ext-searchbox.js create mode 100644 BTPanel/static/vite/js/git-ps-legacy.js create mode 100644 BTPanel/static/vite/js/git-ps.js delete mode 100644 BTPanel/static/vite/js/index-legacy271.js delete mode 100644 BTPanel/static/vite/js/index-legacy272.js delete mode 100644 BTPanel/static/vite/js/index271.js delete mode 100644 BTPanel/static/vite/js/index272.js delete mode 100644 BTPanel/static/vite/js/javascript.js create mode 100644 BTPanel/static/vite/js/log-legacy2.js create mode 100644 BTPanel/static/vite/js/log2.js delete mode 100644 BTPanel/static/vite/js/mode-html.js delete mode 100644 BTPanel/static/vite/js/mode-java.js delete mode 100644 BTPanel/static/vite/js/mode-javascript.js delete mode 100644 BTPanel/static/vite/js/mode-json.js delete mode 100644 BTPanel/static/vite/js/mode-php.js delete mode 100644 BTPanel/static/vite/js/mode-python.js delete mode 100644 BTPanel/static/vite/js/mode-sh.js delete mode 100644 BTPanel/static/vite/js/python.js delete mode 100644 BTPanel/static/vite/js/theme-ambiance.js delete mode 100644 BTPanel/static/vite/js/worker-base.js delete mode 100644 BTPanel/static/vite/js/worker-html.js delete mode 100644 BTPanel/static/vite/js/worker-javascript.js delete mode 100644 BTPanel/static/vite/js/worker-json.js delete mode 100755 class/public.py create mode 100644 class_v2/btdockerModelV2/dockerSock/network.py create mode 100644 class_v2/btdockerModelV2/dockerSock/system.py create mode 100644 class_v2/git_tools.py create mode 100644 class_v2/ssl_dnsV2/__init__.py create mode 100644 class_v2/ssl_dnsV2/api.py create mode 100644 class_v2/ssl_dnsV2/bind_script.sh create mode 100644 class_v2/ssl_dnsV2/conf.py create mode 100644 class_v2/ssl_dnsV2/dns_manager.py create mode 100644 class_v2/ssl_dnsV2/helper.py create mode 100644 class_v2/ssl_dnsV2/pdns_script.sh create mode 100644 mod/project/docker/app/gpu/__init__.py create mode 100644 mod/project/docker/app/gpu/amd.py create mode 100644 mod/project/docker/app/gpu/base.py create mode 100644 mod/project/docker/app/gpu/constants.py create mode 100644 mod/project/docker/app/gpu/nvidia.py create mode 100644 mod/project/docker/app/gpu/tools.py create mode 100644 mod/project/docker/app/gpu/type.py create mode 100644 mod/project/docker/app/sub_app/__init__.py create mode 100644 mod/project/docker/app/sub_app/base.py create mode 100644 mod/project/docker/app/sub_app/downModel.py create mode 100644 mod/project/docker/app/sub_app/ollamaMod.py create mode 100644 mod/project/docker/apphub/__init__.py create mode 100644 mod/project/docker/apphub/apphubManage.py create mode 100644 mod/project/docker/apphub/tool.py create mode 100644 mod/project/docker/gpuMod.py diff --git a/BT-Panel b/BT-Panel index 50e63f60..1dd66000 100644 --- a/BT-Panel +++ b/BT-Panel @@ -191,10 +191,49 @@ def get_process_count(): if memory > 30000 and cpu_count > 15: return 4 # 内存大于30G且CPU核心大于15核,则启动4个进程 return 1 + +def check_system_restarted(): + ''' + @name 检测系统是否重启 + ''' + try: + import json + status_file = '{}/data/reboot_notification.json'.format(_PATH) + current_boot_time = int(psutil.boot_time()) + + if os.path.exists(status_file): + try: + with open(status_file, 'r') as f: + data = json.load(f) + last_recorded_time = data.get("last_reboot_time", 0) + # 如果系统启动时间 > 上次记录时间 → 说明系统重启了 + if last_recorded_time >0 and current_boot_time > last_recorded_time: + with open(status_file, 'w') as f: + json.dump({ + "last_reboot_time": current_boot_time, + "status": 0 # 未读 + }, f, indent=2) + except: + pass + else: + with open(status_file, 'w') as f: + json.dump({ + "last_reboot_time": current_boot_time, + "status": 1 + }, f, indent=2) + except Exception as e: + pass + + + if __name__ == '__main__': pid_file = "{}/logs/panel.pid".format(_PATH) if os.path.exists(pid_file): public.ExecShell("kill -9 {}".format(public.readFile(pid_file))) + + # 重启面板前检查系统是否重启 + check_system_restarted() + pid = os.fork() if pid: sys.exit(0) diff --git a/BTPanel/__init__.py b/BTPanel/__init__.py index 3d9b5d93..bf6e1e70 100755 --- a/BTPanel/__init__.py +++ b/BTPanel/__init__.py @@ -3579,6 +3579,7 @@ def site_v2(pdata=None): 'set_site_php_version_multiple', 'delete_website_multiple', 'set_site_status_multiple', + 'get_site_list', 'get_site_err_log', 'get_site_domains', 'GetRedirectFile', @@ -3765,6 +3766,34 @@ def site_v2(pdata=None): ) return publicObject(siteObject, defs, None, pdata) +@app.route(route_v2 + '/git', methods=method_all) +def git_tools(pdata=None): + # git管理 + comReturn = comm.local() + if comReturn: return comReturn + import git_tools + gitObject = git_tools.GitTools() + defs = ( + 'get_git_version', + 'get_ssh_key', + 'add_key_repository', + 'get_deploy_sh', + 'save_deploy_sh', + 'get_deploy_records', + 'manual_deploy_site', + 'get_site_deploy_log', + 'get_deploy_script', + 'git_rollback', + 'get_site_git_conf', + 'save_site_git_conf', + 'del_site_git', + 'auto_deploy', + 'refresh_webhook_url', + 'update_deploy_sh', + 'del_script', + 'get_webhook_log' + ) + return publicObject(gitObject, defs, None, pdata) @app.route(route_v2 + '/ftp', methods=method_all) def ftp_v2(pdata=None): @@ -4556,7 +4585,7 @@ def system_v2(pdata=None): 'GetLoadAverage', 'ClearSystem', 'GetNetWorkOld', 'GetNetWork', 'GetDiskInfo', 'GetCpuInfo', 'GetBootTime', 'GetSystemVersion', 'GetMemInfo', 'GetSystemTotal', 'GetConcifInfo', 'ServiceAdmin', - 'ReWeb', 'RestartServer', 'ReMemory', 'RepPanel') + 'ReWeb', 'RestartServer', 'ReMemory', 'RepPanel', 'mark_reboot_read') return publicObject(sysObject, defs, None, pdata) diff --git a/BTPanel/languages/all/cht.json b/BTPanel/languages/all/cht.json index 11421fbb..05fcd48f 100644 --- a/BTPanel/languages/all/cht.json +++ b/BTPanel/languages/all/cht.json @@ -2272,11 +2272,11 @@ "501b1c01d3b31cb34cbcad5a19ae851e": "密碼到期期不能長於{}天", "5ad475cca538c88655b2299588b9a091": "超時時間需要在300-30天之間", "e60263ac381ae4a9ad460a5c706b9b5a": "保存配置", - "ac40ea6dbb38e754acea879d58701424": "{}天", - "7a3fd8f7ddf80ae2db423aa55177d22a": "{}天 {}小時", - "377e7b3a05033be3164d7900c2feb2a6": "{}小時", - "b2a09ec7e869bb555211fe7b26b5cf3e": "{}小時{}分鐘", - "9c9a5e9d306cf687381d8f1924b43b9c": "{}分鐘", + "ac40ea6dbb38e754acea879d58701424": "{} 天", + "7a3fd8f7ddf80ae2db423aa55177d22a": "{} 天 {} 小時", + "377e7b3a05033be3164d7900c2feb2a6": "{} 小時", + "b2a09ec7e869bb555211fe7b26b5cf3e": "{} 小時 {} 分鐘", + "9c9a5e9d306cf687381d8f1924b43b9c": "{} 分鐘", "4943a6954b9887aa5989713fcbb2a0d1": "錯誤:無法連接到{}服務器,請檢查[AK/SK/存儲]設置是否正確!", "75809e3b321efe1afbdf9773494d5dd9": "沒有找到{}配置文件,請在打開之前嘗試關閉SSL端口設置", "35e15c0be5bb51b628d96c9a520c9b01": "端口[{}]正在使用!", @@ -3864,5 +3864,221 @@ "21654e03b247d5e25abaa0ad542883c0": "開始恢復站點數據", "c8cecd19f4f4a680a5879f828d1c5578": "還原{}項目:{}", "35850d3654332477522ee06c756a3c85": "無法刪除源站點目錄:{}", - "c88b730f7a6a312159272ce532947de2": "{}項目:{}✓" + "c88b730f7a6a312159272ce532947de2": "{}項目:{}✓", + "7d7014331b485392e1d6055aad5c26cd": "沒有找到nginx phpmyadmin ssl配置文件,請嘗試關閉ssl端口設置後再打開", + "bedfc521aa92e68b04430d33289c6b3c": "在多Web服務器託管中,僅支持nginx 1.24及以上版本!", + "94e431cde2ffda2ef08526fa2af1b0b5": "設置資產成功!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "設置資源失敗{}", + "36856cc0aff5e4d792ab1919ec9e24f9": "備份數據庫[{}]成功!", + "cd338377817d5286c26f62c0562ebe72": "已成功導入數據庫 [{}]", + "de5ac4bddf9b72b649c0cbd4243f76c6": "幾秒鐘後重試...請稍候...", + "6905a88552caae6df77f56bd19f6d76a": "Cron 任務設置保留本地。保留本地備份。", + "63701b3fa795bcd399aab5d489f8eae9": "Cron 任務設置不會保留在本地。不保留本地備份。", + "837cc24a222df21e74245f4cfac6ad09": "用戶設置為不戴", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB已啟用安全認證。", + "4675bfcf662ee236a05dcb763cf9d520": "Apache 緩存設置失敗。請檢查網站是否正常運行!", + "0b9aca52d360d6f7a8f2c5c897c93005": "Apache緩存設置成功!", + "a2cd28fcd32e92be995b2335768fdea3": "Apache 緩存目前僅在 Multi-WebServer Hosting 下受支持", + "b288b8637582cc38c1d4c902ed03cbec": "緩存插件安裝失敗", + "aebabb72ad41fbe46f73abcc9dc00b9f": "緩存插件激活失敗。請嘗試手動激活然後啟用緩存", + "3981bd44ca3f1d5abafc6b15ba8c7435": "OLS緩存設置成功!", + "3777f748e5535e7e38261b2e0afc8274": "OLS 緩存配置失敗:{}", + "8e342838d5cf3a93e34956c9550db4d0": "部署失敗:{}", + "152b976545ff1ee50e0de21da7af1266": "驗證正在進行中......", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "參數驗證", + "80f9a0a476836be5fdec10fe414e88a9": "{} 網站正在創建....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "創建網站", + "8a9535f05c52e58f46e3237b9da019cc": "添加可選配置:數據庫、FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "添加可選配置", + "2a5e8b7e4116ee81db89ba173f60bf90": "參數驗證失敗", + "2f35a151cc0256f0d9ad5410eccbe5d0": "參數驗證失敗:{}", + "af2a8e2174ea327f9fbf77d84029d58b": "參數驗證成功", + "181fc26e7b655ba36b3b075ca1ebc350": "創建網站失敗", + "7118aff13541bf3d74a9c47fb458e102": "無法創建網站:{}", + "be33773093fc2e135ba4bc26f4bb5509": "網站創建成功", + "8d823a9933eefd02bf1003481f816f64": "失敗的: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "啟動成功!", + "31b88b436695f7e0bc5dad1cb8999737": "不要使用面板服務的端口!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "端口被佔用或者端口範圍不正確!它應該在 100 到 65535 之間", + "7dde7f2ae7cb4ed56b1b683b479ad303": "警告:尚未安裝 {} 版本,", + "839067817c5a1e7fcce2f905284d630e": "重寫源目錄和重寫目標目錄必須同時填寫", + "4b6ad864ce62dac8466dde7ec62e7ea9": "重寫源目錄和重寫目標目錄不能相同", + "ed6fe3e47d3686c7af83b67535b426b5": "重寫源碼目錄必須以/開頭", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "重寫目標目錄必須以/開頭", + "87a9a388a3ef42018ceb866756c4ee39": "數據庫連接失敗,請檢查數據庫狀態!", + "a75c113f53d4342010d140325fa29eec": "網站多業務已開通。", + "b0a517b4d596e5fc1351f8dc12e73a74": "請選擇保留服務", + "7e953c855b391ac0716a4eeb47c5c5c3": "請先啟用多項服務", + "55d523aa501b0e7e93e172a9e6829a8a": "獲取nginx版本信息出錯", + "08f18bb6c6293307f68d5f822ed7dbe1": "目前不支持openresty", + "45020a62e40bbb43f6e05c62ad50288e": "已經有安裝任務了。請先等待完成!", + "4052df86d5a8dd12943cc8b1d53162e4": "服務安裝失敗。請再試一次!", + "8033c09e6fedf841205b29b57c0ae0d1": "服務啟動失敗:{}", + "442d02a722dc331f8b85d328fb99a174": "多業務模式已成功開啟", + "a0b289e4caa220dcd62692401d5083f5": "無法卸載 {} 服務。請再試一次!", + "0045406cf97cbdca708c795aa9554145": "{} 服務未能重新啟動。請嘗試手動重啟或檢查配置文件。", + "52cd203105425f66daf42d81f05c540f": "多服務模式已成功禁用", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "服務重啟失敗。請檢查apache配置文件!", + "a949ed64edc73a99f9f9c801a84b6390": "指定的服務類型不存在", + "408f206d494c5f26144f7492315dfa21": "批量切換服務時出錯!", + "e9fd26be1a67520e66f2e99d61977c32": "網站ID不存在", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "當前的網站服務已經是 {}", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "修改配置失敗。", + "98e762d03fc5ffcb381010aff10c7bde": "已成功切換到 {}", + "293f667205bd8aa91c72f966c03c3de5": "獲取的網站服務類型不正確", + "8562d96fc303411ee017a30b83d75712": "修復成功", + "d9d76120c8c13b40d2e8e49b0d6117da": "多服務出現錯誤,修復失敗。請嘗試關閉多服務,然後重新打開它! :{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "配置文件不存在", + "c8622023712105e9e7328396976a2667": "備份的配置文件不存在:{}", + "12572c9827392d4bd4c028881ed06242": "網站存在全局代理或 url 重寫衝突。請刪除它並重試!", + "92bce01ab77d0d50efec1d424cab583b": "該網站有反向代理。請刪除它並重試!", + "30c74a0981da2edec86936cd288479f7": "網站配置了全局反向代理。請先取消!", + "c3fe8f7adf26d613d9593acede34303b": "網站配置了子目錄域名綁定。請先取消!", + "84e9feba40d0aed963505e503cf821e3": "更新失敗...", + "2a6bb1bdd798217656edecf672b6df3c": "Http01 驗證錯誤,但未找到站點。", + "962682f10423a33a75f4b1277b3690c9": "Http01 驗證錯誤,但站點未運行", + "90299d1fb53fdf7a570db71a1b61c127": "請先設置PgSQL Root密碼!", + "1fcdee5d4329f1f638bc2d818f3e510a": "找不到文件", + "517b554160a14e74d52943ea29ab5a66": "redis連接失敗", + "d2c7790b1f776ce6ad06426b03fa71b1": "本地登錄密碼為空,請先設置數據庫密碼!", + "f9be861aad3eda81843c7797487da8e9": "當前系統安全狀況良好,不存在明顯漏洞和風險", + "890e24b14414e3da9bc2ad63d6d0befb": "系統存在一定的安全風險,部分配置或策略需要完善", + "951c23a91dfe39b5ea5d00405b4dc2c5": "系統存在明顯安全漏洞,請及時修復", + "de36cae19b2a65a45cb4dfccb435530b": "系統處於高風險狀態,請盡快修復相關風險項", + "ca6977d373320a7fdb51047199d4cc59": "管理員未安裝!", + "38641e6ce3a6369e108eb595672c8edc": "卸載成功!", + "9cae26284a7ad2f46132c1e8e196d089": "安裝成功!", + "a9a92e55770213c8aa1fb2871dc43563": "設置管理員端口成功!", + "2321763bf0b4cbf345b1e19dc9faec47": "設置管理員php版本成功!", + "40a1f70c155550ad2dafa5e556e10c3c": "PHP版本無法安裝!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path是根目錄,無法關閉Show Proxy Path!", + "793c8358adb487f79f85acfdc44d54bb": "創建遷移任務:{} -> {}", + "e9ba4ba778d8a0b4423c09ff6cb32726": "使用 ECDSA 密鑰連接", + "d91a58f92edb4b30de7e5399908922da": "[*] 使用命令安裝 aapanel:{}", + "ff490ab3be22afd2f2a06842935eedd3": "備份文件{}不存在", + "148b2912de8b29f47dc234983554ea2b": "\\r[*] 上傳進度:{:.2f}% - {:.2f} KB/s - 剩餘時間:{}", + "e344a18f13f2b196f3b56938c824dd5f": "[!] 無法從備份文件名中提取時間戳", + "28dbda7cf25735198d7695702b18aad5": "安裝aapanel...估計5分鐘...", + "7a58e7034a9db769af197c85beccafd5": "aapanel安裝完成,開始備份任務...", + "c129e18a625645767772504cf77e279a": "無法讀取備份時間戳", + "6c97fd171b87d3f954040d4dea833cb9": "準備上傳備份文件", + "6384458c2647bf7e1af9d942aab00d6d": "準備上傳備份文件:{}", + "a0bc8a00e83b79e42010343c31924dd2": "SSH 連接驗證失敗", + "fa1ab4e94bafd1f5b6ea55e3e9dc33a4": "備份文件提取失敗", + "af3c2b419ba0779d81ac91cd3ca246b6": "[*] 正在等待備份任務完成...", + "c8eb8110632bb540ca112819e96dc770": "[+] 備份任務已完成:{}", + "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] 備份任務已完成(超時後檢測到文件):{}", + "637452f337bdc2991f23593124d62440": "[!] 備份任務超時且未在指定時間內完成", + "8085ded0444fcde19b9ea4d365502f67": "找不到備份信息", + "269159feb2faab7515c90b9f5de791a5": "備份配置文件不存在:{}", + "daa55a73708f906c8cee0bb87284740c": "檢索備份進度信息時出錯:{}", + "9166b100905c2625ba9df2524f8c2faa": "SSH 連接測試失敗:{}", + "334afd10871f8c52a884e307d2e17ccf": "遷移歷史記錄已成功刪除", + "48ed083561c2f201d9fe52f6a35ee982": "crontab 任務完成", + "70510d59e30015790f07ca53c80c5bec": "開始安裝 php-{}", + "7d5cf115afd8be7c2a36d03b31d1ce44": "開始安裝 mariadb-{}", + "92e77c2b107f440d6d54062228112f73": "開始安裝mysql-{}", + "69fa45968c5cc7a9115bff54e70c95c1": "開始安裝 memcached-{}", + "fbabb869ff01746bd144289622b277fc": "開始安裝redis-{}", + "0c64283397c43effb13a2cbe818ce929": "數據庫數據備份完成", + "d8a3336243e1c08e8a29c75af1eb528c": "MySQL初始化成功!", + "73af95fd2322196e0d9792df4ca1f566": "MongoDB初始化成功!", + "8c9718f3235e7c36c9f400bc68db1ef5": "MongoDB 設置身份驗證失敗!錯誤: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "PostgreSQL 初始化成功!", + "c46866b7bc29cf9d478835bda10e43ce": "Redis初始化成功!", + "4e889bbbfc5e25ebf611e5764b8a358c": "開始恢復數據庫", + "23f2db47eb6ff16785e5a222c8657f93": "遠程數據庫恢復完成", + "a273d4d4d0cf13abc1d7a4f96b8c851e": "開始恢復終端數據", + "95d831166994e434da49f3ed70b73e8e": "終端數據恢復完成", + "8dfa78d85bb1d152b0cafe398b27e1ae": "防火牆區域規則 ✓", + "d076d2dde53272dc55d47f34a465ebef": "初始化防火牆數據", + "1bb2a65f17d7e3c685f36f7ff1794338": "防火牆重啟完成", + "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "開始備份站點數據", + "c886466d255b20be0dbde7f1b44b7f20": "正在備份 {} 項目:{}", + "0fc5eeb9bebed19653578a5df99d3e6e": "站點數據備份完成", + "fd16d36423b43735556724e0395e8f91": "站點Python依賴恢復完成", + "24ee51964e4ece856493ca28fdb075ed": "站點數據恢復完成", + "1502c42b339a3dfe20e4c95186b38dc3": "開始備份FTP賬戶信息", + "af4ff8fd3803d5496f74604eb1665e81": "開始恢復FTP帳戶配置", + "7f578816e3867140ee56ccbbc1d69f55": "網站監控報告 ✓ ({})", + "ff083aca075c6543c2999781b6677c19": "企業防篡改保護 ✓ ({})", + "2f29dad748ac1d8d50481ecbd7e05091": "系統強化 ✓ ({})", + "d0c97e94eb5061783de7bbad8e7bd295": "開始恢復Nginx防火牆數據", + "bd43add14ebbd0f448c207c48e1d5ac8": "網站監測報告數據 ✓", + "479557cf249b3145d91a94ed130c5ecb": "系統強化✗", + "b1bcc839644a9a611f9d8e2e1f63e0d0": "文件名太長(超過 255 個字節)。", + "29886cc45dfd7d6c3177d4a6ccfaae94": "完整路徑太長(超過 4096 字節)。", + "a3b7d5cfd749d2f8c5af2a8f45f002ea": "無法檢查文件路徑:{}", + "8e6595abbb40f247c74fffdf61bd5a00": "設置失敗!請嘗試重新登錄。", + "a499f309ac7a223d611d7a0a85900342": "沒有找到重啟記錄。", + "d23fb11ea541cd5f1c0b05851d54fd58": "標記為已讀。", + "1983b37067c7e94095a5113786fdef9c": "編輯失敗,連接docker超時,請重啟docker重試!", + "9e90efb62702b147b71e8731290caf44": "鏡像[{}]不存在,請嘗試勾選【強制拉取鏡像】後重試!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "新容器未創建成功,舊容器已恢復。{}", + "1f004e412319b7ed472624e011b3d2ba": "更新成功!", + "a2ea046c20d2da5cebf2dea01a62dabe": "更新失敗!容器狀態已恢復", + "f9a48b804d917398e795016687f3b0f4": "請先關閉【企業防篡改】後再嘗試!", + "ca1bc3e1d32b99b90395da47b88576a9": "參數錯誤,請傳入:ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "參數錯誤,請傳入:_ws!", + "6c3e5d603d8845422e861fb0b4eed350": "一個配置項不", + "f324009782d2d9e73d1087884ebc2c4c": "Docker root不能為空!", + "538960e1336f919e37a0d2c024c56830": "當前Docker根目錄就是目標目錄,不需要更改!", + "a848bbd79221dfdce1c9dca536dbfada": "代理設置的 JSON 格式錯誤!", + "edf6eb680187066c4dea216b3b20d6d2": "代理設置成功!", + "b01f9411136207ad7df28b9bf2387e2a": "升級失敗!失敗原因:{}", + "da896b628e3ded58445e4b015320f327": "重載失敗的原因是:{}", + "efb869976990f78b3d6fcbaf270e3323": "重新加載成功!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "全局配置文件過載失敗:{}", + "75bbb7a00c3b5b510913952fe089f52a": "參數錯誤,路徑參數!", + "273609d18876f5f9e3f021032e5b57a3": "設置失敗!", + "0720c6c4f478b3a374b4a438f7cf80ad": "導入鏡像失敗,連接docker超時,請嘗試重啟docker後重試!", + "22cc0388137842df9649b3bbcff345e8": "如果鏡像導入失敗且未創建臨時容器目錄,請檢查防護軟件是否有攔截記錄。", + "0568e5e8aa7c811dd420c818189a0d46": "幾秒鐘前", + "53c53a79f864561f8b6886b3dde7cd51": "分鐘前", + "f329a0dab82282e50e3aea9260e95d53": "幾小時前", + "7a1af30a5ce889031cbc2472766159e3": "幾天前", + "558a41d55884223583b3542e802d2b64": "鏡像名稱不能為空!", + "0e8623af4dd4d3b732904872d22fbf83": "網絡名稱不能為空!", + "5aa2044b58e63d58ddecc69421802404": "網關可以", + "ceaa20eefd6749452a947c7f5dfa4eb0": "IP 範圍不能為空!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "創建網絡失敗!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "網絡名稱:[{}] 已存在!", + "9cdc09516d85ae057d1d9bedc988849e": "創建網絡成功!", + "7d643f192968be3f8a54be28592e9176": "掃描圖像失敗:{}", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "僅支持容器和應用程序類型", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "應用 {} 的版本 {} 不存在", + "a5c1e82e4d1142b8c7e0bc1499446181": "未設置 GIT 地址", + "4e24bbe093c9dfb90092a0f4e71733dc": "分支名稱未設置", + "b3c02fc58b92f549f529992c8a696a66": "未設置 zip 文件路徑", + "eecf07d92b354565df633b06401206a1": "請選擇文件路徑", + "795d1693702d930f7fc18edfb0f1c0d3": "MCP 服務器配置錯誤", + "a16d1dbe265c57e0417ae396c3c30043": "未找到服務 [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] 未找到圖像", + "4de8e45b499205551f4a09fd074e5246": "缺少參數!ID", + "02e85c0a0fa01fabdb5426af13e87853": "缺少參數!應用程序名稱", + "d910ee67a0875a17b6e663f9e19369a4": "不支持此應用程序鏈接!", + "32d030406e8d755a59468a50bd385b22": "獲取容器失敗", + "c8e0f1ed3c37b015ee446297591d172f": "缺少參數!應用程序名稱", + "dad9445733497150b5f2cd29a5aed506": "應用名稱不合法,請勿包含非法字符!", + "a04daa98db618d6c2a19aeed5af39448": "找不到指定應用程序的 docker-compose.yml 文件!", + "74fd3ba5b92aa59e471161d2a585a93c": "model_name 參數不能為空", + "760a1226f2ba701b04963681ab97d575": "model_version 參數不能為空", + "2a88d88050ddcc0e28f0da4576be2232": "service_name 參數不能為空", + "fd0f83d70400b1dd9f6ae9c093638411": "獲取容器信息失敗,docker-compose執行異常!", + "2aec223006d3894d3c1a48bca642c141": "模型正在下載中,請稍後查看日誌", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "刪除模型失敗,docker-compose執行異常!", + "d75a01e0d2c0cb8dad89216653024903": "模型刪除成功!", + "f0501638237d7e8f934ec55ac3ffb20f": "如果安裝失敗,請檢查網絡或手動安裝git", + "608113c9694987fa65b22ecb164aee59": "環境安裝成功", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "apphub目錄不存在", + "7ec67f9826a24ca4a930a6e168ee9611": "決議成功", + "af2c4fa868813e47b80859a0b36e00f4": "git信息配置成功", + "2b038e106d4ca5c11b787e16c73253ef": "如果你不", + "12d1b3062be6f8bb374511323c349ed7": "請先設置git信息", + "798cd5a257af539ecfe6bb44f45ee788": "從 git 導入失敗", + "8170f5d37a617dcbf16fe8dd414073dc": "從git導入成功", + "6e40e5a8ad741ca4bd714fa52ef32333": "文件格式不正確,請選擇zip或gz文件", + "c4996991c50032c9b296c11da356acb2": "導入失敗:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "導入成功" } \ No newline at end of file diff --git a/BTPanel/languages/all/de.json b/BTPanel/languages/all/de.json index c64bb60e..805fb799 100644 --- a/BTPanel/languages/all/de.json +++ b/BTPanel/languages/all/de.json @@ -3819,5 +3819,261 @@ "21654e03b247d5e25abaa0ad542883c0": "Starten Sie die Daten zur Wiederherstellung von Site -Daten", "35850d3654332477522ee06c756a3c85": "Das Verzeichnis der Source Site nicht löschen: {}", "c88b730f7a6a312159272ce532947de2": "{} Projekt: {} ✓", - "24ee51964e4ece856493ca28fdb075ed": "Standortdatenwiederherstellung abgeschlossen" + "24ee51964e4ece856493ca28fdb075ed": "Standortdatenwiederherstellung abgeschlossen", + "7d7014331b485392e1d6055aad5c26cd": "Die SSL-Konfigurationsdatei von nginx phpmyadmin wurde nicht gefunden. Versuchen Sie bitte, die SSL-Porteinstellungen vor dem Öffnen zu schließen", + "bedfc521aa92e68b04430d33289c6b3c": "Beim Multi-WebServer-Hosting werden nur Nginx-Versionen 1.24 und höher unterstützt!", + "94e431cde2ffda2ef08526fa2af1b0b5": "Asset erfolgreich setzen!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "Asset festlegen fehlgeschlagen {}", + "36856cc0aff5e4d792ab1919ec9e24f9": "Datenbanksicherung [{}] erfolgreich!", + "cd338377817d5286c26f62c0562ebe72": "Datenbank [{}] erfolgreich importiert", + "de5ac4bddf9b72b649c0cbd4243f76c6": "Versuchen Sie es nach ein paar Sekunden erneut. Bitte warten Sie.", + "6905a88552caae6df77f56bd19f6d76a": "Cron-Task-Einstellungen bleiben lokal.Die lokale Sicherung bleibt erhalten.", + "63701b3fa795bcd399aab5d489f8eae9": "Cron-Task-Einstellungen bleiben nicht lokal.Die lokale Sicherung wird nicht beibehalten.", + "837cc24a222df21e74245f4cfac6ad09": "Benutzereinstellung zum Anziehen", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB hat die Sicherheitsauthentifizierung aktiviert.", + "4675bfcf662ee236a05dcb763cf9d520": "Die Apache-Cache-Einstellung ist fehlgeschlagen.Bitte überprüfen Sie, ob die Website ordnungsgemäß funktioniert!", + "0b9aca52d360d6f7a8f2c5c897c93005": "Die Apache-Cache-Einstellungen waren erfolgreich!", + "a2cd28fcd32e92be995b2335768fdea3": "Apache-Cache wird derzeit nur unter Multi-WebServer-Hosting unterstützt", + "b288b8637582cc38c1d4c902ed03cbec": "Die Installation des Cache-Plugins ist fehlgeschlagen", + "aebabb72ad41fbe46f73abcc9dc00b9f": "Das Cache-Plugin konnte nicht aktiviert werden.Bitte versuchen Sie es manuell zu aktivieren und aktivieren Sie dann den Cache", + "3981bd44ca3f1d5abafc6b15ba8c7435": "Die OLS-Cache-Einstellungen waren erfolgreich!", + "3777f748e5535e7e38261b2e0afc8274": "OLS-Cache-Konfiguration fehlgeschlagen: {}", + "8e342838d5cf3a93e34956c9550db4d0": "Bereitstellung fehlgeschlagen: {}", + "152b976545ff1ee50e0de21da7af1266": "Die Verifizierung läuft.....", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "Parameterüberprüfung", + "80f9a0a476836be5fdec10fe414e88a9": "{} Die Website wird erstellt....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "Website erstellen", + "8a9535f05c52e58f46e3237b9da019cc": "Fügen Sie optionale Konfigurationen hinzu: Datenbank, FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "Fügen Sie optionale Konfigurationen hinzu", + "2a5e8b7e4116ee81db89ba173f60bf90": "Parameterüberprüfung fehlgeschlagen", + "2f35a151cc0256f0d9ad5410eccbe5d0": "Parameterüberprüfung fehlgeschlagen: {}", + "af2a8e2174ea327f9fbf77d84029d58b": "Parameterüberprüfung erfolgreich", + "181fc26e7b655ba36b3b075ca1ebc350": "Die Website konnte nicht erstellt werden", + "7118aff13541bf3d74a9c47fb458e102": "Die Website konnte nicht erstellt werden: {}", + "be33773093fc2e135ba4bc26f4bb5509": "Die Website wurde erfolgreich erstellt", + "8d823a9933eefd02bf1003481f816f64": "Fehlgeschlagen: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "Erfolgreicher Start!", + "31b88b436695f7e0bc5dad1cb8999737": "Benutzen Sie nicht die Ports des Panel-Service!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "Der Port ist belegt oder der Portbereich ist falsch!Er sollte zwischen 100 und 65535 liegen", + "7dde7f2ae7cb4ed56b1b683b479ad303": "Warnung: {} Version wurde noch nicht installiert,", + "839067817c5a1e7fcce2f905284d630e": "Das Quellverzeichnis neu schreiben und das Zielverzeichnis neu schreiben müssen gleichzeitig ausgefüllt werden", + "4b6ad864ce62dac8466dde7ec62e7ea9": "Das Rewrite-Quellverzeichnis und das Rewrite-Zielverzeichnis dürfen nicht identisch sein", + "ed6fe3e47d3686c7af83b67535b426b5": "Quellverzeichnis neu schreiben muss mit / beginnen", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "Zielverzeichnis neu schreiben muss mit / beginnen", + "87a9a388a3ef42018ceb866756c4ee39": "Datenbankverbindung fehlgeschlagen, bitte überprüfen Sie den Datenbankstatus!", + "a75c113f53d4342010d140325fa29eec": "Der Multiservice der Website wurde aktiviert.", + "b0a517b4d596e5fc1351f8dc12e73a74": "Bitte wählen Sie den reservierten Service aus", + "7e953c855b391ac0716a4eeb47c5c5c3": "Bitte aktivieren Sie zunächst mehrere Dienste", + "55d523aa501b0e7e93e172a9e6829a8a": "Fehler beim Abrufen der Nginx-Versionsinformationen", + "08f18bb6c6293307f68d5f822ed7dbe1": "Derzeit wird openresty nicht unterstützt", + "45020a62e40bbb43f6e05c62ad50288e": "Es gibt bereits eine Installationsaufgabe.Bitte warten Sie zunächst, bis der Vorgang abgeschlossen ist!", + "4052df86d5a8dd12943cc8b1d53162e4": "Die Dienstinstallation ist fehlgeschlagen.Bitte versuchen Sie es erneut!", + "8033c09e6fedf841205b29b57c0ae0d1": "Dienststart fehlgeschlagen: {}", + "442d02a722dc331f8b85d328fb99a174": "Der Multi-Service-Modus wurde erfolgreich aktiviert", + "a0b289e4caa220dcd62692401d5083f5": "Der Dienst {} konnte nicht deinstalliert werden.Bitte versuchen Sie es erneut!", + "0045406cf97cbdca708c795aa9554145": "Der {}-Dienst konnte nicht neu gestartet werden.Bitte versuchen Sie einen manuellen Neustart oder überprüfen Sie die Konfigurationsdatei.", + "52cd203105425f66daf42d81f05c540f": "Der Multi-Service-Modus wurde erfolgreich deaktiviert", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "Der Neustart des Dienstes ist fehlgeschlagen.Bitte überprüfen Sie die Apache-Konfigurationsdatei!", + "a949ed64edc73a99f9f9c801a84b6390": "Der angegebene Diensttyp ist nicht vorhanden", + "408f206d494c5f26144f7492315dfa21": "Beim stapelweisen Wechseln der Dienste ist ein Fehler aufgetreten!", + "e9fd26be1a67520e66f2e99d61977c32": "Website-ID existiert nicht", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "Der aktuelle Website-Service ist bereits {}", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "Die Konfigurationsänderung ist fehlgeschlagen.", + "98e762d03fc5ffcb381010aff10c7bde": "Erfolgreich auf {} umgestellt", + "293f667205bd8aa91c72f966c03c3de5": "Die Art des erhaltenen Website-Dienstes ist falsch", + "8562d96fc303411ee017a30b83d75712": "Erfolgreich repariert", + "d9d76120c8c13b40d2e8e49b0d6117da": "Im Multiservice ist ein Fehler aufgetreten und die Reparatur ist fehlgeschlagen.Bitte versuchen Sie, Multi-Service zu schließen und dann erneut zu öffnen!:{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "Die Konfigurationsdatei existiert nicht", + "c8622023712105e9e7328396976a2667": "Die gesicherte Konfigurationsdatei existiert nicht: {}", + "12572c9827392d4bd4c028881ed06242": "Auf der Website gibt es globale Proxy- oder URL-Rewriting-Konflikte.Bitte löschen Sie es und versuchen Sie es erneut!", + "92bce01ab77d0d50efec1d424cab583b": "Diese Website verfügt über einen Reverse-Proxy.Bitte löschen Sie es und versuchen Sie es erneut!", + "30c74a0981da2edec86936cd288479f7": "Die Website hat einen globalen Reverse-Proxy konfiguriert.Bitte stornieren Sie es zuerst!", + "c3fe8f7adf26d613d9593acede34303b": "Die Website ist mit der Bindung von Unterverzeichnis-Domänennamen konfiguriert.Bitte stornieren Sie es zuerst!", + "84e9feba40d0aed963505e503cf821e3": "Aktualisierung fehlgeschlagen...", + "c85411871b8773e799e64d0c23ef79d3": "Bestellung nicht gefunden!", + "2a6bb1bdd798217656edecf672b6df3c": "Http01-Überprüfungsfehler, aber Site nicht gefunden.", + "962682f10423a33a75f4b1277b3690c9": "Http01-Überprüfungsfehler, aber die Site wird nicht ausgeführt", + "90299d1fb53fdf7a570db71a1b61c127": "Bitte legen Sie zuerst das PgSQL-Root-Passwort fest!", + "01d3922e30b7aff9c7265e91c57cc829": "Das IP-Format ist falsch!", + "b2349e65b04baa3a0d50ad030535b73e": "Die von Ihnen eingegebene Datei ist nicht zulässig, die Änderung ist fehlgeschlagen", + "0033a9566af4f930bebbd45802be5427": "Verbindung fehlgeschlagen", + "ae576ea2a8c76765fa69287fb1347d1a": "Remote-Datenbankverbindung fehlgeschlagen!", + "15a8af9e80d0a0c2d87314c154fff181": "Redis-Cluster wird nicht unterstützt!", + "a9ed7f25ce1ffcf98cf5ec7db86abdf4": "Das Sichern entfernter Datenbanken wird derzeit nicht unterstützt!", + "ec010eeffc0a20399b186f334b3b6769": "Remote-Datenbankverbindung fehlgeschlagen {}", + "eacd845def6fe750cfc0986f24565045": "Das lokale Login-Passwort ist leer", + "079d7d1539d30a76e53b6fb54d370d32": "Erfolgreich hinzufügen!", + "ffcba623cf91331a0ba5b3ab969db1f9": "Erfolgreich gelöscht!", + "d2c7790b1f776ce6ad06426b03fa71b1": "Das lokale Login-Passwort ist leer, bitte legen Sie zuerst das Datenbank-Passwort fest!", + "f9be861aad3eda81843c7797487da8e9": "Der aktuelle Sicherheitsstatus des Systems ist gut und es bestehen keine offensichtlichen Schwachstellen oder Risiken", + "890e24b14414e3da9bc2ad63d6d0befb": "Es gibt bestimmte Sicherheitsrisiken im System und einige Konfigurationen oder Richtlinien müssen verbessert werden", + "951c23a91dfe39b5ea5d00405b4dc2c5": "Das System weist offensichtliche Sicherheitslücken auf. Bitte beheben Sie diese rechtzeitig", + "de36cae19b2a65a45cb4dfccb435530b": "Das System befindet sich in einem Hochrisikozustand. Bitte reparieren Sie die relevanten Risikoelemente so schnell wie möglich", + "ca6977d373320a7fdb51047199d4cc59": "Adminer ist nicht installiert!", + "38641e6ce3a6369e108eb595672c8edc": "Deinstallation erfolgreich!", + "9cae26284a7ad2f46132c1e8e196d089": "Erfolgreich installieren!", + "a9a92e55770213c8aa1fb2871dc43563": "Adminer-Port erfolgreich eingestellt!", + "2321763bf0b4cbf345b1e19dc9faec47": "Stellen Sie die Adminer-PHP-Version erfolgreich ein!", + "40a1f70c155550ad2dafa5e556e10c3c": "PHP-Version lässt sich nicht installieren!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path ist das Stammverzeichnis, Show Proxy Path kann nicht geschlossen werden!", + "58ba018dcbe1c47ea0a293fdcee21e63": "Panel-Installation", + "793c8358adb487f79f85acfdc44d54bb": "Migrationsaufgabe erstellen: {} -> {}", + "e597529fcdfa1dab69eadaf1c44088ba": "Migrationsaufgabe erfolgreich erstellt", + "1e36faff765dbbbe631f424983a21783": "Netzwerkverbindungsfehler: {}", + "f9d5c96265bf9a99b163f5adf699cde9": "Verbindung zum Server fehlgeschlagen: {}", + "5e1b5e437b38bfb11b1e4853f8838d3f": "RSA-Schlüssel konnte nicht geladen werden: {}", + "369709628dacb54949b2c711acd93968": "[*] Es wird versucht, die Verbindung zum Server wiederherzustellen (Versuch {}/{})...", + "908300abff5dfdf254726c2193f3e550": "Die erneute Verbindung zum Server konnte nicht wiederhergestellt werden. Die maximale Anzahl an Wiederholungsversuchen wurde erreicht ({}).", + "5842d2e8785c14b1e357c4ee1dd1a0c6": "[+] Verbindung zum Server {} getrennt", + "db4d271e5cb8fe3192ed73bd624a86fe": "[+] Ausgabe:", + "b1508aec34af599979d919e20b64e385": "Installationsfortschritt: {}", + "7b6725a19c46bc6d47e5a49c5764991f": "[+] Benutzername: {}", + "9e3f708636e9ea820d608629fdf47c65": "[!] Fehler beim Erstellen des Sicherungsverzeichnisses {}", + "9f22d9cb59270cf0f6382a66a63ed8cd": "Größe der Remote-Datei konnte nicht ermittelt werden: {}", + "ff490ab3be22afd2f2a06842935eedd3": "Die Sicherungsdatei {} existiert nicht", + "9c30f21dd1175d2e9b7503e873a52b2f": "[*] Hochgeladen: {:.2f} % ({:.2f} MB / {:.2f} MB)", + "95dd52c0ce48e72f2021dee1a7a86433": "Dateigröße stimmt nicht überein: lokal {:.2f} MB, remote {:.2f} MB", + "1e6aeb0dc8e2567bdec31246c27233a2": "Datei-Upload fehlgeschlagen, maximale Anzahl an Wiederholungsversuchen erreicht", + "0fddb4bae41a7fc9e2de8896d8cb819f": "Wiederherstellung des Backups starten (Zeitstempel: {})", + "5a275e6386d2d3c647f6ccecb422debc": "[*] Wiederherstellung des Backups wird gestartet (Zeitstempel: {})...", + "8d7b4f7247dec431d103af1ce34d0233": "Wiederherstellungsmodul existiert nicht: {}", + "062ca961d059ebd358098ffdb12f42bb": "Die Wiederherstellung der Sicherung ist fehlgeschlagen. Bitte überprüfen Sie das Protokoll", + "67c40d3544174eb6d6fa63dccaa6bf6e": "Das Hinzufügen einer Wiederherstellungs-Backup-Aufgabe wird vorbereitet", + "f90b7afaee99210e74fa3bc47d4f4918": "Alle Migrationsvorgänge wurden abgeschlossen", + "dd2a8fc49fd7c92616c228c8039410c8": "Während des Migrationsprozesses ist ein Fehler aufgetreten: {}", + "ef3ae6d88f5637005f063685ad50c625": "[+] Überprüfung der SSH-Verbindung erfolgreich", + "a0bc8a00e83b79e42010343c31924dd2": "Die Überprüfung der SSH-Verbindung ist fehlgeschlagen", + "1f3ff88a0fdd87e71bf237f3805dccde": "[*] Sicherungsdatei wird hochgeladen...", + "c0b860cd7155af1e642fd0c41ee29262": "Pfad der Sicherungsdatei nicht angegeben", + "d36c2f46c959ee1fb416a947f8e75a47": "Die Wiederherstellung der Sicherung ist fehlgeschlagen", + "de6b9cefab1a252ada4463ee8f015f07": "[+] 所有操作已完成", + "1a6da8233a4a66ccc90d767967f22d35": "[+] Sicherungsaufgabe erfolgreich hinzugefügt", + "af3c2b419ba0779d81ac91cd3ca246b6": "[*] Warten auf den Abschluss der Sicherungsaufgabe...", + "0d1135061a5b00b63bdb12c2f3c9461f": "Sicherungsaufgabe fehlgeschlagen, Sicherungsdatei nicht generiert", + "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] Sicherungsaufgabe abgeschlossen (Datei nach Zeitüberschreitung erkannt): {}", + "ad69c11076734ffc4c0532b54e6f5be3": "Sicherungsdatei wird in den Cloud-Speicher hochgeladen...", + "c722636ded0be8237386a427242ff3b2": "{} Hochladen...", + "2cb88461938b0c418391af13f65a727d": "Der Sicherungsvorgang wird ausgeführt, der Zeitstempel kann jedoch nicht abgerufen werden", + "daa55a73708f906c8cee0bb87284740c": "Fehler beim Abrufen der Informationen zum Sicherungsfortschritt: {}", + "d41c74fcc2dd04880a0285c147188bf7": "Backup-Daten vorbereiten", + "c415a70c8540eb59121587b3ab5d5cfa": "Beginnen Sie mit der Wiederherstellung der Daten", + "c76bac64baa6fbf5c51ec144c70d91d3": "Datenwiederherstellung abgeschlossen", + "0f4f13d63e87130a24667c6bd4cb5e2e": "Die Wiederherstellungskonfigurationsdatei ist nicht vorhanden", + "667a68bf7113541f218081fac58f6815": "Wiederherstellungskonfigurationsdatei existiert nicht: {}", + "e7a91a4400b67b84e7cca61642b93f4d": "Fehler beim Abrufen der Informationen zum Wiederherstellungsfortschritt: {}", + "5ba4673aac259be67bac9db8cfc9c5b2": "Datenwiederherstellung wird vorbereitet", + "5b43e0e228169e5df9cec81876cd3710": "Fehler: Force-Parameter muss 0 oder 1 sein", + "12b65fbe011be723b4ae981c0d42c44d": "Wiederherstellungsaufgabe erfolgreich hinzugefügt", + "741e160bb129a548e26fbad37c8f674d": "Der SSH-Verbindungstest ist fehlgeschlagen. Bitte überprüfen Sie, ob IP und Port korrekt sind", + "808781229f7b019ba6a44ea3871e3b6d": "Lesemigrationsaufgabe fehlgeschlagen, bitte versuchen Sie es später noch einmal!", + "025de5f8c791241d326ec4e086e9898e": "{} [{}] Zertifikat ist abgelaufen ✗", + "ecd204c03ea44719e6fa4ea25569266a": "{} {} ✓", + "b561b1ca5fd89d639144a099f5fe096d": "Sicherung der SSL-Zertifikatinformationen abgeschlossen", + "9307ae55fb4a7b878e377790e040eec4": "Wiederhergestellte Bereitstellungspostfächer für Zertifikat {}: {}", + "6ffcb0a3e8cdf728b3e7bc45ae221e5a": "Das Einfügen des Zertifikats ist fehlgeschlagen. Bitte überprüfen Sie das Protokoll", + "e9ed6b2a27deb5699565f0441dc713e9": "Beginnen Sie mit der Sicherung der Softwareinformationen", + "2de6c0aa3c26285104f898b368bcf287": "Beginnen Sie mit der Installation von node-{}", + "3b83e3fdb17c70ca190e263e0bd7173e": "Überspringt die Installation, wenn dieselbe Umgebung vorhanden ist", + "d4e8a75d522d3e77ae80eadd49b0865e": "Die Liste der Remote-Datenbanken ist leer", + "ad6937d61b4d6e93a13f03308c66f2eb": "Der Mongodb-Dienst läuft nicht!", + "d8a3336243e1c08e8a29c75af1eb528c": "MySQL-Initialisierung erfolgreich!", + "73af95fd2322196e0d9792df4ca1f566": "MongoDB-Initialisierung erfolgreich!", + "8c9718f3235e7c36c9f400bc68db1ef5": "MongoDB-Set-Authentifizierung fehlgeschlagen!Fehler: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "PostgreSQL-Initialisierung erfolgreich!", + "c46866b7bc29cf9d478835bda10e43ce": "Redis-Initialisierung erfolgreich!", + "4e889bbbfc5e25ebf611e5764b8a358c": "Beginnen Sie mit der Wiederherstellung der Datenbank", + "b819d4259ca3ab0042562acea69e83e1": "Die PostgreSQL-Datenbank {} existiert bereits", + "31b21eca2e62de420cf05e8135089114": "Sicherungsdatei existiert nicht!", + "9a176a20c15e3dc096ed8bc5a05182ba": "Firewall-Portregeln ✓", + "7ebd5e6b35357be0d5079f674f68ed8f": "Firewall-Weiterleitungsregeln ✓", + "927bb2298acc2c29d1beaff4d1656371": "Firewall-Datensicherung abgeschlossen", + "3e0b3a3e90cc4a1f5abbf3fd1a38c2b7": "Installiert.", + "03f3f31fd240913a083a78fc2d60f6f8": "Wiederherstellung der Firewall-Regionsregeln wird gestartet", + "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "Beginnen Sie mit der Sicherung der Site-Daten", + "c8cecd19f4f4a680a5879f828d1c5578": "{} Projekt wird wiederhergestellt: {}", + "e8480272035737a247832288f618c270": "Beginnen Sie mit der Wiederherstellung der Mailserverdaten", + "e058c7e1fd9cd1a4fd7ac7240a7765d2": "Wiederherstellung fehlgeschlagen, Datei existiert nicht", + "1502c42b339a3dfe20e4c95186b38dc3": "Beginnen Sie mit der Sicherung der FTP-Kontoinformationen", + "30560687e27ef30b6f1cde26359eea6c": "Beginnen Sie mit der Installation der Nginx-Firewall", + "a776b4ccf7343a25223817c8597ca7cf": "Nginx-Firewall ✓", + "d0c97e94eb5061783de7bbad8e7bd295": "Beginnen Sie mit der Wiederherstellung der Nginx-Firewall-Daten", + "427ad80bf462a92719fcff5c1a1be755": "Nginx-Firewall ✗", + "29ad27f749c3f913779d432115de597f": "Beginnen Sie mit der Installation des Website-Überwachungsberichts", + "c922c95c5f7973050d08412a26aab462": "Beginnen Sie mit der Installation des Manipulationsschutzes für Unternehmen", + "bda583fc184a8e079a37e169a9614e10": "Daten zur Systemhärtung ✓", + "b1bcc839644a9a611f9d8e2e1f63e0d0": "Der Dateiname ist zu lang (über 255 Byte).", + "29886cc45dfd7d6c3177d4a6ccfaae94": "Der vollständige Pfad ist zu lang (über 4096 Byte).", + "a3b7d5cfd749d2f8c5af2a8f45f002ea": "Dateipfad konnte nicht überprüft werden: {}", + "8e6595abbb40f247c74fffdf61bd5a00": "Setup fehlgeschlagen!Bitte versuchen Sie erneut, sich anzumelden.", + "a499f309ac7a223d611d7a0a85900342": "Kein Neustartdatensatz gefunden.", + "d23fb11ea541cd5f1c0b05851d54fd58": "Als gelesen markiert.", + "1983b37067c7e94095a5113786fdef9c": "Die Bearbeitung ist fehlgeschlagen, die Verbindung zum Docker ist abgelaufen. Bitte starten Sie Docker neu und versuchen Sie es erneut!", + "9e90efb62702b147b71e8731290caf44": "Das Bild [{}] existiert nicht. Bitte aktivieren Sie [Bild ziehen erzwingen] und versuchen Sie es erneut!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "Der neue Container wurde nicht erfolgreich erstellt und der alte Container wurde wiederhergestellt.{}", + "1f004e412319b7ed472624e011b3d2ba": "Update erfolgreich!", + "a2ea046c20d2da5cebf2dea01a62dabe": "Update fehlgeschlagen!Der Containerstatus wurde wiederhergestellt", + "f9a48b804d917398e795016687f3b0f4": "Bitte deaktivieren Sie [Manipulationssicher für Unternehmen], bevor Sie es versuchen!", + "ca1bc3e1d32b99b90395da47b88576a9": "Parameterfehler, bitte übergeben Sie: ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "Parameterfehler, bitte übergeben Sie: _ws!", + "6c3e5d603d8845422e861fb0b4eed350": "Ein Konfigurationselement, das dies tut", + "f324009782d2d9e73d1087884ebc2c4c": "Das Docker-Root darf nicht leer sein!", + "538960e1336f919e37a0d2c024c56830": "Das aktuelle Docker-Root-Verzeichnis ist das Zielverzeichnis und muss nicht geändert werden!", + "a848bbd79221dfdce1c9dca536dbfada": "Das JSON-Format der Proxy-Einstellungen ist falsch!", + "edf6eb680187066c4dea216b3b20d6d2": "Proxy-Einrichtung erfolgreich!", + "b01f9411136207ad7df28b9bf2387e2a": "Upgrade fehlgeschlagen!Gründe für das Scheitern:{}", + "da896b628e3ded58445e4b015320f327": "Überladung schlägt fehl aus folgendem Grund:{}", + "efb869976990f78b3d6fcbaf270e3323": "Nachladen erfolgreich!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Globale Profilüberladung fehlgeschlagen:{}", + "75bbb7a00c3b5b510913952fe089f52a": "Falscher Parameter, Pfadparameter!", + "273609d18876f5f9e3f021032e5b57a3": "Einrichtung fehlgeschlagen!", + "0720c6c4f478b3a374b4a438f7cf80ad": "Das Importieren des Bildes ist fehlgeschlagen, die Verbindung zum Docker ist abgelaufen. Versuchen Sie bitte, Docker neu zu starten und versuchen Sie es erneut!", + "22cc0388137842df9649b3bbcff345e8": "Wenn der Image-Import fehlschlägt und das temporäre Containerverzeichnis nicht erstellt wird, prüfen Sie, ob die Schutzsoftware über einen Abfangdatensatz verfügt.", + "0568e5e8aa7c811dd420c818189a0d46": "vor Sekunden", + "53c53a79f864561f8b6886b3dde7cd51": "vor Minuten", + "f329a0dab82282e50e3aea9260e95d53": "Vor Stunden", + "7a1af30a5ce889031cbc2472766159e3": "vor Tagen", + "558a41d55884223583b3542e802d2b64": "Der Spiegelname darf nicht leer sein!", + "0e8623af4dd4d3b732904872d22fbf83": "Der Netzwerkname darf nicht leer sein!", + "5aa2044b58e63d58ddecc69421802404": "Gateways können", + "ceaa20eefd6749452a947c7f5dfa4eb0": "IP-Bereiche dürfen nicht leer sein!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "Das Erstellen eines Netzwerks ist fehlgeschlagen!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Netzwerkname: [{}] existiert bereits!", + "9cdc09516d85ae057d1d9bedc988849e": "Schaffen Sie erfolgreich ein Netzwerk!", + "7d643f192968be3f8a54be28592e9176": "Das Scannen des Bildes ist fehlgeschlagen:{}", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Es werden nur Container- und App-Typen unterstützt", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "Version {} zum Anwenden von {} existiert nicht", + "a5c1e82e4d1142b8c7e0bc1499446181": "GIT-ADRESSE IST NICHT EINGESTELLT", + "4e24bbe093c9dfb90092a0f4e71733dc": "Der Filialname ist nicht festgelegt", + "b3c02fc58b92f549f529992c8a696a66": "Der Pfad der ZIP-Datei ist nicht festgelegt", + "eecf07d92b354565df633b06401206a1": "Bitte wählen Sie den Dateipfad aus", + "795d1693702d930f7fc18edfb0f1c0d3": "Fehlkonfiguration des MCP-Servers", + "a16d1dbe265c57e0417ae396c3c30043": "Kein Dienst gefunden [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] Kein Bild gefunden", + "4de8e45b499205551f4a09fd074e5246": "Fehlende Parameter!Ausweis", + "02e85c0a0fa01fabdb5426af13e87853": "Fehlende Parameter!Appname", + "d910ee67a0875a17b6e663f9e19369a4": "Dieser App-Link wird nicht unterstützt!", + "32d030406e8d755a59468a50bd385b22": "Der Container konnte nicht abgerufen werden", + "c8e0f1ed3c37b015ee446297591d172f": "Fehlende Parameter!app_name", + "dad9445733497150b5f2cd29a5aed506": "Der App-Name ist nicht zulässig. Bitte verwenden Sie keine illegalen Zeichen!", + "a04daa98db618d6c2a19aeed5af39448": "Für die angegebene App wurde keine docker-compose.yml-Datei gefunden!", + "74fd3ba5b92aa59e471161d2a585a93c": "Der Parameter „model_name“ darf nicht null sein", + "760a1226f2ba701b04963681ab97d575": "Der Parameter „model_version“ darf nicht null sein", + "2a88d88050ddcc0e28f0da4576be2232": "Der Parameter service_name darf nicht null sein", + "fd0f83d70400b1dd9f6ae9c093638411": "Containerinformationen konnten nicht abgerufen werden, die Ausführung von Docker-Compose ist außergewöhnlich!", + "2aec223006d3894d3c1a48bca642c141": "Das Modell wird heruntergeladen. Bitte überprüfen Sie die Protokolle später", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Modell konnte nicht gelöscht werden, Docker-Compose-Ausführungsausnahme!", + "d75a01e0d2c0cb8dad89216653024903": "Modell erfolgreich gelöscht!", + "f0501638237d7e8f934ec55ac3ffb20f": "Wenn die Installation fehlschlägt, überprüfen Sie das Netzwerk oder installieren Sie Git manuell", + "608113c9694987fa65b22ecb164aee59": "Die Umgebung wurde erfolgreich installiert", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "Das Apphub-Verzeichnis existiert nicht", + "7ec67f9826a24ca4a930a6e168ee9611": "Die Lösung war erfolgreich", + "af2c4fa868813e47b80859a0b36e00f4": "GIT-INFORMATIONEN WURDEN ERFOLGREICH KONFIGURIERT", + "2b038e106d4ca5c11b787e16c73253ef": "Wenn Sie es nicht tun", + "12d1b3062be6f8bb374511323c349ed7": "Bitte legen Sie zuerst die Git-Informationen fest", + "798cd5a257af539ecfe6bb44f45ee788": "Der Import aus Git ist fehlgeschlagen", + "8170f5d37a617dcbf16fe8dd414073dc": "Import aus Git erfolgreich", + "6e40e5a8ad741ca4bd714fa52ef32333": "Das Dateiformat ist falsch. Bitte wählen Sie die ZIP- oder GZ-Datei aus", + "c4996991c50032c9b296c11da356acb2": "Importfehler:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Erfolgreicher Import" } \ No newline at end of file diff --git a/BTPanel/languages/all/fra.json b/BTPanel/languages/all/fra.json index a1d64c21..a46cc611 100644 --- a/BTPanel/languages/all/fra.json +++ b/BTPanel/languages/all/fra.json @@ -3851,5 +3851,221 @@ "c8cecd19f4f4a680a5879f828d1c5578": "Restauration {} Projet: {}", "35850d3654332477522ee06c756a3c85": "Échec de la suppression du répertoire du site source: {}", "c88b730f7a6a312159272ce532947de2": "{} Projet: {} ✓", - "24ee51964e4ece856493ca28fdb075ed": "Restauration des données du site terminée" + "24ee51964e4ece856493ca28fdb075ed": "Restauration des données du site terminée", + "7d7014331b485392e1d6055aad5c26cd": "Vous n'avez pas trouvé le fichier de configuration SSL de nginx phpmyadmin, veuillez essayer de fermer les paramètres du port SSL avant de l'ouvrir.", + "bedfc521aa92e68b04430d33289c6b3c": "Dans l'hébergement multi-serveur Web, seules les versions nginx 1.24 et supérieures sont prises en charge !", + "94e431cde2ffda2ef08526fa2af1b0b5": "Définir l'actif avec succès !", + "fe1887f5db433aa5f5b4b35e78aa2a93": "Échec de la définition de l'actif {}", + "36856cc0aff5e4d792ab1919ec9e24f9": "La sauvegarde de la base de données [{}] a réussi !", + "cd338377817d5286c26f62c0562ebe72": "Base de données importée avec succès [{}]", + "de5ac4bddf9b72b649c0cbd4243f76c6": "réessayez après quelques secondes... veuillez patienter...", + "6905a88552caae6df77f56bd19f6d76a": "Les paramètres des tâches périodiques restent locaux.La sauvegarde locale est conservée.", + "63701b3fa795bcd399aab5d489f8eae9": "Les paramètres des tâches périodiques ne restent pas locaux.La sauvegarde locale n'est pas conservée.", + "837cc24a222df21e74245f4cfac6ad09": "Paramètre utilisateur à enfiler", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB a activé l'authentification de sécurité.", + "4675bfcf662ee236a05dcb763cf9d520": "Le paramètre de cache Apache a échoué.Veuillez vérifier si le site Web fonctionne correctement !", + "0b9aca52d360d6f7a8f2c5c897c93005": "Les paramètres du cache Apache ont réussi !", + "a2cd28fcd32e92be995b2335768fdea3": "Le cache Apache n'est actuellement pris en charge que sous l'hébergement multi-serveur Web", + "b288b8637582cc38c1d4c902ed03cbec": "L'installation du plugin de cache a échoué", + "aebabb72ad41fbe46f73abcc9dc00b9f": "Le plugin de cache n'a pas pu s'activer.Veuillez essayer de l'activer manuellement, puis activer le cache", + "3981bd44ca3f1d5abafc6b15ba8c7435": "Les paramètres du cache OLS ont réussi !", + "3777f748e5535e7e38261b2e0afc8274": "Échec de la configuration du cache OLS : {}", + "8e342838d5cf3a93e34956c9550db4d0": "Échec du déploiement : {}", + "152b976545ff1ee50e0de21da7af1266": "La vérification est en cours.....", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "Vérification des paramètres", + "80f9a0a476836be5fdec10fe414e88a9": "{} Le site internet est en cours de création....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "Créer un site Web", + "8a9535f05c52e58f46e3237b9da019cc": "Ajouter des configurations optionnelles : base de données, FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "Ajouter des configurations facultatives", + "2a5e8b7e4116ee81db89ba173f60bf90": "La vérification des paramètres a échoué", + "2f35a151cc0256f0d9ad5410eccbe5d0": "Échec de la vérification des paramètres : {}", + "af2a8e2174ea327f9fbf77d84029d58b": "Vérification des paramètres réussie", + "181fc26e7b655ba36b3b075ca1ebc350": "Échec de la création du site Web", + "7118aff13541bf3d74a9c47fb458e102": "Échec de la création du site Web : {}", + "be33773093fc2e135ba4bc26f4bb5509": "Le site Web a été créé avec succès", + "8d823a9933eefd02bf1003481f816f64": "Échoué: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "Démarrage réussi !", + "31b88b436695f7e0bc5dad1cb8999737": "N'utilisez pas les ports du service panel !", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "Le port est occupé ou la plage de ports est incorrecte !Il doit être compris entre 100 et 65535", + "7dde7f2ae7cb4ed56b1b683b479ad303": "Attention : la version {} n'a pas encore été installée,", + "839067817c5a1e7fcce2f905284d630e": "Le répertoire source de réécriture et le répertoire cible de réécriture doivent être renseignés en même temps", + "4b6ad864ce62dac8466dde7ec62e7ea9": "Le répertoire source de réécriture et le répertoire cible de réécriture ne peuvent pas être identiques", + "ed6fe3e47d3686c7af83b67535b426b5": "Le répertoire source de réécriture doit commencer par /", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "Le répertoire cible de réécriture doit commencer par /", + "87a9a388a3ef42018ceb866756c4ee39": "La connexion à la base de données a échoué, veuillez vérifier l'état de la base de données !", + "a75c113f53d4342010d140325fa29eec": "Le multiservice du site Internet a été activé.", + "b0a517b4d596e5fc1351f8dc12e73a74": "Veuillez sélectionner le service retenu", + "7e953c855b391ac0716a4eeb47c5c5c3": "Veuillez d'abord activer plusieurs services", + "55d523aa501b0e7e93e172a9e6829a8a": "Erreur lors de l'obtention des informations sur la version de nginx", + "08f18bb6c6293307f68d5f822ed7dbe1": "Actuellement, openresty n'est pas pris en charge", + "45020a62e40bbb43f6e05c62ad50288e": "Il existe déjà une tâche d'installation.Veuillez d'abord attendre qu'il soit terminé !", + "4052df86d5a8dd12943cc8b1d53162e4": "L'installation du service a échoué.Veuillez réessayer !", + "8033c09e6fedf841205b29b57c0ae0d1": "Échec du démarrage du service : {}", + "442d02a722dc331f8b85d328fb99a174": "Le mode multiservice a été activé avec succès", + "a0b289e4caa220dcd62692401d5083f5": "Échec de la désinstallation du service {}.Veuillez réessayer !", + "0045406cf97cbdca708c795aa9554145": "Le service {} n'a pas pu redémarrer.Veuillez essayer un redémarrage manuel ou vérifier le fichier de configuration.", + "52cd203105425f66daf42d81f05c540f": "Le mode multiservice a été désactivé avec succès", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "Le redémarrage du service a échoué.Veuillez vérifier le fichier de configuration Apache !", + "a949ed64edc73a99f9f9c801a84b6390": "Le type de service spécifié n'existe pas", + "408f206d494c5f26144f7492315dfa21": "Une erreur s'est produite lors du changement de service par lots !", + "e9fd26be1a67520e66f2e99d61977c32": "L'identifiant du site Web n'existe pas", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "Le service de site Web actuel est déjà {}", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "La modification de la configuration a échoué.", + "98e762d03fc5ffcb381010aff10c7bde": "Passage réussi à {}", + "293f667205bd8aa91c72f966c03c3de5": "Le type de service de site Web obtenu est incorrect", + "8562d96fc303411ee017a30b83d75712": "Réparé avec succès", + "d9d76120c8c13b40d2e8e49b0d6117da": "Une erreur s'est produite en multiservice et la réparation a échoué.Veuillez essayer de fermer le multiservice, puis de le rouvrir ! :{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "Le fichier de configuration n'existe pas", + "c8622023712105e9e7328396976a2667": "Le fichier de configuration sauvegardé n'existe pas : {}", + "12572c9827392d4bd4c028881ed06242": "Il existe des conflits globaux de proxy ou de réécriture d’URL sur le site Web.Veuillez le supprimer et réessayer !", + "92bce01ab77d0d50efec1d424cab583b": "Ce site Web dispose d'un proxy inverse.Veuillez le supprimer et réessayer !", + "30c74a0981da2edec86936cd288479f7": "Le site Web a configuré un proxy inverse global.Veuillez d'abord l'annuler !", + "c3fe8f7adf26d613d9593acede34303b": "Le site Web est configuré avec une liaison de nom de domaine de sous-répertoire.Veuillez d'abord l'annuler !", + "84e9feba40d0aed963505e503cf821e3": "Échec de la mise à jour...", + "c85411871b8773e799e64d0c23ef79d3": "Commande introuvable !", + "2a6bb1bdd798217656edecf672b6df3c": "Http01 Erreur de vérification, mais site introuvable.", + "962682f10423a33a75f4b1277b3690c9": "Http01 Erreur de vérification, mais le site ne fonctionne pas", + "90299d1fb53fdf7a570db71a1b61c127": "Veuillez d'abord définir le mot de passe racine PgSQL !", + "f562938bcf2a52b32261e4f4a99c3e00": "Échec de la suppression ! La base de données actuelle est en cours de connexion !", + "573ba454733eee7cd866addcd11ea21c": "Échec de la suppression de la base de données !", + "699c43a1633256e97b95615a562eef88": "Le mot de passe de la base de données est vide ! Veuillez d'abord définir le mot de passe de la base de données !", + "eef4302ce8a129e5d70767668a9e9110": "Veuillez choisir le format de fichier SQL, tar.gz, gz, zip !", + "0033a9566af4f930bebbd45802be5427": "échec de connexion", + "079d7d1539d30a76e53b6fb54d370d32": "Ajoutez avec succès !", + "43bf15425909c99f2cc1553eaffaf476": "Échec de la suppression : {}", + "d2c7790b1f776ce6ad06426b03fa71b1": "Le mot de passe de connexion locale est vide, veuillez d'abord définir le mot de passe de la base de données !", + "f9be861aad3eda81843c7797487da8e9": "L'état actuel de la sécurité du système est bon et il n'y a pas de vulnérabilités ou de risques évidents", + "890e24b14414e3da9bc2ad63d6d0befb": "Il existe certains risques de sécurité dans le système et certaines configurations ou politiques doivent être améliorées", + "951c23a91dfe39b5ea5d00405b4dc2c5": "Le système présente des vulnérabilités de sécurité évidentes, veuillez les corriger à temps", + "de36cae19b2a65a45cb4dfccb435530b": "Le système est dans un état à haut risque, veuillez réparer les éléments à risque concernés dès que possible", + "ca6977d373320a7fdb51047199d4cc59": "L'administrateur n'est pas installé !", + "38641e6ce3a6369e108eb595672c8edc": "Désinstallez avec succès !", + "9cae26284a7ad2f46132c1e8e196d089": "Installez avec succès !", + "a9a92e55770213c8aa1fb2871dc43563": "Définissez le port administrateur avec succès !", + "2321763bf0b4cbf345b1e19dc9faec47": "Définissez la version PHP de l'administrateur avec succès !", + "40a1f70c155550ad2dafa5e556e10c3c": "La version PHP ne s'installe pas !", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path est le répertoire racine, impossible de fermer Show Proxy Path !", + "03a2bd12e8b51af547a08985d4882d6d": "Migration terminée", + "793c8358adb487f79f85acfdc44d54bb": "Création d'une tâche de migration : {} -> {}", + "d2f3c14129fe059cf6d99f1583abc23e": "[+] Connexion réussie au serveur {}", + "ae3c4e96fa1411ea25c05ce9a18ae2ae": "Connexion réussie au serveur {}", + "10adeeeb866978b5ae637ae2bc13fb96": "Exception de connexion SSH : {}", + "cd4dc264f41eda817374af0bddcea259": "Connexion à l'aide de la clé RSA", + "5e1b5e437b38bfb11b1e4853f8838d3f": "Échec du chargement de la clé RSA : {}", + "1cc35e618813746cb1bd4658f7ac61a0": "Échec du chargement de la clé DSA : {}", + "f579ce14b1e98ae9ad4d392279730d9a": "Connexion à l'aide de la touche {}", + "fa4e18c6d3b0c0fa6a5ac1303dda02a7": "Impossible de reconnaître ou de charger la clé, veuillez vérifier si le format du fichier clé est correct", + "2ab043e41d8fd10931cfa912b4b11bf8": "[!] Impossible de déterminer le type de système d'exploitation", + "2d23313d6e3e201771154cf99d5dab34": "L'installation de curl ou wget a échoué, veuillez l'installer manuellement", + "b44992b4430f7759108e5242176b7871": "[+] curl ou wget est installé", + "613a8be93fcd44002e549e0767c85a86": "Impossible de détecter le type de système d'exploitation, veuillez installer curl ou wget manuellement", + "2942f90ee3b191c0b98add719760e356": "[*] Taille du fichier : {:.2f} Mo", + "9c30f21dd1175d2e9b7503e873a52b2f": "[*] Téléversé : {:.2f} % ({:.2f} Mo / {:.2f} Mo)", + "04e05f53e1a18a781dbabae6cdd0e495": "Fichier de téléchargement incomplet détecté, reprise à partir de {:.2f} Mo", + "148b2912de8b29f47dc234983554ea2b": "\\r[*] Progression du téléchargement : {:.2f}% - {:.2f} Ko/s - Temps restant : {}", + "e9b7b10566a85a5356096a630d64d2d7": "[*] En attente du démarrage du service aapanel...", + "304e687ee7c78fdae6e70226f61d9708": "Exécution d'une tâche d'ajout de restauration...", + "062ca961d059ebd358098ffdb12f42bb": "La restauration de la sauvegarde a échoué, veuillez vérifier le journal", + "f857f6dc6a146a3b125ea3253052ca43": "Démarrer la tâche de migration", + "8085ded0444fcde19b9ea4d365502f67": "Informations de sauvegarde introuvables", + "da7f5eb715a1a1a2378ee56a5ee24bbd": "Échec de la restauration des données : {}", + "0f4f13d63e87130a24667c6bd4cb5e2e": "Le fichier de configuration de restauration n'existe pas", + "616e012bcc90980f6ddfd2b3c17345f8": "Impossible de progresser", + "87aa2e739755a6fea3a63876b5a1d48e": "Avec succès", + "ec56d7aedc9c5242d094ebbaeda5047e": "Sauvegarde des informations du fournisseur d'API DNS terminée", + "0672a3dc402dc9657fd0a0f1580d1c12": "Aucune donnée de restauration trouvée", + "4b09abb2edd44a4510395a297a2ff155": "Commencez à installer mongodb-{}", + "fbabb869ff01746bd144289622b277fc": "Commencez à installer redis-{}", + "da7d69765f1876fba52c21a17e8c74c6": "Commencez à installer postgresql-{}", + "3b83e3fdb17c70ca190e263e0bd7173e": "Ignorera l'installation si le même environnement existe", + "d8a3336243e1c08e8a29c75af1eb528c": "Initialisation MySQL réussie !", + "73af95fd2322196e0d9792df4ca1f566": "Initialisation MongoDB réussie !", + "8c9718f3235e7c36c9f400bc68db1ef5": "Échec de l'authentification définie par MongoDB !erreur: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "Initialisation PostgreSQL réussie !", + "c46866b7bc29cf9d478835bda10e43ce": "Initialisation Redis réussie !", + "4e889bbbfc5e25ebf611e5764b8a358c": "Commencer à restaurer la base de données", + "ecea29915732c5d0001ece74601f3d20": "{} base de données {} ✓", + "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "La base de données existe déjà, ignorer la restauration SQL", + "af71c2c0e3813c9a77fe48507ea8e4d1": "La base de données MongoDB {} existe déjà", + "927bb2298acc2c29d1beaff4d1656371": "Sauvegarde des données du pare-feu terminée", + "1502c42b339a3dfe20e4c95186b38dc3": "Commencez à sauvegarder les informations du compte FTP", + "b18010e000c073a3587a89b2931c2770": "Sauvegarde des informations du compte FTP terminée", + "66f3f8adc854963e94a643b706157309": "Rapport de surveillance du site Web ✓", + "bd43add14ebbd0f448c207c48e1d5ac8": "Données du rapport de surveillance du site Web ✓", + "50bcd3813a4b18663b0bdc29f73b8c90": "Protection contre la falsification d'entreprise ✗", + "b1bcc839644a9a611f9d8e2e1f63e0d0": "Le nom du fichier est trop long (plus de 255 octets).", + "29886cc45dfd7d6c3177d4a6ccfaae94": "Le chemin complet est trop long (plus de 4 096 octets).", + "a3b7d5cfd749d2f8c5af2a8f45f002ea": "Échec de la vérification du chemin du fichier : {}", + "8e6595abbb40f247c74fffdf61bd5a00": "Échec de l'installation !Veuillez réessayer de vous connecter.", + "a499f309ac7a223d611d7a0a85900342": "Aucun enregistrement de redémarrage trouvé.", + "d23fb11ea541cd5f1c0b05851d54fd58": "Marqué comme lu.", + "1983b37067c7e94095a5113786fdef9c": "Échec de la modification, la connexion au Docker a expiré, veuillez redémarrer Docker et réessayer !", + "9e90efb62702b147b71e8731290caf44": "L'image [{}] n'existe pas, veuillez essayer de cocher [Forcer l'extraction de l'image] et réessayer !", + "6cfa55c53df6db8efa59aa2ae6cef97a": "Le nouveau conteneur n'a pas été créé correctement et l'ancien conteneur a été restauré.{}", + "1f004e412319b7ed472624e011b3d2ba": "Mise à jour réussie !", + "a2ea046c20d2da5cebf2dea01a62dabe": "La mise à jour a échoué !L'état du conteneur a été restauré", + "f9a48b804d917398e795016687f3b0f4": "Veuillez désactiver [Inviolable pour Entreprise] avant d'essayer !", + "ca1bc3e1d32b99b90395da47b88576a9": "Erreur de paramètre, veuillez transmettre : ws_callback !", + "b4770fb21a608a5ba1ecacae409093d0": "Erreur de paramètre, veuillez transmettre : _ws !", + "6c3e5d603d8845422e861fb0b4eed350": "Un élément de configuration qui ne", + "f324009782d2d9e73d1087884ebc2c4c": "La racine Docker ne peut pas être vide!", + "538960e1336f919e37a0d2c024c56830": "Le répertoire racine actuel de Docker est le répertoire cible et n’a pas besoin d’être modifié !", + "a848bbd79221dfdce1c9dca536dbfada": "Le format JSON des paramètres du proxy est erroné !", + "edf6eb680187066c4dea216b3b20d6d2": "Configuration du proxy réussie !", + "b01f9411136207ad7df28b9bf2387e2a": "La mise à niveau a échoué !Raisons de l'échec :{}", + "da896b628e3ded58445e4b015320f327": "La surcharge échoue en raison de :{}", + "efb869976990f78b3d6fcbaf270e3323": "Rechargement réussi !", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Échec de la surcharge du profil global :{}", + "75bbb7a00c3b5b510913952fe089f52a": "Mauvais paramètre, paramètre de chemin !", + "273609d18876f5f9e3f021032e5b57a3": "Échec de l'installation !", + "0720c6c4f478b3a374b4a438f7cf80ad": "Échec de l'importation de l'image, la connexion à Docker a expiré, veuillez essayer de redémarrer Docker et réessayer !", + "22cc0388137842df9649b3bbcff345e8": "Si l'importation de l'image échoue et que le répertoire du conteneur temporaire n'est pas créé, vérifiez si le logiciel de protection dispose d'un enregistrement d'interception.", + "0568e5e8aa7c811dd420c818189a0d46": "il y a quelques secondes", + "53c53a79f864561f8b6886b3dde7cd51": "il y a quelques minutes", + "f329a0dab82282e50e3aea9260e95d53": "il y a des heures", + "7a1af30a5ce889031cbc2472766159e3": "il y a quelques jours", + "558a41d55884223583b3542e802d2b64": "Le nom du miroir ne peut pas être vide !", + "0e8623af4dd4d3b732904872d22fbf83": "Le nom du réseau ne peut pas être vide !", + "5aa2044b58e63d58ddecc69421802404": "Les passerelles peuvent", + "ceaa20eefd6749452a947c7f5dfa4eb0": "Les plages IP ne peuvent pas être vides !", + "c3e2cce9a4a1b26f46f462f34ae391b9": "La création d'un réseau a échoué !", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Nom du réseau : [{}] existe déjà !", + "9cdc09516d85ae057d1d9bedc988849e": "Créez un réseau avec succès !", + "7d643f192968be3f8a54be28592e9176": "Échec de la numérisation de l'image :{}", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Seuls les types de conteneurs et d'applications sont pris en charge", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "La version {} pour l'application de {} n'existe pas", + "a5c1e82e4d1142b8c7e0bc1499446181": "L'ADRESSE GIT N'EST PAS DÉFINIE", + "4e24bbe093c9dfb90092a0f4e71733dc": "Le nom de la branche n'est pas défini", + "b3c02fc58b92f549f529992c8a696a66": "Le chemin du fichier zip n'est pas défini", + "eecf07d92b354565df633b06401206a1": "Veuillez sélectionner le chemin du fichier", + "795d1693702d930f7fc18edfb0f1c0d3": "Mauvaise configuration du serveur MCP", + "a16d1dbe265c57e0417ae396c3c30043": "Aucun service trouvé [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] Aucune image trouvée", + "4de8e45b499205551f4a09fd074e5246": "Paramètres manquants !identifiant", + "02e85c0a0fa01fabdb5426af13e87853": "Paramètres manquants !nom de l'application", + "d910ee67a0875a17b6e663f9e19369a4": "Ce lien d'application n'est pas pris en charge !", + "32d030406e8d755a59468a50bd385b22": "Impossible d'obtenir le conteneur", + "c8e0f1ed3c37b015ee446297591d172f": "Paramètres manquants !nom_application", + "dad9445733497150b5f2cd29a5aed506": "Le nom de l'application n'est pas légal, veuillez ne pas inclure de caractères illégaux !", + "a04daa98db618d6c2a19aeed5af39448": "Aucun fichier docker-compose.yml trouvé pour l'application spécifiée !", + "74fd3ba5b92aa59e471161d2a585a93c": "Le paramètre model_name ne peut pas être nul", + "760a1226f2ba701b04963681ab97d575": "Le paramètre model_version ne peut pas être nul", + "2a88d88050ddcc0e28f0da4576be2232": "Le paramètre service_name ne peut pas être nul", + "fd0f83d70400b1dd9f6ae9c093638411": "Échec de l'obtention des informations sur le conteneur, l'exécution de docker-compose est exceptionnelle !", + "2aec223006d3894d3c1a48bca642c141": "Le modèle est en cours de téléchargement, veuillez vérifier les journaux plus tard", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Échec de la suppression du modèle, exception d'exécution de docker-compose !", + "d75a01e0d2c0cb8dad89216653024903": "Suppression réussie du modèle !", + "f0501638237d7e8f934ec55ac3ffb20f": "Si l'installation échoue, vérifiez le réseau ou installez git manuellement", + "608113c9694987fa65b22ecb164aee59": "L'environnement a été installé avec succès", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "Le répertoire apphub n'existe pas", + "7ec67f9826a24ca4a930a6e168ee9611": "La résolution a réussi", + "af2c4fa868813e47b80859a0b36e00f4": "LES INFORMATIONS GIT SONT CONFIGURÉES AVEC SUCCÈS", + "2b038e106d4ca5c11b787e16c73253ef": "Si tu ne", + "12d1b3062be6f8bb374511323c349ed7": "Veuillez d'abord définir les informations git", + "798cd5a257af539ecfe6bb44f45ee788": "L'importation depuis git a échoué", + "8170f5d37a617dcbf16fe8dd414073dc": "Importation depuis git réussie", + "6e40e5a8ad741ca4bd714fa52ef32333": "Le format de fichier est incorrect, veuillez sélectionner le fichier zip ou gz", + "c4996991c50032c9b296c11da356acb2": "Échec de l'importation :{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Importation réussie" } \ No newline at end of file diff --git a/BTPanel/languages/all/ind.json b/BTPanel/languages/all/ind.json index 44e24c2b..a6e71b00 100644 --- a/BTPanel/languages/all/ind.json +++ b/BTPanel/languages/all/ind.json @@ -3609,5 +3609,184 @@ "c8cecd19f4f4a680a5879f828d1c5578": "Memulihkan {} proyek: {}", "35850d3654332477522ee06c756a3c85": "Gagal Menghapus Direktori Situs Sumber: {}", "c88b730f7a6a312159272ce532947de2": "{} proyek: {} ✓", - "24ee51964e4ece856493ca28fdb075ed": "Restorasi data situs selesai" + "24ee51964e4ece856493ca28fdb075ed": "Restorasi data situs selesai", + "7d7014331b485392e1d6055aad5c26cd": "Tidak menemukan file konfigurasi ssl nginx phpmyadmin, silakan coba tutup pengaturan port ssl sebelum membuka", + "bedfc521aa92e68b04430d33289c6b3c": "Di Multi-WebServer Hosting, hanya nginx versi 1.24 ke atas yang didukung!", + "94e431cde2ffda2ef08526fa2af1b0b5": "Tetapkan Aset Berhasil!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "Gagal Menetapkan Aset {}", + "36856cc0aff5e4d792ab1919ec9e24f9": "Pencadangan database [{}] berhasil!", + "cd338377817d5286c26f62c0562ebe72": "Basis data berhasil diimpor [{}]", + "de5ac4bddf9b72b649c0cbd4243f76c6": "coba lagi setelah beberapa detik...harap tunggu...", + "6905a88552caae6df77f56bd19f6d76a": "Pengaturan tugas Cron tetap lokal.Cadangan lokal dipertahankan.", + "63701b3fa795bcd399aab5d489f8eae9": "Pengaturan tugas cron tidak bersifat lokal.Cadangan lokal tidak disimpan.", + "837cc24a222df21e74245f4cfac6ad09": "Pengaturan pengguna untuk dikenakan", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB telah mengaktifkan otentikasi keamanan.", + "4675bfcf662ee236a05dcb763cf9d520": "Pengaturan cache Apache gagal.Silakan periksa apakah situs web berfungsi dengan baik!", + "0b9aca52d360d6f7a8f2c5c897c93005": "Pengaturan cache Apache berhasil!", + "a2cd28fcd32e92be995b2335768fdea3": "Cache Apache saat ini hanya didukung di Multi-WebServer Hosting", + "b288b8637582cc38c1d4c902ed03cbec": "Instalasi plugin cache gagal", + "aebabb72ad41fbe46f73abcc9dc00b9f": "Plugin cache gagal diaktifkan.Silakan coba aktifkan secara manual lalu aktifkan cache", + "3981bd44ca3f1d5abafc6b15ba8c7435": "Pengaturan cache OLS berhasil!", + "3777f748e5535e7e38261b2e0afc8274": "Konfigurasi cache OLS gagal: {}", + "8e342838d5cf3a93e34956c9550db4d0": "Penerapan gagal: {}", + "152b976545ff1ee50e0de21da7af1266": "Verifikasi sedang berlangsung.....", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "Verifikasi parameter", + "80f9a0a476836be5fdec10fe414e88a9": "{} Situs web sedang dibuat....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "Buat situs web", + "8a9535f05c52e58f46e3237b9da019cc": "Tambahkan konfigurasi opsional: database, FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "Tambahkan konfigurasi opsional", + "2a5e8b7e4116ee81db89ba173f60bf90": "Verifikasi parameter gagal", + "2f35a151cc0256f0d9ad5410eccbe5d0": "Verifikasi parameter gagal: {}", + "af2a8e2174ea327f9fbf77d84029d58b": "Verifikasi parameter berhasil", + "181fc26e7b655ba36b3b075ca1ebc350": "Gagal membuat situs web", + "7118aff13541bf3d74a9c47fb458e102": "Gagal membuat situs web: {}", + "be33773093fc2e135ba4bc26f4bb5509": "Website berhasil dibuat", + "8d823a9933eefd02bf1003481f816f64": "Gagal: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "Startup yang sukses!", + "31b88b436695f7e0bc5dad1cb8999737": "Jangan gunakan port layanan panel!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "Port terisi atau jangkauan port salah!Seharusnya antara 100 dan 65535", + "7dde7f2ae7cb4ed56b1b683b479ad303": "Peringatan: versi {} belum dipasang,", + "839067817c5a1e7fcce2f905284d630e": "Penulisan ulang direktori sumber dan penulisan ulang direktori target harus diisi secara bersamaan", + "4b6ad864ce62dac8466dde7ec62e7ea9": "Penulisan ulang direktori sumber dan penulisan ulang direktori target tidak boleh sama", + "ed6fe3e47d3686c7af83b67535b426b5": "Penulisan ulang direktori sumber harus dimulai dengan /", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "Penulisan ulang direktori target harus dimulai dengan /", + "87a9a388a3ef42018ceb866756c4ee39": "Koneksi basis data gagal, silakan periksa status basis data!", + "a75c113f53d4342010d140325fa29eec": "Multi-layanan situs web telah diaktifkan.", + "b0a517b4d596e5fc1351f8dc12e73a74": "Silakan pilih layanan yang dipertahankan", + "7e953c855b391ac0716a4eeb47c5c5c3": "Harap aktifkan beberapa layanan terlebih dahulu", + "55d523aa501b0e7e93e172a9e6829a8a": "Kesalahan dalam memperoleh informasi versi nginx", + "08f18bb6c6293307f68d5f822ed7dbe1": "Saat ini, openresty tidak didukung", + "45020a62e40bbb43f6e05c62ad50288e": "Sudah ada tugas instalasi.Silakan tunggu hingga selesai terlebih dahulu!", + "4052df86d5a8dd12943cc8b1d53162e4": "Instalasi layanan gagal.Silakan coba lagi!", + "8033c09e6fedf841205b29b57c0ae0d1": "Startup layanan gagal: {}", + "442d02a722dc331f8b85d328fb99a174": "Mode multi-layanan telah berhasil diaktifkan", + "a0b289e4caa220dcd62692401d5083f5": "Gagal mencopot pemasangan layanan {}.Silakan coba lagi!", + "0045406cf97cbdca708c795aa9554145": "Layanan {} gagal dimulai ulang.Silakan coba restart manual atau periksa file konfigurasi.", + "52cd203105425f66daf42d81f05c540f": "Mode multi-layanan telah berhasil dinonaktifkan", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "Restart layanan gagal.Silakan periksa file konfigurasi Apache!", + "a949ed64edc73a99f9f9c801a84b6390": "Jenis layanan yang ditentukan tidak ada", + "408f206d494c5f26144f7492315dfa21": "Terjadi kesalahan saat berpindah layanan secara batch!", + "e9fd26be1a67520e66f2e99d61977c32": "ID situs web tidak ada", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "Layanan situs web saat ini sudah {}", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "Modifikasi konfigurasi gagal.", + "98e762d03fc5ffcb381010aff10c7bde": "Berhasil beralih ke {}", + "293f667205bd8aa91c72f966c03c3de5": "Jenis layanan website yang didapat salah", + "8562d96fc303411ee017a30b83d75712": "Berhasil diperbaiki", + "d9d76120c8c13b40d2e8e49b0d6117da": "Terjadi kesalahan di multi-layanan dan perbaikan gagal.Silakan coba tutup multi-layanan lalu buka kembali!:{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "File konfigurasi tidak ada", + "c8622023712105e9e7328396976a2667": "File konfigurasi yang dicadangkan tidak ada: {}", + "12572c9827392d4bd4c028881ed06242": "Ada konflik penulisan ulang proxy atau url global di situs web.Silakan hapus dan coba lagi!", + "92bce01ab77d0d50efec1d424cab583b": "Situs web ini memiliki proxy terbalik.Silakan hapus dan coba lagi!", + "30c74a0981da2edec86936cd288479f7": "Situs web telah mengonfigurasi proksi terbalik global.Tolong batalkan dulu!", + "c3fe8f7adf26d613d9593acede34303b": "Situs web dikonfigurasi dengan pengikatan nama domain subdirektori.Tolong batalkan dulu!", + "84e9feba40d0aed963505e503cf821e3": "Pembaruan Gagal...", + "2a6bb1bdd798217656edecf672b6df3c": "Http01 Verifikasi Kesalahan, tetapi Situs Tidak Ditemukan.", + "962682f10423a33a75f4b1277b3690c9": "Http01 Verifikasi Kesalahan, tetapi Situs Tidak Berjalan", + "90299d1fb53fdf7a570db71a1b61c127": "Silakan atur kata sandi Root PgSQL terlebih dahulu!", + "d2c7790b1f776ce6ad06426b03fa71b1": "Kata sandi login lokal kosong, harap atur kata sandi database terlebih dahulu!", + "f9be861aad3eda81843c7797487da8e9": "Status keamanan sistem saat ini baik, dan tidak ada kerentanan atau risiko yang jelas", + "890e24b14414e3da9bc2ad63d6d0befb": "Terdapat risiko keamanan tertentu dalam sistem, dan beberapa konfigurasi atau kebijakan perlu ditingkatkan", + "951c23a91dfe39b5ea5d00405b4dc2c5": "Sistem memiliki kerentanan keamanan yang jelas, harap perbaiki tepat waktu", + "de36cae19b2a65a45cb4dfccb435530b": "Sistem berada dalam kondisi berisiko tinggi, harap perbaiki item risiko yang relevan sesegera mungkin", + "ca6977d373320a7fdb51047199d4cc59": "Adminer belum diinstal!", + "38641e6ce3a6369e108eb595672c8edc": "Uninstall Berhasil!", + "9cae26284a7ad2f46132c1e8e196d089": "Instal Berhasil!", + "a9a92e55770213c8aa1fb2871dc43563": "Setel port Adminer berhasil!", + "2321763bf0b4cbf345b1e19dc9faec47": "Berhasil mengatur versi php Adminer!", + "40a1f70c155550ad2dafa5e556e10c3c": "Versi PHP tidak dapat diinstal!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path adalah direktori root, tidak dapat menutup Tampilkan Jalur Proxy!", + "908300abff5dfdf254726c2193f3e550": "Gagal menyambung kembali ke server, jumlah percobaan ulang maksimum telah tercapai ({})", + "baa339aa8e95d46851fd48574cb1d902": "Memulihkan kotak surat penerapan untuk sertifikat {}...", + "9307ae55fb4a7b878e377790e040eec4": "Kotak surat penerapan yang dipulihkan untuk sertifikat {}: {}", + "c8a71420e709d8a4d02914a78d9a0e06": "Mulai pulihkan konfigurasi sertifikat SSL domain", + "c49480308ee71202cc5fff5ea96eaaed": "File sertifikat tidak ada", + "cabf299a6cfa5874e23582c535f301c6": "Mulai menginstal nginx-{}", + "33ec71107108ed89c0b526d5473526c8": "Mulai instal layanan Apache", + "d8a3336243e1c08e8a29c75af1eb528c": "Inisialisasi MySQL berhasil!", + "73af95fd2322196e0d9792df4ca1f566": "Inisialisasi MongoDB berhasil!", + "8c9718f3235e7c36c9f400bc68db1ef5": "Otentikasi set MongoDB gagal!kesalahan: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "Inisialisasi PostgreSQL berhasil!", + "c46866b7bc29cf9d478835bda10e43ce": "Inisialisasi Redis berhasil!", + "4e889bbbfc5e25ebf611e5764b8a358c": "Mulai memulihkan basis data", + "e3a04ee4c0a034510866948e571c7966": "Memulai pencadangan data firewall", + "9a176a20c15e3dc096ed8bc5a05182ba": "Aturan port firewall ✓", + "7ebd5e6b35357be0d5079f674f68ed8f": "Aturan penerusan firewall ✓", + "0010c09bd9f322c3b88a89dd0b52c831": "Data firewall Nginx ✓", + "a7b8bc831a9b36cc5127b5f8ecbec22a": "Laporan pemantauan situs web ✗", + "c922c95c5f7973050d08412a26aab462": "Mulai pasang perlindungan kerusakan perusahaan", + "b1bcc839644a9a611f9d8e2e1f63e0d0": "Nama file terlalu panjang (lebih dari 255 byte).", + "29886cc45dfd7d6c3177d4a6ccfaae94": "Jalur lengkapnya terlalu panjang (lebih dari 4096 byte).", + "a3b7d5cfd749d2f8c5af2a8f45f002ea": "Gagal memeriksa jalur file: {}", + "8e6595abbb40f247c74fffdf61bd5a00": "Penyiapan gagal!Silakan coba masuk lagi.", + "a499f309ac7a223d611d7a0a85900342": "Tidak ditemukan catatan reboot.", + "d23fb11ea541cd5f1c0b05851d54fd58": "Ditandai sebagai telah dibaca.", + "1983b37067c7e94095a5113786fdef9c": "Pengeditan gagal, waktu koneksi ke buruh pelabuhan habis, silakan mulai ulang buruh pelabuhan dan coba lagi!", + "9e90efb62702b147b71e8731290caf44": "Gambar [{}] tidak ada, coba centang [Force pull image] dan coba lagi!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "Penampung baru tidak berhasil dibuat, dan penampung lama telah dipulihkan.{}", + "1f004e412319b7ed472624e011b3d2ba": "Pembaruan berhasil!", + "a2ea046c20d2da5cebf2dea01a62dabe": "Pembaruan gagal!Status kontainer telah dipulihkan", + "f9a48b804d917398e795016687f3b0f4": "Harap matikan [Tahan kerusakan untuk Perusahaan] sebelum mencoba!", + "ca1bc3e1d32b99b90395da47b88576a9": "Kesalahan parameter, Silakan sampaikan: ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "Kesalahan parameter, Harap sampaikan: _ws!", + "6c3e5d603d8845422e861fb0b4eed350": "Item konfigurasi yang tidak", + "f324009782d2d9e73d1087884ebc2c4c": "Akar Docker tidak boleh kosong!", + "538960e1336f919e37a0d2c024c56830": "Direktori root Docker saat ini adalah direktori target dan tidak perlu diubah!", + "a848bbd79221dfdce1c9dca536dbfada": "Format JSON pada pengaturan proxy salah!", + "edf6eb680187066c4dea216b3b20d6d2": "Penyiapan proxy berhasil!", + "b01f9411136207ad7df28b9bf2387e2a": "Peningkatan gagal!Alasan kegagalan:{}", + "da896b628e3ded58445e4b015320f327": "Gagal melakukan kelebihan beban karena:{}", + "efb869976990f78b3d6fcbaf270e3323": "Muat ulang berhasil!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Gagal membebani profil global:{}", + "75bbb7a00c3b5b510913952fe089f52a": "Parameter salah, parameter jalur!", + "273609d18876f5f9e3f021032e5b57a3": "Penyiapan gagal!", + "0720c6c4f478b3a374b4a438f7cf80ad": "Gagal mengimpor gambar, waktu koneksi ke buruh pelabuhan habis, coba mulai ulang buruh pelabuhan dan coba lagi!", + "22cc0388137842df9649b3bbcff345e8": "Jika impor gambar gagal dan direktori kontainer sementara tidak dibuat, periksa apakah perangkat lunak perlindungan memiliki catatan intersepsi.", + "0568e5e8aa7c811dd420c818189a0d46": "beberapa detik yang lalu", + "53c53a79f864561f8b6886b3dde7cd51": "beberapa menit yang lalu", + "f329a0dab82282e50e3aea9260e95d53": "beberapa jam yang lalu", + "7a1af30a5ce889031cbc2472766159e3": "beberapa hari yang lalu", + "558a41d55884223583b3542e802d2b64": "Nama cermin tidak boleh kosong!", + "0e8623af4dd4d3b732904872d22fbf83": "Nama jaringan tidak boleh kosong!", + "5aa2044b58e63d58ddecc69421802404": "Gateway bisa", + "ceaa20eefd6749452a947c7f5dfa4eb0": "Rentang IP tidak boleh kosong!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "Gagal membuat jaringan!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Nama jaringan: [{}] sudah ada!", + "9cdc09516d85ae057d1d9bedc988849e": "Buat jaringan dengan sukses!", + "7d643f192968be3f8a54be28592e9176": "Gagal memindai gambar:{}", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Hanya jenis kontainer dan aplikasi yang didukung", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "Versi {} untuk menerapkan {} tidak ada", + "a5c1e82e4d1142b8c7e0bc1499446181": "ALAMAT GIT TIDAK DIATUR", + "4e24bbe093c9dfb90092a0f4e71733dc": "Nama cabang belum ditetapkan", + "b3c02fc58b92f549f529992c8a696a66": "Jalur file zip tidak disetel", + "eecf07d92b354565df633b06401206a1": "Silakan pilih jalur file", + "795d1693702d930f7fc18edfb0f1c0d3": "Kesalahan konfigurasi server MCP", + "a16d1dbe265c57e0417ae396c3c30043": "Tidak ada layanan yang ditemukan [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] Tidak ada gambar yang ditemukan", + "4de8e45b499205551f4a09fd074e5246": "Parameter tidak ada!pengenal", + "02e85c0a0fa01fabdb5426af13e87853": "Parameter tidak ada!nama aplikasi", + "d910ee67a0875a17b6e663f9e19369a4": "Tautan aplikasi ini tidak didukung!", + "32d030406e8d755a59468a50bd385b22": "Gagal mendapatkan kontainer", + "c8e0f1ed3c37b015ee446297591d172f": "Parameter tidak ada!nama_aplikasi", + "dad9445733497150b5f2cd29a5aed506": "Nama aplikasi tidak sah, mohon jangan menyertakan karakter ilegal!", + "a04daa98db618d6c2a19aeed5af39448": "Tidak ditemukan file docker-compose.yml untuk aplikasi yang ditentukan!", + "74fd3ba5b92aa59e471161d2a585a93c": "Parameter model_name tidak boleh nol", + "760a1226f2ba701b04963681ab97d575": "Parameter model_version tidak boleh nol", + "2a88d88050ddcc0e28f0da4576be2232": "Parameter nama_layanan tidak boleh nol", + "fd0f83d70400b1dd9f6ae9c093638411": "Gagal mendapatkan informasi container, eksekusi penulisan buruh pelabuhan luar biasa!", + "2aec223006d3894d3c1a48bca642c141": "Model sedang diunduh, silakan periksa lognya nanti", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Gagal menghapus model, pengecualian eksekusi penulisan buruh pelabuhan!", + "d75a01e0d2c0cb8dad89216653024903": "Penghapusan model berhasil!", + "f0501638237d7e8f934ec55ac3ffb20f": "Jika penginstalan gagal, periksa jaringan atau instal git secara manual", + "608113c9694987fa65b22ecb164aee59": "Lingkungan berhasil diinstal", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "Direktori apphub tidak ada", + "7ec67f9826a24ca4a930a6e168ee9611": "Resolusi tersebut berhasil", + "af2c4fa868813e47b80859a0b36e00f4": "INFORMASI GIT BERHASIL DIKONFIGURASI", + "2b038e106d4ca5c11b787e16c73253ef": "Jika kamu tidak", + "12d1b3062be6f8bb374511323c349ed7": "Silakan atur informasi git terlebih dahulu", + "798cd5a257af539ecfe6bb44f45ee788": "Impor dari git gagal", + "8170f5d37a617dcbf16fe8dd414073dc": "Impor dari git berhasil", + "6e40e5a8ad741ca4bd714fa52ef32333": "Format file salah, silakan pilih file zip atau gz", + "c4996991c50032c9b296c11da356acb2": "Kegagalan impor:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Impor berhasil" } \ No newline at end of file diff --git a/BTPanel/languages/all/it.json b/BTPanel/languages/all/it.json index c868ff4c..ae762e19 100644 --- a/BTPanel/languages/all/it.json +++ b/BTPanel/languages/all/it.json @@ -3129,5 +3129,616 @@ "3769ee974734f97166d6bce6b96e9b4e": "Errori di dati", "daddfa03b4ea762e009a36ce970b2b59": "Non esiste un account Baidu impostato", "0379d9c081b6fd9ec2fd86e8672a4e72": "Se non riesci a ottenere i dati, è possibile che le informazioni di accesso siano scadute e puoi provare ad accedere di nuovo", - "3149165696693c4f6fef18928261a50f": "Non esiste un account 360 impostato" + "3149165696693c4f6fef18928261a50f": "Non esiste un account 360 impostato", + "7d7014331b485392e1d6055aad5c26cd": "Non è stato trovato il file di configurazione SSL di nginx phpmyadmin, prova a chiudere le impostazioni della porta SSL prima di aprirle", + "bedfc521aa92e68b04430d33289c6b3c": "Nell'hosting multi-webserver sono supportate solo le versioni nginx 1.24 e successive!", + "94e431cde2ffda2ef08526fa2af1b0b5": "Imposta risorsa con successo!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "Impostazione risorsa non riuscita {}", + "36856cc0aff5e4d792ab1919ec9e24f9": "Backup del database [{}] riuscito!", + "cd338377817d5286c26f62c0562ebe72": "Database importato con successo [{}]", + "8aec4a4bd998059f3dbb932da4714b00": "IP non trovato!", + "5873103908815f34241636e336e1f463": "L'attività di compressione è stata aggiunta alla coda dei messaggi!", + "e57b7bae408dd226fabe86773cd6b3c3": "Operazione batch riuscita [{}], non riuscita [{}]", + "de5ac4bddf9b72b649c0cbd4243f76c6": "riprovare dopo qualche secondo... attendere prego...", + "6905a88552caae6df77f56bd19f6d76a": "Le impostazioni dell'attività Cron rimangono locali.Il backup locale viene mantenuto.", + "63701b3fa795bcd399aab5d489f8eae9": "Le impostazioni dell'attività Cron non rimangono locali.Il backup locale non viene conservato.", + "837cc24a222df21e74245f4cfac6ad09": "Impostazione utente su don", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB ha abilitato l'autenticazione di sicurezza.", + "4675bfcf662ee236a05dcb763cf9d520": "L'impostazione della cache di Apache non è riuscita.Controlla se il sito web funziona correttamente!", + "0b9aca52d360d6f7a8f2c5c897c93005": "Le impostazioni della cache di Apache hanno avuto successo!", + "a2cd28fcd32e92be995b2335768fdea3": "La cache Apache è attualmente supportata solo nell'hosting multi-webserver", + "b288b8637582cc38c1d4c902ed03cbec": "L'installazione del plugin della cache non è riuscita", + "aebabb72ad41fbe46f73abcc9dc00b9f": "Impossibile attivare il plug-in della cache.Prova ad attivarlo manualmente e quindi ad abilitare la cache", + "3981bd44ca3f1d5abafc6b15ba8c7435": "Le impostazioni della cache OLS sono riuscite!", + "3777f748e5535e7e38261b2e0afc8274": "Configurazione della cache OLS non riuscita: {}", + "8e342838d5cf3a93e34956c9550db4d0": "Distribuzione non riuscita: {}", + "152b976545ff1ee50e0de21da7af1266": "La verifica è in corso.....", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "Verifica dei parametri", + "80f9a0a476836be5fdec10fe414e88a9": "{} Il sito web è in fase di creazione....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "Crea sito web", + "8a9535f05c52e58f46e3237b9da019cc": "Aggiungi configurazioni opzionali: database, FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "Aggiungi configurazioni opzionali", + "2a5e8b7e4116ee81db89ba173f60bf90": "La verifica dei parametri non è riuscita", + "2f35a151cc0256f0d9ad5410eccbe5d0": "Verifica del parametro non riuscita: {}", + "af2a8e2174ea327f9fbf77d84029d58b": "Verifica dei parametri riuscita", + "181fc26e7b655ba36b3b075ca1ebc350": "Impossibile creare il sito Web", + "7118aff13541bf3d74a9c47fb458e102": "Impossibile creare il sito web: {}", + "be33773093fc2e135ba4bc26f4bb5509": "Il sito web è stato creato con successo", + "8d823a9933eefd02bf1003481f816f64": "Non riuscito: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "Avvio di successo!", + "31b88b436695f7e0bc5dad1cb8999737": "Non utilizzare le porte del pannello di servizio!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "La porta è occupata o l'intervallo di porte non è corretto!Dovrebbe essere compreso tra 100 e 65535", + "7dde7f2ae7cb4ed56b1b683b479ad303": "Avviso: la versione {} non è stata ancora installata,", + "839067817c5a1e7fcce2f905284d630e": "Riscrivi la directory di origine e Riscrivi la directory di destinazione devono essere compilati contemporaneamente", + "4b6ad864ce62dac8466dde7ec62e7ea9": "La riscrittura della directory di origine e la riscrittura della directory di destinazione non possono essere la stessa cosa", + "ed6fe3e47d3686c7af83b67535b426b5": "La directory di origine della riscrittura deve iniziare con /", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "La directory di destinazione riscritta deve iniziare con /", + "87a9a388a3ef42018ceb866756c4ee39": "Connessione al database non riuscita, controlla lo stato del database!", + "a75c113f53d4342010d140325fa29eec": "E' stata abilitata la multiservizi del sito.", + "b0a517b4d596e5fc1351f8dc12e73a74": "Seleziona il servizio mantenuto", + "7e953c855b391ac0716a4eeb47c5c5c3": "Abilita prima più servizi", + "55d523aa501b0e7e93e172a9e6829a8a": "Errore nell'ottenimento delle informazioni sulla versione di nginx", + "08f18bb6c6293307f68d5f822ed7dbe1": "Attualmente, openresty non è supportato", + "45020a62e40bbb43f6e05c62ad50288e": "Esiste già un'attività di installazione.Si prega di attendere prima il completamento!", + "4052df86d5a8dd12943cc8b1d53162e4": "L'installazione del servizio non è riuscita.Per favore riprova!", + "8033c09e6fedf841205b29b57c0ae0d1": "Avvio del servizio non riuscito: {}", + "442d02a722dc331f8b85d328fb99a174": "La modalità multiservizio è stata abilitata con successo", + "a0b289e4caa220dcd62692401d5083f5": "Impossibile disinstallare il servizio {}.Per favore riprova!", + "0045406cf97cbdca708c795aa9554145": "Impossibile riavviare il servizio {}.Prova un riavvio manuale o controlla il file di configurazione.", + "52cd203105425f66daf42d81f05c540f": "La modalità multiservizio è stata disabilitata con successo", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "Il riavvio del servizio non è riuscito.Controlla il file di configurazione di Apache!", + "a949ed64edc73a99f9f9c801a84b6390": "Il tipo di servizio specificato non esiste", + "408f206d494c5f26144f7492315dfa21": "Si è verificato un errore durante il passaggio dei servizi in batch!", + "e9fd26be1a67520e66f2e99d61977c32": "L'ID del sito web non esiste", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "L'attuale servizio del sito web è già {}", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "La modifica della configurazione non è riuscita.", + "98e762d03fc5ffcb381010aff10c7bde": "Passaggio a {} riuscito correttamente", + "293f667205bd8aa91c72f966c03c3de5": "Il tipo di servizio del sito web ottenuto non è corretto", + "8562d96fc303411ee017a30b83d75712": "Riparato con successo", + "d9d76120c8c13b40d2e8e49b0d6117da": "Si è verificato un errore in multiservizio e la riparazione non è riuscita.Prova a chiudere multiservizio e poi a riaprirlo!:{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "Il file di configurazione non esiste", + "c8622023712105e9e7328396976a2667": "Il file di configurazione di cui è stato eseguito il backup non esiste: {}", + "12572c9827392d4bd4c028881ed06242": "Sono presenti conflitti di riscrittura di proxy o URL globali sul sito Web.Per favore cancellalo e riprova!", + "92bce01ab77d0d50efec1d424cab583b": "Questo sito Web ha un proxy inverso.Per favore cancellalo e riprova!", + "30c74a0981da2edec86936cd288479f7": "Il sito Web ha configurato un proxy inverso globale.Per favore cancellalo prima!", + "c3fe8f7adf26d613d9593acede34303b": "Il sito Web è configurato con l'associazione del nome di dominio della sottodirectory.Per favore cancellalo prima!", + "7122d35c3532d63c8d9fc5c5bd320558": "Impossibile ottenere l'elenco degli ordini, riprova più tardi!", + "84e9feba40d0aed963505e503cf821e3": "Aggiornamento non riuscito...", + "02d59ec01b27b9b07cc92b56b4590690": "Il certificato SSL ha meno di 30 giorni, non è necessario rinnovarlo!", + "c85411871b8773e799e64d0c23ef79d3": "Ordine non trovato!", + "2a6bb1bdd798217656edecf672b6df3c": "Errore di verifica Http01, ma sito non trovato.", + "962682f10423a33a75f4b1277b3690c9": "Errore di verifica Http01, ma il sito non è in esecuzione", + "fea087517c26fadd409bd4b9dc642555": "normale", + "9e1a9b35939cc4887854eb2ed84f401f": "Il nome del database non può contenere caratteri speciali, reimpostalo.", + "90299d1fb53fdf7a570db71a1b61c127": "Per favore imposta prima la password di root PgSQL!", + "01d3922e30b7aff9c7265e91c57cc829": "Il formato IP non è corretto!", + "b2349e65b04baa3a0d50ad030535b73e": "inserito non è legale, la modifica non è riuscita", + "932c4edd1a70a505be1099f4e7874692": "Modifica i diritti di accesso utente pgsql correttamente", + "f562938bcf2a52b32261e4f4a99c3e00": "Cancellazione fallita! Il database corrente è in fase di connessione!", + "573ba454733eee7cd866addcd11ea21c": "Impossibile eliminare il database!", + "fec7dbd4f36266728d6eda5e168d1cc0": "La banca dati non esiste!", + "69579eb94ffe47354dac42abc8cac9d1": "La password del database è vuota, impostala prima.", + "fb642275547236f1fb2ea7717ace26d8": "Per favore imposta prima la password dell'amministratore!", + "699c43a1633256e97b95615a562eef88": "La password del database è vuota!Imposta prima la password del database!", + "67e943332602d7a5b9765306caa8604d": "Tipo di database sconosciuto", + "04c651a70b89bd4fd8fc8702c0bf61e9": "Backup del database fallito, il file di esportazione non esiste!", + "95abdbd5890c3ceec62026c6246d8030": "L'esecuzione del backup ha avuto successo,", + "7307a92023c68b6842a8dafb1b500f16": "Mancanza di strumenti di recupero,", + "bff09c8822165bf816a5b5a4d1fe9140": "Il percorso di importazione non esiste!", + "3d003d1417aec658cd020f9faf66a5c1": "L'importazione di file zip è supportata solo!", + "eef4302ce8a129e5d70767668a9e9110": "Scegli il formato file sql, tar.gz, gz, zip!", + "e1a4b8afc2cb3f56f0c98876c06d6d58": "Impossibile connettersi al database!", + "0033a9566af4f930bebbd45802be5427": "connessione fallita", + "0b46bb64ce97c64f6dddc87bccf949e8": "Le informazioni sul database remoto non esistono!", + "ae576ea2a8c76765fa69287fb1347d1a": "Connessione al database remoto fallita!", + "15a8af9e80d0a0c2d87314c154fff181": "non supporta il cluster Redis!", + "c2dafded2689dc11914376d72a70dfc2": "Connessione Redis fallita!", + "a9ed7f25ce1ffcf98cf5ec7db86abdf4": "Il backup dei database remoti non è supportato al momento!", + "9d1ee7d092060a4d3418a979fba5e46b": "BACKUP_ERRORE", + "ae1110dd560e4e7968b297620be7ea36": "BACKUP_SUCCESSO", + "1fcdee5d4329f1f638bc2d818f3e510a": "file non trovato", + "517b554160a14e74d52943ea29ab5a66": "La connessione Redis non è riuscita", + "ec010eeffc0a20399b186f334b3b6769": "connessione al database remoto non riuscita {}", + "2322848a32fd761a98a0bd76e633bc97": "Le informazioni sul database remoto non esistono!", + "eacd845def6fe750cfc0986f24565045": "La password di accesso locale è vuota", + "a18fb7f91f74b73e7326700913e7e35c": "Specifica che il server esiste già: [{}:{}]", + "079d7d1539d30a76e53b6fb54d370d32": "Aggiungi con successo!", + "72bfbe1d7dd57250382b570043041e82": "Aggiungi errore: {}", + "270b19b2e9da5da821c7b54a1a8d7fd6": "Errore nel passaggio dei parametri, riprova!", + "ffcba623cf91331a0ba5b3ab969db1f9": "Eliminato con successo!", + "43bf15425909c99f2cc1553eaffaf476": "Impossibile eliminare: {}", + "0947887a435eff51a71f1e54615af33c": "Impossibile connettersi al database [{}:{}].", + "844eea2c94a872941b4e4fe66c92c659": "Connessione al database [localhost:27017] non riuscita!{}", + "90b65217be3c698d9b1fbff0dccdc71b": "Il servizio Mongodb non è ancora attivo!", + "7d1a075632098426af1e2197d274bdb6": "Il nome del database non può contenere i seguenti caratteri./\\\\.\\", + "48b2c30b0f984cdcc6cd7ed4ee376fdc": "Il nome del database contiene spazi e non può essere aggiunto correttamente!", + "93efcc7fc4e9d402978828bacd4a5bc2": "L'utente del database esiste già, utilizza un altro nome del database!", + "393223cf51f8e25df5d53ae425de74a9": "la banca dati non esiste.", + "2162130c1a1937f839cc660f5e70ebdb": "Il servizio Mongodb non è ancora attivo!", + "45da541afaa00457a2f4617a1dd4855f": "La cancellazione del database dei nomi degli amministratori è vietata a causa delle restrizioni di Mongodb!", + "2465ac13d0470c6414b77dc59fbcdbbc": "Mancanza di strumenti di backup, installare prima MongoDB tramite Software Manager!", + "d2af5fe1710856e97dbfdf1adc6d5e98": "Parametro mancante!id", + "9c17c1312620910f7c3d27a20f01e968": "La banca dati non esiste!{db_id}", + "57bb958a6998e558b00b5d89d240b240": "Il formato bson json csv è attualmente supportato!", + "3b4ee1461f518d1bd1ed20615d670df1": "È necessario specificare i campi di esportazione quando si esporta in formato CSV!", + "d2c7790b1f776ce6ad06426b03fa71b1": "La password di accesso locale è vuota, imposta prima la password del database!", + "1acdae1719cee0ce5c586cd6995b70a9": "MongoDB ha abilitato l'autenticazione di sicurezza,", + "164c5fa905dbffad015f4593d1b85fb9": "Il tipo di database sid richiede il tipo int!", + "3a621b20dadc66881772503620282533": "DATABASE_OTTIENI_SUCCESSO", + "505a6be34cf7e61f93f2665896cfafaa": "Modifica non riuscita, database [", + "13966ea12f4ed389be50c95e65d8a2dd": "La password del database non può essere vuota o contenere caratteri speciali.", + "361cbf31511a2bf38fc664157d183328": "La password del database non può essere cinese, cambia il nome!", + "252d8cfbb164b773c5f84ce9d814ae3c": "La modifica non è riuscita, il database specificato non esiste.", + "aea43e9b982f6105e584e46b778d9f9e": "La modifica non è riuscita, il database non è abilitato per l'autenticazione di sicurezza.", + "f9be861aad3eda81843c7797487da8e9": "Lo stato attuale della sicurezza del sistema è buono e non sono presenti vulnerabilità o rischi evidenti", + "890e24b14414e3da9bc2ad63d6d0befb": "Esistono alcuni rischi per la sicurezza nel sistema e alcune configurazioni o politiche devono essere migliorate", + "951c23a91dfe39b5ea5d00405b4dc2c5": "Il sistema presenta evidenti vulnerabilità di sicurezza, ti preghiamo di risolverle in tempo", + "de36cae19b2a65a45cb4dfccb435530b": "Il sistema è in uno stato ad alto rischio, riparare gli elementi di rischio rilevanti il ​​prima possibile", + "ca6977d373320a7fdb51047199d4cc59": "L'amministratore non è installato!", + "38641e6ce3a6369e108eb595672c8edc": "Disinstallazione riuscita!", + "9cae26284a7ad2f46132c1e8e196d089": "Installazione completata con successo!", + "a9a92e55770213c8aa1fb2871dc43563": "Imposta la porta amministratore con successo!", + "2321763bf0b4cbf345b1e19dc9faec47": "Imposta la versione php dell'amministratore con successo!", + "40a1f70c155550ad2dafa5e556e10c3c": "La versione PHP non si installa!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path è la directory root, non è possibile chiudere Mostra percorso proxy!", + "b9629c2dea839825c2f1916b44a154a1": "Errore nel file di configurazione Nginx, inventario!:{}", + "32b169f72b293ef80d35435e9894f8e2": "Inizializzazione", + "58ba018dcbe1c47ea0a293fdcee21e63": "Installazione a pannello", + "67355337eaf300b91de09a8083c93ebf": "Backup locale", + "99e8ebaa5ad2fafe4e141574f6b4a73f": "Caricamento file", + "bd6d996cdca2252e9b99253b2a587287": "Ripristino dati", + "03a2bd12e8b51af547a08985d4882d6d": "Migrazione completata", + "0fd957e5b2d9c535c344e9a8f86a225c": "Impossibile leggere lo stato dell'attività: {}", + "181f2da22cdbf536f67e46452108d95d": "Impossibile salvare lo stato dell'attività: {}", + "4439b17c5e0977e0c73c643cea950424": "Impossibile salvare il record dell'attività globale: {}", + "74c6e9c56a9d836f2dac86fe8e0770e3": "Impossibile leggere l'ID dell'attività attualmente in esecuzione", + "62688aeae1c92fc7d92caaa83f22a411": "Stato dell'attività recuperata correttamente", + "087b165a5f0bd5a04f2ce4be7dca14dd": "Nessuna attività in esecuzione", + "37a5c6e23237ddff7185d375c34eed60": "L'attività {} non esiste", + "f613fc3fb0aee3affafcae3477d42bf8": "Un'attività è già in esecuzione, ID attività: {}", + "367b4a21be07204266d306508cc92dc7": "Inizializzazione dell'attività di migrazione", + "793c8358adb487f79f85acfdc44d54bb": "Creazione dell'attività di migrazione: {} -> {}", + "e597529fcdfa1dab69eadaf1c44088ba": "Attività di migrazione creata correttamente", + "c304dcebe892b468725402a369b3dd46": "Connessione al server {}:{}", + "d2f3c14129fe059cf6d99f1583abc23e": "[+] Connessione riuscita al server {}", + "ae3c4e96fa1411ea25c05ce9a18ae2ae": "Connessione al server {} riuscita correttamente", + "c7203791b356c5f3faf5d8c43d54a575": "Autenticazione non riuscita: nome utente o password errati", + "10adeeeb866978b5ae637ae2bc13fb96": "Eccezione connessione SSH: {}", + "1e36faff765dbbbe631f424983a21783": "Errore di connessione di rete: {}", + "f9d5c96265bf9a99b163f5adf699cde9": "Impossibile connettersi al server: {}", + "cd4dc264f41eda817374af0bddcea259": "Connessione tramite chiave RSA", + "5e1b5e437b38bfb11b1e4853f8838d3f": "Impossibile caricare la chiave RSA: {}", + "fb947607c0d2814eed45d41a9e3227f1": "Connessione tramite chiave DSA", + "1cc35e618813746cb1bd4658f7ac61a0": "Impossibile caricare la chiave DSA: {}", + "e9ba4ba778d8a0b4423c09ff6cb32726": "Connessione tramite chiave ECDSA", + "f618338d0d56f440d7fb1b59d8add72c": "Impossibile caricare la chiave ECDSA: {}", + "f579ce14b1e98ae9ad4d392279730d9a": "Connessione tramite chiave {}", + "696797724fc3db3f012761759f720c23": "Impossibile caricare la chiave {}: {}", + "fa4e18c6d3b0c0fa6a5ac1303dda02a7": "Impossibile riconoscere o caricare la chiave, verificare se il formato del file della chiave è corretto", + "369709628dacb54949b2c711acd93968": "[*] Tentativo di riconnessione al server (tentativo {}/{})...", + "88aefbc5392deac3ab63223d6d82b66b": "[!] Impossibile riconnettersi al server, è stato raggiunto il numero massimo di tentativi ({})", + "908300abff5dfdf254726c2193f3e550": "Impossibile riconnettersi al server, è stato raggiunto il numero massimo di tentativi ({})", + "5842d2e8785c14b1e357c4ee1dd1a0c6": "[+] Disconnesso dal server {}", + "7463b0247d5614df91270544c6b944bb": "[!] Connessione SSH non stabilita", + "43234c4b446ff41810dcf807d317cba7": "[*] Comando in esecuzione: {}", + "db4d271e5cb8fe3192ed73bd624a86fe": "[+] Uscita:", + "c519185a1f47d37b21866e5f05928dc8": "[!] Errore:", + "6a2909a7dbeca5d8c85843ecd4cd3fae": "[!] Connessione SSH disconnessa durante l'esecuzione del comando: {}", + "88783238ef5d081aade9e63160d329fb": "[*] Riconnessione riuscita, nuovo tentativo di comando...", + "8692bb08477b83615b1ae995552e2c92": "[*] Rilevamento del tipo di sistema operativo del server...", + "95adf53ab7c91ed98c77d3c0e38a2a1a": "[+] Tipo di sistema operativo: {}", + "2ab043e41d8fd10931cfa912b4b11bf8": "[!] Impossibile determinare il tipo di sistema operativo", + "2d23313d6e3e201771154cf99d5dab34": "L'installazione di curl o wget non è riuscita, installalo manualmente", + "b44992b4430f7759108e5242176b7871": "[+] curl o wget è installato", + "4ba07005cef8f98a0625a7d1eb0a142e": "curl o wget è installato", + "e3a56811a35322959c535d38d2e91f7e": "[!] curl o wget non sono installati, sto tentando di installarli...", + "613a8be93fcd44002e549e0767c85a86": "Impossibile rilevare il tipo di sistema operativo, installare manualmente curl o wget", + "8a4d20948ccc8034e3118af3bb683da3": "Inizia l'installazione di aapanel", + "df97b5d4f31c5cd4a3611774abb6de52": "[*] Avvio dell'installazione di aapanel...", + "d91a58f92edb4b30de7e5399908922da": "[*] Installazione di aapanel con il comando: {}", + "f20af8613aed0194f191d660977de57c": "Installazione completata", + "4357633f73240ceb1b14d13877a90ac2": "aapanel installato correttamente, avvio dell'attività di backup...", + "f109f7ce6f98f5a3cbf2d273c5749911": "[+] indirizzo: http://{}:{}{}", + "79fca63f99a824fc4015d93604433ea1": "L'installazione di aapanel non è riuscita", + "b1508aec34af599979d919e20b64e385": "Avanzamento dell'installazione: {}", + "7b6725a19c46bc6d47e5a49c5764991f": "[+] nome utente: {}", + "cd3d4cf5a75fd5f9467f6d0f196dbec8": "[+] password: {}", + "6703def4d1bfb870f64ca461a7bffc0c": "[*] Creazione della directory di backup...", + "c550206bc8daea4b287573ee31f839de": "[+] Directory di backup {} creata", + "9e3f708636e9ea820d608629fdf47c65": "[!] Impossibile creare la directory di backup {}", + "9f22d9cb59270cf0f6382a66a63ed8cd": "Impossibile ottenere la dimensione del file remoto: {}", + "ff490ab3be22afd2f2a06842935eedd3": "Il file di backup {} non esiste", + "e69d7c21f42d046b365c56045ffca873": "Inizia a caricare il file di backup {} sul server", + "df6ecb94c7a5f06b78d0bde168e769e9": "[*] Avvio del caricamento del file di backup {} sul server...", + "217c9c3fec268ff4d6c35bd4d5d564ea": "Impossibile creare la directory di backup", + "2942f90ee3b191c0b98add719760e356": "[*] Dimensione file: {:.2f} MB", + "08b57d594c99a8339461fe78ebf95f1a": "Preparazione al caricamento del file, dimensione: {:.2f} MB", + "2f24607a7361d721459e3a12584fd340": "File già completamente caricato, saltando il passaggio di caricamento", + "4d57fe7dc3462ad55cc9bb1623a3eb5e": "[*] Rilevato file di caricamento incompleto, tentativo di riprendere...", + "9c30f21dd1175d2e9b7503e873a52b2f": "[*] Caricati: {:.2f}% ({:.2f}MB / {:.2f}MB)", + "04e05f53e1a18a781dbabae6cdd0e495": "Rilevato file di caricamento incompleto, ripresa da {:.2f}MB", + "426e1c0eadfad630c5433af2757cee8f": "[*] Inizio nuovo caricamento...", + "61eb03fffeb48e199890a5a8a24a5dc9": "Inizio nuovo caricamento", + "148b2912de8b29f47dc234983554ea2b": "\\r[*] Avanzamento caricamento: {:.2f}% - {:.2f} KB/s - Tempo rimanente: {}", + "470e645fe1f07b6d4e77fc7b16b2a9a0": "Verifica della dimensione del file superata: {:.2f}MB", + "40070e1f0867f97db0fa33039fae2063": "File caricato con successo", + "95dd52c0ce48e72f2021dee1a7a86433": "Mancata corrispondenza delle dimensioni del file: locale {:.2f}MB, remoto {:.2f}MB", + "f7dac1a705d6bd05b3a42086923cf932": "Caricamento interrotto: {}", + "554472ae3f1db37c67fe53e4a2fb53cd": "[*] Proverò a riprendere dal punto di interruzione {:.2f}MB (tentativo {}/{})...", + "1e6aeb0dc8e2567bdec31246c27233a2": "Caricamento file non riuscito, è stato raggiunto il numero massimo di tentativi", + "31c53955195484e892d36d1815e2e5cd": "[*] Avvio dell'estrazione del file di backup {}...", + "21ec696ab5bc206eac1cf62268824cf0": "[!] Il file di backup {} non esiste", + "e344a18f13f2b196f3b56938c824dd5f": "[!] Impossibile estrarre il timestamp dal nome del file di backup", + "d4a81ed03254ca37166d84ccb7de0bd6": "[!] Estrazione del file di backup non riuscita", + "0838e64585e87c91bdfa34890445346e": "[+] File di backup estratto correttamente, directory: {}", + "0fddb4bae41a7fc9e2de8896d8cb819f": "Inizia a ripristinare il backup (timestamp: {})", + "5a275e6386d2d3c647f6ccecb422debc": "[*] Avvio del ripristino del backup (timestamp: {})...", + "e9b7b10566a85a5356096a630d64d2d7": "[*] In attesa dell'avvio del servizio aapanel...", + "8d7b4f7247dec431d103af1ce34d0233": "Il modulo di ripristino non esiste: {}", + "304e687ee7c78fdae6e70226f61d9708": "Esecuzione dell'attività di aggiunta ripristino in corso...", + "ac3f9da9a646fe10c989e74b42fe5e8e": "[*] Esecuzione dell'operazione di ripristino in corso...", + "ac6fa0596fbb508fe61e44848548b50c": "Impossibile eseguire il comando di ripristino", + "846cdc02545d18e4b5308d076aa93e95": "Backup ripristinato correttamente", + "062ca961d059ebd358098ffdb12f42bb": "Ripristino del backup non riuscito, controlla il registro", + "f857f6dc6a146a3b125ea3253052ca43": "Avvia l'attività di migrazione", + "53779b59d2ae1ff96f4afdfa6bbc6c7f": "Controlla se curl o wget sono installati", + "39679b63dca413a83cf5b664d46c929b": "controllo curl o wget superato", + "0de6a624fa64af38f9a880430e72607e": "Preparazione all'installazione di aapanel", + "28dbda7cf25735198d7695702b18aad5": "Installazione di aapanel... circa 5 minuti....", + "7a58e7034a9db769af197c85beccafd5": "Installazione di aapanel completata, avvio dell'attività di backup...", + "a850af0d3bf3586319178228af5698bf": "Inizia a eseguire l'attività di backup su questa macchina", + "28ec7aad1cd6afdbbc35a6aeaa95761a": "In attesa del completamento del backup locale", + "82550a0ece235f0d0b363135e8d94d28": "Attività di backup annullata o non riuscita", + "c8f2865e1e43bb2fd88a0e16f3cd4c17": "L'attività di backup è scaduta e non è stata completata entro il tempo specificato", + "4bb768be41853a0aed9f56d5907be1bd": "Ho ottenuto il timestamp di backup: {}", + "c129e18a625645767772504cf77e279a": "Impossibile leggere il timestamp del backup", + "39869251ca57148d747cfd6ee60bf604": "Il file di timestamp di backup non esiste", + "60f1d8c19f5fbb046deac4aab745f63c": "Il file di backup non esiste: {}", + "d67c60b6be8ebfd9f73816a7e8e4abfe": "Impossibile leggere il percorso del file di backup", + "9e6caab47781582f556a81245571d8a7": "Backup locale completato: {}", + "b4df9a8cca277b49933dce7c8be7ab20": "Backup locale completato", + "6c97fd171b87d3f954040d4dea833cb9": "Preparazione al caricamento del file di backup", + "6384458c2647bf7e1af9d942aab00d6d": "Preparazione al caricamento del file di backup: {}", + "e2fdcbc1d4e8b1fa77a161c4448a4bf6": "Preparazione al caricamento del file migrate_backup_info.json", + "6533c064fee3726a0f1caf89a423fd3b": "Connessione persa durante il caricamento del file migrate_backup_info.json", + "ffa61675a37203858ec712cc635fcbdb": "File migrazione_backup_info.json caricato correttamente", + "d192d35fb79e54273bedf84f9ee3d772": "Impossibile caricare il file migrate_backup_info.json: {}", + "fdf17802146b46b291164d7c933950c1": "File di backup caricato correttamente", + "97dc827b342454de3a5f9416ee1e513b": "Preparazione all'estrazione del file di backup {}", + "67c40d3544174eb6d6fa63dccaa6bf6e": "Preparazione per aggiungere l'attività di backup di ripristino", + "7ec7fd83e38b6d53374f37bd32a3da09": "Preparazione al ripristino del backup (timestamp: {})", + "7fd19264d09d2ff33f1f8b5867354fdb": "Si è verificata un'eccezione durante il backup e il ripristino", + "ef05e1295515a64356e53d3c11498f25": "Ripristina l'attività di backup aggiunta correttamente", + "f90b7afaee99210e74fa3bc47d4f4918": "Tutte le operazioni di migrazione sono state completate", + "9e5e797901f9870ebf7a96266bc1e972": "Attività di migrazione completata", + "dd2a8fc49fd7c92616c228c8039410c8": "Si è verificato un errore durante il processo di migrazione: {}", + "1a119744a8cc132d708306e1fb90543f": "[*] Verifica delle informazioni sulla connessione SSH...", + "ef3ae6d88f5637005f063685ad50c625": "[+] Verifica della connessione SSH riuscita", + "66db9584d2d99eeb99a90f5f4c52d944": "Verifica della connessione SSH riuscita", + "a0bc8a00e83b79e42010343c31924dd2": "La verifica della connessione SSH non è riuscita", + "e871fe05e99da0c88a09686c3b7c88d7": "[*] Installazione di aapanel...", + "1f3ff88a0fdd87e71bf237f3805dccde": "[*] Caricamento file di backup...", + "c0b860cd7155af1e642fd0c41ee29262": "Percorso del file di backup non specificato", + "fa1ab4e94bafd1f5b6ea55e3e9dc33a4": "Estrazione del file di backup non riuscita", + "d36c2f46c959ee1fb416a947f8e75a47": "Ripristino del backup non riuscito", + "de6b9cefab1a252ada4463ee8f015f07": "[+] 所有操作已完成", + "496249e9e1cd99dd54146ed6565fe3f8": "所有操作已完成", + "20c605607dbf9d6d1d7bb62ddc792ee0": "[!] 执行过程中发生错误: {}", + "4020efc99e8c60a0e7d27a5598d501e4": "执行过程中发生错误: {}", + "55be882ba3aef502f3a93ad90bb9d613": "[*] Esecuzione del comando di backup in corso...", + "1a6da8233a4a66ccc90d767967f22d35": "[+] Attività di backup aggiunta correttamente", + "af3c2b419ba0779d81ac91cd3ca246b6": "[*] In attesa del completamento dell'attività di backup...", + "c8eb8110632bb540ca112819e96dc770": "[+] Attività di backup completata: {}", + "0d1135061a5b00b63bdb12c2f3c9461f": "L'attività di backup non è riuscita, il file di backup non è stato generato", + "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] Attività di backup completata (file rilevato dopo il timeout): {}", + "637452f337bdc2991f23593124d62440": "[!] L'attività di backup è scaduta e non è stata completata entro il tempo specificato", + "ec3a935e2442ef55924ad758e17b92cb": "Imballaggio completato", + "ffad0690fefe9ebaaf4d847a42b19f90": "Il file di configurazione del backup non esiste", + "40379fed8ad84c0869a1b3e94f8a56fb": "Un processo di backup è già in esecuzione!", + "20bf8648c4a3ea91ad3057f9aeca5f88": "Inizia a comprimere e impacchettare tutti i dati", + "dc72aa669e82dd5ec7cff2ed35f2762d": "Compressione e confezionamento di tutti i dati completati.Dimensione dei dati: {}", + "bacf615d02bfa3c58728f62490489e9a": "Backup completato.File di backup: {}", + "ad69c11076734ffc4c0532b54e6f5be3": "Caricamento del file di backup nell'archivio cloud...", + "c3a6378e06ff3e479a85b0f15c41cb1e": "{} Caricamento in blocchi...", + "c722636ded0be8237386a427242ff3b2": "{} Caricamento...", + "bb914d2441ee988dcd4d616350272f10": "Si è verificato un errore durante il caricamento su {}: {}", + "8085ded0444fcde19b9ea4d365502f67": "Informazioni di backup non trovate", + "b02ab16f5a7d45a871789d3944a41c69": "Backup completato ma impossibile recuperare il timestamp", + "46f183fbf6bd1e64702d6930667cf117": "Errore durante il recupero delle informazioni sul completamento del backup: {}", + "2cb88461938b0c418391af13f65a727d": "Il processo di backup è in esecuzione, ma non è possibile recuperare il timestamp", + "269159feb2faab7515c90b9f5de791a5": "Il file di configurazione del backup non esiste: {}", + "daa55a73708f906c8cee0bb87284740c": "Errore durante il recupero delle informazioni sullo stato di avanzamento del backup: {}", + "01ecbbb2b353cf4d915bbe1c1cd5505c": "Configurazione del server", + "ca3c22c9c94069053b85db0f50373639": "Backup della configurazione del server", + "b16acd08872bef5685bddff85a29f625": "Imballaggio dei dati", + "d41c74fcc2dd04880a0285c147188bf7": "Preparazione dei dati di backup", + "806cb06592627effa1a4073fa2f66ce2": "Un processo di ripristino è già in esecuzione!", + "37dfdfda0ab7a98140943484fe70a76c": "Inizia a decomprimere il pacchetto dati", + "c415a70c8540eb59121587b3ab5d5cfa": "Inizia a ripristinare i dati", + "c76bac64baa6fbf5c51ec144c70d91d3": "Ripristino dei dati completato", + "da7f5eb715a1a1a2378ee56a5ee24bbd": "Ripristino dei dati non riuscito: {}", + "ca0af2ce76c89e3bfa4bad3105c21203": "Ripristino completato ma impossibile ottenere il timestamp del ripristino", + "0f4f13d63e87130a24667c6bd4cb5e2e": "Il file di configurazione di ripristino non esiste", + "0c5d25bf5706190b8ad0d8289a93aeba": "Errore durante il recupero delle informazioni sul completamento del ripristino: {}", + "667a68bf7113541f218081fac58f6815": "Il file di configurazione di ripristino non esiste: {}", + "e7a91a4400b67b84e7cca61642b93f4d": "Errore durante il recupero delle informazioni sullo stato di avanzamento del ripristino: {}", + "1b4c2c21e77ac36e4097a92dabd55bc0": "Sconosciuto {}", + "c1173fa3bd3d44530eead89e7edeefe1": "Decompressione dei dati", + "a76a19147d36f4f2d6801cf602de2718": "Compito sconosciuto", + "5ba4673aac259be67bac9db8cfc9c5b2": "Preparazione al ripristino dei dati", + "5b43e0e228169e5df9cec81876cd3710": "Errore: il parametro di forzatura deve essere 0 o 1", + "4c3880bb027f159e801041b1021e88e8": "Metodo", + "7d3c180ded4dcc8eade80cd031ab1b5d": "Si prega di non operare frequentemente, attendere un momento", + "37b15a5d1e4fa625ea8996de5e378a84": "Recuperato con successo", + "616e012bcc90980f6ddfd2b3c17345f8": "Impossibile ottenere progressi", + "9e0a136b55af822e72c8d6716d2d4bf3": "Tipo sconosciuto", + "6ac0b58e56cefd76e61bc840dfad94fa": "L'attività è stata interrotta correttamente", + "b808472e703dfd53fdcb59fbe89e3436": "Eseguito con successo", + "12b65fbe011be723b4ae981c0d42c44d": "Attività di ripristino aggiunta correttamente", + "741e160bb129a548e26fbad37c8f674d": "Il test della connessione SSH non è riuscito, controlla se l'IP e la porta sono corretti", + "e0867cf8c8a1935e8bd681f0ff28a612": "Connessione SSH verificata correttamente", + "f94e94b4ec479336f36fdf9fe1004b83": "Il mio compito di migrazione", + "b100f6e1c91f013adf0ca5ce6606a89d": "Attività di migrazione aggiunta correttamente", + "fd0099266c1971c5c40036e615d67fd4": "Migrazione riuscita", + "87aa2e739755a6fea3a63876b5a1d48e": "Con successo", + "d7db03701029007097b8e0cd61a983f6": "Nessuna attività di migrazione al momento", + "808781229f7b019ba6a44ea3871e3b6d": "l'attività di lettura della migrazione non è riuscita, riprova più tardi!", + "e728b6a004aa5e61efd25bf815a6e290": "Avvio dell'attività di backup...", + "c9d48d6a4ebe28917b5439c91faaff68": "Installazione del pannello completata!", + "f5e7895e7c31fedd32b520012910f960": "Compito di migrazione", + "3a94451860f0c20374128e61e8783d26": "Installazione del pannello aa", + "f02f38d885226197e729453ea104feac": "Ripristina attività", + "0ba29c6a1afacf586b03a26162c72274": "Ambiente", + "f072f24284b47eaf8adcf88b29021618": "Il registro della migrazione non esiste", + "9166b100905c2625ba9df2524f8c2faa": "Test di connessione SSH fallito: {}", + "3a02e4b05ad1b321e855aa6116699b6e": "Promemoria di migrazione eliminato correttamente", + "334afd10871f8c52a884e307d2e17ccf": "Cronologia della migrazione eliminata correttamente", + "2f393a2518f5668880822f47fcdb5cc0": "La storia della migrazione non esiste", + "df4bb29cbb7fe7e3dbc82e961d5b5b53": "Preparazione dei dati", + "2b2a2a0b0596507029dd0feb9485a216": "Nessuna attività in corso trovata.si prega di controllare", + "69d45b5b241dac0fa1efaf7b6966520b": "Avvia il backup delle informazioni del certificato SSL", + "835601ead78ba62b89c4b27956645362": "{} {} Il file del certificato non esiste ✗", + "025de5f8c791241d326ec4e086e9898e": "{} [{}] Il certificato è scaduto ✗", + "ecd204c03ea44719e6fa4ea25569266a": "{} {} ✓", + "aa6b67db23e9cb0b943aa6c0def92cb4": "{} {} Backup non riuscito: {} ✗", + "ec56d7aedc9c5242d094ebbaeda5047e": "Backup delle informazioni del provider API DNS completato", + "b561b1ca5fd89d639144a099f5fe096d": "Backup delle informazioni del certificato SSL completato", + "7aa422d849ba11b569187382a3a509d1": "Ripristino dei siti di distribuzione per il certificato {}...", + "4573d024bbb8e1f8c8efb2582a6a01c0": "Siti di distribuzione ripristinati per il certificato {}: {}", + "baa339aa8e95d46851fd48574cb1d902": "Ripristino delle cassette postali di distribuzione per il certificato {}...", + "9307ae55fb4a7b878e377790e040eec4": "Cassette postali di distribuzione ripristinate per il certificato {}: {}", + "b057e2d52c20f76bf3c788eb9b4873fa": "Ripristino del pannello di distribuzione per il certificato {}...", + "41596c0d36a66c44434d5882c3cfa793": "Pannello di distribuzione ripristinato per il certificato {}: {}", + "6ffcb0a3e8cdf728b3e7bc45ae221e5a": "Inserimento del certificato non riuscito, controlla il registro", + "c8a71420e709d8a4d02914a78d9a0e06": "Inizia a ripristinare la configurazione del certificato SSL del dominio", + "0672a3dc402dc9657fd0a0f1580d1c12": "Nessun dato di ripristino trovato", + "52f23f668fced51c3e25c781299fbff8": "La directory di backup {} non esiste, impossibile ripristinare le informazioni sul certificato SSL", + "ad93ef11d3e4238618571f517e11e80d": "Ripristino di {} Oggetto: {}", + "c49480308ee71202cc5fff5ea96eaaed": "Il file del certificato non esiste", + "42db220bc931b97aecdef6b6f0362bc4": "Certificato o file della chiave privata mancante", + "9f88b7ffec183a54f2e7e6136b4f5ac7": "Ripristino delle informazioni del certificato SSL completato", + "5e211e4fb46748c1d243b59a15645df7": "Avvio di un'attività pianificata di backup", + "a9d58d413bd48f1bd7e8041b6d8ceab0": "Attività Crontab {} ✓", + "ff0550fa0270ac20419790a51900d815": "Completamento dell'attività Crontab di backup", + "a7609aefd5330a1384704e73dc0b4dc0": "Inizia a ripristinare l'attività Crontab", + "48ed083561c2f201d9fe52f6a35ee982": "Attività Crontab completata", + "e9ed6b2a27deb5699565f0441dc713e9": "Avvia il backup delle informazioni sul software", + "e690c7866c5dbacbbc7860af5e6a3af1": "Backup delle informazioni sul software completato", + "cabf299a6cfa5874e23582c535f301c6": "Inizia a installare nginx-{}", + "33ec71107108ed89c0b526d5473526c8": "Inizia l'installazione del servizio Apache", + "b815f2a7e299ea99d41d665c728756d9": "Installazione del server Web completata", + "70510d59e30015790f07ca53c80c5bec": "Inizia a installare php-{}", + "2de6c0aa3c26285104f898b368bcf287": "Inizia l'installazione di node-{}", + "7d5cf115afd8be7c2a36d03b31d1ce44": "Inizia l'installazione di mariadb-{}", + "92e77c2b107f440d6d54062228112f73": "Inizia l'installazione di mysql-{}", + "4b09abb2edd44a4510395a297a2ff155": "Inizia l'installazione di mongodb-{}", + "69fa45968c5cc7a9115bff54e70c95c1": "Inizia l'installazione di memcached-{}", + "fbabb869ff01746bd144289622b277fc": "Inizia a installare Redis-{}", + "da7d69765f1876fba52c21a17e8c74c6": "Inizia l'installazione di postgresql-{}", + "99782b6a478e499d45a91f9d78e1c73a": "Inizia a installare phpmyadmin-{}", + "640c4e334dc9587e212d36e685059478": "Inizia l'installazione di ftp-{}", + "aecfeaaa9e3bcff1f6169598772e90c0": "Avvia il ripristino dell'ambiente in esecuzione del pannello", + "3b83e3fdb17c70ca190e263e0bd7173e": "Salterà l'installazione se esiste lo stesso ambiente", + "d4e8a75d522d3e77ae80eadd49b0865e": "L'elenco dei database remoti è vuoto", + "5d806f11bb91996cafe7836b27a4e770": "Eccezione di connessione Redis!", + "1d69261c05f6ce03d2cab5528d443fa7": "Avvio di un backup dei dati del database", + "0cf1803cfdfda6f67d12fa7e1c4a25a7": "Backup del database {}remoto {}", + "32d68be800692faddb12c5252fded05e": "Informazioni sul database {}remoto {} ✓", + "0c64283397c43effb13a2cbe818ce929": "Backup dei dati del database completato", + "2f7d7cfc04be64fa087e964d41cb26b4": "Inizia a ripristinare l'elenco dei database SQLite", + "a1248c409fec22277ab13a6bb433188e": "Il file di backup dell'elenco dei database SQLite non esiste, il ripristino verrà saltato", + "d03ebecb5f420070192de8712926151a": "Ripristino dell'elenco dei database SQLite completato", + "ad6937d61b4d6e93a13f03308c66f2eb": "Il servizio Mongodb non è in esecuzione!", + "f60644c6526c4d9afe5b20db75fc2e5b": "Backup del database fallito, la directory di esportazione non esiste!", + "161bb420493657920405937a2cf42c96": "La compressione del backup non è riuscita!", + "20a42330f9241c13c91e3e203449a8a6": "Mancanza di strumento di backup, installare prima pgsql manager tramite il negozio di software!", + "7eff7c4aeb6bfe736f8a78c0096f92c7": "Imposta prima la password dell'amministratore!", + "6e907b499869ab16105a7aba198e13a7": "La password del database è vuota!Si prega di impostare prima la password del database!", + "d8a3336243e1c08e8a29c75af1eb528c": "Inizializzazione MySQL riuscita!", + "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL si riavvierà, attendere...", + "73af95fd2322196e0d9792df4ca1f566": "Inizializzazione MongoDB riuscita!", + "8c9718f3235e7c36c9f400bc68db1ef5": "Autenticazione impostazione MongoDB non riuscita!errore: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "Inizializzazione PostgreSQL riuscita!", + "c46866b7bc29cf9d478835bda10e43ce": "Inizializzazione Redis riuscita!", + "4e889bbbfc5e25ebf611e5764b8a358c": "Inizia a ripristinare il database", + "c9206e74b8d32e1e0a5710c0fe322cee": "Ripristino del {} database {}", + "ecea29915732c5d0001ece74601f3d20": "{} database {} ✓", + "b61a878149263a02fa99cc635409ee25": "{} database {} ✗ ({})", + "3fa7c5a9beafa67bb44999cab5cff52c": "Impossibile ripristinare il database {} {} Motivo: {}", + "e89775cca910deb5e484f631606cceb1": "Ripristino dei dati del database completato", + "9750547146e22f364299bc5f561a3fb6": "Inizia a ripristinare il database remoto", + "23f2db47eb6ff16785e5a222c8657f93": "Ripristino del database remoto completato", + "b17f6f187c4ecfd392c6367ec2ba6498": "{} ID backup non esiste, importazione terminata", + "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} ID database non esiste, ripristino dati terminato", + "611881e9f5d01b22a447c282aa8aca23": "Il database MySQL {} esiste già", + "ea31cbc6134300ca816c913d227b605f": "Impossibile creare il database {}.Motivo: {}", + "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "Il database esiste già, saltando il ripristino SQL", + "556843e4a406b780b0cf83c43366a8dd": "Importazione riuscita", + "af71c2c0e3813c9a77fe48507ea8e4d1": "Il database MongoDB {} esiste già", + "84b4d8c8cdd02488c0f868e97b22a3c2": "Creazione riuscita", + "10aec3a9e9564a9851c117b259245136": "Il database esiste già, verrà saltato il ripristino dei dati", + "b819d4259ca3ab0042562acea69e83e1": "Il database PostgreSQL {} esiste già", + "31b21eca2e62de420cf05e8135089114": "Il file di backup non esiste!", + "3eed4851380704f25eec3921befde38f": "Restauro riuscito", + "cbea0a592d6a3c48f2418d687cf54200": "Avvia il backup dei dati del terminale", + "e7e06b2dd59401dcf79acf2e3124d2fb": "Backup dei dati del terminale completato.Dimensione dei dati: {}", + "a273d4d4d0cf13abc1d7a4f96b8c851e": "Inizia a ripristinare i dati del terminale", + "1a15a2b43f1dd92e836a592fb180843d": "Ripristino non riuscito, il file non esiste", + "95d831166994e434da49f3ed70b73e8e": "Ripristino dei dati del terminale completato", + "e3a04ee4c0a034510866948e571c7966": "Avvio del backup dei dati del firewall", + "9a176a20c15e3dc096ed8bc5a05182ba": "Regole della porta del firewall ✓", + "ce693968cbf6e5f66af91e3dd2317d78": "Regole IP del firewall ✓", + "7ebd5e6b35357be0d5079f674f68ed8f": "Regole di inoltro del firewall ✓", + "8dfa78d85bb1d152b0cafe398b27e1ae": "Regole regionali del firewall ✓", + "927bb2298acc2c29d1beaff4d1656371": "Backup dei dati del firewall completato", + "d076d2dde53272dc55d47f34a465ebef": "Inizializzazione dei dati del firewall", + "3e0b3a3e90cc4a1f5abbf3fd1a38c2b7": "Installato.", + "d1b0c3d7a1b5f80626ec1a2395b4f990": "Avvio del ripristino dei dati del firewall", + "1f35b1eac1045718a64b4133a8e8829b": "Avvio del ripristino delle regole della porta del firewall", + "a168f915263109733b87807a0db41e01": "Le regole della porta del firewall sono state ripristinate correttamente ✓", + "ce04afdfe07dead0b0fb34e6bc00b6e5": "Impossibile ripristinare le regole della porta del firewall", + "c32b29f59e8b553998c75c5d7bc44dc6": "Avvio del ripristino delle regole IP del firewall", + "b68673b625a1d48b3953e37bb39fcbab": "Le regole IP del firewall sono state ripristinate correttamente ✓", + "ee0294aac018e0ab5f4e5e020f8d867c": "Impossibile ripristinare le regole IP del firewall", + "326c03834ea4914dbb02cf04e0c0164f": "Avvio del ripristino delle regole di inoltro del firewall", + "b077ba90ec76f05d0e541733e8291e3f": "Le regole di inoltro del firewall sono state ripristinate correttamente ✓", + "5ed68fe9a3e0530485018c0704d91035": "Impossibile ripristinare le regole di inoltro del firewall", + "03f3f31fd240913a083a78fc2d60f6f8": "Avvio del ripristino delle regole della regione del firewall", + "6f9922502feac3b7e6ede129664e3e18": "Le regole della regione del firewall sono state ripristinate correttamente ✓", + "771b376bf4473fc2f1cea6958de2afeb": "Impossibile ripristinare le regole della regione del firewall", + "6331b46ffa70ff97b558022d5ae8098a": "Avvio del riavvio del firewall", + "1bb2a65f17d7e3c685f36f7ff1794338": "Riavvio del firewall completato", + "246f6edb1d9df9b3abe78fc810876c28": "Impossibile ripristinare i dati del firewall: {}", + "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "Avvia il backup dei dati del sito", + "c886466d255b20be0dbde7f1b44b7f20": "Backup di {} progetto: {}", + "7ecf25c18499d663d2e636d0a99f73a3": "{} progetto {} ✓ ({})", + "0fc5eeb9bebed19653578a5df99d3e6e": "Backup dei dati del sito completato", + "9a2e8778b2a816fedb9f83afadcc2341": "Avvio del ripristino delle dipendenze Python del sito...", + "fd16d36423b43735556724e0395e8f91": "Ripristino delle dipendenze Python del sito completato", + "bbf57ca8231bce958a3e528a08491874": "Inserimento del database del sito non riuscito: {}", + "389f018ba17dc25cb23a5300d8f630db": "La directory di backup del sito non esiste: {}", + "21654e03b247d5e25abaa0ad542883c0": "Inizia a ripristinare i dati del sito", + "c8cecd19f4f4a680a5879f828d1c5578": "Ripristino di {} progetto: {}", + "35850d3654332477522ee06c756a3c85": "Impossibile eliminare la directory del sito di origine: {}", + "c88b730f7a6a312159272ce532947de2": "{} progetto: {} ✓", + "24ee51964e4ece856493ca28fdb075ed": "Ripristino dei dati del sito completato", + "483829cb5ae13bb190eb59acdf4f3231": "Avvia il backup dei dati del server di posta", + "8c7a0774ab14bae83a69b8562102fb0a": "Backup dei dati del server di posta completato.Dimensione dei dati: {}", + "e8480272035737a247832288f618c270": "Inizia a ripristinare i dati del server di posta", + "e058c7e1fd9cd1a4fd7ac7240a7765d2": "Il ripristino non è riuscito, il file non esiste", + "6e6e9dcfdf7bd846ab85a4ff0e0e2f95": "Ripristino dei dati del server di posta completato", + "1502c42b339a3dfe20e4c95186b38dc3": "Avvia il backup delle informazioni dell'account FTP", + "b5cf2f2c48fb5978825d3341759dd6d6": "{} utente ✓", + "120446d8a303de2396a1bb62ba8e8755": "Impossibile eseguire il backup delle informazioni sull'account FTP: {}", + "b18010e000c073a3587a89b2931c2770": "Backup delle informazioni sull'account FTP completato", + "c9073077bfd7adb73cbe253177b08833": "Ripristino dell'account {}", + "c5df3d6bec6157b48fb24bf8fe2a2add": "Creazione FTP non riuscita: {}", + "f3f8d4ba630fa6a7de1e9f4e34bad5dc": "{} account ✓", + "af4ff8fd3803d5496f74604eb1665e81": "Inizia a ripristinare la configurazione dell'account FTP", + "2bf94c9147c8220fc83f955175216c40": "ftp: account [{}] ripristinato correttamente ✓", + "9417f3027d6326176c986ffeee1f4491": "Impossibile ripristinare la configurazione dell'account FTP: {}", + "8ed95b2c3c38acf7e9532a582f08bb86": "Ripristino della configurazione dell'account FTP completato", + "49237b104331e8724e521b2fe6fdf6d8": "Avvia il backup dei dati del plug-in", + "26d785a1a32377e0e0e9498f4a7da12e": "Firewall Nginx ✓ ({})", + "7f578816e3867140ee56ccbbc1d69f55": "Rapporto sul monitoraggio del sito web ✓ ({})", + "ff083aca075c6543c2999781b6677c19": "Protezione antimanomissione aziendale ✓ ({})", + "2f29dad748ac1d8d50481ecbd7e05091": "Rafforzamento del sistema ✓ ({})", + "79bb9b38c599612b8b8f38ddc50f5c25": "Inizia a ripristinare i dati del plugin", + "ee84e47223f5ce39b8bb239376db4af3": "Se il computer migrato non è associato a un utente aapanel e aggiornato alla versione Professional, potrebbero verificarsi errori di ripristino del plug-in", + "30560687e27ef30b6f1cde26359eea6c": "Inizia l'installazione del firewall Nginx", + "a776b4ccf7343a25223817c8597ca7cf": "Firewall Nginx ✓", + "d0c97e94eb5061783de7bbad8e7bd295": "Inizia a ripristinare i dati del firewall Nginx", + "0010c09bd9f322c3b88a89dd0b52c831": "Dati del firewall Nginx ✓", + "427ad80bf462a92719fcff5c1a1be755": "Firewall Nginx ✗", + "29ad27f749c3f913779d432115de597f": "Inizia a installare il rapporto di monitoraggio del sito web", + "66f3f8adc854963e94a643b706157309": "Rapporto sul monitoraggio del sito web ✓", + "a0dded50b067929299258b3c8fc1b0e6": "Inizia a ripristinare i dati del report di monitoraggio del sito web", + "bd43add14ebbd0f448c207c48e1d5ac8": "Dati del report di monitoraggio del sito web ✓", + "a7b8bc831a9b36cc5127b5f8ecbec22a": "Rapporto sul monitoraggio del sito web ✗", + "c922c95c5f7973050d08412a26aab462": "Inizia a installare la protezione antimanomissione aziendale", + "31d844f4dd95b8a71e8ddbd1b9912ae5": "Protezione antimanomissione aziendale ✓", + "8fcd5da199e1e04830a686a576a2e914": "Inizia a ripristinare i dati aziendali di protezione dalle manomissioni", + "941b78173e944c6737a858bada098311": "Dati aziendali sulla protezione dalle manomissioni ✓", + "50bcd3813a4b18663b0bdc29f73b8c90": "Protezione antimanomissione aziendale ✗", + "cdcfb9e176572fe14bdc4c88474d8baf": "Inizia l'installazione della protezione avanzata del sistema", + "4d86b9c9f554fa3d477a86d2f62aaa1b": "Rafforzamento del sistema ✓", + "5633c4d754985da6c7fab116964ac501": "Avvia il ripristino dei dati di protezione avanzata del sistema", + "bda583fc184a8e079a37e169a9614e10": "Dati di rafforzamento del sistema ✓", + "479557cf249b3145d91a94ed130c5ecb": "Rafforzamento del sistema ✗", + "746e85b89c25244ae397c06029badc9c": "Ripristino dei dati del plugin completato", + "b1bcc839644a9a611f9d8e2e1f63e0d0": "Il nome del file è troppo lungo (oltre 255 byte).", + "29886cc45dfd7d6c3177d4a6ccfaae94": "Il percorso completo è troppo lungo (oltre 4096 byte).", + "a3b7d5cfd749d2f8c5af2a8f45f002ea": "Impossibile controllare il percorso del file: {}", + "8e6595abbb40f247c74fffdf61bd5a00": "Installazione fallita!Prova ad accedere di nuovo.", + "a499f309ac7a223d611d7a0a85900342": "Nessun record di riavvio trovato.", + "d23fb11ea541cd5f1c0b05851d54fd58": "Contrassegnato come letto.", + "1983b37067c7e94095a5113786fdef9c": "Modifica non riuscita, connessione alla finestra mobile scaduta, riavvia la finestra mobile e riprova!", + "9e90efb62702b147b71e8731290caf44": "L'immagine [{}] non esiste, prova a selezionare [Forza estrazione immagine] e riprova!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "Il nuovo contenitore non è stato creato correttamente e il vecchio contenitore è stato ripristinato.{}", + "1f004e412319b7ed472624e011b3d2ba": "Aggiornamento riuscito!", + "a2ea046c20d2da5cebf2dea01a62dabe": "Aggiornamento non riuscito!Lo stato del contenitore è stato ripristinato", + "f9a48b804d917398e795016687f3b0f4": "Si prega di disattivare [Antimanomissione per Enterprise] prima di provare!", + "ca1bc3e1d32b99b90395da47b88576a9": "Errore parametro. Inserisci: ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "Errore parametro. Inserisci: _ws!", + "6c3e5d603d8845422e861fb0b4eed350": "Un elemento di configurazione che non lo fa", + "f324009782d2d9e73d1087884ebc2c4c": "La radice Docker non può essere vuota!", + "538960e1336f919e37a0d2c024c56830": "L'attuale directory root di Docker è la directory di destinazione e non è necessario modificarla!", + "a848bbd79221dfdce1c9dca536dbfada": "Il formato JSON delle impostazioni del proxy è sbagliato!", + "edf6eb680187066c4dea216b3b20d6d2": "Configurazione del proxy riuscita!", + "b01f9411136207ad7df28b9bf2387e2a": "Aggiornamento non riuscito!Motivi del fallimento:{}", + "da896b628e3ded58445e4b015320f327": "Il sovraccarico non riesce a causa di:{}", + "efb869976990f78b3d6fcbaf270e3323": "Ricarica riuscita!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Overload del profilo globale non riuscito:{}", + "75bbb7a00c3b5b510913952fe089f52a": "Parametro sbagliato, parametro del percorso!", + "273609d18876f5f9e3f021032e5b57a3": "Installazione non riuscita!", + "0720c6c4f478b3a374b4a438f7cf80ad": "Impossibile importare l'immagine, la connessione alla finestra mobile è scaduta, prova a riavviare la finestra mobile e riprova!", + "22cc0388137842df9649b3bbcff345e8": "Se l'importazione dell'immagine non riesce e la directory del contenitore temporaneo non viene creata, verificare se il software di protezione dispone di un record di intercettazione.", + "0568e5e8aa7c811dd420c818189a0d46": "secondi fa", + "53c53a79f864561f8b6886b3dde7cd51": "minuti fa", + "f329a0dab82282e50e3aea9260e95d53": "ore fa", + "7a1af30a5ce889031cbc2472766159e3": "giorni fa", + "558a41d55884223583b3542e802d2b64": "Il nome del mirror non può essere vuoto!", + "0e8623af4dd4d3b732904872d22fbf83": "Il nome della rete non può essere vuoto!", + "5aa2044b58e63d58ddecc69421802404": "I gateway possono", + "ceaa20eefd6749452a947c7f5dfa4eb0": "Gli intervalli IP non possono essere vuoti!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "Creazione di una rete fallita!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Nome della rete: [{}] esiste già!", + "9cdc09516d85ae057d1d9bedc988849e": "Crea una rete con successo!", + "7d643f192968be3f8a54be28592e9176": "La scansione dell'immagine non è riuscita:{}", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Sono supportati solo i tipi di contenitore e app", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "La versione {} per l'applicazione di {} non esiste", + "a5c1e82e4d1142b8c7e0bc1499446181": "L'INDIRIZZO GIT NON È IMPOSTATO", + "4e24bbe093c9dfb90092a0f4e71733dc": "Il nome del ramo non è impostato", + "b3c02fc58b92f549f529992c8a696a66": "Il percorso del file zip non è impostato", + "eecf07d92b354565df633b06401206a1": "Seleziona il percorso del file", + "795d1693702d930f7fc18edfb0f1c0d3": "Configurazione errata del server MCP", + "a16d1dbe265c57e0417ae396c3c30043": "Nessun servizio trovato [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] Nessuna immagine trovata", + "4de8e45b499205551f4a09fd074e5246": "Parametri mancanti!id", + "02e85c0a0fa01fabdb5426af13e87853": "Parametri mancanti!nomeapp", + "d910ee67a0875a17b6e663f9e19369a4": "Questo collegamento all'app non è supportato!", + "32d030406e8d755a59468a50bd385b22": "Impossibile ottenere il contenitore", + "c8e0f1ed3c37b015ee446297591d172f": "Parametri mancanti!nome_app", + "dad9445733497150b5f2cd29a5aed506": "Il nome dell'app non è legale, non includere caratteri illegali!", + "a04daa98db618d6c2a19aeed5af39448": "Nessun file docker-compose.yml trovato per l'app specificata!", + "74fd3ba5b92aa59e471161d2a585a93c": "Il parametro model_name non può essere nullo", + "760a1226f2ba701b04963681ab97d575": "Il parametro model_version non può essere nullo", + "2a88d88050ddcc0e28f0da4576be2232": "Il parametro service_name non può essere nullo", + "fd0f83d70400b1dd9f6ae9c093638411": "Impossibile ottenere informazioni sul contenitore, l'esecuzione di docker-compose è eccezionale!", + "2aec223006d3894d3c1a48bca642c141": "Il modello è in fase di download, controlla i log più tardi", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Impossibile eliminare il modello, eccezione di esecuzione docker-compose!", + "d75a01e0d2c0cb8dad89216653024903": "Eliminazione del modello riuscita!", + "f0501638237d7e8f934ec55ac3ffb20f": "Se l'installazione fallisce, controlla la rete o installa git manualmente", + "608113c9694987fa65b22ecb164aee59": "L'ambiente è stato installato correttamente", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "La directory apphub non esiste", + "7ec67f9826a24ca4a930a6e168ee9611": "La risoluzione ha avuto successo", + "af2c4fa868813e47b80859a0b36e00f4": "LE INFORMAZIONI GIT SONO CONFIGURATE CON SUCCESSO", + "2b038e106d4ca5c11b787e16c73253ef": "Se non lo fai", + "12d1b3062be6f8bb374511323c349ed7": "Per favore imposta prima le informazioni git", + "798cd5a257af539ecfe6bb44f45ee788": "Importazione da Git non riuscita", + "8170f5d37a617dcbf16fe8dd414073dc": "Importazione da Git riuscita", + "6e40e5a8ad741ca4bd714fa52ef32333": "Il formato del file non è corretto, seleziona il file zip o gz", + "c4996991c50032c9b296c11da356acb2": "Errore di importazione:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Importazione riuscita" } \ No newline at end of file diff --git a/BTPanel/languages/all/kor.json b/BTPanel/languages/all/kor.json index cb6b01f8..c026203a 100644 --- a/BTPanel/languages/all/kor.json +++ b/BTPanel/languages/all/kor.json @@ -1431,11 +1431,11 @@ "8c7a5b3c69236d00b3577be9c91a71cc": "요청 된 패널 정보가 존재하지 않습니다!", "5b8ce0c16a86626165e93796b14d4bf6": "오류 읽기 PHP 구성 파일,이 PHP를 다시 설치하십시오!", "0631278069374277ff3b2cc2949940fd": "올바른 [도메인 또는 IP]를 입력하십시오!", - "ac40ea6dbb38e754acea879d58701424": "{} 날)", - "7a3fd8f7ddf80ae2db423aa55177d22a": "{} 일) {} 시간)", + "ac40ea6dbb38e754acea879d58701424": "{} 날", + "7a3fd8f7ddf80ae2db423aa55177d22a": "{} 일 {} 시간", "377e7b3a05033be3164d7900c2feb2a6": "{} 시간 (S)", "b2a09ec7e869bb555211fe7b26b5cf3e": "{} Hour (s) {} 분 (s)", - "9c9a5e9d306cf687381d8f1924b43b9c": "{} 분)", + "9c9a5e9d306cf687381d8f1924b43b9c": "{} 분", "0656e1b2562955020afc339b3c9a1838": "PHP가 설치되지 않았습니다", "375a8ffa8b733dd5f6b069de80c57d48": "PHP 버전을 얻지 못했습니다!", "2b5266cb205519f70b1bcf7e2654982a": "지정된 PHP 버전이 설치되지 않았습니다", @@ -3139,5 +3139,616 @@ "3769ee974734f97166d6bce6b96e9b4e": "데이터 오류", "daddfa03b4ea762e009a36ce970b2b59": "Baidu 계정이 설정되어 있지 않습니다", "0379d9c081b6fd9ec2fd86e8672a4e72": "데이터를 얻지 못하면 로그인 정보가 만료되었으며 다시 로그인 할 수 있습니다.", - "3149165696693c4f6fef18928261a50f": "360 계정 설정이 없습니다" + "3149165696693c4f6fef18928261a50f": "360 계정 설정이 없습니다", + "7d7014331b485392e1d6055aad5c26cd": "nginx phpmyadmin SSL 구성 파일을 찾지 못했습니다. 열기 전에 SSL 포트 설정을 닫으세요.", + "bedfc521aa92e68b04430d33289c6b3c": "멀티 웹서버 호스팅에서는 nginx 1.24 이상 버전만 지원됩니다!", + "94e431cde2ffda2ef08526fa2af1b0b5": "자산을 성공적으로 설정했습니다!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "자산 설정 실패 {}", + "36856cc0aff5e4d792ab1919ec9e24f9": "데이터베이스 [{}] 백업이 성공했습니다!", + "cd338377817d5286c26f62c0562ebe72": "데이터베이스 [{}]를 성공적으로 가져왔습니다.", + "8aec4a4bd998059f3dbb932da4714b00": "IP를 찾을 수 없습니다!", + "5873103908815f34241636e336e1f463": "압축 작업이 메시지 대기열에 추가되었습니다!", + "e57b7bae408dd226fabe86773cd6b3c3": "일괄 작업 성공 [{}], 실패 [{}]", + "de5ac4bddf9b72b649c0cbd4243f76c6": "몇 초 후에 다시 시도하십시오...잠시 기다려 주십시오...", + "6905a88552caae6df77f56bd19f6d76a": "Cron 작업 설정은 로컬로 유지됩니다.로컬 백업이 유지됩니다.", + "63701b3fa795bcd399aab5d489f8eae9": "Cron 작업 설정은 로컬을 유지하지 않습니다.로컬 백업은 유지되지 않습니다.", + "837cc24a222df21e74245f4cfac6ad09": "사용자 설정을 하지 않음", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB는 보안 인증을 활성화했습니다.", + "4675bfcf662ee236a05dcb763cf9d520": "Apache 캐시 설정에 실패했습니다.홈페이지가 제대로 작동하는지 확인해주세요!", + "0b9aca52d360d6f7a8f2c5c897c93005": "Apache 캐시 설정이 성공했습니다!", + "a2cd28fcd32e92be995b2335768fdea3": "Apache 캐시는 현재 다중 웹 서버 호스팅에서만 지원됩니다.", + "b288b8637582cc38c1d4c902ed03cbec": "캐시 플러그인 설치에 실패했습니다.", + "aebabb72ad41fbe46f73abcc9dc00b9f": "캐시 플러그인을 활성화하지 못했습니다.수동으로 활성화한 다음 캐시를 활성화해 보십시오.", + "3981bd44ca3f1d5abafc6b15ba8c7435": "OLS 캐시 설정이 성공했습니다!", + "3777f748e5535e7e38261b2e0afc8274": "OLS 캐시 구성 실패: {}", + "8e342838d5cf3a93e34956c9550db4d0": "배포 실패: {}", + "152b976545ff1ee50e0de21da7af1266": "확인중입니다.....", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "매개변수 검증", + "80f9a0a476836be5fdec10fe414e88a9": "{} 웹사이트를 생성하는 중입니다....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "웹사이트 만들기", + "8a9535f05c52e58f46e3237b9da019cc": "선택적 구성 추가: 데이터베이스, FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "선택적 구성 추가", + "2a5e8b7e4116ee81db89ba173f60bf90": "매개변수 확인 실패", + "2f35a151cc0256f0d9ad5410eccbe5d0": "매개변수 확인 실패: {}", + "af2a8e2174ea327f9fbf77d84029d58b": "매개변수 확인 성공", + "181fc26e7b655ba36b3b075ca1ebc350": "웹사이트를 생성하지 못했습니다.", + "7118aff13541bf3d74a9c47fb458e102": "웹사이트 생성 실패: {}", + "be33773093fc2e135ba4bc26f4bb5509": "웹사이트가 성공적으로 생성되었습니다", + "8d823a9933eefd02bf1003481f816f64": "실패: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "성공적인 스타트업!", + "31b88b436695f7e0bc5dad1cb8999737": "패널 서비스의 포트를 사용하지 마십시오!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "포트가 사용 중이거나 포트 범위가 올바르지 않습니다!100에서 65535 사이여야 합니다.", + "7dde7f2ae7cb4ed56b1b683b479ad303": "경고: {} 버전이 아직 설치되지 않았습니다.", + "839067817c5a1e7fcce2f905284d630e": "원본 디렉터리 다시 쓰기와 대상 디렉터리 다시 쓰기를 동시에 채워야 합니다.", + "4b6ad864ce62dac8466dde7ec62e7ea9": "소스 디렉터리 다시 쓰기와 대상 디렉터리 다시 쓰기는 동일할 수 없습니다.", + "ed6fe3e47d3686c7af83b67535b426b5": "재작성 소스 디렉터리는 /로 시작해야 합니다.", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "재작성 대상 디렉터리는 /로 시작해야 합니다.", + "87a9a388a3ef42018ceb866756c4ee39": "데이터베이스 연결에 실패했습니다. 데이터베이스 상태를 확인하세요!", + "a75c113f53d4342010d140325fa29eec": "웹사이트의 멀티 서비스가 활성화되었습니다.", + "b0a517b4d596e5fc1351f8dc12e73a74": "보유 서비스를 선택해 주세요", + "7e953c855b391ac0716a4eeb47c5c5c3": "먼저 여러 서비스를 활성화하세요.", + "55d523aa501b0e7e93e172a9e6829a8a": "nginx 버전 정보를 가져오는 중 오류가 발생했습니다.", + "08f18bb6c6293307f68d5f822ed7dbe1": "현재 openresty는 지원되지 않습니다.", + "45020a62e40bbb43f6e05c62ad50288e": "이미 설치 작업이 있습니다.먼저 완료될 때까지 기다려주세요!", + "4052df86d5a8dd12943cc8b1d53162e4": "서비스 설치에 실패했습니다.다시 시도해 주세요!", + "8033c09e6fedf841205b29b57c0ae0d1": "서비스 시작 실패: {}", + "442d02a722dc331f8b85d328fb99a174": "다중 서비스 모드가 성공적으로 활성화되었습니다", + "a0b289e4caa220dcd62692401d5083f5": "{} 서비스를 제거하지 못했습니다.다시 시도해 주세요!", + "0045406cf97cbdca708c795aa9554145": "{} 서비스를 다시 시작하지 못했습니다.수동으로 다시 시작하거나 구성 파일을 확인하세요.", + "52cd203105425f66daf42d81f05c540f": "다중 서비스 모드가 성공적으로 비활성화되었습니다", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "서비스를 다시 시작하지 못했습니다.아파치 구성 파일을 확인하세요!", + "a949ed64edc73a99f9f9c801a84b6390": "지정한 서비스 유형이 존재하지 않습니다.", + "408f206d494c5f26144f7492315dfa21": "일괄적으로 서비스를 전환하는 중 오류가 발생했습니다!", + "e9fd26be1a67520e66f2e99d61977c32": "웹사이트 ID가 존재하지 않습니다", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "현재 웹사이트 서비스는 이미 {}입니다.", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "구성 수정에 실패했습니다.", + "98e762d03fc5ffcb381010aff10c7bde": "{}로 성공적으로 전환했습니다.", + "293f667205bd8aa91c72f966c03c3de5": "획득한 웹사이트 서비스 유형이 올바르지 않습니다.", + "8562d96fc303411ee017a30b83d75712": "성공적으로 수리됨", + "d9d76120c8c13b40d2e8e49b0d6117da": "멀티서비스에서 오류가 발생하여 복구가 실패하였습니다.다중 서비스를 닫았다가 다시 시작해 보세요!:{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "구성 파일이 존재하지 않습니다.", + "c8622023712105e9e7328396976a2667": "백업된 구성 파일이 존재하지 않습니다: {}", + "12572c9827392d4bd4c028881ed06242": "웹사이트에 전역 프록시 또는 URL 재작성 충돌이 있습니다.삭제하고 다시 시도해 주세요!", + "92bce01ab77d0d50efec1d424cab583b": "이 웹사이트에는 역방향 프록시가 있습니다.삭제하고 다시 시도해 주세요!", + "30c74a0981da2edec86936cd288479f7": "웹사이트가 글로벌 역방향 프록시를 구성했습니다.먼저 취소해주세요!", + "c3fe8f7adf26d613d9593acede34303b": "웹사이트는 하위 디렉터리 도메인 이름 바인딩으로 구성됩니다.먼저 취소해주세요!", + "7122d35c3532d63c8d9fc5c5bd320558": "주문 목록을 가져오지 못했습니다. 나중에 다시 시도해 주세요.", + "84e9feba40d0aed963505e503cf821e3": "업데이트 실패...", + "02d59ec01b27b9b07cc92b56b4590690": "SSL 인증서가 30일 미만이므로 갱신할 필요가 없습니다!", + "c85411871b8773e799e64d0c23ef79d3": "주문을 찾을 수 없습니다!", + "2a6bb1bdd798217656edecf672b6df3c": "Http01 확인 오류가 발생했지만 사이트를 찾을 수 없습니다.", + "962682f10423a33a75f4b1277b3690c9": "Http01 확인 오류가 발생했지만 사이트가 실행되고 있지 않습니다.", + "fea087517c26fadd409bd4b9dc642555": "정상", + "9e1a9b35939cc4887854eb2ed84f401f": "데이터베이스 이름에는 특수 문자를 포함할 수 없습니다. 재설정하세요.", + "90299d1fb53fdf7a570db71a1b61c127": "먼저 PgSQL 루트 비밀번호를 설정하세요!", + "01d3922e30b7aff9c7265e91c57cc829": "IP 형식이 잘못되었습니다!", + "b2349e65b04baa3a0d50ad030535b73e": "입력한 내용이 합법적이지 않습니다. 수정에 실패했습니다.", + "932c4edd1a70a505be1099f4e7874692": "pgsql 사용자 액세스 권한을 성공적으로 수정했습니다.", + "f562938bcf2a52b32261e4f4a99c3e00": "삭제 실패!현재 데이터베이스가 연결 중입니다!", + "573ba454733eee7cd866addcd11ea21c": "데이터베이스를 삭제하지 못했습니다!", + "fec7dbd4f36266728d6eda5e168d1cc0": "데이터베이스가 존재하지 않습니다!", + "69579eb94ffe47354dac42abc8cac9d1": "데이터베이스 비밀번호가 비어 있습니다. 먼저 비밀번호를 설정하세요.", + "fb642275547236f1fb2ea7717ace26d8": "먼저 관리자 비밀번호를 설정해주세요!", + "699c43a1633256e97b95615a562eef88": "데이터베이스 비밀번호가 비어 있습니다. 먼저 데이터베이스 비밀번호를 설정하세요!", + "67e943332602d7a5b9765306caa8604d": "알 수 없는 데이터베이스 유형", + "04c651a70b89bd4fd8fc8702c0bf61e9": "데이터베이스 백업에 실패했습니다. 내보내기 파일이 존재하지 않습니다!", + "95abdbd5890c3ceec62026c6246d8030": "백업 실행이 성공했습니다.", + "7307a92023c68b6842a8dafb1b500f16": "복구 도구가 부족합니다.", + "bff09c8822165bf816a5b5a4d1fe9140": "가져오기 경로가 존재하지 않습니다!", + "3d003d1417aec658cd020f9faf66a5c1": "zip 파일 가져오기만 지원됩니다!", + "eef4302ce8a129e5d70767668a9e9110": "sql, tar.gz, gz, zip 파일 형식을 선택해주세요!", + "e1a4b8afc2cb3f56f0c98876c06d6d58": "데이터베이스에 연결하지 못했습니다!", + "0033a9566af4f930bebbd45802be5427": "연결 실패", + "0b46bb64ce97c64f6dddc87bccf949e8": "원격 데이터베이스 정보가 존재하지 않습니다!", + "ae576ea2a8c76765fa69287fb1347d1a": "원격 데이터베이스 연결에 실패했습니다!", + "15a8af9e80d0a0c2d87314c154fff181": "Redis 클러스터를 지원하지 않습니다!", + "c2dafded2689dc11914376d72a70dfc2": "redis 연결 실패!", + "a9ed7f25ce1ffcf98cf5ec7db86abdf4": "현재 원격 데이터베이스 백업은 지원되지 않습니다!", + "9d1ee7d092060a4d3418a979fba5e46b": "백업_ERROR", + "ae1110dd560e4e7968b297620be7ea36": "백업_성공", + "1fcdee5d4329f1f638bc2d818f3e510a": "파일을 찾을 수 없습니다", + "517b554160a14e74d52943ea29ab5a66": "redis 연결 실패", + "ec010eeffc0a20399b186f334b3b6769": "원격 데이터베이스 연결 실패 {}", + "2322848a32fd761a98a0bd76e633bc97": "원격 데이터베이스 정보가 존재하지 않습니다!", + "eacd845def6fe750cfc0986f24565045": "로컬 로그인 비밀번호가 비어 있습니다.", + "a18fb7f91f74b73e7326700913e7e35c": "서버가 이미 존재함을 지정합니다: [{}:{}]", + "079d7d1539d30a76e53b6fb54d370d32": "성공적으로 추가되었습니다!", + "72bfbe1d7dd57250382b570043041e82": "추가 실패: {}", + "270b19b2e9da5da821c7b54a1a8d7fd6": "매개변수 전달 오류입니다. 다시 시도해 주세요.", + "ffcba623cf91331a0ba5b3ab969db1f9": "삭제되었습니다.", + "43bf15425909c99f2cc1553eaffaf476": "삭제 실패: {}", + "0947887a435eff51a71f1e54615af33c": "데이터베이스 [{}:{}]에 연결하지 못했습니다.", + "844eea2c94a872941b4e4fe66c92c659": "데이터베이스 [localhost:27017]에 연결하지 못했습니다!{}", + "90b65217be3c698d9b1fbff0dccdc71b": "Mongodb 서비스가 아직 활성화되지 않았습니다!", + "7d1a075632098426af1e2197d274bdb6": "데이터베이스 이름에는 다음 문자가 포함될 수 없습니다./\\\\.\\", + "48b2c30b0f984cdcc6cd7ed4ee376fdc": "데이터베이스 이름에 공백이 포함되어 있어 제대로 추가할 수 없습니다!", + "93efcc7fc4e9d402978828bacd4a5bc2": "데이터베이스 사용자가 이미 존재합니다. 다른 데이터베이스 이름을 사용하십시오!", + "393223cf51f8e25df5d53ae425de74a9": "데이터베이스가 존재하지 않습니다.", + "2162130c1a1937f839cc660f5e70ebdb": "Mongodb 서비스가 아직 활성화되지 않았습니다!", + "45da541afaa00457a2f4617a1dd4855f": "MongoDB 제한으로 인해 관리자 이름 데이터베이스 삭제가 금지되어 있습니다!", + "2465ac13d0470c6414b77dc59fbcdbbc": "백업 도구가 부족합니다. 먼저 소프트웨어 관리자를 통해 MongoDB를 설치하세요!", + "d2af5fe1710856e97dbfdf1adc6d5e98": "매개변수가 누락되었습니다!ID", + "9c17c1312620910f7c3d27a20f01e968": "데이터베이스가 존재하지 않습니다!{db_id}", + "57bb958a6998e558b00b5d89d240b240": "현재 bson json csv 형식이 지원됩니다!", + "3b4ee1461f518d1bd1ed20615d670df1": "csv 형식으로 내보낼 때 내보내기 필드를 지정해야 합니다!", + "d2c7790b1f776ce6ad06426b03fa71b1": "로컬 로그인 비밀번호가 비어 있습니다. 먼저 데이터베이스 비밀번호를 설정하세요!", + "1acdae1719cee0ce5c586cd6995b70a9": "MongoDB는 보안 인증을 활성화했으며,", + "164c5fa905dbffad015f4593d1b85fb9": "데이터베이스 유형 sid에는 int 유형이 필요합니다!", + "3a621b20dadc66881772503620282533": "DATABASE_GET_SUCCESS", + "505a6be34cf7e61f93f2665896cfafaa": "수정에 실패했습니다. 데이터베이스 [", + "13966ea12f4ed389be50c95e65d8a2dd": "데이터베이스 비밀번호는 비어 있거나 특수 문자를 포함할 수 없습니다.", + "361cbf31511a2bf38fc664157d183328": "데이터베이스 비밀번호는 중국어일 수 없습니다. 이름을 변경하세요!", + "252d8cfbb164b773c5f84ce9d814ae3c": "수정에 실패했습니다. 지정한 데이터베이스가 존재하지 않습니다.", + "aea43e9b982f6105e584e46b778d9f9e": "수정에 실패했습니다. 데이터베이스에서 보안 인증을 사용할 수 없습니다.", + "f9be861aad3eda81843c7797487da8e9": "현재 시스템 보안 상태는 양호하며, 뚜렷한 취약점이나 위험 요소는 없습니다.", + "890e24b14414e3da9bc2ad63d6d0befb": "시스템에는 특정 보안 위험이 있으며 일부 구성이나 정책을 개선해야 합니다.", + "951c23a91dfe39b5ea5d00405b4dc2c5": "시스템에 명백한 보안 취약점이 있습니다. 제때에 수정해 주세요.", + "de36cae19b2a65a45cb4dfccb435530b": "시스템이 위험도가 높은 상태입니다. 가능한 한 빨리 관련 위험 항목을 수리하십시오.", + "ca6977d373320a7fdb51047199d4cc59": "관리자가 설치되지 않았습니다!", + "38641e6ce3a6369e108eb595672c8edc": "성공적으로 제거되었습니다!", + "9cae26284a7ad2f46132c1e8e196d089": "성공적으로 설치되었습니다!", + "a9a92e55770213c8aa1fb2871dc43563": "관리자 포트를 성공적으로 설정했습니다!", + "2321763bf0b4cbf345b1e19dc9faec47": "Adminer PHP 버전을 성공적으로 설정했습니다!", + "40a1f70c155550ad2dafa5e556e10c3c": "PHP 버전이 설치되지 않습니다!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path는 루트 디렉터리이므로 프록시 경로 표시를 닫을 수 없습니다!", + "b9629c2dea839825c2f1916b44a154a1": "Nginx 구성 파일 오류, Inventory!:{}", + "32b169f72b293ef80d35435e9894f8e2": "초기화 중", + "58ba018dcbe1c47ea0a293fdcee21e63": "패널 설치", + "67355337eaf300b91de09a8083c93ebf": "로컬 백업", + "99e8ebaa5ad2fafe4e141574f6b4a73f": "파일 업로드", + "bd6d996cdca2252e9b99253b2a587287": "데이터 복원", + "03a2bd12e8b51af547a08985d4882d6d": "마이그레이션 완료", + "0fd957e5b2d9c535c344e9a8f86a225c": "작업 상태를 읽지 못했습니다: {}", + "181f2da22cdbf536f67e46452108d95d": "작업 상태를 저장하지 못했습니다: {}", + "4439b17c5e0977e0c73c643cea950424": "전역 작업 레코드를 저장하지 못했습니다: {}", + "74c6e9c56a9d836f2dac86fe8e0770e3": "현재 실행 중인 작업 ID를 읽을 수 없습니다.", + "62688aeae1c92fc7d92caaa83f22a411": "작업 상태를 성공적으로 검색했습니다.", + "087b165a5f0bd5a04f2ce4be7dca14dd": "실행 중인 작업 없음", + "37a5c6e23237ddff7185d375c34eed60": "작업 {}이(가) 존재하지 않습니다.", + "f613fc3fb0aee3affafcae3477d42bf8": "작업이 이미 실행 중입니다. 작업 ID: {}", + "367b4a21be07204266d306508cc92dc7": "마이그레이션 작업 초기화 중", + "793c8358adb487f79f85acfdc44d54bb": "마이그레이션 작업 생성: {} -> {}", + "e597529fcdfa1dab69eadaf1c44088ba": "마이그레이션 작업이 성공적으로 생성되었습니다.", + "c304dcebe892b468725402a369b3dd46": "서버 {}에 연결 중:{}", + "d2f3c14129fe059cf6d99f1583abc23e": "[+] 서버 {}에 성공적으로 연결되었습니다.", + "ae3c4e96fa1411ea25c05ce9a18ae2ae": "서버 {}에 성공적으로 연결되었습니다.", + "c7203791b356c5f3faf5d8c43d54a575": "인증 실패: 잘못된 사용자 이름 또는 비밀번호", + "10adeeeb866978b5ae637ae2bc13fb96": "SSH 연결 예외: {}", + "1e36faff765dbbbe631f424983a21783": "네트워크 연결 오류: {}", + "f9d5c96265bf9a99b163f5adf699cde9": "서버에 연결하지 못했습니다: {}", + "cd4dc264f41eda817374af0bddcea259": "RSA 키를 사용하여 연결", + "5e1b5e437b38bfb11b1e4853f8838d3f": "RSA 키를 로드하지 못했습니다: {}", + "fb947607c0d2814eed45d41a9e3227f1": "DSA 키를 사용하여 연결", + "1cc35e618813746cb1bd4658f7ac61a0": "DSA 키를 로드하지 못했습니다: {}", + "e9ba4ba778d8a0b4423c09ff6cb32726": "ECDSA 키를 사용하여 연결", + "f618338d0d56f440d7fb1b59d8add72c": "ECDSA 키를 로드하지 못했습니다: {}", + "f579ce14b1e98ae9ad4d392279730d9a": "{} 키를 사용하여 연결", + "696797724fc3db3f012761759f720c23": "{} 키를 로드하지 못했습니다: {}", + "fa4e18c6d3b0c0fa6a5ac1303dda02a7": "키를 인식하거나 로드할 수 없습니다. 키 파일 형식이 올바른지 확인하세요.", + "369709628dacb54949b2c711acd93968": "[*] 서버에 다시 연결을 시도하는 중입니다({}/{} 시도)...", + "88aefbc5392deac3ab63223d6d82b66b": "[!] 서버에 다시 연결하지 못했습니다. 최대 재시도 횟수에 도달했습니다({}).", + "908300abff5dfdf254726c2193f3e550": "서버에 다시 연결하지 못했습니다. 최대 재시도 횟수에 도달했습니다({}).", + "5842d2e8785c14b1e357c4ee1dd1a0c6": "[+] 서버 {}에서 연결이 끊어졌습니다.", + "7463b0247d5614df91270544c6b944bb": "[!] SSH 연결이 설정되지 않았습니다.", + "43234c4b446ff41810dcf807d317cba7": "[*] 실행 명령: {}", + "db4d271e5cb8fe3192ed73bd624a86fe": "[+] 출력:", + "c519185a1f47d37b21866e5f05928dc8": "[!] 오류:", + "6a2909a7dbeca5d8c85843ecd4cd3fae": "[!] 명령을 실행하는 동안 SSH 연결이 끊어졌습니다: {}", + "88783238ef5d081aade9e63160d329fb": "[*] 성공적으로 다시 연결되었습니다. 명령을 다시 시도하는 중입니다...", + "8692bb08477b83615b1ae995552e2c92": "[*] 서버 OS 유형을 감지하는 중...", + "95adf53ab7c91ed98c77d3c0e38a2a1a": "[+] OS 유형: {}", + "2ab043e41d8fd10931cfa912b4b11bf8": "[!] OS 유형을 확인할 수 없습니다", + "2d23313d6e3e201771154cf99d5dab34": "컬 또는 wget 설치에 실패했습니다. 수동으로 설치하세요.", + "b44992b4430f7759108e5242176b7871": "[+] 컬 또는 wget이 설치되었습니다.", + "4ba07005cef8f98a0625a7d1eb0a142e": "컬이나 wget이 설치되어 있습니다", + "e3a56811a35322959c535d38d2e91f7e": "[!] 컬이나 wget이 설치되지 않았습니다. 설치하려고 합니다...", + "613a8be93fcd44002e549e0767c85a86": "OS 유형을 감지할 수 없습니다. 컬 또는 wget을 수동으로 설치하십시오.", + "8a4d20948ccc8034e3118af3bb683da3": "aapanel 설치 시작", + "df97b5d4f31c5cd4a3611774abb6de52": "[*] aapanel 설치를 시작합니다...", + "d91a58f92edb4b30de7e5399908922da": "[*] 다음 명령을 사용하여 aapanel 설치: {}", + "f20af8613aed0194f191d660977de57c": "설치 완료", + "4357633f73240ceb1b14d13877a90ac2": "aapanel이 성공적으로 설치되었습니다. 백업 작업을 시작합니다...", + "f109f7ce6f98f5a3cbf2d273c5749911": "[+] 주소: http://{}:{}{}", + "79fca63f99a824fc4015d93604433ea1": "aapanel 설치 실패", + "b1508aec34af599979d919e20b64e385": "설치 진행률: {}", + "7b6725a19c46bc6d47e5a49c5764991f": "[+] 사용자 이름: {}", + "cd3d4cf5a75fd5f9467f6d0f196dbec8": "[+] 비밀번호: {}", + "6703def4d1bfb870f64ca461a7bffc0c": "[*] 백업 디렉터리 생성 중...", + "c550206bc8daea4b287573ee31f839de": "[+] 백업 디렉터리 {}가 생성됨", + "9e3f708636e9ea820d608629fdf47c65": "[!] 백업 디렉터리 {}을(를) 생성하지 못했습니다.", + "9f22d9cb59270cf0f6382a66a63ed8cd": "원격 파일 크기를 가져오지 못했습니다: {}", + "ff490ab3be22afd2f2a06842935eedd3": "백업 파일 {}이(가) 존재하지 않습니다.", + "e69d7c21f42d046b365c56045ffca873": "서버에 백업 파일 {} 업로드 시작", + "df6ecb94c7a5f06b78d0bde168e769e9": "[*] 백업 파일 {}을(를) 서버에 업로드하는 중입니다...", + "217c9c3fec268ff4d6c35bd4d5d564ea": "백업 디렉터리를 생성하지 못했습니다.", + "2942f90ee3b191c0b98add719760e356": "[*] 파일 크기: {:.2f}MB", + "08b57d594c99a8339461fe78ebf95f1a": "파일 업로드 준비 중, 크기: {:.2f}MB", + "2f24607a7361d721459e3a12584fd340": "파일이 이미 완전히 업로드되었습니다. 업로드 단계를 건너뛰는 중입니다.", + "4d57fe7dc3462ad55cc9bb1623a3eb5e": "[*] 불완전한 업로드 파일이 감지되었습니다. 재개하는 중입니다...", + "9c30f21dd1175d2e9b7503e873a52b2f": "[*] 업로드됨: {:.2f}% ({:.2f}MB / {:.2f}MB)", + "04e05f53e1a18a781dbabae6cdd0e495": "불완전한 업로드 파일이 감지되었습니다. {:.2f}MB부터 재개됩니다.", + "426e1c0eadfad630c5433af2757cee8f": "[*] 새로운 업로드를 시작합니다...", + "61eb03fffeb48e199890a5a8a24a5dc9": "새 업로드 시작 중", + "148b2912de8b29f47dc234983554ea2b": "\\r[*] 업로드 진행률: {:.2f}% - {:.2f}KB/s - 남은 시간: {}", + "470e645fe1f07b6d4e77fc7b16b2a9a0": "파일 크기 확인 통과: {:.2f}MB", + "40070e1f0867f97db0fa33039fae2063": "파일이 성공적으로 업로드되었습니다.", + "95dd52c0ce48e72f2021dee1a7a86433": "파일 크기 불일치: 로컬 {:.2f}MB, 원격 {:.2f}MB", + "f7dac1a705d6bd05b3a42086923cf932": "업로드가 중단되었습니다: {}", + "554472ae3f1db37c67fe53e4a2fb53cd": "[*] 중단점 {:.2f}MB에서 재개를 시도합니다({}/{} 시도)...", + "1e6aeb0dc8e2567bdec31246c27233a2": "파일 업로드에 실패했습니다. 최대 재시도 횟수에 도달했습니다.", + "31c53955195484e892d36d1815e2e5cd": "[*] 백업 파일 {} 추출을 시작하는 중...", + "21ec696ab5bc206eac1cf62268824cf0": "[!] 백업 파일 {}이(가) 존재하지 않습니다.", + "e344a18f13f2b196f3b56938c824dd5f": "[!] 백업 파일 이름에서 타임스탬프를 추출할 수 없습니다.", + "d4a81ed03254ca37166d84ccb7de0bd6": "[!] 백업 파일 추출 실패", + "0838e64585e87c91bdfa34890445346e": "[+] 백업 파일이 성공적으로 추출되었습니다. 디렉터리: {}", + "0fddb4bae41a7fc9e2de8896d8cb819f": "백업 복원 시작(타임스탬프: {})", + "5a275e6386d2d3c647f6ccecb422debc": "[*] 백업 복원 시작 중(타임스탬프: {})...", + "e9b7b10566a85a5356096a630d64d2d7": "[*] aapanel 서비스 시작을 기다리는 중...", + "8d7b4f7247dec431d103af1ce34d0233": "복원 모듈이 존재하지 않습니다: {}", + "304e687ee7c78fdae6e70226f61d9708": "추가 복원 작업 실행 중...", + "ac3f9da9a646fe10c989e74b42fe5e8e": "[*] 복원 작업을 실행하는 중...", + "ac6fa0596fbb508fe61e44848548b50c": "복원 명령을 실행하지 못했습니다.", + "846cdc02545d18e4b5308d076aa93e95": "백업이 성공적으로 복원되었습니다.", + "062ca961d059ebd358098ffdb12f42bb": "백업 복원에 실패했습니다. 로그를 확인하세요.", + "f857f6dc6a146a3b125ea3253052ca43": "마이그레이션 작업 시작", + "53779b59d2ae1ff96f4afdfa6bbc6c7f": "컬이나 wget이 설치되어 있는지 확인하세요.", + "39679b63dca413a83cf5b664d46c929b": "컬 또는 wget 검사가 통과되었습니다.", + "0de6a624fa64af38f9a880430e72607e": "aapanel 설치 준비", + "28dbda7cf25735198d7695702b18aad5": "aapanel 설치 중... 약 5분 소요....", + "7a58e7034a9db769af197c85beccafd5": "aapanel 설치가 완료되었습니다. 백업 작업을 시작하는 중입니다...", + "a850af0d3bf3586319178228af5698bf": "이 머신에서 백업 작업 실행 시작", + "28ec7aad1cd6afdbbc35a6aeaa95761a": "로컬 백업이 완료되기를 기다리는 중", + "82550a0ece235f0d0b363135e8d94d28": "백업 작업이 취소되거나 실패했습니다.", + "c8f2865e1e43bb2fd88a0e16f3cd4c17": "백업 작업 시간이 초과되어 지정된 시간 내에 완료되지 않았습니다.", + "4bb768be41853a0aed9f56d5907be1bd": "백업 타임스탬프를 얻었습니다: {}", + "c129e18a625645767772504cf77e279a": "백업 타임스탬프를 읽지 못했습니다.", + "39869251ca57148d747cfd6ee60bf604": "백업 타임스탬프 파일이 존재하지 않습니다.", + "60f1d8c19f5fbb046deac4aab745f63c": "백업 파일이 존재하지 않습니다: {}", + "d67c60b6be8ebfd9f73816a7e8e4abfe": "백업 파일 경로를 읽지 못했습니다.", + "9e6caab47781582f556a81245571d8a7": "로컬 백업 완료: {}", + "b4df9a8cca277b49933dce7c8be7ab20": "로컬 백업 완료", + "6c97fd171b87d3f954040d4dea833cb9": "백업 파일 업로드 준비 중", + "6384458c2647bf7e1af9d942aab00d6d": "백업 파일 업로드 준비 중: {}", + "e2fdcbc1d4e8b1fa77a161c4448a4bf6": "migration_backup_info.json 파일 업로드 준비 중", + "6533c064fee3726a0f1caf89a423fd3b": "migration_backup_info.json 파일을 업로드하는 동안 연결이 끊겼습니다.", + "ffa61675a37203858ec712cc635fcbdb": "migration_backup_info.json 파일이 성공적으로 업로드되었습니다.", + "d192d35fb79e54273bedf84f9ee3d772": "migration_backup_info.json 파일 업로드 실패: {}", + "fdf17802146b46b291164d7c933950c1": "백업 파일이 성공적으로 업로드되었습니다.", + "97dc827b342454de3a5f9416ee1e513b": "백업 파일 {} 추출 준비 중", + "67c40d3544174eb6d6fa63dccaa6bf6e": "복원 백업 작업 추가 준비 중", + "7ec7fd83e38b6d53374f37bd32a3da09": "백업 복원 준비 중(타임스탬프: {})", + "7fd19264d09d2ff33f1f8b5867354fdb": "백업 및 복원 중에 예외가 발생했습니다.", + "ef05e1295515a64356e53d3c11498f25": "복원 백업 작업이 성공적으로 추가되었습니다.", + "f90b7afaee99210e74fa3bc47d4f4918": "모든 마이그레이션 작업이 완료되었습니다.", + "9e5e797901f9870ebf7a96266bc1e972": "마이그레이션 작업이 완료되었습니다.", + "dd2a8fc49fd7c92616c228c8039410c8": "마이그레이션 프로세스 중에 오류가 발생했습니다: {}", + "1a119744a8cc132d708306e1fb90543f": "[*] SSH 연결 정보를 확인하는 중...", + "ef3ae6d88f5637005f063685ad50c625": "[+] SSH 연결 확인 성공", + "66db9584d2d99eeb99a90f5f4c52d944": "SSH 연결 확인 성공", + "a0bc8a00e83b79e42010343c31924dd2": "SSH 연결 확인 실패", + "e871fe05e99da0c88a09686c3b7c88d7": "[*] aapanel 설치 중...", + "1f3ff88a0fdd87e71bf237f3805dccde": "[*] 백업 파일 업로드 중...", + "c0b860cd7155af1e642fd0c41ee29262": "백업 파일 경로가 지정되지 않았습니다.", + "fa1ab4e94bafd1f5b6ea55e3e9dc33a4": "백업 파일 추출 실패", + "d36c2f46c959ee1fb416a947f8e75a47": "백업 복원 실패", + "de6b9cefab1a252ada4463ee8f015f07": "[+] 所有操작품已完成", + "496249e9e1cd99dd54146ed6565fe3f8": "所有操작품已完成", + "20c605607dbf9d6d1d7bb62ddc792ee0": "[!] 执行过程中发生错误: {}", + "4020efc99e8c60a0e7d27a5598d501e4": "执行过程中发生错误: {}", + "55be882ba3aef502f3a93ad90bb9d613": "[*] 백업 명령을 실행하는 중...", + "1a6da8233a4a66ccc90d767967f22d35": "[+] 백업 작업이 성공적으로 추가되었습니다.", + "af3c2b419ba0779d81ac91cd3ca246b6": "[*] 백업 작업이 완료되기를 기다리는 중...", + "c8eb8110632bb540ca112819e96dc770": "[+] 백업 작업 완료: {}", + "0d1135061a5b00b63bdb12c2f3c9461f": "백업 작업이 실패하여 백업 파일이 생성되지 않았습니다.", + "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] 백업 작업 완료(시간 초과 후 파일 감지): {}", + "637452f337bdc2991f23593124d62440": "[!] 백업 작업 시간이 초과되어 지정된 시간 내에 완료되지 않았습니다.", + "ec3a935e2442ef55924ad758e17b92cb": "포장완료", + "ffad0690fefe9ebaaf4d847a42b19f90": "백업 구성 파일이 존재하지 않습니다.", + "40379fed8ad84c0869a1b3e94f8a56fb": "백업 프로세스가 이미 실행 중입니다!", + "20bf8648c4a3ea91ad3057f9aeca5f88": "모든 데이터 압축 및 패키징 시작", + "dc72aa669e82dd5ec7cff2ed35f2762d": "모든 데이터의 압축 및 패키징이 완료되었습니다.데이터 크기: {}", + "bacf615d02bfa3c58728f62490489e9a": "백업이 완료되었습니다.백업 파일: {}", + "ad69c11076734ffc4c0532b54e6f5be3": "클라우드 저장소에 백업 파일 업로드 중...", + "c3a6378e06ff3e479a85b0f15c41cb1e": "{} 청크로 업로드 중...", + "c722636ded0be8237386a427242ff3b2": "{} 업로드 중...", + "bb914d2441ee988dcd4d616350272f10": "{}에 업로드하는 동안 오류가 발생했습니다: {}", + "8085ded0444fcde19b9ea4d365502f67": "백업 정보를 찾을 수 없습니다.", + "b02ab16f5a7d45a871789d3944a41c69": "백업이 완료되었지만 타임스탬프를 검색할 수 없습니다.", + "46f183fbf6bd1e64702d6930667cf117": "백업 완료 정보를 검색하는 중 오류 발생: {}", + "2cb88461938b0c418391af13f65a727d": "백업 프로세스가 실행 중이지만 타임스탬프를 검색할 수 없습니다.", + "269159feb2faab7515c90b9f5de791a5": "백업 구성 파일이 존재하지 않습니다: {}", + "daa55a73708f906c8cee0bb87284740c": "백업 진행 정보를 검색하는 중 오류 발생: {}", + "01ecbbb2b353cf4d915bbe1c1cd5505c": "서버 구성", + "ca3c22c9c94069053b85db0f50373639": "서버 구성 백업 중", + "b16acd08872bef5685bddff85a29f625": "데이터 패키징", + "d41c74fcc2dd04880a0285c147188bf7": "백업 데이터 준비", + "806cb06592627effa1a4073fa2f66ce2": "복원 프로세스가 이미 실행 중입니다!", + "37dfdfda0ab7a98140943484fe70a76c": "데이터 패키지 압축 풀기 시작", + "c415a70c8540eb59121587b3ab5d5cfa": "데이터 복원 시작", + "c76bac64baa6fbf5c51ec144c70d91d3": "데이터 복원 완료", + "da7f5eb715a1a1a2378ee56a5ee24bbd": "데이터 복원 실패: {}", + "ca0af2ce76c89e3bfa4bad3105c21203": "복원이 완료되었지만 복원 타임스탬프를 가져올 수 없습니다.", + "0f4f13d63e87130a24667c6bd4cb5e2e": "복원 구성 파일이 존재하지 않습니다.", + "0c5d25bf5706190b8ad0d8289a93aeba": "복원 완료 정보를 가져오는 중 오류 발생: {}", + "667a68bf7113541f218081fac58f6815": "복원 구성 파일이 존재하지 않습니다: {}", + "e7a91a4400b67b84e7cca61642b93f4d": "복원 진행 정보를 가져오는 중 오류 발생: {}", + "1b4c2c21e77ac36e4097a92dabd55bc0": "알려지지 않은 {}", + "c1173fa3bd3d44530eead89e7edeefe1": "데이터 압축해제", + "a76a19147d36f4f2d6801cf602de2718": "알 수 없는 작업", + "5ba4673aac259be67bac9db8cfc9c5b2": "데이터 복원 준비 중", + "5b43e0e228169e5df9cec81876cd3710": "오류: force 매개변수는 0 또는 1이어야 합니다.", + "4c3880bb027f159e801041b1021e88e8": "방법", + "7d3c180ded4dcc8eade80cd031ab1b5d": "자주 조작하지 마시고 잠시만 기다려주세요.", + "37b15a5d1e4fa625ea8996de5e378a84": "성공적으로 검색되었습니다", + "616e012bcc90980f6ddfd2b3c17345f8": "진행 상황을 가져오지 못했습니다.", + "9e0a136b55af822e72c8d6716d2d4bf3": "알 수 없는 유형", + "6ac0b58e56cefd76e61bc840dfad94fa": "작업이 성공적으로 중지되었습니다.", + "b808472e703dfd53fdcb59fbe89e3436": "성공적으로 실행됨", + "12b65fbe011be723b4ae981c0d42c44d": "복원 작업이 추가되었습니다.", + "741e160bb129a548e26fbad37c8f674d": "SSH 연결 테스트에 실패했습니다. IP와 포트가 올바른지 확인하세요.", + "e0867cf8c8a1935e8bd681f0ff28a612": "SSH 연결이 성공적으로 확인되었습니다.", + "f94e94b4ec479336f36fdf9fe1004b83": "내 마이그레이션 작업", + "b100f6e1c91f013adf0ca5ce6606a89d": "마이그레이션 작업이 추가되었습니다.", + "fd0099266c1971c5c40036e615d67fd4": "성공적으로 마이그레이션되었습니다.", + "87aa2e739755a6fea3a63876b5a1d48e": "성공적으로", + "d7db03701029007097b8e0cd61a983f6": "현재 마이그레이션 작업이 없습니다.", + "808781229f7b019ba6a44ea3871e3b6d": "마이그레이션 작업 실패를 읽었습니다. 나중에 다시 시도하십시오!", + "e728b6a004aa5e61efd25bf815a6e290": "백업 작업 시작 중...", + "c9d48d6a4ebe28917b5439c91faaff68": "aapanel 설치가 완료되었습니다!", + "f5e7895e7c31fedd32b520012910f960": "마이그레이션 작업", + "3a94451860f0c20374128e61e8783d26": "아파넬 설치", + "f02f38d885226197e729453ea104feac": "복원 작업", + "0ba29c6a1afacf586b03a26162c72274": "환경", + "f072f24284b47eaf8adcf88b29021618": "마이그레이션 로그가 존재하지 않습니다.", + "9166b100905c2625ba9df2524f8c2faa": "SSH 연결 테스트 실패: {}", + "3a02e4b05ad1b321e855aa6116699b6e": "이전 알림이 삭제되었습니다.", + "334afd10871f8c52a884e307d2e17ccf": "이전 기록이 삭제되었습니다.", + "2f393a2518f5668880822f47fcdb5cc0": "마이그레이션 기록이 존재하지 않습니다.", + "df4bb29cbb7fe7e3dbc82e961d5b5b53": "데이터 준비", + "2b2a2a0b0596507029dd0feb9485a216": "진행 중인 작업이 없습니다.확인해주세요", + "69d45b5b241dac0fa1efaf7b6966520b": "SSL 인증서 정보 백업 시작", + "835601ead78ba62b89c4b27956645362": "{} {} 인증서 파일이 존재하지 않습니다 ✗", + "025de5f8c791241d326ec4e086e9898e": "{} [{}] 인증서가 만료되었습니다 ✗", + "ecd204c03ea44719e6fa4ea25569266a": "{} {} ✓", + "aa6b67db23e9cb0b943aa6c0def92cb4": "{} {} 백업 실패: {} ✗", + "ec56d7aedc9c5242d094ebbaeda5047e": "DNS API 제공업체 정보 백업 완료", + "b561b1ca5fd89d639144a099f5fe096d": "SSL 인증서 정보 백업 완료", + "7aa422d849ba11b569187382a3a509d1": "인증서 {}에 대한 배포 사이트를 복원하는 중...", + "4573d024bbb8e1f8c8efb2582a6a01c0": "인증서 {}에 대해 복원된 배포 사이트: {}", + "baa339aa8e95d46851fd48574cb1d902": "인증서 {}에 대한 배포 사서함을 복원하는 중...", + "9307ae55fb4a7b878e377790e040eec4": "인증서 {}에 대한 배포 사서함이 복원되었습니다: {}", + "b057e2d52c20f76bf3c788eb9b4873fa": "인증서 {}의 배포 패널을 복원하는 중...", + "41596c0d36a66c44434d5882c3cfa793": "인증서 {}에 대한 배포 패널이 복원되었습니다: {}", + "6ffcb0a3e8cdf728b3e7bc45ae221e5a": "인증서 삽입에 실패했습니다. 로그를 확인하세요.", + "c8a71420e709d8a4d02914a78d9a0e06": "도메인 SSL 인증서 구성 복원 시작", + "0672a3dc402dc9657fd0a0f1580d1c12": "복원 데이터가 없습니다.", + "52f23f668fced51c3e25c781299fbff8": "백업 디렉터리 {}이(가) 존재하지 않아 SSL 인증서 정보를 복원할 수 없습니다.", + "ad93ef11d3e4238618571f517e11e80d": "{} 제목 복원 중: {}", + "c49480308ee71202cc5fff5ea96eaaed": "인증서 파일이 존재하지 않습니다", + "42db220bc931b97aecdef6b6f0362bc4": "인증서 또는 개인 키 파일이 누락되었습니다.", + "9f88b7ffec183a54f2e7e6136b4f5ac7": "SSL 인증서 정보 복원 완료", + "5e211e4fb46748c1d243b59a15645df7": "백업 예약 작업 시작", + "a9d58d413bd48f1bd7e8041b6d8ceab0": "Crontab 작업 {} ✓", + "ff0550fa0270ac20419790a51900d815": "백업 Crontab 작업 완료", + "a7609aefd5330a1384704e73dc0b4dc0": "Crontab 작업 복원 시작", + "48ed083561c2f201d9fe52f6a35ee982": "Crontab 작업 완료", + "e9ed6b2a27deb5699565f0441dc713e9": "소프트웨어 정보 백업 시작", + "e690c7866c5dbacbbc7860af5e6a3af1": "소프트웨어 정보 백업 완료", + "cabf299a6cfa5874e23582c535f301c6": "nginx 설치 시작-{}", + "33ec71107108ed89c0b526d5473526c8": "아파치 서비스 설치 시작", + "b815f2a7e299ea99d41d665c728756d9": "웹서버 설치 완료", + "70510d59e30015790f07ca53c80c5bec": "PHP-{} 설치 시작", + "2de6c0aa3c26285104f898b368bcf287": "노드 설치 시작-{}", + "7d5cf115afd8be7c2a36d03b31d1ce44": "mariadb-{} 설치 시작", + "92e77c2b107f440d6d54062228112f73": "mysql-{} 설치 시작", + "4b09abb2edd44a4510395a297a2ff155": "mongodb-{} 설치 시작", + "69fa45968c5cc7a9115bff54e70c95c1": "memcached 설치 시작-{}", + "fbabb869ff01746bd144289622b277fc": "redis 설치 시작-{}", + "da7d69765f1876fba52c21a17e8c74c6": "postgresql-{} 설치 시작", + "99782b6a478e499d45a91f9d78e1c73a": "phpmyadmin-{} 설치 시작", + "640c4e334dc9587e212d36e685059478": "FTP 설치 시작-{}", + "aecfeaaa9e3bcff1f6169598772e90c0": "패널 실행 환경 복원 시작", + "3b83e3fdb17c70ca190e263e0bd7173e": "동일한 환경이 존재하는 경우 설치를 건너뜁니다.", + "d4e8a75d522d3e77ae80eadd49b0865e": "원격 데이터베이스 목록이 비어 있습니다.", + "5d806f11bb91996cafe7836b27a4e770": "Redis 연결 예외!", + "1d69261c05f6ce03d2cab5528d443fa7": "데이터베이스 데이터 백업 시작", + "0cf1803cfdfda6f67d12fa7e1c4a25a7": "백업 {}원격{}데이터베이스", + "32d68be800692faddb12c5252fded05e": "{}원격 {} 데이터베이스 정보 ✓", + "0c64283397c43effb13a2cbe818ce929": "데이터베이스 데이터 백업 완료", + "2f7d7cfc04be64fa087e964d41cb26b4": "SQLite 데이터베이스 목록 복원 시작", + "a1248c409fec22277ab13a6bb433188e": "SQLite 데이터베이스 목록 백업 파일이 존재하지 않습니다. 복원을 건너뛰는 중입니다.", + "d03ebecb5f420070192de8712926151a": "SQLite 데이터베이스 목록 복원 완료", + "ad6937d61b4d6e93a13f03308c66f2eb": "Mongodb 서비스가 실행되고 있지 않습니다!", + "f60644c6526c4d9afe5b20db75fc2e5b": "데이터베이스 백업이 실패했습니다. 내보내기 디렉터리가 존재하지 않습니다!", + "161bb420493657920405937a2cf42c96": "백업 압축에 실패했습니다!", + "20a42330f9241c13c91e3e203449a8a6": "백업 도구가 부족합니다. 먼저 소프트웨어 스토어를 통해 pgsql 관리자를 설치하세요!", + "7eff7c4aeb6bfe736f8a78c0096f92c7": "먼저 관리자 비밀번호를 설정해주세요!", + "6e907b499869ab16105a7aba198e13a7": "데이터베이스 비밀번호가 비어 있습니다!먼저 데이터베이스 비밀번호를 설정해주세요!", + "d8a3336243e1c08e8a29c75af1eb528c": "MySQL 초기화에 성공했습니다!", + "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL이 다시 시작됩니다. 잠시 기다려 주십시오.", + "73af95fd2322196e0d9792df4ca1f566": "MongoDB 초기화에 성공했습니다!", + "8c9718f3235e7c36c9f400bc68db1ef5": "MongoDB 설정 인증에 실패했습니다!오류: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "PostgreSQL 초기화에 성공했습니다!", + "c46866b7bc29cf9d478835bda10e43ce": "Redis 초기화에 성공했습니다!", + "4e889bbbfc5e25ebf611e5764b8a358c": "데이터베이스 복원 시작", + "c9206e74b8d32e1e0a5710c0fe322cee": "{} 데이터베이스 {} 복원 중", + "ecea29915732c5d0001ece74601f3d20": "{} 데이터베이스 {} ✓", + "b61a878149263a02fa99cc635409ee25": "{} 데이터베이스 {} ✗ ({})", + "3fa7c5a9beafa67bb44999cab5cff52c": "{} 데이터베이스를 복원하지 못했습니다. {} 이유: {}", + "e89775cca910deb5e484f631606cceb1": "데이터베이스 데이터 복구 완료", + "9750547146e22f364299bc5f561a3fb6": "원격 데이터베이스 복원 시작", + "23f2db47eb6ff16785e5a222c8657f93": "원격 데이터베이스 복원 완료", + "b17f6f187c4ecfd392c6367ec2ba6498": "{} 백업 ID가 존재하지 않아 가져오기가 종료되었습니다.", + "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} 데이터베이스 ID가 존재하지 않습니다. 데이터 복구가 종료되었습니다.", + "611881e9f5d01b22a447c282aa8aca23": "MySQL 데이터베이스 {}가 이미 존재합니다.", + "ea31cbc6134300ca816c913d227b605f": "{} 데이터베이스를 생성하지 못했습니다.이유: {}", + "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "데이터베이스가 이미 존재합니다. SQL 복원을 건너뛰는 중입니다.", + "556843e4a406b780b0cf83c43366a8dd": "가져오기 성공", + "af71c2c0e3813c9a77fe48507ea8e4d1": "MongoDB 데이터베이스 {}가 이미 존재합니다.", + "84b4d8c8cdd02488c0f868e97b22a3c2": "생성 성공", + "10aec3a9e9564a9851c117b259245136": "데이터베이스가 이미 존재합니다. 데이터 복원을 건너뛰는 중입니다.", + "b819d4259ca3ab0042562acea69e83e1": "PostgreSQL 데이터베이스 {}가 이미 존재합니다.", + "31b21eca2e62de420cf05e8135089114": "백업 파일이 존재하지 않습니다!", + "3eed4851380704f25eec3921befde38f": "복원 성공", + "cbea0a592d6a3c48f2418d687cf54200": "터미널 데이터 백업 시작", + "e7e06b2dd59401dcf79acf2e3124d2fb": "터미널 데이터 백업이 완료되었습니다.데이터 크기: {}", + "a273d4d4d0cf13abc1d7a4f96b8c851e": "터미널 데이터 복원 시작", + "1a15a2b43f1dd92e836a592fb180843d": "복원에 실패했습니다. 파일이 존재하지 않습니다.", + "95d831166994e434da49f3ed70b73e8e": "단말기 데이터 복구 완료", + "e3a04ee4c0a034510866948e571c7966": "방화벽 데이터 백업 시작", + "9a176a20c15e3dc096ed8bc5a05182ba": "방화벽 포트 규칙 ✓", + "ce693968cbf6e5f66af91e3dd2317d78": "방화벽 IP 규칙 ✓", + "7ebd5e6b35357be0d5079f674f68ed8f": "방화벽 전달 규칙 ✓", + "8dfa78d85bb1d152b0cafe398b27e1ae": "방화벽 지역 규칙 ✓", + "927bb2298acc2c29d1beaff4d1656371": "방화벽 데이터 백업 완료", + "d076d2dde53272dc55d47f34a465ebef": "방화벽 데이터 초기화 중", + "3e0b3a3e90cc4a1f5abbf3fd1a38c2b7": "설치되었습니다.", + "d1b0c3d7a1b5f80626ec1a2395b4f990": "방화벽 데이터 복원 시작", + "1f35b1eac1045718a64b4133a8e8829b": "방화벽 포트 규칙 복원 시작", + "a168f915263109733b87807a0db41e01": "방화벽 포트 규칙이 성공적으로 복원되었습니다. ✓", + "ce04afdfe07dead0b0fb34e6bc00b6e5": "방화벽 포트 규칙을 복원하지 못했습니다.", + "c32b29f59e8b553998c75c5d7bc44dc6": "방화벽 IP 규칙 복원 시작", + "b68673b625a1d48b3953e37bb39fcbab": "방화벽 IP 규칙이 성공적으로 복원되었습니다. ✓", + "ee0294aac018e0ab5f4e5e020f8d867c": "방화벽 IP 규칙을 복원하지 못했습니다.", + "326c03834ea4914dbb02cf04e0c0164f": "방화벽 전달 규칙 복원 시작", + "b077ba90ec76f05d0e541733e8291e3f": "방화벽 전달 규칙이 성공적으로 복원되었습니다. ✓", + "5ed68fe9a3e0530485018c0704d91035": "방화벽 전달 규칙을 복원하지 못했습니다.", + "03f3f31fd240913a083a78fc2d60f6f8": "방화벽 지역 규칙 복원 시작", + "6f9922502feac3b7e6ede129664e3e18": "방화벽 지역 규칙이 성공적으로 복원되었습니다. ✓", + "771b376bf4473fc2f1cea6958de2afeb": "방화벽 지역 규칙을 복원하지 못했습니다.", + "6331b46ffa70ff97b558022d5ae8098a": "방화벽 다시 시작 시작", + "1bb2a65f17d7e3c685f36f7ff1794338": "방화벽 재시작 완료", + "246f6edb1d9df9b3abe78fc810876c28": "방화벽 데이터 복원 실패: {}", + "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "사이트 데이터 백업 시작", + "c886466d255b20be0dbde7f1b44b7f20": "{} 프로젝트 백업 중: {}", + "7ecf25c18499d663d2e636d0a99f73a3": "{} 프로젝트 {} ✓ ({})", + "0fc5eeb9bebed19653578a5df99d3e6e": "사이트 데이터 백업 완료", + "9a2e8778b2a816fedb9f83afadcc2341": "사이트 Python 종속성을 복원하는 중입니다...", + "fd16d36423b43735556724e0395e8f91": "사이트 Python 종속성 복원이 완료되었습니다.", + "bbf57ca8231bce958a3e528a08491874": "사이트 데이터베이스 삽입 실패: {}", + "389f018ba17dc25cb23a5300d8f630db": "사이트 백업 디렉터리가 존재하지 않습니다: {}", + "21654e03b247d5e25abaa0ad542883c0": "사이트 데이터 복원 시작", + "c8cecd19f4f4a680a5879f828d1c5578": "{} 프로젝트 복원 중: {}", + "35850d3654332477522ee06c756a3c85": "소스 사이트 디렉터리를 삭제하지 못했습니다: {}", + "c88b730f7a6a312159272ce532947de2": "{} 프로젝트: {} ✓", + "24ee51964e4ece856493ca28fdb075ed": "사이트 데이터 복원 완료", + "483829cb5ae13bb190eb59acdf4f3231": "메일 서버 데이터 백업 시작", + "8c7a0774ab14bae83a69b8562102fb0a": "메일서버 데이터 백업이 완료되었습니다.데이터 크기: {}", + "e8480272035737a247832288f618c270": "메일 서버 데이터 복원 시작", + "e058c7e1fd9cd1a4fd7ac7240a7765d2": "복원에 실패했습니다. 파일이 존재하지 않습니다.", + "6e6e9dcfdf7bd846ab85a4ff0e0e2f95": "메일서버 데이터 복구 완료", + "1502c42b339a3dfe20e4c95186b38dc3": "FTP 계정 정보 백업 시작", + "b5cf2f2c48fb5978825d3341759dd6d6": "{} 사용자 ✓", + "120446d8a303de2396a1bb62ba8e8755": "FTP 계정 정보를 백업하지 못했습니다: {}", + "b18010e000c073a3587a89b2931c2770": "FTP 계정정보 백업 완료", + "c9073077bfd7adb73cbe253177b08833": "{} 계정 복원 중", + "c5df3d6bec6157b48fb24bf8fe2a2add": "FTP 생성 실패: {}", + "f3f8d4ba630fa6a7de1e9f4e34bad5dc": "{} 계정 ✓", + "af4ff8fd3803d5496f74604eb1665e81": "FTP 계정 구성 복원 시작", + "2bf94c9147c8220fc83f955175216c40": "ftp: [{}] 계정이 성공적으로 복원되었습니다 ✓", + "9417f3027d6326176c986ffeee1f4491": "FTP 계정 구성을 복원하지 못했습니다: {}", + "8ed95b2c3c38acf7e9532a582f08bb86": "FTP 계정 구성 복원 완료", + "49237b104331e8724e521b2fe6fdf6d8": "플러그인 데이터 백업 시작", + "26d785a1a32377e0e0e9498f4a7da12e": "Nginx 방화벽 ✓ ({})", + "7f578816e3867140ee56ccbbc1d69f55": "웹사이트 모니터링 보고서 ✓ ({})", + "ff083aca075c6543c2999781b6677c19": "기업 변조 방지 ✓ ({})", + "2f29dad748ac1d8d50481ecbd7e05091": "시스템 강화 ✓ ({})", + "79bb9b38c599612b8b8f38ddc50f5c25": "플러그인 데이터 복원 시작", + "ee84e47223f5ce39b8bb239376db4af3": "마이그레이션된 시스템이 aapanel 사용자에게 바인딩되지 않고 Professional 버전으로 업그레이드된 경우 플러그인 복원 실패가 발생할 수 있습니다.", + "30560687e27ef30b6f1cde26359eea6c": "Nginx 방화벽 설치 시작", + "a776b4ccf7343a25223817c8597ca7cf": "Nginx 방화벽 ✓", + "d0c97e94eb5061783de7bbad8e7bd295": "Nginx 방화벽 데이터 복원 시작", + "0010c09bd9f322c3b88a89dd0b52c831": "Nginx 방화벽 데이터 ✓", + "427ad80bf462a92719fcff5c1a1be755": "Nginx 방화벽 ✗", + "29ad27f749c3f913779d432115de597f": "웹사이트 모니터링 보고서 설치 시작", + "66f3f8adc854963e94a643b706157309": "웹사이트 모니터링 보고서 ✓", + "a0dded50b067929299258b3c8fc1b0e6": "웹사이트 모니터링 보고서 데이터 복원 시작", + "bd43add14ebbd0f448c207c48e1d5ac8": "웹사이트 모니터링 보고서 데이터 ✓", + "a7b8bc831a9b36cc5127b5f8ecbec22a": "웹사이트 모니터링 보고서 ✗", + "c922c95c5f7973050d08412a26aab462": "엔터프라이즈 변조 방지 설치 시작", + "31d844f4dd95b8a71e8ddbd1b9912ae5": "기업 변조 방지 ✓", + "8fcd5da199e1e04830a686a576a2e914": "엔터프라이즈 변조 방지 데이터 복원 시작", + "941b78173e944c6737a858bada098311": "기업 변조 방지 데이터 ✓", + "50bcd3813a4b18663b0bdc29f73b8c90": "기업 변조 방지 ✗", + "cdcfb9e176572fe14bdc4c88474d8baf": "시스템 강화 설치 시작", + "4d86b9c9f554fa3d477a86d2f62aaa1b": "시스템 강화 ✓", + "5633c4d754985da6c7fab116964ac501": "시스템 강화 데이터 복원 시작", + "bda583fc184a8e079a37e169a9614e10": "시스템 강화 데이터 ✓", + "479557cf249b3145d91a94ed130c5ecb": "시스템 강화 ✗", + "746e85b89c25244ae397c06029badc9c": "플러그인 데이터 복원 완료", + "b1bcc839644a9a611f9d8e2e1f63e0d0": "파일 이름이 너무 깁니다(255바이트 초과).", + "29886cc45dfd7d6c3177d4a6ccfaae94": "전체 경로가 너무 깁니다(4096바이트 초과).", + "a3b7d5cfd749d2f8c5af2a8f45f002ea": "파일 경로를 확인하지 못했습니다: {}", + "8e6595abbb40f247c74fffdf61bd5a00": "설정 실패!다시 로그인해 보세요.", + "a499f309ac7a223d611d7a0a85900342": "재부팅 기록을 찾을 수 없습니다.", + "d23fb11ea541cd5f1c0b05851d54fd58": "읽음으로 표시되었습니다.", + "1983b37067c7e94095a5113786fdef9c": "편집에 실패했습니다. Docker 연결 시간이 초과되었습니다. Docker를 다시 시작한 후 다시 시도하세요!", + "9e90efb62702b147b71e8731290caf44": "이미지 [{}]가 존재하지 않습니다. [Force pull image]를 확인하고 다시 시도하세요!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "새 컨테이너가 성공적으로 생성되지 않았으며 이전 컨테이너가 복원되었습니다.{}", + "1f004e412319b7ed472624e011b3d2ba": "업데이트가 완료되었습니다.", + "a2ea046c20d2da5cebf2dea01a62dabe": "업데이트에 실패했습니다!컨테이너 상태가 복원되었습니다.", + "f9a48b804d917398e795016687f3b0f4": "시도하기 전에 [기업용 변조 방지]를 끄십시오!", + "ca1bc3e1d32b99b90395da47b88576a9": "매개변수 오류입니다. ws_callback을 전달하십시오!", + "b4770fb21a608a5ba1ecacae409093d0": "매개변수 오류입니다. 전달해 주세요: _ws!", + "6c3e5d603d8845422e861fb0b4eed350": "그렇지 않은 구성 항목", + "f324009782d2d9e73d1087884ebc2c4c": "Docker 루트는 비워둘 수 없습니다!", + "538960e1336f919e37a0d2c024c56830": "현재 Docker 루트 디렉터리는 대상 디렉터리이므로 변경할 필요가 없습니다!", + "a848bbd79221dfdce1c9dca536dbfada": "프록시 설정의 JSON 형식이 잘못되었습니다!", + "edf6eb680187066c4dea216b3b20d6d2": "프록시 설정이 완료되었습니다!", + "b01f9411136207ad7df28b9bf2387e2a": "업그레이드 실패!실패 이유:{}", + "da896b628e3ded58445e4b015320f327": "다음 이유로 인해 오버로드가 실패합니다.{}", + "efb869976990f78b3d6fcbaf270e3323": "새로고침에 성공했습니다.", + "1b3b50aa7886ea66845ced2c18cbf6b1": "전역 프로필 오버로드 실패:{}", + "75bbb7a00c3b5b510913952fe089f52a": "매개변수가 잘못되었습니다. 경로 매개변수입니다!", + "273609d18876f5f9e3f021032e5b57a3": "설정에 실패했습니다.", + "0720c6c4f478b3a374b4a438f7cf80ad": "이미지를 가져오지 못했습니다. docker 연결 시간이 초과되었습니다. docker를 다시 시작한 후 다시 시도해 보세요!", + "22cc0388137842df9649b3bbcff345e8": "이미지 가져오기에 실패하고 임시 컨테이너 디렉터리가 생성되지 않은 경우 보호 소프트웨어에 차단 기록이 있는지 확인하세요.", + "0568e5e8aa7c811dd420c818189a0d46": "초 전", + "53c53a79f864561f8b6886b3dde7cd51": "몇 분 전", + "f329a0dab82282e50e3aea9260e95d53": "몇 시간 전", + "7a1af30a5ce889031cbc2472766159e3": "며칠 전", + "558a41d55884223583b3542e802d2b64": "미러 이름은 비워둘 수 없습니다!", + "0e8623af4dd4d3b732904872d22fbf83": "네트워크 이름은 비워둘 수 없습니다!", + "5aa2044b58e63d58ddecc69421802404": "게이트웨이는 다음을 수행할 수 있습니다.", + "ceaa20eefd6749452a947c7f5dfa4eb0": "IP 범위는 비워둘 수 없습니다.", + "c3e2cce9a4a1b26f46f462f34ae391b9": "네트워크 생성에 실패했습니다!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "네트워크 이름: [{}]이(가) 이미 존재합니다!", + "9cdc09516d85ae057d1d9bedc988849e": "네트워크를 성공적으로 만들었습니다!", + "7d643f192968be3f8a54be28592e9176": "이미지 스캔 실패:{}", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "컨테이너 및 앱 유형만 지원됩니다.", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "{}을 적용하기 위한 버전 {}이(가) 존재하지 않습니다.", + "a5c1e82e4d1142b8c7e0bc1499446181": "Git 주소가 설정되지 않았습니다.", + "4e24bbe093c9dfb90092a0f4e71733dc": "지점 이름이 설정되지 않았습니다.", + "b3c02fc58b92f549f529992c8a696a66": "zip 파일 경로가 설정되지 않았습니다.", + "eecf07d92b354565df633b06401206a1": "파일 경로를 선택해주세요", + "795d1693702d930f7fc18edfb0f1c0d3": "MCP 서버 구성이 잘못되었습니다.", + "a16d1dbe265c57e0417ae396c3c30043": "서비스를 찾을 수 없습니다. [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] 이미지를 찾을 수 없습니다.", + "4de8e45b499205551f4a09fd074e5246": "매개변수가 누락되었습니다.ID", + "02e85c0a0fa01fabdb5426af13e87853": "매개변수가 누락되었습니다.앱 이름", + "d910ee67a0875a17b6e663f9e19369a4": "이 앱 링크는 지원되지 않습니다!", + "32d030406e8d755a59468a50bd385b22": "컨테이너를 가져오지 못했습니다.", + "c8e0f1ed3c37b015ee446297591d172f": "매개변수가 누락되었습니다.앱_이름", + "dad9445733497150b5f2cd29a5aed506": "앱 이름이 합법적이지 않습니다. 불법 문자를 포함하지 마세요!", + "a04daa98db618d6c2a19aeed5af39448": "지정된 앱에 대한 docker-compose.yml 파일을 찾을 수 없습니다!", + "74fd3ba5b92aa59e471161d2a585a93c": "model_name 매개변수는 null일 수 없습니다.", + "760a1226f2ba701b04963681ab97d575": "model_version 매개변수는 null일 수 없습니다.", + "2a88d88050ddcc0e28f0da4576be2232": "service_name 매개변수는 null일 수 없습니다.", + "fd0f83d70400b1dd9f6ae9c093638411": "컨테이너 정보를 가져오지 못했습니다. docker-compose 실행이 예외입니다!", + "2aec223006d3894d3c1a48bca642c141": "모델을 다운로드하는 중입니다. 나중에 로그를 확인하세요.", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "모델 삭제 실패, docker-compose 실행 예외!", + "d75a01e0d2c0cb8dad89216653024903": "모델이 삭제되었습니다.", + "f0501638237d7e8f934ec55ac3ffb20f": "설치에 실패하면 네트워크를 확인하거나 수동으로 git을 설치하세요.", + "608113c9694987fa65b22ecb164aee59": "환경이 성공적으로 설치되었습니다.", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "apphub 디렉터리가 존재하지 않습니다.", + "7ec67f9826a24ca4a930a6e168ee9611": "해결이 성공했습니다", + "af2c4fa868813e47b80859a0b36e00f4": "GIT 정보가 성공적으로 구성되었습니다.", + "2b038e106d4ca5c11b787e16c73253ef": "당신이 돈", + "12d1b3062be6f8bb374511323c349ed7": "먼저 Git 정보를 설정해주세요.", + "798cd5a257af539ecfe6bb44f45ee788": "Git에서 가져오기 실패", + "8170f5d37a617dcbf16fe8dd414073dc": "Git에서 가져오기 성공", + "6e40e5a8ad741ca4bd714fa52ef32333": "파일 형식이 잘못되었습니다. zip 또는 gz 파일을 선택하세요.", + "c4996991c50032c9b296c11da356acb2": "가져오기 실패:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "가져오기 성공" } \ No newline at end of file diff --git a/BTPanel/languages/all/pt.json b/BTPanel/languages/all/pt.json index 00672f20..ddf651ce 100644 --- a/BTPanel/languages/all/pt.json +++ b/BTPanel/languages/all/pt.json @@ -3884,5 +3884,184 @@ "c8cecd19f4f4a680a5879f828d1c5578": "Restauração {} Projeto: {}", "35850d3654332477522ee06c756a3c85": "Falha ao excluir o diretório do site de origem: {}", "c88b730f7a6a312159272ce532947de2": "{} Projeto: {} ✓", - "24ee51964e4ece856493ca28fdb075ed": "Restauração de dados do site concluída" + "24ee51964e4ece856493ca28fdb075ed": "Restauração de dados do site concluída", + "7d7014331b485392e1d6055aad5c26cd": "Não foi encontrado o arquivo de configuração SSL do nginx phpmyadmin, tente fechar as configurações da porta SSL antes de abrir", + "bedfc521aa92e68b04430d33289c6b3c": "Na hospedagem Multi-WebServer, apenas as versões nginx 1.24 e superiores são suportadas!", + "94e431cde2ffda2ef08526fa2af1b0b5": "Definir ativo com sucesso!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "Falha na configuração do recurso {}", + "36856cc0aff5e4d792ab1919ec9e24f9": "Banco de dados de backup [{}] bem-sucedido!", + "cd338377817d5286c26f62c0562ebe72": "Banco de dados importado com sucesso [{}]", + "de5ac4bddf9b72b649c0cbd4243f76c6": "tente novamente depois de alguns segundos... aguarde...", + "6905a88552caae6df77f56bd19f6d76a": "As configurações da tarefa Cron permanecem locais.O backup local é mantido.", + "63701b3fa795bcd399aab5d489f8eae9": "As configurações da tarefa Cron não são mantidas locais.O backup local não é retido.", + "837cc24a222df21e74245f4cfac6ad09": "Configuração do usuário para don", + "472f0ed974a6a2aec9b70fe7d39b27ee": "O MongoDB habilitou a autenticação de segurança.", + "4675bfcf662ee236a05dcb763cf9d520": "A configuração do cache do Apache falhou.Verifique se o site está funcionando corretamente!", + "0b9aca52d360d6f7a8f2c5c897c93005": "As configurações de cache do Apache foram bem-sucedidas!", + "a2cd28fcd32e92be995b2335768fdea3": "Atualmente, o cache Apache é suportado apenas em hospedagem multi-webserver", + "b288b8637582cc38c1d4c902ed03cbec": "A instalação do plugin de cache falhou", + "aebabb72ad41fbe46f73abcc9dc00b9f": "O plugin de cache não foi ativado.Por favor, tente ativá-lo manualmente e depois habilitar o cache", + "3981bd44ca3f1d5abafc6b15ba8c7435": "As configurações de cache do OLS foram bem-sucedidas!", + "3777f748e5535e7e38261b2e0afc8274": "Falha na configuração do cache OLS: {}", + "8e342838d5cf3a93e34956c9550db4d0": "Falha na implantação: {}", + "152b976545ff1ee50e0de21da7af1266": "A verificação está em andamento.....", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "Verificação de parâmetros", + "80f9a0a476836be5fdec10fe414e88a9": "{} O site está sendo criado....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "Criar site", + "8a9535f05c52e58f46e3237b9da019cc": "Adicione configurações opcionais: banco de dados, FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "Adicione configurações opcionais", + "2a5e8b7e4116ee81db89ba173f60bf90": "Falha na verificação do parâmetro", + "2f35a151cc0256f0d9ad5410eccbe5d0": "Falha na verificação do parâmetro: {}", + "af2a8e2174ea327f9fbf77d84029d58b": "Verificação de parâmetro bem-sucedida", + "181fc26e7b655ba36b3b075ca1ebc350": "Falha ao criar o site", + "7118aff13541bf3d74a9c47fb458e102": "Falha ao criar o site: {}", + "be33773093fc2e135ba4bc26f4bb5509": "O site foi criado com sucesso", + "8d823a9933eefd02bf1003481f816f64": "Fracassado: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "Inicialização bem sucedida!", + "31b88b436695f7e0bc5dad1cb8999737": "Não utilize as portas do serviço do painel!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "A porta está ocupada ou o intervalo de portas está incorreto!Deve estar entre 100 e 65535", + "7dde7f2ae7cb4ed56b1b683b479ad303": "Aviso: a versão do {} ainda não foi instalada,", + "839067817c5a1e7fcce2f905284d630e": "A reescrita do diretório de origem e a reescrita do diretório de destino devem ser preenchidas ao mesmo tempo", + "4b6ad864ce62dac8466dde7ec62e7ea9": "Reescrever o diretório de origem e reescrever o diretório de destino não podem ser iguais", + "ed6fe3e47d3686c7af83b67535b426b5": "O diretório de origem da reescrita deve começar com /", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "A reescrita do diretório de destino deve começar com /", + "87a9a388a3ef42018ceb866756c4ee39": "Falha na conexão com o banco de dados, verifique o status do banco de dados!", + "a75c113f53d4342010d140325fa29eec": "O multisserviço do site foi habilitado.", + "b0a517b4d596e5fc1351f8dc12e73a74": "Selecione o serviço retido", + "7e953c855b391ac0716a4eeb47c5c5c3": "Ative vários serviços primeiro", + "55d523aa501b0e7e93e172a9e6829a8a": "Erro ao obter informações da versão do nginx", + "08f18bb6c6293307f68d5f822ed7dbe1": "Atualmente, openresty não é suportado", + "45020a62e40bbb43f6e05c62ad50288e": "Já existe uma tarefa de instalação.Aguarde a conclusão primeiro!", + "4052df86d5a8dd12943cc8b1d53162e4": "Falha na instalação do serviço.Por favor, tente novamente!", + "8033c09e6fedf841205b29b57c0ae0d1": "Falha na inicialização do serviço: {}", + "442d02a722dc331f8b85d328fb99a174": "O modo multisserviço foi ativado com sucesso", + "a0b289e4caa220dcd62692401d5083f5": "Falha ao desinstalar o serviço {}.Por favor, tente novamente!", + "0045406cf97cbdca708c795aa9554145": "O serviço {} não foi reiniciado.Tente reiniciar manualmente ou verifique o arquivo de configuração.", + "52cd203105425f66daf42d81f05c540f": "O modo multisserviço foi desativado com sucesso", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "A reinicialização do serviço falhou.Por favor, verifique o arquivo de configuração do apache!", + "a949ed64edc73a99f9f9c801a84b6390": "O tipo de serviço especificado não existe", + "408f206d494c5f26144f7492315dfa21": "Ocorreu um erro ao alternar serviços em lotes!", + "e9fd26be1a67520e66f2e99d61977c32": "O ID do site não existe", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "O serviço de site atual já é {}", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "A modificação da configuração falhou.", + "98e762d03fc5ffcb381010aff10c7bde": "Mudança para {} com sucesso", + "293f667205bd8aa91c72f966c03c3de5": "O tipo de serviço do site obtido está incorreto", + "8562d96fc303411ee017a30b83d75712": "Reparado com sucesso", + "d9d76120c8c13b40d2e8e49b0d6117da": "Ocorreu um erro no multisserviço e o reparo falhou.Tente fechar o multisserviço e reabri-lo!:{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "O arquivo de configuração não existe", + "c8622023712105e9e7328396976a2667": "O arquivo de configuração de backup não existe: {}", + "12572c9827392d4bd4c028881ed06242": "Existem conflitos globais de proxy ou reescrita de URL no site.Exclua-o e tente novamente!", + "92bce01ab77d0d50efec1d424cab583b": "Este site possui um proxy reverso.Exclua-o e tente novamente!", + "30c74a0981da2edec86936cd288479f7": "O site configurou um proxy reverso global.Por favor cancele primeiro!", + "c3fe8f7adf26d613d9593acede34303b": "O site está configurado com ligação de nome de domínio de subdiretório.Por favor cancele primeiro!", + "84e9feba40d0aed963505e503cf821e3": "Falha na atualização...", + "2a6bb1bdd798217656edecf672b6df3c": "Erro de verificação Http01, mas site não encontrado.", + "962682f10423a33a75f4b1277b3690c9": "Erro de verificação Http01, mas o site não está em execução", + "90299d1fb53fdf7a570db71a1b61c127": "Por favor, defina primeiro a senha do PgSQL Root!", + "72bfbe1d7dd57250382b570043041e82": "Adicionar falha: {}", + "45da541afaa00457a2f4617a1dd4855f": "A exclusão do banco de dados de nomes de administrador é proibida devido às restrições do Mongodb!", + "d2c7790b1f776ce6ad06426b03fa71b1": "A senha de login local está vazia, defina primeiro a senha do banco de dados!", + "f9be861aad3eda81843c7797487da8e9": "O status atual de segurança do sistema é bom e não há vulnerabilidades ou riscos óbvios", + "890e24b14414e3da9bc2ad63d6d0befb": "Existem certos riscos de segurança no sistema e algumas configurações ou políticas precisam ser melhoradas", + "951c23a91dfe39b5ea5d00405b4dc2c5": "O sistema tem vulnerabilidades de segurança óbvias, corrija-as a tempo", + "de36cae19b2a65a45cb4dfccb435530b": "O sistema está em um estado de alto risco, repare os itens de risco relevantes o mais rápido possível", + "ca6977d373320a7fdb51047199d4cc59": "O administrador não está instalado!", + "38641e6ce3a6369e108eb595672c8edc": "Desinstale com sucesso!", + "9cae26284a7ad2f46132c1e8e196d089": "Instale com sucesso!", + "a9a92e55770213c8aa1fb2871dc43563": "Configure a porta Adminer com sucesso!", + "2321763bf0b4cbf345b1e19dc9faec47": "Defina a versão do Adminer php com sucesso!", + "40a1f70c155550ad2dafa5e556e10c3c": "A versão do PHP não instala!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path é o diretório raiz, não é possível fechar Mostrar caminho do proxy!", + "087b165a5f0bd5a04f2ce4be7dca14dd": "Nenhuma tarefa em execução", + "d2f3c14129fe059cf6d99f1583abc23e": "[+] Conectado com sucesso ao servidor {}", + "1cc35e618813746cb1bd4658f7ac61a0": "Falha ao carregar a chave DSA: {}", + "fa4e18c6d3b0c0fa6a5ac1303dda02a7": "Não foi possível reconhecer ou carregar a chave. Verifique se o formato do arquivo da chave está correto", + "6c97fd171b87d3f954040d4dea833cb9": "Preparando para carregar o arquivo de backup", + "e2fdcbc1d4e8b1fa77a161c4448a4bf6": "Preparando para fazer upload do arquivo Migrate_backup_info.json", + "4020efc99e8c60a0e7d27a5598d501e4": "执行过程中发生错误: {}", + "37dfdfda0ab7a98140943484fe70a76c": "Comece a descompactar o pacote de dados", + "f5e7895e7c31fedd32b520012910f960": "Tarefa de migração", + "d8a3336243e1c08e8a29c75af1eb528c": "Inicialização do MySQL bem-sucedida!", + "73af95fd2322196e0d9792df4ca1f566": "Inicialização do MongoDB bem-sucedida!", + "8c9718f3235e7c36c9f400bc68db1ef5": "Falha na autenticação do conjunto MongoDB!erro: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "Inicialização do PostgreSQL bem-sucedida!", + "c46866b7bc29cf9d478835bda10e43ce": "Inicialização do Redis bem-sucedida!", + "4e889bbbfc5e25ebf611e5764b8a358c": "Comece a restaurar o banco de dados", + "1a15a2b43f1dd92e836a592fb180843d": "Falha na restauração, arquivo não existe", + "ce693968cbf6e5f66af91e3dd2317d78": "Regras de IP do firewall ✓", + "b1bcc839644a9a611f9d8e2e1f63e0d0": "O nome do arquivo é muito longo (mais de 255 bytes).", + "29886cc45dfd7d6c3177d4a6ccfaae94": "O caminho completo é muito longo (mais de 4.096 bytes).", + "a3b7d5cfd749d2f8c5af2a8f45f002ea": "Falha ao verificar o caminho do arquivo: {}", + "8e6595abbb40f247c74fffdf61bd5a00": "Falha na configuração!Por favor, tente fazer login novamente.", + "a499f309ac7a223d611d7a0a85900342": "Nenhum registro de reinicialização encontrado.", + "d23fb11ea541cd5f1c0b05851d54fd58": "Marcado como lido.", + "1983b37067c7e94095a5113786fdef9c": "A edição falhou, a conexão com o docker expirou. Reinicie o docker e tente novamente!", + "9e90efb62702b147b71e8731290caf44": "A imagem [{}] não existe, tente verificar [Force pull image] e tente novamente!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "O novo contêiner não foi criado com êxito e o contêiner antigo foi restaurado.{}", + "1f004e412319b7ed472624e011b3d2ba": "Atualização bem-sucedida!", + "a2ea046c20d2da5cebf2dea01a62dabe": "Falha na atualização!O estado do contêiner foi restaurado", + "f9a48b804d917398e795016687f3b0f4": "Por favor, desligue o [Tamper-proof for Enterprise] antes de tentar!", + "ca1bc3e1d32b99b90395da47b88576a9": "Erro de parâmetro. Por favor, passe: ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "Erro de parâmetro. Por favor, passe: _ws!", + "6c3e5d603d8845422e861fb0b4eed350": "Um item de configuração que não", + "f324009782d2d9e73d1087884ebc2c4c": "A raiz do Docker não pode estar vazia!", + "538960e1336f919e37a0d2c024c56830": "O diretório raiz atual do Docker é o diretório de destino e não precisa ser alterado!", + "a848bbd79221dfdce1c9dca536dbfada": "O formato JSON das configurações de proxy está errado!", + "edf6eb680187066c4dea216b3b20d6d2": "Configuração de proxy bem-sucedida!", + "b01f9411136207ad7df28b9bf2387e2a": "Falha na atualização!Motivos da falha:{}", + "da896b628e3ded58445e4b015320f327": "A sobrecarga falha devido a:{}", + "efb869976990f78b3d6fcbaf270e3323": "Recarga com sucesso!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Falha na sobrecarga do perfil global:{}", + "75bbb7a00c3b5b510913952fe089f52a": "Parâmetro errado, parâmetro de caminho!", + "273609d18876f5f9e3f021032e5b57a3": "Falha na configuração!", + "0720c6c4f478b3a374b4a438f7cf80ad": "Falha ao importar a imagem, a conexão com o docker expirou. Tente reiniciar o docker e tente novamente!", + "22cc0388137842df9649b3bbcff345e8": "Se a importação da imagem falhar e o diretório do contêiner temporário não for criado, verifique se o software de proteção possui um registro de interceptação.", + "0568e5e8aa7c811dd420c818189a0d46": "segundos atrás", + "53c53a79f864561f8b6886b3dde7cd51": "minutos atrás", + "f329a0dab82282e50e3aea9260e95d53": "horas atrás", + "7a1af30a5ce889031cbc2472766159e3": "dias atrás", + "558a41d55884223583b3542e802d2b64": "O nome do espelho não pode ficar vazio!", + "0e8623af4dd4d3b732904872d22fbf83": "O nome da rede não pode ficar vazio!", + "5aa2044b58e63d58ddecc69421802404": "Os gateways podem", + "ceaa20eefd6749452a947c7f5dfa4eb0": "Os intervalos de IP não podem estar vazios!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "Falha ao criar uma rede!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Nome da rede: [{}] já existe!", + "9cdc09516d85ae057d1d9bedc988849e": "Crie uma rede com sucesso!", + "7d643f192968be3f8a54be28592e9176": "Falha na verificação da imagem:{}", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Somente tipos de contêiner e aplicativo são compatíveis", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "A versão {} para aplicação de {} não existe", + "a5c1e82e4d1142b8c7e0bc1499446181": "O ENDEREÇO ​​GIT NÃO ESTÁ DEFINIDO", + "4e24bbe093c9dfb90092a0f4e71733dc": "O nome da filial não está definido", + "b3c02fc58b92f549f529992c8a696a66": "O caminho do arquivo zip não está definido", + "eecf07d92b354565df633b06401206a1": "Por favor selecione o caminho do arquivo", + "795d1693702d930f7fc18edfb0f1c0d3": "Configuração incorreta do servidor MCP", + "a16d1dbe265c57e0417ae396c3c30043": "Nenhum serviço encontrado [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] Nenhuma imagem encontrada", + "4de8e45b499205551f4a09fd074e5246": "Parâmetros ausentes!eu ia", + "02e85c0a0fa01fabdb5426af13e87853": "Parâmetros ausentes!nome do aplicativo", + "d910ee67a0875a17b6e663f9e19369a4": "Este link de aplicativo não é compatível!", + "32d030406e8d755a59468a50bd385b22": "Falha ao obter o contêiner", + "c8e0f1ed3c37b015ee446297591d172f": "Parâmetros ausentes!nome_aplicativo", + "dad9445733497150b5f2cd29a5aed506": "O nome do aplicativo não é legal, por favor não inclua caracteres ilegais!", + "a04daa98db618d6c2a19aeed5af39448": "Nenhum arquivo docker-compose.yml encontrado para o aplicativo especificado!", + "74fd3ba5b92aa59e471161d2a585a93c": "O parâmetro model_name não pode ser nulo", + "760a1226f2ba701b04963681ab97d575": "O parâmetro model_version não pode ser nulo", + "2a88d88050ddcc0e28f0da4576be2232": "O parâmetro service_name não pode ser nulo", + "fd0f83d70400b1dd9f6ae9c093638411": "Falha ao obter informações do contêiner, a execução do docker-compose é excepcional!", + "2aec223006d3894d3c1a48bca642c141": "O modelo está sendo baixado, verifique os logs mais tarde", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Falha ao excluir modelo, exceção de execução do docker-compose!", + "d75a01e0d2c0cb8dad89216653024903": "Exclusão do modelo com sucesso!", + "f0501638237d7e8f934ec55ac3ffb20f": "Se a instalação falhar, verifique a rede ou instale o git manualmente", + "608113c9694987fa65b22ecb164aee59": "O ambiente foi instalado com sucesso", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "O diretório apphub não existe", + "7ec67f9826a24ca4a930a6e168ee9611": "A resolução foi bem sucedida", + "af2c4fa868813e47b80859a0b36e00f4": "AS INFORMAÇÕES DO GIT ESTÃO CONFIGURADAS COM SUCESSO", + "2b038e106d4ca5c11b787e16c73253ef": "Se você não", + "12d1b3062be6f8bb374511323c349ed7": "Por favor, defina as informações do git primeiro", + "798cd5a257af539ecfe6bb44f45ee788": "Falha na importação do git", + "8170f5d37a617dcbf16fe8dd414073dc": "Importação do git com sucesso", + "6e40e5a8ad741ca4bd714fa52ef32333": "O formato do arquivo está incorreto, selecione o arquivo zip ou gz", + "c4996991c50032c9b296c11da356acb2": "Falha na importação:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Importação bem-sucedida" } \ No newline at end of file diff --git a/BTPanel/languages/all/ru.json b/BTPanel/languages/all/ru.json index a80a1fcb..a7787db7 100644 --- a/BTPanel/languages/all/ru.json +++ b/BTPanel/languages/all/ru.json @@ -3600,5 +3600,178 @@ "c8cecd19f4f4a680a5879f828d1c5578": "Восстановление {} Project: {}", "35850d3654332477522ee06c756a3c85": "Не удалось удалить каталог сайта источника: {}", "c88b730f7a6a312159272ce532947de2": "{} Project: {} ✓", - "24ee51964e4ece856493ca28fdb075ed": "Восстановление данных сайта завершено" + "24ee51964e4ece856493ca28fdb075ed": "Восстановление данных сайта завершено", + "7d7014331b485392e1d6055aad5c26cd": "Не найден файл конфигурации SSL nginx phpmyadmin. Попробуйте закрыть настройки порта SSL перед открытием.", + "bedfc521aa92e68b04430d33289c6b3c": "В мульти-вебсерверном хостинге поддерживаются только версии nginx 1.24 и выше!", + "94e431cde2ffda2ef08526fa2af1b0b5": "Установите актив успешно!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "Ошибка установки актива {}", + "36856cc0aff5e4d792ab1919ec9e24f9": "Резервное копирование базы данных [{}] выполнено успешно!", + "cd338377817d5286c26f62c0562ebe72": "База данных успешно импортирована [{}]", + "de5ac4bddf9b72b649c0cbd4243f76c6": "повторите попытку через несколько секунд... пожалуйста, подождите...", + "6905a88552caae6df77f56bd19f6d76a": "Настройки задачи Cron остаются локальными.Локальная резервная копия сохраняется.", + "63701b3fa795bcd399aab5d489f8eae9": "Настройки задачи Cron не сохраняются локально.Локальная резервная копия не сохраняется.", + "837cc24a222df21e74245f4cfac6ad09": "Настройка пользователя на надевание", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB включил аутентификацию безопасности.", + "4675bfcf662ee236a05dcb763cf9d520": "Не удалось настроить кэш Apache.Пожалуйста, проверьте, правильно ли работает сайт!", + "0b9aca52d360d6f7a8f2c5c897c93005": "Настройки кэша Apache прошли успешно!", + "a2cd28fcd32e92be995b2335768fdea3": "Кэш Apache в настоящее время поддерживается только при хостинге с несколькими веб-серверами.", + "b288b8637582cc38c1d4c902ed03cbec": "Не удалось установить плагин кэша.", + "aebabb72ad41fbe46f73abcc9dc00b9f": "Плагин кэша не удалось активировать.Пожалуйста, попробуйте активировать его вручную, а затем включите кеш.", + "3981bd44ca3f1d5abafc6b15ba8c7435": "Настройки кэша OLS прошли успешно!", + "3777f748e5535e7e38261b2e0afc8274": "Не удалось настроить кэш OLS: {}", + "8e342838d5cf3a93e34956c9550db4d0": "Развертывание не удалось: {}", + "152b976545ff1ee50e0de21da7af1266": "Идет проверка.....", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "Проверка параметров", + "80f9a0a476836be5fdec10fe414e88a9": "{} Сайт создается....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "Создать сайт", + "8a9535f05c52e58f46e3237b9da019cc": "Добавьте дополнительные конфигурации: база данных, FTP.", + "b7575e63439333749c6e7d6a27b8a0e4": "Добавьте дополнительные конфигурации", + "2a5e8b7e4116ee81db89ba173f60bf90": "Проверка параметров не удалась", + "2f35a151cc0256f0d9ad5410eccbe5d0": "Проверка параметра не удалась: {}", + "af2a8e2174ea327f9fbf77d84029d58b": "Проверка параметров прошла успешно", + "181fc26e7b655ba36b3b075ca1ebc350": "Не удалось создать сайт", + "7118aff13541bf3d74a9c47fb458e102": "Не удалось создать веб-сайт: {}", + "be33773093fc2e135ba4bc26f4bb5509": "Сайт успешно создан", + "8d823a9933eefd02bf1003481f816f64": "Неуспешный: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "Успешный стартап!", + "31b88b436695f7e0bc5dad1cb8999737": "Не используйте порты службы панели!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "Порт занят или неправильный диапазон портов!Оно должно быть между 100 и 65535.", + "7dde7f2ae7cb4ed56b1b683b479ad303": "Внимание: версия {} еще не установлена,", + "839067817c5a1e7fcce2f905284d630e": "Перезаписать исходный каталог и перезаписать целевой каталог необходимо заполнить одновременно.", + "4b6ad864ce62dac8466dde7ec62e7ea9": "Перезаписать исходный каталог и перезаписать целевой каталог не могут быть одинаковыми", + "ed6fe3e47d3686c7af83b67535b426b5": "Исходный каталог перезаписи должен начинаться с /", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "Целевой каталог перезаписи должен начинаться с /", + "87a9a388a3ef42018ceb866756c4ee39": "Не удалось подключиться к базе данных, проверьте состояние базы данных!", + "a75c113f53d4342010d140325fa29eec": "Мультисервис сайта включен.", + "b0a517b4d596e5fc1351f8dc12e73a74": "Пожалуйста, выберите сохраненную услугу", + "7e953c855b391ac0716a4eeb47c5c5c3": "Пожалуйста, сначала включите несколько служб", + "55d523aa501b0e7e93e172a9e6829a8a": "Ошибка получения информации о версии nginx.", + "08f18bb6c6293307f68d5f822ed7dbe1": "В настоящее время openresty не поддерживается.", + "45020a62e40bbb43f6e05c62ad50288e": "Уже есть задание по установке.Пожалуйста, дождитесь его завершения!", + "4052df86d5a8dd12943cc8b1d53162e4": "Установка службы не удалась.Пожалуйста, попробуйте еще раз!", + "8033c09e6fedf841205b29b57c0ae0d1": "Не удалось запустить службу: {}", + "442d02a722dc331f8b85d328fb99a174": "Мультисервисный режим успешно включен", + "a0b289e4caa220dcd62692401d5083f5": "Не удалось удалить службу {}.Пожалуйста, попробуйте еще раз!", + "0045406cf97cbdca708c795aa9554145": "Службу {} не удалось перезапустить.Попробуйте перезагрузить компьютер вручную или проверьте файл конфигурации.", + "52cd203105425f66daf42d81f05c540f": "Мультисервисный режим успешно отключен", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "Перезапуск службы не удался.Пожалуйста, проверьте файл конфигурации Apache!", + "a949ed64edc73a99f9f9c801a84b6390": "Указанный тип службы не существует", + "408f206d494c5f26144f7492315dfa21": "Произошла ошибка при пакетном переключении сервисов!", + "e9fd26be1a67520e66f2e99d61977c32": "Идентификатор веб-сайта не существует", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "Текущая служба веб-сайта уже {}", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "Изменение конфигурации не удалось.", + "98e762d03fc5ffcb381010aff10c7bde": "Успешно переключился на {}", + "293f667205bd8aa91c72f966c03c3de5": "Полученный тип услуги веб-сайта неверен.", + "8562d96fc303411ee017a30b83d75712": "Исправлено успешно", + "d9d76120c8c13b40d2e8e49b0d6117da": "Произошла ошибка в мультисервисном режиме, и восстановление не удалось.Пожалуйста, попробуйте закрыть мультисервис, а затем открыть его снова!:{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "Файл конфигурации не существует", + "c8622023712105e9e7328396976a2667": "Резервный файл конфигурации не существует: {}", + "12572c9827392d4bd4c028881ed06242": "На веб-сайте наблюдаются глобальные конфликты прокси-серверов или переопределения URL-адресов.Пожалуйста, удалите его и попробуйте еще раз!", + "92bce01ab77d0d50efec1d424cab583b": "Этот сайт имеет обратный прокси.Пожалуйста, удалите его и попробуйте еще раз!", + "30c74a0981da2edec86936cd288479f7": "На веб-сайте настроен глобальный обратный прокси-сервер.Пожалуйста, сначала отмените его!", + "c3fe8f7adf26d613d9593acede34303b": "На веб-сайте настроена привязка доменного имени подкаталога.Пожалуйста, сначала отмените его!", + "84e9feba40d0aed963505e503cf821e3": "Обновление не удалось...", + "c85411871b8773e799e64d0c23ef79d3": "Заказ не найден!", + "2a6bb1bdd798217656edecf672b6df3c": "Http01 Ошибка проверки, но сайт не найден.", + "962682f10423a33a75f4b1277b3690c9": "Http01 Ошибка проверки, но сайт не работает", + "90299d1fb53fdf7a570db71a1b61c127": "Пожалуйста, сначала установите корневой пароль PgSQL!", + "844eea2c94a872941b4e4fe66c92c659": "Не удалось подключиться к базе данных [localhost:27017]!{}", + "d2c7790b1f776ce6ad06426b03fa71b1": "Локальный пароль для входа пуст, сначала установите пароль базы данных!", + "f9be861aad3eda81843c7797487da8e9": "Текущий статус безопасности системы хороший, очевидных уязвимостей и рисков нет.", + "890e24b14414e3da9bc2ad63d6d0befb": "В системе существуют определенные риски безопасности, и некоторые конфигурации или политики необходимо улучшить.", + "951c23a91dfe39b5ea5d00405b4dc2c5": "В системе имеются очевидные уязвимости безопасности, пожалуйста, исправьте их вовремя.", + "de36cae19b2a65a45cb4dfccb435530b": "Система находится в состоянии высокого риска, пожалуйста, как можно скорее отремонтируйте соответствующие элементы риска.", + "ca6977d373320a7fdb51047199d4cc59": "Админер не установлен!", + "38641e6ce3a6369e108eb595672c8edc": "Удаление успешно!", + "9cae26284a7ad2f46132c1e8e196d089": "Установите успешно!", + "a9a92e55770213c8aa1fb2871dc43563": "Установите порт администратора успешно!", + "2321763bf0b4cbf345b1e19dc9faec47": "Установите версию Adminer php успешно!", + "40a1f70c155550ad2dafa5e556e10c3c": "Версия PHP не устанавливается!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Путь_прокси — это корневой каталог, невозможно закрыть. Показать путь к прокси!", + "ca0af2ce76c89e3bfa4bad3105c21203": "Восстановление завершено, но не удалось получить временную метку восстановления.", + "20a42330f9241c13c91e3e203449a8a6": "Отсутствие инструмента резервного копирования. Сначала установите менеджер pgsql через магазин программного обеспечения!", + "7eff7c4aeb6bfe736f8a78c0096f92c7": "Пожалуйста, сначала установите пароль администратора!", + "6e907b499869ab16105a7aba198e13a7": "Пароль к базе данных пуст!Пожалуйста, сначала установите пароль к базе данных!", + "d8a3336243e1c08e8a29c75af1eb528c": "Инициализация MySQL прошла успешно!", + "73af95fd2322196e0d9792df4ca1f566": "Инициализация MongoDB прошла успешно!", + "8c9718f3235e7c36c9f400bc68db1ef5": "Ошибка авторизации MongoDB!ошибка: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "Инициализация PostgreSQL прошла успешно!", + "c46866b7bc29cf9d478835bda10e43ce": "Инициализация Redis прошла успешно!", + "4e889bbbfc5e25ebf611e5764b8a358c": "Начать восстановление базы данных", + "3e686ed1f6a0bc9ccba7a3cc119b5008": "Идентификатор базы данных {} не существует, восстановление данных прекращено", + "5633c4d754985da6c7fab116964ac501": "Начать восстановление данных усиления защиты системы", + "b1bcc839644a9a611f9d8e2e1f63e0d0": "Имя файла слишком длинное (более 255 байт).", + "29886cc45dfd7d6c3177d4a6ccfaae94": "Полный путь слишком длинный (более 4096 байт).", + "a3b7d5cfd749d2f8c5af2a8f45f002ea": "Не удалось проверить путь к файлу: {}", + "8e6595abbb40f247c74fffdf61bd5a00": "Настройка не удалась!Пожалуйста, попробуйте войти еще раз.", + "a499f309ac7a223d611d7a0a85900342": "Записи о перезагрузке не найдены.", + "d23fb11ea541cd5f1c0b05851d54fd58": "Отмечено как прочитанное.", + "1983b37067c7e94095a5113786fdef9c": "Не удалось редактировать, время ожидания соединения с Docker истекло. Перезапустите Docker и повторите попытку!", + "9e90efb62702b147b71e8731290caf44": "Изображение [{}] не существует, попробуйте установить флажок [Принудительное извлечение изображения] и повторите попытку!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "Новый контейнер не был успешно создан, а старый контейнер был восстановлен.{}", + "1f004e412319b7ed472624e011b3d2ba": "Обновление успешно!", + "a2ea046c20d2da5cebf2dea01a62dabe": "Обновление не удалось!Состояние контейнера восстановлено.", + "f9a48b804d917398e795016687f3b0f4": "Прежде чем пытаться, отключите [Защиту от несанкционированного доступа для предприятия]!", + "ca1bc3e1d32b99b90395da47b88576a9": "Ошибка параметра. Введите: ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "Ошибка параметра. Введите: _ws!", + "6c3e5d603d8845422e861fb0b4eed350": "Элемент конфигурации, который не", + "f324009782d2d9e73d1087884ebc2c4c": "Корень Docker не может быть пустым!", + "538960e1336f919e37a0d2c024c56830": "Текущий корневой каталог Docker является целевым каталогом, и его не нужно менять!", + "a848bbd79221dfdce1c9dca536dbfada": "Неправильный формат JSON в настройках прокси!", + "edf6eb680187066c4dea216b3b20d6d2": "Настройка прокси прошла успешно!", + "b01f9411136207ad7df28b9bf2387e2a": "Обновление не удалось!Причины неудачи:{}", + "da896b628e3ded58445e4b015320f327": "Сбой перегрузки по следующим причинам:{}", + "efb869976990f78b3d6fcbaf270e3323": "Перезагрузка прошла успешно!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Не удалось перегрузить глобальный профиль:{}", + "75bbb7a00c3b5b510913952fe089f52a": "Неправильный параметр, параметр пути!", + "273609d18876f5f9e3f021032e5b57a3": "Установка не удалась!", + "0720c6c4f478b3a374b4a438f7cf80ad": "Не удалось импортировать образ, время соединения с Docker истекло. Попробуйте перезапустить Docker и повторите попытку!", + "22cc0388137842df9649b3bbcff345e8": "Если импорт образа не удался и каталог временного контейнера не создан, проверьте, есть ли в программе защиты запись о перехвате.", + "0568e5e8aa7c811dd420c818189a0d46": "секунды назад", + "53c53a79f864561f8b6886b3dde7cd51": "минут назад", + "f329a0dab82282e50e3aea9260e95d53": "часов назад", + "7a1af30a5ce889031cbc2472766159e3": "дней назад", + "558a41d55884223583b3542e802d2b64": "Имя зеркала не может быть пустым!", + "0e8623af4dd4d3b732904872d22fbf83": "Имя сети не может быть пустым!", + "5aa2044b58e63d58ddecc69421802404": "Шлюзы могут", + "ceaa20eefd6749452a947c7f5dfa4eb0": "Диапазоны IP не могут быть пустыми!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "Создать сеть не удалось!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Имя сети: [{}] уже существует!", + "9cdc09516d85ae057d1d9bedc988849e": "Создайте сеть успешно!", + "7d643f192968be3f8a54be28592e9176": "Не удалось выполнить сканирование изображения:{}", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Поддерживаются только типы контейнеров и приложений.", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "Версия {} для применения {} не существует.", + "a5c1e82e4d1142b8c7e0bc1499446181": "АДРЕС GIT НЕ УСТАНОВЛЕН", + "4e24bbe093c9dfb90092a0f4e71733dc": "Имя ветки не задано", + "b3c02fc58b92f549f529992c8a696a66": "Путь к zip-файлу не указан.", + "eecf07d92b354565df633b06401206a1": "Пожалуйста, выберите путь к файлу", + "795d1693702d930f7fc18edfb0f1c0d3": "Неправильная конфигурация сервера MCP", + "a16d1dbe265c57e0417ae396c3c30043": "Служба не найдена [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] Изображение не найдено", + "4de8e45b499205551f4a09fd074e5246": "Недостающие параметры!идентификатор", + "02e85c0a0fa01fabdb5426af13e87853": "Недостающие параметры!имя приложения", + "d910ee67a0875a17b6e663f9e19369a4": "Эта ссылка на приложение не поддерживается!", + "32d030406e8d755a59468a50bd385b22": "Не удалось получить контейнер", + "c8e0f1ed3c37b015ee446297591d172f": "Недостающие параметры!имя_приложения", + "dad9445733497150b5f2cd29a5aed506": "Название приложения недопустимо, не используйте недопустимые символы!", + "a04daa98db618d6c2a19aeed5af39448": "Для указанного приложения не найден файл docker-compose.yml!", + "74fd3ba5b92aa59e471161d2a585a93c": "Параметр model_name не может быть нулевым", + "760a1226f2ba701b04963681ab97d575": "Параметр model_version не может быть нулевым", + "2a88d88050ddcc0e28f0da4576be2232": "Параметр service_name не может быть нулевым", + "fd0f83d70400b1dd9f6ae9c093638411": "Не удалось получить информацию о контейнере, выполнение docker-compose является исключительным!", + "2aec223006d3894d3c1a48bca642c141": "Модель загружается, проверьте логи позже", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Не удалось удалить модель, исключение выполнения docker-compose!", + "d75a01e0d2c0cb8dad89216653024903": "Успешное удаление модели!", + "f0501638237d7e8f934ec55ac3ffb20f": "Если установка не удалась, проверьте сеть или установите git вручную.", + "608113c9694987fa65b22ecb164aee59": "Среда успешно установлена", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "Каталог apphub не существует", + "7ec67f9826a24ca4a930a6e168ee9611": "Решение было успешным", + "af2c4fa868813e47b80859a0b36e00f4": "ИНФОРМАЦИЯ GIT УСПЕШНО НАСТРОЕНА", + "12d1b3062be6f8bb374511323c349ed7": "Пожалуйста, сначала установите информацию git", + "798cd5a257af539ecfe6bb44f45ee788": "Импорт из git не удался", + "8170f5d37a617dcbf16fe8dd414073dc": "Импорт из git успешен", + "6e40e5a8ad741ca4bd714fa52ef32333": "Формат файла неправильный, выберите файл zip или gz.", + "c4996991c50032c9b296c11da356acb2": "Ошибка импорта:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Успешный импорт" } \ No newline at end of file diff --git a/BTPanel/languages/all/spa.json b/BTPanel/languages/all/spa.json index 7e76d7e5..06863958 100644 --- a/BTPanel/languages/all/spa.json +++ b/BTPanel/languages/all/spa.json @@ -3761,5 +3761,209 @@ "c8cecd19f4f4a680a5879f828d1c5578": "Restauración {} Proyecto: {}", "35850d3654332477522ee06c756a3c85": "No se pudo eliminar el directorio del sitio de origen: {}", "c88b730f7a6a312159272ce532947de2": "{} proyecto: {} ✓", - "24ee51964e4ece856493ca28fdb075ed": "Restauración de datos del sitio completada" + "24ee51964e4ece856493ca28fdb075ed": "Restauración de datos del sitio completada", + "7d7014331b485392e1d6055aad5c26cd": "No encontré el archivo de configuración ssl phpmyadmin de nginx, intente cerrar la configuración del puerto ssl antes de abrir", + "bedfc521aa92e68b04430d33289c6b3c": "En Multi-WebServer Hosting, ¡solo se admiten nginx 1.24 y versiones superiores!", + "94e431cde2ffda2ef08526fa2af1b0b5": "¡Establezca el activo con éxito!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "Error al establecer recurso {}", + "36856cc0aff5e4d792ab1919ec9e24f9": "¡La base de datos de respaldo [{}] se realizó correctamente!", + "cd338377817d5286c26f62c0562ebe72": "Base de datos importada exitosamente [{}]", + "de5ac4bddf9b72b649c0cbd4243f76c6": "Inténtalo de nuevo después de unos segundos... espera por favor...", + "6905a88552caae6df77f56bd19f6d76a": "La configuración de la tarea cron se mantiene local.Se conserva la copia de seguridad local.", + "63701b3fa795bcd399aab5d489f8eae9": "La configuración de la tarea cron no se mantiene local.No se conserva la copia de seguridad local.", + "837cc24a222df21e74245f4cfac6ad09": "Configuración de usuario para ponerse", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB ha habilitado la autenticación de seguridad.", + "4675bfcf662ee236a05dcb763cf9d520": "La configuración de la caché de Apache falló.¡Compruebe si el sitio web funciona correctamente!", + "0b9aca52d360d6f7a8f2c5c897c93005": "¡La configuración de la caché de Apache fue exitosa!", + "a2cd28fcd32e92be995b2335768fdea3": "Actualmente, la caché de Apache solo es compatible con alojamiento de servidores web múltiples", + "b288b8637582cc38c1d4c902ed03cbec": "La instalación del complemento de caché falló.", + "aebabb72ad41fbe46f73abcc9dc00b9f": "El complemento de caché no se pudo activar.Intente activarlo manualmente y luego habilite el caché.", + "3981bd44ca3f1d5abafc6b15ba8c7435": "¡La configuración de caché de OLS fue exitosa!", + "3777f748e5535e7e38261b2e0afc8274": "Error en la configuración de la caché OLS: {}", + "8e342838d5cf3a93e34956c9550db4d0": "Error en la implementación: {}", + "152b976545ff1ee50e0de21da7af1266": "La verificación está en marcha.....", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "Verificación de parámetros", + "80f9a0a476836be5fdec10fe414e88a9": "{} El sitio web se está creando....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "crear sitio web", + "8a9535f05c52e58f46e3237b9da019cc": "Agregue configuraciones opcionales: base de datos, FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "Agregar configuraciones opcionales", + "2a5e8b7e4116ee81db89ba173f60bf90": "Error en la verificación de parámetros", + "2f35a151cc0256f0d9ad5410eccbe5d0": "Error en la verificación de parámetros: {}", + "af2a8e2174ea327f9fbf77d84029d58b": "Verificación de parámetros exitosa", + "181fc26e7b655ba36b3b075ca1ebc350": "No se pudo crear el sitio web", + "7118aff13541bf3d74a9c47fb458e102": "No se pudo crear el sitio web: {}", + "be33773093fc2e135ba4bc26f4bb5509": "El sitio web fue creado exitosamente.", + "8d823a9933eefd02bf1003481f816f64": "Fallido: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "¡Inicio exitoso!", + "31b88b436695f7e0bc5dad1cb8999737": "¡No utilice los puertos del servicio del panel!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "¡El puerto está ocupado o el rango de puertos es incorrecto!Debe estar entre 100 y 65535", + "7dde7f2ae7cb4ed56b1b683b479ad303": "Advertencia: la versión {} aún no se ha instalado,", + "839067817c5a1e7fcce2f905284d630e": "Reescribir el directorio de origen y reescribir el directorio de destino deben completarse al mismo tiempo", + "4b6ad864ce62dac8466dde7ec62e7ea9": "Reescribir el directorio de origen y reescribir el directorio de destino no pueden ser iguales", + "ed6fe3e47d3686c7af83b67535b426b5": "El directorio fuente de reescritura debe comenzar con /", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "El directorio de destino de reescritura debe comenzar con /", + "87a9a388a3ef42018ceb866756c4ee39": "La conexión a la base de datos falló, verifique el estado de la base de datos.", + "a75c113f53d4342010d140325fa29eec": "Se ha habilitado el multiservicio del sitio web.", + "b0a517b4d596e5fc1351f8dc12e73a74": "Por favor seleccione el servicio contratado", + "7e953c855b391ac0716a4eeb47c5c5c3": "Por favor habilite varios servicios primero", + "55d523aa501b0e7e93e172a9e6829a8a": "Error al obtener información de la versión de nginx", + "08f18bb6c6293307f68d5f822ed7dbe1": "Actualmente, openresty no es compatible", + "45020a62e40bbb43f6e05c62ad50288e": "Ya existe una tarea de instalación.¡Espere a que se complete primero!", + "4052df86d5a8dd12943cc8b1d53162e4": "La instalación del servicio falló.¡Por favor inténtalo de nuevo!", + "8033c09e6fedf841205b29b57c0ae0d1": "Error al iniciar el servicio: {}", + "442d02a722dc331f8b85d328fb99a174": "El modo multiservicio se ha habilitado correctamente.", + "a0b289e4caa220dcd62692401d5083f5": "No se pudo desinstalar el servicio {}.¡Por favor inténtalo de nuevo!", + "0045406cf97cbdca708c795aa9554145": "El servicio {} no pudo reiniciarse.Intente reiniciar manualmente o verifique el archivo de configuración.", + "52cd203105425f66daf42d81f05c540f": "El modo multiservicio se ha desactivado correctamente.", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "El reinicio del servicio falló.¡Compruebe el archivo de configuración de Apache!", + "a949ed64edc73a99f9f9c801a84b6390": "El tipo de servicio especificado no existe", + "408f206d494c5f26144f7492315dfa21": "¡Se produjo un error al cambiar de servicio en lotes!", + "e9fd26be1a67520e66f2e99d61977c32": "El ID del sitio web no existe", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "El servicio del sitio web actual ya es {}", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "La modificación de la configuración falló.", + "98e762d03fc5ffcb381010aff10c7bde": "Cambió exitosamente a {}", + "293f667205bd8aa91c72f966c03c3de5": "El tipo de servicio del sitio web obtenido es incorrecto", + "8562d96fc303411ee017a30b83d75712": "Reparado con éxito", + "d9d76120c8c13b40d2e8e49b0d6117da": "Se produjo un error en multiservicio y la reparación falló.¡Intente cerrar el servicio múltiple y luego vuelva a abrirlo!:{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "El archivo de configuración no existe", + "c8622023712105e9e7328396976a2667": "El archivo de configuración respaldado no existe: {}", + "12572c9827392d4bd4c028881ed06242": "Hay conflictos de reescritura de URL o proxy global en el sitio web.¡Elimínalo y vuelve a intentarlo!", + "92bce01ab77d0d50efec1d424cab583b": "Este sitio web tiene un proxy inverso.¡Elimínalo y vuelve a intentarlo!", + "30c74a0981da2edec86936cd288479f7": "El sitio web ha configurado un proxy inverso global.¡Por favor cancélelo primero!", + "c3fe8f7adf26d613d9593acede34303b": "El sitio web está configurado con enlace de nombre de dominio de subdirectorio.¡Por favor cancélelo primero!", + "84e9feba40d0aed963505e503cf821e3": "Actualización fallida...", + "2a6bb1bdd798217656edecf672b6df3c": "Error de verificación Http01, pero no se encontró el sitio.", + "962682f10423a33a75f4b1277b3690c9": "Error de verificación Http01, pero el sitio no se está ejecutando", + "90299d1fb53fdf7a570db71a1b61c127": "¡Primero configure la contraseña de raíz de PgSQL!", + "01d3922e30b7aff9c7265e91c57cc829": "¡El formato de IP es incorrecto!", + "b2349e65b04baa3a0d50ad030535b73e": "lo que ingresaste no es legal, la modificación falló", + "932c4edd1a70a505be1099f4e7874692": "Modifique los derechos de acceso del usuario pgsql con éxito", + "95abdbd5890c3ceec62026c6246d8030": "La ejecución de la copia de seguridad fue exitosa,", + "bff09c8822165bf816a5b5a4d1fe9140": "¡La ruta de importación no existe!", + "eacd845def6fe750cfc0986f24565045": "La contraseña de inicio de sesión local está vacía", + "079d7d1539d30a76e53b6fb54d370d32": "¡Agregue correctamente!", + "45da541afaa00457a2f4617a1dd4855f": "¡La eliminación de la base de datos de nombres de administrador está prohibida debido a restricciones de Mongodb!", + "d2af5fe1710856e97dbfdf1adc6d5e98": "¡Falta parámetro!identificación", + "d2c7790b1f776ce6ad06426b03fa71b1": "La contraseña de inicio de sesión local está vacía. ¡Establezca primero la contraseña de la base de datos!", + "505a6be34cf7e61f93f2665896cfafaa": "Error de modificación, base de datos [", + "f9be861aad3eda81843c7797487da8e9": "El estado actual de seguridad del sistema es bueno y no hay vulnerabilidades ni riesgos obvios.", + "890e24b14414e3da9bc2ad63d6d0befb": "Existen ciertos riesgos de seguridad en el sistema y es necesario mejorar algunas configuraciones o políticas.", + "951c23a91dfe39b5ea5d00405b4dc2c5": "El sistema tiene vulnerabilidades de seguridad obvias, corríjalas a tiempo", + "de36cae19b2a65a45cb4dfccb435530b": "El sistema se encuentra en un estado de alto riesgo; repare los elementos de riesgo relevantes lo antes posible.", + "38641e6ce3a6369e108eb595672c8edc": "¡Desinstale exitosamente!", + "9cae26284a7ad2f46132c1e8e196d089": "¡Instalar con éxito!", + "a9a92e55770213c8aa1fb2871dc43563": "¡Configure el puerto de administrador correctamente!", + "2321763bf0b4cbf345b1e19dc9faec47": "¡Configure la versión php del administrador correctamente!", + "40a1f70c155550ad2dafa5e556e10c3c": "¡La versión PHP no se instala!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path es el directorio raíz, no se puede cerrar Mostrar ruta de proxy.", + "99e8ebaa5ad2fafe4e141574f6b4a73f": "Carga de archivos", + "4439b17c5e0977e0c73c643cea950424": "No se pudo guardar el registro de tarea global: {}", + "e597529fcdfa1dab69eadaf1c44088ba": "Tarea de migración creada exitosamente", + "e9ba4ba778d8a0b4423c09ff6cb32726": "Conexión mediante clave ECDSA", + "908300abff5dfdf254726c2193f3e550": "No se pudo volver a conectar al servidor, se alcanzó el número máximo de reintentos ({})", + "6a2909a7dbeca5d8c85843ecd4cd3fae": "[!] Conexión SSH desconectada mientras se ejecutaba el comando: {}", + "88783238ef5d081aade9e63160d329fb": "[*] Se volvió a conectar exitosamente, reintentando el comando...", + "95adf53ab7c91ed98c77d3c0e38a2a1a": "[+] Tipo de sistema operativo: {}", + "e3a56811a35322959c535d38d2e91f7e": "[!] curl o wget no están instalados, intentando instalar...", + "9e0a136b55af822e72c8d6716d2d4bf3": "Tipo desconocido", + "12b65fbe011be723b4ae981c0d42c44d": "Restaurar tarea agregada exitosamente", + "e0867cf8c8a1935e8bd681f0ff28a612": "Conexión SSH verificada exitosamente", + "b100f6e1c91f013adf0ca5ce6606a89d": "Tarea de migración agregada exitosamente", + "ecd204c03ea44719e6fa4ea25569266a": "{} {} ✓", + "aa6b67db23e9cb0b943aa6c0def92cb4": "{} {} Copia de seguridad fallida: {} ✗", + "41596c0d36a66c44434d5882c3cfa793": "Panel de implementación restaurado para el certificado {}: {}", + "c8a71420e709d8a4d02914a78d9a0e06": "Comience a restaurar la configuración del certificado SSL del dominio", + "a9d58d413bd48f1bd7e8041b6d8ceab0": "Tarea Crontab {} ✓", + "a7609aefd5330a1384704e73dc0b4dc0": "Comience a restaurar la tarea Crontab", + "48ed083561c2f201d9fe52f6a35ee982": "Tarea Crontab completada", + "69fa45968c5cc7a9115bff54e70c95c1": "Comience a instalar memcached-{}", + "5d806f11bb91996cafe7836b27a4e770": "¡Excepción de conexión de Redis!", + "d8a3336243e1c08e8a29c75af1eb528c": "¡La inicialización de MySQL fue exitosa!", + "73af95fd2322196e0d9792df4ca1f566": "¡La inicialización de MongoDB fue exitosa!", + "c46866b7bc29cf9d478835bda10e43ce": "¡La inicialización de Redis fue exitosa!", + "4e889bbbfc5e25ebf611e5764b8a358c": "Comenzar a restaurar la base de datos", + "9a176a20c15e3dc096ed8bc5a05182ba": "Reglas del puerto del firewall ✓", + "ce693968cbf6e5f66af91e3dd2317d78": "Reglas de IP del firewall ✓", + "b68673b625a1d48b3953e37bb39fcbab": "Las reglas de IP del firewall se restauraron exitosamente ✓", + "03f3f31fd240913a083a78fc2d60f6f8": "Iniciando la restauración de las reglas de la región del firewall", + "b5cf2f2c48fb5978825d3341759dd6d6": "{} usuario ✓", + "66f3f8adc854963e94a643b706157309": "Informe de seguimiento del sitio web ✓", + "5633c4d754985da6c7fab116964ac501": "Comience a restaurar los datos de refuerzo del sistema", + "b1bcc839644a9a611f9d8e2e1f63e0d0": "El nombre del archivo es demasiado largo (más de 255 bytes).", + "29886cc45dfd7d6c3177d4a6ccfaae94": "La ruta completa es demasiado larga (más de 4096 bytes).", + "a3b7d5cfd749d2f8c5af2a8f45f002ea": "No se pudo verificar la ruta del archivo: {}", + "8e6595abbb40f247c74fffdf61bd5a00": "¡Error de configuración!Intente iniciar sesión nuevamente.", + "a499f309ac7a223d611d7a0a85900342": "No se encontró ningún registro de reinicio.", + "d23fb11ea541cd5f1c0b05851d54fd58": "Marcado como leído.", + "1983b37067c7e94095a5113786fdef9c": "Error en la edición, se agotó el tiempo de conexión a la ventana acoplable. Reinicie la ventana acoplable e inténtelo de nuevo.", + "9e90efb62702b147b71e8731290caf44": "La imagen [{}] no existe, intente marcar [Forzar extracción de imagen] e inténtelo de nuevo.", + "6cfa55c53df6db8efa59aa2ae6cef97a": "El nuevo contenedor no se creó correctamente y el contenedor anterior se restauró.{}", + "1f004e412319b7ed472624e011b3d2ba": "¡Actualización exitosa!", + "a2ea046c20d2da5cebf2dea01a62dabe": "¡La actualización falló!El estado del contenedor ha sido restaurado.", + "f9a48b804d917398e795016687f3b0f4": "¡Apague [A prueba de manipulaciones para empresas] antes de intentarlo!", + "ca1bc3e1d32b99b90395da47b88576a9": "Error de parámetro. Introduzca: ws_callback.", + "b4770fb21a608a5ba1ecacae409093d0": "Error de parámetro. Introduzca: _ws!", + "6c3e5d603d8845422e861fb0b4eed350": "Un elemento de configuración que no", + "f324009782d2d9e73d1087884ebc2c4c": "¡La raíz de Docker no puede estar vacía!", + "538960e1336f919e37a0d2c024c56830": "¡El directorio raíz actual de Docker es el directorio de destino y no es necesario cambiarlo!", + "a848bbd79221dfdce1c9dca536dbfada": "¡El formato JSON de la configuración del proxy es incorrecto!", + "edf6eb680187066c4dea216b3b20d6d2": "¡La configuración del proxy fue exitosa!", + "b01f9411136207ad7df28b9bf2387e2a": "¡La actualización falló!Razones del fracaso:{}", + "da896b628e3ded58445e4b015320f327": "La sobrecarga falla debido a:{}", + "efb869976990f78b3d6fcbaf270e3323": "¡Recarga exitosa!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Error de sobrecarga del perfil global:{}", + "75bbb7a00c3b5b510913952fe089f52a": "¡Parámetro incorrecto, parámetro de ruta!", + "273609d18876f5f9e3f021032e5b57a3": "¡La configuración falló!", + "0720c6c4f478b3a374b4a438f7cf80ad": "No se pudo importar la imagen, se agotó el tiempo de espera de la conexión a Docker. Intente reiniciar Docker y vuelva a intentarlo.", + "22cc0388137842df9649b3bbcff345e8": "Si la importación de la imagen falla y no se crea el directorio del contenedor temporal, verifique si el software de protección tiene un registro de interceptación.", + "0568e5e8aa7c811dd420c818189a0d46": "hace segundos", + "53c53a79f864561f8b6886b3dde7cd51": "hace minutos", + "f329a0dab82282e50e3aea9260e95d53": "hace horas", + "7a1af30a5ce889031cbc2472766159e3": "hace dias", + "558a41d55884223583b3542e802d2b64": "¡El nombre del espejo no puede estar vacío!", + "0e8623af4dd4d3b732904872d22fbf83": "¡El nombre de la red no puede estar vacío!", + "5aa2044b58e63d58ddecc69421802404": "Las puertas de enlace pueden", + "ceaa20eefd6749452a947c7f5dfa4eb0": "¡Los rangos de IP no pueden estar vacíos!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "¡Error al crear una red!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Nombre de red: [{}] ¡ya existe!", + "9cdc09516d85ae057d1d9bedc988849e": "¡Crea una red con éxito!", + "7d643f192968be3f8a54be28592e9176": "Error al escanear la imagen:{}", + "50fc65b5f19812ccf756b7ad7de7f4cb": "session_id no puede estar vacío!", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Solo se admiten tipos de contenedores y aplicaciones", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "La versión {} para aplicar {} no existe", + "a5c1e82e4d1142b8c7e0bc1499446181": "LA DIRECCIÓN GIT NO ESTÁ ESTABLECIDA", + "4e24bbe093c9dfb90092a0f4e71733dc": "El nombre de la sucursal no está establecido.", + "b3c02fc58b92f549f529992c8a696a66": "La ruta del archivo zip no está configurada", + "eecf07d92b354565df633b06401206a1": "Por favor seleccione la ruta del archivo", + "795d1693702d930f7fc18edfb0f1c0d3": "Mala configuración del servidor MCP", + "a16d1dbe265c57e0417ae396c3c30043": "No se encontró ningún servicio [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] No se encontró ninguna imagen", + "4de8e45b499205551f4a09fd074e5246": "¡Faltan parámetros!identificación", + "02e85c0a0fa01fabdb5426af13e87853": "¡Faltan parámetros!nombre de la aplicación", + "d910ee67a0875a17b6e663f9e19369a4": "¡El enlace de esta aplicación no es compatible!", + "32d030406e8d755a59468a50bd385b22": "No se pudo obtener el contenedor", + "c8e0f1ed3c37b015ee446297591d172f": "¡Faltan parámetros!nombre_aplicación", + "dad9445733497150b5f2cd29a5aed506": "El nombre de la aplicación no es legal, ¡no incluya caracteres ilegales!", + "a04daa98db618d6c2a19aeed5af39448": "¡No se encontró ningún archivo docker-compose.yml para la aplicación especificada!", + "74fd3ba5b92aa59e471161d2a585a93c": "El parámetro model_name no puede ser nulo.", + "760a1226f2ba701b04963681ab97d575": "El parámetro model_version no puede ser nulo", + "2a88d88050ddcc0e28f0da4576be2232": "El parámetro nombre_servicio no puede ser nulo", + "fd0f83d70400b1dd9f6ae9c093638411": "No se pudo obtener la información del contenedor, ¡la ejecución de Docker-Compose es excepcional!", + "2aec223006d3894d3c1a48bca642c141": "El modelo se está descargando, verifique los registros más tarde.", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "¡No se pudo eliminar el modelo, excepción de ejecución de Docker-Compose!", + "d75a01e0d2c0cb8dad89216653024903": "¡Eliminación exitosa del modelo!", + "f0501638237d7e8f934ec55ac3ffb20f": "Si la instalación falla, verifique la red o instale git manualmente", + "608113c9694987fa65b22ecb164aee59": "El entorno se instaló correctamente.", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "El directorio apphub no existe", + "7ec67f9826a24ca4a930a6e168ee9611": "La resolución fue exitosa", + "af2c4fa868813e47b80859a0b36e00f4": "LA INFORMACIÓN DE GIT ESTÁ CONFIGURADA EXITOSAMENTE", + "2b038e106d4ca5c11b787e16c73253ef": "si no", + "12d1b3062be6f8bb374511323c349ed7": "Primero configure la información de git", + "798cd5a257af539ecfe6bb44f45ee788": "Error al importar desde git", + "8170f5d37a617dcbf16fe8dd414073dc": "Importación desde git exitosa", + "6e40e5a8ad741ca4bd714fa52ef32333": "El formato del archivo es incorrecto, seleccione el archivo zip o gz", + "c4996991c50032c9b296c11da356acb2": "Error de importación:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Importación exitosa", + "8c9718f3235e7c36c9f400bc68db1ef5": "¡Error de autenticación al establecer MongoDB!error: {}" } \ No newline at end of file diff --git a/BTPanel/languages/all/tur.json b/BTPanel/languages/all/tur.json index 57b6f5e4..5f1cd02b 100644 --- a/BTPanel/languages/all/tur.json +++ b/BTPanel/languages/all/tur.json @@ -1,3589 +1,3755 @@ { - "f41a4952dfc4caafbed0a6afdd243bff": "Sertifika hatası, lütfen kontrol edin!", - "2dfadbc8b23727991de7eb9457f56252": "Sertifika kaydedildi!", - "7961d31b9b6db7593b5f8795273b5b64": "Sertifika başvurusu başarısız oldu, lütfen site yönetimi sayfasından panel alan adı için manuel olarak sertifika başvurusu yapmayı deneyin", - "d29c0b7e434fe9f40120f2a7f8111c9e": "SSL dosyası bulunamadı! {}", - "c4ca4238a0b923820dcc509a6f75849b": "1", - "96ee8f18814766fdf066df97d3e1f6ea": "Lets Encrypt sertifikası için başvurmadan önce panele bir alan adı bağlamanız gerekir.", - "7c14ab8a86515227c637d1d045e8d422": "Kurulum başarılı!", - "a453af2e4da41ca8c5035d61b961c1ae": "Veritabanı mevcut değil", - "ca9c87b1d4c2f8af80c61cf22e43250d": "Bu zaman diliminde zaten bir yedekleme görevi var. Başka bir zaman dilimi seçmeniz önerilir", - "e0aa021e21dddbd6d8cecec71e9cf564": "Tamam", - "4db53632205257cce66f7b93d6c71e84": "Web sitesi mevcut değil", - "dc542b3a7ffb20d7a1fc0c2b35f208d8": "Dizin mevcut değil", - "4cc4ddc196a295ee4ab82daec08f91a6": "Site mevcut değil", - "25bb121145f918572eea2ef07ff8e89c": "Yedekleme hatası", - "f8320b26d30ab433c5a54546d21f414c": "Yanlış", - "4bbfcde12aa36ec375a332f51bf905d6": "Her Gün", - "60956b50bb8e8c711d3adb889a70137f": "Her Gün, saat {}:{}'de çalıştır", - "78748f15bb65939b6d130c3a5cf8b7dc": "Her {} Günde Bir", - "cf9af10dcebe2f12092ff6028a535f08": "Her {} Günde Bir, saat {}:{}'de çalıştır", - "e114abed903b9d26c476d4f6cd59c04b": "Her Saat", - "0aef48ea8132b0551fa25a10fd0a6585": "Her Saat, {} dakikada çalıştır", - "50419faf9662e0c3f283d496bcb8eb72": "Her {} Saatte Bir", - "2a0706d7e3ca3ce9e955471a0648dfcc": "Her {} Saatte Bir, {} dakikada çalıştır", - "84d94bf0382f611906b7edd65d6af169": "Her {} Dakikada Bir", - "14d27796d1c96457c7c019661a2f32d4": "Her {} Dakikada Bir Çalıştır", - "6c25e6a6da95b3d583c6ec4c3f82ed4d": "Haftalık", - "e1df614d393ab86fd63c5062f7e77936": "Her {}, saat {}:{}'de çalıştır", - "9030e39f00132d583da4122532e509e9": "Aylık", - "69c5e99b9ad8d2b8f11be9a60cbf71da": "Aylık, {} Günü {}:{}'de çalıştır", - "9d1a0949c39e66a0cd65240bc0ac9177": "Pazar", - "6f8522e0610541f1ef215a22ffa66ff6": "Pazartesi", - "5792315f09a5d54fb7e3d066672b507f": "Salı", - "796c163589f295373e171842f37265d5": "Çarşamba", - "78ae6f0cd191d25147e252dc54768238": "Perşembe", - "c33b138a163847cdb6caeeb7c9a126b4": "Cuma", - "8b7051187b9191cdcdae6ed5a10e5adc": "Cumartesi", - "e00d5128f631253b7b6ed8d5454c0c81": "Dosyaya yazılamıyor, lütfen [Sistem Sertleştirme] özelliğinin etkin olup olmadığını kontrol edin!", - "685689743579a8f09fcec5d7df04e39e": "Görev adı boş olamaz!", - "a5c04aced897c770105858268324b53f": "Mevcut görev Devre Dışı durumda, lütfen değiştirmeden önce görevi açın!", - "85305ee6be0f078791c7437ec54dda12": "Ekleme başarısız oldu", - "08a1ce771119bb393fa49478216ae809": "günlük boş", - "b8fd4dbe5c3650beaec0a3d44d7f0245": "Günlükler temizlendi", - "ff47c70e853d0b3635935be883b018e9": "Görev günlükleri temizlenemedi!", - "e0c4da1afd18acbb66bc5fac261a42ef": "Belirtilen görev mevcut değil!", - "998ad6f12ce5285a1b72d4265d9b36cc": "Başarıyla silindi", - "e274abcaad0a7fff74d9adb67e578d5f": "Silme başarısız oldu", - "38fa2d4f8f9a13062c0c9007d97f6a84": "Dosya okunamadı!", - "f57d5686d9dd67f0e81924de8d13af95": "Görev çalıştırıldı!", - "0b1c93d38c86c8d379886293cdf8ba66": "Görev iptal edildi!", - "d5ef96e383d376beeec28da7acfea516": "Dosyayı indir", - "f24f6c5f5841340f898a6baaa6478bcd": "{} dosyasını indir", - "b2d87dda66a4643c6cf673f787c5f226": "Yapılandırma dosyası mevcut değil", - "9fdd777388a418cef77bce46c1b2511a": "Belirtilen sıkıştırma formatı desteklenmiyor!", - "4fa407ee74026903dc3013d0b2471eac": "Sıkıştırma başarılı!", - "ece43dcaac9352f58c422e500266a927": "Sıkıştırmadan çıkarma başarılı!", - "b9c1dcb37c44dca19765636de065b1c1": "Yedekleme Başarılı!", - "ac4eb62573e34c36ff426c8a6360c781": "Yedekleme hatası!", - "438ca4ffcf6fbd44ec129e73a24f0deb": "sql/gz/zip dosyası seçin!", - "0edfb4a54d6cf45209a6c7929b8b9919": "Veritabanı başarıyla içe aktarıldı!", - "b0698ab9adefa7515299f311c725ba4d": "Sıralama başarıyla temizlendi", - "8611f56e253646a455ceeb020052fa97": "Değiştirme başarısız oldu", - "bef28b813bf12be3924925bbb62883dd": "Başarıyla çalıştırıldı!", - "fda63bff3e0143980e5761376859b00b": "Çalıştırma başarısız oldu, Apache'nin kurulu olup olmadığını kontrol edin", - "22012355700877ab73f89de8014ab20b": "Apache kural yapılandırma hatası:
etkinleştirme başarısız oldu:

", - "9848c96a046adb1759233241661ff694": "{} servisi başlatılamadı", - "6ed577cdce37bbd9c66871ac1677dc53": "Servis durdurma başarısız oldu!", - "572e5703371c43aae299181c0e3567d4": "Lütfen programı tüm kurulum görevleri bittiğinde çalıştırın!", - "c7138b4b5f7ded833942aef4e230771d": "Komut başarıyla gönderildi!", - "d56f0ed99825b4d62ab84753a65f7f1e": "Panel yeniden başlatıldı", - "bff9ef87fdda677f86ae6dddec54a104": "Uyumlu PHP sürümü bulunamadı, lütfen önce kurun", - "7901466782835534ad8736db6ef1f5f1": "Geçersiz giriş anahtarı1", - "f155037a804d9eb3e28318ac56b4cce7": "Belirtilen anahtar mevcut değil veya süresi dolmuş1", - "6eef9dff3428b19422dbbfe061fc8266": "Geçersiz giriş anahtarı2", - "ea4dede6817ca735a9df32b4e63fd1ac": "Geçersiz giriş anahtarı3", - "4682250bcbe96f4c0c59712ef1ff1560": "Geçersiz giriş anahtarı4", - "8b4bcc31cc9ad0a259e17a1ebfcfb859": "Belirtilen anahtar mevcut değil veya süresi dolmuş5", - "c132c7b820d6b4d23038989f10dc7d90": "QR kodunun geçerlilik süresi doldu6", - "ab72200c3852bb7165e1e0d9456c5679": "Kod başarıyla tarandı, giriş yapılıyor!", - "d003e41a7688df391d78442602802077": "Geçersiz giriş anahtarı", - "8b7e4d42188dd3064e99d4cc76f2f94d": "Mevcut QR kodunun süresi doldu, lütfen sayfayı yenileyip kodu yeniden tarayın!", - "238baadc7351e6af7625f2b3c888adfd": "Bu sunucu en fazla {} cihaza bağlı ve bu sınıra ulaşıldı!", - "e615667ab7e4ce542cc2de0e95b5983c": "Doğrulama başarısız oldu!", - "9d45236535b39cb2afdc976ef584dc89": "Bir sunucu en fazla {} cihaz bağlamasına izin verir!", - "883102f20053b7b88799f5712192fcec": "Başarıyla bağlandı!", - "eb21cf2eed85a178a9cb642a0175f402": "Başarıyla silindi!", - "c332d7ea3375e567e1b586dfb79c2156": "API arayüzü üzerinden API yapılandırılamaz", - "166be1ba5c792888e84a51c48f5a5eed": "Geçici anahtarlar yalnızca API arayüzü üzerinden alınabilir", - "dd923e13e2389e764f7d833482dc58d3": "Kullanıcı e-postası veya parolası boş olamaz!", - "a72005cea9c8d0e8925115a09f62e834": "Lütfen geçerli e-postanızı girin", - "583e0c5cfd4be57cb9bef0a1745f81c8": "hata bilgisi : {}", - "086a727d5b55e2ccedc7cd0c194936f0": "hata bilgisi2 : {}", - "2b770a5bd35c0e286c6296f942990bf7": "Kayıt başarılı", - "a3dcb5c816b8d611f73cddb3c53578d4": "hata bilgisi6 : {}", - "8089be0bb8586c6081d4cd8dd9223d76": "E-posta doğrulanmadı", - "2bdacd9b8281d94958a8da4d29420926": "Başarıyla bağlandı", - "7826987ad3c4b2226b8f7a601657d23b": "Geçersiz kullanıcı adı, e-posta veya parola! lütfen kontrol edip tekrar deneyin!", - "a7ea66c7a7ca61c727cf1ebe830ffed2": "Sunucuya bağlanılamadı!", - "3d8c9e517719022b27ad5f27c578fa31": "RAM Alınamadı", - "d47ab7b9ce539ba13f4e045561bb8ed7": "Çalışma Süresi Alınamadı", - "8e39175bab478762d3d029bee327c704": "Yeniden Başlatma Zamanı Alınamadı", - "e16cf27704f83c8b0a0efc16886ea75d": "Tarih Alınamadı", - "c158c8096b76b85803e71232b2dd5e74": "Zaman detayı Alınamadı", - "a6ec06b5eb6a42e13e072d2e992e31a0": "Saniye Başına İstek Alınamadı", - "cdd32490a46567fd0c1ee9d4b170b762": "Toplam Erişim Alınamadı", - "62b939086708b37d68c00cb713994b52": "Toplam Kilobayt Alınamadı", - "13b06d17b35dfeeafa50e12ad9ec1735": "Meşgul İşçiler Alınamadı", - "724fc9214ccce3e6a5787648240a4533": "Boşta İşçiler Alınamadı", - "7a7f329389283fdd3290c735f90946e9": "mpm_event_module conf bulunamadı veya /www/server/apache/conf/extra/httpd-mpm.conf boş", - "c22cf8376b1893dcfcef0649fe1a7d87": "Saniye", - "db669c6377ab90eef78800a48fd4a453": "İstek zaman aşımı", - "af52f5340c065f4d38182f7a27d59f75": "Keep alive", - "939bf39176f01b8324dfed32f5580af3": "Bağlantı zaman aşımı", - "70b46e57f3c33abdb9558bc5c3a234d9": "Bağlantı başına maksimum keep-alive istekleri", - "6868568c3abc547e622a303891a906b0": "Varsayılan işlemler", - "224114c62dceb7ebee2db43c6c79a961": "Maksimum boşta iş parçacığı sayısı", - "3c60809d9a5a0900dfbc28bb017e410b": "İstek artışlarını işlemek için mevcut minimum boşta iş parçacığı sayısı", - "3783030daf8154be6e11fc4160c229c3": "Her bir alt işlem tarafından oluşturulan iş parçacığı sayısı", - "2f25e4b1a2cb84576740da749a2daef2": "Aynı anda işlenecek maksimum bağlantı sayısı", - "72e3edfd72758944413b1e4e9c432f1e": "Bireysel bir alt sunucunun ömrü boyunca işleyeceği bağlantı sayısı sınırı", - "066985109e0866765c631bf851b9fac8": "Parametre HATASI!", - "26c74a59d7d10bd927dce45e449943f1": "Yapılandırma HATASI", - "fa57fd4dd2f47d6e5e076c347fbee513": "SITE_ADD_ERR_DOMAIN_TOW", - "4eb35aa4b95736df133dd3ad772f1ec9": "Sistem için kritik olan dizin, site dizini olarak kullanılamaz", - "ebdcf538e79de6922f498cc8c735eab5": "Sistem güvenlik duvarı açık değil", - "a296add6341b715925c0be2b83514ee3": "Girdiğiniz IP adresi geçersiz!", - "3433b9709eed7423f1900061ef743af6": "Bu IP'yi devre dışı bırakmak sunucunuzun çökmesine neden olur", - "57e7b2320dd3984312335605d57ee0f8": "IP engelleme listesinde mevcut, tekrar işlem yapmaya gerek yok!", - "4bb8df740a7119979ff7854d034200a8": "IP adresi geçersiz!", - "ff9c66f005c08efd15752fb261057b46": "Port aralığı 22 ile 65535 arasında olmalıdır!", - "b26b09909c3b090f31dba4a0986e1b84": "Port mevcut, tekrar serbest bırakmaya gerek yok!", - "408f58c25fc55295236fbb64a2d884ff": "Başarısız oldu, panelin mevcut portu silinemez", - "ad6fc2abb89b42d391b4bf84e8e6cd2d": "SSH servisi kapatıldı", - "0692d6f0819524aaa05e73f03022ec5b": "SSH servisi açıldı", - "d0749aaba8b833466dfcbb0428e4f89c": "BAŞARILI", - "ffdc24f916f3071233ca7710aff032c8": "{}", - "6e264f3408e9b769d3fb7e2c807f301f": "İşlem başarısız oldu. Lütfen anahtarın doğru olduğunu kontrol edin", - "d4ac5985eccd334896e3cf23706e43b0": "Başarıyla eklendi", - "92188d43af4373bacbf00951da16532a": "Web sitesi yolu alınamadı. Lütfen web sitesinin mevcut olup olmadığını kontrol edin", - "ceaefd9a46d78491b9fdb912b5c71eeb": "Doğrulama dosyası oluşturulamadı. Yazmanın engellenip engellenmediğini kontrol edin", - "1bb3608b1bc684c3dc85090db249346b": "Sertifika bilgisi alınamadı", - "c8c7de7f5b740307d55affea39b79993": "Kurulum başarılı oldu", - "131c05252110792212e3e3666a351154": "SSL ile ilgili yapılandırma, sonraki satırdaki yorumlanmış 404 kurallarını SİLMEYİN veya DEĞİŞTİRMEYİN", - "4ba7e24ac1607ab761c124ca7352ad08": "Hata sayfası yapılandırması, yorumlanmasına, silinmesine veya değiştirilmesine izin verilir", - "31bb30ca4135945adbe0c2daa9545b39": "PHP referans yapılandırması, yorumlanmasına, silinmesine veya değiştirilmesine izin verilir", - "f9da3e5ae75ce0ae39884ae2ea295a66": "URL yeniden yazma kuralı referansı, herhangi bir değişiklik panel tarafından ayarlanan yeniden yazma kurallarını geçersiz kılar", - "73e1f7d487ad73d55414fe26ea11cbf0": "[sitePath] parametresi belirtilmedi", - "6aabca3a3e1c79bd5837a1ddae95fe70": "Oluşturulurken bir hata oluştu, lütfen tekrar deneyin.", - "256c9a85375f57f2dc9f6f318c6578f1": "Web sitesi [ {} ] başarıyla oluşturuldu", - "481df7dbcd4c0317088bde8c913d5893": "Lütfen web sitesi yolunu doldurun", - "b1b2484c013c646d7f41d6b2f495b6ef": "Web sitesi yolu kök dizin [/] olamaz", - "1c3bff99564f1370a5b1bf6c0773f8c4": "Lütfen [E-posta] formatının doğru olup olmadığını kontrol edin", - "af9091566e669f016edf16ba97464cbe": "Parola çok zayıf, kullanmak istediğinizden eminseniz, lütfen [ Zayıf parolalara izin ver ] seçeneğini işaretleyin", - "b0dbad478d4f07c38aec8f440ed98b66": "Lütfen önce Mysql ve PHP'yi kurun!", - "46491fef7553177ef58a55b2db917072": "Lütfen web sitesi kök dizinini sistem ana dizinine ayarlamayın:
{}", - "59d5fef323e89ded50ed6036848a97f3": "webname parametresinin formatı yanlış, ayrıştırılabilir bir JSON dizesi olmalıdır", - "078a3d3e263be2851ddfd9fa059d098f": "Port aralığı yanlış! 100-65535 arasında olmalıdır", - "50370024fdd22dc69099a46d011b20e2": "PHP sürümü boş olamaz", - "44bd68c6703adf65ff21c63e9a876aa1": "Birincil alan adı formatı yanlış", - "23eded6de9c06451f67ecb7ed3a8c95b": "Birincil alan adı joker DNS kaydı olamaz", - "f54249d2613e48be05837ec9cd615a5f": "Eklemeye çalıştığınız site zaten mevcut!", - "b537e2d1946d559d3de4fb3c045d290f": "Eklemeye çalıştığınız alan adı zaten mevcut!", - "f91c641aef33cf8ef4a29bc5d3a7193a": "Ekleme başarısız oldu, yapılandırma yazma HATASI!", - "c3c7869d22051eaa78a831834a398351": "Silinirken bir hata oluştu, lütfen tekrar deneyin.", - "e2d272e229674e4c6765fab24a323604": "Web sitesi [{}] başarıyla silindi", - "aa5f20e061736fe68a915163e7e6d122": "Belirtilen site mevcut DEĞİL", - "f11e72daff0ce484f4c401bd0bd28ae5": "Site başarıyla silindi!", - "c57d58c6bbd34144325871d75b42a577": "Lütfen ana bilgisayar alan adını girin", - "5c7b7c2f6ed78eefdd77aaa3dddde61a": "Alan adı boş olamaz!", - "ef446d50df1605a582f9b44b57327536": "Alan adı formatı yanlış!", - "68ae44808f90043dee02358ee768bf6e": "Alan adı formatı geçersiz!", - "1628c2a26ab6d1211b435f85782f8acc": "Belirtilen alan adı web sitesi [{}] tarafından bağlandı", - "925dc658ddf0f69509632848bcd39577": "Belirtilen alan adı web sitesinin bir alt dizini [{}] tarafından bağlandı!", - "7b02cf82181f516626a36b86c6a686f5": "Site başarıyla eklendi!", - "9b3c4205f2f408790c9c1c5da53c3bfb": "PHP sürümü alınamadı!", - "abc3db87d5608cc9559556468a696a35": "Lütfen bir alan adı seçin", - "7807e17f2bf49fb802bba1a04822ea16": "Lütfen bir port seçin", - "e5925c3a126a66c0565df6d8ef49550e": "Son alan adı silinemez!", - "17088ffed1e537b917a6ecc9dc957159": "Özel Anahtar HATASI, lütfen kontrol edin!", - "26924bd958e212f07c31b6ffca9cbf8c": "Sertifika HATASI, lütfen kontrol edin!", - "44e2c1c3cfd8d248d7c9190a8f07c0ee": "Sertifika alınamadı", - "fc0d039d9dcf3905ae8032c9cb33f475": "HATA:
{}", - "ddc2be35a5ed0bf09a88139c4ad10b4a": "Orijinal yolla aynı, değiştirmeye gerek yok!", - "84a8921b25f505d0d2077aeb5db4bc16": "Statik", - "ad74aa2854e988c3157f92e0120bb19e": "Apache2.2 MultiPHP'yi desteklemiyor!,{}", - "4018ce634a10d352867f04962f107c14": "Ayarlanırken bir hata oluştu, lütfen tekrar deneyin.", - "f1bef4fd5183ae83a5896c32a3d5e81d": "Özel PHP yapılandırması yalnızca Nginx'i destekler", - "879e0d022ff268704f93a7e2b504c224": "Sürümü özelleştirirken PHP bağlantı yapılandırması boş olamaz!", - "73d6e709b568b43405052cec999798c5": "PHP bağlantı yapılandırması formatı yanlış, lütfen örneğe bakın!", - "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "Belirtilen unix soketi [{}] mevcut değil!", - "751ac8fd72a0acd79772370efcae9c89": "[{}]'a bağlanılamıyor, lütfen makinenin hedef sunucuya bağlanıp bağlanamadığını kontrol edin", - "3cb7d414f8ae92b2b29057f91346f7dc": "Kurulum başarısız oldu, web sitesi yapılandırma dosyasında enable-php-xx ile ilgili yapılandırma öğeleri bulunamadı!", - "c7a6a892c6cdfc9b0fedefb0a1d2083a": "İstenen dizin mevcut değil", - "4622561ceaaecb6ef7dd51e65c9f4ec5": "Temel dizin kapatıldı!", - "e4ec1f40794bdf92e7261e6e0c51895a": "Temel dizin açıldı!", - "eeddf79f68ffe029ed83fddcba46b35f": "Eski proxy", - "1592678472ea1b601fd74abff47c56b1": "Hedef URL alınamıyor", - "18edd294853d381dbe0d612ab58bc123": "Yapılandırma dosyasında bir hata tespit edildi. Lütfen devam etmeden önce sorunu çözün", - "8b5899be4df3aedb03c6fbad9055ed1c": "Veritabanı adı 40 karakterden fazla olamaz!", - "111376d92c49c1a6c1522a2ef1dac23c": "Belirtilen ters proxy adı veya proxy klasörü zaten mevcut", - "09a988aa2e3185fce9fa8f4e8710b862": "Hem dizin hem de genel proxy'ler ayarlanamaz", - "012a8e497feddccb8e4a47aa5e2dc156": "Lütfen numara girin", - "90da7d2de9aa12ec32ee04172ca0d2d3": "Gönderilen Alan adı format hatası :", - "440544138d3ed8a2229792c88bad3bd8": "Hedef URL'ye erişilemiyor", - "faf2457853593b3296699c4adacc7825": "Lütfen değiştirilecek içeriği girin", - "748e5ad33460a17cf26c8024bb0a1620": "Değiştirilecek içerik, değiştirilen içerikle aynı olamaz", - "195d5db9e1559f06348715bc3a822036": "Yeniden yazma/nginx ana yapılandırma/vhost dosyasında zaten genel bir ters proxy var", - "cc38d47ec9ac62ffc67a5db9c08d5d52": "Hedef URL boş olamaz", - "fb79afbbe0688565b7894b644dfd798d": "Hedef URL [http:// veya https://] olamaz, lütfen tam URL'yi girin, örneğin: https://aapanel.com", - "29c9da826ae868c8c6444328f48bcf40": "Tek tıkla dağıtım kullanan Wordpress siteleri için ters proxy'ler şu anda mevcut değil", - "a59dfc3ae22fd96d46011503a4f40744": "Proxy askıya alındı", - "118f77feff598376a776af9b8e738efc": "Başarıyla kaydedildi", - "078bb5f960587121c7cd606ddba5ad58": "Lütfen düzenlemeden önce ters proxy'yi etkinleştirin!", - "fe7185cec796e18d58f8e84dc4da946f": "Şu anda yalnızca Nginx desteklenmektedir", - "222a267cc5778206b253be35ee3ddab5": "Mevcut", - "38441d4a89765279852ca2830aa89c83": "Yeni URL yeniden yazma kuralı kaydedildi!", - "c27a45bf16475a157ca1014cf886bb56": "Lütfen bir not girin", - "9a962a24e9b7b07800d6b7c7efd86f30": "Kullanıcı adı veya parola 3 basamaktan az olamaz!", - "7eb904262649f9b2e4ba52e2bba9db71": "Parola formatı yanlış, lütfen ilk iki basamak için özel semboller kullanmayın!", - "492c7f01035f1cf9b88756f897f02b87": "HATA, birincil alan adı IP adresi olamaz!", - "0a2b8c4a98495f6af19be9c1c342844e": "Başarılı, lütfen JSP programını test edin!", - "49281f9c7680652b1d110625da5c8cca": "Tomcat eşlemesi kapatıldı!", - "ec3b07b78fd4f3307c84858957ddbd0f": "Site çalışma yolu alınamadı", - "02e602e968050352febfc4ddcae332f0": "OpenLiteSpeed varsayılan site ayarını desteklemiyor", - "362538d60f495840284c667e67831b16": "Dizini tara", - "4f137439eb93e6c752873c8af2d3d1cb": "Tarama Görevi kuyrukta!", - "613a6375944c3035efe735e87766fbbd": "Güncelleme Başarılı!", - "6177805463a6a4f28e61bb3435bee13b": "Başarıyla ayarlandı, site süresi dolduğunda otomatik olarak duracak!", - "1a69486f70b6baf749e6e1c4d5fcf689": "URL soneki boş olamaz!", - "2f858201b6da6a5419c5af8fd26f815c": "Hırsızlık önleme zinciri alan adı boş olamaz!", - "f36c15e89d61e07fb44095ae920b8fbc": "Lütfen önce hotlink'i açın!", - "70dc560b6f4af6d210c9eeb8434c571c": "Yanıt kaynakları URI yolu veya HTTP durum kodu kullanmalıdır, örneğin: /test.png veya 404", - "aa8722f512ecebf5dae454e526402508": "Lütfen önce hırsızlık önlemeyi açın!", - "bd0d7585c64988d80747a32fb0e3e15e": "Günlük boş", - "a17f5bc22553d897f6363867c0165256": "Varsayılan kategori", - "0d0d87a34e787b2f4a59d912d4d441e4": "Kategori adı boş olamaz", - "6818a5095a78431eb3c99fe022b687b0": "Kategori adı 16 harfi geçemez", - "c4f16bb3d87b92062f73954c86485f64": "En fazla 10 kategori ekleyin!", - "5fd53f59be2a3dee94df28886840b9a3": "Belirtilen kategori adı zaten mevcut!", - "1c44b4096bb88e459ddadef895bea1c2": "Belirtilen kategori mevcut DEĞİL!", - "8f52253b1f007fd14ed0f60b89593d2d": "Kategori silindi!", - "b51515085fc6ea6a07192c61e068c124": "Başarıyla değiştirildi", - "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "Bu özellik yalnızca Nginx/Apache'yi destekler", - "6678fd91bc04eb1e34e3474809387e7a": "Sorgu başarısız oldu, adres mevcut değil", - "7ac0a27b48f2931c7f294b996fe6b273": "Yapılandırma dosyası ayrıştırılamadı", - "ee3a15a26aee235ac255e37342b444bb": "Kurulum başarılı", - "79799f8c2f024685df774550ea5b427d": "Web sitesi [proxy,yönlendirme,http'den https'ye] otomatik olarak yeniden başlatılacak şekilde ayarlanmadı", - "29faf053a22c387532298233399e66f9": "Yapılandırma dosyası ayrıştırma hatası", - "6c881e76c76b1f102bcb97a8b4f682f6": "Bu web sitesi [proxy,yönlendirme,http'den https'ye] otomatik yeniden başlatmayı açtı", - "13fc1b8a101214be1a472db8de1bd8fd": "Web sitesi otomatik yeniden başlatmayı kapattı", - "1fb58c8e2967a648359d13aa22d9e493": "Site mevcut değil!", - "b0cd0c2bc5c6ce9f71127d60872209ce": "Web sitesi [{}] yeniden adlandırıldı: [{}]", - "3f96c422b7a59fe6e8bf7531c647a64c": "Belirtilen hesap mevcut değil", - "cb5e7fdc51569eedfbf3a9a0d3c819cc": "Belirtilen sipariş mevcut değil!", - "8bd32b310825307a909c682871008642": "Sipariş başarıyla silindi!", - "2b8b978f7f97a454d3be4cf4b1ea9e8a": "Sertifika okunamadı, dizin mevcut değil!", - "023d5992564106099e169c79963e8ed8": "Belirtilen sipariş için sertifika bulunamadı!", - "572097b2302e2c7fe0a3375db4e3ad9b": "Sertifika okunamadı!", - "a28e320cb6513b4ad7e9b07318173cb5": "Sertifika iptal edildi!", - "d0b3af29d4790521c7850f4955d66745": "En az bir alan adı gerekli!", - "48203f43edd25a6df396ff263a02ea45": "Doğrulama dosyası yazılamadı: {}", - "ebe9660f1426b037f25101329deed827": "Geçerli DNSAPI anahtar bilgisi bulunamadı", - "a618b4f6cda69737d20199139556d955": "Sipariş doğrulama bilgileri eksik, lütfen yeniden başvurmayı deneyin!", - "9ab9f8e94ee4cde7ab0c2f516cb12367": "Alan adı doğrulaması başarısız oldu. Lütfen tekrar başvurmayı deneyin!", - "585f0e7802a68df8899b96bc67ae11bc": "Sipariş mevcut değil!", - "a10a65f23fcb6e0ac204f2de7b5fe9f3": "CA sunucusu bağlantısı zaman aşımına uğradı, lütfen daha sonra tekrar deneyin.", - "188c4e0ff2d4cb58ecfcd2608cfeea2c": "DNS sunucusu bağlantısı başarısız oldu, lütfen anahtarın doğru olup olmadığını kontrol edin.", - "d568b4df4d83c54698fe15ad656181ed": "Yayınlama başarısız oldu, alan adı {} haftalık yeniden yayınlama sınırını aştı!", - "5ac0673b95a9e6af88bb008e24c09bf4": "CA sunucusuna bağlantı başarısız oldu, lütfen daha sonra tekrar deneyin.", - "2948ef630d1bdb0b2e7209d83f13af67": "Desteklenmeyen alan adı {}, lütfen alan adının doğru olup olmadığını kontrol edin!", - "27bad102d3dd6f86d5f6c680c8353089": "Sipariş oluşturma başarısız oldu, lütfen daha sonra tekrar deneyin!", - "1a728d28f052c9956f9d014d60c61bff": "CA sunucusu erişimi reddetti, lütfen daha sonra tekrar deneyin!", - "35390f482d893d9c9c0c0bb055e70572": "Bu alan adı için çok fazla istek var. Lütfen 3 saat sonra tekrar deneyin", - "cae6404c4aecf46684930fe2a86676a6": "Let", - "ab511534580180bb5c56aab7331d0c36": "CA, DNSSEC imzasını doğrulamak için kullanılan DNSKEY kaydını bulamıyor veya alamıyor", - "d957a97cf30dda2b8d8969c068a32eaf": "Sertifika indirilemedi: {}", - "7c1bcdcad166aaaec98c557f8c12d2cf": "Belirtilen sertifika dosyası mevcut değil!", - "22d9a8450558b9bf05b71c456bf07e4c": "Sertifika bilgileri alınamadı!", - "bab62ab47e998a0ca716266835bf8a31": "|-Sipariş oluşturuluyor..", - "6517db66d510fdaea47a55ff778a0c94": "|-Doğrulama bilgileri alınıyor..", - "655a6038ba5837b278b39e18d93adea0": "|-Alan adı doğrulanıyor..", - "2d51882843ffc29148c2ced7741663dc": "|-CSR gönderiliyor..", - "dfa86860b18fd5248e3e72415c19233c": "|-Sertifika indiriliyor..", - "7e0173b4f1e9e78c08a70a0350422af2": "Başvuru başarılı!", - "02900bf9834436584397d0e1ed6d6385": "|-Başvuru başarılı, siteye dağıtılıyor..", - "cc7bd98381615b01789afbd472cb8ed3": "Web sitesi ID'si boş olamaz!", - "decd4452e2e4872aa81049fea69a0c24": "Web sitesi kayıp, sertifika başvurusuna devam edilemiyor", - "7c3971b737ee58a9dec0e00a1df8f943": "Mevcut projenin ({}) yapılandırma dosyası değiştirildi ve ", - "4dd7615dbb05a4e001b3b5fa6d71bc16": "Web sitesi eksik ve ", - "5963b5b95c2063d2668607bac1fde358": "SITE_SSL_ERR_301", - "6c24a729c1cf9fc0159e92cb2f35f055": "Ters proxy etkinleştirilmiş siteler SSL için başvuramaz!", - "48a7613459bf65ba48bf9994a3104f2f": "Web sitesi zaten yönlendirmeyi etkinleştirdi.", - "28c497ddb0cfa97dd612d83c5efdc225": "Zorunlu HTTPS yapılandırdıktan sonra ", - "50e7b6d6602a2f42e45ee7c147824b04": "İndirme başarısız oldu. Sipariş bulunamadı.", - "d4d3f12047351f973751b65b50bf54ea": "|-Başvuru başarılı!", - "cf6c5b924aa4aede56b3e0e0373ec1f8": "Lütfen sertifika başvurusu yapılacak alan adını belirtin", - "e08c1382c834439d0fdccbc24d36ec86": "Lütfen doğrulama türünü belirtin", - "ed5c4feb5edcfbb95544d094d451921e": "Lütfen web sitesi belge kökünü belirtin", - "fb3d957c8fad98876c10db10e32c0126": "Lütfen DNSAPI belirtin", - "e3b11e6d575174fdb838e311bb404fd5": "Lütfen DNSAPI anahtarını belirtin", - "dcbd3fcb143a3101480566f5c1f07ad3": "Lütfen DNSAPI sırrını belirtin", - "1f93e148160dbf6dc586fb1b90a37758": "Sipariş dizinini belirtin", - "a33d17910b7aa3b68c4d864bede9bdf3": "sertifikayı yenile", - "976ac0dffedabc5b60bf5a009a5a4e05": "sertifikayı yenile v2", - "0810d42ec985c7c4beb6416c649c82a8": "sertifikayı yenile v3", - "6953519c64b998226d0294b961deca62": "Sertifikayı iptal et", - "1bbd31373b98ad5a6320af00b2a15ee0": "Son kullanma tarihi belirli bir süreden az olduğunda yenile", - "8fcc1d6fd24fad55d9e8fea6631886db": "Lütfen --index parametresinde iptal edilecek siparişin dizinini girin", - "7b84e677e97bd4943a6639a22c1a1704": "password parametresi boş olamaz", - "5f3160e82bc0c5278923b609841e588b": "Başarıyla açıldı", - "f288f8c23f8d03a699a49bf1fb8e7f53": "ssh seçeneği başarısız oldu", - "d3118650da719b6b0cc83230204491de": "şifreleme yöntemi yanlış", - "24513dc8c02bb021a1c944009c19215b": "Açma başarısız oldu", - "8a3140f96ba5c5df5560d0bd27aa4cd8": "Başarıyla kapatıldı", - "b0a783e3ada9e792e3ff3ca4eb477c80": "Sertifika mevcut değil!", - "fca4e47d90253577901e874737b87dc0": "Sertifika okuma hatası!", - "813595d6c41e417bea96adb1ad89043f": "Sertifika formatı hatası", - "16e6977cb4d0694335f3492ad8767370": "Sertifika bulunamadı", - "b267d8a6cbf23d69056263e194742c06": "Sertifika geçersiz", - "f8ad04059d0821e2ece2ed287bb3cd13": "Sertifika bilgisi format hatası", - "a441b2686419ee07dac67ba6bbf3ddf5": "db yazma hatası", - "34c7694451633cb615e98b06d040c5c7": "db sorgu hatası:", - "ba709b27ba6099126b4162a916a20174": "giriş yapılmadı, bu yüzden", - "ae01e57647be41f3c1e2a0e49dae3de8": "bulut verisi alınamadı!", - "8d1747726b316e3a1063e5db9fe65864": "bulut alınamadı!", - "ff34f52bf8f702f83843e0d8f3e6bfac": "parametreler yanlış", - "41309f5b21613cfea3728a55036f9970": "giriş yapılmadı, bu nedenle buluta yüklenemiyor!", - "6e4a26963219701ba8e062a1255fe089": "Belirtilen sertifika yok.", - "2c7d38ab0f7a91f5474efc897eaf4b2a": "Yerel dosya silme başarılı. Ancak bulut dosyası silme başarısız.", - "501ffa672acb20c4764563d6e839879b": "Buluta bağlanılamadı. Buluttaki veriler silinemiyor.", - "a810cdf921c5b92a3f6d29667ec78ffc": "silme başarılı", - "df569fbc92d17644e83b44541596633f": "Buluta bağlanılamadı.", - "3765f17d36dbbf2ce3f42263140bb3f9": "Başarıyla yüklendi!", - "0c2739999b5107b5e0ec1daba5f781a4": "Dosya mevcut değil!", - "7060f57ff9e237a85b15eef45647d061": "Dosya adı 256 bayttan fazla içeriyor", - "38435dd5a615624cc69531abfbd703fd": "Dosya adında özel karakterler bulunamaz!", - "755a84ac806ba86d4c48936dc66e3fef": "Sistem belge köküne dosya yüklenemez!", - "a5c484db60a79c6813a17bc3326cba11": "Yanlış parametre", - "e9fe2f4360929409c22f85b1648f384c": "Yeterli disk alanı yok", - "3f619d1715a6655f2005cfc5b8c68772": "Başarıyla yüklendi!", - "e43d9157935634a15059bd1bf18415dc": "Kurtarma başarısız oldu!", - "0e20e16a4febfeda715769b902a59334": "Bu bir dizin değil", - "6036dced70bfdbbd88295453cbde9bfa": "Dosya oluşturma başarısız oldu! Disk dolu! lütfen önce alanı temizleyin!", - "30d24a9b6b261e0750bb661b31987b5d": "Güvenlik riskleri olabileceğinden dosyanın sonunda [ . ] kullanılması önerilmez", - "be0d6b0c39cab719b1c61c8015434a33": "Dosya adları özel karakterler İÇEREMEZ!", - "b9e117b56b51b2d3018081eacee6b3db": "İstenen dosya mevcut!", - "807e31c87b236897fa1fef873d6f6e6c": "Dosya başarıyla oluşturuldu!", - "2ad238d651bf0bd82f0ae2956282be25": "Dosya oluşturulamadı!", - "88c49b5495c38de4f1c7bb7faddc87ef": "Belirtilen sembolik bağlantı dosyası adı tam yolu içermelidir (tam yol)", - "167ef22f59be6706a317a2f02e27e656": "Belirtilen sembolik bağlantı dosyası adı zaten mevcut", - "5c97229e5cb4adbe5089c8b1ddd4d6b2": "Bağlantı dosyası adı geçersiz!", - "69908f8298ea9cf873cc85644efdbad6": "Sembolik bağlantı dosyası oluşturma başarısız oldu", - "b9fafba1d56fff09f8dffc1d53d23106": "Sembolik bağlantı dosyası başarıyla oluşturuldu", - "b40170992801cb3d6930f5649d1dfe4f": "Güvenlik riskleri olabileceğinden dizinin sonunda [ . ] kullanılması önerilmez", - "0253f56ac4bf1e2bab05844f11588b3a": "Dizin adları özel karakterler içeremez!", - "40a0060d11d54723173dfe1fe62115a1": "İstenen dizin mevcut!", - "6ee1e36c05e03fa9fffd8679802b9cd4": "Dizin başarıyla oluşturuldu!", - "16ae03054adcefefefea0a445bb4bdc0": "Dizin oluşturulamadı!", - "d6ed4f1a1cbc9a3c09c4cab0587c9675": "Bu dizini düzenlemek hizmet istisnalarına neden olabilir!", - "e4db5a6f17eff85861e5d13d5cb29538": "Boş olmayan dizin silinemez!", - "18d4019ccaddd6709b38fa3a0a6f36bd": "Dizin geri dönüşüm kutusuna taşındı!", - "7f01a8955f1313d39d7305c5a8f369d3": "Dizin başarıyla silindi!", - "50f496129c1f31d2c5945f7626b85b79": "Dizin silinemedi!", - "1dc8a14e9861fa32b544006590c08666": "Dosya geri dönüşüm kutusuna taşındı!", - "07cbb5e8d174369377832adc0debb2b3": "Dosya başarıyla silindi!", - "f2cbbab1d3bffc73466f6b494c0bd4f9": "Dosya silinemedi!", - "3b9f9f808c2b8cc4e2ebcbc944400e59": "Kurtarma başarılı!", - "1993c6755b58772f028e33223e43629b": "Sorunlar size sorun çıkarana kadar asla sorunlarla uğraşmayın!", - "027ef5979f72a8ad82da2a5d58ee069e": "{} geri dönüşüm kutusundan kalıcı olarak silindi!", - "62dea51f3a49420412addfc2715da183": "Geri dönüşüm kutusu boşaltıldı!", - "f5b5dc046351c258a40f25a76f4ff36c": "Geri dönüşüm kutusu özelliği kapatıldı!", - "7aed5cccfbfccf8f9c6b395993214cf6": "Geri dönüşüm kutusu özelliği açıldı!", - "2af7856d75a678be6c9483fce92fa142": "Güvenlik riskleri olabileceğinden dosyanın sonunda [.] kullanılması önerilmez", - "10863e27eb3cb8450a82141a1a2fe884": "Dosya başarıyla kopyalandı!", - "bc79eb69c067675e6c004685489ec15a": "Dosya kopyalanamadı!", - "04095d5bd6142994817541b148e646b7": "Güvenlik riskleri olabileceğinden dizinin sonunda [.] kullanılması önerilmez", - "5dbee253e0c0010801afe5aa4a75076c": "Dizin başarıyla kopyalandı!", - "fdd370a7fdd0583ab2c525f61354de40": "Dizin kopyalanamadı!", - "4d2d9fb4c5fad04a57ae0d78ff6e3cac": "Hedef dosya adı zaten mevcut!", - "6fd3281a326ae6e050a123f18c85d52b": "Anlamsız işlem", - "1c209b0ee7e706650fc8d7577558262d": "Başarıyla yeniden adlandırıldı!", - "49aa3054caf3f7113a50d7cf8e145db1": "Dosya taşındı!", - "7a33ac075e0ad5cf363f9629c3772d4f": "Dosya taşınamadı!", - "41b80398421e2b8fc213bf916b9c72ce": "Dosya formatı çevrimiçi düzenlemeyi desteklemiyor!", - "35cbcc43b11038bf4a1b07d5ac213175": "2MB'den büyük dosyalar çevrimiçi düzenlenemez!", - "717d5d580ae0c460998885cf68e4a139": "Dosya kodlaması uyumlu değil ve doğru okunamıyor!", - "e11ae7287b857365e57738fee02092d4": "Dosya açılamadı, dosya başka bir işlem tarafından meşgul olabilir!", - "c9ecd22ff27392ab09e84a9173fc2139": "[path] parametresi boş olamaz!", - "e9dc8cb01fc4c70ac2510a9ea7636d98": "3MB'den büyük dosyalar çevrimiçi düzenlenemez!", - "888c9de5fc0f1389080b1c2bfac90ee1": "Yapılandırma dosyası kaydedilemedi", - "6b7b87210440f6f1e97c96967dd1d95d": "SSL yapılandırmasında yorumlanmış 404 kuralını değiştirmeyin", - "b85e34869ba5c840bdf723cba455d12c": "404 yapılandırmasını değiştirmek için aşağıdaki yapılandırma konumunu bulun", - "c980badad6cc4c836a0c61a4373cff24": "Yapılandırma dosyası kaydedilemedi:

Zorla kaldırma komutu: rm -rf /www/server/mysql", - "ba922eb50c83147a9bc0e9f40877d986": "Kaldırma başarılı oldu", - "b860df98df6ab84521a4cef036973028": "Puanlama aralığı [1-5]", - "eb536feb2c569974c2b5cf85cae91041": "Bağlantı hatası!", - "a70188f907ee9df93a4b749109a23460": "Yazılım listesi alınamadı ({})", - "16ad37f5aafc6478f2f6d63d70554530": "Lütfen tekrar tekrar eklemeyin", - "18ea7bdb25b2a66507ffb1bb8b42fefa": "Gösterge paneli yalnızca en fazla 12 yazılım görüntüler!", - "2aa461271893ae0493789e9e8f248fdc": "Kısayol Çubuğu yalnızca en fazla 5 yazılım görüntüler!", - "98cb93d354af289a900cd9e03cee2df2": "Kurulum başarısız oldu!", - "17e4e003ade65cd7a54131d3404d2f98": "Açılmadı", - "bda730e0e5c7444ef6f4f49957ab4f39": "Ödenecek", - "24fe48030f7d3097d5882535b04c3fa8": "Süresi doldu", - "cbfcfe47e7420af71ce1666844c565a3": "Sıralama kaydedildi", - "6a20d0daaec1ce3950a321704041dc90": "Bu eklentinin şablonu YOK!", - "6f5cb320fb3a7e303403054320ad943c": "Yazılım listesi güncellendi!", - "b269cd272a31017961c245e2c84a1a2f": "Dosya indirme başarısız oldu!", - "88183b946cc5f0e8c96b2e66e1c74a7e": "Bilinmiyor", - "84f7539fe8674bb0689347dc7acd7b43": "Arşivde eklenti bilgisi bulunamadı, lütfen eklenti paketini kontrol edin!", - "affc007de5f6791707f3de155a3a642a": "Geçici dosya mevcut DEĞİL, lütfen yeniden yükleyin!", - "117f1bb083c7d556079a3c77093be5e2": "Dışa aktarma başarısız oldu, lütfen izinleri kontrol edin!", - "a8f375e795e0a130837f2a468518a413": "Uyumlu olmayan adlar yalnızca sayı, harf, alt çizgi olabilir", - "a06490b9729d0868e31d834c9bffa0bd": "Belirtilen özel derleme parametreleri mevcut değil!", - "5e71fccee12caedf853a7313ea204721": "Hata: Ad veya hizmet bilinmiyor", - "b6e3d7366f73e2c5e32717d679db6474": "Hata: Yeni bir bağlantı kurulamadı", - "cdffdb1c794cf0dd777b3941a31459e4": "Hata: Okuma zaman aşımına uğradı", - "4573823cc04a9cbf8a7bb254b762db91": "Hata: Bağlantı reddedildi", - "e3c2e426ad1b23571c48ec572ca675bf": "Hata: Uzak uç yanıt vermeden bağlantıyı kapattı", - "db3a5c61130d7ca2046f5f9d0cd08073": "Hata: {}", - "fe723570085e5cc1ecc3dfc88a46aa2d": "İndirme zaman aşımı: {}", - "0eeb116408665d50a2f2092a6c277ee6": "Kullanılabilir disk alanı yok.", - "57a43d6e8c479df3a51421eba70d5621": "Paket sağlama toplamı doğrulaması başarısız oldu.", - "c12c62dd767caf90d62356b47349d871": "Bu eklenti için ilerleme çubuğu alınamıyor.", - "8fde9a929c417549ed2f9144fa68c0d2": "Kural adı yalnızca harf, sayı ve alt çizgiden oluşabilir!", - "868a6f377594831b39e91745c7807e28": "Belirtilen kural adı mevcut değil! [ {} ]", - "5d9cf1940fae6317dd43a7f1b5ca8f36": "Belirtilen kural adı zaten mevcut! [ {} ]", - "473bc9055d76e148db4d28e7bec67295": "Kural adı 3 bayttan büyük olmalıdır", - "5b097df78b1d8c65d8b524354029f114": "Dosya soneki boş olamaz", - "496e2dfba11ca4381ef6277e6e9a62dc": "Dizin boş olamaz", - "f6039d44b29456b20f8f373155ae4973": "Kullanıcı adı", - "3544848f820b9d94a3f3871a382cf138": "Yeni şifre", - "6b1bc4e672d58d46d23502dcd78129be": "Günlük bilgilerini temizleme", - "0e900c57ee4635719ba671229ead12ff": "Görev geçmişini temizleme", - "1dfefaa079cbde4da09e89af6b49ff33": "Ağ izleme kayıtlarını temizleme", - "f59489317e210ec566cf6b6c9e3b20b9": "CPU izleme kayıtlarını temizleme", - "e0976b426e3109ee01a1182b7c04b987": "Disk izleme kayıtlarını temizleme", - "2c1eb277ff700f04b65306399784f875": "IP bilgilerini temizleme", - "4abfe31831aa15dc27ff44067b2bf0d1": "Sistem geçmişini temizleme", - "0c06c1eb5ef47b883f7cbcab9be84e97": "Panel başarıyla paketlendi. Lütfen başka bir işlem yapmak için panele giriş YAPMAYIN!", - "b60091f633dedd493b16f5548e32233d": "Panel başlatma adresi", - "b097eb5212f13c74d1c96b59f65c4dd6": "{} görev başarıyla temizlendi!", - "e82eb2921856b4230611dc1406f60a6f": "Sistem çöpü temizlendi, toplamda [{}] dosya silindi, [{}] disk alanı boşaltıldı", - "0d793de4ae05511630a2eeea9b5528d9": "|-[{}] temizlendi, [{}] dosya silindi, [{}] disk alanı boşaltıldı", - "db62071d34202efa3a0aa1a743394938": "|-Spool temizlendi, [{}] dosya silindi, [{}] disk alanı boşaltıldı", - "a1d3c6c221b8ceaaef8881e09d0a2945": "|-PHP Oturumu temizleniyor ...", - "c16f6a333c0ba871467568be496cbea0": "|-PHP oturumu temizlendi, [{}] dosya silindi, [{}] disk alanı boşaltıldı", - "5d88b58a1c0ba0dee9eeb89a8bcdda36": "|-Geçici dosyalar ve site günlükleri temizleniyor...", - "e038ca57ad9c03f40bec42908af2ccff": "|-Geçici dosyalar ve site günlükleri temizlendi, [{}] dosya silindi, [{}] disk alanı boşaltıldı", - "fa3d217e80478d3c03c437b7fc11432f": "|-HATA, kullanıcı adı 5 karakterden az olamaz", - "4cffae9f32bf898c859a5937268b9727": "|-HATA, çok basit kullanıcı adı kullanılamaz", - "fbcb6a4b1126170666b4c4102afbb43d": "|-Yeni kullanıcı adı: {}", - "cbe2d798534f872748b7cba6615596d8": "aaPanel ile özelleştirilmiş sürüm", - "ec1d9ff2578e1f231696217b2c2d15ab": "Başarısız oldu, panelin mevcut portu silinemez!", - "51708089c15820800d3dd7bd8d8cdfba": "aaPanel", - "fee066b1b93fecf9545758cf9a87c3de": "Eklenti güncelleniyor...", - "c6462fea6d27e4ecfc68ae1944051f77": "Giriş başarılı, yükleniyor...", - "c11f9218de293117d2cd58a009534167": "Tüm eklentiler 6.0 uyumlu olarak başarıyla güncellendi!", - "cc478711642936a519c27b7c388fbb50": "aaPanel CLI", - "cfef992430ab5a7b2373138d4b86425c": "Paneli yeniden başlat", - "95b8b68d1c80ca75e1ab15bf5b9a8394": "Panel portunu değiştir", - "f3013e54b467cdb2fac9a424bae963e4": "Paneli durdur", - "15ea17031cb6a968e3b9ea2b28546c53": "Panel önbelleğini temizle", - "20cdfcd210da305d900d25ec4c084184": "Giriş sınırını temizle", - "ab41db99c7941ef74c37bd97733f7707": "Paneli yeniden yükle", - "315f4fdd99e49c6a2e80a95ce82ba534": "Giriş sınırını iptal et", - "07ed88796641228c3602122cf5075fc2": "Panel parolasını değiştir", - "63d8f2a0e51e9243f91b0285e4e44667": "Alan adı bağlama sınırını iptal et", - "3913f08c2fa53f4c413cc0772f9401d1": "Panel kullanıcı adını değiştir", - "b773a80578cdc8f50d57393d6b0a3d67": "IP erişim sınırını iptal et", - "a6a23a4004f99fef13372de56433edbc": "MySQL root parolasını zorla değiştir", - "bc449263dd0183a82a3d0a03cd8f26dc": "Panel varsayılan bilgilerini görüntüle", - "975687e8a64e2c2842a34ca6d6bf8e85": "Sistem çöpünü temizle", - "84bc199f1a5ce205b0f5fc3e64ef3e95": "Lütfen komut numarasını girin:", - "954be127268a1704a7af22b23bb440e8": "İptal edildi!", - "51c6348531daaf0fb1e84fafa12b5f15": "Lütfen yeni parolayı girin: ", - "34c4edd98a45ea8a13556965a6c4f2b0": "Lütfen yeni kullanıcı adını girin (>5 karakter): ", - "219863186dddc079747a525bb7877a88": "Lütfen yeni MySQL root parolasını girin:", - "c172da334fdcac77f704fa4408dd2f16": "|-HATA, parola boş olamaz", - "a79cf67c04d379c4916dc584c9d8333f": "|-HATA, parola 8 karakterden az olamaz", - "06f5000079703a33b91564159f07770a": "|-HATA, parola özel karakterler içeremez", - "913153f9957100bcf3029e8f3d5bc5e9": "Lütfen yeni panel portunu girin: ", - "39ea14ec0df812219c450ba15230ad2d": "|-HATA, geçerli bir port girilmedi", - "bab5cb07adebbfbd938180d6862a7ce7": "|-HATA, lütfen panel portu olarak yaygın portu kullanmayın", - "00213d6b5423971311e5a47f83081a24": "|-HATA, yeni port mevcut panel portuyla aynı, değiştirmeye gerek yok", - "e1e57838b2c7e1567fb96e20bfd474e0": "|-HATA, belirtilen port zaten kullanılıyor", - "5093d954f09d473d091355fe292920a8": "|-Giriş sınırı iptal edildi", - "e0b1cb1725c8fb29d42fa69d679a73ea": "|-Alan adı sınırı iptal edildi", - "968c7b9246b5ab3d3e7659cea211a20b": "|-IP erişim sınırı iptal edildi", - "b7ad022c6ce9435c43c6760c8ba89b20": "CA yapabilir", - "5d39c57e28ab85457e4949306be619e8": "CA sunucusu bağlantısı zaman aşımına uğradı, lütfen daha sonra tekrar deneyin.", - "721eb0b3ea85b39c22f16d6dfc84bc32": "Alan adı bu DNS hizmet sağlayıcısına ait değil. Lütfen alan adının doğru doldurulduğundan emin olun.", - "b5366a9c53b455fdf8a552c205ca9021": "DNS sunucusu bağlantısı başarısız oldu. Lütfen anahtarın doğru olup olmadığını kontrol edin.", - "4de3dc0403846edfe5ff520837e2bbe5": "İmzalama başarısız oldu, alan adı tam alan adı seti: (.+): {} haftalık yinelenen yayın sayısını aştı!", - "30c0b6ae1acf6137b588473814f3330d": "İmzalama başarısız oldu, mevcut sunucu IP'si her 3 saatte 10'a kadar hesap oluşturma sınırına ulaştı..", - "797e2e43e3fc3737891adc8ab4a1655c": "Doğrulama başarısız oldu, alan adı çözümlenmedi veya çözümleme etkili olmadı.!", - "9efd01f346301888216d77d35ec156cf": "Kimlik doğrulama başarısız oldu, alan adı çözümleme hatası veya doğrulama URL'sine erişilemedi!", - "6c23a7d25119c77017d1aa04761fefe8": "CA sunucusuna bağlanılamadı, lütfen daha sonra tekrar deneyin.", - "b7a370078ae6520cde883252890195cf": "Desteklenmeyen alan adı {}, lütfen alan adının doğru olup olmadığını kontrol edin!", - "1593706a4e3794c75129c8347021f0c5": "Alan adı {} bir çözümleme kaydı bulamadı. Lütfen alan adının çözümlenip çözümlenmediğini kontrol edin.!", - "1d80008b0cc4936ab73047baf061c84e": "Alan adında {} geçerli bir TXT çözümleme kaydı bulunamazsa, lütfen TXT kaydının doğru bir şekilde ayrıştırılıp ayrıştırılmadığını kontrol edin. DNSAPI tarafından uygulanıyorsa, lütfen 10 dakika içinde tekrar deneyin.!", - "81dab277ae106f35a118916e25f3f026": "{}: {} üzerinde yanlış TXT kaydı bulundu, lütfen TXT çözümlemesinin doğru olup olmadığını kontrol edin. DNSAPI tarafından uygulanıyorsa, lütfen 10 dakika içinde tekrar deneyin.!", - "b1bc7e763e87ef08d753a0676a0d5361": "Bu alan adı bu dnspod hesabında mevcut değil. Ayrıştırma eklenemedi.!", - "43901eff07fff70732a4e1d6a732920b": "Bağlantı zaman aşımına uğradı, CA sunucusu web sitenize erişemedi!", - "7cb06b776259c13fa73d3be5577df74c": "Alan adı {} şu anda CAA kaydını doğrulamak için gereklidir. Lütfen CAA kaydını manuel olarak çözümleyin veya 1 saat sonra tekrar deneyin.!", - "09c36cbe592612c2546e60652f2d6964": "Doğrulama zaman aşımı, lütfen alan adının doğru bir şekilde çözümlenip çözümlenmediğini kontrol edin. DNS çözümlenmişse, sunucu ile Let arasındaki bağlantı", - "e10beec48a4a4b433b2fec2eaff64671": "1 saat içinde 5'ten fazla doğrulama hatası, uygulama geçici olarak yasaklandı, lütfen daha sonra tekrar deneyin!", - "239067c8e0586af7c09738e8240438fb": "Yenileme başarısız oldu ve sertifika dizini mevcut değil.", - "c7664672bf11463a4cc40c61aeca77f1": "Yenileme başarısız oldu, hesap_anahtarı eksik.", - "3f56bc50f098e641bb3d42e2d4255cbe": "SSL için başvurmaya hazır, alan adı {}", - "bd6995f087c0dacaecd470ca10539a2b": "Uygulanan alan adları listesi boş olamaz.", - "3b5e16d8f5e1b88c78e494e6601a4d01": "Başarıyla alındı, lütfen alan adını manuel olarak çözümleyin", - "cf6b24b05942cd0c3723d7a4c25e6138": "|-Sertifika kaydediliyor..", - "bbb21c1842b512148f687ea068553c85": "|-Otomatik yenileme yapılandırması ayarlanıyor..", - "c06d0b48f82d74d3c2854dabdba12d93": "|-Başvuru başarılı ve otomatik olarak web sitesine dağıtılıyor!", - "569488d54cbcce1331896e4254f63a92": "Başvuru başarılı.", - "1851141907c561e6ac67cba17e549232": "|-ACME protokolü başlatılıyor...", - "78e67927014eab1b84eb285b6057fca6": "|-Hesap kaydediliyor...", - "4896fdcb74c0e04522c8d3d89d08d569": "|-Doğrulama bilgileri alınıyor...", - "1016ed461618afd2dde9a4a709a4d080": "|-Doğrulama bilgilerini ön uca döndürün, kullanıcının alan adını manuel olarak çözümlemesini ve doğrulamayı tamamlamasını bekleyin...", - "81a3b1828b60659bc3d3c9711e66f0ba": "|-Kullanıcı doğrulama isteği gönderiyor...", - "f147fc272d665cd009e1108c5fb6993d": "|-CA'dan [{}] alan adını doğrulamasını isteme...", - "4c699430325d31db3d7b43b0a0999364": "|-CA doğrulama sonuçlarını al [{}]...", - "2b7dd2a937ababf46efb11073787664c": "|-Tüm alan adları doğrulandı ve CSR gönderiliyor...", - "1de253d3eb460e60480626694092d89e": "|-Sertifika içeriği alınıyor...", - "a0c16d2f8e2aeba9dd9a3b040861ff39": "Sertifika alımı başarısız oldu, lütfen daha sonra tekrar deneyin.", - "89edc2a5e6ccecc2bdbdd1f9536fb90a": "|-Hata: {}, başvuru sürecinden çıkıldı.", - "94417e0c15f634f59ce15128ef146686": "|-Hata: {}, başvuru sürecinden çık.", - "03268bb5fa60cf57ac7c30f1f99dab01": "|-Başvuru sürecinden çıkıldı!", - "be2d0d9f1a9d04ff22b70bd5bee9b8ef": "dns kullanarak bir sertifika istenirken bir hata oluştu", - "409bd1860bf065c68921473fc2266347": "|-Çözümleme kaydı ekleniyor, alan adı [{}], kayıt değeri [{}]...", - "8b2ee088303a8001eaedb8c62e3de7e3": "|-Çözümleme sonucunu doğrulamaya çalışın, alan adı [{}], kayıt değeri [{}]...", - "a11fba95c84fff590acd7dbdea4528e6": "|-CA'dan [{}] alan adını doğrulamasını iste...", - "676e1a4f8e4561ad55045461f3421d62": "|-CA doğrulama sonuçlarını kontrol et [{}]...", - "d60d5b998a8ef802ba7f5b5ed343e256": "|-Bir hata oluştu, tekrar deneyin [{}]", - "71087be1722815599ebecd0fd0f58b5e": "|-Sertifika içeriği alınıyor...", - "6d1e7a222bfe888debd080a117490c9d": "|-Çözümleme geçmişini temizle [{}]", - "77619ceb7742d8a8f87e52b02592d873": "İmzalama başarısız oldu, alan adınızı doğrulayamadık:

1. Alan adının ilgili siteye bağlı olup olmadığını kontrol edin.

2. Alan adının sunucuya doğru bir şekilde çözümlenip çözümlenmediğini veya çözümlemenin tam olarak etkili olup olmadığını kontrol edin.

3. Sitenizde bir ters proxy ayarlanmışsa veya bir CDN kullanıyorsanız, lütfen önce kapatın.

4. Sitenizde bir 301 yönlendirmesi varsa, lütfen önce kapatın

5. Yukarıdaki kontrollerin bir sorun olmadığını doğrularsa, lütfen DNS hizmet sağlayıcısını değiştirmeyi deneyin.

", - "4d6822ed3bd01f379f2ab4b1e68068d7": "|-Şu anda yenilenecek sertifika yok.", - "b74c00ca5fee122c49cd66ce3d91b2cf": "|-Yenileme başarısız oldu:", - "140bda69874872f8402052c613c0b3b9": "aaPanel Uyarı Test E-postası", - "76a1ec4a3fcdc304394ff14dc90f8072": "Panel iş parçacığı sayısı 1-1024 arasında olmalıdır", - "dd7e82b5fb3c67e3e41d96f22ba838fd": "Yeni panel portu", - "40624aabb99173387dd6d575759b12db": "certPem parametresi eksik!", - "37db9679113eef382992a1478f1b79ff": "privateKey parametresi eksik!", - "d2174fc17fcd785706114088b84dbbce": "Geçici giriş URL'si oluşturuldu", - "b5101eb6e685091719013d1a75756a53": "\\1", - "0bfe47819da04212a33dac83b71430e8": "\\2", - "946fb31f804cdde218dbf05d7183e94e": "MD5 tutarlı!", - "d83dadd8fcee6c014db8af454bc279fc": "Başarıyla indirildi", - "1336bbfcadd9119f86ecd48c2d9fb770": "Veritabanı bağlantısı anormal. Lütfen kök kullanıcı yetkisinin veya veritabanı yapılandırma parametrelerinin doğru olup olmadığını kontrol edin.", - "ee102508d210854b6fc7da18e598140b": "Oluşturulan parola tespiti başarısız oldu!", - "6e72fc97e2f1be35ae40ca21d6b1df38": "Bu wordpress'in veritabanı bulunamadı, bu veritabanını manuel olarak sildiğiniz için olabilir", - "6df8e9d3a4e149ff12445d981f6fc244": "Parola sıfırlama başarılı", - "f748d4e467e9f4f27540b6f5ce5b1ef8": "Bu özellik şu anda yalnızca Nginx'i desteklemektedir", - "9747bb4f34180afd2f9a681397b269fb": "Başarıyla temizlendi!", - "015d337f0646fe4b8a89b30041436e7f": "Başarıyla güncellendi!", - "321b336d92b3e894060637528499dcf9": "Dağıtım başarılı oldu!", - "1850193ca4b37a25ee94db903eddc16f": "Dağıtım başarısız oldu!", - "b390405514d6291f511c9f3a4fb31249": "Site ID'si sayısal olmalıdır", - "e650b17a0b833e3bcdd8e859b37ce94e": "Bu veritabanı bulunamadı!", - "a0adaeeb3642584bd931c757b6f71d78": "PHP FPM optimizasyonu başarılı oldu", - "f11ab236591dc778c39c9429e141dba2": "Mysql optimizasyonu başarılı oldu", - "d145648d4281cb3266714c5986bcab8b": "Nginx FastCgi önbellek yapılandırması zaten mevcut", - "9c373c2796e866dc590f9dc7c80609da": "Nginx FastCgi yapılandırma hatası!", - "2750e686fcc97deec0122789a059edbd": "Nginx FastCgi önbellek yapılandırması tamamlandı", - "615681ddc1b0efb9f6d434adc1451bb7": "Nginx init FastCgi önbellek yapılandırması zaten mevcut", - "a61c53dff88925e428f2a295b18ac807": "Nginx init FastCgi yapılandırma hatası!", - "28b386f7ab5957184b60f47c0e540d68": "Nginx init FastCgi önbellek yapılandırması tamamlandı", - "b7082bd55a134bb3a142570572e1c469": "Web sitesi yapılandırmasında FastCgi yapılandırması mevcut değil", - "c0ff8a4b4b8f68c4ba7df88588291590": "Web sitesi yapılandırmasında FastCgi yapılandırması zaten mevcut", - "e3a6621c5ea036c8f82d3f2d343f1bc8": "Web sitesi FastCgi yapılandırma hatası!", - "4c87778ab71a4e47170ccafd6edb4922": "Web sitesi FastCgi yapılandırması tamamlandı", - "90d0982f5d024da53b21f69d3f0c8cbb": "Veritabanı mevcut DEĞİL!", - "b376175f0c97d2ab7c37e44ec3b3a1b9": "mysql5.1 desteklenmiyor!", - "0161305479129bbe47bb020605a15d40": "Kurulum başarılı!", - "5c9b599b99f7a169b9cd25f7045eaac5": "Senkronizasyon başarılı!", - "b6601359f1ae1067d4c4d271b7407639": "senkronizasyon başarılı1!", - "10a1984f6c5b935c5d8c7d4b4345e1e5": "senkronizasyon başarılı!", - "86da84e8e3aacf73ee745caee5904268": "senkronizasyon başarısız!", - "8ed30fe61ac59c9e1cb4a75d9a48d477": "Başarıyla oluşturuldu!", - "330e51da1228a070540f82eb8e78155c": "Başarıyla kuruldu!", - "7ac73ef676faaa8a5f8e3924b4d151e3": "Kullanıcı adı veya parola 3 karakterden az olamaz", - "88d8a4565feba5ad270c00e85564b96d": "OpenLiteSpeed şu anda desteklenmiyor", - "c1f8cf125da0d6db1c4e0d09033c9ddd": "Lütfen bir hesap veya parola girin", - "bd7fb7b4280616cbe5de49eb1ee8cc3a": "Lütfen korunacak dizini girin", - "8c48114518721e3966cd4553a0cee705": "Lütfen Adı girin", - "dd65d82f6868cfa127f86e5658674829": "Site parola koruması ayarlandı, lütfen iptal edip tekrar ayarlayın. Site dizini --> Parola erişimi", - "1cc6b0e84b90d0ca0b863fccc0f33b36": "Dizin korumalı", - "b7526fc6f8b21e71ea1e290a982df4c9": "Başarıyla oluşturuldu", - "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2 MultiPHP'yi desteklemiyor!", - "69be778c38b9edc0ab3040c478c39370": "HATA: %s
,<,\\\\,", - "f0f290884251850f0d9fa6afc91d39c1": "Alan adı {} hedef alan adıyla aynı, lütfen seçimini kaldırın", - "ff1251600d8019bbf4280cafc534a39c": "{}, hedef URL yönlendirilen yolla aynı", - "664d009c794ec236879112599b14a697": "Lütfen nereye yönlendirmeniz gerektiğini seçin", - "e63cd7427eff8a5cb737dfd1118f11ff": "Web sitesine erişilemiyor, lütfen web sitesinin düzgün çalışıp çalışmadığını kontrol edin", - "2f0e4710a58107860d6332f0d0192ba9": "web sunucusu kurulu değil veya bilinmeyen web sunucusu", - "79ec80b46087125542314cc116850dd4": "404 yönlendirmesi başarıyla ayarlandı", - "f1af189cd525a4d5180b8ccdc305a926": "%s
Lütfen SSH'a girin ve komutu çalıştırın: pip install mysql-python", - "ea8dca4dbb80a367725ec532356d4ad1": "Veritabanına bağlanırken HATA oluştu, lütfen veritabanı durumunu kontrol edin!", - "da422f411f10ca19fbfc0c49d7b27279": "MySQL root veya kullanıcı şifresi yanlış, lütfen sıfırlamayı deneyin!", - "99e3ce74a83862e58ec4ef7c7e141aae": "Veritabanı kullanıcısı mevcut DEĞİL!", - "a6c2bafea90fd4f58496b7de0c879daa": "İkincil veritabanı silinemedi, veri dizini mevcut değil!", - "c5352c3364b49f09f07e517d6f5e2a93": "Yürütme başarısız oldu, otomatik onarım denendi, lütfen daha sonra tekrar deneyin!", - "ced1ff377b05e3ba5ae9837ac8c05b80": "Veritabanı [{}] mevcut değil!", - "c38111d1a26efef2f1d89b0dfbef1ee7": "Veritabanı [{}] bağlantısı başarısız oldu", - "24a92be5bb3acba016a9274b9fb19c02": "Silme başarısız, veritabanına bağlanılamadı!", - "d10533dec09d380264317010ec3e5af8": "Veritabanı verisi mevcut değil!", - "db548c645b7e4e30814165cd703be4cc": "Veritabanı verileri geri dönüşüm kutusuna taşınamadı!", - "06e6d1c8954814a2b29d4b4372b81b59": "Veritabanı geri dönüşüm kutusuna taşındı!", - "c54a0be87c240156a0403ba306527fa7": "Bu veritabanı için Geri Dönüşüm Kutusu mevcut değil!", - "3709ae738cf2d6d0c179d816c02c66ae": "Mevcut veritabanında aynı ada sahip bir veritabanı var. Veri güvenliğini sağlamak için kurtarma durduruldu!", - "2fe4287f5ec52dd09118ba4d6a42747b": "Veritabanı kurtarıldı!", - "1381dce91057a208e5a3e202526fbf6e": "Veri kurtarma başarısız oldu!", - "0f6b8bb328918f160baf00077eb21846": "Root şifresi boş olamaz", - "e6271141086fae7863bfe1d5b6ac3e24": "Veritabanı şifresi özel karakterler içeremez!", - "5ed48eedb205aa687178500c75228409": "Root şifresi başarıyla değiştirildi!", - "0c18dde1f9edfcff23eb2c2ec06673a2": "Uzak veritabanının root şifresi değiştirilemez", - "5acf42ae8ac3a8558964691403e32ead": "Değiştirme başarısız, veritabanı kullanıcısı mevcut değil!", - "10b75740108b26c220eb7e9bdfe18182": "Veritabanı yapılandırma dosyası kontrol edilemedi, lütfen MySQL yapılandırma dosyasının [/etc/my.cnf] var olup olmadığını kontrol edin", - "98925ed54b314b48c7584b73affb9556": "Veritabanı şifresi boş olamaz", - "4d15b1b40d88837aa34b5fd3c5cf1cce": "Desteklenmeyen veritabanı türü", - "39120f2e6a6a039741500e300f1dfe5f": "Yedekleme başarısız oldu!", - "d30de818714c05511e9bcf3333bcc664": "VERİTABANI_GİRİŞ_HATASI", - "12c37754d1604dc1b9154eee1f460efe": "Senkronizasyon başarılı", - "85b08b086888f8ee2680ddd3398f3574": "Senkronizasyon başarısız", - "e9ca862378b02ba5fea97e3a6f9fdd5e": "Test Veritabanı", - "5c846631ce72048c89ced433e4906107": "IP adresi boş olamaz!", - "712d5c60bf965a53ad98f51a18328fb3": "Veri dizini uzunluğu 32 karakteri geçemez", - "b6c2b300fce65a2f92364862af7f0358": "Veritabanı yolunda özel semboller bulunamaz", - "8dfd382b72c921093f5a3301b74def8e": "Mevcut depolama diziniyle aynı, dosya taşınamaz!", - "cb458646a9e62deb6d7989de0029f17a": "Veritabanı taşındı!", - "cfcd208495d565ef66e7dff9f98764da": "0", - "a030c44033df4fd3ed1e860220df8d65": "Lütfen ikili günlüğü kapatmadan önce MySQL ana-ikincil çoğaltma eklentisini kaldırın! !", - "22875aa10a21e1f51ae93cd2ee20fa07": "innodb_log_buffer_size 8MB'den az olamaz", - "c7846dcb854a38c1e2e62793d648c0a7": "MySQL şifresi HATALI!", - "8435eeb739684eaee648c5ddb368543a": "Binlog etkin değil veya binlog dosyası mevcut değil!", - "b1dd73e742e604bdbb83829a41c6846a": "MySQL durumu anormal!", - "c5c74be29ca306d24bddd4f6031d0220": "Parametreler eksik! gün", - "8bfe471aeee92b5cfc257706f3667e80": "Veri güvenliğini sağlamak için son binlog'lar silinemez!", - "2e3b42799f015adb46c85d60b8b1d7bb": "Temizleme tamamlandı!", - "048b0b74236019df8c9f2c0e9470765f": "Veritabanları alınamadı", - "34e30525f59e7e2202d51d1314c119aa": "Başarıyla onarıldı!", - "9133beb60bf19699376626515071105e": "Onarım başarısız oldu!", - "ee3025fb775c175b755f78732269dfc4": "Başarıyla optimize edildi!", - "84876979c316886c9143e5b895476405": "Optimizasyon başarısız oldu veya zaten optimize edilmiş", - "b263d2d0b9a2fe2cb5ea3c37240e7fe7": "Başarıyla değiştirildi", - "d72873c28781d7d42a8a50e344a38c65": "Değiştirme başarısız oldu", - "5a513bca80ba9e849cd64e6df029b53a": "Token bulunamadı", - "beb887915b2334d0bcb0f23910ee03fa": "{} e-posta adresi için abonelik iptali başarılı", - "ced5be071465948d917518318181e530": "İşlem başarısız, Token süresi dolmuş", - "ed0b8b7de7d6124343c2c12f29c84a2d": "İşlem başarısız, Geçersiz token", - "2759543b1abc5021bf03258b0032b6fb": "E-posta bulunamadı", - "238865a1f3c33fae77a59ce42a641346": "Lütfen bilgileri eksiksiz doldurun", - "9bd45853e9c7cca825b227f1472901c8": "Not adı 7 karakteri geçemez", - "bdd1b7bb74543fb0fae1e75f372551d8": "Ekleme başarısız, lütfen URL'nin doğru olup olmadığını kontrol edin", - "1cb8f68ece43505dde623d0e297426ac": "Bildirim başarıyla ayarlandı", - "557738e2e8b82bbb847ab9ecc6d83c8a": "DingTalk bilgileri yanlış yapılandırılmış.", - "3781473f4af411ebb3610977e7275a3d": "DingTalk yapılandırma hatası, lütfen DingTalk robotunu yeniden yapılandırın.", - "94418c3f275f6e8bca8e35751495f370": "Feishu bilgileri doğru yapılandırılmamış.", - "16ff838f760194a432da12e9bb4895d9": "Gönderme başarısız, lütfen gönderen yapılandırmasının veya alıcı bilgilerinin doğru olup olmadığını kontrol edin.", - "203b93a974c7142ca4b203443af817d9": "E-posta bilgileri doğru yapılandırılmamış.", - "8b42e24f005c452259add632215a77a8": "Güvenlik girişi karmaşıklığı yeterli değil
1, uzunluk 9'dan az olmamalıdır
2, İngilizce harf + rakam kombinasyonu olmalıdır.", - "9ad1940cfc7c1786a62bb3d784420413": "işlem başarılı!", - "14e1e77b50aaf60272775c43894560ad": "Telegram bilgileri yanlış yapılandırılmış.", - "39ddfbf65700efc9a7d16b22ebb867f3": "Telegram yapılandırma hatası, lütfen robotu yeniden yapılandırın.", - "691e87b47c012051a2e82b3c87a829be": "gönderim tamamlandı, gönderme sonucu: Başarılı.", - "c13967b1cbadeb9e2138223c0ed9fa0d": "gönderim tamamlandı, gönderme sonucu: Başarısız.", - "ed702c2212ce3c1acf4b5435100b44c2": "Bilgiler doğru yapılandırılmamış.", - "b1ffdb005a4c842221dd8267c47de40a": "Bildirimler kapatılmış, lütfen açıp tekrar deneyin.", - "75983b18d2ecbb82d71afea42138a28b": "Kullanıcı bağlama bilgileri alınamadı", - "f9d875367d71359c197b5fe0894cdfa8": "Bulut bağlantısı başarısız oldu, lütfen ağı kontrol edin", - "4ad85d46374d522bcd3bf2eff2cf2600": "Kullanıcı bilgisi alınamadı", - "2f9fc94872130dd0fb976fc6b0b96514": "WeChat mesaj gönderimi başarısız oldu. --> {}", - "0b27e119bbc4a725cbf863dfd52dc473": "tanımsız fonksiyon_adı", - "a969a46fc07219c039a985f8f7b61cf6": "yanlış parametreler, tanımsız fonksiyon adı", - "cbf8d9b9372ca5f52268a5dbbb6af5e9": "dns_id bilinmiyor", - "36150f18886cfdedefd8e0ce031ebaa6": "Yürütme başarısız oldu: {}", - "315e5172120e0508a5da1da63fe80903": "Ayar başarısız!", - "d78db61be0fee99b043b646bcb10a1cd": "ayar başarılı!", - "22af6aacc48ecde709e357b7f689fa4a": "Lütfen ayarlamak istediğiniz alan adını seçin!", - "703f48fb3880275147fb6341a601d75a": "Belirtilen DNS mevcut değil!", - "6afe3a685b340d46d1eb5e96f46d8b53": "ayar başarısız!", - "25d70741ea5481da5457bc36f316f2cd": "Ayar başarılı oldu ve {} kayıt güncellendi!", - "a0db66604e4493a5782f45097fcad859": "Bu tür zaten mevcut.", - "ffbeb35495d2bfaaf4957cc8db9cd8e6": "başarıyla eklendi!", - "e7d698b3874686530ce8eade7d46cd89": "silme başarılı", - "5ccf1f7d5db89204eee4cfdcdb0944d4": "silme başarısız", - "7c7d6bc523a6ba94346ef9419f4b93a6": "başarıyla silindi", - "838d94727e13707491b9d9c9510ba453": "Senkronizasyon başarılı.", - "33c678a30e066da93ac44a17629f3900": "tanımsız dns_türü", - "ac612c51ba24c8559bd045e2c3706011": "Modül dosyası {} mevcut değil.", - "4c9eea0839e8a2516ca1d34407cf0305": "DNS kaydı ayarlanamadı: {}", - "7bc387e9ae161a403dac4ccfebbf012e": "{} alan adı için geçerli bir DNS API anahtar bilgisi bulunamadı.", - "e5a1f5bb9e10d065f27eac8d4e8c2e8d": "DNS kaydı silinemedi: {}", - "7c89ed1def10408d3584152d2ad2eb33": "Alan adı zaten mevcut.", - "55ab92952e1b4dca79cda76843eebe99": "ekleme başarılı", - "584a4244515646b153102a8d302e8546": "Panele giriş yapılmamış, bu yüzden buluta yükleme yapılamaz!", - "347dae5469b16521e17a37cc2e3168ad": "Belirtilen sertifika yok.", - "cf25e0eebbaec98c374104d843fb31fe": "Yerel silme başarılı oldu, ", - "6e1fa7be6a999db147fe218c1e5a85ca": "Buluta bağlanılamadı. Bulut verileri silinemiyor.", - "efbfd7f8e586c8efafccb9260aec988e": "yanlış parametreler", - "1c9a090e06b2f4d3858bd2141b97133f": "İşlem hatası:", - "69d0b962baab44b9e0df62a51012996b": "Panele giriş yapılmamış ve buluta yükleme yapılamaz!", - "3e5b88adc8b76d44032b4f54f2a4dc29": "Belirtilen sertifika bilgisi yok.", - "4fa5aad0ed4116fef4e615297106ca98": "Sertifika dosyası okuma hatası", - "e61a80b8cfc84266cc6da96a589f389e": "Buluta bağlanılamadı", - "3098a079086bc6216453ef84da5b9504": "parametre yok", - "670a25b9478103f18df9dae288ea9680": "Sertifika mevcut değil!", - "ef703ece601c1e3204353eaba0cd7062": "yanlış parametre türü", - "cad878a2802e3f05a8f0b94822b123ef": "Sertifika bilgisi yok.", - "c3c25b414fbc136ec923a6d770fceedf": "Sertifika zaten mevcut.", - "a93ac12141fcab1f5ddb502e738a4494": "Başarıyla kaydedildi", - "9fe357faf3332a5040d055fc390945ad": "Sertifika bilgisi bulunamadı", - "3ff7e4a7ba896ece34407eed8e2c6489": "Sertifika Let's Encrypt tarafından düzenlenmemiş", - "44eb815db7510a33f531b5b062964bb6": "Oluşturma başarılı!", - "2e69adb0366a9a6daea00860367ac03c": "Oluşturma başarısız!", - "378dfed31bb76afb115821875780c68f": "Panele giriş yapılmamış, ", - "c68d5b6b7aa83937b4d12f88fbd1b130": "Bulut verileri alınamadı", - "49b5863032401b0857eaeaa17c0cddad": "Sertifika bilgisi bulunamadı", - "2de69e10f0a8a2c7e640011e06eaf229": "Gerekli parametreler eksik.", - "6e28b57028810b7101ed93200348e6fd": "Sertifika bilgisi bulunamadı.", - "5ff082a692a93d7aff84fffe2515e9d9": "Hata kaydı yok", - "5efde395239afdd2df0b9a32c159768f": "MySQL kurulu değil!", - "dacf49abac88060f508283464e6488b3": "Günlük dosyası mevcut değil!", - "cc04dd5405df97665d385bf9f945a1a5": "[{}] Web sitesi yolu alınamadı, lütfen IIS'de bu sitenin var olup olmadığını kontrol edin. Eğer yoksa, lütfen panelden bu siteyi silip yeniden oluşturun.", - "5043b4dd5ee84b81c695150ce7b71a1d": "Lütfen yaygın programlar için varsayılan portları kullanmayın!", - "6bfd22d9b1190dd6f3252ffc5f07843c": "Başarılı kurulum", - "9ce49cccc03f08a6f144e6b2951065ca": "kurulum başarısız oldu", - "6ec9c7ee4154392f5dcc682fc786e84b": "bilinmeyen kontrol komutu!", - "4d0e2b9d7d854b99d31322e347a8a358": "güvenlik duvarı {}", - "0024ce604e62e9ada858f0e1faf08fd5": "Girdiğiniz IP adresi", - "330683b7ebc12ef31c9b1c21b95f9d92": "Lütfen devam etmeden önce güvenlik duvarını etkinleştirin.", - "d27cddcec5e0f66a566fbcdceb5dfef6": "Başarıyla silindi!", - "271bac9db0d6fb9f971271a8f37ca6c5": "Lütfen önce dnspython modülünü kurun: btpip install dnspython", - "4fe093af429d1f1fc2198447a1025931": "Parametre hatası", - "03460a8fbae274ee5f04e0ba1fa34812": "Mevcut özellikler profesyonel sürüme özeldir", - "7f17f95382055aefa5d3e915c72a98d4": "Lütfen alan adını girin", - "35c9657c6576e84644303a7ad43318f5": "Alan adı bir IPv6 adresine çözümleniyor ve port kuralları desteklenmiyor.", - "49f648bea338734c76f49de41c91aebe": "{} alan adı çözümlemesi başarıyla eklendi", - "2edad93b0f08e091c3cc25470e8ddf6f": "Alan adı çözümlemesi yapılmamış veya çözümleme henüz etkin olmamış. Eğer çözümleme yapıldıysa, lütfen 10 dakika sonra tekrar deneyin.", - "7a3359de6c4391fe9a15eb0425846fd8": "{} alan adı zaten mevcut", - "4fb42cb76f14ea60b67f9bceb6c4a49e": "Tüm IP kuralları kaldırıldı.", - "0b3157eba7dd3451bc0de1c6ca480ec2": "İşlem başarılı", - "932c825a6aee54ff754f33c628cd90bc": "Bu port zaten mevcut, lütfen tekrar eklemeyin!", - "c49175dd1fdb203713f6c1476a7f91b3": "Bilinmeyen kontrol komutu!", - "2faec1f9f8cc7f8f40d521c4dd574f49": "Etkinleştir", - "8d66632de28752245beaa40b1ccc1cbf": "Port yönlendirmeyi kapat", - "2d5f7bdbdb53fff3cd55702cbdbfa8bd": "Lütfen ülke adını girin!", - "f8bacfec9ade03b0f3584356b898fca8": "Ekleme başarısız oldu", - "eac00ab48eb660db9a0929e6f036ecf2": "Bu alan zaten eklenmiş, lütfen tekrar eklemeyin!", - "805139d226669cfd0320c760cb10e87c": "Lütfen doğru alan adını girin!", - "969a6c87a281f49bd8fc2c1e43f66ec4": "işlem başarısız oldu", - "0683e26aace0f0c175199272031ce3e6": "Port boş olamaz!", - "8e7387f80c2d22c7515b38afef01b9c2": "Parametre geçiş hatası, lütfen port alanını belirtin", - "926dba790adb1d53c53941a06ccb2da7": "Port boş olamaz", - "705c5fd65ddbcaea039c3aa2f5e135ee": "Port aralıkları desteklenmiyor", - "84cd1055b1130ac448baec04de07d986": "Port sayısal olmalıdır", - "7d134add7af4d8e6fdf31cde8332da30": "Port aralığı 1-65535'tir", - "f11c2e32a42274ed9160658e259b2e58": "Yoksayma kuralı başarısız oldu, {}!", - "8c7cabcdcfe7a6ed8b0e27b04ad408e6": "Kurallar başarıyla yoksayıldı!", - "f5800cf5bc9b3d8aee2ea9222951ac93": "Yoksayma kuralı başarıyla iptal edildi!", - "85056ee18e1ac6fefa9f955da5a155e0": "Fail2ban eklentisi kurulu değil", - "dfda9d0c9d44e155e4125ebccfcbea99": "Kilit başarıyla açıldı", - "6ed05063a343a4a8c2fb6bb191f57644": "Durum normal, atlanıyor.", - "29833bee6957ec87ae7e9f81346a0929": "Hizmet kurulu değil, atlanıyor.", - "f99d5d784d98d4e59b100ffb596fbc9a": "Günde bir kez gönderilir, atlanıyor.", - "2e11d603b68f16cce28a92f1fee630d4": "Kalıcı profesyonel sürüm, atlanıyor.", - "887755b06aa757db733fcdb5c4b90d8e": "Eşik değere ulaşılmadı, atlanıyor.", - "944ec5555dd02ca9855e2aad5f31ecc3": "Süresi dolan sertifika bulunamadı, atlanıyor.", - "d7316ce06449be2b2961a61bc8b90044": "Aralığa ulaşılmadı, atlanıyor.", - "b388dbfa7884f3af33ba7551726ec631": "Panel giriş alarmı yalnızca bir alarm modunu destekler.", - "bc5339f81ff38e283bb920dfb33ca914": "Panel giriş alarmını askıya almayı desteklemez, askıya almanız gerekiyorsa lütfen doğrudan silin.", - "b5db9d7f14a728ef1b07894e6c776f4b": "SSH giriş alarmı yalnızca bir alarm modunu destekler.", - "cbcde9242de40f0cc518436d69e567f8": "SSH giriş alarmını askıya almayı desteklemez. Askıya almanız gerekiyorsa lütfen doğrudan silin.", - "f03b55547b4adc9333d232a1cb83e437": "SSL günde bir kez gönderilir, atlandı.", - "a0e74493945a50b77b66297bf41b1168": "kullanılabilir site yok.", - "c46efda9f9b8b41255ed3bc215bdb2fc": "günde bir kez gönderilir, atlanıyor.", - "76670478dc410ea9dac92449744be0f5": "Güncelleme bilgileri alınamadı.", - "5a7e11fe74ccbd5275a23cd8eea35d81": "Normal durum, atlanıyor.", - "6ca2675195e92143f625d036f2f9cf39": "Hizmet kurulu değil, atlanıyor.", - "7fa2732a0c267c57a13aeab79cc50677": "Eşik değere ulaşılmadı, atlanıyor.", - "d3c3a9bfb08603870aed3d34085f21ef": "Süresi dolmuş sertifika bulunamadı, atlanıyor.", - "e2eb774c78e2d0b8801cbea7221b555e": "Aralığa ulaşılmadı, atlanıyor.", - "f2458ad2b43110cfc09fac4b29508acf": "Yapılandırma hatası, ayarlanamıyor, lütfen şu komutu kullanarak düzeltmeyi deneyin: ", - "8f17aebb2889752cf3c60ac571167c8b": "Koruma dizini belirtilmedi", - "100f712f58657782dda9a5bc070e0248": "Parametre yanlış", - "b0186e5e273a163a78c04376a5756b1e": "Belirtilen dizin mevcut değil", - "2226683c8d89df274e2ded7e04fc4a82": "Sistem açısından kritik dizini varsayılan yedekleme dizini olarak kullanamazsınız", - "e69cc1102c087a819764e93d50ab3ef0": "Belirtilen web sitesi bulunamadı.", - "a584585f2e3445e4d2d93865bb0c7952": "Belirtilen veritabanı bulunamadı.", - "fdf95ff2f0a3298c8a83aad5255780e5": "Veritabanı [", - "35936286a74058c49c309b2a7b6bcc27": "Veritabanı kullanıcı adı geçersiz!", - "e2d70330883c9001c29e0225b6c99e9c": "Veritabanı adı geçersiz!", - "68519350e49a18c7380764a80dd6daa9": "Parametre geçiş hatası, eksik parametre {}!", - "152b651d5c0151cc3864d20d187d77fe": "Geçti!", - "bea367683a2238e537e3833d0b15622e": "Belirtilen sunucu zaten mevcut: [{}:{}]", - "0b5f04d53d3af37f88b9b46b568d1dee": "Ekleme başarısız oldu: {}", - "0667c3c8ef82f94545b286b69ef83030": "Parametre geçiş hatası, lütfen tekrar deneyin!", - "4621e9c9b573b1bc868d310934d04cac": "Belirtilen uzak sunucu mevcut değil!", - "81eef63c48701d6d256ad3e7789bd8f6": "Başarıyla silindi: {}", - "c1f0a2e54f38603c731c9625f35aaa11": "Başarıyla değiştirildi!", - "072b1fb2c5c32e99fea89190987f1511": "Düzenleme başarısız: {}", - "0267067a2f76a814e9f2c9c111fa6a2e": "MySQLdb bileşeni eksik!", - "b1b74781e4481f083f18ad6719a6b583": "Veritabanına bağlanırken HATA oluştu", - "94bce4b2a745d07c681c29af6824d435": "Veritabanı bağlantısı zaman aşımına uğradı, lütfen yapılandırmanın doğru olup olmadığını kontrol edin.", - "34fbe37d35b2a1bc1a58bdcc559be395": "MySQL şifre hatası.", - "3d28138b07e32fc589d1a654980b1c28": "Maksimum bağlantı sayısı aşıldı, lütfen daha sonra tekrar deneyin.", - "f5f1c56c404d98779a4fbe5630f7d778": "Veritabanı bağlantısı başarısız, lütfen root kullanıcısının 127.0.0.1'e erişim yetkisi olup olmadığını kontrol edin.", - "a9905dc3078535a661eb1aeb06f5a6da": "Veritabanı şifresi yanlış!", - "b99ad6bb4ca9c32cc31655c1f26ad347": "Bağlantı zaman aşımına uğradı, lütfen TCP/IP işlevini manuel olarak etkinleştirin (Başlat Menüsü->SQL 2005->Yapılandırma Araçları->2005 Ağ Yapılandırması->TCP/IP->Etkinleştir)", - "734539622328115b6a79770792621598": "Belirtilen veritabanı zaten mevcut, lütfen tekrar tekrar eklemeyin.", - "d0f9cbbc082071764bd58cb868dc86d8": "İşlem başarısız oldu, uzak veritabanı bu işlemi desteklemiyor.", - "2ff54c9774281fd464a75fac44b2bbee": "Yetersiz izinler, lütfen root kullanıcısını kullanın.", - "d4e4cbdf86adbbf8338c46fa850b0d97": "Oluşturma başarısız oldu, SQL Server GUI desteği gerektirir", - "0e50ad3c23c4eb42db81e7ea3da4848e": "Parametre geçiş hatası.", - "9c367cb765f842bfe6a0465674b8d311": "İşlem başarılı.", - "7a48d7e0ce17e4a5ad1dadbfa199e464": "Geri Yükleme Başarılı.", - "e9bc861d80a7d42ec15bcdb7e5529cda": "Geri yükleme başarısız.", - "011f5bc126ef873c518707207467b8bf": "Mongodb hizmeti henüz başlatılmadı!", - "22ccd99629b3c3d5a8533884821f4189": "Veritabanı şifresi boş olamaz veya özel karakterler içeremez!", - "c976dec7ee3b051c53f9761bd9aa73c2": "Veritabanı şifresi Çince karakterler içeremez, lütfen şifreyi değiştirin!", - "282a7d2dabc5b37dfe75dc697dbbacae": "Veritabanı türü sid, int türünde olmalıdır!", - "e1fa0193b4a126d332026f2c608681c9": "Veritabanı adı boş olamaz!", - "5c58f12f149b01b546d97b25b95c0df3": "Belirtilen veritabanı mevcut değil.", - "89f2b141f7790003d85cee94389a5899": "İçe aktarma yolu bulunamadı.", - "579cd57c80fb53784de0bd606c14891e": "Yalnızca sıkıştırılmış dosyalar içe aktarılabilir!", - "c3522356d75eaa63da51f2c2f6c9bd84": "Yedekleme araçları eksik, lütfen önce [Uygulama Mağazası] üzerinden MongoDB'yi yükleyin!", - "4143861cb7ed8d905267a8ea56ad5935": "Dosya formatı yanlış!", - "2e36f9ef630e2714cd71fe91d4e8bf15": "Şifre doğrulaması etkinleştirildi. Veritabanı yedeklendiğinde şifre boş olamaz. Lütfen bir şifre belirleyip tekrar deneyin!", - "d28fa16e1236163fbc5787469193f18f": "Veritabanı yedeği başarısız oldu, dosya mevcut değil", - "04aa3a99d1550de2a89aa408790e0234": "Yedekleme başarısız oldu, {}.", - "2a389cf13e591eb8202af139c82a762c": "Yedekleme başarıyla yürütüldü, yedekleme dosyası 1b'den küçük, lütfen yedeklemenin bütünlüğünü kontrol edin.", - "37ef1150b54080db22f4de766c00a902": "Veritabanı türü sid, int türünde olmalıdır!", - "bb372e9b5c377f89809981e38570e41b": "Mongodb hizmeti henüz başlatılmadı!", - "1a80d7a1efd89c63a3f8f33bd9b07397": "Veritabanı türü SID, bir INT gerektirir!", - "e36f515323b0caa721c681b2d378a695": "Mongodb hizmeti etkin değil!", - "c254f52cdaeb7f1a88c6bdd3e3e3c3f8": "Değiştirme başarısız, Veritabanı[", - "d9533af3481500e4eab2d71bc0d80f50": "Veritabanı şifresi boş olamaz veya özel karakterler içeremez", - "5e2ab00d16dbc00c7fc25cbade8fab26": "Belirtilen veritabanı mevcut olmadığı için değişiklik başarısız oldu.", - "e3d61b8e9ff54176be78612b4de00321": "Veritabanı için şifre erişimi etkinleştirilmemiş.", - "b949f2f31ecdc2714448b254511fb797": "Veritabanı adı özel karakterler içeremez", - "42ea48e57900c1ca39c38b7740b156e5": "Veritabanı mevcut değil!", - "ff14e82e3d1041c3fe4986830981065d": "Veritabanı şifresi boş. Önce şifreyi ayarlayın.", - "2de872b07fddc8df9c2085fa214e780b": "Yedekleme araçları eksik, lütfen önce yazılım mağazasından PGSQL yöneticisini kurun!", - "200e48e96725c9ce425d7dbf388cbb8e": "Yedekleme dosyası boyutu 2Kb'den küçük. Yedeklemenin bütünlüğünü kontrol edin.", - "894f4e4dbeef39cd673987e501f8c2ab": "sql, gz, zip dosyası seçin!", - "f5905bb1f1098b37b11d1e1787296924": "Kurtarma aracı eksik, lütfen PGSQL'i yüklemek için yazılım yönetimini kullanın!", - "ba32600a98bc2e63a7609dfd18f7a764": "Veritabanı şifresi boş olamaz.", - "e7381be5e7f44708306bc9816f83481c": "Değiştirme başarısız, belirtilen veritabanı mevcut değil.", - "7d354324037030e692b06b94f9d024c7": "PgSQL kurulu veya başlatılmamışsa, önce kurun veya başlatın", - "a877289c330ccbad75d3674c560e89d3": "Şifre 8 karakterden az olmamalıdır.", - "da3304c09f836a15a0c1ef43d28ce833": "{} dosyası mevcut değil, lütfen kurulumun tamamlandığını kontrol edin!", - "e6d4787574cefef9b9dd6b3ab549bf68": "Yönetici şifresi başarıyla değiştirildi.", - "b67d85c71006c071b58767216be65eb2": "Uzak PGSQL'e bağlanılamadı. Hatayı gidermek için aşağıdaki işlemleri gerçekleştirin:
1. Veritabanı portunun doğru olduğundan ve güvenlik duvarının erişime izin verdiğinden emin olun
2. Veritabanı hesap şifresinin doğru olup olmadığını kontrol edin
3. pg_hba.conf dosyasına bir istemci yayın kaydı eklenip eklenmediğini kontrol edin
4. postgresql.conf dosyasına listen_addresses olarak doğru sunucu IP adresini ekleyin.", - "0fbbe53688d144223b78036507d85b47": "SQLServer veritabanları sayıyla başlayamaz!", - "27cfc7c44317601d8cbdc241c928d17c": "SQLServer şifre karmaşıklığı ilkesi eşleşmiyor, 8-128 karakter arasında olmalı ve büyük harf, küçük harf, rakam, özel simgelerden herhangi 3'ünü içermelidir!", - "f06bab2dcffc83aa9e8e3be555a9e56f": "İşlem başarısız oldu. Uzak veritabanı yedeklenemez.", - "20fe68f46608aefa2c884b9390aa4cd2": "Dosya geçerli bir ZIP dosyası olmadığı için içe aktarma başarısız oldu.", - "a52ecc2f72eafcf3453f9a50ffb7d0aa": "Veritabanının şifresi [", - "df4ac7366fa4fda98e94ea68f0e40d3c": "SQL Server kurulu veya başlatılmamış. Önce kurun veya başlatın", - "935e0f201a754f406575ec14bde54a21": "sa şifresi boş olamaz veya özel simgeler içeremez", - "896543f6d67a62d4c594b28eeee3c923": "sa şifresi başarıyla değiştirildi.", - "bb0b766f654bd8338d9dabb8c57378ff": "Veritabanı oluşturma başarısız oldu. Lütfen mysql çalışma durumunu kontrol edin ve tekrar deneyin.", - "439d4d68575132c1a273fc36bbf6f72c": "{} id'li site bilgisi bulunamadı", - "bff0e83714a9073c270776c37cc64791": "Parametre hatası", - "5766c6d37d04fdab31ce8622fcf6fab6": "Kuralları içe aktarmadan önce lütfen güvenlik duvarını başlatın!", - "277467377ce35c4535ce0c9e36f4978f": "Dışa aktarılacak kural yok", - "686160d344e24c2dbcac934048f03baf": "Dosya boş olamaz", - "d9523e347c0a2971241d3ac4120a2854": "Dosya mevcut değil", - "cf36e08b3ff2cfd7bb952c062cc79f49": "Dosya içeriği anormal veya format hatası", - "b6d16a8173dd0d43f580bc6882dc5e9a": "İçe aktarma başarılı", - "67abf11af36ac64a147218d125e8418f": "Hedef adres formatı yanlış", - "d11dfae04c7fd00b48b744926f7e733b": "Kurulum başarılı oldu, aşağıdaki kural başarısız oldu: {}", - "434f027ff1a807413707c94a43c9a578": "Lütfen önce güvenlik duvarını başlatın, ardından kuralları ayarlayın!", - "7b6454aa962895f5d5147d035f91a0e2": "Hedef port boş olamaz", - "9c6da8c31a9a2d7a04756b09f01696e7": "Port {} zaten mevcut, lütfen tekrar eklemeyin", - "229ce80f45424e882fdc5274cf37f295": "Belirtilen IP adresi formatı yanlış", - "444bcb3a3fcf8389296c49467f27e1d6": "Tamam", - "6e68a14dc03d5bc90eea5ca623dd61c8": "Lütfen old_data sağlayın", - "fd643caf7884ce64697fb2a670cc3304": "Lütfen new_data sağlayın", - "4f87808ff2ae8fa99b12357b7837bc78": "Değiştirilen IP adresinin formatı yanlış", - "69be671786f62ce872f87de1ab761746": "Değişiklik başarılı", - "99404700c0746498a22a6ac82f3a78ba": "Alan adı: 【{}】 çözümlenemedi", - "91166df490bd1ced7a0aac6daebc96ca": "Hedef alan adı boş olamaz", - "af9a54527ffd3f962a61e34911f918dc": "Hedef alan adı formatı yanlış", - "7f9c4436cdf25844dcd0cd46b62c2916": "Lütfen id sağlayın", - "905d5834754a81bea63ea590793346bc": "Hedef adres {} zaten mevcut, lütfen tekrar eklemeyin", - "315208d3066fd1615ba13b698c0af371": "Hedef IP boş olamaz", - "5bd31a01422acec34ec752e0a46f9415": "Kendi IP'nizi ekleyemezsiniz", - "ba797e05926242a5135289c98dcd9d36": "Kaynak port boş olamaz", - "3ec1da1913c04a2c53dd6d6379f99d4c": "Hedef adres boş olamaz", - "efef8b005464719937a7daa96ed5b3d8": "Port yönlendirme kuralı zaten mevcut, lütfen tekrar eklemeyin", - "e6c81af465e7bdf8761e0072eb217ca6": "Mevcut sistem tarafından desteklenmiyor", - "44164f2aee5b6836802ff8142f495629": "Tarama başarısız oldu", - "7e8ca7bb5dd0e69e0cd0d0e66832e2cd": "Veritabanı oluşturma başarısız oldu. Lütfen mysql çalışma durumunu kontrol edin ve tekrar deneyin. {}", - "45f9a99535dea651b8f160f6cf23f826": "Yapılandırma dosyası okunamadı!", - "5e3b84200bea6d70f6fed1d5802a7fa0": "Sorgu başarısız oldu, adres mevcut değil", - "5fa721871e93bc4121df74ce51454519": "Eklenti etkinleştirilemedi, lütfen daha sonra tekrar deneyin.", - "9f139adb77c26c263ff2a956d66f80fe": "Eklenti devre dışı bırakılamadı, lütfen daha sonra tekrar deneyin.", - "f8e169b0ef8d58f84c71e375141852ed": "Küme oluşturulamadı", - "e35ca748f8c5a0e78731bae94fb7d68a": "Kümeler kaldırılamadı", - "468baaa7179c8b181d1de35fa00267e9": "Geçersiz küme öğesi türü", - "a01e808b2be07634b0e3714bff919ae1": "Kümeden öğeler kaldırılamadı", - "35c9b2817b191a3f60553d46b748068b": "Kümedeki öğelerin durumu değiştirilemedi", - "73b1d7767613c6300db27ade773369fa": "Wordpress uzak sitesi kaldırılamadı", - "3f8ee4f649b32e181c15c39682629844": "Kullanıcı [{}] mevcut!", - "b23886f3380c4a9500a7614474ff6bf8": "Şifre en az [{}] karakter olmalıdır", - "f20eaf62a87c2072f7c09ec70a6b90c9": "Silme hatası", - "49b236322476b6e7baf65369b4b61565": "SİLME_HATASI", - "9607dbc43fb07121ebd102497290c15b": "{} FTP kullanıcısı başarısız oldu!", - "8b73e5696a44d470ee99c274152c1b54": "Port[{}] kullanılıyor!", - "384169bf557e2785a74c6ab4c8ca0d9c": "Düzenleme hatası", - "492478fa7955b2282528aefe56d42ec4": "Profil mevcut değil!", - "71804f43c7fe50a625e9fd1f930365ce": "Buluttan alınamadı!", - "46fb7ccd0be31ec840d524d8f99f1368": "Güncelleme tamamlandı!", - "d631f73db41ac42021c522b61fba3274": "Güncellemeye gerek yok!", - "11ce17a8cf1f195a0687c00fc4201d2f": "İçe aktarma başarılı!", - "d49c4e6f0a63eb94dfb921be5d804e8b": "Site mevcut değil!", - "0b5efcfb8a290faab14ebce65ece59e7": "Tehlikeli web sitesi kök dizini!", - "d747c3e10f8c5fd5c0aec8b422883292": "Belirtilen paket mevcut değil!", - "22e806afb25ddcb6cf205be320eb2350": "Kurulum paketinde [aaPanel Otomatik Dağıtım Yapılandırma Dosyası] bulunamıyor", - "7658d0092e96ef38859c12f2a91f641f": "Şu anda dağıtım görevi yok!", - "c6fdc537935f8c3e97a442e8be9adf20": "Yüklenen klasörle aynı ada sahip bir dosya var. Lütfen kontrol edip tekrar deneyin", - "055df73dfeac55aa4ddb8b31e98d3fea": "Mevcut kullanıcının {}'e erişmek veya değiştirmek için yeterli izni yok", - "3ff13f637b9e318936f8d30f77c57c64": "Mevcut dizin salt okunurdur", - "8c7dd0d2966be0d1427bb839c94a993a": "Yükleme başarısız: {}", - "fc937a95d443a5accb3dc43dabf8a4c0": "Yetersiz disk alanı", - "dc494cbbc1dad9fe8a2d219d561840d5": "Dosya yüklenirken bir hata oluştu, lütfen geçici dosyayı [{}] silip tekrar deneyin", - "45cd3dad5e3ac153966eff8aaf30c33d": "Yüklenen dosyayla aynı ada sahip bir klasör mevcut, lütfen kontrol edip tekrar deneyin", - "eaf87474bf8e355eb84fadd0caf91f14": "Mevcut kullanıcının erişmek veya değiştirmek için yeterli izni yok", - "fe56b3a6f3a8b6a24f60a62408351b0e": "Burası Geri Dönüşüm Kutusu dizinidir, açmak için lütfen sağ üst köşedeki [Geri Dönüşüm] düğmesine basın", - "8ec1fba8a89cb67bc958d7b2424156e9": "Dosya geri dönüşüm kutusuna taşındı", - "99a091a444e6e207f60506fb4f0bdcce": "Dosya başarıyla silindi", - "5873103908815f34241636e336e1f463": "Sıkıştırma görevi mesaj kuyruğuna eklendi!", - "e57b7bae408dd226fabe86773cd6b3c3": "Toplu işlem başarılı [{}], başarısız [{}]", - "c28802f8d7f5a40cb9f17cace202e59f": "Sorgu hatası, {}", - "11c99562b6212de14ddf1dcb06ea1696": "Sırada {} görev yok", - "94f33212bde1cd76797fe4fe78b2167f": "Composer {} sürümünden {} sürümüne yükseltiliyor", - "f5484a1a111b9d70ecaafb36a7df48f6": "E-posta mevcut değil", - "59d26291d38cd716232dd08e1c6c5304": "Lütfen e-postanızı girin", - "d76fd2d8c3dffcbab0885c9bdf78fe16": "E-posta zaten mevcut", - "fec0532445dc524beeac7255c4d34ef8": "Lütfen bilgileri tamamlayın", - "ffa0dfd81ff9459785617a7a73a7d9f4": "E-posta gönderimi başarısız, lütfen SMTP şifresinin veya sunucu adreslerinin doğru olup olmadığını kontrol edin", - "ae73c4d1db318d09f4792e23f1b80584": "Veri Yok", - "7ee533d91b6b3524d4fcfcde77dc4987": "Başarıyla boşaltıldı", - "11f60f1528977a463a3ef16a8876e4f6": "Posta kutusu mevcut değil, lütfen posta kutusu listesine ekleyin", - "009654d37f429367967bd49ee47c26f2": "Lütfen e-posta başlığını doldurun", - "2ab41d39d3f12250b5dc3ae0d610caa4": "Lütfen e-posta içeriğini girin", - "0c1828ed3fbaf5eec3fb8ad0a7aa957a": "SMTP bilgileri bulunamadı, lütfen ayarlardan özel posta SMTP bilgilerini yeniden ekleyin", - "03212d3e6324204bce266e74779ab3c9": "Başarıyla gönderildi", - "494247bcb984f09ad09176c8256e64ac": "Gönderilemedi", - "6f81b0f19f4ef82bf31eeb9c20979f90": "Ekleme başarısız, lütfen URL'nin doğru olup olmadığını kontrol edin", - "3d17d5b07e5aaa72a35e60707027d352": "Yapılandırdığınız DingTalk yapılandırma bilgileri bulunamadı, lütfen ayarlardan ekleyin", - "a75863f88c3c7b7cb43989b7b406a82a": "Lütfen göndermeniz gereken verileri girin", - "5de6533189f891dc2a44ac945f53efce": "Şifre karmaşıklığı doğrulaması devre dışı bırakıldı", - "06fae24317d8f2b5ef156f11a0fba311": "Şifre karmaşıklığı doğrulaması etkinleştirildi", - "946cc3a7fae7508e3d34b4ed139ee2d8": "Şifre son kullanma tarihi doğrulaması devre dışı bırakıldı", - "f00369482ba4cd8b50446356d3fad724": "Şifre son kullanma süresi {} günden az olamaz", - "501b1c01d3b31cb34cbcad5a19ae851e": "Şifre son kullanma süresi {} günden fazla olamaz", - "db6890122bbd9e97fb8e1b117b367358": "Şifre son kullanma süresi [{}] gün olarak ayarlandı", - "486b7d3b3ca271d873ef1c9d4c0e07a7": "Şifre değiştirildi!", - "6c6b6e84490b34b36f33dcc8ae85fdc2": "Girilen şifreler uyuşmuyor, lütfen tekrar deneyin!", - "55f5bbcf01ad984ea402d50061609240": "Şifre 5 karakterden az olamaz!", - "59b39458556877d386a837773736eb2d": "Şifre en az sekiz karakter uzunluğunda olmalı ve rakamlar, büyük harfler, küçük harfler ve özel karakterlerden en az üçünün kombinasyonunu içermelidir", - "704372ffb884853d30e3b247765bb73a": "Girilen kullanıcı adları uyuşmuyor, lütfen tekrar deneyin!", - "1bea42b66bb313cab948558e2d27b4e5": "Kullanıcı adı en az 2 karakter olmalıdır", - "4772625698c6c1ed00afd0848fd2b57b": "Şifre en az 8 karakter olmalıdır", - "f0b3060a19359c64cc7674d67f00a898": "Belirtilen kullanıcı adı zaten mevcut!", - "330080a87414678839a05adf12a4bb1d": "Yeni kullanıcı oluşturulamadı!", - "c94d622c80e3f5af884fcccef35808b6": "İlk varsayılan kullanıcı silinemez!", - "e19e85e7bd5fde471d513ef747e88021": "Belirtilen kullanıcı adı mevcut değil!", - "7d435c8b5780fd83a10ee8f69abf04c4": "Kullanıcı silme başarısız oldu!", - "65e81e9b6c91bdde17fca09089852265": "Hiçbir değişiklik gönderilmedi", - "c8e9c31bced80905134de34df6f67d66": "backup_number bir tamsayı olmalıdır!", - "526d961c343986a803395eb22a3accab": "backup_number 0'dan büyük olmalıdır!", - "d944a195e19ea2a91eb143a4600a5fe6": "Panel verilerinin otomatik yedeklemesi kapatılamadı!", - "cb476d0f3d678a0f1746d6d91f8c24c2": "Panel verilerinin otomatik yedeklemesi açılamadı!", - "77c1047380de3f54df74a3e84ed5ec15": "Yetkili IP formatı yanlış ve alt ağ segmenti yazımı desteklenmiyor", - "52d7cd44ec88df37e528f140e2affcf4": "Zaman aşımı bir tamsayı olmalıdır!", - "5ad475cca538c88655b2299588b9a091": "Zaman aşımı süresi 300 saniye ile 30 gün arasında olmalıdır", - "7b66709539a01edb71eacc470ce7f4bc": "Alan adı IP adresine bağlanamaz", - "f522b971d05877c869be6f81b9eb7fe8": "Lütfen doğru Sunucu IP'sini ayarlayın", - "35e15c0be5bb51b628d96c9a520c9b01": "Port [{}] kullanılıyor!", - "716e57b0f48924438fc1209c06353fc7": "Sistemin kritik dizini, varsayılan yedekleme dizini olarak kullanılamaz", - "17ceb8d2128aa1ce5f2f51ef5b19a809": "Sistemin kritik dizini, varsayılan site dizini olarak kullanılamaz", - "e60263ac381ae4a9ad460a5c706b9b5a": "Yapılandırma kaydedildi", - "b1f79322ef609c5ad200c552dfbeba85": "Zaman aşımı süresi 300 saniyeden az olamaz", - "59bfee3685345c8facd75248b7f17a8c": "Zaman aşımı süresi 30 günden fazla olamaz", - "b1770445e55578871051298a4bca2ba8": "Anahtar dizini web sitesi oluşturmak için varsayılan dizin olarak kullanamazsınız", - "395fa878a1482de198dd9765e03cb0df": "Güvenlik Girişi 6 karakterden az olamaz!", - "7030414be42829df4fa2102738ad98f8": "Bu giriş panel tarafından kullanılıyor, lütfen başka bir giriş ayarlayın!", - "3aadff910a401b163029bd5915aea8ee": "Giriş adresi formatı yanlış, ör. /panelim", - "ac67b91773937f05690f0eed86ddc37c": "Yükleme boyutu limiti 2 MB'den az olamaz", - "f2c35784d83c39c7804be9817c498d97": "Lütfen 30 ile 86400 arasında bir değer girin!", - "10951b15ad70ad91dd672b3942e85954": "Yanlış çalışma modu", - "c277ef8831d8bcad68fafb826e050fe1": "Zaman sunucusuna bağlanılamadı!", - "7d8946452a1ad712185ad106a09d83cb": "Kaydetme gün sayısı geçersiz!", - "4218a6e9c12f1fa453fa8e5c1b00bd44": "E-posta formatı geçersiz", - "df6565d8975cca7ba4276300b9c38bdf": "SSL kapatıldı, panele erişmek için lütfen http protokolünü kullanın!", - "e99cd51a6216bc73a3e8ea8de05a54d8": "Lütfen sayfayı yenileyip tekrar deneyin!", - "74f3d2f09425457bc7a3fd34017631c9": "Hata, pyOpenSSL otomatik olarak kurulamıyor!

Lütfen manuel olarak kurmayı deneyin: pip install pyOpenSSL

", - "8e4aa3a825e526915c867d103bc88064": "SSL açıldı, panele erişmek için lütfen https protokolünü kullanın!", - "e47079f267dd01176afaa962dcd62358": "Notlar veya panel adresi mükerrer!", - "8c7a5b3c69236d00b3577be9c91a71cc": "İstenen panel bilgisi mevcut DEĞİL!", - "5b8ce0c16a86626165e93796b14d4bf6": "PHP yapılandırma dosyası okunurken hata oluştu, lütfen bu PHP sürümünü yeniden kurmayı deneyin!", - "0631278069374277ff3b2cc2949940fd": "Lütfen doğru [alan adı veya IP] girin!", - "ac40ea6dbb38e754acea879d58701424": "{} Gün", - "7a3fd8f7ddf80ae2db423aa55177d22a": "{} Gün {} Saat", - "377e7b3a05033be3164d7900c2feb2a6": "{} Saat", - "b2a09ec7e869bb555211fe7b26b5cf3e": "{} Saat {} Dakika", - "9c9a5e9d306cf687381d8f1924b43b9c": "{} Dakika", - "0656e1b2562955020afc339b3c9a1838": "PHP kurulu değil", - "375a8ffa8b733dd5f6b069de80c57d48": "PHP sürümü alınamadı!", - "2b5266cb205519f70b1bcf7e2654982a": "Belirtilen PHP sürümü yüklü değil", - "f54dcdd36a3b22d81acbd5358cb2a0b7": "BasicAuth kimlik doğrulama kullanıcı adı ve şifresi boş olamaz!", - "5dc91c307ada29366c842b16a5de6913": "Temizlendi!", - "22ad45d745e31a8dbdb6a64f94289bbb": "Anahtar mevcut değil. Lütfen açıp tekrar deneyin.", - "53ca2a75c705f11ff1096ffef2762084": "Kullanıcı adı mevcut değil. Lütfen açıp tekrar deneyin.", - "2323ea8555972da4c7321e11488c97fe": "Lütfen işlem modunu girin", - "5995c475ba8ebf9ca5a5a48623ce3df3": "QR kod verisi yok, lütfen yeniden açın", - "40e23dd18b1ba7d11eae146c3a6f0c3b": "Geçici oturum açma URL'si oluşturulamadı", - "03dbab348363a2cc86c13c7dc6be2078": "Giriş alarmı başarıyla iptal edildi.!", - "655318de73b4940df95a3a570a4d9987": "Alarm modülü kurulu değil.", - "bf5ef2bc39004caabc0c836ba6389c75": "Bu kanal yapılandırılmamış, lütfen tekrar seçin.", - "e5e7da65a17350434adc9dc9492925df": "Önce panel SSL fonksiyonunun etkinleştirilmesi gerekiyor!", - "e6be2adc545cca56a638fc1b7793ebed": "Panel iki yönlü kimlik doğrulama sertifikası kaydedildi!", - "e7cf53b84401535396c856570a5bc40f": "Panel iki yönlü kimlik doğrulama {} başarılı oldu!", - "3400b1e0bf5f54e0230a7e272698e73b": "Şablon dosyası mevcut değil.", - "c9541884ca9b19170e4d300b16e9c10b": "Kurulum başarısız, [{}] kurulu değil", - "ed39c2105eef1ae435e6a332bd0b716f": "[{}] varsayılan bildirim olarak ayarlandı.", - "0b3d1848b5648a7ac08ec7425043059b": "[{}] panel varsayılan bildirimi olarak kaldırıldı.", - "67c052db394411fdf2755100c5028f94": "Kurulum başarısız", - "c2806eed218fbfc91e0b4f37b08ce547": "[{}] modülü kurulamadı. Lütfen ağı kontrol edin.", - "4ccd9bbf79fcc60bef3a1aca5d577e85": "[{}] Modülü başarıyla kuruldu.", - "643fb3483415124df30e40a2559a02c3": "[{}] Modül kurulumu başarısız oldu.", - "92013d9cfaae3995581927729dc898b8": "[{}] Modül kaldırma işlemi başarılı", - "2eccda3dec7fa3a985668d79c718be23": "Anket gönderildi", - "692323a652529dc1bb482078ebd98fd0": "Hiçbir anket gönderilmedi", - "7a18188353d1d06b3ab9af842dd6f0f2": "Anket alınamadı", - "eb010361bab3ef9e74a27fdc883b1bd5": "sorular Parametre hatası", - "25baa40bd86bb31a5095cf5457e87f74": "Gönderilen metin çok uzun, lütfen düzenleyip yeniden gönderin (MAKS: 512)", - "1cc5a8ad869ce7dd47987b6eb278260a": "Başarıyla gönderildi", - "7e4182fc0365b28328ac2ec8896f73b1": "Kurulum başarısız! {}", - "dd1ddef2d75c7c80540db8c12270af8a": "Geçirilen parametre evrensel bir dahili nesne değil", - "93916600bce5b19586cbf51d558b5d78": "Lütfen [{}] formatının doğru olup olmadığını kontrol edin. Örneğin: {}", - "0dbd3323f74314d1cf85c7db5ac2fd1d": "Mevcut IE tarayıcı sürümü bazı özellikleri görüntülemek için çok düşük, lütfen başka bir tarayıcı kullanın. Veya Çinli bir şirket tarafından geliştirilen bir tarayıcı kullanıyorsanız, lütfen Aşırı Hız Moduna geçin!", - "47b1cbb355da8faa6415f12c96469ba1": "Arka arkaya 20 doğrulama hatası, 1 saat süreyle yasaklandı", - "efc33dbd7910fde6ce3fe364a7d43bfc": "rsyslog yapılandırma dosyası mevcut değil!\nLütfen rsyslog'un kurulu olup olmadığını veya /etc/rsyslog.conf dosyasının mevcut olup olmadığını kontrol edin!\nDebian sistemi kurulu değilse, lütfen şunu çalıştırın:apt-get install rsyslog\nCentOS sistemi için lütfen şunu çalıştırın:yum install rsyslog", - "a6fba111c7d0f418059856c4160b4d0d": "Parametre yanlış!", - "66924214c228f7eb631ac940281c7190": "Ayar başarılı", - "d55e6e0c13df775ea0eabea4f36ff8da": "Lütfen en az bir komut ve güvenlik duvarını etkinleştirin", - "322d678e45d68284d90503f36da32648": "İşlem gerçekleştirildi", - "7f6a5159defff4366792aa7c992f6f0b": "Başarıyla düzenlendi", - "01f144a7cfd324d0dab94f8aa6e29374": "Başarıyla silindi", - "26eaf477d247c668a143b415491995dd": "Mevcut IP adresiniz [{}] beyaz listede değil.", - "c26b7075352954fb3e96fbe983dbd083": "Mevcut IP adresiniz [{}] beyaz listede.", - "f9cfac18ac1fe92adcc47b139d0617a8": "Ekleme başarısız oldu", - "bf31291dfc89be9a8af12c3fa15e7e4d": "İşlem gerçekleştirildi", - "71a1c5f19c8e300d350f5f68c71e4559": "Silme başarısız oldu", - "f5fa57ce44938aa510e6cb68bd52c24b": "Kayıt dosyası yok", - "1bb87a5feb9e217c858933afdce8f4e7": "Kayıt dosyası çok büyük!", - "21290da79237752afe963ecef5d89b5a": "Tarama başarıyla başlatıldı", - "8e0e316031928c8c96c94ad6d57bd03e": "Dizin taranmadı", - "9208374e1391bb886971bad99b2380f1": "Tür uyuşmazlığı", - "580d97d0b321127650cf1901cc3524b2": "Kayıt mevcut değil", - "4943a6954b9887aa5989713fcbb2a0d1": "HATA: {} sunucusuna bağlanılamıyor, lütfen [AK/SK/Depolama] ayarlarının doğru olup olmadığını kontrol edin!", - "da10c98ffbf34b30edec9cf47d998a68": "Uygulama başarılı!", - "24380483226504475d196fdcff7a6c77": "Sunucuya bağlanılamadı! -1", - "353d91a7655b3ef5e024d07eef1888ab": "Sunucuya bağlanılamadı! -2", - "75809e3b321efe1afbdf9773494d5dd9": "{} yapılandırma dosyası bulunamadı, lütfen açmadan önce ssl port ayarlarını kapatmayı deneyin", - "f471efd0f135fbddafdce4ad1febf5bb": "Mevcut web sunucusu openlitespeed. ", - "4a32aac45fa22d0c693a646d5e265bf1": "Panel sertifikası mevcut değil. ", - "c6b59c5c3d29862a6dc85e9375094c83": "Mevcut web sunucusu yerel ve özel erişimlidir.", - "056197513cf8b469874e09b037fa5aaf": "Mevcut web sunucusu desteklenmiyor.", - "7ec0387d04c7d7c8259b497464fa3282": "phpMyAdmin zaten {}!", - "4790f238a5706fa03ed78c98efabd5f2": "Bağlama geçerli!", - "b4e82db400aed46c6a1d61b93ff20f0f": "Bağlantı hatası: {}", - "aa40ceff8d69dc0bf2a3887e2d5c778c": "Bağlantı hatası: {} {}", - "69ee350f3262c97f7e3f35cc66443942": "Paramiko modülü mevcut değil ve kurulum başarısız oluyor!", - "d580ca3289757bd32c3e11df44ccea78": "Şifre veya özel anahtar ikisi de boş olamaz: {}:{}", - "df9dc7c6d010fa7d486ab5c61159450f": "Kimlik doğrulama zaman aşımına uğradı, lütfen tekrar denemek için enter'a basın!{}", - "05d673d467b6e721ff5ee92b285e5072": "Özel anahtar doğrulaması başarısız, özel anahtar yanlış olabilir veya /etc/ssh/sshd_config yapılandırma dosyasında ssh-dss özel anahtar kimlik doğrulama türü etkinleştirilmemiş olabilir", - "cae18886e1496f99e56fe64dae2a0947": "Kimlik doğrulama başarısız, lütfen özel anahtarın doğru olup olmadığını kontrol edin: {}", - "7e850998d3cb8c4dc8b204766721e846": "Hesap veya Şifre yanlış: {}", - "dfd29171bd018b7352abb2cf085404fd": "Kullanıcı adı veya Şifre yanlış: {}", - "8a857e7b7b8835de19ffb7404445b30f": "Desteklenmeyen kimlik doğrulama türü: {}", - "8f4a5b1853e2c68682303a3ac016e97b": "İçe aktarma başarılı oldu", - "bb07cf4e0082f6181204bf785e625924": "İçe aktarma başarısız oldu", - "4e19c797e19c111b1fad1470cc2c18e3": "Dışa aktarılabilir komut yok", - "bd35e8b82c9450d88a62a318773a2244": "Dışa aktarma başarısız oldu", - "e420cebff3e23fb8eedd388024ce1839": "Hedef URL formatı yanlış {}", - "dd2b16eb608e5838d556598d479e9264": "Geri yüklemenin başlamasını bekleyin", - "e7e807310035d5b348cbf55c28df2968": "Çalışan RAM bilgisi alınamadı", - "dc2e22fb7940c00998017d342198a9e2": "Çalışan çalışma süresi bilgisi alınamadı", - "f5332a2b815ca2e09f3e658e8c81a282": "Çalışan yeniden başlatma zamanı alınamadı", - "2d052af48937c6a8916f84a9a5d2a5e1": "Çalışan tarih bilgisi alınamadı", - "6880f4164c935867cecf3a89e8ac01ce": "Çalışan zaman detayı alınamadı", - "a3589163c43210f6d8f52f6a2d46823f": "Çalışan saniye başına istek sayısı alınamadı", - "6dfcfe44b282f6a36ea2e487b583c543": "Çalışan toplam erişim sayısı alınamadı", - "d1448a41deace3e0a5cb3555cee67b97": "Çalışan toplam KBayt alınamadı", - "1bdd788c6927c1fd0420ca6e2316642e": "Meşgul çalışan sayısı alınamadı", - "f656a1e1c80cdf1eb1c63d3a0b121a65": "Boştaki çalışan sayısı alınamadı", - "e9a08443260e6f3b795eb57419a6ad77": "Bulut depolamaya bağlanılamadı!", - "749707db319ac2fa02785c1bdb58083b": "HATA: sshd config yapılandırma dosyası mevcut değil", - "80b695b495da54ed6a76eac8a965bc7b": "Giriş alarmı başarıyla iptal edildi", - "40d3b22b13a0b11ed727aa257e2228c0": "Mesaj kanalı kurulu değil", - "87597848076b873c1a9bb9ffea64950b": "Hata: sshd config yapılandırma dosyası mevcut değil", - "bdb119e343438b628e7ba8b20e4632ed": "Hata: sshd config mevcut değil", - "45de64a88b25b6527ccd3efbce76ed3b": "Parametre geçiş hatası", - "387e90104fbc0261c1ae5db9443f0b22": "Root giriş yöntemi şu şekilde ayarlandı: {}", - "0fd775e0a957d247e199d2cd911078e8": "Şifre boş olamaz", - "2279ae228c06ace23e59cc218f2536f8": "Şifre 8 karakterden kısa olamaz", - "207d2e497f2ca0d97f1453671d4d824a": "Kullanıcı adı zaten mevcut", - "e1c5fbbb3782936fa209244fcc62ea7e": "Şifre harf ve rakam veya sembol içermelidir", - "4c94c49ecaebd37c52172946778fc296": "Kurulum başarısız", - "ee6cb8cccfef01a6931ac569767b7303": "yerel veritabanı kuruldu", - "65d7c486a72e5ad1b6bd2efb8956f3f6": "Düzenleme başarısız: {}", - "f62e45c2a8ed2cfcfd94370111f2a7b3": "Aynı isimde bir veritabanı zaten mevcut: [{}]", - "c0845b39485db26e69520bd402a139b7": "[{}] veritabanı zaten geri dönüşüm kutusunda, lütfen geri dönüşüm kutusundan kurtarın!", - "4660d7ac939f0ce64023bd24bc25b663": "Veritabanı adı 16 karakterden fazla olamaz", - "299cf735a7b842c5bc2eaedf2e266387": "Veritabanı adı özel karakterler içeremez", - "d1e3ea8b4d692d87d876428f0cf476c4": "Veritabanı adı geçersiz", - "32e1edf20dad771b315ddb3da35bacd3": "Belirtilen veritabanı MySQL'de zaten mevcut, lütfen adı değiştirin!", - "54fac16736efc268ae61cc17bf80dcef": "Uzak Veritabanı [{}] bağlantısı başarısız", - "ad62ead53c1f43865593805aab80df4b": "Değiştirilemedi : {}", - "d3a51b64fa563dfcd901485db4cf5777": "[{}] veritabanı şifresi boş olamaz", - "157aebc66e02126c7568365a18392758": "Veritabanı şifresi desteklenmeyen karakterler içeremez {}", - "480b606c09fb9d52b9e47995e04641de": "veritabanı bulunamadı!", - "f730258407ac8fda3c780e7c59a09f16": "[{}] veritabanı için şifre başarıyla değiştirildi!", - "4461199265eb82e1de46055d7f4568b6": "Yedekleme Başarılı", - "ecc5e49aaee7ba7dc9a1b1b89e008c13": "sql/gz/zip dosyası seçin", - "3bb533d00c768936c2c3bf24d2c542a2": "Yapılandırma dosyası mevcut değil {}", - "c811067e114e07cbb188afd110ddc579": "Sunucudan {} veritabanı senkronize ediliyor!", - "a47891f08609cb38f4de9fd50def4650": "Sunucudan {} veritabanı alınıyor!", - "8aec4a4bd998059f3dbb932da4714b00": "IP bulunamadı!", - "a62053a8ff838da8ba33aae82d8fda5b": "Veritabanı bağlantı hatası!", - "65a61bd2b3c632fd1d27b19db5abf197": "MySQL veritabanı şifresinin süresi doldu", - "dfcaac01b569325ec535229328d52f6d": "Veritabanı sorgu hatası!", - "c77d5ef44d6a21abe99c3e370a0f5364": "parametre hatası: kupon_id", - "1cb4143e9dbb7515e606ab6854578a00": "parametre hatası: döngü_birimi", - "2121d979fb82aae9f0a62572bf36217f": "Arayüz isteği başarısız ({})!", - "287e14ef978fb00ce99942e799c36649": "limit_time parametresi eksik veya parametre boş olamaz!", - "8feb15ff2883086bba98d9d791d10bf7": "Zaman, şu anki zamandan daha az olamaz!", - "9bb70ddd7b082fbaafb0b47a989b5cf5": "Saat dilimi alınamadı!", - "38f40438a6c7e12eca9b4ea2ad297b3e": "Başarıyla en üste sabitlendi!", - "257ee5f5c18f04e3a83fd18b33babf08": "Lütfen sabitlenmemiş ID'yi girin!", - "c6afe11bc7f565bb0a423883101ce67f": "Sorgu başarısız: ", - "403470819fb903a95a8fd9a22b01a3ee": "ZAMANLANMIŞ_GÖREV_AY", - "7207ebce07676b20d98ec74a0ff65c77": "Günde bir kez {}:{} için çalıştır", - "4f4ae97ac3a0f45ef67bda70d5e4fe0b": "Her {} günde bir {}:{} saatinde çalıştır", - "82dccd8eb88a5611e453cbf6f25fa90f": "Saatin her {} dakikasında bir kez çalıştır", - "a84b2e49920d839395e3f93812f9ac03": "Her gün 0:00'dan başlayarak, {} saatin her {} dakikasında çalıştır", - "41924db412ce09aa5ef5c9f1f9c88ee8": "Her saatin 0. dakikasından başlayarak, her {} dakikada bir çalıştır", - "45abd276fba3519ea010cb5b3c44a484": "Her {} bir kez {}:{} saatinde çalıştır", - "06ce21d9c603152315f749e19fab3148": "Her ayın {} gününde {}:{} saatinde bir kez çalıştır", - "f2fc5ae4c94a95a754c58b15197bc135": "Her {} saniyede bir çalıştır", - "eb8cb9c97e5888beefc46d6c0645ff4f": "Başlangıçta bir kez çalıştır", - "7b9732c358c4e407030aca56ccb7a72b": "İlgili zamanlanmış görev için veri bulunamadı. Lütfen zamanlanmış görevin mevcut olup olmadığını kontrol etmek için sayfayı yenileyin!", - "b55a6e4ebb6e988c6d46840ca6cc3315": "Dosyaya yazılamıyor, lütfen sistem sağlamlaştırmanın etkin olup olmadığını kontrol edin!", - "fff2eb19d097654514fc97c4a6e6d233": "zamanlanmış görevler", - "64e1288887b58a1c65d05676f7197477": "Zamanlanmış görevin durumunu değiştir [", - "ef1a7595dfa94a12b47bb18d3ac94313": "Bu ID'ye sahip zamanlanmış görev mevcut değil", - "1844e0f52715901c376dca67e5742aa9": "Zamanlanmış görev yazılamadı, lütfen diskin yazılabilir olup olmadığını veya sistem sağlamlaştırmanın etkin olup olmadığını kontrol edin!", - "5a7b17945b660284bb813be218c04c71": "{} Ayarı başarısız", - "5e7205744bd38904dcbc7c0b77456fc7": "Sil {}", - "140fb31d1756ae3c75b297f0c17f8b24": "Kategori adı HTML ifadeleri içeremez", - "e5e2e32bece629fcba864f7f5e8df60f": "ZAMANLANMIŞ_GÖREV_ADI_BOŞ", - "f3b898619b284003475f2039ce53968c": "Plan görevi başarıyla değiştirildi [", - "72a21489a541757ee98b54790e5f431f": "Başarıyla değiştirildi", - "92f1227778f186dd8c5f6cae42f5285a": "Zamanlanmış görev başarıyla eklendi [", - "e55c44fbd41784b7731f71e2789cad65": "ADD_SUCCESS", - "5a3c3438dbcadf4a0d59858f17a8522f": "Görev günlükleri boş!", - "e8ab4d6107eaf37c98f250be20f146e1": "Görev günlükleri temizlendi!", - "a0d347c48839cab209fa3827c667a5c8": "Zamanlanmış görevleri sil", - "46039515107ea576bdaf75935b8b5f0d": "Zamanlanmış görevleri sil: {}", - "a3c72de16808f111cbe7e4c6dacc401b": "DEL_SUCCESS", - "d5925f01eeb5596fed21f5dae6ffed30": "CRONTAB_TASK_EXEC", - "72bf657fef1eeafa1c8ecde5e4c06405": "Görev yürütme başarısız! Eşleşen görev kaydı bulunamadı.", - "8804f9a6882b09397bbc0599ba59b7ca": "Görev yürütme başarısız! ", - "e9ca7bae70907408382135107fb85a13": "İndirme başarısız!", - "272892ac18608e0a1ad6bf080afd2e51": "Başarıyla temizlendi!", - "06511118622e143af60d10d0877c9a3d": "Temizleme başarısız!", - "424a90061acbe105658b97a0d86a4de2": "Lütfen dosya adını girin!", - "14854122a7fb5958664a8d840dc0bead": "Lütfen önce webdav depolamasını kurun!", - "a027ff0717f56bf016b2f023d92e0c32": "İlgili dosya bulunamadı, lütfen bulut depolamadan manuel olarak indirin", - "f7314eff61e017245b088eecfee0c418": "Bulut depolama nesnesi doğru şekilde başlatılmadı!", - "a09c248c44ca9548bce41bc3e79b400d": "Dosya bulut depolamada bulunamadı!", - "9b23d05e4cb1d3ee22dd3dd7212817ab": "Sınıflandırma adı boş olamaz", - "fade4a03622ee745aaf87044d697203f": "Kategori adının uzunluğu 16 karakteri aşamaz", - "c875cf8f63d81c7fb198018d5c4bfa79": "Belirtilen kategori adı zaten mevcut", - "f66442d89b8c613c082425a93b417695": "Belirtilen kategori mevcut değil", - "caf573e6b4299b7f60e24635b0295e9d": "Kategori silindi", - "9133e7faf0b9fc202294e495163b1ced": "Ad, sistemin varsayılan görev sınıflandırma adına değiştirilemez", - "a3ee2a93b0a298de033ca1b784f62f04": "Sistem sınıflandırması veya varsayılan sınıflandırma olarak ayarlanamaz!", - "f300a6ee81c71057acc7beecdaf472c7": "Ayarlama başarılı!", - "290435bc045f16e4d099d721b7f706c3": "Ayarlama başarısız", - "8d49c76279564d3127e45cae01976d37": "/tmp/cron_task_data.json", - "d7ee2f4d054a35aab002985b80644f24": "Dışa aktarma başarısız:", - "1cd20eabfaa5ad5793b4075f976bf475": "JSON dosyası ayrıştırılamıyor!", - "205904d76b14dbdb456fc2a2997ba5b1": "JSON dosyası içerik formatı yanlış!", - "f63f66d08d61a3b16c11e0dfce9510e1": "{} zamanlanmış görev başarıyla içe aktarıldı", - "414522bb8a68d31211190865a1cefdd0": "Lütfen içe aktarılacak dosyayı seçin!", - "8342696568c9b58f16cf29e2492cddea": "İçe aktarma başarısız! {0}", - "51b34794854788b7e5eb8c3a8fab0242": "Lütfen zaman parametresini girin!", - "860f363ecfcf11c8740b9068152b910c": "Geçici sistem kapatma ve güçlendirme başarılı!", - "acbe969acf9b4925e963f102f3430f84": "Sistem güçlendirmesinin geçici olarak kapatılması başarısız oldu!", - "14a7c9c4ed221e7b3234de80bb8b9ef9": "Günlük kesme başarıyla etkinleştirildi", - "15af2c7a6a5766d84ad8c57c5d2fb0dc": "Günlük kesme başarıyla kapatıldı", - "636cccf0b373acec35770f9f26710396": "Günlük kesme etkinleştirilemedi", - "bd6df8255e394034ebcf93fcebfe06d3": "Alım başarısız:", - "90a80c8e64ee80e8577c44699b6faa7b": "Zamanlanmış görev {} oluşturulamadı, lütfen sistem sağlamlaştırmanın etkin olup olmadığını veya disk durumunu kontrol edin", - "796b4f2a019427bc554ef1166faad8aa": "Başarıyla kapatıldı", - "f222f6f9531a00476e39863b53bcde07": "Açma başarısız", - "52d812a7c0b57b35fac4e668122191a3": "Betik yürütme başarısız", - "f804ceef9dd122e198f13357be514e41": "Otomatik Veritabanı Yedekleme[TÜMÜ]--mysql", - "26e64121956b9e7e55244a508f146864": "Otomatik Site Yedekleme[TÜMÜ]", - "c601909c952f2064e91d6f3c1d1a7128": "★yedekleme başlatılıyor[{}]", - "890b5b1ca2b1aa96f0781c9fdc77ab88": "☆yedekleme tamamlandı[{}]", - "5316694cae24d434370be2d76146a500": "|-Hata: {}", - "b763e7e9f6b23d4b5066458506d26d55": "Yedekleme görevi yürütme başarısız.", - "713660262f5ab9c3af9aa17c8d8a412c": "Yedekleme konumu: ", - "038ae15d38f9f027abda2aabf18324ab": "{} için en son yedek sayısı: {} kopya saklanıyor", - "58c65e272cfde6fc8cf73d0ffcde4bbd": "{} konumuna yükleniyor, lütfen bekleyin...", - "243c0f3ec002883d6fa7770957ecf9bd": "Zamanlanmış görev mevcut değil!", - "57d4380c974a85fe8db5914c934addf4": "Zamanlanmış görev mevcut değil! {}", - "78df833c741b9814545d76a83f2db9b5": "{} Yedekleme veritabanı {} mevcut değil", - "69c66d6525e77e17c2aaffea61f4d730": "Bulut depolama alanına bağlanılamadı, lütfen yapılandırmanın doğru olup olmadığını kontrol edin!", - "8a09aa6b7131f71b3ba97f13d5b7823f": "Belirtilen sipariş numarası mevcut değil ve yenilenemez!", - "72905fe72d071dffbc0c1a20eb8def87": "Bu sipariş hakkında bilgi bulunamadı.", - "0b033e06e17e9fb14f93e6f11eed6599": "Siparişin süresi doldu. Lütfen yeniden başvurun!", - "3497d17853f8a84d0b552dcea4fabad2": "Bu siparişin bilgileri bulunamadı.", - "972f14a9afdebc7e5b366f465171776a": "Siparişin süresi doldu. Lütfen yeniden başvurun.", - "1008d1a5b18463e45c0bdb930bc0087c": "Bu sertifika bulunamadı.", - "2e95d6e834bed89e1e199808d0cfd8aa": "Lütfen --path parametresinde web sitesi belge kökünü belirtin!", - "4a8d983505848031c77a15c408cd1f3e": "|-Komutu yeniden dene", - "ed069811f3c302d22a0f4aafc6903826": "|-Kullanıcı uygulamadan vazgeçti ve programdan çıktı!", - "daa9a175b001e007de4d7ca89ec19aec": "Geçersiz düğüm türü: {}", - "abb41b16dcebff17c55d75000fe3cabf": "Geçersiz otomasyon", - "e9d2603582f4a20d640b8e7d3b3e08b7": "Çalışır durumdaki otomasyon düzenlenemez.", - "505a83f220c02df2f85c3810cd9ceb38": "Başarılı", - "d2fcac4ec8e0f366bff10d45d37bb3d3": "Geçersiz otomasyon_id: {}", - "d171abccfa056d262e7e081b84510c4f": "Geçersiz otomasyon: tetikleyiciler yüklenemedi", - "ae3ff0ee4b1a6c1dfe230d9b15a4d4a0": "Geçersiz otomasyon: eksik tetikleyiciler", - "cb665b2511490edc2ed27b86d38e0828": "İş akışını tamamlamalısınız", - "0fdf6b21eacd19ce746639f1c4613607": "bitiş_zamanı başlangıç_zamanından büyük olmalıdır", - "18fc7ff48f030eda26c7446cdccd441d": "geçersiz veri", - "dcb3fc2a35a17abb01744383ebf3cdc4": "geçersiz veri -2", - "7122d35c3532d63c8d9fc5c5bd320558": "Sipariş listesi alınamadı, lütfen daha sonra tekrar deneyin!", - "079217f7bb63fed72af9bb79048e3967": "'*", - "b3248ad84a12659b1599607f969741a0": "CloudFlareDns İzni şöyle olmalıdır: ", - "0ad00e6c415af62cdaa8537c32574052": "Takma ad zaten mevcut!", - "9c82954b2bf15dc7a9462145d9782aac": "Lütfen PRO Sürümüne Yükseltin!", - "3a306f42856e51481470e9702cc22169": "Başarıyla Kaydedildi!", - "9758ed50c1e1816e1eecb98e0c3ed1ec": "Başarıyla Silindi!", - "4b9f49d0625305474bd478ed077bba0b": "id gerekli", - "615df74f7d5141a1084369b9da4ccb4a": "Sağlayıcı bulunamadı!", - "4a9382b97abdf8cb5b237bf7d64873e2": "search_and ve search aynı anda kullanılamaz", - "7d7d9ba1a8780278b2a05b91eacfb2e7": "DNS kaydı Bulunamadı!", - "8d49c4cd608eaa6d8d9a1e0ab6658fb4": "DNS Sağlayıcısı Bulunamadı!", - "79922b861a42a4e2350f69501eb25ca0": "DNS Kaydı Bulunamadı!", - "39b361ca64471b92b1b1e84dee7d5226": "Başarıyla Güncellendi!", - "8ef6a7854d197b829e350936856847fc": "SSL Sertifikası Bulunamadı!", - "02d59ec01b27b9b07cc92b56b4590690": "SSL Sertifikasının süresi 30 günden az, yenilemeye gerek yok!", - "2741cbeb713977a63cc621cae6c92b2c": "SSL Sertifikasının kimlik doğrulama bilgisi yok, yenilenemez!", - "e10f97e65f8e6bb8d78cad066bd3133a": "Başarıyla Yenilendi!", - "c85411871b8773e799e64d0c23ef79d3": "Sipariş Bulunamadı!", - "9dd5fcad400ad7db65baa55be5535d94": "Başarıyla Uygulandı!", - "3f5a9a220cd8c53770c59c4931beb2be": "auth_type şöyle olmalıdır: ", - "4fadb14ca725c013569fc00385d750fd": "alan adları boş", - "ef01e80156516ee70bc7031ecc223061": "Site Bulunamadı", - "584447441c36bdf097a426f26cd1ae0f": "Site Çalışmıyor", - "5b9bb06906f02adfe9d02c7a71d8c1c2": "Hata: Joker alan adı yalnızca DNS ile doğrulanabilir.", - "fdbdc3e70ef01cae6ba7f67b34622aa1": "Bilinmeyen Kimlik Doğrulama Türü", - "52357aa86932ebcc9ff6e741ef6244b5": "sertifika güncelleme başarısız", - "2e54bae7cebff2ed29eee92ee852cf0f": "SSL Sertifikası Bulunamadı!", - "022c6efa50cd0022ffa66b42f08caadc": "Başarıyla Kaldırıldı!", - "9ecbde266be14f2c038c06f339f7ee46": "SSL Bulunamadı!", - "9bb50ed8d9b14f51d1a44a423db43e6e": "Başarıyla Ayarlandı!", - "049734a8ec5a38304b7e0dff089b05fe": "Postayı Dağıt", - "6df4bb58ee6967a48b38e093858091de": "Hesabı Dağıt", - "ec220f32ceb0ad39d785439e3d442464": "Paneli Dağıt", - "7f689dbbf6341be1e07e8e96d16b95db": "Joker alan adı desteklenmiyor!", - "2ac3f96d3c4f34f9ab7627bf5f1fb444": "Alan Adı Geçerli Değil!", - "8346bf5e43bfb945866b734da5e365fb": "alan adı boş", - "f53f8d0c6e47f742892e21dc6d0ffcba": "Güvenlik duvarı başlatılmadı.", - "7aa738bc7717148a9518c0d37e0bdcc2": "kuruldu.", - "10cf4b73623a047cd8c039899a68678f": "Güvenlik duvarı açık değil.", - "f2ec5e710cf0c84fd474abdc993360e8": "Güvenlik duvarı başlatma görevi oluşturuldu.", - "98dd43dfae05b11befe1f140e0ec787a": "Kuruldu", - "032c6f0f72bf846bf80205f83cfbbfdf": "Hedef alan adı boş olamaz", - "d3e42cf08c9dd4657e1ec738bcd7fa4f": "Hedef port boş olamaz", - "2e983c6be925499dd08a349a82f9e215": "Hedef alan adı yanlış formatta", - "2101cff923c114c46970531cebe61e9c": "Alan adı: 【{}】Çözümleme başarısız", - "484a79b99ea7c89818e54bc86611e0ab": "Lütfen id girin", - "8bc83520b9c5e0cb6a83e1cf6961cfdf": "Ayar başarılı, ancak aşağıdaki kural ayarları başarısız oldu::{}", - "373ee51dfa98aab065593b352f395b59": "Hedef adres yanlış formatta", - "26fe283bcf5841270188165305b2f876": "Hedef adres {} zaten mevcut, lütfen tekrar eklemeyin", - "4b8abdf7e8565603bc0b09534e1c53aa": "Lütfen kuralları ayarlamadan önce güvenlik duvarını etkinleştirin!", - "50c7672327d3879977f1672bac1ee999": "Hedef IP boş olamaz", - "b9c6715ad1caf1dd7f933c42ab63707a": "Lütfen old_data girin", - "842a116f755d53aacda61c8d5b90125e": "Lütfen new_data girin", - "edbe2ffb112ecc945237a594ab786679": "Değişiklik başarılı oldu", - "f94b62cff0c45cb08b61da3ca2615d72": "Dosya mevcut değil", - "0976b2102c7a8af33f04ab2059e997ca": "Dosya içeriği anormal veya hatalı biçimlendirilmiş", - "774b94869c0844749626b1bf637fafbb": "Kaynak port boş olamaz", - "e9b371dd7b29cd7373c524d880b031fe": "Kural zaten mevcutsa, tekrar eklemeyin", - "13bd44b7e23ee792948ec122677bf1b3": "Kural ayarlanamadı: IP adresi boş olamaz", - "7f6cd3026825eae0d35775a932e0fb46": "Kural ayarlanamadı Desteklenmeyen IPV6 adresleri", - "bbc83d63860d8fddbe9b5f0769f8d108": "Kural ayarlanamadı", - "52de0a29b9e9289bd6598a5d4610774f": "Kural başarıyla ayarlandı", - "40e79165af94fb353f73532550d50dbc": "Mevcut sistem güvenlik duvarı iptables'tır ve durum ayarlamayı desteklemez.", - "7f643aa5c0ac22eb56b8e0283a245537": "Mevcut sistem güvenlik duvarı iptables'tır ve durdurmayı desteklemez.", - "759cbd156929358f44fea3d7a2303d12": "Mevcut sistem güvenlik duvarı iptables'tır ve yeniden başlatmayı desteklemez.", - "9eeb5949442ea424abb29b42f4f3763d": "Mevcut sistem güvenlik duvarı iptables'tır ve yeniden yüklemeyi desteklemez. ", - "6fe3c8f7481574a858f4c4e3dcb190b8": "Bir port kuralı ayarlanamadı:{}", - "cc84ff9fa77f59978d67ebe5c21c4cc6": "Port kuralı başarıyla yapılandırıldı", - "5fb5bec15f0680c0f8281e2a77f01564": "Kural ayarlanamadı:{}", - "202ed89223bc105db8c706695994099e": "Kural başarıyla ayarlandı", - "31bdde170e92eb68e5cf19070a0257b2": "Bir port yönlendirme kuralı ayarlanamadı:{}", - "14af00e29f1c7f276529a7f13d37bcf3": "Desteklenmeyen tablo adları: {}", - "37859bf15c1d49002153157ecdd4ad45": "Kural kurulumu başarısız:{}", - "9fcd0fb925f2f1f9fc5157a937c1527a": "Kural kurulumu başarısız: {}", - "9ef9f6bcb8cd56f9b4d8be162918810e": "Güvenlik duvarı başlatılamadı:{}", - "afa08ad3f9767240b0219e668944beee": "Güvenlik duvarı başarıyla başlatıldı", - "bc1ad4532116f7e179339e07a39be1a3": "Güvenlik duvarı durdurulamadı:{}", - "50ac40822152a67e4195c04488aa7129": "Güvenlik duvarı durduruldu", - "c8b9e1198399365ab380361c761ab78d": "Güvenlik duvarı yeniden başlatılamadı:{}", - "04105f039f2850a3472f9b79c7ae5111": "Güvenlik duvarı yeniden yüklenemedi:{}", - "2be1a57d150c047f0c5d936a904d884a": "Çıkış portu kuralı ayarlanamadı:{}", - "af95b488978d644c7ef7b4b856def666": "Çıkış portu kuralı başarıyla ayarlandı", - "194fbdb576220abe3bc3ae3746af89a7": "Bilinmeyen politika parametreleri:{}", - "f006b06691ecd76b8a34e2825c17b6aa": "Bilinmeyen strateji: {}", - "55bbeb07229c08c530c5119918035594": "Çıkış kuralı başarıyla ayarlandı", - "8be2d40f6fa3e12c46ba68bfb23951d1": "Çıkış kuralı kurulumu başarısız:{}", - "5d6e1e45c8d58b5f2800aabe961be7e6": "Hesap hizmeti başlatılmadı, lütfen önce hizmeti başlatın", - "b3e1f3f951a065d621dba454b2523365": "İstek başarısız", - "9f570fb82d621c780cae5d4a3b7b21fa": "Başarıyla başlatıldı", - "d6fd80e8f386ec01318ebbd911b3cb8c": "Başlatma Başarısız", - "54b737c15ee80b356bed65d1e4bbdf11": "Durdurma Başarısız", - "ca5ae41ecee3659791384fbb49c573f2": "Başarıyla durduruldu", - "f9458b55789fb6b79f107c061d9050e0": "Başarıyla yeniden başlatıldı", - "ce070d796c159496ab8253cc60891b9e": "Yeniden başlatma Başarısız", - "ca0431c082d8980ad8a7fbfff9a3cc4e": "Başarıyla yeniden yüklendi", - "f61bf123501eb5094cd6782409088c6f": "Şu anda web sunucusu olarak yalnızca nginx desteklenmektedir. Lütfen önce web sunucusunu nginx olarak ayarlayın ve web sunucusunu ayarlarken web sitesi verilerini yedekleyin", - "01b4fc496d491eed58270beca1664e66": "Kurulum betiği indirme başarısız", - "b6bbb24d50175d3a920095caccfc8cc7": "Görev zaten mevcut", - "22e6df6f7a837552a50ec27a63418a99": "Kurulum görevi, görev kuyruğuna eklendi", - "01545ec6a6d49b956f303f9ac0f7aeed": "Yükseltme başarılı oldu", - "f43df7708267595d8c8ee27cca2e25c7": "Sertifika içeriği boş olamaz", - "749c4e1e3720c1aa28459dd4953cf782": "Lütfen sertifika formatının ve içeriğinin doğru olup olmadığını doğrulayın", - "5e6ddd918845e96916d903a667e65da6": "Başarıyla ayarlandı", - "9aad9a87ef3911e202093b08b2f570ed": "Başarıyla kapatıldı", - "b4987b794be5974dd020719b9c1d0a41": "IPv6 adresi desteklenmiyor", - "793f2b3ffa18b3513258114b0216cb7b": "Lütfen ana bilgisayar adresinin doğru olup olmadığını kontrol edin, örneğin: 192.168.1.20", - "af8d2d8e000adaed48feb1c1502cea6d": "Üzgünüz, açma başarısız oldu, ayrıntıları görüntülemek için lütfen App Store -- Kurumsal için Kurcalamaya Karşı Koruma bölümüne gidin", - "e9f9d8e8358b9291af5e41417184ddd2": "Dosya koruması başarıyla eklendi", - "c4faf633a3fd32e8b5d8138dbddc1693": "Güvenlik duvarı açılamadı", - "5ebd3aeb7b2c96cf6c64f82bfa333f02": "Güvenlik duvarı başarıyla açıldı", - "82d883f528257cbc522de7531411dd53": "Güvenlik duvarı kapatılamadı", - "5aa742d86e112c414eb5970e1352719f": "Güvenlik duvarı başarıyla kapatıldı", - "b552849e09b4a47a87641523cb99e06d": "Veri bulunamadı", - "55df5f27012531e176be79f81b90d779": "Başarıyla silindi", - "785a530106a46c897769c1cf2df6c2f3": "Başarıyla başlatıldı", - "274fbf19776d1b6efee0e71f075739cd": "Başarıyla durduruldu", - "81c5f87b76468dbe7a152121fee71663": "Temizlenecek gereksiz günlük yok", - "12af24fd6d32854160728cffa4ea2150": "Temizleme başarılı olmadı", - "90b0ccf9b077f2cadeef3daaf17d86b8": "Güvenlik duvarında {} var", - "3d2fb8221a478c63e13b494d7279e2ac": "Başarıyla eklendi, {} Aynı kural bu port için mevcut ve atlandı", - "fc66f87cb8d92e3caf13485d65ecc309": "İşlem başarılı", - "9a321cf078154e6594a8a29fb7847738": "Lütfen önce dnspython modülünü kurun", - "2463904b74dc3ffd3fb849f87a0e3a3a": "Dosya içeriği yanlış!!", - "7a3f417adbeb8a69180134c6f2373c36": "Dosya boş!", - "29b89ed8f1aa15665f877c12e0d14bac": "İçe aktarma başarısız oldu. Kuralların formatı yanlış. Lütfen dışa aktarma kurallarının formatına göre tekrar deneyin!", - "002827869c69ad72bc41ca442547bbac": "Yoksayma kuralı başarıyla iptal edildi", - "63ecd16effc3eab31bf1eec574ece639": "Kilit başarıyla açıldı!", - "eacd845def6fe750cfc0986f24565045": "Yerel giriş şifresi boş", - "fea087517c26fadd409bd4b9dc642555": "normal", - "e1a4b8afc2cb3f56f0c98876c06d6d58": "Veritabanına bağlanılamadı!", - "a18fb7f91f74b73e7326700913e7e35c": "Belirtilen sunucu zaten mevcut: [{}:{}]", - "079d7d1539d30a76e53b6fb54d370d32": "Başarıyla eklendi!", - "72bfbe1d7dd57250382b570043041e82": "Ekleme Başarısız: {}", - "270b19b2e9da5da821c7b54a1a8d7fd6": "Parametre geçiş hatası, lütfen tekrar deneyin!", - "ffcba623cf91331a0ba5b3ab969db1f9": "Başarıyla silindi!", - "43bf15425909c99f2cc1553eaffaf476": "Silme başarısız: {}", - "0947887a435eff51a71f1e54615af33c": "Veritabanına bağlanılamadı [{}:{}].", - "844eea2c94a872941b4e4fe66c92c659": "[localhost:27017] veritabanına bağlanılamadı!{}", - "90b65217be3c698d9b1fbff0dccdc71b": "Mongodb hizmeti henüz açık değil!", - "7d1a075632098426af1e2197d274bdb6": "Veritabanı adı şu karakterleri içeremez /\\\\. \\", - "48b2c30b0f984cdcc6cd7ed4ee376fdc": "Veritabanı adı boşluk içeriyor ve düzgün bir şekilde eklenemiyor!", - "93efcc7fc4e9d402978828bacd4a5bc2": "Veritabanı kullanıcısı zaten mevcut, lütfen başka bir veritabanı adı kullanın!", - "393223cf51f8e25df5d53ae425de74a9": "veritabanı mevcut değil.", - "2162130c1a1937f839cc660f5e70ebdb": "Mongodb hizmeti henüz açık değil!", - "45da541afaa00457a2f4617a1dd4855f": "Mongodb kısıtlamaları nedeniyle 'admin' adlı veritabanının silinmesi yasaktır!", - "2465ac13d0470c6414b77dc59fbcdbbc": "Yedekleme araçları eksik, lütfen önce Yazılım Yöneticisi aracılığıyla MongoDB'yi kurun!", - "d2af5fe1710856e97dbfdf1adc6d5e98": "Eksik parametre! id", - "9c17c1312620910f7c3d27a20f01e968": "Veritabanı mevcut değil! {db_id}", - "57bb958a6998e558b00b5d89d240b240": "Şu anda bson, json, csv formatları desteklenmektedir!", - "3b4ee1461f518d1bd1ed20615d670df1": "Csv formatına dışa aktarırken dışa aktarılacak alanları belirtmeniz gerekir!", - "699c43a1633256e97b95615a562eef88": "Veritabanı şifresi boş! Lütfen önce veritabanı şifresini ayarlayın!", - "1acdae1719cee0ce5c586cd6995b70a9": "MongoDB güvenlik doğrulamasını etkinleştirdi, ", - "67e943332602d7a5b9765306caa8604d": "Bilinmeyen veritabanı türü", - "04c651a70b89bd4fd8fc8702c0bf61e9": "Veritabanı yedeklemesi başarısız oldu, dışa aktarma dosyası mevcut değil!", - "e880101cd795726a7c8e2c2f4033f9dc": "Yedekleme başarısız!", - "ae1110dd560e4e7968b297620be7ea36": "BACKUP_SUCCESS", - "bff09c8822165bf816a5b5a4d1fe9140": "İçe aktarma yolu mevcut değil!", - "3d003d1417aec658cd020f9faf66a5c1": "Yalnızca zip dosyalarının içe aktarılması desteklenir!", - "3397a2bc97209578e6c113606a4c7b7b": "DATABASE_INPUT_SUCCESS", - "1aaad2845eddd4af9de947cc24e80a38": "Yedekleme dosyası silinemedi!", - "94b43778dbd724133db47ee2126da3a9": "Senkronize edilmiş veritabanı yok", - "aae27fc3d2273773edab02e15288cb14": "Veritabanı senkronizasyonu başarılı {}", - "164c5fa905dbffad015f4593d1b85fb9": "Veritabanı türü sid, int türü gerektirir!", - "3a621b20dadc66881772503620282533": "DATABASE_GET_SUCCESS", - "505a6be34cf7e61f93f2665896cfafaa": "Değişiklik başarısız, veritabanı [", - "13966ea12f4ed389be50c95e65d8a2dd": "Veritabanı şifresi boş olamaz veya özel karakterler içeremez.", - "361cbf31511a2bf38fc664157d183328": "Veritabanı şifresi Çince karakter içeremez, lütfen değiştirin!", - "252d8cfbb164b773c5f84ce9d814ae3c": "Değişiklik başarısız oldu, belirtilen veritabanı mevcut değil.", - "aea43e9b982f6105e584e46b778d9f9e": "Değişiklik başarısız oldu, veritabanı güvenlik doğrulaması için etkin değil.", - "0b46bb64ce97c64f6dddc87bccf949e8": "Uzak veritabanı bilgileri mevcut değil!", - "d1b44799de985cad123821498285dfbd": "VERİTABANI_GİRİŞ_HATA_FORMATI", - "df5647a7421161dcbda85323db41cc99": "DATABASE_INPUT_ERR_FORMAT", - "2a52f6106614dfbd519714df03ebb16a": "Veritabanı başarılı", - "1182c39d730924cb4f4d8d229fadb0f3": "Veritabanı şifresi başarılı", - "9e1a9b35939cc4887854eb2ed84f401f": "Veritabanı adı özel karakterler içeremez, lütfen sıfırlayın.", - "01d3922e30b7aff9c7265e91c57cc829": "IP formatı yanlış!", - "b2349e65b04baa3a0d50ad030535b73e": "Girdiğiniz değer geçersiz, değişiklik başarısız oldu", - "932c4edd1a70a505be1099f4e7874692": "Pgsql kullanıcı erişim hakları başarıyla değiştirildi", - "f562938bcf2a52b32261e4f4a99c3e00": "Silme başarısız! Mevcut veritabanına bağlanılıyor!", - "573ba454733eee7cd866addcd11ea21c": "Veritabanı silinemedi!", - "fec7dbd4f36266728d6eda5e168d1cc0": "Veritabanı mevcut değil!", - "69579eb94ffe47354dac42abc8cac9d1": "Veritabanı şifresi boş, lütfen önce ayarlayın.", - "fb642275547236f1fb2ea7717ace26d8": "Lütfen önce yönetici şifresini ayarlayın!", - "95abdbd5890c3ceec62026c6246d8030": "Yedekleme işlemi başarılı oldu, ", - "7307a92023c68b6842a8dafb1b500f16": "Kurtarma araçları eksik, ", - "eef4302ce8a129e5d70767668a9e9110": "Lütfen sql, tar.gz, gz, zip dosya formatını seçin!", - "c5aafcc6af38d67c22ccc8d19f60ed0b": "Veritabanı başarılı {}", - "a8de1650a48acf0e91c7ba840bd48295": "Veritabanı şifresi boş olamaz", - "9a53422dee5315eb489d4e448f4ea976": "Değişiklik başarısız, belirtilen veritabanı mevcut değil", - "3ca4ea8082e41867cee227d4686a4c17": "Veritabanı şifresi başarılı {}", - "0033a9566af4f930bebbd45802be5427": "bağlantı başarısız", - "ae576ea2a8c76765fa69287fb1347d1a": "Uzak veritabanı bağlantısı başarısız!", - "15a8af9e80d0a0c2d87314c154fff181": "redis kümesi desteklenmiyor!", - "c2dafded2689dc11914376d72a70dfc2": "redis bağlantısı başarısız!", - "b283988bc23c61b2e6393195064ccc5f": "İşlem başarılı", - "a9ed7f25ce1ffcf98cf5ec7db86abdf4": "Şu anda uzak veritabanlarını yedekleme desteklenmiyor!", - "9d1ee7d092060a4d3418a979fba5e46b": "BACKUP_ERROR", - "1fcdee5d4329f1f638bc2d818f3e510a": "dosya bulunamadı", - "517b554160a14e74d52943ea29ab5a66": "redis bağlantısı başarısız", - "ec010eeffc0a20399b186f334b3b6769": "uzak veritabanı bağlantısı başarısız {}", - "2322848a32fd761a98a0bd76e633bc97": "Uzak veritabanı bilgileri mevcut değil!", - "61dccc90b62286cfe99a0836cd7016f4": "Proje dizini mevcut değil!", - "393f59f008214da917a3644f9bddd08c": "Belirtilen öğe mevcut değil!", - "76f7795cbd69658732375d59e3ac4443": "package.json yapılandırma dosyası proje dizininde bulunamadı!", - "da87ee74f07713dc1fb6d97d770c6b9a": "Belirtilen nodejs sürümü mevcut değil!", - "53dc11c67093dc8650a2a0bcc739af9e": "Lütfen önce bağımlılık paketini kurun!", - "9e37cac0b6ac4947a8eaab9c4741d096": "Belirtilen modül zaten kurulu!", - "a23324d67a76505b9485e1925b49ce69": "Belirtilen modül kurulamadı!", - "e175807189b9fed334d7fa1d9517e302": "Belirtilen modül kurulu değil!", - "7d837b25ee483c045c3d27e461661024": "Bu modül, kurulu diğer modüllere bağımlıdır ve kaldırılamaz!", - "a06864f6c23b22710bc49fa3794247aa": "Bu modül kaldırılamıyor!", - "3378916dcc3a51351a823bf417959965": "Parametre türü yanlış, dict obj nesnesi gerekiyor", - "2ab730bc17ad482c454d62e5d6dda728": "Lütfen önce nodejs sürüm yöneticisini kurun", - "683eecd5ab2302a02009bb53528a8206": "Proje adı formatı yanlış ve harfleri, sayıları, alt çizgileri ve ifadeleri destekler: ^[0-9A-Za-z_]$", - "9360c6893e4ca4d7030d99d9ae4b34c7": "Lütfen önce Nginx veya Apache'yi kurun", - "999e1ffe680ef91f5cf9795c34aa7acc": "Parametre türü yanlış, dict obj gerekiyor", - "9f474c0c49ec1c30e3c19f13e9d2a52e": "Lütfen en az bir nodejs kurmadan önce nodejs sürüm yöneticisini kurun", - "9791ddabd2954257bfed271e0e7254dd": "Başlatma komutu boş olamaz", - "f8498a22f4e43acaae880208f0980675": "Belirtilen öğe mevcut değil", - "26aa1657ebfac1237da6a1f8ccae86b4": "Alan adı boş olamaz", - "8f5e21613d5cfe258f7965986f95b750": "Eşlenen proje için en az bir alan adı gereklidir", - "bd397222b97310807e5ecfdcec2c30ff": "Belirtilen alan adı mevcut değil", - "8f04dfa02fe0ef0106680e1a3e9f1759": "Öğe mevcut değil", - "64bc3d77e07e9e2757509ce626273a99": "Lütfen [Alan Adı Yönetimi] seçeneğine en az bir alan adı ekleyin", - "7514fe0af7b6f84f1c3c0a01613010fe": "Modül bağımlılıklarını kurmak için lütfen [Modül] bölümüne gidin ve [Tek tıkla kur] seçeneğine tıklayın!", - "11382e970be52495256dd21192a671a7": "Başlangıç betiği yapılandırılmamış", - "ef6b21f990d5f7f0a881e354a365063d": "Başlatma komutu bilinmeyen bir güvenlik yazılımı tarafından engellendi, lütfen kurulum yazılımı günlüğünü kontrol edin", - "bbffcc99d1822ea57ca5e7dc614157ec": "Proje mevcut değil", - "53797f7f191af4c7851d0419ca27b334": "Proje başlatılmadı", - "f45bc552cdf8369ab9fe2213eec7b802": "Günlük dosyası mevcut değil", - "0f3f874698792dc81c7c00b9e74fea34": "{}\r\n", - "aad4acc1243565c5c2ca41e5733e5fe0": "başarılı\r\n", - "d8f5a29760a4f000dd754819b1faadcc": "başarısız\r\n", - "73977612ef83925db43df7745df9c5eb": "\r\n10 dakikadan fazla yanıt yok!\r\n", - "6345c76d66a8a9e9cdd3f9d996ff062d": "Lütfen cmd parametresini girin", - "bba401eadefa8222f3e60a312cc19f34": "Yalnızca docker run veya docker pull komutları çalıştırılabilir", - "b5592904212696df3e5bcec990c8676a": "Tehlikeli komut mevcut: [ {}], çalıştırılmasına izin verilmiyor!", - "cfff471dc04b6ba4aeb2cc2844b2c94b": "Tehlikeli sembol mevcut: [ {}], çalıştırılmasına izin verilmiyor!", - "f1d9b154a0c2625d828a504a8cb35682": "Komut zaten çalıştırıldı!", - "ea848f5d6978f5916cd3df4191195e2a": "Ana makine zaten mevcut!", - "7aa425b3819e79208faaed38fe137f34": "Sunucuya bağlanılamadı, lütfen docker'ın başlatılıp başlatılmadığını kontrol edin!", - "c90ca78b1fc8554e867a696d30255cba": "Docker ana makinesi başarıyla eklendi!", - "8ee5196fbd93bf345bf018132e808a0a": "Ana makine başarıyla silindi!", - "65960a94c86ed543e6ecf9865cb7aab9": "Tespit motoru başlatılıyor. İlk yükleme uzun sürebilir....", - "2e2456601fd9b5e6a2f7345d8877e2eb": "Apt-get güncelleniyor. İlk yükleme uzun sürebilir....", - "8c902642d409e04304c1b50daef221ad": "Tespit motoru kuruluyor, ilk çalıştırma çok uzun sürebilir...", - "e4cf763784740f252924c589b16d4f25": "Yum önbelleği güncelleniyor. İlk yükleme uzun sürebilir....", - "5677925b683b9c781fb956882c4d736e": "Desteklenmeyen sistem sürümü {}", - "f1f3e9961d2a46c83e8d226aa1cc1dbb": "Desteklenmeyen sistem sürümü {}\nŞu anda yalnızca Debian, Ubuntu, Centos desteklenmektedir", - "938e7de7df2aa5efe531d693deeb5907": "libdl.so bağımlı kütüphaneleri kontrol ediliyor...", - "459ed27083c25b82135efedccaa60ada": "{} istisnai geçmiş komutları taranıyor", - "37c614d5d300e6c391808efd5363ec82": "{} hassas bilgiler taranıyor", - "5ddc98a53573410c7cb65727946c5d3f": "{} arka kapı taranıyor", - "6bb6be880d819a93af392183d16fccdf": "{} konteyner kaçışları taranıyor", - "cd7fb7cf576b22469514b5b30f365158": "{}Tarama tamamlandı", - "acc2731ee0f5b78d4e801d2daf814c32": "Şüpheli anormal geçmiş komutu bulundu", - "3069c277261d044bb309e4b09ae798fa": "İmajda anormal bir geçmiş komutu [{}] bulundu. Bu, konteyner çalışırken ana sisteme kötü amaçlı yazılım veya kod yerleştirerek güvenlik risklerine neden olabilir.", - "6d64734fff5534f48029ffba4aa3678d": "1.Komutun normal işleyiş için gerekli olup olmadığının kontrol edilmesi önerilir
2.Gereksiz kayıpları önlemek için resmi ve güvenilir altyapıların seçilmesi önerilir.", - "475dfbee8626a4d939cf631aad174de3": "Taranıyor:{}", - "71c7dfa944a5a50f281c0acb232dcdeb": "Taranıyor:{}...", - "0c29ac6d8e69451c80f8ef857e499ab2": "Hassas dizinler bulundu{}", - "53872e73575a306598c0c4060b44181c": "İmajda hassas bir dizin mevcut: {}. Saldırganlar tarafından hassas verileri veya kaynak kodunu çalmak için kullanılabilir ve bu da daha fazla güvenlik sorununa yol açabilir.", - "6fe56120a0502f9678988d756dd27682": "1. İmaj kullanılarak dağıtılan konteynere girin ve işleyişi etkilemeden dizini silin
2. Silinemiyorsa, dizine erişimi kısıtlayın", - "6b2f9867ccd6f3e6f06726c06ed684d5": "Hassas dosyalar bulundu{}", - "6684913201a60be0b5e89c4dfb210719": "bashrc arka kapısı bulundu{}", - "9a9f27d5f9f8c056fff7986c87a94c30": "İmajda bashrc arka kapısı bulundu: [{}], kötü amaçlı kod içeriği:
{}", - "d8a828116070b9d92315ca309cca1991": "1. İmaj kullanılarak dağıtılan konteynere girin ve dosya altındaki kötü amaçlı kodu silin
2. Konteynere sızılıp sızılmadığını kontrol edin ve konteynerdeki işletmenin erişim anahtarını veya hesap şifresini güncelleyin
3. Konteyner dağıtımı için resmi imajın veya diğer güvenilir imajların kullanılması önerilir", - "e1439f3f7d25d378078d513a82a3fa87": "Arka kapı dosyası bulundu{}", - "9ede9d4bd542eedf78e39b0acf0206e3": "İmajda bashrc arka kapı dosyası [{}] bulundu, kötü amaçlı kod içeriği:
{}", - "686765b4612ecd8f774648db29a1541d": "cron arka kapısı keşfedildi{}", - "390bdc0b3c37a56ede9467b0c220a3b6": "İmajda cron arka kapısı [{}] bulundu, kötü amaçlı kod içeriği:
{}", - "caea084281a3cb2515e5618cd3856163": "Sistem arka kapısı bulundu:{}", - "d04061273caa56d5a0c3d74f3e9fd482": "İmajda systemd arka kapı dosyası [{}] bulundu, kötü amaçlı kod içeriği:
{}", - "fc76e0fe415c49cc1c09bf76035fc4e9": "sshd arka kapısı bulundu{}", - "00b2409f52ef5bc56afe29ccbe5cfa2c": "sshd sembolik bağlantı arka kapısı bulundu: {}, dosya kötü amaçlı özellikle eşleşiyor [exe={};link_file={}]", - "e747da31a54cd71fb1a2860cae0f9f77": "tcpwrapper arka kapısı bulundu{}", - "a2b09164c8d23894736bcc6a646861e0": "İmajda tcpwrapper arka kapı dosyası [{}] bulundu, kötü amaçlı kod içeriği:
{}", - "a7fd9f6b190b8531039376fbbda5f482": "Kaçış riski taşıyan kullanıcılar bulundu{}", - "5d46ed5f4af3f30cfcc8bd66942f93b4": "{} kullanıcısı, [{}] komutu aracılığıyla konteynerden kaçabilir, bu da saldırganın ana makineye veya diğer konteynerlere erişim hakları elde etmesine olanak tanır. Kötü amaçlı içerik:
{}", - "4ca0a18aa36a60613104cacdae514dec": "1. İmajın silinmesi veya artık kullanılmaması önerilir
2. İmajı kullanan bir işletme zaten varsa, konteyner ortamına girin ve /etc/sudoers dosyasındaki {} kullanıcısının içeriğini silin.", - "611afea08ae3b216a34dfde4c143f46c": "Desteklenmeyen sistem sürümü", - "0af5787b053c4bf5dbe610731f7d4199": "Dosya yolu Türkçe karakter içeremez!", - "719ee030d81490fc055af0c4426aacb9": "Tespit başarısız: {}", - "ee3936ffdc910e2cb8578ad1fae322f0": "Tespit başarılı!", - "2e5c9168b81de403131125abe3537861": "Şablon adları özel karakterler içeremez; yalnızca harfler, sayılar, alt çizgiler ve noktalar desteklenir", - "1ef49203b5ddab4a6b30eddab93c6d73": "Bu şablon adı zaten mevcut!", - "356dbf2911e78ebedbd99f13df311ce1": "Şablon başarıyla eklendi!", - "4f6a25bc1019404777b1a95b85c375f3": "Şablon değiştirilmedi!", - "029a1a33fb7a828191eac587a4d98db4": "Şablon içerik formatı hatası, lütfen geçerli bir docker-compose şablonu girin!", - "052009ea42871f16153ca6fb451be303": "Şablon başarıyla değiştirildi!", - "550993f7a7c3863e988dc02458bb413b": "Bu şablon bulunamadı!", - "86eb5f101087c690c1229fffceb97cba": "başarıyla silindi!", - "c541f51f11868ef56cf50524eeddd226": "Öğe bulunamadı!", - "c3f9a083e42b21151560ba7e23667129": "Şablon bulunamadı!", - "d5d3eedff8acf67756e21b4612aaa380": "Konteyner adı zaten mevcut!:
[{}]", - "05073a33c4bfcb8113af6b3222a0cccd": "Bu port [{}] zaten başka şablonlar tarafından kullanılıyor", - "69a22232c25cb907570f837e4032ed7e": "Parametre hatası, lütfen template_id girin!", - "35698a69135017d7f8345e32cb5a87fe": "Bu şablon bulunamadı veya dosya bozuk!", - "49d5a6420e1b84d63826fa1d79e5236d": "Şablon dosyası mevcut değil", - "e199ad07ae94664293828e753ec2a9a8": "Şablon [{}] şu proje tarafından dağıtıldı: [{}], lütfen başka bir şablon seçip tekrar deneyin!", - "a3017095090064d0ec98861e35d3849c": "Proje adı zaten mevcut!", - "a9a92ec33cfb8eb3288cfc84edcd48ad": "Dağıtım başarılı!", - "a180787fbf3d2e3fac72a13cb98ce513": "docker-compose sürümü çok düşük, lütfen en son sürüme yükseltin!", - "d8b370ee0351106fe38046541c421361": "Proje adı bulunamadı!", - "30159c83433a6845a080ad879c0fb61d": "Temizleme başarılı oldu!", - "6483a5effa8c7ebce28c3838ee6f6e6e": "Başarıyla temizlendi!", - "5ded1fa085b4c46667f9c8871d00a46c": "{} Proje başarısız oldu: {}", - "0e0ae38580f51369586ba6933a7c3105": "Eksik parametre project_id!", - "78f91123fc323aab6eb38f2bfb8e26d7": "Proje yapılandırması bulunamadı!", - "c3905cecf4f4eb28fcee1f4a4ad21bb0": "status parametresi eksik!", - "f3655b96aad3f0771354a12af79571dd": "Eksik parametre template_id!", - "79f89afa2eaf7c8da6f0ac44295dba90": "Değiştirilmedi", - "5b0854983625160cfbf1295ceb6ec327": "Başarıyla çekildi!", - "ce932f534479bae87f0615fa7214e5a1": "Kök dizin taranamıyor", - "bf3d793f9f908f7d2d26a1be8dbb80fe": "Yol mevcut değil!", - "d2fe452a7fa69442d5296b8e4832ede3": "Şablon başarıyla eklendi: [{}]", - "8d92d05b95b166c5683fdb88f7de8bed": "Şablon eklenemedi: şablon adı zaten mevcut veya formatı yanlış [{}], kontrol etmek için 'docker-compose -f [compose.yml dosyasını belirtin] config' komutunu kullanın", - "428ed92bf9d3198f4c9885c11fdb2be3": "Başarılı şablonlar: [{}]
Başarısız şablonlar: şablon adı zaten mevcut veya formatı yanlış [{}]", - "70975749d256333f1b3b62c864ca265a": "Değiştirme başarısız!", - "2360e954ae9eecac28b2a3edad5e8ce0": "Başarıyla değiştirildi!", - "e8ad47bc3f119a4d4072f5cb114676f4": "İmaj adı boş olamaz", - "e5e3829984a9637afc2546ad2c87d83b": "İmaj yolu boş olamaz", - "e5f40049c6d67bd11d9a1a1889f5b84a": "İmaj ID'si boş olamaz", - "5e022f79dcc774c79bc55ee28774e2e7": "İmaj adı / karakteri içeremez", - "c00be60f9f3f7d747aadfdb124e855ef": "Başarıyla kaydedildi:{}", - "cb1f8d99b492340cf701101c87884a8c": "İmaj dışa aktarılamıyor!", - "afaa91d141ded3e37b8b9ebf8bc31c51": "İmaj dışa aktarılırken docker bağlantısı zaman aşımına uğradı. Lütfen docker'ı yeniden başlatıp tekrar deneyin!", - "5b980f2e1c82c04c91376d55d4306a91": "İmaj dışa aktarılamadı!
{}", - "e5e8c7cac8b71e94280fa08301d21e78": "Lütfen imaj yolunu girin!", - "5441400ea3bd16cffdf70c46c34f61d4": "İmaj içe aktarılamadı. Dosya uzantısı .tar olmalıdır!", - "67b97e4746a2faf5d59206a80bb28649": "İmaj içe aktarımı başarılı!{}", - "deceb44868a29ae5d579114348736cbb": "İmaj içe aktarımı başarısız oldu ve konteynerin geçici dizini oluşturulamadı. Lütfen koruma yazılımının bir engelleme kaydı olup olmadığını kontrol edin!", - "8eb05618b0f04e727b0685427fd49c8e": "İmaj içe aktarılamadı!
{}", - "721aa02577670c1049ea9d12caa8938c": "Lütfen doğru Dockerfile yolunu girin!", - "736df9a7c491f3299efdeb9f7d7e9e0f": "İmaj başarıyla oluşturuldu!", - "6e85568dae869303ca7a4486f55458a3": "Oluşturma başarısız, bağlantı zaman aşımına uğradı", - "5bb301b85cc1f42e56174d3d9a4c0286": "Oluşturma başarısız! {}", - "f51455b323ec2db8004c812001043330": "Oluşturma başarısız! Belirtilen Dockerfile bulunamadı", - "8e1b9c9b75950d0feba6813d32766e61": "Oluşturma başarısız!{}", - "eba0ec758a6464a20c14c0f23ceee62e": "İmaj başarıyla silindi!", - "8dd326278d09a3ac4bc56cf725c8f262": "Silme başarısız oldu, imaj mevcut olmayabilir!", - "11ead921bc0e3d94f1f9e0db4bf8ed8d": "İmaj ID'si birden fazla imajda kullanılıyor, imajı zorla silin!", - "43993616c7433350755d30a3b4d065dd": "İmaj kullanımda. Lütfen imajı silmeden önce konteyneri silin!", - "d6992c3fcf2269c249cd5f18f1ac2c11": "İmaj silinemedi!
{}", - "0c6c071174fde5b47c9eef8088c17a89": "İmaj silinemedi, Docker bağlantısı zaman aşımına uğradı, lütfen yeniden başlatıp tekrar deneyin!", - "a3ba80a8e1e0d9af94c809e909431b3c": "başarısız, [{}] deposuna giriş yapılamadı, lütfen bu depoya tekrar giriş yapmayı deneyin!\r\n", - "cc40077b6ee61fbfa35713a21e8eb866": "bt_başarısız, [{}] deposuna giriş yapılamadı, lütfen bu depoya tekrar giriş yapmayı deneyin! {}", - "60b488c60b6747bf34a86a69740b636d": "Gönderilen imaj [/] içeremez, lütfen şu formatı kullanın: imaj:v1 (imaj adı: versiyon)", - "44dbec830b87eb037e8fcbb0e1b56160": "Docker genel deposuna gönderilemiyor!", - "b4c46001066c912344e3bdb0df86e848": "[{}] Deposuna giriş başarısız!", - "0ebfb094c6482acb049e0dd0d3107307": "Gönderme başarısız, imaj etiketi hatası, lütfen şöyle girin: v1.0.1", - "d26bdd6e86002ed92089dc71347822ce": "Gönderme başarısız, bu depoya gönderme izniniz yok!", - "82058092ad7d2c7aa5e2f012b6544e59": "Gönderme başarısız!{}", - "2b228d4775d23d2725ec227ba648bd43": "Başarıyla gönderildi, yansıma:{}", - "9e396f640866ded9c3a47268f96a36e3": "İmaj çekiliyor, lütfen bekleyin...\r\n", - "7e5f4d488d318dc7c235095c8456f5e4": "İmajları çekin veya arayın...\r\n", - "5a7377f73fc144fd961e8b2ffeba66af": "çekme başarısız!\r\n", - "97a6dfe3a273202edffe31af7a43e220": "Varsayılan yansıma istasyonu kullanılarak imaj çekilemedi! Sizin için başka bir yansıma istasyonu deneniyor, lütfen bekleyin...\r\n", - "484616540fc726ef4f52e97a1c2f0fef": "İmaj çekilemedi!\r\n", - "1cd77329b2bddfb200e656214b1fdf32": "İmaj çekilemedi!", - "63c709b9759af42fef890d539d822575": "Çekme başarısız!{}\r\n", - "b4aba972332d1f3728171905a033fb99": "[{}] imajı başarıyla çekildi\r\n", - "2fae21ffd185d9e9730b39bc7de23852": "İmaj başarıyla çekildi!", - "8a635442294fd90195a43d9a1672fc3f": "İmaj çekilemedi!", - "711de72d616e7abb29dfa919244d382d": "Çekme başarısız, imaj mevcut değil veya özel bir imaj olabilir. DockerHub hesap şifrenizi girmeniz gerekiyor!\r\n", - "e9511e26273da5b4537b4683668b548e": "çekme başarısız!{}\r\n", - "05d13bf5dcc37754db74b2356e6e117c": "çekme başarısız, Depoda böyle bir imaj yok!\r\n", - "714841af7f3de6c8d99ba03f4cee0ee5": "çekme başarısız, İmaj formatı yanlış, örneğin: nginx:v1!\r\n", - "2d941c4fa4da32ccafa8670a07f23c1d": "İmaj başarıyla çekildi.", - "5282194697748d9fcd1ccd8a90428424": "Bu yansıma imajı mevcut olmayabilir.", - "d6facab17334983e7c6f8c561c239820": "İmaj çekilemedi, bu özel bir imaj, lütfen hesap şifresini girin!", - "b507deb7848d566982b339265c8f5482": "İmaj çekme hatası

Sebep: {}", - "e90811ef0a60b6d299b4e1064d7788d0": "Kullanılmayan imaj yok!", - "f343313c101aeaff0516990ebea3dcef": "silinemedi!{}", - "90ecd58b3feb0b2be11f0af685ad39fe": "Kullanılmayan imajların silinmesi başarısız oldu ve Docker bağlantısı zaman aşımına uğradı. Lütfen Docker servisini yeniden başlatıp tekrar deneyin!", - "4097585e32152eb74bbee5ab8c463718": "Docker servisi anormal çalışıyor, lütfen yeniden başlatıp tekrar deneyin!", - "26a0931677e111565f3ff7d059b94d8b": "Ağ geçidi ayarı yanlış, Lütfen alt ağ ile eşleşen bir ağ geçidi girin: {}", - "def2ba1ce0e4d77692c14e5b984636fa": "Alt ağ adresi formatı hatası, lütfen örneğin şöyle girin: 172.16.0.0/16", - "716eeeb727fd667635ccf1d18891d46e": "IP aralığı formatı hatası, lütfen bu alt ağ için uygun IP aralığını girin:", - "e310a873e7812c7f994d482604061fee": "IP aralığı [ {}] zaten mevcut!", - "db88b911ea66744c24b22efcafef2101": "Sistem çekirdek sürümü çok düşük, lütfen çekirdeği güncelleyin veya başka bir ağ modu seçin", - "9cebb294a44695984eaaf2134df63a51": "Mevcut düğüm bir Swarm değil ve kullanılmadan önce yapılandırılması gerekiyor", - "85ac438bd64f13e2ad61cf60e5ade3d3": "Ağ eklenemedi! {}", - "640520ffb5d9c01336710bad3ea6d7ff": "Ağ başarıyla eklendi!", - "87574a543563d2e037b87a6cf705e3ff": "Sistem varsayılan ağı silinemez!", - "23b6d9d6c36088deb928efad7fb9b63b": "Ağ kullanımdayken silinemez!", - "2aa70dad9bff94a855fdde3fc113e6c5": "Silme başarısız! {}", - "8f512551c7ddf61331c3d068e80c642c": "Kullanılmayan ağ yok!", - "08efe6a4e12437b79225c8b59fd710eb": "Ağ kimliği boş olamaz", - "a636381ee5e6d6d021fff745ca132905": "Konteyner kimliği boş olamaz", - "31a75a8d220d37dc4a7ea28d0f24cc19": "Ağ bağlantısı başarıyla kesildi!", - "a2b9895fca7698902da9319b52392366": "Konteyner ID: {}, mevcut değil!", - "c81f03a558307d5aaf3b339af28e04ff": "Ağ ID: {}, mevcut değil!", - "12a90fe85b8863e1dea43284988d7750": "Ağ bağlantısı kesilemedi! {}", - "6226d2fef3bf047236f0f3a57dcd71fb": "Ağ bağlantısı başarılı!", - "d882b8375782b1bc56ccaf84ed27d20b": "Ağa bağlanılamadı! {}", - "221d1ea3c23f430e03a4486dca865014": "Konteyner mevcut değil, lütfen tarayıcıyı yenileyip tekrar deneyin!", - "7e88e25ea6c628c2d03c526c04af3eed": "Konteyner durumu alınamadı: ", - "ae178e022cf2fe30f402145572528de8": "Birim adları 2 karakterden kısa olamaz!", - "9f9663b59d32947ff1f2c5b364c571b8": "başarıyla eklendi!", - "365c770f123d22093084908ebcdc75fc": "Birim adı zaten mevcut!", - "2dc51ae60242f0e5b56a9f0d176f91d4": "ekleme başarısız oldu {}", - "307feea9ab8928f39595316b11992cb1": "Sürücü seçeneği etiketleri sözlük/anahtar-değer çiftleri olmalıdır!", - "f529949f8a98615c109ee8b8eb9f7656": "Ekleme başarısız! {}", - "2a0f93407bb61e2403ccd032cbc64e3e": "başarıyla silindi", - "a4ec5c1fa47f2ce0c875f91ea4e7dd08": "Depolama birimi kullanımda ve silinemez!", - "11ff7153b67d275618dd3a62d1e56373": "Depolama birimi mevcut değil!", - "55c31f03e88bd6ad4ce7f68d425648dd": "Kullanılmayan depolama birimi yok!", - "5395cc8155f62a666b8f0d0f9f207676": "Depo bilgileri zaten mevcut!", - "9b10e472adfe6372c9175b9002f098fd": "[Resmi Docker deposu] Düzenlenemez!", - "5858be44c285048a8f51c126b2fd23e9": "Düzenleme başarısız! Sebep: Hesap şifresi çözülemedi! Lütfen depoyu silip yeniden ekleyin", - "7e51d0e26e1b467aff3c89d3e0751ec0": "Düzenleme başarısız! Sebep:{}", - "6478f13dd58e5a4329e19be9020243ff": "Bu depo bulunamadı", - "d5309f3186607eb36bee41e8a28cea3a": "Düzenleme başarılı!", - "9e20bffc0d4093d18fcbc5c98fa0fd87": "[Resmi Docker deposu] kaldırılamaz!", - "a62336a87697ab6911ba550015a798ef": "Silme başarısız, Depo kimliği mevcut olmayabilir!", - "c28bc5c07ec6f2b56777ac7c852dd64b": "Kurulum Başarılı!", - "f2bd8f0373084151bbc07e8c1409e37c": "Kurulum başarısız!{}", - "54197759827cfaf0cdb1e213fa49771e": "Giriş testi başarısız! Sebep: Hesap şifresi hatası olabilir, lütfen kontrol edin!", - "657a0b7e82731fb4ae516d14081f17d0": "Giriş testi başarısız! Sebep: {}", - "11cde3a2ca81c845978b98e4a6ec471e": "İzleme kaydetme süresi pozitif bir tam sayı olmalıdır!", - "b314fb25bf654a2256bf53b0f6986c93": "İzleme verileri 999 günden fazla saklanamaz!", - "60e46aeaed758964902dd7ae99858f03": "Mevcut", - "1ba194462d31177d3db4ad6bf18fdbe5": "Docker servisi kurulumu başarısız oldu, lütfen aapanel izinsiz giriş korumasını kapatıp tekrar deneyin!", - "422f78617d6852c41e370982d73235ed": "Kurulum başarısız! Hata nedeni:{}", - "dca5bd22c99a74f74074a3a53d78a58b": "{} başarılı", - "be62f7640f2c5b730ba50ecc580ae618": "Genel yapılandırma dosyası hatası, lütfen {} dosyasını kontrol edin!", - "8ebe0b989b543cf96149811c7a1f3fe2": "Hızlandırma adresi [ {}] Format hatası
Referans: https://mirror.ccs.tencentyun.com", - "ec1ec17a5862a949e277432e1d09484d": "Kurulum başarısız! Hata nedeni :{}", - "179a2001e96bb8d0475488f80c7216a8": "Başarıyla güncellendi!", - "f4dc83b81fe6993f99c2b54494eeeec1": "İzleme başarıyla başlatıldı!", - "af79fd88d4b6f7e8a1ac05e199747fdb": "İzleme başlatılamadı!", - "6f4d03d4d1ee0bd282ea744730b7ceda": "Docker izleme başarıyla durduruldu!", - "4cc06d8560bb116a38a5aae1458cbe4a": "docker-compose dosya yolu boş olamaz!", - "8d885b86e8562c2128689c4a2601c054": "docker-compose dosyası mevcut değil!", - "7bdd4d85dda1275e2be709fd9e0d71dd": "docker-compose dosyası yürütülebilir değil veya bir docker-compose dosyası değil!", - "c28e19f0398bc1819a890878021836c1": "Kurulum görevi zaten mevcut, lütfen tekrar eklemeyin!", - "a87b64b2d19f29438274f80ce36a3579": "Kurulum görevi sıraya eklendi!", - "c1710a5899fa03f7ad5ea1945a91e4f8": "Docker'ı kaldırmadan önce lütfen tüm konteynerleri ve imajları silin!", - "d388487780fba74e4ff3f3b9ffbce58b": "Kaldırılabilir!", - "c4ba6d01fd53333a6e7e85707758c550": "Kaldırma başarılı!", - "b7affa7cc663144bc99b9edb3f1a027f": "Onarım görevi sıraya eklendi!", - "cb49a4daafc9d27bd460967891968225": "Başarıyla kaydedildi!", - "739722f14db791bd300e08318a48ba59": "Kaydetme başarısız, neden: daemon.json yapılandırma dosyası format hatası!", - "58fcf0699f38a60c8025330585ac205a": "Kaydetme başarısız, neden: {}", - "720d2290c3082615c0f79894bfdcabd7": "Lütfen doğru IPv6 adresini girin!", - "c0ef08aa7bd6276137ccd491a8041223": "Yedeklenecek birim yok", - "584e35dd4a55da88bd232ac7a19b9b95": "Yedekleme görevi başarıyla oluşturuldu.", - "0b08674e1c87f3f8508a4ae9b0c160f8": "Yedekleme görevi oluşturulamadı {}", - "13d829d3f2b78c971207d944f2a96c55": "Dosya silinemedi, neden: {}", - "6169a7282b361deb5f6f5b6e18f9426e": "cmd parametre hatası", - "286933a4f24bee0eed1f9300f70a30c7": "Yalnızca docker run komutu çalıştırılabilir", - "a46a6b274dcbfc5a629d234c2816a165": "Tehlikeli semboller var: [{}], Çalıştırmaya izin verilmiyor!", - "8135363a6a5e2c145c6cedab8ac1e510": "Port formatı yanlış, bu yöntem desteklenmiyor!", - "3b825826968319b6256c4020cc49676f": "Sunucu portu [{}] zaten kullanılıyor, lütfen farklı bir port ile değiştirin!", - "70b35bb3bb2fe425a981e8cc68c06906": "Lütfen ihtiyacınız olan imajı çekin", - "e768fcd4ff22e2f3cc2535f1ea9c5682": "İmaj mevcut değil!", - "7dc29c1ed7012513111b11f56c73a4f8": "Bellek kotası kullanılabilir miktarı aştı!", - "73aff7a8ab244bc5d0d1448e9a0ae6f0": "Bellek kotası 6MB'den az olamaz!", - "2c4eca852599890038970a7e0f384470": "[{}] imajı mevcut değil, [Zorla Çek]'meyi deneyebilirsiniz!", - "56a727f1edc5f008ee8f41a638662322": "CPU kotası kullanılabilir çekirdek sayısını aştı!", - "45c163fd880ce5a21373fbd53bbcd642": "Bellek rezervasyonu 6MB'den az olamaz!", - "bf6b8400e1726aadf1cee7d6c1c5d173": "İmaj adı formatı yanlış. Örneğin: nginx:latest", - "f0beb6e739348ae10c9f15cb91638d2f": "Konteyner oluşturma başarısız, detaylar: {}!", - "e5d4020fc5f8c26e22add8db8a62f06a": "Bellek kotası bellek rezervasyonundan az olamaz!", - "c68d012ef602a12e38636c306c10c894": "Konteyner adı veya ağ köprüsü zaten mevcut. Lütfen konteyner adını değiştirip tekrar deneyin!", - "c4272ed0aaf1e7e2bcc08f1003c2391d": "Bu imajda bir başlangıç komutu yok, lütfen konteyner başlangıç komutunu belirtin!", - "a73eb9f1fb82232c9f70bb80024a9d9c": "İzin istisnası! Detaylar:{}", - "196a4f415d73b007e0627563a530967e": "Konteyner oluşturulamadı! Lütfen uygun bir zamanda Docker servisini yeniden başlatın!", - "ea7b2beec49a425b5742339d00a5aeb8": "[{}] imajı mevcut değil!", - "c29c7e4f72858367cd21d10303411592": "Konteyner adı zaten mevcut!", - "c4dc041770b8a0e34d1399141d0e4de8": "Konteyner adı geçersiz", - "97bcbd1e3b4df0f1c6ec642e7be17afe": "Sunucu portu {} kullanımda! Başka bir port deneyin", - "994e5a057aca3524ba773ec33228e184": "Oluşturma başarısız! {}", - "00ff90441ea0bdece5d9e5c72efa14a7": "Konteyner oluşturulamadı ve Docker bağlantısı zaman aşımına uğradı!", - "8879635d66ad75dcbfc8c31ba1351116": "Konteyner çalıştırılamadı! {}", - "facfe02e3070c389fe486efac23f2ab6": "Konteyner başarıyla oluşturuldu!", - "71dc70f7ab3a4bc0c2a7141718d3a9b2": "Oluşturma başarısız!", - "ed0029af5f77a5dfacbc2452e8c3ec92": "Konteyner kimliği anormal", - "c5b3db7efde90edcb803a4a79e559b21": "Yeni imaj adı boş olamaz!", - "b10305369ebb41ef24699b8137733465": "Yansıma mevcut değil!", - "d567f353b12e618571935661f31c2a16": "Konteyner düzenlenemedi ve Docker bağlantısı zaman aşımına uğradı.", - "c558fedcb5850939202e684ff32c7c50": "Güncelleme başarısız!{}", - "b84bf4d95051856f9965b55bb5402de3": "Konteyner mevcut değil!", - "f2124ee490df203b3f86509401c76a09": "Konteyner başarıyla düzenlendi. Belirtilen [{}] ağı oluşturulurken alt ağ belirtilmemiş, bu nedenle IP özelleştirilemiyor. Size otomatik olarak bir IP atandı!", - "b95d75cd8e04e9cca297c3cd1091b2eb": "Konteyner başarıyla düzenlendi, [{}] ağı ayarı başarısız oldu ve size otomatik olarak bir IP adresi atandı, hata detayları:{}!", - "4363bb34365a67238ecc6a98ce46b361": "İmaj oluşturuldu ve {}", - "4bb30e8d57a6a7e548758daf4ac33983": "başarıyla gönderildi!", - "a32e1f09fc2739d94c51a7168675e0e9": "Gönderim Başarısız!{}", - "9ff81cc845af62a773af3412bdf7d9a0": "Konteyner kimliği anormal, lütfen sayfayı yenileyip tekrar deneyin!", - "d8f5602e197fb8b3c772f071ad4a8baf": "Kabuk türünü seçin!", - "9ad72ac09babc507baa6e165041e128c": "Bu kabuk desteklenmiyor - bash veya sh seçin!", - "172f51d3307b02aeb6dc703a442f4724": "Konteyner alınamadı", - "684fc00ae67504a56c09ef71431b1261": "Başarıyla dışa aktarıldı: {}", - "3ab9d9b76e8d22434930622b5f0acc6a": "Konteyner silindi!", - "d1fe1d6e5e8c17b60f749ad36ff3bcaa": "ipv6 sunucu portu [ {}] kullanılıyor!", - "9f13645ac42f0c9908a35637a525d561": "ipv4 sunucu portu [ {}] kullanılıyor!", - "8708a53096a7d7bce5d3042be8feb736": "Durdurma başarılı!", - "5dc7c5bba9e3ff6d293a9cd6459bc1ae": "Konteyner duraklatıldı.", - "458c9e6b1324cc3843c313c99a9c8623": "Durdurma başarısız!{}", - "d40b23e847e0619c6e2133eebfd51807": "Konteyner kimliği boş", - "239aa38adb7ae2339600a015d8695f3d": "Konteyner ", - "b10f78da3571670e8567e599aba8d475": "Konteyner bilgileri alınamadı!{}", - "4e62f10d98b7560d22cf614879790624": "Konteyner kaydı yok", - "4bfb779dfe8300c1f2da1f1dae06a4ce": "docker bağlantısı başarısız", - "e9b0defc5226436d7d2580972376cad0": "parametre hatası, Geçiş: tür", - "d0e42e6dd40adc10d0027ab9993d8741": "Konteyner günlük dizini mevcut değil, günlük kesme ayarlanamaz!", - "3af555ace78d310a5db6e9449ed6843b": "Başarıyla açıldı!", - "641fe4d504d197e8570f3bc693f5c15b": "Başarıyla kapatıldı!", - "e04e8dc32dc0f13aea94cb4996a0057c": "Günlük dosyası mevcut değil", - "3e0f56b62a18226db6b8c71e8c917be4": "Günlük temizleme başarılı!", - "81259d9e5861e65db29844c19d9feb80": "Kullanılmayan konteyner yok!", - "53a5658dfa0a2e85083fd63b961d35be": "başarıyla silindi!", - "dac7d97aeb94cf9d3b3b5d7d072c4cff": "Lütfen tekrar denemeden önce kurumsal müdahale korumasını kapatın!", - "32ca87e65c5fc75d3857767417b56439": "silinemedi! {}", - "b0ea22ff0b389c2a32b8f4367ab650db": "Parametre hatası, lütfen yeniden başlatma politikası restart_policy'yi girin!", - "3b2f70397fa8a827c7146cbd900f7222": "Güncelleme başarısız! {}", - "c147897a9d1746a58de531e9c0158c23": "Konteyner başlatılmadı ve yeniden adlandırılamaz!", - "a89c2e8f7eb81399f984330e55014c6f": "Yeniden adlandırma başarılı!", - "8a615b544c027899738b19f2cc40fd93": "Yeniden adlandırma başarısız! {}", - "3506ae5524d7b5dbd75ed328349e065e": "Başa sabitleme başarılı!", - "363b76cd4207ec1adb31b9f7ee3930c8": "Sabitleme kaldırıldı!", - "0fffc4397713115e14ef45273241dfbb": "Parametre hatası, Lütfen şunu girin: not!", - "dce2cbc7791016e4876ab144e53b4f82": "Parametre hatası, Lütfen şunu girin: id!", - "7bdaccb3d20432c5e0150862ab1cc3f3": "Eksik parametreler: ad", - "9b90b5b49486a61d9b0e6dbbbcb56cad": "Eksik parametreler: container_info", - "b23d7110e9bf6539b4964afe0d4934e2": "Gruplandırma zaten mevcut", - "a90ca6939fe71693c145f50596c6e0e6": "Konteyner {} grup {} tarafından eklendi!", - "e3cf7e2f2d14257e7ea33657b135d534": "Ekleme başarısız:{}", - "fcbeb38a63ced9d3de476fb08c31d71e": "Eksik parametreler: id", - "fe4e0032f69b4100ed143d475e8b5050": "Düzenleme Başarılı", - "6c4ed52bea35c4c43839b8f0b44489f9": "Düzenleme başarısız:{}", - "6c0129a45e9da4e1820335f3d06a869f": "Silme başarısız:{}", - "2a743a86676fd52214d3c0af1b0238b5": "durum Parametre hatası", - "f95136e5c1f3ccbb09ace8fc24f1e0ca": "[{}] konteyner işlemi başarısız", - "2e01172e31495f41fcebcf3f831cc82c": "İşlem başarılı", - "244a98f8c45f938980f48b168aef02c9": "İşlem başarısız:{}", - "fc431240dfc80a731900d5f2ddb6dfc3": "Konteyner başlatma sırası {}", - "5ea6c6eea14c24c92eeeccaeea5c46dc": "Geçersiz durum!", - "45a0bbacbe8d5ea062167e88423e4573": "nginx veya apache sunucusu algılanmadı, lütfen önce birini kurun!", - "bdaf560796795d6a303bc9a1d75a34c5": "Proje Türü [{}] Mevcut Alan Adı: {}", - "4588a786e80c83c2cbde37b930c3d778": "Sunucu portu [ {}] kullanılmıyor, lütfen tersine çevirmek için kullanılan portu girin!", - "6888cf6586ce3c187150146a2d1db0ac": "Ekleme başarısız, veritabanına yazılamıyor!", - "e6bddfc6a0bbf72d592236c61b411f9a": "Hata ile ekleme başarısız oldu: {}", - "1bfa1b1738332c4835f5efe7c54ab9c2": "parametre hatası!", - "0d66954ff42aa042c219a356266f5bc0": "Ters proxy bilgisi algılanmadı!", - "7c6f761019365f8a5cfb2fb54d9e199d": "info.json indirildi!", - "10066fce84fe34e9cc33e0338532988b": "info.json indirme başarısız oldu!", - "0672e579ab0e3454713eb683ddcc4859": "{} İndirme başarısız oldu, lütfen yeniden senkronize edin!", - "8e790e81fffa7f51d099f710bd8f82cf": "{}yml dosyası testi başarısız oldu, {}", - "371acfea202589c4efd6724888f66595": "{} İndirme tamamlandı!", - "51cf61e34b3f71ce1e430cdfcf129b80": "{} Sıkıştırmadan çıkarma başarısız", - "c59b65890496cdf2b14d127a1f76f73d": "{} başarıyla çıkarıldı", - "0117718c35c7a16a62de5c259e1d35ee": "Dizin oluşturma şu nedenlerle başarısız oldu: {}", - "374e3fe41b55a0b29420e455fb514dd6": "Depolama birimi oluşturuldu", - "6d0d40f64f89227daf345eb2257638e8": "{} Boşluk içeremez", - "a00b49ace55de909015029a0d6d6096f": "{} boş olamaz!", - "54498312bb8f97ce07a9a0b0b47cfad1": "Sunucu portu [ {}] kullanılıyor, lütfen başka bir porta değiştirin!", - "47b74e08252747225c49ea0cb011c79e": "Proje başlatma başarısız {}", - "838089af9a2941a49862f342c056a8ca": "Proje oluşturulmaya başlanıyor", - "9b149598fb30f54fec9e82a3d121a464": "{} zaten mevcut, lütfen proje adını değiştirin", - "634370637f6a5b88940c75f826953d0c": "Kullanıcı proje dizini oluşturulamadı, detaylar: {}", - "f7b14d3f642d711a23d5a0cca725fd0d": "Proje dizini kopyalanamadı. Detaylar: {}", - "cb337dbfbc18aafa482051b6fc349dea": "Yapılandırma dosyası alınamadı", - "84d3fc0c1c70fcd6fdd7ca7c3be11225": "Proje zaten mevcut!", - "a280b122a0b3249c26b1f94ad4573f50": "Yazma başarısız!", - "72b8d771409a71a6650a65e1174cec30": "Proje başarıyla eklendi!", - "0fa934d82d7863e34606d19520d12e48": "Geçersiz konteyner sırası!", - "eedeb135fe678559787fe2cb304f24cc": "Konteyner sırası başarıyla değiştirildi!", - "0c1dcdb6582992fa9ec4169c7c958e47": "Proje mevcut değil.", - "4ec9c8311b7814ee0f17b634cb7a6ae0": "Proje aralığı başarıyla değiştirildi!", - "cda91d4feb0c7cceb0fa1aeabcf536b4": "Konteynerler sırayla başlatılıyor!", - "97f2a2dcbe0d211b8972c6151950b213": "Şu konteyner çalışıyor: {}. Zorla durdurulup ardından başlatılmasına izin veriyor musunuz? Ayrıca çalışan bir konteyneri kendiniz manuel olarak durdurmayı da seçebilirsiniz!", - "9d160eff84c44041cf4eb5c624874c4e": "Konteynerler sırayla başlatılmaya başlanıyor!", - "33b5d440d17f3837309707b5b049e899": "Konteynerler sırayla durduruluyor!", - "b687943a0a61ed9f039213d7c5e0fcca": "Konteynerler sırayla durdurulmaya başlandı", - "ec7b13b39406a81e90df7b7d06a4b134": "Geçersiz durum!", - "0df1e0596d9e1835d62be1b5ba537fac": "Konteyner {} zaten proje grubu {} tarafından eklenmiş!", - "d6d90f977089e176ec7443db17c41279": "Konteyner başarıyla eklendi!", - "04cd9210bf9290bda98bc76ca4bc59fd": "Konteyner başarıyla silindi!", - "d867a5e10a7a9485129c679b85453e3f": "Proje başarıyla silindi!", - "68ae8c43a52aac63c5c62e1974afdda6": "Betik kimliği boş olamaz", - "eee298ea1d9259c2f0e2061ecd89c21c": "Belirtilen betik mevcut değil", - "b68a8dd0c887719b7cc3e10dc11843ce": "Aapanel'in yerleşik betiği silinemez", - "aefb82d7caf36c7f34a4cf60168a1297": "Bu betik şu anda [{}] görevi tarafından kullanılıyor, lütfen önce görevi silin!", - "4223589c4945a6757845760cf467a183": "Bu betik şu anda [{}] görevinin olayı tarafından kullanılıyor, lütfen önce görev olayını silin!", - "2e32a56c4ec44d75ff6cf5c6ac366db8": "Betik başarıyla silindi [", - "16687cbe6e87af3bc2762f0410453ec5": "Betik adı veya içeriği boş olamaz", - "1e156c08409accc1dc3da5c395c3ea22": "Dönüş türü hatası", - "4371a6ff5a908b5ed6f43d52b49f7d30": "Betik türü hatası", - "91896a15daf4558843249e11b7aa1fc5": "Değiştirme başarısız", - "919c17a8f22c59f9af57399aa649003e": "Betik başarıyla değiştirildi [", - "71c95be7ca536d92d8f175fa245ddeb0": "Bu betik parametre gerektirir", - "7ef6898209b89f4ace813b19f5eac840": "Betik çalıştırma hatası, lütfen betik kodunun doğru olup olmadığını kontrol edin:\n{}", - "2086e84cd166412cf7236bdfb66e6d6f": "Çalıştırma başarısız, hata mesajı:\n{}", - "7a38e49c19eace49f0e9a0d03efadd1b": "Çalıştırma başarılı: \n{}", - "5e1459e1ff5449309bd13d173dca1197": "Görev adı boş olamaz", - "028f9aecc8c5edf83c2480f3ad9a62b0": "Betik içeriği ve betik kimliği aynı anda boş olamaz", - "540b2cc165934ef688f12e044c500f69": "Görev türü boş olamaz", - "14ccb76798e0752c668bf447e7c536dd": "Crontab ifadesi boş olamaz", - "db17fc000dce92ec98ef53267f816b9c": "Geçersiz crontab ifadesi", - "cb541ef3c967a13cb4b1185a661214cf": "Betik mevcut değil", - "ed1bb81caf44e6b159848fcd0b28b0a4": "Bu betik, betik parametreleri gerektirir", - "14753fa53d0a8928c69d56611bdb43d7": "Görev zaten mevcut", - "aa76a4150f28fd8de372eb5fa2646a2f": "Ayarlanan başlangıç zamanı mevcut zamandan daha erken olamaz", - "89c375395150b0550b20cdf31faf4ef5": "Görev mevcut değil", - "1df9f0729d55ed5e561bdf73b6b14976": "Görev kimliği boş olamaz", - "497b38d4da5f19ed3f041f4ae6af6059": "Run_stcript_id ve run_stcript en az bir geçerli değer gerektirir", - "cf76609030a04a8e357171a25d76f2e8": "Lütfen şu operatörlerden birini kullanın:{}", - "bb4d743f102448bf1ad62e1f1bd25e21": "Belirtilen görev mevcut değil", - "56fcd6720b5bd174b1d614b7c7761fd5": "Betik parametre gerektirir, lütfen parametreleri doldurun", - "809888a81d143c1118d056643719a133": "Tetikleyici olay eklenemedi", - "dd66e7c4d78fab1dfd30524d47af971e": "Olay kimliği boş olamaz", - "8abc3d5d0d73a76ae66603858617ad1b": "Belirtilen olay mevcut değil", - "858080b55748bca57bca9006f2c36e10": "Olay değişikliği başarılı", - "f9fe8aba24799e53034cfd45a3c96824": "Olay silme başarısız", - "101da618f72223d3eac9e66fe510b04f": "Görev olayı kimliği boş olamaz", - "bee903cc3d03ab2c237eefb1d601fbcb": "Betik çalıştırması hata mesajıyla başarısız oldu:\n{}", - "1d78758685e5e2f4efeeb490f8521abd": "\\n", - "add390e6467c956fbb7f6da0f51d23d6": "Gönderme görevi yürütüldü", - "e8edb193e1cb171a17efe2765d72af71": "Dosya mevcut değil", - "63d325d5c4dfd07afdf888fdf727542e": "Başarıyla içe aktarıldı, {} abonelikten çıkmış kullanıcı atlandı, yinelenen e-posta adresi: {}", - "6b803f13e4c829ed6a65c0d5976af511": "Anormal veya hatalı biçimlendirilmiş dosya içeriği: {}", - "d6cd6db68490fced73e7bcf3e269fc3d": "Seçilen kişi listesi boş", - "721537a954932be33814ab079df57c78": "Gönderim kotası yok, lütfen yedek paketi satın alın veya gelecek ay yenilenmesini bekleyin", - "debbea6b34bd0edb5bed5be7d68044c1": "Kalan miktar {}, tamamlanmamış görevin kapladığı miktar {}, gönderilecek görev için gereken miktar {}, lütfen ek paket satın alın", - "cb8c344616c2690af7d75e87f9c80aea": "Çok büyük bir sayı seçtiniz", - "4b0dae036acd930ca1c942474b04738f": "Gönderen mevcut değil", - "cd0c2875bbba989082b0bea54837c422": "Görev başarıyla eklendi", - "48a84605a7e7d8938acea34996b55bb9": "Görev eklenemedi: [{0}]", - "97b655f6f5593c96a89bfca9237ce36a": "Şablon mevcut değil", - "2efc2204459539d0ed963d7df3a0b797": "{} dosyası mevcut değil", - "2e8a8d9cfa45e93c3c8a673bee0833df": "Gönderildi", - "2c09afb2ce9a25b5e33e0b5eb7e10cb9": "Posta gönderilemedi, hata nedeni [{0}]", - "2af4936790c12bc9522e844a3187f142": "Parametre hatası: mail_type", - "cf6a1096f4f9f5c3632f03ddd00f8436": "Bu tür zaten mevcut", - "c92cf27565701074c9297c9f6e001056": "Başarıyla eklendi {}, başarısız {}, yinelenen posta kutuları {}", - "119acd39beb57884b7fce4275c0324d9": "Başarıyla eklendi {}, yinelenen posta kutuları {}", - "0b898fa833d00b281702ae7791a5624d": "Yalnızca yürütülmekte olan görevler duraklatılabilir", - "4cd93d208ac9f476b452f930ced5e3e0": "{} başarıyla tamamlandı", - "e38bacaba20440245e0aae88f984f78d": "Gerekli parametreler eksik", - "ca561681c6ba497c7de8fdecd5c05eba": "Hedef grup mevcut değil", - "9f965fcbc009b2b75dcef2e32a211054": "{} kişi başarıyla birleştirildi", - "aac60240e4a7b953b64974b957b43376": "Birleştirme başarısız: {}", - "aeaae7277bd406b03c27e12734a0073b": "Parametre hatası: id", - "3642b2d34114d470809e030fce8de34c": "Parametre hatası: temp_id", - "60287ee434fca4db4b62ab7fdff8486a": "Parametre hatası: addresser", - "c11022f75c572cd1b4641941845bf87c": "Parametre hatası: task_name", - "2816e3fdfcafd8e052bd036c330ebda2": "Görev eklenemedi: [{}]", - "db5b08f3936abce2e99f9aa1466e7258": "Parametre hatası: temp_name", - "6f095d43a6d1080f4694b669909d030a": "Parametre hatası: type", - "f7ba379966ef8be4f17f1ac316a49daf": "Düzenleme başarılı", - "08aca4a0ec8954c5a6a29a983ecbc55c": "Bu özellik Pro sürümüne özeldir", - "0f506b3e8117fe5c52c90146b2ee9e67": "Parametre hatası: a_record", - "33a5c77b138502b17baaa51f9bd88b2c": "Hata: {} için DNS kaydı bulunamadı ", - "4c8c4f693124ee1b937567d3ced11636": "Test iki dakika sürecektir, lütfen sabırlı olun ", - "219f93d55b24b6791d3a5c63b808a191": "Parametre hatası: ids", - "8c2fb0d74bf0b951dd8ada148c16ecb8": "{} dosyası mevcut değil", - "168861bb3452cc8ed67893c706ed69e5": "İçe aktarma başarılı!", - "08c91ce439acde3feb04454e8b2a4f59": "İşlem başarılı oldu", - "1d099d9c8e30376440abb2b5c7d09826": "Grupta alıcı yok", - "0c8a0434183377840948927ddf49c467": "Herhangi bir grup için veri bulunamadı", - "da500c6dc5f1ca7ce4e470705b7182a5": "Parametre hatası: group_name", - "81fa0fe3c0d0b866d13f32f822668ce2": "Parametre hatası: is_new", - "5abc9343e29dd1d774a1ded26c0fbb56": "Grup adı boş olamaz", - "08e36a7534385774e7972fc88ea1ca5d": "Ekleme başarılı", - "1457aacc3deb7a7f5efc28ff7bb84786": "Ekleme başarısız {}", - "2ac1d92fabeb3bb03f8cdc961c26f46b": "İçe aktarma dosyası mevcut değil", - "7dde3a45eff5e71e3098852362fd1395": "İçe aktarma dosyası boş", - "f4b7c8d194eba0221d53d49a71a9bed1": "Grup mevcut değil", - "7f9f8d114a082f1432fd4d508b39201e": "Grup işlemi başarısız: {}", - "5ca563a6955a312b2962d754d2bca84d": "{} kişi başarıyla içe aktarıldı", - "611be97ff2f405d97472f1e98352f5f0": "İçe aktarma başarısız: {}", - "93eb05555388b86db78c49f986669329": "Düzenleme başarılı!", - "183da276619df3a31c7153852caa43b4": "İşlem parametreleri eksik", - "6eeff7c159aeb90605c9eeaa1d900054": "Doğrulama görevi başlatıldı", - "616e6da41bf332fd4a725eced516860f": "Doğrulama görevi başlatılamadı: {}", - "694ae897645ed4f6c18dd496f0916e2d": "E-posta başarıyla gönderildi", - "3c4eeb0e0301063ab4f7b6e12b3ccc65": "Posta gönderilemedi, hata nedeni[{0}]", - "47cb4d76e39373c5fbb474f01a7f9cdb": "rc_user parametresi hatası", - "ada2e3b01cdd14582e9bde6794e56de3": "rc_pass parametresi hatası", - "ee668afb3022f7a04020a4355995df08": "Kullanıcı mevcut değil", - "fe3adb79b459800ef1bb0f8042e7fe4a": "Lütfen önce roundcube'u kurun", - "ebdab9ee4ea6ea28adfd7da342b8af7a": "Gerekli belgeler eksik", - "d77f421bec3e1db5836f52aa5b53e61b": "pflogsumm'u kurmak için önce [{}] komutunu çalıştırın", - "4980e2fc0b7bce4c83da3fe631a97bce": "Postfix yapılandırma dosyası bulunamadı", - "2867124182a8a707a7e8aeb1faa60d4e": "Postfix yapılandırma dosyasında mydestination parametresi bulunamadı", - "9a8b3de2d2fc5f9114798532eae929b5": "Dovecot yapılandırılamadı", - "a4cab041ab51d1c2f65f67d7d82ec8a5": "POSTA SUNUCUSU MEVCUT", - "7fcbf57e8fe359587beb56c6d6a35059": "POSTA SUNUCUSU KURULU DEĞİL", - "1d25cf1f445bdffccf0c7c04f98e90d8": "Kurulum başarılı", - "b4575dff8587db1b71ea56ef26fa160e": "Servis adı mevcut değil", - "c138b2ea9b2ce96219987b1dc34a1751": "Onarım Tamamlandı", - "fab07dcaf5fa1e2468aed520eb12f60e": "Lütfen rspamd servisinin çalışıp çalışmadığını kontrol edin", - "4b1b92ddcc4d8d18e1fc6d6a2c23b290": "Önbellek başarıyla temizlendi", - "ff6975219190cff0cd77a5d45a4e587a": "ALAN ADI", - "02909d9d9c7b1c15aca48a0f3b632849": "Önbelleğe alınmış kayıt ({}) başarıyla yenilendi", - "8d42017ed8d72f616fcbfae1705753bd": "A kaydı [{}] alan adına ait değil", - "b13de3ba9a0a8e3aa8cfc4c7b124ffaa": "A kaydı ayrıştırılamadı
Alan Adı: {}
IP: {}", - "cb98099b2d50b0ef968b5e35a208055e": "Alan adı zaten mevcut", - "05c53d8c333382f2a88a51e182be4f83": "Alan adı [{}] eklendi! ip hatası:{}", - "8b460c0a4ee7b9f9abf8b7d9cead2cba": "Alan adı [{}] başarıyla eklendi!", - "17d9629d2f06c1ee2212061b91161d4e": "Lütfen alan adını girin", - "232b6fcdd02dbb56d0b4680d54e2f357": "Alan adı mevcut değil", - "2f1897169b16b705ba6a5b29a05a983d": "[{0}] alan adının A kaydı başarıyla değiştirildi!", - "5e22d528a4b6e80126d13acec3f03e11": "ALAN_ADI", - "2ca49954e8a7fb75ed4cd9e1bca24e00": "Alan adı başarıyla silindi! ({})", - "20aa86e3c9f40c2469f13b3c03dd280e": "Parametre boş, Yetersiz şifre gücü (büyük ve küçük harfler, sayılar içermeli ve en az 8 karakter uzunluğunda olmalıdır)", - "35dc5b31856636d5281ebc710edeaf24": "HESAP ADINI GİRİN", - "1f26a48fd4db1e46c21cdab41fdfd7bd": "Yetersiz şifre gücü (büyük ve küçük harfler, sayılar içermeli ve en az 8 karakter uzunluğunda olmalıdır)", - "69e1e781dd3949f8b6a6fff74bbc79b0": "E-posta adresi biçimi yanlış", - "e387e797495f8e6068a2378ea2a9d46b": "E-posta adresi büyük harf içeremez!", - "406cd9bfbe188d7be6ed43ee087853e3": "E-posta hesabı zaten mevcut", - "e89b7947650b902c10dc72cd06c7ad62": "{} için posta kutusu sayısı {} sınırına ulaştı", - "a94bf19eb03a81e4860453ad9d4872b2": "Alan adı MailServer1 {} içinde değil", - "9a498355742b1efcc8e97085c9f68783": "Bir posta kutusu kullanıcısı başarıyla eklendi {}", - "a2dde299178d98f8b9cf937549c885ef": "Yetersiz şifre gücü", - "5e2421be63aa860192d725b7b57d19f7": "Alan adı MailServer {} içinde değil", - "40a84c055443ba1f6fb569b8c9861595": "{} için posta kutusu sayısı {}'ye ulaştı, en fazla {} ", - "6f6551f3050a37bff1c0db57f9c819b7": "{} posta kutusu başarıyla oluşturuldu", - "8e3e96d2a9f285ae645e587477b14555": "Posta kutusu kullanıcısı başarıyla değiştirildi {}", - "3d0fd00e4f68fb6a1ebb5de73954f5ca": "Silme Başarısız!", - "daa8873086f44ca2724f03513c8ca775": "Posta kutusu kullanıcısı başarıyla silindi {}", - "f5a9438fc0a655d491b336ef4122d03d": "Posta gönderilemiyor, hata Nedeni: Bazı servisler başlatılmadı, lütfen servis durumunu kontrol edin", - "9fab0f5f8d9a53a59587cc911de514f7": "Bazı bulut sağlayıcıları (Google, Amazon gibi) varsayılan olarak 25 numaralı bağlantı noktasını kapatır ve posta ofisi hizmetini normal şekilde kullanabilmek için 25 numaralı bağlantı noktasını açmak üzere sağlayıcıyla iletişime geçmeniz gerekir", - "b11852c790672b942ed2c547c08d0767": "Posta gönderilemedi, hata nedeni: Gelen adres biçimi yanlış", - "1a4fd4fdd2dcf2d2f06f30522c1d4914": "Arayüz genel erişimi desteklemiyor!", - "55252847683f299cdbdb6c8a6f2aaf69": "E-posta gönderilemiyor, Neden: Bazı servisler başlatılmadı, lütfen servis durumunu kontrol edin", - "56865f3d8aa564a93ed26724862960d1": "Posta gönderilemedi, hata nedeni [{}]", - "e79b5fbde5e49479aaafd5a1fe379e61": "HESAP ADI HATASI", - "333b7343c6bf424033940a8a97b12bb7": "Posta alınamadı, hata nedeni[{0}]", - "1fd6e81e08c403b6c111f4ca1a673d63": "Posta yolu mevcut değil", - "5778692e244a35e113e61ed5a4a36063": "Posta başarıyla silindi", - "653869d8a742ca8c58e33b6c1530b403": "Yollar için geçersiz JSON biçimi", - "beb65edc70a951b625901e5b198ed89e": "Yol belirtilmedi", - "894b5d9ee6b19333f6871fe484756116": "Bazı dosyalar silinmedi:\n", - "4bbfd3ed699b4545134a61ab737e05b1": "Tüm postalar başarıyla silindi", - "b400dc9934847d9fe1d234befb30054d": "Servis adı yanlış", - "fcc0d9c357a8bfa2d83e3e250264d4c7": "Yanlış işlem", - "29c102771255855883869f4bb3b4c2e4": "{} işleminin başarılı yürütülmesi {}", - "a35dd0bfd9996e07728358593562dccc": "Lütfen hesap adını girin", - "f935fa53dce46fbb36cefa0a0b08ec65": "Hesap adı geçersiz.", - "dd130650a1e48b849b7c61ec23d72cea": "Gönderilen posta alınamadı, hata nedeni [{0}]", - "4168802788e2d2bcdf3238824b47b58e": "Postfix yapılandırma dosyası {} bulunamıyor", - "973ce6f8cad81b79484dfa9dd8d3e01c": "Sertifika HATASI, lütfen doğru sertifikayı pem formatında yapıştırın!", - "12eb041051df6300c99c90844910086c": "Kurulum başarılı", - "ac293db78f750888fad60af17a550b4e": "Yönlendirme kullanıcısı zaten mevcut", - "2ce7dae0c16a247318839d2c9dd05fa1": "Alan adı posta sunucusunda mevcut değil", - "7b7203def07b8609282c02213359f019": "Yönlendirilen kullanıcı mevcut değil", - "ecc64e7aae7d595dcfcc8e7f0f484e47": "Posta yönlendirme başarıyla eklendi", - "78505c78baa039a350190dfaf296952b": "Yönlendirme kullanıcısı mevcut değil", - "2e9f5dd27bf2f972f374084fd8bc56be": "Posta yönlendirme başarıyla değiştirildi", - "666b75a042d5cd8cba3a6d1c2f270704": "Posta yönlendirme başarıyla silindi", - "03c6490678727779b9a553b0e03c1d43": "Yönlendirme adı zaten mevcut", - "b08e9212679fd4cf82dd5ea8beda84f4": "Başarıyla ayarlandı", - "631cca78135ab71a389991d7155bea59": "SMTP rölesi zaten mevcut", - "0b5eff39ea7076bcc36235e042de422d": "Yapılandırma bilgisi bulunamadı", - "318cc2da7d028b5497ec2e2b7bcb577e": "SMTP rölesi mevcut değil", - "b5a0fb08f3a04afbfbcd4ee57299dbdf": "Şu anda uzaktan taramayı desteklemiyor, işlev test ediliyor", - "293a6b04618c2ba7921e039c75f9c80d": "Spam korumasını yüklemek için lütfen uygulama mağazasına gidin", - "ccff040d3fd05435e247a3b204e55ef6": "Yedekleme görevi mevcut değil!", - "e3eec59bbd1bcf4ebc36213e6df758f1": "Kapatma başarılı!", - "798ddcc716b5c9993e0d1f914e3f1bf3": "Kurtarma tamamlandı", - "2ca583c8306948114efb114f6bb00c3d": "Bu geçerli bir yedekleme dosyası değil! Dosya adı şununla başlamalıdır ", - "97f87b75c36da3aec2a952fa834627ac": "Kurulum başarılı", - "db8452315d0eb9f8aa56f5ba4e010254": "Dovecot yapılandırma dosyası {} bulunamıyor", - "54d5be9023bb0918159a58ef65e7cf46": "Ayarlanan alan adı mevcut değil", - "bdc245ab2373b030a79738e5806967b4": "Kurulum Başarısız, yapılandırma dosyasını şimdi geri yükleyin", - "af7746eac1b9f41d829e2f150be96440": "Kurulum Başarılı", - "45448be795807701f1d6d79c73a5e453": "Başarıyla Kuruldu", - "6b73df7e52420a0609340be53b559a27": "Lütfen hesap adını girin", - "f3482253072b82f9099ba7b79bd694ce": "Geçersiz hesap adı, örneğin: xx@example.com", - "75e698a13245f4ea49f033e336f9a7ae": "Alma başarısız, neden: [{0}]", - "4b590c993349c4a9332fe7c30cc3623b": "İşaretleme başarılı", - "fd1c6c13e2281da435056d1cd3de0d19": "Başarıyla taşındı", - "d6b9ff1c86c87a4d3d169d19b8b803da": "Lütfen FQDN'yi girin (Tam Nitelikli Alan Adı, örn. mail.aapanel.com)", - "f003e31bb108bfc6e2dca6b6a493e2c4": "Lütfen FQDN'yi girin (Tam Nitelikli Alan Adı, örn. smtp.gmail.com),", - "b20c85e36016672347fc67d33c95b9e9": "Port 25 açık", - "1af60deed5a95f10c9ee73efeff48999": "Diğer servislerin 25 numaralı portuna bağlanılamıyor, lütfen hosting sağlayıcınızla iletişime geçin", - "540d99b4d5cfe696f6e46cde48eda194": "Kaynak dosyasını alma hatası!", - "bef8386758cab502fd7b6edd15619c85": "Böyle bir dosya yok!", - "22d422258dca7c9b0975f91f927678f0": "Yeniden indirme başarılı", - "56ecaac7a13c0ef171f753e6b1d835b3": "görev mevcut değil!", - "48aff051338f9c2251ebdeb3fd211114": "Dışa aktarılacak kullanıcı yok", - "28154bafa8a9826866b6e002c71d4fff": "Anormal veya hatalı biçimlendirilmiş dosya içeriği", - "3f7e44a7c5b57a82e56793cdbeb858d7": "{} içe aktarma başarılı oldu", - "bed14b598283efb210f08792c0fd1ba4": "Yeni e-posta adresi yok", - "f98c2754442b046838d86a7f55ffc206": "E-POSTA MEVCUT", - "c656050d918fe06bf87fbe9819642be1": "Gerekli parametreler eksik", - "3878813a0744ed93ed2da272e42ab410": "Sertifika yok", - "6d02e9d5b213cf3d523190f8f90fd3e5": "Dağıtım başarılı oldu", - "fc93888f42e90fe0bbfddfe2e3b8bde7": "DNS kaydı oluşturuluyor ve etkili olacak, lütfen sabırlı olun", - "7bc1a5dc172f07bc2480c7b2067e08cd": "Alan adı eksik", - "abe0a1bf4c110c5e912db5968951edb3": "Değiştirilen alan adı [{}] başarılı!", - "de5085e3caa72f9417811a3a16fbdc5f": "roundcube zaten mevcut", - "bd85bad7c1cedffc46ae70e0db8034f6": "MySQL hizmeti algılanmadı, lütfen önce kurun!", - "c6a51d5b1a7bd956ca4c4f338c086f83": "Nginx hizmeti algılanmadı, lütfen önce kurun!", - "04558b9e13998b32d658e8cd8b0d1ad0": "site_name parametresi hatası", - "90baf7cab644bc240457a2c47e6ebf00": "php_version parametresi hatası", - "cf84746ee6e7a5bb44a33492dcf06859": "id parametresi hatası", - "fcabc387917b8ffea3954ce306154a14": "path parametresi hatası", - "bdf7ec8b7b06dbcc5cdd37b7fcf0be78": "roundcube bu sitede dağıtılmamış", - "162ee492c21d8ca85c113a5ed39cb19a": "Başarıyla eklendi", - "18aa77314905ba8cc4ebbbef5e5bfc61": "emails_to_add parametresi hatası", - "16bc256c4be0dc8ac8c57a502d76ed7d": "Kara liste başarıyla eklendi", - "8392e379584c66a9f7a4913c7d31fac5": "emails_to_remove parametresi hatası", - "b28deaa432321b73e5b6708c3cdb29a2": "Kara liste silindi", - "aea0ac1bc82821423517f7d240f4fc20": "Kara liste dosyası yok", - "2eee30c225f61143cba34ce255c00b39": "Dışa aktarılabilecek kara liste yok", - "04cc998ff38dc7b2a1850bab4def5ff9": "Kara liste başarıyla içe aktarıldı", - "1b11ccbdd39c606a4b00d06e306ce7da": "hata: {}", - "37e5741448f3fff98b04f3b24663ed5a": "{} başarıyla boşaltıldı", - "040af72cf6c4a1e2b1c442829628d063": "Eksik parametre: active", - "456da492cfd986feef0e8b6172ee52b9": "Tür başarıyla değiştirildi", - "ee94cfd2755c5d0bc7c532a5550b0632": "Eksik parametre: recipient", - "2ab854061aad0aede6cc7164670391df": "{} abonelikten çıkma listesi ekle", - "a721d48e1f148b2cbab44c96c5d5a27c": "{} eklenemedi", - "612ba9a3aadccbd5aee092178e59a95a": "Başarıyla kaldırıldı", - "0f72c62155338caff34448acccab2065": "Varsayılan türler değiştirilebilir", - "f354e294ef8e10dfa5d5330710ac2244": "id parametresi geçirilmelidir!", - "59ba6a6955b093d3d8ab3c8ad9e07907": "Üzgünüz. Bu özellik sadece profesyonel üyelere özeldir.", - "981b4b10fbb172510dd8bc6c78442abc": "Mevcut URL'ye erişilemiyor, lütfen ters proxy'yi doğru şekilde ayarlayın!", - "b016f3fad3a16d8ab6f834d028138bb2": "eksik parametre! path", - "4e1b0afecf8cca9bc1c7baefbbaa5020": "eksik parametre! quota_type", - "f17f1430a59b12a71518577a2ac98394": "eksik parametre! quota_storage", - "b147c4722e48cf85b07f12e8e4dc36b9": "parametre hatası! quota_storage", - "6b26e574db24819d9553ff97329f72c8": "bu geçerli bir dizin değil!", - "d265f15afa05b01c067e8a37d4db5f96": "Belirtilen dizin bir sembolik bağlantıdır!", - "31883af5f94e56074d46535fb885be81": "İşlem başarılı oldu", - "cd605148babc76c2acdd97401fde84e4": "Gerekli id parametresi eksik", - "24e2e9a2bb00384d2d5199605e8429c6": "Başarıyla oluşturuldu", - "f18f18a50495f5b2cc683fa8b388d7a6": "Düzenleme başarılı", - "362dff77f7403550e886db901404856c": "Silme başarılı", - "5219b0eed304e85ff3b5d223ad1a19ea": "Lütfen ana alan adını belirtin", - "99e790a4dcecd5a50224da0a6bbfe290": "Paneli güncelledikten sonra kullanılabilir", - "21217aade801d79f727da6da4bbc9028": "Lütfen kullanıcı adını belirtin", - "c66b529d95d463970172da0cdb289df4": "Kota durumu başarıyla güncellendi", - "10d7350372e998438adf642e58055fe2": "Kota durumu güncellemesi başarısız oldu", - "634709ee9a1f6829d28bf76ddf278711": "Lütfen alan adı ve ip belirtin", - "decc12f91f9703a201987fdeabe572a4": "Aynı ada sahip [{}] site zaten mevcut, lütfen oluşturmadan önce değiştirin", - "de67e3b2c564a899fe3195606036a7f1": "Kurulum başarılı", - "8d5496d961b4d4e08474b20c1450737a": "Site oluşturulamadı", - "e75e68c65607a7cfcc570d51345d7e33": "Dosya izleyici", - "983e2622c48ae7231c5d29b135133b0e": "İzleme dizini ekle: {}", - "15c7df4ddd1d366c2cdfa2689c15369d": "IP filtre programı derlemesi başarısız oldu", - "423c2da1e20a5f2138cc810423475eef": "IP adresi boş olamaz!", - "1e116dc22492b28a7a38a6029416d0e1": "IP adresi yanlış biçimde!", - "8c8f15a1c1cce8bbdc465e865c804b40": "Maksimum engelleme süresi 24 günü geçemez!", - "fb86e24ffe47ba150610ba1efd96929a": "IP adresi CIDR bloklarının geçici olarak engellenmesi desteklenmiyor", - "bdb199a03e52488d499ea6bb0cb0d1ed": "IP adresi segmentlerini engellemek için WAF gereklidir", - "1ac8e9ffcea7cf6e9fa183c1b9038599": "IP verisi mevcut değil!", - "04d46623edcb5663566cf43f575de9b2": "Web sitesi adı boş olamaz!", - "b611124a9bad44e328d7ce809912802d": "Başarıyla ayarlandı!", - "4dcde63f7fd4415f3b5eb6cb889d135c": "Ekleme başarılı oldu", - "d303480175994c6ad240cf24a4a99640": "Web sitesi yapılandırması mevcut değil!", - "87d1f7257214d09ba39656b72c864bac": "Hesap Kurulumu başarılı!", - "aa5bb2d58da86c4b9160e94d0c4538f1": "URI boş olamaz!", - "ade0ab88aa0ee9c18f0979d5b62b517d": "URI zaten mevcut, lütfen tekrar eklemeyin!", - "506d9cb0cb2468fd09048bcbe8b37497": "URI mevcut değil", - "cf180f27e678d4e297f690e581961417": "Dinleme adresi biçimi yanlış!", - "1ed0fa9bb8768d56bf2d3232d7067023": "Yanlış dinleme portu aralığı!, gereksinim: 1024-65535", - "e6aa58b2f41bc53f6b84657d47eb35c1": "Veri kaydetme yolu mevcut değil!", - "c87be59ecbed944c2b45fea87d62f473": "IP istatistik modu hatası, gereksinim: 0 veya 1", - "fbc4861b0190c90a5388e44d2bbac678": "Mevcut sürüm kullanılamıyor, lütfen paneli yükseltip tekrar deneyin", - "8b1d5629a1346da21fcaeb9f8f0db6d2": "Başlangıç saati biçimi hatası!", - "7a238977c4b13d23ac3e6b151a914cab": "Bitiş saati biçimi hatası!", - "a87a482f3bced3ce16bc9a351e8b5ce8": "Başlangıç saati bitiş saatinden büyük olamaz!", - "a0ef69b1680461368a9130e770256ca6": "Tarih biçimi hatası!", - "2493958c6f4051bb8d254d77d77b622b": "Zaman ayrıntı düzeyi hatası, destek: dakika, saat, tarih", - "4c4258ffd9a69c8e332346241a3cbdae": "Olumsuzlama koşulu verileri yanlış biçimde!", - "b47f4e8b7540cae56e085231c3c984c1": "Erişim ID'si boş olamaz!", - "fea04488a926034079dc00c5a60a9135": "Erişim ID'si biçimi yanlış!", - "da206b8971dcba715ed8cdd1a82736e1": "Erişim ID'si mevcut değil!", - "fd65e390dd8aa35ea3622658247776d0": "Tarih biçimi yanlış", - "9a4f1ea39f3a554d4e5431f86eb0450b": "Site adı boş olamaz!", - "b59417ef234946819788acfde92a00a7": "Temizleme başarılı oldu", - "aaa3736c0541d4a4d82193c2204ec317": "Başlangıç saati yanlış biçimde!", - "e579606ed1219291caeb3bfad786dd3f": "Bitiş saati yanlış biçimde!", - "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "Tarih biçimi yanlış!", - "53c85b9d96ea14f3f8224a5d2e659894": "Parametre boş olamaz!", - "9dc21ed8c6025cab9873847e6e1ca506": "Sorgu türü yanlış!", - "236c6e2f9a266b929b283eda30c2b3b6": "İlgili veri bulunmamaktadır!", - "50fc65b5f19812ccf756b7ad7de7f4cb": "session_id boş olamaz!", - "8f2adb53dcb8d2c660159b1f8e8012ed": "Oturum ID'si yanlış!", - "7f4419a5b09e1a04936f6aba6939521a": "Yapılandırma kontrolü tamamlandı!", - "f3df0751d9522bf2e68034bab4cd49a5": "Yapılandırma temizliği tamamlandı", - "191fae10bdd9d3eb6cb110b524fe40b7": "Gönderim başarılı oldu", - "f53208c04e48d7ee19222b6adf343810": "Kullanıcı adı 3 karakterden az olamaz!", - "251e2cae1dbed2b37f7d16961a606970": "İzin seviyesi seçimi yanlış!", - "a835325a5600b6571a24111e4d318e2c": "Lütfen bir web sitesi seçin!", - "a669655fa991afcfa0cfa3f62286d944": "Şifre uzunluğu 5 karakterden az olamaz!", - "4d8d30e66ad9aaccc738ad99d5083955": "Kullanıcı adı zaten mevcut!", - "12152390a5bf2ebce0f00b0fb5c650a2": "Ekleme başarılı oldu!", - "4d1b7f489e07d6ca02ca1910a3884c48": "Kullanıcı mevcut değil!", - "3e83aa40dd320efb027151c02aab2871": "Şifre uzunluğu 8 karakterden az olamaz!", - "d3748b3102cc8ba898f0f0bec842ce9e": "Değişiklik başarılı oldu!", - "ac75e534c7334e1fd02c68a3993f1568": "Silme başarılı!", - "ca281da1f13858d0b599d19e18a510bf": "Web durumu yanlış seçildi!", - "c88239bc4a113ab0f02acb9bc31b3437": "Web portu yanlış!", - "f06e6a5985a91ac55c651e0b573378f0": "Web güvenlik dizini boş olamaz!", - "41a871d7ec26993be1367226321e06fa": "Güvenlik giriş adresinin uzunluğu 6 basamaktan az olamaz!", - "16f83d0969b9f7fe56ac3b55f9dedb26": "Bu giriş zaten panel tarafından kullanılıyor, lütfen farklı bir giriş kullanın!", - "066df5a1cf19314e0265a1eb396848ac": "Giriş adresi yanlış biçimlendirilmiş, örneğin: /my_monitor", - "794ee58637251012717d7e565aafc2a1": "Kurulum başarılı oldu!", - "2531ce72ea98e5aa8f4953eee783b540": "Hata kaydı bulunamadı!", - "0fc543dae93d3f76f5f7ff8048f5c398": "Dışa aktarmak için maskelenmiş IP bulunamadı!", - "5552ac99360952da2cf289f556ad19a6": "Senkronize edilecek maskelenmiş IP bulunamadı!", - "3332452d6ecd015473b133de021a9e06": "SENKRONİZASYON BAŞARILI!", - "e6afdb1b63ca733f5d1741c7eff7a64e": "İşlem yapılıyor, tekrar etmeyin!", - "696212205a77e698860ff5195992642b": "Onarım işlemi tamamlandı", - "97cb85456b49af4258f4c8da38bb576a": "Zamanlanmış görev başarıyla eklendi!", - "2739213f569742c0782252f41279c060": "Zamanlanmış görev eklenemedi", - "1cc4efde4fab0b4bbc2812a8b58f59b0": "Lütfen bir site adı belirtin", - "3b5ef9e1ea5a8dbd9606075686dbf15f": "Lütfen bir tarih aralığı belirtin", - "f8412f656685f470a82b74de3d9f24d5": "Dışa aktarma görevi zaten mevcut", - "96ed379ec1882dcf52f0ff65057efb92": "Lütfen dışa aktarmak istediğiniz alanları belirtin", - "4e698e0709485a0e93a706964b748c5b": "Bilinmeyen dışa aktarma türü", - "2a2dbc12afac446fe408eb78453bc6c2": "Dışa aktarma görevi mevcut değil", - "9ff8782f584db728284fadd719967806": "Dışa aktarma görevinde bir hata oluştu", - "b4421542e9cff8ce336075b668b8f87e": "Dışa aktarma kaydı mevcut değil", - "41564d1cd7f8ecb23bcc590cb2217518": "Lütfen yeni bir veri dizini girin", - "699856a3cc697d8afcfd04dcd2f0729a": "Belirtilen dizin mevcut dizinle aynı", - "103422cd692bcaf56a7367075caf2274": "Belirtilen dizin, mevcut dizinle aynı diskte bölümlenmiştir, bu nedenle veri taşıma gerekmez", - "bcbd9605d3b8753bb8afbc765b293e01": "Değişiklik ve veri taşıma görevleri başladı", - "967a57ad58881afe2c5da6cf0d7fce8c": "Lütfen IP adresini ve tarayıcı adını girin", - "62b73e6c2a169296e73edf8a4d1e02f0": "Lütfen doğru bir IP adresi girin", - "0e1a26f6137c04f0f80956210069e46d": "Lütfen doğru tarayıcı adını girin", - "fe8d50ca26f2e864d2bf4a932801bb85": "Beklenmeyen hata, eklentiyi düzeltmeyi deneyin", - "21aa998a1dee8774bc88ce2a070bf4de": "Lütfen bir IP adresi girin", - "2e0c672edc06ef05e44de98ac1b7a47d": "Silme başarılı", - "0f9d9b728fba6427b5ff4da49aee1738": "Örümcek yanlış seçildi!", - "e48c86e701ddba3ab084d5457aa58714": "IP boş olamaz!", - "3bdb147b7a040582220aa7f1ce2af19b": "IP biçimi yanlış!", - "b60597b6a9525341fa5d4d441084658d": "IP adresinin çözümleme kaydı sorgulanamadı", - "86e9360dac1c5eece29f32c9aba8011d": "Kaydetme başarılı oldu", - "e5320166e7623b6a39f9a7af7c20c787": "Farklı bir web sitesi belirtme parametresi hatası", - "c21fbb62edf94306d2e73365e6e7d637": "Başka bir web sitesi belirten parametre boş olamaz", - "c7fae0c9886cac3924fe5e459e171ab1": "Silme başarısız", - "9a84d2910d3d36b78d7060f1c77e27f6": "Site adı belirtilmedi", - "0987458a95b8bb7d6cdf9fa0630b6407": "Mevcut sunucu nginx değil ve özel toplamayı desteklemiyor", - "b925dfe3295278bd81a85bded66da01d": "Durum kodu yanlış biçimde", - "2a8793bbb8bc38a7df9d8c796648526a": "Site adı seçilmedi", - "6878600890a41b84c145423618ea2431": "Web sitesi bilgisi bulunamadı", - "eff712873c55654bf48eaf421a184e73": "Özel koleksiyon adı girilmedi", - "116208583eac10a8769774a6eaaff926": "Edinme türü yanlış", - "fff3d7679cb121a30e68a104b58c934e": "Koleksiyon içeriği girilmedi", - "75db42595fc9aee34df76df808712f92": "Özel koleksiyon adları özel karakterler içeremez({})", - "9667904e74175dfde9824cb8cd099ce7": "Başlık içeriği $http_ ile başlamalıdır", - "4c61d0ee460aa25eb6b5c413c46c9236": " Gövde türünün koleksiyon içeriği [$ + nginx günlük değişkeni] içermelidir", - "c03680a7ae35b7ce5b62f67b854d3b06": "Koleksiyon içeriği [$ + nginx günlük değişkeni] içermelidir", - "d621342512cf7910a6dc4e7d736bcc63": "Koleksiyon içeriği özel karakterler içeremez【", - "b4704dc559a05c5721c095b97c4dbbc0": "Özel koleksiyon adı yineleniyor", - "6594b670e8bd06e352f112c1bf194fc1": "Özel koleksiyon içeriği yineleniyor", - "a531c58ef7fefbbbd79becda53ede191": "Özel koleksiyon adı belirtilmedi", - "88c0c3ae4ef97b6069a35672b2caa05c": "Gövde türünün koleksiyon içeriği [$ + nginx günlük değişkeni] içermelidir", - "41353000c0d351db90c9eec095bae879": "Zaten yinelenen koleksiyonlar var, adı: {}", - "ce78b7a225f05ece35ed7adc68b08a88": "Değiştirilecek edinme yapılandırması bulunamadı", - "521df7df29b44fcee614de96cecca61c": "Silme başarılı ", - "3b0ccb5c759b0941d50e331b22013560": "Desteklenmeyen uzantılar: {}", - "7ea48870539b84996d1b1691c22823a7": "Değiştirilen veri biçimi yanlış", - "bc64045195c8ed198a69772b3a204ef2": "Değiştirilecek veri belirtilmedi", - "bb02871a5e118841b95b69c5bff55baf": "Kara liste yanlış biçimde", - "1aac00a8c681100fd27b287c0b0516f1": "Yapı yapılandırma biçimi yanlış ayrıştırılıyor", - "f6df35a69157ae1fca6415b043485334": "Görev ID'si belirtilmedi", - "524a477cee9485a5a80a860e2bc5b5d5": "Görev ID'si yanlış", - "4b5d95ed20303e337aec42486a0fb3fd": "Mevcut web sitesi sorgulanmadı", - "19e777b7c8cdc1ce56ad2f4fe735b2b7": "Mevcut web sitesi çalışma dizinini sorgulamıyor", - "45484ac5ec748cf3362d425ed7142b75": "Kural boş olamaz", - "b36196750a032a791ecc8035853dc648": "Kural adı boş olamaz", - "cfa7bc3b484b8068e78bc6f55a2aaeaf": "Kural belirtilmedi", - "835365605f9e08c44c0b7f65a422d059": "Tarih parametresi yanlış", - "4fa3e528186292138b224a0a1d46ec59": "Web sitesi adı yanlış", - "3769ee974734f97166d6bce6b96e9b4e": "Veri hataları", - "daddfa03b4ea762e009a36ce970b2b59": "Kurulmuş bir Baidu hesabı yok", - "0379d9c081b6fd9ec2fd86e8672a4e72": "Verileri alamazsanız, oturum açma bilgilerinin süresi dolmuş olabilir, tekrar oturum açmayı deneyebilirsiniz", - "8057e57596c33acf04619825d625a483": "Güncelleme başarılı oldu", - "3149165696693c4f6fef18928261a50f": "Kurulmuş bir 360 hesabı yok", - "74a7684631b29d814a52e3401576411a": "Saat biçimi yanlış", - "f146f571f352f376dda16114593afd32": "Bu klasörde php dosyası yok", - "a5ef7f95136c8e93b70c99cdc25d3b1b": "Kural boş veya kural dosyası yanlış", - "8756f93b16b703129c155cf4bf950e64": "Bu kural zaten mevcut", - "2163538a10246cd5973057248443e827": "Kural tabanı ayrıştırma hatası", - "876088098a14f073e5da6fb4bf9a435a": "Kural tabanı dosyası mevcut değil", - "6342b28c7c40e67016eb255e0f6fd382": "Bu kural, kural tabanında mevcut değil", - "1bbd886460827015e5d605ed44252251": "11111111", - "e1fa6849f823a00ea3ce2b63a584c918": "Risk bulunamadı, lütfen bir süre bekleyip kontrol edin", - "4919ae009da24772f54033981c72e7e0": "Bu dosya bir webshell'dir", - "c3ff5d517aa0206b89c0107494480efb": "Mevcut dosya bir webshell'dir", - "841be447d44ca7e7424592573211f34f": "Şüpheli dosyalar, manuel inceleme önerilir", - "512e1fecde26404204e6072b3a12dcda": "Risk yok", - "3dfa767ed09b94292e6ed5bd39fce5d0": "Risksiz", - "6f72fe3fe88bd53bf8f690d2b0c5f842": "Lütfen yüklemeniz gereken dosyayı seçin", - "d27bc4b1f587e887d48e7fe92d7a5b23": "dosya mevcut değil", - "8d5b6682ddc9e4453c4d971d3044dc7b": "Dosya sistem tarafından bir webshell olarak algılandı!", - "c21a06cf7008cdaa11bcc918d6ea1c0d": "Dosya bulunamadı, lütfen testi yükleyin", - "786c8548bf1e0cfec63644e085f73ece": "sistem hatası", - "449061dfe5a4b59740b41d2705ad0bcc": "Lütfen silmeniz gereken yolu doldurun", - "704ec17e6ea425b9acd1265f1dcd0072": "Boş bırakılamaz", - "43043017cb4d53a3d984d879a42e2ebb": "Başarıyla içe aktarıldı", - "3874a2dc1de33534dd53275bf1e54004": "Mevcut değil", - "2608ba6b8d1d54f9ffbfc630123ec583": "Tür hatası", - "2684d8fd0fc1dfb52e16b70b47334f53": "Kapatma başarılı", - "ef00da3502e70bd84fff4b5036ff8288": "Sayıları ayarlamanız gerekiyor!", - "1720bc60b372b85a213d6492cdb677e5": "zaten mevcut!", - "2bc3cbf8db79ff0fac4659dc5c9b2dac": "Mevcut değil!", - "07dc67d62b952497160f106a5c499b9e": "Dosya ayrıştırma hatası, fabrika ayarlarını geri yükleyin!", - "cccd0da021862b684d131d9646a1d97f": "Dosya mevcut değil, fabrika ayarlarını geri yükleyin!", - "d3c6f5d15561b322dcf534f98c15d125": "Zaten mevcut!", - "d9c9b13c7fec0945d08ec49965daa4d6": "bilinmeyen hata!", - "6512bd43d9caa6e02c990b0a82652dca": "11", - "698d51a19d8a121ce581499d7b701668": "111", - "dab4bbd12ffc7517800304f0bdc4fc86": "Değiştirilecek veri boş olamaz", - "436b3a5c35b1b4c27cd55cd2fd9e6f95": "Başarıyla eklendi, etkili olması için Nginx'i yeniden başlatın", - "102779676feeffd385f7038542c05441": "zaten mevcut", - "965983d46c2695569cdb4e9e12fd6571": "Engellenecek veri boş olamaz", - "9416a531e05cf18f1c26b97263e3c96b": "mevcut değil", - "52932c15b4fa68c60b470a4dbcdd9852": "Değiştirme dosyası boş, lütfen veri ekleyin", - "8fcc9a1b8fb706211e066cd5f7df0a65": "Başarıyla silindi, etkili olması için nginx'i yeniden başlatın", - "00203649d952e20d9611cfcd21b53034": "Silme başarısız/mevcut değil", - "3365f0d08012012075d406cf271d77f6": "Engellemeniz gereken içerik boş olamaz", - "2c555efbcf00eec34e159cbb930a49fd": "Engellenen içerik zaten mevcut", - "c7f766edcc806204f816c6de56e0e8a1": "Engellenen içerik mevcut değil", - "9fbc55a13069e729c3d4fb48d823badb": "Lütfen IPv6 erişimini etkinleştirin!", - "95d19257def109989336b6347a8f0fc3": "Lütfen doğru IPv6 adresini girin", - "c0481d94eb7e8c7f46f76fec921373e2": "Adres mevcut değil!", - "f6c7ec89d03c9c2ac46e336abc81b7a3": "Liste boş!", - "5be36040b9fa33036a454c12f27b7375": "Ubuntu desteklenmiyor!", - "11158f5edfbaa7a72e2e1e701b426a73": "Geçici olarak sadece Centos7 desteklenmektedir", - "0959d7ee773960b7193779c9fdadcb0c": "Ubuntu geçişini desteklemiyor!", - "9033e0e305f247c0c3c80d0c7848c8b3": "!", - "25e5fccc23b6134c8a7c5afa6befd508": "Örümcek başarıyla güncellendi!", - "76e2205e6fc3d06106b783a710b1fe10": "Bulut bağlantı hatası!", - "17cae6641b0b761574f69f864134bf7e": "Bulut bağlantı hatası!", - "ce5275d6e4a918c8236e31e85270d290": "Açık!", - "a5b0cc35b2e38546efb8ae6118230925": "Kapalı!", - "fee1c1b6bffab76b18b09b002c405753": "Sayı 20'den az olamaz", - "b14aa6510f1cff54c60f576ef0731959": "Süre 20 saniyeden az olamaz", - "d8f4a1993546cc4b850cde3599e27aec": "bulunamadı", - "fd16ce6210fa8913fa6230549b264979": "Yanlış parametre!", - "b4bc1177cfc8a0d0758e49b6a16f96d5": "Bozuk yapılandırma dosyası, lütfen güvenlik duvarını düzeltin!", - "ef78de4bb739700e26b532d670638846": "Profil bulunamadı!", - "c02aa591c33647ad91bb649c1663bcd1": "Bu özelliği kullanmadan önce lütfen aaPanel WebSite Speed eklentisini kaldırın!", - "07a7794bae1a87cab16d773ce4c9597d": "Yabancı erişimi yasakla, genel ayarlarda etkin değil!", - "bbaae08a3d7f937d5524fdfd83b37894": "Ayar başarılı! Hemen etkili olması için Nginx'i yeniden başlatmanız gerekir", - "3549141361cdf1fcb62983aa5965e7be": "cc_increase_type parametresi gerekli", - "f73016df38477cfb3c3cac7c339bfd44": "cc_increase_type Parametre hatası ", - "6da0a606488196a3f41f0654dff52782": "cc_ip_max parametresi eksik 1", - "e37eabb7b29fc24037e7fd2b0c617ead": "cc_ip_max Parametre hatası 0", - "aa03bfe7b5a6290d1152302818b3cdc4": "cc_ip_max Parametre hatası 1", - "53d80dd2af2a957ff00a7869e82eb011": "cc_ip_max Parametre hatası 2", - "0f75238fa757d189104cbc3b745cc7e5": "cc_ip_max Parametre hatası 3", - "81079713d38580dfe7714d164626b505": "cc_ip_max Parametre hatası 4", - "59c4751ec8fb1f80078f21a5d3d23483": "Tek bir IP adresinin savunulabileceği minimum sayı 2000'dir", - "7a39ee1d46dbe23c10a5a102e002ffe1": "Tek bir IP adresinin savunulabileceği minimum sayı 5000'dir (etkinleştirildiğinde statik dahil)", - "21d5a4dda3dccf2cde4a2453923ba0c1": "Engelleme süresi 86400 saniyeyi aşamaz", - "8998ac964e10fa904c6f44b9a1d45839": "cc_increase_type parametresi gerekli", - "a199962dff306e167cd1e96ccd864892": "cc_ip_max parametresi gerekli", - "123f5dc9d4ce755a22034ce48a34f0ac": "Sayıları ayarlamanız gerekiyor!", - "2c6392950dd8b9feeaa322428f883d6f": "IP segmenti formatı yanlış", - "d7bdef3923c512c13a60dc05970ca1cf": "Başlangıç IP'si bitiş IP'sinden büyük olamaz", - "b1f0a374986c41eaeafaa08485b42b59": "Belirtilen IP segmenti zaten mevcut!", - "aef0de8ec2a48f9f94f54d41a008f8f9": "IP zaten şurada mevcut:", - "74e16058920cfff989e455cb7edca425": "başarıyla değiştirildi!", - "4e140d99b9d960dc0faf5d43d200eab0": "Yanlış veri formatı", - "4295a035192a0fcd88c89d16f69972ef": "Başarıyla içe aktarıldı!", - "acb8450d83f87a19ac444ce07dbeae96": "Veri formatı yanlış", - "0b8faaf8776c5eb0c07dcebc13dc55bb": "Web sitesi kök dizini eklenemiyor [", - "2128a6acdfae9f60c3a292ae9afa33d2": "Eklediğiniz URL zaten mevcut", - "4229662446c462c1d5212338127e8036": "Lütfen URL girin!", - "3862c72b9bbd0accd915f171d10b5df0": "Lütfen parametreleri girin!", - "e4fd18cafa65c2071efa92e329fb1aed": "zaten mevcut!", - "96dd1aef326fe2e13e360245d729f9a5": "mevcut değil!", - "f10ae1b19b9c946f277946863a7ef9de": "Lütfen ayarlamak istediğiniz siteyi girin!", - "340c2b3dcf52aad038d610aea126fdf8": "Lütfen bir tür girin!", - "d7fda198ce652fc42e3b62bc39a87dcb": "Lütfen bölge girin!", - "fc28444072899e60e6b2cb526651db31": "Giriş türü yanlış!", - "53267148f9e661f7ab274b68ffe21bd9": "Girilen istek türü hatalı!", - "0956e47e87d4d56af7f3a5bc36ec80de": "Girilen site yanlış!", - "3964f2ebc20aec0215b29f34e4e9cc8e": "Lütfen girin: ID!", - "f30e2178ef2d7f61c9b4dbf1c73f6876": "Lütfen girin:açık!", - "cfec0e080bc7d4ebaae29eaec8dcba24": "Lütfen girin:durum!", - "0e69f6afc958a9a1e75f1eb93908e9a9": "Girilen durum kodu yanlış!", - "0fa9cb1eb677f9243d0737a37a69f89f": "Değişiklik başarılı!", - "40ae230e6831501721508b806e3e8f16": "Lütfen site ID'sini girin!", - "ef589b2e5faa2bd4c28c0017ccd737f6": "Veri yok!", - "89c6a8aafca7b01d7645766802707a37": "Lütfen kurmak istediğiniz siteyi girin!", - "5ccddb202b5b5e7f96aa3181bda9beb3": "Lütfen tür girin!", - "2913b96effaf71ad6c7487658e4056ce": "Lütfen bölge adını girin!", - "9c4bd2c334c14c48159a045e21a279c6": "Girilen tür yanlış!", - "66d6ebf480448bc6846362868a584866": "【Çin Ana Karası】 ve 【Çin Ana Karası Dışındaki Bölgeler】 için bölge kısıtlamasının aynı anda etkinleştirilmesine izin verilmez!", - "60e59018ad2d3e94f166beed6445cf7f": "Lütfen bir ID girin!", - "86484538f21c95f5d8b2e1df43135470": "Lütfen açık girin!", - "230f490b7f059873ba86a8ad13a8b007": "Lütfen durum girin!", - "ee89c7f6d23c70ad8f7f0072e3e0cb9e": "Bu URL için hiçbir parametre bulunamadı!", - "d1a198fffa0319462af0ceca6bc39dca": "[/] içeren bir URL'nin beyaz listeye eklenmesine izin verilmez", - "0711b255059aaab715cfb46f6c503af7": "URL [ / ] beyaz listeye eklenemez", - "e233e412faa6c35ecb389c502a7b6537": "Başarıyla ayarlandı", - "e78511f517dc9b86fd743725e8eae766": "Engelleme süresi 86400'ü aşamaz!", - "14fc8ce684c7f8c9cbd9357d46db244c": "Eklediğiniz istek başlığı zaten mevcut!", - "0d2d762c7ed9b83476612b6c08dcb18e": "Belirtilen istek başlığı mevcut değil!", - "9c3c6a1bed873cbb175e46b5cefc99e8": "Belirtilen kural mevcut değil!", - "0d1596574ac7aa5d5ecb88d72c42f986": "Belirtilen URI zaten mevcut!", - "e66a7a8d9d1f830988f1f4a5f37ece0f": "Belirtilen kural zaten mevcut!", - "8528abe0d097e78242d535d5fe8d0753": "Lütfen IP adresi girin", - "2aae8271977f5ad9ae44838f2b68bf91": "Yanlış örümcek türü!", - "d9a32e26c6c673f85332bff9907e73bc": "ekleme başarısız!", - "50ff5b4f63ca1d6f72ac0884ce10a274": "Mevcut IP adresi yok!", - "0e565a84b75a86b5804641eeec450828": "İçe aktarma sırasında bir hata oluştu!", - "de12faa543f0eb0c72ebc64849053f14": "Belirtilen kural zaten mevcut, lütfen tekrar eklemeyin", - "5d1dc231a71676f0d96c0ea4308153b6": "Veri alınamadı", - "64b31dda1dfab5250169f4cca5684824": "Yalnızca nginx sunucuları desteklenmektedir", - "8147e6e4e48008b09597cc2f7b70cd8d": "Başarıyla senkronize edildi!", - "432deaf800ca653afe458c204cbfbcad": "Buluta bağlanılamadı", - "7f3e6e3b62e446f04ab407e6aba2bb22": "güncelleme tamamlandı!", - "1f5d3751c5fd0f0d7d110164be8a597a": "Düzenleme başarısız", - "c2aaeb20ceb12d108a77c9383498a988": "İçe aktarma başarısız", - "62fa7116894b93d89d11ba4eb1e41268": "Başarıyla dışa aktarıldı", - "139fd85baeada3d9d7cd8c65cf418df1": "Dışa aktarma başarısız, günlük dosyası mevcut değil", - "efb7b1e669a74d47a4baecbe1a2adc6e": "Dışa aktarma başarısız", - "852e9973e436256e109f3a02ec9c140c": "Boşaltma başarısız, yanlış seçenek", - "bb145fd3bdcecf6ec853d1a887a58d6f": "safe_logs parametresi yok", - "c8eaeeb8efa13219ac368b6e39204592": "site_logs parametresi yok", - "883efdac3eb44df42fc05b2e8e3061f9": "site_all parametresi yok", - "af2d7b1ee22be2dc3928b7c57580aa23": "Lütfen doğru web sitesi listesini girin", - "9f351e9815c428a76aecab3c2c4a4b75": "Temizle", - "50e457f6032e9d93fe4b58aec073da31": "Yanlış durum değeri", - "631e7fc49fb8bdf2a3f13bdaf354915e": "İşlem desteklenmiyor", - "42e2a4ce9fbfd7ecf5a60a66cab89887": "Kötü web siteleri listesini ayrıştır", - "8ce75a209ed6cd3ed34d38aa7ea167c3": "Erişim başarısız!", - "a127bc2882f46ea763349be63b7a43ec": "Lütfen doğru yedek verilerini girin", - "d6b3a322a8c5e66d8e4e05b81456adff": "200 durum kodu engellemesi ayarlamaya izin verilmez!", - "a8be909d5c4c96eda1b9b53089187b9e": "İzin verilmeyen durum kodu!", - "f471d5490f674bf6c0999d9291a911a5": "İzin verilmeyen geri dönüş durum kodu!", - "8b8e26f29b987d60a8decbd2e73be7a7": "200 geri dönüş durum kodu engellemesi ayarlamaya izin verilmez!", - "337f8ed984e970f2873fc42622d99521": "Statik kod mevcut değil", - "6fc66d367ac0c5d115479b7f852e98f4": "Lütfen site adını iletin", - "c8f9ac5c9288a3f53cccd5555ad1ee07": "Enlem ve boylam hatası", - "acc31522551404d50744536a2c1986a9": "Veritabanı dosyası yok", - "eaafa722b4e623b2ac09f4ed2d9cee5a": "type parametresi iletilmelidir", - "2ac8aa908980e30a259bb8526527909b": "serach parametresi iletilmelidir1", - "62de36f39113a05a97a245a6d3126ca5": "Lütfen sorgulanacak web sitesinin adını seçin", - "7dbda89c64cdbf3c9afc9bceb5216308": "search parametresi iletilmelidir2", - "84611bf808a166c5c384e72c9290573e": "Bu ID mevcut değil", - "0960b1153519b9ab3f2e5fc5e39da8c0": "[uri] parametresi iletilmelidir", - "acaf3f3e6dcd6d9151630196089ef423": "[param] parametresi iletilmelidir", - "f2eda7fc24524105189f3ef3853071a0": "[type] parametresi iletilmelidir", - "2f9d47a4a39f4ed99af1f20ddce75df6": "[stype] parametresi iletilmelidir", - "eecc4f30c2c1ee3d9cf27edf9290c034": "Mevcut URI zaten var", - "e200e571a58c37376c8498c2dc506c95": "[param] türü yanlış, json formatı gerekli", - "96ed9027cae5703401727a3d07764133": "Mevcut URI yok", - "466767592170f74d16bcac3034109b33": "path argümanı iletilmelidir", - "d81f83ae44da0682974272b976e8e550": "Başarılı kurtarma", - "c2d2481eafb29f7e1525c6c63441359e": "Lütfen web sitesi adını iletin", - "4950f82b4231ebbfa780bcf4eec4c545": "Lütfen doğru IP adresini girin!", - "abd5af540ed5a858d02b03846d94c1f4": "mevcut değil!", - "5c1392db72dc56bdf4ecfe41eb39622c": "Boşaltma tamamlandı!", - "5f401d1d15e2b6346405fcd81caee5ed": "Lütfen bir site seçin", - "df0af44dbb9037dfb3e4a23e2d22d184": "Süreye ulaşılamadı", - "74dc340e56666816aba1f2de4d8bda47": "Güncelleme başarısız oldu", - "6e57d6c47d23024e41f4a1aac73a3ea9": "Bu", - "b8c769fb426082acc16345608995c52f": "Güncelleme Başarılı", - "eda0e602069bd48f46f456d8c2eadd3f": "Başarıyla temizlendi", - "f1cee94f9171dfe24f63e3e4c701e6d1": "Güncelleme Başarılı, Toplam {} öğe güncellendi", - "34ad6868d5517e16532a27e67dd7b659": "İstemci IP adresi boş olamaz", - "f9982dd2a6456912c0da42091c9843a6": "İstemci IP {} format hatası", - "d1adb09331d9afa950900abca1056553": "IP aralığı boş olamaz", - "dc5b7cdade7167836e61a128d7e4342c": "IP segmenti {} yanlış formatta ve bir CIDR ifadesi olmalı", - "193cb0af0143dc48f159b0fe55d2fc75": "Kaynak URL boş olamaz", - "0708cc379456476aaba988b381c61782": "Lütfen eşleşen içeriği iletin", - "973aeb9471388c7321b04f3d921b98da": "Lütfen ayarlamanız gereken URL içeriğini iletin", - "864ffd29519010eafc7c5a5b958fb6a9": "Lütfen ayarlamak istediğiniz User-Agent'ı girin", - "9c5f65f543fc633b9f8d20fed389a3ee": "Ayarlamak istediğiniz istek başlığının adını girin", - "1822f04ebba43b9d3576660d94e4818d": "Doğrulama başarılı", - "64f3408287530191cb9198dd02030e49": "İlişkili web sitesi boş olamaz", - "a29f521a7a2794dded1316a1b00a8767": "Öncelik boş olamaz", - "d7687135850c7d6afb5041e912b33824": "Etkinleştirme durumu boş olamaz", - "6c671ab904133b581c1104942fe2c85e": "Genel bir kural için kullanılıp kullanılmadığı boş olamaz", - "6f2a7d11851641b23d3f632552afa1bc": "Başarılı bir eşleşmeden sonra eylem boş olamaz", - "7636b5101fba6a060fb30e30278eaa73": "Eşleşme portalı boş olamaz", - "a805238b51120c00d0d4d6cff3b2d75f": "Kural boş olamaz5", - "01af1d384cfeae598fe40b29cb96737a": "Kural boş olamaz4", - "261d3dfaaca74f7fd29a4d304b036712": "Kural boş olamaz3", - "06ce124a509953bf7031fcd480c960fd": "Kural ID'si zaten mevcut", - "6094a892b83d8bb51cf8197d39a7a25e": "Kural adı zaten mevcut", - "5538ee312635d0c82567238d58c23429": "Kurallar mevcut değil", - "c085d954281443e56fde4f00fc27a3c4": "is_global kuralı boş olamaz", - "151648106e4bf98297882ea2ea1c4b0e": "Güncelleme başarılı", - "e04a27d5fc3ba14c49f5e5383a21eaa5": "Durumun iletilmesi gerekiyor", - "03ce2004f163fa785d50ee2fd790ab38": "Parametreler eksik: type", - "afad5921afb5338dae127d8451819581": "typeParametre hatası", - "31edbe069268a91831424986f5b5f36b": "Parametreler eksik", - "b7c7b9e550d049c96732daefaed87f30": "Silme başarısız oldu ve veri mevcut değil", - "8a053f40d81ebe24c54b365c60ce453a": "Parametreler eksik: ua", - "06febc0dd7b24b4ede244d87c6da9899": "Parametreler eksik:type", - "5a111a2b93b4c9ace88c30243f3befd6": "Değişiklik başarısız oldu ve veri mevcut değildi", - "beb17a764dd515a66b16905b019a4252": "Parametreler eksik::pdata", - "e00dc8fc227ea447cb2698f5db98da48": "Veri doğru formatta değil", - "897756b1d00a36b9afeb5ef76ff845e8": "IP başarıyla içe aktarıldı!", - "79f9ab06ea335dd09d909872a7398e1e": "URL başarıyla içe aktarıldı!", - "e82e753924daf07d001e460901b6fd96": "UA başarıyla içe aktarıldı!", - "112dd48824aab35f4b9dc986b6313885": "Başarıyla temizlendi!", - "4743684898b36b9ed3ac8e1ac5ca7024": "Dışa aktarma başarılı!", - "baa8f76f78ba1a954406d06dacf64c10": "Başarıyla etkinleştirildi!", - "79b200ebd87ad6863d1413cfa7f1d7a4": "Dosya içeriği boş", - "c1474294f9b2d0569833252c2dac48ec": "Dosyanın içeriği JSON formatında değil", - "435e03d88220f757a95c64ad48a5727a": "Parametre yanlış, eksik parametre: html", - "3d89842e7bfbe8e4647f2b75c86f2111": "Parametre yanlış, eksik parametre: site", - "b0224414a41d57fd48147d635b0a9f49": "Parametre yanlış, eksik parametre: html_fast", - "2413405e65a706d48f6a7085961802c3": "Parametre yanlış, eksik parametre: js", - "7b7ad90f48da5f137d45d79f06317f47": "Parametre yanlış, eksik parametre: picture", - "a2e1cf38d9a88555c830f5b0f1a59554": "Parametre yanlış, eksik parametre: picturenew", - "ab003a3bb7b2000f3f7dd4cc1ed2e5d6": "Parametre yanlış, eksik parametre: htmlnew", - "659e67f77b70550f43b989a82f431ad8": "Parametre yanlış, picturenew parametresi json formatında değil", - "785400f0c6201ecea4df35207667eb60": "Parametre yanlış, htmlnew parametresi json formatında değil", - "0ea0d28a307b650faafba51aeda35b6e": "Parametre yanlış, htmlnew parametresinden type parametresi eksik", - "e3d8ffe389c1772f7eaec98fe78334e1": "Parametre yanlış, htmlnew parametresinden text parametresi eksik", - "4b097fd2beaa3b114a72820f7b595269": "Parametre yanlış, htmlnew içindeki type parametresinde bir hata var", - "fffd4429bcf4305049e63d02b689d2cb": "Parametre yanlış, htmlnew parametresindeki text parametresi 100'ü aşamaz", - "15f6f7030e3501001f4aed8e49f440ee": "Sayfa özelleştirmeleri yapabilir", - "f34203a4a9e3837f9c81fabffed77e40": "Parametre yanlış, picturenew parametresinden type parametresi eksik", - "b5c610002dcc8b5ae0068141a7029ae2": "Parametre yanlış, picturenew parametresinden text parametresi eksik", - "a2d9e4ce746f18cef7a917ffea7dd75b": "Parametre yanlış, picturenew parametresinde type parametresi için yalnızca text ve default'a izin verilir", - "36cf3d060b27c024b0fd85b85c533148": "Parametre yanlış, picturenew parametresindeki text parametresinin uzunluğu 100'ü aşamaz", - "799b18f9ca831f3048d74df2feb31206": "Filigran karakteri özel karakterler içeremez < > \\", - "6e0dbbe7466271740e6609ed570d355b": "Filigran karakteri şimdilik Çince içeremez", - "198024662dba359f2392e60e88c40aa2": "Bu özelliği kullanabilmek için Website Speed eklentisini kaldırın!", - "855804452a86a87b7698c481b8fa262b": "Sahte statik, [!-e $request_filename] yönergesini içeriyor, bu özelliğin kullanılabilmesi için kaldırılması gerekiyor!", - "788b7bc259014fc9c1991f11c3ac0917": "IP adresi geçerli değil", - "b53e7fec7f9097f923ac52bcb0b4c724": "Süre 1'den az olamaz", - "cc1dd0ad7dd389cad500d9c4d196a508": "Parametre yanlış, open parametresi eksik", - "d47aeb6c6f69e860d9c088ea55fba3ef": "Parametre yanlış, qps parametresi eksik", - "eb907b13315836fa781674c6e8f01c38": "Parametre yanlış, time parametresi eksik", - "c10df4de998fb928b030c2d590edd72d": "Parametre yanlış, user parametresi eksik", - "ab46bbdd4119a38d6ff4bdbd7c9065fc": "Parametre yanlış, identity parametresi eksik", - "25cf1a0c49aeb9d32801a5ab30507e7f": "Parametre yanlış, type parametresi eksik", - "00204d3b9a172174c943f8660ec75291": "Parametre yanlış, text parametresi eksik", - "30454e0ce7a66a8fddddadcf19fce8f0": "Parametre yanlış, type parametresi sadece 'default' ve 'text'e izin verir", - "5c1dcb6e10270159f05daa76de3b5437": "QPS 0'dan az olamaz", - "4443c53175005bd3105c50baddd81660": "QPS 10.000'den büyük olamaz", - "262feefe0c785688578a5f642d683225": "Süre 60'tan büyük olamaz", - "044dd0d9fc4da6120fc6128fab278407": "Kullanıcı 1'den az olamaz", - "215a4c6687559aa75d554670e06f3694": "Kullanıcı 10.000'den büyük olamaz", - "902ee0e2b591f9872a41c319c402e0b9": "Metin uzunluğu 200'den büyük olamaz", - "2307dba1bc155ca6f1a5bbf21dc4a258": "Sahte statik, [!-e $request_filename] yönergesini içeriyor, bu işlevin kullanılabilmesi için kaldırılması gerekiyor!", - "fa5e4af74d3d68ba371e6dcf84595c3d": "Web sitesi mevcut değil", - "db8b3ac7a5408e3bc0d103bb9b071c7b": "Parametre yanlış, data parametresi eksik", - "a0318cc60ff3297d4bef0399dc89fa8d": "Parametre yanlış, data parametresi json formatında değil", - "8b682d8c8139c2ea686c7a87a03ba292": "Parametre yanlış, name parametresi eksik", - "58d1469872dea12b4db1dfc13af12e69": "Parametre yanlış, site parametresi eksik", - "2dc0483ba76fdacae8eb46978a77c449": "Parametre yanlış, types parametresi eksik", - "ae6b5c82d2858b70d9d5cfa2bf0a5b6e": "Parametre yanlış, url parametresi eksik", - "98f08e877f98b1cc132cf6af612f2c82": "Parametre yanlış, region parametresi eksik", - "6eb9eecd7f53241dba52168f6eed8ecb": "Parametre yanlış, condition parametresi eksik", - "dc781e44c06aee2588ef017aadb91f54": "Parametre yanlış, action parametresi eksik", - "2d613a4d2d768453594737ae21612354": "Parametre yanlış, return parametresi eksik", - "7c70d1e818ffa1c301fa76bdfa92d75d": "Parametre yanlış, tetikleme koşulu boş olamaz ve en az bir tetikleme koşulu seçilmelidir", - "7d44386dff18244f3dd75ad76546806e": "İsim özel karakterler içeremez < > \\", - "62200033fe539db0bbfaa9e811acd7ea": "Parametre yanlış, types parametresi anormal", - "2290ac303cc87f9fa23aa247ade17c33": "Parametre yanlış, URL boş olamaz", - "d5c270bb074c184c3708fc628b969561": "Belirtilen URL / olamaz, aksi takdirde tüm site kısıtlanır", - "e30358a99b6522a7113a2a4ac661aa27": "Parametre yanlış, URL / ile başlamalıdır", - "8a3315f7e229831b5b472ad35db2eb32": "Saniye başına erişim limiti 1'den az olamaz", - "1f361568ba48e247da6293cd08f2a36c": "Zaman erişim kısıtlamalarının sayısı 20'den az olamaz", - "6abf870d74b818886516c39b78ada43d": "Zaman erişim kısıtlaması - süre 30 saniyeden az olamaz", - "acdd003181b2fcf35ea8412f5ef17b24": "Parametre yanlış, koşul Parametre yanlış", - "4d09f912a4e1e3f59e571464488c9b0b": "Parametre yanlış, eylem Parametre yanlış", - "554b32d33b741d86c3fdcd82a9974f9f": "Parametre yanlış, dönüş Parametre yanlış", - "a6ff8cce246c28eae5895c4bc14fcf77": "İsim zaten mevcut", - "d3054b81f5e76b0e297d0befe0c1a796": "URL zaten mevcut", - "a53a9497f06d0158be0c57dae2447056": "Parametre yanlış, id parametresi eksik", - "2671382a359fe628f261c16c61618b41": "ID mevcut değil", - "e75627abf7a3fa307ab09e63cf246627": "Parametre yanlış, types parametresi yalnızca all ve urls'e izin verir", - "12ac2e613f94beddddfdbbd8cd90ebd3": "Parametre yanlış, URL boş olamaz", - "62b55b3dc9bd026c840e7e89d39eecd3": "Parametre yanlış, attack parametresi eksik", - "19fd6f5b0c2034b36bfe924611057664": "Parametre yanlış, cc parametresi eksik", - "0f5b3e572f9dd832eebf01fdc0d7ce8c": "Parametre yanlış, Lütfen bir uyarı yöntemi gönderin", - "3979187f0bae65dc1fca4f1967742397": "Yapılandırma dosyası okunamadı", - "c9bbcef0c80ca1a2859dd61d0210a117": "[send_type] parametresi yanlış", - "a79ff4350874c27408a1858a88058344": "Mesaj kanalı örneği oluşturma başarısız olursa, mesaj kanalının doğru ayarlanıp ayarlanmadığını kontrol edin", - "50f223163c6f8e9f6b46d66165252cab": "Kapatma başarılı!", - "eee590fc0d0f3382fe436b60b02e37f0": "Posta kutusu bilgileri doğru yapılandırılmamış", - "e4e7eb56340203583dd940475fc6e924": "Alıcı posta kutusu yapılandırılmamış", - "c6beb4efa41b5adbf89191be9d139c70": "Mesaj gönderilemedi, Gönderilemeyen alıcı:{}", - "e401ec76f9a9d1dfe7d484e6c4b49656": "Bazı alıcılara e-posta gönderilemedi, dahil olanlar:{}", - "b136ab8957d5ede7e3747fcc927a49aa": "Parametre format hatası", - "4ccc991965b1b5bbe3efd6b65a1cd6fb": "Gövde türü json, form verisi veya null olmalıdır", - "b0b017688b107601f2b3439381c4c61b": "Gönderme yöntemi yanlış", - "4f4979589df1b84ac44fc64a92e2b3f3": "SSL seçeneğinin yanlış olup olmadığını doğrulayın", - "02eef33534a6f8b3c95fc65e4f98bea9": "Eksik bilgi", - "2f45c6e0ccf998c7d31b3764e7da3751": "Not adları 15 karakterden uzun olamaz", - "85284ecbde15ff997e89e6e8f07e399b": "WeChat bilgileri doğru yapılandırılmamış", - "886051a73fe04f873d814dc9823b4064": "DingTalk bilgileri doğru yapılandırılmamış", - "2d1b0e55888d196484a0bfd0f85ff71c": "DingTalk yapılandırması yanlış, lütfen DingTalk robotunu yeniden yapılandırın", - "3fb32283f52bea8068006817c5b9b95b": "Bağlantı kaldırma başarılı", - "8acd58125d3f7cc181a71926ef5c8a4b": "Buluta bağlanılamadı", - "703480d2938f7c89b563e1d731e94118": "Test gönderimi başarısız oldu", - "fdc137942b6f2d81fa922d7ace16a94c": "Mevcut arayüz tarafından desteklenmeyen bir tür", - "37f17a256a93646ef0ac721096ec0ce8": "Aynı gönderme yapılandırması zaten mevcut ve tekrar eklenemez", - "2783bb2e5b99dce08138bf58d0880603": "İlgili gönderici bulunamadı", - "b5a30e6f46753c06ada44d6bbd757599": "Başarıyla silindi", - "81550843cd0a2d7e046cb23a868f8e8e": "Gönderme başarılı oldu", - "6e3ce0906145a9641111ebbf7735f145": "Telegram gönderilemedi {}", - "27285cc132e6c145a142ae2dff054ace": "Not adı 15 karakteri aşamaz", - "bb8f2701fa6b013fe8aa74659ceda547": "Görev verileri okunamıyor.", - "b12cc83d0b14fe739a930fd84d10ae8d": "Görev bulunamadı.", - "eb9eb53b7ac221c64f6f32c547317d22": "path parametresi boş olamaz", - "0444d0f0434a4d910eb7a06039e39066": "[{}] dosyası mevcut değil", - "f4c3904df3aa98458b5f99bd5519e409": " {} tamamlandı, günlükte istisna yoksa bu pencereyi kapatın!\r\n", - "a6d56fd22b5a2243f3d9584478b90e0e": "En son sürümü al", - "42aea4a90d1ba39b31851f63479d20c7": "Alınamadı", - "5d85a89cf9ff8fb99547cb1648205489": "Dosya yolu Çince karakter içeremez!", - "952345fe8555c6ba578f251a317f85bc": "config parametresi boş olamaz", - "08dd0ea6d64131b95ad64ca11233bd0a": "env parametresi boş olamaz", - "8dea3a35e564837dd758e1f814e24f92": "Kaydetme başarısız, lütfen compose.yaml dosya formatının doğru olup olmadığını kontrol edin: 【{}】", - "2a3a9ebecbcd261e0550cb4469910ed1": "Kaydetme başarısız. docker-compose sürümü çok düşük. Lütfen en son sürüme yükseltin!", - "e32a4e5887229cc3ce7412591de16cff": "Kaydetme başarısız", - "4e06eef94d131a0203e8f1f87db4fee5": "project_name parametresi boş olamaz", - "c80ca81b19893dafd2629ce74407d5cf": "Oluşturma başarısız, lütfen compose.yaml dosya formatının doğru olup olmadığını kontrol edin: \r\n{}", - "66855212f1fe552bf49c4388155b3082": "Oluşturma başarısız, docker-compose sürümü çok düşük, lütfen en son sürüme yükseltin!", - "5a135e409fdee335e0f4397a4293835a": "template_name parametresi boş olamaz", - "1cc869c0afb0c2f94e0937d9eb364e34": "Şablon adı zaten mevcut, lütfen şablonu silip tekrar ekleyin!", - "cd21239456a2d52fb2317cc699bbd93c": "Proje adı zaten mevcut, lütfen eklemeden önce silin!", - "5076d42e5242f2b79244d73f13da367e": "Konteyner düzenlemesini sil", - "02867c418e07f941a1c5d3f6bc926f86": "project_list parametresi boş olamaz", - "a88321660a22f931bc1f0861baa5dc1e": "project_list parametre format hatası: {}", - "468c559ee2d3d5e39aeef93e62b006d1": "Silme başarısız, docker-compose sürümü çok düşük, lütfen en son sürüme yükseltin!", - "3590612b29e5aa49645f02d01c9e520e": "container_id parametresi boş olamaz", - "d7fc188f711a4c3eb5b85949dfd9a696": "Konteyner mevcut değil", - "77ae5114c51a32c268b0bf7a03c0c528": "Lütfen name parametresini iletin!", - "bd9b13cc06f202661c7bb89a02322532": "Lütfen path parametresini iletin!", - "719b089ab1a7d4ff5c161f3f5c5b7f24": "Kurulum yapılandırması alınamadı, lütfen kaldırıp yeniden kurmayı deneyin!", - "c7f98cd83b58fad3ab719bfa337bdb6b": "Parametre hatası, lütfen app_name parametresini iletin", - "043e4ffcd792692d7b7acb5a2504c329": "Docker hizmeti başlatılmamış, lütfen önce docker hizmetini başlatın!", - "9f1dcd0020905875a6a48744ffe17766": "Docker hizmeti başarıyla yüklenmedi, lütfen önce docker hizmetini yükleyin!", - "bfec153394be0516b0d79d4653c9e19d": "frps uygulaması zaten mevcut, lütfen tekrar yüklemeyin!", - "fce729be4320e9afbdad888641d08f8d": "frpc uygulaması zaten mevcut, lütfen tekrar yüklemeyin!", - "f6f8ff9f4c8990d7e24ac682a50c40a4": "Aynı hizmet adı zaten mevcut: {}, lütfen başka bir ad seçin", - "66fd0bc16d0f3c5c9e61779749a93c56": "Alan adı [{}] formatı yanlış", - "c68494100dc74cced33c845f35e5aaac": "{} başlatılamadı. docker-compose.yml dosyasının mevcut olmadığı tespit edildi. Lütfen kaldırıp yeniden yükleyin ve tekrar deneyin.", - "76a5e52d7834e4cdf7984adc785f720e": "Uygulama başarıyla oluşturuldu, ancak ters proxy oluşturma başarısız oldu. Hata detayları: {}", - "e59b647380ea44f97645f979773c683a": "Uygulama başarıyla oluşturuldu, uygulamanın başlatılması bekleniyor, bu 1-5 dakika sürebilir...", - "c71b369171a386e4df59acf49f5203b0": "Parametre hatası, lütfen şunu iletin: {} ", - "5e60e6550487262a79210c48736c2cba": "[{}] portu [{}] tarafından zaten kullanılıyor, lütfen başka bir porta değiştirin.", - "dc60f8a111d142dbdc1605dc047e23e6": "Lütfen bağlanmanız gereken veritabanını seçin!", - "667d37fe4593e52760bc51ada7287988": "Lütfen bağlanmak istediğiniz önbelleği seçin!", - "1b6d9f6dc5480584f937681a5d9f0a80": "Önbellek bilgisi bulunamadı", - "f013f8c1d30136733e3d476dbe3a238e": "Yapılandırma başarıyla güncellendi", - "3d928c01114361a57fb24c42d9a1ee2d": "Yapılandırma güncellenemedi: {}", - "092ca03f32caffd34d3f0532836283b7": "deepseek_r1 için komut dosyası bulunamadı", - "17ee8c2efafe32a5d204e039e971aee4": "1550 MB'den az bellek, deepseek r 1'in dağıtılmasını engeller", - "d3eb7a147ac81b2f691a6e7ad42cc83c": "İşlem yapılması gerekmiyor", - "ade726fc2adbfc1c18a6a601a6670b2f": "deepseek_r1 başarıyla yapılandırıldı", - "2ab241c8ca04b4760bc844e3133821d1": "Bilinmeyen Uygulamalar: {}", - "fc0d20951439bcc2d1101019e09556ff": "{} profili algılanmadı: {}", - "3bceda9d61ef4cfc8559796178503164": "{} yapılandırması başarıyla güncellendi", - "b1d0019ab8cbb83b1b99016c4927c1fd": "Alist yapılandırması güncellendi", - "7194829138a21af26d26fb0d57426fc8": "Lütfen bağlanmak istediğiniz veritabanını seçin!", - "0a17156f2603044863d54b67ac1f7a07": "Bilinmeyen veritabanı türü: {}", - "62a2454d1d40411885721e465168a016": "Nocodb yapılandırması güncellendi", - "1c757f474b2cf26c14c591709c6963a6": "Homeassistant yapılandırması başarıyla güncellendi", - "5ca65c2eed5a6762590ba133f66a8672": "Openvpn yapılandırması başarıyla güncellendi", - "987a030ec5eb506b45fd17b8b4eb1329": "Lütfen service_name parametresini iletin", - "05ea75c6d686df18830714369dc078ed": "Lütfen app_name parametresini iletin", - "975ecde111f2dfe514b71b4d4941ba1c": "Başarıyla yeniden oluşturuldu!", - "9b70785b1f6c44d42a1fa85dbb7000b2": "Lütfen id parametresini iletin", - "2321c03a1d4fc4cb5b9b87275a0d4712": "Belirtilen uygulama bulunamadı!", - "63428213090160e31085eadae3508244": "Henüz yüklü uygulama yok!", - "43dc377c8c1929c0c2bc959d94337657": "Lütfen id parametresini iletin!", - "d4188b564c1af018074056fffde42fba": "lütfen m_version parametresini iletin!", - "2a65ff2dedaa3b18bf4d4678b99ff77b": "lütfen s_version parametresini iletin!", - "e7df495f8488ec05ebf913bceccbc8d4": "Güncelleme için yalnızca ana sürümle aynı sürüm numarasını seçebilirsiniz!", - "fc15d16befa9eb8ccfb25da964a284de": "Mevcut uygulama zaten en son sürümde ve güncellenmesi gerekmiyor!", - "cd260af0ae4915ee07569fc877f77495": "Güncellemek için yalnızca orijinal sürümden daha yüksek bir sürüm numarası seçebilirsiniz!", - "7ac82bcde612b1a109d988d4b3dbf626": "Güncelleme başarılı oldu!", - "01b722bbe474a50d8291bbe2e71804c6": "Belirtilen uygulama bulunamadı!!", - "2140e826934629d9a43ba2bf4f2b1774": "lütfen depend_app parametresini iletin!", - "2ab5fb77429e37f42b87e205d6e51728": "lütfen service_name parametresini iletin!", - "9d6521661f6a152c21bf6d4305d5c9b3": "lütfen app_name parametresini iletin!", - "e020f13e1a68b8030d7038cea78b3aaa": "Yedekleme başarılı!", - "c4dcfb467d82071a7a4cbbe0b5036f9e": "Henüz yedekleme verisi yok!", - "76b5c77ee72a9ffa0f4b3a8e0101ad41": "lütfen file_name parametresini iletin!", - "1281e3ed765ec369a06400340f4beb78": "Belirtilen yedek bulunamadı!", - "012967525dac4f0c5395c210223ca2ef": "Lütfen file_name parametresini iletin!", - "8cc2feae92bd228672051763130e6d49": "Yedekleme dosyası mevcut değil!", - "3c06b7d1ee52e760b361d12cd00f55b5": "Yedekleme dosyası anormal!", - "010c30483dbe836d24382a368f482770": "Geri yükleme başarılı!", - "543fa46832267ce6cb3b47594d8d8f82": "Uygulama mevcut değil!", - "c52891f1485d1070a2e063358ae71fa9": "Lütfen f_path parametresini iletin!", - "df107ded5612d825c3db3bd46a9845f0": "Lütfen f_name parametresini iletin!", - "ef41e47b4ea1bd4143562bd0989b9b20": "Lütfen f_size parametresini iletin!", - "b9290da45e148202dccf0058dfc3b27a": "Lütfen blob parametresini iletin!", - "a27dfcdb7619659552bfdfc79930b7d9": "Aynı isimde bir yedekleme dosyası var, tekrar yüklemeniz gerekiyorsa, lütfen aynı isimdeki dosyayı silin!", - "37a9a30931e079caf79fb61eed10547f": "Yedekleme dosyası başarıyla yüklendi!", - "490068785260b543087967659d79b496": "Lütfen durum parametresini iletin!", - "1204853b15f4234a8cb88df5a46b5a42": "Lütfen başlat/durdur/yeniden başlat/yeniden oluştur parametresini iletin!", - "062f4a8230dd8af4311344fcdbf6f1ea": "Kaldırma işlemi başarılı oldu!", - "7b016fb85c09d39e89eb1875e590a6ac": "Uygulama kategorisi alınamadı, lütfen sağ üst köşedeki [Uygulama Listesini Güncelle] düğmesine tıklayın", - "20552a0ed8eef740c631cc049fd940b9": "Uygulama türü hatası, lütfen şunu girin:{}!", - "c0963001ffeaec423d1be82d464d6a1a": "Lütfen id/service_name parametresini iletin!", - "75d0c803cc4694e08d99d958ef762fcc": "Alan adı boş olamaz!", - "676c8a7788ad0ddcb68d53fc7d960679": "Bir baota net ağı oluşturulamadı. hata: {}", - "23d07f1e537a8809b268a60a6881f44c": "Port aralığı hatası, lütfen 0-65535 arasında bir port girin!", - "f26d903f2f99c2bb4a214a2dd863e8f9": "{} portu [{}] tarafından meşgul edilmiş, lütfen portu değiştirin!", - "86c1887e12c52e7da3d3c413fe6e20d1": "Alan adı erişimi aşağıdaki nedenlerden dolayı eklenemedi:{}", - "b4bf995bdf5a4506e8286bbd9b24fc2b": "Lütfen alan adı parametresini iletin!", - "6473522415a76cf1e712b23980020814": "Lütfen disable_domain parametresini iletin!", - "4522d1a945678e134f39e5909db6ac81": "Lütfen app_name parametresini iletin!", - "6da74914983889333884da51c3aa400a": "Lütfen app_path parametresini iletin!", - "8267489f1a242a5034b5ffd66fd504a0": "Lütfen memory_limit parametresini iletin!", - "658658f81426b1d37bae43373d44498b": "Lütfen s_version parametresini iletin!", - "6a40ca48521720e9a084fd682c55efcb": "Lütfen service_name parametresini iletin!", - "e1bb243ae3776918bb07dbfdfd831a0b": "Lütfen allow_access parametresini iletin!", - "98efbca9758919c9938e5ae4002ac085": "Alan adı boş olamaz veya lütfen alan adını ayarlamamak için kutuyu işaretleyin!", - "82ee36ab230ba75855c15b9be4ac8a4e": "Durdurma başarısız: {}!", - "845d40e701d5c584ae4f059602b3f57d": "Başlatma başarısız: {}!", - "d2c66f1c264e9a389a34f60d3a921723": "Başlatma başarılı oldu!", - "20f1c870fe256a123d1c17299a93a4ba": "Yeniden başlatma başarılı oldu!", - "c5838a6fdef9fed0165274f6ed50ea4b": "İndirme başarısız oldu!", - "870a81aa5509bcd7aa51cf27e410eea9": "İndirme başarılı oldu!", - "f70386f0f4846336b6eee06d16a55a33": "Lütfen uygulama veritabanı parametrelerini iletin!", - "2fe5b2b5ae4c0c601076922f34391c6b": "Lütfen kullanıcı adı parametresini iletin!", - "b046515d91d43d56962b42eb216b11c9": "Lütfen şifre parametresini iletin!", - "e997ba4648bad603fc310169de46e0ea": "Belirtilen veritabanı uygulaması bulunamadı!", - "2025d918448073508d336b72a7a28093": "Veritabanı zaten mevcut!", - "4a8f0a2ac362e62ba4e76f52b5791f0e": "Oluşturma başarılı!", - "76f3f12040afb77724966e2af67ab403": "Lütfen veritabanı parametresini iletin!", - "bf483666a33d372f729985363d512d74": "Birincil alan adı genel bir DNS olamaz", - "3c4b1f6d2d9ef27ace95adceea599588": "Ekleme başarısız oldu ve veriler site veritabanına eklenemedi", - "20825a634340a0b49b1a5e7f2fe47ea3": "Ekleme başarısız oldu ve veriler docker web sitesi veritabanına eklenemedi", - "653f81d3e5516550e6d5e35abcdbe97c": "[{}] panelin ters üretimidir ve [/] http kimlik doğrulaması silinemez!", - "d4b66e7369e5077a3c31ad79629f0ab9": "Lütfen silinmesi gereken web sitelerinin bir listesini iletin!", - "e48121dc556643fd31b26c190eedbad3": "Yalnızca Nginx desteklenmektedir, lütfen kullanmadan önce Nginx'i kurun!", - "135f7ef9aeb50bf7b988416b0a679dff": "Alan adı boş olamaz, lütfen en az bir alan adı girin!", - "c82b42d921224a0699f854c28c2450d2": "Proxy hedefi boş olamaz!", - "fe092e7668cf0e9e6dafef6a1fa084a4": "Unix dosya yolu / ile başlamalıdır, örneğin /tmp/flash.app.sock!", - "f68c204aa9e12e0513aa7a4569449cfe": "Unix dosyaları .lock ile bitmelidir, örneğin /tmp/flash.app.lock!", - "5c23a6c025d7071599c70575dc858f26": "Proxy hedefi mevcut değil!", - "2fba0b6c1602ec254b1bc06bacba575d": "Proxy hedefi http:// veya https:// ile başlamalıdır!", - "772c6f93b20b52d5c998f4b58dbcf8f7": "[{}] portu geçersiz!", - "f76df64b8f66e4f6050adf633c91c7fb": "[{}] web sitesi zaten mevcut, lütfen tekrar eklemeyin!", - "6599f1c3d3d3760768d9023827e8edf0": "Ters proxy projesi başarıyla eklendi!", - "85e34f49357adccd76d557a540a2e5d8": "Site adı boş olamaz!", - "1daab0a25efad301906af4874ee4c8ac": "Günlük türü yanlış. Lütfen default/file/rsyslog/off iletin!", - "ff9e0ecf6c4926c0a309e67f9baedf39": "Yapılandırma dosyası okunamadı, lütfen web sitesini silip tekrar ekleyin!", - "2a6176cc22256a713204964a34fd1384": "Günlük yolu boş olamaz!", - "18292d8929b9f9b6639dcc6e49d4f4a7": "Günlük yolu / ile başlamalıdır", - "306b5ccbae58fe7278c8e098b5f06f25": "Ad boş olamaz!", - "b9f153e64173504e3700aa30b08fa0aa": "Auth_path boş olamaz!", - "c9ab8ba4f7de925b29414bbb86bd3d1f": "Auth_path / ile başlamalıdır!", - "cd44f9dcf9679c8151ce2b721f2fc6eb": "Kullanıcı adı ve şifre boş olamaz!", - "6750646f694a0c3dd46f9617ff055e61": "[{}] HTTP kimlik doğrulamasında mevcut değil, lütfen önce ekleyin!", - "714145aeae9a04f8ecf9e1f54072202a": "Kullanıcı adı boş olamaz!", - "36eb0a1bb3c002f5ed0fbf8f010881e3": "Şifre boş olamaz!", - "f20db7351e9cf57ecb9f79ad3e032081": "[{}] HTTP kimlik doğrulamasında zaten mevcut ve tekrar eklenemez!", - "218fd0a172e37293fc001328b3daca79": "[{}] panelin ters temsilidir ve [/] HTTP kimlik doğrulaması silinemez!", - "8b6cabd487e5ab76183addd53bea2d87": "Silme başarılı!", - "3034cdc7475c3fa220d4092128ff9c48": "Gzip_status boş olamaz, lütfen 1 veya 0 sayısını iletin!", - "76661faaa298338bf731c737a62b7d6c": "gzip_min_length parametresi geçersiz. Lütfen 0'dan büyük bir sayı girin!", - "f11df0d336c64058321a01bcbdc4667c": "gzip_comp_level parametresi geçersiz. Lütfen 0'dan büyük bir sayı girin!", - "5d113183845fc6e26c05bc1218677a30": "Cache_status boş olamaz, lütfen 1 veya 0 sayısını iletin!", - "a23b240364f5291f71d599e2355e6920": "Expires parametresi geçersiz. Lütfen 0'dan büyük bir sayı girin!", - "c255b7e9dd800a8cd26ff83b3698713b": "Websocket_status boş olamaz, lütfen 1 veya 0 sayısını iletin!", - "4bace8520f540a6ae54d48086a7465ba": "site_name boş olamaz!", - "aed0d6fc7665b30b1db8cd429e48c90d": "id boş olamaz!", - "81ec4e731430cca9b3d8bff6372bfafc": "Proxy_path boş olamaz!", - "9aecc647ffb6f126e5aa1f6c16af43b0": "Proxy_pass boş olamaz!", - "d591e0043cbf6d14950a46178a537626": "Proxy hedefi http:// veya https:// ile başlamalıdır", - "247d1a7dc144bd12d4c9f8797387babe": "【 {} 】 ters proxy'de zaten mevcut ve tekrar eklenemez!", - "36a7891857288c55bc5d87c470212812": "ID boş olamaz!", - "62dc2bbb0528fe87522c74b113883a48": "Belirtilen site mevcut değil!", - "c8a68e4ff275e827bbbe348eddecbf2b": "Ters proxy projesi başarıyla silindi!", - "88f9a8852b822982a9a3e839813d91bb": "Alan adları boş olamaz!", - "85fb0c03511da1e4d308fd135dec4486": "Alan adı virgül içeremez!", - "a1e7a2f08295c8f8161a8feb9e2110b0": "[{}] alan adının port numarası geçersiz!", - "5f77e0a83a9aa0e7e534e5136c99ab31": "En az bir alan adı bulundurun!", - "b9902ea698ded06e8ef4f31ba1057795": "alan adları boş olamaz!", - "5f04c54facbae56e5cdebc22b5ecbf73": "Conf_type boş olamaz!", - "bec317d58a8302e2aaf523e28f100710": "Kaydetme başarılı!", - "ba4088d3a70108e609823381c7f81f96": "oid boş olamaz!", - "ebfb6fcc2f55debe2703d50d58255f8f": "key boş olamaz!", - "fc83b0fa2366a3136f1fd8874d0bee65": "csr boş olamaz!", - "60f1b04984ea15b008a9ae1b2bd9e07f": "partnerOrderId boş olamaz!", - "a8fde220ad2740e38585d34948899556": "auth_type boş olamaz!", - "b3ad191bcb992b29302385e446e78f8a": "auth_to boş olamaz!", - "95725cbba013b9a62d4895a2f3e5a2a9": "auto_wildcard boş olamaz!", - "08fd165421792573ef13d1a83e487088": "index boş olamaz!", - "08cbd4b3fa3941156162657f2b69e8b8": "BatchInfo boş olamaz!", - "49d1b2d015f9e81d31ca60b63c2ef378": "force_https boş olamaz!", - "21e0b44e0a302af58d59ca9d8948f4e1": "Domainorpath boş olamaz!", - "34a2695966750d96d6772ce00f0d3772": "Redirecttype boş olamaz!", - "e3a270e8f43af2a339bfb2181ad83025": "Redirectpath boş olamaz!", - "352289584d886d4f04591b6f9b7785b8": "Tour boş olamaz!", - "ddcb1cafcc4b5e308f6057e07af2d10a": "Redirectdomain boş olamaz!", - "58bad30cc21797d832b361fcedff61b9": "Redirectname boş olamaz!", - "320968539b06847a07f9c48f39a73120": "Path boş olamaz!", - "51d2fd3c34890a88eafbb2801fe0827f": "Yönlendirme durduruldu veya yapılandırma dosyası dizini mevcut değil!", - "38e380b5535be56ebae6addcf29390ba": "Fix boş olamaz!", - "ad89a60d7720b8bb5095f2752e5006ae": "Return_rule boş olamaz!", - "b74b269372107d024f6c9e13cf911a4e": "Https durumu boş olamaz!", - "cefc1b6af0b80a883304b58651283f02": "Durum boş olamaz!", - "f8a019279d00484c29abaf1cb4b9260c": "ip_type parametresi yanlış, black veya white iletilmelidir!", - "f8e8cf373fa65891fe5a6e65505d30d0": "IPS boş olamaz, lütfen her satıra bir tane olacak şekilde IP girin!", - "0677c4ecb9efdab30c5077e69b1745ba": "IP boş olamaz, lütfen IP girin!", - "b8c0bc6452f788c758a4f7bedd761757": "Proxy bilgisi yok!", - "70a9558c31a978ce2b1297a2a21c1317": "Bu URL [{}] için proxy bilgisi bulunamadı!", - "82ca4452a42da1388fd435ca8a2801e7": "Proxy_host boş olamaz!", - "6dac7e9b2cbc32789bde984cddb699f4": "Proxy_type boş olamaz!", - "0dc7d98b8a487dfa0794f7c792240e4c": "Unix dosya yolu / veya http://unix: ile başlamalıdır, örneğin /tmp/flash.app.lock!", - "5c6869f159feda62d0e6441f3eb1f97c": "Genel websocket açık durumda ve bu URL için websocket desteğini tek başına devre dışı bırakmaya izin verilmiyor!", - "ff6c12be57557ce452395adac7e02b30": "Oldstr ve Newstr aynı anda boş olamaz!", - "8c9bac9aea3d7a22d3789f837dd40d3c": "Get.sub_type yalnızca harf kombinasyonları içerebilir ", - "2ac2f7203f5049438855d537f52cfee4": "Girdiğiniz içerik Çince karakterler içeriyor. Nginx'in mevcut sürümünün bunu desteklemediğini tespit ettik. Lütfen Nginx 1.20 veya daha yüksek bir sürümü yeniden yükleyip tekrar deneyin!", - "f1522550bdc24955aa540480fdccaff5": "Mevcut Nginx sürümünün yalnızca varsayılan değiştirme türlerini desteklediği tespit edildi. Lütfen Nginx 1.20 veya daha yüksek bir sürümü yeniden yükleyip tekrar deneyin!", - "0d57a0216b328aeba6ef5fc3cbf3b7e9": "Değiştirme öncesi içerik için yapılandırma bilgisi bulunamadı: [{}]!", - "e00f42f6421b797439a64e3ef24c132a": "site_name boş olamaz!", - "a6fd23485ca8abe4ab7d0580d28c4bf9": "Temizleme başarılı!", - "61e795d02f4452904f2574d936c571e6": "Temizleme başarısız, önbellek dizini mevcut değil!", - "3c99c479e3c65eac24272afc13cec604": "https portu [{}] geçersiz!", - "b9629c2dea839825c2f1916b44a154a1": "Nginx Yapılandırma dosyası hatası, envanter!:{}", - "b02ab16f5a7d45a871789d3944a41c69": "Yedekleme tamamlandı ancak zaman damgası alınamıyor", - "ffad0690fefe9ebaaf4d847a42b19f90": "Yedekleme yapılandırma dosyası mevcut değil", - "46f183fbf6bd1e64702d6930667cf117": "Yedekleme tamamlama bilgileri alınırken hata oluştu: {}", - "b16acd08872bef5685bddff85a29f625": "Veri Paketleme", - "df4bb29cbb7fe7e3dbc82e961d5b5b53": "Veriler hazırlanıyor", - "2b2a2a0b0596507029dd0feb9485a216": "Devam eden görev bulunamadı. Lütfen kontrol edin", - "32b169f72b293ef80d35435e9894f8e2": "Başlatılıyor", - "58ba018dcbe1c47ea0a293fdcee21e63": "Panel Kurulumu", - "67355337eaf300b91de09a8083c93ebf": "Yerel Yedekleme", - "99e8ebaa5ad2fafe4e141574f6b4a73f": "Dosya Yükleme", - "bd6d996cdca2252e9b99253b2a587287": "Veri Geri Yükleme", - "03a2bd12e8b51af547a08985d4882d6d": "Taşıma Tamamlandı", - "0fd957e5b2d9c535c344e9a8f86a225c": "Görev durumu okunamadı: {}", - "181f2da22cdbf536f67e46452108d95d": "Görev durumu kaydedilemedi: {}", - "4439b17c5e0977e0c73c643cea950424": "Genel görev kaydı kaydedilemedi: {}", - "74c6e9c56a9d836f2dac86fe8e0770e3": "Mevcut çalışan görev ID'si okunamıyor", - "62688aeae1c92fc7d92caaa83f22a411": "Görev durumu başarıyla alındı", - "087b165a5f0bd5a04f2ce4be7dca14dd": "Çalışan görev yok", - "37a5c6e23237ddff7185d375c34eed60": "Görev {} mevcut değil", - "f613fc3fb0aee3affafcae3477d42bf8": "Zaten bir görev çalışıyor, görev ID: {}", - "367b4a21be07204266d306508cc92dc7": "Taşıma görevi başlatılıyor", - "793c8358adb487f79f85acfdc44d54bb": "Taşıma görevi oluşturuluyor: {} -> {}", - "e597529fcdfa1dab69eadaf1c44088ba": "Taşıma görevi başarıyla oluşturuldu", - "c304dcebe892b468725402a369b3dd46": "Sunucuya bağlanılıyor {}:{}", - "d2f3c14129fe059cf6d99f1583abc23e": "[+] Sunucuya başarıyla bağlanıldı {}", - "ae3c4e96fa1411ea25c05ce9a18ae2ae": "Sunucuya başarıyla bağlanıldı {}", - "c7203791b356c5f3faf5d8c43d54a575": "Kimlik doğrulama başarısız: yanlış kullanıcı adı veya şifre", - "10adeeeb866978b5ae637ae2bc13fb96": "SSH bağlantı istisnası: {}", - "1e36faff765dbbbe631f424983a21783": "Ağ bağlantı hatası: {}", - "f9d5c96265bf9a99b163f5adf699cde9": "Sunucuya bağlanılamadı: {}", - "cd4dc264f41eda817374af0bddcea259": "RSA anahtarı kullanılarak bağlanılıyor", - "5e1b5e437b38bfb11b1e4853f8838d3f": "RSA anahtarı yüklenemedi: {}", - "fb947607c0d2814eed45d41a9e3227f1": "DSA anahtarı kullanılarak bağlanılıyor", - "1cc35e618813746cb1bd4658f7ac61a0": "DSA anahtarı yüklenemedi: {}", - "e9ba4ba778d8a0b4423c09ff6cb32726": "ECDSA anahtarı kullanılarak bağlanılıyor", - "f618338d0d56f440d7fb1b59d8add72c": "ECDSA anahtarı yüklenemedi: {}", - "f579ce14b1e98ae9ad4d392279730d9a": "{} anahtarı kullanılarak bağlanılıyor", - "696797724fc3db3f012761759f720c23": "{} anahtarı yüklenemedi: {}", - "fa4e18c6d3b0c0fa6a5ac1303dda02a7": "Anahtar tanınamıyor veya yüklenemiyor, lütfen anahtar dosyası formatının doğru olup olmadığını kontrol edin", - "369709628dacb54949b2c711acd93968": "[*] Sunucuya yeniden bağlanmaya çalışılıyor (deneme {}/{})...", - "88aefbc5392deac3ab63223d6d82b66b": "[!] Sunucuya yeniden bağlanılamadı, maksimum yeniden deneme sayısına ulaşıldı ({})", - "908300abff5dfdf254726c2193f3e550": "Sunucuya yeniden bağlanılamadı, maksimum yeniden deneme sayısına ulaşıldı ({})", - "5842d2e8785c14b1e357c4ee1dd1a0c6": "[+] Sunucudan bağlantı kesildi {}", - "7463b0247d5614df91270544c6b944bb": "[!] SSH bağlantısı kurulmadı", - "43234c4b446ff41810dcf807d317cba7": "[*] Komut çalıştırılıyor: {}", - "db4d271e5cb8fe3192ed73bd624a86fe": "[+] Çıktı:", - "c519185a1f47d37b21866e5f05928dc8": "[!] Hata:", - "6a2909a7dbeca5d8c85843ecd4cd3fae": "[!] Komut çalıştırılırken SSH bağlantısı kesildi: {}", - "88783238ef5d081aade9e63160d329fb": "[*] Yeniden başarıyla bağlanıldı, komut tekrar deneniyor...", - "8692bb08477b83615b1ae995552e2c92": "[*] Sunucu işletim sistemi türü algılanıyor...", - "95adf53ab7c91ed98c77d3c0e38a2a1a": "[+] İşletim sistemi türü: {}", - "2ab043e41d8fd10931cfa912b4b11bf8": "[!] İşletim sistemi türü belirlenemiyor", - "2d23313d6e3e201771154cf99d5dab34": "curl veya wget kurulumu başarısız oldu, lütfen manuel olarak kurun", - "b44992b4430f7759108e5242176b7871": "[+] curl veya wget kurulu", - "4ba07005cef8f98a0625a7d1eb0a142e": "curl veya wget kurulu", - "e3a56811a35322959c535d38d2e91f7e": "[!] curl veya wget kurulu değil, kurulmaya çalışılıyor...", - "613a8be93fcd44002e549e0767c85a86": "İşletim sistemi türü algılanamıyor, lütfen curl veya wget'i manuel olarak kurun", - "8a4d20948ccc8034e3118af3bb683da3": "aapanel kurulumunu başlat", - "df97b5d4f31c5cd4a3611774abb6de52": "[*] aapanel kurulmaya başlanıyor...", - "d91a58f92edb4b30de7e5399908922da": "[*] aapanel şu komutla kuruluyor: {}", - "f20af8613aed0194f191d660977de57c": "Kurulum tamamlandı", - "4357633f73240ceb1b14d13877a90ac2": "aapanel başarıyla kuruldu, yedekleme görevi başlatılıyor...", - "f109f7ce6f98f5a3cbf2d273c5749911": "[+] adres: http://{}:{}{}", - "79fca63f99a824fc4015d93604433ea1": "aapanel kurulumu başarısız oldu", - "b1508aec34af599979d919e20b64e385": "Kurulum ilerlemesi: {}", - "7b6725a19c46bc6d47e5a49c5764991f": "[+] kullanıcı adı: {}", - "cd3d4cf5a75fd5f9467f6d0f196dbec8": "[+] şifre: {}", - "6703def4d1bfb870f64ca461a7bffc0c": "[*] Yedekleme dizini oluşturuluyor...", - "c550206bc8daea4b287573ee31f839de": "[+] Yedekleme dizini {} oluşturuldu", - "9e3f708636e9ea820d608629fdf47c65": "[!] Yedekleme dizini {} oluşturulamadı", - "9f22d9cb59270cf0f6382a66a63ed8cd": "Uzak dosya boyutu alınamadı: {}", - "ff490ab3be22afd2f2a06842935eedd3": "Yedekleme dosyası {} mevcut değil", - "e69d7c21f42d046b365c56045ffca873": "Yedekleme dosyası {} sunucuya yüklenmeye başlanıyor", - "df6ecb94c7a5f06b78d0bde168e769e9": "[*] Yedekleme dosyası {} sunucuya yüklenmeye başlanıyor...", - "217c9c3fec268ff4d6c35bd4d5d564ea": "Yedekleme dizini oluşturulamadı", - "2942f90ee3b191c0b98add719760e356": "[*] Dosya boyutu: {:.2f} MB", - "08b57d594c99a8339461fe78ebf95f1a": "Dosya yüklemeye hazırlanılıyor, boyut: {:.2f} MB", - "2f24607a7361d721459e3a12584fd340": "Dosya zaten tamamen yüklendi, yükleme adımı atlanıyor", - "4d57fe7dc3462ad55cc9bb1623a3eb5e": "[*] Tamamlanmamış yükleme dosyası algılandı, devam etmeye çalışılıyor...", - "9c30f21dd1175d2e9b7503e873a52b2f": "[*] Yüklendi: %{:.2f} ({:.2f}MB / {:.2f}MB)", - "04e05f53e1a18a781dbabae6cdd0e495": "Tamamlanmamış yükleme dosyası algılandı, {:.2f}MB'den devam ediliyor", - "426e1c0eadfad630c5433af2757cee8f": "[*] Yeni yükleme başlatılıyor...", - "61eb03fffeb48e199890a5a8a24a5dc9": "Yeni yükleme başlatılıyor", - "148b2912de8b29f47dc234983554ea2b": "\r[*] Yükleme ilerlemesi: %{:.2f} - {:.2f} KB/s - Kalan süre: {}", - "470e645fe1f07b6d4e77fc7b16b2a9a0": "Dosya boyutu doğrulaması geçti: {:.2f}MB", - "40070e1f0867f97db0fa33039fae2063": "Dosya başarıyla yüklendi", - "95dd52c0ce48e72f2021dee1a7a86433": "Dosya boyutu uyuşmazlığı: yerel {:.2f}MB, uzak {:.2f}MB", - "f7dac1a705d6bd05b3a42086923cf932": "Yükleme kesintiye uğradı: {}", - "554472ae3f1db37c67fe53e4a2fb53cd": "[*] Kesinti noktasından devam edilmeye çalışılacak {:.2f}MB (deneme {}/{})...", - "1e6aeb0dc8e2567bdec31246c27233a2": "Dosya yükleme başarısız, maksimum deneme sayısına ulaşıldı", - "31c53955195484e892d36d1815e2e5cd": "[*] Yedekleme dosyası {} çıkarılmaya başlanıyor...", - "21ec696ab5bc206eac1cf62268824cf0": "[!] Yedekleme dosyası {} mevcut değil", - "e344a18f13f2b196f3b56938c824dd5f": "[!] Yedek dosya adından zaman damgası çıkarılamıyor", - "d4a81ed03254ca37166d84ccb7de0bd6": "[!] Yedekleme dosyası çıkarma işlemi başarısız oldu", - "0838e64585e87c91bdfa34890445346e": "[+] Yedekleme dosyası başarıyla çıkarıldı, dizin: {}", - "0fddb4bae41a7fc9e2de8896d8cb819f": "Yedek geri yüklemeyi başlat (zaman damgası: {})", - "5a275e6386d2d3c647f6ccecb422debc": "[*] Yedek geri yüklenmeye başlanıyor (zaman damgası: {})...", - "e9b7b10566a85a5356096a630d64d2d7": "[*] aapanel hizmetinin başlaması bekleniyor...", - "8d7b4f7247dec431d103af1ce34d0233": "Geri yükleme modülü mevcut değil: {}", - "304e687ee7c78fdae6e70226f61d9708": "Geri yükleme görevi ekleme işlemi yürütülüyor...", - "ac3f9da9a646fe10c989e74b42fe5e8e": "[*] Geri yükleme işlemi yürütülüyor...", - "ac6fa0596fbb508fe61e44848548b50c": "Geri yükleme komutu çalıştırılamadı", - "846cdc02545d18e4b5308d076aa93e95": "Yedek başarıyla geri yüklendi", - "062ca961d059ebd358098ffdb12f42bb": "Yedek geri yükleme başarısız oldu, lütfen günlüğü kontrol edin", - "f857f6dc6a146a3b125ea3253052ca43": "Taşıma görevini başlat", - "53779b59d2ae1ff96f4afdfa6bbc6c7f": "curl veya wget'in kurulu olup olmadığını kontrol et", - "39679b63dca413a83cf5b664d46c929b": "curl veya wget kontrolü başarılı", - "0de6a624fa64af38f9a880430e72607e": "aapanel kurulumuna hazırlanılıyor", - "28dbda7cf25735198d7695702b18aad5": "aapanel kuruluyor... tahmini 5 dakika....", - "7a58e7034a9db769af197c85beccafd5": "aapanel kurulumu tamamlandı, yedekleme görevi başlatılıyor...", - "a850af0d3bf3586319178228af5698bf": "Bu makinede yedekleme görevini çalıştırmaya başla", - "28ec7aad1cd6afdbbc35a6aeaa95761a": "Yerel yedeklemenin tamamlanması bekleniyor", - "82550a0ece235f0d0b363135e8d94d28": "Yedekleme görevi iptal edildi veya başarısız oldu", - "c8f2865e1e43bb2fd88a0e16f3cd4c17": "Yedekleme görevi zaman aşımına uğradı ve belirtilen süre içinde tamamlanmadı", - "4bb768be41853a0aed9f56d5907be1bd": "Yedek zaman damgası alındı: {}", - "c129e18a625645767772504cf77e279a": "Yedek zaman damgası okunamadı", - "39869251ca57148d747cfd6ee60bf604": "Yedek zaman damgası dosyası mevcut değil", - "60f1d8c19f5fbb046deac4aab745f63c": "Yedekleme dosyası mevcut değil: {}", - "d67c60b6be8ebfd9f73816a7e8e4abfe": "Yedekleme dosyası yolu okunamadı", - "9e6caab47781582f556a81245571d8a7": "Yerel yedekleme tamamlandı: {}", - "b4df9a8cca277b49933dce7c8be7ab20": "Yerel yedekleme tamamlandı", - "6c97fd171b87d3f954040d4dea833cb9": "Yedekleme dosyasını yüklemeye hazırlanılıyor", - "6384458c2647bf7e1af9d942aab00d6d": "Yedekleme dosyası yüklenmeye hazırlanılıyor: {}", - "e2fdcbc1d4e8b1fa77a161c4448a4bf6": "migrate_backup_info.json dosyası yüklenmeye hazırlanılıyor", - "6533c064fee3726a0f1caf89a423fd3b": "migrate_backup_info.json dosyası yüklenirken bağlantı kesildi", - "ffa61675a37203858ec712cc635fcbdb": "migrate_backup_info.json dosyası başarıyla yüklendi", - "d192d35fb79e54273bedf84f9ee3d772": "migrate_backup_info.json dosyası yüklenemedi: {}", - "fdf17802146b46b291164d7c933950c1": "Yedekleme dosyası başarıyla yüklendi", - "97dc827b342454de3a5f9416ee1e513b": "Yedekleme dosyası {} çıkarılmaya hazırlanılıyor", - "67c40d3544174eb6d6fa63dccaa6bf6e": "Yedek geri yükleme görevi eklenmeye hazırlanılıyor", - "7ec7fd83e38b6d53374f37bd32a3da09": "Yedek geri yüklemeye hazırlanılıyor (zaman damgası: {})", - "7fd19264d09d2ff33f1f8b5867354fdb": "Yedekleme ve geri yükleme sırasında bir istisna oluştu", - "ef05e1295515a64356e53d3c11498f25": "Yedek geri yükleme görevi başarıyla eklendi", - "f90b7afaee99210e74fa3bc47d4f4918": "Tüm taşıma işlemleri tamamlandı", - "9e5e797901f9870ebf7a96266bc1e972": "Taşıma görevi tamamlandı", - "dd2a8fc49fd7c92616c228c8039410c8": "Taşıma işlemi sırasında bir hata oluştu: {}", - "1a119744a8cc132d708306e1fb90543f": "[*] SSH bağlantı bilgileri doğrulanıyor...", - "ef3ae6d88f5637005f063685ad50c625": "[+] SSH bağlantı doğrulaması başarılı", - "66db9584d2d99eeb99a90f5f4c52d944": "SSH bağlantı doğrulaması başarılı", - "a0bc8a00e83b79e42010343c31924dd2": "SSH bağlantı doğrulaması başarısız oldu", - "e871fe05e99da0c88a09686c3b7c88d7": "[*] aapanel kuruluyor...", - "1f3ff88a0fdd87e71bf237f3805dccde": "[*] Yedekleme dosyası yükleniyor...", - "c0b860cd7155af1e642fd0c41ee29262": "Yedekleme dosyası yolu belirtilmedi", - "fa1ab4e94bafd1f5b6ea55e3e9dc33a4": "Yedekleme dosyası çıkarma işlemi başarısız oldu", - "d36c2f46c959ee1fb416a947f8e75a47": "Yedek geri yükleme başarısız oldu", - "de6b9cefab1a252ada4463ee8f015f07": "[+] Tüm işlemler tamamlandı", - "496249e9e1cd99dd54146ed6565fe3f8": "Tüm işlemler tamamlandı", - "20c605607dbf9d6d1d7bb62ddc792ee0": "[!] İşlem sırasında bir hata oluştu: {}", - "4020efc99e8c60a0e7d27a5598d501e4": "İşlem sırasında bir hata oluştu: {}", - "55be882ba3aef502f3a93ad90bb9d613": "[*] Yedekleme komutu çalıştırılıyor...", - "1a6da8233a4a66ccc90d767967f22d35": "[+] Yedekleme görevi başarıyla eklendi", - "af3c2b419ba0779d81ac91cd3ca246b6": "[*] Yedekleme görevinin tamamlanması bekleniyor...", - "c8eb8110632bb540ca112819e96dc770": "[+] Yedekleme görevi tamamlandı: {}", - "0d1135061a5b00b63bdb12c2f3c9461f": "Yedekleme görevi başarısız, yedekleme dosyası oluşturulmadı", - "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] Yedekleme görevi tamamlandı (zaman aşımından sonra dosya algılandı): {}", - "637452f337bdc2991f23593124d62440": "[!] Yedekleme görevi zaman aşımına uğradı ve belirtilen süre içinde tamamlanmadı", - "ec3a935e2442ef55924ad758e17b92cb": "Paketleme tamamlandı", - "40379fed8ad84c0869a1b3e94f8a56fb": "Halihazırda çalışan bir yedekleme işlemi var!", - "20bf8648c4a3ea91ad3057f9aeca5f88": "Tüm verileri sıkıştırmaya ve paketlemeye başla", - "dc72aa669e82dd5ec7cff2ed35f2762d": "Tüm verilerin sıkıştırılması ve paketlenmesi tamamlandı. Veri boyutu: {}", - "bacf615d02bfa3c58728f62490489e9a": "Yedekleme tamamlandı. Yedek dosyası: {}", - "ad69c11076734ffc4c0532b54e6f5be3": "Yedek dosyası bulut depolama alanına yükleniyor...", - "c3a6378e06ff3e479a85b0f15c41cb1e": "{} Parçalar halinde yükleniyor...", - "c722636ded0be8237386a427242ff3b2": "{} Yükleniyor...", - "bb914d2441ee988dcd4d616350272f10": "{} konumuna yüklenirken hata oluştu: {}", - "8085ded0444fcde19b9ea4d365502f67": "Yedekleme bilgisi bulunamadı", - "2cb88461938b0c418391af13f65a727d": "Yedekleme işlemi çalışıyor, ancak zaman damgası alınamıyor", - "269159feb2faab7515c90b9f5de791a5": "Yedekleme yapılandırma dosyası mevcut değil: {}", - "daa55a73708f906c8cee0bb87284740c": "Yedekleme ilerleme bilgileri alınırken hata oluştu: {}", - "01ecbbb2b353cf4d915bbe1c1cd5505c": "Sunucu Yapılandırması", - "ca3c22c9c94069053b85db0f50373639": "Sunucu yapılandırması yedekleniyor", - "d41c74fcc2dd04880a0285c147188bf7": "Yedekleme verileri hazırlanıyor", - "806cb06592627effa1a4073fa2f66ce2": "Halihazırda çalışan bir geri yükleme işlemi var!", - "37dfdfda0ab7a98140943484fe70a76c": "Veri paketini açmaya başla", - "c415a70c8540eb59121587b3ab5d5cfa": "Verileri geri yüklemeye başla", - "c76bac64baa6fbf5c51ec144c70d91d3": "Veri geri yükleme tamamlandı", - "da7f5eb715a1a1a2378ee56a5ee24bbd": "Veri geri yükleme başarısız oldu: {}", - "ca0af2ce76c89e3bfa4bad3105c21203": "Geri yükleme tamamlandı ancak geri yükleme zaman damgası alınamıyor", - "0f4f13d63e87130a24667c6bd4cb5e2e": "Geri yükleme yapılandırma dosyası mevcut değil", - "0c5d25bf5706190b8ad0d8289a93aeba": "Geri yükleme tamamlama bilgileri alınırken hata oluştu: {}", - "667a68bf7113541f218081fac58f6815": "Geri yükleme yapılandırma dosyası mevcut değil: {}", - "e7a91a4400b67b84e7cca61642b93f4d": "Geri yükleme ilerleme bilgileri alınırken hata oluştu: {}", - "1b4c2c21e77ac36e4097a92dabd55bc0": "Bilinmeyen {}", - "c1173fa3bd3d44530eead89e7edeefe1": "Veri Sıkıştırmasını Açma", - "a76a19147d36f4f2d6801cf602de2718": "Bilinmeyen Görev", - "5ba4673aac259be67bac9db8cfc9c5b2": "Veri geri yüklemeye hazırlanılıyor", - "5b43e0e228169e5df9cec81876cd3710": "Hata: force parametresi 0 veya 1 olmalıdır", - "4c3880bb027f159e801041b1021e88e8": "Yöntem", - "7d3c180ded4dcc8eade80cd031ab1b5d": "Lütfen sık işlem yapmayın, bir süre bekleyin", - "37b15a5d1e4fa625ea8996de5e378a84": "Başarıyla alındı", - "b0d4998a26f5b5742ad38c4af8817e32": "İstisna", - "616e012bcc90980f6ddfd2b3c17345f8": "İlerleme durumu alınamadı", - "9e0a136b55af822e72c8d6716d2d4bf3": "Bilinmeyen Tür", - "6ac0b58e56cefd76e61bc840dfad94fa": "Görev başarıyla durduruldu", - "b808472e703dfd53fdcb59fbe89e3436": "Başarıyla yürütüldü", - "12b65fbe011be723b4ae981c0d42c44d": "Geri yükleme görevi başarıyla eklendi", - "741e160bb129a548e26fbad37c8f674d": "SSH bağlantı testi başarısız, lütfen IP ve portun doğru olup olmadığını kontrol edin", - "e0867cf8c8a1935e8bd681f0ff28a612": "SSH bağlantısı başarıyla doğrulandı", - "f94e94b4ec479336f36fdf9fe1004b83": "Taşıma Görevim", - "b100f6e1c91f013adf0ca5ce6606a89d": "Taşıma görevi başarıyla eklendi", - "fd0099266c1971c5c40036e615d67fd4": "Başarıyla taşındı", - "87aa2e739755a6fea3a63876b5a1d48e": "Başarılı", - "d7db03701029007097b8e0cd61a983f6": "Şu anda taşıma görevi yok", - "808781229f7b019ba6a44ea3871e3b6d": "taşıma görevi okunamadı, lütfen daha sonra tekrar deneyin!", - "e728b6a004aa5e61efd25bf815a6e290": "Yedekleme görevi başlatılıyor...", - "c9d48d6a4ebe28917b5439c91faaff68": "aapanel kurulumu tamamlandı!", - "f5e7895e7c31fedd32b520012910f960": "Taşıma Görevi", - "3a94451860f0c20374128e61e8783d26": "aapanel Kurulumu", - "f02f38d885226197e729453ea104feac": "Geri Yükleme Görevi", - "0ba29c6a1afacf586b03a26162c72274": "Ortam", - "f072f24284b47eaf8adcf88b29021618": "Taşıma günlüğü mevcut değil", - "9166b100905c2625ba9df2524f8c2faa": "SSH bağlantı testi başarısız: {}", - "3a02e4b05ad1b321e855aa6116699b6e": "Taşıma hatırlatıcısı başarıyla silindi", - "334afd10871f8c52a884e307d2e17ccf": "Taşıma geçmişi başarıyla silindi", - "2f393a2518f5668880822f47fcdb5cc0": "Taşıma geçmişi mevcut değil", - "cbea0a592d6a3c48f2418d687cf54200": "Terminal verilerini yedeklemeye başla", - "e7e06b2dd59401dcf79acf2e3124d2fb": "Terminal verileri yedeklemesi tamamlandı. Veri boyutu: {}", - "a273d4d4d0cf13abc1d7a4f96b8c851e": "Terminal verilerini geri yüklemeye başla", - "1a15a2b43f1dd92e836a592fb180843d": "Geri yükleme başarısız, dosya mevcut değil", - "95d831166994e434da49f3ed70b73e8e": "Terminal verileri geri yüklemesi tamamlandı", - "e3a04ee4c0a034510866948e571c7966": "Güvenlik duvarı verilerinin yedeklenmesi başlatılıyor", - "9a176a20c15e3dc096ed8bc5a05182ba": "Güvenlik duvarı port kuralları ✓", - "ce693968cbf6e5f66af91e3dd2317d78": "Güvenlik duvarı IP kuralları ✓", - "7ebd5e6b35357be0d5079f674f68ed8f": "Güvenlik duvarı yönlendirme kuralları ✓", - "8dfa78d85bb1d152b0cafe398b27e1ae": "Güvenlik duvarı bölge kuralları ✓", - "927bb2298acc2c29d1beaff4d1656371": "Güvenlik duvarı verileri yedeklemesi tamamlandı", - "d076d2dde53272dc55d47f34a465ebef": "Güvenlik duvarı verileri başlatılıyor", - "3e0b3a3e90cc4a1f5abbf3fd1a38c2b7": "Kuruldu.", - "d1b0c3d7a1b5f80626ec1a2395b4f990": "Güvenlik duvarı verilerinin geri yüklenmesi başlatılıyor", - "1f35b1eac1045718a64b4133a8e8829b": "Güvenlik duvarı port kurallarının geri yüklenmesi başlatılıyor", - "a168f915263109733b87807a0db41e01": "Güvenlik duvarı port kuralları başarıyla geri yüklendi ✓", - "ce04afdfe07dead0b0fb34e6bc00b6e5": "Güvenlik duvarı port kuralları geri yüklenemedi", - "c32b29f59e8b553998c75c5d7bc44dc6": "Güvenlik duvarı IP kurallarının geri yüklenmesi başlatılıyor", - "b68673b625a1d48b3953e37bb39fcbab": "Güvenlik duvarı IP kuralları başarıyla geri yüklendi ✓", - "ee0294aac018e0ab5f4e5e020f8d867c": "Güvenlik duvarı IP kuralları geri yüklenemedi", - "326c03834ea4914dbb02cf04e0c0164f": "Güvenlik duvarı yönlendirme kurallarının geri yüklenmesi başlatılıyor", - "b077ba90ec76f05d0e541733e8291e3f": "Güvenlik duvarı yönlendirme kuralları başarıyla geri yüklendi ✓", - "5ed68fe9a3e0530485018c0704d91035": "Güvenlik duvarı yönlendirme kuralları geri yüklenemedi", - "03f3f31fd240913a083a78fc2d60f6f8": "Güvenlik duvarı bölge kurallarının geri yüklenmesi başlatılıyor", - "6f9922502feac3b7e6ede129664e3e18": "Güvenlik duvarı bölge kuralları başarıyla geri yüklendi ✓", - "771b376bf4473fc2f1cea6958de2afeb": "Güvenlik duvarı bölge kuralları geri yüklenemedi", - "6331b46ffa70ff97b558022d5ae8098a": "Güvenlik duvarı yeniden başlatılıyor", - "1bb2a65f17d7e3c685f36f7ff1794338": "Güvenlik duvarı yeniden başlatma tamamlandı", - "246f6edb1d9df9b3abe78fc810876c28": "Güvenlik duvarı verileri geri yüklenemedi: {}", - "483829cb5ae13bb190eb59acdf4f3231": "Posta sunucusu verilerini yedeklemeye başla", - "8c7a0774ab14bae83a69b8562102fb0a": "Posta sunucusu verileri yedeklemesi tamamlandı. Veri boyutu: {}", - "e8480272035737a247832288f618c270": "Posta sunucusu verilerini geri yüklemeye başla", - "e058c7e1fd9cd1a4fd7ac7240a7765d2": "Geri yükleme başarısız, dosya mevcut değil", - "6e6e9dcfdf7bd846ab85a4ff0e0e2f95": "Posta sunucusu verileri geri yüklemesi tamamlandı", - "1502c42b339a3dfe20e4c95186b38dc3": "FTP hesap bilgilerini yedeklemeye başla", - "b5cf2f2c48fb5978825d3341759dd6d6": "{} kullanıcısı ✓", - "120446d8a303de2396a1bb62ba8e8755": "FTP hesap bilgileri yedeklenemedi: {}", - "b18010e000c073a3587a89b2931c2770": "FTP hesap bilgileri yedeklemesi tamamlandı", - "c9073077bfd7adb73cbe253177b08833": "{} hesabı geri yükleniyor", - "c5df3d6bec6157b48fb24bf8fe2a2add": "FTP oluşturma başarısız: {}", - "f3f8d4ba630fa6a7de1e9f4e34bad5dc": "{} hesabı ✓", - "af4ff8fd3803d5496f74604eb1665e81": "FTP hesap yapılandırmasını geri yüklemeye başla", - "2bf94c9147c8220fc83f955175216c40": "ftp: [{}] hesabı başarıyla geri yüklendi ✓", - "9417f3027d6326176c986ffeee1f4491": "FTP hesap yapılandırması geri yüklenemedi: {}", - "8ed95b2c3c38acf7e9532a582f08bb86": "FTP hesap yapılandırması geri yüklemesi tamamlandı", - "49237b104331e8724e521b2fe6fdf6d8": "Eklenti verilerini yedeklemeye başla", - "26d785a1a32377e0e0e9498f4a7da12e": "Nginx güvenlik duvarı ✓ ({})", - "7f578816e3867140ee56ccbbc1d69f55": "Web sitesi izleme raporu ✓ ({})", - "ff083aca075c6543c2999781b6677c19": "Kurumsal kurcalamaya karşı koruma ✓ ({})", - "2f29dad748ac1d8d50481ecbd7e05091": "Sistem güçlendirme ✓ ({})", - "79bb9b38c599612b8b8f38ddc50f5c25": "Eklenti verilerini geri yüklemeye başla", - "ee84e47223f5ce39b8bb239376db4af3": "Taşınan makine bir aapanel kullanıcısına bağlı değilse ve Profesyonel sürüme yükseltilmemişse, eklenti geri yükleme hataları oluşabilir", - "30560687e27ef30b6f1cde26359eea6c": "Nginx güvenlik duvarını kurmaya başla", - "a776b4ccf7343a25223817c8597ca7cf": "Nginx güvenlik duvarı ✓", - "d0c97e94eb5061783de7bbad8e7bd295": "Nginx güvenlik duvarı verilerini geri yüklemeye başla", - "0010c09bd9f322c3b88a89dd0b52c831": "Nginx güvenlik duvarı verileri ✓", - "427ad80bf462a92719fcff5c1a1be755": "Nginx güvenlik duvarı ✗", - "29ad27f749c3f913779d432115de597f": "Web sitesi izleme raporunu kurmaya başla", - "66f3f8adc854963e94a643b706157309": "Web sitesi izleme raporu ✓", - "a0dded50b067929299258b3c8fc1b0e6": "Web sitesi izleme raporu verilerini geri yüklemeye başla", - "bd43add14ebbd0f448c207c48e1d5ac8": "Web sitesi izleme raporu verileri ✓", - "a7b8bc831a9b36cc5127b5f8ecbec22a": "Web sitesi izleme raporu ✗", - "c922c95c5f7973050d08412a26aab462": "Kurumsal kurcalamaya karşı korumayı kurmaya başla", - "31d844f4dd95b8a71e8ddbd1b9912ae5": "Kurumsal kurcalamaya karşı koruma ✓", - "8fcd5da199e1e04830a686a576a2e914": "Kurumsal kurcalamaya karşı koruma verilerini geri yüklemeye başla", - "941b78173e944c6737a858bada098311": "Kurumsal kurcalamaya karşı koruma verileri ✓", - "50bcd3813a4b18663b0bdc29f73b8c90": "Kurumsal kurcalamaya karşı koruma ✗", - "cdcfb9e176572fe14bdc4c88474d8baf": "Sistem güçlendirmeyi kurmaya başla", - "4d86b9c9f554fa3d477a86d2f62aaa1b": "Sistem güçlendirme ✓", - "5633c4d754985da6c7fab116964ac501": "Sistem güçlendirme verilerini geri yüklemeye başla", - "bda583fc184a8e079a37e169a9614e10": "Sistem güçlendirme verileri ✓", - "479557cf249b3145d91a94ed130c5ecb": "Sistem güçlendirme ✗", - "746e85b89c25244ae397c06029badc9c": "Eklenti verileri geri yüklemesi tamamlandı", - "69d45b5b241dac0fa1efaf7b6966520b": "SSL sertifika bilgilerini yedeklemeye başla", - "835601ead78ba62b89c4b27956645362": "{} {} Sertifika dosyası mevcut değil ✗", - "025de5f8c791241d326ec4e086e9898e": "{} [{}] Sertifikanın süresi dolmuş ✗", - "ecd204c03ea44719e6fa4ea25569266a": "{} {} ✓", - "aa6b67db23e9cb0b943aa6c0def92cb4": "{} {} Yedekleme başarısız: {} ✗", - "ec56d7aedc9c5242d094ebbaeda5047e": "DNS API sağlayıcı bilgileri yedeklemesi tamamlandı", - "b561b1ca5fd89d639144a099f5fe096d": "SSL sertifika bilgileri yedeklemesi tamamlandı", - "7aa422d849ba11b569187382a3a509d1": "Sertifika {} için dağıtım siteleri geri yükleniyor...", - "4573d024bbb8e1f8c8efb2582a6a01c0": "Sertifika {} için dağıtım siteleri geri yüklendi: {}", - "baa339aa8e95d46851fd48574cb1d902": "Sertifika {} için dağıtım posta kutuları geri yükleniyor...", - "9307ae55fb4a7b878e377790e040eec4": "Sertifika {} için dağıtım posta kutuları geri yüklendi: {}", - "b057e2d52c20f76bf3c788eb9b4873fa": "Sertifika {} için dağıtım paneli geri yükleniyor...", - "41596c0d36a66c44434d5882c3cfa793": "Sertifika {} için dağıtım paneli geri yüklendi: {}", - "6ffcb0a3e8cdf728b3e7bc45ae221e5a": "Sertifika ekleme başarısız, lütfen günlüğü kontrol edin", - "c8a71420e709d8a4d02914a78d9a0e06": "Alan adı SSL sertifika yapılandırmasını geri yüklemeye başla", - "0672a3dc402dc9657fd0a0f1580d1c12": "Geri yüklenecek veri bulunamadı", - "52f23f668fced51c3e25c781299fbff8": "Yedekleme dizini {} mevcut değil, SSL sertifika bilgileri geri yüklenemiyor", - "ad93ef11d3e4238618571f517e11e80d": "Geri yükleniyor {} Konu: {}", - "c49480308ee71202cc5fff5ea96eaaed": "Sertifika dosyası mevcut değil", - "42db220bc931b97aecdef6b6f0362bc4": "Sertifika veya özel anahtar dosyası eksik", - "9f88b7ffec183a54f2e7e6136b4f5ac7": "SSL sertifika bilgileri geri yüklemesi tamamlandı", - "5e211e4fb46748c1d243b59a15645df7": "Zamanlanmış Yedekleme Görevi Başlatılıyor", - "a9d58d413bd48f1bd7e8041b6d8ceab0": "Zamanlanmış Görev {} ✓", - "ff0550fa0270ac20419790a51900d815": "Zamanlanmış Yedekleme Görevi tamamlandı", - "a7609aefd5330a1384704e73dc0b4dc0": "Zamanlanmış Görevi geri yüklemeye başla", - "48ed083561c2f201d9fe52f6a35ee982": "Zamanlanmış Görev tamamlandı", - "d4e8a75d522d3e77ae80eadd49b0865e": "Uzak veritabanı listesi boş", - "5d806f11bb91996cafe7836b27a4e770": "Redis bağlantı istisnası!", - "1d69261c05f6ce03d2cab5528d443fa7": "Veritabanı verilerinin yedeklenmesi başlatılıyor", - "0cf1803cfdfda6f67d12fa7e1c4a25a7": "{}uzak {}veritabanını yedekle", - "32d68be800692faddb12c5252fded05e": "{}Uzak {} veritabanı bilgileri ✓", - "0c64283397c43effb13a2cbe818ce929": "Veritabanı verileri yedeklemesi tamamlandı", - "2f7d7cfc04be64fa087e964d41cb26b4": "SQLite veritabanı listesini geri yüklemeye başla", - "a1248c409fec22277ab13a6bb433188e": "SQLite veritabanı listesi yedekleme dosyası mevcut değil, geri yükleme atlanıyor", - "d03ebecb5f420070192de8712926151a": "SQLite veritabanı listesi geri yüklemesi tamamlandı", - "ad6937d61b4d6e93a13f03308c66f2eb": "Mongodb hizmeti çalışmıyor!", - "f60644c6526c4d9afe5b20db75fc2e5b": "Veritabanı yedeklemesi başarısız, dışa aktarma dizini mevcut değil!", - "161bb420493657920405937a2cf42c96": "Yedek sıkıştırma başarısız!", - "20a42330f9241c13c91e3e203449a8a6": "Yedekleme aracı eksik, lütfen önce yazılım mağazasından pgsql yöneticisini kurun!", - "7eff7c4aeb6bfe736f8a78c0096f92c7": "Lütfen önce yönetici şifresini ayarlayın!", - "6e907b499869ab16105a7aba198e13a7": "Veritabanı şifresi boş! Lütfen önce veritabanı şifresini ayarlayın!", - "982c5a05ac4dbaee10c865ba767b2249": "MySQL db senkronizasyonu...", - "a9ace5523668233a3867f26cc86e29c9": "MySQL db senkronizasyonu tamamlandı.", - "c15645e9ad579e4bfcb536bc5d7015c3": "Veritabanı verilerini geri yüklemeye başla", - "c9206e74b8d32e1e0a5710c0fe322cee": "{} veritabanı {} geri yükleniyor", - "ecea29915732c5d0001ece74601f3d20": "{} veritabanı {} ✓", - "b61a878149263a02fa99cc635409ee25": "{} veritabanı {} ✗ ({})", - "3fa7c5a9beafa67bb44999cab5cff52c": "{} veritabanı {} geri yüklenemedi. Neden: {}", - "e89775cca910deb5e484f631606cceb1": "Veritabanı verileri geri yüklemesi tamamlandı", - "9750547146e22f364299bc5f561a3fb6": "Uzak veritabanını geri yüklemeye başla", - "23f2db47eb6ff16785e5a222c8657f93": "Uzak veritabanı geri yüklemesi tamamlandı", - "6aca7aec516bcaf7ded80873f08dd55c": "MySQL {} şifresiyle başarıyla başlatıldı", - "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL yeniden başlatılacak, lütfen bekleyin...", - "a692f58dc09f3e41c133ea460ff3b8df": "{} veritabanı şifresi geri yüklenemedi. Neden: {}", - "b17f6f187c4ecfd392c6367ec2ba6498": "{} yedekleme kimliği mevcut değil, içe aktarma sonlandırıldı", - "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} veritabanı kimliği mevcut değil, veri kurtarma sonlandırıldı", - "611881e9f5d01b22a447c282aa8aca23": "MySQL veritabanı {} zaten mevcut", - "98b38cd2445396b44204b7201a33f64b": "{} veritabanı erişim izinleri geri yüklenemedi. Neden: {}", - "ea31cbc6134300ca816c913d227b605f": "{} veritabanı oluşturulamadı. Neden: {}", - "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "Veritabanı zaten mevcut, SQL geri yüklemesi atlanıyor", - "556843e4a406b780b0cf83c43366a8dd": "İçe aktarma başarılı", - "af71c2c0e3813c9a77fe48507ea8e4d1": "MongoDB veritabanı {} zaten mevcut", - "416ad8b141103f9704100ce4070c5975": "Veritabanı kaydı doğrulaması başarısız, geri yükleme durduruldu", - "84b4d8c8cdd02488c0f868e97b22a3c2": "Oluşturma başarılı", - "10aec3a9e9564a9851c117b259245136": "Veritabanı zaten mevcut, veri geri yüklemesi atlanıyor", - "b819d4259ca3ab0042562acea69e83e1": "PostgreSQL veritabanı {} zaten mevcut", - "31b21eca2e62de420cf05e8135089114": "Yedekleme dosyası mevcut değil!", - "3eed4851380704f25eec3921befde38f": "Geri yükleme başarılı", - "e9ed6b2a27deb5699565f0441dc713e9": "Yazılım bilgilerini yedeklemeye başla", - "e690c7866c5dbacbbc7860af5e6a3af1": "Yazılım bilgileri yedeklemesi tamamlandı", - "cabf299a6cfa5874e23582c535f301c6": "nginx-{} kurulumunu başlat", - "33ec71107108ed89c0b526d5473526c8": "apache hizmetini kurmaya başla", - "b815f2a7e299ea99d41d665c728756d9": "Web sunucusu kurulumu tamamlandı", - "70510d59e30015790f07ca53c80c5bec": "php-{} kurulumunu başlat", - "2de6c0aa3c26285104f898b368bcf287": "node-{} kurulumunu başlat", - "7d5cf115afd8be7c2a36d03b31d1ce44": "mariadb-{} kurulumunu başlat", - "92e77c2b107f440d6d54062228112f73": "mysql-{} kurulumunu başlat", - "4b09abb2edd44a4510395a297a2ff155": "mongodb-{} kurulumunu başlat", - "69fa45968c5cc7a9115bff54e70c95c1": "memcached-{} kurulumunu başlat", - "fbabb869ff01746bd144289622b277fc": "redis-{} kurulumunu başlat", - "da7d69765f1876fba52c21a17e8c74c6": "pgsql-{} kurulumunu başlat", - "99782b6a478e499d45a91f9d78e1c73a": "phpmyadmin-{} kurulumunu başlat", - "640c4e334dc9587e212d36e685059478": "ftp-{} kurulumunu başlat", - "aecfeaaa9e3bcff1f6169598772e90c0": "Panel çalışma ortamını geri yüklemeye başla", - "3b83e3fdb17c70ca190e263e0bd7173e": "Aynı ortam mevcutsa kurulum atlanacak", - "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "Site verilerini yedeklemeye başla", - "c886466d255b20be0dbde7f1b44b7f20": "{} projesi yedekleniyor: {}", - "7ecf25c18499d663d2e636d0a99f73a3": "{} projesi {} ✓ ({})", - "0fc5eeb9bebed19653578a5df99d3e6e": "Site verileri yedeklemesi tamamlandı", - "9a2e8778b2a816fedb9f83afadcc2341": "Site Python bağımlılıkları geri yüklenmeye başlanıyor...", - "fd16d36423b43735556724e0395e8f91": "Site Python bağımlılıkları geri yüklemesi tamamlandı", - "bbf57ca8231bce958a3e528a08491874": "Site veritabanı ekleme başarısız: {}", - "389f018ba17dc25cb23a5300d8f630db": "Site yedekleme dizini mevcut değil: {}", - "21654e03b247d5e25abaa0ad542883c0": "Site verilerini geri yüklemeye başla", - "c8cecd19f4f4a680a5879f828d1c5578": "{} projesi geri yükleniyor: {}", - "35850d3654332477522ee06c756a3c85": "Kaynak site dizini silinemedi: {}", - "c88b730f7a6a312159272ce532947de2": "{} projesi: {} ✓", - "24ee51964e4ece856493ca28fdb075ed": "Site verileri geri yüklemesi tamamlandı" + "f41a4952dfc4caafbed0a6afdd243bff": "Sertifika hatası, lütfen kontrol edin!", + "2dfadbc8b23727991de7eb9457f56252": "Sertifika kaydedildi!", + "7961d31b9b6db7593b5f8795273b5b64": "Sertifika başvurusu başarısız oldu, lütfen site yönetimi sayfasından panel alan adı için manuel olarak sertifika başvurusu yapmayı deneyin", + "d29c0b7e434fe9f40120f2a7f8111c9e": "SSL dosyası bulunamadı! {}", + "c4ca4238a0b923820dcc509a6f75849b": "1", + "96ee8f18814766fdf066df97d3e1f6ea": "Lets Encrypt sertifikası için başvurmadan önce panele bir alan adı bağlamanız gerekir.", + "7c14ab8a86515227c637d1d045e8d422": "Kurulum başarılı!", + "a453af2e4da41ca8c5035d61b961c1ae": "Veritabanı mevcut değil", + "ca9c87b1d4c2f8af80c61cf22e43250d": "Bu zaman diliminde zaten bir yedekleme görevi var. Başka bir zaman dilimi seçmeniz önerilir", + "e0aa021e21dddbd6d8cecec71e9cf564": "Tamam", + "4db53632205257cce66f7b93d6c71e84": "Web sitesi mevcut değil", + "dc542b3a7ffb20d7a1fc0c2b35f208d8": "Dizin mevcut değil", + "4cc4ddc196a295ee4ab82daec08f91a6": "Site mevcut değil", + "25bb121145f918572eea2ef07ff8e89c": "Yedekleme hatası", + "f8320b26d30ab433c5a54546d21f414c": "Yanlış", + "4bbfcde12aa36ec375a332f51bf905d6": "Her Gün", + "60956b50bb8e8c711d3adb889a70137f": "Her Gün, saat {}:{}'de çalıştır", + "78748f15bb65939b6d130c3a5cf8b7dc": "Her {} Günde Bir", + "cf9af10dcebe2f12092ff6028a535f08": "Her {} Günde Bir, saat {}:{}'de çalıştır", + "e114abed903b9d26c476d4f6cd59c04b": "Her Saat", + "0aef48ea8132b0551fa25a10fd0a6585": "Her Saat, {} dakikada çalıştır", + "50419faf9662e0c3f283d496bcb8eb72": "Her {} Saatte Bir", + "2a0706d7e3ca3ce9e955471a0648dfcc": "Her {} Saatte Bir, {} dakikada çalıştır", + "84d94bf0382f611906b7edd65d6af169": "Her {} Dakikada Bir", + "14d27796d1c96457c7c019661a2f32d4": "Her {} Dakikada Bir Çalıştır", + "6c25e6a6da95b3d583c6ec4c3f82ed4d": "Haftalık", + "e1df614d393ab86fd63c5062f7e77936": "Her {}, saat {}:{}'de çalıştır", + "9030e39f00132d583da4122532e509e9": "Aylık", + "69c5e99b9ad8d2b8f11be9a60cbf71da": "Aylık, {} Günü {}:{}'de çalıştır", + "9d1a0949c39e66a0cd65240bc0ac9177": "Pazar", + "6f8522e0610541f1ef215a22ffa66ff6": "Pazartesi", + "5792315f09a5d54fb7e3d066672b507f": "Salı", + "796c163589f295373e171842f37265d5": "Çarşamba", + "78ae6f0cd191d25147e252dc54768238": "Perşembe", + "c33b138a163847cdb6caeeb7c9a126b4": "Cuma", + "8b7051187b9191cdcdae6ed5a10e5adc": "Cumartesi", + "e00d5128f631253b7b6ed8d5454c0c81": "Dosyaya yazılamıyor, lütfen [Sistem Sertleştirme] özelliğinin etkin olup olmadığını kontrol edin!", + "685689743579a8f09fcec5d7df04e39e": "Görev adı boş olamaz!", + "a5c04aced897c770105858268324b53f": "Mevcut görev Devre Dışı durumda, lütfen değiştirmeden önce görevi açın!", + "85305ee6be0f078791c7437ec54dda12": "Ekleme başarısız oldu", + "08a1ce771119bb393fa49478216ae809": "günlük boş", + "b8fd4dbe5c3650beaec0a3d44d7f0245": "Günlükler temizlendi", + "ff47c70e853d0b3635935be883b018e9": "Görev günlükleri temizlenemedi!", + "e0c4da1afd18acbb66bc5fac261a42ef": "Belirtilen görev mevcut değil!", + "998ad6f12ce5285a1b72d4265d9b36cc": "Başarıyla silindi", + "e274abcaad0a7fff74d9adb67e578d5f": "Silme başarısız oldu", + "38fa2d4f8f9a13062c0c9007d97f6a84": "Dosya okunamadı!", + "f57d5686d9dd67f0e81924de8d13af95": "Görev çalıştırıldı!", + "0b1c93d38c86c8d379886293cdf8ba66": "Görev iptal edildi!", + "d5ef96e383d376beeec28da7acfea516": "Dosyayı indir", + "f24f6c5f5841340f898a6baaa6478bcd": "{} dosyasını indir", + "b2d87dda66a4643c6cf673f787c5f226": "Yapılandırma dosyası mevcut değil", + "9fdd777388a418cef77bce46c1b2511a": "Belirtilen sıkıştırma formatı desteklenmiyor!", + "4fa407ee74026903dc3013d0b2471eac": "Sıkıştırma başarılı!", + "ece43dcaac9352f58c422e500266a927": "Sıkıştırmadan çıkarma başarılı!", + "b9c1dcb37c44dca19765636de065b1c1": "Yedekleme Başarılı!", + "ac4eb62573e34c36ff426c8a6360c781": "Yedekleme hatası!", + "438ca4ffcf6fbd44ec129e73a24f0deb": "sql/gz/zip dosyası seçin!", + "0edfb4a54d6cf45209a6c7929b8b9919": "Veritabanı başarıyla içe aktarıldı!", + "b0698ab9adefa7515299f311c725ba4d": "Sıralama başarıyla temizlendi", + "8611f56e253646a455ceeb020052fa97": "Değiştirme başarısız oldu", + "bef28b813bf12be3924925bbb62883dd": "Başarıyla çalıştırıldı!", + "fda63bff3e0143980e5761376859b00b": "Çalıştırma başarısız oldu, Apache'nin kurulu olup olmadığını kontrol edin", + "22012355700877ab73f89de8014ab20b": "Apache kural yapılandırma hatası:
etkinleştirme başarısız oldu:

", + "9848c96a046adb1759233241661ff694": "{} servisi başlatılamadı", + "6ed577cdce37bbd9c66871ac1677dc53": "Servis durdurma başarısız oldu!", + "572e5703371c43aae299181c0e3567d4": "Lütfen programı tüm kurulum görevleri bittiğinde çalıştırın!", + "c7138b4b5f7ded833942aef4e230771d": "Komut başarıyla gönderildi!", + "d56f0ed99825b4d62ab84753a65f7f1e": "Panel yeniden başlatıldı", + "bff9ef87fdda677f86ae6dddec54a104": "Uyumlu PHP sürümü bulunamadı, lütfen önce kurun", + "7901466782835534ad8736db6ef1f5f1": "Geçersiz giriş anahtarı1", + "f155037a804d9eb3e28318ac56b4cce7": "Belirtilen anahtar mevcut değil veya süresi dolmuş1", + "6eef9dff3428b19422dbbfe061fc8266": "Geçersiz giriş anahtarı2", + "ea4dede6817ca735a9df32b4e63fd1ac": "Geçersiz giriş anahtarı3", + "4682250bcbe96f4c0c59712ef1ff1560": "Geçersiz giriş anahtarı4", + "8b4bcc31cc9ad0a259e17a1ebfcfb859": "Belirtilen anahtar mevcut değil veya süresi dolmuş5", + "c132c7b820d6b4d23038989f10dc7d90": "QR kodunun geçerlilik süresi doldu6", + "ab72200c3852bb7165e1e0d9456c5679": "Kod başarıyla tarandı, giriş yapılıyor!", + "d003e41a7688df391d78442602802077": "Geçersiz giriş anahtarı", + "8b7e4d42188dd3064e99d4cc76f2f94d": "Mevcut QR kodunun süresi doldu, lütfen sayfayı yenileyip kodu yeniden tarayın!", + "238baadc7351e6af7625f2b3c888adfd": "Bu sunucu en fazla {} cihaza bağlı ve bu sınıra ulaşıldı!", + "e615667ab7e4ce542cc2de0e95b5983c": "Doğrulama başarısız oldu!", + "9d45236535b39cb2afdc976ef584dc89": "Bir sunucu en fazla {} cihaz bağlamasına izin verir!", + "883102f20053b7b88799f5712192fcec": "Başarıyla bağlandı!", + "eb21cf2eed85a178a9cb642a0175f402": "Başarıyla silindi!", + "c332d7ea3375e567e1b586dfb79c2156": "API arayüzü üzerinden API yapılandırılamaz", + "166be1ba5c792888e84a51c48f5a5eed": "Geçici anahtarlar yalnızca API arayüzü üzerinden alınabilir", + "dd923e13e2389e764f7d833482dc58d3": "Kullanıcı e-postası veya parolası boş olamaz!", + "a72005cea9c8d0e8925115a09f62e834": "Lütfen geçerli e-postanızı girin", + "583e0c5cfd4be57cb9bef0a1745f81c8": "hata bilgisi : {}", + "086a727d5b55e2ccedc7cd0c194936f0": "hata bilgisi2 : {}", + "2b770a5bd35c0e286c6296f942990bf7": "Kayıt başarılı", + "a3dcb5c816b8d611f73cddb3c53578d4": "hata bilgisi6 : {}", + "8089be0bb8586c6081d4cd8dd9223d76": "E-posta doğrulanmadı", + "2bdacd9b8281d94958a8da4d29420926": "Başarıyla bağlandı", + "7826987ad3c4b2226b8f7a601657d23b": "Geçersiz kullanıcı adı, e-posta veya parola! lütfen kontrol edip tekrar deneyin!", + "a7ea66c7a7ca61c727cf1ebe830ffed2": "Sunucuya bağlanılamadı!", + "3d8c9e517719022b27ad5f27c578fa31": "RAM Alınamadı", + "d47ab7b9ce539ba13f4e045561bb8ed7": "Çalışma Süresi Alınamadı", + "8e39175bab478762d3d029bee327c704": "Yeniden Başlatma Zamanı Alınamadı", + "e16cf27704f83c8b0a0efc16886ea75d": "Tarih Alınamadı", + "c158c8096b76b85803e71232b2dd5e74": "Zaman detayı Alınamadı", + "a6ec06b5eb6a42e13e072d2e992e31a0": "Saniye Başına İstek Alınamadı", + "cdd32490a46567fd0c1ee9d4b170b762": "Toplam Erişim Alınamadı", + "62b939086708b37d68c00cb713994b52": "Toplam Kilobayt Alınamadı", + "13b06d17b35dfeeafa50e12ad9ec1735": "Meşgul İşçiler Alınamadı", + "724fc9214ccce3e6a5787648240a4533": "Boşta İşçiler Alınamadı", + "7a7f329389283fdd3290c735f90946e9": "mpm_event_module conf bulunamadı veya /www/server/apache/conf/extra/httpd-mpm.conf boş", + "c22cf8376b1893dcfcef0649fe1a7d87": "Saniye", + "db669c6377ab90eef78800a48fd4a453": "İstek zaman aşımı", + "af52f5340c065f4d38182f7a27d59f75": "Keep alive", + "939bf39176f01b8324dfed32f5580af3": "Bağlantı zaman aşımı", + "70b46e57f3c33abdb9558bc5c3a234d9": "Bağlantı başına maksimum keep-alive istekleri", + "6868568c3abc547e622a303891a906b0": "Varsayılan işlemler", + "224114c62dceb7ebee2db43c6c79a961": "Maksimum boşta iş parçacığı sayısı", + "3c60809d9a5a0900dfbc28bb017e410b": "İstek artışlarını işlemek için mevcut minimum boşta iş parçacığı sayısı", + "3783030daf8154be6e11fc4160c229c3": "Her bir alt işlem tarafından oluşturulan iş parçacığı sayısı", + "2f25e4b1a2cb84576740da749a2daef2": "Aynı anda işlenecek maksimum bağlantı sayısı", + "72e3edfd72758944413b1e4e9c432f1e": "Bireysel bir alt sunucunun ömrü boyunca işleyeceği bağlantı sayısı sınırı", + "066985109e0866765c631bf851b9fac8": "Parametre HATASI!", + "26c74a59d7d10bd927dce45e449943f1": "Yapılandırma HATASI", + "fa57fd4dd2f47d6e5e076c347fbee513": "SITE_ADD_ERR_DOMAIN_TOW", + "4eb35aa4b95736df133dd3ad772f1ec9": "Sistem için kritik olan dizin, site dizini olarak kullanılamaz", + "ebdcf538e79de6922f498cc8c735eab5": "Sistem güvenlik duvarı açık değil", + "a296add6341b715925c0be2b83514ee3": "Girdiğiniz IP adresi geçersiz!", + "3433b9709eed7423f1900061ef743af6": "Bu IP'yi devre dışı bırakmak sunucunuzun çökmesine neden olur", + "57e7b2320dd3984312335605d57ee0f8": "IP engelleme listesinde mevcut, tekrar işlem yapmaya gerek yok!", + "4bb8df740a7119979ff7854d034200a8": "IP adresi geçersiz!", + "ff9c66f005c08efd15752fb261057b46": "Port aralığı 22 ile 65535 arasında olmalıdır!", + "b26b09909c3b090f31dba4a0986e1b84": "Port mevcut, tekrar serbest bırakmaya gerek yok!", + "408f58c25fc55295236fbb64a2d884ff": "Başarısız oldu, panelin mevcut portu silinemez", + "ad6fc2abb89b42d391b4bf84e8e6cd2d": "SSH servisi kapatıldı", + "0692d6f0819524aaa05e73f03022ec5b": "SSH servisi açıldı", + "d0749aaba8b833466dfcbb0428e4f89c": "BAŞARILI", + "ffdc24f916f3071233ca7710aff032c8": "{}", + "6e264f3408e9b769d3fb7e2c807f301f": "İşlem başarısız oldu. Lütfen anahtarın doğru olduğunu kontrol edin", + "d4ac5985eccd334896e3cf23706e43b0": "Başarıyla eklendi", + "92188d43af4373bacbf00951da16532a": "Web sitesi yolu alınamadı. Lütfen web sitesinin mevcut olup olmadığını kontrol edin", + "ceaefd9a46d78491b9fdb912b5c71eeb": "Doğrulama dosyası oluşturulamadı. Yazmanın engellenip engellenmediğini kontrol edin", + "1bb3608b1bc684c3dc85090db249346b": "Sertifika bilgisi alınamadı", + "c8c7de7f5b740307d55affea39b79993": "Kurulum başarılı oldu", + "131c05252110792212e3e3666a351154": "SSL ile ilgili yapılandırma, sonraki satırdaki yorumlanmış 404 kurallarını SİLMEYİN veya DEĞİŞTİRMEYİN", + "4ba7e24ac1607ab761c124ca7352ad08": "Hata sayfası yapılandırması, yorumlanmasına, silinmesine veya değiştirilmesine izin verilir", + "31bb30ca4135945adbe0c2daa9545b39": "PHP referans yapılandırması, yorumlanmasına, silinmesine veya değiştirilmesine izin verilir", + "f9da3e5ae75ce0ae39884ae2ea295a66": "URL yeniden yazma kuralı referansı, herhangi bir değişiklik panel tarafından ayarlanan yeniden yazma kurallarını geçersiz kılar", + "73e1f7d487ad73d55414fe26ea11cbf0": "[sitePath] parametresi belirtilmedi", + "6aabca3a3e1c79bd5837a1ddae95fe70": "Oluşturulurken bir hata oluştu, lütfen tekrar deneyin.", + "256c9a85375f57f2dc9f6f318c6578f1": "Web sitesi [ {} ] başarıyla oluşturuldu", + "481df7dbcd4c0317088bde8c913d5893": "Lütfen web sitesi yolunu doldurun", + "b1b2484c013c646d7f41d6b2f495b6ef": "Web sitesi yolu kök dizin [/] olamaz", + "1c3bff99564f1370a5b1bf6c0773f8c4": "Lütfen [E-posta] formatının doğru olup olmadığını kontrol edin", + "af9091566e669f016edf16ba97464cbe": "Parola çok zayıf, kullanmak istediğinizden eminseniz, lütfen [ Zayıf parolalara izin ver ] seçeneğini işaretleyin", + "b0dbad478d4f07c38aec8f440ed98b66": "Lütfen önce Mysql ve PHP'yi kurun!", + "46491fef7553177ef58a55b2db917072": "Lütfen web sitesi kök dizinini sistem ana dizinine ayarlamayın:
{}", + "59d5fef323e89ded50ed6036848a97f3": "webname parametresinin formatı yanlış, ayrıştırılabilir bir JSON dizesi olmalıdır", + "078a3d3e263be2851ddfd9fa059d098f": "Port aralığı yanlış! 100-65535 arasında olmalıdır", + "50370024fdd22dc69099a46d011b20e2": "PHP sürümü boş olamaz", + "44bd68c6703adf65ff21c63e9a876aa1": "Birincil alan adı formatı yanlış", + "23eded6de9c06451f67ecb7ed3a8c95b": "Birincil alan adı joker DNS kaydı olamaz", + "f54249d2613e48be05837ec9cd615a5f": "Eklemeye çalıştığınız site zaten mevcut!", + "b537e2d1946d559d3de4fb3c045d290f": "Eklemeye çalıştığınız alan adı zaten mevcut!", + "f91c641aef33cf8ef4a29bc5d3a7193a": "Ekleme başarısız oldu, yapılandırma yazma HATASI!", + "c3c7869d22051eaa78a831834a398351": "Silinirken bir hata oluştu, lütfen tekrar deneyin.", + "e2d272e229674e4c6765fab24a323604": "Web sitesi [{}] başarıyla silindi", + "aa5f20e061736fe68a915163e7e6d122": "Belirtilen site mevcut DEĞİL", + "f11e72daff0ce484f4c401bd0bd28ae5": "Site başarıyla silindi!", + "c57d58c6bbd34144325871d75b42a577": "Lütfen ana bilgisayar alan adını girin", + "5c7b7c2f6ed78eefdd77aaa3dddde61a": "Alan adı boş olamaz!", + "ef446d50df1605a582f9b44b57327536": "Alan adı formatı yanlış!", + "68ae44808f90043dee02358ee768bf6e": "Alan adı formatı geçersiz!", + "1628c2a26ab6d1211b435f85782f8acc": "Belirtilen alan adı web sitesi [{}] tarafından bağlandı", + "925dc658ddf0f69509632848bcd39577": "Belirtilen alan adı web sitesinin bir alt dizini [{}] tarafından bağlandı!", + "7b02cf82181f516626a36b86c6a686f5": "Site başarıyla eklendi!", + "9b3c4205f2f408790c9c1c5da53c3bfb": "PHP sürümü alınamadı!", + "abc3db87d5608cc9559556468a696a35": "Lütfen bir alan adı seçin", + "7807e17f2bf49fb802bba1a04822ea16": "Lütfen bir port seçin", + "e5925c3a126a66c0565df6d8ef49550e": "Son alan adı silinemez!", + "17088ffed1e537b917a6ecc9dc957159": "Özel Anahtar HATASI, lütfen kontrol edin!", + "26924bd958e212f07c31b6ffca9cbf8c": "Sertifika HATASI, lütfen kontrol edin!", + "44e2c1c3cfd8d248d7c9190a8f07c0ee": "Sertifika alınamadı", + "fc0d039d9dcf3905ae8032c9cb33f475": "HATA:
{}", + "ddc2be35a5ed0bf09a88139c4ad10b4a": "Orijinal yolla aynı, değiştirmeye gerek yok!", + "84a8921b25f505d0d2077aeb5db4bc16": "Statik", + "ad74aa2854e988c3157f92e0120bb19e": "Apache2.2 MultiPHP'yi desteklemiyor!,{}", + "4018ce634a10d352867f04962f107c14": "Ayarlanırken bir hata oluştu, lütfen tekrar deneyin.", + "f1bef4fd5183ae83a5896c32a3d5e81d": "Özel PHP yapılandırması yalnızca Nginx'i destekler", + "879e0d022ff268704f93a7e2b504c224": "Sürümü özelleştirirken PHP bağlantı yapılandırması boş olamaz!", + "73d6e709b568b43405052cec999798c5": "PHP bağlantı yapılandırması formatı yanlış, lütfen örneğe bakın!", + "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "Belirtilen unix soketi [{}] mevcut değil!", + "751ac8fd72a0acd79772370efcae9c89": "[{}]'a bağlanılamıyor, lütfen makinenin hedef sunucuya bağlanıp bağlanamadığını kontrol edin", + "3cb7d414f8ae92b2b29057f91346f7dc": "Kurulum başarısız oldu, web sitesi yapılandırma dosyasında enable-php-xx ile ilgili yapılandırma öğeleri bulunamadı!", + "c7a6a892c6cdfc9b0fedefb0a1d2083a": "İstenen dizin mevcut değil", + "4622561ceaaecb6ef7dd51e65c9f4ec5": "Temel dizin kapatıldı!", + "e4ec1f40794bdf92e7261e6e0c51895a": "Temel dizin açıldı!", + "eeddf79f68ffe029ed83fddcba46b35f": "Eski proxy", + "1592678472ea1b601fd74abff47c56b1": "Hedef URL alınamıyor", + "18edd294853d381dbe0d612ab58bc123": "Yapılandırma dosyasında bir hata tespit edildi. Lütfen devam etmeden önce sorunu çözün", + "8b5899be4df3aedb03c6fbad9055ed1c": "Veritabanı adı 40 karakterden fazla olamaz!", + "111376d92c49c1a6c1522a2ef1dac23c": "Belirtilen ters proxy adı veya proxy klasörü zaten mevcut", + "09a988aa2e3185fce9fa8f4e8710b862": "Hem dizin hem de genel proxy'ler ayarlanamaz", + "012a8e497feddccb8e4a47aa5e2dc156": "Lütfen numara girin", + "90da7d2de9aa12ec32ee04172ca0d2d3": "Gönderilen Alan adı format hatası :", + "440544138d3ed8a2229792c88bad3bd8": "Hedef URL'ye erişilemiyor", + "faf2457853593b3296699c4adacc7825": "Lütfen değiştirilecek içeriği girin", + "748e5ad33460a17cf26c8024bb0a1620": "Değiştirilecek içerik, değiştirilen içerikle aynı olamaz", + "195d5db9e1559f06348715bc3a822036": "Yeniden yazma/nginx ana yapılandırma/vhost dosyasında zaten genel bir ters proxy var", + "cc38d47ec9ac62ffc67a5db9c08d5d52": "Hedef URL boş olamaz", + "fb79afbbe0688565b7894b644dfd798d": "Hedef URL [http:// veya https://] olamaz, lütfen tam URL'yi girin, örneğin: https://aapanel.com", + "29c9da826ae868c8c6444328f48bcf40": "Tek tıkla dağıtım kullanan Wordpress siteleri için ters proxy'ler şu anda mevcut değil", + "a59dfc3ae22fd96d46011503a4f40744": "Proxy askıya alındı", + "118f77feff598376a776af9b8e738efc": "Başarıyla kaydedildi", + "078bb5f960587121c7cd606ddba5ad58": "Lütfen düzenlemeden önce ters proxy'yi etkinleştirin!", + "fe7185cec796e18d58f8e84dc4da946f": "Şu anda yalnızca Nginx desteklenmektedir", + "222a267cc5778206b253be35ee3ddab5": "Mevcut", + "38441d4a89765279852ca2830aa89c83": "Yeni URL yeniden yazma kuralı kaydedildi!", + "c27a45bf16475a157ca1014cf886bb56": "Lütfen bir not girin", + "9a962a24e9b7b07800d6b7c7efd86f30": "Kullanıcı adı veya parola 3 basamaktan az olamaz!", + "7eb904262649f9b2e4ba52e2bba9db71": "Parola formatı yanlış, lütfen ilk iki basamak için özel semboller kullanmayın!", + "492c7f01035f1cf9b88756f897f02b87": "HATA, birincil alan adı IP adresi olamaz!", + "0a2b8c4a98495f6af19be9c1c342844e": "Başarılı, lütfen JSP programını test edin!", + "49281f9c7680652b1d110625da5c8cca": "Tomcat eşlemesi kapatıldı!", + "ec3b07b78fd4f3307c84858957ddbd0f": "Site çalışma yolu alınamadı", + "02e602e968050352febfc4ddcae332f0": "OpenLiteSpeed varsayılan site ayarını desteklemiyor", + "362538d60f495840284c667e67831b16": "Dizini tara", + "4f137439eb93e6c752873c8af2d3d1cb": "Tarama Görevi kuyrukta!", + "613a6375944c3035efe735e87766fbbd": "Güncelleme Başarılı!", + "6177805463a6a4f28e61bb3435bee13b": "Başarıyla ayarlandı, site süresi dolduğunda otomatik olarak duracak!", + "1a69486f70b6baf749e6e1c4d5fcf689": "URL soneki boş olamaz!", + "2f858201b6da6a5419c5af8fd26f815c": "Hırsızlık önleme zinciri alan adı boş olamaz!", + "f36c15e89d61e07fb44095ae920b8fbc": "Lütfen önce hotlink'i açın!", + "70dc560b6f4af6d210c9eeb8434c571c": "Yanıt kaynakları URI yolu veya HTTP durum kodu kullanmalıdır, örneğin: /test.png veya 404", + "aa8722f512ecebf5dae454e526402508": "Lütfen önce hırsızlık önlemeyi açın!", + "bd0d7585c64988d80747a32fb0e3e15e": "Günlük boş", + "a17f5bc22553d897f6363867c0165256": "Varsayılan kategori", + "0d0d87a34e787b2f4a59d912d4d441e4": "Kategori adı boş olamaz", + "6818a5095a78431eb3c99fe022b687b0": "Kategori adı 16 harfi geçemez", + "c4f16bb3d87b92062f73954c86485f64": "En fazla 10 kategori ekleyin!", + "5fd53f59be2a3dee94df28886840b9a3": "Belirtilen kategori adı zaten mevcut!", + "1c44b4096bb88e459ddadef895bea1c2": "Belirtilen kategori mevcut DEĞİL!", + "8f52253b1f007fd14ed0f60b89593d2d": "Kategori silindi!", + "b51515085fc6ea6a07192c61e068c124": "Başarıyla değiştirildi", + "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "Bu özellik yalnızca Nginx/Apache'yi destekler", + "6678fd91bc04eb1e34e3474809387e7a": "Sorgu başarısız oldu, adres mevcut değil", + "7ac0a27b48f2931c7f294b996fe6b273": "Yapılandırma dosyası ayrıştırılamadı", + "ee3a15a26aee235ac255e37342b444bb": "Kurulum başarılı", + "79799f8c2f024685df774550ea5b427d": "Web sitesi [proxy,yönlendirme,http'den https'ye] otomatik olarak yeniden başlatılacak şekilde ayarlanmadı", + "29faf053a22c387532298233399e66f9": "Yapılandırma dosyası ayrıştırma hatası", + "6c881e76c76b1f102bcb97a8b4f682f6": "Bu web sitesi [proxy,yönlendirme,http'den https'ye] otomatik yeniden başlatmayı açtı", + "13fc1b8a101214be1a472db8de1bd8fd": "Web sitesi otomatik yeniden başlatmayı kapattı", + "1fb58c8e2967a648359d13aa22d9e493": "Site mevcut değil!", + "b0cd0c2bc5c6ce9f71127d60872209ce": "Web sitesi [{}] yeniden adlandırıldı: [{}]", + "3f96c422b7a59fe6e8bf7531c647a64c": "Belirtilen hesap mevcut değil", + "cb5e7fdc51569eedfbf3a9a0d3c819cc": "Belirtilen sipariş mevcut değil!", + "8bd32b310825307a909c682871008642": "Sipariş başarıyla silindi!", + "2b8b978f7f97a454d3be4cf4b1ea9e8a": "Sertifika okunamadı, dizin mevcut değil!", + "023d5992564106099e169c79963e8ed8": "Belirtilen sipariş için sertifika bulunamadı!", + "572097b2302e2c7fe0a3375db4e3ad9b": "Sertifika okunamadı!", + "a28e320cb6513b4ad7e9b07318173cb5": "Sertifika iptal edildi!", + "d0b3af29d4790521c7850f4955d66745": "En az bir alan adı gerekli!", + "48203f43edd25a6df396ff263a02ea45": "Doğrulama dosyası yazılamadı: {}", + "ebe9660f1426b037f25101329deed827": "Geçerli DNSAPI anahtar bilgisi bulunamadı", + "a618b4f6cda69737d20199139556d955": "Sipariş doğrulama bilgileri eksik, lütfen yeniden başvurmayı deneyin!", + "9ab9f8e94ee4cde7ab0c2f516cb12367": "Alan adı doğrulaması başarısız oldu. Lütfen tekrar başvurmayı deneyin!", + "585f0e7802a68df8899b96bc67ae11bc": "Sipariş mevcut değil!", + "a10a65f23fcb6e0ac204f2de7b5fe9f3": "CA sunucusu bağlantısı zaman aşımına uğradı, lütfen daha sonra tekrar deneyin.", + "188c4e0ff2d4cb58ecfcd2608cfeea2c": "DNS sunucusu bağlantısı başarısız oldu, lütfen anahtarın doğru olup olmadığını kontrol edin.", + "d568b4df4d83c54698fe15ad656181ed": "Yayınlama başarısız oldu, alan adı {} haftalık yeniden yayınlama sınırını aştı!", + "5ac0673b95a9e6af88bb008e24c09bf4": "CA sunucusuna bağlantı başarısız oldu, lütfen daha sonra tekrar deneyin.", + "2948ef630d1bdb0b2e7209d83f13af67": "Desteklenmeyen alan adı {}, lütfen alan adının doğru olup olmadığını kontrol edin!", + "27bad102d3dd6f86d5f6c680c8353089": "Sipariş oluşturma başarısız oldu, lütfen daha sonra tekrar deneyin!", + "1a728d28f052c9956f9d014d60c61bff": "CA sunucusu erişimi reddetti, lütfen daha sonra tekrar deneyin!", + "35390f482d893d9c9c0c0bb055e70572": "Bu alan adı için çok fazla istek var. Lütfen 3 saat sonra tekrar deneyin", + "cae6404c4aecf46684930fe2a86676a6": "Let", + "ab511534580180bb5c56aab7331d0c36": "CA, DNSSEC imzasını doğrulamak için kullanılan DNSKEY kaydını bulamıyor veya alamıyor", + "d957a97cf30dda2b8d8969c068a32eaf": "Sertifika indirilemedi: {}", + "7c1bcdcad166aaaec98c557f8c12d2cf": "Belirtilen sertifika dosyası mevcut değil!", + "22d9a8450558b9bf05b71c456bf07e4c": "Sertifika bilgileri alınamadı!", + "bab62ab47e998a0ca716266835bf8a31": "|-Sipariş oluşturuluyor..", + "6517db66d510fdaea47a55ff778a0c94": "|-Doğrulama bilgileri alınıyor..", + "655a6038ba5837b278b39e18d93adea0": "|-Alan adı doğrulanıyor..", + "2d51882843ffc29148c2ced7741663dc": "|-CSR gönderiliyor..", + "dfa86860b18fd5248e3e72415c19233c": "|-Sertifika indiriliyor..", + "7e0173b4f1e9e78c08a70a0350422af2": "Başvuru başarılı!", + "02900bf9834436584397d0e1ed6d6385": "|-Başvuru başarılı, siteye dağıtılıyor..", + "cc7bd98381615b01789afbd472cb8ed3": "Web sitesi ID'si boş olamaz!", + "decd4452e2e4872aa81049fea69a0c24": "Web sitesi kayıp, sertifika başvurusuna devam edilemiyor", + "7c3971b737ee58a9dec0e00a1df8f943": "Mevcut projenin ({}) yapılandırma dosyası değiştirildi ve ", + "4dd7615dbb05a4e001b3b5fa6d71bc16": "Web sitesi eksik ve ", + "5963b5b95c2063d2668607bac1fde358": "SITE_SSL_ERR_301", + "6c24a729c1cf9fc0159e92cb2f35f055": "Ters proxy etkinleştirilmiş siteler SSL için başvuramaz!", + "48a7613459bf65ba48bf9994a3104f2f": "Web sitesi zaten yönlendirmeyi etkinleştirdi.", + "28c497ddb0cfa97dd612d83c5efdc225": "Zorunlu HTTPS yapılandırdıktan sonra ", + "50e7b6d6602a2f42e45ee7c147824b04": "İndirme başarısız oldu. Sipariş bulunamadı.", + "d4d3f12047351f973751b65b50bf54ea": "|-Başvuru başarılı!", + "cf6c5b924aa4aede56b3e0e0373ec1f8": "Lütfen sertifika başvurusu yapılacak alan adını belirtin", + "e08c1382c834439d0fdccbc24d36ec86": "Lütfen doğrulama türünü belirtin", + "ed5c4feb5edcfbb95544d094d451921e": "Lütfen web sitesi belge kökünü belirtin", + "fb3d957c8fad98876c10db10e32c0126": "Lütfen DNSAPI belirtin", + "e3b11e6d575174fdb838e311bb404fd5": "Lütfen DNSAPI anahtarını belirtin", + "dcbd3fcb143a3101480566f5c1f07ad3": "Lütfen DNSAPI sırrını belirtin", + "1f93e148160dbf6dc586fb1b90a37758": "Sipariş dizinini belirtin", + "a33d17910b7aa3b68c4d864bede9bdf3": "sertifikayı yenile", + "976ac0dffedabc5b60bf5a009a5a4e05": "sertifikayı yenile v2", + "0810d42ec985c7c4beb6416c649c82a8": "sertifikayı yenile v3", + "6953519c64b998226d0294b961deca62": "Sertifikayı iptal et", + "1bbd31373b98ad5a6320af00b2a15ee0": "Son kullanma tarihi belirli bir süreden az olduğunda yenile", + "8fcc1d6fd24fad55d9e8fea6631886db": "Lütfen --index parametresinde iptal edilecek siparişin dizinini girin", + "7b84e677e97bd4943a6639a22c1a1704": "password parametresi boş olamaz", + "5f3160e82bc0c5278923b609841e588b": "Başarıyla açıldı", + "f288f8c23f8d03a699a49bf1fb8e7f53": "ssh seçeneği başarısız oldu", + "d3118650da719b6b0cc83230204491de": "şifreleme yöntemi yanlış", + "24513dc8c02bb021a1c944009c19215b": "Açma başarısız oldu", + "8a3140f96ba5c5df5560d0bd27aa4cd8": "Başarıyla kapatıldı", + "b0a783e3ada9e792e3ff3ca4eb477c80": "Sertifika mevcut değil!", + "fca4e47d90253577901e874737b87dc0": "Sertifika okuma hatası!", + "813595d6c41e417bea96adb1ad89043f": "Sertifika formatı hatası", + "16e6977cb4d0694335f3492ad8767370": "Sertifika bulunamadı", + "b267d8a6cbf23d69056263e194742c06": "Sertifika geçersiz", + "f8ad04059d0821e2ece2ed287bb3cd13": "Sertifika bilgisi format hatası", + "a441b2686419ee07dac67ba6bbf3ddf5": "db yazma hatası", + "34c7694451633cb615e98b06d040c5c7": "db sorgu hatası:", + "ba709b27ba6099126b4162a916a20174": "giriş yapılmadı, bu yüzden", + "ae01e57647be41f3c1e2a0e49dae3de8": "bulut verisi alınamadı!", + "8d1747726b316e3a1063e5db9fe65864": "bulut alınamadı!", + "ff34f52bf8f702f83843e0d8f3e6bfac": "parametreler yanlış", + "41309f5b21613cfea3728a55036f9970": "giriş yapılmadı, bu nedenle buluta yüklenemiyor!", + "6e4a26963219701ba8e062a1255fe089": "Belirtilen sertifika yok.", + "2c7d38ab0f7a91f5474efc897eaf4b2a": "Yerel dosya silme başarılı. Ancak bulut dosyası silme başarısız.", + "501ffa672acb20c4764563d6e839879b": "Buluta bağlanılamadı. Buluttaki veriler silinemiyor.", + "a810cdf921c5b92a3f6d29667ec78ffc": "silme başarılı", + "df569fbc92d17644e83b44541596633f": "Buluta bağlanılamadı.", + "3765f17d36dbbf2ce3f42263140bb3f9": "Başarıyla yüklendi!", + "0c2739999b5107b5e0ec1daba5f781a4": "Dosya mevcut değil!", + "7060f57ff9e237a85b15eef45647d061": "Dosya adı 256 bayttan fazla içeriyor", + "38435dd5a615624cc69531abfbd703fd": "Dosya adında özel karakterler bulunamaz!", + "755a84ac806ba86d4c48936dc66e3fef": "Sistem belge köküne dosya yüklenemez!", + "a5c484db60a79c6813a17bc3326cba11": "Yanlış parametre", + "e9fe2f4360929409c22f85b1648f384c": "Yeterli disk alanı yok", + "3f619d1715a6655f2005cfc5b8c68772": "Başarıyla yüklendi!", + "e43d9157935634a15059bd1bf18415dc": "Kurtarma başarısız oldu!", + "0e20e16a4febfeda715769b902a59334": "Bu bir dizin değil", + "6036dced70bfdbbd88295453cbde9bfa": "Dosya oluşturma başarısız oldu! Disk dolu! lütfen önce alanı temizleyin!", + "30d24a9b6b261e0750bb661b31987b5d": "Güvenlik riskleri olabileceğinden dosyanın sonunda [ . ] kullanılması önerilmez", + "be0d6b0c39cab719b1c61c8015434a33": "Dosya adları özel karakterler İÇEREMEZ!", + "b9e117b56b51b2d3018081eacee6b3db": "İstenen dosya mevcut!", + "807e31c87b236897fa1fef873d6f6e6c": "Dosya başarıyla oluşturuldu!", + "2ad238d651bf0bd82f0ae2956282be25": "Dosya oluşturulamadı!", + "88c49b5495c38de4f1c7bb7faddc87ef": "Belirtilen sembolik bağlantı dosyası adı tam yolu içermelidir (tam yol)", + "167ef22f59be6706a317a2f02e27e656": "Belirtilen sembolik bağlantı dosyası adı zaten mevcut", + "5c97229e5cb4adbe5089c8b1ddd4d6b2": "Bağlantı dosyası adı geçersiz!", + "69908f8298ea9cf873cc85644efdbad6": "Sembolik bağlantı dosyası oluşturma başarısız oldu", + "b9fafba1d56fff09f8dffc1d53d23106": "Sembolik bağlantı dosyası başarıyla oluşturuldu", + "b40170992801cb3d6930f5649d1dfe4f": "Güvenlik riskleri olabileceğinden dizinin sonunda [ . ] kullanılması önerilmez", + "0253f56ac4bf1e2bab05844f11588b3a": "Dizin adları özel karakterler içeremez!", + "40a0060d11d54723173dfe1fe62115a1": "İstenen dizin mevcut!", + "6ee1e36c05e03fa9fffd8679802b9cd4": "Dizin başarıyla oluşturuldu!", + "16ae03054adcefefefea0a445bb4bdc0": "Dizin oluşturulamadı!", + "d6ed4f1a1cbc9a3c09c4cab0587c9675": "Bu dizini düzenlemek hizmet istisnalarına neden olabilir!", + "e4db5a6f17eff85861e5d13d5cb29538": "Boş olmayan dizin silinemez!", + "18d4019ccaddd6709b38fa3a0a6f36bd": "Dizin geri dönüşüm kutusuna taşındı!", + "7f01a8955f1313d39d7305c5a8f369d3": "Dizin başarıyla silindi!", + "50f496129c1f31d2c5945f7626b85b79": "Dizin silinemedi!", + "1dc8a14e9861fa32b544006590c08666": "Dosya geri dönüşüm kutusuna taşındı!", + "07cbb5e8d174369377832adc0debb2b3": "Dosya başarıyla silindi!", + "f2cbbab1d3bffc73466f6b494c0bd4f9": "Dosya silinemedi!", + "3b9f9f808c2b8cc4e2ebcbc944400e59": "Kurtarma başarılı!", + "1993c6755b58772f028e33223e43629b": "Sorunlar size sorun çıkarana kadar asla sorunlarla uğraşmayın!", + "027ef5979f72a8ad82da2a5d58ee069e": "{} geri dönüşüm kutusundan kalıcı olarak silindi!", + "62dea51f3a49420412addfc2715da183": "Geri dönüşüm kutusu boşaltıldı!", + "f5b5dc046351c258a40f25a76f4ff36c": "Geri dönüşüm kutusu özelliği kapatıldı!", + "7aed5cccfbfccf8f9c6b395993214cf6": "Geri dönüşüm kutusu özelliği açıldı!", + "2af7856d75a678be6c9483fce92fa142": "Güvenlik riskleri olabileceğinden dosyanın sonunda [.] kullanılması önerilmez", + "10863e27eb3cb8450a82141a1a2fe884": "Dosya başarıyla kopyalandı!", + "bc79eb69c067675e6c004685489ec15a": "Dosya kopyalanamadı!", + "04095d5bd6142994817541b148e646b7": "Güvenlik riskleri olabileceğinden dizinin sonunda [.] kullanılması önerilmez", + "5dbee253e0c0010801afe5aa4a75076c": "Dizin başarıyla kopyalandı!", + "fdd370a7fdd0583ab2c525f61354de40": "Dizin kopyalanamadı!", + "4d2d9fb4c5fad04a57ae0d78ff6e3cac": "Hedef dosya adı zaten mevcut!", + "6fd3281a326ae6e050a123f18c85d52b": "Anlamsız işlem", + "1c209b0ee7e706650fc8d7577558262d": "Başarıyla yeniden adlandırıldı!", + "49aa3054caf3f7113a50d7cf8e145db1": "Dosya taşındı!", + "7a33ac075e0ad5cf363f9629c3772d4f": "Dosya taşınamadı!", + "41b80398421e2b8fc213bf916b9c72ce": "Dosya formatı çevrimiçi düzenlemeyi desteklemiyor!", + "35cbcc43b11038bf4a1b07d5ac213175": "2MB'den büyük dosyalar çevrimiçi düzenlenemez!", + "717d5d580ae0c460998885cf68e4a139": "Dosya kodlaması uyumlu değil ve doğru okunamıyor!", + "e11ae7287b857365e57738fee02092d4": "Dosya açılamadı, dosya başka bir işlem tarafından meşgul olabilir!", + "c9ecd22ff27392ab09e84a9173fc2139": "[path] parametresi boş olamaz!", + "e9dc8cb01fc4c70ac2510a9ea7636d98": "3MB'den büyük dosyalar çevrimiçi düzenlenemez!", + "888c9de5fc0f1389080b1c2bfac90ee1": "Yapılandırma dosyası kaydedilemedi", + "6b7b87210440f6f1e97c96967dd1d95d": "SSL yapılandırmasında yorumlanmış 404 kuralını değiştirmeyin", + "b85e34869ba5c840bdf723cba455d12c": "404 yapılandırmasını değiştirmek için aşağıdaki yapılandırma konumunu bulun", + "c980badad6cc4c836a0c61a4373cff24": "Yapılandırma dosyası kaydedilemedi:

Zorla kaldırma komutu: rm -rf /www/server/mysql", + "ba922eb50c83147a9bc0e9f40877d986": "Kaldırma başarılı oldu", + "b860df98df6ab84521a4cef036973028": "Puanlama aralığı [1-5]", + "eb536feb2c569974c2b5cf85cae91041": "Bağlantı hatası!", + "a70188f907ee9df93a4b749109a23460": "Yazılım listesi alınamadı ({})", + "16ad37f5aafc6478f2f6d63d70554530": "Lütfen tekrar tekrar eklemeyin", + "18ea7bdb25b2a66507ffb1bb8b42fefa": "Gösterge paneli yalnızca en fazla 12 yazılım görüntüler!", + "2aa461271893ae0493789e9e8f248fdc": "Kısayol Çubuğu yalnızca en fazla 5 yazılım görüntüler!", + "98cb93d354af289a900cd9e03cee2df2": "Kurulum başarısız oldu!", + "17e4e003ade65cd7a54131d3404d2f98": "Açılmadı", + "bda730e0e5c7444ef6f4f49957ab4f39": "Ödenecek", + "24fe48030f7d3097d5882535b04c3fa8": "Süresi doldu", + "cbfcfe47e7420af71ce1666844c565a3": "Sıralama kaydedildi", + "6a20d0daaec1ce3950a321704041dc90": "Bu eklentinin şablonu YOK!", + "6f5cb320fb3a7e303403054320ad943c": "Yazılım listesi güncellendi!", + "b269cd272a31017961c245e2c84a1a2f": "Dosya indirme başarısız oldu!", + "88183b946cc5f0e8c96b2e66e1c74a7e": "Bilinmiyor", + "84f7539fe8674bb0689347dc7acd7b43": "Arşivde eklenti bilgisi bulunamadı, lütfen eklenti paketini kontrol edin!", + "affc007de5f6791707f3de155a3a642a": "Geçici dosya mevcut DEĞİL, lütfen yeniden yükleyin!", + "117f1bb083c7d556079a3c77093be5e2": "Dışa aktarma başarısız oldu, lütfen izinleri kontrol edin!", + "a8f375e795e0a130837f2a468518a413": "Uyumlu olmayan adlar yalnızca sayı, harf, alt çizgi olabilir", + "a06490b9729d0868e31d834c9bffa0bd": "Belirtilen özel derleme parametreleri mevcut değil!", + "5e71fccee12caedf853a7313ea204721": "Hata: Ad veya hizmet bilinmiyor", + "b6e3d7366f73e2c5e32717d679db6474": "Hata: Yeni bir bağlantı kurulamadı", + "cdffdb1c794cf0dd777b3941a31459e4": "Hata: Okuma zaman aşımına uğradı", + "4573823cc04a9cbf8a7bb254b762db91": "Hata: Bağlantı reddedildi", + "e3c2e426ad1b23571c48ec572ca675bf": "Hata: Uzak uç yanıt vermeden bağlantıyı kapattı", + "db3a5c61130d7ca2046f5f9d0cd08073": "Hata: {}", + "fe723570085e5cc1ecc3dfc88a46aa2d": "İndirme zaman aşımı: {}", + "0eeb116408665d50a2f2092a6c277ee6": "Kullanılabilir disk alanı yok.", + "57a43d6e8c479df3a51421eba70d5621": "Paket sağlama toplamı doğrulaması başarısız oldu.", + "c12c62dd767caf90d62356b47349d871": "Bu eklenti için ilerleme çubuğu alınamıyor.", + "8fde9a929c417549ed2f9144fa68c0d2": "Kural adı yalnızca harf, sayı ve alt çizgiden oluşabilir!", + "868a6f377594831b39e91745c7807e28": "Belirtilen kural adı mevcut değil! [ {} ]", + "5d9cf1940fae6317dd43a7f1b5ca8f36": "Belirtilen kural adı zaten mevcut! [ {} ]", + "473bc9055d76e148db4d28e7bec67295": "Kural adı 3 bayttan büyük olmalıdır", + "5b097df78b1d8c65d8b524354029f114": "Dosya soneki boş olamaz", + "496e2dfba11ca4381ef6277e6e9a62dc": "Dizin boş olamaz", + "f6039d44b29456b20f8f373155ae4973": "Kullanıcı adı", + "3544848f820b9d94a3f3871a382cf138": "Yeni şifre", + "6b1bc4e672d58d46d23502dcd78129be": "Günlük bilgilerini temizleme", + "0e900c57ee4635719ba671229ead12ff": "Görev geçmişini temizleme", + "1dfefaa079cbde4da09e89af6b49ff33": "Ağ izleme kayıtlarını temizleme", + "f59489317e210ec566cf6b6c9e3b20b9": "CPU izleme kayıtlarını temizleme", + "e0976b426e3109ee01a1182b7c04b987": "Disk izleme kayıtlarını temizleme", + "2c1eb277ff700f04b65306399784f875": "IP bilgilerini temizleme", + "4abfe31831aa15dc27ff44067b2bf0d1": "Sistem geçmişini temizleme", + "0c06c1eb5ef47b883f7cbcab9be84e97": "Panel başarıyla paketlendi. Lütfen başka bir işlem yapmak için panele giriş YAPMAYIN!", + "b60091f633dedd493b16f5548e32233d": "Panel başlatma adresi", + "b097eb5212f13c74d1c96b59f65c4dd6": "{} görev başarıyla temizlendi!", + "e82eb2921856b4230611dc1406f60a6f": "Sistem çöpü temizlendi, toplamda [{}] dosya silindi, [{}] disk alanı boşaltıldı", + "0d793de4ae05511630a2eeea9b5528d9": "|-[{}] temizlendi, [{}] dosya silindi, [{}] disk alanı boşaltıldı", + "db62071d34202efa3a0aa1a743394938": "|-Spool temizlendi, [{}] dosya silindi, [{}] disk alanı boşaltıldı", + "a1d3c6c221b8ceaaef8881e09d0a2945": "|-PHP Oturumu temizleniyor ...", + "c16f6a333c0ba871467568be496cbea0": "|-PHP oturumu temizlendi, [{}] dosya silindi, [{}] disk alanı boşaltıldı", + "5d88b58a1c0ba0dee9eeb89a8bcdda36": "|-Geçici dosyalar ve site günlükleri temizleniyor...", + "e038ca57ad9c03f40bec42908af2ccff": "|-Geçici dosyalar ve site günlükleri temizlendi, [{}] dosya silindi, [{}] disk alanı boşaltıldı", + "fa3d217e80478d3c03c437b7fc11432f": "|-HATA, kullanıcı adı 5 karakterden az olamaz", + "4cffae9f32bf898c859a5937268b9727": "|-HATA, çok basit kullanıcı adı kullanılamaz", + "fbcb6a4b1126170666b4c4102afbb43d": "|-Yeni kullanıcı adı: {}", + "cbe2d798534f872748b7cba6615596d8": "aaPanel ile özelleştirilmiş sürüm", + "ec1d9ff2578e1f231696217b2c2d15ab": "Başarısız oldu, panelin mevcut portu silinemez!", + "51708089c15820800d3dd7bd8d8cdfba": "aaPanel", + "fee066b1b93fecf9545758cf9a87c3de": "Eklenti güncelleniyor...", + "c6462fea6d27e4ecfc68ae1944051f77": "Giriş başarılı, yükleniyor...", + "c11f9218de293117d2cd58a009534167": "Tüm eklentiler 6.0 uyumlu olarak başarıyla güncellendi!", + "cc478711642936a519c27b7c388fbb50": "aaPanel CLI", + "cfef992430ab5a7b2373138d4b86425c": "Paneli yeniden başlat", + "95b8b68d1c80ca75e1ab15bf5b9a8394": "Panel portunu değiştir", + "f3013e54b467cdb2fac9a424bae963e4": "Paneli durdur", + "15ea17031cb6a968e3b9ea2b28546c53": "Panel önbelleğini temizle", + "20cdfcd210da305d900d25ec4c084184": "Giriş sınırını temizle", + "ab41db99c7941ef74c37bd97733f7707": "Paneli yeniden yükle", + "315f4fdd99e49c6a2e80a95ce82ba534": "Giriş sınırını iptal et", + "07ed88796641228c3602122cf5075fc2": "Panel parolasını değiştir", + "63d8f2a0e51e9243f91b0285e4e44667": "Alan adı bağlama sınırını iptal et", + "3913f08c2fa53f4c413cc0772f9401d1": "Panel kullanıcı adını değiştir", + "b773a80578cdc8f50d57393d6b0a3d67": "IP erişim sınırını iptal et", + "a6a23a4004f99fef13372de56433edbc": "MySQL root parolasını zorla değiştir", + "bc449263dd0183a82a3d0a03cd8f26dc": "Panel varsayılan bilgilerini görüntüle", + "975687e8a64e2c2842a34ca6d6bf8e85": "Sistem çöpünü temizle", + "84bc199f1a5ce205b0f5fc3e64ef3e95": "Lütfen komut numarasını girin:", + "954be127268a1704a7af22b23bb440e8": "İptal edildi!", + "51c6348531daaf0fb1e84fafa12b5f15": "Lütfen yeni parolayı girin: ", + "34c4edd98a45ea8a13556965a6c4f2b0": "Lütfen yeni kullanıcı adını girin (>5 karakter): ", + "219863186dddc079747a525bb7877a88": "Lütfen yeni MySQL root parolasını girin:", + "c172da334fdcac77f704fa4408dd2f16": "|-HATA, parola boş olamaz", + "a79cf67c04d379c4916dc584c9d8333f": "|-HATA, parola 8 karakterden az olamaz", + "06f5000079703a33b91564159f07770a": "|-HATA, parola özel karakterler içeremez", + "913153f9957100bcf3029e8f3d5bc5e9": "Lütfen yeni panel portunu girin: ", + "39ea14ec0df812219c450ba15230ad2d": "|-HATA, geçerli bir port girilmedi", + "bab5cb07adebbfbd938180d6862a7ce7": "|-HATA, lütfen panel portu olarak yaygın portu kullanmayın", + "00213d6b5423971311e5a47f83081a24": "|-HATA, yeni port mevcut panel portuyla aynı, değiştirmeye gerek yok", + "e1e57838b2c7e1567fb96e20bfd474e0": "|-HATA, belirtilen port zaten kullanılıyor", + "5093d954f09d473d091355fe292920a8": "|-Giriş sınırı iptal edildi", + "e0b1cb1725c8fb29d42fa69d679a73ea": "|-Alan adı sınırı iptal edildi", + "968c7b9246b5ab3d3e7659cea211a20b": "|-IP erişim sınırı iptal edildi", + "b7ad022c6ce9435c43c6760c8ba89b20": "CA yapabilir", + "5d39c57e28ab85457e4949306be619e8": "CA sunucusu bağlantısı zaman aşımına uğradı, lütfen daha sonra tekrar deneyin.", + "721eb0b3ea85b39c22f16d6dfc84bc32": "Alan adı bu DNS hizmet sağlayıcısına ait değil. Lütfen alan adının doğru doldurulduğundan emin olun.", + "b5366a9c53b455fdf8a552c205ca9021": "DNS sunucusu bağlantısı başarısız oldu. Lütfen anahtarın doğru olup olmadığını kontrol edin.", + "4de3dc0403846edfe5ff520837e2bbe5": "İmzalama başarısız oldu, alan adı tam alan adı seti: (.+): {} haftalık yinelenen yayın sayısını aştı!", + "30c0b6ae1acf6137b588473814f3330d": "İmzalama başarısız oldu, mevcut sunucu IP'si her 3 saatte 10'a kadar hesap oluşturma sınırına ulaştı..", + "797e2e43e3fc3737891adc8ab4a1655c": "Doğrulama başarısız oldu, alan adı çözümlenmedi veya çözümleme etkili olmadı.!", + "9efd01f346301888216d77d35ec156cf": "Kimlik doğrulama başarısız oldu, alan adı çözümleme hatası veya doğrulama URL'sine erişilemedi!", + "6c23a7d25119c77017d1aa04761fefe8": "CA sunucusuna bağlanılamadı, lütfen daha sonra tekrar deneyin.", + "b7a370078ae6520cde883252890195cf": "Desteklenmeyen alan adı {}, lütfen alan adının doğru olup olmadığını kontrol edin!", + "1593706a4e3794c75129c8347021f0c5": "Alan adı {} bir çözümleme kaydı bulamadı. Lütfen alan adının çözümlenip çözümlenmediğini kontrol edin.!", + "1d80008b0cc4936ab73047baf061c84e": "Alan adında {} geçerli bir TXT çözümleme kaydı bulunamazsa, lütfen TXT kaydının doğru bir şekilde ayrıştırılıp ayrıştırılmadığını kontrol edin. DNSAPI tarafından uygulanıyorsa, lütfen 10 dakika içinde tekrar deneyin.!", + "81dab277ae106f35a118916e25f3f026": "{}: {} üzerinde yanlış TXT kaydı bulundu, lütfen TXT çözümlemesinin doğru olup olmadığını kontrol edin. DNSAPI tarafından uygulanıyorsa, lütfen 10 dakika içinde tekrar deneyin.!", + "b1bc7e763e87ef08d753a0676a0d5361": "Bu alan adı bu dnspod hesabında mevcut değil. Ayrıştırma eklenemedi.!", + "43901eff07fff70732a4e1d6a732920b": "Bağlantı zaman aşımına uğradı, CA sunucusu web sitenize erişemedi!", + "7cb06b776259c13fa73d3be5577df74c": "Alan adı {} şu anda CAA kaydını doğrulamak için gereklidir. Lütfen CAA kaydını manuel olarak çözümleyin veya 1 saat sonra tekrar deneyin.!", + "09c36cbe592612c2546e60652f2d6964": "Doğrulama zaman aşımı, lütfen alan adının doğru bir şekilde çözümlenip çözümlenmediğini kontrol edin. DNS çözümlenmişse, sunucu ile Let arasındaki bağlantı", + "e10beec48a4a4b433b2fec2eaff64671": "1 saat içinde 5'ten fazla doğrulama hatası, uygulama geçici olarak yasaklandı, lütfen daha sonra tekrar deneyin!", + "239067c8e0586af7c09738e8240438fb": "Yenileme başarısız oldu ve sertifika dizini mevcut değil.", + "c7664672bf11463a4cc40c61aeca77f1": "Yenileme başarısız oldu, hesap_anahtarı eksik.", + "3f56bc50f098e641bb3d42e2d4255cbe": "SSL için başvurmaya hazır, alan adı {}", + "bd6995f087c0dacaecd470ca10539a2b": "Uygulanan alan adları listesi boş olamaz.", + "3b5e16d8f5e1b88c78e494e6601a4d01": "Başarıyla alındı, lütfen alan adını manuel olarak çözümleyin", + "cf6b24b05942cd0c3723d7a4c25e6138": "|-Sertifika kaydediliyor..", + "bbb21c1842b512148f687ea068553c85": "|-Otomatik yenileme yapılandırması ayarlanıyor..", + "c06d0b48f82d74d3c2854dabdba12d93": "|-Başvuru başarılı ve otomatik olarak web sitesine dağıtılıyor!", + "569488d54cbcce1331896e4254f63a92": "Başvuru başarılı.", + "1851141907c561e6ac67cba17e549232": "|-ACME protokolü başlatılıyor...", + "78e67927014eab1b84eb285b6057fca6": "|-Hesap kaydediliyor...", + "4896fdcb74c0e04522c8d3d89d08d569": "|-Doğrulama bilgileri alınıyor...", + "1016ed461618afd2dde9a4a709a4d080": "|-Doğrulama bilgilerini ön uca döndürün, kullanıcının alan adını manuel olarak çözümlemesini ve doğrulamayı tamamlamasını bekleyin...", + "81a3b1828b60659bc3d3c9711e66f0ba": "|-Kullanıcı doğrulama isteği gönderiyor...", + "f147fc272d665cd009e1108c5fb6993d": "|-CA'dan [{}] alan adını doğrulamasını isteme...", + "4c699430325d31db3d7b43b0a0999364": "|-CA doğrulama sonuçlarını al [{}]...", + "2b7dd2a937ababf46efb11073787664c": "|-Tüm alan adları doğrulandı ve CSR gönderiliyor...", + "1de253d3eb460e60480626694092d89e": "|-Sertifika içeriği alınıyor...", + "a0c16d2f8e2aeba9dd9a3b040861ff39": "Sertifika alımı başarısız oldu, lütfen daha sonra tekrar deneyin.", + "89edc2a5e6ccecc2bdbdd1f9536fb90a": "|-Hata: {}, başvuru sürecinden çıkıldı.", + "94417e0c15f634f59ce15128ef146686": "|-Hata: {}, başvuru sürecinden çık.", + "03268bb5fa60cf57ac7c30f1f99dab01": "|-Başvuru sürecinden çıkıldı!", + "be2d0d9f1a9d04ff22b70bd5bee9b8ef": "dns kullanarak bir sertifika istenirken bir hata oluştu", + "409bd1860bf065c68921473fc2266347": "|-Çözümleme kaydı ekleniyor, alan adı [{}], kayıt değeri [{}]...", + "8b2ee088303a8001eaedb8c62e3de7e3": "|-Çözümleme sonucunu doğrulamaya çalışın, alan adı [{}], kayıt değeri [{}]...", + "a11fba95c84fff590acd7dbdea4528e6": "|-CA'dan [{}] alan adını doğrulamasını iste...", + "676e1a4f8e4561ad55045461f3421d62": "|-CA doğrulama sonuçlarını kontrol et [{}]...", + "d60d5b998a8ef802ba7f5b5ed343e256": "|-Bir hata oluştu, tekrar deneyin [{}]", + "71087be1722815599ebecd0fd0f58b5e": "|-Sertifika içeriği alınıyor...", + "6d1e7a222bfe888debd080a117490c9d": "|-Çözümleme geçmişini temizle [{}]", + "77619ceb7742d8a8f87e52b02592d873": "İmzalama başarısız oldu, alan adınızı doğrulayamadık:

1. Alan adının ilgili siteye bağlı olup olmadığını kontrol edin.

2. Alan adının sunucuya doğru bir şekilde çözümlenip çözümlenmediğini veya çözümlemenin tam olarak etkili olup olmadığını kontrol edin.

3. Sitenizde bir ters proxy ayarlanmışsa veya bir CDN kullanıyorsanız, lütfen önce kapatın.

4. Sitenizde bir 301 yönlendirmesi varsa, lütfen önce kapatın

5. Yukarıdaki kontrollerin bir sorun olmadığını doğrularsa, lütfen DNS hizmet sağlayıcısını değiştirmeyi deneyin.

", + "4d6822ed3bd01f379f2ab4b1e68068d7": "|-Şu anda yenilenecek sertifika yok.", + "b74c00ca5fee122c49cd66ce3d91b2cf": "|-Yenileme başarısız oldu:", + "140bda69874872f8402052c613c0b3b9": "aaPanel Uyarı Test E-postası", + "76a1ec4a3fcdc304394ff14dc90f8072": "Panel iş parçacığı sayısı 1-1024 arasında olmalıdır", + "dd7e82b5fb3c67e3e41d96f22ba838fd": "Yeni panel portu", + "40624aabb99173387dd6d575759b12db": "certPem parametresi eksik!", + "37db9679113eef382992a1478f1b79ff": "privateKey parametresi eksik!", + "d2174fc17fcd785706114088b84dbbce": "Geçici giriş URL'si oluşturuldu", + "b5101eb6e685091719013d1a75756a53": "\\1", + "0bfe47819da04212a33dac83b71430e8": "\\2", + "946fb31f804cdde218dbf05d7183e94e": "MD5 tutarlı!", + "d83dadd8fcee6c014db8af454bc279fc": "Başarıyla indirildi", + "1336bbfcadd9119f86ecd48c2d9fb770": "Veritabanı bağlantısı anormal. Lütfen kök kullanıcı yetkisinin veya veritabanı yapılandırma parametrelerinin doğru olup olmadığını kontrol edin.", + "ee102508d210854b6fc7da18e598140b": "Oluşturulan parola tespiti başarısız oldu!", + "6e72fc97e2f1be35ae40ca21d6b1df38": "Bu wordpress'in veritabanı bulunamadı, bu veritabanını manuel olarak sildiğiniz için olabilir", + "6df8e9d3a4e149ff12445d981f6fc244": "Parola sıfırlama başarılı", + "f748d4e467e9f4f27540b6f5ce5b1ef8": "Bu özellik şu anda yalnızca Nginx'i desteklemektedir", + "9747bb4f34180afd2f9a681397b269fb": "Başarıyla temizlendi!", + "015d337f0646fe4b8a89b30041436e7f": "Başarıyla güncellendi!", + "321b336d92b3e894060637528499dcf9": "Dağıtım başarılı oldu!", + "1850193ca4b37a25ee94db903eddc16f": "Dağıtım başarısız oldu!", + "b390405514d6291f511c9f3a4fb31249": "Site ID'si sayısal olmalıdır", + "e650b17a0b833e3bcdd8e859b37ce94e": "Bu veritabanı bulunamadı!", + "a0adaeeb3642584bd931c757b6f71d78": "PHP FPM optimizasyonu başarılı oldu", + "f11ab236591dc778c39c9429e141dba2": "Mysql optimizasyonu başarılı oldu", + "d145648d4281cb3266714c5986bcab8b": "Nginx FastCgi önbellek yapılandırması zaten mevcut", + "9c373c2796e866dc590f9dc7c80609da": "Nginx FastCgi yapılandırma hatası!", + "2750e686fcc97deec0122789a059edbd": "Nginx FastCgi önbellek yapılandırması tamamlandı", + "615681ddc1b0efb9f6d434adc1451bb7": "Nginx init FastCgi önbellek yapılandırması zaten mevcut", + "a61c53dff88925e428f2a295b18ac807": "Nginx init FastCgi yapılandırma hatası!", + "28b386f7ab5957184b60f47c0e540d68": "Nginx init FastCgi önbellek yapılandırması tamamlandı", + "b7082bd55a134bb3a142570572e1c469": "Web sitesi yapılandırmasında FastCgi yapılandırması mevcut değil", + "c0ff8a4b4b8f68c4ba7df88588291590": "Web sitesi yapılandırmasında FastCgi yapılandırması zaten mevcut", + "e3a6621c5ea036c8f82d3f2d343f1bc8": "Web sitesi FastCgi yapılandırma hatası!", + "4c87778ab71a4e47170ccafd6edb4922": "Web sitesi FastCgi yapılandırması tamamlandı", + "90d0982f5d024da53b21f69d3f0c8cbb": "Veritabanı mevcut DEĞİL!", + "b376175f0c97d2ab7c37e44ec3b3a1b9": "mysql5.1 desteklenmiyor!", + "0161305479129bbe47bb020605a15d40": "Kurulum başarılı!", + "5c9b599b99f7a169b9cd25f7045eaac5": "Senkronizasyon başarılı!", + "b6601359f1ae1067d4c4d271b7407639": "senkronizasyon başarılı1!", + "10a1984f6c5b935c5d8c7d4b4345e1e5": "senkronizasyon başarılı!", + "86da84e8e3aacf73ee745caee5904268": "senkronizasyon başarısız!", + "8ed30fe61ac59c9e1cb4a75d9a48d477": "Başarıyla oluşturuldu!", + "330e51da1228a070540f82eb8e78155c": "Başarıyla kuruldu!", + "7ac73ef676faaa8a5f8e3924b4d151e3": "Kullanıcı adı veya parola 3 karakterden az olamaz", + "88d8a4565feba5ad270c00e85564b96d": "OpenLiteSpeed şu anda desteklenmiyor", + "c1f8cf125da0d6db1c4e0d09033c9ddd": "Lütfen bir hesap veya parola girin", + "bd7fb7b4280616cbe5de49eb1ee8cc3a": "Lütfen korunacak dizini girin", + "8c48114518721e3966cd4553a0cee705": "Lütfen Adı girin", + "dd65d82f6868cfa127f86e5658674829": "Site parola koruması ayarlandı, lütfen iptal edip tekrar ayarlayın. Site dizini --> Parola erişimi", + "1cc6b0e84b90d0ca0b863fccc0f33b36": "Dizin korumalı", + "b7526fc6f8b21e71ea1e290a982df4c9": "Başarıyla oluşturuldu", + "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2 MultiPHP'yi desteklemiyor!", + "69be778c38b9edc0ab3040c478c39370": "HATA: %s
,<,\\\\,", + "f0f290884251850f0d9fa6afc91d39c1": "Alan adı {} hedef alan adıyla aynı, lütfen seçimini kaldırın", + "ff1251600d8019bbf4280cafc534a39c": "{}, hedef URL yönlendirilen yolla aynı", + "664d009c794ec236879112599b14a697": "Lütfen nereye yönlendirmeniz gerektiğini seçin", + "e63cd7427eff8a5cb737dfd1118f11ff": "Web sitesine erişilemiyor, lütfen web sitesinin düzgün çalışıp çalışmadığını kontrol edin", + "2f0e4710a58107860d6332f0d0192ba9": "web sunucusu kurulu değil veya bilinmeyen web sunucusu", + "79ec80b46087125542314cc116850dd4": "404 yönlendirmesi başarıyla ayarlandı", + "f1af189cd525a4d5180b8ccdc305a926": "%s
Lütfen SSH'a girin ve komutu çalıştırın: pip install mysql-python", + "ea8dca4dbb80a367725ec532356d4ad1": "Veritabanına bağlanırken HATA oluştu, lütfen veritabanı durumunu kontrol edin!", + "da422f411f10ca19fbfc0c49d7b27279": "MySQL root veya kullanıcı şifresi yanlış, lütfen sıfırlamayı deneyin!", + "99e3ce74a83862e58ec4ef7c7e141aae": "Veritabanı kullanıcısı mevcut DEĞİL!", + "a6c2bafea90fd4f58496b7de0c879daa": "İkincil veritabanı silinemedi, veri dizini mevcut değil!", + "c5352c3364b49f09f07e517d6f5e2a93": "Yürütme başarısız oldu, otomatik onarım denendi, lütfen daha sonra tekrar deneyin!", + "ced1ff377b05e3ba5ae9837ac8c05b80": "Veritabanı [{}] mevcut değil!", + "c38111d1a26efef2f1d89b0dfbef1ee7": "Veritabanı [{}] bağlantısı başarısız oldu", + "24a92be5bb3acba016a9274b9fb19c02": "Silme başarısız, veritabanına bağlanılamadı!", + "d10533dec09d380264317010ec3e5af8": "Veritabanı verisi mevcut değil!", + "db548c645b7e4e30814165cd703be4cc": "Veritabanı verileri geri dönüşüm kutusuna taşınamadı!", + "06e6d1c8954814a2b29d4b4372b81b59": "Veritabanı geri dönüşüm kutusuna taşındı!", + "c54a0be87c240156a0403ba306527fa7": "Bu veritabanı için Geri Dönüşüm Kutusu mevcut değil!", + "3709ae738cf2d6d0c179d816c02c66ae": "Mevcut veritabanında aynı ada sahip bir veritabanı var. Veri güvenliğini sağlamak için kurtarma durduruldu!", + "2fe4287f5ec52dd09118ba4d6a42747b": "Veritabanı kurtarıldı!", + "1381dce91057a208e5a3e202526fbf6e": "Veri kurtarma başarısız oldu!", + "0f6b8bb328918f160baf00077eb21846": "Root şifresi boş olamaz", + "e6271141086fae7863bfe1d5b6ac3e24": "Veritabanı şifresi özel karakterler içeremez!", + "5ed48eedb205aa687178500c75228409": "Root şifresi başarıyla değiştirildi!", + "0c18dde1f9edfcff23eb2c2ec06673a2": "Uzak veritabanının root şifresi değiştirilemez", + "5acf42ae8ac3a8558964691403e32ead": "Değiştirme başarısız, veritabanı kullanıcısı mevcut değil!", + "10b75740108b26c220eb7e9bdfe18182": "Veritabanı yapılandırma dosyası kontrol edilemedi, lütfen MySQL yapılandırma dosyasının [/etc/my.cnf] var olup olmadığını kontrol edin", + "98925ed54b314b48c7584b73affb9556": "Veritabanı şifresi boş olamaz", + "4d15b1b40d88837aa34b5fd3c5cf1cce": "Desteklenmeyen veritabanı türü", + "39120f2e6a6a039741500e300f1dfe5f": "Yedekleme başarısız oldu!", + "d30de818714c05511e9bcf3333bcc664": "VERİTABANI_GİRİŞ_HATASI", + "12c37754d1604dc1b9154eee1f460efe": "Senkronizasyon başarılı", + "85b08b086888f8ee2680ddd3398f3574": "Senkronizasyon başarısız", + "e9ca862378b02ba5fea97e3a6f9fdd5e": "Test Veritabanı", + "5c846631ce72048c89ced433e4906107": "IP adresi boş olamaz!", + "712d5c60bf965a53ad98f51a18328fb3": "Veri dizini uzunluğu 32 karakteri geçemez", + "b6c2b300fce65a2f92364862af7f0358": "Veritabanı yolunda özel semboller bulunamaz", + "8dfd382b72c921093f5a3301b74def8e": "Mevcut depolama diziniyle aynı, dosya taşınamaz!", + "cb458646a9e62deb6d7989de0029f17a": "Veritabanı taşındı!", + "cfcd208495d565ef66e7dff9f98764da": "0", + "a030c44033df4fd3ed1e860220df8d65": "Lütfen ikili günlüğü kapatmadan önce MySQL ana-ikincil çoğaltma eklentisini kaldırın! !", + "22875aa10a21e1f51ae93cd2ee20fa07": "innodb_log_buffer_size 8MB'den az olamaz", + "c7846dcb854a38c1e2e62793d648c0a7": "MySQL şifresi HATALI!", + "8435eeb739684eaee648c5ddb368543a": "Binlog etkin değil veya binlog dosyası mevcut değil!", + "b1dd73e742e604bdbb83829a41c6846a": "MySQL durumu anormal!", + "c5c74be29ca306d24bddd4f6031d0220": "Parametreler eksik! gün", + "8bfe471aeee92b5cfc257706f3667e80": "Veri güvenliğini sağlamak için son binlog'lar silinemez!", + "2e3b42799f015adb46c85d60b8b1d7bb": "Temizleme tamamlandı!", + "048b0b74236019df8c9f2c0e9470765f": "Veritabanları alınamadı", + "34e30525f59e7e2202d51d1314c119aa": "Başarıyla onarıldı!", + "9133beb60bf19699376626515071105e": "Onarım başarısız oldu!", + "ee3025fb775c175b755f78732269dfc4": "Başarıyla optimize edildi!", + "84876979c316886c9143e5b895476405": "Optimizasyon başarısız oldu veya zaten optimize edilmiş", + "b263d2d0b9a2fe2cb5ea3c37240e7fe7": "Başarıyla değiştirildi", + "d72873c28781d7d42a8a50e344a38c65": "Değiştirme başarısız oldu", + "5a513bca80ba9e849cd64e6df029b53a": "Token bulunamadı", + "beb887915b2334d0bcb0f23910ee03fa": "{} e-posta adresi için abonelik iptali başarılı", + "ced5be071465948d917518318181e530": "İşlem başarısız, Token süresi dolmuş", + "ed0b8b7de7d6124343c2c12f29c84a2d": "İşlem başarısız, Geçersiz token", + "2759543b1abc5021bf03258b0032b6fb": "E-posta bulunamadı", + "238865a1f3c33fae77a59ce42a641346": "Lütfen bilgileri eksiksiz doldurun", + "9bd45853e9c7cca825b227f1472901c8": "Not adı 7 karakteri geçemez", + "bdd1b7bb74543fb0fae1e75f372551d8": "Ekleme başarısız, lütfen URL'nin doğru olup olmadığını kontrol edin", + "1cb8f68ece43505dde623d0e297426ac": "Bildirim başarıyla ayarlandı", + "557738e2e8b82bbb847ab9ecc6d83c8a": "DingTalk bilgileri yanlış yapılandırılmış.", + "3781473f4af411ebb3610977e7275a3d": "DingTalk yapılandırma hatası, lütfen DingTalk robotunu yeniden yapılandırın.", + "94418c3f275f6e8bca8e35751495f370": "Feishu bilgileri doğru yapılandırılmamış.", + "16ff838f760194a432da12e9bb4895d9": "Gönderme başarısız, lütfen gönderen yapılandırmasının veya alıcı bilgilerinin doğru olup olmadığını kontrol edin.", + "203b93a974c7142ca4b203443af817d9": "E-posta bilgileri doğru yapılandırılmamış.", + "8b42e24f005c452259add632215a77a8": "Güvenlik girişi karmaşıklığı yeterli değil
1, uzunluk 9'dan az olmamalıdır
2, İngilizce harf + rakam kombinasyonu olmalıdır.", + "9ad1940cfc7c1786a62bb3d784420413": "işlem başarılı!", + "14e1e77b50aaf60272775c43894560ad": "Telegram bilgileri yanlış yapılandırılmış.", + "39ddfbf65700efc9a7d16b22ebb867f3": "Telegram yapılandırma hatası, lütfen robotu yeniden yapılandırın.", + "691e87b47c012051a2e82b3c87a829be": "gönderim tamamlandı, gönderme sonucu: Başarılı.", + "c13967b1cbadeb9e2138223c0ed9fa0d": "gönderim tamamlandı, gönderme sonucu: Başarısız.", + "ed702c2212ce3c1acf4b5435100b44c2": "Bilgiler doğru yapılandırılmamış.", + "b1ffdb005a4c842221dd8267c47de40a": "Bildirimler kapatılmış, lütfen açıp tekrar deneyin.", + "75983b18d2ecbb82d71afea42138a28b": "Kullanıcı bağlama bilgileri alınamadı", + "f9d875367d71359c197b5fe0894cdfa8": "Bulut bağlantısı başarısız oldu, lütfen ağı kontrol edin", + "4ad85d46374d522bcd3bf2eff2cf2600": "Kullanıcı bilgisi alınamadı", + "2f9fc94872130dd0fb976fc6b0b96514": "WeChat mesaj gönderimi başarısız oldu. --> {}", + "0b27e119bbc4a725cbf863dfd52dc473": "tanımsız fonksiyon_adı", + "a969a46fc07219c039a985f8f7b61cf6": "yanlış parametreler, tanımsız fonksiyon adı", + "cbf8d9b9372ca5f52268a5dbbb6af5e9": "dns_id bilinmiyor", + "36150f18886cfdedefd8e0ce031ebaa6": "Yürütme başarısız oldu: {}", + "315e5172120e0508a5da1da63fe80903": "Ayar başarısız!", + "d78db61be0fee99b043b646bcb10a1cd": "ayar başarılı!", + "22af6aacc48ecde709e357b7f689fa4a": "Lütfen ayarlamak istediğiniz alan adını seçin!", + "703f48fb3880275147fb6341a601d75a": "Belirtilen DNS mevcut değil!", + "6afe3a685b340d46d1eb5e96f46d8b53": "ayar başarısız!", + "25d70741ea5481da5457bc36f316f2cd": "Ayar başarılı oldu ve {} kayıt güncellendi!", + "a0db66604e4493a5782f45097fcad859": "Bu tür zaten mevcut.", + "ffbeb35495d2bfaaf4957cc8db9cd8e6": "başarıyla eklendi!", + "e7d698b3874686530ce8eade7d46cd89": "silme başarılı", + "5ccf1f7d5db89204eee4cfdcdb0944d4": "silme başarısız", + "7c7d6bc523a6ba94346ef9419f4b93a6": "başarıyla silindi", + "838d94727e13707491b9d9c9510ba453": "Senkronizasyon başarılı.", + "33c678a30e066da93ac44a17629f3900": "tanımsız dns_türü", + "ac612c51ba24c8559bd045e2c3706011": "Modül dosyası {} mevcut değil.", + "4c9eea0839e8a2516ca1d34407cf0305": "DNS kaydı ayarlanamadı: {}", + "7bc387e9ae161a403dac4ccfebbf012e": "{} alan adı için geçerli bir DNS API anahtar bilgisi bulunamadı.", + "e5a1f5bb9e10d065f27eac8d4e8c2e8d": "DNS kaydı silinemedi: {}", + "7c89ed1def10408d3584152d2ad2eb33": "Alan adı zaten mevcut.", + "55ab92952e1b4dca79cda76843eebe99": "ekleme başarılı", + "584a4244515646b153102a8d302e8546": "Panele giriş yapılmamış, bu yüzden buluta yükleme yapılamaz!", + "347dae5469b16521e17a37cc2e3168ad": "Belirtilen sertifika yok.", + "cf25e0eebbaec98c374104d843fb31fe": "Yerel silme başarılı oldu, ", + "6e1fa7be6a999db147fe218c1e5a85ca": "Buluta bağlanılamadı. Bulut verileri silinemiyor.", + "efbfd7f8e586c8efafccb9260aec988e": "yanlış parametreler", + "1c9a090e06b2f4d3858bd2141b97133f": "İşlem hatası:", + "69d0b962baab44b9e0df62a51012996b": "Panele giriş yapılmamış ve buluta yükleme yapılamaz!", + "3e5b88adc8b76d44032b4f54f2a4dc29": "Belirtilen sertifika bilgisi yok.", + "4fa5aad0ed4116fef4e615297106ca98": "Sertifika dosyası okuma hatası", + "e61a80b8cfc84266cc6da96a589f389e": "Buluta bağlanılamadı", + "3098a079086bc6216453ef84da5b9504": "parametre yok", + "670a25b9478103f18df9dae288ea9680": "Sertifika mevcut değil!", + "ef703ece601c1e3204353eaba0cd7062": "yanlış parametre türü", + "cad878a2802e3f05a8f0b94822b123ef": "Sertifika bilgisi yok.", + "c3c25b414fbc136ec923a6d770fceedf": "Sertifika zaten mevcut.", + "a93ac12141fcab1f5ddb502e738a4494": "Başarıyla kaydedildi", + "9fe357faf3332a5040d055fc390945ad": "Sertifika bilgisi bulunamadı", + "3ff7e4a7ba896ece34407eed8e2c6489": "Sertifika Let's Encrypt tarafından düzenlenmemiş", + "44eb815db7510a33f531b5b062964bb6": "Oluşturma başarılı!", + "2e69adb0366a9a6daea00860367ac03c": "Oluşturma başarısız!", + "378dfed31bb76afb115821875780c68f": "Panele giriş yapılmamış, ", + "c68d5b6b7aa83937b4d12f88fbd1b130": "Bulut verileri alınamadı", + "49b5863032401b0857eaeaa17c0cddad": "Sertifika bilgisi bulunamadı", + "2de69e10f0a8a2c7e640011e06eaf229": "Gerekli parametreler eksik.", + "6e28b57028810b7101ed93200348e6fd": "Sertifika bilgisi bulunamadı.", + "5ff082a692a93d7aff84fffe2515e9d9": "Hata kaydı yok", + "5efde395239afdd2df0b9a32c159768f": "MySQL kurulu değil!", + "dacf49abac88060f508283464e6488b3": "Günlük dosyası mevcut değil!", + "cc04dd5405df97665d385bf9f945a1a5": "[{}] Web sitesi yolu alınamadı, lütfen IIS'de bu sitenin var olup olmadığını kontrol edin. Eğer yoksa, lütfen panelden bu siteyi silip yeniden oluşturun.", + "5043b4dd5ee84b81c695150ce7b71a1d": "Lütfen yaygın programlar için varsayılan portları kullanmayın!", + "6bfd22d9b1190dd6f3252ffc5f07843c": "Başarılı kurulum", + "9ce49cccc03f08a6f144e6b2951065ca": "kurulum başarısız oldu", + "6ec9c7ee4154392f5dcc682fc786e84b": "bilinmeyen kontrol komutu!", + "4d0e2b9d7d854b99d31322e347a8a358": "güvenlik duvarı {}", + "0024ce604e62e9ada858f0e1faf08fd5": "Girdiğiniz IP adresi", + "330683b7ebc12ef31c9b1c21b95f9d92": "Lütfen devam etmeden önce güvenlik duvarını etkinleştirin.", + "d27cddcec5e0f66a566fbcdceb5dfef6": "Başarıyla silindi!", + "271bac9db0d6fb9f971271a8f37ca6c5": "Lütfen önce dnspython modülünü kurun: btpip install dnspython", + "4fe093af429d1f1fc2198447a1025931": "Parametre hatası", + "03460a8fbae274ee5f04e0ba1fa34812": "Mevcut özellikler profesyonel sürüme özeldir", + "7f17f95382055aefa5d3e915c72a98d4": "Lütfen alan adını girin", + "35c9657c6576e84644303a7ad43318f5": "Alan adı bir IPv6 adresine çözümleniyor ve port kuralları desteklenmiyor.", + "49f648bea338734c76f49de41c91aebe": "{} alan adı çözümlemesi başarıyla eklendi", + "2edad93b0f08e091c3cc25470e8ddf6f": "Alan adı çözümlemesi yapılmamış veya çözümleme henüz etkin olmamış. Eğer çözümleme yapıldıysa, lütfen 10 dakika sonra tekrar deneyin.", + "7a3359de6c4391fe9a15eb0425846fd8": "{} alan adı zaten mevcut", + "4fb42cb76f14ea60b67f9bceb6c4a49e": "Tüm IP kuralları kaldırıldı.", + "0b3157eba7dd3451bc0de1c6ca480ec2": "İşlem başarılı", + "932c825a6aee54ff754f33c628cd90bc": "Bu port zaten mevcut, lütfen tekrar eklemeyin!", + "c49175dd1fdb203713f6c1476a7f91b3": "Bilinmeyen kontrol komutu!", + "2faec1f9f8cc7f8f40d521c4dd574f49": "Etkinleştir", + "8d66632de28752245beaa40b1ccc1cbf": "Port yönlendirmeyi kapat", + "2d5f7bdbdb53fff3cd55702cbdbfa8bd": "Lütfen ülke adını girin!", + "f8bacfec9ade03b0f3584356b898fca8": "Ekleme başarısız oldu", + "eac00ab48eb660db9a0929e6f036ecf2": "Bu alan zaten eklenmiş, lütfen tekrar eklemeyin!", + "805139d226669cfd0320c760cb10e87c": "Lütfen doğru alan adını girin!", + "969a6c87a281f49bd8fc2c1e43f66ec4": "işlem başarısız oldu", + "0683e26aace0f0c175199272031ce3e6": "Port boş olamaz!", + "8e7387f80c2d22c7515b38afef01b9c2": "Parametre geçiş hatası, lütfen port alanını belirtin", + "926dba790adb1d53c53941a06ccb2da7": "Port boş olamaz", + "705c5fd65ddbcaea039c3aa2f5e135ee": "Port aralıkları desteklenmiyor", + "84cd1055b1130ac448baec04de07d986": "Port sayısal olmalıdır", + "7d134add7af4d8e6fdf31cde8332da30": "Port aralığı 1-65535'tir", + "f11c2e32a42274ed9160658e259b2e58": "Yoksayma kuralı başarısız oldu, {}!", + "8c7cabcdcfe7a6ed8b0e27b04ad408e6": "Kurallar başarıyla yoksayıldı!", + "f5800cf5bc9b3d8aee2ea9222951ac93": "Yoksayma kuralı başarıyla iptal edildi!", + "85056ee18e1ac6fefa9f955da5a155e0": "Fail2ban eklentisi kurulu değil", + "dfda9d0c9d44e155e4125ebccfcbea99": "Kilit başarıyla açıldı", + "6ed05063a343a4a8c2fb6bb191f57644": "Durum normal, atlanıyor.", + "29833bee6957ec87ae7e9f81346a0929": "Hizmet kurulu değil, atlanıyor.", + "f99d5d784d98d4e59b100ffb596fbc9a": "Günde bir kez gönderilir, atlanıyor.", + "2e11d603b68f16cce28a92f1fee630d4": "Kalıcı profesyonel sürüm, atlanıyor.", + "887755b06aa757db733fcdb5c4b90d8e": "Eşik değere ulaşılmadı, atlanıyor.", + "944ec5555dd02ca9855e2aad5f31ecc3": "Süresi dolan sertifika bulunamadı, atlanıyor.", + "d7316ce06449be2b2961a61bc8b90044": "Aralığa ulaşılmadı, atlanıyor.", + "b388dbfa7884f3af33ba7551726ec631": "Panel giriş alarmı yalnızca bir alarm modunu destekler.", + "bc5339f81ff38e283bb920dfb33ca914": "Panel giriş alarmını askıya almayı desteklemez, askıya almanız gerekiyorsa lütfen doğrudan silin.", + "b5db9d7f14a728ef1b07894e6c776f4b": "SSH giriş alarmı yalnızca bir alarm modunu destekler.", + "cbcde9242de40f0cc518436d69e567f8": "SSH giriş alarmını askıya almayı desteklemez. Askıya almanız gerekiyorsa lütfen doğrudan silin.", + "f03b55547b4adc9333d232a1cb83e437": "SSL günde bir kez gönderilir, atlandı.", + "a0e74493945a50b77b66297bf41b1168": "kullanılabilir site yok.", + "c46efda9f9b8b41255ed3bc215bdb2fc": "günde bir kez gönderilir, atlanıyor.", + "76670478dc410ea9dac92449744be0f5": "Güncelleme bilgileri alınamadı.", + "5a7e11fe74ccbd5275a23cd8eea35d81": "Normal durum, atlanıyor.", + "6ca2675195e92143f625d036f2f9cf39": "Hizmet kurulu değil, atlanıyor.", + "7fa2732a0c267c57a13aeab79cc50677": "Eşik değere ulaşılmadı, atlanıyor.", + "d3c3a9bfb08603870aed3d34085f21ef": "Süresi dolmuş sertifika bulunamadı, atlanıyor.", + "e2eb774c78e2d0b8801cbea7221b555e": "Aralığa ulaşılmadı, atlanıyor.", + "f2458ad2b43110cfc09fac4b29508acf": "Yapılandırma hatası, ayarlanamıyor, lütfen şu komutu kullanarak düzeltmeyi deneyin: ", + "8f17aebb2889752cf3c60ac571167c8b": "Koruma dizini belirtilmedi", + "100f712f58657782dda9a5bc070e0248": "Parametre yanlış", + "b0186e5e273a163a78c04376a5756b1e": "Belirtilen dizin mevcut değil", + "2226683c8d89df274e2ded7e04fc4a82": "Sistem açısından kritik dizini varsayılan yedekleme dizini olarak kullanamazsınız", + "e69cc1102c087a819764e93d50ab3ef0": "Belirtilen web sitesi bulunamadı.", + "a584585f2e3445e4d2d93865bb0c7952": "Belirtilen veritabanı bulunamadı.", + "fdf95ff2f0a3298c8a83aad5255780e5": "Veritabanı [", + "35936286a74058c49c309b2a7b6bcc27": "Veritabanı kullanıcı adı geçersiz!", + "e2d70330883c9001c29e0225b6c99e9c": "Veritabanı adı geçersiz!", + "68519350e49a18c7380764a80dd6daa9": "Parametre geçiş hatası, eksik parametre {}!", + "152b651d5c0151cc3864d20d187d77fe": "Geçti!", + "bea367683a2238e537e3833d0b15622e": "Belirtilen sunucu zaten mevcut: [{}:{}]", + "0b5f04d53d3af37f88b9b46b568d1dee": "Ekleme başarısız oldu: {}", + "0667c3c8ef82f94545b286b69ef83030": "Parametre geçiş hatası, lütfen tekrar deneyin!", + "4621e9c9b573b1bc868d310934d04cac": "Belirtilen uzak sunucu mevcut değil!", + "81eef63c48701d6d256ad3e7789bd8f6": "Başarıyla silindi: {}", + "c1f0a2e54f38603c731c9625f35aaa11": "Başarıyla değiştirildi!", + "072b1fb2c5c32e99fea89190987f1511": "Düzenleme başarısız: {}", + "0267067a2f76a814e9f2c9c111fa6a2e": "MySQLdb bileşeni eksik!", + "b1b74781e4481f083f18ad6719a6b583": "Veritabanına bağlanırken HATA oluştu", + "94bce4b2a745d07c681c29af6824d435": "Veritabanı bağlantısı zaman aşımına uğradı, lütfen yapılandırmanın doğru olup olmadığını kontrol edin.", + "34fbe37d35b2a1bc1a58bdcc559be395": "MySQL şifre hatası.", + "3d28138b07e32fc589d1a654980b1c28": "Maksimum bağlantı sayısı aşıldı, lütfen daha sonra tekrar deneyin.", + "f5f1c56c404d98779a4fbe5630f7d778": "Veritabanı bağlantısı başarısız, lütfen root kullanıcısının 127.0.0.1'e erişim yetkisi olup olmadığını kontrol edin.", + "a9905dc3078535a661eb1aeb06f5a6da": "Veritabanı şifresi yanlış!", + "b99ad6bb4ca9c32cc31655c1f26ad347": "Bağlantı zaman aşımına uğradı, lütfen TCP/IP işlevini manuel olarak etkinleştirin (Başlat Menüsü->SQL 2005->Yapılandırma Araçları->2005 Ağ Yapılandırması->TCP/IP->Etkinleştir)", + "734539622328115b6a79770792621598": "Belirtilen veritabanı zaten mevcut, lütfen tekrar tekrar eklemeyin.", + "d0f9cbbc082071764bd58cb868dc86d8": "İşlem başarısız oldu, uzak veritabanı bu işlemi desteklemiyor.", + "2ff54c9774281fd464a75fac44b2bbee": "Yetersiz izinler, lütfen root kullanıcısını kullanın.", + "d4e4cbdf86adbbf8338c46fa850b0d97": "Oluşturma başarısız oldu, SQL Server GUI desteği gerektirir", + "0e50ad3c23c4eb42db81e7ea3da4848e": "Parametre geçiş hatası.", + "9c367cb765f842bfe6a0465674b8d311": "İşlem başarılı.", + "7a48d7e0ce17e4a5ad1dadbfa199e464": "Geri Yükleme Başarılı.", + "e9bc861d80a7d42ec15bcdb7e5529cda": "Geri yükleme başarısız.", + "011f5bc126ef873c518707207467b8bf": "Mongodb hizmeti henüz başlatılmadı!", + "22ccd99629b3c3d5a8533884821f4189": "Veritabanı şifresi boş olamaz veya özel karakterler içeremez!", + "c976dec7ee3b051c53f9761bd9aa73c2": "Veritabanı şifresi Çince karakterler içeremez, lütfen şifreyi değiştirin!", + "282a7d2dabc5b37dfe75dc697dbbacae": "Veritabanı türü sid, int türünde olmalıdır!", + "e1fa0193b4a126d332026f2c608681c9": "Veritabanı adı boş olamaz!", + "5c58f12f149b01b546d97b25b95c0df3": "Belirtilen veritabanı mevcut değil.", + "89f2b141f7790003d85cee94389a5899": "İçe aktarma yolu bulunamadı.", + "579cd57c80fb53784de0bd606c14891e": "Yalnızca sıkıştırılmış dosyalar içe aktarılabilir!", + "c3522356d75eaa63da51f2c2f6c9bd84": "Yedekleme araçları eksik, lütfen önce [Uygulama Mağazası] üzerinden MongoDB'yi yükleyin!", + "4143861cb7ed8d905267a8ea56ad5935": "Dosya formatı yanlış!", + "2e36f9ef630e2714cd71fe91d4e8bf15": "Şifre doğrulaması etkinleştirildi. Veritabanı yedeklendiğinde şifre boş olamaz. Lütfen bir şifre belirleyip tekrar deneyin!", + "d28fa16e1236163fbc5787469193f18f": "Veritabanı yedeği başarısız oldu, dosya mevcut değil", + "04aa3a99d1550de2a89aa408790e0234": "Yedekleme başarısız oldu, {}.", + "2a389cf13e591eb8202af139c82a762c": "Yedekleme başarıyla yürütüldü, yedekleme dosyası 1b'den küçük, lütfen yedeklemenin bütünlüğünü kontrol edin.", + "37ef1150b54080db22f4de766c00a902": "Veritabanı türü sid, int türünde olmalıdır!", + "bb372e9b5c377f89809981e38570e41b": "Mongodb hizmeti henüz başlatılmadı!", + "1a80d7a1efd89c63a3f8f33bd9b07397": "Veritabanı türü SID, bir INT gerektirir!", + "e36f515323b0caa721c681b2d378a695": "Mongodb hizmeti etkin değil!", + "c254f52cdaeb7f1a88c6bdd3e3e3c3f8": "Değiştirme başarısız, Veritabanı[", + "d9533af3481500e4eab2d71bc0d80f50": "Veritabanı şifresi boş olamaz veya özel karakterler içeremez", + "5e2ab00d16dbc00c7fc25cbade8fab26": "Belirtilen veritabanı mevcut olmadığı için değişiklik başarısız oldu.", + "e3d61b8e9ff54176be78612b4de00321": "Veritabanı için şifre erişimi etkinleştirilmemiş.", + "b949f2f31ecdc2714448b254511fb797": "Veritabanı adı özel karakterler içeremez", + "42ea48e57900c1ca39c38b7740b156e5": "Veritabanı mevcut değil!", + "ff14e82e3d1041c3fe4986830981065d": "Veritabanı şifresi boş. Önce şifreyi ayarlayın.", + "2de872b07fddc8df9c2085fa214e780b": "Yedekleme araçları eksik, lütfen önce yazılım mağazasından PGSQL yöneticisini kurun!", + "200e48e96725c9ce425d7dbf388cbb8e": "Yedekleme dosyası boyutu 2Kb'den küçük. Yedeklemenin bütünlüğünü kontrol edin.", + "894f4e4dbeef39cd673987e501f8c2ab": "sql, gz, zip dosyası seçin!", + "f5905bb1f1098b37b11d1e1787296924": "Kurtarma aracı eksik, lütfen PGSQL'i yüklemek için yazılım yönetimini kullanın!", + "ba32600a98bc2e63a7609dfd18f7a764": "Veritabanı şifresi boş olamaz.", + "e7381be5e7f44708306bc9816f83481c": "Değiştirme başarısız, belirtilen veritabanı mevcut değil.", + "7d354324037030e692b06b94f9d024c7": "PgSQL kurulu veya başlatılmamışsa, önce kurun veya başlatın", + "a877289c330ccbad75d3674c560e89d3": "Şifre 8 karakterden az olmamalıdır.", + "da3304c09f836a15a0c1ef43d28ce833": "{} dosyası mevcut değil, lütfen kurulumun tamamlandığını kontrol edin!", + "e6d4787574cefef9b9dd6b3ab549bf68": "Yönetici şifresi başarıyla değiştirildi.", + "b67d85c71006c071b58767216be65eb2": "Uzak PGSQL'e bağlanılamadı. Hatayı gidermek için aşağıdaki işlemleri gerçekleştirin:
1. Veritabanı portunun doğru olduğundan ve güvenlik duvarının erişime izin verdiğinden emin olun
2. Veritabanı hesap şifresinin doğru olup olmadığını kontrol edin
3. pg_hba.conf dosyasına bir istemci yayın kaydı eklenip eklenmediğini kontrol edin
4. postgresql.conf dosyasına listen_addresses olarak doğru sunucu IP adresini ekleyin.", + "0fbbe53688d144223b78036507d85b47": "SQLServer veritabanları sayıyla başlayamaz!", + "27cfc7c44317601d8cbdc241c928d17c": "SQLServer şifre karmaşıklığı ilkesi eşleşmiyor, 8-128 karakter arasında olmalı ve büyük harf, küçük harf, rakam, özel simgelerden herhangi 3'ünü içermelidir!", + "f06bab2dcffc83aa9e8e3be555a9e56f": "İşlem başarısız oldu. Uzak veritabanı yedeklenemez.", + "20fe68f46608aefa2c884b9390aa4cd2": "Dosya geçerli bir ZIP dosyası olmadığı için içe aktarma başarısız oldu.", + "a52ecc2f72eafcf3453f9a50ffb7d0aa": "Veritabanının şifresi [", + "df4ac7366fa4fda98e94ea68f0e40d3c": "SQL Server kurulu veya başlatılmamış. Önce kurun veya başlatın", + "935e0f201a754f406575ec14bde54a21": "sa şifresi boş olamaz veya özel simgeler içeremez", + "896543f6d67a62d4c594b28eeee3c923": "sa şifresi başarıyla değiştirildi.", + "bb0b766f654bd8338d9dabb8c57378ff": "Veritabanı oluşturma başarısız oldu. Lütfen mysql çalışma durumunu kontrol edin ve tekrar deneyin.", + "439d4d68575132c1a273fc36bbf6f72c": "{} id'li site bilgisi bulunamadı", + "bff0e83714a9073c270776c37cc64791": "Parametre hatası", + "5766c6d37d04fdab31ce8622fcf6fab6": "Kuralları içe aktarmadan önce lütfen güvenlik duvarını başlatın!", + "277467377ce35c4535ce0c9e36f4978f": "Dışa aktarılacak kural yok", + "686160d344e24c2dbcac934048f03baf": "Dosya boş olamaz", + "d9523e347c0a2971241d3ac4120a2854": "Dosya mevcut değil", + "cf36e08b3ff2cfd7bb952c062cc79f49": "Dosya içeriği anormal veya format hatası", + "b6d16a8173dd0d43f580bc6882dc5e9a": "İçe aktarma başarılı", + "67abf11af36ac64a147218d125e8418f": "Hedef adres formatı yanlış", + "d11dfae04c7fd00b48b744926f7e733b": "Kurulum başarılı oldu, aşağıdaki kural başarısız oldu: {}", + "434f027ff1a807413707c94a43c9a578": "Lütfen önce güvenlik duvarını başlatın, ardından kuralları ayarlayın!", + "7b6454aa962895f5d5147d035f91a0e2": "Hedef port boş olamaz", + "9c6da8c31a9a2d7a04756b09f01696e7": "Port {} zaten mevcut, lütfen tekrar eklemeyin", + "229ce80f45424e882fdc5274cf37f295": "Belirtilen IP adresi formatı yanlış", + "444bcb3a3fcf8389296c49467f27e1d6": "Tamam", + "6e68a14dc03d5bc90eea5ca623dd61c8": "Lütfen old_data sağlayın", + "fd643caf7884ce64697fb2a670cc3304": "Lütfen new_data sağlayın", + "4f87808ff2ae8fa99b12357b7837bc78": "Değiştirilen IP adresinin formatı yanlış", + "69be671786f62ce872f87de1ab761746": "Değişiklik başarılı", + "99404700c0746498a22a6ac82f3a78ba": "Alan adı: 【{}】 çözümlenemedi", + "91166df490bd1ced7a0aac6daebc96ca": "Hedef alan adı boş olamaz", + "af9a54527ffd3f962a61e34911f918dc": "Hedef alan adı formatı yanlış", + "7f9c4436cdf25844dcd0cd46b62c2916": "Lütfen id sağlayın", + "905d5834754a81bea63ea590793346bc": "Hedef adres {} zaten mevcut, lütfen tekrar eklemeyin", + "315208d3066fd1615ba13b698c0af371": "Hedef IP boş olamaz", + "5bd31a01422acec34ec752e0a46f9415": "Kendi IP'nizi ekleyemezsiniz", + "ba797e05926242a5135289c98dcd9d36": "Kaynak port boş olamaz", + "3ec1da1913c04a2c53dd6d6379f99d4c": "Hedef adres boş olamaz", + "efef8b005464719937a7daa96ed5b3d8": "Port yönlendirme kuralı zaten mevcut, lütfen tekrar eklemeyin", + "e6c81af465e7bdf8761e0072eb217ca6": "Mevcut sistem tarafından desteklenmiyor", + "44164f2aee5b6836802ff8142f495629": "Tarama başarısız oldu", + "7e8ca7bb5dd0e69e0cd0d0e66832e2cd": "Veritabanı oluşturma başarısız oldu. Lütfen mysql çalışma durumunu kontrol edin ve tekrar deneyin. {}", + "45f9a99535dea651b8f160f6cf23f826": "Yapılandırma dosyası okunamadı!", + "5e3b84200bea6d70f6fed1d5802a7fa0": "Sorgu başarısız oldu, adres mevcut değil", + "5fa721871e93bc4121df74ce51454519": "Eklenti etkinleştirilemedi, lütfen daha sonra tekrar deneyin.", + "9f139adb77c26c263ff2a956d66f80fe": "Eklenti devre dışı bırakılamadı, lütfen daha sonra tekrar deneyin.", + "f8e169b0ef8d58f84c71e375141852ed": "Küme oluşturulamadı", + "e35ca748f8c5a0e78731bae94fb7d68a": "Kümeler kaldırılamadı", + "468baaa7179c8b181d1de35fa00267e9": "Geçersiz küme öğesi türü", + "a01e808b2be07634b0e3714bff919ae1": "Kümeden öğeler kaldırılamadı", + "35c9b2817b191a3f60553d46b748068b": "Kümedeki öğelerin durumu değiştirilemedi", + "73b1d7767613c6300db27ade773369fa": "Wordpress uzak sitesi kaldırılamadı", + "3f8ee4f649b32e181c15c39682629844": "Kullanıcı [{}] mevcut!", + "b23886f3380c4a9500a7614474ff6bf8": "Şifre en az [{}] karakter olmalıdır", + "f20eaf62a87c2072f7c09ec70a6b90c9": "Silme hatası", + "49b236322476b6e7baf65369b4b61565": "SİLME_HATASI", + "9607dbc43fb07121ebd102497290c15b": "{} FTP kullanıcısı başarısız oldu!", + "8b73e5696a44d470ee99c274152c1b54": "Port[{}] kullanılıyor!", + "384169bf557e2785a74c6ab4c8ca0d9c": "Düzenleme hatası", + "492478fa7955b2282528aefe56d42ec4": "Profil mevcut değil!", + "71804f43c7fe50a625e9fd1f930365ce": "Buluttan alınamadı!", + "46fb7ccd0be31ec840d524d8f99f1368": "Güncelleme tamamlandı!", + "d631f73db41ac42021c522b61fba3274": "Güncellemeye gerek yok!", + "11ce17a8cf1f195a0687c00fc4201d2f": "İçe aktarma başarılı!", + "d49c4e6f0a63eb94dfb921be5d804e8b": "Site mevcut değil!", + "0b5efcfb8a290faab14ebce65ece59e7": "Tehlikeli web sitesi kök dizini!", + "d747c3e10f8c5fd5c0aec8b422883292": "Belirtilen paket mevcut değil!", + "22e806afb25ddcb6cf205be320eb2350": "Kurulum paketinde [aaPanel Otomatik Dağıtım Yapılandırma Dosyası] bulunamıyor", + "7658d0092e96ef38859c12f2a91f641f": "Şu anda dağıtım görevi yok!", + "c6fdc537935f8c3e97a442e8be9adf20": "Yüklenen klasörle aynı ada sahip bir dosya var. Lütfen kontrol edip tekrar deneyin", + "055df73dfeac55aa4ddb8b31e98d3fea": "Mevcut kullanıcının {}'e erişmek veya değiştirmek için yeterli izni yok", + "3ff13f637b9e318936f8d30f77c57c64": "Mevcut dizin salt okunurdur", + "8c7dd0d2966be0d1427bb839c94a993a": "Yükleme başarısız: {}", + "fc937a95d443a5accb3dc43dabf8a4c0": "Yetersiz disk alanı", + "dc494cbbc1dad9fe8a2d219d561840d5": "Dosya yüklenirken bir hata oluştu, lütfen geçici dosyayı [{}] silip tekrar deneyin", + "45cd3dad5e3ac153966eff8aaf30c33d": "Yüklenen dosyayla aynı ada sahip bir klasör mevcut, lütfen kontrol edip tekrar deneyin", + "eaf87474bf8e355eb84fadd0caf91f14": "Mevcut kullanıcının erişmek veya değiştirmek için yeterli izni yok", + "fe56b3a6f3a8b6a24f60a62408351b0e": "Burası Geri Dönüşüm Kutusu dizinidir, açmak için lütfen sağ üst köşedeki [Geri Dönüşüm] düğmesine basın", + "8ec1fba8a89cb67bc958d7b2424156e9": "Dosya geri dönüşüm kutusuna taşındı", + "99a091a444e6e207f60506fb4f0bdcce": "Dosya başarıyla silindi", + "5873103908815f34241636e336e1f463": "Sıkıştırma görevi mesaj kuyruğuna eklendi!", + "e57b7bae408dd226fabe86773cd6b3c3": "Toplu işlem başarılı [{}], başarısız [{}]", + "c28802f8d7f5a40cb9f17cace202e59f": "Sorgu hatası, {}", + "11c99562b6212de14ddf1dcb06ea1696": "Sırada {} görev yok", + "94f33212bde1cd76797fe4fe78b2167f": "Composer {} sürümünden {} sürümüne yükseltiliyor", + "f5484a1a111b9d70ecaafb36a7df48f6": "E-posta mevcut değil", + "59d26291d38cd716232dd08e1c6c5304": "Lütfen e-postanızı girin", + "d76fd2d8c3dffcbab0885c9bdf78fe16": "E-posta zaten mevcut", + "fec0532445dc524beeac7255c4d34ef8": "Lütfen bilgileri tamamlayın", + "ffa0dfd81ff9459785617a7a73a7d9f4": "E-posta gönderimi başarısız, lütfen SMTP şifresinin veya sunucu adreslerinin doğru olup olmadığını kontrol edin", + "ae73c4d1db318d09f4792e23f1b80584": "Veri Yok", + "7ee533d91b6b3524d4fcfcde77dc4987": "Başarıyla boşaltıldı", + "11f60f1528977a463a3ef16a8876e4f6": "Posta kutusu mevcut değil, lütfen posta kutusu listesine ekleyin", + "009654d37f429367967bd49ee47c26f2": "Lütfen e-posta başlığını doldurun", + "2ab41d39d3f12250b5dc3ae0d610caa4": "Lütfen e-posta içeriğini girin", + "0c1828ed3fbaf5eec3fb8ad0a7aa957a": "SMTP bilgileri bulunamadı, lütfen ayarlardan özel posta SMTP bilgilerini yeniden ekleyin", + "03212d3e6324204bce266e74779ab3c9": "Başarıyla gönderildi", + "494247bcb984f09ad09176c8256e64ac": "Gönderilemedi", + "6f81b0f19f4ef82bf31eeb9c20979f90": "Ekleme başarısız, lütfen URL'nin doğru olup olmadığını kontrol edin", + "3d17d5b07e5aaa72a35e60707027d352": "Yapılandırdığınız DingTalk yapılandırma bilgileri bulunamadı, lütfen ayarlardan ekleyin", + "a75863f88c3c7b7cb43989b7b406a82a": "Lütfen göndermeniz gereken verileri girin", + "5de6533189f891dc2a44ac945f53efce": "Şifre karmaşıklığı doğrulaması devre dışı bırakıldı", + "06fae24317d8f2b5ef156f11a0fba311": "Şifre karmaşıklığı doğrulaması etkinleştirildi", + "946cc3a7fae7508e3d34b4ed139ee2d8": "Şifre son kullanma tarihi doğrulaması devre dışı bırakıldı", + "f00369482ba4cd8b50446356d3fad724": "Şifre son kullanma süresi {} günden az olamaz", + "501b1c01d3b31cb34cbcad5a19ae851e": "Şifre son kullanma süresi {} günden fazla olamaz", + "db6890122bbd9e97fb8e1b117b367358": "Şifre son kullanma süresi [{}] gün olarak ayarlandı", + "486b7d3b3ca271d873ef1c9d4c0e07a7": "Şifre değiştirildi!", + "6c6b6e84490b34b36f33dcc8ae85fdc2": "Girilen şifreler uyuşmuyor, lütfen tekrar deneyin!", + "55f5bbcf01ad984ea402d50061609240": "Şifre 5 karakterden az olamaz!", + "59b39458556877d386a837773736eb2d": "Şifre en az sekiz karakter uzunluğunda olmalı ve rakamlar, büyük harfler, küçük harfler ve özel karakterlerden en az üçünün kombinasyonunu içermelidir", + "704372ffb884853d30e3b247765bb73a": "Girilen kullanıcı adları uyuşmuyor, lütfen tekrar deneyin!", + "1bea42b66bb313cab948558e2d27b4e5": "Kullanıcı adı en az 2 karakter olmalıdır", + "4772625698c6c1ed00afd0848fd2b57b": "Şifre en az 8 karakter olmalıdır", + "f0b3060a19359c64cc7674d67f00a898": "Belirtilen kullanıcı adı zaten mevcut!", + "330080a87414678839a05adf12a4bb1d": "Yeni kullanıcı oluşturulamadı!", + "c94d622c80e3f5af884fcccef35808b6": "İlk varsayılan kullanıcı silinemez!", + "e19e85e7bd5fde471d513ef747e88021": "Belirtilen kullanıcı adı mevcut değil!", + "7d435c8b5780fd83a10ee8f69abf04c4": "Kullanıcı silme başarısız oldu!", + "65e81e9b6c91bdde17fca09089852265": "Hiçbir değişiklik gönderilmedi", + "c8e9c31bced80905134de34df6f67d66": "backup_number bir tamsayı olmalıdır!", + "526d961c343986a803395eb22a3accab": "backup_number 0'dan büyük olmalıdır!", + "d944a195e19ea2a91eb143a4600a5fe6": "Panel verilerinin otomatik yedeklemesi kapatılamadı!", + "cb476d0f3d678a0f1746d6d91f8c24c2": "Panel verilerinin otomatik yedeklemesi açılamadı!", + "77c1047380de3f54df74a3e84ed5ec15": "Yetkili IP formatı yanlış ve alt ağ segmenti yazımı desteklenmiyor", + "52d7cd44ec88df37e528f140e2affcf4": "Zaman aşımı bir tamsayı olmalıdır!", + "5ad475cca538c88655b2299588b9a091": "Zaman aşımı süresi 300 saniye ile 30 gün arasında olmalıdır", + "7b66709539a01edb71eacc470ce7f4bc": "Alan adı IP adresine bağlanamaz", + "f522b971d05877c869be6f81b9eb7fe8": "Lütfen doğru Sunucu IP'sini ayarlayın", + "35e15c0be5bb51b628d96c9a520c9b01": "Port [{}] kullanılıyor!", + "716e57b0f48924438fc1209c06353fc7": "Sistemin kritik dizini, varsayılan yedekleme dizini olarak kullanılamaz", + "17ceb8d2128aa1ce5f2f51ef5b19a809": "Sistemin kritik dizini, varsayılan site dizini olarak kullanılamaz", + "e60263ac381ae4a9ad460a5c706b9b5a": "Yapılandırma kaydedildi", + "b1f79322ef609c5ad200c552dfbeba85": "Zaman aşımı süresi 300 saniyeden az olamaz", + "59bfee3685345c8facd75248b7f17a8c": "Zaman aşımı süresi 30 günden fazla olamaz", + "b1770445e55578871051298a4bca2ba8": "Anahtar dizini web sitesi oluşturmak için varsayılan dizin olarak kullanamazsınız", + "395fa878a1482de198dd9765e03cb0df": "Güvenlik Girişi 6 karakterden az olamaz!", + "7030414be42829df4fa2102738ad98f8": "Bu giriş panel tarafından kullanılıyor, lütfen başka bir giriş ayarlayın!", + "3aadff910a401b163029bd5915aea8ee": "Giriş adresi formatı yanlış, ör. /panelim", + "ac67b91773937f05690f0eed86ddc37c": "Yükleme boyutu limiti 2 MB'den az olamaz", + "f2c35784d83c39c7804be9817c498d97": "Lütfen 30 ile 86400 arasında bir değer girin!", + "10951b15ad70ad91dd672b3942e85954": "Yanlış çalışma modu", + "c277ef8831d8bcad68fafb826e050fe1": "Zaman sunucusuna bağlanılamadı!", + "7d8946452a1ad712185ad106a09d83cb": "Kaydetme gün sayısı geçersiz!", + "4218a6e9c12f1fa453fa8e5c1b00bd44": "E-posta formatı geçersiz", + "df6565d8975cca7ba4276300b9c38bdf": "SSL kapatıldı, panele erişmek için lütfen http protokolünü kullanın!", + "e99cd51a6216bc73a3e8ea8de05a54d8": "Lütfen sayfayı yenileyip tekrar deneyin!", + "74f3d2f09425457bc7a3fd34017631c9": "Hata, pyOpenSSL otomatik olarak kurulamıyor!

Lütfen manuel olarak kurmayı deneyin: pip install pyOpenSSL

", + "8e4aa3a825e526915c867d103bc88064": "SSL açıldı, panele erişmek için lütfen https protokolünü kullanın!", + "e47079f267dd01176afaa962dcd62358": "Notlar veya panel adresi mükerrer!", + "8c7a5b3c69236d00b3577be9c91a71cc": "İstenen panel bilgisi mevcut DEĞİL!", + "5b8ce0c16a86626165e93796b14d4bf6": "PHP yapılandırma dosyası okunurken hata oluştu, lütfen bu PHP sürümünü yeniden kurmayı deneyin!", + "0631278069374277ff3b2cc2949940fd": "Lütfen doğru [alan adı veya IP] girin!", + "ac40ea6dbb38e754acea879d58701424": "{} Gün", + "7a3fd8f7ddf80ae2db423aa55177d22a": "{} Gün {} Saat", + "377e7b3a05033be3164d7900c2feb2a6": "{} Saat", + "b2a09ec7e869bb555211fe7b26b5cf3e": "{} Saat {} Dakika", + "9c9a5e9d306cf687381d8f1924b43b9c": "{} Dakika", + "0656e1b2562955020afc339b3c9a1838": "PHP kurulu değil", + "375a8ffa8b733dd5f6b069de80c57d48": "PHP sürümü alınamadı!", + "2b5266cb205519f70b1bcf7e2654982a": "Belirtilen PHP sürümü yüklü değil", + "f54dcdd36a3b22d81acbd5358cb2a0b7": "BasicAuth kimlik doğrulama kullanıcı adı ve şifresi boş olamaz!", + "5dc91c307ada29366c842b16a5de6913": "Temizlendi!", + "22ad45d745e31a8dbdb6a64f94289bbb": "Anahtar mevcut değil. Lütfen açıp tekrar deneyin.", + "53ca2a75c705f11ff1096ffef2762084": "Kullanıcı adı mevcut değil. Lütfen açıp tekrar deneyin.", + "2323ea8555972da4c7321e11488c97fe": "Lütfen işlem modunu girin", + "5995c475ba8ebf9ca5a5a48623ce3df3": "QR kod verisi yok, lütfen yeniden açın", + "40e23dd18b1ba7d11eae146c3a6f0c3b": "Geçici oturum açma URL'si oluşturulamadı", + "03dbab348363a2cc86c13c7dc6be2078": "Giriş alarmı başarıyla iptal edildi.!", + "655318de73b4940df95a3a570a4d9987": "Alarm modülü kurulu değil.", + "bf5ef2bc39004caabc0c836ba6389c75": "Bu kanal yapılandırılmamış, lütfen tekrar seçin.", + "e5e7da65a17350434adc9dc9492925df": "Önce panel SSL fonksiyonunun etkinleştirilmesi gerekiyor!", + "e6be2adc545cca56a638fc1b7793ebed": "Panel iki yönlü kimlik doğrulama sertifikası kaydedildi!", + "e7cf53b84401535396c856570a5bc40f": "Panel iki yönlü kimlik doğrulama {} başarılı oldu!", + "3400b1e0bf5f54e0230a7e272698e73b": "Şablon dosyası mevcut değil.", + "c9541884ca9b19170e4d300b16e9c10b": "Kurulum başarısız, [{}] kurulu değil", + "ed39c2105eef1ae435e6a332bd0b716f": "[{}] varsayılan bildirim olarak ayarlandı.", + "0b3d1848b5648a7ac08ec7425043059b": "[{}] panel varsayılan bildirimi olarak kaldırıldı.", + "67c052db394411fdf2755100c5028f94": "Kurulum başarısız", + "c2806eed218fbfc91e0b4f37b08ce547": "[{}] modülü kurulamadı. Lütfen ağı kontrol edin.", + "4ccd9bbf79fcc60bef3a1aca5d577e85": "[{}] Modülü başarıyla kuruldu.", + "643fb3483415124df30e40a2559a02c3": "[{}] Modül kurulumu başarısız oldu.", + "92013d9cfaae3995581927729dc898b8": "[{}] Modül kaldırma işlemi başarılı", + "2eccda3dec7fa3a985668d79c718be23": "Anket gönderildi", + "692323a652529dc1bb482078ebd98fd0": "Hiçbir anket gönderilmedi", + "7a18188353d1d06b3ab9af842dd6f0f2": "Anket alınamadı", + "eb010361bab3ef9e74a27fdc883b1bd5": "sorular Parametre hatası", + "25baa40bd86bb31a5095cf5457e87f74": "Gönderilen metin çok uzun, lütfen düzenleyip yeniden gönderin (MAKS: 512)", + "1cc5a8ad869ce7dd47987b6eb278260a": "Başarıyla gönderildi", + "7e4182fc0365b28328ac2ec8896f73b1": "Kurulum başarısız! {}", + "dd1ddef2d75c7c80540db8c12270af8a": "Geçirilen parametre evrensel bir dahili nesne değil", + "93916600bce5b19586cbf51d558b5d78": "Lütfen [{}] formatının doğru olup olmadığını kontrol edin. Örneğin: {}", + "0dbd3323f74314d1cf85c7db5ac2fd1d": "Mevcut IE tarayıcı sürümü bazı özellikleri görüntülemek için çok düşük, lütfen başka bir tarayıcı kullanın. Veya Çinli bir şirket tarafından geliştirilen bir tarayıcı kullanıyorsanız, lütfen Aşırı Hız Moduna geçin!", + "47b1cbb355da8faa6415f12c96469ba1": "Arka arkaya 20 doğrulama hatası, 1 saat süreyle yasaklandı", + "efc33dbd7910fde6ce3fe364a7d43bfc": "rsyslog yapılandırma dosyası mevcut değil!\nLütfen rsyslog'un kurulu olup olmadığını veya /etc/rsyslog.conf dosyasının mevcut olup olmadığını kontrol edin!\nDebian sistemi kurulu değilse, lütfen şunu çalıştırın:apt-get install rsyslog\nCentOS sistemi için lütfen şunu çalıştırın:yum install rsyslog", + "a6fba111c7d0f418059856c4160b4d0d": "Parametre yanlış!", + "66924214c228f7eb631ac940281c7190": "Ayar başarılı", + "d55e6e0c13df775ea0eabea4f36ff8da": "Lütfen en az bir komut ve güvenlik duvarını etkinleştirin", + "322d678e45d68284d90503f36da32648": "İşlem gerçekleştirildi", + "7f6a5159defff4366792aa7c992f6f0b": "Başarıyla düzenlendi", + "01f144a7cfd324d0dab94f8aa6e29374": "Başarıyla silindi", + "26eaf477d247c668a143b415491995dd": "Mevcut IP adresiniz [{}] beyaz listede değil.", + "c26b7075352954fb3e96fbe983dbd083": "Mevcut IP adresiniz [{}] beyaz listede.", + "f9cfac18ac1fe92adcc47b139d0617a8": "Ekleme başarısız oldu", + "bf31291dfc89be9a8af12c3fa15e7e4d": "İşlem gerçekleştirildi", + "71a1c5f19c8e300d350f5f68c71e4559": "Silme başarısız oldu", + "f5fa57ce44938aa510e6cb68bd52c24b": "Kayıt dosyası yok", + "1bb87a5feb9e217c858933afdce8f4e7": "Kayıt dosyası çok büyük!", + "21290da79237752afe963ecef5d89b5a": "Tarama başarıyla başlatıldı", + "8e0e316031928c8c96c94ad6d57bd03e": "Dizin taranmadı", + "9208374e1391bb886971bad99b2380f1": "Tür uyuşmazlığı", + "580d97d0b321127650cf1901cc3524b2": "Kayıt mevcut değil", + "4943a6954b9887aa5989713fcbb2a0d1": "HATA: {} sunucusuna bağlanılamıyor, lütfen [AK/SK/Depolama] ayarlarının doğru olup olmadığını kontrol edin!", + "da10c98ffbf34b30edec9cf47d998a68": "Uygulama başarılı!", + "24380483226504475d196fdcff7a6c77": "Sunucuya bağlanılamadı! -1", + "353d91a7655b3ef5e024d07eef1888ab": "Sunucuya bağlanılamadı! -2", + "75809e3b321efe1afbdf9773494d5dd9": "{} yapılandırma dosyası bulunamadı, lütfen açmadan önce ssl port ayarlarını kapatmayı deneyin", + "f471efd0f135fbddafdce4ad1febf5bb": "Mevcut web sunucusu openlitespeed. ", + "4a32aac45fa22d0c693a646d5e265bf1": "Panel sertifikası mevcut değil. ", + "c6b59c5c3d29862a6dc85e9375094c83": "Mevcut web sunucusu yerel ve özel erişimlidir.", + "056197513cf8b469874e09b037fa5aaf": "Mevcut web sunucusu desteklenmiyor.", + "7ec0387d04c7d7c8259b497464fa3282": "phpMyAdmin zaten {}!", + "4790f238a5706fa03ed78c98efabd5f2": "Bağlama geçerli!", + "b4e82db400aed46c6a1d61b93ff20f0f": "Bağlantı hatası: {}", + "aa40ceff8d69dc0bf2a3887e2d5c778c": "Bağlantı hatası: {} {}", + "69ee350f3262c97f7e3f35cc66443942": "Paramiko modülü mevcut değil ve kurulum başarısız oluyor!", + "d580ca3289757bd32c3e11df44ccea78": "Şifre veya özel anahtar ikisi de boş olamaz: {}:{}", + "df9dc7c6d010fa7d486ab5c61159450f": "Kimlik doğrulama zaman aşımına uğradı, lütfen tekrar denemek için enter'a basın!{}", + "05d673d467b6e721ff5ee92b285e5072": "Özel anahtar doğrulaması başarısız, özel anahtar yanlış olabilir veya /etc/ssh/sshd_config yapılandırma dosyasında ssh-dss özel anahtar kimlik doğrulama türü etkinleştirilmemiş olabilir", + "cae18886e1496f99e56fe64dae2a0947": "Kimlik doğrulama başarısız, lütfen özel anahtarın doğru olup olmadığını kontrol edin: {}", + "7e850998d3cb8c4dc8b204766721e846": "Hesap veya Şifre yanlış: {}", + "dfd29171bd018b7352abb2cf085404fd": "Kullanıcı adı veya Şifre yanlış: {}", + "8a857e7b7b8835de19ffb7404445b30f": "Desteklenmeyen kimlik doğrulama türü: {}", + "8f4a5b1853e2c68682303a3ac016e97b": "İçe aktarma başarılı oldu", + "bb07cf4e0082f6181204bf785e625924": "İçe aktarma başarısız oldu", + "4e19c797e19c111b1fad1470cc2c18e3": "Dışa aktarılabilir komut yok", + "bd35e8b82c9450d88a62a318773a2244": "Dışa aktarma başarısız oldu", + "e420cebff3e23fb8eedd388024ce1839": "Hedef URL formatı yanlış {}", + "dd2b16eb608e5838d556598d479e9264": "Geri yüklemenin başlamasını bekleyin", + "e7e807310035d5b348cbf55c28df2968": "Çalışan RAM bilgisi alınamadı", + "dc2e22fb7940c00998017d342198a9e2": "Çalışan çalışma süresi bilgisi alınamadı", + "f5332a2b815ca2e09f3e658e8c81a282": "Çalışan yeniden başlatma zamanı alınamadı", + "2d052af48937c6a8916f84a9a5d2a5e1": "Çalışan tarih bilgisi alınamadı", + "6880f4164c935867cecf3a89e8ac01ce": "Çalışan zaman detayı alınamadı", + "a3589163c43210f6d8f52f6a2d46823f": "Çalışan saniye başına istek sayısı alınamadı", + "6dfcfe44b282f6a36ea2e487b583c543": "Çalışan toplam erişim sayısı alınamadı", + "d1448a41deace3e0a5cb3555cee67b97": "Çalışan toplam KBayt alınamadı", + "1bdd788c6927c1fd0420ca6e2316642e": "Meşgul çalışan sayısı alınamadı", + "f656a1e1c80cdf1eb1c63d3a0b121a65": "Boştaki çalışan sayısı alınamadı", + "e9a08443260e6f3b795eb57419a6ad77": "Bulut depolamaya bağlanılamadı!", + "749707db319ac2fa02785c1bdb58083b": "HATA: sshd config yapılandırma dosyası mevcut değil", + "80b695b495da54ed6a76eac8a965bc7b": "Giriş alarmı başarıyla iptal edildi", + "40d3b22b13a0b11ed727aa257e2228c0": "Mesaj kanalı kurulu değil", + "87597848076b873c1a9bb9ffea64950b": "Hata: sshd config yapılandırma dosyası mevcut değil", + "bdb119e343438b628e7ba8b20e4632ed": "Hata: sshd config mevcut değil", + "45de64a88b25b6527ccd3efbce76ed3b": "Parametre geçiş hatası", + "387e90104fbc0261c1ae5db9443f0b22": "Root giriş yöntemi şu şekilde ayarlandı: {}", + "0fd775e0a957d247e199d2cd911078e8": "Şifre boş olamaz", + "2279ae228c06ace23e59cc218f2536f8": "Şifre 8 karakterden kısa olamaz", + "207d2e497f2ca0d97f1453671d4d824a": "Kullanıcı adı zaten mevcut", + "e1c5fbbb3782936fa209244fcc62ea7e": "Şifre harf ve rakam veya sembol içermelidir", + "4c94c49ecaebd37c52172946778fc296": "Kurulum başarısız", + "ee6cb8cccfef01a6931ac569767b7303": "yerel veritabanı kuruldu", + "65d7c486a72e5ad1b6bd2efb8956f3f6": "Düzenleme başarısız: {}", + "f62e45c2a8ed2cfcfd94370111f2a7b3": "Aynı isimde bir veritabanı zaten mevcut: [{}]", + "c0845b39485db26e69520bd402a139b7": "[{}] veritabanı zaten geri dönüşüm kutusunda, lütfen geri dönüşüm kutusundan kurtarın!", + "4660d7ac939f0ce64023bd24bc25b663": "Veritabanı adı 16 karakterden fazla olamaz", + "299cf735a7b842c5bc2eaedf2e266387": "Veritabanı adı özel karakterler içeremez", + "d1e3ea8b4d692d87d876428f0cf476c4": "Veritabanı adı geçersiz", + "32e1edf20dad771b315ddb3da35bacd3": "Belirtilen veritabanı MySQL'de zaten mevcut, lütfen adı değiştirin!", + "54fac16736efc268ae61cc17bf80dcef": "Uzak Veritabanı [{}] bağlantısı başarısız", + "ad62ead53c1f43865593805aab80df4b": "Değiştirilemedi : {}", + "d3a51b64fa563dfcd901485db4cf5777": "[{}] veritabanı şifresi boş olamaz", + "157aebc66e02126c7568365a18392758": "Veritabanı şifresi desteklenmeyen karakterler içeremez {}", + "480b606c09fb9d52b9e47995e04641de": "veritabanı bulunamadı!", + "f730258407ac8fda3c780e7c59a09f16": "[{}] veritabanı için şifre başarıyla değiştirildi!", + "4461199265eb82e1de46055d7f4568b6": "Yedekleme Başarılı", + "ecc5e49aaee7ba7dc9a1b1b89e008c13": "sql/gz/zip dosyası seçin", + "3bb533d00c768936c2c3bf24d2c542a2": "Yapılandırma dosyası mevcut değil {}", + "c811067e114e07cbb188afd110ddc579": "Sunucudan {} veritabanı senkronize ediliyor!", + "a47891f08609cb38f4de9fd50def4650": "Sunucudan {} veritabanı alınıyor!", + "8aec4a4bd998059f3dbb932da4714b00": "IP bulunamadı!", + "a62053a8ff838da8ba33aae82d8fda5b": "Veritabanı bağlantı hatası!", + "65a61bd2b3c632fd1d27b19db5abf197": "MySQL veritabanı şifresinin süresi doldu", + "dfcaac01b569325ec535229328d52f6d": "Veritabanı sorgu hatası!", + "c77d5ef44d6a21abe99c3e370a0f5364": "parametre hatası: kupon_id", + "1cb4143e9dbb7515e606ab6854578a00": "parametre hatası: döngü_birimi", + "2121d979fb82aae9f0a62572bf36217f": "Arayüz isteği başarısız ({})!", + "287e14ef978fb00ce99942e799c36649": "limit_time parametresi eksik veya parametre boş olamaz!", + "8feb15ff2883086bba98d9d791d10bf7": "Zaman, şu anki zamandan daha az olamaz!", + "9bb70ddd7b082fbaafb0b47a989b5cf5": "Saat dilimi alınamadı!", + "38f40438a6c7e12eca9b4ea2ad297b3e": "Başarıyla en üste sabitlendi!", + "257ee5f5c18f04e3a83fd18b33babf08": "Lütfen sabitlenmemiş ID'yi girin!", + "c6afe11bc7f565bb0a423883101ce67f": "Sorgu başarısız: ", + "403470819fb903a95a8fd9a22b01a3ee": "ZAMANLANMIŞ_GÖREV_AY", + "7207ebce07676b20d98ec74a0ff65c77": "Günde bir kez {}:{} için çalıştır", + "4f4ae97ac3a0f45ef67bda70d5e4fe0b": "Her {} günde bir {}:{} saatinde çalıştır", + "82dccd8eb88a5611e453cbf6f25fa90f": "Saatin her {} dakikasında bir kez çalıştır", + "a84b2e49920d839395e3f93812f9ac03": "Her gün 0:00'dan başlayarak, {} saatin her {} dakikasında çalıştır", + "41924db412ce09aa5ef5c9f1f9c88ee8": "Her saatin 0. dakikasından başlayarak, her {} dakikada bir çalıştır", + "45abd276fba3519ea010cb5b3c44a484": "Her {} bir kez {}:{} saatinde çalıştır", + "06ce21d9c603152315f749e19fab3148": "Her ayın {} gününde {}:{} saatinde bir kez çalıştır", + "f2fc5ae4c94a95a754c58b15197bc135": "Her {} saniyede bir çalıştır", + "eb8cb9c97e5888beefc46d6c0645ff4f": "Başlangıçta bir kez çalıştır", + "7b9732c358c4e407030aca56ccb7a72b": "İlgili zamanlanmış görev için veri bulunamadı. Lütfen zamanlanmış görevin mevcut olup olmadığını kontrol etmek için sayfayı yenileyin!", + "b55a6e4ebb6e988c6d46840ca6cc3315": "Dosyaya yazılamıyor, lütfen sistem sağlamlaştırmanın etkin olup olmadığını kontrol edin!", + "fff2eb19d097654514fc97c4a6e6d233": "zamanlanmış görevler", + "64e1288887b58a1c65d05676f7197477": "Zamanlanmış görevin durumunu değiştir [", + "ef1a7595dfa94a12b47bb18d3ac94313": "Bu ID'ye sahip zamanlanmış görev mevcut değil", + "1844e0f52715901c376dca67e5742aa9": "Zamanlanmış görev yazılamadı, lütfen diskin yazılabilir olup olmadığını veya sistem sağlamlaştırmanın etkin olup olmadığını kontrol edin!", + "5a7b17945b660284bb813be218c04c71": "{} Ayarı başarısız", + "5e7205744bd38904dcbc7c0b77456fc7": "Sil {}", + "140fb31d1756ae3c75b297f0c17f8b24": "Kategori adı HTML ifadeleri içeremez", + "e5e2e32bece629fcba864f7f5e8df60f": "ZAMANLANMIŞ_GÖREV_ADI_BOŞ", + "f3b898619b284003475f2039ce53968c": "Plan görevi başarıyla değiştirildi [", + "72a21489a541757ee98b54790e5f431f": "Başarıyla değiştirildi", + "92f1227778f186dd8c5f6cae42f5285a": "Zamanlanmış görev başarıyla eklendi [", + "e55c44fbd41784b7731f71e2789cad65": "ADD_SUCCESS", + "5a3c3438dbcadf4a0d59858f17a8522f": "Görev günlükleri boş!", + "e8ab4d6107eaf37c98f250be20f146e1": "Görev günlükleri temizlendi!", + "a0d347c48839cab209fa3827c667a5c8": "Zamanlanmış görevleri sil", + "46039515107ea576bdaf75935b8b5f0d": "Zamanlanmış görevleri sil: {}", + "a3c72de16808f111cbe7e4c6dacc401b": "DEL_SUCCESS", + "d5925f01eeb5596fed21f5dae6ffed30": "CRONTAB_TASK_EXEC", + "72bf657fef1eeafa1c8ecde5e4c06405": "Görev yürütme başarısız! Eşleşen görev kaydı bulunamadı.", + "8804f9a6882b09397bbc0599ba59b7ca": "Görev yürütme başarısız! ", + "e9ca7bae70907408382135107fb85a13": "İndirme başarısız!", + "272892ac18608e0a1ad6bf080afd2e51": "Başarıyla temizlendi!", + "06511118622e143af60d10d0877c9a3d": "Temizleme başarısız!", + "424a90061acbe105658b97a0d86a4de2": "Lütfen dosya adını girin!", + "14854122a7fb5958664a8d840dc0bead": "Lütfen önce webdav depolamasını kurun!", + "a027ff0717f56bf016b2f023d92e0c32": "İlgili dosya bulunamadı, lütfen bulut depolamadan manuel olarak indirin", + "f7314eff61e017245b088eecfee0c418": "Bulut depolama nesnesi doğru şekilde başlatılmadı!", + "a09c248c44ca9548bce41bc3e79b400d": "Dosya bulut depolamada bulunamadı!", + "9b23d05e4cb1d3ee22dd3dd7212817ab": "Sınıflandırma adı boş olamaz", + "fade4a03622ee745aaf87044d697203f": "Kategori adının uzunluğu 16 karakteri aşamaz", + "c875cf8f63d81c7fb198018d5c4bfa79": "Belirtilen kategori adı zaten mevcut", + "f66442d89b8c613c082425a93b417695": "Belirtilen kategori mevcut değil", + "caf573e6b4299b7f60e24635b0295e9d": "Kategori silindi", + "9133e7faf0b9fc202294e495163b1ced": "Ad, sistemin varsayılan görev sınıflandırma adına değiştirilemez", + "a3ee2a93b0a298de033ca1b784f62f04": "Sistem sınıflandırması veya varsayılan sınıflandırma olarak ayarlanamaz!", + "f300a6ee81c71057acc7beecdaf472c7": "Ayarlama başarılı!", + "290435bc045f16e4d099d721b7f706c3": "Ayarlama başarısız", + "8d49c76279564d3127e45cae01976d37": "/tmp/cron_task_data.json", + "d7ee2f4d054a35aab002985b80644f24": "Dışa aktarma başarısız:", + "1cd20eabfaa5ad5793b4075f976bf475": "JSON dosyası ayrıştırılamıyor!", + "205904d76b14dbdb456fc2a2997ba5b1": "JSON dosyası içerik formatı yanlış!", + "f63f66d08d61a3b16c11e0dfce9510e1": "{} zamanlanmış görev başarıyla içe aktarıldı", + "414522bb8a68d31211190865a1cefdd0": "Lütfen içe aktarılacak dosyayı seçin!", + "8342696568c9b58f16cf29e2492cddea": "İçe aktarma başarısız! {0}", + "51b34794854788b7e5eb8c3a8fab0242": "Lütfen zaman parametresini girin!", + "860f363ecfcf11c8740b9068152b910c": "Geçici sistem kapatma ve güçlendirme başarılı!", + "acbe969acf9b4925e963f102f3430f84": "Sistem güçlendirmesinin geçici olarak kapatılması başarısız oldu!", + "14a7c9c4ed221e7b3234de80bb8b9ef9": "Günlük kesme başarıyla etkinleştirildi", + "15af2c7a6a5766d84ad8c57c5d2fb0dc": "Günlük kesme başarıyla kapatıldı", + "636cccf0b373acec35770f9f26710396": "Günlük kesme etkinleştirilemedi", + "bd6df8255e394034ebcf93fcebfe06d3": "Alım başarısız:", + "90a80c8e64ee80e8577c44699b6faa7b": "Zamanlanmış görev {} oluşturulamadı, lütfen sistem sağlamlaştırmanın etkin olup olmadığını veya disk durumunu kontrol edin", + "796b4f2a019427bc554ef1166faad8aa": "Başarıyla kapatıldı", + "f222f6f9531a00476e39863b53bcde07": "Açma başarısız", + "52d812a7c0b57b35fac4e668122191a3": "Betik yürütme başarısız", + "f804ceef9dd122e198f13357be514e41": "Otomatik Veritabanı Yedekleme[TÜMÜ]--mysql", + "26e64121956b9e7e55244a508f146864": "Otomatik Site Yedekleme[TÜMÜ]", + "c601909c952f2064e91d6f3c1d1a7128": "★yedekleme başlatılıyor[{}]", + "890b5b1ca2b1aa96f0781c9fdc77ab88": "☆yedekleme tamamlandı[{}]", + "5316694cae24d434370be2d76146a500": "|-Hata: {}", + "b763e7e9f6b23d4b5066458506d26d55": "Yedekleme görevi yürütme başarısız.", + "713660262f5ab9c3af9aa17c8d8a412c": "Yedekleme konumu: ", + "038ae15d38f9f027abda2aabf18324ab": "{} için en son yedek sayısı: {} kopya saklanıyor", + "58c65e272cfde6fc8cf73d0ffcde4bbd": "{} konumuna yükleniyor, lütfen bekleyin...", + "243c0f3ec002883d6fa7770957ecf9bd": "Zamanlanmış görev mevcut değil!", + "57d4380c974a85fe8db5914c934addf4": "Zamanlanmış görev mevcut değil! {}", + "78df833c741b9814545d76a83f2db9b5": "{} Yedekleme veritabanı {} mevcut değil", + "69c66d6525e77e17c2aaffea61f4d730": "Bulut depolama alanına bağlanılamadı, lütfen yapılandırmanın doğru olup olmadığını kontrol edin!", + "8a09aa6b7131f71b3ba97f13d5b7823f": "Belirtilen sipariş numarası mevcut değil ve yenilenemez!", + "72905fe72d071dffbc0c1a20eb8def87": "Bu sipariş hakkında bilgi bulunamadı.", + "0b033e06e17e9fb14f93e6f11eed6599": "Siparişin süresi doldu. Lütfen yeniden başvurun!", + "3497d17853f8a84d0b552dcea4fabad2": "Bu siparişin bilgileri bulunamadı.", + "972f14a9afdebc7e5b366f465171776a": "Siparişin süresi doldu. Lütfen yeniden başvurun.", + "1008d1a5b18463e45c0bdb930bc0087c": "Bu sertifika bulunamadı.", + "2e95d6e834bed89e1e199808d0cfd8aa": "Lütfen --path parametresinde web sitesi belge kökünü belirtin!", + "4a8d983505848031c77a15c408cd1f3e": "|-Komutu yeniden dene", + "ed069811f3c302d22a0f4aafc6903826": "|-Kullanıcı uygulamadan vazgeçti ve programdan çıktı!", + "daa9a175b001e007de4d7ca89ec19aec": "Geçersiz düğüm türü: {}", + "abb41b16dcebff17c55d75000fe3cabf": "Geçersiz otomasyon", + "e9d2603582f4a20d640b8e7d3b3e08b7": "Çalışır durumdaki otomasyon düzenlenemez.", + "505a83f220c02df2f85c3810cd9ceb38": "Başarılı", + "d2fcac4ec8e0f366bff10d45d37bb3d3": "Geçersiz otomasyon_id: {}", + "d171abccfa056d262e7e081b84510c4f": "Geçersiz otomasyon: tetikleyiciler yüklenemedi", + "ae3ff0ee4b1a6c1dfe230d9b15a4d4a0": "Geçersiz otomasyon: eksik tetikleyiciler", + "cb665b2511490edc2ed27b86d38e0828": "İş akışını tamamlamalısınız", + "0fdf6b21eacd19ce746639f1c4613607": "bitiş_zamanı başlangıç_zamanından büyük olmalıdır", + "18fc7ff48f030eda26c7446cdccd441d": "geçersiz veri", + "dcb3fc2a35a17abb01744383ebf3cdc4": "geçersiz veri -2", + "7122d35c3532d63c8d9fc5c5bd320558": "Sipariş listesi alınamadı, lütfen daha sonra tekrar deneyin!", + "079217f7bb63fed72af9bb79048e3967": "'*", + "b3248ad84a12659b1599607f969741a0": "CloudFlareDns İzni şöyle olmalıdır: ", + "0ad00e6c415af62cdaa8537c32574052": "Takma ad zaten mevcut!", + "9c82954b2bf15dc7a9462145d9782aac": "Lütfen PRO Sürümüne Yükseltin!", + "3a306f42856e51481470e9702cc22169": "Başarıyla Kaydedildi!", + "9758ed50c1e1816e1eecb98e0c3ed1ec": "Başarıyla Silindi!", + "4b9f49d0625305474bd478ed077bba0b": "id gerekli", + "615df74f7d5141a1084369b9da4ccb4a": "Sağlayıcı bulunamadı!", + "4a9382b97abdf8cb5b237bf7d64873e2": "search_and ve search aynı anda kullanılamaz", + "7d7d9ba1a8780278b2a05b91eacfb2e7": "DNS kaydı Bulunamadı!", + "8d49c4cd608eaa6d8d9a1e0ab6658fb4": "DNS Sağlayıcısı Bulunamadı!", + "79922b861a42a4e2350f69501eb25ca0": "DNS Kaydı Bulunamadı!", + "39b361ca64471b92b1b1e84dee7d5226": "Başarıyla Güncellendi!", + "8ef6a7854d197b829e350936856847fc": "SSL Sertifikası Bulunamadı!", + "02d59ec01b27b9b07cc92b56b4590690": "SSL Sertifikasının süresi 30 günden az, yenilemeye gerek yok!", + "2741cbeb713977a63cc621cae6c92b2c": "SSL Sertifikasının kimlik doğrulama bilgisi yok, yenilenemez!", + "e10f97e65f8e6bb8d78cad066bd3133a": "Başarıyla Yenilendi!", + "c85411871b8773e799e64d0c23ef79d3": "Sipariş Bulunamadı!", + "9dd5fcad400ad7db65baa55be5535d94": "Başarıyla Uygulandı!", + "3f5a9a220cd8c53770c59c4931beb2be": "auth_type şöyle olmalıdır: ", + "4fadb14ca725c013569fc00385d750fd": "alan adları boş", + "ef01e80156516ee70bc7031ecc223061": "Site Bulunamadı", + "584447441c36bdf097a426f26cd1ae0f": "Site Çalışmıyor", + "5b9bb06906f02adfe9d02c7a71d8c1c2": "Hata: Joker alan adı yalnızca DNS ile doğrulanabilir.", + "fdbdc3e70ef01cae6ba7f67b34622aa1": "Bilinmeyen Kimlik Doğrulama Türü", + "52357aa86932ebcc9ff6e741ef6244b5": "sertifika güncelleme başarısız", + "2e54bae7cebff2ed29eee92ee852cf0f": "SSL Sertifikası Bulunamadı!", + "022c6efa50cd0022ffa66b42f08caadc": "Başarıyla Kaldırıldı!", + "9ecbde266be14f2c038c06f339f7ee46": "SSL Bulunamadı!", + "9bb50ed8d9b14f51d1a44a423db43e6e": "Başarıyla Ayarlandı!", + "049734a8ec5a38304b7e0dff089b05fe": "Postayı Dağıt", + "6df4bb58ee6967a48b38e093858091de": "Hesabı Dağıt", + "ec220f32ceb0ad39d785439e3d442464": "Paneli Dağıt", + "7f689dbbf6341be1e07e8e96d16b95db": "Joker alan adı desteklenmiyor!", + "2ac3f96d3c4f34f9ab7627bf5f1fb444": "Alan Adı Geçerli Değil!", + "8346bf5e43bfb945866b734da5e365fb": "alan adı boş", + "f53f8d0c6e47f742892e21dc6d0ffcba": "Güvenlik duvarı başlatılmadı.", + "7aa738bc7717148a9518c0d37e0bdcc2": "kuruldu.", + "10cf4b73623a047cd8c039899a68678f": "Güvenlik duvarı açık değil.", + "f2ec5e710cf0c84fd474abdc993360e8": "Güvenlik duvarı başlatma görevi oluşturuldu.", + "98dd43dfae05b11befe1f140e0ec787a": "Kuruldu", + "032c6f0f72bf846bf80205f83cfbbfdf": "Hedef alan adı boş olamaz", + "d3e42cf08c9dd4657e1ec738bcd7fa4f": "Hedef port boş olamaz", + "2e983c6be925499dd08a349a82f9e215": "Hedef alan adı yanlış formatta", + "2101cff923c114c46970531cebe61e9c": "Alan adı: 【{}】Çözümleme başarısız", + "484a79b99ea7c89818e54bc86611e0ab": "Lütfen id girin", + "8bc83520b9c5e0cb6a83e1cf6961cfdf": "Ayar başarılı, ancak aşağıdaki kural ayarları başarısız oldu::{}", + "373ee51dfa98aab065593b352f395b59": "Hedef adres yanlış formatta", + "26fe283bcf5841270188165305b2f876": "Hedef adres {} zaten mevcut, lütfen tekrar eklemeyin", + "4b8abdf7e8565603bc0b09534e1c53aa": "Lütfen kuralları ayarlamadan önce güvenlik duvarını etkinleştirin!", + "50c7672327d3879977f1672bac1ee999": "Hedef IP boş olamaz", + "b9c6715ad1caf1dd7f933c42ab63707a": "Lütfen old_data girin", + "842a116f755d53aacda61c8d5b90125e": "Lütfen new_data girin", + "edbe2ffb112ecc945237a594ab786679": "Değişiklik başarılı oldu", + "f94b62cff0c45cb08b61da3ca2615d72": "Dosya mevcut değil", + "0976b2102c7a8af33f04ab2059e997ca": "Dosya içeriği anormal veya hatalı biçimlendirilmiş", + "774b94869c0844749626b1bf637fafbb": "Kaynak port boş olamaz", + "e9b371dd7b29cd7373c524d880b031fe": "Kural zaten mevcutsa, tekrar eklemeyin", + "13bd44b7e23ee792948ec122677bf1b3": "Kural ayarlanamadı: IP adresi boş olamaz", + "7f6cd3026825eae0d35775a932e0fb46": "Kural ayarlanamadı Desteklenmeyen IPV6 adresleri", + "bbc83d63860d8fddbe9b5f0769f8d108": "Kural ayarlanamadı", + "52de0a29b9e9289bd6598a5d4610774f": "Kural başarıyla ayarlandı", + "40e79165af94fb353f73532550d50dbc": "Mevcut sistem güvenlik duvarı iptables'tır ve durum ayarlamayı desteklemez.", + "7f643aa5c0ac22eb56b8e0283a245537": "Mevcut sistem güvenlik duvarı iptables'tır ve durdurmayı desteklemez.", + "759cbd156929358f44fea3d7a2303d12": "Mevcut sistem güvenlik duvarı iptables'tır ve yeniden başlatmayı desteklemez.", + "9eeb5949442ea424abb29b42f4f3763d": "Mevcut sistem güvenlik duvarı iptables'tır ve yeniden yüklemeyi desteklemez. ", + "6fe3c8f7481574a858f4c4e3dcb190b8": "Bir port kuralı ayarlanamadı:{}", + "cc84ff9fa77f59978d67ebe5c21c4cc6": "Port kuralı başarıyla yapılandırıldı", + "5fb5bec15f0680c0f8281e2a77f01564": "Kural ayarlanamadı:{}", + "202ed89223bc105db8c706695994099e": "Kural başarıyla ayarlandı", + "31bdde170e92eb68e5cf19070a0257b2": "Bir port yönlendirme kuralı ayarlanamadı:{}", + "14af00e29f1c7f276529a7f13d37bcf3": "Desteklenmeyen tablo adları: {}", + "37859bf15c1d49002153157ecdd4ad45": "Kural kurulumu başarısız:{}", + "9fcd0fb925f2f1f9fc5157a937c1527a": "Kural kurulumu başarısız: {}", + "9ef9f6bcb8cd56f9b4d8be162918810e": "Güvenlik duvarı başlatılamadı:{}", + "afa08ad3f9767240b0219e668944beee": "Güvenlik duvarı başarıyla başlatıldı", + "bc1ad4532116f7e179339e07a39be1a3": "Güvenlik duvarı durdurulamadı:{}", + "50ac40822152a67e4195c04488aa7129": "Güvenlik duvarı durduruldu", + "c8b9e1198399365ab380361c761ab78d": "Güvenlik duvarı yeniden başlatılamadı:{}", + "04105f039f2850a3472f9b79c7ae5111": "Güvenlik duvarı yeniden yüklenemedi:{}", + "2be1a57d150c047f0c5d936a904d884a": "Çıkış portu kuralı ayarlanamadı:{}", + "af95b488978d644c7ef7b4b856def666": "Çıkış portu kuralı başarıyla ayarlandı", + "194fbdb576220abe3bc3ae3746af89a7": "Bilinmeyen politika parametreleri:{}", + "f006b06691ecd76b8a34e2825c17b6aa": "Bilinmeyen strateji: {}", + "55bbeb07229c08c530c5119918035594": "Çıkış kuralı başarıyla ayarlandı", + "8be2d40f6fa3e12c46ba68bfb23951d1": "Çıkış kuralı kurulumu başarısız:{}", + "5d6e1e45c8d58b5f2800aabe961be7e6": "Hesap hizmeti başlatılmadı, lütfen önce hizmeti başlatın", + "b3e1f3f951a065d621dba454b2523365": "İstek başarısız", + "9f570fb82d621c780cae5d4a3b7b21fa": "Başarıyla başlatıldı", + "d6fd80e8f386ec01318ebbd911b3cb8c": "Başlatma Başarısız", + "54b737c15ee80b356bed65d1e4bbdf11": "Durdurma Başarısız", + "ca5ae41ecee3659791384fbb49c573f2": "Başarıyla durduruldu", + "f9458b55789fb6b79f107c061d9050e0": "Başarıyla yeniden başlatıldı", + "ce070d796c159496ab8253cc60891b9e": "Yeniden başlatma Başarısız", + "ca0431c082d8980ad8a7fbfff9a3cc4e": "Başarıyla yeniden yüklendi", + "f61bf123501eb5094cd6782409088c6f": "Şu anda web sunucusu olarak yalnızca nginx desteklenmektedir. Lütfen önce web sunucusunu nginx olarak ayarlayın ve web sunucusunu ayarlarken web sitesi verilerini yedekleyin", + "01b4fc496d491eed58270beca1664e66": "Kurulum betiği indirme başarısız", + "b6bbb24d50175d3a920095caccfc8cc7": "Görev zaten mevcut", + "22e6df6f7a837552a50ec27a63418a99": "Kurulum görevi, görev kuyruğuna eklendi", + "01545ec6a6d49b956f303f9ac0f7aeed": "Yükseltme başarılı oldu", + "f43df7708267595d8c8ee27cca2e25c7": "Sertifika içeriği boş olamaz", + "749c4e1e3720c1aa28459dd4953cf782": "Lütfen sertifika formatının ve içeriğinin doğru olup olmadığını doğrulayın", + "5e6ddd918845e96916d903a667e65da6": "Başarıyla ayarlandı", + "9aad9a87ef3911e202093b08b2f570ed": "Başarıyla kapatıldı", + "b4987b794be5974dd020719b9c1d0a41": "IPv6 adresi desteklenmiyor", + "793f2b3ffa18b3513258114b0216cb7b": "Lütfen ana bilgisayar adresinin doğru olup olmadığını kontrol edin, örneğin: 192.168.1.20", + "af8d2d8e000adaed48feb1c1502cea6d": "Üzgünüz, açma başarısız oldu, ayrıntıları görüntülemek için lütfen App Store -- Kurumsal için Kurcalamaya Karşı Koruma bölümüne gidin", + "e9f9d8e8358b9291af5e41417184ddd2": "Dosya koruması başarıyla eklendi", + "c4faf633a3fd32e8b5d8138dbddc1693": "Güvenlik duvarı açılamadı", + "5ebd3aeb7b2c96cf6c64f82bfa333f02": "Güvenlik duvarı başarıyla açıldı", + "82d883f528257cbc522de7531411dd53": "Güvenlik duvarı kapatılamadı", + "5aa742d86e112c414eb5970e1352719f": "Güvenlik duvarı başarıyla kapatıldı", + "b552849e09b4a47a87641523cb99e06d": "Veri bulunamadı", + "55df5f27012531e176be79f81b90d779": "Başarıyla silindi", + "785a530106a46c897769c1cf2df6c2f3": "Başarıyla başlatıldı", + "274fbf19776d1b6efee0e71f075739cd": "Başarıyla durduruldu", + "81c5f87b76468dbe7a152121fee71663": "Temizlenecek gereksiz günlük yok", + "12af24fd6d32854160728cffa4ea2150": "Temizleme başarılı olmadı", + "90b0ccf9b077f2cadeef3daaf17d86b8": "Güvenlik duvarında {} var", + "3d2fb8221a478c63e13b494d7279e2ac": "Başarıyla eklendi, {} Aynı kural bu port için mevcut ve atlandı", + "fc66f87cb8d92e3caf13485d65ecc309": "İşlem başarılı", + "9a321cf078154e6594a8a29fb7847738": "Lütfen önce dnspython modülünü kurun", + "2463904b74dc3ffd3fb849f87a0e3a3a": "Dosya içeriği yanlış!!", + "7a3f417adbeb8a69180134c6f2373c36": "Dosya boş!", + "29b89ed8f1aa15665f877c12e0d14bac": "İçe aktarma başarısız oldu. Kuralların formatı yanlış. Lütfen dışa aktarma kurallarının formatına göre tekrar deneyin!", + "002827869c69ad72bc41ca442547bbac": "Yoksayma kuralı başarıyla iptal edildi", + "63ecd16effc3eab31bf1eec574ece639": "Kilit başarıyla açıldı!", + "eacd845def6fe750cfc0986f24565045": "Yerel giriş şifresi boş", + "fea087517c26fadd409bd4b9dc642555": "normal", + "e1a4b8afc2cb3f56f0c98876c06d6d58": "Veritabanına bağlanılamadı!", + "a18fb7f91f74b73e7326700913e7e35c": "Belirtilen sunucu zaten mevcut: [{}:{}]", + "079d7d1539d30a76e53b6fb54d370d32": "Başarıyla eklendi!", + "72bfbe1d7dd57250382b570043041e82": "Ekleme Başarısız: {}", + "270b19b2e9da5da821c7b54a1a8d7fd6": "Parametre geçiş hatası, lütfen tekrar deneyin!", + "ffcba623cf91331a0ba5b3ab969db1f9": "Başarıyla silindi!", + "43bf15425909c99f2cc1553eaffaf476": "Silme başarısız: {}", + "0947887a435eff51a71f1e54615af33c": "Veritabanına bağlanılamadı [{}:{}].", + "844eea2c94a872941b4e4fe66c92c659": "[localhost:27017] veritabanına bağlanılamadı!{}", + "90b65217be3c698d9b1fbff0dccdc71b": "Mongodb hizmeti henüz açık değil!", + "7d1a075632098426af1e2197d274bdb6": "Veritabanı adı şu karakterleri içeremez /\\\\. \\", + "48b2c30b0f984cdcc6cd7ed4ee376fdc": "Veritabanı adı boşluk içeriyor ve düzgün bir şekilde eklenemiyor!", + "93efcc7fc4e9d402978828bacd4a5bc2": "Veritabanı kullanıcısı zaten mevcut, lütfen başka bir veritabanı adı kullanın!", + "393223cf51f8e25df5d53ae425de74a9": "veritabanı mevcut değil.", + "2162130c1a1937f839cc660f5e70ebdb": "Mongodb hizmeti henüz açık değil!", + "45da541afaa00457a2f4617a1dd4855f": "Mongodb kısıtlamaları nedeniyle 'admin' adlı veritabanının silinmesi yasaktır!", + "2465ac13d0470c6414b77dc59fbcdbbc": "Yedekleme araçları eksik, lütfen önce Yazılım Yöneticisi aracılığıyla MongoDB'yi kurun!", + "d2af5fe1710856e97dbfdf1adc6d5e98": "Eksik parametre! id", + "9c17c1312620910f7c3d27a20f01e968": "Veritabanı mevcut değil! {db_id}", + "57bb958a6998e558b00b5d89d240b240": "Şu anda bson, json, csv formatları desteklenmektedir!", + "3b4ee1461f518d1bd1ed20615d670df1": "Csv formatına dışa aktarırken dışa aktarılacak alanları belirtmeniz gerekir!", + "699c43a1633256e97b95615a562eef88": "Veritabanı şifresi boş! Lütfen önce veritabanı şifresini ayarlayın!", + "1acdae1719cee0ce5c586cd6995b70a9": "MongoDB güvenlik doğrulamasını etkinleştirdi, ", + "67e943332602d7a5b9765306caa8604d": "Bilinmeyen veritabanı türü", + "04c651a70b89bd4fd8fc8702c0bf61e9": "Veritabanı yedeklemesi başarısız oldu, dışa aktarma dosyası mevcut değil!", + "e880101cd795726a7c8e2c2f4033f9dc": "Yedekleme başarısız!", + "ae1110dd560e4e7968b297620be7ea36": "BACKUP_SUCCESS", + "bff09c8822165bf816a5b5a4d1fe9140": "İçe aktarma yolu mevcut değil!", + "3d003d1417aec658cd020f9faf66a5c1": "Yalnızca zip dosyalarının içe aktarılması desteklenir!", + "3397a2bc97209578e6c113606a4c7b7b": "DATABASE_INPUT_SUCCESS", + "1aaad2845eddd4af9de947cc24e80a38": "Yedekleme dosyası silinemedi!", + "94b43778dbd724133db47ee2126da3a9": "Senkronize edilmiş veritabanı yok", + "aae27fc3d2273773edab02e15288cb14": "Veritabanı senkronizasyonu başarılı {}", + "164c5fa905dbffad015f4593d1b85fb9": "Veritabanı türü sid, int türü gerektirir!", + "3a621b20dadc66881772503620282533": "DATABASE_GET_SUCCESS", + "505a6be34cf7e61f93f2665896cfafaa": "Değişiklik başarısız, veritabanı [", + "13966ea12f4ed389be50c95e65d8a2dd": "Veritabanı şifresi boş olamaz veya özel karakterler içeremez.", + "361cbf31511a2bf38fc664157d183328": "Veritabanı şifresi Çince karakter içeremez, lütfen değiştirin!", + "252d8cfbb164b773c5f84ce9d814ae3c": "Değişiklik başarısız oldu, belirtilen veritabanı mevcut değil.", + "aea43e9b982f6105e584e46b778d9f9e": "Değişiklik başarısız oldu, veritabanı güvenlik doğrulaması için etkin değil.", + "0b46bb64ce97c64f6dddc87bccf949e8": "Uzak veritabanı bilgileri mevcut değil!", + "d1b44799de985cad123821498285dfbd": "VERİTABANI_GİRİŞ_HATA_FORMATI", + "df5647a7421161dcbda85323db41cc99": "DATABASE_INPUT_ERR_FORMAT", + "2a52f6106614dfbd519714df03ebb16a": "Veritabanı başarılı", + "1182c39d730924cb4f4d8d229fadb0f3": "Veritabanı şifresi başarılı", + "9e1a9b35939cc4887854eb2ed84f401f": "Veritabanı adı özel karakterler içeremez, lütfen sıfırlayın.", + "01d3922e30b7aff9c7265e91c57cc829": "IP formatı yanlış!", + "b2349e65b04baa3a0d50ad030535b73e": "Girdiğiniz değer geçersiz, değişiklik başarısız oldu", + "932c4edd1a70a505be1099f4e7874692": "Pgsql kullanıcı erişim hakları başarıyla değiştirildi", + "f562938bcf2a52b32261e4f4a99c3e00": "Silme başarısız! Mevcut veritabanına bağlanılıyor!", + "573ba454733eee7cd866addcd11ea21c": "Veritabanı silinemedi!", + "fec7dbd4f36266728d6eda5e168d1cc0": "Veritabanı mevcut değil!", + "69579eb94ffe47354dac42abc8cac9d1": "Veritabanı şifresi boş, lütfen önce ayarlayın.", + "fb642275547236f1fb2ea7717ace26d8": "Lütfen önce yönetici şifresini ayarlayın!", + "95abdbd5890c3ceec62026c6246d8030": "Yedekleme işlemi başarılı oldu, ", + "7307a92023c68b6842a8dafb1b500f16": "Kurtarma araçları eksik, ", + "eef4302ce8a129e5d70767668a9e9110": "Lütfen sql, tar.gz, gz, zip dosya formatını seçin!", + "c5aafcc6af38d67c22ccc8d19f60ed0b": "Veritabanı başarılı {}", + "a8de1650a48acf0e91c7ba840bd48295": "Veritabanı şifresi boş olamaz", + "9a53422dee5315eb489d4e448f4ea976": "Değişiklik başarısız, belirtilen veritabanı mevcut değil", + "3ca4ea8082e41867cee227d4686a4c17": "Veritabanı şifresi başarılı {}", + "0033a9566af4f930bebbd45802be5427": "bağlantı başarısız", + "ae576ea2a8c76765fa69287fb1347d1a": "Uzak veritabanı bağlantısı başarısız!", + "15a8af9e80d0a0c2d87314c154fff181": "redis kümesi desteklenmiyor!", + "c2dafded2689dc11914376d72a70dfc2": "redis bağlantısı başarısız!", + "b283988bc23c61b2e6393195064ccc5f": "İşlem başarılı", + "a9ed7f25ce1ffcf98cf5ec7db86abdf4": "Şu anda uzak veritabanlarını yedekleme desteklenmiyor!", + "9d1ee7d092060a4d3418a979fba5e46b": "BACKUP_ERROR", + "1fcdee5d4329f1f638bc2d818f3e510a": "dosya bulunamadı", + "517b554160a14e74d52943ea29ab5a66": "redis bağlantısı başarısız", + "ec010eeffc0a20399b186f334b3b6769": "uzak veritabanı bağlantısı başarısız {}", + "2322848a32fd761a98a0bd76e633bc97": "Uzak veritabanı bilgileri mevcut değil!", + "61dccc90b62286cfe99a0836cd7016f4": "Proje dizini mevcut değil!", + "393f59f008214da917a3644f9bddd08c": "Belirtilen öğe mevcut değil!", + "76f7795cbd69658732375d59e3ac4443": "package.json yapılandırma dosyası proje dizininde bulunamadı!", + "da87ee74f07713dc1fb6d97d770c6b9a": "Belirtilen nodejs sürümü mevcut değil!", + "53dc11c67093dc8650a2a0bcc739af9e": "Lütfen önce bağımlılık paketini kurun!", + "9e37cac0b6ac4947a8eaab9c4741d096": "Belirtilen modül zaten kurulu!", + "a23324d67a76505b9485e1925b49ce69": "Belirtilen modül kurulamadı!", + "e175807189b9fed334d7fa1d9517e302": "Belirtilen modül kurulu değil!", + "7d837b25ee483c045c3d27e461661024": "Bu modül, kurulu diğer modüllere bağımlıdır ve kaldırılamaz!", + "a06864f6c23b22710bc49fa3794247aa": "Bu modül kaldırılamıyor!", + "3378916dcc3a51351a823bf417959965": "Parametre türü yanlış, dict obj nesnesi gerekiyor", + "2ab730bc17ad482c454d62e5d6dda728": "Lütfen önce nodejs sürüm yöneticisini kurun", + "683eecd5ab2302a02009bb53528a8206": "Proje adı formatı yanlış ve harfleri, sayıları, alt çizgileri ve ifadeleri destekler: ^[0-9A-Za-z_]$", + "9360c6893e4ca4d7030d99d9ae4b34c7": "Lütfen önce Nginx veya Apache'yi kurun", + "999e1ffe680ef91f5cf9795c34aa7acc": "Parametre türü yanlış, dict obj gerekiyor", + "9f474c0c49ec1c30e3c19f13e9d2a52e": "Lütfen en az bir nodejs kurmadan önce nodejs sürüm yöneticisini kurun", + "9791ddabd2954257bfed271e0e7254dd": "Başlatma komutu boş olamaz", + "f8498a22f4e43acaae880208f0980675": "Belirtilen öğe mevcut değil", + "26aa1657ebfac1237da6a1f8ccae86b4": "Alan adı boş olamaz", + "8f5e21613d5cfe258f7965986f95b750": "Eşlenen proje için en az bir alan adı gereklidir", + "bd397222b97310807e5ecfdcec2c30ff": "Belirtilen alan adı mevcut değil", + "8f04dfa02fe0ef0106680e1a3e9f1759": "Öğe mevcut değil", + "64bc3d77e07e9e2757509ce626273a99": "Lütfen [Alan Adı Yönetimi] seçeneğine en az bir alan adı ekleyin", + "7514fe0af7b6f84f1c3c0a01613010fe": "Modül bağımlılıklarını kurmak için lütfen [Modül] bölümüne gidin ve [Tek tıkla kur] seçeneğine tıklayın!", + "11382e970be52495256dd21192a671a7": "Başlangıç betiği yapılandırılmamış", + "ef6b21f990d5f7f0a881e354a365063d": "Başlatma komutu bilinmeyen bir güvenlik yazılımı tarafından engellendi, lütfen kurulum yazılımı günlüğünü kontrol edin", + "bbffcc99d1822ea57ca5e7dc614157ec": "Proje mevcut değil", + "53797f7f191af4c7851d0419ca27b334": "Proje başlatılmadı", + "f45bc552cdf8369ab9fe2213eec7b802": "Günlük dosyası mevcut değil", + "0f3f874698792dc81c7c00b9e74fea34": "{}\r\n", + "aad4acc1243565c5c2ca41e5733e5fe0": "başarılı\r\n", + "d8f5a29760a4f000dd754819b1faadcc": "başarısız\r\n", + "73977612ef83925db43df7745df9c5eb": "\r\n10 dakikadan fazla yanıt yok!\r\n", + "6345c76d66a8a9e9cdd3f9d996ff062d": "Lütfen cmd parametresini girin", + "bba401eadefa8222f3e60a312cc19f34": "Yalnızca docker run veya docker pull komutları çalıştırılabilir", + "b5592904212696df3e5bcec990c8676a": "Tehlikeli komut mevcut: [ {}], çalıştırılmasına izin verilmiyor!", + "cfff471dc04b6ba4aeb2cc2844b2c94b": "Tehlikeli sembol mevcut: [ {}], çalıştırılmasına izin verilmiyor!", + "f1d9b154a0c2625d828a504a8cb35682": "Komut zaten çalıştırıldı!", + "ea848f5d6978f5916cd3df4191195e2a": "Ana makine zaten mevcut!", + "7aa425b3819e79208faaed38fe137f34": "Sunucuya bağlanılamadı, lütfen docker'ın başlatılıp başlatılmadığını kontrol edin!", + "c90ca78b1fc8554e867a696d30255cba": "Docker ana makinesi başarıyla eklendi!", + "8ee5196fbd93bf345bf018132e808a0a": "Ana makine başarıyla silindi!", + "65960a94c86ed543e6ecf9865cb7aab9": "Tespit motoru başlatılıyor. İlk yükleme uzun sürebilir....", + "2e2456601fd9b5e6a2f7345d8877e2eb": "Apt-get güncelleniyor. İlk yükleme uzun sürebilir....", + "8c902642d409e04304c1b50daef221ad": "Tespit motoru kuruluyor, ilk çalıştırma çok uzun sürebilir...", + "e4cf763784740f252924c589b16d4f25": "Yum önbelleği güncelleniyor. İlk yükleme uzun sürebilir....", + "5677925b683b9c781fb956882c4d736e": "Desteklenmeyen sistem sürümü {}", + "f1f3e9961d2a46c83e8d226aa1cc1dbb": "Desteklenmeyen sistem sürümü {}\nŞu anda yalnızca Debian, Ubuntu, Centos desteklenmektedir", + "938e7de7df2aa5efe531d693deeb5907": "libdl.so bağımlı kütüphaneleri kontrol ediliyor...", + "459ed27083c25b82135efedccaa60ada": "{} istisnai geçmiş komutları taranıyor", + "37c614d5d300e6c391808efd5363ec82": "{} hassas bilgiler taranıyor", + "5ddc98a53573410c7cb65727946c5d3f": "{} arka kapı taranıyor", + "6bb6be880d819a93af392183d16fccdf": "{} konteyner kaçışları taranıyor", + "cd7fb7cf576b22469514b5b30f365158": "{}Tarama tamamlandı", + "acc2731ee0f5b78d4e801d2daf814c32": "Şüpheli anormal geçmiş komutu bulundu", + "3069c277261d044bb309e4b09ae798fa": "İmajda anormal bir geçmiş komutu [{}] bulundu. Bu, konteyner çalışırken ana sisteme kötü amaçlı yazılım veya kod yerleştirerek güvenlik risklerine neden olabilir.", + "6d64734fff5534f48029ffba4aa3678d": "1.Komutun normal işleyiş için gerekli olup olmadığının kontrol edilmesi önerilir
2.Gereksiz kayıpları önlemek için resmi ve güvenilir altyapıların seçilmesi önerilir.", + "475dfbee8626a4d939cf631aad174de3": "Taranıyor:{}", + "71c7dfa944a5a50f281c0acb232dcdeb": "Taranıyor:{}...", + "0c29ac6d8e69451c80f8ef857e499ab2": "Hassas dizinler bulundu{}", + "53872e73575a306598c0c4060b44181c": "İmajda hassas bir dizin mevcut: {}. Saldırganlar tarafından hassas verileri veya kaynak kodunu çalmak için kullanılabilir ve bu da daha fazla güvenlik sorununa yol açabilir.", + "6fe56120a0502f9678988d756dd27682": "1. İmaj kullanılarak dağıtılan konteynere girin ve işleyişi etkilemeden dizini silin
2. Silinemiyorsa, dizine erişimi kısıtlayın", + "6b2f9867ccd6f3e6f06726c06ed684d5": "Hassas dosyalar bulundu{}", + "6684913201a60be0b5e89c4dfb210719": "bashrc arka kapısı bulundu{}", + "9a9f27d5f9f8c056fff7986c87a94c30": "İmajda bashrc arka kapısı bulundu: [{}], kötü amaçlı kod içeriği:
{}", + "d8a828116070b9d92315ca309cca1991": "1. İmaj kullanılarak dağıtılan konteynere girin ve dosya altındaki kötü amaçlı kodu silin
2. Konteynere sızılıp sızılmadığını kontrol edin ve konteynerdeki işletmenin erişim anahtarını veya hesap şifresini güncelleyin
3. Konteyner dağıtımı için resmi imajın veya diğer güvenilir imajların kullanılması önerilir", + "e1439f3f7d25d378078d513a82a3fa87": "Arka kapı dosyası bulundu{}", + "9ede9d4bd542eedf78e39b0acf0206e3": "İmajda bashrc arka kapı dosyası [{}] bulundu, kötü amaçlı kod içeriği:
{}", + "686765b4612ecd8f774648db29a1541d": "cron arka kapısı keşfedildi{}", + "390bdc0b3c37a56ede9467b0c220a3b6": "İmajda cron arka kapısı [{}] bulundu, kötü amaçlı kod içeriği:
{}", + "caea084281a3cb2515e5618cd3856163": "Sistem arka kapısı bulundu:{}", + "d04061273caa56d5a0c3d74f3e9fd482": "İmajda systemd arka kapı dosyası [{}] bulundu, kötü amaçlı kod içeriği:
{}", + "fc76e0fe415c49cc1c09bf76035fc4e9": "sshd arka kapısı bulundu{}", + "00b2409f52ef5bc56afe29ccbe5cfa2c": "sshd sembolik bağlantı arka kapısı bulundu: {}, dosya kötü amaçlı özellikle eşleşiyor [exe={};link_file={}]", + "e747da31a54cd71fb1a2860cae0f9f77": "tcpwrapper arka kapısı bulundu{}", + "a2b09164c8d23894736bcc6a646861e0": "İmajda tcpwrapper arka kapı dosyası [{}] bulundu, kötü amaçlı kod içeriği:
{}", + "a7fd9f6b190b8531039376fbbda5f482": "Kaçış riski taşıyan kullanıcılar bulundu{}", + "5d46ed5f4af3f30cfcc8bd66942f93b4": "{} kullanıcısı, [{}] komutu aracılığıyla konteynerden kaçabilir, bu da saldırganın ana makineye veya diğer konteynerlere erişim hakları elde etmesine olanak tanır. Kötü amaçlı içerik:
{}", + "4ca0a18aa36a60613104cacdae514dec": "1. İmajın silinmesi veya artık kullanılmaması önerilir
2. İmajı kullanan bir işletme zaten varsa, konteyner ortamına girin ve /etc/sudoers dosyasındaki {} kullanıcısının içeriğini silin.", + "611afea08ae3b216a34dfde4c143f46c": "Desteklenmeyen sistem sürümü", + "0af5787b053c4bf5dbe610731f7d4199": "Dosya yolu Türkçe karakter içeremez!", + "719ee030d81490fc055af0c4426aacb9": "Tespit başarısız: {}", + "ee3936ffdc910e2cb8578ad1fae322f0": "Tespit başarılı!", + "2e5c9168b81de403131125abe3537861": "Şablon adları özel karakterler içeremez; yalnızca harfler, sayılar, alt çizgiler ve noktalar desteklenir", + "1ef49203b5ddab4a6b30eddab93c6d73": "Bu şablon adı zaten mevcut!", + "356dbf2911e78ebedbd99f13df311ce1": "Şablon başarıyla eklendi!", + "4f6a25bc1019404777b1a95b85c375f3": "Şablon değiştirilmedi!", + "029a1a33fb7a828191eac587a4d98db4": "Şablon içerik formatı hatası, lütfen geçerli bir docker-compose şablonu girin!", + "052009ea42871f16153ca6fb451be303": "Şablon başarıyla değiştirildi!", + "550993f7a7c3863e988dc02458bb413b": "Bu şablon bulunamadı!", + "86eb5f101087c690c1229fffceb97cba": "başarıyla silindi!", + "c541f51f11868ef56cf50524eeddd226": "Öğe bulunamadı!", + "c3f9a083e42b21151560ba7e23667129": "Şablon bulunamadı!", + "d5d3eedff8acf67756e21b4612aaa380": "Konteyner adı zaten mevcut!:
[{}]", + "05073a33c4bfcb8113af6b3222a0cccd": "Bu port [{}] zaten başka şablonlar tarafından kullanılıyor", + "69a22232c25cb907570f837e4032ed7e": "Parametre hatası, lütfen template_id girin!", + "35698a69135017d7f8345e32cb5a87fe": "Bu şablon bulunamadı veya dosya bozuk!", + "49d5a6420e1b84d63826fa1d79e5236d": "Şablon dosyası mevcut değil", + "e199ad07ae94664293828e753ec2a9a8": "Şablon [{}] şu proje tarafından dağıtıldı: [{}], lütfen başka bir şablon seçip tekrar deneyin!", + "a3017095090064d0ec98861e35d3849c": "Proje adı zaten mevcut!", + "a9a92ec33cfb8eb3288cfc84edcd48ad": "Dağıtım başarılı!", + "a180787fbf3d2e3fac72a13cb98ce513": "docker-compose sürümü çok düşük, lütfen en son sürüme yükseltin!", + "d8b370ee0351106fe38046541c421361": "Proje adı bulunamadı!", + "30159c83433a6845a080ad879c0fb61d": "Temizleme başarılı oldu!", + "6483a5effa8c7ebce28c3838ee6f6e6e": "Başarıyla temizlendi!", + "5ded1fa085b4c46667f9c8871d00a46c": "{} Proje başarısız oldu: {}", + "0e0ae38580f51369586ba6933a7c3105": "Eksik parametre project_id!", + "78f91123fc323aab6eb38f2bfb8e26d7": "Proje yapılandırması bulunamadı!", + "c3905cecf4f4eb28fcee1f4a4ad21bb0": "status parametresi eksik!", + "f3655b96aad3f0771354a12af79571dd": "Eksik parametre template_id!", + "79f89afa2eaf7c8da6f0ac44295dba90": "Değiştirilmedi", + "5b0854983625160cfbf1295ceb6ec327": "Başarıyla çekildi!", + "ce932f534479bae87f0615fa7214e5a1": "Kök dizin taranamıyor", + "bf3d793f9f908f7d2d26a1be8dbb80fe": "Yol mevcut değil!", + "d2fe452a7fa69442d5296b8e4832ede3": "Şablon başarıyla eklendi: [{}]", + "8d92d05b95b166c5683fdb88f7de8bed": "Şablon eklenemedi: şablon adı zaten mevcut veya formatı yanlış [{}], kontrol etmek için 'docker-compose -f [compose.yml dosyasını belirtin] config' komutunu kullanın", + "428ed92bf9d3198f4c9885c11fdb2be3": "Başarılı şablonlar: [{}]
Başarısız şablonlar: şablon adı zaten mevcut veya formatı yanlış [{}]", + "70975749d256333f1b3b62c864ca265a": "Değiştirme başarısız!", + "2360e954ae9eecac28b2a3edad5e8ce0": "Başarıyla değiştirildi!", + "e8ad47bc3f119a4d4072f5cb114676f4": "İmaj adı boş olamaz", + "e5e3829984a9637afc2546ad2c87d83b": "İmaj yolu boş olamaz", + "e5f40049c6d67bd11d9a1a1889f5b84a": "İmaj ID'si boş olamaz", + "5e022f79dcc774c79bc55ee28774e2e7": "İmaj adı / karakteri içeremez", + "c00be60f9f3f7d747aadfdb124e855ef": "Başarıyla kaydedildi:{}", + "cb1f8d99b492340cf701101c87884a8c": "İmaj dışa aktarılamıyor!", + "afaa91d141ded3e37b8b9ebf8bc31c51": "İmaj dışa aktarılırken docker bağlantısı zaman aşımına uğradı. Lütfen docker'ı yeniden başlatıp tekrar deneyin!", + "5b980f2e1c82c04c91376d55d4306a91": "İmaj dışa aktarılamadı!
{}", + "e5e8c7cac8b71e94280fa08301d21e78": "Lütfen imaj yolunu girin!", + "5441400ea3bd16cffdf70c46c34f61d4": "İmaj içe aktarılamadı. Dosya uzantısı .tar olmalıdır!", + "67b97e4746a2faf5d59206a80bb28649": "İmaj içe aktarımı başarılı!{}", + "deceb44868a29ae5d579114348736cbb": "İmaj içe aktarımı başarısız oldu ve konteynerin geçici dizini oluşturulamadı. Lütfen koruma yazılımının bir engelleme kaydı olup olmadığını kontrol edin!", + "8eb05618b0f04e727b0685427fd49c8e": "İmaj içe aktarılamadı!
{}", + "721aa02577670c1049ea9d12caa8938c": "Lütfen doğru Dockerfile yolunu girin!", + "736df9a7c491f3299efdeb9f7d7e9e0f": "İmaj başarıyla oluşturuldu!", + "6e85568dae869303ca7a4486f55458a3": "Oluşturma başarısız, bağlantı zaman aşımına uğradı", + "5bb301b85cc1f42e56174d3d9a4c0286": "Oluşturma başarısız! {}", + "f51455b323ec2db8004c812001043330": "Oluşturma başarısız! Belirtilen Dockerfile bulunamadı", + "8e1b9c9b75950d0feba6813d32766e61": "Oluşturma başarısız!{}", + "eba0ec758a6464a20c14c0f23ceee62e": "İmaj başarıyla silindi!", + "8dd326278d09a3ac4bc56cf725c8f262": "Silme başarısız oldu, imaj mevcut olmayabilir!", + "11ead921bc0e3d94f1f9e0db4bf8ed8d": "İmaj ID'si birden fazla imajda kullanılıyor, imajı zorla silin!", + "43993616c7433350755d30a3b4d065dd": "İmaj kullanımda. Lütfen imajı silmeden önce konteyneri silin!", + "d6992c3fcf2269c249cd5f18f1ac2c11": "İmaj silinemedi!
{}", + "0c6c071174fde5b47c9eef8088c17a89": "İmaj silinemedi, Docker bağlantısı zaman aşımına uğradı, lütfen yeniden başlatıp tekrar deneyin!", + "a3ba80a8e1e0d9af94c809e909431b3c": "başarısız, [{}] deposuna giriş yapılamadı, lütfen bu depoya tekrar giriş yapmayı deneyin!\r\n", + "cc40077b6ee61fbfa35713a21e8eb866": "bt_başarısız, [{}] deposuna giriş yapılamadı, lütfen bu depoya tekrar giriş yapmayı deneyin! {}", + "60b488c60b6747bf34a86a69740b636d": "Gönderilen imaj [/] içeremez, lütfen şu formatı kullanın: imaj:v1 (imaj adı: versiyon)", + "44dbec830b87eb037e8fcbb0e1b56160": "Docker genel deposuna gönderilemiyor!", + "b4c46001066c912344e3bdb0df86e848": "[{}] Deposuna giriş başarısız!", + "0ebfb094c6482acb049e0dd0d3107307": "Gönderme başarısız, imaj etiketi hatası, lütfen şöyle girin: v1.0.1", + "d26bdd6e86002ed92089dc71347822ce": "Gönderme başarısız, bu depoya gönderme izniniz yok!", + "82058092ad7d2c7aa5e2f012b6544e59": "Gönderme başarısız!{}", + "2b228d4775d23d2725ec227ba648bd43": "Başarıyla gönderildi, yansıma:{}", + "9e396f640866ded9c3a47268f96a36e3": "İmaj çekiliyor, lütfen bekleyin...\r\n", + "7e5f4d488d318dc7c235095c8456f5e4": "İmajları çekin veya arayın...\r\n", + "5a7377f73fc144fd961e8b2ffeba66af": "çekme başarısız!\r\n", + "97a6dfe3a273202edffe31af7a43e220": "Varsayılan yansıma istasyonu kullanılarak imaj çekilemedi! Sizin için başka bir yansıma istasyonu deneniyor, lütfen bekleyin...\r\n", + "484616540fc726ef4f52e97a1c2f0fef": "İmaj çekilemedi!\r\n", + "1cd77329b2bddfb200e656214b1fdf32": "İmaj çekilemedi!", + "63c709b9759af42fef890d539d822575": "Çekme başarısız!{}\r\n", + "b4aba972332d1f3728171905a033fb99": "[{}] imajı başarıyla çekildi\r\n", + "2fae21ffd185d9e9730b39bc7de23852": "İmaj başarıyla çekildi!", + "8a635442294fd90195a43d9a1672fc3f": "İmaj çekilemedi!", + "711de72d616e7abb29dfa919244d382d": "Çekme başarısız, imaj mevcut değil veya özel bir imaj olabilir. DockerHub hesap şifrenizi girmeniz gerekiyor!\r\n", + "e9511e26273da5b4537b4683668b548e": "çekme başarısız!{}\r\n", + "05d13bf5dcc37754db74b2356e6e117c": "çekme başarısız, Depoda böyle bir imaj yok!\r\n", + "714841af7f3de6c8d99ba03f4cee0ee5": "çekme başarısız, İmaj formatı yanlış, örneğin: nginx:v1!\r\n", + "2d941c4fa4da32ccafa8670a07f23c1d": "İmaj başarıyla çekildi.", + "5282194697748d9fcd1ccd8a90428424": "Bu yansıma imajı mevcut olmayabilir.", + "d6facab17334983e7c6f8c561c239820": "İmaj çekilemedi, bu özel bir imaj, lütfen hesap şifresini girin!", + "b507deb7848d566982b339265c8f5482": "İmaj çekme hatası

Sebep: {}", + "e90811ef0a60b6d299b4e1064d7788d0": "Kullanılmayan imaj yok!", + "f343313c101aeaff0516990ebea3dcef": "silinemedi!{}", + "90ecd58b3feb0b2be11f0af685ad39fe": "Kullanılmayan imajların silinmesi başarısız oldu ve Docker bağlantısı zaman aşımına uğradı. Lütfen Docker servisini yeniden başlatıp tekrar deneyin!", + "4097585e32152eb74bbee5ab8c463718": "Docker servisi anormal çalışıyor, lütfen yeniden başlatıp tekrar deneyin!", + "26a0931677e111565f3ff7d059b94d8b": "Ağ geçidi ayarı yanlış, Lütfen alt ağ ile eşleşen bir ağ geçidi girin: {}", + "def2ba1ce0e4d77692c14e5b984636fa": "Alt ağ adresi formatı hatası, lütfen örneğin şöyle girin: 172.16.0.0/16", + "716eeeb727fd667635ccf1d18891d46e": "IP aralığı formatı hatası, lütfen bu alt ağ için uygun IP aralığını girin:", + "e310a873e7812c7f994d482604061fee": "IP aralığı [ {}] zaten mevcut!", + "db88b911ea66744c24b22efcafef2101": "Sistem çekirdek sürümü çok düşük, lütfen çekirdeği güncelleyin veya başka bir ağ modu seçin", + "9cebb294a44695984eaaf2134df63a51": "Mevcut düğüm bir Swarm değil ve kullanılmadan önce yapılandırılması gerekiyor", + "85ac438bd64f13e2ad61cf60e5ade3d3": "Ağ eklenemedi! {}", + "640520ffb5d9c01336710bad3ea6d7ff": "Ağ başarıyla eklendi!", + "87574a543563d2e037b87a6cf705e3ff": "Sistem varsayılan ağı silinemez!", + "23b6d9d6c36088deb928efad7fb9b63b": "Ağ kullanımdayken silinemez!", + "2aa70dad9bff94a855fdde3fc113e6c5": "Silme başarısız! {}", + "8f512551c7ddf61331c3d068e80c642c": "Kullanılmayan ağ yok!", + "08efe6a4e12437b79225c8b59fd710eb": "Ağ kimliği boş olamaz", + "a636381ee5e6d6d021fff745ca132905": "Konteyner kimliği boş olamaz", + "31a75a8d220d37dc4a7ea28d0f24cc19": "Ağ bağlantısı başarıyla kesildi!", + "a2b9895fca7698902da9319b52392366": "Konteyner ID: {}, mevcut değil!", + "c81f03a558307d5aaf3b339af28e04ff": "Ağ ID: {}, mevcut değil!", + "12a90fe85b8863e1dea43284988d7750": "Ağ bağlantısı kesilemedi! {}", + "6226d2fef3bf047236f0f3a57dcd71fb": "Ağ bağlantısı başarılı!", + "d882b8375782b1bc56ccaf84ed27d20b": "Ağa bağlanılamadı! {}", + "221d1ea3c23f430e03a4486dca865014": "Konteyner mevcut değil, lütfen tarayıcıyı yenileyip tekrar deneyin!", + "7e88e25ea6c628c2d03c526c04af3eed": "Konteyner durumu alınamadı: ", + "ae178e022cf2fe30f402145572528de8": "Birim adları 2 karakterden kısa olamaz!", + "9f9663b59d32947ff1f2c5b364c571b8": "başarıyla eklendi!", + "365c770f123d22093084908ebcdc75fc": "Birim adı zaten mevcut!", + "2dc51ae60242f0e5b56a9f0d176f91d4": "ekleme başarısız oldu {}", + "307feea9ab8928f39595316b11992cb1": "Sürücü seçeneği etiketleri sözlük/anahtar-değer çiftleri olmalıdır!", + "f529949f8a98615c109ee8b8eb9f7656": "Ekleme başarısız! {}", + "2a0f93407bb61e2403ccd032cbc64e3e": "başarıyla silindi", + "a4ec5c1fa47f2ce0c875f91ea4e7dd08": "Depolama birimi kullanımda ve silinemez!", + "11ff7153b67d275618dd3a62d1e56373": "Depolama birimi mevcut değil!", + "55c31f03e88bd6ad4ce7f68d425648dd": "Kullanılmayan depolama birimi yok!", + "5395cc8155f62a666b8f0d0f9f207676": "Depo bilgileri zaten mevcut!", + "9b10e472adfe6372c9175b9002f098fd": "[Resmi Docker deposu] Düzenlenemez!", + "5858be44c285048a8f51c126b2fd23e9": "Düzenleme başarısız! Sebep: Hesap şifresi çözülemedi! Lütfen depoyu silip yeniden ekleyin", + "7e51d0e26e1b467aff3c89d3e0751ec0": "Düzenleme başarısız! Sebep:{}", + "6478f13dd58e5a4329e19be9020243ff": "Bu depo bulunamadı", + "d5309f3186607eb36bee41e8a28cea3a": "Düzenleme başarılı!", + "9e20bffc0d4093d18fcbc5c98fa0fd87": "[Resmi Docker deposu] kaldırılamaz!", + "a62336a87697ab6911ba550015a798ef": "Silme başarısız, Depo kimliği mevcut olmayabilir!", + "c28bc5c07ec6f2b56777ac7c852dd64b": "Kurulum Başarılı!", + "f2bd8f0373084151bbc07e8c1409e37c": "Kurulum başarısız!{}", + "54197759827cfaf0cdb1e213fa49771e": "Giriş testi başarısız! Sebep: Hesap şifresi hatası olabilir, lütfen kontrol edin!", + "657a0b7e82731fb4ae516d14081f17d0": "Giriş testi başarısız! Sebep: {}", + "11cde3a2ca81c845978b98e4a6ec471e": "İzleme kaydetme süresi pozitif bir tam sayı olmalıdır!", + "b314fb25bf654a2256bf53b0f6986c93": "İzleme verileri 999 günden fazla saklanamaz!", + "60e46aeaed758964902dd7ae99858f03": "Mevcut", + "1ba194462d31177d3db4ad6bf18fdbe5": "Docker servisi kurulumu başarısız oldu, lütfen aapanel izinsiz giriş korumasını kapatıp tekrar deneyin!", + "422f78617d6852c41e370982d73235ed": "Kurulum başarısız! Hata nedeni:{}", + "dca5bd22c99a74f74074a3a53d78a58b": "{} başarılı", + "be62f7640f2c5b730ba50ecc580ae618": "Genel yapılandırma dosyası hatası, lütfen {} dosyasını kontrol edin!", + "8ebe0b989b543cf96149811c7a1f3fe2": "Hızlandırma adresi [ {}] Format hatası
Referans: https://mirror.ccs.tencentyun.com", + "ec1ec17a5862a949e277432e1d09484d": "Kurulum başarısız! Hata nedeni :{}", + "179a2001e96bb8d0475488f80c7216a8": "Başarıyla güncellendi!", + "f4dc83b81fe6993f99c2b54494eeeec1": "İzleme başarıyla başlatıldı!", + "af79fd88d4b6f7e8a1ac05e199747fdb": "İzleme başlatılamadı!", + "6f4d03d4d1ee0bd282ea744730b7ceda": "Docker izleme başarıyla durduruldu!", + "4cc06d8560bb116a38a5aae1458cbe4a": "docker-compose dosya yolu boş olamaz!", + "8d885b86e8562c2128689c4a2601c054": "docker-compose dosyası mevcut değil!", + "7bdd4d85dda1275e2be709fd9e0d71dd": "docker-compose dosyası yürütülebilir değil veya bir docker-compose dosyası değil!", + "c28e19f0398bc1819a890878021836c1": "Kurulum görevi zaten mevcut, lütfen tekrar eklemeyin!", + "a87b64b2d19f29438274f80ce36a3579": "Kurulum görevi sıraya eklendi!", + "c1710a5899fa03f7ad5ea1945a91e4f8": "Docker'ı kaldırmadan önce lütfen tüm konteynerleri ve imajları silin!", + "d388487780fba74e4ff3f3b9ffbce58b": "Kaldırılabilir!", + "c4ba6d01fd53333a6e7e85707758c550": "Kaldırma başarılı!", + "b7affa7cc663144bc99b9edb3f1a027f": "Onarım görevi sıraya eklendi!", + "cb49a4daafc9d27bd460967891968225": "Başarıyla kaydedildi!", + "739722f14db791bd300e08318a48ba59": "Kaydetme başarısız, neden: daemon.json yapılandırma dosyası format hatası!", + "58fcf0699f38a60c8025330585ac205a": "Kaydetme başarısız, neden: {}", + "720d2290c3082615c0f79894bfdcabd7": "Lütfen doğru IPv6 adresini girin!", + "c0ef08aa7bd6276137ccd491a8041223": "Yedeklenecek birim yok", + "584e35dd4a55da88bd232ac7a19b9b95": "Yedekleme görevi başarıyla oluşturuldu.", + "0b08674e1c87f3f8508a4ae9b0c160f8": "Yedekleme görevi oluşturulamadı {}", + "13d829d3f2b78c971207d944f2a96c55": "Dosya silinemedi, neden: {}", + "6169a7282b361deb5f6f5b6e18f9426e": "cmd parametre hatası", + "286933a4f24bee0eed1f9300f70a30c7": "Yalnızca docker run komutu çalıştırılabilir", + "a46a6b274dcbfc5a629d234c2816a165": "Tehlikeli semboller var: [{}], Çalıştırmaya izin verilmiyor!", + "8135363a6a5e2c145c6cedab8ac1e510": "Port formatı yanlış, bu yöntem desteklenmiyor!", + "3b825826968319b6256c4020cc49676f": "Sunucu portu [{}] zaten kullanılıyor, lütfen farklı bir port ile değiştirin!", + "70b35bb3bb2fe425a981e8cc68c06906": "Lütfen ihtiyacınız olan imajı çekin", + "e768fcd4ff22e2f3cc2535f1ea9c5682": "İmaj mevcut değil!", + "7dc29c1ed7012513111b11f56c73a4f8": "Bellek kotası kullanılabilir miktarı aştı!", + "73aff7a8ab244bc5d0d1448e9a0ae6f0": "Bellek kotası 6MB'den az olamaz!", + "2c4eca852599890038970a7e0f384470": "[{}] imajı mevcut değil, [Zorla Çek]'meyi deneyebilirsiniz!", + "56a727f1edc5f008ee8f41a638662322": "CPU kotası kullanılabilir çekirdek sayısını aştı!", + "45c163fd880ce5a21373fbd53bbcd642": "Bellek rezervasyonu 6MB'den az olamaz!", + "bf6b8400e1726aadf1cee7d6c1c5d173": "İmaj adı formatı yanlış. Örneğin: nginx:latest", + "f0beb6e739348ae10c9f15cb91638d2f": "Konteyner oluşturma başarısız, detaylar: {}!", + "e5d4020fc5f8c26e22add8db8a62f06a": "Bellek kotası bellek rezervasyonundan az olamaz!", + "c68d012ef602a12e38636c306c10c894": "Konteyner adı veya ağ köprüsü zaten mevcut. Lütfen konteyner adını değiştirip tekrar deneyin!", + "c4272ed0aaf1e7e2bcc08f1003c2391d": "Bu imajda bir başlangıç komutu yok, lütfen konteyner başlangıç komutunu belirtin!", + "a73eb9f1fb82232c9f70bb80024a9d9c": "İzin istisnası! Detaylar:{}", + "196a4f415d73b007e0627563a530967e": "Konteyner oluşturulamadı! Lütfen uygun bir zamanda Docker servisini yeniden başlatın!", + "ea7b2beec49a425b5742339d00a5aeb8": "[{}] imajı mevcut değil!", + "c29c7e4f72858367cd21d10303411592": "Konteyner adı zaten mevcut!", + "c4dc041770b8a0e34d1399141d0e4de8": "Konteyner adı geçersiz", + "97bcbd1e3b4df0f1c6ec642e7be17afe": "Sunucu portu {} kullanımda! Başka bir port deneyin", + "994e5a057aca3524ba773ec33228e184": "Oluşturma başarısız! {}", + "00ff90441ea0bdece5d9e5c72efa14a7": "Konteyner oluşturulamadı ve Docker bağlantısı zaman aşımına uğradı!", + "8879635d66ad75dcbfc8c31ba1351116": "Konteyner çalıştırılamadı! {}", + "facfe02e3070c389fe486efac23f2ab6": "Konteyner başarıyla oluşturuldu!", + "71dc70f7ab3a4bc0c2a7141718d3a9b2": "Oluşturma başarısız!", + "ed0029af5f77a5dfacbc2452e8c3ec92": "Konteyner kimliği anormal", + "c5b3db7efde90edcb803a4a79e559b21": "Yeni imaj adı boş olamaz!", + "b10305369ebb41ef24699b8137733465": "Yansıma mevcut değil!", + "d567f353b12e618571935661f31c2a16": "Konteyner düzenlenemedi ve Docker bağlantısı zaman aşımına uğradı.", + "c558fedcb5850939202e684ff32c7c50": "Güncelleme başarısız!{}", + "b84bf4d95051856f9965b55bb5402de3": "Konteyner mevcut değil!", + "f2124ee490df203b3f86509401c76a09": "Konteyner başarıyla düzenlendi. Belirtilen [{}] ağı oluşturulurken alt ağ belirtilmemiş, bu nedenle IP özelleştirilemiyor. Size otomatik olarak bir IP atandı!", + "b95d75cd8e04e9cca297c3cd1091b2eb": "Konteyner başarıyla düzenlendi, [{}] ağı ayarı başarısız oldu ve size otomatik olarak bir IP adresi atandı, hata detayları:{}!", + "4363bb34365a67238ecc6a98ce46b361": "İmaj oluşturuldu ve {}", + "4bb30e8d57a6a7e548758daf4ac33983": "başarıyla gönderildi!", + "a32e1f09fc2739d94c51a7168675e0e9": "Gönderim Başarısız!{}", + "9ff81cc845af62a773af3412bdf7d9a0": "Konteyner kimliği anormal, lütfen sayfayı yenileyip tekrar deneyin!", + "d8f5602e197fb8b3c772f071ad4a8baf": "Kabuk türünü seçin!", + "9ad72ac09babc507baa6e165041e128c": "Bu kabuk desteklenmiyor - bash veya sh seçin!", + "172f51d3307b02aeb6dc703a442f4724": "Konteyner alınamadı", + "684fc00ae67504a56c09ef71431b1261": "Başarıyla dışa aktarıldı: {}", + "3ab9d9b76e8d22434930622b5f0acc6a": "Konteyner silindi!", + "d1fe1d6e5e8c17b60f749ad36ff3bcaa": "ipv6 sunucu portu [ {}] kullanılıyor!", + "9f13645ac42f0c9908a35637a525d561": "ipv4 sunucu portu [ {}] kullanılıyor!", + "8708a53096a7d7bce5d3042be8feb736": "Durdurma başarılı!", + "5dc7c5bba9e3ff6d293a9cd6459bc1ae": "Konteyner duraklatıldı.", + "458c9e6b1324cc3843c313c99a9c8623": "Durdurma başarısız!{}", + "d40b23e847e0619c6e2133eebfd51807": "Konteyner kimliği boş", + "239aa38adb7ae2339600a015d8695f3d": "Konteyner ", + "b10f78da3571670e8567e599aba8d475": "Konteyner bilgileri alınamadı!{}", + "4e62f10d98b7560d22cf614879790624": "Konteyner kaydı yok", + "4bfb779dfe8300c1f2da1f1dae06a4ce": "docker bağlantısı başarısız", + "e9b0defc5226436d7d2580972376cad0": "parametre hatası, Geçiş: tür", + "d0e42e6dd40adc10d0027ab9993d8741": "Konteyner günlük dizini mevcut değil, günlük kesme ayarlanamaz!", + "3af555ace78d310a5db6e9449ed6843b": "Başarıyla açıldı!", + "641fe4d504d197e8570f3bc693f5c15b": "Başarıyla kapatıldı!", + "e04e8dc32dc0f13aea94cb4996a0057c": "Günlük dosyası mevcut değil", + "3e0f56b62a18226db6b8c71e8c917be4": "Günlük temizleme başarılı!", + "81259d9e5861e65db29844c19d9feb80": "Kullanılmayan konteyner yok!", + "53a5658dfa0a2e85083fd63b961d35be": "başarıyla silindi!", + "dac7d97aeb94cf9d3b3b5d7d072c4cff": "Lütfen tekrar denemeden önce kurumsal müdahale korumasını kapatın!", + "32ca87e65c5fc75d3857767417b56439": "silinemedi! {}", + "b0ea22ff0b389c2a32b8f4367ab650db": "Parametre hatası, lütfen yeniden başlatma politikası restart_policy'yi girin!", + "3b2f70397fa8a827c7146cbd900f7222": "Güncelleme başarısız! {}", + "c147897a9d1746a58de531e9c0158c23": "Konteyner başlatılmadı ve yeniden adlandırılamaz!", + "a89c2e8f7eb81399f984330e55014c6f": "Yeniden adlandırma başarılı!", + "8a615b544c027899738b19f2cc40fd93": "Yeniden adlandırma başarısız! {}", + "3506ae5524d7b5dbd75ed328349e065e": "Başa sabitleme başarılı!", + "363b76cd4207ec1adb31b9f7ee3930c8": "Sabitleme kaldırıldı!", + "0fffc4397713115e14ef45273241dfbb": "Parametre hatası, Lütfen şunu girin: not!", + "dce2cbc7791016e4876ab144e53b4f82": "Parametre hatası, Lütfen şunu girin: id!", + "7bdaccb3d20432c5e0150862ab1cc3f3": "Eksik parametreler: ad", + "9b90b5b49486a61d9b0e6dbbbcb56cad": "Eksik parametreler: container_info", + "b23d7110e9bf6539b4964afe0d4934e2": "Gruplandırma zaten mevcut", + "a90ca6939fe71693c145f50596c6e0e6": "Konteyner {} grup {} tarafından eklendi!", + "e3cf7e2f2d14257e7ea33657b135d534": "Ekleme başarısız:{}", + "fcbeb38a63ced9d3de476fb08c31d71e": "Eksik parametreler: id", + "fe4e0032f69b4100ed143d475e8b5050": "Düzenleme Başarılı", + "6c4ed52bea35c4c43839b8f0b44489f9": "Düzenleme başarısız:{}", + "6c0129a45e9da4e1820335f3d06a869f": "Silme başarısız:{}", + "2a743a86676fd52214d3c0af1b0238b5": "durum Parametre hatası", + "f95136e5c1f3ccbb09ace8fc24f1e0ca": "[{}] konteyner işlemi başarısız", + "2e01172e31495f41fcebcf3f831cc82c": "İşlem başarılı", + "244a98f8c45f938980f48b168aef02c9": "İşlem başarısız:{}", + "fc431240dfc80a731900d5f2ddb6dfc3": "Konteyner başlatma sırası {}", + "5ea6c6eea14c24c92eeeccaeea5c46dc": "Geçersiz durum!", + "45a0bbacbe8d5ea062167e88423e4573": "nginx veya apache sunucusu algılanmadı, lütfen önce birini kurun!", + "bdaf560796795d6a303bc9a1d75a34c5": "Proje Türü [{}] Mevcut Alan Adı: {}", + "4588a786e80c83c2cbde37b930c3d778": "Sunucu portu [ {}] kullanılmıyor, lütfen tersine çevirmek için kullanılan portu girin!", + "6888cf6586ce3c187150146a2d1db0ac": "Ekleme başarısız, veritabanına yazılamıyor!", + "e6bddfc6a0bbf72d592236c61b411f9a": "Hata ile ekleme başarısız oldu: {}", + "1bfa1b1738332c4835f5efe7c54ab9c2": "parametre hatası!", + "0d66954ff42aa042c219a356266f5bc0": "Ters proxy bilgisi algılanmadı!", + "7c6f761019365f8a5cfb2fb54d9e199d": "info.json indirildi!", + "10066fce84fe34e9cc33e0338532988b": "info.json indirme başarısız oldu!", + "0672e579ab0e3454713eb683ddcc4859": "{} İndirme başarısız oldu, lütfen yeniden senkronize edin!", + "8e790e81fffa7f51d099f710bd8f82cf": "{}yml dosyası testi başarısız oldu, {}", + "371acfea202589c4efd6724888f66595": "{} İndirme tamamlandı!", + "51cf61e34b3f71ce1e430cdfcf129b80": "{} Sıkıştırmadan çıkarma başarısız", + "c59b65890496cdf2b14d127a1f76f73d": "{} başarıyla çıkarıldı", + "0117718c35c7a16a62de5c259e1d35ee": "Dizin oluşturma şu nedenlerle başarısız oldu: {}", + "374e3fe41b55a0b29420e455fb514dd6": "Depolama birimi oluşturuldu", + "6d0d40f64f89227daf345eb2257638e8": "{} Boşluk içeremez", + "a00b49ace55de909015029a0d6d6096f": "{} boş olamaz!", + "54498312bb8f97ce07a9a0b0b47cfad1": "Sunucu portu [ {}] kullanılıyor, lütfen başka bir porta değiştirin!", + "47b74e08252747225c49ea0cb011c79e": "Proje başlatma başarısız {}", + "838089af9a2941a49862f342c056a8ca": "Proje oluşturulmaya başlanıyor", + "9b149598fb30f54fec9e82a3d121a464": "{} zaten mevcut, lütfen proje adını değiştirin", + "634370637f6a5b88940c75f826953d0c": "Kullanıcı proje dizini oluşturulamadı, detaylar: {}", + "f7b14d3f642d711a23d5a0cca725fd0d": "Proje dizini kopyalanamadı. Detaylar: {}", + "cb337dbfbc18aafa482051b6fc349dea": "Yapılandırma dosyası alınamadı", + "84d3fc0c1c70fcd6fdd7ca7c3be11225": "Proje zaten mevcut!", + "a280b122a0b3249c26b1f94ad4573f50": "Yazma başarısız!", + "72b8d771409a71a6650a65e1174cec30": "Proje başarıyla eklendi!", + "0fa934d82d7863e34606d19520d12e48": "Geçersiz konteyner sırası!", + "eedeb135fe678559787fe2cb304f24cc": "Konteyner sırası başarıyla değiştirildi!", + "0c1dcdb6582992fa9ec4169c7c958e47": "Proje mevcut değil.", + "4ec9c8311b7814ee0f17b634cb7a6ae0": "Proje aralığı başarıyla değiştirildi!", + "cda91d4feb0c7cceb0fa1aeabcf536b4": "Konteynerler sırayla başlatılıyor!", + "97f2a2dcbe0d211b8972c6151950b213": "Şu konteyner çalışıyor: {}. Zorla durdurulup ardından başlatılmasına izin veriyor musunuz? Ayrıca çalışan bir konteyneri kendiniz manuel olarak durdurmayı da seçebilirsiniz!", + "9d160eff84c44041cf4eb5c624874c4e": "Konteynerler sırayla başlatılmaya başlanıyor!", + "33b5d440d17f3837309707b5b049e899": "Konteynerler sırayla durduruluyor!", + "b687943a0a61ed9f039213d7c5e0fcca": "Konteynerler sırayla durdurulmaya başlandı", + "ec7b13b39406a81e90df7b7d06a4b134": "Geçersiz durum!", + "0df1e0596d9e1835d62be1b5ba537fac": "Konteyner {} zaten proje grubu {} tarafından eklenmiş!", + "d6d90f977089e176ec7443db17c41279": "Konteyner başarıyla eklendi!", + "04cd9210bf9290bda98bc76ca4bc59fd": "Konteyner başarıyla silindi!", + "d867a5e10a7a9485129c679b85453e3f": "Proje başarıyla silindi!", + "68ae8c43a52aac63c5c62e1974afdda6": "Betik kimliği boş olamaz", + "eee298ea1d9259c2f0e2061ecd89c21c": "Belirtilen betik mevcut değil", + "b68a8dd0c887719b7cc3e10dc11843ce": "Aapanel'in yerleşik betiği silinemez", + "aefb82d7caf36c7f34a4cf60168a1297": "Bu betik şu anda [{}] görevi tarafından kullanılıyor, lütfen önce görevi silin!", + "4223589c4945a6757845760cf467a183": "Bu betik şu anda [{}] görevinin olayı tarafından kullanılıyor, lütfen önce görev olayını silin!", + "2e32a56c4ec44d75ff6cf5c6ac366db8": "Betik başarıyla silindi [", + "16687cbe6e87af3bc2762f0410453ec5": "Betik adı veya içeriği boş olamaz", + "1e156c08409accc1dc3da5c395c3ea22": "Dönüş türü hatası", + "4371a6ff5a908b5ed6f43d52b49f7d30": "Betik türü hatası", + "91896a15daf4558843249e11b7aa1fc5": "Değiştirme başarısız", + "919c17a8f22c59f9af57399aa649003e": "Betik başarıyla değiştirildi [", + "71c95be7ca536d92d8f175fa245ddeb0": "Bu betik parametre gerektirir", + "7ef6898209b89f4ace813b19f5eac840": "Betik çalıştırma hatası, lütfen betik kodunun doğru olup olmadığını kontrol edin:\n{}", + "2086e84cd166412cf7236bdfb66e6d6f": "Çalıştırma başarısız, hata mesajı:\n{}", + "7a38e49c19eace49f0e9a0d03efadd1b": "Çalıştırma başarılı: \n{}", + "5e1459e1ff5449309bd13d173dca1197": "Görev adı boş olamaz", + "028f9aecc8c5edf83c2480f3ad9a62b0": "Betik içeriği ve betik kimliği aynı anda boş olamaz", + "540b2cc165934ef688f12e044c500f69": "Görev türü boş olamaz", + "14ccb76798e0752c668bf447e7c536dd": "Crontab ifadesi boş olamaz", + "db17fc000dce92ec98ef53267f816b9c": "Geçersiz crontab ifadesi", + "cb541ef3c967a13cb4b1185a661214cf": "Betik mevcut değil", + "ed1bb81caf44e6b159848fcd0b28b0a4": "Bu betik, betik parametreleri gerektirir", + "14753fa53d0a8928c69d56611bdb43d7": "Görev zaten mevcut", + "aa76a4150f28fd8de372eb5fa2646a2f": "Ayarlanan başlangıç zamanı mevcut zamandan daha erken olamaz", + "89c375395150b0550b20cdf31faf4ef5": "Görev mevcut değil", + "1df9f0729d55ed5e561bdf73b6b14976": "Görev kimliği boş olamaz", + "497b38d4da5f19ed3f041f4ae6af6059": "Run_stcript_id ve run_stcript en az bir geçerli değer gerektirir", + "cf76609030a04a8e357171a25d76f2e8": "Lütfen şu operatörlerden birini kullanın:{}", + "bb4d743f102448bf1ad62e1f1bd25e21": "Belirtilen görev mevcut değil", + "56fcd6720b5bd174b1d614b7c7761fd5": "Betik parametre gerektirir, lütfen parametreleri doldurun", + "809888a81d143c1118d056643719a133": "Tetikleyici olay eklenemedi", + "dd66e7c4d78fab1dfd30524d47af971e": "Olay kimliği boş olamaz", + "8abc3d5d0d73a76ae66603858617ad1b": "Belirtilen olay mevcut değil", + "858080b55748bca57bca9006f2c36e10": "Olay değişikliği başarılı", + "f9fe8aba24799e53034cfd45a3c96824": "Olay silme başarısız", + "101da618f72223d3eac9e66fe510b04f": "Görev olayı kimliği boş olamaz", + "bee903cc3d03ab2c237eefb1d601fbcb": "Betik çalıştırması hata mesajıyla başarısız oldu:\n{}", + "1d78758685e5e2f4efeeb490f8521abd": "\\n", + "add390e6467c956fbb7f6da0f51d23d6": "Gönderme görevi yürütüldü", + "e8edb193e1cb171a17efe2765d72af71": "Dosya mevcut değil", + "63d325d5c4dfd07afdf888fdf727542e": "Başarıyla içe aktarıldı, {} abonelikten çıkmış kullanıcı atlandı, yinelenen e-posta adresi: {}", + "6b803f13e4c829ed6a65c0d5976af511": "Anormal veya hatalı biçimlendirilmiş dosya içeriği: {}", + "d6cd6db68490fced73e7bcf3e269fc3d": "Seçilen kişi listesi boş", + "721537a954932be33814ab079df57c78": "Gönderim kotası yok, lütfen yedek paketi satın alın veya gelecek ay yenilenmesini bekleyin", + "debbea6b34bd0edb5bed5be7d68044c1": "Kalan miktar {}, tamamlanmamış görevin kapladığı miktar {}, gönderilecek görev için gereken miktar {}, lütfen ek paket satın alın", + "cb8c344616c2690af7d75e87f9c80aea": "Çok büyük bir sayı seçtiniz", + "4b0dae036acd930ca1c942474b04738f": "Gönderen mevcut değil", + "cd0c2875bbba989082b0bea54837c422": "Görev başarıyla eklendi", + "48a84605a7e7d8938acea34996b55bb9": "Görev eklenemedi: [{0}]", + "97b655f6f5593c96a89bfca9237ce36a": "Şablon mevcut değil", + "2efc2204459539d0ed963d7df3a0b797": "{} dosyası mevcut değil", + "2e8a8d9cfa45e93c3c8a673bee0833df": "Gönderildi", + "2c09afb2ce9a25b5e33e0b5eb7e10cb9": "Posta gönderilemedi, hata nedeni [{0}]", + "2af4936790c12bc9522e844a3187f142": "Parametre hatası: mail_type", + "cf6a1096f4f9f5c3632f03ddd00f8436": "Bu tür zaten mevcut", + "c92cf27565701074c9297c9f6e001056": "Başarıyla eklendi {}, başarısız {}, yinelenen posta kutuları {}", + "119acd39beb57884b7fce4275c0324d9": "Başarıyla eklendi {}, yinelenen posta kutuları {}", + "0b898fa833d00b281702ae7791a5624d": "Yalnızca yürütülmekte olan görevler duraklatılabilir", + "4cd93d208ac9f476b452f930ced5e3e0": "{} başarıyla tamamlandı", + "e38bacaba20440245e0aae88f984f78d": "Gerekli parametreler eksik", + "ca561681c6ba497c7de8fdecd5c05eba": "Hedef grup mevcut değil", + "9f965fcbc009b2b75dcef2e32a211054": "{} kişi başarıyla birleştirildi", + "aac60240e4a7b953b64974b957b43376": "Birleştirme başarısız: {}", + "aeaae7277bd406b03c27e12734a0073b": "Parametre hatası: id", + "3642b2d34114d470809e030fce8de34c": "Parametre hatası: temp_id", + "60287ee434fca4db4b62ab7fdff8486a": "Parametre hatası: addresser", + "c11022f75c572cd1b4641941845bf87c": "Parametre hatası: task_name", + "2816e3fdfcafd8e052bd036c330ebda2": "Görev eklenemedi: [{}]", + "db5b08f3936abce2e99f9aa1466e7258": "Parametre hatası: temp_name", + "6f095d43a6d1080f4694b669909d030a": "Parametre hatası: type", + "f7ba379966ef8be4f17f1ac316a49daf": "Düzenleme başarılı", + "08aca4a0ec8954c5a6a29a983ecbc55c": "Bu özellik Pro sürümüne özeldir", + "0f506b3e8117fe5c52c90146b2ee9e67": "Parametre hatası: a_record", + "33a5c77b138502b17baaa51f9bd88b2c": "Hata: {} için DNS kaydı bulunamadı ", + "4c8c4f693124ee1b937567d3ced11636": "Test iki dakika sürecektir, lütfen sabırlı olun ", + "219f93d55b24b6791d3a5c63b808a191": "Parametre hatası: ids", + "8c2fb0d74bf0b951dd8ada148c16ecb8": "{} dosyası mevcut değil", + "168861bb3452cc8ed67893c706ed69e5": "İçe aktarma başarılı!", + "08c91ce439acde3feb04454e8b2a4f59": "İşlem başarılı oldu", + "1d099d9c8e30376440abb2b5c7d09826": "Grupta alıcı yok", + "0c8a0434183377840948927ddf49c467": "Herhangi bir grup için veri bulunamadı", + "da500c6dc5f1ca7ce4e470705b7182a5": "Parametre hatası: group_name", + "81fa0fe3c0d0b866d13f32f822668ce2": "Parametre hatası: is_new", + "5abc9343e29dd1d774a1ded26c0fbb56": "Grup adı boş olamaz", + "08e36a7534385774e7972fc88ea1ca5d": "Ekleme başarılı", + "1457aacc3deb7a7f5efc28ff7bb84786": "Ekleme başarısız {}", + "2ac1d92fabeb3bb03f8cdc961c26f46b": "İçe aktarma dosyası mevcut değil", + "7dde3a45eff5e71e3098852362fd1395": "İçe aktarma dosyası boş", + "f4b7c8d194eba0221d53d49a71a9bed1": "Grup mevcut değil", + "7f9f8d114a082f1432fd4d508b39201e": "Grup işlemi başarısız: {}", + "5ca563a6955a312b2962d754d2bca84d": "{} kişi başarıyla içe aktarıldı", + "611be97ff2f405d97472f1e98352f5f0": "İçe aktarma başarısız: {}", + "93eb05555388b86db78c49f986669329": "Düzenleme başarılı!", + "183da276619df3a31c7153852caa43b4": "İşlem parametreleri eksik", + "6eeff7c159aeb90605c9eeaa1d900054": "Doğrulama görevi başlatıldı", + "616e6da41bf332fd4a725eced516860f": "Doğrulama görevi başlatılamadı: {}", + "694ae897645ed4f6c18dd496f0916e2d": "E-posta başarıyla gönderildi", + "3c4eeb0e0301063ab4f7b6e12b3ccc65": "Posta gönderilemedi, hata nedeni[{0}]", + "47cb4d76e39373c5fbb474f01a7f9cdb": "rc_user parametresi hatası", + "ada2e3b01cdd14582e9bde6794e56de3": "rc_pass parametresi hatası", + "ee668afb3022f7a04020a4355995df08": "Kullanıcı mevcut değil", + "fe3adb79b459800ef1bb0f8042e7fe4a": "Lütfen önce roundcube'u kurun", + "ebdab9ee4ea6ea28adfd7da342b8af7a": "Gerekli belgeler eksik", + "d77f421bec3e1db5836f52aa5b53e61b": "pflogsumm'u kurmak için önce [{}] komutunu çalıştırın", + "4980e2fc0b7bce4c83da3fe631a97bce": "Postfix yapılandırma dosyası bulunamadı", + "2867124182a8a707a7e8aeb1faa60d4e": "Postfix yapılandırma dosyasında mydestination parametresi bulunamadı", + "9a8b3de2d2fc5f9114798532eae929b5": "Dovecot yapılandırılamadı", + "a4cab041ab51d1c2f65f67d7d82ec8a5": "POSTA SUNUCUSU MEVCUT", + "7fcbf57e8fe359587beb56c6d6a35059": "POSTA SUNUCUSU KURULU DEĞİL", + "1d25cf1f445bdffccf0c7c04f98e90d8": "Kurulum başarılı", + "b4575dff8587db1b71ea56ef26fa160e": "Servis adı mevcut değil", + "c138b2ea9b2ce96219987b1dc34a1751": "Onarım Tamamlandı", + "fab07dcaf5fa1e2468aed520eb12f60e": "Lütfen rspamd servisinin çalışıp çalışmadığını kontrol edin", + "4b1b92ddcc4d8d18e1fc6d6a2c23b290": "Önbellek başarıyla temizlendi", + "ff6975219190cff0cd77a5d45a4e587a": "ALAN ADI", + "02909d9d9c7b1c15aca48a0f3b632849": "Önbelleğe alınmış kayıt ({}) başarıyla yenilendi", + "8d42017ed8d72f616fcbfae1705753bd": "A kaydı [{}] alan adına ait değil", + "b13de3ba9a0a8e3aa8cfc4c7b124ffaa": "A kaydı ayrıştırılamadı
Alan Adı: {}
IP: {}", + "cb98099b2d50b0ef968b5e35a208055e": "Alan adı zaten mevcut", + "05c53d8c333382f2a88a51e182be4f83": "Alan adı [{}] eklendi! ip hatası:{}", + "8b460c0a4ee7b9f9abf8b7d9cead2cba": "Alan adı [{}] başarıyla eklendi!", + "17d9629d2f06c1ee2212061b91161d4e": "Lütfen alan adını girin", + "232b6fcdd02dbb56d0b4680d54e2f357": "Alan adı mevcut değil", + "2f1897169b16b705ba6a5b29a05a983d": "[{0}] alan adının A kaydı başarıyla değiştirildi!", + "5e22d528a4b6e80126d13acec3f03e11": "ALAN_ADI", + "2ca49954e8a7fb75ed4cd9e1bca24e00": "Alan adı başarıyla silindi! ({})", + "20aa86e3c9f40c2469f13b3c03dd280e": "Parametre boş, Yetersiz şifre gücü (büyük ve küçük harfler, sayılar içermeli ve en az 8 karakter uzunluğunda olmalıdır)", + "35dc5b31856636d5281ebc710edeaf24": "HESAP ADINI GİRİN", + "1f26a48fd4db1e46c21cdab41fdfd7bd": "Yetersiz şifre gücü (büyük ve küçük harfler, sayılar içermeli ve en az 8 karakter uzunluğunda olmalıdır)", + "69e1e781dd3949f8b6a6fff74bbc79b0": "E-posta adresi biçimi yanlış", + "e387e797495f8e6068a2378ea2a9d46b": "E-posta adresi büyük harf içeremez!", + "406cd9bfbe188d7be6ed43ee087853e3": "E-posta hesabı zaten mevcut", + "e89b7947650b902c10dc72cd06c7ad62": "{} için posta kutusu sayısı {} sınırına ulaştı", + "a94bf19eb03a81e4860453ad9d4872b2": "Alan adı MailServer1 {} içinde değil", + "9a498355742b1efcc8e97085c9f68783": "Bir posta kutusu kullanıcısı başarıyla eklendi {}", + "a2dde299178d98f8b9cf937549c885ef": "Yetersiz şifre gücü", + "5e2421be63aa860192d725b7b57d19f7": "Alan adı MailServer {} içinde değil", + "40a84c055443ba1f6fb569b8c9861595": "{} için posta kutusu sayısı {}'ye ulaştı, en fazla {} ", + "6f6551f3050a37bff1c0db57f9c819b7": "{} posta kutusu başarıyla oluşturuldu", + "8e3e96d2a9f285ae645e587477b14555": "Posta kutusu kullanıcısı başarıyla değiştirildi {}", + "3d0fd00e4f68fb6a1ebb5de73954f5ca": "Silme Başarısız!", + "daa8873086f44ca2724f03513c8ca775": "Posta kutusu kullanıcısı başarıyla silindi {}", + "f5a9438fc0a655d491b336ef4122d03d": "Posta gönderilemiyor, hata Nedeni: Bazı servisler başlatılmadı, lütfen servis durumunu kontrol edin", + "9fab0f5f8d9a53a59587cc911de514f7": "Bazı bulut sağlayıcıları (Google, Amazon gibi) varsayılan olarak 25 numaralı bağlantı noktasını kapatır ve posta ofisi hizmetini normal şekilde kullanabilmek için 25 numaralı bağlantı noktasını açmak üzere sağlayıcıyla iletişime geçmeniz gerekir", + "b11852c790672b942ed2c547c08d0767": "Posta gönderilemedi, hata nedeni: Gelen adres biçimi yanlış", + "1a4fd4fdd2dcf2d2f06f30522c1d4914": "Arayüz genel erişimi desteklemiyor!", + "55252847683f299cdbdb6c8a6f2aaf69": "E-posta gönderilemiyor, Neden: Bazı servisler başlatılmadı, lütfen servis durumunu kontrol edin", + "56865f3d8aa564a93ed26724862960d1": "Posta gönderilemedi, hata nedeni [{}]", + "e79b5fbde5e49479aaafd5a1fe379e61": "HESAP ADI HATASI", + "333b7343c6bf424033940a8a97b12bb7": "Posta alınamadı, hata nedeni[{0}]", + "1fd6e81e08c403b6c111f4ca1a673d63": "Posta yolu mevcut değil", + "5778692e244a35e113e61ed5a4a36063": "Posta başarıyla silindi", + "653869d8a742ca8c58e33b6c1530b403": "Yollar için geçersiz JSON biçimi", + "beb65edc70a951b625901e5b198ed89e": "Yol belirtilmedi", + "894b5d9ee6b19333f6871fe484756116": "Bazı dosyalar silinmedi:\n", + "4bbfd3ed699b4545134a61ab737e05b1": "Tüm postalar başarıyla silindi", + "b400dc9934847d9fe1d234befb30054d": "Servis adı yanlış", + "fcc0d9c357a8bfa2d83e3e250264d4c7": "Yanlış işlem", + "29c102771255855883869f4bb3b4c2e4": "{} işleminin başarılı yürütülmesi {}", + "a35dd0bfd9996e07728358593562dccc": "Lütfen hesap adını girin", + "f935fa53dce46fbb36cefa0a0b08ec65": "Hesap adı geçersiz.", + "dd130650a1e48b849b7c61ec23d72cea": "Gönderilen posta alınamadı, hata nedeni [{0}]", + "4168802788e2d2bcdf3238824b47b58e": "Postfix yapılandırma dosyası {} bulunamıyor", + "973ce6f8cad81b79484dfa9dd8d3e01c": "Sertifika HATASI, lütfen doğru sertifikayı pem formatında yapıştırın!", + "12eb041051df6300c99c90844910086c": "Kurulum başarılı", + "ac293db78f750888fad60af17a550b4e": "Yönlendirme kullanıcısı zaten mevcut", + "2ce7dae0c16a247318839d2c9dd05fa1": "Alan adı posta sunucusunda mevcut değil", + "7b7203def07b8609282c02213359f019": "Yönlendirilen kullanıcı mevcut değil", + "ecc64e7aae7d595dcfcc8e7f0f484e47": "Posta yönlendirme başarıyla eklendi", + "78505c78baa039a350190dfaf296952b": "Yönlendirme kullanıcısı mevcut değil", + "2e9f5dd27bf2f972f374084fd8bc56be": "Posta yönlendirme başarıyla değiştirildi", + "666b75a042d5cd8cba3a6d1c2f270704": "Posta yönlendirme başarıyla silindi", + "03c6490678727779b9a553b0e03c1d43": "Yönlendirme adı zaten mevcut", + "b08e9212679fd4cf82dd5ea8beda84f4": "Başarıyla ayarlandı", + "631cca78135ab71a389991d7155bea59": "SMTP rölesi zaten mevcut", + "0b5eff39ea7076bcc36235e042de422d": "Yapılandırma bilgisi bulunamadı", + "318cc2da7d028b5497ec2e2b7bcb577e": "SMTP rölesi mevcut değil", + "b5a0fb08f3a04afbfbcd4ee57299dbdf": "Şu anda uzaktan taramayı desteklemiyor, işlev test ediliyor", + "293a6b04618c2ba7921e039c75f9c80d": "Spam korumasını yüklemek için lütfen uygulama mağazasına gidin", + "ccff040d3fd05435e247a3b204e55ef6": "Yedekleme görevi mevcut değil!", + "e3eec59bbd1bcf4ebc36213e6df758f1": "Kapatma başarılı!", + "798ddcc716b5c9993e0d1f914e3f1bf3": "Kurtarma tamamlandı", + "2ca583c8306948114efb114f6bb00c3d": "Bu geçerli bir yedekleme dosyası değil! Dosya adı şununla başlamalıdır ", + "97f87b75c36da3aec2a952fa834627ac": "Kurulum başarılı", + "db8452315d0eb9f8aa56f5ba4e010254": "Dovecot yapılandırma dosyası {} bulunamıyor", + "54d5be9023bb0918159a58ef65e7cf46": "Ayarlanan alan adı mevcut değil", + "bdc245ab2373b030a79738e5806967b4": "Kurulum Başarısız, yapılandırma dosyasını şimdi geri yükleyin", + "af7746eac1b9f41d829e2f150be96440": "Kurulum Başarılı", + "45448be795807701f1d6d79c73a5e453": "Başarıyla Kuruldu", + "6b73df7e52420a0609340be53b559a27": "Lütfen hesap adını girin", + "f3482253072b82f9099ba7b79bd694ce": "Geçersiz hesap adı, örneğin: xx@example.com", + "75e698a13245f4ea49f033e336f9a7ae": "Alma başarısız, neden: [{0}]", + "4b590c993349c4a9332fe7c30cc3623b": "İşaretleme başarılı", + "fd1c6c13e2281da435056d1cd3de0d19": "Başarıyla taşındı", + "d6b9ff1c86c87a4d3d169d19b8b803da": "Lütfen FQDN'yi girin (Tam Nitelikli Alan Adı, örn. mail.aapanel.com)", + "f003e31bb108bfc6e2dca6b6a493e2c4": "Lütfen FQDN'yi girin (Tam Nitelikli Alan Adı, örn. smtp.gmail.com),", + "b20c85e36016672347fc67d33c95b9e9": "Port 25 açık", + "1af60deed5a95f10c9ee73efeff48999": "Diğer servislerin 25 numaralı portuna bağlanılamıyor, lütfen hosting sağlayıcınızla iletişime geçin", + "540d99b4d5cfe696f6e46cde48eda194": "Kaynak dosyasını alma hatası!", + "bef8386758cab502fd7b6edd15619c85": "Böyle bir dosya yok!", + "22d422258dca7c9b0975f91f927678f0": "Yeniden indirme başarılı", + "56ecaac7a13c0ef171f753e6b1d835b3": "görev mevcut değil!", + "48aff051338f9c2251ebdeb3fd211114": "Dışa aktarılacak kullanıcı yok", + "28154bafa8a9826866b6e002c71d4fff": "Anormal veya hatalı biçimlendirilmiş dosya içeriği", + "3f7e44a7c5b57a82e56793cdbeb858d7": "{} içe aktarma başarılı oldu", + "bed14b598283efb210f08792c0fd1ba4": "Yeni e-posta adresi yok", + "f98c2754442b046838d86a7f55ffc206": "E-POSTA MEVCUT", + "c656050d918fe06bf87fbe9819642be1": "Gerekli parametreler eksik", + "3878813a0744ed93ed2da272e42ab410": "Sertifika yok", + "6d02e9d5b213cf3d523190f8f90fd3e5": "Dağıtım başarılı oldu", + "fc93888f42e90fe0bbfddfe2e3b8bde7": "DNS kaydı oluşturuluyor ve etkili olacak, lütfen sabırlı olun", + "7bc1a5dc172f07bc2480c7b2067e08cd": "Alan adı eksik", + "abe0a1bf4c110c5e912db5968951edb3": "Değiştirilen alan adı [{}] başarılı!", + "de5085e3caa72f9417811a3a16fbdc5f": "roundcube zaten mevcut", + "bd85bad7c1cedffc46ae70e0db8034f6": "MySQL hizmeti algılanmadı, lütfen önce kurun!", + "c6a51d5b1a7bd956ca4c4f338c086f83": "Nginx hizmeti algılanmadı, lütfen önce kurun!", + "04558b9e13998b32d658e8cd8b0d1ad0": "site_name parametresi hatası", + "90baf7cab644bc240457a2c47e6ebf00": "php_version parametresi hatası", + "cf84746ee6e7a5bb44a33492dcf06859": "id parametresi hatası", + "fcabc387917b8ffea3954ce306154a14": "path parametresi hatası", + "bdf7ec8b7b06dbcc5cdd37b7fcf0be78": "roundcube bu sitede dağıtılmamış", + "162ee492c21d8ca85c113a5ed39cb19a": "Başarıyla eklendi", + "18aa77314905ba8cc4ebbbef5e5bfc61": "emails_to_add parametresi hatası", + "16bc256c4be0dc8ac8c57a502d76ed7d": "Kara liste başarıyla eklendi", + "8392e379584c66a9f7a4913c7d31fac5": "emails_to_remove parametresi hatası", + "b28deaa432321b73e5b6708c3cdb29a2": "Kara liste silindi", + "aea0ac1bc82821423517f7d240f4fc20": "Kara liste dosyası yok", + "2eee30c225f61143cba34ce255c00b39": "Dışa aktarılabilecek kara liste yok", + "04cc998ff38dc7b2a1850bab4def5ff9": "Kara liste başarıyla içe aktarıldı", + "1b11ccbdd39c606a4b00d06e306ce7da": "hata: {}", + "37e5741448f3fff98b04f3b24663ed5a": "{} başarıyla boşaltıldı", + "040af72cf6c4a1e2b1c442829628d063": "Eksik parametre: active", + "456da492cfd986feef0e8b6172ee52b9": "Tür başarıyla değiştirildi", + "ee94cfd2755c5d0bc7c532a5550b0632": "Eksik parametre: recipient", + "2ab854061aad0aede6cc7164670391df": "{} abonelikten çıkma listesi ekle", + "a721d48e1f148b2cbab44c96c5d5a27c": "{} eklenemedi", + "612ba9a3aadccbd5aee092178e59a95a": "Başarıyla kaldırıldı", + "0f72c62155338caff34448acccab2065": "Varsayılan türler değiştirilebilir", + "f354e294ef8e10dfa5d5330710ac2244": "id parametresi geçirilmelidir!", + "59ba6a6955b093d3d8ab3c8ad9e07907": "Üzgünüz. Bu özellik sadece profesyonel üyelere özeldir.", + "981b4b10fbb172510dd8bc6c78442abc": "Mevcut URL'ye erişilemiyor, lütfen ters proxy'yi doğru şekilde ayarlayın!", + "b016f3fad3a16d8ab6f834d028138bb2": "eksik parametre! path", + "4e1b0afecf8cca9bc1c7baefbbaa5020": "eksik parametre! quota_type", + "f17f1430a59b12a71518577a2ac98394": "eksik parametre! quota_storage", + "b147c4722e48cf85b07f12e8e4dc36b9": "parametre hatası! quota_storage", + "6b26e574db24819d9553ff97329f72c8": "bu geçerli bir dizin değil!", + "d265f15afa05b01c067e8a37d4db5f96": "Belirtilen dizin bir sembolik bağlantıdır!", + "31883af5f94e56074d46535fb885be81": "İşlem başarılı oldu", + "cd605148babc76c2acdd97401fde84e4": "Gerekli id parametresi eksik", + "24e2e9a2bb00384d2d5199605e8429c6": "Başarıyla oluşturuldu", + "f18f18a50495f5b2cc683fa8b388d7a6": "Düzenleme başarılı", + "362dff77f7403550e886db901404856c": "Silme başarılı", + "5219b0eed304e85ff3b5d223ad1a19ea": "Lütfen ana alan adını belirtin", + "99e790a4dcecd5a50224da0a6bbfe290": "Paneli güncelledikten sonra kullanılabilir", + "21217aade801d79f727da6da4bbc9028": "Lütfen kullanıcı adını belirtin", + "c66b529d95d463970172da0cdb289df4": "Kota durumu başarıyla güncellendi", + "10d7350372e998438adf642e58055fe2": "Kota durumu güncellemesi başarısız oldu", + "634709ee9a1f6829d28bf76ddf278711": "Lütfen alan adı ve ip belirtin", + "decc12f91f9703a201987fdeabe572a4": "Aynı ada sahip [{}] site zaten mevcut, lütfen oluşturmadan önce değiştirin", + "de67e3b2c564a899fe3195606036a7f1": "Kurulum başarılı", + "8d5496d961b4d4e08474b20c1450737a": "Site oluşturulamadı", + "e75e68c65607a7cfcc570d51345d7e33": "Dosya izleyici", + "983e2622c48ae7231c5d29b135133b0e": "İzleme dizini ekle: {}", + "15c7df4ddd1d366c2cdfa2689c15369d": "IP filtre programı derlemesi başarısız oldu", + "423c2da1e20a5f2138cc810423475eef": "IP adresi boş olamaz!", + "1e116dc22492b28a7a38a6029416d0e1": "IP adresi yanlış biçimde!", + "8c8f15a1c1cce8bbdc465e865c804b40": "Maksimum engelleme süresi 24 günü geçemez!", + "fb86e24ffe47ba150610ba1efd96929a": "IP adresi CIDR bloklarının geçici olarak engellenmesi desteklenmiyor", + "bdb199a03e52488d499ea6bb0cb0d1ed": "IP adresi segmentlerini engellemek için WAF gereklidir", + "1ac8e9ffcea7cf6e9fa183c1b9038599": "IP verisi mevcut değil!", + "04d46623edcb5663566cf43f575de9b2": "Web sitesi adı boş olamaz!", + "b611124a9bad44e328d7ce809912802d": "Başarıyla ayarlandı!", + "4dcde63f7fd4415f3b5eb6cb889d135c": "Ekleme başarılı oldu", + "d303480175994c6ad240cf24a4a99640": "Web sitesi yapılandırması mevcut değil!", + "87d1f7257214d09ba39656b72c864bac": "Hesap Kurulumu başarılı!", + "aa5bb2d58da86c4b9160e94d0c4538f1": "URI boş olamaz!", + "ade0ab88aa0ee9c18f0979d5b62b517d": "URI zaten mevcut, lütfen tekrar eklemeyin!", + "506d9cb0cb2468fd09048bcbe8b37497": "URI mevcut değil", + "cf180f27e678d4e297f690e581961417": "Dinleme adresi biçimi yanlış!", + "1ed0fa9bb8768d56bf2d3232d7067023": "Yanlış dinleme portu aralığı!, gereksinim: 1024-65535", + "e6aa58b2f41bc53f6b84657d47eb35c1": "Veri kaydetme yolu mevcut değil!", + "c87be59ecbed944c2b45fea87d62f473": "IP istatistik modu hatası, gereksinim: 0 veya 1", + "fbc4861b0190c90a5388e44d2bbac678": "Mevcut sürüm kullanılamıyor, lütfen paneli yükseltip tekrar deneyin", + "8b1d5629a1346da21fcaeb9f8f0db6d2": "Başlangıç saati biçimi hatası!", + "7a238977c4b13d23ac3e6b151a914cab": "Bitiş saati biçimi hatası!", + "a87a482f3bced3ce16bc9a351e8b5ce8": "Başlangıç saati bitiş saatinden büyük olamaz!", + "a0ef69b1680461368a9130e770256ca6": "Tarih biçimi hatası!", + "2493958c6f4051bb8d254d77d77b622b": "Zaman ayrıntı düzeyi hatası, destek: dakika, saat, tarih", + "4c4258ffd9a69c8e332346241a3cbdae": "Olumsuzlama koşulu verileri yanlış biçimde!", + "b47f4e8b7540cae56e085231c3c984c1": "Erişim ID'si boş olamaz!", + "fea04488a926034079dc00c5a60a9135": "Erişim ID'si biçimi yanlış!", + "da206b8971dcba715ed8cdd1a82736e1": "Erişim ID'si mevcut değil!", + "fd65e390dd8aa35ea3622658247776d0": "Tarih biçimi yanlış", + "9a4f1ea39f3a554d4e5431f86eb0450b": "Site adı boş olamaz!", + "b59417ef234946819788acfde92a00a7": "Temizleme başarılı oldu", + "aaa3736c0541d4a4d82193c2204ec317": "Başlangıç saati yanlış biçimde!", + "e579606ed1219291caeb3bfad786dd3f": "Bitiş saati yanlış biçimde!", + "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "Tarih biçimi yanlış!", + "53c85b9d96ea14f3f8224a5d2e659894": "Parametre boş olamaz!", + "9dc21ed8c6025cab9873847e6e1ca506": "Sorgu türü yanlış!", + "236c6e2f9a266b929b283eda30c2b3b6": "İlgili veri bulunmamaktadır!", + "50fc65b5f19812ccf756b7ad7de7f4cb": "session_id boş olamaz!", + "8f2adb53dcb8d2c660159b1f8e8012ed": "Oturum ID'si yanlış!", + "7f4419a5b09e1a04936f6aba6939521a": "Yapılandırma kontrolü tamamlandı!", + "f3df0751d9522bf2e68034bab4cd49a5": "Yapılandırma temizliği tamamlandı", + "191fae10bdd9d3eb6cb110b524fe40b7": "Gönderim başarılı oldu", + "f53208c04e48d7ee19222b6adf343810": "Kullanıcı adı 3 karakterden az olamaz!", + "251e2cae1dbed2b37f7d16961a606970": "İzin seviyesi seçimi yanlış!", + "a835325a5600b6571a24111e4d318e2c": "Lütfen bir web sitesi seçin!", + "a669655fa991afcfa0cfa3f62286d944": "Şifre uzunluğu 5 karakterden az olamaz!", + "4d8d30e66ad9aaccc738ad99d5083955": "Kullanıcı adı zaten mevcut!", + "12152390a5bf2ebce0f00b0fb5c650a2": "Ekleme başarılı oldu!", + "4d1b7f489e07d6ca02ca1910a3884c48": "Kullanıcı mevcut değil!", + "3e83aa40dd320efb027151c02aab2871": "Şifre uzunluğu 8 karakterden az olamaz!", + "d3748b3102cc8ba898f0f0bec842ce9e": "Değişiklik başarılı oldu!", + "ac75e534c7334e1fd02c68a3993f1568": "Silme başarılı!", + "ca281da1f13858d0b599d19e18a510bf": "Web durumu yanlış seçildi!", + "c88239bc4a113ab0f02acb9bc31b3437": "Web portu yanlış!", + "f06e6a5985a91ac55c651e0b573378f0": "Web güvenlik dizini boş olamaz!", + "41a871d7ec26993be1367226321e06fa": "Güvenlik giriş adresinin uzunluğu 6 basamaktan az olamaz!", + "16f83d0969b9f7fe56ac3b55f9dedb26": "Bu giriş zaten panel tarafından kullanılıyor, lütfen farklı bir giriş kullanın!", + "066df5a1cf19314e0265a1eb396848ac": "Giriş adresi yanlış biçimlendirilmiş, örneğin: /my_monitor", + "794ee58637251012717d7e565aafc2a1": "Kurulum başarılı oldu!", + "2531ce72ea98e5aa8f4953eee783b540": "Hata kaydı bulunamadı!", + "0fc543dae93d3f76f5f7ff8048f5c398": "Dışa aktarmak için maskelenmiş IP bulunamadı!", + "5552ac99360952da2cf289f556ad19a6": "Senkronize edilecek maskelenmiş IP bulunamadı!", + "3332452d6ecd015473b133de021a9e06": "SENKRONİZASYON BAŞARILI!", + "e6afdb1b63ca733f5d1741c7eff7a64e": "İşlem yapılıyor, tekrar etmeyin!", + "696212205a77e698860ff5195992642b": "Onarım işlemi tamamlandı", + "97cb85456b49af4258f4c8da38bb576a": "Zamanlanmış görev başarıyla eklendi!", + "2739213f569742c0782252f41279c060": "Zamanlanmış görev eklenemedi", + "1cc4efde4fab0b4bbc2812a8b58f59b0": "Lütfen bir site adı belirtin", + "3b5ef9e1ea5a8dbd9606075686dbf15f": "Lütfen bir tarih aralığı belirtin", + "f8412f656685f470a82b74de3d9f24d5": "Dışa aktarma görevi zaten mevcut", + "96ed379ec1882dcf52f0ff65057efb92": "Lütfen dışa aktarmak istediğiniz alanları belirtin", + "4e698e0709485a0e93a706964b748c5b": "Bilinmeyen dışa aktarma türü", + "2a2dbc12afac446fe408eb78453bc6c2": "Dışa aktarma görevi mevcut değil", + "9ff8782f584db728284fadd719967806": "Dışa aktarma görevinde bir hata oluştu", + "b4421542e9cff8ce336075b668b8f87e": "Dışa aktarma kaydı mevcut değil", + "41564d1cd7f8ecb23bcc590cb2217518": "Lütfen yeni bir veri dizini girin", + "699856a3cc697d8afcfd04dcd2f0729a": "Belirtilen dizin mevcut dizinle aynı", + "103422cd692bcaf56a7367075caf2274": "Belirtilen dizin, mevcut dizinle aynı diskte bölümlenmiştir, bu nedenle veri taşıma gerekmez", + "bcbd9605d3b8753bb8afbc765b293e01": "Değişiklik ve veri taşıma görevleri başladı", + "967a57ad58881afe2c5da6cf0d7fce8c": "Lütfen IP adresini ve tarayıcı adını girin", + "62b73e6c2a169296e73edf8a4d1e02f0": "Lütfen doğru bir IP adresi girin", + "0e1a26f6137c04f0f80956210069e46d": "Lütfen doğru tarayıcı adını girin", + "fe8d50ca26f2e864d2bf4a932801bb85": "Beklenmeyen hata, eklentiyi düzeltmeyi deneyin", + "21aa998a1dee8774bc88ce2a070bf4de": "Lütfen bir IP adresi girin", + "2e0c672edc06ef05e44de98ac1b7a47d": "Silme başarılı", + "0f9d9b728fba6427b5ff4da49aee1738": "Örümcek yanlış seçildi!", + "e48c86e701ddba3ab084d5457aa58714": "IP boş olamaz!", + "3bdb147b7a040582220aa7f1ce2af19b": "IP biçimi yanlış!", + "b60597b6a9525341fa5d4d441084658d": "IP adresinin çözümleme kaydı sorgulanamadı", + "86e9360dac1c5eece29f32c9aba8011d": "Kaydetme başarılı oldu", + "e5320166e7623b6a39f9a7af7c20c787": "Farklı bir web sitesi belirtme parametresi hatası", + "c21fbb62edf94306d2e73365e6e7d637": "Başka bir web sitesi belirten parametre boş olamaz", + "c7fae0c9886cac3924fe5e459e171ab1": "Silme başarısız", + "9a84d2910d3d36b78d7060f1c77e27f6": "Site adı belirtilmedi", + "0987458a95b8bb7d6cdf9fa0630b6407": "Mevcut sunucu nginx değil ve özel toplamayı desteklemiyor", + "b925dfe3295278bd81a85bded66da01d": "Durum kodu yanlış biçimde", + "2a8793bbb8bc38a7df9d8c796648526a": "Site adı seçilmedi", + "6878600890a41b84c145423618ea2431": "Web sitesi bilgisi bulunamadı", + "eff712873c55654bf48eaf421a184e73": "Özel koleksiyon adı girilmedi", + "116208583eac10a8769774a6eaaff926": "Edinme türü yanlış", + "fff3d7679cb121a30e68a104b58c934e": "Koleksiyon içeriği girilmedi", + "75db42595fc9aee34df76df808712f92": "Özel koleksiyon adları özel karakterler içeremez({})", + "9667904e74175dfde9824cb8cd099ce7": "Başlık içeriği $http_ ile başlamalıdır", + "4c61d0ee460aa25eb6b5c413c46c9236": " Gövde türünün koleksiyon içeriği [$ + nginx günlük değişkeni] içermelidir", + "c03680a7ae35b7ce5b62f67b854d3b06": "Koleksiyon içeriği [$ + nginx günlük değişkeni] içermelidir", + "d621342512cf7910a6dc4e7d736bcc63": "Koleksiyon içeriği özel karakterler içeremez【", + "b4704dc559a05c5721c095b97c4dbbc0": "Özel koleksiyon adı yineleniyor", + "6594b670e8bd06e352f112c1bf194fc1": "Özel koleksiyon içeriği yineleniyor", + "a531c58ef7fefbbbd79becda53ede191": "Özel koleksiyon adı belirtilmedi", + "88c0c3ae4ef97b6069a35672b2caa05c": "Gövde türünün koleksiyon içeriği [$ + nginx günlük değişkeni] içermelidir", + "41353000c0d351db90c9eec095bae879": "Zaten yinelenen koleksiyonlar var, adı: {}", + "ce78b7a225f05ece35ed7adc68b08a88": "Değiştirilecek edinme yapılandırması bulunamadı", + "521df7df29b44fcee614de96cecca61c": "Silme başarılı ", + "3b0ccb5c759b0941d50e331b22013560": "Desteklenmeyen uzantılar: {}", + "7ea48870539b84996d1b1691c22823a7": "Değiştirilen veri biçimi yanlış", + "bc64045195c8ed198a69772b3a204ef2": "Değiştirilecek veri belirtilmedi", + "bb02871a5e118841b95b69c5bff55baf": "Kara liste yanlış biçimde", + "1aac00a8c681100fd27b287c0b0516f1": "Yapı yapılandırma biçimi yanlış ayrıştırılıyor", + "f6df35a69157ae1fca6415b043485334": "Görev ID'si belirtilmedi", + "524a477cee9485a5a80a860e2bc5b5d5": "Görev ID'si yanlış", + "4b5d95ed20303e337aec42486a0fb3fd": "Mevcut web sitesi sorgulanmadı", + "19e777b7c8cdc1ce56ad2f4fe735b2b7": "Mevcut web sitesi çalışma dizinini sorgulamıyor", + "45484ac5ec748cf3362d425ed7142b75": "Kural boş olamaz", + "b36196750a032a791ecc8035853dc648": "Kural adı boş olamaz", + "cfa7bc3b484b8068e78bc6f55a2aaeaf": "Kural belirtilmedi", + "835365605f9e08c44c0b7f65a422d059": "Tarih parametresi yanlış", + "4fa3e528186292138b224a0a1d46ec59": "Web sitesi adı yanlış", + "3769ee974734f97166d6bce6b96e9b4e": "Veri hataları", + "daddfa03b4ea762e009a36ce970b2b59": "Kurulmuş bir Baidu hesabı yok", + "0379d9c081b6fd9ec2fd86e8672a4e72": "Verileri alamazsanız, oturum açma bilgilerinin süresi dolmuş olabilir, tekrar oturum açmayı deneyebilirsiniz", + "8057e57596c33acf04619825d625a483": "Güncelleme başarılı oldu", + "3149165696693c4f6fef18928261a50f": "Kurulmuş bir 360 hesabı yok", + "74a7684631b29d814a52e3401576411a": "Saat biçimi yanlış", + "f146f571f352f376dda16114593afd32": "Bu klasörde php dosyası yok", + "a5ef7f95136c8e93b70c99cdc25d3b1b": "Kural boş veya kural dosyası yanlış", + "8756f93b16b703129c155cf4bf950e64": "Bu kural zaten mevcut", + "2163538a10246cd5973057248443e827": "Kural tabanı ayrıştırma hatası", + "876088098a14f073e5da6fb4bf9a435a": "Kural tabanı dosyası mevcut değil", + "6342b28c7c40e67016eb255e0f6fd382": "Bu kural, kural tabanında mevcut değil", + "1bbd886460827015e5d605ed44252251": "11111111", + "e1fa6849f823a00ea3ce2b63a584c918": "Risk bulunamadı, lütfen bir süre bekleyip kontrol edin", + "4919ae009da24772f54033981c72e7e0": "Bu dosya bir webshell'dir", + "c3ff5d517aa0206b89c0107494480efb": "Mevcut dosya bir webshell'dir", + "841be447d44ca7e7424592573211f34f": "Şüpheli dosyalar, manuel inceleme önerilir", + "512e1fecde26404204e6072b3a12dcda": "Risk yok", + "3dfa767ed09b94292e6ed5bd39fce5d0": "Risksiz", + "6f72fe3fe88bd53bf8f690d2b0c5f842": "Lütfen yüklemeniz gereken dosyayı seçin", + "d27bc4b1f587e887d48e7fe92d7a5b23": "dosya mevcut değil", + "8d5b6682ddc9e4453c4d971d3044dc7b": "Dosya sistem tarafından bir webshell olarak algılandı!", + "c21a06cf7008cdaa11bcc918d6ea1c0d": "Dosya bulunamadı, lütfen testi yükleyin", + "786c8548bf1e0cfec63644e085f73ece": "sistem hatası", + "449061dfe5a4b59740b41d2705ad0bcc": "Lütfen silmeniz gereken yolu doldurun", + "704ec17e6ea425b9acd1265f1dcd0072": "Boş bırakılamaz", + "43043017cb4d53a3d984d879a42e2ebb": "Başarıyla içe aktarıldı", + "3874a2dc1de33534dd53275bf1e54004": "Mevcut değil", + "2608ba6b8d1d54f9ffbfc630123ec583": "Tür hatası", + "2684d8fd0fc1dfb52e16b70b47334f53": "Kapatma başarılı", + "ef00da3502e70bd84fff4b5036ff8288": "Sayıları ayarlamanız gerekiyor!", + "1720bc60b372b85a213d6492cdb677e5": "zaten mevcut!", + "2bc3cbf8db79ff0fac4659dc5c9b2dac": "Mevcut değil!", + "07dc67d62b952497160f106a5c499b9e": "Dosya ayrıştırma hatası, fabrika ayarlarını geri yükleyin!", + "cccd0da021862b684d131d9646a1d97f": "Dosya mevcut değil, fabrika ayarlarını geri yükleyin!", + "d3c6f5d15561b322dcf534f98c15d125": "Zaten mevcut!", + "d9c9b13c7fec0945d08ec49965daa4d6": "bilinmeyen hata!", + "6512bd43d9caa6e02c990b0a82652dca": "11", + "698d51a19d8a121ce581499d7b701668": "111", + "dab4bbd12ffc7517800304f0bdc4fc86": "Değiştirilecek veri boş olamaz", + "436b3a5c35b1b4c27cd55cd2fd9e6f95": "Başarıyla eklendi, etkili olması için Nginx'i yeniden başlatın", + "102779676feeffd385f7038542c05441": "zaten mevcut", + "965983d46c2695569cdb4e9e12fd6571": "Engellenecek veri boş olamaz", + "9416a531e05cf18f1c26b97263e3c96b": "mevcut değil", + "52932c15b4fa68c60b470a4dbcdd9852": "Değiştirme dosyası boş, lütfen veri ekleyin", + "8fcc9a1b8fb706211e066cd5f7df0a65": "Başarıyla silindi, etkili olması için nginx'i yeniden başlatın", + "00203649d952e20d9611cfcd21b53034": "Silme başarısız/mevcut değil", + "3365f0d08012012075d406cf271d77f6": "Engellemeniz gereken içerik boş olamaz", + "2c555efbcf00eec34e159cbb930a49fd": "Engellenen içerik zaten mevcut", + "c7f766edcc806204f816c6de56e0e8a1": "Engellenen içerik mevcut değil", + "9fbc55a13069e729c3d4fb48d823badb": "Lütfen IPv6 erişimini etkinleştirin!", + "95d19257def109989336b6347a8f0fc3": "Lütfen doğru IPv6 adresini girin", + "c0481d94eb7e8c7f46f76fec921373e2": "Adres mevcut değil!", + "f6c7ec89d03c9c2ac46e336abc81b7a3": "Liste boş!", + "5be36040b9fa33036a454c12f27b7375": "Ubuntu desteklenmiyor!", + "11158f5edfbaa7a72e2e1e701b426a73": "Geçici olarak sadece Centos7 desteklenmektedir", + "0959d7ee773960b7193779c9fdadcb0c": "Ubuntu geçişini desteklemiyor!", + "9033e0e305f247c0c3c80d0c7848c8b3": "!", + "25e5fccc23b6134c8a7c5afa6befd508": "Örümcek başarıyla güncellendi!", + "76e2205e6fc3d06106b783a710b1fe10": "Bulut bağlantı hatası!", + "17cae6641b0b761574f69f864134bf7e": "Bulut bağlantı hatası!", + "ce5275d6e4a918c8236e31e85270d290": "Açık!", + "a5b0cc35b2e38546efb8ae6118230925": "Kapalı!", + "fee1c1b6bffab76b18b09b002c405753": "Sayı 20'den az olamaz", + "b14aa6510f1cff54c60f576ef0731959": "Süre 20 saniyeden az olamaz", + "d8f4a1993546cc4b850cde3599e27aec": "bulunamadı", + "fd16ce6210fa8913fa6230549b264979": "Yanlış parametre!", + "b4bc1177cfc8a0d0758e49b6a16f96d5": "Bozuk yapılandırma dosyası, lütfen güvenlik duvarını düzeltin!", + "ef78de4bb739700e26b532d670638846": "Profil bulunamadı!", + "c02aa591c33647ad91bb649c1663bcd1": "Bu özelliği kullanmadan önce lütfen aaPanel WebSite Speed eklentisini kaldırın!", + "07a7794bae1a87cab16d773ce4c9597d": "Yabancı erişimi yasakla, genel ayarlarda etkin değil!", + "bbaae08a3d7f937d5524fdfd83b37894": "Ayar başarılı! Hemen etkili olması için Nginx'i yeniden başlatmanız gerekir", + "3549141361cdf1fcb62983aa5965e7be": "cc_increase_type parametresi gerekli", + "f73016df38477cfb3c3cac7c339bfd44": "cc_increase_type Parametre hatası ", + "6da0a606488196a3f41f0654dff52782": "cc_ip_max parametresi eksik 1", + "e37eabb7b29fc24037e7fd2b0c617ead": "cc_ip_max Parametre hatası 0", + "aa03bfe7b5a6290d1152302818b3cdc4": "cc_ip_max Parametre hatası 1", + "53d80dd2af2a957ff00a7869e82eb011": "cc_ip_max Parametre hatası 2", + "0f75238fa757d189104cbc3b745cc7e5": "cc_ip_max Parametre hatası 3", + "81079713d38580dfe7714d164626b505": "cc_ip_max Parametre hatası 4", + "59c4751ec8fb1f80078f21a5d3d23483": "Tek bir IP adresinin savunulabileceği minimum sayı 2000'dir", + "7a39ee1d46dbe23c10a5a102e002ffe1": "Tek bir IP adresinin savunulabileceği minimum sayı 5000'dir (etkinleştirildiğinde statik dahil)", + "21d5a4dda3dccf2cde4a2453923ba0c1": "Engelleme süresi 86400 saniyeyi aşamaz", + "8998ac964e10fa904c6f44b9a1d45839": "cc_increase_type parametresi gerekli", + "a199962dff306e167cd1e96ccd864892": "cc_ip_max parametresi gerekli", + "123f5dc9d4ce755a22034ce48a34f0ac": "Sayıları ayarlamanız gerekiyor!", + "2c6392950dd8b9feeaa322428f883d6f": "IP segmenti formatı yanlış", + "d7bdef3923c512c13a60dc05970ca1cf": "Başlangıç IP'si bitiş IP'sinden büyük olamaz", + "b1f0a374986c41eaeafaa08485b42b59": "Belirtilen IP segmenti zaten mevcut!", + "aef0de8ec2a48f9f94f54d41a008f8f9": "IP zaten şurada mevcut:", + "74e16058920cfff989e455cb7edca425": "başarıyla değiştirildi!", + "4e140d99b9d960dc0faf5d43d200eab0": "Yanlış veri formatı", + "4295a035192a0fcd88c89d16f69972ef": "Başarıyla içe aktarıldı!", + "acb8450d83f87a19ac444ce07dbeae96": "Veri formatı yanlış", + "0b8faaf8776c5eb0c07dcebc13dc55bb": "Web sitesi kök dizini eklenemiyor [", + "2128a6acdfae9f60c3a292ae9afa33d2": "Eklediğiniz URL zaten mevcut", + "4229662446c462c1d5212338127e8036": "Lütfen URL girin!", + "3862c72b9bbd0accd915f171d10b5df0": "Lütfen parametreleri girin!", + "e4fd18cafa65c2071efa92e329fb1aed": "zaten mevcut!", + "96dd1aef326fe2e13e360245d729f9a5": "mevcut değil!", + "f10ae1b19b9c946f277946863a7ef9de": "Lütfen ayarlamak istediğiniz siteyi girin!", + "340c2b3dcf52aad038d610aea126fdf8": "Lütfen bir tür girin!", + "d7fda198ce652fc42e3b62bc39a87dcb": "Lütfen bölge girin!", + "fc28444072899e60e6b2cb526651db31": "Giriş türü yanlış!", + "53267148f9e661f7ab274b68ffe21bd9": "Girilen istek türü hatalı!", + "0956e47e87d4d56af7f3a5bc36ec80de": "Girilen site yanlış!", + "3964f2ebc20aec0215b29f34e4e9cc8e": "Lütfen girin: ID!", + "f30e2178ef2d7f61c9b4dbf1c73f6876": "Lütfen girin:açık!", + "cfec0e080bc7d4ebaae29eaec8dcba24": "Lütfen girin:durum!", + "0e69f6afc958a9a1e75f1eb93908e9a9": "Girilen durum kodu yanlış!", + "0fa9cb1eb677f9243d0737a37a69f89f": "Değişiklik başarılı!", + "40ae230e6831501721508b806e3e8f16": "Lütfen site ID'sini girin!", + "ef589b2e5faa2bd4c28c0017ccd737f6": "Veri yok!", + "89c6a8aafca7b01d7645766802707a37": "Lütfen kurmak istediğiniz siteyi girin!", + "5ccddb202b5b5e7f96aa3181bda9beb3": "Lütfen tür girin!", + "2913b96effaf71ad6c7487658e4056ce": "Lütfen bölge adını girin!", + "9c4bd2c334c14c48159a045e21a279c6": "Girilen tür yanlış!", + "66d6ebf480448bc6846362868a584866": "【Çin Ana Karası】 ve 【Çin Ana Karası Dışındaki Bölgeler】 için bölge kısıtlamasının aynı anda etkinleştirilmesine izin verilmez!", + "60e59018ad2d3e94f166beed6445cf7f": "Lütfen bir ID girin!", + "86484538f21c95f5d8b2e1df43135470": "Lütfen açık girin!", + "230f490b7f059873ba86a8ad13a8b007": "Lütfen durum girin!", + "ee89c7f6d23c70ad8f7f0072e3e0cb9e": "Bu URL için hiçbir parametre bulunamadı!", + "d1a198fffa0319462af0ceca6bc39dca": "[/] içeren bir URL'nin beyaz listeye eklenmesine izin verilmez", + "0711b255059aaab715cfb46f6c503af7": "URL [ / ] beyaz listeye eklenemez", + "e233e412faa6c35ecb389c502a7b6537": "Başarıyla ayarlandı", + "e78511f517dc9b86fd743725e8eae766": "Engelleme süresi 86400'ü aşamaz!", + "14fc8ce684c7f8c9cbd9357d46db244c": "Eklediğiniz istek başlığı zaten mevcut!", + "0d2d762c7ed9b83476612b6c08dcb18e": "Belirtilen istek başlığı mevcut değil!", + "9c3c6a1bed873cbb175e46b5cefc99e8": "Belirtilen kural mevcut değil!", + "0d1596574ac7aa5d5ecb88d72c42f986": "Belirtilen URI zaten mevcut!", + "e66a7a8d9d1f830988f1f4a5f37ece0f": "Belirtilen kural zaten mevcut!", + "8528abe0d097e78242d535d5fe8d0753": "Lütfen IP adresi girin", + "2aae8271977f5ad9ae44838f2b68bf91": "Yanlış örümcek türü!", + "d9a32e26c6c673f85332bff9907e73bc": "ekleme başarısız!", + "50ff5b4f63ca1d6f72ac0884ce10a274": "Mevcut IP adresi yok!", + "0e565a84b75a86b5804641eeec450828": "İçe aktarma sırasında bir hata oluştu!", + "de12faa543f0eb0c72ebc64849053f14": "Belirtilen kural zaten mevcut, lütfen tekrar eklemeyin", + "5d1dc231a71676f0d96c0ea4308153b6": "Veri alınamadı", + "64b31dda1dfab5250169f4cca5684824": "Yalnızca nginx sunucuları desteklenmektedir", + "8147e6e4e48008b09597cc2f7b70cd8d": "Başarıyla senkronize edildi!", + "432deaf800ca653afe458c204cbfbcad": "Buluta bağlanılamadı", + "7f3e6e3b62e446f04ab407e6aba2bb22": "güncelleme tamamlandı!", + "1f5d3751c5fd0f0d7d110164be8a597a": "Düzenleme başarısız", + "c2aaeb20ceb12d108a77c9383498a988": "İçe aktarma başarısız", + "62fa7116894b93d89d11ba4eb1e41268": "Başarıyla dışa aktarıldı", + "139fd85baeada3d9d7cd8c65cf418df1": "Dışa aktarma başarısız, günlük dosyası mevcut değil", + "efb7b1e669a74d47a4baecbe1a2adc6e": "Dışa aktarma başarısız", + "852e9973e436256e109f3a02ec9c140c": "Boşaltma başarısız, yanlış seçenek", + "bb145fd3bdcecf6ec853d1a887a58d6f": "safe_logs parametresi yok", + "c8eaeeb8efa13219ac368b6e39204592": "site_logs parametresi yok", + "883efdac3eb44df42fc05b2e8e3061f9": "site_all parametresi yok", + "af2d7b1ee22be2dc3928b7c57580aa23": "Lütfen doğru web sitesi listesini girin", + "9f351e9815c428a76aecab3c2c4a4b75": "Temizle", + "50e457f6032e9d93fe4b58aec073da31": "Yanlış durum değeri", + "631e7fc49fb8bdf2a3f13bdaf354915e": "İşlem desteklenmiyor", + "42e2a4ce9fbfd7ecf5a60a66cab89887": "Kötü web siteleri listesini ayrıştır", + "8ce75a209ed6cd3ed34d38aa7ea167c3": "Erişim başarısız!", + "a127bc2882f46ea763349be63b7a43ec": "Lütfen doğru yedek verilerini girin", + "d6b3a322a8c5e66d8e4e05b81456adff": "200 durum kodu engellemesi ayarlamaya izin verilmez!", + "a8be909d5c4c96eda1b9b53089187b9e": "İzin verilmeyen durum kodu!", + "f471d5490f674bf6c0999d9291a911a5": "İzin verilmeyen geri dönüş durum kodu!", + "8b8e26f29b987d60a8decbd2e73be7a7": "200 geri dönüş durum kodu engellemesi ayarlamaya izin verilmez!", + "337f8ed984e970f2873fc42622d99521": "Statik kod mevcut değil", + "6fc66d367ac0c5d115479b7f852e98f4": "Lütfen site adını iletin", + "c8f9ac5c9288a3f53cccd5555ad1ee07": "Enlem ve boylam hatası", + "acc31522551404d50744536a2c1986a9": "Veritabanı dosyası yok", + "eaafa722b4e623b2ac09f4ed2d9cee5a": "type parametresi iletilmelidir", + "2ac8aa908980e30a259bb8526527909b": "serach parametresi iletilmelidir1", + "62de36f39113a05a97a245a6d3126ca5": "Lütfen sorgulanacak web sitesinin adını seçin", + "7dbda89c64cdbf3c9afc9bceb5216308": "search parametresi iletilmelidir2", + "84611bf808a166c5c384e72c9290573e": "Bu ID mevcut değil", + "0960b1153519b9ab3f2e5fc5e39da8c0": "[uri] parametresi iletilmelidir", + "acaf3f3e6dcd6d9151630196089ef423": "[param] parametresi iletilmelidir", + "f2eda7fc24524105189f3ef3853071a0": "[type] parametresi iletilmelidir", + "2f9d47a4a39f4ed99af1f20ddce75df6": "[stype] parametresi iletilmelidir", + "eecc4f30c2c1ee3d9cf27edf9290c034": "Mevcut URI zaten var", + "e200e571a58c37376c8498c2dc506c95": "[param] türü yanlış, json formatı gerekli", + "96ed9027cae5703401727a3d07764133": "Mevcut URI yok", + "466767592170f74d16bcac3034109b33": "path argümanı iletilmelidir", + "d81f83ae44da0682974272b976e8e550": "Başarılı kurtarma", + "c2d2481eafb29f7e1525c6c63441359e": "Lütfen web sitesi adını iletin", + "4950f82b4231ebbfa780bcf4eec4c545": "Lütfen doğru IP adresini girin!", + "abd5af540ed5a858d02b03846d94c1f4": "mevcut değil!", + "5c1392db72dc56bdf4ecfe41eb39622c": "Boşaltma tamamlandı!", + "5f401d1d15e2b6346405fcd81caee5ed": "Lütfen bir site seçin", + "df0af44dbb9037dfb3e4a23e2d22d184": "Süreye ulaşılamadı", + "74dc340e56666816aba1f2de4d8bda47": "Güncelleme başarısız oldu", + "6e57d6c47d23024e41f4a1aac73a3ea9": "Bu", + "b8c769fb426082acc16345608995c52f": "Güncelleme Başarılı", + "eda0e602069bd48f46f456d8c2eadd3f": "Başarıyla temizlendi", + "f1cee94f9171dfe24f63e3e4c701e6d1": "Güncelleme Başarılı, Toplam {} öğe güncellendi", + "34ad6868d5517e16532a27e67dd7b659": "İstemci IP adresi boş olamaz", + "f9982dd2a6456912c0da42091c9843a6": "İstemci IP {} format hatası", + "d1adb09331d9afa950900abca1056553": "IP aralığı boş olamaz", + "dc5b7cdade7167836e61a128d7e4342c": "IP segmenti {} yanlış formatta ve bir CIDR ifadesi olmalı", + "193cb0af0143dc48f159b0fe55d2fc75": "Kaynak URL boş olamaz", + "0708cc379456476aaba988b381c61782": "Lütfen eşleşen içeriği iletin", + "973aeb9471388c7321b04f3d921b98da": "Lütfen ayarlamanız gereken URL içeriğini iletin", + "864ffd29519010eafc7c5a5b958fb6a9": "Lütfen ayarlamak istediğiniz User-Agent'ı girin", + "9c5f65f543fc633b9f8d20fed389a3ee": "Ayarlamak istediğiniz istek başlığının adını girin", + "1822f04ebba43b9d3576660d94e4818d": "Doğrulama başarılı", + "64f3408287530191cb9198dd02030e49": "İlişkili web sitesi boş olamaz", + "a29f521a7a2794dded1316a1b00a8767": "Öncelik boş olamaz", + "d7687135850c7d6afb5041e912b33824": "Etkinleştirme durumu boş olamaz", + "6c671ab904133b581c1104942fe2c85e": "Genel bir kural için kullanılıp kullanılmadığı boş olamaz", + "6f2a7d11851641b23d3f632552afa1bc": "Başarılı bir eşleşmeden sonra eylem boş olamaz", + "7636b5101fba6a060fb30e30278eaa73": "Eşleşme portalı boş olamaz", + "a805238b51120c00d0d4d6cff3b2d75f": "Kural boş olamaz5", + "01af1d384cfeae598fe40b29cb96737a": "Kural boş olamaz4", + "261d3dfaaca74f7fd29a4d304b036712": "Kural boş olamaz3", + "06ce124a509953bf7031fcd480c960fd": "Kural ID'si zaten mevcut", + "6094a892b83d8bb51cf8197d39a7a25e": "Kural adı zaten mevcut", + "5538ee312635d0c82567238d58c23429": "Kurallar mevcut değil", + "c085d954281443e56fde4f00fc27a3c4": "is_global kuralı boş olamaz", + "151648106e4bf98297882ea2ea1c4b0e": "Güncelleme başarılı", + "e04a27d5fc3ba14c49f5e5383a21eaa5": "Durumun iletilmesi gerekiyor", + "03ce2004f163fa785d50ee2fd790ab38": "Parametreler eksik: type", + "afad5921afb5338dae127d8451819581": "typeParametre hatası", + "31edbe069268a91831424986f5b5f36b": "Parametreler eksik", + "b7c7b9e550d049c96732daefaed87f30": "Silme başarısız oldu ve veri mevcut değil", + "8a053f40d81ebe24c54b365c60ce453a": "Parametreler eksik: ua", + "06febc0dd7b24b4ede244d87c6da9899": "Parametreler eksik:type", + "5a111a2b93b4c9ace88c30243f3befd6": "Değişiklik başarısız oldu ve veri mevcut değildi", + "beb17a764dd515a66b16905b019a4252": "Parametreler eksik::pdata", + "e00dc8fc227ea447cb2698f5db98da48": "Veri doğru formatta değil", + "897756b1d00a36b9afeb5ef76ff845e8": "IP başarıyla içe aktarıldı!", + "79f9ab06ea335dd09d909872a7398e1e": "URL başarıyla içe aktarıldı!", + "e82e753924daf07d001e460901b6fd96": "UA başarıyla içe aktarıldı!", + "112dd48824aab35f4b9dc986b6313885": "Başarıyla temizlendi!", + "4743684898b36b9ed3ac8e1ac5ca7024": "Dışa aktarma başarılı!", + "baa8f76f78ba1a954406d06dacf64c10": "Başarıyla etkinleştirildi!", + "79b200ebd87ad6863d1413cfa7f1d7a4": "Dosya içeriği boş", + "c1474294f9b2d0569833252c2dac48ec": "Dosyanın içeriği JSON formatında değil", + "435e03d88220f757a95c64ad48a5727a": "Parametre yanlış, eksik parametre: html", + "3d89842e7bfbe8e4647f2b75c86f2111": "Parametre yanlış, eksik parametre: site", + "b0224414a41d57fd48147d635b0a9f49": "Parametre yanlış, eksik parametre: html_fast", + "2413405e65a706d48f6a7085961802c3": "Parametre yanlış, eksik parametre: js", + "7b7ad90f48da5f137d45d79f06317f47": "Parametre yanlış, eksik parametre: picture", + "a2e1cf38d9a88555c830f5b0f1a59554": "Parametre yanlış, eksik parametre: picturenew", + "ab003a3bb7b2000f3f7dd4cc1ed2e5d6": "Parametre yanlış, eksik parametre: htmlnew", + "659e67f77b70550f43b989a82f431ad8": "Parametre yanlış, picturenew parametresi json formatında değil", + "785400f0c6201ecea4df35207667eb60": "Parametre yanlış, htmlnew parametresi json formatında değil", + "0ea0d28a307b650faafba51aeda35b6e": "Parametre yanlış, htmlnew parametresinden type parametresi eksik", + "e3d8ffe389c1772f7eaec98fe78334e1": "Parametre yanlış, htmlnew parametresinden text parametresi eksik", + "4b097fd2beaa3b114a72820f7b595269": "Parametre yanlış, htmlnew içindeki type parametresinde bir hata var", + "fffd4429bcf4305049e63d02b689d2cb": "Parametre yanlış, htmlnew parametresindeki text parametresi 100'ü aşamaz", + "15f6f7030e3501001f4aed8e49f440ee": "Sayfa özelleştirmeleri yapabilir", + "f34203a4a9e3837f9c81fabffed77e40": "Parametre yanlış, picturenew parametresinden type parametresi eksik", + "b5c610002dcc8b5ae0068141a7029ae2": "Parametre yanlış, picturenew parametresinden text parametresi eksik", + "a2d9e4ce746f18cef7a917ffea7dd75b": "Parametre yanlış, picturenew parametresinde type parametresi için yalnızca text ve default'a izin verilir", + "36cf3d060b27c024b0fd85b85c533148": "Parametre yanlış, picturenew parametresindeki text parametresinin uzunluğu 100'ü aşamaz", + "799b18f9ca831f3048d74df2feb31206": "Filigran karakteri özel karakterler içeremez < > \\", + "6e0dbbe7466271740e6609ed570d355b": "Filigran karakteri şimdilik Çince içeremez", + "198024662dba359f2392e60e88c40aa2": "Bu özelliği kullanabilmek için Website Speed eklentisini kaldırın!", + "855804452a86a87b7698c481b8fa262b": "Sahte statik, [!-e $request_filename] yönergesini içeriyor, bu özelliğin kullanılabilmesi için kaldırılması gerekiyor!", + "788b7bc259014fc9c1991f11c3ac0917": "IP adresi geçerli değil", + "b53e7fec7f9097f923ac52bcb0b4c724": "Süre 1'den az olamaz", + "cc1dd0ad7dd389cad500d9c4d196a508": "Parametre yanlış, open parametresi eksik", + "d47aeb6c6f69e860d9c088ea55fba3ef": "Parametre yanlış, qps parametresi eksik", + "eb907b13315836fa781674c6e8f01c38": "Parametre yanlış, time parametresi eksik", + "c10df4de998fb928b030c2d590edd72d": "Parametre yanlış, user parametresi eksik", + "ab46bbdd4119a38d6ff4bdbd7c9065fc": "Parametre yanlış, identity parametresi eksik", + "25cf1a0c49aeb9d32801a5ab30507e7f": "Parametre yanlış, type parametresi eksik", + "00204d3b9a172174c943f8660ec75291": "Parametre yanlış, text parametresi eksik", + "30454e0ce7a66a8fddddadcf19fce8f0": "Parametre yanlış, type parametresi sadece 'default' ve 'text'e izin verir", + "5c1dcb6e10270159f05daa76de3b5437": "QPS 0'dan az olamaz", + "4443c53175005bd3105c50baddd81660": "QPS 10.000'den büyük olamaz", + "262feefe0c785688578a5f642d683225": "Süre 60'tan büyük olamaz", + "044dd0d9fc4da6120fc6128fab278407": "Kullanıcı 1'den az olamaz", + "215a4c6687559aa75d554670e06f3694": "Kullanıcı 10.000'den büyük olamaz", + "902ee0e2b591f9872a41c319c402e0b9": "Metin uzunluğu 200'den büyük olamaz", + "2307dba1bc155ca6f1a5bbf21dc4a258": "Sahte statik, [!-e $request_filename] yönergesini içeriyor, bu işlevin kullanılabilmesi için kaldırılması gerekiyor!", + "fa5e4af74d3d68ba371e6dcf84595c3d": "Web sitesi mevcut değil", + "db8b3ac7a5408e3bc0d103bb9b071c7b": "Parametre yanlış, data parametresi eksik", + "a0318cc60ff3297d4bef0399dc89fa8d": "Parametre yanlış, data parametresi json formatında değil", + "8b682d8c8139c2ea686c7a87a03ba292": "Parametre yanlış, name parametresi eksik", + "58d1469872dea12b4db1dfc13af12e69": "Parametre yanlış, site parametresi eksik", + "2dc0483ba76fdacae8eb46978a77c449": "Parametre yanlış, types parametresi eksik", + "ae6b5c82d2858b70d9d5cfa2bf0a5b6e": "Parametre yanlış, url parametresi eksik", + "98f08e877f98b1cc132cf6af612f2c82": "Parametre yanlış, region parametresi eksik", + "6eb9eecd7f53241dba52168f6eed8ecb": "Parametre yanlış, condition parametresi eksik", + "dc781e44c06aee2588ef017aadb91f54": "Parametre yanlış, action parametresi eksik", + "2d613a4d2d768453594737ae21612354": "Parametre yanlış, return parametresi eksik", + "7c70d1e818ffa1c301fa76bdfa92d75d": "Parametre yanlış, tetikleme koşulu boş olamaz ve en az bir tetikleme koşulu seçilmelidir", + "7d44386dff18244f3dd75ad76546806e": "İsim özel karakterler içeremez < > \\", + "62200033fe539db0bbfaa9e811acd7ea": "Parametre yanlış, types parametresi anormal", + "2290ac303cc87f9fa23aa247ade17c33": "Parametre yanlış, URL boş olamaz", + "d5c270bb074c184c3708fc628b969561": "Belirtilen URL / olamaz, aksi takdirde tüm site kısıtlanır", + "e30358a99b6522a7113a2a4ac661aa27": "Parametre yanlış, URL / ile başlamalıdır", + "8a3315f7e229831b5b472ad35db2eb32": "Saniye başına erişim limiti 1'den az olamaz", + "1f361568ba48e247da6293cd08f2a36c": "Zaman erişim kısıtlamalarının sayısı 20'den az olamaz", + "6abf870d74b818886516c39b78ada43d": "Zaman erişim kısıtlaması - süre 30 saniyeden az olamaz", + "acdd003181b2fcf35ea8412f5ef17b24": "Parametre yanlış, koşul Parametre yanlış", + "4d09f912a4e1e3f59e571464488c9b0b": "Parametre yanlış, eylem Parametre yanlış", + "554b32d33b741d86c3fdcd82a9974f9f": "Parametre yanlış, dönüş Parametre yanlış", + "a6ff8cce246c28eae5895c4bc14fcf77": "İsim zaten mevcut", + "d3054b81f5e76b0e297d0befe0c1a796": "URL zaten mevcut", + "a53a9497f06d0158be0c57dae2447056": "Parametre yanlış, id parametresi eksik", + "2671382a359fe628f261c16c61618b41": "ID mevcut değil", + "e75627abf7a3fa307ab09e63cf246627": "Parametre yanlış, types parametresi yalnızca all ve urls'e izin verir", + "12ac2e613f94beddddfdbbd8cd90ebd3": "Parametre yanlış, URL boş olamaz", + "62b55b3dc9bd026c840e7e89d39eecd3": "Parametre yanlış, attack parametresi eksik", + "19fd6f5b0c2034b36bfe924611057664": "Parametre yanlış, cc parametresi eksik", + "0f5b3e572f9dd832eebf01fdc0d7ce8c": "Parametre yanlış, Lütfen bir uyarı yöntemi gönderin", + "3979187f0bae65dc1fca4f1967742397": "Yapılandırma dosyası okunamadı", + "c9bbcef0c80ca1a2859dd61d0210a117": "[send_type] parametresi yanlış", + "a79ff4350874c27408a1858a88058344": "Mesaj kanalı örneği oluşturma başarısız olursa, mesaj kanalının doğru ayarlanıp ayarlanmadığını kontrol edin", + "50f223163c6f8e9f6b46d66165252cab": "Kapatma başarılı!", + "eee590fc0d0f3382fe436b60b02e37f0": "Posta kutusu bilgileri doğru yapılandırılmamış", + "e4e7eb56340203583dd940475fc6e924": "Alıcı posta kutusu yapılandırılmamış", + "c6beb4efa41b5adbf89191be9d139c70": "Mesaj gönderilemedi, Gönderilemeyen alıcı:{}", + "e401ec76f9a9d1dfe7d484e6c4b49656": "Bazı alıcılara e-posta gönderilemedi, dahil olanlar:{}", + "b136ab8957d5ede7e3747fcc927a49aa": "Parametre format hatası", + "4ccc991965b1b5bbe3efd6b65a1cd6fb": "Gövde türü json, form verisi veya null olmalıdır", + "b0b017688b107601f2b3439381c4c61b": "Gönderme yöntemi yanlış", + "4f4979589df1b84ac44fc64a92e2b3f3": "SSL seçeneğinin yanlış olup olmadığını doğrulayın", + "02eef33534a6f8b3c95fc65e4f98bea9": "Eksik bilgi", + "2f45c6e0ccf998c7d31b3764e7da3751": "Not adları 15 karakterden uzun olamaz", + "85284ecbde15ff997e89e6e8f07e399b": "WeChat bilgileri doğru yapılandırılmamış", + "886051a73fe04f873d814dc9823b4064": "DingTalk bilgileri doğru yapılandırılmamış", + "2d1b0e55888d196484a0bfd0f85ff71c": "DingTalk yapılandırması yanlış, lütfen DingTalk robotunu yeniden yapılandırın", + "3fb32283f52bea8068006817c5b9b95b": "Bağlantı kaldırma başarılı", + "8acd58125d3f7cc181a71926ef5c8a4b": "Buluta bağlanılamadı", + "703480d2938f7c89b563e1d731e94118": "Test gönderimi başarısız oldu", + "fdc137942b6f2d81fa922d7ace16a94c": "Mevcut arayüz tarafından desteklenmeyen bir tür", + "37f17a256a93646ef0ac721096ec0ce8": "Aynı gönderme yapılandırması zaten mevcut ve tekrar eklenemez", + "2783bb2e5b99dce08138bf58d0880603": "İlgili gönderici bulunamadı", + "b5a30e6f46753c06ada44d6bbd757599": "Başarıyla silindi", + "81550843cd0a2d7e046cb23a868f8e8e": "Gönderme başarılı oldu", + "6e3ce0906145a9641111ebbf7735f145": "Telegram gönderilemedi {}", + "27285cc132e6c145a142ae2dff054ace": "Not adı 15 karakteri aşamaz", + "bb8f2701fa6b013fe8aa74659ceda547": "Görev verileri okunamıyor.", + "b12cc83d0b14fe739a930fd84d10ae8d": "Görev bulunamadı.", + "eb9eb53b7ac221c64f6f32c547317d22": "path parametresi boş olamaz", + "0444d0f0434a4d910eb7a06039e39066": "[{}] dosyası mevcut değil", + "f4c3904df3aa98458b5f99bd5519e409": " {} tamamlandı, günlükte istisna yoksa bu pencereyi kapatın!\r\n", + "a6d56fd22b5a2243f3d9584478b90e0e": "En son sürümü al", + "42aea4a90d1ba39b31851f63479d20c7": "Alınamadı", + "5d85a89cf9ff8fb99547cb1648205489": "Dosya yolu Çince karakter içeremez!", + "952345fe8555c6ba578f251a317f85bc": "config parametresi boş olamaz", + "08dd0ea6d64131b95ad64ca11233bd0a": "env parametresi boş olamaz", + "8dea3a35e564837dd758e1f814e24f92": "Kaydetme başarısız, lütfen compose.yaml dosya formatının doğru olup olmadığını kontrol edin: 【{}】", + "2a3a9ebecbcd261e0550cb4469910ed1": "Kaydetme başarısız. docker-compose sürümü çok düşük. Lütfen en son sürüme yükseltin!", + "e32a4e5887229cc3ce7412591de16cff": "Kaydetme başarısız", + "4e06eef94d131a0203e8f1f87db4fee5": "project_name parametresi boş olamaz", + "c80ca81b19893dafd2629ce74407d5cf": "Oluşturma başarısız, lütfen compose.yaml dosya formatının doğru olup olmadığını kontrol edin: \r\n{}", + "66855212f1fe552bf49c4388155b3082": "Oluşturma başarısız, docker-compose sürümü çok düşük, lütfen en son sürüme yükseltin!", + "5a135e409fdee335e0f4397a4293835a": "template_name parametresi boş olamaz", + "1cc869c0afb0c2f94e0937d9eb364e34": "Şablon adı zaten mevcut, lütfen şablonu silip tekrar ekleyin!", + "cd21239456a2d52fb2317cc699bbd93c": "Proje adı zaten mevcut, lütfen eklemeden önce silin!", + "5076d42e5242f2b79244d73f13da367e": "Konteyner düzenlemesini sil", + "02867c418e07f941a1c5d3f6bc926f86": "project_list parametresi boş olamaz", + "a88321660a22f931bc1f0861baa5dc1e": "project_list parametre format hatası: {}", + "468c559ee2d3d5e39aeef93e62b006d1": "Silme başarısız, docker-compose sürümü çok düşük, lütfen en son sürüme yükseltin!", + "3590612b29e5aa49645f02d01c9e520e": "container_id parametresi boş olamaz", + "d7fc188f711a4c3eb5b85949dfd9a696": "Konteyner mevcut değil", + "77ae5114c51a32c268b0bf7a03c0c528": "Lütfen name parametresini iletin!", + "bd9b13cc06f202661c7bb89a02322532": "Lütfen path parametresini iletin!", + "719b089ab1a7d4ff5c161f3f5c5b7f24": "Kurulum yapılandırması alınamadı, lütfen kaldırıp yeniden kurmayı deneyin!", + "c7f98cd83b58fad3ab719bfa337bdb6b": "Parametre hatası, lütfen app_name parametresini iletin", + "043e4ffcd792692d7b7acb5a2504c329": "Docker hizmeti başlatılmamış, lütfen önce docker hizmetini başlatın!", + "9f1dcd0020905875a6a48744ffe17766": "Docker hizmeti başarıyla yüklenmedi, lütfen önce docker hizmetini yükleyin!", + "bfec153394be0516b0d79d4653c9e19d": "frps uygulaması zaten mevcut, lütfen tekrar yüklemeyin!", + "fce729be4320e9afbdad888641d08f8d": "frpc uygulaması zaten mevcut, lütfen tekrar yüklemeyin!", + "f6f8ff9f4c8990d7e24ac682a50c40a4": "Aynı hizmet adı zaten mevcut: {}, lütfen başka bir ad seçin", + "66fd0bc16d0f3c5c9e61779749a93c56": "Alan adı [{}] formatı yanlış", + "c68494100dc74cced33c845f35e5aaac": "{} başlatılamadı. docker-compose.yml dosyasının mevcut olmadığı tespit edildi. Lütfen kaldırıp yeniden yükleyin ve tekrar deneyin.", + "76a5e52d7834e4cdf7984adc785f720e": "Uygulama başarıyla oluşturuldu, ancak ters proxy oluşturma başarısız oldu. Hata detayları: {}", + "e59b647380ea44f97645f979773c683a": "Uygulama başarıyla oluşturuldu, uygulamanın başlatılması bekleniyor, bu 1-5 dakika sürebilir...", + "c71b369171a386e4df59acf49f5203b0": "Parametre hatası, lütfen şunu iletin: {} ", + "5e60e6550487262a79210c48736c2cba": "[{}] portu [{}] tarafından zaten kullanılıyor, lütfen başka bir porta değiştirin.", + "dc60f8a111d142dbdc1605dc047e23e6": "Lütfen bağlanmanız gereken veritabanını seçin!", + "667d37fe4593e52760bc51ada7287988": "Lütfen bağlanmak istediğiniz önbelleği seçin!", + "1b6d9f6dc5480584f937681a5d9f0a80": "Önbellek bilgisi bulunamadı", + "f013f8c1d30136733e3d476dbe3a238e": "Yapılandırma başarıyla güncellendi", + "3d928c01114361a57fb24c42d9a1ee2d": "Yapılandırma güncellenemedi: {}", + "092ca03f32caffd34d3f0532836283b7": "deepseek_r1 için komut dosyası bulunamadı", + "17ee8c2efafe32a5d204e039e971aee4": "1550 MB'den az bellek, deepseek r 1'in dağıtılmasını engeller", + "d3eb7a147ac81b2f691a6e7ad42cc83c": "İşlem yapılması gerekmiyor", + "ade726fc2adbfc1c18a6a601a6670b2f": "deepseek_r1 başarıyla yapılandırıldı", + "2ab241c8ca04b4760bc844e3133821d1": "Bilinmeyen Uygulamalar: {}", + "fc0d20951439bcc2d1101019e09556ff": "{} profili algılanmadı: {}", + "3bceda9d61ef4cfc8559796178503164": "{} yapılandırması başarıyla güncellendi", + "b1d0019ab8cbb83b1b99016c4927c1fd": "Alist yapılandırması güncellendi", + "7194829138a21af26d26fb0d57426fc8": "Lütfen bağlanmak istediğiniz veritabanını seçin!", + "0a17156f2603044863d54b67ac1f7a07": "Bilinmeyen veritabanı türü: {}", + "62a2454d1d40411885721e465168a016": "Nocodb yapılandırması güncellendi", + "1c757f474b2cf26c14c591709c6963a6": "Homeassistant yapılandırması başarıyla güncellendi", + "5ca65c2eed5a6762590ba133f66a8672": "Openvpn yapılandırması başarıyla güncellendi", + "987a030ec5eb506b45fd17b8b4eb1329": "Lütfen service_name parametresini iletin", + "05ea75c6d686df18830714369dc078ed": "Lütfen app_name parametresini iletin", + "975ecde111f2dfe514b71b4d4941ba1c": "Başarıyla yeniden oluşturuldu!", + "9b70785b1f6c44d42a1fa85dbb7000b2": "Lütfen id parametresini iletin", + "2321c03a1d4fc4cb5b9b87275a0d4712": "Belirtilen uygulama bulunamadı!", + "63428213090160e31085eadae3508244": "Henüz yüklü uygulama yok!", + "43dc377c8c1929c0c2bc959d94337657": "Lütfen id parametresini iletin!", + "d4188b564c1af018074056fffde42fba": "lütfen m_version parametresini iletin!", + "2a65ff2dedaa3b18bf4d4678b99ff77b": "lütfen s_version parametresini iletin!", + "e7df495f8488ec05ebf913bceccbc8d4": "Güncelleme için yalnızca ana sürümle aynı sürüm numarasını seçebilirsiniz!", + "fc15d16befa9eb8ccfb25da964a284de": "Mevcut uygulama zaten en son sürümde ve güncellenmesi gerekmiyor!", + "cd260af0ae4915ee07569fc877f77495": "Güncellemek için yalnızca orijinal sürümden daha yüksek bir sürüm numarası seçebilirsiniz!", + "7ac82bcde612b1a109d988d4b3dbf626": "Güncelleme başarılı oldu!", + "01b722bbe474a50d8291bbe2e71804c6": "Belirtilen uygulama bulunamadı!!", + "2140e826934629d9a43ba2bf4f2b1774": "lütfen depend_app parametresini iletin!", + "2ab5fb77429e37f42b87e205d6e51728": "lütfen service_name parametresini iletin!", + "9d6521661f6a152c21bf6d4305d5c9b3": "lütfen app_name parametresini iletin!", + "e020f13e1a68b8030d7038cea78b3aaa": "Yedekleme başarılı!", + "c4dcfb467d82071a7a4cbbe0b5036f9e": "Henüz yedekleme verisi yok!", + "76b5c77ee72a9ffa0f4b3a8e0101ad41": "lütfen file_name parametresini iletin!", + "1281e3ed765ec369a06400340f4beb78": "Belirtilen yedek bulunamadı!", + "012967525dac4f0c5395c210223ca2ef": "Lütfen file_name parametresini iletin!", + "8cc2feae92bd228672051763130e6d49": "Yedekleme dosyası mevcut değil!", + "3c06b7d1ee52e760b361d12cd00f55b5": "Yedekleme dosyası anormal!", + "010c30483dbe836d24382a368f482770": "Geri yükleme başarılı!", + "543fa46832267ce6cb3b47594d8d8f82": "Uygulama mevcut değil!", + "c52891f1485d1070a2e063358ae71fa9": "Lütfen f_path parametresini iletin!", + "df107ded5612d825c3db3bd46a9845f0": "Lütfen f_name parametresini iletin!", + "ef41e47b4ea1bd4143562bd0989b9b20": "Lütfen f_size parametresini iletin!", + "b9290da45e148202dccf0058dfc3b27a": "Lütfen blob parametresini iletin!", + "a27dfcdb7619659552bfdfc79930b7d9": "Aynı isimde bir yedekleme dosyası var, tekrar yüklemeniz gerekiyorsa, lütfen aynı isimdeki dosyayı silin!", + "37a9a30931e079caf79fb61eed10547f": "Yedekleme dosyası başarıyla yüklendi!", + "490068785260b543087967659d79b496": "Lütfen durum parametresini iletin!", + "1204853b15f4234a8cb88df5a46b5a42": "Lütfen başlat/durdur/yeniden başlat/yeniden oluştur parametresini iletin!", + "062f4a8230dd8af4311344fcdbf6f1ea": "Kaldırma işlemi başarılı oldu!", + "7b016fb85c09d39e89eb1875e590a6ac": "Uygulama kategorisi alınamadı, lütfen sağ üst köşedeki [Uygulama Listesini Güncelle] düğmesine tıklayın", + "20552a0ed8eef740c631cc049fd940b9": "Uygulama türü hatası, lütfen şunu girin:{}!", + "c0963001ffeaec423d1be82d464d6a1a": "Lütfen id/service_name parametresini iletin!", + "75d0c803cc4694e08d99d958ef762fcc": "Alan adı boş olamaz!", + "676c8a7788ad0ddcb68d53fc7d960679": "Bir baota net ağı oluşturulamadı. hata: {}", + "23d07f1e537a8809b268a60a6881f44c": "Port aralığı hatası, lütfen 0-65535 arasında bir port girin!", + "f26d903f2f99c2bb4a214a2dd863e8f9": "{} portu [{}] tarafından meşgul edilmiş, lütfen portu değiştirin!", + "86c1887e12c52e7da3d3c413fe6e20d1": "Alan adı erişimi aşağıdaki nedenlerden dolayı eklenemedi:{}", + "b4bf995bdf5a4506e8286bbd9b24fc2b": "Lütfen alan adı parametresini iletin!", + "6473522415a76cf1e712b23980020814": "Lütfen disable_domain parametresini iletin!", + "4522d1a945678e134f39e5909db6ac81": "Lütfen app_name parametresini iletin!", + "6da74914983889333884da51c3aa400a": "Lütfen app_path parametresini iletin!", + "8267489f1a242a5034b5ffd66fd504a0": "Lütfen memory_limit parametresini iletin!", + "658658f81426b1d37bae43373d44498b": "Lütfen s_version parametresini iletin!", + "6a40ca48521720e9a084fd682c55efcb": "Lütfen service_name parametresini iletin!", + "e1bb243ae3776918bb07dbfdfd831a0b": "Lütfen allow_access parametresini iletin!", + "98efbca9758919c9938e5ae4002ac085": "Alan adı boş olamaz veya lütfen alan adını ayarlamamak için kutuyu işaretleyin!", + "82ee36ab230ba75855c15b9be4ac8a4e": "Durdurma başarısız: {}!", + "845d40e701d5c584ae4f059602b3f57d": "Başlatma başarısız: {}!", + "d2c66f1c264e9a389a34f60d3a921723": "Başlatma başarılı oldu!", + "20f1c870fe256a123d1c17299a93a4ba": "Yeniden başlatma başarılı oldu!", + "c5838a6fdef9fed0165274f6ed50ea4b": "İndirme başarısız oldu!", + "870a81aa5509bcd7aa51cf27e410eea9": "İndirme başarılı oldu!", + "f70386f0f4846336b6eee06d16a55a33": "Lütfen uygulama veritabanı parametrelerini iletin!", + "2fe5b2b5ae4c0c601076922f34391c6b": "Lütfen kullanıcı adı parametresini iletin!", + "b046515d91d43d56962b42eb216b11c9": "Lütfen şifre parametresini iletin!", + "e997ba4648bad603fc310169de46e0ea": "Belirtilen veritabanı uygulaması bulunamadı!", + "2025d918448073508d336b72a7a28093": "Veritabanı zaten mevcut!", + "4a8f0a2ac362e62ba4e76f52b5791f0e": "Oluşturma başarılı!", + "76f3f12040afb77724966e2af67ab403": "Lütfen veritabanı parametresini iletin!", + "bf483666a33d372f729985363d512d74": "Birincil alan adı genel bir DNS olamaz", + "3c4b1f6d2d9ef27ace95adceea599588": "Ekleme başarısız oldu ve veriler site veritabanına eklenemedi", + "20825a634340a0b49b1a5e7f2fe47ea3": "Ekleme başarısız oldu ve veriler docker web sitesi veritabanına eklenemedi", + "653f81d3e5516550e6d5e35abcdbe97c": "[{}] panelin ters üretimidir ve [/] http kimlik doğrulaması silinemez!", + "d4b66e7369e5077a3c31ad79629f0ab9": "Lütfen silinmesi gereken web sitelerinin bir listesini iletin!", + "e48121dc556643fd31b26c190eedbad3": "Yalnızca Nginx desteklenmektedir, lütfen kullanmadan önce Nginx'i kurun!", + "135f7ef9aeb50bf7b988416b0a679dff": "Alan adı boş olamaz, lütfen en az bir alan adı girin!", + "c82b42d921224a0699f854c28c2450d2": "Proxy hedefi boş olamaz!", + "fe092e7668cf0e9e6dafef6a1fa084a4": "Unix dosya yolu / ile başlamalıdır, örneğin /tmp/flash.app.sock!", + "f68c204aa9e12e0513aa7a4569449cfe": "Unix dosyaları .lock ile bitmelidir, örneğin /tmp/flash.app.lock!", + "5c23a6c025d7071599c70575dc858f26": "Proxy hedefi mevcut değil!", + "2fba0b6c1602ec254b1bc06bacba575d": "Proxy hedefi http:// veya https:// ile başlamalıdır!", + "772c6f93b20b52d5c998f4b58dbcf8f7": "[{}] portu geçersiz!", + "f76df64b8f66e4f6050adf633c91c7fb": "[{}] web sitesi zaten mevcut, lütfen tekrar eklemeyin!", + "6599f1c3d3d3760768d9023827e8edf0": "Ters proxy projesi başarıyla eklendi!", + "85e34f49357adccd76d557a540a2e5d8": "Site adı boş olamaz!", + "1daab0a25efad301906af4874ee4c8ac": "Günlük türü yanlış. Lütfen default/file/rsyslog/off iletin!", + "ff9e0ecf6c4926c0a309e67f9baedf39": "Yapılandırma dosyası okunamadı, lütfen web sitesini silip tekrar ekleyin!", + "2a6176cc22256a713204964a34fd1384": "Günlük yolu boş olamaz!", + "18292d8929b9f9b6639dcc6e49d4f4a7": "Günlük yolu / ile başlamalıdır", + "306b5ccbae58fe7278c8e098b5f06f25": "Ad boş olamaz!", + "b9f153e64173504e3700aa30b08fa0aa": "Auth_path boş olamaz!", + "c9ab8ba4f7de925b29414bbb86bd3d1f": "Auth_path / ile başlamalıdır!", + "cd44f9dcf9679c8151ce2b721f2fc6eb": "Kullanıcı adı ve şifre boş olamaz!", + "6750646f694a0c3dd46f9617ff055e61": "[{}] HTTP kimlik doğrulamasında mevcut değil, lütfen önce ekleyin!", + "714145aeae9a04f8ecf9e1f54072202a": "Kullanıcı adı boş olamaz!", + "36eb0a1bb3c002f5ed0fbf8f010881e3": "Şifre boş olamaz!", + "f20db7351e9cf57ecb9f79ad3e032081": "[{}] HTTP kimlik doğrulamasında zaten mevcut ve tekrar eklenemez!", + "218fd0a172e37293fc001328b3daca79": "[{}] panelin ters temsilidir ve [/] HTTP kimlik doğrulaması silinemez!", + "8b6cabd487e5ab76183addd53bea2d87": "Silme başarılı!", + "3034cdc7475c3fa220d4092128ff9c48": "Gzip_status boş olamaz, lütfen 1 veya 0 sayısını iletin!", + "76661faaa298338bf731c737a62b7d6c": "gzip_min_length parametresi geçersiz. Lütfen 0'dan büyük bir sayı girin!", + "f11df0d336c64058321a01bcbdc4667c": "gzip_comp_level parametresi geçersiz. Lütfen 0'dan büyük bir sayı girin!", + "5d113183845fc6e26c05bc1218677a30": "Cache_status boş olamaz, lütfen 1 veya 0 sayısını iletin!", + "a23b240364f5291f71d599e2355e6920": "Expires parametresi geçersiz. Lütfen 0'dan büyük bir sayı girin!", + "c255b7e9dd800a8cd26ff83b3698713b": "Websocket_status boş olamaz, lütfen 1 veya 0 sayısını iletin!", + "4bace8520f540a6ae54d48086a7465ba": "site_name boş olamaz!", + "aed0d6fc7665b30b1db8cd429e48c90d": "id boş olamaz!", + "81ec4e731430cca9b3d8bff6372bfafc": "Proxy_path boş olamaz!", + "9aecc647ffb6f126e5aa1f6c16af43b0": "Proxy_pass boş olamaz!", + "d591e0043cbf6d14950a46178a537626": "Proxy hedefi http:// veya https:// ile başlamalıdır", + "247d1a7dc144bd12d4c9f8797387babe": "【 {} 】 ters proxy'de zaten mevcut ve tekrar eklenemez!", + "36a7891857288c55bc5d87c470212812": "ID boş olamaz!", + "62dc2bbb0528fe87522c74b113883a48": "Belirtilen site mevcut değil!", + "c8a68e4ff275e827bbbe348eddecbf2b": "Ters proxy projesi başarıyla silindi!", + "88f9a8852b822982a9a3e839813d91bb": "Alan adları boş olamaz!", + "85fb0c03511da1e4d308fd135dec4486": "Alan adı virgül içeremez!", + "a1e7a2f08295c8f8161a8feb9e2110b0": "[{}] alan adının port numarası geçersiz!", + "5f77e0a83a9aa0e7e534e5136c99ab31": "En az bir alan adı bulundurun!", + "b9902ea698ded06e8ef4f31ba1057795": "alan adları boş olamaz!", + "5f04c54facbae56e5cdebc22b5ecbf73": "Conf_type boş olamaz!", + "bec317d58a8302e2aaf523e28f100710": "Kaydetme başarılı!", + "ba4088d3a70108e609823381c7f81f96": "oid boş olamaz!", + "ebfb6fcc2f55debe2703d50d58255f8f": "key boş olamaz!", + "fc83b0fa2366a3136f1fd8874d0bee65": "csr boş olamaz!", + "60f1b04984ea15b008a9ae1b2bd9e07f": "partnerOrderId boş olamaz!", + "a8fde220ad2740e38585d34948899556": "auth_type boş olamaz!", + "b3ad191bcb992b29302385e446e78f8a": "auth_to boş olamaz!", + "95725cbba013b9a62d4895a2f3e5a2a9": "auto_wildcard boş olamaz!", + "08fd165421792573ef13d1a83e487088": "index boş olamaz!", + "08cbd4b3fa3941156162657f2b69e8b8": "BatchInfo boş olamaz!", + "49d1b2d015f9e81d31ca60b63c2ef378": "force_https boş olamaz!", + "21e0b44e0a302af58d59ca9d8948f4e1": "Domainorpath boş olamaz!", + "34a2695966750d96d6772ce00f0d3772": "Redirecttype boş olamaz!", + "e3a270e8f43af2a339bfb2181ad83025": "Redirectpath boş olamaz!", + "352289584d886d4f04591b6f9b7785b8": "Tour boş olamaz!", + "ddcb1cafcc4b5e308f6057e07af2d10a": "Redirectdomain boş olamaz!", + "58bad30cc21797d832b361fcedff61b9": "Redirectname boş olamaz!", + "320968539b06847a07f9c48f39a73120": "Path boş olamaz!", + "51d2fd3c34890a88eafbb2801fe0827f": "Yönlendirme durduruldu veya yapılandırma dosyası dizini mevcut değil!", + "38e380b5535be56ebae6addcf29390ba": "Fix boş olamaz!", + "ad89a60d7720b8bb5095f2752e5006ae": "Return_rule boş olamaz!", + "b74b269372107d024f6c9e13cf911a4e": "Https durumu boş olamaz!", + "cefc1b6af0b80a883304b58651283f02": "Durum boş olamaz!", + "f8a019279d00484c29abaf1cb4b9260c": "ip_type parametresi yanlış, black veya white iletilmelidir!", + "f8e8cf373fa65891fe5a6e65505d30d0": "IPS boş olamaz, lütfen her satıra bir tane olacak şekilde IP girin!", + "0677c4ecb9efdab30c5077e69b1745ba": "IP boş olamaz, lütfen IP girin!", + "b8c0bc6452f788c758a4f7bedd761757": "Proxy bilgisi yok!", + "70a9558c31a978ce2b1297a2a21c1317": "Bu URL [{}] için proxy bilgisi bulunamadı!", + "82ca4452a42da1388fd435ca8a2801e7": "Proxy_host boş olamaz!", + "6dac7e9b2cbc32789bde984cddb699f4": "Proxy_type boş olamaz!", + "0dc7d98b8a487dfa0794f7c792240e4c": "Unix dosya yolu / veya http://unix: ile başlamalıdır, örneğin /tmp/flash.app.lock!", + "5c6869f159feda62d0e6441f3eb1f97c": "Genel websocket açık durumda ve bu URL için websocket desteğini tek başına devre dışı bırakmaya izin verilmiyor!", + "ff6c12be57557ce452395adac7e02b30": "Oldstr ve Newstr aynı anda boş olamaz!", + "8c9bac9aea3d7a22d3789f837dd40d3c": "Get.sub_type yalnızca harf kombinasyonları içerebilir ", + "2ac2f7203f5049438855d537f52cfee4": "Girdiğiniz içerik Çince karakterler içeriyor. Nginx'in mevcut sürümünün bunu desteklemediğini tespit ettik. Lütfen Nginx 1.20 veya daha yüksek bir sürümü yeniden yükleyip tekrar deneyin!", + "f1522550bdc24955aa540480fdccaff5": "Mevcut Nginx sürümünün yalnızca varsayılan değiştirme türlerini desteklediği tespit edildi. Lütfen Nginx 1.20 veya daha yüksek bir sürümü yeniden yükleyip tekrar deneyin!", + "0d57a0216b328aeba6ef5fc3cbf3b7e9": "Değiştirme öncesi içerik için yapılandırma bilgisi bulunamadı: [{}]!", + "e00f42f6421b797439a64e3ef24c132a": "site_name boş olamaz!", + "a6fd23485ca8abe4ab7d0580d28c4bf9": "Temizleme başarılı!", + "61e795d02f4452904f2574d936c571e6": "Temizleme başarısız, önbellek dizini mevcut değil!", + "3c99c479e3c65eac24272afc13cec604": "https portu [{}] geçersiz!", + "b9629c2dea839825c2f1916b44a154a1": "Nginx Yapılandırma dosyası hatası, envanter!:{}", + "b02ab16f5a7d45a871789d3944a41c69": "Yedekleme tamamlandı ancak zaman damgası alınamıyor", + "ffad0690fefe9ebaaf4d847a42b19f90": "Yedekleme yapılandırma dosyası mevcut değil", + "46f183fbf6bd1e64702d6930667cf117": "Yedekleme tamamlama bilgileri alınırken hata oluştu: {}", + "b16acd08872bef5685bddff85a29f625": "Veri Paketleme", + "df4bb29cbb7fe7e3dbc82e961d5b5b53": "Veriler hazırlanıyor", + "2b2a2a0b0596507029dd0feb9485a216": "Devam eden görev bulunamadı. Lütfen kontrol edin", + "32b169f72b293ef80d35435e9894f8e2": "Başlatılıyor", + "58ba018dcbe1c47ea0a293fdcee21e63": "Panel Kurulumu", + "67355337eaf300b91de09a8083c93ebf": "Yerel Yedekleme", + "99e8ebaa5ad2fafe4e141574f6b4a73f": "Dosya Yükleme", + "bd6d996cdca2252e9b99253b2a587287": "Veri Geri Yükleme", + "03a2bd12e8b51af547a08985d4882d6d": "Taşıma Tamamlandı", + "0fd957e5b2d9c535c344e9a8f86a225c": "Görev durumu okunamadı: {}", + "181f2da22cdbf536f67e46452108d95d": "Görev durumu kaydedilemedi: {}", + "4439b17c5e0977e0c73c643cea950424": "Genel görev kaydı kaydedilemedi: {}", + "74c6e9c56a9d836f2dac86fe8e0770e3": "Mevcut çalışan görev ID'si okunamıyor", + "62688aeae1c92fc7d92caaa83f22a411": "Görev durumu başarıyla alındı", + "087b165a5f0bd5a04f2ce4be7dca14dd": "Çalışan görev yok", + "37a5c6e23237ddff7185d375c34eed60": "Görev {} mevcut değil", + "f613fc3fb0aee3affafcae3477d42bf8": "Zaten bir görev çalışıyor, görev ID: {}", + "367b4a21be07204266d306508cc92dc7": "Taşıma görevi başlatılıyor", + "793c8358adb487f79f85acfdc44d54bb": "Taşıma görevi oluşturuluyor: {} -> {}", + "e597529fcdfa1dab69eadaf1c44088ba": "Taşıma görevi başarıyla oluşturuldu", + "c304dcebe892b468725402a369b3dd46": "Sunucuya bağlanılıyor {}:{}", + "d2f3c14129fe059cf6d99f1583abc23e": "[+] Sunucuya başarıyla bağlanıldı {}", + "ae3c4e96fa1411ea25c05ce9a18ae2ae": "Sunucuya başarıyla bağlanıldı {}", + "c7203791b356c5f3faf5d8c43d54a575": "Kimlik doğrulama başarısız: yanlış kullanıcı adı veya şifre", + "10adeeeb866978b5ae637ae2bc13fb96": "SSH bağlantı istisnası: {}", + "1e36faff765dbbbe631f424983a21783": "Ağ bağlantı hatası: {}", + "f9d5c96265bf9a99b163f5adf699cde9": "Sunucuya bağlanılamadı: {}", + "cd4dc264f41eda817374af0bddcea259": "RSA anahtarı kullanılarak bağlanılıyor", + "5e1b5e437b38bfb11b1e4853f8838d3f": "RSA anahtarı yüklenemedi: {}", + "fb947607c0d2814eed45d41a9e3227f1": "DSA anahtarı kullanılarak bağlanılıyor", + "1cc35e618813746cb1bd4658f7ac61a0": "DSA anahtarı yüklenemedi: {}", + "e9ba4ba778d8a0b4423c09ff6cb32726": "ECDSA anahtarı kullanılarak bağlanılıyor", + "f618338d0d56f440d7fb1b59d8add72c": "ECDSA anahtarı yüklenemedi: {}", + "f579ce14b1e98ae9ad4d392279730d9a": "{} anahtarı kullanılarak bağlanılıyor", + "696797724fc3db3f012761759f720c23": "{} anahtarı yüklenemedi: {}", + "fa4e18c6d3b0c0fa6a5ac1303dda02a7": "Anahtar tanınamıyor veya yüklenemiyor, lütfen anahtar dosyası formatının doğru olup olmadığını kontrol edin", + "369709628dacb54949b2c711acd93968": "[*] Sunucuya yeniden bağlanmaya çalışılıyor (deneme {}/{})...", + "88aefbc5392deac3ab63223d6d82b66b": "[!] Sunucuya yeniden bağlanılamadı, maksimum yeniden deneme sayısına ulaşıldı ({})", + "908300abff5dfdf254726c2193f3e550": "Sunucuya yeniden bağlanılamadı, maksimum yeniden deneme sayısına ulaşıldı ({})", + "5842d2e8785c14b1e357c4ee1dd1a0c6": "[+] Sunucudan bağlantı kesildi {}", + "7463b0247d5614df91270544c6b944bb": "[!] SSH bağlantısı kurulmadı", + "43234c4b446ff41810dcf807d317cba7": "[*] Komut çalıştırılıyor: {}", + "db4d271e5cb8fe3192ed73bd624a86fe": "[+] Çıktı:", + "c519185a1f47d37b21866e5f05928dc8": "[!] Hata:", + "6a2909a7dbeca5d8c85843ecd4cd3fae": "[!] Komut çalıştırılırken SSH bağlantısı kesildi: {}", + "88783238ef5d081aade9e63160d329fb": "[*] Yeniden başarıyla bağlanıldı, komut tekrar deneniyor...", + "8692bb08477b83615b1ae995552e2c92": "[*] Sunucu işletim sistemi türü algılanıyor...", + "95adf53ab7c91ed98c77d3c0e38a2a1a": "[+] İşletim sistemi türü: {}", + "2ab043e41d8fd10931cfa912b4b11bf8": "[!] İşletim sistemi türü belirlenemiyor", + "2d23313d6e3e201771154cf99d5dab34": "curl veya wget kurulumu başarısız oldu, lütfen manuel olarak kurun", + "b44992b4430f7759108e5242176b7871": "[+] curl veya wget kurulu", + "4ba07005cef8f98a0625a7d1eb0a142e": "curl veya wget kurulu", + "e3a56811a35322959c535d38d2e91f7e": "[!] curl veya wget kurulu değil, kurulmaya çalışılıyor...", + "613a8be93fcd44002e549e0767c85a86": "İşletim sistemi türü algılanamıyor, lütfen curl veya wget'i manuel olarak kurun", + "8a4d20948ccc8034e3118af3bb683da3": "aapanel kurulumunu başlat", + "df97b5d4f31c5cd4a3611774abb6de52": "[*] aapanel kurulmaya başlanıyor...", + "d91a58f92edb4b30de7e5399908922da": "[*] aapanel şu komutla kuruluyor: {}", + "f20af8613aed0194f191d660977de57c": "Kurulum tamamlandı", + "4357633f73240ceb1b14d13877a90ac2": "aapanel başarıyla kuruldu, yedekleme görevi başlatılıyor...", + "f109f7ce6f98f5a3cbf2d273c5749911": "[+] adres: http://{}:{}{}", + "79fca63f99a824fc4015d93604433ea1": "aapanel kurulumu başarısız oldu", + "b1508aec34af599979d919e20b64e385": "Kurulum ilerlemesi: {}", + "7b6725a19c46bc6d47e5a49c5764991f": "[+] kullanıcı adı: {}", + "cd3d4cf5a75fd5f9467f6d0f196dbec8": "[+] şifre: {}", + "6703def4d1bfb870f64ca461a7bffc0c": "[*] Yedekleme dizini oluşturuluyor...", + "c550206bc8daea4b287573ee31f839de": "[+] Yedekleme dizini {} oluşturuldu", + "9e3f708636e9ea820d608629fdf47c65": "[!] Yedekleme dizini {} oluşturulamadı", + "9f22d9cb59270cf0f6382a66a63ed8cd": "Uzak dosya boyutu alınamadı: {}", + "ff490ab3be22afd2f2a06842935eedd3": "Yedekleme dosyası {} mevcut değil", + "e69d7c21f42d046b365c56045ffca873": "Yedekleme dosyası {} sunucuya yüklenmeye başlanıyor", + "df6ecb94c7a5f06b78d0bde168e769e9": "[*] Yedekleme dosyası {} sunucuya yüklenmeye başlanıyor...", + "217c9c3fec268ff4d6c35bd4d5d564ea": "Yedekleme dizini oluşturulamadı", + "2942f90ee3b191c0b98add719760e356": "[*] Dosya boyutu: {:.2f} MB", + "08b57d594c99a8339461fe78ebf95f1a": "Dosya yüklemeye hazırlanılıyor, boyut: {:.2f} MB", + "2f24607a7361d721459e3a12584fd340": "Dosya zaten tamamen yüklendi, yükleme adımı atlanıyor", + "4d57fe7dc3462ad55cc9bb1623a3eb5e": "[*] Tamamlanmamış yükleme dosyası algılandı, devam etmeye çalışılıyor...", + "9c30f21dd1175d2e9b7503e873a52b2f": "[*] Yüklendi: %{:.2f} ({:.2f}MB / {:.2f}MB)", + "04e05f53e1a18a781dbabae6cdd0e495": "Tamamlanmamış yükleme dosyası algılandı, {:.2f}MB'den devam ediliyor", + "426e1c0eadfad630c5433af2757cee8f": "[*] Yeni yükleme başlatılıyor...", + "61eb03fffeb48e199890a5a8a24a5dc9": "Yeni yükleme başlatılıyor", + "148b2912de8b29f47dc234983554ea2b": "\r[*] Yükleme ilerlemesi: %{:.2f} - {:.2f} KB/s - Kalan süre: {}", + "470e645fe1f07b6d4e77fc7b16b2a9a0": "Dosya boyutu doğrulaması geçti: {:.2f}MB", + "40070e1f0867f97db0fa33039fae2063": "Dosya başarıyla yüklendi", + "95dd52c0ce48e72f2021dee1a7a86433": "Dosya boyutu uyuşmazlığı: yerel {:.2f}MB, uzak {:.2f}MB", + "f7dac1a705d6bd05b3a42086923cf932": "Yükleme kesintiye uğradı: {}", + "554472ae3f1db37c67fe53e4a2fb53cd": "[*] Kesinti noktasından devam edilmeye çalışılacak {:.2f}MB (deneme {}/{})...", + "1e6aeb0dc8e2567bdec31246c27233a2": "Dosya yükleme başarısız, maksimum deneme sayısına ulaşıldı", + "31c53955195484e892d36d1815e2e5cd": "[*] Yedekleme dosyası {} çıkarılmaya başlanıyor...", + "21ec696ab5bc206eac1cf62268824cf0": "[!] Yedekleme dosyası {} mevcut değil", + "e344a18f13f2b196f3b56938c824dd5f": "[!] Yedek dosya adından zaman damgası çıkarılamıyor", + "d4a81ed03254ca37166d84ccb7de0bd6": "[!] Yedekleme dosyası çıkarma işlemi başarısız oldu", + "0838e64585e87c91bdfa34890445346e": "[+] Yedekleme dosyası başarıyla çıkarıldı, dizin: {}", + "0fddb4bae41a7fc9e2de8896d8cb819f": "Yedek geri yüklemeyi başlat (zaman damgası: {})", + "5a275e6386d2d3c647f6ccecb422debc": "[*] Yedek geri yüklenmeye başlanıyor (zaman damgası: {})...", + "e9b7b10566a85a5356096a630d64d2d7": "[*] aapanel hizmetinin başlaması bekleniyor...", + "8d7b4f7247dec431d103af1ce34d0233": "Geri yükleme modülü mevcut değil: {}", + "304e687ee7c78fdae6e70226f61d9708": "Geri yükleme görevi ekleme işlemi yürütülüyor...", + "ac3f9da9a646fe10c989e74b42fe5e8e": "[*] Geri yükleme işlemi yürütülüyor...", + "ac6fa0596fbb508fe61e44848548b50c": "Geri yükleme komutu çalıştırılamadı", + "846cdc02545d18e4b5308d076aa93e95": "Yedek başarıyla geri yüklendi", + "062ca961d059ebd358098ffdb12f42bb": "Yedek geri yükleme başarısız oldu, lütfen günlüğü kontrol edin", + "f857f6dc6a146a3b125ea3253052ca43": "Taşıma görevini başlat", + "53779b59d2ae1ff96f4afdfa6bbc6c7f": "curl veya wget'in kurulu olup olmadığını kontrol et", + "39679b63dca413a83cf5b664d46c929b": "curl veya wget kontrolü başarılı", + "0de6a624fa64af38f9a880430e72607e": "aapanel kurulumuna hazırlanılıyor", + "28dbda7cf25735198d7695702b18aad5": "aapanel kuruluyor... tahmini 5 dakika....", + "7a58e7034a9db769af197c85beccafd5": "aapanel kurulumu tamamlandı, yedekleme görevi başlatılıyor...", + "a850af0d3bf3586319178228af5698bf": "Bu makinede yedekleme görevini çalıştırmaya başla", + "28ec7aad1cd6afdbbc35a6aeaa95761a": "Yerel yedeklemenin tamamlanması bekleniyor", + "82550a0ece235f0d0b363135e8d94d28": "Yedekleme görevi iptal edildi veya başarısız oldu", + "c8f2865e1e43bb2fd88a0e16f3cd4c17": "Yedekleme görevi zaman aşımına uğradı ve belirtilen süre içinde tamamlanmadı", + "4bb768be41853a0aed9f56d5907be1bd": "Yedek zaman damgası alındı: {}", + "c129e18a625645767772504cf77e279a": "Yedek zaman damgası okunamadı", + "39869251ca57148d747cfd6ee60bf604": "Yedek zaman damgası dosyası mevcut değil", + "60f1d8c19f5fbb046deac4aab745f63c": "Yedekleme dosyası mevcut değil: {}", + "d67c60b6be8ebfd9f73816a7e8e4abfe": "Yedekleme dosyası yolu okunamadı", + "9e6caab47781582f556a81245571d8a7": "Yerel yedekleme tamamlandı: {}", + "b4df9a8cca277b49933dce7c8be7ab20": "Yerel yedekleme tamamlandı", + "6c97fd171b87d3f954040d4dea833cb9": "Yedekleme dosyasını yüklemeye hazırlanılıyor", + "6384458c2647bf7e1af9d942aab00d6d": "Yedekleme dosyası yüklenmeye hazırlanılıyor: {}", + "e2fdcbc1d4e8b1fa77a161c4448a4bf6": "migrate_backup_info.json dosyası yüklenmeye hazırlanılıyor", + "6533c064fee3726a0f1caf89a423fd3b": "migrate_backup_info.json dosyası yüklenirken bağlantı kesildi", + "ffa61675a37203858ec712cc635fcbdb": "migrate_backup_info.json dosyası başarıyla yüklendi", + "d192d35fb79e54273bedf84f9ee3d772": "migrate_backup_info.json dosyası yüklenemedi: {}", + "fdf17802146b46b291164d7c933950c1": "Yedekleme dosyası başarıyla yüklendi", + "97dc827b342454de3a5f9416ee1e513b": "Yedekleme dosyası {} çıkarılmaya hazırlanılıyor", + "67c40d3544174eb6d6fa63dccaa6bf6e": "Yedek geri yükleme görevi eklenmeye hazırlanılıyor", + "7ec7fd83e38b6d53374f37bd32a3da09": "Yedek geri yüklemeye hazırlanılıyor (zaman damgası: {})", + "7fd19264d09d2ff33f1f8b5867354fdb": "Yedekleme ve geri yükleme sırasında bir istisna oluştu", + "ef05e1295515a64356e53d3c11498f25": "Yedek geri yükleme görevi başarıyla eklendi", + "f90b7afaee99210e74fa3bc47d4f4918": "Tüm taşıma işlemleri tamamlandı", + "9e5e797901f9870ebf7a96266bc1e972": "Taşıma görevi tamamlandı", + "dd2a8fc49fd7c92616c228c8039410c8": "Taşıma işlemi sırasında bir hata oluştu: {}", + "1a119744a8cc132d708306e1fb90543f": "[*] SSH bağlantı bilgileri doğrulanıyor...", + "ef3ae6d88f5637005f063685ad50c625": "[+] SSH bağlantı doğrulaması başarılı", + "66db9584d2d99eeb99a90f5f4c52d944": "SSH bağlantı doğrulaması başarılı", + "a0bc8a00e83b79e42010343c31924dd2": "SSH bağlantı doğrulaması başarısız oldu", + "e871fe05e99da0c88a09686c3b7c88d7": "[*] aapanel kuruluyor...", + "1f3ff88a0fdd87e71bf237f3805dccde": "[*] Yedekleme dosyası yükleniyor...", + "c0b860cd7155af1e642fd0c41ee29262": "Yedekleme dosyası yolu belirtilmedi", + "fa1ab4e94bafd1f5b6ea55e3e9dc33a4": "Yedekleme dosyası çıkarma işlemi başarısız oldu", + "d36c2f46c959ee1fb416a947f8e75a47": "Yedek geri yükleme başarısız oldu", + "de6b9cefab1a252ada4463ee8f015f07": "[+] Tüm işlemler tamamlandı", + "496249e9e1cd99dd54146ed6565fe3f8": "Tüm işlemler tamamlandı", + "20c605607dbf9d6d1d7bb62ddc792ee0": "[!] İşlem sırasında bir hata oluştu: {}", + "4020efc99e8c60a0e7d27a5598d501e4": "İşlem sırasında bir hata oluştu: {}", + "55be882ba3aef502f3a93ad90bb9d613": "[*] Yedekleme komutu çalıştırılıyor...", + "1a6da8233a4a66ccc90d767967f22d35": "[+] Yedekleme görevi başarıyla eklendi", + "af3c2b419ba0779d81ac91cd3ca246b6": "[*] Yedekleme görevinin tamamlanması bekleniyor...", + "c8eb8110632bb540ca112819e96dc770": "[+] Yedekleme görevi tamamlandı: {}", + "0d1135061a5b00b63bdb12c2f3c9461f": "Yedekleme görevi başarısız, yedekleme dosyası oluşturulmadı", + "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] Yedekleme görevi tamamlandı (zaman aşımından sonra dosya algılandı): {}", + "637452f337bdc2991f23593124d62440": "[!] Yedekleme görevi zaman aşımına uğradı ve belirtilen süre içinde tamamlanmadı", + "ec3a935e2442ef55924ad758e17b92cb": "Paketleme tamamlandı", + "40379fed8ad84c0869a1b3e94f8a56fb": "Halihazırda çalışan bir yedekleme işlemi var!", + "20bf8648c4a3ea91ad3057f9aeca5f88": "Tüm verileri sıkıştırmaya ve paketlemeye başla", + "dc72aa669e82dd5ec7cff2ed35f2762d": "Tüm verilerin sıkıştırılması ve paketlenmesi tamamlandı. Veri boyutu: {}", + "bacf615d02bfa3c58728f62490489e9a": "Yedekleme tamamlandı. Yedek dosyası: {}", + "ad69c11076734ffc4c0532b54e6f5be3": "Yedek dosyası bulut depolama alanına yükleniyor...", + "c3a6378e06ff3e479a85b0f15c41cb1e": "{} Parçalar halinde yükleniyor...", + "c722636ded0be8237386a427242ff3b2": "{} Yükleniyor...", + "bb914d2441ee988dcd4d616350272f10": "{} konumuna yüklenirken hata oluştu: {}", + "8085ded0444fcde19b9ea4d365502f67": "Yedekleme bilgisi bulunamadı", + "2cb88461938b0c418391af13f65a727d": "Yedekleme işlemi çalışıyor, ancak zaman damgası alınamıyor", + "269159feb2faab7515c90b9f5de791a5": "Yedekleme yapılandırma dosyası mevcut değil: {}", + "daa55a73708f906c8cee0bb87284740c": "Yedekleme ilerleme bilgileri alınırken hata oluştu: {}", + "01ecbbb2b353cf4d915bbe1c1cd5505c": "Sunucu Yapılandırması", + "ca3c22c9c94069053b85db0f50373639": "Sunucu yapılandırması yedekleniyor", + "d41c74fcc2dd04880a0285c147188bf7": "Yedekleme verileri hazırlanıyor", + "806cb06592627effa1a4073fa2f66ce2": "Halihazırda çalışan bir geri yükleme işlemi var!", + "37dfdfda0ab7a98140943484fe70a76c": "Veri paketini açmaya başla", + "c415a70c8540eb59121587b3ab5d5cfa": "Verileri geri yüklemeye başla", + "c76bac64baa6fbf5c51ec144c70d91d3": "Veri geri yükleme tamamlandı", + "da7f5eb715a1a1a2378ee56a5ee24bbd": "Veri geri yükleme başarısız oldu: {}", + "ca0af2ce76c89e3bfa4bad3105c21203": "Geri yükleme tamamlandı ancak geri yükleme zaman damgası alınamıyor", + "0f4f13d63e87130a24667c6bd4cb5e2e": "Geri yükleme yapılandırma dosyası mevcut değil", + "0c5d25bf5706190b8ad0d8289a93aeba": "Geri yükleme tamamlama bilgileri alınırken hata oluştu: {}", + "667a68bf7113541f218081fac58f6815": "Geri yükleme yapılandırma dosyası mevcut değil: {}", + "e7a91a4400b67b84e7cca61642b93f4d": "Geri yükleme ilerleme bilgileri alınırken hata oluştu: {}", + "1b4c2c21e77ac36e4097a92dabd55bc0": "Bilinmeyen {}", + "c1173fa3bd3d44530eead89e7edeefe1": "Veri Sıkıştırmasını Açma", + "a76a19147d36f4f2d6801cf602de2718": "Bilinmeyen Görev", + "5ba4673aac259be67bac9db8cfc9c5b2": "Veri geri yüklemeye hazırlanılıyor", + "5b43e0e228169e5df9cec81876cd3710": "Hata: force parametresi 0 veya 1 olmalıdır", + "4c3880bb027f159e801041b1021e88e8": "Yöntem", + "7d3c180ded4dcc8eade80cd031ab1b5d": "Lütfen sık işlem yapmayın, bir süre bekleyin", + "37b15a5d1e4fa625ea8996de5e378a84": "Başarıyla alındı", + "b0d4998a26f5b5742ad38c4af8817e32": "İstisna", + "616e012bcc90980f6ddfd2b3c17345f8": "İlerleme durumu alınamadı", + "9e0a136b55af822e72c8d6716d2d4bf3": "Bilinmeyen Tür", + "6ac0b58e56cefd76e61bc840dfad94fa": "Görev başarıyla durduruldu", + "b808472e703dfd53fdcb59fbe89e3436": "Başarıyla yürütüldü", + "12b65fbe011be723b4ae981c0d42c44d": "Geri yükleme görevi başarıyla eklendi", + "741e160bb129a548e26fbad37c8f674d": "SSH bağlantı testi başarısız, lütfen IP ve portun doğru olup olmadığını kontrol edin", + "e0867cf8c8a1935e8bd681f0ff28a612": "SSH bağlantısı başarıyla doğrulandı", + "f94e94b4ec479336f36fdf9fe1004b83": "Taşıma Görevim", + "b100f6e1c91f013adf0ca5ce6606a89d": "Taşıma görevi başarıyla eklendi", + "fd0099266c1971c5c40036e615d67fd4": "Başarıyla taşındı", + "87aa2e739755a6fea3a63876b5a1d48e": "Başarılı", + "d7db03701029007097b8e0cd61a983f6": "Şu anda taşıma görevi yok", + "808781229f7b019ba6a44ea3871e3b6d": "taşıma görevi okunamadı, lütfen daha sonra tekrar deneyin!", + "e728b6a004aa5e61efd25bf815a6e290": "Yedekleme görevi başlatılıyor...", + "c9d48d6a4ebe28917b5439c91faaff68": "aapanel kurulumu tamamlandı!", + "f5e7895e7c31fedd32b520012910f960": "Taşıma Görevi", + "3a94451860f0c20374128e61e8783d26": "aapanel Kurulumu", + "f02f38d885226197e729453ea104feac": "Geri Yükleme Görevi", + "0ba29c6a1afacf586b03a26162c72274": "Ortam", + "f072f24284b47eaf8adcf88b29021618": "Taşıma günlüğü mevcut değil", + "9166b100905c2625ba9df2524f8c2faa": "SSH bağlantı testi başarısız: {}", + "3a02e4b05ad1b321e855aa6116699b6e": "Taşıma hatırlatıcısı başarıyla silindi", + "334afd10871f8c52a884e307d2e17ccf": "Taşıma geçmişi başarıyla silindi", + "2f393a2518f5668880822f47fcdb5cc0": "Taşıma geçmişi mevcut değil", + "cbea0a592d6a3c48f2418d687cf54200": "Terminal verilerini yedeklemeye başla", + "e7e06b2dd59401dcf79acf2e3124d2fb": "Terminal verileri yedeklemesi tamamlandı. Veri boyutu: {}", + "a273d4d4d0cf13abc1d7a4f96b8c851e": "Terminal verilerini geri yüklemeye başla", + "1a15a2b43f1dd92e836a592fb180843d": "Geri yükleme başarısız, dosya mevcut değil", + "95d831166994e434da49f3ed70b73e8e": "Terminal verileri geri yüklemesi tamamlandı", + "e3a04ee4c0a034510866948e571c7966": "Güvenlik duvarı verilerinin yedeklenmesi başlatılıyor", + "9a176a20c15e3dc096ed8bc5a05182ba": "Güvenlik duvarı port kuralları ✓", + "ce693968cbf6e5f66af91e3dd2317d78": "Güvenlik duvarı IP kuralları ✓", + "7ebd5e6b35357be0d5079f674f68ed8f": "Güvenlik duvarı yönlendirme kuralları ✓", + "8dfa78d85bb1d152b0cafe398b27e1ae": "Güvenlik duvarı bölge kuralları ✓", + "927bb2298acc2c29d1beaff4d1656371": "Güvenlik duvarı verileri yedeklemesi tamamlandı", + "d076d2dde53272dc55d47f34a465ebef": "Güvenlik duvarı verileri başlatılıyor", + "3e0b3a3e90cc4a1f5abbf3fd1a38c2b7": "Kuruldu.", + "d1b0c3d7a1b5f80626ec1a2395b4f990": "Güvenlik duvarı verilerinin geri yüklenmesi başlatılıyor", + "1f35b1eac1045718a64b4133a8e8829b": "Güvenlik duvarı port kurallarının geri yüklenmesi başlatılıyor", + "a168f915263109733b87807a0db41e01": "Güvenlik duvarı port kuralları başarıyla geri yüklendi ✓", + "ce04afdfe07dead0b0fb34e6bc00b6e5": "Güvenlik duvarı port kuralları geri yüklenemedi", + "c32b29f59e8b553998c75c5d7bc44dc6": "Güvenlik duvarı IP kurallarının geri yüklenmesi başlatılıyor", + "b68673b625a1d48b3953e37bb39fcbab": "Güvenlik duvarı IP kuralları başarıyla geri yüklendi ✓", + "ee0294aac018e0ab5f4e5e020f8d867c": "Güvenlik duvarı IP kuralları geri yüklenemedi", + "326c03834ea4914dbb02cf04e0c0164f": "Güvenlik duvarı yönlendirme kurallarının geri yüklenmesi başlatılıyor", + "b077ba90ec76f05d0e541733e8291e3f": "Güvenlik duvarı yönlendirme kuralları başarıyla geri yüklendi ✓", + "5ed68fe9a3e0530485018c0704d91035": "Güvenlik duvarı yönlendirme kuralları geri yüklenemedi", + "03f3f31fd240913a083a78fc2d60f6f8": "Güvenlik duvarı bölge kurallarının geri yüklenmesi başlatılıyor", + "6f9922502feac3b7e6ede129664e3e18": "Güvenlik duvarı bölge kuralları başarıyla geri yüklendi ✓", + "771b376bf4473fc2f1cea6958de2afeb": "Güvenlik duvarı bölge kuralları geri yüklenemedi", + "6331b46ffa70ff97b558022d5ae8098a": "Güvenlik duvarı yeniden başlatılıyor", + "1bb2a65f17d7e3c685f36f7ff1794338": "Güvenlik duvarı yeniden başlatma tamamlandı", + "246f6edb1d9df9b3abe78fc810876c28": "Güvenlik duvarı verileri geri yüklenemedi: {}", + "483829cb5ae13bb190eb59acdf4f3231": "Posta sunucusu verilerini yedeklemeye başla", + "8c7a0774ab14bae83a69b8562102fb0a": "Posta sunucusu verileri yedeklemesi tamamlandı. Veri boyutu: {}", + "e8480272035737a247832288f618c270": "Posta sunucusu verilerini geri yüklemeye başla", + "e058c7e1fd9cd1a4fd7ac7240a7765d2": "Geri yükleme başarısız, dosya mevcut değil", + "6e6e9dcfdf7bd846ab85a4ff0e0e2f95": "Posta sunucusu verileri geri yüklemesi tamamlandı", + "1502c42b339a3dfe20e4c95186b38dc3": "FTP hesap bilgilerini yedeklemeye başla", + "b5cf2f2c48fb5978825d3341759dd6d6": "{} kullanıcısı ✓", + "120446d8a303de2396a1bb62ba8e8755": "FTP hesap bilgileri yedeklenemedi: {}", + "b18010e000c073a3587a89b2931c2770": "FTP hesap bilgileri yedeklemesi tamamlandı", + "c9073077bfd7adb73cbe253177b08833": "{} hesabı geri yükleniyor", + "c5df3d6bec6157b48fb24bf8fe2a2add": "FTP oluşturma başarısız: {}", + "f3f8d4ba630fa6a7de1e9f4e34bad5dc": "{} hesabı ✓", + "af4ff8fd3803d5496f74604eb1665e81": "FTP hesap yapılandırmasını geri yüklemeye başla", + "2bf94c9147c8220fc83f955175216c40": "ftp: [{}] hesabı başarıyla geri yüklendi ✓", + "9417f3027d6326176c986ffeee1f4491": "FTP hesap yapılandırması geri yüklenemedi: {}", + "8ed95b2c3c38acf7e9532a582f08bb86": "FTP hesap yapılandırması geri yüklemesi tamamlandı", + "49237b104331e8724e521b2fe6fdf6d8": "Eklenti verilerini yedeklemeye başla", + "26d785a1a32377e0e0e9498f4a7da12e": "Nginx güvenlik duvarı ✓ ({})", + "7f578816e3867140ee56ccbbc1d69f55": "Web sitesi izleme raporu ✓ ({})", + "ff083aca075c6543c2999781b6677c19": "Kurumsal kurcalamaya karşı koruma ✓ ({})", + "2f29dad748ac1d8d50481ecbd7e05091": "Sistem güçlendirme ✓ ({})", + "79bb9b38c599612b8b8f38ddc50f5c25": "Eklenti verilerini geri yüklemeye başla", + "ee84e47223f5ce39b8bb239376db4af3": "Taşınan makine bir aapanel kullanıcısına bağlı değilse ve Profesyonel sürüme yükseltilmemişse, eklenti geri yükleme hataları oluşabilir", + "30560687e27ef30b6f1cde26359eea6c": "Nginx güvenlik duvarını kurmaya başla", + "a776b4ccf7343a25223817c8597ca7cf": "Nginx güvenlik duvarı ✓", + "d0c97e94eb5061783de7bbad8e7bd295": "Nginx güvenlik duvarı verilerini geri yüklemeye başla", + "0010c09bd9f322c3b88a89dd0b52c831": "Nginx güvenlik duvarı verileri ✓", + "427ad80bf462a92719fcff5c1a1be755": "Nginx güvenlik duvarı ✗", + "29ad27f749c3f913779d432115de597f": "Web sitesi izleme raporunu kurmaya başla", + "66f3f8adc854963e94a643b706157309": "Web sitesi izleme raporu ✓", + "a0dded50b067929299258b3c8fc1b0e6": "Web sitesi izleme raporu verilerini geri yüklemeye başla", + "bd43add14ebbd0f448c207c48e1d5ac8": "Web sitesi izleme raporu verileri ✓", + "a7b8bc831a9b36cc5127b5f8ecbec22a": "Web sitesi izleme raporu ✗", + "c922c95c5f7973050d08412a26aab462": "Kurumsal kurcalamaya karşı korumayı kurmaya başla", + "31d844f4dd95b8a71e8ddbd1b9912ae5": "Kurumsal kurcalamaya karşı koruma ✓", + "8fcd5da199e1e04830a686a576a2e914": "Kurumsal kurcalamaya karşı koruma verilerini geri yüklemeye başla", + "941b78173e944c6737a858bada098311": "Kurumsal kurcalamaya karşı koruma verileri ✓", + "50bcd3813a4b18663b0bdc29f73b8c90": "Kurumsal kurcalamaya karşı koruma ✗", + "cdcfb9e176572fe14bdc4c88474d8baf": "Sistem güçlendirmeyi kurmaya başla", + "4d86b9c9f554fa3d477a86d2f62aaa1b": "Sistem güçlendirme ✓", + "5633c4d754985da6c7fab116964ac501": "Sistem güçlendirme verilerini geri yüklemeye başla", + "bda583fc184a8e079a37e169a9614e10": "Sistem güçlendirme verileri ✓", + "479557cf249b3145d91a94ed130c5ecb": "Sistem güçlendirme ✗", + "746e85b89c25244ae397c06029badc9c": "Eklenti verileri geri yüklemesi tamamlandı", + "69d45b5b241dac0fa1efaf7b6966520b": "SSL sertifika bilgilerini yedeklemeye başla", + "835601ead78ba62b89c4b27956645362": "{} {} Sertifika dosyası mevcut değil ✗", + "025de5f8c791241d326ec4e086e9898e": "{} [{}] Sertifikanın süresi dolmuş ✗", + "ecd204c03ea44719e6fa4ea25569266a": "{} {} ✓", + "aa6b67db23e9cb0b943aa6c0def92cb4": "{} {} Yedekleme başarısız: {} ✗", + "ec56d7aedc9c5242d094ebbaeda5047e": "DNS API sağlayıcı bilgileri yedeklemesi tamamlandı", + "b561b1ca5fd89d639144a099f5fe096d": "SSL sertifika bilgileri yedeklemesi tamamlandı", + "7aa422d849ba11b569187382a3a509d1": "Sertifika {} için dağıtım siteleri geri yükleniyor...", + "4573d024bbb8e1f8c8efb2582a6a01c0": "Sertifika {} için dağıtım siteleri geri yüklendi: {}", + "baa339aa8e95d46851fd48574cb1d902": "Sertifika {} için dağıtım posta kutuları geri yükleniyor...", + "9307ae55fb4a7b878e377790e040eec4": "Sertifika {} için dağıtım posta kutuları geri yüklendi: {}", + "b057e2d52c20f76bf3c788eb9b4873fa": "Sertifika {} için dağıtım paneli geri yükleniyor...", + "41596c0d36a66c44434d5882c3cfa793": "Sertifika {} için dağıtım paneli geri yüklendi: {}", + "6ffcb0a3e8cdf728b3e7bc45ae221e5a": "Sertifika ekleme başarısız, lütfen günlüğü kontrol edin", + "c8a71420e709d8a4d02914a78d9a0e06": "Alan adı SSL sertifika yapılandırmasını geri yüklemeye başla", + "0672a3dc402dc9657fd0a0f1580d1c12": "Geri yüklenecek veri bulunamadı", + "52f23f668fced51c3e25c781299fbff8": "Yedekleme dizini {} mevcut değil, SSL sertifika bilgileri geri yüklenemiyor", + "ad93ef11d3e4238618571f517e11e80d": "Geri yükleniyor {} Konu: {}", + "c49480308ee71202cc5fff5ea96eaaed": "Sertifika dosyası mevcut değil", + "42db220bc931b97aecdef6b6f0362bc4": "Sertifika veya özel anahtar dosyası eksik", + "9f88b7ffec183a54f2e7e6136b4f5ac7": "SSL sertifika bilgileri geri yüklemesi tamamlandı", + "5e211e4fb46748c1d243b59a15645df7": "Zamanlanmış Yedekleme Görevi Başlatılıyor", + "a9d58d413bd48f1bd7e8041b6d8ceab0": "Zamanlanmış Görev {} ✓", + "ff0550fa0270ac20419790a51900d815": "Zamanlanmış Yedekleme Görevi tamamlandı", + "a7609aefd5330a1384704e73dc0b4dc0": "Zamanlanmış Görevi geri yüklemeye başla", + "48ed083561c2f201d9fe52f6a35ee982": "Zamanlanmış Görev tamamlandı", + "d4e8a75d522d3e77ae80eadd49b0865e": "Uzak veritabanı listesi boş", + "5d806f11bb91996cafe7836b27a4e770": "Redis bağlantı istisnası!", + "1d69261c05f6ce03d2cab5528d443fa7": "Veritabanı verilerinin yedeklenmesi başlatılıyor", + "0cf1803cfdfda6f67d12fa7e1c4a25a7": "{}uzak {}veritabanını yedekle", + "32d68be800692faddb12c5252fded05e": "{}Uzak {} veritabanı bilgileri ✓", + "0c64283397c43effb13a2cbe818ce929": "Veritabanı verileri yedeklemesi tamamlandı", + "2f7d7cfc04be64fa087e964d41cb26b4": "SQLite veritabanı listesini geri yüklemeye başla", + "a1248c409fec22277ab13a6bb433188e": "SQLite veritabanı listesi yedekleme dosyası mevcut değil, geri yükleme atlanıyor", + "d03ebecb5f420070192de8712926151a": "SQLite veritabanı listesi geri yüklemesi tamamlandı", + "ad6937d61b4d6e93a13f03308c66f2eb": "Mongodb hizmeti çalışmıyor!", + "f60644c6526c4d9afe5b20db75fc2e5b": "Veritabanı yedeklemesi başarısız, dışa aktarma dizini mevcut değil!", + "161bb420493657920405937a2cf42c96": "Yedek sıkıştırma başarısız!", + "20a42330f9241c13c91e3e203449a8a6": "Yedekleme aracı eksik, lütfen önce yazılım mağazasından pgsql yöneticisini kurun!", + "7eff7c4aeb6bfe736f8a78c0096f92c7": "Lütfen önce yönetici şifresini ayarlayın!", + "6e907b499869ab16105a7aba198e13a7": "Veritabanı şifresi boş! Lütfen önce veritabanı şifresini ayarlayın!", + "982c5a05ac4dbaee10c865ba767b2249": "MySQL db senkronizasyonu...", + "a9ace5523668233a3867f26cc86e29c9": "MySQL db senkronizasyonu tamamlandı.", + "c15645e9ad579e4bfcb536bc5d7015c3": "Veritabanı verilerini geri yüklemeye başla", + "c9206e74b8d32e1e0a5710c0fe322cee": "{} veritabanı {} geri yükleniyor", + "ecea29915732c5d0001ece74601f3d20": "{} veritabanı {} ✓", + "b61a878149263a02fa99cc635409ee25": "{} veritabanı {} ✗ ({})", + "3fa7c5a9beafa67bb44999cab5cff52c": "{} veritabanı {} geri yüklenemedi. Neden: {}", + "e89775cca910deb5e484f631606cceb1": "Veritabanı verileri geri yüklemesi tamamlandı", + "9750547146e22f364299bc5f561a3fb6": "Uzak veritabanını geri yüklemeye başla", + "23f2db47eb6ff16785e5a222c8657f93": "Uzak veritabanı geri yüklemesi tamamlandı", + "6aca7aec516bcaf7ded80873f08dd55c": "MySQL {} şifresiyle başarıyla başlatıldı", + "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL yeniden başlatılacak, lütfen bekleyin...", + "a692f58dc09f3e41c133ea460ff3b8df": "{} veritabanı şifresi geri yüklenemedi. Neden: {}", + "b17f6f187c4ecfd392c6367ec2ba6498": "{} yedekleme kimliği mevcut değil, içe aktarma sonlandırıldı", + "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} veritabanı kimliği mevcut değil, veri kurtarma sonlandırıldı", + "611881e9f5d01b22a447c282aa8aca23": "MySQL veritabanı {} zaten mevcut", + "98b38cd2445396b44204b7201a33f64b": "{} veritabanı erişim izinleri geri yüklenemedi. Neden: {}", + "ea31cbc6134300ca816c913d227b605f": "{} veritabanı oluşturulamadı. Neden: {}", + "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "Veritabanı zaten mevcut, SQL geri yüklemesi atlanıyor", + "556843e4a406b780b0cf83c43366a8dd": "İçe aktarma başarılı", + "af71c2c0e3813c9a77fe48507ea8e4d1": "MongoDB veritabanı {} zaten mevcut", + "416ad8b141103f9704100ce4070c5975": "Veritabanı kaydı doğrulaması başarısız, geri yükleme durduruldu", + "84b4d8c8cdd02488c0f868e97b22a3c2": "Oluşturma başarılı", + "10aec3a9e9564a9851c117b259245136": "Veritabanı zaten mevcut, veri geri yüklemesi atlanıyor", + "b819d4259ca3ab0042562acea69e83e1": "PostgreSQL veritabanı {} zaten mevcut", + "31b21eca2e62de420cf05e8135089114": "Yedekleme dosyası mevcut değil!", + "3eed4851380704f25eec3921befde38f": "Geri yükleme başarılı", + "e9ed6b2a27deb5699565f0441dc713e9": "Yazılım bilgilerini yedeklemeye başla", + "e690c7866c5dbacbbc7860af5e6a3af1": "Yazılım bilgileri yedeklemesi tamamlandı", + "cabf299a6cfa5874e23582c535f301c6": "nginx-{} kurulumunu başlat", + "33ec71107108ed89c0b526d5473526c8": "apache hizmetini kurmaya başla", + "b815f2a7e299ea99d41d665c728756d9": "Web sunucusu kurulumu tamamlandı", + "70510d59e30015790f07ca53c80c5bec": "php-{} kurulumunu başlat", + "2de6c0aa3c26285104f898b368bcf287": "node-{} kurulumunu başlat", + "7d5cf115afd8be7c2a36d03b31d1ce44": "mariadb-{} kurulumunu başlat", + "92e77c2b107f440d6d54062228112f73": "mysql-{} kurulumunu başlat", + "4b09abb2edd44a4510395a297a2ff155": "mongodb-{} kurulumunu başlat", + "69fa45968c5cc7a9115bff54e70c95c1": "memcached-{} kurulumunu başlat", + "fbabb869ff01746bd144289622b277fc": "redis-{} kurulumunu başlat", + "da7d69765f1876fba52c21a17e8c74c6": "pgsql-{} kurulumunu başlat", + "99782b6a478e499d45a91f9d78e1c73a": "phpmyadmin-{} kurulumunu başlat", + "640c4e334dc9587e212d36e685059478": "ftp-{} kurulumunu başlat", + "aecfeaaa9e3bcff1f6169598772e90c0": "Panel çalışma ortamını geri yüklemeye başla", + "3b83e3fdb17c70ca190e263e0bd7173e": "Aynı ortam mevcutsa kurulum atlanacak", + "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "Site verilerini yedeklemeye başla", + "c886466d255b20be0dbde7f1b44b7f20": "{} projesi yedekleniyor: {}", + "7ecf25c18499d663d2e636d0a99f73a3": "{} projesi {} ✓ ({})", + "0fc5eeb9bebed19653578a5df99d3e6e": "Site verileri yedeklemesi tamamlandı", + "9a2e8778b2a816fedb9f83afadcc2341": "Site Python bağımlılıkları geri yüklenmeye başlanıyor...", + "fd16d36423b43735556724e0395e8f91": "Site Python bağımlılıkları geri yüklemesi tamamlandı", + "bbf57ca8231bce958a3e528a08491874": "Site veritabanı ekleme başarısız: {}", + "389f018ba17dc25cb23a5300d8f630db": "Site yedekleme dizini mevcut değil: {}", + "21654e03b247d5e25abaa0ad542883c0": "Site verilerini geri yüklemeye başla", + "c8cecd19f4f4a680a5879f828d1c5578": "{} projesi geri yükleniyor: {}", + "35850d3654332477522ee06c756a3c85": "Kaynak site dizini silinemedi: {}", + "c88b730f7a6a312159272ce532947de2": "{} projesi: {} ✓", + "24ee51964e4ece856493ca28fdb075ed": "Site verileri geri yüklemesi tamamlandı", + "7d7014331b485392e1d6055aad5c26cd": "Nginx phpmyadmin SSL yapılandırma dosyasını bulamadınız, lütfen açmadan önce SSL bağlantı noktası ayarlarını kapatmayı deneyin.", + "bedfc521aa92e68b04430d33289c6b3c": "Çoklu Web Sunuculu Barındırmada yalnızca nginx 1.24 ve üzeri sürümler desteklenir!", + "94e431cde2ffda2ef08526fa2af1b0b5": "Varlığı Başarıyla Ayarlayın!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "Varlık Ayarlama Başarısız Oldu {}", + "36856cc0aff5e4d792ab1919ec9e24f9": "Yedekleme veritabanı [{}] başarılı!", + "cd338377817d5286c26f62c0562ebe72": "Veritabanı [{}] başarıyla içe aktarıldı", + "de5ac4bddf9b72b649c0cbd4243f76c6": "birkaç saniye sonra tekrar deneyin...lütfen bekleyin...", + "6905a88552caae6df77f56bd19f6d76a": "Cron görev ayarları yerel kalır.Yerel yedekleme korunur.", + "63701b3fa795bcd399aab5d489f8eae9": "Cron görev ayarları yerel kalmıyor.Yerel yedekleme korunmaz.", + "837cc24a222df21e74245f4cfac6ad09": "Dondurulacak kullanıcı ayarı", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB güvenlik kimlik doğrulamasını etkinleştirdi.", + "4675bfcf662ee236a05dcb763cf9d520": "Apache önbellek ayarı başarısız oldu.Lütfen web sitesinin düzgün çalışıp çalışmadığını kontrol edin!", + "0b9aca52d360d6f7a8f2c5c897c93005": "Apache önbellek Ayarları başarılı oldu!", + "a2cd28fcd32e92be995b2335768fdea3": "Apache önbelleği şu anda yalnızca Çoklu Web Sunucusu Barındırma altında desteklenmektedir", + "b288b8637582cc38c1d4c902ed03cbec": "Önbellek eklentisinin kurulumu başarısız oldu", + "aebabb72ad41fbe46f73abcc9dc00b9f": "Önbellek eklentisi etkinleştirilemedi.Lütfen manuel olarak etkinleştirmeyi deneyin ve ardından önbelleği etkinleştirin", + "3981bd44ca3f1d5abafc6b15ba8c7435": "OLS önbellek Ayarları başarılı oldu!", + "3777f748e5535e7e38261b2e0afc8274": "OLS önbellek yapılandırması başarısız oldu: {}", + "8e342838d5cf3a93e34956c9550db4d0": "Dağıtım başarısız oldu: {}", + "152b976545ff1ee50e0de21da7af1266": "Doğrulama sürüyor.....", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "Parametre doğrulama", + "80f9a0a476836be5fdec10fe414e88a9": "{} Web sitesi oluşturuluyor....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "Web sitesi oluştur", + "8a9535f05c52e58f46e3237b9da019cc": "İsteğe bağlı yapılandırmalar ekleyin: veritabanı, FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "İsteğe bağlı yapılandırmalar ekleyin", + "2a5e8b7e4116ee81db89ba173f60bf90": "Parametre doğrulaması başarısız oldu", + "2f35a151cc0256f0d9ad5410eccbe5d0": "Parametre doğrulaması başarısız oldu: {}", + "af2a8e2174ea327f9fbf77d84029d58b": "Parametre doğrulaması başarılı", + "181fc26e7b655ba36b3b075ca1ebc350": "Web sitesi oluşturulamadı", + "7118aff13541bf3d74a9c47fb458e102": "Web sitesi oluşturulamadı: {}", + "be33773093fc2e135ba4bc26f4bb5509": "Web sitesi başarıyla oluşturuldu", + "8d823a9933eefd02bf1003481f816f64": "Arızalı: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "Başarılı başlangıç!", + "31b88b436695f7e0bc5dad1cb8999737": "Panel hizmetinin portlarını kullanmayın!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "Bağlantı noktası dolu veya bağlantı noktası aralığı yanlış!100 ile 65535 arasında olmalıdır", + "7dde7f2ae7cb4ed56b1b683b479ad303": "Uyarı: {} sürümü henüz kurulmadı,", + "839067817c5a1e7fcce2f905284d630e": "Kaynak dizini yeniden yaz ve hedef dizini yeniden yaz alanları aynı anda doldurulmalıdır", + "4b6ad864ce62dac8466dde7ec62e7ea9": "Kaynak dizini yeniden yazmak ve hedef dizini yeniden yazmak aynı olamaz", + "ed6fe3e47d3686c7af83b67535b426b5": "Yeniden yazma kaynak dizini / ile başlamalıdır", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "Yeniden yazma hedef dizini / ile başlamalıdır", + "87a9a388a3ef42018ceb866756c4ee39": "Veritabanı bağlantısı başarısız oldu, lütfen veritabanı durumunu kontrol edin!", + "a75c113f53d4342010d140325fa29eec": "Web sitesinin çoklu hizmeti etkinleştirildi.", + "b0a517b4d596e5fc1351f8dc12e73a74": "Lütfen tutulan hizmeti seçin", + "7e953c855b391ac0716a4eeb47c5c5c3": "Lütfen önce birden fazla hizmeti etkinleştirin", + "55d523aa501b0e7e93e172a9e6829a8a": "Nginx sürüm bilgisi alınırken hata oluştu", + "08f18bb6c6293307f68d5f822ed7dbe1": "Şu anda açıklık desteklenmiyor", + "45020a62e40bbb43f6e05c62ad50288e": "Zaten bir kurulum görevi var.Lütfen önce tamamlanmasını bekleyin!", + "4052df86d5a8dd12943cc8b1d53162e4": "Hizmet yüklemesi başarısız oldu.Lütfen tekrar deneyin!", + "8033c09e6fedf841205b29b57c0ae0d1": "Hizmet başlatma işlemi başarısız oldu: {}", + "442d02a722dc331f8b85d328fb99a174": "Çoklu hizmet modu başarıyla etkinleştirildi", + "a0b289e4caa220dcd62692401d5083f5": "{} hizmeti kaldırılamadı.Lütfen tekrar deneyin!", + "0045406cf97cbdca708c795aa9554145": "{} hizmeti yeniden başlatılamadı.Lütfen manuel olarak yeniden başlatmayı deneyin veya yapılandırma dosyasını kontrol edin.", + "52cd203105425f66daf42d81f05c540f": "Çoklu hizmet modu başarıyla devre dışı bırakıldı", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "Hizmetin yeniden başlatılması başarısız oldu.Lütfen apache yapılandırma dosyasını kontrol edin!", + "a949ed64edc73a99f9f9c801a84b6390": "Belirtilen hizmet türü mevcut değil", + "408f206d494c5f26144f7492315dfa21": "Hizmetler toplu olarak değiştirilirken bir hata oluştu!", + "e9fd26be1a67520e66f2e99d61977c32": "Web sitesi kimliği mevcut değil", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "Mevcut web sitesi hizmeti zaten {}", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "Yapılandırma değişikliği başarısız oldu.", + "98e762d03fc5ffcb381010aff10c7bde": "{}'a başarıyla geçildi", + "293f667205bd8aa91c72f966c03c3de5": "Alınan web sitesi hizmetinin türü yanlış", + "8562d96fc303411ee017a30b83d75712": "Başarıyla onarıldı", + "d9d76120c8c13b40d2e8e49b0d6117da": "Çoklu serviste bir hata oluştu ve onarım başarısız oldu.Lütfen çoklu hizmeti kapatıp yeniden açmayı deneyin!:{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "Yapılandırma dosyası mevcut değil", + "c8622023712105e9e7328396976a2667": "Yedeklenen yapılandırma dosyası mevcut değil: {}", + "12572c9827392d4bd4c028881ed06242": "Web sitesinde genel proxy veya URL yeniden yazma çakışmaları var.Lütfen silip tekrar deneyin!", + "92bce01ab77d0d50efec1d424cab583b": "Bu web sitesinde ters proxy var.Lütfen silip tekrar deneyin!", + "30c74a0981da2edec86936cd288479f7": "Web sitesi küresel bir ters proxy yapılandırdı.Lütfen önce iptal edin!", + "c3fe8f7adf26d613d9593acede34303b": "Web sitesi, alt dizin alan adı bağlamayla yapılandırılmıştır.Lütfen önce iptal edin!", + "84e9feba40d0aed963505e503cf821e3": "Güncelleme Başarısız...", + "2a6bb1bdd798217656edecf672b6df3c": "Http01 Doğrulama Hatası Ancak Site Bulunamadı.", + "962682f10423a33a75f4b1277b3690c9": "Http01 Doğrulama Hatası Ancak Site Çalışmıyor", + "90299d1fb53fdf7a570db71a1b61c127": "Lütfen önce PgSQL Kök şifresini ayarlayın!", + "d2c7790b1f776ce6ad06426b03fa71b1": "Yerel giriş şifresi boş, lütfen önce veritabanı şifresini ayarlayın!", + "f9be861aad3eda81843c7797487da8e9": "Mevcut sistem güvenliği durumu iyi ve belirgin bir güvenlik açığı veya risk yok", + "890e24b14414e3da9bc2ad63d6d0befb": "Sistemde belirli güvenlik riskleri mevcut ve bazı yapılandırmaların veya politikaların iyileştirilmesi gerekiyor", + "951c23a91dfe39b5ea5d00405b4dc2c5": "Sistemde bariz güvenlik açıkları var, lütfen bunları zamanında düzeltin", + "de36cae19b2a65a45cb4dfccb435530b": "Sistem yüksek riskli durumda, lütfen ilgili risk öğelerini en kısa sürede onarın", + "ca6977d373320a7fdb51047199d4cc59": "Yönetici yüklü değil!", + "38641e6ce3a6369e108eb595672c8edc": "Başarıyla Kaldırın!", + "9cae26284a7ad2f46132c1e8e196d089": "Başarıyla Yükleyin!", + "a9a92e55770213c8aa1fb2871dc43563": "Yönetici bağlantı noktasını başarıyla ayarlayın!", + "2321763bf0b4cbf345b1e19dc9faec47": "Yönetici php sürümünü başarıyla ayarlayın!", + "40a1f70c155550ad2dafa5e556e10c3c": "PHP sürümü yüklenmiyor!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path kök dizindir, Proxy Yolunu Göster kapatılamaz!", + "d8a3336243e1c08e8a29c75af1eb528c": "MySQL başlatma başarılı!", + "73af95fd2322196e0d9792df4ca1f566": "MongoDB başlatma başarılı!", + "8c9718f3235e7c36c9f400bc68db1ef5": "MongoDB ayar kimlik doğrulaması başarısız oldu!hata: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "PostgreSQL başlatma başarılı!", + "c46866b7bc29cf9d478835bda10e43ce": "Redis'in başlatılması başarılı!", + "4e889bbbfc5e25ebf611e5764b8a358c": "Veritabanını geri yüklemeye başlayın", + "b1bcc839644a9a611f9d8e2e1f63e0d0": "Dosya adı çok uzun (255 bayttan fazla).", + "29886cc45dfd7d6c3177d4a6ccfaae94": "Tam yol çok uzun (4096 bayttan fazla).", + "a3b7d5cfd749d2f8c5af2a8f45f002ea": "Dosya yolu kontrol edilemedi: {}", + "8e6595abbb40f247c74fffdf61bd5a00": "Kurulum başarısız!Lütfen tekrar giriş yapmayı deneyin.", + "a499f309ac7a223d611d7a0a85900342": "Yeniden başlatma kaydı bulunamadı.", + "d23fb11ea541cd5f1c0b05851d54fd58": "Okundu olarak işaretlendi.", + "1983b37067c7e94095a5113786fdef9c": "Düzenleme başarısız oldu, docker bağlantısı zaman aşımına uğradı, lütfen docker'ı yeniden başlatın ve tekrar deneyin!", + "9e90efb62702b147b71e8731290caf44": "[{}] resmi mevcut değil, lütfen [Resmi çekmeye zorla] seçeneğini kontrol edip tekrar deneyin!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "Yeni kapsayıcı başarıyla oluşturulamadı ve eski kapsayıcı geri yüklendi.{}", + "1f004e412319b7ed472624e011b3d2ba": "Güncelleme başarılı!", + "a2ea046c20d2da5cebf2dea01a62dabe": "Güncelleme başarısız oldu!Kapsayıcı durumu geri yüklendi", + "f9a48b804d917398e795016687f3b0f4": "Lütfen denemeden önce [Kurumsal için Kurcalamaya Karşı Korumalı] özelliğini kapatın!", + "ca1bc3e1d32b99b90395da47b88576a9": "Parametre hatası, Lütfen şunu girin: ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "Parametre hatası, Lütfen şunu girin: _ws!", + "6c3e5d603d8845422e861fb0b4eed350": "Bir yapılandırma öğesi", + "f324009782d2d9e73d1087884ebc2c4c": "Docker kökü boş olamaz!", + "538960e1336f919e37a0d2c024c56830": "Geçerli Docker kök dizini hedef dizindir ve değiştirilmesine gerek yoktur!", + "a848bbd79221dfdce1c9dca536dbfada": "Proxy ayarlarının JSON formatı yanlış!", + "edf6eb680187066c4dea216b3b20d6d2": "Proxy kurulumu başarılı!", + "b01f9411136207ad7df28b9bf2387e2a": "Yükseltme başarısız oldu!Başarısızlığın nedenleri:{}", + "da896b628e3ded58445e4b015320f327": "Aşırı yükleme şu nedenle başarısız oluyor:{}", + "efb869976990f78b3d6fcbaf270e3323": "Başarılı bir şekilde yeniden yükle!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Genel profil aşırı yüklemesi başarısız oldu:{}", + "75bbb7a00c3b5b510913952fe089f52a": "Yanlış parametre, yol parametresi!", + "273609d18876f5f9e3f021032e5b57a3": "Kurulum başarısız oldu!", + "0720c6c4f478b3a374b4a438f7cf80ad": "Görüntü içe aktarılamadı, docker bağlantısı zaman aşımına uğradı, lütfen docker'ı yeniden başlatıp tekrar deneyin!", + "22cc0388137842df9649b3bbcff345e8": "Görüntü içe aktarma işlemi başarısız olursa ve geçici kapsayıcı dizini oluşturulmazsa, koruma yazılımının bir müdahale kaydı olup olmadığını kontrol edin.", + "0568e5e8aa7c811dd420c818189a0d46": "saniyeler önce", + "53c53a79f864561f8b6886b3dde7cd51": "dakika önce", + "f329a0dab82282e50e3aea9260e95d53": "saatler önce", + "7a1af30a5ce889031cbc2472766159e3": "günler önce", + "558a41d55884223583b3542e802d2b64": "Ayna adı boş olamaz!", + "0e8623af4dd4d3b732904872d22fbf83": "Ağ adı boş olamaz!", + "5aa2044b58e63d58ddecc69421802404": "Ağ geçitleri şunları yapabilir:", + "ceaa20eefd6749452a947c7f5dfa4eb0": "IP aralıkları boş olamaz!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "Ağ oluşturma başarısız oldu!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Ağ adı: [{}] zaten mevcut!", + "9cdc09516d85ae057d1d9bedc988849e": "Başarıyla bir ağ oluşturun!", + "7d643f192968be3f8a54be28592e9176": "Resmin taranması başarısız oldu:{}", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Yalnızca kapsayıcı ve uygulama türleri desteklenir", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "{}'ı uygulamak için {} sürümü mevcut değil", + "a5c1e82e4d1142b8c7e0bc1499446181": "GIT ADRESİ AYARLANMAMIŞ", + "4e24bbe093c9dfb90092a0f4e71733dc": "Şube adı ayarlanmadı", + "b3c02fc58b92f549f529992c8a696a66": "Zip dosyası yolu ayarlanmamış", + "eecf07d92b354565df633b06401206a1": "Lütfen dosya yolunu seçin", + "795d1693702d930f7fc18edfb0f1c0d3": "MCP sunucusunun yanlış yapılandırılması", + "a16d1dbe265c57e0417ae396c3c30043": "Hizmet bulunamadı [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] Resim bulunamadı", + "4de8e45b499205551f4a09fd074e5246": "Eksik parametreler!İD", + "02e85c0a0fa01fabdb5426af13e87853": "Eksik parametreler!uygulama adı", + "d910ee67a0875a17b6e663f9e19369a4": "Bu uygulama bağlantısı desteklenmiyor!", + "32d030406e8d755a59468a50bd385b22": "Konteyner alınamadı", + "c8e0f1ed3c37b015ee446297591d172f": "Eksik parametreler!uygulama_adı", + "dad9445733497150b5f2cd29a5aed506": "Uygulama adı yasal değil, lütfen yasa dışı karakterler eklemeyin!", + "a04daa98db618d6c2a19aeed5af39448": "Belirtilen uygulama için docker-compose.yml dosyası bulunamadı!", + "74fd3ba5b92aa59e471161d2a585a93c": "model_name parametresi boş olamaz", + "760a1226f2ba701b04963681ab97d575": "model_version parametresi boş olamaz", + "2a88d88050ddcc0e28f0da4576be2232": "hizmet_adı parametresi boş olamaz", + "fd0f83d70400b1dd9f6ae9c093638411": "Kapsayıcı bilgileri alınamadı, docker-compose yürütme olağanüstü!", + "2aec223006d3894d3c1a48bca642c141": "Model indiriliyor, lütfen günlükleri daha sonra kontrol edin", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Model silinemedi, docker-compose yürütme istisnası!", + "d75a01e0d2c0cb8dad89216653024903": "Model başarıyla silindi!", + "f0501638237d7e8f934ec55ac3ffb20f": "Kurulum başarısız olursa ağı kontrol edin veya git'i manuel olarak yükleyin", + "608113c9694987fa65b22ecb164aee59": "Ortam başarıyla kuruldu", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "Apphub dizini mevcut değil", + "7ec67f9826a24ca4a930a6e168ee9611": "Çözüm başarılı oldu", + "af2c4fa868813e47b80859a0b36e00f4": "GIT BİLGİLERİ BAŞARIYLA YAPILANDIRILDI", + "2b038e106d4ca5c11b787e16c73253ef": "eğer yapmazsan", + "12d1b3062be6f8bb374511323c349ed7": "Lütfen önce git bilgilerini ayarlayın", + "798cd5a257af539ecfe6bb44f45ee788": "Git'ten içe aktarma başarısız oldu", + "8170f5d37a617dcbf16fe8dd414073dc": "Git'ten içe aktarma başarılı", + "6e40e5a8ad741ca4bd714fa52ef32333": "Dosya formatı yanlış, lütfen zip veya gz dosyasını seçin", + "c4996991c50032c9b296c11da356acb2": "İçe aktarma hatası:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Başarılı içe aktarma" } \ No newline at end of file diff --git a/BTPanel/languages/all/uk.json b/BTPanel/languages/all/uk.json index 620fec63..adddfaf6 100644 --- a/BTPanel/languages/all/uk.json +++ b/BTPanel/languages/all/uk.json @@ -3585,5 +3585,171 @@ "c8cecd19f4f4a680a5879f828d1c5578": "Відновлення проєкту {}: {}", "35850d3654332477522ee06c756a3c85": "Не вдалося видалити каталог вихідного сайту: {}", "c88b730f7a6a312159272ce532947de2": "Проєкт {}: {} ✓", - "24ee51964e4ece856493ca28fdb075ed": "Відновлення даних сайту завершено" + "24ee51964e4ece856493ca28fdb075ed": "Відновлення даних сайту завершено", + "7d7014331b485392e1d6055aad5c26cd": "Не знайдено файл конфігурації nginx phpmyadmin ssl, спробуйте закрити налаштування порту ssl перед відкриттям", + "bedfc521aa92e68b04430d33289c6b3c": "У Multi-WebServer Hosting підтримуються лише версії nginx 1.24 і вище!", + "94e431cde2ffda2ef08526fa2af1b0b5": "Встановити актив успішно!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "Помилка встановлення ресурсу {}", + "36856cc0aff5e4d792ab1919ec9e24f9": "Резервне копіювання бази даних [{}] виконано успішно!", + "cd338377817d5286c26f62c0562ebe72": "Успішно імпортовано базу даних [{}]", + "de5ac4bddf9b72b649c0cbd4243f76c6": "спробуйте ще раз через декілька секунд...зачекайте...", + "6905a88552caae6df77f56bd19f6d76a": "Параметри завдань Cron залишаються локальними.Локальна резервна копія зберігається.", + "63701b3fa795bcd399aab5d489f8eae9": "Налаштування завдання Cron не зберігаються локальними.Локальна резервна копія не зберігається.", + "837cc24a222df21e74245f4cfac6ad09": "Налаштування користувача don", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB увімкнув автентифікацію безпеки.", + "4675bfcf662ee236a05dcb763cf9d520": "Помилка налаштування кешу Apache.Будь ласка, перевірте, чи веб-сайт працює належним чином!", + "0b9aca52d360d6f7a8f2c5c897c93005": "Налаштування кешу Apache виконано успішно!", + "a2cd28fcd32e92be995b2335768fdea3": "Кеш Apache наразі підтримується лише для хостингу з кількома веб-серверами", + "b288b8637582cc38c1d4c902ed03cbec": "Не вдалося встановити плагін кешу", + "aebabb72ad41fbe46f73abcc9dc00b9f": "Не вдалося активувати плагін кешу.Будь ласка, спробуйте активувати його вручну, а потім увімкніть кеш", + "3981bd44ca3f1d5abafc6b15ba8c7435": "Налаштування кешу OLS виконано успішно!", + "3777f748e5535e7e38261b2e0afc8274": "Помилка налаштування кешу OLS: {}", + "8e342838d5cf3a93e34956c9550db4d0": "Помилка розгортання: {}", + "152b976545ff1ee50e0de21da7af1266": "Перевірка триває....", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "Перевірка параметрів", + "80f9a0a476836be5fdec10fe414e88a9": "{} Сайт створюється....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "Створити сайт", + "8a9535f05c52e58f46e3237b9da019cc": "Додайте додаткові конфігурації: база даних, FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "Додайте додаткові конфігурації", + "2a5e8b7e4116ee81db89ba173f60bf90": "Не вдалося перевірити параметр", + "2f35a151cc0256f0d9ad5410eccbe5d0": "Не вдалося перевірити параметр: {}", + "af2a8e2174ea327f9fbf77d84029d58b": "Перевірка параметрів успішна", + "181fc26e7b655ba36b3b075ca1ebc350": "Не вдалося створити веб-сайт", + "7118aff13541bf3d74a9c47fb458e102": "Не вдалося створити веб-сайт: {}", + "be33773093fc2e135ba4bc26f4bb5509": "Веб-сайт успішно створено", + "8d823a9933eefd02bf1003481f816f64": "Помилка: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "Успішного запуску!", + "31b88b436695f7e0bc5dad1cb8999737": "Не використовуйте порти служби панелі!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "Порт зайнятий або діапазон портів неправильний!Він має бути від 100 до 65535", + "7dde7f2ae7cb4ed56b1b683b479ad303": "Попередження: версія {} ще не встановлена,", + "839067817c5a1e7fcce2f905284d630e": "Переписати вихідний каталог і переписати цільовий каталог мають бути заповнені одночасно", + "4b6ad864ce62dac8466dde7ec62e7ea9": "Вихідний каталог перезапису та цільовий каталог перезапису не можуть бути однаковими", + "ed6fe3e47d3686c7af83b67535b426b5": "Перезаписати вихідний каталог має починатися з /", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "Цільовий каталог перезапису має починатися з /", + "87a9a388a3ef42018ceb866756c4ee39": "Помилка підключення до бази даних, перевірте статус бази даних!", + "a75c113f53d4342010d140325fa29eec": "Увімкнено мультисервісність сайту.", + "b0a517b4d596e5fc1351f8dc12e73a74": "Виберіть збережену послугу", + "7e953c855b391ac0716a4eeb47c5c5c3": "Спочатку ввімкніть кілька служб", + "55d523aa501b0e7e93e172a9e6829a8a": "Помилка під час отримання інформації про версію nginx", + "08f18bb6c6293307f68d5f822ed7dbe1": "Наразі openresty не підтримується", + "45020a62e40bbb43f6e05c62ad50288e": "Вже є завдання встановлення.Будь ласка, спочатку зачекайте, поки воно завершиться!", + "4052df86d5a8dd12943cc8b1d53162e4": "Помилка встановлення служби.Спробуйте ще раз!", + "8033c09e6fedf841205b29b57c0ae0d1": "Помилка запуску служби: {}", + "442d02a722dc331f8b85d328fb99a174": "Мультисервісний режим успішно ввімкнено", + "a0b289e4caa220dcd62692401d5083f5": "Не вдалося видалити службу {}.Спробуйте ще раз!", + "0045406cf97cbdca708c795aa9554145": "Не вдалося перезапустити службу {}.Спробуйте перезапустити вручну або перевірте файл конфігурації.", + "52cd203105425f66daf42d81f05c540f": "Мультисервісний режим успішно вимкнено", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "Не вдалося перезапустити службу.Будь ласка, перевірте файл конфігурації apache!", + "a949ed64edc73a99f9f9c801a84b6390": "Зазначений тип служби не існує", + "408f206d494c5f26144f7492315dfa21": "Під час пакетного перемикання послуг сталася помилка!", + "e9fd26be1a67520e66f2e99d61977c32": "Ідентифікатор веб-сайту не існує", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "Поточна служба веб-сайту вже {}", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "Не вдалося змінити конфігурацію.", + "98e762d03fc5ffcb381010aff10c7bde": "Успішно переключено на {}", + "293f667205bd8aa91c72f966c03c3de5": "Тип отриманої послуги веб-сайту неправильний", + "8562d96fc303411ee017a30b83d75712": "Відремонтовано успішно", + "d9d76120c8c13b40d2e8e49b0d6117da": "У мультисервісі сталася помилка, і відновлення не вдалося.Спробуйте закрити мультисервіс, а потім знову відкрити його!:{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "Конфігураційний файл не існує", + "c8622023712105e9e7328396976a2667": "Файл резервної копії конфігурації не існує: {}", + "12572c9827392d4bd4c028881ed06242": "На веб-сайті є глобальні конфлікти проксі або URL-адреси.Будь ласка, видаліть його та повторіть спробу!", + "92bce01ab77d0d50efec1d424cab583b": "Цей веб-сайт має зворотний проксі.Будь ласка, видаліть його та повторіть спробу!", + "30c74a0981da2edec86936cd288479f7": "Веб-сайт налаштував глобальний зворотний проксі-сервер.Спочатку скасуйте це!", + "c3fe8f7adf26d613d9593acede34303b": "Веб-сайт налаштовано з прив’язкою доменного імені підкаталогу.Спочатку скасуйте це!", + "84e9feba40d0aed963505e503cf821e3": "Помилка оновлення...", + "2a6bb1bdd798217656edecf672b6df3c": "Http01 Помилка підтвердження, але сайт не знайдено.", + "962682f10423a33a75f4b1277b3690c9": "Http01 Помилка підтвердження, але сайт не працює", + "90299d1fb53fdf7a570db71a1b61c127": "Спочатку встановіть пароль користувача PgSQL!", + "d2c7790b1f776ce6ad06426b03fa71b1": "Локальний пароль для входу порожній, спочатку встановіть пароль бази даних!", + "f9be861aad3eda81843c7797487da8e9": "Поточний стан безпеки системи добрий, очевидних вразливостей чи ризиків немає", + "890e24b14414e3da9bc2ad63d6d0befb": "Існують певні ризики безпеки в системі, і деякі конфігурації або політики потрібно покращити", + "951c23a91dfe39b5ea5d00405b4dc2c5": "У системі є очевидні вразливості безпеки, будь ласка, усуньте їх вчасно", + "de36cae19b2a65a45cb4dfccb435530b": "Система перебуває у стані високого ризику, якомога швидше відремонтуйте відповідні елементи ризику", + "ca6977d373320a7fdb51047199d4cc59": "Адміністратор не встановлений!", + "38641e6ce3a6369e108eb595672c8edc": "Успішно видалено!", + "9cae26284a7ad2f46132c1e8e196d089": "Встановити успішно!", + "a9a92e55770213c8aa1fb2871dc43563": "Порт адміністратора встановлено успішно!", + "2321763bf0b4cbf345b1e19dc9faec47": "Успішно встановив версію php для адміністратора!", + "40a1f70c155550ad2dafa5e556e10c3c": "Версія PHP не встановлюється!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path є кореневим каталогом, не можна закрити Показати шлях проксі!", + "d8a3336243e1c08e8a29c75af1eb528c": "Ініціалізація MySQL успішна!", + "73af95fd2322196e0d9792df4ca1f566": "Ініціалізація MongoDB успішна!", + "8c9718f3235e7c36c9f400bc68db1ef5": "Помилка налаштування MongoDB!помилка: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "Ініціалізація PostgreSQL успішна!", + "c46866b7bc29cf9d478835bda10e43ce": "Ініціалізація Redis успішна!", + "4e889bbbfc5e25ebf611e5764b8a358c": "Почніть відновлення бази даних", + "b1bcc839644a9a611f9d8e2e1f63e0d0": "Назва файлу задовга (понад 255 байт).", + "29886cc45dfd7d6c3177d4a6ccfaae94": "Повний шлях задовгий (понад 4096 байт).", + "a3b7d5cfd749d2f8c5af2a8f45f002ea": "Не вдалося перевірити шлях до файлу: {}", + "8e6595abbb40f247c74fffdf61bd5a00": "Помилка налаштування!Спробуйте увійти знову.", + "a499f309ac7a223d611d7a0a85900342": "Запис перезавантаження не знайдено.", + "d23fb11ea541cd5f1c0b05851d54fd58": "Позначено як прочитане.", + "1983b37067c7e94095a5113786fdef9c": "Помилка редагування, час очікування підключення до докера минув, перезапустіть докер і повторіть спробу!", + "9e90efb62702b147b71e8731290caf44": "Зображення [{}] не існує, спробуйте перевірити [Force pull image] і повторіть спробу!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "Новий контейнер не вдалося створити, старий контейнер було відновлено.{}", + "1f004e412319b7ed472624e011b3d2ba": "Оновлення успішне!", + "a2ea046c20d2da5cebf2dea01a62dabe": "Помилка оновлення!Стан контейнера відновлено", + "f9a48b804d917398e795016687f3b0f4": "Перш ніж спробувати, вимкніть [Захист від несанкціонованого доступу для підприємства]!", + "ca1bc3e1d32b99b90395da47b88576a9": "Помилка параметра, введіть: ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "Помилка параметра, введіть: _ws!", + "6c3e5d603d8845422e861fb0b4eed350": "Елемент конфігурації, який не", + "f324009782d2d9e73d1087884ebc2c4c": "Корінь Docker не може бути порожнім!", + "538960e1336f919e37a0d2c024c56830": "Поточний кореневий каталог Docker є цільовим каталогом, і його не потрібно змінювати!", + "a848bbd79221dfdce1c9dca536dbfada": "Формат JSON налаштувань проксі неправильний!", + "edf6eb680187066c4dea216b3b20d6d2": "Налаштування проксі успішно!", + "b01f9411136207ad7df28b9bf2387e2a": "Помилка оновлення!Причини невдачі:{}", + "da896b628e3ded58445e4b015320f327": "Перевантаження не вдається через:{}", + "efb869976990f78b3d6fcbaf270e3323": "Перезавантаження успішне!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Помилка глобального перевантаження профілю:{}", + "75bbb7a00c3b5b510913952fe089f52a": "Неправильний параметр, параметр шляху!", + "273609d18876f5f9e3f021032e5b57a3": "Помилка налаштування!", + "0720c6c4f478b3a374b4a438f7cf80ad": "Не вдалося імпортувати зображення, час очікування з’єднання з докером минув, спробуйте перезапустити докер і повторіть спробу!", + "22cc0388137842df9649b3bbcff345e8": "Якщо імпортувати зображення не вдається і каталог тимчасового контейнера не створюється, перевірте, чи програмне забезпечення захисту має запис про перехоплення.", + "0568e5e8aa7c811dd420c818189a0d46": "секунд тому", + "53c53a79f864561f8b6886b3dde7cd51": "хвилин тому", + "f329a0dab82282e50e3aea9260e95d53": "годин тому", + "7a1af30a5ce889031cbc2472766159e3": "днів тому", + "558a41d55884223583b3542e802d2b64": "Назва дзеркала не може бути пустою!", + "0e8623af4dd4d3b732904872d22fbf83": "Назва мережі не може бути пустою!", + "5aa2044b58e63d58ddecc69421802404": "Шлюзи можуть", + "ceaa20eefd6749452a947c7f5dfa4eb0": "Діапазони IP не можуть бути порожніми!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "Не вдалося створити мережу!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Назва мережі: [{}] вже існує!", + "9cdc09516d85ae057d1d9bedc988849e": "Створіть мережу успішно!", + "7d643f192968be3f8a54be28592e9176": "Помилка сканування зображення:{}", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Підтримуються лише типи контейнерів і програм", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "Версії {} для застосування {} не існує", + "a5c1e82e4d1142b8c7e0bc1499446181": "АДРЕСУ GIT НЕ ВСТАНОВЛЕНО", + "4e24bbe093c9dfb90092a0f4e71733dc": "Назва гілки не встановлена", + "b3c02fc58b92f549f529992c8a696a66": "Шлях до zip-файлу не встановлено", + "eecf07d92b354565df633b06401206a1": "Виберіть шлях до файлу", + "795d1693702d930f7fc18edfb0f1c0d3": "Неправильна конфігурація сервера MCP", + "a16d1dbe265c57e0417ae396c3c30043": "Сервіс не знайдено [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] Зображення не знайдено", + "4de8e45b499205551f4a09fd074e5246": "Відсутні параметри!id", + "02e85c0a0fa01fabdb5426af13e87853": "Відсутні параметри!назва програми", + "d910ee67a0875a17b6e663f9e19369a4": "Це посилання на додаток не підтримується!", + "32d030406e8d755a59468a50bd385b22": "Не вдалося отримати контейнер", + "c8e0f1ed3c37b015ee446297591d172f": "Відсутні параметри!app_name", + "dad9445733497150b5f2cd29a5aed506": "Назва програми не є законною, будь ласка, не включайте заборонених символів!", + "a04daa98db618d6c2a19aeed5af39448": "Не знайдено файлу docker-compose.yml для вказаної програми!", + "74fd3ba5b92aa59e471161d2a585a93c": "Параметр model_name не може бути нульовим", + "760a1226f2ba701b04963681ab97d575": "Параметр model_version не може бути нульовим", + "2a88d88050ddcc0e28f0da4576be2232": "параметр service_name не може бути нульовим", + "fd0f83d70400b1dd9f6ae9c093638411": "Не вдалося отримати інформацію про контейнер, виконання Docker-Compose є винятковим!", + "2aec223006d3894d3c1a48bca642c141": "Модель завантажується, перевірте журнали пізніше", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Не вдалося видалити модель, виняток виконання Docker-Compose!", + "d75a01e0d2c0cb8dad89216653024903": "Успішне видалення моделі!", + "f0501638237d7e8f934ec55ac3ffb20f": "Якщо встановлення не вдається, перевірте мережу або встановіть git вручну", + "608113c9694987fa65b22ecb164aee59": "Середовище успішно встановлено", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "Каталог apphub не існує", + "7ec67f9826a24ca4a930a6e168ee9611": "Рішення було успішним", + "af2c4fa868813e47b80859a0b36e00f4": "ІНФОРМАЦІЮ GIT УСПІШНО НАЛАШТУВАНО", + "2b038e106d4ca5c11b787e16c73253ef": "Якщо ви не", + "12d1b3062be6f8bb374511323c349ed7": "Спочатку встановіть інформацію git", + "798cd5a257af539ecfe6bb44f45ee788": "Помилка імпорту з git", + "8170f5d37a617dcbf16fe8dd414073dc": "Імпорт із git виконано", + "6e40e5a8ad741ca4bd714fa52ef32333": "Формат файлу неправильний, виберіть файл zip або gz", + "c4996991c50032c9b296c11da356acb2": "Помилка імпорту:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Успішний імпорт" } \ No newline at end of file diff --git a/BTPanel/languages/all/vie.json b/BTPanel/languages/all/vie.json index efe6dc0a..b094710b 100644 --- a/BTPanel/languages/all/vie.json +++ b/BTPanel/languages/all/vie.json @@ -3606,5 +3606,186 @@ "c8cecd19f4f4a680a5879f828d1c5578": "Khôi phục {} dự án: {}", "35850d3654332477522ee06c756a3c85": "Không thể xóa thư mục trang web nguồn: {}", "c88b730f7a6a312159272ce532947de2": "{} Dự án: {} ✓", - "24ee51964e4ece856493ca28fdb075ed": "Phục hồi dữ liệu trang web đã hoàn thành" + "24ee51964e4ece856493ca28fdb075ed": "Phục hồi dữ liệu trang web đã hoàn thành", + "7d7014331b485392e1d6055aad5c26cd": "Không tìm thấy tệp cấu hình ssl nginx phpmyadmin, vui lòng thử đóng cài đặt cổng ssl trước khi mở", + "bedfc521aa92e68b04430d33289c6b3c": "Trong Multi-WebServer Hosting, chỉ hỗ trợ phiên bản nginx 1.24 trở lên!", + "94e431cde2ffda2ef08526fa2af1b0b5": "Đặt tài sản thành công!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "Đặt nội dung không thành công {}", + "36856cc0aff5e4d792ab1919ec9e24f9": "Sao lưu cơ sở dữ liệu [{}] thành công!", + "cd338377817d5286c26f62c0562ebe72": "Đã nhập cơ sở dữ liệu thành công [{}]", + "de5ac4bddf9b72b649c0cbd4243f76c6": "thử lại sau vài giây...vui lòng đợi...", + "6905a88552caae6df77f56bd19f6d76a": "Cài đặt tác vụ cron giữ cục bộ.Bản sao lưu cục bộ được giữ lại.", + "63701b3fa795bcd399aab5d489f8eae9": "Cài đặt tác vụ cron không giữ cục bộ.Bản sao lưu cục bộ không được giữ lại.", + "837cc24a222df21e74245f4cfac6ad09": "Cài đặt người dùng thành không", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB đã kích hoạt xác thực bảo mật.", + "4675bfcf662ee236a05dcb763cf9d520": "Cài đặt bộ đệm Apache không thành công.Vui lòng kiểm tra xem trang web có hoạt động bình thường không!", + "0b9aca52d360d6f7a8f2c5c897c93005": "Cài đặt bộ đệm Apache đã thành công!", + "a2cd28fcd32e92be995b2335768fdea3": "Bộ đệm Apache hiện chỉ được hỗ trợ trong Multi-WebServer Hosting", + "b288b8637582cc38c1d4c902ed03cbec": "Việc cài đặt plugin bộ đệm không thành công", + "aebabb72ad41fbe46f73abcc9dc00b9f": "Plugin bộ đệm không thể kích hoạt.Vui lòng thử kích hoạt thủ công và sau đó kích hoạt bộ đệm", + "3981bd44ca3f1d5abafc6b15ba8c7435": "Cài đặt bộ đệm OLS đã thành công!", + "3777f748e5535e7e38261b2e0afc8274": "Cấu hình bộ nhớ đệm OLS không thành công: {}", + "8e342838d5cf3a93e34956c9550db4d0": "Triển khai không thành công: {}", + "152b976545ff1ee50e0de21da7af1266": "Quá trình xác minh đang được tiến hành.....", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "Xác minh thông số", + "80f9a0a476836be5fdec10fe414e88a9": "{} Trang web đang được tạo....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "Tạo trang web", + "8a9535f05c52e58f46e3237b9da019cc": "Thêm cấu hình tùy chọn: cơ sở dữ liệu, FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "Thêm cấu hình tùy chọn", + "2a5e8b7e4116ee81db89ba173f60bf90": "Xác minh tham số không thành công", + "2f35a151cc0256f0d9ad5410eccbe5d0": "Xác minh thông số không thành công: {}", + "af2a8e2174ea327f9fbf77d84029d58b": "Xác minh thông số thành công", + "181fc26e7b655ba36b3b075ca1ebc350": "Không tạo được trang web", + "7118aff13541bf3d74a9c47fb458e102": "Không tạo được trang web: {}", + "be33773093fc2e135ba4bc26f4bb5509": "Trang web đã được tạo thành công", + "8d823a9933eefd02bf1003481f816f64": "Thất bại: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "Khởi nghiệp thành công!", + "31b88b436695f7e0bc5dad1cb8999737": "Không sử dụng các cổng của dịch vụ bảng điều khiển!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "Cổng bị chiếm hoặc phạm vi cổng không chính xác!Nó phải nằm trong khoảng từ 100 đến 65535", + "7dde7f2ae7cb4ed56b1b683b479ad303": "Cảnh báo: phiên bản {} chưa được cài đặt,", + "839067817c5a1e7fcce2f905284d630e": "Thư mục viết lại nguồn và thư mục đích viết lại phải được điền cùng lúc", + "4b6ad864ce62dac8466dde7ec62e7ea9": "Viết lại thư mục nguồn và viết lại thư mục đích không thể giống nhau", + "ed6fe3e47d3686c7af83b67535b426b5": "Thư mục nguồn viết lại phải bắt đầu bằng /", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "Viết lại thư mục đích phải bắt đầu bằng /", + "87a9a388a3ef42018ceb866756c4ee39": "Kết nối cơ sở dữ liệu không thành công, vui lòng kiểm tra trạng thái cơ sở dữ liệu!", + "a75c113f53d4342010d140325fa29eec": "Đa dịch vụ của trang web đã được kích hoạt.", + "b0a517b4d596e5fc1351f8dc12e73a74": "Vui lòng chọn dịch vụ giữ lại", + "7e953c855b391ac0716a4eeb47c5c5c3": "Vui lòng kích hoạt nhiều dịch vụ trước", + "55d523aa501b0e7e93e172a9e6829a8a": "Lỗi lấy thông tin phiên bản nginx", + "08f18bb6c6293307f68d5f822ed7dbe1": "Hiện tại openresty chưa được hỗ trợ", + "45020a62e40bbb43f6e05c62ad50288e": "Đã có một nhiệm vụ cài đặt.Vui lòng đợi nó hoàn thành trước!", + "4052df86d5a8dd12943cc8b1d53162e4": "Cài đặt dịch vụ không thành công.Vui lòng thử lại!", + "8033c09e6fedf841205b29b57c0ae0d1": "Khởi động dịch vụ không thành công: {}", + "442d02a722dc331f8b85d328fb99a174": "Chế độ đa dịch vụ đã được kích hoạt thành công", + "a0b289e4caa220dcd62692401d5083f5": "Không thể gỡ cài đặt dịch vụ {}.Vui lòng thử lại!", + "0045406cf97cbdca708c795aa9554145": "Dịch vụ {} không khởi động lại được.Vui lòng thử khởi động lại thủ công hoặc kiểm tra tệp cấu hình.", + "52cd203105425f66daf42d81f05c540f": "Chế độ đa dịch vụ đã được tắt thành công", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "Việc khởi động lại dịch vụ không thành công.Vui lòng kiểm tra tệp cấu hình Apache!", + "a949ed64edc73a99f9f9c801a84b6390": "Loại dịch vụ được chỉ định không tồn tại", + "408f206d494c5f26144f7492315dfa21": "Đã xảy ra lỗi khi chuyển đổi dịch vụ theo đợt!", + "e9fd26be1a67520e66f2e99d61977c32": "ID trang web không tồn tại", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "Dịch vụ trang web hiện tại đã là {}", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "Việc sửa đổi cấu hình không thành công.", + "98e762d03fc5ffcb381010aff10c7bde": "Đã chuyển thành công sang {}", + "293f667205bd8aa91c72f966c03c3de5": "Loại dịch vụ trang web thu được không chính xác", + "8562d96fc303411ee017a30b83d75712": "Đã sửa chữa thành công", + "d9d76120c8c13b40d2e8e49b0d6117da": "Đã xảy ra lỗi trong đa dịch vụ và việc sửa chữa không thành công.Vui lòng thử đóng nhiều dịch vụ rồi mở lại!:{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "Tệp cấu hình không tồn tại", + "c8622023712105e9e7328396976a2667": "Tệp cấu hình sao lưu không tồn tại: {}", + "12572c9827392d4bd4c028881ed06242": "Có xung đột viết lại proxy hoặc url toàn cầu trên trang web.Vui lòng xóa nó và thử lại!", + "92bce01ab77d0d50efec1d424cab583b": "Trang web này có proxy ngược.Vui lòng xóa nó và thử lại!", + "30c74a0981da2edec86936cd288479f7": "Trang web đã định cấu hình proxy ngược toàn cầu.Hãy hủy nó trước!", + "c3fe8f7adf26d613d9593acede34303b": "Trang web được cấu hình với ràng buộc tên miền thư mục con.Hãy hủy nó trước!", + "84e9feba40d0aed963505e503cf821e3": "Cập nhật không thành công...", + "2a6bb1bdd798217656edecf672b6df3c": "Http01 Lỗi xác minh nhưng không tìm thấy trang web.", + "962682f10423a33a75f4b1277b3690c9": "Http01 Xác minh lỗi nhưng trang web không chạy", + "90299d1fb53fdf7a570db71a1b61c127": "Vui lòng đặt mật khẩu PGSQL Root trước!", + "079d7d1539d30a76e53b6fb54d370d32": "Thêm thành công!", + "ffcba623cf91331a0ba5b3ab969db1f9": "Đã xóa thành công!", + "d2c7790b1f776ce6ad06426b03fa71b1": "Mật khẩu đăng nhập cục bộ trống, vui lòng đặt mật khẩu cơ sở dữ liệu trước!", + "f9be861aad3eda81843c7797487da8e9": "Trạng thái bảo mật hệ thống hiện tại là tốt và không có lỗ hổng hoặc rủi ro rõ ràng", + "890e24b14414e3da9bc2ad63d6d0befb": "Có một số rủi ro bảo mật nhất định trong hệ thống và một số cấu hình hoặc chính sách cần được cải thiện", + "951c23a91dfe39b5ea5d00405b4dc2c5": "Hệ thống có lỗ hổng bảo mật rõ ràng, vui lòng khắc phục kịp thời", + "de36cae19b2a65a45cb4dfccb435530b": "Hệ thống đang ở trạng thái rủi ro cao, vui lòng sửa chữa các hạng mục rủi ro liên quan càng sớm càng tốt", + "ca6977d373320a7fdb51047199d4cc59": "Quản trị viên chưa được cài đặt!", + "38641e6ce3a6369e108eb595672c8edc": "Gỡ cài đặt thành công!", + "9cae26284a7ad2f46132c1e8e196d089": "Cài đặt thành công!", + "a9a92e55770213c8aa1fb2871dc43563": "Đặt cổng quản trị viên thành công!", + "2321763bf0b4cbf345b1e19dc9faec47": "Đặt phiên bản php quản trị viên thành công!", + "40a1f70c155550ad2dafa5e556e10c3c": "Phiên bản PHP không cài đặt được!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path là thư mục gốc, không thể đóng Hiển thị đường dẫn proxy!", + "61eb03fffeb48e199890a5a8a24a5dc9": "Bắt đầu tải lên mới", + "470e645fe1f07b6d4e77fc7b16b2a9a0": "Xác minh kích thước tệp đã vượt qua: {:.2f}MB", + "c129e18a625645767772504cf77e279a": "Không đọc được dấu thời gian sao lưu", + "daa55a73708f906c8cee0bb87284740c": "Lỗi truy xuất thông tin tiến trình sao lưu: {}", + "ca0af2ce76c89e3bfa4bad3105c21203": "Khôi phục hoàn tất nhưng không thể lấy dấu thời gian khôi phục", + "1b4c2c21e77ac36e4097a92dabd55bc0": "Không xác định {}", + "334afd10871f8c52a884e307d2e17ccf": "Đã xóa thành công lịch sử di chuyển", + "b561b1ca5fd89d639144a099f5fe096d": "Sao lưu thông tin chứng chỉ SSL đã hoàn tất", + "41596c0d36a66c44434d5882c3cfa793": "Đã khôi phục bảng triển khai cho chứng chỉ {}: {}", + "6ffcb0a3e8cdf728b3e7bc45ae221e5a": "Chèn chứng chỉ không thành công, vui lòng kiểm tra nhật ký", + "d8a3336243e1c08e8a29c75af1eb528c": "Khởi tạo MySQL thành công!", + "73af95fd2322196e0d9792df4ca1f566": "Khởi tạo MongoDB thành công!", + "8c9718f3235e7c36c9f400bc68db1ef5": "Xác thực bộ MongoDB không thành công!lỗi: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "Khởi tạo PostgreSQL thành công!", + "c46866b7bc29cf9d478835bda10e43ce": "Khởi tạo Redis thành công!", + "4e889bbbfc5e25ebf611e5764b8a358c": "Bắt đầu khôi phục cơ sở dữ liệu", + "b61a878149263a02fa99cc635409ee25": "{} cơ sở dữ liệu {} ✗ ({})", + "9750547146e22f364299bc5f561a3fb6": "Bắt đầu khôi phục cơ sở dữ liệu từ xa", + "af71c2c0e3813c9a77fe48507ea8e4d1": "Cơ sở dữ liệu MongoDB {} đã tồn tại", + "b1bcc839644a9a611f9d8e2e1f63e0d0": "Tên tệp quá dài (trên 255 byte).", + "29886cc45dfd7d6c3177d4a6ccfaae94": "Đường dẫn đầy đủ quá dài (trên 4096 byte).", + "a3b7d5cfd749d2f8c5af2a8f45f002ea": "Không kiểm tra được đường dẫn tệp: {}", + "8e6595abbb40f247c74fffdf61bd5a00": "Thiết lập thất bại!Vui lòng thử đăng nhập lại.", + "a499f309ac7a223d611d7a0a85900342": "Không tìm thấy bản ghi khởi động lại.", + "d23fb11ea541cd5f1c0b05851d54fd58": "Đánh dấu là đã đọc.", + "1983b37067c7e94095a5113786fdef9c": "Chỉnh sửa không thành công, kết nối với docker đã hết thời gian chờ, vui lòng khởi động lại docker và thử lại!", + "9e90efb62702b147b71e8731290caf44": "Hình ảnh [{}] không tồn tại, vui lòng thử kiểm tra [Buộc kéo hình ảnh] và thử lại!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "Vùng chứa mới không được tạo thành công và vùng chứa cũ đã được khôi phục.{}", + "1f004e412319b7ed472624e011b3d2ba": "Cập nhật thành công!", + "a2ea046c20d2da5cebf2dea01a62dabe": "Cập nhật không thành công!Trạng thái vùng chứa đã được khôi phục", + "f9a48b804d917398e795016687f3b0f4": "Vui lòng tắt [Chống giả mạo cho doanh nghiệp] trước khi thử!", + "ca1bc3e1d32b99b90395da47b88576a9": "Lỗi tham số, Vui lòng nhập: ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "Lỗi tham số, Vui lòng nhập: _ws!", + "6c3e5d603d8845422e861fb0b4eed350": "Một mục cấu hình không", + "f324009782d2d9e73d1087884ebc2c4c": "Gốc Docker không được để trống!", + "538960e1336f919e37a0d2c024c56830": "Thư mục gốc Docker hiện tại là thư mục đích và không cần thay đổi!", + "a848bbd79221dfdce1c9dca536dbfada": "Định dạng JSON của cài đặt proxy không đúng!", + "edf6eb680187066c4dea216b3b20d6d2": "Thiết lập proxy thành công!", + "b01f9411136207ad7df28b9bf2387e2a": "Nâng cấp không thành công!Lý do thất bại:{}", + "da896b628e3ded58445e4b015320f327": "Quá tải không thành công do:{}", + "efb869976990f78b3d6fcbaf270e3323": "Tải lại thành công!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Quá tải hồ sơ toàn cầu không thành công:{}", + "75bbb7a00c3b5b510913952fe089f52a": "Tham số sai, tham số đường dẫn!", + "273609d18876f5f9e3f021032e5b57a3": "Thiết lập không thành công!", + "0720c6c4f478b3a374b4a438f7cf80ad": "Không thể nhập hình ảnh, kết nối tới docker đã hết thời gian chờ, vui lòng thử khởi động lại docker và thử lại!", + "22cc0388137842df9649b3bbcff345e8": "Nếu quá trình nhập hình ảnh không thành công và thư mục chứa tạm thời không được tạo, hãy kiểm tra xem phần mềm bảo vệ có bản ghi chặn hay không.", + "0568e5e8aa7c811dd420c818189a0d46": "vài giây trước", + "53c53a79f864561f8b6886b3dde7cd51": "phút trước", + "f329a0dab82282e50e3aea9260e95d53": "giờ trước", + "7a1af30a5ce889031cbc2472766159e3": "ngày trước", + "558a41d55884223583b3542e802d2b64": "Tên gương không được để trống!", + "0e8623af4dd4d3b732904872d22fbf83": "Tên mạng không được để trống!", + "5aa2044b58e63d58ddecc69421802404": "Cổng có thể", + "ceaa20eefd6749452a947c7f5dfa4eb0": "Dải IP không được để trống!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "Tạo mạng không thành công!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Tên mạng: [{}] đã tồn tại!", + "9cdc09516d85ae057d1d9bedc988849e": "Tạo mạng thành công!", + "7d643f192968be3f8a54be28592e9176": "Quét hình ảnh không thành công:{}", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Chỉ hỗ trợ các loại vùng chứa và ứng dụng", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "Phiên bản {} để áp dụng {} không tồn tại", + "a5c1e82e4d1142b8c7e0bc1499446181": "ĐỊA CHỈ GIT KHÔNG ĐƯỢC THIẾT LẬP", + "4e24bbe093c9dfb90092a0f4e71733dc": "Tên chi nhánh chưa được đặt", + "b3c02fc58b92f549f529992c8a696a66": "Đường dẫn tệp zip chưa được đặt", + "eecf07d92b354565df633b06401206a1": "Vui lòng chọn đường dẫn tập tin", + "795d1693702d930f7fc18edfb0f1c0d3": "Cấu hình sai máy chủ MCP", + "a16d1dbe265c57e0417ae396c3c30043": "Không tìm thấy dịch vụ nào [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] Không tìm thấy hình ảnh", + "4de8e45b499205551f4a09fd074e5246": "Thiếu thông số!nhận dạng", + "02e85c0a0fa01fabdb5426af13e87853": "Thiếu thông số!tên ứng dụng", + "d910ee67a0875a17b6e663f9e19369a4": "Liên kết ứng dụng này không được hỗ trợ!", + "32d030406e8d755a59468a50bd385b22": "Không lấy được container", + "c8e0f1ed3c37b015ee446297591d172f": "Thiếu thông số!tên ứng dụng", + "dad9445733497150b5f2cd29a5aed506": "Tên ứng dụng không hợp pháp, vui lòng không bao gồm các ký tự không hợp pháp!", + "a04daa98db618d6c2a19aeed5af39448": "Không tìm thấy tệp docker-compose.yml cho ứng dụng được chỉ định!", + "74fd3ba5b92aa59e471161d2a585a93c": "tham số model_name không thể rỗng", + "760a1226f2ba701b04963681ab97d575": "tham số model_version không thể rỗng", + "2a88d88050ddcc0e28f0da4576be2232": "tham số service_name không thể rỗng", + "fd0f83d70400b1dd9f6ae9c093638411": "Không thể lấy thông tin về vùng chứa, việc thực thi docker-compose là một điều đặc biệt!", + "2aec223006d3894d3c1a48bca642c141": "Mô hình đang được tải xuống, vui lòng kiểm tra nhật ký sau", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Không xóa được mô hình, ngoại lệ thực thi docker-compose!", + "d75a01e0d2c0cb8dad89216653024903": "Xóa mô hình thành công!", + "f0501638237d7e8f934ec55ac3ffb20f": "Nếu cài đặt không thành công, hãy kiểm tra mạng hoặc cài đặt git thủ công", + "608113c9694987fa65b22ecb164aee59": "Môi trường đã được cài đặt thành công", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "Thư mục apphub không tồn tại", + "7ec67f9826a24ca4a930a6e168ee9611": "Nghị quyết đã thành công", + "af2c4fa868813e47b80859a0b36e00f4": "THÔNG TIN GIT ĐƯỢC CẤU HÌNH THÀNH CÔNG", + "2b038e106d4ca5c11b787e16c73253ef": "Nếu bạn không", + "12d1b3062be6f8bb374511323c349ed7": "Vui lòng đặt thông tin git trước", + "798cd5a257af539ecfe6bb44f45ee788": "Nhập từ git không thành công", + "8170f5d37a617dcbf16fe8dd414073dc": "Nhập từ git thành công", + "6e40e5a8ad741ca4bd714fa52ef32333": "Định dạng tệp không chính xác, vui lòng chọn tệp zip hoặc gz", + "c4996991c50032c9b296c11da356acb2": "Lỗi nhập:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Nhập thành công" } \ No newline at end of file diff --git a/BTPanel/languages/all/zh.json b/BTPanel/languages/all/zh.json index a90c262f..391b79b0 100644 --- a/BTPanel/languages/all/zh.json +++ b/BTPanel/languages/all/zh.json @@ -82,7 +82,7 @@ "b51515085fc6ea6a07192c61e068c124": "成功修改", "e1528af4f0b3ebdfa31bd0d6d25de385": "请不要输入以下特殊字符[〜` / =]", "b8ba9c424d1ed4a8154cd90e295c221a": "命令已发送!", - "7d2a60e4ec4a46baf84af510312179a1": "没有作曲家!", + "7d2a60e4ec4a46baf84af510312179a1": "没有composer!", "5419d0133e305950c01ce21b979ac43c": "找不到可用的PHP版本,或者未安装指定的PHP版本!", "aa1d2af0e39f4f3fec3ad44d53666bcd": "在指定目录中找不到COMPOSER.JSON配置文件!", "2ccaa427e3b09d9d292c88da692828b3": "找不到可用的PHP版本!", @@ -157,19 +157,18 @@ "a06490b9729d0868e31d834c9bffa0bd": "指定的自定义汇编参数不存在!", "088322e850f185f815f1b9713b80afba": "文件文件!", "edee281aa107dceadf214acb67ee7018": "下载下载软件软件包解析解析解析,请请检查服务器配置是否:

错误:名称或服务未知

", - "b4fdea08b54d2b33ee1f68aadf9c9040": "连接连接节点,请请到【面板】通讯通讯通讯节节,或或通讯通讯通讯通讯通讯通讯检查服务器:

错误:

错误:无法建立新的连接

", - "3fd915df19d972e9693d1e043623206f": "连接连接失败,请请到【面板】页面切换通讯节节,或或节节节通讯通讯通讯通讯节通讯节检查:

错误:

错误:读取时间

", - "577724c7d9a21cc9523597ee6a5e4546": "连接连接节点,请请到【面板】通讯通讯节,或通讯节节,或或服务器服务器:

错误:

错误:连接拒绝

", - "2e5af2b779702e4c1a5dccd402dc7e8c": "连接下载节点,请请尝试【面板面板】页面切换通讯节节,或通讯通讯通讯通讯通讯通讯通讯通讯通讯通讯检查检查:

错误:错误:远程结束闭合连接而没有响应

", - "18c5ecf0f75b10d5cbf0b33f3cc697d7": "磁盘空间空间,请请清理后再试", - "c9f96bf82e11d357db58b5ad0d52c31b": "软件,请,请软件,并,并", + "b4fdea08b54d2b33ee1f68aadf9c9040": "连接节点失败", + "3fd915df19d972e9693d1e043623206f": "连接节点失败", + "577724c7d9a21cc9523597ee6a5e4546": "连接节点失败", + "2e5af2b779702e4c1a5dccd402dc7e8c": "连接节点失败", + "18c5ecf0f75b10d5cbf0b33f3cc697d7": "磁盘空间空间,请清理后再试", "bdea6edffe26fd0985fd051144f8ca12": "指定指定信息存在!", "8fde9a929c417549ed2f9144fa68c0d2": "规则名称只能由字母,数字和下划线组成!", "473bc9055d76e148db4d28e7bec67295": "规则名称需要大于3个字节", "5b097df78b1d8c65d8b524354029f114": "文件后缀不能为空", "496e2dfba11ca4381ef6277e6e9a62dc": "目录不能为空", - "811544f02f92e50584dd389bbdd761bc": "参数错误!-1", - "ae2c3655aab6402bd855f44421dc51d4": "参数错误!-2", + "811544f02f92e50584dd389bbdd761bc": "参数错误!", + "ae2c3655aab6402bd855f44421dc51d4": "参数错误!", "e79a40d9379469f0f3d26251ecf0d334": "Nginx配置文件不存在!", "9eee7650a676d53dc51e3361f2b2b99f": "错误的连接地址", "35c953aecb570759e062d478bc5947c0": "私钥错误!", @@ -240,7 +239,6 @@ "0fdda9d236857f01644add954fa198f3": "网站停止了", "0adc9bbeffa3274734784668a484df9c": "站点流量控制仅支持NGINX Web服务器!", "b80750c02857779508ffe53d107aaebc": "并发限制,IP限制,流量限制必须大于0", - "1082bc146a2beee89d676f1761c3d770": "错误:
' + iserror.replace(“ \\ n”,'
", "2fdecc016fda3833df349c0fc5bbb8c5": "现场交通管制已关闭!", "2d24e82230176a1327c59ce535566e83": "URL地址无效!", "df4641ff0ca3ea3afbd816fb231c5857": "获得启用PHP配置失败!", @@ -853,5 +851,2979 @@ "315208d3066fd1615ba13b698c0af371": "IP不不不能", "5bd31a01422acec34ec752e0a46f9415": "不不能的的", "3ec1da1913c04a2c53dd6d6379f99d4c": "目标地址地址能", - "efef8b005464719937a7daa96ed5b3d8": "端口转发规则,请请重复重复重复" + "efef8b005464719937a7daa96ed5b3d8": "端口转发规则,请请重复重复重复", + "d29c0b7e434fe9f40120f2a7f8111c9e": "找不到 ssl 文件!{}", + "25bb121145f918572eea2ef07ff8e89c": "备份错误", + "f6039d44b29456b20f8f373155ae4973": "用户名", + "3544848f820b9d94a3f3871a382cf138": "新密码", + "6b1bc4e672d58d46d23502dcd78129be": "清除日志信息", + "0e900c57ee4635719ba671229ead12ff": "清除任务历史记录", + "1dfefaa079cbde4da09e89af6b49ff33": "清除网络监控记录", + "f59489317e210ec566cf6b6c9e3b20b9": "清除CPU监控记录", + "e0976b426e3109ee01a1182b7c04b987": "清除磁盘监控记录", + "2c1eb277ff700f04b65306399784f875": "清除IP信息", + "4abfe31831aa15dc27ff44067b2bf0d1": "清除系统历史记录", + "0c06c1eb5ef47b883f7cbcab9be84e97": "面板封装成功。请不要登录面板进行任何其他操作!", + "b60091f633dedd493b16f5548e32233d": "面板初始化地址", + "b097eb5212f13c74d1c96b59f65c4dd6": "已成功清除 {} 个任务!", + "e82eb2921856b4230611dc1406f60a6f": "系统垃圾已清除,完全删除了 [{}] 个文件,释放了磁盘空间 [{}]", + "0d793de4ae05511630a2eeea9b5528d9": "|-清除了 [{}]、删除了 [{}] 个文件、释放了磁盘空间 [{}]", + "db62071d34202efa3a0aa1a743394938": "|-清除后台打印、删除 [{}] 个文件、释放磁盘空间 [{}]", + "a1d3c6c221b8ceaaef8881e09d0a2945": "|-清除 PHP 会话...", + "c16f6a333c0ba871467568be496cbea0": "|-PHP 会话已清除,删除了 [{}] 个文件,释放了磁盘空间 [{}]", + "5d88b58a1c0ba0dee9eeb89a8bcdda36": "|-清除临时文件和站点日志...", + "e038ca57ad9c03f40bec42908af2ccff": "|-临时文件和站点日志已清除,已删除 [{}] 个文件,已释放磁盘空间 [{}]", + "fa3d217e80478d3c03c437b7fc11432f": "|-ERROR,用户名不能少于5个字符", + "4cffae9f32bf898c859a5937268b9727": "|-错误,不能使用太简单的用户名", + "fbcb6a4b1126170666b4c4102afbb43d": "|-新用户名:{}", + "cbe2d798534f872748b7cba6615596d8": "aaPanel 定制版", + "51708089c15820800d3dd7bd8d8cdfba": "面板", + "fee066b1b93fecf9545758cf9a87c3de": "正在更新插件...", + "c6462fea6d27e4ecfc68ae1944051f77": "登录成功,正在加载...", + "c11f9218de293117d2cd58a009534167": "所有插件已成功更新至6.0兼容!", + "cc478711642936a519c27b7c388fbb50": "aaPanel CLI", + "cfef992430ab5a7b2373138d4b86425c": "重启面板", + "95b8b68d1c80ca75e1ab15bf5b9a8394": "更改面板端口", + "f3013e54b467cdb2fac9a424bae963e4": "停止面板", + "15ea17031cb6a968e3b9ea2b28546c53": "清除面板缓存", + "20cdfcd210da305d900d25ec4c084184": "清除登录限制", + "ab41db99c7941ef74c37bd97733f7707": "重新加载面板", + "315f4fdd99e49c6a2e80a95ce82ba534": "取消入场限制", + "07ed88796641228c3602122cf5075fc2": "更改面板密码", + "63d8f2a0e51e9243f91b0285e4e44667": "取消域名绑定限制", + "3913f08c2fa53f4c413cc0772f9401d1": "更改面板用户名", + "b773a80578cdc8f50d57393d6b0a3d67": "取消IP访问限制", + "a6a23a4004f99fef13372de56433edbc": "强制更改MySQL root密码", + "bc449263dd0183a82a3d0a03cd8f26dc": "查看面板默认信息", + "0b1c93d38c86c8d379886293cdf8ba66": "任务取消!", + "975687e8a64e2c2842a34ca6d6bf8e85": "清除系统垃圾", + "84bc199f1a5ce205b0f5fc3e64ef3e95": "请输入命令号:", + "954be127268a1704a7af22b23bb440e8": "取消!", + "51c6348531daaf0fb1e84fafa12b5f15": "请输入新密码:", + "34c4edd98a45ea8a13556965a6c4f2b0": "请输入新用户名(>5个字符):", + "219863186dddc079747a525bb7877a88": "请输入新的 MySQL root 密码:", + "c172da334fdcac77f704fa4408dd2f16": "|-ERROR,密码不能为空", + "a79cf67c04d379c4916dc584c9d8333f": "|-ERROR,密码不能少于8个字符", + "06f5000079703a33b91564159f07770a": "|-ERROR,密码不能包含特殊字符", + "913153f9957100bcf3029e8f3d5bc5e9": "请输入新的面板端口:", + "39ea14ec0df812219c450ba15230ad2d": "|-错误,未输入有效端口", + "bab5cb07adebbfbd938180d6862a7ce7": "|-错误,请不要使用公共端口作为面板端口", + "00213d6b5423971311e5a47f83081a24": "|-ERROR,新端口与当前面板端口相同,无需更改", + "e1e57838b2c7e1567fb96e20bfd474e0": "|-错误,指定端口已在使用中", + "5093d954f09d473d091355fe292920a8": "|-取消入场限制", + "e0b1cb1725c8fb29d42fa69d679a73ea": "|-域名限制取消", + "968c7b9246b5ab3d3e7659cea211a20b": "|-IP访问限制取消", + "408f58c25fc55295236fbb64a2d884ff": "失败,无法删除面板当前端口", + "ad6fc2abb89b42d391b4bf84e8e6cd2d": "SSH 服务已关闭", + "0692d6f0819524aaa05e73f03022ec5b": "SSH 服务已开启", + "ffdc24f916f3071233ca7710aff032c8": "<风格=", + "8b7e4d42188dd3064e99d4cc76f2f94d": "当前二维码已过期,请刷新页面重新扫码!", + "238baadc7351e6af7625f2b3c888adfd": "此服务器最多绑定 {} 个设备,已达到限制!", + "9d45236535b39cb2afdc976ef584dc89": "服务器最多允许 {} 个设备绑定!", + "883102f20053b7b88799f5712192fcec": "绑定成功!", + "583e0c5cfd4be57cb9bef0a1745f81c8": "错误信息:{}", + "086a727d5b55e2ccedc7cd0c194936f0": "错误信息2:{}", + "a3dcb5c816b8d611f73cddb3c53578d4": "错误信息6:{}", + "8089be0bb8586c6081d4cd8dd9223d76": "该电子邮件尚未经过验证", + "bff9ef87fdda677f86ae6dddec54a104": "未找到兼容的 PHP 版本,请先安装", + "131c05252110792212e3e3666a351154": "SSL相关配置,请勿删除或修改下一行注释掉的404规则", + "4ba7e24ac1607ab761c124ca7352ad08": "错误页面配置,允许评论、删除或修改", + "31bb30ca4135945adbe0c2daa9545b39": "PHP参考配置,允许注释、删除或修改", + "f9da3e5ae75ce0ae39884ae2ea295a66": "URL重写规则参考,任何修改都会使面板设置的重写规则失效", + "6aabca3a3e1c79bd5837a1ddae95fe70": "创建时出错,请重试。", + "46491fef7553177ef58a55b2db917072": "请勿将网站根目录设置为系统主目录:
{}", + "c3c7869d22051eaa78a831834a398351": "删除时出错,请重试。", + "e2d272e229674e4c6765fab24a323604": "成功删除网站 [{}]", + "5c7b7c2f6ed78eefdd77aaa3dddde61a": "域名不能为空!", + "1628c2a26ab6d1211b435f85782f8acc": "指定域名已被网站[{}]绑定", + "925dc658ddf0f69509632848bcd39577": "指定的域名已被网站[{}]的子目录绑定!", + "7b02cf82181f516626a36b86c6a686f5": "添加站点成功!", + "fc0d039d9dcf3905ae8032c9cb33f475": "错误:
{}", + "ddc2be35a5ed0bf09a88139c4ad10b4a": "和原来的路径一样,不用改!", + "84a8921b25f505d0d2077aeb5db4bc16": "纯静态", + "ad74aa2854e988c3157f92e0120bb19e": "Apache2.2 不支持 MultiPHP!,{}", + "4018ce634a10d352867f04962f107c14": "设置错误,请重试。", + "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "指定的unix套接字[{}]不存在!", + "751ac8fd72a0acd79772370efcae9c89": "无法连接到[{}],请检查机器是否可以连接到目标服务器", + "eeddf79f68ffe029ed83fddcba46b35f": "旧代理", + "90da7d2de9aa12ec32ee04172ca0d2d3": "发送域名格式错误:", + "440544138d3ed8a2229792c88bad3bd8": "无法访问目标URL", + "118f77feff598376a776af9b8e738efc": "保存成功", + "222a267cc5778206b253be35ee3ddab5": "当前的", + "c27a45bf16475a157ca1014cf886bb56": "请输入备注", + "362538d60f495840284c667e67831b16": "扫描目录", + "a17f5bc22553d897f6363867c0165256": "默认类别", + "8f52253b1f007fd14ed0f60b89593d2d": "类别已删除!", + "6678fd91bc04eb1e34e3474809387e7a": "查询失败,地址不存在", + "b0cd0c2bc5c6ce9f71127d60872209ce": "网站 [{}] 已重命名:[{}]", + "84278582ca50b97777b2c8ce780f9715": "如需支持|建议,请访问aaPanel论坛", + "aa00d1012298d40c84daf11e09956c65": "下载中:", + "7b84e677e97bd4943a6639a22c1a1704": "密码参数不能为空", + "f288f8c23f8d03a699a49bf1fb8e7f53": "ssh选项失败", + "3765f17d36dbbf2ce3f42263140bb3f9": "上传成功!", + "2ad238d651bf0bd82f0ae2956282be25": "创建文件失败!", + "f2cbbab1d3bffc73466f6b494c0bd4f9": "删除文件失败!", + "027ef5979f72a8ad82da2a5d58ee069e": "已从回收站永久删除 {}!", + "888c9de5fc0f1389080b1c2bfac90ee1": "保存配置文件失败", + "6b7b87210440f6f1e97c96967dd1d95d": "不要修改SSL配置中注释的404规则", + "b85e34869ba5c840bdf723cba455d12c": "要修改404配置,找到以下配置位置", + "c980badad6cc4c836a0c61a4373cff24": "保存配置文件失败:

<字体样式=", + "9c36e7618938262d25ba84fb3f4e25cc": "消息队列中添加了一个压缩任务!", + "903e9fbbeca62b94e7860c1739138f18": "指定的存档不存在!", + "920db7480bc77b933eb865b04de8cdf3": "操作失败,请重新复制复制或剪切流程", + "8524de963f07201e5c086830d370797f": "加载中...", + "a235681e5c137fda7b04ae9299fbdbbe": "该文件是 webshel​​l [ %s ]", + "b2395c5c988697212ef92e320d47097b": "在指定目录中找不到[Composer.json]配置文件!", + "1b58517a177793277f673701c1b7d8b2": "指定目录下存在【Composer.lock】文件,请删除后再执行", + "e59eb71bb0d6c668ddf49a526468f40a": "目前为最新版本,无需升级!", + "4bbfcde12aa36ec375a332f51bf905d6": "每天", + "60956b50bb8e8c711d3adb889a70137f": "每天,运行时间为 {} 小时 {} 分钟", + "78748f15bb65939b6d130c3a5cf8b7dc": "每 {} 天", + "cf9af10dcebe2f12092ff6028a535f08": "每 {} 天,在 {} 小时 {} 分钟运行", + "e114abed903b9d26c476d4f6cd59c04b": "每小时", + "0aef48ea8132b0551fa25a10fd0a6585": "每小时,以 {} 分钟运行", + "50419faf9662e0c3f283d496bcb8eb72": "每 {} 小时", + "2a0706d7e3ca3ce9e955471a0648dfcc": "每 {} 小时,以 {} 分钟运行", + "84d94bf0382f611906b7edd65d6af169": "每 {} 分钟", + "14d27796d1c96457c7c019661a2f32d4": "每 {} 分钟运行一次", + "6c25e6a6da95b3d583c6ec4c3f82ed4d": "每周", + "e1df614d393ab86fd63c5062f7e77936": "每 {},{} 小时 {} 分钟运行", + "9030e39f00132d583da4122532e509e9": "每月", + "69c5e99b9ad8d2b8f11be9a60cbf71da": "每月,在 {}Day {} Hour {}Min 运行", + "9d1a0949c39e66a0cd65240bc0ac9177": "星期日", + "6f8522e0610541f1ef215a22ffa66ff6": "周一", + "5792315f09a5d54fb7e3d066672b507f": "周二", + "796c163589f295373e171842f37265d5": "周三", + "78ae6f0cd191d25147e252dc54768238": "周四", + "c33b138a163847cdb6caeeb7c9a126b4": "星期五", + "8b7051187b9191cdcdae6ed5a10e5adc": "周六", + "e00d5128f631253b7b6ed8d5454c0c81": "无法写入文件,请检查【系统强化】是否开启!", + "b0698ab9adefa7515299f311c725ba4d": "清除排序成功", + "96aa6974173414b7a392afd70e5af6ad": "找不到 nginx 配置文件 [ {} ]", + "d85076ee3898ee82924d3b38cd49b7a8": "工作进程", + "d0d1c4d1d25829f47c3e497e7f3c0132": "auto就是自动的意思", + "5c81587d9eb573fc7e6a4bc67b4603ba": "工人连接", + "939bf39176f01b8324dfed32f5580af3": "连接超时", + "5f892c3cd4a800e96fd4a7d6b81cdef2": "是否启用压缩传输", + "0dd93c7dd7d0a539fb21b522a5c138cf": "要压缩的最小文件", + "6dfd8b44b3dad3eaec0587ac3bacdcd1": "压缩级别", + "36bacbbd75b4f381e4ae33983250de39": "最大上传文件数", + "6b30b46e4151e28f5e815efdaccf2544": "服务器名称的哈希表大小", + "4351aafd37b886a0537c175ea055d5aa": "客户端标头缓冲区大小", + "d4a3f809e2109d7429c9fefd1ebb4996": "获取密钥 {} False", + "c8ef5bb0221c3b1f8c90c6648ed0ff5b": "获取值 {} False", + "3f1adbc068546184b4d2ca44fc9eb253": "客户端主体缓冲区", + "a410e97f3f643ccfb1081f7f9627b5bc": "[{}] 模块安装失败", + "08f8ae280fc1d36cd348a8819712c20d": "[{}] 模块安装成功。", + "c3b8b9273913dc20cee1a0740b36e074": "[{}] 模块已成功卸载", + "ccef8c06815aa6b4821ab282d195b064": "[{}] xxx", + "74df5d3c409d4d08e22aa8235a72a677": "指定的模块[{}]未安装!", + "4189502407d16c8ff4be384f2d9e99ac": "指定模块 [{}] 不存在 get_module_config 方法。", + "fe35753516820cd3cb2e0f6638898af0": "未安装指定的模块 [{}]。", + "6faf10dc1d0a94af6880463d519f0eea": "参数id缺失", + "e12a73c264c16d2806bf0ce73b2cfcf6": "没有模块信息", + "3272a0f463c78ef84836f71c8448baa3": "没有报警设置信息", + "881d744d56d26d542409c9e9a37ffae9": "未安装指定的模块 {}。", + "b7ad022c6ce9435c43c6760c8ba89b20": "CA可以", + "5d39c57e28ab85457e4949306be619e8": "CA 服务器连接超时,请稍后重试。", + "721eb0b3ea85b39c22f16d6dfc84bc32": "该域名不属于该DNS服务提供商。请确保域名填写正确。", + "b5366a9c53b455fdf8a552c205ca9021": "DNS 服务器连接失败。请检查密钥是否正确。", + "4de3dc0403846edfe5ff520837e2bbe5": "签名失败,域名精确域名集:(.+):{}超过每周重复发放次数!", + "30c0b6ae1acf6137b588473814f3330d": "签名失败,当前服务器IP已达到每3小时最多创建10个账户的限制。", + "797e2e43e3fc3737891adc8ab4a1655c": "验证失败、域名未解析、或解析未生效!", + "9efd01f346301888216d77d35ec156cf": "认证失败、域名解析错误或验证网址无法访问!", + "6c23a7d25119c77017d1aa04761fefe8": "连接CA服务器失败,请稍后重试。", + "b7a370078ae6520cde883252890195cf": "不支持域名{},请检查域名是否正确!", + "1593706a4e3794c75129c8347021f0c5": "域名{}未找到解析记录。请检查域名是否解析!", + "1d80008b0cc4936ab73047baf061c84e": "如果域名{}中未找到有效的TXT解析记录,请检查TXT记录是否解析正确。如果是通过DNSAPI申请的,请10分钟后重试!", + "81dab277ae106f35a118916e25f3f026": "在 {} 上发现错误的 TXT 记录:{},请检查 TXT 解析是否正确。如果是通过DNSAPI申请的,请10分钟后重试!", + "b1bc7e763e87ef08d753a0676a0d5361": "该dnspod账户下不存在该域名。添加解析失败!", + "43901eff07fff70732a4e1d6a732920b": "连接超时,CA服务器无法访问您的网站!", + "7cb06b776259c13fa73d3be5577df74c": "目前需要域名 {} 来验证 CAA 记录。请手动解析CAA记录,或1小时后重试!", + "09c36cbe592612c2546e60652f2d6964": "验证超时,请检查域名是否正确解析。如果dns解析成功,则服务器与Let之间的连接", + "27bad102d3dd6f86d5f6c680c8353089": "创建订单失败,请稍后重试!", + "e10beec48a4a4b433b2fec2eaff64671": "1小时内验证失败次数超过5次,暂时禁止申请,请稍后重试!", + "1a728d28f052c9956f9d014d60c61bff": "CA服务器拒绝访问,请稍后重试!", + "239067c8e0586af7c09738e8240438fb": "续订失败,证书目录不存在。", + "3f56bc50f098e641bb3d42e2d4255cbe": "准备申请SSL,域名{}", + "3b5e16d8f5e1b88c78e494e6601a4d01": "获取成功,请手动解析域名", + "cf6b24b05942cd0c3723d7a4c25e6138": "|-保存证书..", + "bbb21c1842b512148f687ea068553c85": "|-设置自动续订配置..", + "c06d0b48f82d74d3c2854dabdba12d93": "|-申请成功,正在自动部署到网站!", + "1851141907c561e6ac67cba17e549232": "|-正在初始化 ACME 协议...", + "78e67927014eab1b84eb285b6057fca6": "|-注册帐号...", + "4896fdcb74c0e04522c8d3d89d08d569": "|-正在获取验证信息...", + "1016ed461618afd2dde9a4a709a4d080": "|-向前端返回验证信息,等待用户手动解析域名并完成验证...", + "81a3b1828b60659bc3d3c9711e66f0ba": "|-用户提交验证请求...", + "f147fc272d665cd009e1108c5fb6993d": "|-请求 CA 验证域名 [{}]...", + "4c699430325d31db3d7b43b0a0999364": "|-获取 CA 验证结果 [{}]...", + "2b7dd2a937ababf46efb11073787664c": "|-所有域名均已验证且 CSR 正在发送...", + "1de253d3eb460e60480626694092d89e": "|-正在获取证书内容...", + "a0c16d2f8e2aeba9dd9a3b040861ff39": "证书获取失败,请稍后重试。", + "89edc2a5e6ccecc2bdbdd1f9536fb90a": "|-错误:{},退出应用程序进程。", + "94417e0c15f634f59ce15128ef146686": "|-错误:{},退出应用程序进程。", + "03268bb5fa60cf57ac7c30f1f99dab01": "|-退出申请流程!", + "409bd1860bf065c68921473fc2266347": "|-添加解析记录,域名[{}],记录值[{}]...", + "8b2ee088303a8001eaedb8c62e3de7e3": "|-尝试验证解析结果,域名[{}],记录值[{}]...", + "a11fba95c84fff590acd7dbdea4528e6": "|-请求 CA 验证域名 [{}]...", + "676e1a4f8e4561ad55045461f3421d62": "|-检查 CA 验证结果 [{}]...", + "d60d5b998a8ef802ba7f5b5ed343e256": "|-发生错误,请重试 [{}]", + "71087be1722815599ebecd0fd0f58b5e": "|-正在获取证书内容...", + "6d1e7a222bfe888debd080a117490c9d": "|-清除解析历史记录 [{}]", + "77619ceb7742d8a8f87e52b02592d873": "签名失败,我们无法验证您的域名:

1.检查域名是否绑定到对应站点。

2.检查域名是否正确解析到服务器,或者解析不完全有效。

3.如果您的网站设置了反向代理,或者您正在使用 CDN,请先将其关闭。

4.如果您的网站有 301 重定向,请先将其关闭

5.如果以上检查确认没有问题,请尝试更换DNS服务商。

", + "4d6822ed3bd01f379f2ab4b1e68068d7": "|-当前没有要续订的证书。", + "b74c00ca5fee122c49cd66ce3d91b2cf": "|-续订失败:", + "b0a783e3ada9e792e3ff3ca4eb477c80": "证书不存在!", + "fca4e47d90253577901e874737b87dc0": "证书读取错误!", + "813595d6c41e417bea96adb1ad89043f": "证书格式错误", + "16e6977cb4d0694335f3492ad8767370": "未找到证书", + "b267d8a6cbf23d69056263e194742c06": "证书无效", + "f8ad04059d0821e2ece2ed287bb3cd13": "证书信息格式错误", + "a441b2686419ee07dac67ba6bbf3ddf5": "数据库写入错误", + "34c7694451633cb615e98b06d040c5c7": "数据库查询错误:", + "ba709b27ba6099126b4162a916a20174": "没有登录,所以", + "ae01e57647be41f3c1e2a0e49dae3de8": "获取云数据失败!", + "8d1747726b316e3a1063e5db9fe65864": "获取云失败!", + "ff34f52bf8f702f83843e0d8f3e6bfac": "参数错误", + "41309f5b21613cfea3728a55036f9970": "未登录,无法上传至云端!", + "6e4a26963219701ba8e062a1255fe089": "没有指定的证书。", + "2c7d38ab0f7a91f5474efc897eaf4b2a": "本地文件删除成功。但是云文件删除失败。", + "501ffa672acb20c4764563d6e839879b": "无法连接到云端。无法删除云端数据。", + "a810cdf921c5b92a3f6d29667ec78ffc": "德尔成功", + "df569fbc92d17644e83b44541596633f": "无法连接到云端。", + "14230d11143a03f4330c6433d5032a9d": "上一篇", + "10ac3d04253ef7e1ddc73e6091c0cd55": "下一个", + "a6122a65eaa676f700ae68d393054a37": "开始", + "d55b30607c2a9a2616347d6edb789f6b": "最后的", + "5da618e8e4b89c66fe86e32cdafde142": "从", + "9952a15e524c95759c3580205db6fac1": "依赖以下软件,请先安装[{1}]", + "195db7b1dd43ab76173d8f6497a878d6": "SSL_GET_SUCCESS", + "04eb7ae7b137df9d43f7588dac35db5d": "SSL_NOT_BTUSER", + "ca9cb3b791215702c4330798c401a014": "获得成功!", + "37779be9505d214d4c1b4b4e0e787a6a": "请绑定您的账号!", + "ad1bd4960cc19a6639b0d31892e3ea3a": "删除失败!", + "05e5c702b39bcadfddcb3b98b9723c67": "连接服务器失败!
{}", + "ceaefd9a46d78491b9fdb912b5c71eeb": "无法创建验证文件。检查写入是否被阻止", + "140bda69874872f8402052c613c0b3b9": "aaPanel 警报测试电子邮件", + "76a1ec4a3fcdc304394ff14dc90f8072": "面板线程数应在1-1024之间", + "dd7e82b5fb3c67e3e41d96f22ba838fd": "新面板端口", + "40624aabb99173387dd6d575759b12db": "缺少 certPem 参数!", + "37db9679113eef382992a1478f1b79ff": "privateKey 参数丢失!", + "d2174fc17fcd785706114088b84dbbce": "临时登录URL已生成", + "b5101eb6e685091719013d1a75756a53": "\\1", + "8b266978ab5161642a2d95d3f03f3945": "请先卸载[{}]", + "ad626ac6de7ea412c9156f73b7666cd4": "依赖以下软件,请先安装[{}]", + "acf7b210e1f5fbdb2e24af573f0e1831": "安装至少需要 [{0}] 个 CPU 核心", + "d0c8fa89a1eccf8a377d11eea540fd0c": "安装至少需要 [{0} MB] 内存", + "52e44340370925b110c7fba475b805e3": "仅支持[{}]系统", + "e3b16d9e5a24c8d27578d7670e840200": "依赖以下软件,请先安装[{}]", + "a0405fa5f045a30ba3aeff1c65ad8c38": "安装过程已取消!", + "a13ed989898e4c7529942fa656ff6733": "系统关键目录不可写!", + "7a71d673b95a1bd0d10705c865f5a626": "1.如果安装了【系统强化】,请将其关闭", + "c5041819fd15366b66dd9539116ea6ad": "2.如果安装了云锁,请关闭【系统加固】功能", + "101935ed7ea8a021a536a614363350eb": "3. 如果安装了Safedog,请关闭【系统保护】功能", + "8c4aa1aa63c24703138358074a515b99": "4.如果使用其他安全软件,请卸载", + "349838fb1d851d3e2014b9fe39203275": "安装", + "17e4e003ade65cd7a54131d3404d2f98": "未打开", + "bda730e0e5c7444ef6f4f49957ab4f39": "待付款", + "24fe48030f7d3097d5882535b04c3fa8": "已到期", + "88183b946cc5f0e8c96b2e66e1c74a7e": "未知", + "84f7539fe8674bb0689347dc7acd7b43": "存档中没有找到插件信息,请检查插件包!", + "affc007de5f6791707f3de155a3a642a": "临时文件不存在,请重新上传!", + "5e71fccee12caedf853a7313ea204721": "错误:名称或服务未知", + "b6e3d7366f73e2c5e32717d679db6474": "错误:无法建立新连接", + "cdffdb1c794cf0dd777b3941a31459e4": "错误:读取超时", + "4573823cc04a9cbf8a7bb254b762db91": "错误:连接被拒绝", + "e3c2e426ad1b23571c48ec572ca675bf": "错误:远程端关闭连接而无响应", + "db3a5c61130d7ca2046f5f9d0cd08073": "错误: {}", + "fe723570085e5cc1ecc3dfc88a46aa2d": "下载超时:{}", + "0eeb116408665d50a2f2092a6c277ee6": "没有可用磁盘空间。", + "57a43d6e8c479df3a51421eba70d5621": "验证包校验和失败。", + "c12c62dd767caf90d62356b47349d871": "无法获取此插件的进度条。", + "868a6f377594831b39e91745c7807e28": "指定的规则名称不存在![{}]", + "5d9cf1940fae6317dd43a7f1b5ca8f36": "指定的规则名称已存在![{}]", + "3d8c9e517719022b27ad5f27c578fa31": "获取 RAM 错误", + "d47ab7b9ce539ba13f4e045561bb8ed7": "正常运行时间错误", + "8e39175bab478762d3d029bee327c704": "获取重启时间 False", + "e16cf27704f83c8b0a0efc16886ea75d": "获取日期 False", + "c158c8096b76b85803e71232b2dd5e74": "获取时间详细信息 False", + "a6ec06b5eb6a42e13e072d2e992e31a0": "获取 reqpersec False", + "cdd32490a46567fd0c1ee9d4b170b762": "获取 TotalAccesses False", + "62b939086708b37d68c00cb713994b52": "获取 TotalKBytes 错误", + "13b06d17b35dfeeafa50e12ad9ec1735": "让BusyWorkers错误", + "724fc9214ccce3e6a5787648240a4533": "让 IdleWorkers 为 False", + "c22cf8376b1893dcfcef0649fe1a7d87": "第二", + "db669c6377ab90eef78800a48fd4a453": "请求超时", + "af52f5340c065f4d38182f7a27d59f75": "保持活力", + "70b46e57f3c33abdb9558bc5c3a234d9": "每个连接的最大保持活动请求数", + "6868568c3abc547e622a303891a906b0": "默认进程", + "224114c62dceb7ebee2db43c6c79a961": "最大空闲线程数", + "3c60809d9a5a0900dfbc28bb017e410b": "可用于处理请求峰值的最小空闲线程数", + "3783030daf8154be6e11fc4160c229c3": "每个子进程创建的线程数", + "2f25e4b1a2cb84576740da749a2daef2": "同时处理的最大连接数", + "72e3edfd72758944413b1e4e9c432f1e": "限制单个子服务器在其生命周期内处理的连接数", + "26c74a59d7d10bd927dce45e449943f1": "配置错误", + "6e72fc97e2f1be35ae40ca21d6b1df38": "找不到该wordpress的数据库,这可能是您手动删除了数据库造成的", + "6df8e9d3a4e149ff12445d981f6fc244": "密码重置成功", + "c0ff8a4b4b8f68c4ba7df88588291590": "FastCgi配置已经存在于网站配置中", + "5c9b599b99f7a169b9cd25f7045eaac5": "同步成功!", + "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2不支持MultiPHP!", + "69be778c38b9edc0ab3040c478c39370": "错误:%s
,<,\\\\,", + "f0f290884251850f0d9fa6afc91d39c1": "域名{}与目标域名相同,请取消选择", + "ff1251600d8019bbf4280cafc534a39c": "{},目标URL与重定向路径相同", + "f1af189cd525a4d5180b8ccdc305a926": "%s
<风格=", + "d8a8433146dbbeae50556fbae3021090": "抱歉,出了点问题", + "98890699b6686f80f746e6c49132a9e6": "成功删除重定向 [{}]", + "66216b10799820e9d0dec631fb63cbcc": "指定的运行目录{}不存在!", + "0c939a5a8e86280f277af48ae2b6a292": "SSH服务器", + "1289763e4f4017915b90fc7f6d64f278": "数据库存在!", + "ed9386a8a2244478b48c442f1641d8fe": "用户名已存在。出于安全考虑,我们不允许一个数据库用户管理多个数据库", + "abf15f63af718dd9eab47991f728b039": "打开成功,手动重启数据库后生效", + "ced1ff377b05e3ba5ae9837ac8c05b80": "数据库 [{}] 不存在!", + "c38111d1a26efef2f1d89b0dfbef1ee7": "数据库 [{}] 连接失败", + "c54a0be87c240156a0403ba306527fa7": "此数据库不存在回收站!", + "5ed48eedb205aa687178500c75228409": "root密码修改成功!", + "e9ca862378b02ba5fea97e3a6f9fdd5e": "测试数据库", + "712d5c60bf965a53ad98f51a18328fb3": "数据目录长度不能超过32位", + "22875aa10a21e1f51ae93cd2ee20fa07": "innodb_log_buffer_size不能小于8MB", + "ee3025fb775c175b755f78732269dfc4": "优化成功!", + "84876979c316886c9143e5b895476405": "优化失败或已优化", + "5a513bca80ba9e849cd64e6df029b53a": "没有令牌", + "beb887915b2334d0bcb0f23910ee03fa": "取消订阅电子邮件{}成功", + "ced5be071465948d917518318181e530": "操作失败,令牌过期", + "ed0b8b7de7d6124343c2c12f29c84a2d": "操作失败,令牌无效", + "2759543b1abc5021bf03258b0032b6fb": "没有电子邮件", + "1cb8f68ece43505dde623d0e297426ac": "通知设置成功", + "2f9fc94872130dd0fb976fc6b0b96514": "微信消息发送失败。--> {}", + "0b27e119bbc4a725cbf863dfd52dc473": "未定义的 fun_name", + "a969a46fc07219c039a985f8f7b61cf6": "参数错误,函数名未定义", + "cbf8d9b9372ca5f52268a5dbbb6af5e9": "dns_id 未知", + "36150f18886cfdedefd8e0ce031ebaa6": "执行失败:{}", + "315e5172120e0508a5da1da63fe80903": "设置失败!", + "d78db61be0fee99b043b646bcb10a1cd": "设置成功!", + "22af6aacc48ecde709e357b7f689fa4a": "请选择您要设置的域名!", + "703f48fb3880275147fb6341a601d75a": "指定的DNS不存在!", + "6afe3a685b340d46d1eb5e96f46d8b53": "设置失败!", + "25d70741ea5481da5457bc36f316f2cd": "设置成功,{}条记录已更新!", + "a0db66604e4493a5782f45097fcad859": "这种类型已经存在。", + "ffbeb35495d2bfaaf4957cc8db9cd8e6": "添加成功!", + "e7d698b3874686530ce8eade7d46cd89": "删除成功", + "5ccf1f7d5db89204eee4cfdcdb0944d4": "德尔失败", + "7c7d6bc523a6ba94346ef9419f4b93a6": "删除成功", + "838d94727e13707491b9d9c9510ba453": "同步成功。", + "33c678a30e066da93ac44a17629f3900": "未定义的 dns_type", + "ac612c51ba24c8559bd045e2c3706011": "模块文件 {} 不存在。", + "4c9eea0839e8a2516ca1d34407cf0305": "设置 DNS 记录失败:{}", + "7bc387e9ae161a403dac4ccfebbf012e": "找不到域名 {} 的有效 DNS API 密钥信息。", + "e5a1f5bb9e10d065f27eac8d4e8c2e8d": "删除 DNS 记录失败:{}", + "7c89ed1def10408d3584152d2ad2eb33": "该域名已存在。", + "55ab92952e1b4dca79cda76843eebe99": "添加成功", + "584a4244515646b153102a8d302e8546": "面板未登录,无法云端上传!", + "347dae5469b16521e17a37cc2e3168ad": "没有指定的证书。", + "cf25e0eebbaec98c374104d843fb31fe": "本地删除成功,", + "6e1fa7be6a999db147fe218c1e5a85ca": "无法连接到云端。无法删除云数据。", + "efbfd7f8e586c8efafccb9260aec988e": "错误的参数", + "1c9a090e06b2f4d3858bd2141b97133f": "操作错误:", + "69d0b962baab44b9e0df62a51012996b": "面板未登录,无法上传云端!", + "3e5b88adc8b76d44032b4f54f2a4dc29": "没有指定的证书信息。", + "4fa5aad0ed4116fef4e615297106ca98": "证书文件读取错误", + "e61a80b8cfc84266cc6da96a589f389e": "连接云端失败", + "3098a079086bc6216453ef84da5b9504": "无参数", + "670a25b9478103f18df9dae288ea9680": "证书不存在!", + "ef703ece601c1e3204353eaba0cd7062": "参数类型错误", + "cad878a2802e3f05a8f0b94822b123ef": "没有证书信息。", + "c3c25b414fbc136ec923a6d770fceedf": "该证书已经存在。", + "a93ac12141fcab1f5ddb502e738a4494": "保存成功", + "9fe357faf3332a5040d055fc390945ad": "未找到证书信息", + "3ff7e4a7ba896ece34407eed8e2c6489": "证书不是Let颁发的", + "44eb815db7510a33f531b5b062964bb6": "创建成功!", + "2e69adb0366a9a6daea00860367ac03c": "创建失败!", + "378dfed31bb76afb115821875780c68f": "面板未登录,", + "c68d5b6b7aa83937b4d12f88fbd1b130": "获取云数据失败", + "49b5863032401b0857eaeaa17c0cddad": "未找到证书信息", + "2de69e10f0a8a2c7e640011e06eaf229": "缺少必需的参数。", + "6e28b57028810b7101ed93200348e6fd": "没有找到证书信息。", + "cc04dd5405df97665d385bf9f945a1a5": "[{}]获取网站路径失败,请检查IIS是否存在该网站,不存在,请在创建后在面板中删除该网站。", + "4d0e2b9d7d854b99d31322e347a8a358": "防火墙有 {}", + "0024ce604e62e9ada858f0e1faf08fd5": "您的IP地址", + "d27cddcec5e0f66a566fbcdceb5dfef6": "删除成功!", + "49f648bea338734c76f49de41c91aebe": "域名{}解析添加成功", + "7a3359de6c4391fe9a15eb0425846fd8": "域名 {} 已存在", + "f11c2e32a42274ed9160658e259b2e58": "忽略规则失败,{}!", + "dfda9d0c9d44e155e4125ebccfcbea99": "解锁成功", + "6ca2675195e92143f625d036f2f9cf39": "服务未安装,跳过。", + "f2458ad2b43110cfc09fac4b29508acf": "配置错误,无法设置,请尝试使用命令修复:", + "fdf95ff2f0a3298c8a83aad5255780e5": "数据库 [", + "68519350e49a18c7380764a80dd6daa9": "参数传递错误,缺少参数{}!", + "bea367683a2238e537e3833d0b15622e": "指定的服务器已存在:[{}:{}]", + "0b5f04d53d3af37f88b9b46b568d1dee": "添加失败:{}", + "0667c3c8ef82f94545b286b69ef83030": "参数传递错误,请重试!", + "81eef63c48701d6d256ad3e7789bd8f6": "删除成功:{}", + "072b1fb2c5c32e99fea89190987f1511": "编辑失败:{}", + "0267067a2f76a814e9f2c9c111fa6a2e": "MySQLdb 组件丢失!", + "b1b74781e4481f083f18ad6719a6b583": "连接数据库出错", + "f5f1c56c404d98779a4fbe5630f7d778": "数据库连接失败,请检查root用户是否有权限访问127.0.0.1。", + "a9905dc3078535a661eb1aeb06f5a6da": "数据库密码不正确!", + "0e50ad3c23c4eb42db81e7ea3da4848e": "参数传递错误。", + "89f2b141f7790003d85cee94389a5899": "导入路径没有", + "579cd57c80fb53784de0bd606c14891e": "只能导入压缩文件!", + "04aa3a99d1550de2a89aa408790e0234": "备份失败,{}。", + "2a389cf13e591eb8202af139c82a762c": "备份执行成功,备份文件小于1b,请检查备份完整性。", + "c254f52cdaeb7f1a88c6bdd3e3e3c3f8": "修改失败,数据库[", + "894f4e4dbeef39cd673987e501f8c2ab": "选择sql、gz、zip文件!", + "da3304c09f836a15a0c1ef43d28ce833": "{}文件不存在,请检查安装是否完成!", + "a52ecc2f72eafcf3453f9a50ffb7d0aa": "数据库密码[", + "bb0b766f654bd8338d9dabb8c57378ff": "数据库创建失败。请检查mysql运行状态并重试。", + "439d4d68575132c1a273fc36bbf6f72c": "未找到 ID 为 {} 的站点信息", + "5766c6d37d04fdab31ce8622fcf6fab6": "导入规则前请先启动防火墙!", + "277467377ce35c4535ce0c9e36f4978f": "无法导出任何规则", + "686160d344e24c2dbcac934048f03baf": "文件不能为空", + "d11dfae04c7fd00b48b744926f7e733b": "设置成功,以下规则失败:{}", + "9c6da8c31a9a2d7a04756b09f01696e7": "端口{}已存在,请勿重复添加", + "99404700c0746498a22a6ac82f3a78ba": "域名: 【{}】解析失败", + "905d5834754a81bea63ea590793346bc": "目标地址{}已存在,请勿重复添加", + "ba797e05926242a5135289c98dcd9d36": "源端口不能为空", + "4943a6954b9887aa5989713fcbb2a0d1": "错误:无法连接到 {} 服务器,请检查 [AK/SK/Storage] 设置是否正确!", + "da10c98ffbf34b30edec9cf47d998a68": "申请成功!", + "24380483226504475d196fdcff7a6c77": "连接服务器失败!-1", + "353d91a7655b3ef5e024d07eef1888ab": "连接服务器失败!-2", + "75809e3b321efe1afbdf9773494d5dd9": "未找到{}配置文件,请尝试关闭ssl端口设置后再打开", + "7d7014331b485392e1d6055aad5c26cd": "没有找到nginx phpmyadmin ssl配置文件,请尝试关闭ssl端口设置后再打开", + "35e15c0be5bb51b628d96c9a520c9b01": "端口 [{}] 正在使用中!", + "f471efd0f135fbddafdce4ad1febf5bb": "当前的 Web 服务器是 openlitespeed。", + "4a32aac45fa22d0c693a646d5e265bf1": "面板证书不存在。", + "c6b59c5c3d29862a6dc85e9375094c83": "当前的 Web 服务器是本地且私人访问的。", + "056197513cf8b469874e09b037fa5aaf": "不支持当前的 Web 服务器。", + "7ec0387d04c7d7c8259b497464fa3282": "phpMyAdmin 已经 {}!", + "4790f238a5706fa03ed78c98efabd5f2": "绑定有效!", + "e420cebff3e23fb8eedd388024ce1839": "目标 URL 格式错误{}", + "bedfc521aa92e68b04430d33289c6b3c": "在多Web服务器托管中,仅支持nginx 1.24及以上版本!", + "f5484a1a111b9d70ecaafb36a7df48f6": "电子邮件不存在", + "59d26291d38cd716232dd08e1c6c5304": "请输入您的电子邮件", + "d76fd2d8c3dffcbab0885c9bdf78fe16": "电子邮件已存在", + "fec0532445dc524beeac7255c4d34ef8": "请填写信息", + "ffa0dfd81ff9459785617a7a73a7d9f4": "邮件发送失败,请检查STMP密码是否正确或主机是否正确", + "ae73c4d1db318d09f4792e23f1b80584": "无数据", + "7ee533d91b6b3524d4fcfcde77dc4987": "清空成功", + "11f60f1528977a463a3ef16a8876e4f6": "该邮箱不存在,请将其添加至邮箱列表", + "009654d37f429367967bd49ee47c26f2": "请填写邮箱标题", + "2ab41d39d3f12250b5dc3ae0d610caa4": "请输入邮件内容", + "0c1828ed3fbaf5eec3fb8ad0a7aa957a": "未找到STMP信息,请在设置中重新添加自定义邮件STMP信息", + "03212d3e6324204bce266e74779ab3c9": "发送成功", + "494247bcb984f09ad09176c8256e64ac": "发送失败", + "6f81b0f19f4ef82bf31eeb9c20979f90": "添加失败,请检查网址是否正确", + "3d17d5b07e5aaa72a35e60707027d352": "未找到您配置的钉子的配置信息,请在设置中添加", + "a75863f88c3c7b7cb43989b7b406a82a": "请输入您需要发送的数据", + "5de6533189f891dc2a44ac945f53efce": "密码复杂度验证已禁用", + "06fae24317d8f2b5ef156f11a0fba311": "已启用密码复杂度验证", + "946cc3a7fae7508e3d34b4ed139ee2d8": "密码过期验证已禁用", + "f00369482ba4cd8b50446356d3fad724": "密码有效期不能少于 {} 天", + "501b1c01d3b31cb34cbcad5a19ae851e": "密码有效期不能超过 {} 天", + "db6890122bbd9e97fb8e1b117b367358": "密码过期时间设置为 [{}] 天", + "486b7d3b3ca271d873ef1c9d4c0e07a7": "密码已更改!", + "6c6b6e84490b34b36f33dcc8ae85fdc2": "两次输入的密码不一致,请重试!", + "55f5bbcf01ad984ea402d50061609240": "密码不能少于5个字符!", + "59b39458556877d386a837773736eb2d": "密码长度至少为8个字符,且至少包含数字、大写字母、小写字母和特殊字符三种组合", + "704372ffb884853d30e3b247765bb73a": "两次输入的用户名不一致,请重试!", + "1bea42b66bb313cab948558e2d27b4e5": "用户名必须至少为 2 个字符", + "4772625698c6c1ed00afd0848fd2b57b": "密码必须至少为 8 个字符", + "f0b3060a19359c64cc7674d67f00a898": "指定的用户名已存在!", + "330080a87414678839a05adf12a4bb1d": "创建新用户失败!", + "c94d622c80e3f5af884fcccef35808b6": "无法删除初始默认用户!", + "e19e85e7bd5fde471d513ef747e88021": "指定的用户名不存在!", + "7d435c8b5780fd83a10ee8f69abf04c4": "用户删除失败!", + "65e81e9b6c91bdde17fca09089852265": "未提交任何更改", + "c8e9c31bced80905134de34df6f67d66": "backup_number 必须是整数!", + "526d961c343986a803395eb22a3accab": "backup_number 必须大于 0!", + "d944a195e19ea2a91eb143a4600a5fe6": "关闭面板数据自动备份失败!", + "cb476d0f3d678a0f1746d6d91f8c24c2": "开启面板数据自动备份失败!", + "77c1047380de3f54df74a3e84ed5ec15": "授权IP格式不正确,不支持子网段写入", + "52d7cd44ec88df37e528f140e2affcf4": "超时必须是整数!", + "5ad475cca538c88655b2299588b9a091": "超时时间需要在300s-30days之间", + "7b66709539a01edb71eacc470ce7f4bc": "域名无法绑定ip地址", + "f522b971d05877c869be6f81b9eb7fe8": "请设置正确的服务器IP", + "716e57b0f48924438fc1209c06353fc7": "无法使用系统关键目录作为默认备份目录", + "17ceb8d2128aa1ce5f2f51ef5b19a809": "无法使用系统关键目录作为默认站点目录", + "e60263ac381ae4a9ad460a5c706b9b5a": "配置已保存", + "b1f79322ef609c5ad200c552dfbeba85": "超时时间不能小于300秒", + "59bfee3685345c8facd75248b7f17a8c": "超时时间不能大于30天", + "b1770445e55578871051298a4bca2ba8": "不能将关键目录作为建站默认目录", + "395fa878a1482de198dd9765e03cb0df": "安全入口不能少于6个字符!", + "7030414be42829df4fa2102738ad98f8": "该入口已被面板使用,请另外设置入口!", + "3aadff910a401b163029bd5915aea8ee": "入口地址格式不正确,例如/我的面板", + "ac67b91773937f05690f0eed86ddc37c": "上传大小限制不能小于2MB", + "f2c35784d83c39c7804be9817c498d97": "请填写30到86400之间的值!", + "10951b15ad70ad91dd672b3942e85954": "错误的操作模式", + "c277ef8831d8bcad68fafb826e050fe1": "无法连接到时间服务器!", + "7d8946452a1ad712185ad106a09d83cb": "保存天数不合法!", + "4218a6e9c12f1fa453fa8e5c1b00bd44": "电子邮件格式不合法", + "df6565d8975cca7ba4276300b9c38bdf": "SSL已关闭,请使用http协议访问面板!", + "e99cd51a6216bc73a3e8ea8de05a54d8": "请刷新页面并重试!", + "74f3d2f09425457bc7a3fd34017631c9": "错误,无法自动安装pyOpenSSL!

请尝试手动安装:pip install pyOpenSSL

", + "8e4aa3a825e526915c867d103bc88064": "SSL已开启,请使用https协议访问面板!", + "e47079f267dd01176afaa962dcd62358": "注释或面板地址重复!", + "8c7a5b3c69236d00b3577be9c91a71cc": "请求的面板信息不存在!", + "5b8ce0c16a86626165e93796b14d4bf6": "读取 PHP 配置文件时出错,请尝试重新安装此 PHP!", + "0631278069374277ff3b2cc2949940fd": "请输入正确的【域名或IP】!", + "ac40ea6dbb38e754acea879d58701424": "{} 天", + "7a3fd8f7ddf80ae2db423aa55177d22a": "{} 天 {} 小时", + "377e7b3a05033be3164d7900c2feb2a6": "{} 小时", + "b2a09ec7e869bb555211fe7b26b5cf3e": "{} 小时 {} 分钟", + "9c9a5e9d306cf687381d8f1924b43b9c": "{} 分钟", + "0656e1b2562955020afc339b3c9a1838": "PHP 未安装", + "375a8ffa8b733dd5f6b069de80c57d48": "获取php版本失败!", + "2b5266cb205519f70b1bcf7e2654982a": "未安装指定的 PHP 版本", + "f54dcdd36a3b22d81acbd5358cb2a0b7": "BasicAuth认证用户名和密码不能为空!", + "5dc91c307ada29366c842b16a5de6913": "清除!", + "22ad45d745e31a8dbdb6a64f94289bbb": "密钥不存在。请打开并重试。", + "53ca2a75c705f11ff1096ffef2762084": "用户名不存在。请打开并重试。", + "2323ea8555972da4c7321e11488c97fe": "请输入操作模式", + "5995c475ba8ebf9ca5a5a48623ce3df3": "无二维码数据,请重新打开", + "40e23dd18b1ba7d11eae146c3a6f0c3b": "生成临时登录URL失败", + "03dbab348363a2cc86c13c7dc6be2078": "取消登录报警成功!", + "655318de73b4940df95a3a570a4d9987": "未安装报警模块。", + "bf5ef2bc39004caabc0c836ba6389c75": "该通道未配置,请重新选择。", + "e5e7da65a17350434adc9dc9492925df": "需要先启用面板SSL功能!", + "e6be2adc545cca56a638fc1b7793ebed": "面板双向认证证书已保存!", + "e7cf53b84401535396c856570a5bc40f": "面板双向认证{}成功!", + "3400b1e0bf5f54e0230a7e272698e73b": "模板文件不存在。", + "c9541884ca9b19170e4d300b16e9c10b": "安装失败,未安装 [{}]", + "ed39c2105eef1ae435e6a332bd0b716f": "[{}] 已设置为默认通知。", + "0b3d1848b5648a7ac08ec7425043059b": "[{}] 作为面板默认通知已被删除。", + "67c052db394411fdf2755100c5028f94": "设置失败", + "c2806eed218fbfc91e0b4f37b08ce547": "无法安装 [{}] 模块。请检查网络。", + "4ccd9bbf79fcc60bef3a1aca5d577e85": "[{}] 模块安装成功。", + "643fb3483415124df30e40a2559a02c3": "[{}] 模块安装失败。", + "92013d9cfaae3995581927729dc898b8": "[{}] 模块卸载成功", + "2eccda3dec7fa3a985668d79c718be23": "调查问卷已提交", + "692323a652529dc1bb482078ebd98fd0": "尚未提交调查问卷", + "7a18188353d1d06b3ab9af842dd6f0f2": "获取问卷失败", + "eb010361bab3ef9e74a27fdc883b1bd5": "问题 参数错误", + "25baa40bd86bb31a5095cf5457e87f74": "提交的文字太长,请调整后重新提交(MAX:512)", + "1cc5a8ad869ce7dd47987b6eb278260a": "提交成功", + "7e4182fc0365b28328ac2ec8896f73b1": "设置失败!{}", + "94e431cde2ffda2ef08526fa2af1b0b5": "设置资产成功!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "设置资源失败{}", + "66924214c228f7eb631ac940281c7190": "设置成功", + "d55e6e0c13df775ea0eabea4f36ff8da": "请至少启用一项命令和防火墙", + "322d678e45d68284d90503f36da32648": "操作已执行", + "26eaf477d247c668a143b415491995dd": "您当前的 IP 地址 [{}] 不在白名单中。", + "c26b7075352954fb3e96fbe983dbd083": "您当前的 IP 地址 [{}] 在白名单中。", + "f9cfac18ac1fe92adcc47b139d0617a8": "添加失败", + "bf31291dfc89be9a8af12c3fa15e7e4d": "执行的操作", + "71a1c5f19c8e300d350f5f68c71e4559": "删除失败", + "01f144a7cfd324d0dab94f8aa6e29374": "删除成功", + "3f8ee4f649b32e181c15c39682629844": "用户 [{}] 存在!", + "b23886f3380c4a9500a7614474ff6bf8": "密码必须至少包含 [{}] 个字符", + "f20eaf62a87c2072f7c09ec70a6b90c9": "删除错误", + "9607dbc43fb07121ebd102497290c15b": "{} FTP 用户失败!", + "8b73e5696a44d470ee99c274152c1b54": "端口[{}]已被使用!", + "384169bf557e2785a74c6ab4c8ca0d9c": "编辑错误", + "ee6cb8cccfef01a6931ac569767b7303": "本地数据库已安装", + "65d7c486a72e5ad1b6bd2efb8956f3f6": "编辑失败:{}", + "f62e45c2a8ed2cfcfd94370111f2a7b3": "已存在同名数据库:[{}]", + "c0845b39485db26e69520bd402a139b7": "数据库[{}]已在回收站,请从回收站恢复!", + "4660d7ac939f0ce64023bd24bc25b663": "数据库名称不能超过 16 个字符", + "299cf735a7b842c5bc2eaedf2e266387": "数据库名称不能包含特殊字符", + "d1e3ea8b4d692d87d876428f0cf476c4": "数据库名称不合法", + "32e1edf20dad771b315ddb3da35bacd3": "MySQL中已存在指定的数据库,请更改名称!", + "54fac16736efc268ae61cc17bf80dcef": "远程数据库 [{}] 连接失败", + "ad62ead53c1f43865593805aab80df4b": "修改失败:{}", + "d3a51b64fa563dfcd901485db4cf5777": "数据库[{}]密码不能为空", + "157aebc66e02126c7568365a18392758": "数据库密码不能包含中文字符{}", + "480b606c09fb9d52b9e47995e04641de": "未找到数据库!", + "f730258407ac8fda3c780e7c59a09f16": "成功修改数据库[{}]的密码!", + "36856cc0aff5e4d792ab1919ec9e24f9": "备份数据库[{}]成功!", + "cd338377817d5286c26f62c0562ebe72": "已成功导入数据库 [{}]", + "4461199265eb82e1de46055d7f4568b6": "备份成功", + "ecc5e49aaee7ba7dc9a1b1b89e008c13": "选择sql/gz/zip文件", + "3bb533d00c768936c2c3bf24d2c542a2": "配置文件不存在{}", + "c811067e114e07cbb188afd110ddc579": "从服务器同步 {} 个数据库!", + "a47891f08609cb38f4de9fd50def4650": "从服务器获取 {} 个数据库!", + "8aec4a4bd998059f3dbb932da4714b00": "找不到IP!", + "a62053a8ff838da8ba33aae82d8fda5b": "数据库连接错误!", + "65a61bd2b3c632fd1d27b19db5abf197": "MySQL数据库密码过期", + "dfcaac01b569325ec535229328d52f6d": "数据库查询错误!", + "c6fdc537935f8c3e97a442e8be9adf20": "上传的文件夹中有一个同名的文件。请检查并重试", + "055df73dfeac55aa4ddb8b31e98d3fea": "当前用户没有足够的权限去访问或者修改{}", + "3ff13f637b9e318936f8d30f77c57c64": "当前目录为API权限", + "8c7dd0d2966be0d1427bb839c94a993a": "上传失败:{}", + "fc937a95d443a5accb3dc43dabf8a4c0": "磁盘空间不足", + "dc494cbbc1dad9fe8a2d219d561840d5": "文件上传发生错误请删除临时文件【{}】后重试", + "45cd3dad5e3ac153966eff8aaf30c33d": "存在与上传文件同名的文件夹请检查后重试", + "eaf87474bf8e355eb84fadd0caf91f14": "当前用户没有足够的权限去访问或者修改", + "fe56b3a6f3a8b6a24f60a62408351b0e": "这是回收站目录,请按右上角的【回收站】按钮打开", + "8ec1fba8a89cb67bc958d7b2424156e9": "文件已移至回收站", + "99a091a444e6e207f60506fb4f0bdcce": "成功删除文件", + "5873103908815f34241636e336e1f463": "压缩任务已添加到消息队列中!", + "e57b7bae408dd226fabe86773cd6b3c3": "批量操作成功[{}],失败[{}]", + "c28802f8d7f5a40cb9f17cace202e59f": "查询错误,{}", + "11c99562b6212de14ddf1dcb06ea1696": "LINEUP {} 中没有任务", + "94f33212bde1cd76797fe4fe78b2167f": "将 Composer 从 {} 升级到 {}", + "c601909c952f2064e91d6f3c1d1a7128": "★开始备份[{}]", + "890b5b1ca2b1aa96f0781c9fdc77ab88": "☆备份完成[{}]", + "5316694cae24d434370be2d76146a500": "|-错误:{}", + "b763e7e9f6b23d4b5066458506d26d55": "备份任务执行失败。", + "713660262f5ab9c3af9aa17c8d8a412c": "备份到", + "de5ac4bddf9b72b649c0cbd4243f76c6": "几秒钟后重试...请稍候...", + "6905a88552caae6df77f56bd19f6d76a": "Cron 任务设置保留本地。保留本地备份。", + "63701b3fa795bcd399aab5d489f8eae9": "Cron 任务设置不会保留在本地。不保留本地备份。", + "837cc24a222df21e74245f4cfac6ad09": "用户设置为不戴", + "57d4380c974a85fe8db5914c934addf4": "计划任务不存在!{}", + "038ae15d38f9f027abda2aabf18324ab": "保留最新备份数量:{} 的 {} 份副本", + "58c65e272cfde6fc8cf73d0ffcde4bbd": "正在上传到{},请稍候...", + "243c0f3ec002883d6fa7770957ecf9bd": "计划任务不存在!", + "78df833c741b9814545d76a83f2db9b5": "{}备份数据库{}不存在", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB已启用安全认证。", + "e6c81af465e7bdf8761e0072eb217ca6": "当前系统不支持", + "44164f2aee5b6836802ff8142f495629": "扫描失败", + "dd1ddef2d75c7c80540db8c12270af8a": "传递的参数不是通用内部对象", + "aab2b67d697c82001fc3764f03df953e": "aa面板端子", + "b4e82db400aed46c6a1d61b93ff20f0f": "连接失败:{}", + "aa40ceff8d69dc0bf2a3887e2d5c778c": "连接失败:{} {}", + "69ee350f3262c97f7e3f35cc66443942": "paramiko模块不存在,安装失败!", + "d580ca3289757bd32c3e11df44ccea78": "密码或私钥不能同时为空:{}:{}", + "df9dc7c6d010fa7d486ab5c61159450f": "身份验证超时,请按 Enter 键重试!{}", + "05d673d467b6e721ff5ee92b285e5072": "私钥验证失败,可能是私钥不正确,或者/etc/ssh/sshd_config配置文件中没有启用ssh-dss私钥认证类型", + "cae18886e1496f99e56fe64dae2a0947": "身份验证失败,请检查私钥是否正确:{}", + "7e850998d3cb8c4dc8b204766721e846": "帐户或密码不正确:{}", + "dfd29171bd018b7352abb2cf085404fd": "用户名或密码不正确:{}", + "8a857e7b7b8835de19ffb7404445b30f": "不支持的身份验证类型:{}", + "8f4a5b1853e2c68682303a3ac016e97b": "导入成功", + "bb07cf4e0082f6181204bf785e625924": "导入失败", + "4e19c797e19c111b1fad1470cc2c18e3": "没有可导出的命令", + "bd35e8b82c9450d88a62a318773a2244": "导出失败", + "e7e807310035d5b348cbf55c28df2968": "获取worker RAM False", + "efc33dbd7910fde6ce3fe364a7d43bfc": "rsyslog配置文件不存在!\\n请检查是否安装了rsyslog或者/ect/rsyslog.cn是否存在!\\n如果debain系统没有安装,请执行:apt-get install rsyslog\\nCentos系统请执行:yum install rsyslog", + "a6fba111c7d0f418059856c4160b4d0d": "参数不正确!", + "62dc2bbb0528fe87522c74b113883a48": "指定的站点不存在!", + "4675bfcf662ee236a05dcb763cf9d520": "Apache 缓存设置失败。请检查网站是否正常运行!", + "0b9aca52d360d6f7a8f2c5c897c93005": "Apache缓存设置成功!", + "a2cd28fcd32e92be995b2335768fdea3": "Apache 缓存目前仅在 Multi-WebServer Hosting 下受支持", + "b288b8637582cc38c1d4c902ed03cbec": "缓存插件安装失败", + "aebabb72ad41fbe46f73abcc9dc00b9f": "缓存插件激活失败。请尝试手动激活然后启用缓存", + "3981bd44ca3f1d5abafc6b15ba8c7435": "OLS缓存设置成功!", + "3777f748e5535e7e38261b2e0afc8274": "OLS 缓存配置失败:{}", + "93916600bce5b19586cbf51d558b5d78": "请检查[{}]格式是否正确例如:{}", + "8e342838d5cf3a93e34956c9550db4d0": "部署失败:{}", + "dd2b16eb608e5838d556598d479e9264": "等待恢复开始", + "9bb70ddd7b082fbaafb0b47a989b5cf5": "获取时区失败!", + "38f40438a6c7e12eca9b4ea2ad297b3e": "置顶成功!", + "257ee5f5c18f04e3a83fd18b33babf08": "请输入未固定的ID!", + "c6afe11bc7f565bb0a423883101ce67f": "查询失败:", + "403470819fb903a95a8fd9a22b01a3ee": "CRONTAB_MONTH", + "7207ebce07676b20d98ec74a0ff65c77": "每天对 {} 执行一次:{}", + "4f4ae97ac3a0f45ef67bda70d5e4fe0b": "每 {} 天在 {} 上执行一次:{}", + "82dccd8eb88a5611e453cbf6f25fa90f": "每小时每 {} 分钟执行一次", + "a84b2e49920d839395e3f93812f9ac03": "每天 0:00 开始,每 {} 分钟每 {} 小时执行一次", + "41924db412ce09aa5ef5c9f1f9c88ee8": "从每小时第 0 分钟开始,每 {} 分钟执行一次", + "45abd276fba3519ea010cb5b3c44a484": "在 {} 上每 {} 执行一次:{}", + "06ce21d9c603152315f749e19fab3148": "在每月 {} 天的 {}:{} 执行一次", + "f2fc5ae4c94a95a754c58b15197bc135": "每 {} 秒执行一次", + "eb8cb9c97e5888beefc46d6c0645ff4f": "启动并执行一次", + "7b9732c358c4e407030aca56ccb7a72b": "没有找到对应计划任务的数据。请刷新页面查看定时任务是否存在!", + "fff2eb19d097654514fc97c4a6e6d233": "定时任务", + "64e1288887b58a1c65d05676f7197477": "修改定时任务的状态[", + "ef1a7595dfa94a12b47bb18d3ac94313": "该ID的定时任务不存在", + "1844e0f52715901c376dca67e5742aa9": "写入定时任务失败,请检查磁盘是否可写或者是否开启系统强化!", + "5a7b17945b660284bb813be218c04c71": "{} 设置失败", + "5e7205744bd38904dcbc7c0b77456fc7": "删除 {}", + "140fb31d1756ae3c75b297f0c17f8b24": "类别名称不能包含 HTML 语句", + "e5e2e32bece629fcba864f7f5e8df60f": "CRONTAB_TASKNAME_EMPTY", + "f3b898619b284003475f2039ce53968c": "修改计划任务成功【", + "72a21489a541757ee98b54790e5f431f": "修改成功", + "92f1227778f186dd8c5f6cae42f5285a": "已成功添加计划任务[", + "5a3c3438dbcadf4a0d59858f17a8522f": "任务日志为空!", + "e8ab4d6107eaf37c98f250be20f146e1": "任务日志清空!", + "a0d347c48839cab209fa3827c667a5c8": "删除计划任务", + "46039515107ea576bdaf75935b8b5f0d": "删除计划任务:{}", + "d5925f01eeb5596fed21f5dae6ffed30": "CRONTAB_任务_执行", + "72bf657fef1eeafa1c8ecde5e4c06405": "任务执行失败!未找到匹配的任务记录。", + "8804f9a6882b09397bbc0599ba59b7ca": "任务执行失败!这", + "e9ca7bae70907408382135107fb85a13": "下载失败!", + "272892ac18608e0a1ad6bf080afd2e51": "清除成功!", + "06511118622e143af60d10d0877c9a3d": "清零失败!", + "424a90061acbe105658b97a0d86a4de2": "请输入文件名!", + "14854122a7fb5958664a8d840dc0bead": "请先安装webdav存储!", + "a027ff0717f56bf016b2f023d92e0c32": "没有找到对应的文件,请手动从云存储下载", + "f7314eff61e017245b088eecfee0c418": "云存储对象未正确初始化!", + "a09c248c44ca9548bce41bc3e79b400d": "云存储中未找到该文件!", + "9b23d05e4cb1d3ee22dd3dd7212817ab": "分类名称不能为空", + "fade4a03622ee745aaf87044d697203f": "类别名称长度不能超过16位", + "c875cf8f63d81c7fb198018d5c4bfa79": "指定的类别名称已存在", + "f66442d89b8c613c082425a93b417695": "指定的类别不存在", + "caf573e6b4299b7f60e24635b0295e9d": "类别已删除", + "9133e7faf0b9fc202294e495163b1ced": "名称不能修改为系统默认的任务分类名称", + "a3ee2a93b0a298de033ca1b784f62f04": "不能设置为系统分类或默认分类!", + "f300a6ee81c71057acc7beecdaf472c7": "设置成功!", + "290435bc045f16e4d099d721b7f706c3": "设置失败", + "8d49c76279564d3127e45cae01976d37": "/tmp/cron_task_data.json", + "d7ee2f4d054a35aab002985b80644f24": "导出失败:", + "1cd20eabfaa5ad5793b4075f976bf475": "无法解析 JSON 文件!", + "205904d76b14dbdb456fc2a2997ba5b1": "JSON文件内容格式不正确!", + "f63f66d08d61a3b16c11e0dfce9510e1": "已成功导入 {} 个计划任务", + "414522bb8a68d31211190865a1cefdd0": "请选择导入文件!", + "8342696568c9b58f16cf29e2492cddea": "导入失败!{0}", + "51b34794854788b7e5eb8c3a8fab0242": "请传入时间参数!", + "860f363ecfcf11c8740b9068152b910c": "系统临时关闭加固成功!", + "acbe969acf9b4925e963f102f3430f84": "系统加固临时关闭失败!", + "14a7c9c4ed221e7b3234de80bb8b9ef9": "成功启用日志切割", + "15af2c7a6a5766d84ad8c57c5d2fb0dc": "成功关闭原木切割", + "636cccf0b373acec35770f9f26710396": "启用日志切割失败", + "bd6df8255e394034ebcf93fcebfe06d3": "获取失败:", + "90a80c8e64ee80e8577c44699b6faa7b": "创建计划任务{}失败,请检查系统强化是否启用或磁盘状况", + "796b4f2a019427bc554ef1166faad8aa": "关闭成功", + "f222f6f9531a00476e39863b53bcde07": "打开失败", + "52d812a7c0b57b35fac4e668122191a3": "脚本执行失败", + "f804ceef9dd122e198f13357be514e41": "自动备份数据库[全部]--mysql", + "26e64121956b9e7e55244a508f146864": "自动备份站点[全部]", + "5ba45db78c10af9d2c688a5ccd3cd81f": "无法写入验证文件:{}", + "0dbd3323f74314d1cf85c7db5ac2fd1d": "当前IE浏览器版本过低,部分功能无法显示,请使用其他浏览器。或者如果您使用中国公司开发的浏览器,请切换至极限模式!", + "47b1cbb355da8faa6415f12c96469ba1": "连续20次验证失败,禁止1小时", + "c77d5ef44d6a21abe99c3e370a0f5364": "参数错误:优惠券_id", + "1cb4143e9dbb7515e606ab6854578a00": "参数错误:cycle_unit", + "2121d979fb82aae9f0a62572bf36217f": "接口请求失败({})!", + "287e14ef978fb00ce99942e799c36649": "缺少参数limit_time或参数不能为空!", + "8feb15ff2883086bba98d9d791d10bf7": "时间不能小于当前时间!", + "e9a08443260e6f3b795eb57419a6ad77": "无法链接到云存储!", + "749707db319ac2fa02785c1bdb58083b": "错误:sshd config 配置文件不存在", + "80b695b495da54ed6a76eac8a965bc7b": "成功取消登录报警", + "40d3b22b13a0b11ed727aa257e2228c0": "消息通道未安装", + "87597848076b873c1a9bb9ffea64950b": "错误:sshd config 配置文件不存在", + "bdb119e343438b628e7ba8b20e4632ed": "错误:sshd 配置不存在", + "45de64a88b25b6527ccd3efbce76ed3b": "参数传递错误", + "387e90104fbc0261c1ae5db9443f0b22": "将 root 登录方法设置为:{}", + "0fd775e0a957d247e199d2cd911078e8": "密码不能为空", + "2279ae228c06ace23e59cc218f2536f8": "密码长度不能小于8位", + "207d2e497f2ca0d97f1453671d4d824a": "用户名已存在", + "e1c5fbbb3782936fa209244fcc62ea7e": "密码必须包含字母和数字或符号", + "4c94c49ecaebd37c52172946778fc296": "设置失败", + "492478fa7955b2282528aefe56d42ec4": "个人资料不存在!", + "71804f43c7fe50a625e9fd1f930365ce": "无法从云端获取!", + "46fb7ccd0be31ec840d524d8f99f1368": "更新完成!", + "d631f73db41ac42021c522b61fba3274": "无需更新!", + "11ce17a8cf1f195a0687c00fc4201d2f": "导入成功!", + "d49c4e6f0a63eb94dfb921be5d804e8b": "网站不存在!", + "0b5efcfb8a290faab14ebce65ece59e7": "危险网站根目录!", + "d747c3e10f8c5fd5c0aec8b422883292": "指定的包不存在!", + "22e806afb25ddcb6cf205be320eb2350": "安装包中找不到【aaPanel自动部署配置文件】", + "7658d0092e96ef38859c12f2a91f641f": "目前没有部署任务!", + "f5fa57ce44938aa510e6cb68bd52c24b": "无日志文件", + "1bb87a5feb9e217c858933afdce8f4e7": "日志文件太大!", + "21290da79237752afe963ecef5d89b5a": "开始扫描成功", + "8e0e316031928c8c96c94ad6d57bd03e": "目录未扫描", + "9208374e1391bb886971bad99b2380f1": "类型不匹配", + "580d97d0b321127650cf1901cc3524b2": "记录不存在", + "152b976545ff1ee50e0de21da7af1266": "验证正在进行中......", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "参数验证", + "80f9a0a476836be5fdec10fe414e88a9": "{} 网站正在创建....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "创建网站", + "8a9535f05c52e58f46e3237b9da019cc": "添加可选配置:数据库、FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "添加可选配置", + "2a5e8b7e4116ee81db89ba173f60bf90": "参数验证失败", + "2f35a151cc0256f0d9ad5410eccbe5d0": "参数验证失败:{}", + "af2a8e2174ea327f9fbf77d84029d58b": "参数验证成功", + "181fc26e7b655ba36b3b075ca1ebc350": "创建网站失败", + "7118aff13541bf3d74a9c47fb458e102": "无法创建网站:{}", + "be33773093fc2e135ba4bc26f4bb5509": "网站创建成功", + "505a83f220c02df2f85c3810cd9ceb38": "成功", + "8d823a9933eefd02bf1003481f816f64": "失败的: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "启动成功!", + "31b88b436695f7e0bc5dad1cb8999737": "不要使用面板服务的端口!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "端口被占用或者端口范围不正确!它应该在 100 到 65535 之间", + "7dde7f2ae7cb4ed56b1b683b479ad303": "警告:尚未安装 {} 版本,", + "839067817c5a1e7fcce2f905284d630e": "重写源目录和重写目标目录必须同时填写", + "4b6ad864ce62dac8466dde7ec62e7ea9": "重写源目录和重写目标目录不能相同", + "ed6fe3e47d3686c7af83b67535b426b5": "重写源码目录必须以/开头", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "重写目标目录必须以/开头", + "fa5e4af74d3d68ba371e6dcf84595c3d": "该网站不存在", + "45f9a99535dea651b8f160f6cf23f826": "读取配置文件失败!", + "5e3b84200bea6d70f6fed1d5802a7fa0": "查询失败,地址不存在", + "5fa721871e93bc4121df74ce51454519": "激活插件失败,请稍后重试。", + "9f139adb77c26c263ff2a956d66f80fe": "停用插件失败,请稍后重试。", + "f8e169b0ef8d58f84c71e375141852ed": "创建集合失败", + "e35ca748f8c5a0e78731bae94fb7d68a": "删除集合失败", + "468baaa7179c8b181d1de35fa00267e9": "设置项目的类型无效", + "a01e808b2be07634b0e3714bff919ae1": "无法从集合中删除项目", + "35c9b2817b191a3f60553d46b748068b": "无法更改集合中的项目状态", + "87a9a388a3ef42018ceb866756c4ee39": "数据库连接失败,请检查数据库状态!", + "73b1d7767613c6300db27ade773369fa": "删除 WordPress 远程站点失败", + "a75c113f53d4342010d140325fa29eec": "网站多业务已开通。", + "b0a517b4d596e5fc1351f8dc12e73a74": "请选择保留服务", + "7e953c855b391ac0716a4eeb47c5c5c3": "请先启用多项服务", + "55d523aa501b0e7e93e172a9e6829a8a": "获取nginx版本信息出错", + "08f18bb6c6293307f68d5f822ed7dbe1": "目前不支持openresty", + "45020a62e40bbb43f6e05c62ad50288e": "已经有安装任务了。请先等待完成!", + "4052df86d5a8dd12943cc8b1d53162e4": "服务安装失败。请再试一次!", + "8033c09e6fedf841205b29b57c0ae0d1": "服务启动失败:{}", + "442d02a722dc331f8b85d328fb99a174": "多业务模式已成功开启", + "a0b289e4caa220dcd62692401d5083f5": "无法卸载 {} 服务。请再试一次!", + "0045406cf97cbdca708c795aa9554145": "{} 服务未能重新启动。请尝试手动重启或检查配置文件。", + "52cd203105425f66daf42d81f05c540f": "多服务模式已成功禁用", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "服务重启失败。请检查apache配置文件!", + "a949ed64edc73a99f9f9c801a84b6390": "指定的服务类型不存在", + "408f206d494c5f26144f7492315dfa21": "批量切换服务时出错!", + "e9fd26be1a67520e66f2e99d61977c32": "网站ID不存在", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "当前的网站服务已经是 {}", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "修改配置失败。", + "98e762d03fc5ffcb381010aff10c7bde": "已成功切换到 {}", + "293f667205bd8aa91c72f966c03c3de5": "获取的网站服务类型不正确", + "8562d96fc303411ee017a30b83d75712": "修复成功", + "d9d76120c8c13b40d2e8e49b0d6117da": "多服务出现错误,修复失败。请尝试关闭多服务,然后重新打开它!:{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "配置文件不存在", + "c8622023712105e9e7328396976a2667": "备份的配置文件不存在:{}", + "d81f83ae44da0682974272b976e8e550": "成功康复", + "12572c9827392d4bd4c028881ed06242": "网站存在全局代理或 url 重写冲突。请删除它并重试!", + "92bce01ab77d0d50efec1d424cab583b": "该网站有反向代理。请删除它并重试!", + "30c74a0981da2edec86936cd288479f7": "网站配置了全局反向代理。请先取消!", + "c3fe8f7adf26d613d9593acede34303b": "网站配置了子目录域名绑定。请先取消!", + "8a09aa6b7131f71b3ba97f13d5b7823f": "指定的订单号不存在,无法续订!", + "72905fe72d071dffbc0c1a20eb8def87": "尚未找到有关此订单的信息。", + "0b033e06e17e9fb14f93e6f11eed6599": "订单已过期。请再次申请!", + "3497d17853f8a84d0b552dcea4fabad2": "未找到该订单的信息。", + "972f14a9afdebc7e5b366f465171776a": "订单已过期。请再次申请。", + "1008d1a5b18463e45c0bdb930bc0087c": "未找到该证书。", + "2e95d6e834bed89e1e199808d0cfd8aa": "请在--path参数中指定网站文档根目录!", + "4a8d983505848031c77a15c408cd1f3e": "|-重试该命令", + "ed069811f3c302d22a0f4aafc6903826": "|-用户放弃应用程序并退出程序!", + "daa9a175b001e007de4d7ca89ec19aec": "无效的节点类型:{}", + "abb41b16dcebff17c55d75000fe3cabf": "自动化无效", + "e9d2603582f4a20d640b8e7d3b3e08b7": "无法在运行状态下编辑自动化。", + "d2fcac4ec8e0f366bff10d45d37bb3d3": "Automation_id 无效:{}", + "d171abccfa056d262e7e081b84510c4f": "自动化无效:无法加载触发器", + "ae3ff0ee4b1a6c1dfe230d9b15a4d4a0": "无效的自动化:不完整的触发器", + "cb665b2511490edc2ed27b86d38e0828": "您必须完成工作流程", + "0fdf6b21eacd19ce746639f1c4613607": "end_time 必须大于 start_time", + "18fc7ff48f030eda26c7446cdccd441d": "无效数据", + "dcb3fc2a35a17abb01744383ebf3cdc4": "无效数据-2", + "7122d35c3532d63c8d9fc5c5bd320558": "获取订单列表失败,请稍后重试!", + "079217f7bb63fed72af9bb79048e3967": "'*", + "b3248ad84a12659b1599607f969741a0": "CloudFlare Dns 权限必须是", + "0ad00e6c415af62cdaa8537c32574052": "别名已经存在!", + "9c82954b2bf15dc7a9462145d9782aac": "请升级PRO版本!", + "3a306f42856e51481470e9702cc22169": "保存成功!", + "9758ed50c1e1816e1eecb98e0c3ed1ec": "删除成功!", + "4b9f49d0625305474bd478ed077bba0b": "身份证号为必填项", + "615df74f7d5141a1084369b9da4ccb4a": "未找到提供者!", + "4a9382b97abdf8cb5b237bf7d64873e2": "search_and和search不能同时使用", + "7d7d9ba1a8780278b2a05b91eacfb2e7": "未找到 DNS 记录!", + "8d49c4cd608eaa6d8d9a1e0ab6658fb4": "未找到 DNS 提供商!", + "79922b861a42a4e2350f69501eb25ca0": "未找到 DNS 记录!", + "39b361ca64471b92b1b1e84dee7d5226": "更新成功!", + "84e9feba40d0aed963505e503cf821e3": "更新失败...", + "8ef6a7854d197b829e350936856847fc": "未找到 SSL 证书!", + "02d59ec01b27b9b07cc92b56b4590690": "SSL证书有效期不足30天,无需续订!", + "c85411871b8773e799e64d0c23ef79d3": "未找到订单!", + "9dd5fcad400ad7db65baa55be5535d94": "申请成功!", + "3f5a9a220cd8c53770c59c4931beb2be": "auth_type 必须是", + "4fadb14ca725c013569fc00385d750fd": "域名为空", + "2a6bb1bdd798217656edecf672b6df3c": "Http01 验证错误,但未找到站点。", + "962682f10423a33a75f4b1277b3690c9": "Http01 验证错误,但站点未运行", + "fdbdc3e70ef01cae6ba7f67b34622aa1": "未知的身份验证类型", + "52357aa86932ebcc9ff6e741ef6244b5": "更新证书失败", + "2e54bae7cebff2ed29eee92ee852cf0f": "未找到 SSL 证书!", + "022c6efa50cd0022ffa66b42f08caadc": "删除成功!", + "9ecbde266be14f2c038c06f339f7ee46": "未找到 SSL!", + "9bb50ed8d9b14f51d1a44a423db43e6e": "设置成功!", + "049734a8ec5a38304b7e0dff089b05fe": "部署邮件", + "6df4bb58ee6967a48b38e093858091de": "部署账户", + "ec220f32ceb0ad39d785439e3d442464": "部署面板", + "7f689dbbf6341be1e07e8e96d16b95db": "不支持通配符域名!", + "2ac3f96d3c4f34f9ab7627bf5f1fb444": "域名无效!", + "8346bf5e43bfb945866b734da5e365fb": "域名为空", + "f53f8d0c6e47f742892e21dc6d0ffcba": "防火墙未初始化。", + "7aa738bc7717148a9518c0d37e0bdcc2": "安装。", + "10cf4b73623a047cd8c039899a68678f": "防火墙未打开。", + "f2ec5e710cf0c84fd474abdc993360e8": "已创建防火墙初始化任务。", + "98dd43dfae05b11befe1f140e0ec787a": "已安装", + "032c6f0f72bf846bf80205f83cfbbfdf": "目的域名不能为空", + "d3e42cf08c9dd4657e1ec738bcd7fa4f": "目的端口不能为空", + "2e983c6be925499dd08a349a82f9e215": "目的域名格式错误", + "2101cff923c114c46970531cebe61e9c": "域名:【{}】解析失败", + "484a79b99ea7c89818e54bc86611e0ab": "请传入id", + "8bc83520b9c5e0cb6a83e1cf6961cfdf": "设置成功,但以下规则设置失败::{}", + "373ee51dfa98aab065593b352f395b59": "目标地址格式错误", + "26fe283bcf5841270188165305b2f876": "目的地址{}已存在,请勿重复添加", + "4b8abdf7e8565603bc0b09534e1c53aa": "设置规则前请先激活防火墙!", + "50c7672327d3879977f1672bac1ee999": "目的IP不能为空", + "b9c6715ad1caf1dd7f933c42ab63707a": "请传入old_data", + "842a116f755d53aacda61c8d5b90125e": "请传入new_data", + "edbe2ffb112ecc945237a594ab786679": "修改成功", + "f94b62cff0c45cb08b61da3ca2615d72": "文件不存在", + "0976b2102c7a8af33f04ab2059e997ca": "文件内容异常或格式错误", + "774b94869c0844749626b1bf637fafbb": "源端口不能为空", + "e9b371dd7b29cd7373c524d880b031fe": "如果规则已存在,请勿重复添加", + "13bd44b7e23ee792948ec122677bf1b3": "规则设置失败:IP 地址不能为空", + "7f6cd3026825eae0d35775a932e0fb46": "无法设置规则 不支持的 IPV6 地址", + "bbc83d63860d8fddbe9b5f0769f8d108": "规则设置失败", + "52de0a29b9e9289bd6598a5d4610774f": "规则设置成功", + "40e79165af94fb353f73532550d50dbc": "当前系统防火墙为iptables,不支持设置状态。", + "7f643aa5c0ac22eb56b8e0283a245537": "当前系统防火墙为iptables,不支持停止。", + "759cbd156929358f44fea3d7a2303d12": "当前系统防火墙为iptables,不支持重启。", + "9eeb5949442ea424abb29b42f4f3763d": "当前系统防火墙为iptables,不支持重装。", + "6fe3c8f7481574a858f4c4e3dcb190b8": "无法设置端口规则:{}", + "cc84ff9fa77f59978d67ebe5c21c4cc6": "端口规则配置成功", + "5fb5bec15f0680c0f8281e2a77f01564": "未能设置规则:{}", + "202ed89223bc105db8c706695994099e": "规则设置成功", + "31bdde170e92eb68e5cf19070a0257b2": "无法设置端口转发规则:{}", + "14af00e29f1c7f276529a7f13d37bcf3": "不支持的表名称:{}", + "37859bf15c1d49002153157ecdd4ad45": "规则设置失败:{}", + "9fcd0fb925f2f1f9fc5157a937c1527a": "规则设置失败:{}", + "9ef9f6bcb8cd56f9b4d8be162918810e": "无法启动防火墙:{}", + "afa08ad3f9767240b0219e668944beee": "防火墙启动成功", + "bc1ad4532116f7e179339e07a39be1a3": "无法停止防火墙:{}", + "50ac40822152a67e4195c04488aa7129": "防火墙已停止", + "c8b9e1198399365ab380361c761ab78d": "无法重新启动防火墙:{}", + "04105f039f2850a3472f9b79c7ae5111": "防火墙过载失败:{}", + "2be1a57d150c047f0c5d936a904d884a": "无法设置输出端口规则:{}", + "af95b488978d644c7ef7b4b856def666": "输出端口规则设置成功", + "194fbdb576220abe3bc3ae3746af89a7": "未知的策略参数:{}", + "f006b06691ecd76b8a34e2825c17b6aa": "未知策略:{}", + "55bbeb07229c08c530c5119918035594": "输出规则设置成功", + "8be2d40f6fa3e12c46ba68bfb23951d1": "输出规则设置失败:{}", + "5d6e1e45c8d58b5f2800aabe961be7e6": "账户服务未启动,请先启动服务", + "9f570fb82d621c780cae5d4a3b7b21fa": "启动成功", + "d6fd80e8f386ec01318ebbd911b3cb8c": "启动失败", + "54b737c15ee80b356bed65d1e4bbdf11": "停止失败", + "ca5ae41ecee3659791384fbb49c573f2": "停止成功", + "f9458b55789fb6b79f107c061d9050e0": "重启成功", + "ce070d796c159496ab8253cc60891b9e": "重启失败", + "ca0431c082d8980ad8a7fbfff9a3cc4e": "重新加载成功", + "f61bf123501eb5094cd6782409088c6f": "目前仅支持 nginx 作为 Web 服务器。请先将Web服务器调整为nginx,调整Web服务器时请备份网站数据", + "01b4fc496d491eed58270beca1664e66": "安装脚本下载失败", + "b6bbb24d50175d3a920095caccfc8cc7": "任务已经存在", + "22e6df6f7a837552a50ec27a63418a99": "安装任务已添加到任务队列中", + "01545ec6a6d49b956f303f9ac0f7aeed": "升级成功", + "f43df7708267595d8c8ee27cca2e25c7": "证书内容不能为空", + "749c4e1e3720c1aa28459dd4953cf782": "请验证证书格式和内容是否正确", + "5e6ddd918845e96916d903a667e65da6": "设置成功", + "9aad9a87ef3911e202093b08b2f570ed": "关闭成功", + "b4987b794be5974dd020719b9c1d0a41": "不支持 IPv6 地址", + "793f2b3ffa18b3513258114b0216cb7b": "请检查主机地址是否正确,例如:192.168.1.20", + "af8d2d8e000adaed48feb1c1502cea6d": "抱歉,打开失败,请前往App Store--企业防篡改查看详情", + "e9f9d8e8358b9291af5e41417184ddd2": "成功添加文件保护", + "c4faf633a3fd32e8b5d8138dbddc1693": "无法打开防火墙", + "5ebd3aeb7b2c96cf6c64f82bfa333f02": "成功开启防火墙", + "82d883f528257cbc522de7531411dd53": "关闭防火墙失败", + "5aa742d86e112c414eb5970e1352719f": "成功关闭防火墙", + "b552849e09b4a47a87641523cb99e06d": "没有找到数据", + "55df5f27012531e176be79f81b90d779": "删除成功", + "785a530106a46c897769c1cf2df6c2f3": "启动成功", + "274fbf19776d1b6efee0e71f075739cd": "停止成功", + "81c5f87b76468dbe7a152121fee71663": "没有多余的日志需要清理", + "12af24fd6d32854160728cffa4ea2150": "没有清理成功", + "90b0ccf9b077f2cadeef3daaf17d86b8": "防火墙/墙有 {}", + "3d2fb8221a478c63e13b494d7279e2ac": "添加成功,{} 端口存在相同规则,已被跳过", + "fc66f87cb8d92e3caf13485d65ecc309": "操作成功", + "9a321cf078154e6594a8a29fb7847738": "请先安装dnspython模块", + "2463904b74dc3ffd3fb849f87a0e3a3a": "文件内容不正确!!", + "7a3f417adbeb8a69180134c6f2373c36": "文件是空的!", + "29b89ed8f1aa15665f877c12e0d14bac": "导入失败。规则的格式错误。请按照导出规则的格式重试!", + "002827869c69ad72bc41ca442547bbac": "取消忽略规则成功", + "63ecd16effc3eab31bf1eec574ece639": "解锁成功!", + "fea087517c26fadd409bd4b9dc642555": "普通的", + "9e1a9b35939cc4887854eb2ed84f401f": "数据库名称不能包含特殊字符,请重新设置。", + "90299d1fb53fdf7a570db71a1b61c127": "请先设置PgSQL Root密码!", + "01d3922e30b7aff9c7265e91c57cc829": "ip格式不正确!", + "b2349e65b04baa3a0d50ad030535b73e": "您输入的内容不合法,修改失败", + "932c4edd1a70a505be1099f4e7874692": "修改pgsql用户访问权限成功", + "f562938bcf2a52b32261e4f4a99c3e00": "删除失败!当前数据库正在连接中!", + "573ba454733eee7cd866addcd11ea21c": "删除数据库失败!", + "fec7dbd4f36266728d6eda5e168d1cc0": "数据库不存在!", + "69579eb94ffe47354dac42abc8cac9d1": "数据库密码为空,请先设置。", + "fb642275547236f1fb2ea7717ace26d8": "请先设置管理员密码!", + "699c43a1633256e97b95615a562eef88": "数据库密码为空!请先设置数据库密码!", + "67e943332602d7a5b9765306caa8604d": "未知的数据库类型", + "04c651a70b89bd4fd8fc8702c0bf61e9": "数据库备份失败,导出文件不存在!", + "95abdbd5890c3ceec62026c6246d8030": "备份执行成功,", + "7307a92023c68b6842a8dafb1b500f16": "缺乏恢复工具,", + "bff09c8822165bf816a5b5a4d1fe9140": "导入路径不存在!", + "3d003d1417aec658cd020f9faf66a5c1": "仅支持导入 zip 文件!", + "eef4302ce8a129e5d70767668a9e9110": "请选择sql、tar.gz、gz、zip文件格式!", + "aae27fc3d2273773edab02e15288cb14": "数据库同步成功{}", + "e1a4b8afc2cb3f56f0c98876c06d6d58": "连接数据库失败!", + "c5aafcc6af38d67c22ccc8d19f60ed0b": "数据库成功{}", + "a8de1650a48acf0e91c7ba840bd48295": "数据库密码不能为空", + "9a53422dee5315eb489d4e448f4ea976": "修改失败,指定数据库不存在", + "3ca4ea8082e41867cee227d4686a4c17": "数据库密码成功{}", + "0033a9566af4f930bebbd45802be5427": "连接失败", + "0b46bb64ce97c64f6dddc87bccf949e8": "远程数据库信息不存在!", + "ae576ea2a8c76765fa69287fb1347d1a": "远程数据库连接失败!", + "df5647a7421161dcbda85323db41cc99": "数据库同步成功", + "2a52f6106614dfbd519714df03ebb16a": "数据库成功", + "1182c39d730924cb4f4d8d229fadb0f3": "数据库密码成功", + "15a8af9e80d0a0c2d87314c154fff181": "不支持redis集群!", + "c2dafded2689dc11914376d72a70dfc2": "redis连接失败!", + "b283988bc23c61b2e6393195064ccc5f": "操作成功", + "a9ed7f25ce1ffcf98cf5ec7db86abdf4": "目前不支持备份远程数据库!", + "1fcdee5d4329f1f638bc2d818f3e510a": "找不到文件", + "517b554160a14e74d52943ea29ab5a66": "redis连接失败", + "ec010eeffc0a20399b186f334b3b6769": "远程数据库连接失败{}", + "2322848a32fd761a98a0bd76e633bc97": "远程数据库信息不存在!", + "eacd845def6fe750cfc0986f24565045": "本地登录密码为空", + "a18fb7f91f74b73e7326700913e7e35c": "指定服务器已存在:[{}:{}]", + "079d7d1539d30a76e53b6fb54d370d32": "添加成功!", + "72bfbe1d7dd57250382b570043041e82": "添加失败: {}", + "270b19b2e9da5da821c7b54a1a8d7fd6": "参数传递错误,请重试!", + "ffcba623cf91331a0ba5b3ab969db1f9": "删除成功!", + "43bf15425909c99f2cc1553eaffaf476": "删除失败:{}", + "0947887a435eff51a71f1e54615af33c": "无法连接到数据库 [{}:{}]。", + "844eea2c94a872941b4e4fe66c92c659": "连接到数据库 [localhost:27017] 失败!{}", + "90b65217be3c698d9b1fbff0dccdc71b": "mongodb服务还没有开启!", + "7d1a075632098426af1e2197d274bdb6": "数据库名称不能包含以下字符。/\\\\.\\", + "48b2c30b0f984cdcc6cd7ed4ee376fdc": "数据库名称含有空格,无法正确添加!", + "93efcc7fc4e9d402978828bacd4a5bc2": "数据库用户已存在,请使用其他数据库名称!", + "393223cf51f8e25df5d53ae425de74a9": "数据库不存在。", + "2162130c1a1937f839cc660f5e70ebdb": "MongoDB服务尚未开启!", + "45da541afaa00457a2f4617a1dd4855f": "由于 Mongodb 限制,禁止删除管理员名称数据库!", + "2465ac13d0470c6414b77dc59fbcdbbc": "缺少备份工具,请先通过软件管理器安装MongoDB!", + "d2af5fe1710856e97dbfdf1adc6d5e98": "缺少参数!ID", + "9c17c1312620910f7c3d27a20f01e968": "数据库不存在!{db_id}", + "57bb958a6998e558b00b5d89d240b240": "目前支持bson json csv格式!", + "3b4ee1461f518d1bd1ed20615d670df1": "导出为csv格式时需要指定导出字段!", + "d2c7790b1f776ce6ad06426b03fa71b1": "本地登录密码为空,请先设置数据库密码!", + "1acdae1719cee0ce5c586cd6995b70a9": "MongoDB已启用安全认证,", + "e880101cd795726a7c8e2c2f4033f9dc": "备份失败!", + "94b43778dbd724133db47ee2126da3a9": "没有同步数据库", + "164c5fa905dbffad015f4593d1b85fb9": "数据库类型sid需要int类型!", + "3a621b20dadc66881772503620282533": "数据库获取成功", + "505a6be34cf7e61f93f2665896cfafaa": "修改失败,数据库[", + "13966ea12f4ed389be50c95e65d8a2dd": "数据库密码不能为空或含有特殊字符。", + "361cbf31511a2bf38fc664157d183328": "数据库密码不能为中文,请更改名称!", + "252d8cfbb164b773c5f84ce9d814ae3c": "修改失败,指定的数据库不存在。", + "aea43e9b982f6105e584e46b778d9f9e": "修改失败,数据库未启用安全认证。", + "f9be861aad3eda81843c7797487da8e9": "当前系统安全状况良好,不存在明显漏洞和风险", + "890e24b14414e3da9bc2ad63d6d0befb": "系统存在一定的安全风险,部分配置或策略需要完善", + "951c23a91dfe39b5ea5d00405b4dc2c5": "系统存在明显安全漏洞,请及时修复", + "de36cae19b2a65a45cb4dfccb435530b": "系统处于高风险状态,请尽快修复相关风险项", + "61dccc90b62286cfe99a0836cd7016f4": "项目目录不存在!", + "393f59f008214da917a3644f9bddd08c": "指定的项目不存在!", + "76f7795cbd69658732375d59e3ac4443": "项目目录下找不到package.json配置文件!", + "da87ee74f07713dc1fb6d97d770c6b9a": "指定的nodejs版本不存在!", + "53dc11c67093dc8650a2a0bcc739af9e": "请先安装依赖包!", + "9e37cac0b6ac4947a8eaab9c4741d096": "指定的模块已安装!", + "a23324d67a76505b9485e1925b49ce69": "指定模块安装失败!", + "e175807189b9fed334d7fa1d9517e302": "指定的模块未安装!", + "7d837b25ee483c045c3d27e461661024": "该模块依赖于其他已安装的模块,无法卸载!", + "a06864f6c23b22710bc49fa3794247aa": "无法卸载该模块!", + "3378916dcc3a51351a823bf417959965": "参数类型错误,需要dict obj对象", + "2ab730bc17ad482c454d62e5d6dda728": "请先安装nodejs版本管理器", + "683eecd5ab2302a02009bb53528a8206": "项目名称格式不正确,支持字母、数字、下划线、表达式:^[0-9A-Za-z_]$", + "9360c6893e4ca4d7030d99d9ae4b34c7": "请先安装Nginx或Apache", + "999e1ffe680ef91f5cf9795c34aa7acc": "参数类型错误,需要dict obj", + "9f474c0c49ec1c30e3c19f13e9d2a52e": "请在安装至少一个nodejs之前安装nodejs版本管理器", + "9791ddabd2954257bfed271e0e7254dd": "启动命令不能为空", + "f8498a22f4e43acaae880208f0980675": "指定的项目不存在", + "26aa1657ebfac1237da6a1f8ccae86b4": "域名不能为空", + "8f5e21613d5cfe258f7965986f95b750": "映射的项目至少需要一个域名", + "bd397222b97310807e5ecfdcec2c30ff": "指定的域名不存在", + "8f04dfa02fe0ef0106680e1a3e9f1759": "项目不存在", + "64bc3d77e07e9e2757509ce626273a99": "请在【域名管理】选项中添加至少一个域名", + "7514fe0af7b6f84f1c3c0a01613010fe": "请进入【模块】点击【一键安装】安装模块依赖!", + "11382e970be52495256dd21192a671a7": "没有配置启动脚本", + "ef6b21f990d5f7f0a881e354a365063d": "启动命令被未知安全软件拦截,请检查安装软件日志", + "bbffcc99d1822ea57ca5e7dc614157ec": "项目不存在", + "53797f7f191af4c7851d0419ca27b334": "项目没有启动", + "f45bc552cdf8369ab9fe2213eec7b802": "日志文件不存在", + "ae178e022cf2fe30f402145572528de8": "卷名称长度不能少于 2 个字符!", + "9f9663b59d32947ff1f2c5b364c571b8": "添加成功!", + "365c770f123d22093084908ebcdc75fc": "卷名已存在!", + "2dc51ae60242f0e5b56a9f0d176f91d4": "添加失败{}", + "307feea9ab8928f39595316b11992cb1": "驱动程序选项标签必须是字典/键值对!", + "f529949f8a98615c109ee8b8eb9f7656": "添加失败!{}", + "2a0f93407bb61e2403ccd032cbc64e3e": "删除成功", + "a4ec5c1fa47f2ce0c875f91ea4e7dd08": "存储卷已被使用,无法删除!", + "11ff7153b67d275618dd3a62d1e56373": "存储卷不存在!", + "2aa70dad9bff94a855fdde3fc113e6c5": "删除失败!{}", + "55c31f03e88bd6ad4ce7f68d425648dd": "没有无用的存储卷!", + "86eb5f101087c690c1229fffceb97cba": "删除成功!", + "5395cc8155f62a666b8f0d0f9f207676": "存储库信息已存在!", + "9b10e472adfe6372c9175b9002f098fd": "[官方 Docker 存储库] 不可编辑!", + "5858be44c285048a8f51c126b2fd23e9": "编辑失败!原因:账号密码解密失败!请删除存储库并重新添加", + "7e51d0e26e1b467aff3c89d3e0751ec0": "编辑失败!原因:{}", + "6478f13dd58e5a4329e19be9020243ff": "找不到该存储库", + "d5309f3186607eb36bee41e8a28cea3a": "编辑成功!", + "9e20bffc0d4093d18fcbc5c98fa0fd87": "【Docker官方仓库】无法删除!", + "a62336a87697ab6911ba550015a798ef": "删除失败,存储库id可能不存在!", + "c28bc5c07ec6f2b56777ac7c852dd64b": "设置成功!", + "f2bd8f0373084151bbc07e8c1409e37c": "设置失败!{}", + "54197759827cfaf0cdb1e213fa49771e": "登录测试失败!原因:可能是账号密码错误,请检查!", + "657a0b7e82731fb4ae516d14081f17d0": "登录测试失败!原因: {}", + "65960a94c86ed543e6ecf9865cb7aab9": "检测引擎正在初始化。第一次加载可能需要很长时间......", + "2e2456601fd9b5e6a2f7345d8877e2eb": "apt-get 正在更新。第一次加载可能需要很长时间......", + "8c902642d409e04304c1b50daef221ad": "检测引擎正在安装,第一次执行可能需要数千年......", + "e4cf763784740f252924c589b16d4f25": "yum 缓存正在更新。第一次加载可能需要很长时间......", + "5677925b683b9c781fb956882c4d736e": "不受支持的系统版本 {}", + "f1f3e9961d2a46c83e8d226aa1cc1dbb": "不支持的系统版本 {}\\n当前仅支持 Debian、Ubuntu、Centos", + "938e7de7df2aa5efe531d693deeb5907": "正在检查 libdl.so 依赖库...", + "459ed27083c25b82135efedccaa60ada": "扫描 {} 异常历史记录命令", + "37c614d5d300e6c391808efd5363ec82": "扫描 {} 敏感信息", + "5ddc98a53573410c7cb65727946c5d3f": "扫描 {} 后门", + "6bb6be880d819a93af392183d16fccdf": "扫描 {} 容器逃逸", + "cd7fb7cf576b22469514b5b30f365158": "{}扫描已完成", + "acc2731ee0f5b78d4e801d2daf814c32": "发现可疑异常历史命令", + "3069c277261d044bb309e4b09ae798fa": "经检查发现该镜像存在异常历史命令[{}],该命令可能会在容器运行时向主机系统植入恶意软件或代码,造成安全风险。", + "6d64734fff5534f48029ffba4aa3678d": "1.建议检查该命令是否为正常业务所需要
2.建议选择官方可靠的基础设施,避免造成不必要的损失。", + "475dfbee8626a4d939cf631aad174de3": "扫描:{}", + "71c7dfa944a5a50f281c0acb232dcdeb": "扫描:{}...", + "0c29ac6d8e69451c80f8ef857e499ab2": "发现敏感目录{}", + "53872e73575a306598c0c4060b44181c": "该图像存在于敏感目录中:{},攻击者可能会利用它来窃取敏感数据或源代码,从而导致进一步的安全问题。", + "6fe56120a0502f9678988d756dd27682": "1.进入使用镜像部署的容器,删除目录,不影响业务
2.如果无法删除,限制对该目录的访问", + "6b2f9867ccd6f3e6f06726c06ed684d5": "发现敏感文件{}", + "6684913201a60be0b5e89c4dfb210719": "发现 bashrc 后门{}", + "9a9f27d5f9f8c056fff7986c87a94c30": "发现该镜像存在bashrc后门:[{}],恶意代码内容:
{}", + "d8a828116070b9d92315ca309cca1991": "1.进入使用镜像部署的容器,删除文件下的恶意代码
2.检查容器是否被入侵,更新容器内业务的访问令牌或账户密码
3.建议更换官方镜像或其他可信镜像部署容器", + "e1439f3f7d25d378078d513a82a3fa87": "发现后门文件{}", + "9ede9d4bd542eedf78e39b0acf0206e3": "发现镜像中存在bashrc后门文件[{}],恶意代码内容为:
{}", + "686765b4612ecd8f774648db29a1541d": "发现 cron 后门{}", + "390bdc0b3c37a56ede9467b0c220a3b6": "发现镜像中存在cron后门[{}],恶意代码内容为:
{}", + "caea084281a3cb2515e5618cd3856163": "发现系统后门:{}", + "d04061273caa56d5a0c3d74f3e9fd482": "发现镜像中存在systemd后门文件[{}],恶意代码内容为:
{}", + "fc76e0fe415c49cc1c09bf76035fc4e9": "发现 sshd 后门{}", + "00b2409f52ef5bc56afe29ccbe5cfa2c": "发现sshd软链接后门:{},文件命中恶意功能[exe={};link_file={}]", + "e747da31a54cd71fb1a2860cae0f9f77": "发现 tcpwrapper 后门{}", + "a2b09164c8d23894736bcc6a646861e0": "发现镜像中存在tcpwrapper后门文件[{}],恶意代码内容为:
{}", + "a7fd9f6b190b8531039376fbbda5f482": "被发现有逃跑风险的用户{}", + "5d46ed5f4af3f30cfcc8bd66942f93b4": "用户名{}可以通过命令[{}]完成容器逃逸,从而使攻击者获得对主机或其他容器的访问权限。恶意内容:
{}", + "4ca0a18aa36a60613104cacdae514dec": "1.建议删除该镜像或不再使用
2.如果已经有业务使用该镜像,则进入容器环境,删除/etc/sudoers文件中用户{}的内容。", + "611afea08ae3b216a34dfde4c143f46c": "不支持的系统版本", + "221d1ea3c23f430e03a4486dca865014": "该容器不存在,请刷新浏览器重试!", + "7e88e25ea6c628c2d03c526c04af3eed": "无法获取容器状态:", + "11cde3a2ca81c845978b98e4a6ec471e": "监控保存时间需要为正整数!", + "b314fb25bf654a2256bf53b0f6986c93": "监控数据保留时间不能超过999天!", + "60e46aeaed758964902dd7ae99858f03": "那里", + "1ba194462d31177d3db4ad6bf18fdbe5": "Docker服务设置失败,请关闭aapanel防入侵后重试!", + "422f78617d6852c41e370982d73235ed": "设置失败!失败原因:{}", + "dca5bd22c99a74f74074a3a53d78a58b": "{} 成功", + "be62f7640f2c5b730ba50ecc580ae618": "全局配置文件错误,请检查{}!", + "8ebe0b989b543cf96149811c7a1f3fe2": "加速地址[{}]格式错误
参考:https://mirror.ccs.tencentyun.com", + "ec1ec17a5862a949e277432e1d09484d": "设置失败!失败原因:{}", + "179a2001e96bb8d0475488f80c7216a8": "更新成功!", + "f4dc83b81fe6993f99c2b54494eeeec1": "启动监控成功!", + "af79fd88d4b6f7e8a1ac05e199747fdb": "启动监控失败!", + "6f4d03d4d1ee0bd282ea744730b7ceda": "Docker监控停止成功!", + "4cc06d8560bb116a38a5aae1458cbe4a": "docker-compose 文件路径不能为空!", + "8d885b86e8562c2128689c4a2601c054": "docker-compose 文件不存在!", + "7bdd4d85dda1275e2be709fd9e0d71dd": "docker-compose 文件不可执行或者不是 docker-compose 文件!", + "c28e19f0398bc1819a890878021836c1": "安装任务已存在,请勿再次添加!", + "a87b64b2d19f29438274f80ce36a3579": "安装任务已添加到队列中!", + "c1710a5899fa03f7ad5ea1945a91e4f8": "卸载docker前请删除所有容器和镜像!", + "d388487780fba74e4ff3f3b9ffbce58b": "可以卸载!", + "c4ba6d01fd53333a6e7e85707758c550": "卸载成功!", + "b7affa7cc663144bc99b9edb3f1a027f": "修复任务已添加到队列中!", + "cb49a4daafc9d27bd460967891968225": "保存成功!", + "739722f14db791bd300e08318a48ba59": "保存失败,原因:daemon.json配置文件格式错误!", + "58fcf0699f38a60c8025330585ac205a": "保存失败,原因:{}", + "720d2290c3082615c0f79894bfdcabd7": "请输入正确的I Pv 6地址!", + "6169a7282b361deb5f6f5b6e18f9426e": "cmd参数错误", + "286933a4f24bee0eed1f9300f70a30c7": "只能执行docker run命令", + "a46a6b274dcbfc5a629d234c2816a165": "有危险符号:[{}],不允许执行!", + "f1d9b154a0c2625d828a504a8cb35682": "命令已执行!", + "8135363a6a5e2c145c6cedab8ac1e510": "端口格式错误,不支持此方法!", + "3b825826968319b6256c4020cc49676f": "服务器端口[{}]已被占用,请更换其他端口!", + "70b35bb3bb2fe425a981e8cc68c06906": "请拉取您需要的镜像", + "e768fcd4ff22e2f3cc2535f1ea9c5682": "图片不存在!", + "7dc29c1ed7012513111b11f56c73a4f8": "内存配额已超出可用量!", + "73aff7a8ab244bc5d0d1448e9a0ae6f0": "内存配额不能小于6MB!", + "2c4eca852599890038970a7e0f384470": "图片[{}]不存在,您可以尝试【强制拉取】!", + "56a727f1edc5f008ee8f41a638662322": "CPU 配额已超过可用核心数!", + "45c163fd880ce5a21373fbd53bbcd642": "内存预留不能小于6MB!", + "bf6b8400e1726aadf1cee7d6c1c5d173": "镜像名称格式不正确,如:nginx:latest", + "f0beb6e739348ae10c9f15cb91638d2f": "容器创建失败,详细信息:{}!", + "e5d4020fc5f8c26e22add8db8a62f06a": "内存配额不能小于内存预留!", + "c68d012ef602a12e38636c306c10c894": "容器名称或网桥已存在。请更改容器名称并重试!", + "c4272ed0aaf1e7e2bcc08f1003c2391d": "该镜像中没有启动命令,请指定容器启动命令!", + "a73eb9f1fb82232c9f70bb80024a9d9c": "权限异常!细节:{}", + "196a4f415d73b007e0627563a530967e": "创建容器失败!请在适当的时候重启docker服务!", + "ea7b2beec49a425b5742339d00a5aeb8": "图片 [{}] 不存在!", + "c29c7e4f72858367cd21d10303411592": "容器名称已存在!", + "c4dc041770b8a0e34d1399141d0e4de8": "容器名称无效", + "97bcbd1e3b4df0f1c6ec642e7be17afe": "服务器端口{}正在使用!更改其他端口", + "994e5a057aca3524ba773ec33228e184": "创作失败!{}", + "00ff90441ea0bdece5d9e5c72efa14a7": "创建容器失败,连接docker超时!", + "8879635d66ad75dcbfc8c31ba1351116": "容器运行失败!{}", + "facfe02e3070c389fe486efac23f2ab6": "容器创建成功!", + "71dc70f7ab3a4bc0c2a7141718d3a9b2": "创作失败!", + "ed0029af5f77a5dfacbc2452e8c3ec92": "容器ID异常", + "c5b3db7efde90edcb803a4a79e559b21": "新图片名称不能为空!", + "b10305369ebb41ef24699b8137733465": "镜子不存在!", + "d567f353b12e618571935661f31c2a16": "容器编辑失败,与 docker 的连接超时。", + "c558fedcb5850939202e684ff32c7c50": "更新失败!{}", + "b84bf4d95051856f9965b55bb5402de3": "容器不存在!", + "f2124ee490df203b3f86509401c76a09": "容器编辑成功,当前指定的[{}]网络创建时未指定子网,无法自定义IP,IP已经自动分配给你了!", + "b95d75cd8e04e9cca297c3cd1091b2eb": "容器编辑成功,网络[{}]设置失败,IP地址已自动分配给您,错误详情:{}!", + "4363bb34365a67238ecc6a98ce46b361": "图像已生成,并且{}", + "4bb30e8d57a6a7e548758daf4ac33983": "提交成功!", + "a32e1f09fc2739d94c51a7168675e0e9": "提交失败!{}", + "9ff81cc845af62a773af3412bdf7d9a0": "容器ID异常,请刷新页面重试!", + "d8f5602e197fb8b3c772f071ad4a8baf": "选择外壳类型!", + "9ad72ac09babc507baa6e165041e128c": "不支持此 shell - 选择 bash 或 sh!", + "172f51d3307b02aeb6dc703a442f4724": "获取容器失败", + "684fc00ae67504a56c09ef71431b1261": "已成功导出到:{}", + "3ab9d9b76e8d22434930622b5f0acc6a": "容器已被删除!", + "d1fe1d6e5e8c17b60f749ad36ff3bcaa": "ipv6服务器端口[{}]被占用!", + "9f13645ac42f0c9908a35637a525d561": "ipv4服务器端口[{}]被占用!", + "8708a53096a7d7bce5d3042be8feb736": "别再成功了!", + "5dc7c5bba9e3ff6d293a9cd6459bc1ae": "容器已暂停。", + "458c9e6b1324cc3843c313c99a9c8623": "停止失败!{}", + "d40b23e847e0619c6e2133eebfd51807": "容器ID为空", + "239aa38adb7ae2339600a015d8695f3d": "容器没有", + "b10f78da3571670e8567e599aba8d475": "无法获取容器信息!{}", + "4e62f10d98b7560d22cf614879790624": "没有容器日志记录", + "4bfb779dfe8300c1f2da1f1dae06a4ce": "docker连接失败", + "e9b0defc5226436d7d2580972376cad0": "参数错误,传递:类型", + "d0e42e6dd40adc10d0027ab9993d8741": "容器日志目录不存在,无法设置日志切割!", + "3af555ace78d310a5db6e9449ed6843b": "开通成功!", + "641fe4d504d197e8570f3bc693f5c15b": "关闭成功!", + "e04e8dc32dc0f13aea94cb4996a0057c": "日志文件不存在", + "3e0f56b62a18226db6b8c71e8c917be4": "日志清理成功!", + "81259d9e5861e65db29844c19d9feb80": "没有无用的容器!", + "53a5658dfa0a2e85083fd63b961d35be": "删除成功!", + "dac7d97aeb94cf9d3b3b5d7d072c4cff": "请先关闭企业防篡改保护,然后再重试!", + "32ca87e65c5fc75d3857767417b56439": "删除失败!{}", + "b0ea22ff0b389c2a32b8f4367ab650db": "参数错误,请传入重启策略restart_policy!", + "3b2f70397fa8a827c7146cbd900f7222": "更新失败!{}", + "c147897a9d1746a58de531e9c0158c23": "容器未启动,无法重命名!", + "a89c2e8f7eb81399f984330e55014c6f": "重命名成功!", + "8a615b544c027899738b19f2cc40fd93": "重命名失败!{}", + "3506ae5524d7b5dbd75ed328349e065e": "置顶成功!", + "363b76cd4207ec1adb31b9f7ee3930c8": "取消固定成功!", + "0fffc4397713115e14ef45273241dfbb": "参数错误,请传入:备注!", + "dce2cbc7791016e4876ab144e53b4f82": "参数错误,请传入:id!", + "0af5787b053c4bf5dbe610731f7d4199": "文件路径不能包含中文字符!", + "719ee030d81490fc055af0c4426aacb9": "检测失败:{}", + "ee3936ffdc910e2cb8578ad1fae322f0": "检测通过!", + "2e5c9168b81de403131125abe3537861": "模板名称不能包含特殊字符;仅支持字母、数字、下划线、点和下划线", + "1ef49203b5ddab4a6b30eddab93c6d73": "该模板名称已存在!", + "356dbf2911e78ebedbd99f13df311ce1": "模板添加成功!", + "4f6a25bc1019404777b1a95b85c375f3": "没有改模板!", + "029a1a33fb7a828191eac587a4d98db4": "模板内容格式错误,请输入有效的 docker-compose 模板!", + "052009ea42871f16153ca6fb451be303": "修改模板成功!", + "550993f7a7c3863e988dc02458bb413b": "没有找到该模板!", + "c541f51f11868ef56cf50524eeddd226": "未找到该商品!", + "c3f9a083e42b21151560ba7e23667129": "找不到模板!", + "d5d3eedff8acf67756e21b4612aaa380": "容器名称已存在!:
[{}]", + "05073a33c4bfcb8113af6b3222a0cccd": "此端口 [{}] 已被其他模板使用", + "69a22232c25cb907570f837e4032ed7e": "参数错误,请传入template_id!", + "35698a69135017d7f8345e32cb5a87fe": "找不到该模板,或者文件已损坏!", + "49d5a6420e1b84d63826fa1d79e5236d": "模板文件不存在", + "e199ad07ae94664293828e753ec2a9a8": "模板 [{}] 已由项目 [{}] 部署,请更改模板并重试!", + "a3017095090064d0ec98861e35d3849c": "项目名称已存在!", + "a9a92ec33cfb8eb3288cfc84edcd48ad": "部署成功!", + "a180787fbf3d2e3fac72a13cb98ce513": "docker-compose太低,请升级到最新版本!", + "d8b370ee0351106fe38046541c421361": "找不到项目名称!", + "30159c83433a6845a080ad879c0fb61d": "清理成功!", + "6483a5effa8c7ebce28c3838ee6f6e6e": "清理成功!", + "5ded1fa085b4c46667f9c8871d00a46c": "{}项目失败:{}", + "0e0ae38580f51369586ba6933a7c3105": "缺少参数project_id!", + "78f91123fc323aab6eb38f2bfb8e26d7": "未找到项目配置!", + "c3905cecf4f4eb28fcee1f4a4ad21bb0": "缺少状态参数!", + "f3655b96aad3f0771354a12af79571dd": "缺少参数 template_id!", + "79f89afa2eaf7c8da6f0ac44295dba90": "没有", + "5b0854983625160cfbf1295ceb6ec327": "拉取成功!", + "ce932f534479bae87f0615fa7214e5a1": "无法扫描根目录", + "bf3d793f9f908f7d2d26a1be8dbb80fe": "该路径不存在!", + "d2fe452a7fa69442d5296b8e4832ede3": "模板添加成功:[{}]", + "8d92d05b95b166c5683fdb88f7de8bed": "添加模板失败:模板名称已存在或格式不正确[{}],使用 docker-compose -f [指定 compose.yml 文件] config 检查", + "428ed92bf9d3198f4c9885c11fdb2be3": "这些模板成功:[{}]
这些模板失败:模板名称已存在或格式不正确 [{}]", + "70975749d256333f1b3b62c864ca265a": "修改失败!", + "2360e954ae9eecac28b2a3edad5e8ce0": "修改成功!", + "e8ad47bc3f119a4d4072f5cb114676f4": "图片名称不能为空", + "e5e3829984a9637afc2546ad2c87d83b": "镜像路径不能为空", + "e5f40049c6d67bd11d9a1a1889f5b84a": "图片ID不能为空", + "5e022f79dcc774c79bc55ee28774e2e7": "图片名称不能包含/", + "c00be60f9f3f7d747aadfdb124e855ef": "已成功保存到:{}", + "cb1f8d99b492340cf701101c87884a8c": "无法导出图像!", + "afaa91d141ded3e37b8b9ebf8bc31c51": "导出镜像失败,docker连接超时。请尝试重新启动docker并重试!", + "5b980f2e1c82c04c91376d55d4306a91": "导出图像失败!
{}", + "e5e8c7cac8b71e94280fa08301d21e78": "请输入图片路径!", + "5441400ea3bd16cffdf70c46c34f61d4": "导入图像失败。文件扩展名必须是.tar!", + "67b97e4746a2faf5d59206a80bb28649": "图像导入成功!{}", + "deceb44868a29ae5d579114348736cbb": "镜像导入失败,容器临时目录创建失败。请检查防护软件是否有拦截记录!", + "8eb05618b0f04e727b0685427fd49c8e": "导入图像失败!
{}", + "721aa02577670c1049ea9d12caa8938c": "请输入正确的DockerFile路径!", + "736df9a7c491f3299efdeb9f7d7e9e0f": "镜像构建成功!", + "6e85568dae869303ca7a4486f55458a3": "构建失败,连接超时", + "5bb301b85cc1f42e56174d3d9a4c0286": "构建失败!{}", + "f51455b323ec2db8004c812001043330": "构建失败!找不到指定的Dockerfile", + "8e1b9c9b75950d0feba6813d32766e61": "构建失败!{}", + "eba0ec758a6464a20c14c0f23ceee62e": "镜像删除成功!", + "8dd326278d09a3ac4bc56cf725c8f262": "删除失败,图片可能不存在!", + "11ead921bc0e3d94f1f9e0db4bf8ed8d": "该图片ID在多张图片中使用,强制删除该图片!", + "43993616c7433350755d30a3b4d065dd": "该图像正在使用中。删除镜像前请先删除容器!", + "d6992c3fcf2269c249cd5f18f1ac2c11": "无法删除图像!
{}", + "0c6c071174fde5b47c9eef8088c17a89": "删除镜像失败,连接docker超时,请重启重试!", + "0f3f874698792dc81c7c00b9e74fea34": "{}\\r\\n", + "a3ba80a8e1e0d9af94c809e909431b3c": "失败,登录存储库 [{}] 失败,请尝试再次登录此存储库!\\r\\n", + "cc40077b6ee61fbfa35713a21e8eb866": "bt_failed,登录存储库[{}]失败,请尝试再次登录此存储库!{}", + "60b488c60b6747bf34a86a69740b636d": "推送的镜像不能包含[/],请使用以下格式:image:v1(镜像名称:版本)", + "44dbec830b87eb037e8fcbb0e1b56160": "无法推送到 Docker 公共存储库!", + "b4c46001066c912344e3bdb0df86e848": "存储库 [{}] 登录失败!", + "0ebfb094c6482acb049e0dd0d3107307": "推送失败,图片标签错误,请输入如:v1.0.1", + "d26bdd6e86002ed92089dc71347822ce": "推送失败,没有权限推送到此存储库!", + "82058092ad7d2c7aa5e2f012b6544e59": "推送失败!{}", + "2b228d4775d23d2725ec227ba648bd43": "推送成功,镜像:{}", + "9e396f640866ded9c3a47268f96a36e3": "正在拉取镜像,请稍候...\\r\\n", + "7e5f4d488d318dc7c235095c8456f5e4": "拉取或搜索图像...\\r\\n", + "5a7377f73fc144fd961e8b2ffeba66af": "拉取失败!\\r\\n", + "97a6dfe3a273202edffe31af7a43e220": "使用默认镜像站拉取镜像失败!正在尝试使用另一个镜像站为您拉取,请稍候...\\r\\n", + "484616540fc726ef4f52e97a1c2f0fef": "拉取映像失败!\\r\\n", + "1cd77329b2bddfb200e656214b1fdf32": "拉取镜像失败!", + "63c709b9759af42fef890d539d822575": "拉取失败!{}\\r\\n", + "b4aba972332d1f3728171905a033fb99": "映像拉取 [{}] 成功\\r\\n", + "2fae21ffd185d9e9730b39bc7de23852": "图片拉取成功!", + "8a635442294fd90195a43d9a1672fc3f": "拉取镜像失败!", + "711de72d616e7abb29dfa919244d382d": "拉取失败,镜像不存在,或者镜像可能是私有镜像。您需要输入 dockerhub 帐户密码!\\r\\n", + "e9511e26273da5b4537b4683668b548e": "拉取失败!{}\\r\\n", + "05d13bf5dcc37754db74b2356e6e117c": "拉取失败,存储库中没有该镜像!\\r\\n", + "714841af7f3de6c8d99ba03f4cee0ee5": "拉取失败,镜像格式错误,如:nginx:v 1!\\r\\n", + "2d941c4fa4da32ccafa8670a07f23c1d": "镜像拉取成功。", + "5282194697748d9fcd1ccd8a90428424": "可能没有这个镜像。", + "d6facab17334983e7c6f8c561c239820": "拉取镜像失败,该镜像为私有镜像,请输入账号密码!", + "b507deb7848d566982b339265c8f5482": "拉取映像失败

原因:{}", + "e90811ef0a60b6d299b4e1064d7788d0": "没有无用的图像!", + "f343313c101aeaff0516990ebea3dcef": "删除失败!{}", + "90ecd58b3feb0b2be11f0af685ad39fe": "无用镜像删除失败,docker连接超时。请尝试重启docker服务后重试!", + "7bdaccb3d20432c5e0150862ab1cc3f3": "缺少参数名称", + "9b90b5b49486a61d9b0e6dbbbcb56cad": "缺少参数container_info", + "b23d7110e9bf6539b4964afe0d4934e2": "分组已经存在", + "a90ca6939fe71693c145f50596c6e0e6": "容器 {} 已由组 {} 添加!", + "e3cf7e2f2d14257e7ea33657b135d534": "添加失败:{}", + "fcbeb38a63ced9d3de476fb08c31d71e": "缺少参数 ID", + "fe4e0032f69b4100ed143d475e8b5050": "编辑成功", + "6c4ed52bea35c4c43839b8f0b44489f9": "编辑失败:{}", + "6c0129a45e9da4e1820335f3d06a869f": "删除失败:{}", + "2a743a86676fd52214d3c0af1b0238b5": "状态参数错误", + "f95136e5c1f3ccbb09ace8fc24f1e0ca": "容器 [{}] 操作失败", + "2e01172e31495f41fcebcf3f831cc82c": "操作成功", + "244a98f8c45f938980f48b168aef02c9": "操作失败:{}", + "fc431240dfc80a731900d5f2ddb6dfc3": "容器启动顺序{}", + "5ea6c6eea14c24c92eeeccaeea5c46dc": "无效状态!", + "4097585e32152eb74bbee5ab8c463718": "docker服务运行异常,请重启后重试!", + "26a0931677e111565f3ff7d059b94d8b": "网关设置错误,请输入与子网匹配的网关:{}", + "def2ba1ce0e4d77692c14e5b984636fa": "子网地址格式错误,请输入例如:172.16.0.0/16", + "716eeeb727fd667635ccf1d18891d46e": "IP 范围格式错误,请为此子网输入适当的 IP 范围:", + "e310a873e7812c7f994d482604061fee": "IP 范围 [ {}] 已存在!", + "db88b911ea66744c24b22efcafef2101": "系统内核版本过低,请更新内核或选择其他网络模式", + "9cebb294a44695984eaaf2134df63a51": "当前节点不是Swarm,需要配置后才能使用", + "85ac438bd64f13e2ad61cf60e5ade3d3": "添加网络失败!{}", + "640520ffb5d9c01336710bad3ea6d7ff": "添加网络成功!", + "87574a543563d2e037b87a6cf705e3ff": "系统默认网络无法删除!", + "23b6d9d6c36088deb928efad7fb9b63b": "网络在使用时无法删除!", + "8f512551c7ddf61331c3d068e80c642c": "没有无用的网络!", + "08efe6a4e12437b79225c8b59fd710eb": "网络ID不能为空", + "a636381ee5e6d6d021fff745ca132905": "容器ID不能为空", + "31a75a8d220d37dc4a7ea28d0f24cc19": "断网成功!", + "a2b9895fca7698902da9319b52392366": "容器 ID:{},不存在!", + "c81f03a558307d5aaf3b339af28e04ff": "网络 ID:{},不存在!", + "12a90fe85b8863e1dea43284988d7750": "断网失败!{}", + "6226d2fef3bf047236f0f3a57dcd71fb": "网络连接成功!", + "d882b8375782b1bc56ccaf84ed27d20b": "无法连接网络!{}", + "45a0bbacbe8d5ea062167e88423e4573": "未检测到 nginx 或 apache 服务器,请先安装一个!", + "bdaf560796795d6a303bc9a1d75a34c5": "项目类型 [{}] 现有域:{}", + "4588a786e80c83c2cbde37b930c3d778": "服务器端口[{}]未被使用,请输入正在使用的端口进行反查!", + "6888cf6586ce3c187150146a2d1db0ac": "添加失败,数据库无法写入!", + "e6bddfc6a0bbf72d592236c61b411f9a": "添加失败并出现错误:{}", + "1bfa1b1738332c4835f5efe7c54ab9c2": "参数错误!", + "0d66954ff42aa042c219a356266f5bc0": "未检测到反向代理信息!", + "aad4acc1243565c5c2ca41e5733e5fe0": "成功\\r\\n", + "d8f5a29760a4f000dd754819b1faadcc": "失败\\r\\n", + "73977612ef83925db43df7745df9c5eb": "\\r\\n超过 10 分钟没有响应!\\r\\n", + "6345c76d66a8a9e9cdd3f9d996ff062d": "请传入cmd", + "bba401eadefa8222f3e60a312cc19f34": "只能执行 docker run 或 docker pull 命令", + "b5592904212696df3e5bcec990c8676a": "存在危险命令:[{}],不允许执行!", + "cfff471dc04b6ba4aeb2cc2844b2c94b": "存在危险符号:[{}],不允许执行!", + "c0ef08aa7bd6276137ccd491a8041223": "没有要备份的卷", + "584e35dd4a55da88bd232ac7a19b9b95": "备份任务创建成功。", + "0b08674e1c87f3f8508a4ae9b0c160f8": "无法创建备份任务{}", + "13d829d3f2b78c971207d944f2a96c55": "删除文件失败,原因:{}", + "cb337dbfbc18aafa482051b6fc349dea": "获取配置文件失败", + "84d3fc0c1c70fcd6fdd7ca7c3be11225": "该项目已经存在!", + "a280b122a0b3249c26b1f94ad4573f50": "写入失败!", + "72b8d771409a71a6650a65e1174cec30": "项目已添加成功!", + "0fa934d82d7863e34606d19520d12e48": "集装箱订单无效!", + "eedeb135fe678559787fe2cb304f24cc": "集装箱订单修改成功!", + "0c1dcdb6582992fa9ec4169c7c958e47": "该项目不存在。", + "4ec9c8311b7814ee0f17b634cb7a6ae0": "项目间隔修改成功!", + "cda91d4feb0c7cceb0fa1aeabcf536b4": "依次启动容器!", + "97f2a2dcbe0d211b8972c6151950b213": "以下容器正在运行:{}。是否允许强行停止然后再启动?您还可以选择自己手动停止正在运行的容器!", + "9d160eff84c44041cf4eb5c624874c4e": "开始依次启动容器!", + "33b5d440d17f3837309707b5b049e899": "正在依次停止集装箱中!", + "b687943a0a61ed9f039213d7c5e0fcca": "容器开始按顺序停止", + "ec7b13b39406a81e90df7b7d06a4b134": "无效的状态!", + "0df1e0596d9e1835d62be1b5ba537fac": "容器{}已经被项目组{}添加了!", + "d6d90f977089e176ec7443db17c41279": "容器添加成功!", + "04cd9210bf9290bda98bc76ca4bc59fd": "集装箱卸载成功!", + "d867a5e10a7a9485129c679b85453e3f": "项目删除成功!", + "7c6f761019365f8a5cfb2fb54d9e199d": "info.json 已下载!", + "10066fce84fe34e9cc33e0338532988b": "info.json下载失败!", + "0672e579ab0e3454713eb683ddcc4859": "{} 下载失败,请重新同步!", + "8e790e81fffa7f51d099f710bd8f82cf": "{}yml 文件测试失败,{}", + "371acfea202589c4efd6724888f66595": "{} 下载完成!", + "51cf61e34b3f71ce1e430cdfcf129b80": "{} 解压失败", + "c59b65890496cdf2b14d127a1f76f73d": "{} 提取成功", + "0117718c35c7a16a62de5c259e1d35ee": "由于以下原因,目录创建失败:{}", + "374e3fe41b55a0b29420e455fb514dd6": "存储卷已创建", + "6d0d40f64f89227daf345eb2257638e8": "{} 不能包含空格", + "a00b49ace55de909015029a0d6d6096f": "{} 不能为空!", + "54498312bb8f97ce07a9a0b0b47cfad1": "服务器端口[{}]被占用,请更换其他端口!", + "47b74e08252747225c49ea0cb011c79e": "项目启动失败{}", + "838089af9a2941a49862f342c056a8ca": "开始创建项目", + "9b149598fb30f54fec9e82a3d121a464": "{} 已存在,请更改项目名称", + "634370637f6a5b88940c75f826953d0c": "用户项目目录创建失败,详细信息:{}", + "f7b14d3f642d711a23d5a0cca725fd0d": "无法复制项目目录。细节: {}", + "ea848f5d6978f5916cd3df4191195e2a": "主机已存在!", + "7aa425b3819e79208faaed38fe137f34": "连接服务器失败,请检查docker是否启动!", + "c90ca78b1fc8554e867a696d30255cba": "添加docker主机成功!", + "8ee5196fbd93bf345bf018132e808a0a": "删除主机成功!", + "68ae8c43a52aac63c5c62e1974afdda6": "脚本 ID 不能为空", + "eee298ea1d9259c2f0e2061ecd89c21c": "指定的脚本不存在", + "b68a8dd0c887719b7cc3e10dc11843ce": "aapanel内置脚本无法删除", + "aefb82d7caf36c7f34a4cf60168a1297": "该脚本当前被任务[{}]使用,请先删除该任务!", + "4223589c4945a6757845760cf467a183": "该脚本当前被任务[{}]的事件使用,请先删除该任务事件!", + "2e32a56c4ec44d75ff6cf5c6ac366db8": "成功删除脚本[", + "16687cbe6e87af3bc2762f0410453ec5": "脚本名称或内容不能为空", + "1e156c08409accc1dc3da5c395c3ea22": "返回类型错误", + "4371a6ff5a908b5ed6f43d52b49f7d30": "脚本类型错误", + "91896a15daf4558843249e11b7aa1fc5": "修改失败", + "919c17a8f22c59f9af57399aa649003e": "修改脚本成功[", + "71c95be7ca536d92d8f175fa245ddeb0": "该脚本需要参数", + "7ef6898209b89f4ace813b19f5eac840": "脚本运行错误,请检查脚本代码是否正确:\\n{}", + "2086e84cd166412cf7236bdfb66e6d6f": "执行失败,错误消息:\\n{}", + "7a38e49c19eace49f0e9a0d03efadd1b": "执行成功:\\n{}", + "5e1459e1ff5449309bd13d173dca1197": "任务名称不能为空", + "028f9aecc8c5edf83c2480f3ad9a62b0": "脚本内容和脚本ID不能同时为空", + "540b2cc165934ef688f12e044c500f69": "任务类型不能为空", + "14ccb76798e0752c668bf447e7c536dd": "crontab 表达式不能为空", + "db17fc000dce92ec98ef53267f816b9c": "无效的 crontab 表达式", + "cb541ef3c967a13cb4b1185a661214cf": "脚本不存在", + "ed1bb81caf44e6b159848fcd0b28b0a4": "该脚本需要脚本参数", + "14753fa53d0a8928c69d56611bdb43d7": "任务已存在", + "aa76a4150f28fd8de372eb5fa2646a2f": "设置的开始时间不能早于当前时间", + "89c375395150b0550b20cdf31faf4ef5": "任务不存在", + "1df9f0729d55ed5e561bdf73b6b14976": "任务ID不能为空", + "497b38d4da5f19ed3f041f4ae6af6059": "run_stcript_id 和 run_stcript 需要至少一个有效值", + "cf76609030a04a8e357171a25d76f2e8": "请使用以下运算符之一:{}", + "bb4d743f102448bf1ad62e1f1bd25e21": "指定的任务不存在", + "56fcd6720b5bd174b1d614b7c7761fd5": "脚本需要参数,请填写参数", + "809888a81d143c1118d056643719a133": "添加触发事件失败", + "dd66e7c4d78fab1dfd30524d47af971e": "事件ID不能为空", + "8abc3d5d0d73a76ae66603858617ad1b": "指定的事件不存在", + "858080b55748bca57bca9006f2c36e10": "事件修改成功", + "f9fe8aba24799e53034cfd45a3c96824": "事件删除失败", + "101da618f72223d3eac9e66fe510b04f": "任务事件ID不能为空", + "bee903cc3d03ab2c237eefb1d601fbcb": "脚本执行失败并显示错误消息:\\n{}", + "1d78758685e5e2f4efeeb490f8521abd": "\\n", + "ca6977d373320a7fdb51047199d4cc59": "管理员未安装!", + "38641e6ce3a6369e108eb595672c8edc": "卸载成功!", + "9cae26284a7ad2f46132c1e8e196d089": "安装成功!", + "a9a92e55770213c8aa1fb2871dc43563": "设置管理员端口成功!", + "b611124a9bad44e328d7ce809912802d": "设置成功!", + "2321763bf0b4cbf345b1e19dc9faec47": "设置管理员php版本成功!", + "40a1f70c155550ad2dafa5e556e10c3c": "PHP版本无法安装!", + "e75e68c65607a7cfcc570d51345d7e33": "文件监控", + "983e2622c48ae7231c5d29b135133b0e": "添加监控目录:{}", + "15c7df4ddd1d366c2cdfa2689c15369d": "IP过滤程序编译失败", + "423c2da1e20a5f2138cc810423475eef": "IP地址不能为空!", + "1e116dc22492b28a7a38a6029416d0e1": "IP 地址格式错误!", + "8c8f15a1c1cce8bbdc465e865c804b40": "最长封锁期不能超过24天!", + "fb86e24ffe47ba150610ba1efd96929a": "不支持临时阻止 IP 地址 CIDR 块", + "bdb199a03e52488d499ea6bb0cb0d1ed": "需要WAF屏蔽IP地址段", + "1ac8e9ffcea7cf6e9fa183c1b9038599": "IP数据不存在!", + "04d46623edcb5663566cf43f575de9b2": "网站名称不能为空!", + "4dcde63f7fd4415f3b5eb6cb889d135c": "添加成功", + "d303480175994c6ad240cf24a4a99640": "网站配置不存在!", + "87d1f7257214d09ba39656b72c864bac": "账户设置成功!", + "aa5bb2d58da86c4b9160e94d0c4538f1": "URI 不能为空!", + "ade0ab88aa0ee9c18f0979d5b62b517d": "该URI已存在,请勿再次添加!", + "506d9cb0cb2468fd09048bcbe8b37497": "URI 不存在", + "cf180f27e678d4e297f690e581961417": "监听地址格式错误!", + "1ed0fa9bb8768d56bf2d3232d7067023": "监听端口范围错误!,要求:1024-65535", + "e6aa58b2f41bc53f6b84657d47eb35c1": "数据保存路径不存在!", + "c87be59ecbed944c2b45fea87d62f473": "IP统计模式错误,要求:0或1", + "fbc4861b0190c90a5388e44d2bbac678": "当前版本不可用,请升级面板后重试", + "8b1d5629a1346da21fcaeb9f8f0db6d2": "开始时间格式错误!", + "7a238977c4b13d23ac3e6b151a914cab": "结束时间格式错误!", + "a87a482f3bced3ce16bc9a351e8b5ce8": "开始时间不能大于结束时间!", + "a0ef69b1680461368a9130e770256ca6": "日期格式错误!", + "2493958c6f4051bb8d254d77d77b622b": "时间粒度误差,支持:分钟、小时、日期", + "4c4258ffd9a69c8e332346241a3cbdae": "否定条件数据格式错误!", + "b47f4e8b7540cae56e085231c3c984c1": "访问ID不能为空!", + "fea04488a926034079dc00c5a60a9135": "访问ID格式不正确!", + "da206b8971dcba715ed8cdd1a82736e1": "访问ID不存在!", + "fd65e390dd8aa35ea3622658247776d0": "日期格式不正确", + "9a4f1ea39f3a554d4e5431f86eb0450b": "站点名称不能为空!", + "b59417ef234946819788acfde92a00a7": "清除成功", + "aaa3736c0541d4a4d82193c2204ec317": "开始时间格式错误!", + "e579606ed1219291caeb3bfad786dd3f": "结束时间格式错误!", + "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "日期格式不正确!", + "53c85b9d96ea14f3f8224a5d2e659894": "参数不能为空!", + "9dc21ed8c6025cab9873847e6e1ca506": "查询类型不正确!", + "236c6e2f9a266b929b283eda30c2b3b6": "暂无相关数据!", + "50fc65b5f19812ccf756b7ad7de7f4cb": "session_id不能为空!", + "8f2adb53dcb8d2c660159b1f8e8012ed": "会话 ID 不正确!", + "7f4419a5b09e1a04936f6aba6939521a": "配置检查完成!", + "f3df0751d9522bf2e68034bab4cd49a5": "配置清理完成", + "191fae10bdd9d3eb6cb110b524fe40b7": "提交成功", + "f53208c04e48d7ee19222b6adf343810": "用户名长度不能少于3个字符!", + "251e2cae1dbed2b37f7d16961a606970": "权限级别选择不正确!", + "a835325a5600b6571a24111e4d318e2c": "请选择一个网站!", + "a669655fa991afcfa0cfa3f62286d944": "密码长度不能少于5个字符!", + "4d8d30e66ad9aaccc738ad99d5083955": "用户名已存在!", + "12152390a5bf2ebce0f00b0fb5c650a2": "添加成功!", + "4d1b7f489e07d6ca02ca1910a3884c48": "该用户不存在!", + "3e83aa40dd320efb027151c02aab2871": "密码长度不能少于8个字符!", + "d3748b3102cc8ba898f0f0bec842ce9e": "修改成功!", + "ac75e534c7334e1fd02c68a3993f1568": "删除成功!", + "ca281da1f13858d0b599d19e18a510bf": "网络状态选择错误!", + "c88239bc4a113ab0f02acb9bc31b3437": "网络端口不正确!", + "f06e6a5985a91ac55c651e0b573378f0": "Web安全目录不能为空!", + "41a871d7ec26993be1367226321e06fa": "安检入口地址长度不能小于6位!", + "16f83d0969b9f7fe56ac3b55f9dedb26": "该入口已被面板占用,请使用其他入口!", + "066df5a1cf19314e0265a1eb396848ac": "入口地址格式不正确,例如:/my_monitor", + "794ee58637251012717d7e565aafc2a1": "设置成功!", + "2531ce72ea98e5aa8f4953eee783b540": "没有发现错误日志!", + "0fc543dae93d3f76f5f7ff8048f5c398": "未找到可导出的屏蔽 IP!", + "5552ac99360952da2cf289f556ad19a6": "未发现可同步的屏蔽 IP!", + "3332452d6ecd015473b133de021a9e06": "同步成功!", + "e6afdb1b63ca733f5d1741c7eff7a64e": "正在处理中,请勿重复!", + "696212205a77e698860ff5195992642b": "修复操作完成", + "97cb85456b49af4258f4c8da38bb576a": "计划任务添加成功!", + "2739213f569742c0782252f41279c060": "添加计划任务失败", + "1cc4efde4fab0b4bbc2812a8b58f59b0": "请指定站点名称", + "3b5ef9e1ea5a8dbd9606075686dbf15f": "请指定日期范围", + "f8412f656685f470a82b74de3d9f24d5": "导出任务已存在", + "96ed379ec1882dcf52f0ff65057efb92": "请指定您要导出的字段", + "4e698e0709485a0e93a706964b748c5b": "未知的导出类型", + "2a2dbc12afac446fe408eb78453bc6c2": "导出任务不存在", + "9ff8782f584db728284fadd719967806": "导出任务出错", + "b4421542e9cff8ce336075b668b8f87e": "导出记录不存在", + "41564d1cd7f8ecb23bcc590cb2217518": "请输入新的数据目录", + "699856a3cc697d8afcfd04dcd2f0729a": "指定的目录与当前目录相同", + "103422cd692bcaf56a7367075caf2274": "指定目录与当前目录分区在同一磁盘,无需迁移数据", + "bcbd9605d3b8753bb8afbc765b293e01": "修改及数据迁移任务已启动", + "967a57ad58881afe2c5da6cf0d7fce8c": "请输入IP地址和爬虫名称", + "62b73e6c2a169296e73edf8a4d1e02f0": "请输入正确的IP地址", + "0e1a26f6137c04f0f80956210069e46d": "请输入正确的爬虫名称", + "fe8d50ca26f2e864d2bf4a932801bb85": "意外错误,请尝试修复插件", + "21aa998a1dee8774bc88ce2a070bf4de": "请输入IP地址", + "2e0c672edc06ef05e44de98ac1b7a47d": "删除成功", + "0f9d9b728fba6427b5ff4da49aee1738": "蜘蛛选择错误!", + "e48c86e701ddba3ab084d5457aa58714": "IP不能为空!", + "3bdb147b7a040582220aa7f1ce2af19b": "IP格式不正确!", + "b60597b6a9525341fa5d4d441084658d": "未查询到IP地址的解析记录", + "86e9360dac1c5eece29f32c9aba8011d": "保存成功", + "e5320166e7623b6a39f9a7af7c20c787": "指定不同的网站参数错误", + "c21fbb62edf94306d2e73365e6e7d637": "指定其他网站的参数不能为空", + "c7fae0c9886cac3924fe5e459e171ab1": "删除失败", + "9a84d2910d3d36b78d7060f1c77e27f6": "未指定站点名称", + "0987458a95b8bb7d6cdf9fa0630b6407": "当前服务器不是nginx,不支持自定义采集", + "b925dfe3295278bd81a85bded66da01d": "状态码格式错误", + "2a8793bbb8bc38a7df9d8c796648526a": "未选择站点名称", + "6878600890a41b84c145423618ea2431": "没有找到网站信息", + "eff712873c55654bf48eaf421a184e73": "未输入自定义集合名称", + "116208583eac10a8769774a6eaaff926": "获取类型不正确", + "fff3d7679cb121a30e68a104b58c934e": "未输入收藏内容", + "75db42595fc9aee34df76df808712f92": "自定义集合名称不能包含特殊字符({})", + "9667904e74175dfde9824cb8cd099ce7": "标头内容应以 $http_ 开头", + "4c61d0ee460aa25eb6b5c413c46c9236": "body类型的集合内容应包含[$+nginx日志变量]", + "c03680a7ae35b7ce5b62f67b854d3b06": "集合内容应包含[$ + nginx日志变量]", + "d621342512cf7910a6dc4e7d736bcc63": "收藏内容不能包含特殊字符【", + "b4704dc559a05c5721c095b97c4dbbc0": "自定义集合名称重复", + "6594b670e8bd06e352f112c1bf194fc1": "自定义集合内容重复", + "a531c58ef7fefbbbd79becda53ede191": "未指定自定义集合名称", + "88c0c3ae4ef97b6069a35672b2caa05c": "body类型的集合内容应包含[$+nginx日志变量]", + "41353000c0d351db90c9eec095bae879": "已存在重复集合,名称为:{}", + "ce78b7a225f05ece35ed7adc68b08a88": "未找到要修改的采集配置", + "521df7df29b44fcee614de96cecca61c": "删除成功", + "3b0ccb5c759b0941d50e331b22013560": "不支持的扩展:{}", + "7ea48870539b84996d1b1691c22823a7": "修改后的数据格式不正确", + "bc64045195c8ed198a69772b3a204ef2": "未指定要修改的数据", + "bb02871a5e118841b95b69c5bff55baf": "黑名单格式错误", + "1aac00a8c681100fd27b287c0b0516f1": "构建配置格式解析不正确", + "f6df35a69157ae1fca6415b043485334": "未指定任务ID", + "524a477cee9485a5a80a860e2bc5b5d5": "任务ID不正确", + "4b5d95ed20303e337aec42486a0fb3fd": "当前网站没有被查询", + "19e777b7c8cdc1ce56ad2f4fe735b2b7": "当前网站不查询运行目录", + "45484ac5ec748cf3362d425ed7142b75": "规则不能为空", + "b36196750a032a791ecc8035853dc648": "规则名称不能为空", + "cfa7bc3b484b8068e78bc6f55a2aaeaf": "没有指定规则", + "835365605f9e08c44c0b7f65a422d059": "日期参数不正确", + "4fa3e528186292138b224a0a1d46ec59": "网站名称不正确", + "3769ee974734f97166d6bce6b96e9b4e": "数据错误", + "daddfa03b4ea762e009a36ce970b2b59": "没有设置百度帐号", + "0379d9c081b6fd9ec2fd86e8672a4e72": "如果获取数据失败,可能是登录信息已过期,可以尝试重新登录", + "8057e57596c33acf04619825d625a483": "更新成功", + "3149165696693c4f6fef18928261a50f": "没有设置360帐号", + "add390e6467c956fbb7f6da0f51d23d6": "发送任务已执行", + "e8edb193e1cb171a17efe2765d72af71": "文件不存在", + "63d325d5c4dfd07afdf888fdf727542e": "导入成功,跳过 {} 个取消订阅的用户,重复的电子邮件地址:{}", + "6b803f13e4c829ed6a65c0d5976af511": "异常或格式错误的文件内容:{}", + "d6cd6db68490fced73e7bcf3e269fc3d": "所选联系人列表为空", + "721537a954932be33814ab079df57c78": "没有发送配额,请购买补充包或等待下个月刷新", + "debbea6b34bd0edb5bed5be7d68044c1": "剩余金额{}未完成任务占用的金额{}待发送任务所需金额{},请购买补充包", + "cb8c344616c2690af7d75e87f9c80aea": "选择太大的数字", + "4b0dae036acd930ca1c942474b04738f": "发件人不存在", + "cd0c2875bbba989082b0bea54837c422": "任务添加成功", + "48a84605a7e7d8938acea34996b55bb9": "添加任务失败:[{0}]", + "97b655f6f5593c96a89bfca9237ce36a": "该模板不存在", + "2efc2204459539d0ed963d7df3a0b797": "{}文件不存在", + "2e8a8d9cfa45e93c3c8a673bee0833df": "发送过来", + "2c09afb2ce9a25b5e33e0b5eb7e10cb9": "发送邮件失败,错误原因 [{0}]", + "2af4936790c12bc9522e844a3187f142": "参数错误:mail_type", + "cf6a1096f4f9f5c3632f03ddd00f8436": "该类型已经存在", + "c92cf27565701074c9297c9f6e001056": "成功添加 {},失败 {},重复邮箱 {}", + "119acd39beb57884b7fce4275c0324d9": "成功添加 {},重复邮箱 {}", + "0b898fa833d00b281702ae7791a5624d": "只能暂停正在执行的任务", + "4cd93d208ac9f476b452f930ced5e3e0": "{} 成功地", + "e38bacaba20440245e0aae88f984f78d": "缺少必需的参数", + "ca561681c6ba497c7de8fdecd5c05eba": "目标群体不存在", + "9f965fcbc009b2b75dcef2e32a211054": "已成功合并 {} 个联系人", + "aac60240e4a7b953b64974b957b43376": "合并失败:{}", + "aeaae7277bd406b03c27e12734a0073b": "参数错误:id", + "3642b2d34114d470809e030fce8de34c": "参数错误:temp_id", + "60287ee434fca4db4b62ab7fdff8486a": "参数错误:地址器", + "c11022f75c572cd1b4641941845bf87c": "参数错误:任务名称", + "2816e3fdfcafd8e052bd036c330ebda2": "添加任务失败:[{}]", + "db5b08f3936abce2e99f9aa1466e7258": "参数错误:temp_name", + "6f095d43a6d1080f4694b669909d030a": "参数错误:类型", + "f7ba379966ef8be4f17f1ac316a49daf": "编辑成功", + "08aca4a0ec8954c5a6a29a983ecbc55c": "此功能为Pro版本独有", + "0f506b3e8117fe5c52c90146b2ee9e67": "参数错误:a_record", + "33a5c77b138502b17baaa51f9bd88b2c": "错误:找不到 {} 的 DNS 记录", + "4c8c4f693124ee1b937567d3ced11636": "测试需要两分钟,请耐心等待", + "219f93d55b24b6791d3a5c63b808a191": "参数错误:id", + "8c2fb0d74bf0b951dd8ada148c16ecb8": "文件{}不存在", + "168861bb3452cc8ed67893c706ed69e5": "导入成功!", + "08c91ce439acde3feb04454e8b2a4f59": "手术成功", + "1d099d9c8e30376440abb2b5c7d09826": "群组中没有收件人", + "0c8a0434183377840948927ddf49c467": "没有找到任何组的数据", + "da500c6dc5f1ca7ce4e470705b7182a5": "参数错误:组名", + "81fa0fe3c0d0b866d13f32f822668ce2": "参数错误:is_new", + "5abc9343e29dd1d774a1ded26c0fbb56": "群组名称不能为空", + "08e36a7534385774e7972fc88ea1ca5d": "添加成功", + "1457aacc3deb7a7f5efc28ff7bb84786": "添加失败{}", + "2ac1d92fabeb3bb03f8cdc961c26f46b": "导入文件不存在", + "7dde3a45eff5e71e3098852362fd1395": "导入文件为空", + "f4b7c8d194eba0221d53d49a71a9bed1": "群组不存在", + "7f9f8d114a082f1432fd4d508b39201e": "组操作失败:{}", + "5ca563a6955a312b2962d754d2bca84d": "已成功导入 {} 个联系人", + "611be97ff2f405d97472f1e98352f5f0": "导入失败:{}", + "93eb05555388b86db78c49f986669329": "编辑成功!", + "183da276619df3a31c7153852caa43b4": "缺少操作参数", + "6eeff7c159aeb90605c9eeaa1d900054": "验证任务开始", + "616e6da41bf332fd4a725eced516860f": "无法启动验证任务:{}", + "694ae897645ed4f6c18dd496f0916e2d": "邮件发送成功", + "3c4eeb0e0301063ab4f7b6e12b3ccc65": "发送邮件失败,错误原因[{0}]", + "47cb4d76e39373c5fbb474f01a7f9cdb": "参数rc_user错误", + "ada2e3b01cdd14582e9bde6794e56de3": "参数 rc_pass 错误", + "ee668afb3022f7a04020a4355995df08": "用户不存在", + "fe3adb79b459800ef1bb0f8042e7fe4a": "请先安装roundcube", + "ebdab9ee4ea6ea28adfd7da342b8af7a": "缺少必要的文件", + "d77f421bec3e1db5836f52aa5b53e61b": "首先运行 [{}] 安装 pflogsumm", + "4980e2fc0b7bce4c83da3fe631a97bce": "找不到 postfix 配置文件", + "2867124182a8a707a7e8aeb1faa60d4e": "postfix配置文件没有找到mydestination参数", + "9a8b3de2d2fc5f9114798532eae929b5": "配置鸽舍失败", + "a4cab041ab51d1c2f65f67d7d82ec8a5": "邮件服务器存在", + "7fcbf57e8fe359587beb56c6d6a35059": "不安装邮件服务器", + "1d25cf1f445bdffccf0c7c04f98e90d8": "安装成功", + "b4575dff8587db1b71ea56ef26fa160e": "服务名称不存在", + "c138b2ea9b2ce96219987b1dc34a1751": "修复完成", + "fab07dcaf5fa1e2468aed520eb12f60e": "请检查rspamd服务是否正在运行", + "4b1b92ddcc4d8d18e1fc6d6a2c23b290": "冲水成功", + "ff6975219190cff0cd77a5d45a4e587a": "域名", + "02909d9d9c7b1c15aca48a0f3b632849": "成功刷新 ({}) 条缓存记录", + "8d42017ed8d72f616fcbfae1705753bd": "记录[{}]不属于该域名", + "b13de3ba9a0a8e3aa8cfc4c7b124ffaa": "记录解析失败
域:{}IP:{}", + "cb98099b2d50b0ef968b5e35a208055e": "该域名已存在", + "05c53d8c333382f2a88a51e182be4f83": "添加域 [{}] 成功!IP 错误:{}", + "8b460c0a4ee7b9f9abf8b7d9cead2cba": "添加域 [{}] 成功!", + "17d9629d2f06c1ee2212061b91161d4e": "请传入域名", + "232b6fcdd02dbb56d0b4680d54e2f357": "该域名不存在", + "2f1897169b16b705ba6a5b29a05a983d": "修改域名[{0}]A记录成功!", + "5e22d528a4b6e80126d13acec3f03e11": "DOMAIN_NAME", + "2ca49954e8a7fb75ed4cd9e1bca24e00": "删除域名成功!({})", + "20aa86e3c9f40c2469f13b3c03dd280e": "参数为空,密码强度不足(需包含大小写字母和数字且长度不少于8)", + "35dc5b31856636d5281ebc710edeaf24": "输入帐户名称", + "1f26a48fd4db1e46c21cdab41fdfd7bd": "密码强度不够(需要包含大小写字母和数字且长度不少于8)", + "69e1e781dd3949f8b6a6fff74bbc79b0": "电子邮件地址格式不正确", + "e387e797495f8e6068a2378ea2a9d46b": "电子邮件地址不能有大写字母!", + "406cd9bfbe188d7be6ed43ee087853e3": "该电子邮件帐户已存在", + "e89b7947650b902c10dc72cd06c7ad62": "{} 的邮箱数量已达到 {} 限制", + "a94bf19eb03a81e4860453ad9d4872b2": "该域名不在MailServer1{}中", + "9a498355742b1efcc8e97085c9f68783": "成功添加邮箱用户{}", + "a2dde299178d98f8b9cf937549c885ef": "密码强度不足", + "5e2421be63aa860192d725b7b57d19f7": "该域名不在 MailServer {} 中", + "40a84c055443ba1f6fb569b8c9861595": "{} 的邮箱数量已达到 {} 个,最多为 {} 个", + "6f6551f3050a37bff1c0db57f9c819b7": "{} 个邮箱已成功创建", + "8e3e96d2a9f285ae645e587477b14555": "修改邮箱用户成功{}", + "3d0fd00e4f68fb6a1ebb5de73954f5ca": "删除失败!", + "daa8873086f44ca2724f03513c8ca775": "成功删除邮箱用户{}", + "f5a9438fc0a655d491b336ef4122d03d": "无法发送邮件,错误原因:部分服务未启动,请检查服务状态", + "9fab0f5f8d9a53a59587cc911de514f7": "部分云厂商(如Google、Amazon)默认关闭25端口,需要联系厂商开放25端口后才能正常使用邮局服务", + "b11852c790672b942ed2c547c08d0767": "发送邮件失败,错误原因:收件地址格式不正确", + "1a4fd4fdd2dcf2d2f06f30522c1d4914": "接口不支持公共访问!", + "55252847683f299cdbdb6c8a6f2aaf69": "无法发送邮件,原因:部分服务未启动,请检查服务状态", + "56865f3d8aa564a93ed26724862960d1": "发送邮件失败,错误原因 [{}]", + "e79b5fbde5e49479aaafd5a1fe379e61": "账户名错误", + "333b7343c6bf424033940a8a97b12bb7": "接收邮件失败,错误原因[{0}]", + "1fd6e81e08c403b6c111f4ca1a673d63": "邮件路径不存在", + "5778692e244a35e113e61ed5a4a36063": "删除邮件成功", + "653869d8a742ca8c58e33b6c1530b403": "路径的 JSON 格式无效", + "beb65edc70a951b625901e5b198ed89e": "没有提供路径", + "894b5d9ee6b19333f6871fe484756116": "某些文件未删除:\\n", + "4bbfd3ed699b4545134a61ab737e05b1": "所有邮件已成功删除", + "b400dc9934847d9fe1d234befb30054d": "服务名称不正确", + "fcc0d9c357a8bfa2d83e3e250264d4c7": "错误操作", + "29c102771255855883869f4bb3b4c2e4": "{} 成功执行 {} 操作", + "a35dd0bfd9996e07728358593562dccc": "请输入账户名", + "f935fa53dce46fbb36cefa0a0b08ec65": "帐户名无效。", + "dd130650a1e48b849b7c61ec23d72cea": "无法收到发送的邮件,错误原因 [{0}]", + "4168802788e2d2bcdf3238824b47b58e": "找不到 postfix 配置文件 {}", + "973ce6f8cad81b79484dfa9dd8d3e01c": "证书错误,请粘贴正确的pem格式证书!", + "12eb041051df6300c99c90844910086c": "设置成功", + "ac293db78f750888fad60af17a550b4e": "转发用户已存在", + "2ce7dae0c16a247318839d2c9dd05fa1": "邮件服务器中不存在域名", + "7b7203def07b8609282c02213359f019": "转发的用户不存在", + "ecc64e7aae7d595dcfcc8e7f0f484e47": "邮件转发添加成功", + "78505c78baa039a350190dfaf296952b": "转发用户不存在", + "2e9f5dd27bf2f972f374084fd8bc56be": "邮件转发修改成功", + "666b75a042d5cd8cba3a6d1c2f270704": "邮件转发删除成功", + "03c6490678727779b9a553b0e03c1d43": "转发名称已存在", + "b08e9212679fd4cf82dd5ea8beda84f4": "设置成功", + "631cca78135ab71a389991d7155bea59": "smtp 中继已存在", + "0b5eff39ea7076bcc36235e042de422d": "没有找到配置信息", + "318cc2da7d028b5497ec2e2b7bcb577e": "smtp 中继不存在", + "b5a0fb08f3a04afbfbcd4ee57299dbdf": "目前不支持远程扫描,功能正在测试中", + "293a6b04618c2ba7921e039c75f9c80d": "请前往应用商店安装反垃圾邮件", + "ccff040d3fd05435e247a3b204e55ef6": "备份任务不存在!", + "e3eec59bbd1bcf4ebc36213e6df758f1": "关闭成功!", + "798ddcc716b5c9993e0d1f914e3f1bf3": "恢复完成", + "2ca583c8306948114efb114f6bb00c3d": "这不是有效的备份文件!文件名应以", + "97f87b75c36da3aec2a952fa834627ac": "设置成功", + "db8452315d0eb9f8aa56f5ba4e010254": "找不到 dovecot 配置文件{}", + "54d5be9023bb0918159a58ef65e7cf46": "设置的域名不存在", + "bdc245ab2373b030a79738e5806967b4": "设置失败,立即恢复配置文件", + "af7746eac1b9f41d829e2f150be96440": "设置成功", + "45448be795807701f1d6d79c73a5e453": "设置成功", + "6b73df7e52420a0609340be53b559a27": "请输入账户名称", + "f3482253072b82f9099ba7b79bd694ce": "帐户名无效,例如:xx@example.com", + "75e698a13245f4ea49f033e336f9a7ae": "获取失败,原因:[{0}]", + "4b590c993349c4a9332fe7c30cc3623b": "标记成功", + "fd1c6c13e2281da435056d1cd3de0d19": "搬家成功", + "d6b9ff1c86c87a4d3d169d19b8b803da": "请输入 FQDN(完全合格的域名,例如 mail.aapanel.com)", + "f003e31bb108bfc6e2dca6b6a493e2c4": "请输入 FQDN(完全合格域名,例如 smtp.gmail.com),", + "b20c85e36016672347fc67d33c95b9e9": "25端口已开放", + "1af60deed5a95f10c9ee73efeff48999": "无法连接到其他服务的25端口,请联系您的托管提供商", + "540d99b4d5cfe696f6e46cde48eda194": "获取源文件错误!", + "bef8386758cab502fd7b6edd15619c85": "没有这样的文件!", + "22d422258dca7c9b0975f91f927678f0": "重新下载成功", + "56ecaac7a13c0ef171f753e6b1d835b3": "任务不存在!", + "48aff051338f9c2251ebdeb3fd211114": "没有用户可以导出", + "28154bafa8a9826866b6e002c71d4fff": "文件内容异常或格式错误", + "3f7e44a7c5b57a82e56793cdbeb858d7": "{} 导入成功", + "bed14b598283efb210f08792c0fd1ba4": "没有新的电子邮件地址", + "f98c2754442b046838d86a7f55ffc206": "电子邮件存在", + "c656050d918fe06bf87fbe9819642be1": "缺少必要的参数", + "3878813a0744ed93ed2da272e42ab410": "没有证书", + "6d02e9d5b213cf3d523190f8f90fd3e5": "部署成功", + "fc93888f42e90fe0bbfddfe2e3b8bde7": "DNS记录正在创建并将生效,请耐心等待", + "7bc1a5dc172f07bc2480c7b2067e08cd": "缺少域名", + "abe0a1bf4c110c5e912db5968951edb3": "修改域名[{}]成功!", + "de5085e3caa72f9417811a3a16fbdc5f": "圆形立方体已经存在", + "bd85bad7c1cedffc46ae70e0db8034f6": "未检测到MySQL服务,请先安装!", + "c6a51d5b1a7bd956ca4c4f338c086f83": "未检测到nginx服务,请先安装!", + "04558b9e13998b32d658e8cd8b0d1ad0": "参数 site_name 错误", + "90baf7cab644bc240457a2c47e6ebf00": "参数 php_version 错误", + "cf84746ee6e7a5bb44a33492dcf06859": "参数id错误", + "fcabc387917b8ffea3954ce306154a14": "参数路径错误", + "bdf7ec8b7b06dbcc5cdd37b7fcf0be78": "该网站未部署 roundcube", + "162ee492c21d8ca85c113a5ed39cb19a": "添加成功", + "18aa77314905ba8cc4ebbbef5e5bfc61": "参数 emails_to_add 错误", + "16bc256c4be0dc8ac8c57a502d76ed7d": "添加黑名单成功", + "8392e379584c66a9f7a4913c7d31fac5": "参数 emails_to_remove 错误", + "b28deaa432321b73e5b6708c3cdb29a2": "黑名单已删除", + "aea0ac1bc82821423517f7d240f4fc20": "没有黑名单文件", + "2eee30c225f61143cba34ce255c00b39": "没有可以导出的黑名单", + "04cc998ff38dc7b2a1850bab4def5ff9": "黑名单导入成功", + "1b11ccbdd39c606a4b00d06e306ce7da": "错误:{}", + "37e5741448f3fff98b04f3b24663ed5a": "成功清空 {}", + "040af72cf6c4a1e2b1c442829628d063": "缺少参数:活动", + "456da492cfd986feef0e8b6172ee52b9": "类型更改成功", + "ee94cfd2755c5d0bc7c532a5550b0632": "缺少参数:收件人", + "2ab854061aad0aede6cc7164670391df": "添加 {} 个取消订阅列表", + "a721d48e1f148b2cbab44c96c5d5a27c": "添加 {} 失败", + "612ba9a3aadccbd5aee092178e59a95a": "删除成功", + "0f72c62155338caff34448acccab2065": "可以更改默认类型", + "f354e294ef8e10dfa5d5330710ac2244": "id参数必须传!", + "59ba6a6955b093d3d8ab3c8ad9e07907": "对不起。此功能仅限专业会员使用。", + "981b4b10fbb172510dd8bc6c78442abc": "当前网址无法访问,请正确设置反向代理!", + "b016f3fad3a16d8ab6f834d028138bb2": "缺少参数!小路", + "4e1b0afecf8cca9bc1c7baefbbaa5020": "缺少参数!配额类型", + "f17f1430a59b12a71518577a2ac98394": "缺少参数!配额存储", + "b147c4722e48cf85b07f12e8e4dc36b9": "参数错误!配额存储", + "6b26e574db24819d9553ff97329f72c8": "这不是一个有效的目录!", + "d265f15afa05b01c067e8a37d4db5f96": "指定的目录是软链接!", + "31883af5f94e56074d46535fb885be81": "操作成功", + "cd605148babc76c2acdd97401fde84e4": "缺少所需的 id 参数", + "24e2e9a2bb00384d2d5199605e8429c6": "创建成功", + "f18f18a50495f5b2cc683fa8b388d7a6": "编辑成功", + "362dff77f7403550e886db901404856c": "删除成功", + "5219b0eed304e85ff3b5d223ad1a19ea": "请指定主域", + "99e790a4dcecd5a50224da0a6bbfe290": "更新面板后可用", + "21217aade801d79f727da6da4bbc9028": "请指定用户名", + "c66b529d95d463970172da0cdb289df4": "配额状态更新成功", + "10d7350372e998438adf642e58055fe2": "配额状态更新失败", + "634709ee9a1f6829d28bf76ddf278711": "请指定域名和ip", + "decc12f91f9703a201987fdeabe572a4": "同名站点 [{}] 已存在,请先修改再创建", + "de67e3b2c564a899fe3195606036a7f1": "安装成功", + "8d5496d961b4d4e08474b20c1450737a": "创建站点失败", + "74a7684631b29d814a52e3401576411a": "时间格式不正确", + "f146f571f352f376dda16114593afd32": "该文件夹中没有 php 文件", + "a5ef7f95136c8e93b70c99cdc25d3b1b": "规则为空或规则文件错误", + "8756f93b16b703129c155cf4bf950e64": "这个规则已经存在了", + "2163538a10246cd5973057248443e827": "规则库解析错误", + "876088098a14f073e5da6fb4bf9a435a": "规则库文件不存在", + "6342b28c7c40e67016eb255e0f6fd382": "规则库中不存在该规则", + "1bbd886460827015e5d605ed44252251": "11111111", + "e1fa6849f823a00ea3ce2b63a584c918": "未发现风险,请等待一段时间检查", + "4919ae009da24772f54033981c72e7e0": "这个文件是webshel​​l", + "c3ff5d517aa0206b89c0107494480efb": "当前文件是webshel​​l", + "841be447d44ca7e7424592573211f34f": "可疑文件,建议手动检查", + "512e1fecde26404204e6072b3a12dcda": "无风险", + "3dfa767ed09b94292e6ed5bd39fce5d0": "无风险", + "6f72fe3fe88bd53bf8f690d2b0c5f842": "请选择您需要上传的文件", + "d27bc4b1f587e887d48e7fe92d7a5b23": "文件不存在", + "8d5b6682ddc9e4453c4d971d3044dc7b": "该文件被系统检测为Webshel​​l!", + "c21a06cf7008cdaa11bcc918d6ea1c0d": "找不到文件,请上传测试", + "786c8548bf1e0cfec63644e085f73ece": "系统错误", + "449061dfe5a4b59740b41d2705ad0bcc": "请填写您需要删除的路径", + "704ec17e6ea425b9acd1265f1dcd0072": "不能为空", + "43043017cb4d53a3d984d879a42e2ebb": "导入成功", + "3874a2dc1de33534dd53275bf1e54004": "不存在", + "2608ba6b8d1d54f9ffbfc630123ec583": "类型错误", + "2684d8fd0fc1dfb52e16b70b47334f53": "关机成功", + "ef00da3502e70bd84fff4b5036ff8288": "需要设置数字!", + "1720bc60b372b85a213d6492cdb677e5": "已经存在了!", + "2bc3cbf8db79ff0fac4659dc5c9b2dac": "不存在!", + "07dc67d62b952497160f106a5c499b9e": "文件解析错误恢复出厂设置!", + "cccd0da021862b684d131d9646a1d97f": "文件不存在恢复出厂设置!", + "d3c6f5d15561b322dcf534f98c15d125": "已经存在了!", + "d9c9b13c7fec0945d08ec49965daa4d6": "未知错误!", + "6512bd43d9caa6e02c990b0a82652dca": "11", + "698d51a19d8a121ce581499d7b701668": "111", + "dab4bbd12ffc7517800304f0bdc4fc86": "待替换的数据不能为空", + "436b3a5c35b1b4c27cd55cd2fd9e6f95": "添加成功重启Nginx即可生效", + "102779676feeffd385f7038542c05441": "已经存在", + "965983d46c2695569cdb4e9e12fd6571": "需要拦截的数据不能为空", + "9416a531e05cf18f1c26b97263e3c96b": "不存在", + "52932c15b4fa68c60b470a4dbcdd9852": "替换文件为空,请添加数据", + "8fcc9a1b8fb706211e066cd5f7df0a65": "删除成功,重启nginx生效", + "00203649d952e20d9611cfcd21b53034": "删除失败/不存在", + "3365f0d08012012075d406cf271d77f6": "您需要的屏蔽内容不能为空", + "2c555efbcf00eec34e159cbb930a49fd": "被阻止的内容已经存在", + "c7f766edcc806204f816c6de56e0e8a1": "被阻止的内容不存在", + "9fbc55a13069e729c3d4fb48d823badb": "请启用IPV6访问!", + "95d19257def109989336b6347a8f0fc3": "请输入正确的IPV6地址", + "c0481d94eb7e8c7f46f76fec921373e2": "地址不存在!", + "f6c7ec89d03c9c2ac46e336abc81b7a3": "列表为空!", + "5be36040b9fa33036a454c12f27b7375": "不支持Ubuntu!", + "11158f5edfbaa7a72e2e1e701b426a73": "暂时仅支持Centos7", + "0959d7ee773960b7193779c9fdadcb0c": "不支持Ubuntu切换!", + "9033e0e305f247c0c3c80d0c7848c8b3": "!", + "25e5fccc23b6134c8a7c5afa6befd508": "更新蜘蛛成功!", + "76e2205e6fc3d06106b783a710b1fe10": "云端连接错误!", + "17cae6641b0b761574f69f864134bf7e": "云连接错误!", + "ce5275d6e4a918c8236e31e85270d290": "打开!", + "a5b0cc35b2e38546efb8ae6118230925": "关闭!", + "fee1c1b6bffab76b18b09b002c405753": "次数不能少于20次", + "b14aa6510f1cff54c60f576ef0731959": "时间不能少于20秒", + "d8f4a1993546cc4b850cde3599e27aec": "未找到", + "fd16ce6210fa8913fa6230549b264979": "参数错误!", + "b4bc1177cfc8a0d0758e49b6a16f96d5": "配置文件损坏,请修复防火墙!", + "ef78de4bb739700e26b532d670638846": "未找到个人资料!", + "c02aa591c33647ad91bb649c1663bcd1": "请先卸载aaPanel WebSite Speed插件,然后才能使用此功能!", + "07a7794bae1a87cab16d773ce4c9597d": "全局设置中没有启用禁止外部访问!", + "bbaae08a3d7f937d5524fdfd83b37894": "设置成功!要立即生效,需要重启Nginx", + "3549141361cdf1fcb62983aa5965e7be": "cc_increase_type 参数是必需的", + "f73016df38477cfb3c3cac7c339bfd44": "cc_increase_type 参数错误", + "6da0a606488196a3f41f0654dff52782": "cc_ip_max 参数缺失 1", + "e37eabb7b29fc24037e7fd2b0c617ead": "cc_ip_max 参数错误 0", + "aa03bfe7b5a6290d1152302818b3cdc4": "cc_ip_max参数错误1", + "53d80dd2af2a957ff00a7869e82eb011": "cc_ip_max参数错误2", + "0f75238fa757d189104cbc3b745cc7e5": "cc_ip_max参数错误3", + "81079713d38580dfe7714d164626b505": "cc_ip_max参数错误4", + "59c4751ec8fb1f80078f21a5d3d23483": "单个IP地址最小可防御次数为2000次", + "7a39ee1d46dbe23c10a5a102e002ffe1": "单个IP地址最小可防御次数为5000次(包括启用时的静态)", + "21d5a4dda3dccf2cde4a2453923ba0c1": "出块时间不能超过86400秒", + "8998ac964e10fa904c6f44b9a1d45839": "需要cc_increase_type参数", + "a199962dff306e167cd1e96ccd864892": "需要cc_ip_max参数", + "123f5dc9d4ce755a22034ce48a34f0ac": "您需要设置数字!", + "2c6392950dd8b9feeaa322428f883d6f": "IP段格式不正确", + "d7bdef3923c512c13a60dc05970ca1cf": "起始IP不能大于结束IP", + "b1f0a374986c41eaeafaa08485b42b59": "指定的IP段已经存在!", + "aef0de8ec2a48f9f94f54d41a008f8f9": "该 IP 已存在于:", + "74e16058920cfff989e455cb7edca425": "修改成功!", + "4e140d99b9d960dc0faf5d43d200eab0": "数据格式不正确", + "4295a035192a0fcd88c89d16f69972ef": "导入成功!", + "acb8450d83f87a19ac444ce07dbeae96": "数据格式不正确", + "0b8faaf8776c5eb0c07dcebc13dc55bb": "无法添加网站根路径[", + "2128a6acdfae9f60c3a292ae9afa33d2": "您添加的网址已存在", + "4229662446c462c1d5212338127e8036": "请输入网址!", + "3862c72b9bbd0accd915f171d10b5df0": "请输入参数!", + "e4fd18cafa65c2071efa92e329fb1aed": "已经存在了!", + "96dd1aef326fe2e13e360245d729f9a5": "无足轻重!", + "f10ae1b19b9c946f277946863a7ef9de": "请输入您要设置的站点!", + "340c2b3dcf52aad038d610aea126fdf8": "请输入类型!", + "d7fda198ce652fc42e3b62bc39a87dcb": "请输入地区!", + "fc28444072899e60e6b2cb526651db31": "输入的类型不正确!", + "53267148f9e661f7ab274b68ffe21bd9": "输入的请求类型错误!", + "0956e47e87d4d56af7f3a5bc36ec80de": "输入的网址不正确!", + "3964f2ebc20aec0215b29f34e4e9cc8e": "请输入:身份证号!", + "f30e2178ef2d7f61c9b4dbf1c73f6876": "请输入:打开!", + "cfec0e080bc7d4ebaae29eaec8dcba24": "请输入:状态!", + "0e69f6afc958a9a1e75f1eb93908e9a9": "输入的状态码不正确!", + "0fa9cb1eb677f9243d0737a37a69f89f": "修改成功!", + "40ae230e6831501721508b806e3e8f16": "请输入站点ID!", + "ef589b2e5faa2bd4c28c0017ccd737f6": "没有数据!", + "89c6a8aafca7b01d7645766802707a37": "请输入您要设置的网站!", + "5ccddb202b5b5e7f96aa3181bda9beb3": "请输入类型!", + "2913b96effaf71ad6c7487658e4056ce": "请输入地区名称!", + "9c4bd2c334c14c48159a045e21a279c6": "输入的类型不正确!", + "66d6ebf480448bc6846362868a584866": "不允许设置【中国大陆】和【中国大陆以外地区】一起开启地区!", + "60e59018ad2d3e94f166beed6445cf7f": "请输入ID!", + "86484538f21c95f5d8b2e1df43135470": "请输入打开!", + "230f490b7f059873ba86a8ad13a8b007": "请输入状态!", + "ee89c7f6d23c70ad8f7f0072e3e0cb9e": "没有找到该 URL 的参数!", + "d1a198fffa0319462af0ceca6bc39dca": "添加带[/]的URL不允许加入白名单", + "0711b255059aaab715cfb46f6c503af7": "URL [ / ] 不允许添加到白名单", + "e233e412faa6c35ecb389c502a7b6537": "设置成功", + "e78511f517dc9b86fd743725e8eae766": "出块时间不能超过86400!", + "14fc8ce684c7f8c9cbd9357d46db244c": "您添加的请求标头已经存在!", + "0d2d762c7ed9b83476612b6c08dcb18e": "指定的请求头不存在!", + "9c3c6a1bed873cbb175e46b5cefc99e8": "指定的规则不存在!", + "0d1596574ac7aa5d5ecb88d72c42f986": "指定的 URI 已存在!", + "e66a7a8d9d1f830988f1f4a5f37ece0f": "指定的规则已经存在!", + "8528abe0d097e78242d535d5fe8d0753": "请输入IP地址", + "2aae8271977f5ad9ae44838f2b68bf91": "蜘蛛类型错误!", + "d9a32e26c6c673f85332bff9907e73bc": "添加失败!", + "50ff5b4f63ca1d6f72ac0884ce10a274": "当前IP不存在!", + "0e565a84b75a86b5804641eeec450828": "导入时发生错误!", + "de12faa543f0eb0c72ebc64849053f14": "指定的规则已存在,请勿重复添加", + "5d1dc231a71676f0d96c0ea4308153b6": "获取数据失败", + "64b31dda1dfab5250169f4cca5684824": "仅支持 nginx 服务器", + "8147e6e4e48008b09597cc2f7b70cd8d": "同步成功!", + "432deaf800ca653afe458c204cbfbcad": "无法连接到云端", + "7f3e6e3b62e446f04ab407e6aba2bb22": "更新完成!", + "1f5d3751c5fd0f0d7d110164be8a597a": "编辑失败", + "c2aaeb20ceb12d108a77c9383498a988": "导入失败", + "62fa7116894b93d89d11ba4eb1e41268": "导出成功", + "139fd85baeada3d9d7cd8c65cf418df1": "导出失败,日志文件不存在", + "efb7b1e669a74d47a4baecbe1a2adc6e": "导出失败", + "852e9973e436256e109f3a02ec9c140c": "清空失败,选项错误", + "bb145fd3bdcecf6ec853d1a887a58d6f": "没有 safe_logs 参数", + "c8eaeeb8efa13219ac368b6e39204592": "没有 site_logs 参数", + "883efdac3eb44df42fc05b2e8e3061f9": "没有 site_all 参数", + "af2d7b1ee22be2dc3928b7c57580aa23": "请输入正确的网站列表", + "9f351e9815c428a76aecab3c2c4a4b75": "清理", + "50e457f6032e9d93fe4b58aec073da31": "状态值不正确", + "631e7fc49fb8bdf2a3f13bdaf354915e": "不支持该操作", + "42e2a4ce9fbfd7ecf5a60a66cab89887": "解析不良网站列表", + "8ce75a209ed6cd3ed34d38aa7ea167c3": "访问失败!", + "a127bc2882f46ea763349be63b7a43ec": "请输入正确的备份数据", + "d6b3a322a8c5e66d8e4e05b81456adff": "不允许设置200状态码拦截!", + "a8be909d5c4c96eda1b9b53089187b9e": "不允许的状态代码!", + "f471d5490f674bf6c0999d9291a911a5": "不允许返回状态码!", + "8b8e26f29b987d60a8decbd2e73be7a7": "不允许设置200返回状态码拦截!", + "337f8ed984e970f2873fc42622d99521": "静态代码不存在", + "6fc66d367ac0c5d115479b7f852e98f4": "请传递网站名称", + "c8f9ac5c9288a3f53cccd5555ad1ee07": "经纬度误差", + "acc31522551404d50744536a2c1986a9": "无数据库文件", + "eaafa722b4e623b2ac09f4ed2d9cee5a": "必须传递类型参数", + "2ac8aa908980e30a259bb8526527909b": "搜索参数必须传1", + "62de36f39113a05a97a245a6d3126ca5": "请选择要查询的网站名称", + "7dbda89c64cdbf3c9afc9bceb5216308": "必须传递搜索参数2", + "84611bf808a166c5c384e72c9290573e": "该ID不存在", + "0960b1153519b9ab3f2e5fc5e39da8c0": "必须传递[uri]参数", + "acaf3f3e6dcd6d9151630196089ef423": "[param] 必须传递参数", + "f2eda7fc24524105189f3ef3853071a0": "必须传递[类型]参数", + "2f9d47a4a39f4ed99af1f20ddce75df6": "必须传递[stype]参数", + "eecc4f30c2c1ee3d9cf27edf9290c034": "当前 URI 已存在", + "e200e571a58c37376c8498c2dc506c95": "[param]类型错误,需要json格式", + "96ed9027cae5703401727a3d07764133": "当前 URI 不存在", + "466767592170f74d16bcac3034109b33": "必须传递路径参数", + "c2d2481eafb29f7e1525c6c63441359e": "请传递网站名称", + "4950f82b4231ebbfa780bcf4eec4c545": "请输入正确的IP地址!", + "abd5af540ed5a858d02b03846d94c1f4": "不存在!", + "5c1392db72dc56bdf4ecfe41eb39622c": "清空完毕!", + "5f401d1d15e2b6346405fcd81caee5ed": "请选择一个站点", + "df0af44dbb9037dfb3e4a23e2d22d184": "时间未到", + "74dc340e56666816aba1f2de4d8bda47": "更新失败", + "6e57d6c47d23024e41f4a1aac73a3ea9": "它", + "b8c769fb426082acc16345608995c52f": "更新成功", + "eda0e602069bd48f46f456d8c2eadd3f": "通关成功", + "f1cee94f9171dfe24f63e3e4c701e6d1": "更新成功,共更新了 {} 项", + "34ad6868d5517e16532a27e67dd7b659": "客户端IP地址不能为空", + "f9982dd2a6456912c0da42091c9843a6": "客户端IP{}格式错误", + "d1adb09331d9afa950900abca1056553": "IP范围不能为空", + "dc5b7cdade7167836e61a128d7e4342c": "IP 段 {} 格式错误,必须是 CIDR 表达式", + "193cb0af0143dc48f159b0fe55d2fc75": "源网址不能为空", + "0708cc379456476aaba988b381c61782": "请传递匹配内容", + "973aeb9471388c7321b04f3d921b98da": "请传入您需要设置的URL内容", + "864ffd29519010eafc7c5a5b958fb6a9": "请输入您要设置的User-Agent", + "9c5f65f543fc633b9f8d20fed389a3ee": "输入您要设置的请求头名称", + "1822f04ebba43b9d3576660d94e4818d": "验证通过", + "64f3408287530191cb9198dd02030e49": "关联网站不能为空", + "a29f521a7a2794dded1316a1b00a8767": "优先级不能为空", + "d7687135850c7d6afb5041e912b33824": "启用状态不能为空", + "6c671ab904133b581c1104942fe2c85e": "是否用于全局规则不能为空", + "6f2a7d11851641b23d3f632552afa1bc": "匹配成功后action不能为空", + "7636b5101fba6a060fb30e30278eaa73": "比赛入口不能为空", + "a805238b51120c00d0d4d6cff3b2d75f": "规则不能为空5", + "01af1d384cfeae598fe40b29cb96737a": "规则不能为空4", + "261d3dfaaca74f7fd29a4d304b036712": "规则不能为空3", + "06ce124a509953bf7031fcd480c960fd": "规则ID已存在", + "6094a892b83d8bb51cf8197d39a7a25e": "规则名已存在", + "5538ee312635d0c82567238d58c23429": "规则不", + "c085d954281443e56fde4f00fc27a3c4": "is_global规则不能为空", + "151648106e4bf98297882ea2ea1c4b0e": "更新成功", + "e04a27d5fc3ba14c49f5e5383a21eaa5": "状态需要通过", + "03ce2004f163fa785d50ee2fd790ab38": "缺少参数:类型", + "afad5921afb5338dae127d8451819581": "类型参数错误", + "31edbe069268a91831424986f5b5f36b": "参数缺失", + "b7c7b9e550d049c96732daefaed87f30": "删除失败,数据不存在", + "8a053f40d81ebe24c54b365c60ce453a": "缺少参数:ua", + "06febc0dd7b24b4ede244d87c6da9899": "缺少参数:类型", + "5a111a2b93b4c9ace88c30243f3befd6": "修改失败,数据不存在", + "beb17a764dd515a66b16905b019a4252": "缺少参数::pdata", + "e00dc8fc227ea447cb2698f5db98da48": "数据格式不正确", + "897756b1d00a36b9afeb5ef76ff845e8": "IP导入成功!", + "79f9ab06ea335dd09d909872a7398e1e": "网址已成功导入!", + "e82e753924daf07d001e460901b6fd96": "UA导入成功!", + "112dd48824aab35f4b9dc986b6313885": "通关成功!", + "4743684898b36b9ed3ac8e1ac5ca7024": "导出成功!", + "baa8f76f78ba1a954406d06dacf64c10": "启用成功!", + "79b200ebd87ad6863d1413cfa7f1d7a4": "文件内容为空", + "c1474294f9b2d0569833252c2dac48ec": "文件内容不是 JSON 格式", + "435e03d88220f757a95c64ad48a5727a": "参数错误,缺少参数:html", + "3d89842e7bfbe8e4647f2b75c86f2111": "参数错误,缺少参数:site", + "b0224414a41d57fd48147d635b0a9f49": "参数错误,缺少参数:html_fast", + "2413405e65a706d48f6a7085961802c3": "参数错误,缺少参数:js", + "7b7ad90f48da5f137d45d79f06317f47": "参数错误,缺少参数:图片", + "a2e1cf38d9a88555c830f5b0f1a59554": "参数错误,缺少参数:图片新", + "ab003a3bb7b2000f3f7dd4cc1ed2e5d6": "参数错误,缺少参数:htmlnew", + "659e67f77b70550f43b989a82f431ad8": "参数错误,图片新参数不是json格式", + "785400f0c6201ecea4df35207667eb60": "参数错误,htmlnew参数不是json格式", + "0ea0d28a307b650faafba51aeda35b6e": "参数不正确,htmlnew参数缺少类型参数", + "e3d8ffe389c1772f7eaec98fe78334e1": "参数错误,htmlnew参数中缺少text参数", + "4b097fd2beaa3b114a72820f7b595269": "参数不正确,htmlnew中类型参数有错误", + "fffd4429bcf4305049e63d02b689d2cb": "参数不正确,htmlnew参数中的text参数不能超过100", + "15f6f7030e3501001f4aed8e49f440ee": "页面自定义可以", + "f34203a4a9e3837f9c81fabffed77e40": "参数错误,图片中缺少类型参数新参数", + "b5c610002dcc8b5ae0068141a7029ae2": "参数错误,图片缺少文字参数新参数", + "a2d9e4ce746f18cef7a917ffea7dd75b": "参数不正确,图片new参数中,type参数只允许text和default", + "36cf3d060b27c024b0fd85b85c533148": "参数错误,图片中文本参数长度新参数不能超过100", + "799b18f9ca831f3048d74df2feb31206": "水印字符不能包含特殊字符< > \\", + "6e0dbbe7466271740e6609ed570d355b": "水印字符目前不能包含中文", + "198024662dba359f2392e60e88c40aa2": "使用此功能之前请先卸载网站速度插件!", + "855804452a86a87b7698c481b8fa262b": "伪静态包含 [!-e $request_filename] 指令,需要先删除该指令才能使用此功能!", + "788b7bc259014fc9c1991f11c3ac0917": "IP 地址无效", + "b53e7fec7f9097f923ac52bcb0b4c724": "时间不能小于1", + "cc1dd0ad7dd389cad500d9c4d196a508": "参数错误,缺少开放参数", + "d47aeb6c6f69e860d9c088ea55fba3ef": "参数错误,缺少qps参数", + "eb907b13315836fa781674c6e8f01c38": "参数错误,缺少时间参数", + "c10df4de998fb928b030c2d590edd72d": "参数错误,缺少用户参数", + "ab46bbdd4119a38d6ff4bdbd7c9065fc": "参数错误,缺少身份参数", + "25cf1a0c49aeb9d32801a5ab30507e7f": "参数错误,缺少类型参数", + "00204d3b9a172174c943f8660ec75291": "参数错误,缺少文本参数", + "30454e0ce7a66a8fddddadcf19fce8f0": "参数不正确,参数类型只允许default和text", + "5c1dcb6e10270159f05daa76de3b5437": "QPS不能小于0", + "4443c53175005bd3105c50baddd81660": "QPS不能大于10000", + "262feefe0c785688578a5f642d683225": "时间不能大于60", + "044dd0d9fc4da6120fc6128fab278407": "用户数不能小于1", + "215a4c6687559aa75d554670e06f3694": "用户不能大于10000", + "902ee0e2b591f9872a41c319c402e0b9": "文本长度不能大于200", + "2307dba1bc155ca6f1a5bbf21dc4a258": "伪静态包含 [!-e $request_filename] 指令,需要先删除该指令才能使用该函数!", + "db8b3ac7a5408e3bc0d103bb9b071c7b": "参数错误,数据参数缺失", + "a0318cc60ff3297d4bef0399dc89fa8d": "参数错误,数据参数不是json格式", + "8b682d8c8139c2ea686c7a87a03ba292": "参数错误,缺少名称参数", + "58d1469872dea12b4db1dfc13af12e69": "参数错误,站点参数缺失", + "2dc0483ba76fdacae8eb46978a77c449": "参数错误,缺少types参数", + "ae6b5c82d2858b70d9d5cfa2bf0a5b6e": "参数错误,缺少url参数", + "98f08e877f98b1cc132cf6af612f2c82": "参数错误,缺少区域参数", + "6eb9eecd7f53241dba52168f6eed8ecb": "参数错误,缺少条件参数", + "dc781e44c06aee2588ef017aadb91f54": "参数错误,缺少action参数", + "2d613a4d2d768453594737ae21612354": "参数错误,返回参数缺失", + "7c70d1e818ffa1c301fa76bdfa92d75d": "参数不正确,触发条件不能为空,且必须至少选择一个触发条件", + "7d44386dff18244f3dd75ad76546806e": "名称不能包含特殊字符< > \\", + "62200033fe539db0bbfaa9e811acd7ea": "参数错误,types参数异常", + "2290ac303cc87f9fa23aa247ade17c33": "参数错误,网址不能为空", + "d5c270bb074c184c3708fc628b969561": "指定的URL不能是/否则整个网站将被限制", + "e30358a99b6522a7113a2a4ac661aa27": "参数错误,URL必须以/开头", + "8a3315f7e229831b5b472ad35db2eb32": "每秒访问限制不能小于1", + "1f361568ba48e247da6293cd08f2a36c": "限制访问次数不能少于20次", + "6abf870d74b818886516c39b78ada43d": "时间访问限制-时间不能少于30秒", + "acdd003181b2fcf35ea8412f5ef17b24": "参数错误,条件参数错误", + "4d09f912a4e1e3f59e571464488c9b0b": "参数错误,action参数错误", + "554b32d33b741d86c3fdcd82a9974f9f": "参数错误,返回参数错误", + "a6ff8cce246c28eae5895c4bc14fcf77": "该名称已存在", + "d3054b81f5e76b0e297d0befe0c1a796": "该网址已存在", + "a53a9497f06d0158be0c57dae2447056": "参数错误,缺少id参数", + "2671382a359fe628f261c16c61618b41": "该ID不存在", + "e75627abf7a3fa307ab09e63cf246627": "参数不正确,types参数只允许all和urls", + "12ac2e613f94beddddfdbbd8cd90ebd3": "参数错误,网址不能为空", + "62b55b3dc9bd026c840e7e89d39eecd3": "参数错误,攻击参数缺失", + "19fd6f5b0c2034b36bfe924611057664": "参数错误,缺少cc参数", + "0f5b3e572f9dd832eebf01fdc0d7ce8c": "参数不正确,请发送报警方法", + "3979187f0bae65dc1fca4f1967742397": "读取配置文件失败", + "c9bbcef0c80ca1a2859dd61d0210a117": "参数[send_type]不正确", + "a79ff4350874c27408a1858a88058344": "如果实例化消息通道失败,请检查消息通道是否设置正确", + "50f223163c6f8e9f6b46d66165252cab": "关机成功!", + "02eef33534a6f8b3c95fc65e4f98bea9": "信息不完整", + "2f45c6e0ccf998c7d31b3764e7da3751": "注释名称不能超过 15 个字符", + "85284ecbde15ff997e89e6e8f07e399b": "微信信息配置不正确", + "3fb32283f52bea8068006817c5b9b95b": "解绑成功", + "8acd58125d3f7cc181a71926ef5c8a4b": "链接云端失败", + "886051a73fe04f873d814dc9823b4064": "钉钉信息配置不正确", + "2d1b0e55888d196484a0bfd0f85ff71c": "钉钉配置不正确,请重新配置钉钉机器人", + "eee590fc0d0f3382fe436b60b02e37f0": "邮箱信息配置不正确", + "e4e7eb56340203583dd940475fc6e924": "接收邮箱未配置", + "c6beb4efa41b5adbf89191be9d139c70": "发送消息失败,发送失败的收件人:{}", + "e401ec76f9a9d1dfe7d484e6c4b49656": "无法向某些收件人发送邮件,包括:{}", + "703480d2938f7c89b563e1d731e94118": "测试发送失败", + "fdc137942b6f2d81fa922d7ace16a94c": "当前接口不支持的类型", + "37f17a256a93646ef0ac721096ec0ce8": "相同的发送配置已存在,不能重复添加", + "2783bb2e5b99dce08138bf58d0880603": "找不到对应的发件人", + "b5a30e6f46753c06ada44d6bbd757599": "删除成功", + "81550843cd0a2d7e046cb23a868f8e8e": "发送成功", + "6e3ce0906145a9641111ebbf7735f145": "电报发送失败 {}", + "27285cc132e6c145a142ae2dff054ace": "注释名称不能超过 15 个字符", + "b136ab8957d5ede7e3747fcc927a49aa": "参数格式错误", + "4ccc991965b1b5bbe3efd6b65a1cd6fb": "正文类型必须是 json、表单数据或 null", + "b0b017688b107601f2b3439381c4c61b": "发送方式不正确", + "4f4979589df1b84ac44fc64a92e2b3f3": "验证SSL选项是否错误", + "bb8f2701fa6b013fe8aa74659ceda547": "无法读取任务数据。", + "b12cc83d0b14fe739a930fd84d10ae8d": "没有找到任务。", + "eb9eb53b7ac221c64f6f32c547317d22": "路径参数不能为空", + "0444d0f0434a4d910eb7a06039e39066": "[{}] 文件不存在", + "f4c3904df3aa98458b5f99bd5519e409": "{}完成后,如果日志没有异常就关闭此窗口!\\r\\n", + "a6d56fd22b5a2243f3d9584478b90e0e": "取得领先", + "42aea4a90d1ba39b31851f63479d20c7": "获取失败", + "5d85a89cf9ff8fb99547cb1648205489": "文件路径不能包含中文!", + "952345fe8555c6ba578f251a317f85bc": "配置参数不能为空", + "08dd0ea6d64131b95ad64ca11233bd0a": "env参数不能为空", + "8dea3a35e564837dd758e1f814e24f92": "保存失败,请检查compose.yaml文件格式是否正确:【{}】", + "2a3a9ebecbcd261e0550cb4469910ed1": "保存失败。docker-compose版本太低。请升级到最新版本!", + "e32a4e5887229cc3ce7412591de16cff": "保存失败", + "4e06eef94d131a0203e8f1f87db4fee5": "项目名称参数不能为空", + "c80ca81b19893dafd2629ce74407d5cf": "创建失败,请检查compose.yaml文件格式是否正确:\\r\\n{}", + "66855212f1fe552bf49c4388155b3082": "创建失败,docker-compose版本过低,请升级到最新版本!", + "5a135e409fdee335e0f4397a4293835a": "template_name参数不能为空", + "1cc869c0afb0c2f94e0937d9eb364e34": "该模板名称已存在,请删除该模板并重新添加!", + "cd21239456a2d52fb2317cc699bbd93c": "项目名称已存在,请删除后再添加!", + "5076d42e5242f2b79244d73f13da367e": "删除容器编排", + "02867c418e07f941a1c5d3f6bc926f86": "project_list参数不能为空", + "a88321660a22f931bc1f0861baa5dc1e": "project_list参数格式错误:{}", + "468c559ee2d3d5e39aeef93e62b006d1": "删除失败,docker-compose版本过低,请升级到最新版本!", + "3590612b29e5aa49645f02d01c9e520e": "container_id参数不能为空", + "d7fc188f711a4c3eb5b85949dfd9a696": "容器不存在", + "77ae5114c51a32c268b0bf7a03c0c528": "请传递name参数!", + "bd9b13cc06f202661c7bb89a02322532": "请传递路径参数!", + "719b089ab1a7d4ff5c161f3f5c5b7f24": "获取安装配置失败,请尝试卸载并重新安装!", + "c7f98cd83b58fad3ab719bfa337bdb6b": "参数错误,请传递app_name参数", + "043e4ffcd792692d7b7acb5a2504c329": "docker服务尚未启动,请先启动docker服务!", + "9f1dcd0020905875a6a48744ffe17766": "docker服务未安装成功,请先安装docker服务!", + "bfec153394be0516b0d79d4653c9e19d": "frps应用程序已存在,请勿再次安装!", + "fce729be4320e9afbdad888641d08f8d": "frpc应用程序已经存在,请勿再次安装!", + "f6f8ff9f4c8990d7e24ac682a50c40a4": "相同的服务名称已存在:{},请更改其他名称", + "66fd0bc16d0f3c5c9e61779749a93c56": "域名[{}]格式不正确", + "c68494100dc74cced33c845f35e5aaac": "初始化 {} 失败。检测到docker-compose.yml文件不存在。请卸载并重新安装并重试。", + "76a5e52d7834e4cdf7984adc785f720e": "应用程序创建成功,但反向代理创建失败。错误详细信息:{}", + "e59b647380ea44f97645f979773c683a": "应用创建成功,等待应用初始化,可能需要1-5分钟...", + "c71b369171a386e4df59acf49f5203b0": "参数错误,请传递:{}", + "5e60e6550487262a79210c48736c2cba": "端口 [{}] 已被 [{}] 使用,请更改为其他端口。", + "dc60f8a111d142dbdc1605dc047e23e6": "请选择您需要连接的数据库!", + "667d37fe4593e52760bc51ada7287988": "请选择您要连接的缓存!", + "1b6d9f6dc5480584f937681a5d9f0a80": "未找到缓存信息", + "f013f8c1d30136733e3d476dbe3a238e": "更新配置成功", + "3d928c01114361a57fb24c42d9a1ee2d": "无法更新配置:{}", + "092ca03f32caffd34d3f0532836283b7": "找不到 deepseek_r1 的脚本文件", + "17ee8c2efafe32a5d204e039e971aee4": "内存不足 1550 MB 会导致 deepseek r 1 无法部署", + "d3eb7a147ac81b2f691a6e7ad42cc83c": "无需处理", + "ade726fc2adbfc1c18a6a601a6670b2f": "deepseek_r1配置成功", + "2ab241c8ca04b4760bc844e3133821d1": "未知应用程序:{}", + "fc0d20951439bcc2d1101019e09556ff": "未检测到 {} 配置文件:{}", + "3bceda9d61ef4cfc8559796178503164": "{} 配置已成功更新", + "b1d0019ab8cbb83b1b99016c4927c1fd": "Alist 配置已更新", + "7194829138a21af26d26fb0d57426fc8": "请选择您要连接的数据库!", + "0a17156f2603044863d54b67ac1f7a07": "未知的数据库类型:{}", + "62a2454d1d40411885721e465168a016": "Nocodb 配置已更新", + "1c757f474b2cf26c14c591709c6963a6": "成功更新 Homeassistant 配置", + "5ca65c2eed5a6762590ba133f66a8672": "成功更新 Openvpn 配置", + "987a030ec5eb506b45fd17b8b4eb1329": "请传递service_name参数", + "05ea75c6d686df18830714369dc078ed": "请传递app_name参数", + "975ecde111f2dfe514b71b4d4941ba1c": "重建成功!", + "9b70785b1f6c44d42a1fa85dbb7000b2": "请传入id参数", + "2321c03a1d4fc4cb5b9b87275a0d4712": "找不到指定的应用程序!", + "63428213090160e31085eadae3508244": "尚未安装应用程序!", + "43dc377c8c1929c0c2bc959d94337657": "请传递id参数!", + "d4188b564c1af018074056fffde42fba": "请传递m_version参数!", + "2a65ff2dedaa3b18bf4d4678b99ff77b": "请传递s_version参数!", + "e7df495f8488ec05ebf913bceccbc8d4": "只能选择与主版本相同的版本号进行更新!", + "fc15d16befa9eb8ccfb25da964a284de": "当前应用已经是最新版本,不需要更新!", + "cd260af0ae4915ee07569fc877f77495": "只能选择比原版本高的版本号进行更新!", + "7ac82bcde612b1a109d988d4b3dbf626": "更新成功!", + "01b722bbe474a50d8291bbe2e71804c6": "找不到指定的应用程序!!", + "2140e826934629d9a43ba2bf4f2b1774": "请传递depend_app参数!", + "2ab5fb77429e37f42b87e205d6e51728": "请传递service_name参数!", + "9d6521661f6a152c21bf6d4305d5c9b3": "请传递app_name参数!", + "e020f13e1a68b8030d7038cea78b3aaa": "备份成功!", + "c4dcfb467d82071a7a4cbbe0b5036f9e": "还没有备份数据!", + "76b5c77ee72a9ffa0f4b3a8e0101ad41": "请传递file_name参数!", + "1281e3ed765ec369a06400340f4beb78": "找不到指定的备份!", + "012967525dac4f0c5395c210223ca2ef": "请传递file_name参数!", + "8cc2feae92bd228672051763130e6d49": "备份文件不存在!", + "3c06b7d1ee52e760b361d12cd00f55b5": "备份文件异常!", + "010c30483dbe836d24382a368f482770": "恢复成功!", + "543fa46832267ce6cb3b47594d8d8f82": "应用程序不存在!", + "c52891f1485d1070a2e063358ae71fa9": "请传递f_path参数!", + "df107ded5612d825c3db3bd46a9845f0": "请传递f_name参数!", + "ef41e47b4ea1bd4143562bd0989b9b20": "请传递f_size参数!", + "b9290da45e148202dccf0058dfc3b27a": "请传递blob参数!", + "a27dfcdb7619659552bfdfc79930b7d9": "已有同名备份文件,如需重新上传,请删除同名文件!", + "37a9a30931e079caf79fb61eed10547f": "备份文件上传成功!", + "490068785260b543087967659d79b496": "请传递状态参数!", + "1204853b15f4234a8cb88df5a46b5a42": "请传递启动/停止/重新启动/重建参数!", + "062f4a8230dd8af4311344fcdbf6f1ea": "卸载成功!", + "7b016fb85c09d39e89eb1875e590a6ac": "获取应用类别失败,请点击右上角【更新应用列表】", + "20552a0ed8eef740c631cc049fd940b9": "应用类型错误,请传入:{}!", + "c0963001ffeaec423d1be82d464d6a1a": "请传递 id/service_name 参数!", + "75d0c803cc4694e08d99d958ef762fcc": "域名不能为空!", + "676c8a7788ad0ddcb68d53fc7d960679": "创建baota net网络失败。错误:{}", + "23d07f1e537a8809b268a60a6881f44c": "端口范围错误,请输入0-65535之间的端口!", + "f26d903f2f99c2bb4a214a2dd863e8f9": "{}端口已被[{}]占用,请更改端口!", + "86c1887e12c52e7da3d3c413fe6e20d1": "由于以下原因,添加域名访问失败:{}", + "b4bf995bdf5a4506e8286bbd9b24fc2b": "请传递域名参数!", + "6473522415a76cf1e712b23980020814": "请传递disable_domain参数!", + "4522d1a945678e134f39e5909db6ac81": "请传递app_name参数!", + "6da74914983889333884da51c3aa400a": "请传递app_path参数!", + "8267489f1a242a5034b5ffd66fd504a0": "请传递memory_limit参数!", + "658658f81426b1d37bae43373d44498b": "请传递s_version参数!", + "6a40ca48521720e9a084fd682c55efcb": "请传递service_name参数!", + "e1bb243ae3776918bb07dbfdfd831a0b": "请传递allow_access参数!", + "98efbca9758919c9938e5ae4002ac085": "域名不能为空,否则请勾选不设置域名!", + "82ee36ab230ba75855c15b9be4ac8a4e": "停止失败:{}!", + "845d40e701d5c584ae4f059602b3f57d": "启动失败:{}!", + "d2c66f1c264e9a389a34f60d3a921723": "启动成功!", + "20f1c870fe256a123d1c17299a93a4ba": "重启成功!", + "c5838a6fdef9fed0165274f6ed50ea4b": "下载失败!", + "870a81aa5509bcd7aa51cf27e410eea9": "下载成功!", + "f70386f0f4846336b6eee06d16a55a33": "请传递应用程序数据库参数!", + "2fe5b2b5ae4c0c601076922f34391c6b": "请传递用户名参数!", + "b046515d91d43d56962b42eb216b11c9": "请传递密码参数!", + "e997ba4648bad603fc310169de46e0ea": "找不到指定的数据库应用程序!", + "2025d918448073508d336b72a7a28093": "数据库已经存在!", + "4a8f0a2ac362e62ba4e76f52b5791f0e": "创建成功!", + "76f3f12040afb77724966e2af67ab403": "请传递数据库参数!", + "bf483666a33d372f729985363d512d74": "主域名不能是通用 DNS", + "3c4b1f6d2d9ef27ace95adceea599588": "添加失败,数据无法插入站点数据库", + "20825a634340a0b49b1a5e7f2fe47ea3": "添加失败,数据无法插入docker网站数据库", + "653f81d3e5516550e6d5e35abcdbe97c": "[{}]是面板的反生成,[/]的http认证不能删除!", + "d4b66e7369e5077a3c31ad79629f0ab9": "请传入需要删除的网站列表!", + "e48121dc556643fd31b26c190eedbad3": "仅支持Nginx,使用前请先安装Nginx!", + "135f7ef9aeb50bf7b988416b0a679dff": "域名不能为空,请至少输入一个域名!", + "c82b42d921224a0699f854c28c2450d2": "代理目标不能为空!", + "fe092e7668cf0e9e6dafef6a1fa084a4": "Unix文件路径必须以/开头,如/tmp/flash.app.sock!", + "f68c204aa9e12e0513aa7a4569449cfe": "Unix 文件必须以 结尾。锁定,如/tmp/flash.app。锁!", + "5c23a6c025d7071599c70575dc858f26": "代理目标不存在!", + "2fba0b6c1602ec254b1bc06bacba575d": "代理目标必须以 http:// 或 https:// 开头!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path是根目录,无法关闭Show Proxy Path!", + "772c6f93b20b52d5c998f4b58dbcf8f7": "端口 [{}] 非法!", + "f76df64b8f66e4f6050adf633c91c7fb": "网站 [{}] 已存在,请勿再次添加!", + "6599f1c3d3d3760768d9023827e8edf0": "反向代理项目添加成功!", + "85e34f49357adccd76d557a540a2e5d8": "网站名称不能为空!", + "1daab0a25efad301906af4874ee4c8ac": "日志类型不正确。请传入default/file/rsyslog/off!", + "ff9e0ecf6c4926c0a309e67f9baedf39": "读取配置文件失败,请删除网站重新添加!", + "2a6176cc22256a713204964a34fd1384": "日志路径不能为空!", + "18292d8929b9f9b6639dcc6e49d4f4a7": "日志路径必须以/开头", + "306b5ccbae58fe7278c8e098b5f06f25": "姓名不能为空!", + "b9f153e64173504e3700aa30b08fa0aa": "Auth_path 不能为空!", + "c9ab8ba4f7de925b29414bbb86bd3d1f": "Auth_path 必须以/开头!", + "cd44f9dcf9679c8151ce2b721f2fc6eb": "用户名和密码不能为空!", + "6750646f694a0c3dd46f9617ff055e61": "HTTP认证中不存在[{}],请先添加!", + "714145aeae9a04f8ecf9e1f54072202a": "用户名不能为空!", + "36eb0a1bb3c002f5ed0fbf8f010881e3": "密码不能为空!", + "f20db7351e9cf57ecb9f79ad3e032081": "[{}] 已存在于 HTTP 身份验证中,无法再次添加!", + "218fd0a172e37293fc001328b3daca79": "[{}]是面板的反向表示,[/]的HTTP认证不能删除!", + "8b6cabd487e5ab76183addd53bea2d87": "删除成功!", + "3034cdc7475c3fa220d4092128ff9c48": "gzip_status不能为空,请传入数字1或0!", + "76661faaa298338bf731c737a62b7d6c": "gzip_min_length 参数无效。请输入大于0的数字!", + "f11df0d336c64058321a01bcbdc4667c": "gzip_comp_level 参数无效。请输入大于0的数字!", + "5d113183845fc6e26c05bc1218677a30": "Cache_status不能为空,请传入数字1或0!", + "a23b240364f5291f71d599e2355e6920": "expires 参数不合法。请输入大于0的数字!", + "c255b7e9dd800a8cd26ff83b3698713b": "Websocket_status不能为空,请传入数字1或0!", + "4bace8520f540a6ae54d48086a7465ba": "site_name 不能为空!", + "aed0d6fc7665b30b1db8cd429e48c90d": "id不能为空!", + "81ec4e731430cca9b3d8bff6372bfafc": "Proxy_path 不能为空!", + "9aecc647ffb6f126e5aa1f6c16af43b0": "Proxy_pass 不能为空!", + "d591e0043cbf6d14950a46178a537626": "代理目标必须以 http:// 或 https:// 开头", + "247d1a7dc144bd12d4c9f8797387babe": "【{}】反向代理中已存在,无法再次添加!", + "36a7891857288c55bc5d87c470212812": "身份证不能为空!", + "c8a68e4ff275e827bbbe348eddecbf2b": "反向代理项目删除成功!", + "88f9a8852b822982a9a3e839813d91bb": "域名不能为空!", + "85fb0c03511da1e4d308fd135dec4486": "域名不能包含逗号!", + "a1e7a2f08295c8f8161a8feb9e2110b0": "域名[{}]端口号非法!", + "5f77e0a83a9aa0e7e534e5136c99ab31": "至少保留一个域名!", + "b9902ea698ded06e8ef4f31ba1057795": "域名不能为空!", + "5f04c54facbae56e5cdebc22b5ecbf73": "Conf_type 不能为空!", + "bec317d58a8302e2aaf523e28f100710": "保存成功!", + "ba4088d3a70108e609823381c7f81f96": "oid 不能为空!", + "ebfb6fcc2f55debe2703d50d58255f8f": "key不能为空!", + "fc83b0fa2366a3136f1fd8874d0bee65": "csr 不能为空!", + "60f1b04984ea15b008a9ae1b2bd9e07f": "PartnerOrderId 不能为空!", + "a8fde220ad2740e38585d34948899556": "auth_type 不能为空!", + "b3ad191bcb992b29302385e446e78f8a": "auth_to 不能为空!", + "95725cbba013b9a62d4895a2f3e5a2a9": "auto_wildcard 不能为空!", + "08fd165421792573ef13d1a83e487088": "索引不能为空!", + "08cbd4b3fa3941156162657f2b69e8b8": "BatchInfo不能为空!", + "49d1b2d015f9e81d31ca60b63c2ef378": "force_https 不能为空!", + "21e0b44e0a302af58d59ca9d8948f4e1": "域或路径不能为空!", + "34a2695966750d96d6772ce00f0d3772": "重定向类型不能为空!", + "e3a270e8f43af2a339bfb2181ad83025": "重定向路径不能为空!", + "352289584d886d4f04591b6f9b7785b8": "行程不能为空!", + "ddcb1cafcc4b5e308f6057e07af2d10a": "重定向域不能为空!", + "58bad30cc21797d832b361fcedff61b9": "重定向名称不能为空!", + "320968539b06847a07f9c48f39a73120": "路径不能为空!", + "51d2fd3c34890a88eafbb2801fe0827f": "重定向已停止或配置文件目录不存在!", + "38e380b5535be56ebae6addcf29390ba": "修复不能为空!", + "ad89a60d7720b8bb5095f2752e5006ae": "Return_rule不能为空!", + "b74b269372107d024f6c9e13cf911a4e": "https状态不能为空!", + "cefc1b6af0b80a883304b58651283f02": "状态不能为空!", + "f8a019279d00484c29abaf1cb4b9260c": "ip_type参数不正确,必须传黑或白!", + "f8e8cf373fa65891fe5a6e65505d30d0": "IPS不能为空,请输入IP,每行一个!", + "0677c4ecb9efdab30c5077e69b1745ba": "IP不能为空,请输入IP!", + "b8c0bc6452f788c758a4f7bedd761757": "没有代理信息!", + "70a9558c31a978ce2b1297a2a21c1317": "找不到此 URL [{}] 的代理信息!", + "82ca4452a42da1388fd435ca8a2801e7": "Proxy_host 不能为空!", + "6dac7e9b2cbc32789bde984cddb699f4": "Proxy_type 不能为空!", + "0dc7d98b8a487dfa0794f7c792240e4c": "Unix文件路径必须以/或http://unix:开头,如/tmp/flash.app。锁!", + "5c6869f159feda62d0e6441f3eb1f97c": "全局websocket处于开放状态,不允许单独禁用该URL的websocket支持!", + "ff6c12be57557ce452395adac7e02b30": "Oldstr和Newstr不能同时为空!", + "8c9bac9aea3d7a22d3789f837dd40d3c": "Get.sub_type 只能包含以下字母组合", + "2ac2f7203f5049438855d537f52cfee4": "您输入的内容包含中文。我们检测到当前版本的nginx不支持。请尝试重新安装 nginx 1.20 或更高版本并重试!", + "f1522550bdc24955aa540480fdccaff5": "检测到当前nginx版本仅支持默认替换类型。请尝试重新安装 nginx 1.20 或更高版本并重试!", + "0d57a0216b328aeba6ef5fc3cbf3b7e9": "替换前未找到内容的配置信息:[{}]!", + "e00f42f6421b797439a64e3ef24c132a": "site_name不能为空!", + "a6fd23485ca8abe4ab7d0580d28c4bf9": "清理成功!", + "61e795d02f4452904f2574d936c571e6": "清理失败,缓存目录不存在!", + "3c99c479e3c65eac24272afc13cec604": "https 端口 [{}] 非法!", + "b9629c2dea839825c2f1916b44a154a1": "Nginx 配置文件错误,库存!:{}", + "32b169f72b293ef80d35435e9894f8e2": "正在初始化", + "58ba018dcbe1c47ea0a293fdcee21e63": "面板安装", + "67355337eaf300b91de09a8083c93ebf": "本地备份", + "99e8ebaa5ad2fafe4e141574f6b4a73f": "文件上传", + "bd6d996cdca2252e9b99253b2a587287": "数据恢复", + "03a2bd12e8b51af547a08985d4882d6d": "迁移完成", + "0fd957e5b2d9c535c344e9a8f86a225c": "无法读取任务状态:{}", + "181f2da22cdbf536f67e46452108d95d": "无法保存任务状态:{}", + "4439b17c5e0977e0c73c643cea950424": "无法保存全局任务记录:{}", + "74c6e9c56a9d836f2dac86fe8e0770e3": "无法读取当前正在运行的任务ID", + "62688aeae1c92fc7d92caaa83f22a411": "成功检索任务状态", + "087b165a5f0bd5a04f2ce4be7dca14dd": "没有正在运行的任务", + "37a5c6e23237ddff7185d375c34eed60": "任务 {} 不存在", + "f613fc3fb0aee3affafcae3477d42bf8": "任务已在运行,任务 ID:{}", + "367b4a21be07204266d306508cc92dc7": "迁移任务初始化", + "793c8358adb487f79f85acfdc44d54bb": "创建迁移任务:{} -> {}", + "e597529fcdfa1dab69eadaf1c44088ba": "迁移任务创建成功", + "c304dcebe892b468725402a369b3dd46": "连接到服务器 {}:{}", + "d2f3c14129fe059cf6d99f1583abc23e": "[+] 已成功连接到服务器 {}", + "ae3c4e96fa1411ea25c05ce9a18ae2ae": "已成功连接到服务器{}", + "c7203791b356c5f3faf5d8c43d54a575": "身份验证失败:用户名或密码不正确", + "10adeeeb866978b5ae637ae2bc13fb96": "SSH 连接异常:{}", + "1e36faff765dbbbe631f424983a21783": "网络连接错误:{}", + "f9d5c96265bf9a99b163f5adf699cde9": "无法连接到服务器:{}", + "cd4dc264f41eda817374af0bddcea259": "使用 RSA 密钥连接", + "5e1b5e437b38bfb11b1e4853f8838d3f": "无法加载 RSA 密钥:{}", + "fb947607c0d2814eed45d41a9e3227f1": "使用 DSA 密钥连接", + "1cc35e618813746cb1bd4658f7ac61a0": "无法加载 DSA 密钥:{}", + "e9ba4ba778d8a0b4423c09ff6cb32726": "使用 ECDSA 密钥连接", + "f618338d0d56f440d7fb1b59d8add72c": "无法加载 ECDSA 密钥:{}", + "f579ce14b1e98ae9ad4d392279730d9a": "使用 {} 键连接", + "696797724fc3db3f012761759f720c23": "无法加载 {} 键:{}", + "fa4e18c6d3b0c0fa6a5ac1303dda02a7": "无法识别或加载密钥,请检查密钥文件格式是否正确", + "369709628dacb54949b2c711acd93968": "[*] 正在尝试重新连接到服务器(尝试 {}/{})...", + "88aefbc5392deac3ab63223d6d82b66b": "[!] 重新连接服务器失败,已达到最大重试次数 ({})", + "908300abff5dfdf254726c2193f3e550": "重新连接服务器失败,已达到最大重试次数 ({})", + "5842d2e8785c14b1e357c4ee1dd1a0c6": "[+] 与服务器 {} 断开连接", + "7463b0247d5614df91270544c6b944bb": "[!] SSH 连接未建立", + "43234c4b446ff41810dcf807d317cba7": "[*] 执行命令:{}", + "db4d271e5cb8fe3192ed73bd624a86fe": "[+] 输出:", + "c519185a1f47d37b21866e5f05928dc8": "[!] 错误:", + "6a2909a7dbeca5d8c85843ecd4cd3fae": "[!] 执行命令时 SSH 连接断开:{}", + "88783238ef5d081aade9e63160d329fb": "[*] 重新连接成功,正在重试命令...", + "8692bb08477b83615b1ae995552e2c92": "[*] 正在检测服务器操作系统类型...", + "95adf53ab7c91ed98c77d3c0e38a2a1a": "[+] 操作系统类型:{}", + "2ab043e41d8fd10931cfa912b4b11bf8": "[!] 无法确定操作系统类型", + "2d23313d6e3e201771154cf99d5dab34": "curl或wget安装失败,请手动安装", + "b44992b4430f7759108e5242176b7871": "[+] 已安装curl或wget", + "4ba07005cef8f98a0625a7d1eb0a142e": "安装了curl或wget", + "e3a56811a35322959c535d38d2e91f7e": "[!] 未安装curl 或wget,正在尝试安装...", + "613a8be93fcd44002e549e0767c85a86": "无法检测操作系统类型,请手动安装curl或wget", + "8a4d20948ccc8034e3118af3bb683da3": "开始安装aapanel", + "df97b5d4f31c5cd4a3611774abb6de52": "[*] 开始安装 aapanel...", + "d91a58f92edb4b30de7e5399908922da": "[*] 使用命令安装 aapanel:{}", + "f20af8613aed0194f191d660977de57c": "安装完成", + "4357633f73240ceb1b14d13877a90ac2": "aapanel安装成功,正在开始备份任务...", + "f109f7ce6f98f5a3cbf2d273c5749911": "[+] 地址:http://{}:{}{}", + "79fca63f99a824fc4015d93604433ea1": "aapanel安装失败", + "b1508aec34af599979d919e20b64e385": "安装进度:{}", + "7b6725a19c46bc6d47e5a49c5764991f": "[+] 用户名:{}", + "cd3d4cf5a75fd5f9467f6d0f196dbec8": "[+] 密码:{}", + "6703def4d1bfb870f64ca461a7bffc0c": "[*] 正在创建备份目录...", + "c550206bc8daea4b287573ee31f839de": "[+] 备份目录 {} 已创建", + "9e3f708636e9ea820d608629fdf47c65": "[!] 无法创建备份目录 {}", + "9f22d9cb59270cf0f6382a66a63ed8cd": "无法获取远程文件大小:{}", + "ff490ab3be22afd2f2a06842935eedd3": "备份文件{}不存在", + "e69d7c21f42d046b365c56045ffca873": "开始将备份文件 {} 上传到服务器", + "df6ecb94c7a5f06b78d0bde168e769e9": "[*] 开始将备份文件 {} 上传到服务器...", + "217c9c3fec268ff4d6c35bd4d5d564ea": "创建备份目录失败", + "2942f90ee3b191c0b98add719760e356": "[*] 文件大小:{:.2f} MB", + "08b57d594c99a8339461fe78ebf95f1a": "准备上传文件,大小:{:.2f} MB", + "2f24607a7361d721459e3a12584fd340": "文件已完全上传,跳过上传步骤", + "4d57fe7dc3462ad55cc9bb1623a3eb5e": "[*] 检测到上传文件不完整,正在尝试恢复...", + "9c30f21dd1175d2e9b7503e873a52b2f": "[*] 已上传:{:.2f}% ({:.2f}MB / {:.2f}MB)", + "04e05f53e1a18a781dbabae6cdd0e495": "检测到不完整的上传文件,从 {:.2f}MB 恢复", + "426e1c0eadfad630c5433af2757cee8f": "[*] 开始新的上传...", + "61eb03fffeb48e199890a5a8a24a5dc9": "开始新的上传", + "148b2912de8b29f47dc234983554ea2b": "\\r[*] 上传进度:{:.2f}% - {:.2f} KB/s - 剩余时间:{}", + "470e645fe1f07b6d4e77fc7b16b2a9a0": "文件大小验证通过:{:.2f}MB", + "40070e1f0867f97db0fa33039fae2063": "文件上传成功", + "95dd52c0ce48e72f2021dee1a7a86433": "文件大小不匹配:本地 {:.2f}MB,远程 {:.2f}MB", + "f7dac1a705d6bd05b3a42086923cf932": "上传中断:{}", + "554472ae3f1db37c67fe53e4a2fb53cd": "[*] 将尝试从断点 {:.2f}MB 恢复(尝试 {}/{})...", + "1e6aeb0dc8e2567bdec31246c27233a2": "文件上传失败,已达到最大重试次数", + "31c53955195484e892d36d1815e2e5cd": "[*] 开始提取备份文件 {}...", + "21ec696ab5bc206eac1cf62268824cf0": "[!] 备份文件 {} 不存在", + "e344a18f13f2b196f3b56938c824dd5f": "[!] 无法从备份文件名中提取时间戳", + "d4a81ed03254ca37166d84ccb7de0bd6": "[!] 备份文件提取失败", + "0838e64585e87c91bdfa34890445346e": "[+] 备份文件提取成功,目录:{}", + "0fddb4bae41a7fc9e2de8896d8cb819f": "开始恢复备份(时间戳:{})", + "5a275e6386d2d3c647f6ccecb422debc": "[*] 开始恢复备份(时间戳:{})...", + "e9b7b10566a85a5356096a630d64d2d7": "[*] 正在等待 aapanel 服务启动...", + "8d7b4f7247dec431d103af1ce34d0233": "恢复模块不存在:{}", + "304e687ee7c78fdae6e70226f61d9708": "正在执行添加恢复任务...", + "ac3f9da9a646fe10c989e74b42fe5e8e": "[*] 正在执行恢复操作...", + "ac6fa0596fbb508fe61e44848548b50c": "执行恢复命令失败", + "846cdc02545d18e4b5308d076aa93e95": "备份恢复成功", + "062ca961d059ebd358098ffdb12f42bb": "备份恢复失败,请检查日志", + "f857f6dc6a146a3b125ea3253052ca43": "启动迁移任务", + "53779b59d2ae1ff96f4afdfa6bbc6c7f": "检查是否安装了curl或wget", + "39679b63dca413a83cf5b664d46c929b": "curl 或 wget 检查已通过", + "0de6a624fa64af38f9a880430e72607e": "准备安装aapanel", + "28dbda7cf25735198d7695702b18aad5": "安装aapanel...估计5分钟...", + "7a58e7034a9db769af197c85beccafd5": "aapanel安装完成,开始备份任务...", + "a850af0d3bf3586319178228af5698bf": "开始在本机上执行备份任务", + "28ec7aad1cd6afdbbc35a6aeaa95761a": "等待本地备份完成", + "82550a0ece235f0d0b363135e8d94d28": "备份任务已取消或失败", + "c8f2865e1e43bb2fd88a0e16f3cd4c17": "备份任务超时,未在指定时间内完成", + "4bb768be41853a0aed9f56d5907be1bd": "获取备份时间戳:{}", + "c129e18a625645767772504cf77e279a": "无法读取备份时间戳", + "39869251ca57148d747cfd6ee60bf604": "备份时间戳文件不存在", + "60f1d8c19f5fbb046deac4aab745f63c": "备份文件不存在:{}", + "d67c60b6be8ebfd9f73816a7e8e4abfe": "读取备份文件路径失败", + "9e6caab47781582f556a81245571d8a7": "本地备份已完成:{}", + "b4df9a8cca277b49933dce7c8be7ab20": "本地备份完成", + "6c97fd171b87d3f954040d4dea833cb9": "准备上传备份文件", + "6384458c2647bf7e1af9d942aab00d6d": "准备上传备份文件:{}", + "e2fdcbc1d4e8b1fa77a161c4448a4bf6": "准备上传 migrate_backup_info.json 文件", + "6533c064fee3726a0f1caf89a423fd3b": "上传 migrate_backup_info.json 文件时连接丢失", + "ffa61675a37203858ec712cc635fcbdb": "migrate_backup_info.json 文件上传成功", + "d192d35fb79e54273bedf84f9ee3d772": "无法上传 migrate_backup_info.json 文件:{}", + "fdf17802146b46b291164d7c933950c1": "备份文件上传成功", + "97dc827b342454de3a5f9416ee1e513b": "准备提取备份文件 {}", + "67c40d3544174eb6d6fa63dccaa6bf6e": "准备添加恢复备份任务", + "7ec7fd83e38b6d53374f37bd32a3da09": "准备恢复备份(时间戳:{})", + "7fd19264d09d2ff33f1f8b5867354fdb": "备份和恢复过程中出现异常", + "ef05e1295515a64356e53d3c11498f25": "恢复备份任务添加成功", + "f90b7afaee99210e74fa3bc47d4f4918": "所有迁移操作已完成", + "9e5e797901f9870ebf7a96266bc1e972": "迁移任务完成", + "dd2a8fc49fd7c92616c228c8039410c8": "迁移过程中发生错误:{}", + "1a119744a8cc132d708306e1fb90543f": "[*] 正在验证 SSH 连接信息...", + "ef3ae6d88f5637005f063685ad50c625": "[+] SSH连接验证成功", + "66db9584d2d99eeb99a90f5f4c52d944": "SSH连接验证成功", + "a0bc8a00e83b79e42010343c31924dd2": "SSH 连接验证失败", + "e871fe05e99da0c88a09686c3b7c88d7": "[*] 正在安装 aapanel...", + "1f3ff88a0fdd87e71bf237f3805dccde": "[*] 正在上传备份文件...", + "c0b860cd7155af1e642fd0c41ee29262": "未指定备份文件路径", + "fa1ab4e94bafd1f5b6ea55e3e9dc33a4": "备份文件提取失败", + "d36c2f46c959ee1fb416a947f8e75a47": "备份恢复失败", + "de6b9cefab1a252ada4463ee8f015f07": "[+] 所有操作已完成", + "496249e9e1cd99dd54146ed6565fe3f8": "所有操作已完成", + "20c605607dbf9d6d1d7bb62ddc792ee0": "[!] 执行过程中发生错误:{}", + "4020efc99e8c60a0e7d27a5598d501e4": "执行过程中发生错误:{}", + "55be882ba3aef502f3a93ad90bb9d613": "[*] 正在执行备份命令...", + "1a6da8233a4a66ccc90d767967f22d35": "[+] 备份任务添加成功", + "af3c2b419ba0779d81ac91cd3ca246b6": "[*] 正在等待备份任务完成...", + "c8eb8110632bb540ca112819e96dc770": "[+] 备份任务已完成:{}", + "0d1135061a5b00b63bdb12c2f3c9461f": "备份任务失败,未生成备份文件", + "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] 备份任务已完成(超时后检测到文件):{}", + "637452f337bdc2991f23593124d62440": "[!] 备份任务超时且未在指定时间内完成", + "ec3a935e2442ef55924ad758e17b92cb": "包装完成", + "ffad0690fefe9ebaaf4d847a42b19f90": "备份配置文件不存在", + "40379fed8ad84c0869a1b3e94f8a56fb": "备份进程已在运行!", + "20bf8648c4a3ea91ad3057f9aeca5f88": "开始压缩打包所有数据", + "dc72aa669e82dd5ec7cff2ed35f2762d": "所有数据的压缩和打包完成。数据大小:{}", + "bacf615d02bfa3c58728f62490489e9a": "备份完成。备份文件:{}", + "ad69c11076734ffc4c0532b54e6f5be3": "正在将备份文件上传至云存储...", + "c3a6378e06ff3e479a85b0f15c41cb1e": "{} 正在分块上传...", + "c722636ded0be8237386a427242ff3b2": "{} 正在上传...", + "bb914d2441ee988dcd4d616350272f10": "上传到 {} 时出错:{}", + "8085ded0444fcde19b9ea4d365502f67": "找不到备份信息", + "b02ab16f5a7d45a871789d3944a41c69": "备份已完成但无法检索时间戳", + "46f183fbf6bd1e64702d6930667cf117": "检索备份完成信息时出错:{}", + "2cb88461938b0c418391af13f65a727d": "备份进程正在运行,但无法检索时间戳", + "269159feb2faab7515c90b9f5de791a5": "备份配置文件不存在:{}", + "daa55a73708f906c8cee0bb87284740c": "检索备份进度信息时出错:{}", + "01ecbbb2b353cf4d915bbe1c1cd5505c": "服务器配置", + "ca3c22c9c94069053b85db0f50373639": "备份服务器配置", + "b16acd08872bef5685bddff85a29f625": "数据打包", + "d41c74fcc2dd04880a0285c147188bf7": "准备备份数据", + "806cb06592627effa1a4073fa2f66ce2": "恢复过程已在运行!", + "37dfdfda0ab7a98140943484fe70a76c": "开始解压数据包", + "c415a70c8540eb59121587b3ab5d5cfa": "开始恢复数据", + "c76bac64baa6fbf5c51ec144c70d91d3": "数据恢复完成", + "da7f5eb715a1a1a2378ee56a5ee24bbd": "数据恢复失败:{}", + "ca0af2ce76c89e3bfa4bad3105c21203": "恢复已完成但无法获取恢复时间戳", + "0f4f13d63e87130a24667c6bd4cb5e2e": "恢复配置文件不存在", + "0c5d25bf5706190b8ad0d8289a93aeba": "获取恢复完成信息时出错:{}", + "667a68bf7113541f218081fac58f6815": "恢复配置文件不存在:{}", + "e7a91a4400b67b84e7cca61642b93f4d": "获取恢复进度信息时出错:{}", + "1b4c2c21e77ac36e4097a92dabd55bc0": "未知{}", + "c1173fa3bd3d44530eead89e7edeefe1": "数据解压", + "a76a19147d36f4f2d6801cf602de2718": "未知任务", + "5ba4673aac259be67bac9db8cfc9c5b2": "准备恢复数据", + "5b43e0e228169e5df9cec81876cd3710": "错误:force 参数必须为 0 或 1", + "4c3880bb027f159e801041b1021e88e8": "方法", + "7d3c180ded4dcc8eade80cd031ab1b5d": "请不要频繁操作,请稍等", + "37b15a5d1e4fa625ea8996de5e378a84": "已成功检索", + "616e012bcc90980f6ddfd2b3c17345f8": "未能取得进展", + "9e0a136b55af822e72c8d6716d2d4bf3": "未知类型", + "6ac0b58e56cefd76e61bc840dfad94fa": "任务成功停止", + "b808472e703dfd53fdcb59fbe89e3436": "执行成功", + "12b65fbe011be723b4ae981c0d42c44d": "恢复任务添加成功", + "741e160bb129a548e26fbad37c8f674d": "SSH连接测试失败,请检查IP和端口是否正确", + "e0867cf8c8a1935e8bd681f0ff28a612": "SSH 连接验证成功", + "f94e94b4ec479336f36fdf9fe1004b83": "我的迁移任务", + "b100f6e1c91f013adf0ca5ce6606a89d": "迁移任务添加成功", + "fd0099266c1971c5c40036e615d67fd4": "迁移成功", + "87aa2e739755a6fea3a63876b5a1d48e": "成功地", + "d7db03701029007097b8e0cd61a983f6": "目前没有迁移任务", + "808781229f7b019ba6a44ea3871e3b6d": "读取迁移任务失败,请稍后重试!", + "e728b6a004aa5e61efd25bf815a6e290": "开始备份任务...", + "c9d48d6a4ebe28917b5439c91faaff68": "aapanel安装完成!", + "f5e7895e7c31fedd32b520012910f960": "迁移任务", + "3a94451860f0c20374128e61e8783d26": "面板安装", + "f02f38d885226197e729453ea104feac": "恢复任务", + "0ba29c6a1afacf586b03a26162c72274": "环境", + "f072f24284b47eaf8adcf88b29021618": "迁移日志不存在", + "9166b100905c2625ba9df2524f8c2faa": "SSH 连接测试失败:{}", + "3a02e4b05ad1b321e855aa6116699b6e": "迁移提醒删除成功", + "334afd10871f8c52a884e307d2e17ccf": "迁移历史记录已成功删除", + "2f393a2518f5668880822f47fcdb5cc0": "迁移历史不存在", + "df4bb29cbb7fe7e3dbc82e961d5b5b53": "准备数据", + "2b2a2a0b0596507029dd0feb9485a216": "未找到正在进行的任务。请检查", + "69d45b5b241dac0fa1efaf7b6966520b": "开始备份SSL证书信息", + "835601ead78ba62b89c4b27956645362": "{} {} 证书文件不存在 ✗", + "025de5f8c791241d326ec4e086e9898e": "{} [{}] 证书已过期 ✗", + "ecd204c03ea44719e6fa4ea25569266a": "{} {} ✓", + "aa6b67db23e9cb0b943aa6c0def92cb4": "{} {} 备份失败:{} ✗", + "ec56d7aedc9c5242d094ebbaeda5047e": "DNS API提供商信息备份完成", + "b561b1ca5fd89d639144a099f5fe096d": "SSL证书信息备份完成", + "7aa422d849ba11b569187382a3a509d1": "正在恢复证书 {} 的部署站点...", + "4573d024bbb8e1f8c8efb2582a6a01c0": "已恢复证书 {} 的部署站点:{}", + "baa339aa8e95d46851fd48574cb1d902": "正在恢复证书 {} 的部署邮箱...", + "9307ae55fb4a7b878e377790e040eec4": "已恢复证书 {} 的部署邮箱:{}", + "b057e2d52c20f76bf3c788eb9b4873fa": "正在恢复证书 {} 的部署面板...", + "41596c0d36a66c44434d5882c3cfa793": "恢复了证书 {} 的部署面板:{}", + "6ffcb0a3e8cdf728b3e7bc45ae221e5a": "证书插入失败,请检查日志", + "c8a71420e709d8a4d02914a78d9a0e06": "开始恢复域SSL证书配置", + "0672a3dc402dc9657fd0a0f1580d1c12": "未找到恢复数据", + "52f23f668fced51c3e25c781299fbff8": "备份目录{}不存在,无法恢复SSL证书信息", + "ad93ef11d3e4238618571f517e11e80d": "正在恢复 {} 主题:{}", + "c49480308ee71202cc5fff5ea96eaaed": "证书文件不存在", + "42db220bc931b97aecdef6b6f0362bc4": "缺少证书或私钥文件", + "9f88b7ffec183a54f2e7e6136b4f5ac7": "SSL证书信息恢复完成", + "5e211e4fb46748c1d243b59a15645df7": "启动备份计划任务", + "a9d58d413bd48f1bd7e8041b6d8ceab0": "Crontab 任务 {} ✓", + "ff0550fa0270ac20419790a51900d815": "备份Crontab任务完成", + "a7609aefd5330a1384704e73dc0b4dc0": "开始恢复Crontab任务", + "48ed083561c2f201d9fe52f6a35ee982": "crontab 任务完成", + "e9ed6b2a27deb5699565f0441dc713e9": "开始备份软件信息", + "e690c7866c5dbacbbc7860af5e6a3af1": "软件信息备份完成", + "cabf299a6cfa5874e23582c535f301c6": "开始安装 nginx-{}", + "33ec71107108ed89c0b526d5473526c8": "开始安装apache服务", + "b815f2a7e299ea99d41d665c728756d9": "Web服务器安装完成", + "70510d59e30015790f07ca53c80c5bec": "开始安装 php-{}", + "2de6c0aa3c26285104f898b368bcf287": "开始安装节点-{}", + "7d5cf115afd8be7c2a36d03b31d1ce44": "开始安装 mariadb-{}", + "92e77c2b107f440d6d54062228112f73": "开始安装mysql-{}", + "4b09abb2edd44a4510395a297a2ff155": "开始安装mongodb-{}", + "69fa45968c5cc7a9115bff54e70c95c1": "开始安装 memcached-{}", + "fbabb869ff01746bd144289622b277fc": "开始安装redis-{}", + "da7d69765f1876fba52c21a17e8c74c6": "开始安装postgresql-{}", + "99782b6a478e499d45a91f9d78e1c73a": "开始安装 phpmyadmin-{}", + "640c4e334dc9587e212d36e685059478": "开始安装 ftp-{}", + "aecfeaaa9e3bcff1f6169598772e90c0": "开始恢复面板运行环境", + "3b83e3fdb17c70ca190e263e0bd7173e": "如果存在相同环境将跳过安装", + "d4e8a75d522d3e77ae80eadd49b0865e": "远程数据库列表为空", + "5d806f11bb91996cafe7836b27a4e770": "Redis连接异常!", + "1d69261c05f6ce03d2cab5528d443fa7": "开始备份数据库数据", + "0cf1803cfdfda6f67d12fa7e1c4a25a7": "备份{}远程{}数据库", + "32d68be800692faddb12c5252fded05e": "{}远程{}数据库信息 ✓", + "0c64283397c43effb13a2cbe818ce929": "数据库数据备份完成", + "2f7d7cfc04be64fa087e964d41cb26b4": "开始恢复SQLite数据库列表", + "a1248c409fec22277ab13a6bb433188e": "SQLite数据库列表备份文件不存在,跳过恢复", + "d03ebecb5f420070192de8712926151a": "SQLite数据库列表恢复完成", + "ad6937d61b4d6e93a13f03308c66f2eb": "Mongodb服务没有运行!", + "f60644c6526c4d9afe5b20db75fc2e5b": "数据库备份失败,导出目录不存在!", + "161bb420493657920405937a2cf42c96": "备份压缩失败!", + "20a42330f9241c13c91e3e203449a8a6": "缺少备份工具,请先通过软件商店安装pgsql管理器!", + "7eff7c4aeb6bfe736f8a78c0096f92c7": "请先设置管理员密码!", + "6e907b499869ab16105a7aba198e13a7": "数据库密码为空!请先设置数据库密码!", + "d8a3336243e1c08e8a29c75af1eb528c": "MySQL初始化成功!", + "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL将重新启动,请稍候...", + "73af95fd2322196e0d9792df4ca1f566": "MongoDB初始化成功!", + "8c9718f3235e7c36c9f400bc68db1ef5": "MongoDB 设置身份验证失败!错误: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "PostgreSQL 初始化成功!", + "c46866b7bc29cf9d478835bda10e43ce": "Redis初始化成功!", + "4e889bbbfc5e25ebf611e5764b8a358c": "开始恢复数据库", + "c9206e74b8d32e1e0a5710c0fe322cee": "正在恢复{}数据库{}", + "ecea29915732c5d0001ece74601f3d20": "{} 数据库 {} ✓", + "b61a878149263a02fa99cc635409ee25": "{} 数据库 {} ✗ ({})", + "3fa7c5a9beafa67bb44999cab5cff52c": "无法恢复 {} 数据库 {} 原因:{}", + "e89775cca910deb5e484f631606cceb1": "数据库数据恢复完成", + "9750547146e22f364299bc5f561a3fb6": "开始恢复远程数据库", + "23f2db47eb6ff16785e5a222c8657f93": "远程数据库恢复完成", + "b17f6f187c4ecfd392c6367ec2ba6498": "{} 备份 ID 不存在,导入终止", + "3e686ed1f6a0bc9ccba7a3cc119b5008": "{}数据库id不存在,数据恢复终止", + "611881e9f5d01b22a447c282aa8aca23": "MySQL 数据库 {} 已存在", + "ea31cbc6134300ca816c913d227b605f": "无法创建 {} 数据库。原因: {}", + "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "数据库已存在,跳过SQL恢复", + "556843e4a406b780b0cf83c43366a8dd": "导入成功", + "af71c2c0e3813c9a77fe48507ea8e4d1": "MongoDB 数据库 {} 已存在", + "84b4d8c8cdd02488c0f868e97b22a3c2": "创建成功", + "10aec3a9e9564a9851c117b259245136": "数据库已存在,跳过数据恢复", + "b819d4259ca3ab0042562acea69e83e1": "PostgreSQL 数据库 {} 已存在", + "31b21eca2e62de420cf05e8135089114": "备份文件不存在!", + "3eed4851380704f25eec3921befde38f": "恢复成功", + "cbea0a592d6a3c48f2418d687cf54200": "开始备份终端数据", + "e7e06b2dd59401dcf79acf2e3124d2fb": "终端数据备份完成。数据大小:{}", + "a273d4d4d0cf13abc1d7a4f96b8c851e": "开始恢复终端数据", + "1a15a2b43f1dd92e836a592fb180843d": "恢复失败,文件不存在", + "95d831166994e434da49f3ed70b73e8e": "终端数据恢复完成", + "e3a04ee4c0a034510866948e571c7966": "开始备份防火墙数据", + "9a176a20c15e3dc096ed8bc5a05182ba": "防火墙端口规则 ✓", + "ce693968cbf6e5f66af91e3dd2317d78": "防火墙 IP 规则 ✓", + "7ebd5e6b35357be0d5079f674f68ed8f": "防火墙转发规则 ✓", + "8dfa78d85bb1d152b0cafe398b27e1ae": "防火墙区域规则 ✓", + "927bb2298acc2c29d1beaff4d1656371": "防火墙数据备份完成", + "d076d2dde53272dc55d47f34a465ebef": "初始化防火墙数据", + "3e0b3a3e90cc4a1f5abbf3fd1a38c2b7": "已安装。", + "d1b0c3d7a1b5f80626ec1a2395b4f990": "开始恢复防火墙数据", + "1f35b1eac1045718a64b4133a8e8829b": "开始恢复防火墙端口规则", + "a168f915263109733b87807a0db41e01": "防火墙端口规则恢复成功 ✓", + "ce04afdfe07dead0b0fb34e6bc00b6e5": "恢复防火墙端口规则失败", + "c32b29f59e8b553998c75c5d7bc44dc6": "开始恢复防火墙IP规则", + "b68673b625a1d48b3953e37bb39fcbab": "防火墙 IP 规则恢复成功 ✓", + "ee0294aac018e0ab5f4e5e020f8d867c": "恢复防火墙IP规则失败", + "326c03834ea4914dbb02cf04e0c0164f": "开始恢复防火墙转发规则", + "b077ba90ec76f05d0e541733e8291e3f": "防火墙转发规则恢复成功 ✓", + "5ed68fe9a3e0530485018c0704d91035": "恢复防火墙转发规则失败", + "03f3f31fd240913a083a78fc2d60f6f8": "开始恢复防火墙区域规则", + "6f9922502feac3b7e6ede129664e3e18": "防火墙区域规则恢复成功 ✓", + "771b376bf4473fc2f1cea6958de2afeb": "无法恢复防火墙区域规则", + "6331b46ffa70ff97b558022d5ae8098a": "启动防火墙重启", + "1bb2a65f17d7e3c685f36f7ff1794338": "防火墙重启完成", + "246f6edb1d9df9b3abe78fc810876c28": "无法恢复防火墙数据:{}", + "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "开始备份站点数据", + "c886466d255b20be0dbde7f1b44b7f20": "正在备份 {} 项目:{}", + "7ecf25c18499d663d2e636d0a99f73a3": "{} 项目 {} ✓ ({})", + "0fc5eeb9bebed19653578a5df99d3e6e": "站点数据备份完成", + "9a2e8778b2a816fedb9f83afadcc2341": "开始恢复站点 Python 依赖项...", + "fd16d36423b43735556724e0395e8f91": "站点Python依赖恢复完成", + "bbf57ca8231bce958a3e528a08491874": "站点数据库插入失败:{}", + "389f018ba17dc25cb23a5300d8f630db": "站点备份目录不存在:{}", + "21654e03b247d5e25abaa0ad542883c0": "开始恢复站点数据", + "c8cecd19f4f4a680a5879f828d1c5578": "正在恢复 {} 项目:{}", + "35850d3654332477522ee06c756a3c85": "无法删除源站点目录:{}", + "c88b730f7a6a312159272ce532947de2": "{} 项目:{} ✓", + "24ee51964e4ece856493ca28fdb075ed": "站点数据恢复完成", + "483829cb5ae13bb190eb59acdf4f3231": "开始备份邮件服务器数据", + "8c7a0774ab14bae83a69b8562102fb0a": "邮件服务器数据备份完成。数据大小:{}", + "e8480272035737a247832288f618c270": "开始恢复邮件服务器数据", + "e058c7e1fd9cd1a4fd7ac7240a7765d2": "恢复失败,文件不存在", + "6e6e9dcfdf7bd846ab85a4ff0e0e2f95": "邮件服务器数据恢复完成", + "1502c42b339a3dfe20e4c95186b38dc3": "开始备份FTP账户信息", + "b5cf2f2c48fb5978825d3341759dd6d6": "{} 用户 ✓", + "120446d8a303de2396a1bb62ba8e8755": "无法备份 FTP 帐户信息:{}", + "b18010e000c073a3587a89b2931c2770": "FTP账户信息备份完成", + "c9073077bfd7adb73cbe253177b08833": "正在恢复 {} 帐户", + "c5df3d6bec6157b48fb24bf8fe2a2add": "FTP 创建失败:{}", + "f3f8d4ba630fa6a7de1e9f4e34bad5dc": "{} 帐户 ✓", + "af4ff8fd3803d5496f74604eb1665e81": "开始恢复FTP帐户配置", + "2bf94c9147c8220fc83f955175216c40": "ftp: [{}] 帐户已成功恢复 ✓", + "9417f3027d6326176c986ffeee1f4491": "无法恢复 FTP 帐户配置:{}", + "8ed95b2c3c38acf7e9532a582f08bb86": "FTP帐户配置恢复完成", + "49237b104331e8724e521b2fe6fdf6d8": "开始备份插件数据", + "26d785a1a32377e0e0e9498f4a7da12e": "Nginx 防火墙 ✓ ({})", + "7f578816e3867140ee56ccbbc1d69f55": "网站监控报告 ✓ ({})", + "ff083aca075c6543c2999781b6677c19": "企业防篡改保护 ✓ ({})", + "2f29dad748ac1d8d50481ecbd7e05091": "系统强化 ✓ ({})", + "79bb9b38c599612b8b8f38ddc50f5c25": "开始恢复插件数据", + "ee84e47223f5ce39b8bb239376db4af3": "如果迁移的机器没有绑定aapanel用户并升级到专业版,可能会出现插件恢复失败的情况", + "30560687e27ef30b6f1cde26359eea6c": "开始安装Nginx防火墙", + "a776b4ccf7343a25223817c8597ca7cf": "Nginx 防火墙 ✓", + "d0c97e94eb5061783de7bbad8e7bd295": "开始恢复Nginx防火墙数据", + "0010c09bd9f322c3b88a89dd0b52c831": "Nginx 防火墙数据 ✓", + "427ad80bf462a92719fcff5c1a1be755": "Nginx 防火墙 ✗", + "29ad27f749c3f913779d432115de597f": "开始安装网站监控报告", + "66f3f8adc854963e94a643b706157309": "网站监控报告 ✓", + "a0dded50b067929299258b3c8fc1b0e6": "开始恢复网站监控报告数据", + "bd43add14ebbd0f448c207c48e1d5ac8": "网站监测报告数据 ✓", + "a7b8bc831a9b36cc5127b5f8ecbec22a": "网站监控报告✗", + "c922c95c5f7973050d08412a26aab462": "开始安装企业防篡改保护", + "31d844f4dd95b8a71e8ddbd1b9912ae5": "企业防篡改保护 ✓", + "8fcd5da199e1e04830a686a576a2e914": "开始恢复企业防篡改数据", + "941b78173e944c6737a858bada098311": "企业数据防篡改 ✓", + "50bcd3813a4b18663b0bdc29f73b8c90": "企业防篡改保护 ✗", + "cdcfb9e176572fe14bdc4c88474d8baf": "开始安装系统强化", + "4d86b9c9f554fa3d477a86d2f62aaa1b": "系统强化 ✓", + "5633c4d754985da6c7fab116964ac501": "开始恢复系统加固数据", + "bda583fc184a8e079a37e169a9614e10": "系统加固数据 ✓", + "479557cf249b3145d91a94ed130c5ecb": "系统强化✗", + "746e85b89c25244ae397c06029badc9c": "插件数据恢复完成", + "256c9a85375f57f2dc9f6f318c6578f1": "成功创建网站 [{}]", + "b1bcc839644a9a611f9d8e2e1f63e0d0": "文件名太长(超过 255 个字节)。", + "29886cc45dfd7d6c3177d4a6ccfaae94": "完整路径太长(超过 4096 字节)。", + "a3b7d5cfd749d2f8c5af2a8f45f002ea": "无法检查文件路径:{}", + "8e6595abbb40f247c74fffdf61bd5a00": "设置失败!请尝试重新登录。", + "a499f309ac7a223d611d7a0a85900342": "没有找到重启记录。", + "d23fb11ea541cd5f1c0b05851d54fd58": "标记为已读。", + "1983b37067c7e94095a5113786fdef9c": "编辑失败,连接docker超时,请重启docker重试!", + "9e90efb62702b147b71e8731290caf44": "镜像[{}]不存在,请尝试勾选【强制拉取镜像】后重试!", + "1f004e412319b7ed472624e011b3d2ba": "更新成功!", + "a2ea046c20d2da5cebf2dea01a62dabe": "更新失败!容器状态已恢复", + "f9a48b804d917398e795016687f3b0f4": "请先关闭【企业防篡改】后再尝试!", + "ca1bc3e1d32b99b90395da47b88576a9": "参数错误,请传入:ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "参数错误,请传入:_ws!", + "6c3e5d603d8845422e861fb0b4eed350": "一个配置项不", + "f324009782d2d9e73d1087884ebc2c4c": "Docker root不能为空!", + "538960e1336f919e37a0d2c024c56830": "当前Docker根目录就是目标目录,不需要更改!", + "a848bbd79221dfdce1c9dca536dbfada": "代理设置的 JSON 格式错误!", + "edf6eb680187066c4dea216b3b20d6d2": "代理设置成功!", + "b01f9411136207ad7df28b9bf2387e2a": "升级失败!失败原因:{}", + "da896b628e3ded58445e4b015320f327": "重载失败的原因是:{}", + "efb869976990f78b3d6fcbaf270e3323": "重新加载成功!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "全局配置文件过载失败:{}", + "75bbb7a00c3b5b510913952fe089f52a": "参数错误,路径参数!", + "273609d18876f5f9e3f021032e5b57a3": "设置失败!", + "0720c6c4f478b3a374b4a438f7cf80ad": "导入镜像失败,连接docker超时,请尝试重启docker后重试!", + "22cc0388137842df9649b3bbcff345e8": "如果镜像导入失败且未创建临时容器目录,请检查防护软件是否有拦截记录。", + "0568e5e8aa7c811dd420c818189a0d46": "几秒钟前", + "53c53a79f864561f8b6886b3dde7cd51": "分钟前", + "f329a0dab82282e50e3aea9260e95d53": "几小时前", + "7a1af30a5ce889031cbc2472766159e3": "几天前", + "558a41d55884223583b3542e802d2b64": "镜像名称不能为空!", + "0e8623af4dd4d3b732904872d22fbf83": "网络名称不能为空!", + "5aa2044b58e63d58ddecc69421802404": "网关可以", + "ceaa20eefd6749452a947c7f5dfa4eb0": "IP 范围不能为空!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "创建网络失败!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "网络名称:[{}] 已存在!", + "9cdc09516d85ae057d1d9bedc988849e": "创建网络成功!", + "7d643f192968be3f8a54be28592e9176": "扫描图像失败:{}", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "仅支持容器和应用程序类型", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "应用 {} 的版本 {} 不存在", + "a5c1e82e4d1142b8c7e0bc1499446181": "未设置 GIT 地址", + "4e24bbe093c9dfb90092a0f4e71733dc": "分支名称未设置", + "b3c02fc58b92f549f529992c8a696a66": "未设置 zip 文件路径", + "eecf07d92b354565df633b06401206a1": "请选择文件路径", + "795d1693702d930f7fc18edfb0f1c0d3": "MCP 服务器配置错误", + "a16d1dbe265c57e0417ae396c3c30043": "未找到服务 [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] 未找到图像", + "4de8e45b499205551f4a09fd074e5246": "缺少参数!ID", + "02e85c0a0fa01fabdb5426af13e87853": "缺少参数!应用程序名称", + "d910ee67a0875a17b6e663f9e19369a4": "不支持此应用程序链接!", + "32d030406e8d755a59468a50bd385b22": "获取容器失败", + "c8e0f1ed3c37b015ee446297591d172f": "缺少参数!应用程序名称", + "dad9445733497150b5f2cd29a5aed506": "应用名称不合法,请勿包含非法字符!", + "a04daa98db618d6c2a19aeed5af39448": "找不到指定应用程序的 docker-compose.yml 文件!", + "74fd3ba5b92aa59e471161d2a585a93c": "model_name 参数不能为空", + "760a1226f2ba701b04963681ab97d575": "model_version 参数不能为空", + "2a88d88050ddcc0e28f0da4576be2232": "service_name 参数不能为空", + "fd0f83d70400b1dd9f6ae9c093638411": "获取容器信息失败,docker-compose执行异常!", + "2aec223006d3894d3c1a48bca642c141": "模型正在下载中,请稍后查看日志", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "删除模型失败,docker-compose执行异常!", + "d75a01e0d2c0cb8dad89216653024903": "模型删除成功!", + "f0501638237d7e8f934ec55ac3ffb20f": "如果安装失败,请检查网络或手动安装git", + "608113c9694987fa65b22ecb164aee59": "环境安装成功", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "apphub目录不存在", + "7ec67f9826a24ca4a930a6e168ee9611": "决议成功", + "af2c4fa868813e47b80859a0b36e00f4": "git信息配置成功", + "2b038e106d4ca5c11b787e16c73253ef": "如果你不", + "12d1b3062be6f8bb374511323c349ed7": "请先设置git信息", + "798cd5a257af539ecfe6bb44f45ee788": "从 git 导入失败", + "8170f5d37a617dcbf16fe8dd414073dc": "从git导入成功", + "6e40e5a8ad741ca4bd714fa52ef32333": "文件格式不正确,请选择zip或gz文件", + "c4996991c50032c9b296c11da356acb2": "导入失败:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "导入成功" } \ No newline at end of file diff --git a/BTPanel/languages/cht/server.json b/BTPanel/languages/cht/server.json index 7581ce80..aa28bb2a 100644 --- a/BTPanel/languages/cht/server.json +++ b/BTPanel/languages/cht/server.json @@ -14,64 +14,30 @@ "4cc4ddc196a295ee4ab82daec08f91a6": "網站不存在", "25bb121145f918572eea2ef07ff8e89c": "備份錯誤", "f8320b26d30ab433c5a54546d21f414c": "錯誤的", - "4bbfcde12aa36ec375a332f51bf905d6": "每天", - "60956b50bb8e8c711d3adb889a70137f": "每天,在{}小時{} min運行", - "78748f15bb65939b6d130c3a5cf8b7dc": "每一天", - "cf9af10dcebe2f12092ff6028a535f08": "每天{}幾天,在{}小時{} min運行", - "e114abed903b9d26c476d4f6cd59c04b": "每小時", - "0aef48ea8132b0551fa25a10fd0a6585": "每小時,在{}最小", - "50419faf9662e0c3f283d496bcb8eb72": "每個{}小時", - "2a0706d7e3ca3ce9e955471a0648dfcc": "每個{}小時,在{} min運行", - "84d94bf0382f611906b7edd65d6af169": "每個{}分鐘", - "14d27796d1c96457c7c019661a2f32d4": "每次運行{}分鐘", - "6c25e6a6da95b3d583c6ec4c3f82ed4d": "每週", - "e1df614d393ab86fd63c5062f7e77936": "每個{},以{}小時{}最小運行", - "9030e39f00132d583da4122532e509e9": "每月", - "69c5e99b9ad8d2b8f11be9a60cbf71da": "每月,在{}天{}小時{}最小", - "9d1a0949c39e66a0cd65240bc0ac9177": "星期日", - "6f8522e0610541f1ef215a22ffa66ff6": "週一", - "5792315f09a5d54fb7e3d066672b507f": "週二", - "796c163589f295373e171842f37265d5": "週三", - "78ae6f0cd191d25147e252dc54768238": "週四", - "c33b138a163847cdb6caeeb7c9a126b4": "星期五", - "8b7051187b9191cdcdae6ed5a10e5adc": "週六", - "e00d5128f631253b7b6ed8d5454c0c81": "無法寫入文件,請檢查[系統硬化]是否已啟用!", - "685689743579a8f09fcec5d7df04e39e": "任務名稱不能為空!", - "a5c04aced897c770105858268324b53f": "當前任務是禁用狀態,請在修改之前打開任務!", - "85305ee6be0f078791c7437ec54dda12": "未能添加", - "08a1ce771119bb393fa49478216ae809": "日誌為空", - "b8fd4dbe5c3650beaec0a3d44d7f0245": "日誌清空", - "ff47c70e853d0b3635935be883b018e9": "無法空任務日誌!", - "e0c4da1afd18acbb66bc5fac261a42ef": "指定的任務不存在!", - "998ad6f12ce5285a1b72d4265d9b36cc": "成功刪除", - "e274abcaad0a7fff74d9adb67e578d5f": "無法刪除", - "38fa2d4f8f9a13062c0c9007d97f6a84": "無法讀取文件!", - "f57d5686d9dd67f0e81924de8d13af95": "任務已執行!", - "0b1c93d38c86c8d379886293cdf8ba66": "任務已取消!", - "d5ef96e383d376beeec28da7acfea516": "下載文件", - "f24f6c5f5841340f898a6baaa6478bcd": "下載文件{}", - "b2d87dda66a4643c6cf673f787c5f226": "配置文件不存在", - "9fdd777388a418cef77bce46c1b2511a": "不支持指定的壓縮格式!", - "4fa407ee74026903dc3013d0b2471eac": "壓縮成功了!", - "ece43dcaac9352f58c422e500266a927": "不壓縮成功了!", - "b9c1dcb37c44dca19765636de065b1c1": "備份成功了!", - "ac4eb62573e34c36ff426c8a6360c781": "備份錯誤!", - "438ca4ffcf6fbd44ec129e73a24f0deb": "選擇SQL/GZ/ZIP文件!", - "0edfb4a54d6cf45209a6c7929b8b9919": "成功導入的數據庫!", - "b0698ab9adefa7515299f311c725ba4d": "清晰地分類", - "8611f56e253646a455ceeb020052fa97": "無法修改", - "bef28b813bf12be3924925bbb62883dd": "成功執行!", - "fda63bff3e0143980e5761376859b00b": "執行失敗,檢查Apache是​​否已安裝", - "22012355700877ab73f89de8014ab20b": "Apache規則配置錯誤:
無法激活:

", - "9848c96a046adb1759233241661ff694": "{}服務無法啟動", - "6ed577cdce37bbd9c66871ac1677dc53": "服務停止失敗!", - "572e5703371c43aae299181c0e3567d4": "所有安裝任務完成後,請運行程序!", - "c7138b4b5f7ded833942aef4e230771d": "命令成功發送!", - "d56f0ed99825b4d62ab84753a65f7f1e": "面板重新啟動", - "bff9ef87fdda677f86ae6dddec54a104": "找不到兼容的PHP版本,請先安裝", + "18928426418954e3a8bc166c892af5c5": "用戶名或密碼不能為空!", + "14422683e14b8a03fd02b84480703c41": "您已經登錄了很多次,請在{}秒內重試!", + "179b0ad118200b66c6e90535d9d8ad4f": "磁盤因子已經用盡,面板試圖釋放inode。請重試...", + "7edd0140c2f050286273be74039b1df7": "驗證失敗,請刷新頁面並再次登錄!", + "9a9b0bf6269ba974cc6a00bb0f0de1d0": "驗證代碼不能為空!", + "2b7ae590e0538e70b7a359a94d30f1f4": "驗證代碼不正確,請重試!", + "21f763b26858bf8ff40f931d714ab106": "錯誤的用戶名或密碼, {}", - "6e264f3408e9b769d3fb7e2c807f301f": "操作失敗了。請檢查鑰匙是否正確", - "d4ac5985eccd334896e3cf23706e43b0": "成功添加", - "92188d43af4373bacbf00951da16532a": "無法獲得網站路徑。請檢查網站是否存在", - "ceaefd9a46d78491b9fdb912b5c71eeb": "無法創建驗證文件。檢查寫入是否被阻止", - "1bb3608b1bc684c3dc85090db249346b": "沒有獲得證書信息", - "c8c7de7f5b740307d55affea39b79993": "設置成功了", - "131c05252110792212e3e3666a351154": "與SSL相關的配置,請勿刪除或修改下一行註釋的404規則", - "4ba7e24ac1607ab761c124ca7352ad08": "錯誤頁面配置,允許評論,刪除或修改", - "31bb30ca4135945adbe0c2daa9545b39": "PHP參考配置,允許評論,刪除或修改", - "f9da3e5ae75ce0ae39884ae2ea295a66": "URL重寫規則參考,任何修改都將使面板設置的重寫規則無效", - "73e1f7d487ad73d55414fe26ea11cbf0": "未指定參數[sitepath]", - "6aabca3a3e1c79bd5837a1ddae95fe70": "存在錯誤,請重試。", - "256c9a85375f57f2dc9f6f318c6578f1": "成功創建網站[{}]", - "481df7dbcd4c0317088bde8c913d5893": "請填寫網站路徑", - "b1b2484c013c646d7f41d6b2f495b6ef": "網站路徑不能是根目錄[/]", - "1c3bff99564f1370a5b1bf6c0773f8c4": "請檢查[電子郵件]格式是否正確", - "af9091566e669f016edf16ba97464cbe": "密碼非常弱,如果您一定要使用它,請勾選[允許密碼弱]", - "b0dbad478d4f07c38aec8f440ed98b66": "請先安裝MySQL和PHP!", - "46491fef7553177ef58a55b2db917072": "請不要將網站根目錄設置為系統主目錄:
{}", - "59d5fef323e89ded50ed6036848a97f3": "WebName參數的格式不正確,應該是可簡化的JSON字符串", - "078a3d3e263be2851ddfd9fa059d098f": "端口範圍不正確!應該在100-65535之間", - "50370024fdd22dc69099a46d011b20e2": "PHP版本不能為空", - "44bd68c6703adf65ff21c63e9a876aa1": "主域的格式不正確", - "23eded6de9c06451f67ecb7ed3a8c95b": "主要領域不能是通配符DNS記錄", - "f54249d2613e48be05837ec9cd615a5f": "您嘗試添加的網站已經存在!", - "b537e2d1946d559d3de4fb3c045d290f": "您嘗試添加的域已經存在!", - "f91c641aef33cf8ef4a29bc5d3a7193a": "無法添加,寫入配置錯誤!", - "c3c7869d22051eaa78a831834a398351": "刪除錯誤,請重試。", - "e2d272e229674e4c6765fab24a323604": "刪除網站[{}]成功", - "aa5f20e061736fe68a915163e7e6d122": "指定網站不存在", - "f11e72daff0ce484f4c401bd0bd28ae5": "成功刪除網站!", - "c57d58c6bbd34144325871d75b42a577": "請輸入主機域名", - "5c7b7c2f6ed78eefdd77aaa3dddde61a": "域不能為空!", - "ef446d50df1605a582f9b44b57327536": "域名格式不正確!", - "68ae44808f90043dee02358ee768bf6e": "域格式無效!", - "1628c2a26ab6d1211b435f85782f8acc": "指定的域名已由網站[{}]綁定", - "925dc658ddf0f69509632848bcd39577": "指定的域名已由網站[{}]的子目錄綁定!", - "7b02cf82181f516626a36b86c6a686f5": "成功添加了網站!", - "9b3c4205f2f408790c9c1c5da53c3bfb": "無法獲得PHP版本!", - "abc3db87d5608cc9559556468a696a35": "請選擇一個域名", - "7807e17f2bf49fb802bba1a04822ea16": "請選擇一個端口", - "e5925c3a126a66c0565df6d8ef49550e": "最後一個域無法刪除!", - "17088ffed1e537b917a6ecc9dc957159": "私鑰錯誤,請檢查!", - "26924bd958e212f07c31b6ffca9cbf8c": "證書錯誤,請檢查!", - "44e2c1c3cfd8d248d7c9190a8f07c0ee": "錯誤獲得證書", - "fc0d039d9dcf3905ae8032c9cb33f475": "錯誤:
{}", - "ddc2be35a5ed0bf09a88139c4ad10b4a": "與原始路徑相同,無需更改!", - "84a8921b25f505d0d2077aeb5db4bc16": "純靜態", - "ad74aa2854e988c3157f92e0120bb19e": "apache2.2不支持倍增!,{}", - "4018ce634a10d352867f04962f107c14": "有一個錯誤設置,請重試。", - "f1bef4fd5183ae83a5896c32a3d5e81d": "自定義PHP配置僅支持NGINX", - "879e0d022ff268704f93a7e2b504c224": "自定義版本時,PHP連接配置不能為空!", - "73d6e709b568b43405052cec999798c5": "PHP連接配置格式不正確,請參閱示例!", - "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "指定的Unix套接字[{}]不存在!", - "751ac8fd72a0acd79772370efcae9c89": "無法連接到[{}],請檢查機器是否可以連接到目標服務器", - "3cb7d414f8ae92b2b29057f91346f7dc": "設置失敗,在網站配置文件中找不到啟用-PHP-XX相關的配置項!", - "c7a6a892c6cdfc9b0fedefb0a1d2083a": "請求的目錄不存在", - "4622561ceaaecb6ef7dd51e65c9f4ec5": "基本目錄關閉!", - "e4ec1f40794bdf92e7261e6e0c51895a": "基本目錄打開!", - "eeddf79f68ffe029ed83fddcba46b35f": "舊代理", - "1592678472ea1b601fd74abff47c56b1": "無法獲得目標URL", - "18edd294853d381dbe0d612ab58bc123": "在配置文件中檢測到錯誤。請在繼續之前解決", - "8b5899be4df3aedb03c6fbad9055ed1c": "數據庫名稱不能超過40個字符!", - "111376d92c49c1a6c1522a2ef1dac23c": "指定的反向代理名稱或代理文件夾已經存在", - "09a988aa2e3185fce9fa8f4e8710b862": "無法同時設置目錄和全局代理", - "012a8e497feddccb8e4a47aa5e2dc156": "請輸入號碼", - "90da7d2de9aa12ec32ee04172ca0d2d3": "發送域格式錯誤:", - "440544138d3ed8a2229792c88bad3bd8": "目標URL無法訪問", - "faf2457853593b3296699c4adacc7825": "請輸入要更換的內容", - "748e5ad33460a17cf26c8024bb0a1620": "要替換的內容不能與要替換的內容相同", - "195d5db9e1559f06348715bc3a822036": "重寫/nginx主配置/vhost文件中已經存在全局反向代理", - "cc38d47ec9ac62ffc67a5db9c08d5d52": "目的地網址不能為空", - "fb79afbbe0688565b7894b644dfd798d": "目標URL不能是[http://或https://],請填寫完整的URL,例如:https://aapanel.com", - "29c9da826ae868c8c6444328f48bcf40": "當前不適合使用一鍵部署的WordPress網站進行反向代理", - "a59dfc3ae22fd96d46011503a4f40744": "代理暫停", - "118f77feff598376a776af9b8e738efc": "成功保存", - "078bb5f960587121c7cd606ddba5ad58": "在編輯之前,請啟用反向代理!", - "fe7185cec796e18d58f8e84dc4da946f": "目前僅支持nginx", - "222a267cc5778206b253be35ee3ddab5": "當前的", - "38441d4a89765279852ca2830aa89c83": "新的URL重寫規則已保存!", - "c27a45bf16475a157ca1014cf886bb56": "請輸入註釋", - "9a962a24e9b7b07800d6b7c7efd86f30": "用戶名或密碼不能少於3位數字!", - "7eb904262649f9b2e4ba52e2bba9db71": "密碼格式是錯誤的,請不要使用前兩位數字的特殊符號!", - "492c7f01035f1cf9b88756f897f02b87": "錯誤,主要域不能是IP地址!", - "0a2b8c4a98495f6af19be9c1c342844e": "成功,請測試JSP程序!", - "49281f9c7680652b1d110625da5c8cca": "Tomcat映射關閉!", - "ec3b07b78fd4f3307c84858957ddbd0f": "獲取站點運行路徑false", - "02e602e968050352febfc4ddcae332f0": "OpenLitespeed不支持設置默認網站", - "362538d60f495840284c667e67831b16": "掃描目錄", - "4f137439eb93e6c752873c8af2d3d1cb": "掃描任務已在隊列中!", - "613a6375944c3035efe735e87766fbbd": "更新成功了!", - "6177805463a6a4f28e61bb3435bee13b": "成功設置,該站點將在到期時自動停止!", - "1a69486f70b6baf749e6e1c4d5fcf689": "URL後綴不能為空!", - "2f858201b6da6a5419c5af8fd26f815c": "防盜鏈域名不能為空!", - "f36c15e89d61e07fb44095ae920b8fbc": "請先打開熱鏈接!", - "70dc560b6f4af6d210c9eeb8434c571c": "響應資源應使用URI路徑或HTTP狀態代碼,例如: /test.png或404", - "aa8722f512ecebf5dae454e526402508": "請先打開防盜!", - "bd0d7585c64988d80747a32fb0e3e15e": "日誌為空", - "a17f5bc22553d897f6363867c0165256": "默認類別", - "0d0d87a34e787b2f4a59d912d4d441e4": "類別名稱不能為空", - "6818a5095a78431eb3c99fe022b687b0": "類別名稱不能超過16個字母", - "c4f16bb3d87b92062f73954c86485f64": "總計10個類別!", - "5fd53f59be2a3dee94df28886840b9a3": "指定的類別名稱已經存在!", - "1c44b4096bb88e459ddadef895bea1c2": "指定類別不存在!", - "8f52253b1f007fd14ed0f60b89593d2d": "刪除類別!", - "b51515085fc6ea6a07192c61e068c124": "成功修改", - "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "此功能僅支持nginx/apache", - "6678fd91bc04eb1e34e3474809387e7a": "查詢失敗,不存在地址", - "7ac0a27b48f2931c7f294b996fe6b273": "錯誤解析配置文件", - "ee3a15a26aee235ac255e37342b444bb": "成功設置", - "79799f8c2f024685df774550ea5b427d": "網站[代理,重定向,http to HTTPS]未設置為自動重新啟動", - "29faf053a22c387532298233399e66f9": "配置文件解析錯誤", - "6c881e76c76b1f102bcb97a8b4f682f6": "該網站已打開[代理,重定向,http至https]自動重新啟動", - "13fc1b8a101214be1a472db8de1bd8fd": "網站已關閉自動重新啟動", - "1fb58c8e2967a648359d13aa22d9e493": "該網站不存在!", - "b0cd0c2bc5c6ce9f71127d60872209ce": "網站[{}]重命名:[{}]", "3f96c422b7a59fe6e8bf7531c647a64c": "指定的帳戶不存在", "cb5e7fdc51569eedfbf3a9a0d3c819cc": "指定的順序不存在!", "8bd32b310825307a909c682871008642": "訂單成功刪除!", @@ -398,12 +121,103 @@ "6953519c64b998226d0294b961deca62": "撤銷證書", "1bbd31373b98ad5a6320af00b2a15ee0": "續訂到期時間是LTE的一定時間", "8fcc1d6fd24fad55d9e8fea6631886db": "請輸入在 - 索引參數中撤銷的訂單索引", - "7b84e677e97bd4943a6639a22c1a1704": "密碼參數參數不能", - "5f3160e82bc0c5278923b609841e588b": "開啟開啟", - "f288f8c23f8d03a699a49bf1fb8e7f53": "SSH選項選項", - "d3118650da719b6b0cc83230204491de": "加密方式", - "24513dc8c02bb021a1c944009c19215b": "開啟開啟", - "8a3140f96ba5c5df5560d0bd27aa4cd8": "關閉關閉", + "b0698ab9adefa7515299f311c725ba4d": "清晰地分類", + "8611f56e253646a455ceeb020052fa97": "無法修改", + "ebdcf538e79de6922f498cc8c735eab5": "系統防火牆不打開", + "a296add6341b715925c0be2b83514ee3": "您輸入的IP地址是非法的!", + "3433b9709eed7423f1900061ef743af6": "禁用此IP會導致您的服務器失敗", + "57e7b2320dd3984312335605d57ee0f8": "IP存在於塊列表中,無需重複處理!", + "4bb8df740a7119979ff7854d034200a8": "IP地址是非法的!", + "998ad6f12ce5285a1b72d4265d9b36cc": "成功刪除", + "ff9c66f005c08efd15752fb261057b46": "端口範圍必須在22至65535之間!", + "b26b09909c3b090f31dba4a0986e1b84": "端口存在,無需重複發布!", + "408f58c25fc55295236fbb64a2d884ff": "失敗,無法刪除面板的當前端口", + "e274abcaad0a7fff74d9adb67e578d5f": "無法刪除", + "ad6fc2abb89b42d391b4bf84e8e6cd2d": "SSH服務關閉", + "0692d6f0819524aaa05e73f03022ec5b": "SSH服務打開", + "d0749aaba8b833466dfcbb0428e4f89c": "成功", + "ffdc24f916f3071233ca7710aff032c8": " {}", + "6e264f3408e9b769d3fb7e2c807f301f": "操作失敗了。請檢查鑰匙是否正確", + "d4ac5985eccd334896e3cf23706e43b0": "成功添加", + "92188d43af4373bacbf00951da16532a": "無法獲得網站路徑。請檢查網站是否存在", + "ceaefd9a46d78491b9fdb912b5c71eeb": "無法創建驗證文件。檢查寫入是否被阻止", + "1bb3608b1bc684c3dc85090db249346b": "沒有獲得證書信息", "b0a783e3ada9e792e3ff3ca4eb477c80": "證書不存在!", "fca4e47d90253577901e874737b87dc0": "證書閱讀錯誤!", "813595d6c41e417bea96adb1ad89043f": "證書格式錯誤", @@ -422,9 +236,391 @@ "501ffa672acb20c4764563d6e839879b": "無法連接到雲。無法在雲上刪除數據。", "a810cdf921c5b92a3f6d29667ec78ffc": "DEL成功", "df569fbc92d17644e83b44541596633f": "無法連接到雲。", + "140bda69874872f8402052c613c0b3b9": "Aapanel警報測試電子郵件", + "76a1ec4a3fcdc304394ff14dc90f8072": "面板線程的數量應在1-1024之間", + "dd7e82b5fb3c67e3e41d96f22ba838fd": "新面板端口", + "248336101b461380a4b2391a7625493d": "保存", + "40624aabb99173387dd6d575759b12db": "缺少certpem參數!", + "37db9679113eef382992a1478f1b79ff": "缺少私有關鍵參數!", + "7063e5fbf2ea8d0809fe307b6df00467": "保存證書!", + "d2174fc17fcd785706114088b84dbbce": "已經生成了臨時登錄URL", + "b5101eb6e685091719013d1a75756a53": "\\ 1", + "0bfe47819da04212a33dac83b71430e8": "\\ 2", + "bef28b813bf12be3924925bbb62883dd": "成功執行!", + "fda63bff3e0143980e5761376859b00b": "執行失敗,檢查Apache是​​否已安裝", + "22012355700877ab73f89de8014ab20b": "Apache規則配置錯誤:
無法激活:

", + "9848c96a046adb1759233241661ff694": "{}服務無法啟動", + "6ed577cdce37bbd9c66871ac1677dc53": "服務停止失敗!", + "572e5703371c43aae299181c0e3567d4": "所有安裝任務完成後,請運行程序!", + "c7138b4b5f7ded833942aef4e230771d": "命令成功發送!", + "d56f0ed99825b4d62ab84753a65f7f1e": "面板重新啟動", + "3d8c9e517719022b27ad5f27c578fa31": "獲取ram 失敗", + "d47ab7b9ce539ba13f4e045561bb8ed7": "獲取正常運行時間錯誤", + "8e39175bab478762d3d029bee327c704": "恢復時間失敗", + "e16cf27704f83c8b0a0efc16886ea75d": "獲取日期失敗", + "c158c8096b76b85803e71232b2dd5e74": "獲取時間細節錯誤", + "a6ec06b5eb6a42e13e072d2e992e31a0": "獲取reqpersec 失敗", + "cdd32490a46567fd0c1ee9d4b170b762": "獲取falsecesses 失敗", + "62b939086708b37d68c00cb713994b52": "獲取totalkbytes 失敗", + "13b06d17b35dfeeafa50e12ad9ec1735": "獲取BusyWorkers 失敗", + "724fc9214ccce3e6a5787648240a4533": "讓iDleworkers 失敗", + "7a7f329389283fdd3290c735f90946e9": "mpm_event_module conf找不到或/www/server/apache/conf/extra/httpd-mpm.conf是空的", + "c22cf8376b1893dcfcef0649fe1a7d87": "第二", + "db669c6377ab90eef78800a48fd4a453": "請求超時", + "af52f5340c065f4d38182f7a27d59f75": "保持活力", + "70b46e57f3c33abdb9558bc5c3a234d9": "每個連接的最大飼養請求", + "6868568c3abc547e622a303891a906b0": "默認過程", + "224114c62dceb7ebee2db43c6c79a961": "最大閒置線程數", + "3c60809d9a5a0900dfbc28bb017e410b": "可用於處理請求尖峰的最小空閒線程數量", + "3783030daf8154be6e11fc4160c229c3": "每個孩子過程創建的線程數量", + "2f25e4b1a2cb84576740da749a2daef2": "將同時處理的最大連接數量", + "72e3edfd72758944413b1e4e9c432f1e": "限制單個兒童服務器在其一生中將處理的連接數量", + "26c74a59d7d10bd927dce45e449943f1": "配置錯誤", + "b2d87dda66a4643c6cf673f787c5f226": "配置文件不存在", + "bff9ef87fdda677f86ae6dddec54a104": "找不到兼容的PHP版本,請先安裝", + "4bbfcde12aa36ec375a332f51bf905d6": "每天", + "60956b50bb8e8c711d3adb889a70137f": "每天,在{}小時{} min運行", + "78748f15bb65939b6d130c3a5cf8b7dc": "每一天", + "cf9af10dcebe2f12092ff6028a535f08": "每天{}幾天,在{}小時{} min運行", + "e114abed903b9d26c476d4f6cd59c04b": "每小時", + "0aef48ea8132b0551fa25a10fd0a6585": "每小時,在{}最小", + "50419faf9662e0c3f283d496bcb8eb72": "每個{}小時", + "2a0706d7e3ca3ce9e955471a0648dfcc": "每個{}小時,在{} min運行", + "84d94bf0382f611906b7edd65d6af169": "每個{}分鐘", + "14d27796d1c96457c7c019661a2f32d4": "每次運行{}分鐘", + "6c25e6a6da95b3d583c6ec4c3f82ed4d": "每週", + "e1df614d393ab86fd63c5062f7e77936": "每個{},以{}小時{}最小運行", + "9030e39f00132d583da4122532e509e9": "每月", + "69c5e99b9ad8d2b8f11be9a60cbf71da": "每月,在{}天{}小時{}最小", + "9d1a0949c39e66a0cd65240bc0ac9177": "星期日", + "6f8522e0610541f1ef215a22ffa66ff6": "週一", + "5792315f09a5d54fb7e3d066672b507f": "週二", + "796c163589f295373e171842f37265d5": "週三", + "78ae6f0cd191d25147e252dc54768238": "週四", + "c33b138a163847cdb6caeeb7c9a126b4": "星期五", + "8b7051187b9191cdcdae6ed5a10e5adc": "週六", + "e00d5128f631253b7b6ed8d5454c0c81": "無法寫入文件,請檢查[系統硬化]是否已啟用!", + "685689743579a8f09fcec5d7df04e39e": "任務名稱不能為空!", + "a5c04aced897c770105858268324b53f": "當前任務是禁用狀態,請在修改之前打開任務!", + "85305ee6be0f078791c7437ec54dda12": "未能添加", + "08a1ce771119bb393fa49478216ae809": "日誌為空", + "b8fd4dbe5c3650beaec0a3d44d7f0245": "日誌清空", + "ff47c70e853d0b3635935be883b018e9": "無法空任務日誌!", + "e0c4da1afd18acbb66bc5fac261a42ef": "指定的任務不存在!", + "38fa2d4f8f9a13062c0c9007d97f6a84": "無法讀取文件!", + "f57d5686d9dd67f0e81924de8d13af95": "任務已執行!", + "da07d14105efb3ba634c1d35618447ab": "參數不正確!", + "ea2b2676c28c0db26d39331a336c6b92": "開始", + "ef399b2d446bb37b7c32ad2cc1b6045b": "停止", + "0b12c9f33fde8b15970c7390c54d7ca5": "無法關閉日誌", + "b55eed05ce4922d8a6c881f0f2b05bbf": "成功設置", + "5afb8de2bbb11b44592503000290c173": "指定的插件不存在!", + "8b266978ab5161642a2d95d3f03f3945": "請卸載[{}]首先", + "ad626ac6de7ea412c9156f73b7666cd4": "取決於以下軟件,請先安裝[{}]", + "acf7b210e1f5fbdb2e24af573f0e1831": "至少[{0}] CPU內核需要安裝", + "d0c8fa89a1eccf8a377d11eea540fd0c": "至少需要安裝[{0} MB]內存", + "52e44340370925b110c7fba475b805e3": "僅支持[{}]系統", + "e3b16d9e5a24c8d27578d7670e840200": "取決於以下軟件,請先安裝[{}]", + "a0405fa5f045a30ba3aeff1c65ad8c38": "安裝過程已取消!", + "a13ed989898e4c7529942fa656ff6733": "系統關鍵目錄不是可寫的!", + "7a71d673b95a1bd0d10705c865f5a626": "1.如果安裝了[系統硬化],請關閉", + "c5041819fd15366b66dd9539116ea6ad": "2.如果安裝了Yunsuo,請關閉[系統硬化]功能", + "101935ed7ea8a021a536a614363350eb": "3.如果安裝了SAFEDOG,請關閉[系統保護]功能", + "8c4aa1aa63c24703138358074a515b99": "4.如果使用其他安全軟件,請卸載它", + "2eaba30c177044d12634b22016f5dd99": "請指定軟件名稱!", + "0d3811da2c2a4315b921093d36e6759d": "抱歉,目前OLS官員不支持PHP8.1", + "0d06a64610d5755d0d395305f9b3a664": "請首先登錄Aapanel帳戶", + "2c9056dcb1285057d5248e7ed16d2b4d": "文件哈希驗證失敗,停止安裝!", + "fb95b07b4c663c0a52cda545eef1d869": "安裝成功了!", + "fac5f4d9d430e77699ec114d346c9bb2": "安裝失敗", + "349838fb1d851d3e2014b9fe39203275": "安裝", + "a9ba3c226edabcfe1978d6f4c5daf404": "Nginx 1.8.1太老了,不再可用,請選擇其他版本!", + "75d7d596e2cc30d482111fae7b4f6d88": "添加到隊列中的安裝任務", + "ee83f5efe8a95f2e8529da7d4bb01d2b": "Uninstallaton成功了", + "4432eb207b29c9ead490158b76397532": "數據庫列表不是空的。有關您的數據安全,請備份並刪除現有數據庫。
強制卸載命令:RM -RF/www/server/mysql", + "ba922eb50c83147a9bc0e9f40877d986": "卸載成功", + "b860df98df6ab84521a4cef036973028": "評分範圍[1-5]", + "eb536feb2c569974c2b5cf85cae91041": "連接失敗!", + "a70188f907ee9df93a4b749109a23460": "無法獲取軟件列表({})", + "16ad37f5aafc6478f2f6d63d70554530": "請不要重複添加", + "18ea7bdb25b2a66507ffb1bb8b42fefa": "儀表板最多顯示12個軟件!", + "2aa461271893ae0493789e9e8f248fdc": "快捷欄最多顯示5個軟件!", + "98cb93d354af289a900cd9e03cee2df2": "安裝失敗!", + "17e4e003ade65cd7a54131d3404d2f98": "沒有打開", + "bda730e0e5c7444ef6f4f49957ab4f39": "要付款", + "24fe48030f7d3097d5882535b04c3fa8": "已到期", + "cbfcfe47e7420af71ce1666844c565a3": "排序保存", + "6a20d0daaec1ce3950a321704041dc90": "該插件沒有模板!", + "6f5cb320fb3a7e303403054320ad943c": "軟件列表更新了!", + "b269cd272a31017961c245e2c84a1a2f": "文件下載失敗!", + "88183b946cc5f0e8c96b2e66e1c74a7e": "未知", + "84f7539fe8674bb0689347dc7acd7b43": "在存檔中找不到插件信息,請檢查插件包!", + "affc007de5f6791707f3de155a3a642a": "臨時文件不存在,請重新上傳!", + "117f1bb083c7d556079a3c77093be5e2": "出口失敗,請檢查權限!", + "a8f375e795e0a130837f2a468518a413": "不合格的名稱只能是數字,字母,下劃線", + "a06490b9729d0868e31d834c9bffa0bd": "指定的自定義彙編參數不存在!", + "5e71fccee12caedf853a7313ea204721": "錯誤:名稱或服務未知", + "b6e3d7366f73e2c5e32717d679db6474": "錯誤:無法建立新連接", + "cdffdb1c794cf0dd777b3941a31459e4": "錯誤:讀取時間", + "4573823cc04a9cbf8a7bb254b762db91": "錯誤:連接拒絕", + "e3c2e426ad1b23571c48ec572ca675bf": "錯誤:遠程終端封閉連接沒有響應", + "db3a5c61130d7ca2046f5f9d0cd08073": "錯誤: {}", + "fe723570085e5cc1ecc3dfc88a46aa2d": "下載超時:{}", + "0eeb116408665d50a2f2092a6c277ee6": "沒有可用的磁盤空間。", + "57a43d6e8c479df3a51421eba70d5621": "驗證軟件包校驗和失敗。", + "c12c62dd767caf90d62356b47349d871": "無法獲得此插件的進度條。", + "8fde9a929c417549ed2f9144fa68c0d2": "規則名稱只能由字母,數字和下劃線組成!", + "868a6f377594831b39e91745c7807e28": "指定規則名稱不存在![{}]", + "5d9cf1940fae6317dd43a7f1b5ca8f36": "指定規則名稱已經存在![{}]", + "473bc9055d76e148db4d28e7bec67295": "規則名稱需要大於3個字節", + "5b097df78b1d8c65d8b524354029f114": "文件後綴不能為空", + "496e2dfba11ca4381ef6277e6e9a62dc": "目錄不能為空", + "84278582ca50b97777b2c8ce780f9715": "有關支持|建議,請訪問Aapanel論壇", + "aa00d1012298d40c84daf11e09956c65": "下載:", + "3c8ad9e6e9c39de49294aa2db8630f25": "nginx不安裝", + "8bdafc47214a88c8cc4bc6326771040a": "數據採集​​失敗了!", + "d84c752e17017ec4b4987497ce15dfd0": "PHP負載狀態採集失敗!", + "cf6e5eb2bfedf2e0529a552c1017c21e": "寫文件失敗!", + "842bbd281516b01e70be499dbe67d3aa": "成功設置", + "ff7ca5d4ef00526f701d3ae0b3833940": "未能獲取列表,請檢查[AK/SK/存儲]設置是否正確!", + "517fa3f50147b216828f9aca9fd08927": "演示,禁止,禁止!", + "e39bf0b6a74eb0459abefe075607833f": "錯誤,無法結束任務過程!", + "c40f1a202bfa106ac04f83a4740b3bd1": "無法連接到服務器!", + "ca3eb6afad663b2881fababde6d59d63": "請先綁定您的帳戶!", + "df1f69a87b498b8b12c90be5a3b885db": "文件下載失敗,請重試或手動更新!", + "e448bd5c1c654d1ef33cf40620808693": "請求的PHP版本不存在!", + "7c769ceaad458456d4c3bc8276015a8d": "沒有權限!", + "178d2e6a3f4abd4552188dcf36df7687": "面板日誌清空!", + "99a0d283490c238c6faf2d0387dbcda7": "當前的Web服務器是OpenLitespeed。此功能尚不支持。", + "20b4593b7de7ef359c1a0269f83e896b": "端口範圍不正確!", + "0e656ce1afc98099f2e01e8f71362f92": "請輸入正確的端口號碼", + "88897967b12e6907309204ad6d0647af": "請不要將通常的端口用作phpmyadmin端口!", + "e4859a777f8d4f300baf8fff0284fe81": "沒有找到Apache PhpMyAdmin SSL配置文件,請在打開之前嘗試關閉SSL端口設置", + "6bd4e79acd767010d96091baf9daba77": "沒有檢測到nginx phpMyAdmin聆聽的端口,請確認文件是否已手動修改。", + "7478cfa7a09bbe61467b07dea2e9721d": "沒有檢測到Apache phpmyadmin聆聽的端口,請確認文件是否已手動修改。", + "a7dad48fefe8778dd10744a8a4dbae8e": "新的phpmyadmin SSL端口", + "a168cddbe84613b0a468887d44e7eaf5": "面板證書不存在。請申請面板證書,然後重試。", + "c0c23cdf9e9329e576cfbddcc85666a3": "成功打開,請手動發布phpmyadmin SSL端口", + "b7f3560235e37cebdbde7db33c3df64c": "操作失敗", + "7f91451dfcb0045a4684fa68b35d0365": "新的phpmyadmin端口", + "bb1ca97ec761fc37101737ba0aa2e7c5": "錯誤", + "14c525aba20f0a52255a799f51ced885": "警告列表不存在!", + "586a19c1eeaf6fe9d57f1d894fc487fc": "日誌文件不存在!", + "190045c03f9a72a1900c60d63e1e2b8b": "帳戶綁定已過期,請在[設置]頁面上重新綁定!", + "907fddd6007347a0daffc4a64156f0de": "忽略成功,此版本將不再提醒更新。", + "131c05252110792212e3e3666a351154": "與SSL相關的配置,請勿刪除或修改下一行註釋的404規則", + "4ba7e24ac1607ab761c124ca7352ad08": "錯誤頁面配置,允許評論,刪除或修改", + "31bb30ca4135945adbe0c2daa9545b39": "PHP參考配置,允許評論,刪除或修改", + "f9da3e5ae75ce0ae39884ae2ea295a66": "URL重寫規則參考,任何修改都將使面板設置的重寫規則無效", + "73e1f7d487ad73d55414fe26ea11cbf0": "未指定參數[sitepath]", + "6aabca3a3e1c79bd5837a1ddae95fe70": "存在錯誤,請重試。", + "256c9a85375f57f2dc9f6f318c6578f1": "成功創建網站[{}]", + "481df7dbcd4c0317088bde8c913d5893": "請填寫網站路徑", + "b1b2484c013c646d7f41d6b2f495b6ef": "網站路徑不能是根目錄[/]", + "1c3bff99564f1370a5b1bf6c0773f8c4": "請檢查[電子郵件]格式是否正確", + "af9091566e669f016edf16ba97464cbe": "密碼非常弱,如果您一定要使用它,請勾選[允許密碼弱]", + "b0dbad478d4f07c38aec8f440ed98b66": "請先安裝MySQL和PHP!", + "46491fef7553177ef58a55b2db917072": "請不要將網站根目錄設置為系統主目錄:
{}", + "59d5fef323e89ded50ed6036848a97f3": "WebName參數的格式不正確,應該是可簡化的JSON字符串", + "078a3d3e263be2851ddfd9fa059d098f": "端口範圍不正確!應該在100-65535之間", + "50370024fdd22dc69099a46d011b20e2": "PHP版本不能為空", + "44bd68c6703adf65ff21c63e9a876aa1": "主域的格式不正確", + "23eded6de9c06451f67ecb7ed3a8c95b": "主要領域不能是通配符DNS記錄", + "f54249d2613e48be05837ec9cd615a5f": "您嘗試添加的網站已經存在!", + "b537e2d1946d559d3de4fb3c045d290f": "您嘗試添加的域已經存在!", + "f91c641aef33cf8ef4a29bc5d3a7193a": "無法添加,寫入配置錯誤!", + "c3c7869d22051eaa78a831834a398351": "刪除錯誤,請重試。", + "e2d272e229674e4c6765fab24a323604": "刪除網站[{}]成功", + "aa5f20e061736fe68a915163e7e6d122": "指定網站不存在", + "f11e72daff0ce484f4c401bd0bd28ae5": "成功刪除網站!", + "c57d58c6bbd34144325871d75b42a577": "請輸入主機域名", + "5c7b7c2f6ed78eefdd77aaa3dddde61a": "域不能為空!", + "ef446d50df1605a582f9b44b57327536": "域名格式不正確!", + "68ae44808f90043dee02358ee768bf6e": "域格式無效!", + "1628c2a26ab6d1211b435f85782f8acc": "指定的域名已由網站[{}]綁定", + "925dc658ddf0f69509632848bcd39577": "指定的域名已由網站[{}]的子目錄綁定!", + "7b02cf82181f516626a36b86c6a686f5": "成功添加了網站!", + "9b3c4205f2f408790c9c1c5da53c3bfb": "無法獲得PHP版本!", + "abc3db87d5608cc9559556468a696a35": "請選擇一個域名", + "7807e17f2bf49fb802bba1a04822ea16": "請選擇一個端口", + "e5925c3a126a66c0565df6d8ef49550e": "最後一個域無法刪除!", + "17088ffed1e537b917a6ecc9dc957159": "私鑰錯誤,請檢查!", + "26924bd958e212f07c31b6ffca9cbf8c": "證書錯誤,請檢查!", + "44e2c1c3cfd8d248d7c9190a8f07c0ee": "錯誤獲得證書", + "fc0d039d9dcf3905ae8032c9cb33f475": "錯誤:
{}", + "ddc2be35a5ed0bf09a88139c4ad10b4a": "與原始路徑相同,無需更改!", + "84a8921b25f505d0d2077aeb5db4bc16": "純靜態", + "ad74aa2854e988c3157f92e0120bb19e": "apache2.2不支持倍增!,{}", + "4018ce634a10d352867f04962f107c14": "有一個錯誤設置,請重試。", + "f1bef4fd5183ae83a5896c32a3d5e81d": "自定義PHP配置僅支持NGINX", + "879e0d022ff268704f93a7e2b504c224": "自定義版本時,PHP連接配置不能為空!", + "73d6e709b568b43405052cec999798c5": "PHP連接配置格式不正確,請參閱示例!", + "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "指定的Unix套接字[{}]不存在!", + "751ac8fd72a0acd79772370efcae9c89": "無法連接到[{}],請檢查機器是否可以連接到目標服務器", + "3cb7d414f8ae92b2b29057f91346f7dc": "設置失敗,在網站配置文件中找不到啟用-PHP-XX相關的配置項!", + "c7a6a892c6cdfc9b0fedefb0a1d2083a": "請求的目錄不存在", + "4622561ceaaecb6ef7dd51e65c9f4ec5": "基本目錄關閉!", + "e4ec1f40794bdf92e7261e6e0c51895a": "基本目錄打開!", + "eeddf79f68ffe029ed83fddcba46b35f": "舊代理", + "1592678472ea1b601fd74abff47c56b1": "無法獲得目標URL", + "18edd294853d381dbe0d612ab58bc123": "在配置文件中檢測到錯誤。請在繼續之前解決", + "8b5899be4df3aedb03c6fbad9055ed1c": "數據庫名稱不能超過40個字符!", + "111376d92c49c1a6c1522a2ef1dac23c": "指定的反向代理名稱或代理文件夾已經存在", + "09a988aa2e3185fce9fa8f4e8710b862": "無法同時設置目錄和全局代理", + "012a8e497feddccb8e4a47aa5e2dc156": "請輸入號碼", + "90da7d2de9aa12ec32ee04172ca0d2d3": "發送域格式錯誤:", + "440544138d3ed8a2229792c88bad3bd8": "目標URL無法訪問", + "faf2457853593b3296699c4adacc7825": "請輸入要更換的內容", + "748e5ad33460a17cf26c8024bb0a1620": "要替換的內容不能與要替換的內容相同", + "195d5db9e1559f06348715bc3a822036": "重寫/nginx主配置/vhost文件中已經存在全局反向代理", + "cc38d47ec9ac62ffc67a5db9c08d5d52": "目的地網址不能為空", + "fb79afbbe0688565b7894b644dfd798d": "目標URL不能是[http://或https://],請填寫完整的URL,例如:https://aapanel.com", + "29c9da826ae868c8c6444328f48bcf40": "當前不適合使用一鍵部署的WordPress網站進行反向代理", + "a59dfc3ae22fd96d46011503a4f40744": "代理暫停", + "078bb5f960587121c7cd606ddba5ad58": "在編輯之前,請啟用反向代理!", + "fe7185cec796e18d58f8e84dc4da946f": "目前僅支持nginx", + "222a267cc5778206b253be35ee3ddab5": "當前的", + "38441d4a89765279852ca2830aa89c83": "新的URL重寫規則已保存!", + "b9c1dcb37c44dca19765636de065b1c1": "備份成功了!", + "c27a45bf16475a157ca1014cf886bb56": "請輸入註釋", + "9a962a24e9b7b07800d6b7c7efd86f30": "用戶名或密碼不能少於3位數字!", + "7eb904262649f9b2e4ba52e2bba9db71": "密碼格式是錯誤的,請不要使用前兩位數字的特殊符號!", + "492c7f01035f1cf9b88756f897f02b87": "錯誤,主要域不能是IP地址!", + "0a2b8c4a98495f6af19be9c1c342844e": "成功,請測試JSP程序!", + "49281f9c7680652b1d110625da5c8cca": "Tomcat映射關閉!", + "ec3b07b78fd4f3307c84858957ddbd0f": "獲取站點運行路徑false", + "02e602e968050352febfc4ddcae332f0": "OpenLitespeed不支持設置默認網站", + "362538d60f495840284c667e67831b16": "掃描目錄", + "4f137439eb93e6c752873c8af2d3d1cb": "掃描任務已在隊列中!", + "613a6375944c3035efe735e87766fbbd": "更新成功了!", + "6177805463a6a4f28e61bb3435bee13b": "成功設置,該站點將在到期時自動停止!", + "1a69486f70b6baf749e6e1c4d5fcf689": "URL後綴不能為空!", + "2f858201b6da6a5419c5af8fd26f815c": "防盜鏈域名不能為空!", + "f36c15e89d61e07fb44095ae920b8fbc": "請先打開熱鏈接!", + "70dc560b6f4af6d210c9eeb8434c571c": "響應資源應使用URI路徑或HTTP狀態代碼,例如: /test.png或404", + "aa8722f512ecebf5dae454e526402508": "請先打開防盜!", + "bd0d7585c64988d80747a32fb0e3e15e": "日誌為空", + "a17f5bc22553d897f6363867c0165256": "默認類別", + "0d0d87a34e787b2f4a59d912d4d441e4": "類別名稱不能為空", + "6818a5095a78431eb3c99fe022b687b0": "類別名稱不能超過16個字母", + "c4f16bb3d87b92062f73954c86485f64": "總計10個類別!", + "5fd53f59be2a3dee94df28886840b9a3": "指定的類別名稱已經存在!", + "1c44b4096bb88e459ddadef895bea1c2": "指定類別不存在!", + "8f52253b1f007fd14ed0f60b89593d2d": "刪除類別!", + "b51515085fc6ea6a07192c61e068c124": "成功修改", + "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "此功能僅支持nginx/apache", + "6678fd91bc04eb1e34e3474809387e7a": "查詢失敗,不存在地址", + "7ac0a27b48f2931c7f294b996fe6b273": "錯誤解析配置文件", + "ee3a15a26aee235ac255e37342b444bb": "成功設置", + "79799f8c2f024685df774550ea5b427d": "網站[代理,重定向,http to HTTPS]未設置為自動重新啟動", + "29faf053a22c387532298233399e66f9": "配置文件解析錯誤", + "6c881e76c76b1f102bcb97a8b4f682f6": "該網站已打開[代理,重定向,http至https]自動重新啟動", + "13fc1b8a101214be1a472db8de1bd8fd": "網站已關閉自動重新啟動", + "1fb58c8e2967a648359d13aa22d9e493": "該網站不存在!", + "b0cd0c2bc5c6ce9f71127d60872209ce": "網站[{}]重命名:[{}]", + "946fb31f804cdde218dbf05d7183e94e": "MD5一致!", + "d83dadd8fcee6c014db8af454bc279fc": "成功下載", + "1336bbfcadd9119f86ecd48c2d9fb770": "數據庫連接異常。請檢查根用戶權威或數據庫配置參數是否正確。", + "ee102508d210854b6fc7da18e598140b": "生成的密碼檢測失敗!", + "6e72fc97e2f1be35ae40ca21d6b1df38": "找不到此WordPress的數據庫,這可能是由於您手動刪除了數據庫而引起的", + "6df8e9d3a4e149ff12445d981f6fc244": "密碼重置成功", + "f748d4e467e9f4f27540b6f5ce5b1ef8": "此功能當前僅支持NGINX", + "9747bb4f34180afd2f9a681397b269fb": "成功清理了!", + "015d337f0646fe4b8a89b30041436e7f": "成功更新了!", + "321b336d92b3e894060637528499dcf9": "部署成功了!", + "1850193ca4b37a25ee94db903eddc16f": "部署失敗了!", + "b390405514d6291f511c9f3a4fb31249": "站點ID必須是數字", + "e650b17a0b833e3bcdd8e859b37ce94e": "找不到此數據庫!", + "a0adaeeb3642584bd931c757b6f71d78": "PHP FPM優化成功", + "f11ab236591dc778c39c9429e141dba2": "MySQL優化成功了", + "d145648d4281cb3266714c5986bcab8b": "nginx fastcgi緩存配置已經存在", + "9c373c2796e866dc590f9dc7c80609da": "nginx fastcgi配置錯誤!", + "2750e686fcc97deec0122789a059edbd": "nginx fastcgi緩存配置完成", + "615681ddc1b0efb9f6d434adc1451bb7": "nginx init fastcgi緩存配置已經存在", + "a61c53dff88925e428f2a295b18ac807": "nginx init fastcgi配置錯誤!", + "28b386f7ab5957184b60f47c0e540d68": "nginx init fastcgi緩存配置完成", + "b7082bd55a134bb3a142570572e1c469": "FastCGI配置在網站配置中不存在", + "c0ff8a4b4b8f68c4ba7df88588291590": "FastCGI配置已經存在於網站配置中", + "e3a6621c5ea036c8f82d3f2d343f1bc8": "網站FastCGI配置錯誤!", + "4c87778ab71a4e47170ccafd6edb4922": "網站FastCGI配置完成", + "e3fa50f6413dbb7bfe7cb26e1acd3d98": "請先登錄帳戶", + "121303c67f81a8ebda41de51c8afaf27": "請先在面板上登錄您的Aapanel帳戶!", + "d5670370d84473122d8e4d5a3b27b4bf": "參數錯誤:數字", + "6b1c16b7a785029c0a11de3ab31cb125": "沖洗狀態成功", + "e06c1ddc33f674068e3ca201094145d1": "成功激活", + "819b23804f66eddddfba39e7bdc53e68": "激活失敗", + "4f57c5dce8b638737a368af15409439f": "激活失敗", + "fe94df1697f309269e00428cae6bd141": "更新失敗", + "b2ac1158b825f44cb363648fa3ad60cb": "成功更新", + "78d29c0fadebf704e471a63afd430250": "申請失敗", + "3649e869737aa87f263194ce7f88f19e": "成功申請", + "34c4dc380e690d2ff6ebb6aaed103401": "product_id參數錯誤!", + "28731318aa493586f88894355a79cb48": "無法連接到服務器!", + "0161305479129bbe47bb020605a15d40": "設置成功!", + "5c9b599b99f7a169b9cd25f7045eaac5": "同步成功!", + "b6601359f1ae1067d4c4d271b7407639": "同步同步1!", + "10a1984f6c5b935c5d8c7d4b4345e1e5": "同步!", + "86da84e8e3aacf73ee745caee5904268": "同步!", + "8ed30fe61ac59c9e1cb4a75d9a48d477": "成功創建!", + "330e51da1228a070540f82eb8e78155c": "成功設置!", + "7ac73ef676faaa8a5f8e3924b4d151e3": "用戶名或密碼不能少於3個字符", + "88d8a4565feba5ad270c00e85564b96d": "目前不支持OpenLitespeed", + "c1f8cf125da0d6db1c4e0d09033c9ddd": "請輸入帳戶或密碼", + "bd7fb7b4280616cbe5de49eb1ee8cc3a": "請輸入要保護的目錄", + "8c48114518721e3966cd4553a0cee705": "請輸入名稱", + "dd65d82f6868cfa127f86e5658674829": "已經設置了站點密碼保護,請取消然後設置。站點目錄 - >密碼訪問", + "1cc6b0e84b90d0ca0b863fccc0f33b36": "目錄已受到保護", + "b7526fc6f8b21e71ea1e290a982df4c9": "成功創建", + "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2不支持倍增!", + "69be778c38b9edc0ab3040c478c39370": "錯誤:%s
強制卸載命令:RM -RF/www/server/mysql", - "ba922eb50c83147a9bc0e9f40877d986": "卸載成功", - "b860df98df6ab84521a4cef036973028": "評分範圍[1-5]", - "eb536feb2c569974c2b5cf85cae91041": "連接失敗!", - "a70188f907ee9df93a4b749109a23460": "無法獲取軟件列表({})", - "16ad37f5aafc6478f2f6d63d70554530": "請不要重複添加", - "18ea7bdb25b2a66507ffb1bb8b42fefa": "儀表板最多顯示12個軟件!", - "2aa461271893ae0493789e9e8f248fdc": "快捷欄最多顯示5個軟件!", - "98cb93d354af289a900cd9e03cee2df2": "安裝失敗!", - "17e4e003ade65cd7a54131d3404d2f98": "沒有打開", - "bda730e0e5c7444ef6f4f49957ab4f39": "要付款", - "24fe48030f7d3097d5882535b04c3fa8": "已到期", - "cbfcfe47e7420af71ce1666844c565a3": "排序保存", - "6a20d0daaec1ce3950a321704041dc90": "該插件沒有模板!", - "6f5cb320fb3a7e303403054320ad943c": "軟件列表更新了!", - "b269cd272a31017961c245e2c84a1a2f": "文件下載失敗!", - "88183b946cc5f0e8c96b2e66e1c74a7e": "未知", - "84f7539fe8674bb0689347dc7acd7b43": "在存檔中找不到插件信息,請檢查插件包!", - "affc007de5f6791707f3de155a3a642a": "臨時文件不存在,請重新上傳!", - "117f1bb083c7d556079a3c77093be5e2": "出口失敗,請檢查權限!", - "a8f375e795e0a130837f2a468518a413": "不合格的名稱只能是數字,字母,下劃線", - "a06490b9729d0868e31d834c9bffa0bd": "指定的自定義彙編參數不存在!", - "5e71fccee12caedf853a7313ea204721": "錯誤:名稱或服務未知", - "b6e3d7366f73e2c5e32717d679db6474": "錯誤:無法建立新連接", - "cdffdb1c794cf0dd777b3941a31459e4": "錯誤:讀取時間", - "4573823cc04a9cbf8a7bb254b762db91": "錯誤:連接拒絕", - "e3c2e426ad1b23571c48ec572ca675bf": "錯誤:遠程終端封閉連接沒有響應", - "db3a5c61130d7ca2046f5f9d0cd08073": "錯誤: {}", - "fe723570085e5cc1ecc3dfc88a46aa2d": "下載超時:{}", - "0eeb116408665d50a2f2092a6c277ee6": "沒有可用的磁盤空間。", - "57a43d6e8c479df3a51421eba70d5621": "驗證軟件包校驗和失敗。", - "c12c62dd767caf90d62356b47349d871": "無法獲得此插件的進度條。", - "8fde9a929c417549ed2f9144fa68c0d2": "規則名稱只能由字母,數字和下劃線組成!", - "868a6f377594831b39e91745c7807e28": "指定規則名稱不存在![{}]", - "5d9cf1940fae6317dd43a7f1b5ca8f36": "指定規則名稱已經存在![{}]", - "473bc9055d76e148db4d28e7bec67295": "規則名稱需要大於3個字節", - "5b097df78b1d8c65d8b524354029f114": "文件後綴不能為空", - "496e2dfba11ca4381ef6277e6e9a62dc": "目錄不能為空", + "b7ad022c6ce9435c43c6760c8ba89b20": "CA可以", + "5d39c57e28ab85457e4949306be619e8": "CA服務器連接超時,請稍後再試。", + "721eb0b3ea85b39c22f16d6dfc84bc32": "域名不屬於此DNS服務提供商。請確保正確填充域名。", + "b5366a9c53b455fdf8a552c205ca9021": "DNS服務器連接失敗。請檢查鍵是否正確。", + "4de3dc0403846edfe5ff520837e2bbe5": "簽名失敗,域名確切的域名集合:(。+):{}超過每週重複發行的數量!", + "30c0b6ae1acf6137b588473814f3330d": "簽名失敗,當前服務器IP已達到每3小時最多創建10個帳戶的限制。", + "797e2e43e3fc3737891adc8ab4a1655c": "驗證失敗了,域名未解決,或者決議沒有生效。", + "9efd01f346301888216d77d35ec156cf": "身份驗證失敗,無法訪問域名分辨率錯誤或驗證URL!", + "6c23a7d25119c77017d1aa04761fefe8": "無法連接到CA服務器,請稍後再試。", + "b7a370078ae6520cde883252890195cf": "不支持的域名{},請檢查域名是否正確!", + "1593706a4e3794c75129c8347021f0c5": "域名{}找不到分辨率記錄。請檢查域名是否已解決。", + "1d80008b0cc4936ab73047baf061c84e": "如果在域名{}中找不到有效的TXT分辨率記錄,請檢查TXT記錄是否正確解析。如果DNSAPI使用它,請在10分鐘內重試!", + "81dab277ae106f35a118916e25f3f026": "在{}:{}上找到錯誤的TXT記錄,請檢查TXT分辨率是否正確。如果DNSAPI使用它,請在10分鐘內重試!", + "b1bc7e763e87ef08d753a0676a0d5361": "此dnspod帳戶下不存在此域名。添加解析失敗。", + "43901eff07fff70732a4e1d6a732920b": "連接時,CA服務器無法訪問您的網站!", + "7cb06b776259c13fa73d3be5577df74c": "當前需要域名{}才能驗證CAA記錄。請手動解決CAA記錄,或者1小時後重試!", + "09c36cbe592612c2546e60652f2d6964": "驗證超時,請檢查域名是否正確解決。如果解決了DNS,則服務器和Let", + "e10beec48a4a4b433b2fec2eaff64671": "在1小時內進行了超過5個驗證故障,暫時禁止申請,請稍後再試!", + "239067c8e0586af7c09738e8240438fb": "續訂失敗,證書目錄不存在。", + "c7664672bf11463a4cc40c61aeca77f1": "續訂失敗,丟失帳戶_KEY。", + "3f56bc50f098e641bb3d42e2d4255cbe": "準備申請SSL,域名{}", + "bd6995f087c0dacaecd470ca10539a2b": "應用域名的列表不能為空。", + "3b5e16d8f5e1b88c78e494e6601a4d01": "成功,請手動解決域名", + "cf6b24b05942cd0c3723d7a4c25e6138": "| - 保存證書..", + "bbb21c1842b512148f687ea068553c85": "| - 設置自動續訂配置..", + "c06d0b48f82d74d3c2854dabdba12d93": "| - 應用程序成功,它將自動部署到網站!", + "569488d54cbcce1331896e4254f63a92": "應用程序成功。", + "1851141907c561e6ac67cba17e549232": "| - 啟動ACME協議...", + "78e67927014eab1b84eb285b6057fca6": "| - 註冊帳戶...", + "4896fdcb74c0e04522c8d3d89d08d569": "| - 獲取驗證信息...", + "1016ed461618afd2dde9a4a709a4d080": "| - 將驗證信息歸還前端,等待用戶手動解析域名並完成驗證...", + "81a3b1828b60659bc3d3c9711e66f0ba": "| - 用戶提交驗證請求...", + "f147fc272d665cd009e1108c5fb6993d": "| - 要求CA驗證域名[{}] ...", + "4c699430325d31db3d7b43b0a0999364": "| - GET CA驗證結果[{}] ...", + "2b7dd2a937ababf46efb11073787664c": "| - 所有域名已被驗證,並且正在發送CSR ...", + "1de253d3eb460e60480626694092d89e": "| - 獲取證書內容...", + "a0c16d2f8e2aeba9dd9a3b040861ff39": "證書獲取失敗,請稍後再試。", + "89edc2a5e6ccecc2bdbdd1f9536fb90a": "| -Error:{},退出了申請過程。", + "94417e0c15f634f59ce15128ef146686": "| -Error:{},退出應用程序。", + "03268bb5fa60cf57ac7c30f1f99dab01": "| - 訪問申請過程!", + "be2d0d9f1a9d04ff22b70bd5bee9b8ef": "使用DNS請求證書時發生錯誤", + "409bd1860bf065c68921473fc2266347": "| -Adding分辨率記錄,域名[{}],記錄值[{}] ...", + "8b2ee088303a8001eaedb8c62e3de7e3": "| -Attempt以驗證分辨率結果,域名[{}],記錄值[{}] ...", + "a11fba95c84fff590acd7dbdea4528e6": "| - 重新驗證ca以驗證域名[{}] ...", + "676e1a4f8e4561ad55045461f3421d62": "| - 檢查CA驗證結果[{}] ...", + "d60d5b998a8ef802ba7f5b5ed343e256": "| - 發生錯誤,重試[{}]", + "71087be1722815599ebecd0fd0f58b5e": "| - 提取證書內容...", + "6d1e7a222bfe888debd080a117490c9d": "| - 切除分辨率歷史[{}]", + "77619ceb7742d8a8f87e52b02592d873": "簽名失敗,我們無法驗證您的域名:

1。檢查域名是否綁定到相應的站點。

2。檢查域名是否正確解決到服務器,或者分辨率沒有完全有效。

3。如果您的網站設置了反向代理,或者使用CDN,請先將其關閉。

4。如果您的網站有301重定向,請先將其關閉

5。如果以上檢查確認沒有問題,請嘗試更改DNS服務提供商。

", + "4d6822ed3bd01f379f2ab4b1e68068d7": "| - 當前沒有續簽證書。", + "b74c00ca5fee122c49cd66ce3d91b2cf": "| - 重新失敗:", + "0b1c93d38c86c8d379886293cdf8ba66": "任務已取消!", + "d5ef96e383d376beeec28da7acfea516": "下載文件", + "f24f6c5f5841340f898a6baaa6478bcd": "下載文件{}", + "9fdd777388a418cef77bce46c1b2511a": "不支持指定的壓縮格式!", + "4fa407ee74026903dc3013d0b2471eac": "壓縮成功了!", + "ece43dcaac9352f58c422e500266a927": "不壓縮成功了!", + "ac4eb62573e34c36ff426c8a6360c781": "備份錯誤!", + "438ca4ffcf6fbd44ec129e73a24f0deb": "選擇SQL/GZ/ZIP文件!", + "0edfb4a54d6cf45209a6c7929b8b9919": "成功導入的數據庫!", "f6039d44b29456b20f8f373155ae4973": "使用者名稱", "3544848f820b9d94a3f3871a382cf138": "新密碼", "6b1bc4e672d58d46d23502dcd78129be": "清除日誌信息", @@ -710,161 +855,18 @@ "5093d954f09d473d091355fe292920a8": "| - 進入限制已取消", "e0b1cb1725c8fb29d42fa69d679a73ea": "| - 域限制已取消", "968c7b9246b5ab3d3e7659cea211a20b": "| -IP訪問限制已取消", - "b7ad022c6ce9435c43c6760c8ba89b20": "CA可以", - "5d39c57e28ab85457e4949306be619e8": "CA服務器連接超時,請稍後再試。", - "721eb0b3ea85b39c22f16d6dfc84bc32": "域名不屬於此DNS服務提供商。請確保正確填充域名。", - "b5366a9c53b455fdf8a552c205ca9021": "DNS服務器連接失敗。請檢查鍵是否正確。", - "4de3dc0403846edfe5ff520837e2bbe5": "簽名失敗,域名確切的域名集合:(。+):{}超過每週重複發行的數量!", - "30c0b6ae1acf6137b588473814f3330d": "簽名失敗,當前服務器IP已達到每3小時最多創建10個帳戶的限制。", - "797e2e43e3fc3737891adc8ab4a1655c": "驗證失敗了,域名未解決,或者決議沒有生效。", - "9efd01f346301888216d77d35ec156cf": "身份驗證失敗,無法訪問域名分辨率錯誤或驗證URL!", - "6c23a7d25119c77017d1aa04761fefe8": "無法連接到CA服務器,請稍後再試。", - "b7a370078ae6520cde883252890195cf": "不支持的域名{},請檢查域名是否正確!", - "1593706a4e3794c75129c8347021f0c5": "域名{}找不到分辨率記錄。請檢查域名是否已解決。", - "1d80008b0cc4936ab73047baf061c84e": "如果在域名{}中找不到有效的TXT分辨率記錄,請檢查TXT記錄是否正確解析。如果DNSAPI使用它,請在10分鐘內重試!", - "81dab277ae106f35a118916e25f3f026": "在{}:{}上找到錯誤的TXT記錄,請檢查TXT分辨率是否正確。如果DNSAPI使用它,請在10分鐘內重試!", - "b1bc7e763e87ef08d753a0676a0d5361": "此dnspod帳戶下不存在此域名。添加解析失敗。", - "43901eff07fff70732a4e1d6a732920b": "連接時,CA服務器無法訪問您的網站!", - "7cb06b776259c13fa73d3be5577df74c": "當前需要域名{}才能驗證CAA記錄。請手動解決CAA記錄,或者1小時後重試!", - "09c36cbe592612c2546e60652f2d6964": "驗證超時,請檢查域名是否正確解決。如果解決了DNS,則服務器和Let", - "e10beec48a4a4b433b2fec2eaff64671": "在1小時內進行了超過5個驗證故障,暫時禁止申請,請稍後再試!", - "239067c8e0586af7c09738e8240438fb": "續訂失敗,證書目錄不存在。", - "c7664672bf11463a4cc40c61aeca77f1": "續訂失敗,丟失帳戶_KEY。", - "3f56bc50f098e641bb3d42e2d4255cbe": "準備申請SSL,域名{}", - "bd6995f087c0dacaecd470ca10539a2b": "應用域名的列表不能為空。", - "3b5e16d8f5e1b88c78e494e6601a4d01": "成功,請手動解決域名", - "cf6b24b05942cd0c3723d7a4c25e6138": "| - 保存證書..", - "bbb21c1842b512148f687ea068553c85": "| - 設置自動續訂配置..", - "c06d0b48f82d74d3c2854dabdba12d93": "| - 應用程序成功,它將自動部署到網站!", - "569488d54cbcce1331896e4254f63a92": "應用程序成功。", - "1851141907c561e6ac67cba17e549232": "| - 啟動ACME協議...", - "78e67927014eab1b84eb285b6057fca6": "| - 註冊帳戶...", - "4896fdcb74c0e04522c8d3d89d08d569": "| - 獲取驗證信息...", - "1016ed461618afd2dde9a4a709a4d080": "| - 將驗證信息歸還前端,等待用戶手動解析域名並完成驗證...", - "81a3b1828b60659bc3d3c9711e66f0ba": "| - 用戶提交驗證請求...", - "f147fc272d665cd009e1108c5fb6993d": "| - 要求CA驗證域名[{}] ...", - "4c699430325d31db3d7b43b0a0999364": "| - GET CA驗證結果[{}] ...", - "2b7dd2a937ababf46efb11073787664c": "| - 所有域名已被驗證,並且正在發送CSR ...", - "1de253d3eb460e60480626694092d89e": "| - 獲取證書內容...", - "a0c16d2f8e2aeba9dd9a3b040861ff39": "證書獲取失敗,請稍後再試。", - "89edc2a5e6ccecc2bdbdd1f9536fb90a": "| -Error:{},退出了申請過程。", - "94417e0c15f634f59ce15128ef146686": "| -Error:{},退出應用程序。", - "03268bb5fa60cf57ac7c30f1f99dab01": "| - 訪問申請過程!", - "be2d0d9f1a9d04ff22b70bd5bee9b8ef": "使用DNS請求證書時發生錯誤", - "409bd1860bf065c68921473fc2266347": "| -Adding分辨率記錄,域名[{}],記錄值[{}] ...", - "8b2ee088303a8001eaedb8c62e3de7e3": "| -Attempt以驗證分辨率結果,域名[{}],記錄值[{}] ...", - "a11fba95c84fff590acd7dbdea4528e6": "| - 重新驗證ca以驗證域名[{}] ...", - "676e1a4f8e4561ad55045461f3421d62": "| - 檢查CA驗證結果[{}] ...", - "d60d5b998a8ef802ba7f5b5ed343e256": "| - 發生錯誤,重試[{}]", - "71087be1722815599ebecd0fd0f58b5e": "| - 提取證書內容...", - "6d1e7a222bfe888debd080a117490c9d": "| - 切除分辨率歷史[{}]", - "77619ceb7742d8a8f87e52b02592d873": "簽名失敗,我們無法驗證您的域名:

1。檢查域名是否綁定到相應的站點。

2。檢查域名是否正確解決到服務器,或者分辨率沒有完全有效。

3。如果您的網站設置了反向代理,或者使用CDN,請先將其關閉。

4。如果您的網站有301重定向,請先將其關閉

5。如果以上檢查確認沒有問題,請嘗試更改DNS服務提供商。

", - "4d6822ed3bd01f379f2ab4b1e68068d7": "| - 當前沒有續簽證書。", - "b74c00ca5fee122c49cd66ce3d91b2cf": "| - 重新失敗:", - "140bda69874872f8402052c613c0b3b9": "Aapanel警報測試電子郵件", - "76a1ec4a3fcdc304394ff14dc90f8072": "面板線程的數量應在1-1024之間", - "dd7e82b5fb3c67e3e41d96f22ba838fd": "新面板端口", - "40624aabb99173387dd6d575759b12db": "缺少certpem參數!", - "37db9679113eef382992a1478f1b79ff": "缺少私有關鍵參數!", - "d2174fc17fcd785706114088b84dbbce": "已經生成了臨時登錄URL", - "b5101eb6e685091719013d1a75756a53": "\\ 1", - "0bfe47819da04212a33dac83b71430e8": "\\ 2", - "946fb31f804cdde218dbf05d7183e94e": "MD5一致!", - "d83dadd8fcee6c014db8af454bc279fc": "成功下載", - "1336bbfcadd9119f86ecd48c2d9fb770": "數據庫連接異常。請檢查根用戶權威或數據庫配置參數是否正確。", - "ee102508d210854b6fc7da18e598140b": "生成的密碼檢測失敗!", - "6e72fc97e2f1be35ae40ca21d6b1df38": "找不到此WordPress的數據庫,這可能是由於您手動刪除了數據庫而引起的", - "6df8e9d3a4e149ff12445d981f6fc244": "密碼重置成功", - "f748d4e467e9f4f27540b6f5ce5b1ef8": "此功能當前僅支持NGINX", - "9747bb4f34180afd2f9a681397b269fb": "成功清理了!", - "015d337f0646fe4b8a89b30041436e7f": "成功更新了!", - "321b336d92b3e894060637528499dcf9": "部署成功了!", - "1850193ca4b37a25ee94db903eddc16f": "部署失敗了!", - "b390405514d6291f511c9f3a4fb31249": "站點ID必須是數字", - "e650b17a0b833e3bcdd8e859b37ce94e": "找不到此數據庫!", - "a0adaeeb3642584bd931c757b6f71d78": "PHP FPM優化成功", - "f11ab236591dc778c39c9429e141dba2": "MySQL優化成功了", - "d145648d4281cb3266714c5986bcab8b": "nginx fastcgi緩存配置已經存在", - "9c373c2796e866dc590f9dc7c80609da": "nginx fastcgi配置錯誤!", - "2750e686fcc97deec0122789a059edbd": "nginx fastcgi緩存配置完成", - "615681ddc1b0efb9f6d434adc1451bb7": "nginx init fastcgi緩存配置已經存在", - "a61c53dff88925e428f2a295b18ac807": "nginx init fastcgi配置錯誤!", - "28b386f7ab5957184b60f47c0e540d68": "nginx init fastcgi緩存配置完成", - "b7082bd55a134bb3a142570572e1c469": "FastCGI配置在網站配置中不存在", - "c0ff8a4b4b8f68c4ba7df88588291590": "FastCGI配置已經存在於網站配置中", - "e3a6621c5ea036c8f82d3f2d343f1bc8": "網站FastCGI配置錯誤!", - "4c87778ab71a4e47170ccafd6edb4922": "網站FastCGI配置完成", - "90d0982f5d024da53b21f69d3f0c8cbb": "數據庫不存在!", - "b376175f0c97d2ab7c37e44ec3b3a1b9": "非支持mysql5.1!", - "0161305479129bbe47bb020605a15d40": "設置成功!", - "5c9b599b99f7a169b9cd25f7045eaac5": "同步成功!", - "b6601359f1ae1067d4c4d271b7407639": "同步同步1!", - "10a1984f6c5b935c5d8c7d4b4345e1e5": "同步!", - "86da84e8e3aacf73ee745caee5904268": "同步!", - "8ed30fe61ac59c9e1cb4a75d9a48d477": "成功創建!", - "330e51da1228a070540f82eb8e78155c": "成功設置!", - "7ac73ef676faaa8a5f8e3924b4d151e3": "用戶名或密碼不能少於3個字符", - "88d8a4565feba5ad270c00e85564b96d": "目前不支持OpenLitespeed", - "c1f8cf125da0d6db1c4e0d09033c9ddd": "請輸入帳戶或密碼", - "bd7fb7b4280616cbe5de49eb1ee8cc3a": "請輸入要保護的目錄", - "8c48114518721e3966cd4553a0cee705": "請輸入名稱", - "dd65d82f6868cfa127f86e5658674829": "已經設置了站點密碼保護,請取消然後設置。站點目錄 - >密碼訪問", - "1cc6b0e84b90d0ca0b863fccc0f33b36": "目錄已受到保護", - "b7526fc6f8b21e71ea1e290a982df4c9": "成功創建", - "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2不支持倍增!", - "69be778c38b9edc0ab3040c478c39370": "錯誤:%s
2.建議選擇官方和可靠的基礎架構以避免不必要的損失。", - "475dfbee8626a4d939cf631aad174de3": "掃描:{}", - "71c7dfa944a5a50f281c0acb232dcdeb": "掃描:{}...", - "0c29ac6d8e69451c80f8ef857e499ab2": "敏感目錄找到{}", - "53872e73575a306598c0c4060b44181c": "圖像存在於敏感目錄中:{},攻擊者可以使用竊取敏感數據或源代碼,從而導致進一步的安全問題。", - "6fe56120a0502f9678988d756dd27682": "1。輸入使用圖像部署的容器並刪除目錄而不會影響業務
2。如果無法刪除該目錄,請限制對目錄的訪問", - "6b2f9867ccd6f3e6f06726c06ed684d5": "找到敏感文件{}", - "6684913201a60be0b5e89c4dfb210719": "找到BashRC後門{}", - "9a9f27d5f9f8c056fff7986c87a94c30": "發現該圖像具有BASHRC後門:[{}],惡意代碼內容:
{}", - "d8a828116070b9d92315ca309cca1991": "1。輸入使用圖像部署的容器,並在文件
2下刪除惡意代碼。檢查容器是否已入侵,並在容器中更新業務的訪問令牌或帳戶密碼
3。建議替換官方圖像或其他受信任的圖像部署容器", - "e1439f3f7d25d378078d513a82a3fa87": "後門文件找到{}", - "9ede9d4bd542eedf78e39b0acf0206e3": "發現圖像中存在BashRC後門文件[{}],惡意代碼內容為:
{}", - "686765b4612ecd8f774648db29a1541d": "Cron後門發現{}", - "390bdc0b3c37a56ede9467b0c220a3b6": "發現cron後門[{}]存在於圖像中,惡意代碼內容為:
{}", - "caea084281a3cb2515e5618cd3856163": "找到系統後門:{}", - "d04061273caa56d5a0c3d74f3e9fd482": "發現SystemD後門文件[{}]存在於圖像中,惡意代碼內容為:
{}", - "fc76e0fe415c49cc1c09bf76035fc4e9": "找到SSHD後門{}", - "00b2409f52ef5bc56afe29ccbe5cfa2c": "找到SSHD軟鏈接後門:{},文件命令惡意功能[exe = {}; link_file = {}]", - "e747da31a54cd71fb1a2860cae0f9f77": "找到了TCPWrapper後門{}", - "a2b09164c8d23894736bcc6a646861e0": "發現TCPWrapper後門文件[{}]存在於圖像中,惡意代碼內容為:
{}", - "a7fd9f6b190b8531039376fbbda5f482": "用戶發現有逃脫的風險{}", - "5d46ed5f4af3f30cfcc8bd66942f93b4": "用戶名{}可以通過命令[{}]完成容器逃脫,從而允許攻擊者獲得對主機或其他容器的訪問權限。惡意內容:
{}", - "4ca0a18aa36a60613104cacdae514dec": "1。建議刪除圖像或不再使用
2。如果已經有使用圖像的業務,請輸入容器環境並在 /etc /sudoers文件中刪除用戶{}的內容。", - "611afea08ae3b216a34dfde4c143f46c": "不支持支持系統", + "c0ef08aa7bd6276137ccd491a8041223": "沒有音量可以備份", + "584e35dd4a55da88bd232ac7a19b9b95": "備份任務成功地創建了。", + "0b08674e1c87f3f8508a4ae9b0c160f8": "無法創建備份任務{}", + "2a0f93407bb61e2403ccd032cbc64e3e": "成功刪除", + "13d829d3f2b78c971207d944f2a96c55": "無法刪除文件,原因:{}", "0af5787b053c4bf5dbe610731f7d4199": "文件路徑不能包含漢字!", "719ee030d81490fc055af0c4426aacb9": "檢測失敗:{}", "ee3936ffdc910e2cb8578ad1fae322f0": "檢測通行證!", @@ -1999,136 +2037,64 @@ "428ed92bf9d3198f4c9885c11fdb2be3": "這些模板成功:[{}]
這些模板失敗:模板名稱已經存在或格式不正確[{}]", "70975749d256333f1b3b62c864ca265a": "無法修改!", "2360e954ae9eecac28b2a3edad5e8ce0": "成功修改!", - "e8ad47bc3f119a4d4072f5cb114676f4": "圖像名稱不能為空", - "e5e3829984a9637afc2546ad2c87d83b": "鏡子路徑不能為空", - "e5f40049c6d67bd11d9a1a1889f5b84a": "圖像ID不能為空", - "5e022f79dcc774c79bc55ee28774e2e7": "圖像名稱不能包含 /", - "c00be60f9f3f7d747aadfdb124e855ef": "成功保存到:{}", - "cb1f8d99b492340cf701101c87884a8c": "無法導出圖像!", - "afaa91d141ded3e37b8b9ebf8bc31c51": "導出圖像失敗以及與Docker的連接時間。請嘗試重新啟動Docker,然後重試!", - "5b980f2e1c82c04c91376d55d4306a91": "無法導出圖像!
{}", - "e5e8c7cac8b71e94280fa08301d21e78": "請輸入圖像路徑!", - "5441400ea3bd16cffdf70c46c34f61d4": "無法導入圖像。文件擴展名必須為.tar!", - "67b97e4746a2faf5d59206a80bb28649": "圖像導入成功!{}", - "deceb44868a29ae5d579114348736cbb": "圖像導入失敗,並且無法創建容器的臨時目錄。請檢查保護軟件是否具有攔截記錄!", - "8eb05618b0f04e727b0685427fd49c8e": "無法導入圖像!
{}", - "721aa02577670c1049ea9d12caa8938c": "請輸入正確的Dockerfile路徑!", - "736df9a7c491f3299efdeb9f7d7e9e0f": "成功構建圖像!", - "6e85568dae869303ca7a4486f55458a3": "構建失敗,連接時間超時", - "5bb301b85cc1f42e56174d3d9a4c0286": "構建失敗!{}", - "f51455b323ec2db8004c812001043330": "構建失敗!找不到指定的Dockerfile", - "8e1b9c9b75950d0feba6813d32766e61": "構建失敗!{}", - "eba0ec758a6464a20c14c0f23ceee62e": "鏡子成功刪除了!", - "8dd326278d09a3ac4bc56cf725c8f262": "刪除失敗,圖像可能不存在!", - "11ead921bc0e3d94f1f9e0db4bf8ed8d": "圖像ID用於多個圖像中,迫使要刪除的圖像!", - "43993616c7433350755d30a3b4d065dd": "圖像正在使用。刪除圖像之前,請刪除容器!", - "d6992c3fcf2269c249cd5f18f1ac2c11": "無法刪除圖像!
{}", - "0c6c071174fde5b47c9eef8088c17a89": "未能刪除圖像,與Docker的連接定時,請重新啟動,然後重試!", - "a3ba80a8e1e0d9af94c809e909431b3c": "失敗,登錄到存儲庫[{}]失敗,請嘗試再次登錄此存儲庫!\\ r \\ n", - "cc40077b6ee61fbfa35713a21e8eb866": "bt_failed,登錄到存儲庫[{}]失敗,請嘗試再次登錄此存儲庫!{}", - "60b488c60b6747bf34a86a69740b636d": "推送的映像不能包含[/],請使用以下格式:image:v1(圖像名稱:版本)", - "44dbec830b87eb037e8fcbb0e1b56160": "無法推到Docker公共存儲庫!", - "b4c46001066c912344e3bdb0df86e848": "存儲庫[{}]登錄失敗!", - "0ebfb094c6482acb049e0dd0d3107307": "推送失敗,圖像標籤錯誤,請輸入:v1.0.1", - "d26bdd6e86002ed92089dc71347822ce": "推動失敗,沒有權限推到此存儲庫!", - "82058092ad7d2c7aa5e2f012b6544e59": "推動失敗!{}", - "2b228d4775d23d2725ec227ba648bd43": "成功推動,鏡子:{}", - "9e396f640866ded9c3a47268f96a36e3": "拉圖像,請等待... \\ r \\ n", - "7e5f4d488d318dc7c235095c8456f5e4": "拉或搜索圖像... \\ r \\ n", - "5a7377f73fc144fd961e8b2ffeba66af": "拉失敗!\\ r \\ n", - "97a6dfe3a273202edffe31af7a43e220": "無法使用默認的鏡像站拉圖像!試圖使用另一個鏡像站為您拉,請等待... \\ r \\ n", - "484616540fc726ef4f52e97a1c2f0fef": "無法拉動圖像!\\ r \\ n", - "1cd77329b2bddfb200e656214b1fdf32": "無法拉出圖像!", - "63c709b9759af42fef890d539d822575": "拉失敗!{} \\ r \\ n", - "b4aba972332d1f3728171905a033fb99": "圖像拉[{}]成功\\ r \\ n", - "2fae21ffd185d9e9730b39bc7de23852": "圖像成功地拉了!", - "8a635442294fd90195a43d9a1672fc3f": "無法拉動圖像!", - "711de72d616e7abb29dfa919244d382d": "拉力失敗,不存在圖像,或者圖像可能是私人圖像。您需要輸入Dockerhub帳戶密碼!\\ r \\ n", - "e9511e26273da5b4537b4683668b548e": "拉失敗!{} \\ r \\ n", - "05d13bf5dcc37754db74b2356e6e117c": "拉力失敗,存儲庫中沒有這樣的圖像!\\ r \\ n", - "714841af7f3de6c8d99ba03f4cee0ee5": "拉力失敗,圖像格式是錯誤的,例如:nginx:v 1!\\ r \\ n", - "2d941c4fa4da32ccafa8670a07f23c1d": "圖像被成功拉出。", - "5282194697748d9fcd1ccd8a90428424": "可能沒有這個鏡像。", - "d6facab17334983e7c6f8c561c239820": "無法拉出圖像,這是一個私人圖像,請輸入帳戶密碼!", - "b507deb7848d566982b339265c8f5482": "拉圖像故障

原因:{}", - "e90811ef0a60b6d299b4e1064d7788d0": "沒有無用的圖像!", - "f343313c101aeaff0516990ebea3dcef": "無法刪除!{}", - "90ecd58b3feb0b2be11f0af685ad39fe": "刪除無用的圖像失敗了,與Docker的連接定時。請嘗試重新啟動Docker服務,然後重試!", - "4097585e32152eb74bbee5ab8c463718": "Docker服務正常運行,請重新啟動,然後重試!", - "26a0931677e111565f3ff7d059b94d8b": "網關設置是錯誤的,請輸入與子網匹配的網關:{}", - "def2ba1ce0e4d77692c14e5b984636fa": "子網地址格式錯誤,請輸入例如:172.16.0.0/16", - "716eeeb727fd667635ccf1d18891d46e": "IP範圍格式錯誤,請輸入此子網的適當IP範圍:", - "e310a873e7812c7f994d482604061fee": "IP範圍[{}]已經存在!", - "db88b911ea66744c24b22efcafef2101": "系統內核版本太低,請更新內核或選擇其他網絡模式", - "9cebb294a44695984eaaf2134df63a51": "當前節點不是群,需要在使用之前配置", - "85ac438bd64f13e2ad61cf60e5ade3d3": "無法添加網絡!{}", - "640520ffb5d9c01336710bad3ea6d7ff": "成功添加了網絡!", - "87574a543563d2e037b87a6cf705e3ff": "系統默認網絡無法刪除!", - "23b6d9d6c36088deb928efad7fb9b63b": "使用網絡在使用時無法刪除!", - "2aa70dad9bff94a855fdde3fc113e6c5": "刪除失敗!{}", - "8f512551c7ddf61331c3d068e80c642c": "沒有無用的網絡!", - "08efe6a4e12437b79225c8b59fd710eb": "網絡ID不能為空", - "a636381ee5e6d6d021fff745ca132905": "容器ID不能為空", - "31a75a8d220d37dc4a7ea28d0f24cc19": "網絡斷開連接成功了!", - "a2b9895fca7698902da9319b52392366": "容器ID:{},不存在!", - "c81f03a558307d5aaf3b339af28e04ff": "網絡ID:{},不存在!", - "12a90fe85b8863e1dea43284988d7750": "網絡斷開連接失敗!{}", - "6226d2fef3bf047236f0f3a57dcd71fb": "網絡連接成功!", - "d882b8375782b1bc56ccaf84ed27d20b": "無法連接到網絡!{}", - "221d1ea3c23f430e03a4486dca865014": "容器不存在,請刷新瀏覽器,然後重試!", - "7e88e25ea6c628c2d03c526c04af3eed": "無法獲得容器狀態:", - "ae178e022cf2fe30f402145572528de8": "音量名稱可以長2個字符!", + "7c6f761019365f8a5cfb2fb54d9e199d": "info.json下載了!", + "10066fce84fe34e9cc33e0338532988b": "info.json下載失敗!", + "0672e579ab0e3454713eb683ddcc4859": "{}下載失敗,請重新同步!", + "8e790e81fffa7f51d099f710bd8f82cf": "{} yml文件測試失敗,{}", + "371acfea202589c4efd6724888f66595": "{}下載完成!", + "51cf61e34b3f71ce1e430cdfcf129b80": "{}減壓失敗", + "c59b65890496cdf2b14d127a1f76f73d": "{}成功提取", + "0117718c35c7a16a62de5c259e1d35ee": "目錄創建因以下原因失敗:{}", + "374e3fe41b55a0b29420e455fb514dd6": "已經創建了存儲量", + "6d0d40f64f89227daf345eb2257638e8": "{}不能包含空格", + "a00b49ace55de909015029a0d6d6096f": "{}不能無效!", + "54498312bb8f97ce07a9a0b0b47cfad1": "服務器端口[{}]被佔用,請更改為另一個端口!", + "47b74e08252747225c49ea0cb011c79e": "項目啟動失敗{}", + "838089af9a2941a49862f342c056a8ca": "開始創建項目", + "9b149598fb30f54fec9e82a3d121a464": "{}已經存在,請更改項目名稱", + "634370637f6a5b88940c75f826953d0c": "用戶項目目錄無法創建,詳細信息:{}", + "f7b14d3f642d711a23d5a0cca725fd0d": "未能複制項目目錄。細節: {}", + "7bdaccb3d20432c5e0150862ab1cc3f3": "缺少參數名稱", + "9b90b5b49486a61d9b0e6dbbbcb56cad": "缺少參數container_info", + "b23d7110e9bf6539b4964afe0d4934e2": "分組已經存在", + "a90ca6939fe71693c145f50596c6e0e6": "容器{}已由組{}添加!", + "e3cf7e2f2d14257e7ea33657b135d534": "添加失敗:{}", + "fcbeb38a63ced9d3de476fb08c31d71e": "缺少參數ID", + "fe4e0032f69b4100ed143d475e8b5050": "編輯成功", + "6c4ed52bea35c4c43839b8f0b44489f9": "編輯失敗:{}", + "6c0129a45e9da4e1820335f3d06a869f": "刪除失敗:{}", + "2a743a86676fd52214d3c0af1b0238b5": "狀態參數錯誤", + "f95136e5c1f3ccbb09ace8fc24f1e0ca": "容器[{}]操作失敗", + "2e01172e31495f41fcebcf3f831cc82c": "操作成功", + "244a98f8c45f938980f48b168aef02c9": "操作失敗:{}", + "fc431240dfc80a731900d5f2ddb6dfc3": "容器開始順序{}", + "5ea6c6eea14c24c92eeeccaeea5c46dc": "無效狀態!", + "0f3f874698792dc81c7c00b9e74fea34": "{} \\ r \\ n", + "aad4acc1243565c5c2ca41e5733e5fe0": "成功\\ r \\ n", + "d8f5a29760a4f000dd754819b1faadcc": "失敗\\ r \\ n", + "73977612ef83925db43df7745df9c5eb": "\\ r \\ nno響應超過10分鐘!\\ r \\ n", + "6345c76d66a8a9e9cdd3f9d996ff062d": "請傳遞CMD", + "bba401eadefa8222f3e60a312cc19f34": "只能執行Docker Run或Docker Pull命令", + "b5592904212696df3e5bcec990c8676a": "存在危險命令:[{}],不允許執行!", + "cfff471dc04b6ba4aeb2cc2844b2c94b": "存在危險符號:[{}],不允許執行!", + "f1d9b154a0c2625d828a504a8cb35682": "該命令已執行!", + "45a0bbacbe8d5ea062167e88423e4573": "未檢測到nginx或apache服務器,請先安裝一個!", + "bdaf560796795d6a303bc9a1d75a34c5": "項目類型[{}]現有域:{}", + "4588a786e80c83c2cbde37b930c3d778": "服務器端口[{}]不使用,請輸入使用中的端口進行反向!", + "6888cf6586ce3c187150146a2d1db0ac": "添加失敗,數據庫無法編寫!", "9f9663b59d32947ff1f2c5b364c571b8": "成功添加了!", + "e6bddfc6a0bbf72d592236c61b411f9a": "添加失敗的錯誤:{}", + "1bfa1b1738332c4835f5efe7c54ab9c2": "參數錯誤!", + "0d66954ff42aa042c219a356266f5bc0": "未檢測到反向代理信息!", + "ae178e022cf2fe30f402145572528de8": "音量名稱可以長2個字符!", "365c770f123d22093084908ebcdc75fc": "卷名稱已經存在!", "2dc51ae60242f0e5b56a9f0d176f91d4": "添加失敗{}", "307feea9ab8928f39595316b11992cb1": "驅動程序選項標籤必須是字典/鍵值對!", "f529949f8a98615c109ee8b8eb9f7656": "加上失敗!{}", - "2a0f93407bb61e2403ccd032cbc64e3e": "成功刪除", "a4ec5c1fa47f2ce0c875f91ea4e7dd08": "存儲量正在使用,無法刪除!", "11ff7153b67d275618dd3a62d1e56373": "存儲量不存在!", + "2aa70dad9bff94a855fdde3fc113e6c5": "刪除失敗!{}", "55c31f03e88bd6ad4ce7f68d425648dd": "沒有無用的存儲量!", - "5395cc8155f62a666b8f0d0f9f207676": "存儲庫信息已經存在!", - "9b10e472adfe6372c9175b9002f098fd": "[官方Docker存儲庫]不可編輯!", - "5858be44c285048a8f51c126b2fd23e9": "編輯失敗!原因:帳戶密碼解密失敗!請刪除存儲庫,然後再次添加", - "7e51d0e26e1b467aff3c89d3e0751ec0": "編輯失敗!原因:{}", - "6478f13dd58e5a4329e19be9020243ff": "找不到這個存儲庫", - "d5309f3186607eb36bee41e8a28cea3a": "編輯成功!", - "9e20bffc0d4093d18fcbc5c98fa0fd87": "[官方Docker存儲庫]無法刪除!", - "a62336a87697ab6911ba550015a798ef": "刪除失敗,存儲庫ID可能不存在!", - "c28bc5c07ec6f2b56777ac7c852dd64b": "設置成功!", - "f2bd8f0373084151bbc07e8c1409e37c": "設置失敗!{}", - "54197759827cfaf0cdb1e213fa49771e": "登錄測試失敗!原因:可能是帳戶密碼錯誤,請檢查!", - "657a0b7e82731fb4ae516d14081f17d0": "登錄測試失敗!原因: {}", - "11cde3a2ca81c845978b98e4a6ec471e": "監視節省時間必須是一個積極的整數!", - "b314fb25bf654a2256bf53b0f6986c93": "監視數據不能保留超過999天!", - "60e46aeaed758964902dd7ae99858f03": "那裡", - "1ba194462d31177d3db4ad6bf18fdbe5": "Docker Service設置失敗了,請關閉Aapanel的抗內部局部,然後重試!", - "422f78617d6852c41e370982d73235ed": "設置失敗!故障原因:{}", - "dca5bd22c99a74f74074a3a53d78a58b": "{} 成功", - "be62f7640f2c5b730ba50ecc580ae618": "全局配置文件錯誤,請檢查{}!", - "8ebe0b989b543cf96149811c7a1f3fe2": "加速地址[{}]格式錯誤
參考:https://mirror.ccs.tencentyun.com", - "ec1ec17a5862a949e277432e1d09484d": "設置失敗!故障原因:{}", - "179a2001e96bb8d0475488f80c7216a8": "成功更新!", - "f4dc83b81fe6993f99c2b54494eeeec1": "開始成功監視!", - "af79fd88d4b6f7e8a1ac05e199747fdb": "無法開始監視!", - "6f4d03d4d1ee0bd282ea744730b7ceda": "Docker監視成功停止了!", - "4cc06d8560bb116a38a5aae1458cbe4a": "Docker-Compose文件路徑不能為空!", - "8d885b86e8562c2128689c4a2601c054": "Docker-Compose文件不存在!", - "7bdd4d85dda1275e2be709fd9e0d71dd": "Docker-Compose文件不可執行,也不是Docker-Compose文件!", - "c28e19f0398bc1819a890878021836c1": "安裝任務已經存在,請不要再添加!", - "a87b64b2d19f29438274f80ce36a3579": "安裝任務已添加到隊列中!", - "c1710a5899fa03f7ad5ea1945a91e4f8": "請在卸載Docker之前刪除所有容器和鏡像!", - "d388487780fba74e4ff3f3b9ffbce58b": "可以卸載!", - "c4ba6d01fd53333a6e7e85707758c550": "卸載成功!", - "b7affa7cc663144bc99b9edb3f1a027f": "維修任務已添加到隊列中!", - "cb49a4daafc9d27bd460967891968225": "成功保存了!", - "739722f14db791bd300e08318a48ba59": "保存失敗,原因:守護程序。JSON配置文件格式錯誤!", - "58fcf0699f38a60c8025330585ac205a": "保存失敗,原因:{}", - "720d2290c3082615c0f79894bfdcabd7": "請輸入正確的I PV 6地址!", - "c0ef08aa7bd6276137ccd491a8041223": "沒有音量可以備份", - "584e35dd4a55da88bd232ac7a19b9b95": "備份任務成功地創建了。", - "0b08674e1c87f3f8508a4ae9b0c160f8": "無法創建備份任務{}", - "13d829d3f2b78c971207d944f2a96c55": "無法刪除文件,原因:{}", "6169a7282b361deb5f6f5b6e18f9426e": "CMD參數錯誤", "286933a4f24bee0eed1f9300f70a30c7": "只能執行Docker Run命令", "a46a6b274dcbfc5a629d234c2816a165": "有危險符號:[{}],不允許執行!", @@ -2155,24 +2121,26 @@ "994e5a057aca3524ba773ec33228e184": "創造失敗!{}", "00ff90441ea0bdece5d9e5c72efa14a7": "集裝箱的創建失敗了,與Docker的連接定時出現了!", "8879635d66ad75dcbfc8c31ba1351116": "容器無法運行!{}", - "facfe02e3070c389fe486efac23f2ab6": "容器容器!", "71dc70f7ab3a4bc0c2a7141718d3a9b2": "創造失敗!", + "1983b37067c7e94095a5113786fdef9c": "編輯失敗,連接docker超時,請重啟docker重試!", + "c558fedcb5850939202e684ff32c7c50": "更新失敗!{}", "ed0029af5f77a5dfacbc2452e8c3ec92": "容器ID異常", "c5b3db7efde90edcb803a4a79e559b21": "新的圖像名稱不能為空!", "b10305369ebb41ef24699b8137733465": "鏡子不存在!", - "d567f353b12e618571935661f31c2a16": "容器編輯失敗了,並且連接到Docker的連接時間。", - "c558fedcb5850939202e684ff32c7c50": "更新失敗!{}", + "9e90efb62702b147b71e8731290caf44": "鏡像[{}]不存在,請嘗試勾選【強制拉取鏡像】後重試!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "新容器未創建成功,舊容器已恢復。{}", + "1f004e412319b7ed472624e011b3d2ba": "更新成功!", + "a2ea046c20d2da5cebf2dea01a62dabe": "更新失敗!容器狀態已恢復", "b84bf4d95051856f9965b55bb5402de3": "容器不存在!", + "d567f353b12e618571935661f31c2a16": "容器編輯失敗了,並且連接到Docker的連接時間。", "f2124ee490df203b3f86509401c76a09": "該容器已成功編輯,並且在創建當前指定的[{}]網絡時未指定子網,並且無法自定義IP,並且IP已自動分配給您!", "b95d75cd8e04e9cca297c3cd1091b2eb": "該容器已成功編輯,網絡[{}]設置失敗,並且IP地址已自動分配給您,錯誤詳細信息:{}!", "4363bb34365a67238ecc6a98ce46b361": "圖像已經生成,{}", "4bb30e8d57a6a7e548758daf4ac33983": "成功提交!", "a32e1f09fc2739d94c51a7168675e0e9": "提交失敗!{}", - "9ff81cc845af62a773af3412bdf7d9a0": "容器ID異常,請刷新頁面,然後重試!", - "d8f5602e197fb8b3c772f071ad4a8baf": "選擇外殼類型!", - "9ad72ac09babc507baa6e165041e128c": "這個外殼不支持選擇拳或sh!", "172f51d3307b02aeb6dc703a442f4724": "無法獲得容器", "684fc00ae67504a56c09ef71431b1261": "成功導出到:{}", + "f9a48b804d917398e795016687f3b0f4": "請先關閉【企業防篡改】後再嘗試!", "3ab9d9b76e8d22434930622b5f0acc6a": "該容器已被刪除!", "d1fe1d6e5e8c17b60f749ad36ff3bcaa": "IPv6服務器端口[{}]被佔用!", "9f13645ac42f0c9908a35637a525d561": "IPv4服務器端口[{}]被佔用!", @@ -2195,6 +2163,7 @@ "dac7d97aeb94cf9d3b3b5d7d072c4cff": "請在重新嘗試之前關閉企業篡改保護!", "32ca87e65c5fc75d3857767417b56439": "無法刪除!{}", "b0ea22ff0b389c2a32b8f4367ab650db": "參數錯誤,請傳遞RESTART POLICT RESTART_POLICY!", + "179a2001e96bb8d0475488f80c7216a8": "成功更新!", "3b2f70397fa8a827c7146cbd900f7222": "更新失敗!{}", "c147897a9d1746a58de531e9c0158c23": "容器尚未啟動,也不能重命名!", "a89c2e8f7eb81399f984330e55014c6f": "成功重命名!", @@ -2203,45 +2172,135 @@ "363b76cd4207ec1adb31b9f7ee3930c8": "未鎖定!", "0fffc4397713115e14ef45273241dfbb": "參數錯誤,請傳遞:備註!", "dce2cbc7791016e4876ab144e53b4f82": "參數錯誤,請傳遞:ID!", - "7bdaccb3d20432c5e0150862ab1cc3f3": "缺少參數名稱", - "9b90b5b49486a61d9b0e6dbbbcb56cad": "缺少參數container_info", - "b23d7110e9bf6539b4964afe0d4934e2": "分組已經存在", - "a90ca6939fe71693c145f50596c6e0e6": "容器{}已由組{}添加!", - "e3cf7e2f2d14257e7ea33657b135d534": "添加失敗:{}", - "fcbeb38a63ced9d3de476fb08c31d71e": "缺少參數ID", - "fe4e0032f69b4100ed143d475e8b5050": "編輯成功", - "6c4ed52bea35c4c43839b8f0b44489f9": "編輯失敗:{}", - "6c0129a45e9da4e1820335f3d06a869f": "刪除失敗:{}", - "2a743a86676fd52214d3c0af1b0238b5": "狀態參數錯誤", - "f95136e5c1f3ccbb09ace8fc24f1e0ca": "容器[{}]操作失敗", - "2e01172e31495f41fcebcf3f831cc82c": "操作成功", - "244a98f8c45f938980f48b168aef02c9": "操作失敗:{}", - "fc431240dfc80a731900d5f2ddb6dfc3": "容器開始順序{}", - "5ea6c6eea14c24c92eeeccaeea5c46dc": "無效狀態!", - "45a0bbacbe8d5ea062167e88423e4573": "未檢測到nginx或apache服務器,請先安裝一個!", - "bdaf560796795d6a303bc9a1d75a34c5": "項目類型[{}]現有域:{}", - "4588a786e80c83c2cbde37b930c3d778": "服務器端口[{}]不使用,請輸入使用中的端口進行反向!", - "6888cf6586ce3c187150146a2d1db0ac": "添加失敗,數據庫無法編寫!", - "e6bddfc6a0bbf72d592236c61b411f9a": "添加失敗的錯誤:{}", - "1bfa1b1738332c4835f5efe7c54ab9c2": "參數錯誤!", - "0d66954ff42aa042c219a356266f5bc0": "未檢測到反向代理信息!", - "7c6f761019365f8a5cfb2fb54d9e199d": "info.json下載了!", - "10066fce84fe34e9cc33e0338532988b": "info.json下載失敗!", - "0672e579ab0e3454713eb683ddcc4859": "{}下載失敗,請重新同步!", - "8e790e81fffa7f51d099f710bd8f82cf": "{} yml文件測試失敗,{}", - "371acfea202589c4efd6724888f66595": "{}下載完成!", - "51cf61e34b3f71ce1e430cdfcf129b80": "{}減壓失敗", - "c59b65890496cdf2b14d127a1f76f73d": "{}成功提取", - "0117718c35c7a16a62de5c259e1d35ee": "目錄創建因以下原因失敗:{}", - "374e3fe41b55a0b29420e455fb514dd6": "已經創建了存儲量", - "6d0d40f64f89227daf345eb2257638e8": "{}不能包含空格", - "a00b49ace55de909015029a0d6d6096f": "{}不能無效!", - "54498312bb8f97ce07a9a0b0b47cfad1": "服務器端口[{}]被佔用,請更改為另一個端口!", - "47b74e08252747225c49ea0cb011c79e": "項目啟動失敗{}", - "838089af9a2941a49862f342c056a8ca": "開始創建項目", - "9b149598fb30f54fec9e82a3d121a464": "{}已經存在,請更改項目名稱", - "634370637f6a5b88940c75f826953d0c": "用戶項目目錄無法創建,詳細信息:{}", - "f7b14d3f642d711a23d5a0cca725fd0d": "未能複制項目目錄。細節: {}", + "ca1bc3e1d32b99b90395da47b88576a9": "參數錯誤,請傳入:ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "參數錯誤,請傳入:_ws!", + "11cde3a2ca81c845978b98e4a6ec471e": "監視節省時間必須是一個積極的整數!", + "b314fb25bf654a2256bf53b0f6986c93": "監視數據不能保留超過999天!", + "60e46aeaed758964902dd7ae99858f03": "那裡", + "c28bc5c07ec6f2b56777ac7c852dd64b": "設置成功!", + "422f78617d6852c41e370982d73235ed": "設置失敗!故障原因:{}", + "dca5bd22c99a74f74074a3a53d78a58b": "{} 成功", + "ec1ec17a5862a949e277432e1d09484d": "設置失敗!故障原因:{}", + "f4dc83b81fe6993f99c2b54494eeeec1": "開始成功監視!", + "af79fd88d4b6f7e8a1ac05e199747fdb": "無法開始監視!", + "6f4d03d4d1ee0bd282ea744730b7ceda": "Docker監視成功停止了!", + "4cc06d8560bb116a38a5aae1458cbe4a": "Docker-Compose文件路徑不能為空!", + "8d885b86e8562c2128689c4a2601c054": "Docker-Compose文件不存在!", + "a87b64b2d19f29438274f80ce36a3579": "安裝任務已添加到隊列中!", + "d388487780fba74e4ff3f3b9ffbce58b": "可以卸載!", + "c4ba6d01fd53333a6e7e85707758c550": "卸載成功!", + "b7affa7cc663144bc99b9edb3f1a027f": "維修任務已添加到隊列中!", + "cb49a4daafc9d27bd460967891968225": "成功保存了!", + "58fcf0699f38a60c8025330585ac205a": "保存失敗,原因:{}", + "6c3e5d603d8845422e861fb0b4eed350": "一個配置項不", + "f324009782d2d9e73d1087884ebc2c4c": "Docker root不能為空!", + "538960e1336f919e37a0d2c024c56830": "當前Docker根目錄就是目標目錄,不需要更改!", + "f2bd8f0373084151bbc07e8c1409e37c": "設置失敗!{}", + "a848bbd79221dfdce1c9dca536dbfada": "代理設置的 JSON 格式錯誤!", + "edf6eb680187066c4dea216b3b20d6d2": "代理設置成功!", + "720d2290c3082615c0f79894bfdcabd7": "請輸入正確的I PV 6地址!", + "b01f9411136207ad7df28b9bf2387e2a": "升級失敗!失敗原因:{}", + "da896b628e3ded58445e4b015320f327": "重載失敗的原因是:{}", + "efb869976990f78b3d6fcbaf270e3323": "重新加載成功!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "全局配置文件過載失敗:{}", + "75bbb7a00c3b5b510913952fe089f52a": "參數錯誤,路徑參數!", + "273609d18876f5f9e3f021032e5b57a3": "設置失敗!", + "5e022f79dcc774c79bc55ee28774e2e7": "圖像名稱不能包含 /", + "c00be60f9f3f7d747aadfdb124e855ef": "成功保存到:{}", + "cb1f8d99b492340cf701101c87884a8c": "無法導出圖像!", + "afaa91d141ded3e37b8b9ebf8bc31c51": "導出圖像失敗以及與Docker的連接時間。請嘗試重新啟動Docker,然後重試!", + "5b980f2e1c82c04c91376d55d4306a91": "無法導出圖像!
{}", + "e5e8c7cac8b71e94280fa08301d21e78": "請輸入圖像路徑!", + "5441400ea3bd16cffdf70c46c34f61d4": "無法導入圖像。文件擴展名必須為.tar!", + "0720c6c4f478b3a374b4a438f7cf80ad": "導入鏡像失敗,連接docker超時,請嘗試重啟docker後重試!", + "22cc0388137842df9649b3bbcff345e8": "如果鏡像導入失敗且未創建臨時容器目錄,請檢查防護軟件是否有攔截記錄。", + "67b97e4746a2faf5d59206a80bb28649": "圖像導入成功!{}", + "deceb44868a29ae5d579114348736cbb": "圖像導入失敗,並且無法創建容器的臨時目錄。請檢查保護軟件是否具有攔截記錄!", + "8eb05618b0f04e727b0685427fd49c8e": "無法導入圖像!
{}", + "721aa02577670c1049ea9d12caa8938c": "請輸入正確的Dockerfile路徑!", + "736df9a7c491f3299efdeb9f7d7e9e0f": "成功構建圖像!", + "6e85568dae869303ca7a4486f55458a3": "構建失敗,連接時間超時", + "5bb301b85cc1f42e56174d3d9a4c0286": "構建失敗!{}", + "f51455b323ec2db8004c812001043330": "構建失敗!找不到指定的Dockerfile", + "8e1b9c9b75950d0feba6813d32766e61": "構建失敗!{}", + "eba0ec758a6464a20c14c0f23ceee62e": "鏡子成功刪除了!", + "8dd326278d09a3ac4bc56cf725c8f262": "刪除失敗,圖像可能不存在!", + "11ead921bc0e3d94f1f9e0db4bf8ed8d": "圖像ID用於多個圖像中,迫使要刪除的圖像!", + "43993616c7433350755d30a3b4d065dd": "圖像正在使用。刪除圖像之前,請刪除容器!", + "d6992c3fcf2269c249cd5f18f1ac2c11": "無法刪除圖像!
{}", + "0c6c071174fde5b47c9eef8088c17a89": "未能刪除圖像,與Docker的連接定時,請重新啟動,然後重試!", + "a3ba80a8e1e0d9af94c809e909431b3c": "失敗,登錄到存儲庫[{}]失敗,請嘗試再次登錄此存儲庫!\\ r \\ n", + "cc40077b6ee61fbfa35713a21e8eb866": "bt_failed,登錄到存儲庫[{}]失敗,請嘗試再次登錄此存儲庫!{}", + "60b488c60b6747bf34a86a69740b636d": "推送的映像不能包含[/],請使用以下格式:image:v1(圖像名稱:版本)", + "44dbec830b87eb037e8fcbb0e1b56160": "無法推到Docker公共存儲庫!", + "b4c46001066c912344e3bdb0df86e848": "存儲庫[{}]登錄失敗!", + "0ebfb094c6482acb049e0dd0d3107307": "推送失敗,圖像標籤錯誤,請輸入:v1.0.1", + "d26bdd6e86002ed92089dc71347822ce": "推動失敗,沒有權限推到此存儲庫!", + "82058092ad7d2c7aa5e2f012b6544e59": "推動失敗!{}", + "2b228d4775d23d2725ec227ba648bd43": "成功推動,鏡子:{}", + "9e396f640866ded9c3a47268f96a36e3": "拉圖像,請等待... \\ r \\ n", + "7e5f4d488d318dc7c235095c8456f5e4": "拉或搜索圖像... \\ r \\ n", + "97a6dfe3a273202edffe31af7a43e220": "無法使用默認的鏡像站拉圖像!試圖使用另一個鏡像站為您拉,請等待... \\ r \\ n", + "484616540fc726ef4f52e97a1c2f0fef": "無法拉動圖像!\\ r \\ n", + "1cd77329b2bddfb200e656214b1fdf32": "無法拉出圖像!", + "63c709b9759af42fef890d539d822575": "拉失敗!{} \\ r \\ n", + "b4aba972332d1f3728171905a033fb99": "圖像拉[{}]成功\\ r \\ n", + "2fae21ffd185d9e9730b39bc7de23852": "圖像成功地拉了!", + "8a635442294fd90195a43d9a1672fc3f": "無法拉動圖像!", + "711de72d616e7abb29dfa919244d382d": "拉力失敗,不存在圖像,或者圖像可能是私人圖像。您需要輸入Dockerhub帳戶密碼!\\ r \\ n", + "e9511e26273da5b4537b4683668b548e": "拉失敗!{} \\ r \\ n", + "05d13bf5dcc37754db74b2356e6e117c": "拉力失敗,存儲庫中沒有這樣的圖像!\\ r \\ n", + "714841af7f3de6c8d99ba03f4cee0ee5": "拉力失敗,圖像格式是錯誤的,例如:nginx:v 1!\\ r \\ n", + "2d941c4fa4da32ccafa8670a07f23c1d": "圖像被成功拉出。", + "5282194697748d9fcd1ccd8a90428424": "可能沒有這個鏡像。", + "d6facab17334983e7c6f8c561c239820": "無法拉出圖像,這是一個私人圖像,請輸入帳戶密碼!", + "b507deb7848d566982b339265c8f5482": "拉圖像故障

原因:{}", + "e90811ef0a60b6d299b4e1064d7788d0": "沒有無用的圖像!", + "f343313c101aeaff0516990ebea3dcef": "無法刪除!{}", + "90ecd58b3feb0b2be11f0af685ad39fe": "刪除無用的圖像失敗了,與Docker的連接定時。請嘗試重新啟動Docker服務,然後重試!", + "0568e5e8aa7c811dd420c818189a0d46": "幾秒鐘前", + "53c53a79f864561f8b6886b3dde7cd51": "分鐘前", + "f329a0dab82282e50e3aea9260e95d53": "幾小時前", + "7a1af30a5ce889031cbc2472766159e3": "幾天前", + "558a41d55884223583b3542e802d2b64": "鏡像名稱不能為空!", + "4097585e32152eb74bbee5ab8c463718": "Docker服務正常運行,請重新啟動,然後重試!", + "26a0931677e111565f3ff7d059b94d8b": "網關設置是錯誤的,請輸入與子網匹配的網關:{}", + "def2ba1ce0e4d77692c14e5b984636fa": "子網地址格式錯誤,請輸入例如:172.16.0.0/16", + "716eeeb727fd667635ccf1d18891d46e": "IP範圍格式錯誤,請輸入此子網的適當IP範圍:", + "e310a873e7812c7f994d482604061fee": "IP範圍[{}]已經存在!", + "db88b911ea66744c24b22efcafef2101": "系統內核版本太低,請更新內核或選擇其他網絡模式", + "9cebb294a44695984eaaf2134df63a51": "當前節點不是群,需要在使用之前配置", + "85ac438bd64f13e2ad61cf60e5ade3d3": "無法添加網絡!{}", + "640520ffb5d9c01336710bad3ea6d7ff": "成功添加了網絡!", + "87574a543563d2e037b87a6cf705e3ff": "系統默認網絡無法刪除!", + "23b6d9d6c36088deb928efad7fb9b63b": "使用網絡在使用時無法刪除!", + "8f512551c7ddf61331c3d068e80c642c": "沒有無用的網絡!", + "08efe6a4e12437b79225c8b59fd710eb": "網絡ID不能為空", + "a636381ee5e6d6d021fff745ca132905": "容器ID不能為空", + "31a75a8d220d37dc4a7ea28d0f24cc19": "網絡斷開連接成功了!", + "a2b9895fca7698902da9319b52392366": "容器ID:{},不存在!", + "c81f03a558307d5aaf3b339af28e04ff": "網絡ID:{},不存在!", + "12a90fe85b8863e1dea43284988d7750": "網絡斷開連接失敗!{}", + "6226d2fef3bf047236f0f3a57dcd71fb": "網絡連接成功!", + "d882b8375782b1bc56ccaf84ed27d20b": "無法連接到網絡!{}", + "0e8623af4dd4d3b732904872d22fbf83": "網絡名稱不能為空!", + "5aa2044b58e63d58ddecc69421802404": "網關可以", + "ceaa20eefd6749452a947c7f5dfa4eb0": "IP 範圍不能為空!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "創建網絡失敗!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "網絡名稱:[{}] 已存在!", + "9cdc09516d85ae057d1d9bedc988849e": "創建網絡成功!", + "5395cc8155f62a666b8f0d0f9f207676": "存儲庫信息已經存在!", + "9b10e472adfe6372c9175b9002f098fd": "[官方Docker存儲庫]不可編輯!", + "5858be44c285048a8f51c126b2fd23e9": "編輯失敗!原因:帳戶密碼解密失敗!請刪除存儲庫,然後再次添加", + "7e51d0e26e1b467aff3c89d3e0751ec0": "編輯失敗!原因:{}", + "6478f13dd58e5a4329e19be9020243ff": "找不到這個存儲庫", + "d5309f3186607eb36bee41e8a28cea3a": "編輯成功!", + "9e20bffc0d4093d18fcbc5c98fa0fd87": "[官方Docker存儲庫]無法刪除!", + "a62336a87697ab6911ba550015a798ef": "刪除失敗,存儲庫ID可能不存在!", + "54197759827cfaf0cdb1e213fa49771e": "登錄測試失敗!原因:可能是帳戶密碼錯誤,請檢查!", + "657a0b7e82731fb4ae516d14081f17d0": "登錄測試失敗!原因: {}", + "221d1ea3c23f430e03a4486dca865014": "容器不存在,請刷新瀏覽器,然後重試!", + "7e88e25ea6c628c2d03c526c04af3eed": "無法獲得容器狀態:", "cb337dbfbc18aafa482051b6fc349dea": "無法獲取配置文件", "84d3fc0c1c70fcd6fdd7ca7c3be11225": "該項目已經存在!", "a280b122a0b3249c26b1f94ad4573f50": "寫失敗!", @@ -2260,6 +2319,32 @@ "d6d90f977089e176ec7443db17c41279": "容器添加成功", "04cd9210bf9290bda98bc76ca4bc59fd": "容器刪除成功", "d867a5e10a7a9485129c679b85453e3f": "項目刪除成功", + "459ed27083c25b82135efedccaa60ada": "掃描{}異常歷史記錄命令", + "37c614d5d300e6c391808efd5363ec82": "掃描{}敏感信息", + "5ddc98a53573410c7cb65727946c5d3f": "掃描{}後門", + "6bb6be880d819a93af392183d16fccdf": "掃描{}容器逃脫", + "cd7fb7cf576b22469514b5b30f365158": "{}掃描完成", + "7d643f192968be3f8a54be28592e9176": "掃描圖像失敗:{}", + "acc2731ee0f5b78d4e801d2daf814c32": "發現可疑的異常歷史命令", + "3069c277261d044bb309e4b09ae798fa": "發現該圖像具有異常的歷史命令[{}],該命令可能會在容器運行時將惡意軟件或代碼植入主機系統,從而導致安全風險。", + "6d64734fff5534f48029ffba4aa3678d": "1.建議檢查是否需要正常業務的命令
2.建議選擇官方和可靠的基礎架構以避免不必要的損失。", + "6684913201a60be0b5e89c4dfb210719": "找到BashRC後門{}", + "9a9f27d5f9f8c056fff7986c87a94c30": "發現該圖像具有BASHRC後門:[{}],惡意代碼內容:
{}", + "d8a828116070b9d92315ca309cca1991": "1。輸入使用圖像部署的容器,並在文件
2下刪除惡意代碼。檢查容器是否已入侵,並在容器中更新業務的訪問令牌或帳戶密碼
3。建議替換官方圖像或其他受信任的圖像部署容器", + "e1439f3f7d25d378078d513a82a3fa87": "後門文件找到{}", + "9ede9d4bd542eedf78e39b0acf0206e3": "發現圖像中存在BashRC後門文件[{}],惡意代碼內容為:
{}", + "686765b4612ecd8f774648db29a1541d": "Cron後門發現{}", + "390bdc0b3c37a56ede9467b0c220a3b6": "發現cron後門[{}]存在於圖像中,惡意代碼內容為:
{}", + "caea084281a3cb2515e5618cd3856163": "找到系統後門:{}", + "d04061273caa56d5a0c3d74f3e9fd482": "發現SystemD後門文件[{}]存在於圖像中,惡意代碼內容為:
{}", + "fc76e0fe415c49cc1c09bf76035fc4e9": "找到SSHD後門{}", + "00b2409f52ef5bc56afe29ccbe5cfa2c": "找到SSHD軟鏈接後門:{},文件命令惡意功能[exe = {}; link_file = {}]", + "e747da31a54cd71fb1a2860cae0f9f77": "找到了TCPWrapper後門{}", + "a2b09164c8d23894736bcc6a646861e0": "發現TCPWrapper後門文件[{}]存在於圖像中,惡意代碼內容為:
{}", + "a7fd9f6b190b8531039376fbbda5f482": "用戶發現有逃脫的風險{}", + "5d46ed5f4af3f30cfcc8bd66942f93b4": "用戶名{}可以通過命令[{}]完成容器逃脫,從而允許攻擊者獲得對主機或其他容器的訪問權限。惡意內容:
{}", + "4ca0a18aa36a60613104cacdae514dec": "1。建議刪除圖像或不再使用
2。如果已經有使用圖像的業務,請輸入容器環境並在 /etc /sudoers文件中刪除用戶{}的內容。", + "611afea08ae3b216a34dfde4c143f46c": "不支持支持系統", "68ae8c43a52aac63c5c62e1974afdda6": "腳本ID不能為空", "eee298ea1d9259c2f0e2061ecd89c21c": "指定的腳本不存在", "b68a8dd0c887719b7cc3e10dc11843ce": "Aapanel的內置腳本無法刪除", @@ -2298,6 +2383,147 @@ "101da618f72223d3eac9e66fe510b04f": "任務事件ID不能為空", "bee903cc3d03ab2c237eefb1d601fbcb": "腳本執行失敗,錯誤消息:\\ n {}", "1d78758685e5e2f4efeeb490f8521abd": "\\ n", + "ca6977d373320a7fdb51047199d4cc59": "管理員未安裝!", + "38641e6ce3a6369e108eb595672c8edc": "卸載成功!", + "9cae26284a7ad2f46132c1e8e196d089": "安裝成功!", + "a9a92e55770213c8aa1fb2871dc43563": "設置管理員端口成功!", + "b611124a9bad44e328d7ce809912802d": "成功設置!", + "2321763bf0b4cbf345b1e19dc9faec47": "設置管理員php版本成功!", + "40a1f70c155550ad2dafa5e556e10c3c": "PHP版本無法安裝!", + "e75e68c65607a7cfcc570d51345d7e33": "文件監視器", + "983e2622c48ae7231c5d29b135133b0e": "添加監視器目錄:{}", + "15c7df4ddd1d366c2cdfa2689c15369d": "IP過濾程序編譯失敗", + "423c2da1e20a5f2138cc810423475eef": "IP地址不能為空!", + "1e116dc22492b28a7a38a6029416d0e1": "IP地址的格式錯誤!", + "8c8f15a1c1cce8bbdc465e865c804b40": "最大阻塞期不能超過24天!", + "fb86e24ffe47ba150610ba1efd96929a": "不支持IP地址CIDR塊的臨時阻塞", + "bdb199a03e52488d499ea6bb0cb0d1ed": "WAF需要阻止IP地址段", + "1ac8e9ffcea7cf6e9fa183c1b9038599": "IP數據不存在!", + "04d46623edcb5663566cf43f575de9b2": "網站名稱不能為空!", + "4dcde63f7fd4415f3b5eb6cb889d135c": "加法成功了", + "d303480175994c6ad240cf24a4a99640": "網站配置不存在!", + "87d1f7257214d09ba39656b72c864bac": "帳戶設置成功!", + "aa5bb2d58da86c4b9160e94d0c4538f1": "Uri不能空了!", + "ade0ab88aa0ee9c18f0979d5b62b517d": "URI已經存在,請不要再添加!", + "506d9cb0cb2468fd09048bcbe8b37497": "URI不存在", + "cf180f27e678d4e297f690e581961417": "偵聽地址格式是錯誤的!", + "1ed0fa9bb8768d56bf2d3232d7067023": "錯誤聽力端口範圍!,要求:1024-65535", + "e6aa58b2f41bc53f6b84657d47eb35c1": "數據保存路徑不存在!", + "c87be59ecbed944c2b45fea87d62f473": "IP統計模式錯誤,要求:0或1", + "fbc4861b0190c90a5388e44d2bbac678": "當前版本不可用,請升級面板,然後重試", + "8b1d5629a1346da21fcaeb9f8f0db6d2": "開始時間格式錯誤!", + "7a238977c4b13d23ac3e6b151a914cab": "結束時間格式錯誤!", + "a87a482f3bced3ce16bc9a351e8b5ce8": "開始時間不能大於結束時間!", + "a0ef69b1680461368a9130e770256ca6": "日期格式錯誤!", + "2493958c6f4051bb8d254d77d77b622b": "時間粒度錯誤,支持:分鐘,小時,日期", + "4c4258ffd9a69c8e332346241a3cbdae": "否定條件數據的格式錯誤!", + "b47f4e8b7540cae56e085231c3c984c1": "訪問ID不能為空!", + "fea04488a926034079dc00c5a60a9135": "訪問ID格式不正確!", + "da206b8971dcba715ed8cdd1a82736e1": "訪問ID不存在!", + "fd65e390dd8aa35ea3622658247776d0": "日期格式不正確", + "9a4f1ea39f3a554d4e5431f86eb0450b": "站點名稱不能為空!", + "b59417ef234946819788acfde92a00a7": "清除成功了", + "aaa3736c0541d4a4d82193c2204ec317": "開始時間是錯誤的格式!", + "e579606ed1219291caeb3bfad786dd3f": "結束時間的格式錯誤!", + "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "日期格式不正確!", + "53c85b9d96ea14f3f8224a5d2e659894": "參數不能為空!", + "9dc21ed8c6025cab9873847e6e1ca506": "查詢類型不正確!", + "236c6e2f9a266b929b283eda30c2b3b6": "沒有相關數據可用!", + "50fc65b5f19812ccf756b7ad7de7f4cb": "session_id不能為空!", + "8f2adb53dcb8d2c660159b1f8e8012ed": "會話ID不正確!", + "7f4419a5b09e1a04936f6aba6939521a": "配置檢查完成了!", + "f3df0751d9522bf2e68034bab4cd49a5": "配置清理完成", + "191fae10bdd9d3eb6cb110b524fe40b7": "提交成功", + "f53208c04e48d7ee19222b6adf343810": "用戶名的長度不能少於3個字符!", + "251e2cae1dbed2b37f7d16961a606970": "許可級別的選擇不正確!", + "a835325a5600b6571a24111e4d318e2c": "請選擇一個網站!", + "a669655fa991afcfa0cfa3f62286d944": "密碼長度不能少於5個字符!", + "4d8d30e66ad9aaccc738ad99d5083955": "用戶名已經存在!", + "12152390a5bf2ebce0f00b0fb5c650a2": "加法成功了!", + "4d1b7f489e07d6ca02ca1910a3884c48": "用戶不存在!", + "3e83aa40dd320efb027151c02aab2871": "密碼的長度不能少於8個字符!", + "d3748b3102cc8ba898f0f0bec842ce9e": "修改成功!", + "ac75e534c7334e1fd02c68a3993f1568": "刪除成功!", + "ca281da1f13858d0b599d19e18a510bf": "網絡狀態被錯誤選擇!", + "c88239bc4a113ab0f02acb9bc31b3437": "網絡端口不正確!", + "f06e6a5985a91ac55c651e0b573378f0": "網絡安全目錄不能為空!", + "41a871d7ec26993be1367226321e06fa": "安全入口地址的長度不能少於6位數字!", + "16f83d0969b9f7fe56ac3b55f9dedb26": "該入口已經被面板佔用,請使用其他入口!", + "066df5a1cf19314e0265a1eb396848ac": "入口地址的格式不正確,例如: /my_monitor", + "794ee58637251012717d7e565aafc2a1": "設置成功了!", + "2531ce72ea98e5aa8f4953eee783b540": "找不到錯誤日誌!", + "0fc543dae93d3f76f5f7ff8048f5c398": "沒有發現蒙面的IP出口!", + "5552ac99360952da2cf289f556ad19a6": "沒有發現蒙面的IPS同步!", + "3332452d6ecd015473b133de021a9e06": "同步成功了!", + "e6afdb1b63ca733f5d1741c7eff7a64e": "它正在處理,不要重複!", + "696212205a77e698860ff5195992642b": "維修操作完成", + "97cb85456b49af4258f4c8da38bb576a": "計劃的任務已成功添加!", + "2739213f569742c0782252f41279c060": "未能添加計劃的任務", + "1cc4efde4fab0b4bbc2812a8b58f59b0": "請指定一個站點名稱", + "3b5ef9e1ea5a8dbd9606075686dbf15f": "請指定日期範圍", + "f8412f656685f470a82b74de3d9f24d5": "導出任務已經存在", + "96ed379ec1882dcf52f0ff65057efb92": "請指定您要導出的字段", + "4e698e0709485a0e93a706964b748c5b": "未知的導出類型", + "2a2dbc12afac446fe408eb78453bc6c2": "導出任務不存在", + "9ff8782f584db728284fadd719967806": "導出任務有錯誤", + "b4421542e9cff8ce336075b668b8f87e": "出口記錄不存在", + "41564d1cd7f8ecb23bcc590cb2217518": "請輸入新的數據目錄", + "699856a3cc697d8afcfd04dcd2f0729a": "指定的目錄與當前目錄相同", + "103422cd692bcaf56a7367075caf2274": "指定的目錄與當前目錄在同一磁盤上分區,因此不需要數據遷移", + "bcbd9605d3b8753bb8afbc765b293e01": "修改和數據遷移任務已經開始", + "967a57ad58881afe2c5da6cf0d7fce8c": "請輸入IP地址和爬行者名稱", + "62b73e6c2a169296e73edf8a4d1e02f0": "請輸入正確的IP地址", + "0e1a26f6137c04f0f80956210069e46d": "請輸入正確的爬行者名稱", + "fe8d50ca26f2e864d2bf4a932801bb85": "意外錯誤,嘗試修復插件", + "21aa998a1dee8774bc88ce2a070bf4de": "請輸入IP地址", + "2e0c672edc06ef05e44de98ac1b7a47d": "刪除成功", + "0f9d9b728fba6427b5ff4da49aee1738": "蜘蛛被錯誤地選擇了!", + "e48c86e701ddba3ab084d5457aa58714": "IP不能為空!", + "3bdb147b7a040582220aa7f1ce2af19b": "IP格式不正確!", + "b60597b6a9525341fa5d4d441084658d": "沒有查詢IP地址的分辨率記錄", + "86e9360dac1c5eece29f32c9aba8011d": "節省成功了", + "e5320166e7623b6a39f9a7af7c20c787": "指定其他網站參數錯誤", + "c21fbb62edf94306d2e73365e6e7d637": "指定另一個網站的參數不能為空", + "c7fae0c9886cac3924fe5e459e171ab1": "刪除失敗", + "9a84d2910d3d36b78d7060f1c77e27f6": "未指定網站名稱", + "0987458a95b8bb7d6cdf9fa0630b6407": "當前服務器不是nginx,不支持自定義集合", + "b925dfe3295278bd81a85bded66da01d": "狀態代碼為錯誤的格式", + "2a8793bbb8bc38a7df9d8c796648526a": "沒有選擇站點名稱", + "6878600890a41b84c145423618ea2431": "找不到網站信息", + "eff712873c55654bf48eaf421a184e73": "沒有輸入自定義集合名稱", + "116208583eac10a8769774a6eaaff926": "收購類型不正確", + "fff3d7679cb121a30e68a104b58c934e": "收集內容未輸入", + "75db42595fc9aee34df76df808712f92": "自定義集合名稱不能包含特殊字符({})", + "9667904e74175dfde9824cb8cd099ce7": "標題內容應以$ http_開頭", + "4c61d0ee460aa25eb6b5c413c46c9236": "車身類型的集合內容應包含[$ + NGINX日誌變量]", + "c03680a7ae35b7ce5b62f67b854d3b06": "收集內容應包含[$ + nginx日誌變量]", + "d621342512cf7910a6dc4e7d736bcc63": "收集內容不能包含特殊字符【", + "b4704dc559a05c5721c095b97c4dbbc0": "自定義集合名稱已重複", + "6594b670e8bd06e352f112c1bf194fc1": "自定義收集內容已重複", + "a531c58ef7fefbbbd79becda53ede191": "未指定自定義集合名稱", + "88c0c3ae4ef97b6069a35672b2caa05c": "車身類型的集合內容應包含[$ + NGINX日誌變量]", + "41353000c0d351db90c9eec095bae879": "已經有重複的集合,名為:{}", + "ce78b7a225f05ece35ed7adc68b08a88": "找不到修改的採集配置", + "521df7df29b44fcee614de96cecca61c": "刪除成功", + "3b0ccb5c759b0941d50e331b22013560": "不受支持的擴展:{}", + "7ea48870539b84996d1b1691c22823a7": "修改的數據格式不正確", + "bc64045195c8ed198a69772b3a204ef2": "未指定要修改的數據", + "bb02871a5e118841b95b69c5bff55baf": "黑名單的格式錯誤", + "1aac00a8c681100fd27b287c0b0516f1": "構建配置格式錯誤地解析", + "f6df35a69157ae1fca6415b043485334": "任務ID未指定", + "524a477cee9485a5a80a860e2bc5b5d5": "任務ID不正確", + "4b5d95ed20303e337aec42486a0fb3fd": "當前網站沒有查詢", + "19e777b7c8cdc1ce56ad2f4fe735b2b7": "當前網站沒有查詢運行目錄", + "45484ac5ec748cf3362d425ed7142b75": "規則不能為空", + "b36196750a032a791ecc8035853dc648": "規則名稱不能為空", + "cfa7bc3b484b8068e78bc6f55a2aaeaf": "未指定規則", + "835365605f9e08c44c0b7f65a422d059": "日期參數不正確", + "4fa3e528186292138b224a0a1d46ec59": "網站名稱不正確", + "3769ee974734f97166d6bce6b96e9b4e": "數據錯誤", + "daddfa03b4ea762e009a36ce970b2b59": "沒有百度帳戶設置", + "0379d9c081b6fd9ec2fd86e8672a4e72": "如果您無法獲取數據,則可能是登錄信息已過期,您可以嘗試再次登錄", + "8057e57596c33acf04619825d625a483": "更新成功了", + "3149165696693c4f6fef18928261a50f": "沒有設置360個帳戶", "add390e6467c956fbb7f6da0f51d23d6": "發送任務已執行", "e8edb193e1cb171a17efe2765d72af71": "文件不存在", "63d325d5c4dfd07afdf888fdf727542e": "成功導入,跳過{}未訂閱的用戶,重複的電子郵件地址:{}", @@ -2521,141 +2747,6 @@ "decc12f91f9703a201987fdeabe572a4": "具有相同名稱[{}]的網站已經存在,請在創建之前對其進行修改", "de67e3b2c564a899fe3195606036a7f1": "安裝成功", "8d5496d961b4d4e08474b20c1450737a": "無法創建一個網站", - "e75e68c65607a7cfcc570d51345d7e33": "文件監視器", - "983e2622c48ae7231c5d29b135133b0e": "添加監視器目錄:{}", - "15c7df4ddd1d366c2cdfa2689c15369d": "IP過濾程序編譯失敗", - "423c2da1e20a5f2138cc810423475eef": "IP地址不能為空!", - "1e116dc22492b28a7a38a6029416d0e1": "IP地址的格式錯誤!", - "8c8f15a1c1cce8bbdc465e865c804b40": "最大阻塞期不能超過24天!", - "fb86e24ffe47ba150610ba1efd96929a": "不支持IP地址CIDR塊的臨時阻塞", - "bdb199a03e52488d499ea6bb0cb0d1ed": "WAF需要阻止IP地址段", - "1ac8e9ffcea7cf6e9fa183c1b9038599": "IP數據不存在!", - "04d46623edcb5663566cf43f575de9b2": "網站名稱不能為空!", - "b611124a9bad44e328d7ce809912802d": "成功設置!", - "4dcde63f7fd4415f3b5eb6cb889d135c": "加法成功了", - "d303480175994c6ad240cf24a4a99640": "網站配置不存在!", - "87d1f7257214d09ba39656b72c864bac": "帳戶設置成功!", - "aa5bb2d58da86c4b9160e94d0c4538f1": "Uri不能空了!", - "ade0ab88aa0ee9c18f0979d5b62b517d": "URI已經存在,請不要再添加!", - "506d9cb0cb2468fd09048bcbe8b37497": "URI不存在", - "cf180f27e678d4e297f690e581961417": "偵聽地址格式是錯誤的!", - "1ed0fa9bb8768d56bf2d3232d7067023": "錯誤聽力端口範圍!,要求:1024-65535", - "e6aa58b2f41bc53f6b84657d47eb35c1": "數據保存路徑不存在!", - "c87be59ecbed944c2b45fea87d62f473": "IP統計模式錯誤,要求:0或1", - "fbc4861b0190c90a5388e44d2bbac678": "當前版本不可用,請升級面板,然後重試", - "8b1d5629a1346da21fcaeb9f8f0db6d2": "開始時間格式錯誤!", - "7a238977c4b13d23ac3e6b151a914cab": "結束時間格式錯誤!", - "a87a482f3bced3ce16bc9a351e8b5ce8": "開始時間不能大於結束時間!", - "a0ef69b1680461368a9130e770256ca6": "日期格式錯誤!", - "2493958c6f4051bb8d254d77d77b622b": "時間粒度錯誤,支持:分鐘,小時,日期", - "4c4258ffd9a69c8e332346241a3cbdae": "否定條件數據的格式錯誤!", - "b47f4e8b7540cae56e085231c3c984c1": "訪問ID不能為空!", - "fea04488a926034079dc00c5a60a9135": "訪問ID格式不正確!", - "da206b8971dcba715ed8cdd1a82736e1": "訪問ID不存在!", - "fd65e390dd8aa35ea3622658247776d0": "日期格式不正確", - "9a4f1ea39f3a554d4e5431f86eb0450b": "站點名稱不能為空!", - "b59417ef234946819788acfde92a00a7": "清除成功了", - "aaa3736c0541d4a4d82193c2204ec317": "開始時間是錯誤的格式!", - "e579606ed1219291caeb3bfad786dd3f": "結束時間的格式錯誤!", - "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "日期格式不正確!", - "53c85b9d96ea14f3f8224a5d2e659894": "參數不能為空!", - "9dc21ed8c6025cab9873847e6e1ca506": "查詢類型不正確!", - "236c6e2f9a266b929b283eda30c2b3b6": "沒有相關數據可用!", - "50fc65b5f19812ccf756b7ad7de7f4cb": "session_id不能為空!", - "8f2adb53dcb8d2c660159b1f8e8012ed": "會話ID不正確!", - "7f4419a5b09e1a04936f6aba6939521a": "配置檢查完成了!", - "f3df0751d9522bf2e68034bab4cd49a5": "配置清理完成", - "191fae10bdd9d3eb6cb110b524fe40b7": "提交成功", - "f53208c04e48d7ee19222b6adf343810": "用戶名的長度不能少於3個字符!", - "251e2cae1dbed2b37f7d16961a606970": "許可級別的選擇不正確!", - "a835325a5600b6571a24111e4d318e2c": "請選擇一個網站!", - "a669655fa991afcfa0cfa3f62286d944": "密碼長度不能少於5個字符!", - "4d8d30e66ad9aaccc738ad99d5083955": "用戶名已經存在!", - "12152390a5bf2ebce0f00b0fb5c650a2": "加法成功了!", - "4d1b7f489e07d6ca02ca1910a3884c48": "用戶不存在!", - "3e83aa40dd320efb027151c02aab2871": "密碼的長度不能少於8個字符!", - "d3748b3102cc8ba898f0f0bec842ce9e": "修改成功!", - "ac75e534c7334e1fd02c68a3993f1568": "刪除成功!", - "ca281da1f13858d0b599d19e18a510bf": "網絡狀態被錯誤選擇!", - "c88239bc4a113ab0f02acb9bc31b3437": "網絡端口不正確!", - "f06e6a5985a91ac55c651e0b573378f0": "網絡安全目錄不能為空!", - "41a871d7ec26993be1367226321e06fa": "安全入口地址的長度不能少於6位數字!", - "16f83d0969b9f7fe56ac3b55f9dedb26": "該入口已經被面板佔用,請使用其他入口!", - "066df5a1cf19314e0265a1eb396848ac": "入口地址的格式不正確,例如: /my_monitor", - "794ee58637251012717d7e565aafc2a1": "設置成功了!", - "2531ce72ea98e5aa8f4953eee783b540": "找不到錯誤日誌!", - "0fc543dae93d3f76f5f7ff8048f5c398": "沒有發現蒙面的IP出口!", - "5552ac99360952da2cf289f556ad19a6": "沒有發現蒙面的IPS同步!", - "3332452d6ecd015473b133de021a9e06": "同步成功了!", - "e6afdb1b63ca733f5d1741c7eff7a64e": "它正在處理,不要重複!", - "696212205a77e698860ff5195992642b": "維修操作完成", - "97cb85456b49af4258f4c8da38bb576a": "計劃的任務已成功添加!", - "2739213f569742c0782252f41279c060": "未能添加計劃的任務", - "1cc4efde4fab0b4bbc2812a8b58f59b0": "請指定一個站點名稱", - "3b5ef9e1ea5a8dbd9606075686dbf15f": "請指定日期範圍", - "f8412f656685f470a82b74de3d9f24d5": "導出任務已經存在", - "96ed379ec1882dcf52f0ff65057efb92": "請指定您要導出的字段", - "4e698e0709485a0e93a706964b748c5b": "未知的導出類型", - "2a2dbc12afac446fe408eb78453bc6c2": "導出任務不存在", - "9ff8782f584db728284fadd719967806": "導出任務有錯誤", - "b4421542e9cff8ce336075b668b8f87e": "出口記錄不存在", - "41564d1cd7f8ecb23bcc590cb2217518": "請輸入新的數據目錄", - "699856a3cc697d8afcfd04dcd2f0729a": "指定的目錄與當前目錄相同", - "103422cd692bcaf56a7367075caf2274": "指定的目錄與當前目錄在同一磁盤上分區,因此不需要數據遷移", - "bcbd9605d3b8753bb8afbc765b293e01": "修改和數據遷移任務已經開始", - "967a57ad58881afe2c5da6cf0d7fce8c": "請輸入IP地址和爬行者名稱", - "62b73e6c2a169296e73edf8a4d1e02f0": "請輸入正確的IP地址", - "0e1a26f6137c04f0f80956210069e46d": "請輸入正確的爬行者名稱", - "fe8d50ca26f2e864d2bf4a932801bb85": "意外錯誤,嘗試修復插件", - "21aa998a1dee8774bc88ce2a070bf4de": "請輸入IP地址", - "2e0c672edc06ef05e44de98ac1b7a47d": "刪除成功", - "0f9d9b728fba6427b5ff4da49aee1738": "蜘蛛被錯誤地選擇了!", - "e48c86e701ddba3ab084d5457aa58714": "IP不能為空!", - "3bdb147b7a040582220aa7f1ce2af19b": "IP格式不正確!", - "b60597b6a9525341fa5d4d441084658d": "沒有查詢IP地址的分辨率記錄", - "86e9360dac1c5eece29f32c9aba8011d": "節省成功了", - "e5320166e7623b6a39f9a7af7c20c787": "指定其他網站參數錯誤", - "c21fbb62edf94306d2e73365e6e7d637": "指定另一個網站的參數不能為空", - "c7fae0c9886cac3924fe5e459e171ab1": "刪除失敗", - "9a84d2910d3d36b78d7060f1c77e27f6": "未指定網站名稱", - "0987458a95b8bb7d6cdf9fa0630b6407": "當前服務器不是nginx,不支持自定義集合", - "b925dfe3295278bd81a85bded66da01d": "狀態代碼為錯誤的格式", - "2a8793bbb8bc38a7df9d8c796648526a": "沒有選擇站點名稱", - "6878600890a41b84c145423618ea2431": "找不到網站信息", - "eff712873c55654bf48eaf421a184e73": "沒有輸入自定義集合名稱", - "116208583eac10a8769774a6eaaff926": "收購類型不正確", - "fff3d7679cb121a30e68a104b58c934e": "收集內容未輸入", - "75db42595fc9aee34df76df808712f92": "自定義集合名稱不能包含特殊字符({})", - "9667904e74175dfde9824cb8cd099ce7": "標題內容應以$ http_開頭", - "4c61d0ee460aa25eb6b5c413c46c9236": "車身類型的集合內容應包含[$ + NGINX日誌變量]", - "c03680a7ae35b7ce5b62f67b854d3b06": "收集內容應包含[$ + nginx日誌變量]", - "d621342512cf7910a6dc4e7d736bcc63": "收集內容不能包含特殊字符【", - "b4704dc559a05c5721c095b97c4dbbc0": "自定義集合名稱已重複", - "6594b670e8bd06e352f112c1bf194fc1": "自定義收集內容已重複", - "a531c58ef7fefbbbd79becda53ede191": "未指定自定義集合名稱", - "88c0c3ae4ef97b6069a35672b2caa05c": "車身類型的集合內容應包含[$ + NGINX日誌變量]", - "41353000c0d351db90c9eec095bae879": "已經有重複的集合,名為:{}", - "ce78b7a225f05ece35ed7adc68b08a88": "找不到修改的採集配置", - "521df7df29b44fcee614de96cecca61c": "刪除成功", - "3b0ccb5c759b0941d50e331b22013560": "不受支持的擴展:{}", - "7ea48870539b84996d1b1691c22823a7": "修改的數據格式不正確", - "bc64045195c8ed198a69772b3a204ef2": "未指定要修改的數據", - "bb02871a5e118841b95b69c5bff55baf": "黑名單的格式錯誤", - "1aac00a8c681100fd27b287c0b0516f1": "構建配置格式錯誤地解析", - "f6df35a69157ae1fca6415b043485334": "任務ID未指定", - "524a477cee9485a5a80a860e2bc5b5d5": "任務ID不正確", - "4b5d95ed20303e337aec42486a0fb3fd": "當前網站沒有查詢", - "19e777b7c8cdc1ce56ad2f4fe735b2b7": "當前網站沒有查詢運行目錄", - "45484ac5ec748cf3362d425ed7142b75": "規則不能為空", - "b36196750a032a791ecc8035853dc648": "規則名稱不能為空", - "cfa7bc3b484b8068e78bc6f55a2aaeaf": "未指定規則", - "835365605f9e08c44c0b7f65a422d059": "日期參數不正確", - "4fa3e528186292138b224a0a1d46ec59": "網站名稱不正確", - "3769ee974734f97166d6bce6b96e9b4e": "數據錯誤", - "daddfa03b4ea762e009a36ce970b2b59": "沒有百度帳戶設置", - "0379d9c081b6fd9ec2fd86e8672a4e72": "如果您無法獲取數據,則可能是登錄信息已過期,您可以嘗試再次登錄", - "8057e57596c33acf04619825d625a483": "更新成功了", - "3149165696693c4f6fef18928261a50f": "沒有設置360個帳戶", "74a7684631b29d814a52e3401576411a": "時間格式不正確", "f146f571f352f376dda16114593afd32": "在此文件夾中不是PHP文件", "a5ef7f95136c8e93b70c99cdc25d3b1b": "規則為空或規則文件是錯誤的", @@ -2830,7 +2921,6 @@ "e200e571a58c37376c8498c2dc506c95": "[param]類型是錯誤的,它需要JSON格式", "96ed9027cae5703401727a3d07764133": "當前的URI不存在", "466767592170f74d16bcac3034109b33": "路徑參數必須通過", - "d81f83ae44da0682974272b976e8e550": "成功恢復", "c2d2481eafb29f7e1525c6c63441359e": "請傳遞網站名稱", "4950f82b4231ebbfa780bcf4eec4c545": "請輸入正確的IP地址!", "abd5af540ed5a858d02b03846d94c1f4": "沒有!", @@ -2923,7 +3013,6 @@ "215a4c6687559aa75d554670e06f3694": "用戶不能超過10,000", "902ee0e2b591f9872a41c319c402e0b9": "文本長度不能大於200", "2307dba1bc155ca6f1a5bbf21dc4a258": "偽靜態包含[!-e $ request_filename]指令,在使用此功能之前,需要刪除該指令!", - "fa5e4af74d3d68ba371e6dcf84595c3d": "該網站不存在", "db8b3ac7a5408e3bc0d103bb9b071c7b": "參數不正確,缺少數據參數", "a0318cc60ff3297d4bef0399dc89fa8d": "參數不正確,數據參數不以JSON格式", "8b682d8c8139c2ea686c7a87a03ba292": "參數不正確,名稱參數丟失", @@ -2959,31 +3048,37 @@ "c9bbcef0c80ca1a2859dd61d0210a117": "參數[send_type]不正確", "a79ff4350874c27408a1858a88058344": "如果實例消息通道失敗,請檢查是否正確設置了消息頻道", "50f223163c6f8e9f6b46d66165252cab": "關閉成功!", - "eee590fc0d0f3382fe436b60b02e37f0": "郵箱信息未正確配置", - "e4e7eb56340203583dd940475fc6e924": "接收郵箱未配置", - "c6beb4efa41b5adbf89191be9d139c70": "無法發送消息,收件人無法發送:{}", - "e401ec76f9a9d1dfe7d484e6c4b49656": "無法將郵件發送給某些收件人,包括:{}", + "02eef33534a6f8b3c95fc65e4f98bea9": "不完整的信息", + "2f45c6e0ccf998c7d31b3764e7da3751": "注意名稱不能超過15個字符", + "6e3ce0906145a9641111ebbf7735f145": "電報未能發送{}", + "27285cc132e6c145a142ae2dff054ace": "注意名稱不能超過15個字符", "b136ab8957d5ede7e3747fcc927a49aa": "參數格式錯誤", "4ccc991965b1b5bbe3efd6b65a1cd6fb": "身體類型必須是JSON,形式數據或空的", "b0b017688b107601f2b3439381c4c61b": "發送方法不正確", "4f4979589df1b84ac44fc64a92e2b3f3": "驗證SSL選項是否錯誤", - "02eef33534a6f8b3c95fc65e4f98bea9": "不完整的信息", - "2f45c6e0ccf998c7d31b3764e7da3751": "注意名稱不能超過15個字符", "85284ecbde15ff997e89e6e8f07e399b": "微信信息未正確配置", - "886051a73fe04f873d814dc9823b4064": "DingTalk信息未正確配置", - "2d1b0e55888d196484a0bfd0f85ff71c": "DingTalk配置不正確,請重新配置DingTalk機器人", "3fb32283f52bea8068006817c5b9b95b": "未連接成功", "8acd58125d3f7cc181a71926ef5c8a4b": "無法鏈接到雲", + "886051a73fe04f873d814dc9823b4064": "DingTalk信息未正確配置", + "2d1b0e55888d196484a0bfd0f85ff71c": "DingTalk配置不正確,請重新配置DingTalk機器人", + "eee590fc0d0f3382fe436b60b02e37f0": "郵箱信息未正確配置", + "e4e7eb56340203583dd940475fc6e924": "接收郵箱未配置", + "c6beb4efa41b5adbf89191be9d139c70": "無法發送消息,收件人無法發送:{}", + "e401ec76f9a9d1dfe7d484e6c4b49656": "無法將郵件發送給某些收件人,包括:{}", "703480d2938f7c89b563e1d731e94118": "測試發送失敗", "fdc137942b6f2d81fa922d7ace16a94c": "當前接口不支持的類型", "37f17a256a93646ef0ac721096ec0ce8": "相同的發送配置已經存在,無法重複添加", "2783bb2e5b99dce08138bf58d0880603": "找不到相應的發件人", "b5a30e6f46753c06ada44d6bbd757599": "成功刪除", "81550843cd0a2d7e046cb23a868f8e8e": "發送成功了", - "6e3ce0906145a9641111ebbf7735f145": "電報未能發送{}", - "27285cc132e6c145a142ae2dff054ace": "注意名稱不能超過15個字符", "bb8f2701fa6b013fe8aa74659ceda547": "無法讀取任務數據。", "b12cc83d0b14fe739a930fd84d10ae8d": "該任務尚未找到。", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "僅支持容器和應用程序類型", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "應用 {} 的版本 {} 不存在", + "a5c1e82e4d1142b8c7e0bc1499446181": "未設置 GIT 地址", + "4e24bbe093c9dfb90092a0f4e71733dc": "分支名稱未設置", + "b3c02fc58b92f549f529992c8a696a66": "未設置 zip 文件路徑", + "eecf07d92b354565df633b06401206a1": "請選擇文件路徑", "eb9eb53b7ac221c64f6f32c547317d22": "路徑參數不能為空", "0444d0f0434a4d910eb7a06039e39066": "[{}]文件不存在", "f4c3904df3aa98458b5f99bd5519e409": "{}完成,如果log no例外可以關閉此窗口!\\ r \\ n", @@ -3027,6 +3122,9 @@ "1b6d9f6dc5480584f937681a5d9f0a80": "找不到緩存信息", "f013f8c1d30136733e3d476dbe3a238e": "更新的配置成功了", "3d928c01114361a57fb24c42d9a1ee2d": "無法更新配置:{}", + "795d1693702d930f7fc18edfb0f1c0d3": "MCP 服務器配置錯誤", + "a16d1dbe265c57e0417ae396c3c30043": "未找到服務 [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] 未找到圖像", "092ca03f32caffd34d3f0532836283b7": "找不到DeepSeek_r1的腳本文件", "17ee8c2efafe32a5d204e039e971aee4": "少於1550 MB的內存阻止了DeepSeek R 1被部署", "d3eb7a147ac81b2f691a6e7ad42cc83c": "無需處理", @@ -3078,6 +3176,13 @@ "7b016fb85c09d39e89eb1875e590a6ac": "無法獲得應用程序類別,請單擊右上角的[更新應用程序列表]", "20552a0ed8eef740c631cc049fd940b9": "應用程序類型錯誤,請傳遞:{}!", "c0963001ffeaec423d1be82d464d6a1a": "請通過ID/Service_name參數!", + "4de8e45b499205551f4a09fd074e5246": "缺少參數!ID", + "02e85c0a0fa01fabdb5426af13e87853": "缺少參數!應用程序名稱", + "d910ee67a0875a17b6e663f9e19369a4": "不支持此應用程序鏈接!", + "32d030406e8d755a59468a50bd385b22": "獲取容器失敗", + "c8e0f1ed3c37b015ee446297591d172f": "缺少參數!應用程序名稱", + "dad9445733497150b5f2cd29a5aed506": "應用名稱不合法,請勿包含非法字符!", + "a04daa98db618d6c2a19aeed5af39448": "找不到指定應用程序的 docker-compose.yml 文件!", "75d0c803cc4694e08d99d958ef762fcc": "域名不能為空!", "676c8a7788ad0ddcb68d53fc7d960679": "未能創建一個Baota Net網絡。err:{}", "23d07f1e537a8809b268a60a6881f44c": "端口範圍錯誤,請輸入0-65535之間的端口!", @@ -3105,11 +3210,30 @@ "2025d918448073508d336b72a7a28093": "數據庫已經存在!", "4a8f0a2ac362e62ba4e76f52b5791f0e": "創作成功!", "76f3f12040afb77724966e2af67ab403": "請傳遞數據庫參數!", + "74fd3ba5b92aa59e471161d2a585a93c": "model_name 參數不能為空", + "760a1226f2ba701b04963681ab97d575": "model_version 參數不能為空", + "2a88d88050ddcc0e28f0da4576be2232": "service_name 參數不能為空", + "fd0f83d70400b1dd9f6ae9c093638411": "獲取容器信息失敗,docker-compose執行異常!", + "2aec223006d3894d3c1a48bca642c141": "模型正在下載中,請稍後查看日誌", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "刪除模型失敗,docker-compose執行異常!", + "d75a01e0d2c0cb8dad89216653024903": "模型刪除成功!", "bf483666a33d372f729985363d512d74": "主要域名不能是通用DNS", "3c4b1f6d2d9ef27ace95adceea599588": "加法失敗,數據無法插入站點數據庫", "20825a634340a0b49b1a5e7f2fe47ea3": "添加失敗,數據無法插入Docker網站數據庫", "653f81d3e5516550e6d5e35abcdbe97c": "[{}]是面板的反向生成,無法刪除[/]的HTTP身份驗證!", "d4b66e7369e5077a3c31ad79629f0ab9": "請傳遞需要刪除的網站列表!", + "f0501638237d7e8f934ec55ac3ffb20f": "如果安裝失敗,請檢查網絡或手動安裝git", + "608113c9694987fa65b22ecb164aee59": "環境安裝成功", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "apphub目錄不存在", + "7ec67f9826a24ca4a930a6e168ee9611": "決議成功", + "af2c4fa868813e47b80859a0b36e00f4": "git信息配置成功", + "2b038e106d4ca5c11b787e16c73253ef": "如果你不", + "12d1b3062be6f8bb374511323c349ed7": "請先設置git信息", + "798cd5a257af539ecfe6bb44f45ee788": "從 git 導入失敗", + "8170f5d37a617dcbf16fe8dd414073dc": "從git導入成功", + "6e40e5a8ad741ca4bd714fa52ef32333": "文件格式不正確,請選擇zip或gz文件", + "c4996991c50032c9b296c11da356acb2": "導入失敗:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "導入成功", "e48121dc556643fd31b26c190eedbad3": "僅支持NGINX,請在使用前安裝nginx!", "135f7ef9aeb50bf7b988416b0a679dff": "域名不能為空,請至少輸入一個域名!", "c82b42d921224a0699f854c28c2450d2": "代理目標不能為空!", @@ -3117,6 +3241,7 @@ "f68c204aa9e12e0513aa7a4569449cfe": "UNIX文件必須以結尾。鎖,例如/tmp/flash.app。鎖!", "5c23a6c025d7071599c70575dc858f26": "代理目標不存在!", "2fba0b6c1602ec254b1bc06bacba575d": "代理目標必須從http://或https://!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path是根目錄,無法關閉Show Proxy Path!", "772c6f93b20b52d5c998f4b58dbcf8f7": "端口[{}]是非法的!", "f76df64b8f66e4f6050adf633c91c7fb": "網站[{}]已經存在,請不要再添加!", "6599f1c3d3d3760768d9023827e8edf0": "反向代理項目成功添加了!", @@ -3148,7 +3273,6 @@ "d591e0043cbf6d14950a46178a537626": "代理目標必須從http://或https://開始", "247d1a7dc144bd12d4c9f8797387babe": "【{}】已經存在於反向代理中,無法再次添加!", "36a7891857288c55bc5d87c470212812": "ID不能為空!", - "62dc2bbb0528fe87522c74b113883a48": "指定的網站不存在!", "c8a68e4ff275e827bbbe348eddecbf2b": "反向代理項目成功刪除了!", "88f9a8852b822982a9a3e839813d91bb": "域不能為空!", "85fb0c03511da1e4d308fd135dec4486": "域名不能包含逗號!", @@ -3198,12 +3322,6 @@ "61e795d02f4452904f2574d936c571e6": "清理失敗,緩存目錄不存在!", "3c99c479e3c65eac24272afc13cec604": "https端口[{}]是非法的!", "b9629c2dea839825c2f1916b44a154a1": "nginx配置文件錯誤,庫存! :{}", - "b02ab16f5a7d45a871789d3944a41c69": "備份完成但無法檢索時間戳", - "ffad0690fefe9ebaaf4d847a42b19f90": "備份配置文件不存在", - "46f183fbf6bd1e64702d6930667cf117": "錯誤檢索備份完成信息:{}", - "b16acd08872bef5685bddff85a29f625": "數據包裝", - "df4bb29cbb7fe7e3dbc82e961d5b5b53": "準備數據", - "2b2a2a0b0596507029dd0feb9485a216": "找不到正在進行的任務。請檢查", "32b169f72b293ef80d35435e9894f8e2": "初始化", "58ba018dcbe1c47ea0a293fdcee21e63": "面板安裝", "67355337eaf300b91de09a8083c93ebf": "本地備份", @@ -3219,6 +3337,7 @@ "37a5c6e23237ddff7185d375c34eed60": "任務{}不存在", "f613fc3fb0aee3affafcae3477d42bf8": "任務已經在運行,任務ID:{}", "367b4a21be07204266d306508cc92dc7": "遷移任務初始化", + "793c8358adb487f79f85acfdc44d54bb": "創建遷移任務:{} -> {}", "e597529fcdfa1dab69eadaf1c44088ba": "遷移任務成功創建了", "c304dcebe892b468725402a369b3dd46": "連接到服務器{}:{}", "d2f3c14129fe059cf6d99f1583abc23e": "[+]成功連接到服務器{}", @@ -3231,6 +3350,7 @@ "5e1b5e437b38bfb11b1e4853f8838d3f": "無法加載RSA鍵:{}", "fb947607c0d2814eed45d41a9e3227f1": "使用DSA鍵連接", "1cc35e618813746cb1bd4658f7ac61a0": "無法加載DSA鍵:{}", + "e9ba4ba778d8a0b4423c09ff6cb32726": "使用 ECDSA 密鑰連接", "f618338d0d56f440d7fb1b59d8add72c": "無法加載ECDSA密鑰:{}", "f579ce14b1e98ae9ad4d392279730d9a": "使用{}鍵連接", "696797724fc3db3f012761759f720c23": "無法加載{}鍵:{}", @@ -3255,6 +3375,7 @@ "613a8be93fcd44002e549e0767c85a86": "無法檢測OS類型,請手動安裝捲髮或WGET", "8a4d20948ccc8034e3118af3bb683da3": "開始安裝Aapanel", "df97b5d4f31c5cd4a3611774abb6de52": "[*]開始安裝Aapanel ...", + "d91a58f92edb4b30de7e5399908922da": "[*] 使用命令安裝 aapanel:{}", "f20af8613aed0194f191d660977de57c": "安裝完成", "4357633f73240ceb1b14d13877a90ac2": "Aapanel成功安裝了,開始備份任務...", "f109f7ce6f98f5a3cbf2d273c5749911": "[+]地址:http:// {}:{} {}", @@ -3266,6 +3387,7 @@ "c550206bc8daea4b287573ee31f839de": "[+]備份目錄{}創建", "9e3f708636e9ea820d608629fdf47c65": "[! ]無法創建備份目錄{}", "9f22d9cb59270cf0f6382a66a63ed8cd": "無法獲得遠程文件大小:{}", + "ff490ab3be22afd2f2a06842935eedd3": "備份文件{}不存在", "e69d7c21f42d046b365c56045ffca873": "啟動將備份文件{}上傳到服務器", "df6ecb94c7a5f06b78d0bde168e769e9": "[*]開始將備份文件{}上傳到服務器...", "217c9c3fec268ff4d6c35bd4d5d564ea": "無法創建備份目錄", @@ -3277,6 +3399,7 @@ "04e05f53e1a18a781dbabae6cdd0e495": "檢測到的不完整上傳文件,從{:.2f} MB恢復", "426e1c0eadfad630c5433af2757cee8f": "[*]開始新上傳...", "61eb03fffeb48e199890a5a8a24a5dc9": "開始新上傳", + "148b2912de8b29f47dc234983554ea2b": "\\r[*] 上傳進度:{:.2f}% - {:.2f} KB/s - 剩餘時間:{}", "470e645fe1f07b6d4e77fc7b16b2a9a0": "傳遞文件大小驗證:{:.2f} MB", "40070e1f0867f97db0fa33039fae2063": "文件成功上傳", "95dd52c0ce48e72f2021dee1a7a86433": "文件大小不匹配:local {:.2f} MB,遠程{:.2f} MB", @@ -3285,6 +3408,7 @@ "1e6aeb0dc8e2567bdec31246c27233a2": "文件上傳失敗,最大的檢索數", "31c53955195484e892d36d1815e2e5cd": "[*]開始提取備份文件{} ...", "21ec696ab5bc206eac1cf62268824cf0": "[! ]備份文件{}不存在", + "e344a18f13f2b196f3b56938c824dd5f": "[!] 無法從備份文件名中提取時間戳", "d4a81ed03254ca37166d84ccb7de0bd6": "[! ]備份文件提取失敗", "0838e64585e87c91bdfa34890445346e": "[+]成功提取的備份文件,目錄:{}", "0fddb4bae41a7fc9e2de8896d8cb819f": "開始還原備份(時間戳:{})", @@ -3300,16 +3424,21 @@ "53779b59d2ae1ff96f4afdfa6bbc6c7f": "檢查是否安裝了捲曲或WGE", "39679b63dca413a83cf5b664d46c929b": "捲髮或WGET檢查通過", "0de6a624fa64af38f9a880430e72607e": "準備安裝Aapanel", + "28dbda7cf25735198d7695702b18aad5": "安裝aapanel...估計5分鐘...", + "7a58e7034a9db769af197c85beccafd5": "aapanel安裝完成,開始備份任務...", "a850af0d3bf3586319178228af5698bf": "開始在此計算機上執行備份任務", "28ec7aad1cd6afdbbc35a6aeaa95761a": "等待本地備份完成", "82550a0ece235f0d0b363135e8d94d28": "備份任務已取消或失敗", "c8f2865e1e43bb2fd88a0e16f3cd4c17": "備份任務超時了,在指定的時間內未完成", "4bb768be41853a0aed9f56d5907be1bd": "獲得備份時間戳:{}", + "c129e18a625645767772504cf77e279a": "無法讀取備份時間戳", "39869251ca57148d747cfd6ee60bf604": "備份時間戳文件不存在", "60f1d8c19f5fbb046deac4aab745f63c": "備份文件不存在:{}", "d67c60b6be8ebfd9f73816a7e8e4abfe": "無法讀取備份文件路徑", "9e6caab47781582f556a81245571d8a7": "本地備份完成:{}", "b4df9a8cca277b49933dce7c8be7ab20": "本地備份完成", + "6c97fd171b87d3f954040d4dea833cb9": "準備上傳備份文件", + "6384458c2647bf7e1af9d942aab00d6d": "準備上傳備份文件:{}", "e2fdcbc1d4e8b1fa77a161c4448a4bf6": "準備上傳migrate_backup_info.json文件", "6533c064fee3726a0f1caf89a423fd3b": "連接丟失在上傳migrate_backup_info.json文件", "ffa61675a37203858ec712cc635fcbdb": "Migrate_backup_info.json文件成功上傳", @@ -3326,9 +3455,11 @@ "1a119744a8cc132d708306e1fb90543f": "[*]驗證SSH連接信息...", "ef3ae6d88f5637005f063685ad50c625": "[+] SSH連接驗證成功", "66db9584d2d99eeb99a90f5f4c52d944": "SSH連接驗證成功", + "a0bc8a00e83b79e42010343c31924dd2": "SSH 連接驗證失敗", "e871fe05e99da0c88a09686c3b7c88d7": "[*]安裝Aapanel ...", "1f3ff88a0fdd87e71bf237f3805dccde": "[*]上傳備份文件...", "c0b860cd7155af1e642fd0c41ee29262": "未指定的備份文件路徑", + "fa1ab4e94bafd1f5b6ea55e3e9dc33a4": "備份文件提取失敗", "d36c2f46c959ee1fb416a947f8e75a47": "備份還原失敗", "de6b9cefab1a252ada4463ee8f015f07": "[+]所有操作已完成", "496249e9e1cd99dd54146ed6565fe3f8": "所有操作已完成", @@ -3336,8 +3467,13 @@ "4020efc99e8c60a0e7d27a5598d501e4": "執行過程中發生錯誤:{}", "55be882ba3aef502f3a93ad90bb9d613": "[*]執行備份命令...", "1a6da8233a4a66ccc90d767967f22d35": "[+]備份任務成功添加了", + "af3c2b419ba0779d81ac91cd3ca246b6": "[*] 正在等待備份任務完成...", + "c8eb8110632bb540ca112819e96dc770": "[+] 備份任務已完成:{}", "0d1135061a5b00b63bdb12c2f3c9461f": "備份任務失敗,未生成備份文件", + "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] 備份任務已完成(超時後檢測到文件):{}", + "637452f337bdc2991f23593124d62440": "[!] 備份任務超時且未在指定時間內完成", "ec3a935e2442ef55924ad758e17b92cb": "包裝完成", + "ffad0690fefe9ebaaf4d847a42b19f90": "備份配置文件不存在", "40379fed8ad84c0869a1b3e94f8a56fb": "備份過程已經在運行!", "20bf8648c4a3ea91ad3057f9aeca5f88": "開始壓縮和包裝所有數據", "dc72aa669e82dd5ec7cff2ed35f2762d": "所有完成數據的壓縮和包裝。數據大小:{}", @@ -3346,9 +3482,15 @@ "c3a6378e06ff3e479a85b0f15c41cb1e": "{}在塊中上傳...", "c722636ded0be8237386a427242ff3b2": "{}上傳...", "bb914d2441ee988dcd4d616350272f10": "上傳到{}:{}時發生錯誤", + "8085ded0444fcde19b9ea4d365502f67": "找不到備份信息", + "b02ab16f5a7d45a871789d3944a41c69": "備份完成但無法檢索時間戳", + "46f183fbf6bd1e64702d6930667cf117": "錯誤檢索備份完成信息:{}", "2cb88461938b0c418391af13f65a727d": "備份過程正在運行,但無法檢索時間戳", + "269159feb2faab7515c90b9f5de791a5": "備份配置文件不存在:{}", + "daa55a73708f906c8cee0bb87284740c": "檢索備份進度信息時出錯:{}", "01ecbbb2b353cf4d915bbe1c1cd5505c": "服務器配置", "ca3c22c9c94069053b85db0f50373639": "備份服務器配置", + "b16acd08872bef5685bddff85a29f625": "數據包裝", "d41c74fcc2dd04880a0285c147188bf7": "準備備份數據", "806cb06592627effa1a4073fa2f66ce2": "還原過程已經在運行!", "37dfdfda0ab7a98140943484fe70a76c": "開始解壓縮數據包", @@ -3368,9 +3510,9 @@ "4c3880bb027f159e801041b1021e88e8": "方法", "7d3c180ded4dcc8eade80cd031ab1b5d": "請不要經常操作,請等一下", "37b15a5d1e4fa625ea8996de5e378a84": "成功檢索", - "b0d4998a26f5b5742ad38c4af8817e32": "例外", "616e012bcc90980f6ddfd2b3c17345f8": "未能取得進步", "9e0a136b55af822e72c8d6716d2d4bf3": "未知類型", + "6ac0b58e56cefd76e61bc840dfad94fa": "任務成功停止了", "b808472e703dfd53fdcb59fbe89e3436": "成功執行", "12b65fbe011be723b4ae981c0d42c44d": "恢復任務已成功添加", "741e160bb129a548e26fbad37c8f674d": "SSH連接測試失敗,請檢查IP和端口是否正確", @@ -3379,7 +3521,6 @@ "b100f6e1c91f013adf0ca5ce6606a89d": "遷移任務成功添加了", "fd0099266c1971c5c40036e615d67fd4": "成功遷移", "87aa2e739755a6fea3a63876b5a1d48e": "成功地", - "6ac0b58e56cefd76e61bc840dfad94fa": "任務成功停止了", "d7db03701029007097b8e0cd61a983f6": "當前沒有遷移任務", "808781229f7b019ba6a44ea3871e3b6d": "閱讀遷移任務失敗,請稍後再試!", "e728b6a004aa5e61efd25bf815a6e290": "開始備份任務...", @@ -3389,16 +3530,65 @@ "f02f38d885226197e729453ea104feac": "還原任務", "0ba29c6a1afacf586b03a26162c72274": "環境", "f072f24284b47eaf8adcf88b29021618": "遷移日誌不存在", + "9166b100905c2625ba9df2524f8c2faa": "SSH 連接測試失敗:{}", "3a02e4b05ad1b321e855aa6116699b6e": "遷移提醒成功刪除了", + "334afd10871f8c52a884e307d2e17ccf": "遷移歷史記錄已成功刪除", "2f393a2518f5668880822f47fcdb5cc0": "遷移歷史不存在", + "df4bb29cbb7fe7e3dbc82e961d5b5b53": "準備數據", + "2b2a2a0b0596507029dd0feb9485a216": "找不到正在進行的任務。請檢查", + "d4e8a75d522d3e77ae80eadd49b0865e": "遠程數據庫列表為空", + "5d806f11bb91996cafe7836b27a4e770": "REDIS連接例外!", + "1d69261c05f6ce03d2cab5528d443fa7": "啟動數據庫數據的備份", + "0cf1803cfdfda6f67d12fa7e1c4a25a7": "備份{}遠程{}數據庫", + "32d68be800692faddb12c5252fded05e": "{}遠程{}數據庫信息✓", + "0c64283397c43effb13a2cbe818ce929": "數據庫數據備份完成", + "2f7d7cfc04be64fa087e964d41cb26b4": "開始還原SQLite數據庫列表", + "a1248c409fec22277ab13a6bb433188e": "SQLITE數據庫列表備份文件不存在,跳過修復", + "d03ebecb5f420070192de8712926151a": "SQLITE數據庫列表恢復完成", + "ad6937d61b4d6e93a13f03308c66f2eb": "MongoDB服務沒有運行!", + "f60644c6526c4d9afe5b20db75fc2e5b": "數據庫備份失敗,導出目錄不存在!", + "161bb420493657920405937a2cf42c96": "備份壓縮失敗!", + "20a42330f9241c13c91e3e203449a8a6": "缺少備份工具,請先通過軟件商店安裝PGSQL管理器!", + "7eff7c4aeb6bfe736f8a78c0096f92c7": "請首先設置管理員密碼!", + "6e907b499869ab16105a7aba198e13a7": "數據庫密碼為空!請先設置數據庫密碼!", + "d8a3336243e1c08e8a29c75af1eb528c": "MySQL初始化成功!", + "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL將重新啟動,請等待...", + "73af95fd2322196e0d9792df4ca1f566": "MongoDB初始化成功!", + "8c9718f3235e7c36c9f400bc68db1ef5": "MongoDB 設置身份驗證失敗!錯誤: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "PostgreSQL 初始化成功!", + "c46866b7bc29cf9d478835bda10e43ce": "Redis初始化成功!", + "4e889bbbfc5e25ebf611e5764b8a358c": "開始恢復數據庫", + "c9206e74b8d32e1e0a5710c0fe322cee": "還原{}數據庫{}", + "ecea29915732c5d0001ece74601f3d20": "{}數據庫{}✓", + "b61a878149263a02fa99cc635409ee25": "{}數據庫{}✗({})", + "3fa7c5a9beafa67bb44999cab5cff52c": "無法還原{}數據庫{}原因:{}", + "e89775cca910deb5e484f631606cceb1": "數據庫數據恢復完成", + "9750547146e22f364299bc5f561a3fb6": "開始還原遠程數據庫", + "23f2db47eb6ff16785e5a222c8657f93": "遠程數據庫恢復完成", + "b17f6f187c4ecfd392c6367ec2ba6498": "{}備份ID不存在,導入終止", + "3e686ed1f6a0bc9ccba7a3cc119b5008": "{}數據庫ID不存在,數據恢復終止", + "611881e9f5d01b22a447c282aa8aca23": "MySQL數據庫{}已經存在", + "ea31cbc6134300ca816c913d227b605f": "無法創建{}數據庫。原因: {}", + "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "數據庫已經存在,跳過SQL修復", + "556843e4a406b780b0cf83c43366a8dd": "進口成功", + "af71c2c0e3813c9a77fe48507ea8e4d1": "MongoDB數據庫{}已經存在", + "84b4d8c8cdd02488c0f868e97b22a3c2": "創造成功", + "10aec3a9e9564a9851c117b259245136": "數據庫已經存在,跳過數據恢復", + "b819d4259ca3ab0042562acea69e83e1": "PostgreSQL數據庫{}已經存在", + "31b21eca2e62de420cf05e8135089114": "備份文件不存在!", + "3eed4851380704f25eec3921befde38f": "恢復成功", "cbea0a592d6a3c48f2418d687cf54200": "開始備份終端數據", "e7e06b2dd59401dcf79acf2e3124d2fb": "終端數據備份完成。數據大小:{}", + "a273d4d4d0cf13abc1d7a4f96b8c851e": "開始恢復終端數據", "1a15a2b43f1dd92e836a592fb180843d": "還原失敗,文件不存在", + "95d831166994e434da49f3ed70b73e8e": "終端數據恢復完成", "e3a04ee4c0a034510866948e571c7966": "開始備份防火牆數據", "9a176a20c15e3dc096ed8bc5a05182ba": "防火牆端口規則✓", "ce693968cbf6e5f66af91e3dd2317d78": "防火牆IP規則✓", "7ebd5e6b35357be0d5079f674f68ed8f": "防火牆轉發規則✓", + "8dfa78d85bb1d152b0cafe398b27e1ae": "防火牆區域規則 ✓", "927bb2298acc2c29d1beaff4d1656371": "防火牆數據備份完成", + "d076d2dde53272dc55d47f34a465ebef": "初始化防火牆數據", "3e0b3a3e90cc4a1f5abbf3fd1a38c2b7": "安裝。", "d1b0c3d7a1b5f80626ec1a2395b4f990": "開始恢復防火牆數據", "1f35b1eac1045718a64b4133a8e8829b": "開始恢復防火牆端口規則", @@ -3414,32 +3604,53 @@ "6f9922502feac3b7e6ede129664e3e18": "防火牆地區規則成功恢復✓", "771b376bf4473fc2f1cea6958de2afeb": "未能恢復防火牆區域規則", "6331b46ffa70ff97b558022d5ae8098a": "啟動防火牆重新啟動", + "1bb2a65f17d7e3c685f36f7ff1794338": "防火牆重啟完成", "246f6edb1d9df9b3abe78fc810876c28": "無法還原防火牆數據:{}", + "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "開始備份站點數據", + "c886466d255b20be0dbde7f1b44b7f20": "正在備份 {} 項目:{}", + "7ecf25c18499d663d2e636d0a99f73a3": "{}項目{}✓({})", + "0fc5eeb9bebed19653578a5df99d3e6e": "站點數據備份完成", + "9a2e8778b2a816fedb9f83afadcc2341": "開始恢復站點python依賴性...", + "fd16d36423b43735556724e0395e8f91": "站點Python依賴恢復完成", + "bbf57ca8231bce958a3e528a08491874": "站點數據庫插入失敗:{}", + "389f018ba17dc25cb23a5300d8f630db": "網站備份目錄不存在:{}", + "21654e03b247d5e25abaa0ad542883c0": "開始恢復站點數據", + "c8cecd19f4f4a680a5879f828d1c5578": "還原{}項目:{}", + "35850d3654332477522ee06c756a3c85": "無法刪除源站點目錄:{}", + "c88b730f7a6a312159272ce532947de2": "{}項目:{}✓", + "24ee51964e4ece856493ca28fdb075ed": "站點數據恢復完成", "483829cb5ae13bb190eb59acdf4f3231": "開始備份郵件服務器數據", "8c7a0774ab14bae83a69b8562102fb0a": "郵件服務器數據備份完成。數據大小:{}", "e8480272035737a247832288f618c270": "開始還原郵件服務器數據", "e058c7e1fd9cd1a4fd7ac7240a7765d2": "恢復失敗,文件不存在", "6e6e9dcfdf7bd846ab85a4ff0e0e2f95": "郵件服務器數據恢復完成", + "1502c42b339a3dfe20e4c95186b38dc3": "開始備份FTP賬戶信息", "b5cf2f2c48fb5978825d3341759dd6d6": "{}用戶✓", "120446d8a303de2396a1bb62ba8e8755": "無法備份FTP帳戶信息:{}", "b18010e000c073a3587a89b2931c2770": "FTP帳戶信息備份完成", - "c5df3d6bec6157b48fb24bf8fe2a2add": "FTP創建失敗:{}", "c9073077bfd7adb73cbe253177b08833": "還原{}帳戶", + "c5df3d6bec6157b48fb24bf8fe2a2add": "FTP創建失敗:{}", "f3f8d4ba630fa6a7de1e9f4e34bad5dc": "{}帳戶✓", + "af4ff8fd3803d5496f74604eb1665e81": "開始恢復FTP帳戶配置", "2bf94c9147c8220fc83f955175216c40": "FTP:[{}]帳戶成功恢復✓", "9417f3027d6326176c986ffeee1f4491": "無法還原FTP帳戶配置:{}", "8ed95b2c3c38acf7e9532a582f08bb86": "FTP帳戶配置恢復完成", "49237b104331e8724e521b2fe6fdf6d8": "開始備份插件數據", "26d785a1a32377e0e0e9498f4a7da12e": "nginx防火牆✓({})", + "7f578816e3867140ee56ccbbc1d69f55": "網站監控報告 ✓ ({})", + "ff083aca075c6543c2999781b6677c19": "企業防篡改保護 ✓ ({})", + "2f29dad748ac1d8d50481ecbd7e05091": "系統強化 ✓ ({})", "79bb9b38c599612b8b8f38ddc50f5c25": "開始還原插件數據", "ee84e47223f5ce39b8bb239376db4af3": "如果遷移的機器不綁定到Aapanel用戶併升級到專業版本,則可能發生插件修復失敗", "30560687e27ef30b6f1cde26359eea6c": "開始安裝nginx防火牆", "a776b4ccf7343a25223817c8597ca7cf": "Nginx防火牆✓", + "d0c97e94eb5061783de7bbad8e7bd295": "開始恢復Nginx防火牆數據", "0010c09bd9f322c3b88a89dd0b52c831": "Nginx防火牆數據✓", "427ad80bf462a92719fcff5c1a1be755": "nginx防火牆✗", "29ad27f749c3f913779d432115de597f": "開始安裝網站監控報告", "66f3f8adc854963e94a643b706157309": "網站監控報告✓", "a0dded50b067929299258b3c8fc1b0e6": "開始恢復網站監控報告數據", + "bd43add14ebbd0f448c207c48e1d5ac8": "網站監測報告數據 ✓", "a7b8bc831a9b36cc5127b5f8ecbec22a": "網站監控報告✗", "c922c95c5f7973050d08412a26aab462": "開始安裝企業篡改保護", "31d844f4dd95b8a71e8ddbd1b9912ae5": "企業篡改保護✓", @@ -3450,6 +3661,7 @@ "4d86b9c9f554fa3d477a86d2f62aaa1b": "系統硬化✓", "5633c4d754985da6c7fab116964ac501": "開始恢復系統硬化數據", "bda583fc184a8e079a37e169a9614e10": "系統硬化數據✓", + "479557cf249b3145d91a94ed130c5ecb": "系統強化✗", "746e85b89c25244ae397c06029badc9c": "插件數據恢復完成", "69d45b5b241dac0fa1efaf7b6966520b": "開始備份SSL證書信息", "835601ead78ba62b89c4b27956645362": "{} {}證書文件不存在✗", @@ -3476,63 +3688,22 @@ "a9d58d413bd48f1bd7e8041b6d8ceab0": "crontab任務{}✓", "ff0550fa0270ac20419790a51900d815": "備份crontab任務完成", "a7609aefd5330a1384704e73dc0b4dc0": "開始恢復crontab任務", - "d4e8a75d522d3e77ae80eadd49b0865e": "遠程數據庫列表為空", - "5d806f11bb91996cafe7836b27a4e770": "REDIS連接例外!", - "1d69261c05f6ce03d2cab5528d443fa7": "啟動數據庫數據的備份", - "0cf1803cfdfda6f67d12fa7e1c4a25a7": "備份{}遠程{}數據庫", - "32d68be800692faddb12c5252fded05e": "{}遠程{}數據庫信息✓", - "2f7d7cfc04be64fa087e964d41cb26b4": "開始還原SQLite數據庫列表", - "a1248c409fec22277ab13a6bb433188e": "SQLITE數據庫列表備份文件不存在,跳過修復", - "d03ebecb5f420070192de8712926151a": "SQLITE數據庫列表恢復完成", - "ad6937d61b4d6e93a13f03308c66f2eb": "MongoDB服務沒有運行!", - "f60644c6526c4d9afe5b20db75fc2e5b": "數據庫備份失敗,導出目錄不存在!", - "161bb420493657920405937a2cf42c96": "備份壓縮失敗!", - "20a42330f9241c13c91e3e203449a8a6": "缺少備份工具,請先通過軟件商店安裝PGSQL管理器!", - "7eff7c4aeb6bfe736f8a78c0096f92c7": "請首先設置管理員密碼!", - "6e907b499869ab16105a7aba198e13a7": "數據庫密碼為空!請先設置數據庫密碼!", - "982c5a05ac4dbaee10c865ba767b2249": "MySQL DB同步...", - "c15645e9ad579e4bfcb536bc5d7015c3": "開始還原數據庫數據", - "c9206e74b8d32e1e0a5710c0fe322cee": "還原{}數據庫{}", - "ecea29915732c5d0001ece74601f3d20": "{}數據庫{}✓", - "b61a878149263a02fa99cc635409ee25": "{}數據庫{}✗({})", - "3fa7c5a9beafa67bb44999cab5cff52c": "無法還原{}數據庫{}原因:{}", - "e89775cca910deb5e484f631606cceb1": "數據庫數據恢復完成", - "9750547146e22f364299bc5f561a3fb6": "開始還原遠程數據庫", - "6aca7aec516bcaf7ded80873f08dd55c": "MySQL初始化成功使用密碼{}", - "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL將重新啟動,請等待...", - "a692f58dc09f3e41c133ea460ff3b8df": "{}數據庫密碼恢復失敗。原因: {}", - "b17f6f187c4ecfd392c6367ec2ba6498": "{}備份ID不存在,導入終止", - "3e686ed1f6a0bc9ccba7a3cc119b5008": "{}數據庫ID不存在,數據恢復終止", - "611881e9f5d01b22a447c282aa8aca23": "MySQL數據庫{}已經存在", - "98b38cd2445396b44204b7201a33f64b": "無法還原{}數據庫訪問權限。原因: {}", - "ea31cbc6134300ca816c913d227b605f": "無法創建{}數據庫。原因: {}", - "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "數據庫已經存在,跳過SQL修復", - "556843e4a406b780b0cf83c43366a8dd": "進口成功", - "af71c2c0e3813c9a77fe48507ea8e4d1": "MongoDB數據庫{}已經存在", - "416ad8b141103f9704100ce4070c5975": "數據庫記錄驗證失敗,恢復停止", - "84b4d8c8cdd02488c0f868e97b22a3c2": "創造成功", - "10aec3a9e9564a9851c117b259245136": "數據庫已經存在,跳過數據恢復", - "b819d4259ca3ab0042562acea69e83e1": "PostgreSQL數據庫{}已經存在", - "31b21eca2e62de420cf05e8135089114": "備份文件不存在!", - "3eed4851380704f25eec3921befde38f": "恢復成功", + "48ed083561c2f201d9fe52f6a35ee982": "crontab 任務完成", "e9ed6b2a27deb5699565f0441dc713e9": "開始備份軟件信息", "e690c7866c5dbacbbc7860af5e6a3af1": "軟件信息備份完成", "cabf299a6cfa5874e23582c535f301c6": "開始安裝nginx- {}", "33ec71107108ed89c0b526d5473526c8": "開始安裝Apache服務", "b815f2a7e299ea99d41d665c728756d9": "Web服務器安裝完成", + "70510d59e30015790f07ca53c80c5bec": "開始安裝 php-{}", "2de6c0aa3c26285104f898b368bcf287": "開始安裝節點 - {}", + "7d5cf115afd8be7c2a36d03b31d1ce44": "開始安裝 mariadb-{}", + "92e77c2b107f440d6d54062228112f73": "開始安裝mysql-{}", "4b09abb2edd44a4510395a297a2ff155": "開始安裝mongodb- {}", + "69fa45968c5cc7a9115bff54e70c95c1": "開始安裝 memcached-{}", + "fbabb869ff01746bd144289622b277fc": "開始安裝redis-{}", "da7d69765f1876fba52c21a17e8c74c6": "開始安裝PostgreSQL- {}", "99782b6a478e499d45a91f9d78e1c73a": "開始安裝phpmyadmin- {}", "640c4e334dc9587e212d36e685059478": "開始安裝ftp- {}", "aecfeaaa9e3bcff1f6169598772e90c0": "開始恢復面板運行環境", - "3b83e3fdb17c70ca190e263e0bd7173e": "如果存在相同的環境,將跳過安裝", - "7ecf25c18499d663d2e636d0a99f73a3": "{}項目{}✓({})", - "9a2e8778b2a816fedb9f83afadcc2341": "開始恢復站點python依賴性...", - "bbf57ca8231bce958a3e528a08491874": "站點數據庫插入失敗:{}", - "389f018ba17dc25cb23a5300d8f630db": "網站備份目錄不存在:{}", - "21654e03b247d5e25abaa0ad542883c0": "開始恢復站點數據", - "c8cecd19f4f4a680a5879f828d1c5578": "還原{}項目:{}", - "35850d3654332477522ee06c756a3c85": "無法刪除源站點目錄:{}", - "c88b730f7a6a312159272ce532947de2": "{}項目:{}✓" + "3b83e3fdb17c70ca190e263e0bd7173e": "如果存在相同的環境,將跳過安裝" } \ No newline at end of file diff --git a/BTPanel/languages/de/server.json b/BTPanel/languages/de/server.json index fec0aeba..de4aa89c 100644 --- a/BTPanel/languages/de/server.json +++ b/BTPanel/languages/de/server.json @@ -14,64 +14,30 @@ "4cc4ddc196a295ee4ab82daec08f91a6": "Site existiert nicht", "25bb121145f918572eea2ef07ff8e89c": "Sicherungsfehler", "f8320b26d30ab433c5a54546d21f414c": "FALSCH", - "4bbfcde12aa36ec375a332f51bf905d6": "Pro Tag", - "60956b50bb8e8c711d3adb889a70137f": "Pro Tag, laufe bei {} Stunde {} min", - "78748f15bb65939b6d130c3a5cf8b7dc": "Jeder {} Tage", - "cf9af10dcebe2f12092ff6028a535f08": "An jedem {} Tage laufen Sie bei {} stündlich {} min", - "e114abed903b9d26c476d4f6cd59c04b": "Pro Stunde", - "0aef48ea8132b0551fa25a10fd0a6585": "Pro Stunde bei {} min laufen", - "50419faf9662e0c3f283d496bcb8eb72": "Jede {} Stunden", - "2a0706d7e3ca3ce9e955471a0648dfcc": "Jede {} Stunden laufen Sie bei {} min", - "84d94bf0382f611906b7edd65d6af169": "Jede {} Minuten", - "14d27796d1c96457c7c019661a2f32d4": "Führen Sie jede {} Minuten aus", - "6c25e6a6da95b3d583c6ec4c3f82ed4d": "Wöchentlich", - "e1df614d393ab86fd63c5062f7e77936": "Jeder {}, laufen Sie bei {} Hour {} min", - "9030e39f00132d583da4122532e509e9": "Monatlich", - "69c5e99b9ad8d2b8f11be9a60cbf71da": "Monthly, laufe am {} Tag {} stündlich {} min", - "9d1a0949c39e66a0cd65240bc0ac9177": "Sonntag", - "6f8522e0610541f1ef215a22ffa66ff6": "Montag", - "5792315f09a5d54fb7e3d066672b507f": "Dienstag", - "796c163589f295373e171842f37265d5": "Mittwoch", - "78ae6f0cd191d25147e252dc54768238": "Donnerstag", - "c33b138a163847cdb6caeeb7c9a126b4": "Freitag", - "8b7051187b9191cdcdae6ed5a10e5adc": "Samstag", - "e00d5128f631253b7b6ed8d5454c0c81": "Bitte überprüfen Sie bitte, ob [Systemhärtung] aktiviert ist!", - "685689743579a8f09fcec5d7df04e39e": "Name der Aufgabe kann nicht leer sein!", - "a5c04aced897c770105858268324b53f": "Die aktuelle Aufgabe ist Deaktivierungsstatus. Öffnen Sie die Aufgabe, bevor Sie sich ändern!", - "85305ee6be0f078791c7437ec54dda12": "Versäumt hinzuzufügen", - "08a1ce771119bb393fa49478216ae809": "Protokoll ist leer", - "b8fd4dbe5c3650beaec0a3d44d7f0245": "Protokolle geleert", - "ff47c70e853d0b3635935be883b018e9": "Die Aufgabenprotokolle nicht leeren!", - "e0c4da1afd18acbb66bc5fac261a42ef": "Die angegebene Aufgabe existiert nicht!", - "998ad6f12ce5285a1b72d4265d9b36cc": "Erfolgreich gelöscht", - "e274abcaad0a7fff74d9adb67e578d5f": "Nicht löschen", - "38fa2d4f8f9a13062c0c9007d97f6a84": "Datei nicht lesen!", - "f57d5686d9dd67f0e81924de8d13af95": "Aufgabe wurde ausgeführt!", - "0b1c93d38c86c8d379886293cdf8ba66": "Aufgabe abgesagt!", - "d5ef96e383d376beeec28da7acfea516": "Datei herunterladen", - "f24f6c5f5841340f898a6baaa6478bcd": "Datei herunterladen {}", - "b2d87dda66a4643c6cf673f787c5f226": "Konfigurationsdatei gibt es nicht", - "9fdd777388a418cef77bce46c1b2511a": "Das angegebene Komprimierungsformat wird nicht unterstützt!", - "4fa407ee74026903dc3013d0b2471eac": "Komprimierung gelang es!", - "ece43dcaac9352f58c422e500266a927": "Unkompressionen gelang es!", - "b9c1dcb37c44dca19765636de065b1c1": "Backup war erfolgreich!", - "ac4eb62573e34c36ff426c8a6360c781": "Sicherungsfehler!", - "438ca4ffcf6fbd44ec129e73a24f0deb": "Wählen Sie SQL/GZ/ZIP -Datei!", - "0edfb4a54d6cf45209a6c7929b8b9919": "Erfolgreich importierte Datenbank!", - "b0698ab9adefa7515299f311c725ba4d": "Klare Sortierung erfolgreich", - "8611f56e253646a455ceeb020052fa97": "Nicht geändert", - "bef28b813bf12be3924925bbb62883dd": "Erfolgreich ausgeführt!", - "fda63bff3e0143980e5761376859b00b": "Ausführung fehlgeschlagen, prüfen Sie, ob Apache installiert wurde", - "22012355700877ab73f89de8014ab20b": "APache -Regelkonfigurationsfehler:
konnte nicht aktivieren:

", - "9848c96a046adb1759233241661ff694": "{} Service startete nicht", - "6ed577cdce37bbd9c66871ac1677dc53": "Service Stopp fehlgeschlagen!", - "572e5703371c43aae299181c0e3567d4": "Bitte führen Sie das Programm aus, wenn alle Aufgaben erledigt sind!", - "c7138b4b5f7ded833942aef4e230771d": "Befehl erfolgreich gesendet!", - "d56f0ed99825b4d62ab84753a65f7f1e": "Panel neu gestartet", - "bff9ef87fdda677f86ae6dddec54a104": "Keine kompatible PHP -Version gefunden, bitte installieren Sie zuerst zuerst", + "18928426418954e3a8bc166c892af5c5": "Benutzername oder Passwort kann nicht leer sein!", + "14422683e14b8a03fd02b84480703c41": "Sie haben sich oft nicht angemeldet, bitte versuchen Sie es erneut in {} Sekunden!", + "179b0ad118200b66c6e90535d9d8ad4f": "Disk Inode ist erschöpft, das Panel hat versucht, den Inode freizusetzen.Bitte versuchen Sie es erneut ...", + "7edd0140c2f050286273be74039b1df7": "Überprüfung fehlgeschlagen, bitte aktualisieren Sie die Seite und melden Sie sich erneut an!", + "9a9b0bf6269ba974cc6a00bb0f0de1d0": "Der Verifizierungscode kann nicht leer sein!", + "2b7ae590e0538e70b7a359a94d30f1f4": "Der Verifizierungscode ist falsch. Bitte versuchen Sie es erneut!", + "21f763b26858bf8ff40f931d714ab106": "Falscher Benutzername oder Passwort , {}", - "6e264f3408e9b769d3fb7e2c807f301f": "Die Operation ist fehlgeschlagen.Bitte überprüfen Sie, ob der Schlüssel korrekt ist", - "d4ac5985eccd334896e3cf23706e43b0": "Erfolgreich hinzugefügt", - "92188d43af4373bacbf00951da16532a": "Versäumte den Website -Pfad.Bitte überprüfen Sie, ob die Website vorhanden ist", - "ceaefd9a46d78491b9fdb912b5c71eeb": "Die Validierungsdatei erstellt nicht.Überprüfen Sie, ob das Schreiben blockiert wurde", - "1bb3608b1bc684c3dc85090db249346b": "Es wurden keine Zertifikatsinformationen erhalten", - "c8c7de7f5b740307d55affea39b79993": "Das Setup war erfolgreich", - "131c05252110792212e3e3666a351154": "SSL-bezogene Konfiguration, löschen oder ändern Sie die nächste Zeile der kommentierten 404-Regeln nicht oder ändern Sie nicht oder ändern Sie nicht oder ändern Sie nicht oder ändern Sie nicht oder ändern Sie nicht", - "4ba7e24ac1607ab761c124ca7352ad08": "Fehlerseitenkonfiguration, kommentiert, gelöscht oder geändert werden", - "31bb30ca4135945adbe0c2daa9545b39": "PHP -Referenzkonfiguration, kommentiert, gelöscht oder geändert werden", - "f9da3e5ae75ce0ae39884ae2ea295a66": "Referenz für URL -Umschreibregel. Jede Änderung wird die vom Panel festgelegten Umschreiben von Umschreibungen ungültig machen", - "73e1f7d487ad73d55414fe26ea11cbf0": "Nicht angeben Parameter [Sitepath]", - "6aabca3a3e1c79bd5837a1ddae95fe70": "Es wurde ein Fehler erstellt, bitte versuchen Sie es erneut.", - "256c9a85375f57f2dc9f6f318c6578f1": "Erstellen Sie die Website [{}] erfolgreich", - "481df7dbcd4c0317088bde8c913d5893": "Bitte füllen Sie den Website -Pfad aus", - "b1b2484c013c646d7f41d6b2f495b6ef": "Der Website -Pfad kann nicht das Root -Verzeichnis sein [/]", - "1c3bff99564f1370a5b1bf6c0773f8c4": "Bitte überprüfen Sie, ob das [E -Mail] -Format korrekt ist", - "af9091566e669f016edf16ba97464cbe": "Passwort sehr schwach, wenn Sie es sicher verwenden, ticken Sie bitte an. [Ermöglichen Sie schwache Passwörter]", - "b0dbad478d4f07c38aec8f440ed98b66": "Bitte installieren Sie zuerst MySQL und PHP!", - "46491fef7553177ef58a55b2db917072": "Bitte setzen Sie das Root -Verzeichnis der Website nicht auf das System Main Directory:
{}", - "59d5fef323e89ded50ed6036848a97f3": "Das Format des Webname -Parameters ist falsch. Es sollte eine parserbare JSON -Zeichenfolge sein", - "078a3d3e263be2851ddfd9fa059d098f": "Port Range ist falsch!sollte zwischen 100-65535 sein", - "50370024fdd22dc69099a46d011b20e2": "PHP -Version kann nicht leer sein", - "44bd68c6703adf65ff21c63e9a876aa1": "Das Format der Primärdomäne ist falsch", - "23eded6de9c06451f67ecb7ed3a8c95b": "Primärdomäne kann kein Wildcard -DNS -Rekord sein", - "f54249d2613e48be05837ec9cd615a5f": "Die Seite, die Sie bereits hinzufügen versucht haben, existiert bereits!", - "b537e2d1946d559d3de4fb3c045d290f": "Die Domain, die Sie bereits hinzufügen versucht haben, existiert bereits!", - "f91c641aef33cf8ef4a29bc5d3a7193a": "Nicht hinzuzufügen, Schreiben Sie Konfigurationsfehler!", - "c3c7869d22051eaa78a831834a398351": "Es wurde ein Fehler gelöscht, bitte versuchen Sie es erneut.", - "e2d272e229674e4c6765fab24a323604": "Website [{}] erfolgreich löschen", - "aa5f20e061736fe68a915163e7e6d122": "Die angegebene Site gibt es nicht", - "f11e72daff0ce484f4c401bd0bd28ae5": "Erfolgreich gelöschte Site!", - "c57d58c6bbd34144325871d75b42a577": "Bitte geben Sie den Namen der Host -Domain ein", - "5c7b7c2f6ed78eefdd77aaa3dddde61a": "Domain kann nicht leer sein!", - "ef446d50df1605a582f9b44b57327536": "Das Domainnamenformat ist falsch!", - "68ae44808f90043dee02358ee768bf6e": "Das Format der Domäne ist ungültig!", - "1628c2a26ab6d1211b435f85782f8acc": "Der angegebene Domänenname wurde an die Website [{}] gebunden.", - "925dc658ddf0f69509632848bcd39577": "Der angegebene Domänenname wurde an ein Unterverzeichnis der Website [{}] gebunden!", - "7b02cf82181f516626a36b86c6a686f5": "Erfolgreich hinzugefügte Seite!", - "9b3c4205f2f408790c9c1c5da53c3bfb": "Die PHP -Version versäumt es nicht!", - "abc3db87d5608cc9559556468a696a35": "Bitte wählen Sie einen Domain -Namen", - "7807e17f2bf49fb802bba1a04822ea16": "Bitte wählen Sie einen Port", - "e5925c3a126a66c0565df6d8ef49550e": "Die letzte Domain kann nicht gelöscht werden!", - "17088ffed1e537b917a6ecc9dc957159": "Privater Schlüsselfehler, bitte überprüfen Sie!", - "26924bd958e212f07c31b6ffca9cbf8c": "Zertifikatfehler, bitte überprüfen!", - "44e2c1c3cfd8d248d7c9190a8f07c0ee": "Fehler beim Erhalten von Zertifikat", - "fc0d039d9dcf3905ae8032c9cb33f475": "Fehler:
{}", - "ddc2be35a5ed0bf09a88139c4ad10b4a": "Gleich wie der ursprüngliche Pfad, keine Notwendigkeit zu ändern!", - "84a8921b25f505d0d2077aeb5db4bc16": "Statisch", - "ad74aa2854e988c3157f92e0120bb19e": "Apache2.2 unterstützt MultipHp nicht!, {}", - "4018ce634a10d352867f04962f107c14": "Es gab eine Fehlereinstellung, bitte versuchen Sie es erneut.", - "f1bef4fd5183ae83a5896c32a3d5e81d": "Benutzerdefinierte PHP -Konfiguration unterstützt nur Nginx", - "879e0d022ff268704f93a7e2b504c224": "Die PHP -Verbindungskonfiguration kann beim Anpassen der Version nicht leer sein!", - "73d6e709b568b43405052cec999798c5": "Das PHP -Verbindungskonfigurationsformat ist falsch. Siehe Beispiel!", - "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "Der angegebene UNIX -Socket [{}] existiert nicht!", - "751ac8fd72a0acd79772370efcae9c89": "Überprüfen Sie bitte, ob der Computer eine Verbindung zum Zielserver herstellen kann", - "3cb7d414f8ae92b2b29057f91346f7dc": "Setup fehlgeschlagen, wurden in der Website-Konfigurationsdatei keine Enable-Php-XX-Konfigurationselemente gefunden!", - "c7a6a892c6cdfc9b0fedefb0a1d2083a": "Angefordertes Verzeichnis existiert nicht", - "4622561ceaaecb6ef7dd51e65c9f4ec5": "Basisverzeichnis ausgeschaltet!", - "e4ec1f40794bdf92e7261e6e0c51895a": "Basisverzeichnis eingeschaltet!", - "eeddf79f68ffe029ed83fddcba46b35f": "Alter Stellvertreter", - "1592678472ea1b601fd74abff47c56b1": "Kann keine Ziel -URL bekommen", - "18edd294853d381dbe0d612ab58bc123": "In der Konfigurationsdatei wurde ein Fehler festgestellt.Bitte lösen Sie es, bevor Sie fortfahren", - "8b5899be4df3aedb03c6fbad9055ed1c": "Der Datenbankname kann nicht mehr als 40 Zeichen sein!", - "111376d92c49c1a6c1522a2ef1dac23c": "Der angegebene Reverse -Proxy -Name oder den Proxy -Ordner gibt es bereits", - "09a988aa2e3185fce9fa8f4e8710b862": "Kann nicht sowohl Verzeichnis als auch globale Proxys festlegen", - "012a8e497feddccb8e4a47aa5e2dc156": "Bitte geben Sie die Nummer ein", - "90da7d2de9aa12ec32ee04172ca0d2d3": "Fehler mit dem Domänenformat: Fehler:", - "440544138d3ed8a2229792c88bad3bd8": "Die Ziel -URL kann nicht zugegriffen werden", - "faf2457853593b3296699c4adacc7825": "Bitte geben Sie den zu ersetzenden Inhalt ein", - "748e5ad33460a17cf26c8024bb0a1620": "Der zu ersetzende Inhalt kann nicht mit dem zu ersetzenden Inhalt übereinstimmen", - "195d5db9e1559f06348715bc3a822036": "In der Datei Rewrite/Nginx Master -Konfiguration/Vhost gibt", - "cc38d47ec9ac62ffc67a5db9c08d5d52": "Ziel -URL kann nicht leer sein", - "fb79afbbe0688565b7894b644dfd798d": "Die Ziel -URL kann nicht [http: // oder https: //] sein, bitte füllen Sie die vollständige URL aus, wie z. B. https://aapanel.com", - "29c9da826ae868c8c6444328f48bcf40": "Reverse Proxies sind derzeit für WordPress-Sites, die eine Ein-Klick-Bereitstellung verwenden, nicht verfügbar", - "a59dfc3ae22fd96d46011503a4f40744": "Proxy suspendiert", - "118f77feff598376a776af9b8e738efc": "Erfolgreich gespeichert", - "078bb5f960587121c7cd606ddba5ad58": "Bitte aktivieren Sie den Reverse -Proxy vor der Bearbeitung!", - "fe7185cec796e18d58f8e84dc4da946f": "Derzeit unterstützen Sie nur Nginx", - "222a267cc5778206b253be35ee3ddab5": "Aktuell", - "38441d4a89765279852ca2830aa89c83": "Neue URL -Umschreiben -Regel wurde gespeichert!", - "c27a45bf16475a157ca1014cf886bb56": "Bitte geben Sie eine Notiz ein", - "9a962a24e9b7b07800d6b7c7efd86f30": "Benutzername oder Passwort kann nicht weniger als 3 Ziffern sein!", - "7eb904262649f9b2e4ba52e2bba9db71": "Das Passwortformat ist falsch. Verwenden Sie bitte keine speziellen Symbole für die ersten beiden Ziffern!", - "492c7f01035f1cf9b88756f897f02b87": "Fehler, Primärdomäne kann keine IP -Adresse sein!", - "0a2b8c4a98495f6af19be9c1c342844e": "Nachfolger, bitte testen Sie das JSP -Programm!", - "49281f9c7680652b1d110625da5c8cca": "Tomcat -Mapping geschlossen!", - "ec3b07b78fd4f3307c84858957ddbd0f": "Holen Sie sich Site -Run -Pfad falsch", - "02e602e968050352febfc4ddcae332f0": "OpenLiteSespeed unterstützt nicht die Einstellung der Standard -Site", - "362538d60f495840284c667e67831b16": "Scan -Verzeichnis", - "4f137439eb93e6c752873c8af2d3d1cb": "Die Scan -Aufgabe hat in der Warteschlange!", - "613a6375944c3035efe735e87766fbbd": "Update erfolgreich!", - "6177805463a6a4f28e61bb3435bee13b": "Erfolgreich eingestellt, bleibt die Website automatisch angehalten, wenn es abläuft!", - "1a69486f70b6baf749e6e1c4d5fcf689": "URL -Suffix kann nicht leer sein!", - "2f858201b6da6a5419c5af8fd26f815c": "Der Domain-Domain-Name der Diebstahlkette kann nicht leer sein!", - "f36c15e89d61e07fb44095ae920b8fbc": "Bitte schalten Sie zuerst den Hotlink ein!", - "70dc560b6f4af6d210c9eeb8434c571c": "Antwortressourcen sollten URI -Pfad- oder HTTP -Statuscode verwenden, z. B.: /test.png oder 404", - "aa8722f512ecebf5dae454e526402508": "Bitte schalten Sie zuerst Anti-Diebstahl ein!", - "bd0d7585c64988d80747a32fb0e3e15e": "Protokoll ist leer", - "a17f5bc22553d897f6363867c0165256": "Standardkategorie", - "0d0d87a34e787b2f4a59d912d4d441e4": "Der Kategorienname kann nicht leer sein", - "6818a5095a78431eb3c99fe022b687b0": "Der Kategorienname darf 16 Buchstaben nicht überschreiten", - "c4f16bb3d87b92062f73954c86485f64": "Fügen Sie bis zu 10 Kategorien hinzu!", - "5fd53f59be2a3dee94df28886840b9a3": "Der angegebene Kategoriename ist bereits vorhanden!", - "1c44b4096bb88e459ddadef895bea1c2": "Die angegebene Kategorie gibt es nicht!", - "8f52253b1f007fd14ed0f60b89593d2d": "Kategorie gelöscht!", - "b51515085fc6ea6a07192c61e068c124": "Erfolgreich geändert", - "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "Diese Funktion unterstützt nur Nginx/Apache", - "6678fd91bc04eb1e34e3474809387e7a": "Abfrage fehlgeschlagen, gibt keine Adresse", - "7ac0a27b48f2931c7f294b996fe6b273": "Fehlerspitzenkonfigurationsdatei", - "ee3a15a26aee235ac255e37342b444bb": "Erfolgreich einrichten", - "79799f8c2f024685df774550ea5b427d": "Website [Proxy, Redirect, HTTP bis HTTPS] werden nicht so eingestellt, dass sie automatisch neu gestartet werden", - "29faf053a22c387532298233399e66f9": "Konfigurationsdatei -Parsenfehler", - "6c881e76c76b1f102bcb97a8b4f682f6": "Diese Website hat [Proxy, Redirect, HTTP an https] automatisch Neustart eingeschaltet", - "13fc1b8a101214be1a472db8de1bd8fd": "Die Website hat den automatischen Neustart ausgeschaltet", - "1fb58c8e2967a648359d13aa22d9e493": "Die Seite existiert nicht!", - "b0cd0c2bc5c6ce9f71127d60872209ce": "Website [{}] Umbenannt: [{}]", "3f96c422b7a59fe6e8bf7531c647a64c": "Das angegebene Konto existiert nicht", "cb5e7fdc51569eedfbf3a9a0d3c819cc": "Die angegebene Bestellung existiert nicht!", "8bd32b310825307a909c682871008642": "Erfolgreich gelöscht!", @@ -398,12 +121,103 @@ "6953519c64b998226d0294b961deca62": "Zertifikat widerrufen", "1bbd31373b98ad5a6320af00b2a15ee0": "Erneuern, wenn die Ablaufzeit eine bestimmte Zeit ist", "8fcc1d6fd24fad55d9e8fea6631886db": "Bitte geben Sie den Index der Reihenfolge ein, die im Parameter -Index widerrufen werden soll", - "7b84e677e97bd4943a6639a22c1a1704": "Passwort 参数 不 能 为空", - "5f3160e82bc0c5278923b609841e588b": "开启 成功", - "f288f8c23f8d03a699a49bf1fb8e7f53": "ssh 选项 失败", - "d3118650da719b6b0cc83230204491de": "加密 方式 错误", - "24513dc8c02bb021a1c944009c19215b": "开启 失败", - "8a3140f96ba5c5df5560d0bd27aa4cd8": "关闭 成功", + "b0698ab9adefa7515299f311c725ba4d": "Klare Sortierung erfolgreich", + "8611f56e253646a455ceeb020052fa97": "Nicht geändert", + "ebdcf538e79de6922f498cc8c735eab5": "Die Systemfeuerwall ist nicht geöffnet", + "a296add6341b715925c0be2b83514ee3": "IP -Adresse, die Sie eingegeben haben, ist illegal!", + "3433b9709eed7423f1900061ef743af6": "Wenn Sie diese IP deaktivieren, fällt Ihr Server aus", + "57e7b2320dd3984312335605d57ee0f8": "Die IP ist in der Blockliste vorhanden, keine Wiederholung der Verarbeitung!", + "4bb8df740a7119979ff7854d034200a8": "IP -Adresse ist illegal!", + "998ad6f12ce5285a1b72d4265d9b36cc": "Erfolgreich gelöscht", + "ff9c66f005c08efd15752fb261057b46": "Der Portbereich muss zwischen 22 und 65535 liegen!", + "b26b09909c3b090f31dba4a0986e1b84": "Der Port existiert, keine Notwendigkeit, die Veröffentlichung zu wiederholen!", + "408f58c25fc55295236fbb64a2d884ff": "Fehlgeschlagen, den aktuellen Port des Panels nicht löschen", + "e274abcaad0a7fff74d9adb67e578d5f": "Nicht löschen", + "ad6fc2abb89b42d391b4bf84e8e6cd2d": "SSH -Service ausgeschaltet", + "0692d6f0819524aaa05e73f03022ec5b": "Der SSH -Service wurde eingeschaltet", + "d0749aaba8b833466dfcbb0428e4f89c": "ERFOLG", + "ffdc24f916f3071233ca7710aff032c8": " {}", + "6e264f3408e9b769d3fb7e2c807f301f": "Die Operation ist fehlgeschlagen.Bitte überprüfen Sie, ob der Schlüssel korrekt ist", + "d4ac5985eccd334896e3cf23706e43b0": "Erfolgreich hinzugefügt", + "92188d43af4373bacbf00951da16532a": "Versäumte den Website -Pfad.Bitte überprüfen Sie, ob die Website vorhanden ist", + "ceaefd9a46d78491b9fdb912b5c71eeb": "Die Validierungsdatei erstellt nicht.Überprüfen Sie, ob das Schreiben blockiert wurde", + "1bb3608b1bc684c3dc85090db249346b": "Es wurden keine Zertifikatsinformationen erhalten", "b0a783e3ada9e792e3ff3ca4eb477c80": "Zertifikat existiert nicht!", "fca4e47d90253577901e874737b87dc0": "Zertifikatlesener Fehler!", "813595d6c41e417bea96adb1ad89043f": "Zertifikatformatfehler", @@ -422,9 +236,391 @@ "501ffa672acb20c4764563d6e839879b": "Fehlgeschlagen, eine Verbindung zur Cloud herzustellen.Daten in der Cloud nicht löschen.", "a810cdf921c5b92a3f6d29667ec78ffc": "del Erfolg", "df569fbc92d17644e83b44541596633f": "Fehlgeschlagen, eine Verbindung zur Cloud herzustellen.", + "140bda69874872f8402052c613c0b3b9": "Aapanel Alert Test -E -Mail", + "76a1ec4a3fcdc304394ff14dc90f8072": "Die Anzahl der Panel-Threads sollte zwischen 1-1024 liegen", + "dd7e82b5fb3c67e3e41d96f22ba838fd": "Neuer Panel -Port", + "248336101b461380a4b2391a7625493d": "Gerettet", + "40624aabb99173387dd6d575759b12db": "Der CertPEM -Parameter fehlt!", + "37db9679113eef382992a1478f1b79ff": "Der Privatkey -Parameter fehlt!", + "7063e5fbf2ea8d0809fe307b6df00467": "Zertifikat gespeichert!", + "d2174fc17fcd785706114088b84dbbce": "Eine vorübergehende Anmeldemugel wurde erstellt", + "b5101eb6e685091719013d1a75756a53": "\\ 1", + "0bfe47819da04212a33dac83b71430e8": "\\ 2", + "bef28b813bf12be3924925bbb62883dd": "Erfolgreich ausgeführt!", + "fda63bff3e0143980e5761376859b00b": "Ausführung fehlgeschlagen, prüfen Sie, ob Apache installiert wurde", + "22012355700877ab73f89de8014ab20b": "APache -Regelkonfigurationsfehler:
konnte nicht aktivieren:

", + "9848c96a046adb1759233241661ff694": "{} Service startete nicht", + "6ed577cdce37bbd9c66871ac1677dc53": "Service Stopp fehlgeschlagen!", + "572e5703371c43aae299181c0e3567d4": "Bitte führen Sie das Programm aus, wenn alle Aufgaben erledigt sind!", + "c7138b4b5f7ded833942aef4e230771d": "Befehl erfolgreich gesendet!", + "d56f0ed99825b4d62ab84753a65f7f1e": "Panel neu gestartet", + "3d8c9e517719022b27ad5f27c578fa31": "Holen Sie sich RAM falsch", + "d47ab7b9ce539ba13f4e045561bb8ed7": "GET TIME FALSE", + "8e39175bab478762d3d029bee327c704": "Holen Sie sich die Neustartzeit falsch", + "e16cf27704f83c8b0a0efc16886ea75d": "Holen Sie sich Datum falsch", + "c158c8096b76b85803e71232b2dd5e74": "Holen Sie sich Zeitdetail falsch", + "a6ec06b5eb6a42e13e072d2e992e31a0": "Holen Sie sich REQPERSEC FALSE", + "cdd32490a46567fd0c1ee9d4b170b762": "Holen Sie sich Totalaccesses falsch", + "62b939086708b37d68c00cb713994b52": "Holen Sie sich Totalkbytes falsch", + "13b06d17b35dfeeafa50e12ad9ec1735": "Beschäftigte Arbeitnehmer falsch", + "724fc9214ccce3e6a5787648240a4533": "Holen Sie sich den Idle -Arbeiter falsch", + "7a7f329389283fdd3290c735f90946e9": "mpm_event_module conf nicht gefunden oder /www/server/apache/conf/extra/httpd-mpm.conf ist leer", + "c22cf8376b1893dcfcef0649fe1a7d87": "Zweite", + "db669c6377ab90eef78800a48fd4a453": "Timeout anfordern", + "af52f5340c065f4d38182f7a27d59f75": "Bleiben am Leben", + "70b46e57f3c33abdb9558bc5c3a234d9": "Maxe Keep-Alive-Anforderungen pro Verbindung", + "6868568c3abc547e622a303891a906b0": "Standardprozesse", + "224114c62dceb7ebee2db43c6c79a961": "Maximale Anzahl von Leerlauffäden", + "3c60809d9a5a0900dfbc28bb017e410b": "Mindestanzahl von Leerlaufflächen, die zur Verarbeitung von Anforderungsspitzen verfügbar sind", + "3783030daf8154be6e11fc4160c229c3": "Anzahl der von jedem untergeordneten Prozess erstellten Threads", + "2f25e4b1a2cb84576740da749a2daef2": "Maximale Anzahl von Verbindungen, die gleichzeitig verarbeitet werden", + "72e3edfd72758944413b1e4e9c432f1e": "Begrenzen Sie die Anzahl der Verbindungen, die ein einzelner Kinderserver während seines Lebens übertragen wird", + "26c74a59d7d10bd927dce45e449943f1": "Konfigurationsfehler", + "b2d87dda66a4643c6cf673f787c5f226": "Konfigurationsdatei gibt es nicht", + "bff9ef87fdda677f86ae6dddec54a104": "Keine kompatible PHP -Version gefunden, bitte installieren Sie zuerst zuerst", + "4bbfcde12aa36ec375a332f51bf905d6": "Pro Tag", + "60956b50bb8e8c711d3adb889a70137f": "Pro Tag, laufe bei {} Stunde {} min", + "78748f15bb65939b6d130c3a5cf8b7dc": "Jeder {} Tage", + "cf9af10dcebe2f12092ff6028a535f08": "An jedem {} Tage laufen Sie bei {} stündlich {} min", + "e114abed903b9d26c476d4f6cd59c04b": "Pro Stunde", + "0aef48ea8132b0551fa25a10fd0a6585": "Pro Stunde bei {} min laufen", + "50419faf9662e0c3f283d496bcb8eb72": "Jede {} Stunden", + "2a0706d7e3ca3ce9e955471a0648dfcc": "Jede {} Stunden laufen Sie bei {} min", + "84d94bf0382f611906b7edd65d6af169": "Jede {} Minuten", + "14d27796d1c96457c7c019661a2f32d4": "Führen Sie jede {} Minuten aus", + "6c25e6a6da95b3d583c6ec4c3f82ed4d": "Wöchentlich", + "e1df614d393ab86fd63c5062f7e77936": "Jeder {}, laufen Sie bei {} Hour {} min", + "9030e39f00132d583da4122532e509e9": "Monatlich", + "69c5e99b9ad8d2b8f11be9a60cbf71da": "Monthly, laufe am {} Tag {} stündlich {} min", + "9d1a0949c39e66a0cd65240bc0ac9177": "Sonntag", + "6f8522e0610541f1ef215a22ffa66ff6": "Montag", + "5792315f09a5d54fb7e3d066672b507f": "Dienstag", + "796c163589f295373e171842f37265d5": "Mittwoch", + "78ae6f0cd191d25147e252dc54768238": "Donnerstag", + "c33b138a163847cdb6caeeb7c9a126b4": "Freitag", + "8b7051187b9191cdcdae6ed5a10e5adc": "Samstag", + "e00d5128f631253b7b6ed8d5454c0c81": "Bitte überprüfen Sie bitte, ob [Systemhärtung] aktiviert ist!", + "685689743579a8f09fcec5d7df04e39e": "Name der Aufgabe kann nicht leer sein!", + "a5c04aced897c770105858268324b53f": "Die aktuelle Aufgabe ist Deaktivierungsstatus. Öffnen Sie die Aufgabe, bevor Sie sich ändern!", + "85305ee6be0f078791c7437ec54dda12": "Versäumt hinzuzufügen", + "08a1ce771119bb393fa49478216ae809": "Protokoll ist leer", + "b8fd4dbe5c3650beaec0a3d44d7f0245": "Protokolle geleert", + "ff47c70e853d0b3635935be883b018e9": "Die Aufgabenprotokolle nicht leeren!", + "e0c4da1afd18acbb66bc5fac261a42ef": "Die angegebene Aufgabe existiert nicht!", + "38fa2d4f8f9a13062c0c9007d97f6a84": "Datei nicht lesen!", + "f57d5686d9dd67f0e81924de8d13af95": "Aufgabe wurde ausgeführt!", + "da07d14105efb3ba634c1d35618447ab": "Der Parameter ist falsch!", + "ea2b2676c28c0db26d39331a336c6b92": "Start", + "ef399b2d446bb37b7c32ad2cc1b6045b": "stoppen", + "0b12c9f33fde8b15970c7390c54d7ca5": "versäumte das Protokoll nicht zu schließen", + "b55eed05ce4922d8a6c881f0f2b05bbf": "erfolgreich eingestellt", + "5afb8de2bbb11b44592503000290c173": "Das angegebene Plugin existiert nicht!", + "8b266978ab5161642a2d95d3f03f3945": "Bitte deinstallieren [{}] zuerst deinstallieren", + "ad626ac6de7ea412c9156f73b7666cd4": "Hängt von der folgenden Software ab, bitte installieren Sie [{}] zuerst", + "acf7b210e1f5fbdb2e24af573f0e1831": "Zumindest [{0}] CPU -Kerne sind zur Installation erforderlich", + "d0c8fa89a1eccf8a377d11eea540fd0c": "Zumindest [{0} mb] wird der Speicher benötigt, um zu installieren", + "52e44340370925b110c7fba475b805e3": "Unterstützt nur [{}] System", + "e3b16d9e5a24c8d27578d7670e840200": "Abhängig von der folgenden Software, bitte installieren Sie zuerst [{}].", + "a0405fa5f045a30ba3aeff1c65ad8c38": "Installationsprozess storniert!", + "a13ed989898e4c7529942fa656ff6733": "Systemkritisches Verzeichnis ist nicht beschreibbar!", + "7a71d673b95a1bd0d10705c865f5a626": "1. Wenn [Systemhärtung] installiert ist, schalten Sie es bitte aus", + "c5041819fd15366b66dd9539116ea6ad": "2. Wenn Yunsuo installiert ist, schalten Sie bitte [Systemhärtung] aus", + "101935ed7ea8a021a536a614363350eb": "3. Wenn Safedog installiert ist, schalten Sie bitte [Systemschutz] aus", + "8c4aa1aa63c24703138358074a515b99": "4. Wenn andere Sicherheitssoftware verwendet wird, deinstallieren Sie es bitte", + "2eaba30c177044d12634b22016f5dd99": "Bitte geben Sie den Softwarenamen an!", + "0d3811da2c2a4315b921093d36e6759d": "Entschuldigung, derzeit unterstützt OLS -Beamter Php8.1 nicht", + "0d06a64610d5755d0d395305f9b3a664": "Bitte melden Sie sich zuerst als Aapanel -Konto an", + "2c9056dcb1285057d5248e7ed16d2b4d": "Datei -Hash -Überprüfung fehlgeschlagen, die Installation stoppen!", + "fb95b07b4c663c0a52cda545eef1d869": "Die Installation ist erfolgreich!", + "fac5f4d9d430e77699ec114d346c9bb2": "Installation fehlgeschlagen", + "349838fb1d851d3e2014b9fe39203275": "Installieren", + "a9ba3c226edabcfe1978d6f4c5daf404": "Nginx 1.8.1 ist zu alt, nicht mehr verfügbar. Bitte wählen Sie eine andere Version!", + "75d7d596e2cc30d482111fae7b4f6d88": "Installationsaufgabe zur Warteschlange hinzugefügt", + "ee83f5efe8a95f2e8529da7d4bb01d2b": "Deinstallaton gelang es", + "4432eb207b29c9ead490158b76397532": "Die Datenbankliste ist nicht leer.Für Ihre Datensicherheit Sicherung und löschen Sie die vorhandene Datenbank.", + "ba922eb50c83147a9bc0e9f40877d986": "Die Deinstallation war erfolgreich", + "b860df98df6ab84521a4cef036973028": "Bewertungsbereich [1-5]", + "eb536feb2c569974c2b5cf85cae91041": "Verbindungsversagen!", + "a70188f907ee9df93a4b749109a23460": "Fehlgeschlagen, Softwareliste zu erhalten ({})", + "16ad37f5aafc6478f2f6d63d70554530": "Bitte wiederholen Sie nicht das Hinzufügen", + "18ea7bdb25b2a66507ffb1bb8b42fefa": "Dashboard zeigt nur bis zu 12 Software an!", + "2aa461271893ae0493789e9e8f248fdc": "Verknüpfungsleiste nur bis zu 5 Software anzeigen!", + "98cb93d354af289a900cd9e03cee2df2": "Installation fehlgeschlagen!", + "17e4e003ade65cd7a54131d3404d2f98": "Nicht geöffnet", + "bda730e0e5c7444ef6f4f49957ab4f39": "Bezahlt werden", + "24fe48030f7d3097d5882535b04c3fa8": "Abgelaufen", + "cbfcfe47e7420af71ce1666844c565a3": "Sortiert gespeichert", + "6a20d0daaec1ce3950a321704041dc90": "Dieses Plugin hat keine Vorlage!", + "6f5cb320fb3a7e303403054320ad943c": "Softwareliste aktualisiert!", + "b269cd272a31017961c245e2c84a1a2f": "Datei -Download fehlgeschlagen!", + "88183b946cc5f0e8c96b2e66e1c74a7e": "Unbekannt", + "84f7539fe8674bb0689347dc7acd7b43": "Keine Plugin -Informationen im Archiv enthalten. Überprüfen Sie bitte das Plugin -Paket!", + "affc007de5f6791707f3de155a3a642a": "Es gibt keine temporäre Datei, bitte erneut hochladen!", + "117f1bb083c7d556079a3c77093be5e2": "Export fehlgeschlagen, bitte überprüfen Sie die Berechtigungen!", + "a8f375e795e0a130837f2a468518a413": "Nicht konforme Namen können nur Zahlen, Buchstaben, Unterstriche sein", + "a06490b9729d0868e31d834c9bffa0bd": "Die angegebenen benutzerdefinierten Kompilierungsparameter existieren nicht!", + "5e71fccee12caedf853a7313ea204721": "Fehler: Name oder Dienst nicht bekannt", + "b6e3d7366f73e2c5e32717d679db6474": "Fehler: Es wurde keine neue Verbindung hergestellt", + "cdffdb1c794cf0dd777b3941a31459e4": "Fehler: Lesen Sie den Zeitpunkt vor", + "4573823cc04a9cbf8a7bb254b762db91": "Fehler: Verbindung abgelehnt", + "e3c2e426ad1b23571c48ec572ca675bf": "Fehler: Remote -End -geschlossene Verbindung ohne Antwort", + "db3a5c61130d7ca2046f5f9d0cd08073": "Fehler: {}", + "fe723570085e5cc1ecc3dfc88a46aa2d": "Timeout herunterladen: {}", + "0eeb116408665d50a2f2092a6c277ee6": "Kein verfügbarer Speicherplatz.", + "57a43d6e8c479df3a51421eba70d5621": "Überprüfen Sie, ob die Überprüfung der Paket fehlgeschlagen ist.", + "c12c62dd767caf90d62356b47349d871": "Für dieses Plugin kann keine Fortschrittsleiste erhalten.", + "8fde9a929c417549ed2f9144fa68c0d2": "Der Regelname kann nur aus Buchstaben, Zahlen und Unterstrichen bestehen!", + "868a6f377594831b39e91745c7807e28": "Der Name des Regelnamens gibt es nicht![{}]", + "5d9cf1940fae6317dd43a7f1b5ca8f36": "Der Name des Regelnamens ist bereits vorhanden![{}]", + "473bc9055d76e148db4d28e7bec67295": "Regelname muss größer als 3 Bytes sein", + "5b097df78b1d8c65d8b524354029f114": "Datei -Suffix kann nicht leer sein", + "496e2dfba11ca4381ef6277e6e9a62dc": "Verzeichnis kann nicht leer sein", + "84278582ca50b97777b2c8ce780f9715": "Für Unterstützung | Vorschläge besuchen Sie bitte das Aapanel Forum", + "aa00d1012298d40c84daf11e09956c65": "Herunterladen:", + "3c8ad9e6e9c39de49294aa2db8630f25": "Nginx ist nicht installiert", + "8bdafc47214a88c8cc4bc6326771040a": "Datenerfassung fehlgeschlagen!", + "d84c752e17017ec4b4987497ce15dfd0": "PHP -Laststatuserfassung fehlgeschlagen!", + "cf6e5eb2bfedf2e0529a552c1017c21e": "Schreibdatei fehlgeschlagen!", + "842bbd281516b01e70be499dbe67d3aa": "Erfolgreich eingestellt", + "ff7ca5d4ef00526f701d3ae0b3833940": "Wenn Sie die Liste nicht erhalten, überprüfen Sie bitte, ob die Einstellung [AK/SK/Speicher] korrekt ist!", + "517fa3f50147b216828f9aca9fd08927": "演示 服务器 , 禁止 此 操作!", + "e39bf0b6a74eb0459abefe075607833f": "Fehler, Aufgabenprozesse kann nicht beenden!", + "c40f1a202bfa106ac04f83a4740b3bd1": "Eine Verbindung zum Server nicht herstellen!", + "ca3eb6afad663b2881fababde6d59d63": "Bitte binden Sie zuerst Ihr Konto!", + "df1f69a87b498b8b12c90be5a3b885db": "Datei -Download fehlgeschlagen, bitte versuchen Sie es erneut oder aktualisieren Sie manuell!", + "e448bd5c1c654d1ef33cf40620808693": "Angeforderte PHP -Version existiert nicht!", + "7c769ceaad458456d4c3bc8276015a8d": "Zugriff verweigert!", + "178d2e6a3f4abd4552188dcf36df7687": "Panel -Protokolle geleert!", + "99a0d283490c238c6faf2d0387dbcda7": "Der aktuelle Webserver ist OpenLiteSpeed.Diese Funktion wird noch nicht unterstützt.", + "20b4593b7de7ef359c1a0269f83e896b": "Port Range ist falsch!", + "0e656ce1afc98099f2e01e8f71362f92": "Bitte geben Sie die richtige Portnummer ein", + "88897967b12e6907309204ad6d0647af": "Bitte verwenden Sie den üblichen Port nicht als Phpmyadmin -Port!", + "e4859a777f8d4f300baf8fff0284fe81": "Sie haben die Apache -Konfigurationsdatei von Apache nicht gefunden.", + "6bd4e79acd767010d96091baf9daba77": "Ich habe den Port nicht erkannt, dass Nginx phpMyadmin hört, bitte bestätigen Sie, ob die Datei manuell geändert wurde.", + "7478cfa7a09bbe61467b07dea2e9721d": "Bitte bestätigen Sie den Port, den Apache phpmyadmin hört, bitte, ob die Datei manuell geändert wurde.", + "a7dad48fefe8778dd10744a8a4dbae8e": "Neuer Phpmyadmin SSL -Port", + "a168cddbe84613b0a468887d44e7eaf5": "Das Panel -Zertifikat existiert nicht.Bitte beantragen Sie das Panel -Zertifikat und versuchen Sie es erneut.", + "c0c23cdf9e9329e576cfbddcc85666a3": "Wenn Sie erfolgreich geöffnet werden, veröffentlichen Sie bitte den PHPMYADMIN SSL -Port manuell veröffentlichen", + "b7f3560235e37cebdbde7db33c3df64c": "Operation fehlgeschlagen", + "7f91451dfcb0045a4684fa68b35d0365": "Neuer Phpmyadmin -Port", + "bb1ca97ec761fc37101737ba0aa2e7c5": "FEHLER", + "14c525aba20f0a52255a799f51ced885": "Warnliste existiert nicht!", + "586a19c1eeaf6fe9d57f1d894fc487fc": "Protokolldatei existiert nicht!", + "190045c03f9a72a1900c60d63e1e2b8b": "Die Kontobindung ist abgelaufen, bitte wieder auf der Seite [Einstellungen]!", + "907fddd6007347a0daffc4a64156f0de": "Ignorieren Sie den Erfolg, diese Version wird nicht mehr an das Update erinnert.", + "131c05252110792212e3e3666a351154": "SSL-bezogene Konfiguration, löschen oder ändern Sie die nächste Zeile der kommentierten 404-Regeln nicht oder ändern Sie nicht oder ändern Sie nicht oder ändern Sie nicht oder ändern Sie nicht oder ändern Sie nicht", + "4ba7e24ac1607ab761c124ca7352ad08": "Fehlerseitenkonfiguration, kommentiert, gelöscht oder geändert werden", + "31bb30ca4135945adbe0c2daa9545b39": "PHP -Referenzkonfiguration, kommentiert, gelöscht oder geändert werden", + "f9da3e5ae75ce0ae39884ae2ea295a66": "Referenz für URL -Umschreibregel. Jede Änderung wird die vom Panel festgelegten Umschreiben von Umschreibungen ungültig machen", + "73e1f7d487ad73d55414fe26ea11cbf0": "Nicht angeben Parameter [Sitepath]", + "6aabca3a3e1c79bd5837a1ddae95fe70": "Es wurde ein Fehler erstellt, bitte versuchen Sie es erneut.", + "256c9a85375f57f2dc9f6f318c6578f1": "Erstellen Sie die Website [{}] erfolgreich", + "481df7dbcd4c0317088bde8c913d5893": "Bitte füllen Sie den Website -Pfad aus", + "b1b2484c013c646d7f41d6b2f495b6ef": "Der Website -Pfad kann nicht das Root -Verzeichnis sein [/]", + "1c3bff99564f1370a5b1bf6c0773f8c4": "Bitte überprüfen Sie, ob das [E -Mail] -Format korrekt ist", + "af9091566e669f016edf16ba97464cbe": "Passwort sehr schwach, wenn Sie es sicher verwenden, ticken Sie bitte an. [Ermöglichen Sie schwache Passwörter]", + "b0dbad478d4f07c38aec8f440ed98b66": "Bitte installieren Sie zuerst MySQL und PHP!", + "46491fef7553177ef58a55b2db917072": "Bitte setzen Sie das Root -Verzeichnis der Website nicht auf das System Main Directory:
{}", + "59d5fef323e89ded50ed6036848a97f3": "Das Format des Webname -Parameters ist falsch. Es sollte eine parserbare JSON -Zeichenfolge sein", + "078a3d3e263be2851ddfd9fa059d098f": "Port Range ist falsch!sollte zwischen 100-65535 sein", + "50370024fdd22dc69099a46d011b20e2": "PHP -Version kann nicht leer sein", + "44bd68c6703adf65ff21c63e9a876aa1": "Das Format der Primärdomäne ist falsch", + "23eded6de9c06451f67ecb7ed3a8c95b": "Primärdomäne kann kein Wildcard -DNS -Rekord sein", + "f54249d2613e48be05837ec9cd615a5f": "Die Seite, die Sie bereits hinzufügen versucht haben, existiert bereits!", + "b537e2d1946d559d3de4fb3c045d290f": "Die Domain, die Sie bereits hinzufügen versucht haben, existiert bereits!", + "f91c641aef33cf8ef4a29bc5d3a7193a": "Nicht hinzuzufügen, Schreiben Sie Konfigurationsfehler!", + "c3c7869d22051eaa78a831834a398351": "Es wurde ein Fehler gelöscht, bitte versuchen Sie es erneut.", + "e2d272e229674e4c6765fab24a323604": "Website [{}] erfolgreich löschen", + "aa5f20e061736fe68a915163e7e6d122": "Die angegebene Site gibt es nicht", + "f11e72daff0ce484f4c401bd0bd28ae5": "Erfolgreich gelöschte Site!", + "c57d58c6bbd34144325871d75b42a577": "Bitte geben Sie den Namen der Host -Domain ein", + "5c7b7c2f6ed78eefdd77aaa3dddde61a": "Domain kann nicht leer sein!", + "ef446d50df1605a582f9b44b57327536": "Das Domainnamenformat ist falsch!", + "68ae44808f90043dee02358ee768bf6e": "Das Format der Domäne ist ungültig!", + "1628c2a26ab6d1211b435f85782f8acc": "Der angegebene Domänenname wurde an die Website [{}] gebunden.", + "925dc658ddf0f69509632848bcd39577": "Der angegebene Domänenname wurde an ein Unterverzeichnis der Website [{}] gebunden!", + "7b02cf82181f516626a36b86c6a686f5": "Erfolgreich hinzugefügte Seite!", + "9b3c4205f2f408790c9c1c5da53c3bfb": "Die PHP -Version versäumt es nicht!", + "abc3db87d5608cc9559556468a696a35": "Bitte wählen Sie einen Domain -Namen", + "7807e17f2bf49fb802bba1a04822ea16": "Bitte wählen Sie einen Port", + "e5925c3a126a66c0565df6d8ef49550e": "Die letzte Domain kann nicht gelöscht werden!", + "17088ffed1e537b917a6ecc9dc957159": "Privater Schlüsselfehler, bitte überprüfen Sie!", + "26924bd958e212f07c31b6ffca9cbf8c": "Zertifikatfehler, bitte überprüfen!", + "44e2c1c3cfd8d248d7c9190a8f07c0ee": "Fehler beim Erhalten von Zertifikat", + "fc0d039d9dcf3905ae8032c9cb33f475": "Fehler:
{}", + "ddc2be35a5ed0bf09a88139c4ad10b4a": "Gleich wie der ursprüngliche Pfad, keine Notwendigkeit zu ändern!", + "84a8921b25f505d0d2077aeb5db4bc16": "Statisch", + "ad74aa2854e988c3157f92e0120bb19e": "Apache2.2 unterstützt MultipHp nicht!, {}", + "4018ce634a10d352867f04962f107c14": "Es gab eine Fehlereinstellung, bitte versuchen Sie es erneut.", + "f1bef4fd5183ae83a5896c32a3d5e81d": "Benutzerdefinierte PHP -Konfiguration unterstützt nur Nginx", + "879e0d022ff268704f93a7e2b504c224": "Die PHP -Verbindungskonfiguration kann beim Anpassen der Version nicht leer sein!", + "73d6e709b568b43405052cec999798c5": "Das PHP -Verbindungskonfigurationsformat ist falsch. Siehe Beispiel!", + "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "Der angegebene UNIX -Socket [{}] existiert nicht!", + "751ac8fd72a0acd79772370efcae9c89": "Überprüfen Sie bitte, ob der Computer eine Verbindung zum Zielserver herstellen kann", + "3cb7d414f8ae92b2b29057f91346f7dc": "Setup fehlgeschlagen, wurden in der Website-Konfigurationsdatei keine Enable-Php-XX-Konfigurationselemente gefunden!", + "c7a6a892c6cdfc9b0fedefb0a1d2083a": "Angefordertes Verzeichnis existiert nicht", + "4622561ceaaecb6ef7dd51e65c9f4ec5": "Basisverzeichnis ausgeschaltet!", + "e4ec1f40794bdf92e7261e6e0c51895a": "Basisverzeichnis eingeschaltet!", + "eeddf79f68ffe029ed83fddcba46b35f": "Alter Stellvertreter", + "1592678472ea1b601fd74abff47c56b1": "Kann keine Ziel -URL bekommen", + "18edd294853d381dbe0d612ab58bc123": "In der Konfigurationsdatei wurde ein Fehler festgestellt.Bitte lösen Sie es, bevor Sie fortfahren", + "8b5899be4df3aedb03c6fbad9055ed1c": "Der Datenbankname kann nicht mehr als 40 Zeichen sein!", + "111376d92c49c1a6c1522a2ef1dac23c": "Der angegebene Reverse -Proxy -Name oder den Proxy -Ordner gibt es bereits", + "09a988aa2e3185fce9fa8f4e8710b862": "Kann nicht sowohl Verzeichnis als auch globale Proxys festlegen", + "012a8e497feddccb8e4a47aa5e2dc156": "Bitte geben Sie die Nummer ein", + "90da7d2de9aa12ec32ee04172ca0d2d3": "Fehler mit dem Domänenformat: Fehler:", + "440544138d3ed8a2229792c88bad3bd8": "Die Ziel -URL kann nicht zugegriffen werden", + "faf2457853593b3296699c4adacc7825": "Bitte geben Sie den zu ersetzenden Inhalt ein", + "748e5ad33460a17cf26c8024bb0a1620": "Der zu ersetzende Inhalt kann nicht mit dem zu ersetzenden Inhalt übereinstimmen", + "195d5db9e1559f06348715bc3a822036": "In der Datei Rewrite/Nginx Master -Konfiguration/Vhost gibt", + "cc38d47ec9ac62ffc67a5db9c08d5d52": "Ziel -URL kann nicht leer sein", + "fb79afbbe0688565b7894b644dfd798d": "Die Ziel -URL kann nicht [http: // oder https: //] sein, bitte füllen Sie die vollständige URL aus, wie z. B. https://aapanel.com", + "29c9da826ae868c8c6444328f48bcf40": "Reverse Proxies sind derzeit für WordPress-Sites, die eine Ein-Klick-Bereitstellung verwenden, nicht verfügbar", + "a59dfc3ae22fd96d46011503a4f40744": "Proxy suspendiert", + "078bb5f960587121c7cd606ddba5ad58": "Bitte aktivieren Sie den Reverse -Proxy vor der Bearbeitung!", + "fe7185cec796e18d58f8e84dc4da946f": "Derzeit unterstützen Sie nur Nginx", + "222a267cc5778206b253be35ee3ddab5": "Aktuell", + "38441d4a89765279852ca2830aa89c83": "Neue URL -Umschreiben -Regel wurde gespeichert!", + "b9c1dcb37c44dca19765636de065b1c1": "Backup war erfolgreich!", + "c27a45bf16475a157ca1014cf886bb56": "Bitte geben Sie eine Notiz ein", + "9a962a24e9b7b07800d6b7c7efd86f30": "Benutzername oder Passwort kann nicht weniger als 3 Ziffern sein!", + "7eb904262649f9b2e4ba52e2bba9db71": "Das Passwortformat ist falsch. Verwenden Sie bitte keine speziellen Symbole für die ersten beiden Ziffern!", + "492c7f01035f1cf9b88756f897f02b87": "Fehler, Primärdomäne kann keine IP -Adresse sein!", + "0a2b8c4a98495f6af19be9c1c342844e": "Nachfolger, bitte testen Sie das JSP -Programm!", + "49281f9c7680652b1d110625da5c8cca": "Tomcat -Mapping geschlossen!", + "ec3b07b78fd4f3307c84858957ddbd0f": "Holen Sie sich Site -Run -Pfad falsch", + "02e602e968050352febfc4ddcae332f0": "OpenLiteSespeed unterstützt nicht die Einstellung der Standard -Site", + "362538d60f495840284c667e67831b16": "Scan -Verzeichnis", + "4f137439eb93e6c752873c8af2d3d1cb": "Die Scan -Aufgabe hat in der Warteschlange!", + "613a6375944c3035efe735e87766fbbd": "Update erfolgreich!", + "6177805463a6a4f28e61bb3435bee13b": "Erfolgreich eingestellt, bleibt die Website automatisch angehalten, wenn es abläuft!", + "1a69486f70b6baf749e6e1c4d5fcf689": "URL -Suffix kann nicht leer sein!", + "2f858201b6da6a5419c5af8fd26f815c": "Der Domain-Domain-Name der Diebstahlkette kann nicht leer sein!", + "f36c15e89d61e07fb44095ae920b8fbc": "Bitte schalten Sie zuerst den Hotlink ein!", + "70dc560b6f4af6d210c9eeb8434c571c": "Antwortressourcen sollten URI -Pfad- oder HTTP -Statuscode verwenden, z. B.: /test.png oder 404", + "aa8722f512ecebf5dae454e526402508": "Bitte schalten Sie zuerst Anti-Diebstahl ein!", + "bd0d7585c64988d80747a32fb0e3e15e": "Protokoll ist leer", + "a17f5bc22553d897f6363867c0165256": "Standardkategorie", + "0d0d87a34e787b2f4a59d912d4d441e4": "Der Kategorienname kann nicht leer sein", + "6818a5095a78431eb3c99fe022b687b0": "Der Kategorienname darf 16 Buchstaben nicht überschreiten", + "c4f16bb3d87b92062f73954c86485f64": "Fügen Sie bis zu 10 Kategorien hinzu!", + "5fd53f59be2a3dee94df28886840b9a3": "Der angegebene Kategoriename ist bereits vorhanden!", + "1c44b4096bb88e459ddadef895bea1c2": "Die angegebene Kategorie gibt es nicht!", + "8f52253b1f007fd14ed0f60b89593d2d": "Kategorie gelöscht!", + "b51515085fc6ea6a07192c61e068c124": "Erfolgreich geändert", + "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "Diese Funktion unterstützt nur Nginx/Apache", + "6678fd91bc04eb1e34e3474809387e7a": "Abfrage fehlgeschlagen, gibt keine Adresse", + "7ac0a27b48f2931c7f294b996fe6b273": "Fehlerspitzenkonfigurationsdatei", + "ee3a15a26aee235ac255e37342b444bb": "Erfolgreich einrichten", + "79799f8c2f024685df774550ea5b427d": "Website [Proxy, Redirect, HTTP bis HTTPS] werden nicht so eingestellt, dass sie automatisch neu gestartet werden", + "29faf053a22c387532298233399e66f9": "Konfigurationsdatei -Parsenfehler", + "6c881e76c76b1f102bcb97a8b4f682f6": "Diese Website hat [Proxy, Redirect, HTTP an https] automatisch Neustart eingeschaltet", + "13fc1b8a101214be1a472db8de1bd8fd": "Die Website hat den automatischen Neustart ausgeschaltet", + "1fb58c8e2967a648359d13aa22d9e493": "Die Seite existiert nicht!", + "b0cd0c2bc5c6ce9f71127d60872209ce": "Website [{}] Umbenannt: [{}]", + "946fb31f804cdde218dbf05d7183e94e": "MD5 Konsequent!", + "d83dadd8fcee6c014db8af454bc279fc": "Erfolgreich herunterladen", + "1336bbfcadd9119f86ecd48c2d9fb770": "Die Datenbankverbindung ist abnormal.Bitte prüfen Sie, ob die Parameter der Root User Authority oder der Datenbankkonfiguration korrekt sind.", + "ee102508d210854b6fc7da18e598140b": "Erzeugte Passwort -Nachweis fehlgeschlagen!", + "6e72fc97e2f1be35ae40ca21d6b1df38": "Die Datenbank dieser WordPress wurde nicht gefunden, dies kann durch die Tatsache verursacht werden, dass Sie die Datenbank manuell gelöscht haben", + "6df8e9d3a4e149ff12445d981f6fc244": "Passwort zurücksetzen erfolgreich", + "f748d4e467e9f4f27540b6f5ce5b1ef8": "Diese Funktion unterstützt derzeit nur Nginx", + "9747bb4f34180afd2f9a681397b269fb": "Erfolgreich aufgeräumt!", + "015d337f0646fe4b8a89b30041436e7f": "Erfolgreich aktualisiert!", + "321b336d92b3e894060637528499dcf9": "Der Einsatz war erfolgreich!", + "1850193ca4b37a25ee94db903eddc16f": "Einsatz fehlgeschlagen!", + "b390405514d6291f511c9f3a4fb31249": "Site -ID muss numerisch sein", + "e650b17a0b833e3bcdd8e859b37ce94e": "Diese Datenbank wurde nicht gefunden!", + "a0adaeeb3642584bd931c757b6f71d78": "Die PHP -FPM -Optimierung war erfolgreich", + "f11ab236591dc778c39c9429e141dba2": "Die MySQL -Optimierung war erfolgreich", + "d145648d4281cb3266714c5986bcab8b": "Nginx FastCGi Cache -Konfiguration gibt es bereits", + "9c373c2796e866dc590f9dc7c80609da": "Nginx FastCGI -Konfigurationsfehler!", + "2750e686fcc97deec0122789a059edbd": "Nginx fastcgi cache -Konfiguration vollständig", + "615681ddc1b0efb9f6d434adc1451bb7": "Nginx init fastCGi -Cache -Konfiguration besteht bereits", + "a61c53dff88925e428f2a295b18ac807": "Nginx init fastCGI -Konfigurationsfehler!", + "28b386f7ab5957184b60f47c0e540d68": "Nginx init fastCGi -Cache -Konfiguration vollständig", + "b7082bd55a134bb3a142570572e1c469": "Die FASTCGI -Konfiguration gibt es in der Website -Konfiguration nicht", + "c0ff8a4b4b8f68c4ba7df88588291590": "Die FastCGI -Konfiguration ist bereits in der Website -Konfiguration vorhanden", + "e3a6621c5ea036c8f82d3f2d343f1bc8": "Website FASTCGI -Konfigurationsfehler!", + "4c87778ab71a4e47170ccafd6edb4922": "Website FASTCGI -Konfiguration vollständig", + "e3fa50f6413dbb7bfe7cb26e1acd3d98": "Bitte melden Sie sich zuerst mit dem Konto an", + "121303c67f81a8ebda41de51c8afaf27": "Bitte melden Sie sich zuerst in Ihrem Aapanel -Konto auf dem Panel an!", + "d5670370d84473122d8e4d5a3b27b4bf": "Parameterfehler: Num", + "6b1c16b7a785029c0a11de3ab31cb125": "Erfolg des Flush -Status", + "e06c1ddc33f674068e3ca201094145d1": "Erfolgreich aktivieren", + "819b23804f66eddddfba39e7bdc53e68": "Aktivieren fehlgeschlagen", + "4f57c5dce8b638737a368af15409439f": "Aktivieren fehlgeschlagen", + "fe94df1697f309269e00428cae6bd141": "Erneuerung scheiterte", + "b2ac1158b825f44cb363648fa3ad60cb": "Erfolgreich erneuern", + "78d29c0fadebf704e471a63afd430250": "Anwenden fehlgeschlagen", + "3649e869737aa87f263194ce7f88f19e": "Erfolgreich bewerben", + "34c4dc380e690d2ff6ebb6aaed103401": "Product_id Parameterfehler!", + "28731318aa493586f88894355a79cb48": "Es wurde keine Verbindung zum Server hergestellt!", + "0161305479129bbe47bb020605a15d40": "Setup erfolgreich!", + "5c9b599b99f7a169b9cd25f7045eaac5": "Synchronisierungserfolg!", + "b6601359f1ae1067d4c4d271b7407639": "同步 成功 1!", + "10a1984f6c5b935c5d8c7d4b4345e1e5": "同步 成功!", + "86da84e8e3aacf73ee745caee5904268": "同步 失败!", + "8ed30fe61ac59c9e1cb4a75d9a48d477": "Erfolgreich erstellt!", + "330e51da1228a070540f82eb8e78155c": "Erfolgreich einrichten!", + "7ac73ef676faaa8a5f8e3924b4d151e3": "Benutzername oder Passwort kann nicht weniger als 3 Zeichen betragen", + "88d8a4565feba5ad270c00e85564b96d": "OpenLiteSespeed wird derzeit nicht unterstützt", + "c1f8cf125da0d6db1c4e0d09033c9ddd": "Bitte geben Sie ein Konto oder Passwort ein", + "bd7fb7b4280616cbe5de49eb1ee8cc3a": "Bitte geben Sie das zu geschützte Verzeichnis ein", + "8c48114518721e3966cd4553a0cee705": "Bitte geben Sie den Namen ein", + "dd65d82f6868cfa127f86e5658674829": "Der Schutzkennwortschutz wurde festgelegt, bitte stornieren und dann festgelegt.Site -Verzeichnis -> Passwortzugriff", + "1cc6b0e84b90d0ca0b863fccc0f33b36": "Verzeichnis wurde geschützt", + "b7526fc6f8b21e71ea1e290a982df4c9": "Erfolgreich erstellt", + "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2 unterstützt MultipHp nicht!", + "69be778c38b9edc0ab3040c478c39370": "Fehler: %s
1.Überprüfen Sie, ob der Domänenname an die entsprechende Stelle gebunden ist.

2.Überprüfen Sie, ob der Domänenname korrekt auf den Server gelöst wird, oder die Auflösung ist nicht vollständig effektiv.

3.Wenn Ihre Website über einen Reverse -Proxy verfügt oder wenn Sie ein CDN verwenden, schalten Sie ihn zuerst aus.

4.Wenn Ihre Website über eine 301 -Umleitung verfügt, schalten Sie sie bitte zuerst aus

5 aus.Wenn die obigen Schecks bestätigen, dass es kein Problem gibt, versuchen Sie bitte, den DNS -Dienstanbieter zu ändern.

", + "4d6822ed3bd01f379f2ab4b1e68068d7": "|-Es gibt derzeit keine Zertifikate zur Erneuerung.", + "b74c00ca5fee122c49cd66ce3d91b2cf": "| -Renewal fehlgeschlagen:", + "0b1c93d38c86c8d379886293cdf8ba66": "Aufgabe abgesagt!", + "d5ef96e383d376beeec28da7acfea516": "Datei herunterladen", + "f24f6c5f5841340f898a6baaa6478bcd": "Datei herunterladen {}", + "9fdd777388a418cef77bce46c1b2511a": "Das angegebene Komprimierungsformat wird nicht unterstützt!", + "4fa407ee74026903dc3013d0b2471eac": "Komprimierung gelang es!", + "ece43dcaac9352f58c422e500266a927": "Unkompressionen gelang es!", + "ac4eb62573e34c36ff426c8a6360c781": "Sicherungsfehler!", + "438ca4ffcf6fbd44ec129e73a24f0deb": "Wählen Sie SQL/GZ/ZIP -Datei!", + "0edfb4a54d6cf45209a6c7929b8b9919": "Erfolgreich importierte Datenbank!", "f6039d44b29456b20f8f373155ae4973": "Benutzername", "3544848f820b9d94a3f3871a382cf138": "Neues Passwort", "6b1bc4e672d58d46d23502dcd78129be": "Löschen von Protokollinformationen", @@ -710,161 +855,18 @@ "5093d954f09d473d091355fe292920a8": "| -Geranzgrenze storniert", "e0b1cb1725c8fb29d42fa69d679a73ea": "| -Domain limit storniert", "968c7b9246b5ab3d3e7659cea211a20b": "| -IP-Zugriffsbegrenzung Storniert", - "b7ad022c6ce9435c43c6760c8ba89b20": "Ca kann", - "5d39c57e28ab85457e4949306be619e8": "Die CA -Serververbindung, die zeitlich abgestimmt ist, versuchen Sie es später erneut.", - "721eb0b3ea85b39c22f16d6dfc84bc32": "Der Domain -Name gehört nicht zu diesem DNS -Dienstanbieter.Bitte stellen Sie sicher, dass der Domain -Name korrekt ausgefüllt ist.", - "b5366a9c53b455fdf8a552c205ca9021": "Die DNS -Serververbindung ist fehlgeschlagen.Bitte überprüfen Sie, ob der Schlüssel korrekt ist.", - "4de3dc0403846edfe5ff520837e2bbe5": "Die Unterzeichnung ist fehlgeschlagen, der genaue Domänenname genaue Domänensatze: (.+): {} Überschritt die wöchentliche Anzahl der wiederholten Ausstellungen!", - "30c0b6ae1acf6137b588473814f3330d": "Die Unterzeichnung ist fehlgeschlagen, die aktuelle Server -IP hat alle 3 Stunden die Grenze für das Erstellen von bis zu 10 Konten erreicht.", - "797e2e43e3fc3737891adc8ab4a1655c": "Die Überprüfung schlug fehl, der Domain -Name wurde nicht gelöst, oder die Auflösung trat nicht in Kraft.!", - "9efd01f346301888216d77d35ec156cf": "Die Authentifizierung fehlgeschlagen, Domänenname -Auflösungsfehler oder Überprüfungs -URL konnte nicht zugegriffen werden!", - "6c23a7d25119c77017d1aa04761fefe8": "Versuchen Sie es nicht, sich mit dem CA -Server zu verbinden, bitte versuchen Sie es später erneut.", - "b7a370078ae6520cde883252890195cf": "Nicht unterstützter Domänenname {}, bitte prüfen Sie, ob der Domänenname korrekt ist!", - "1593706a4e3794c75129c8347021f0c5": "Der Domänenname {} fand keinen Auflösungsdatensatz.Bitte überprüfen Sie, ob der Domain -Name behoben ist.!", - "1d80008b0cc4936ab73047baf061c84e": "Wenn ein gültiger TXT -Auflösungsdatensatz im Domänennamen {} nicht gefunden wird, überprüfen Sie bitte, ob der TXT -Datensatz korrekt analysiert ist.Wenn es von DNSAPI angewendet wird, versuchen Sie es bitte erneut in 10 Minuten.!", - "81dab277ae106f35a118916e25f3f026": "Fand den falschen TXT -Datensatz auf {}: {}, prüfen Sie, ob die TXT -Auflösung korrekt ist.Wenn es von DNSAPI angewendet wird, versuchen Sie es bitte erneut in 10 Minuten.!", - "b1bc7e763e87ef08d753a0676a0d5361": "Dieser Domain -Name existiert unter diesem DNSPOD -Konto nicht.Hinzufügen von Parsen fehlgeschlagen.!", - "43901eff07fff70732a4e1d6a732920b": "CA -Server konnte nicht auf Ihre Website zugreifen!", - "7cb06b776259c13fa73d3be5577df74c": "Der Domänenname {} muss derzeit den CAA -Datensatz überprüfen.Bitte lösen Sie den CAA -Datensatz manuell oder versuchen Sie es nach 1 Stunde erneut.!", - "09c36cbe592612c2546e60652f2d6964": "Überprüfende Zeitüberschreitung, prüfen Sie bitte, ob der Domain -Name korrekt behoben ist.Wenn DNS behoben ist", - "e10beec48a4a4b433b2fec2eaff64671": "Mehr als 5 Überprüfungsfehler in 1 Stunde, der Antrag ist vorübergehend verboten. Bitte versuchen Sie es später erneut!", - "239067c8e0586af7c09738e8240438fb": "Die Erneuerung ist fehlgeschlagen und das Zertifikatverzeichnis existiert nicht.", - "c7664672bf11463a4cc40c61aeca77f1": "Erneuerung fehlgeschlagen, vermisst Account_Key.", - "3f56bc50f098e641bb3d42e2d4255cbe": "Bereit, sich für SSL, Domänenname {} zu bewerben", - "bd6995f087c0dacaecd470ca10539a2b": "Die Liste der angewandten Domain -Namen kann nicht leer sein.", - "3b5e16d8f5e1b88c78e494e6601a4d01": "Werden Sie erfolgreich, bitte lösen Sie den Domain -Namen manuell manuell", - "cf6b24b05942cd0c3723d7a4c25e6138": "| -Sparende Zertifikat ..", - "bbb21c1842b512148f687ea068553c85": "| -Settieren automatische Neulinge Konfiguration ..", - "c06d0b48f82d74d3c2854dabdba12d93": "|-Die Anwendung ist erfolgreich und wird automatisch auf der Website bereitgestellt!", - "569488d54cbcce1331896e4254f63a92": "Anwendung erfolgreich.", - "1851141907c561e6ac67cba17e549232": "| -Initialisieren ACME-Protokoll ...", - "78e67927014eab1b84eb285b6057fca6": "| -Registeres Konto ...", - "4896fdcb74c0e04522c8d3d89d08d569": "| -Getting-Verifizierungsinformationen ...", - "1016ed461618afd2dde9a4a709a4d080": "| -REITEN SIE DIE VERFACIKUNGSFAHREN an das Frontend, warten Sie, bis der Benutzer den Domänennamen manuell auflöst und die Überprüfung abschließt ...", - "81a3b1828b60659bc3d3c9711e66f0ba": "| -Users reicht die Überprüfungsanforderung ein ...", - "f147fc272d665cd009e1108c5fb6993d": "| -Ranierung CA, um den Domänennamen zu überprüfen [{}] ...", - "4c699430325d31db3d7b43b0a0999364": "| -Get CA-Verifizierungsergebnisse [{}] ...", - "2b7dd2a937ababf46efb11073787664c": "| -Alle Domainnamen werden verifiziert und CSR wird gesendet ...", - "1de253d3eb460e60480626694092d89e": "|-Getting-Zertifikatinhalt ...", - "a0c16d2f8e2aeba9dd9a3b040861ff39": "Die Zertifikatakquisition ist fehlgeschlagen, bitte versuchen Sie es später erneut.", - "89edc2a5e6ccecc2bdbdd1f9536fb90a": "| -Error: {}, verließ den Bewerbungsprozess.", - "94417e0c15f634f59ce15128ef146686": "| -Error: {}, beenden Sie den Bewerbungsprozess.", - "03268bb5fa60cf57ac7c30f1f99dab01": "| -Eritierte den Bewerbungsprozess!", - "be2d0d9f1a9d04ff22b70bd5bee9b8ef": "Bei der Anforderung eines Zertifikats mit DNS trat ein Fehler auf", - "409bd1860bf065c68921473fc2266347": "| -Adding-Auflösungsdatensatz, Domänenname [{}], Datensatzwert [{}] ...", - "8b2ee088303a8001eaedb8c62e3de7e3": "| -Tempt, um das Auflösungsergebnis zu überprüfen, Domänenname [{}], record value [{}] ...", - "a11fba95c84fff590acd7dbdea4528e6": "| -Request CA, um den Domain-Namen zu überprüfen [{}] ...", - "676e1a4f8e4561ad55045461f3421d62": "| -Check CA-Verifizierungsergebnisse [{}] ...", - "d60d5b998a8ef802ba7f5b5ed343e256": "| -An Fehler aufgetreten, versuchen Sie es erneut [{}]", - "71087be1722815599ebecd0fd0f58b5e": "| -Fetching Zertifikatinhalt ...", - "6d1e7a222bfe888debd080a117490c9d": "| -Clearing Resolve History [{}]", - "77619ceb7742d8a8f87e52b02592d873": "Die Unterzeichnung scheiterte, wir konnten Ihren Domänennamen nicht überprüfen:

1.Überprüfen Sie, ob der Domänenname an die entsprechende Stelle gebunden ist.

2.Überprüfen Sie, ob der Domänenname korrekt auf den Server gelöst wird, oder die Auflösung ist nicht vollständig effektiv.

3.Wenn Ihre Website über einen Reverse -Proxy verfügt oder wenn Sie ein CDN verwenden, schalten Sie ihn zuerst aus.

4.Wenn Ihre Website über eine 301 -Umleitung verfügt, schalten Sie sie bitte zuerst aus

5 aus.Wenn die obigen Schecks bestätigen, dass es kein Problem gibt, versuchen Sie bitte, den DNS -Dienstanbieter zu ändern.

", - "4d6822ed3bd01f379f2ab4b1e68068d7": "|-Es gibt derzeit keine Zertifikate zur Erneuerung.", - "b74c00ca5fee122c49cd66ce3d91b2cf": "| -Renewal fehlgeschlagen:", - "140bda69874872f8402052c613c0b3b9": "Aapanel Alert Test -E -Mail", - "76a1ec4a3fcdc304394ff14dc90f8072": "Die Anzahl der Panel-Threads sollte zwischen 1-1024 liegen", - "dd7e82b5fb3c67e3e41d96f22ba838fd": "Neuer Panel -Port", - "40624aabb99173387dd6d575759b12db": "Der CertPEM -Parameter fehlt!", - "37db9679113eef382992a1478f1b79ff": "Der Privatkey -Parameter fehlt!", - "d2174fc17fcd785706114088b84dbbce": "Eine vorübergehende Anmeldemugel wurde erstellt", - "b5101eb6e685091719013d1a75756a53": "\\ 1", - "0bfe47819da04212a33dac83b71430e8": "\\ 2", - "946fb31f804cdde218dbf05d7183e94e": "MD5 Konsequent!", - "d83dadd8fcee6c014db8af454bc279fc": "Erfolgreich herunterladen", - "1336bbfcadd9119f86ecd48c2d9fb770": "Die Datenbankverbindung ist abnormal.Bitte prüfen Sie, ob die Parameter der Root User Authority oder der Datenbankkonfiguration korrekt sind.", - "ee102508d210854b6fc7da18e598140b": "Erzeugte Passwort -Nachweis fehlgeschlagen!", - "6e72fc97e2f1be35ae40ca21d6b1df38": "Die Datenbank dieser WordPress wurde nicht gefunden, dies kann durch die Tatsache verursacht werden, dass Sie die Datenbank manuell gelöscht haben", - "6df8e9d3a4e149ff12445d981f6fc244": "Passwort zurücksetzen erfolgreich", - "f748d4e467e9f4f27540b6f5ce5b1ef8": "Diese Funktion unterstützt derzeit nur Nginx", - "9747bb4f34180afd2f9a681397b269fb": "Erfolgreich aufgeräumt!", - "015d337f0646fe4b8a89b30041436e7f": "Erfolgreich aktualisiert!", - "321b336d92b3e894060637528499dcf9": "Der Einsatz war erfolgreich!", - "1850193ca4b37a25ee94db903eddc16f": "Einsatz fehlgeschlagen!", - "b390405514d6291f511c9f3a4fb31249": "Site -ID muss numerisch sein", - "e650b17a0b833e3bcdd8e859b37ce94e": "Diese Datenbank wurde nicht gefunden!", - "a0adaeeb3642584bd931c757b6f71d78": "Die PHP -FPM -Optimierung war erfolgreich", - "f11ab236591dc778c39c9429e141dba2": "Die MySQL -Optimierung war erfolgreich", - "d145648d4281cb3266714c5986bcab8b": "Nginx FastCGi Cache -Konfiguration gibt es bereits", - "9c373c2796e866dc590f9dc7c80609da": "Nginx FastCGI -Konfigurationsfehler!", - "2750e686fcc97deec0122789a059edbd": "Nginx fastcgi cache -Konfiguration vollständig", - "615681ddc1b0efb9f6d434adc1451bb7": "Nginx init fastCGi -Cache -Konfiguration besteht bereits", - "a61c53dff88925e428f2a295b18ac807": "Nginx init fastCGI -Konfigurationsfehler!", - "28b386f7ab5957184b60f47c0e540d68": "Nginx init fastCGi -Cache -Konfiguration vollständig", - "b7082bd55a134bb3a142570572e1c469": "Die FASTCGI -Konfiguration gibt es in der Website -Konfiguration nicht", - "c0ff8a4b4b8f68c4ba7df88588291590": "Die FastCGI -Konfiguration ist bereits in der Website -Konfiguration vorhanden", - "e3a6621c5ea036c8f82d3f2d343f1bc8": "Website FASTCGI -Konfigurationsfehler!", - "4c87778ab71a4e47170ccafd6edb4922": "Website FASTCGI -Konfiguration vollständig", - "90d0982f5d024da53b21f69d3f0c8cbb": "Datenbank existiert nicht!", - "b376175f0c97d2ab7c37e44ec3b3a1b9": "NONSUPPORT MYSQL5.1!", - "0161305479129bbe47bb020605a15d40": "Setup erfolgreich!", - "5c9b599b99f7a169b9cd25f7045eaac5": "Synchronisierungserfolg!", - "b6601359f1ae1067d4c4d271b7407639": "同步 成功 1!", - "10a1984f6c5b935c5d8c7d4b4345e1e5": "同步 成功!", - "86da84e8e3aacf73ee745caee5904268": "同步 失败!", - "8ed30fe61ac59c9e1cb4a75d9a48d477": "Erfolgreich erstellt!", - "330e51da1228a070540f82eb8e78155c": "Erfolgreich einrichten!", - "7ac73ef676faaa8a5f8e3924b4d151e3": "Benutzername oder Passwort kann nicht weniger als 3 Zeichen betragen", - "88d8a4565feba5ad270c00e85564b96d": "OpenLiteSespeed wird derzeit nicht unterstützt", - "c1f8cf125da0d6db1c4e0d09033c9ddd": "Bitte geben Sie ein Konto oder Passwort ein", - "bd7fb7b4280616cbe5de49eb1ee8cc3a": "Bitte geben Sie das zu geschützte Verzeichnis ein", - "8c48114518721e3966cd4553a0cee705": "Bitte geben Sie den Namen ein", - "dd65d82f6868cfa127f86e5658674829": "Der Schutzkennwortschutz wurde festgelegt, bitte stornieren und dann festgelegt.Site -Verzeichnis -> Passwortzugriff", - "1cc6b0e84b90d0ca0b863fccc0f33b36": "Verzeichnis wurde geschützt", - "b7526fc6f8b21e71ea1e290a982df4c9": "Erfolgreich erstellt", - "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2 unterstützt MultipHp nicht!", - "69be778c38b9edc0ab3040c478c39370": "Fehler: %s
2. Es wird empfohlen, die offizielle und zuverlässige Infrastruktur zu wählen, um unnötige Verluste zu vermeiden.", - "475dfbee8626a4d939cf631aad174de3": "Scannen: {}", - "71c7dfa944a5a50f281c0acb232dcdeb": "Scannen: {} ...", - "0c29ac6d8e69451c80f8ef857e499ab2": "Sensitive Verzeichnisse gefunden {}", - "53872e73575a306598c0c4060b44181c": "Das Bild existiert in einem sensiblen Verzeichnis: {} kann von Angreifern verwendet werden, um sensible Daten oder Quellcode zu stehlen, was zu weiteren Sicherheitsproblemen führt.", - "6fe56120a0502f9678988d756dd27682": "1. Geben Sie den Container ein, der mit dem Bild bereitgestellt wird, und löschen Sie das Verzeichnis, ohne das Geschäft zu beeinflussen.", - "6b2f9867ccd6f3e6f06726c06ed684d5": "Sensitive Dateien gefunden {}", - "6684913201a60be0b5e89c4dfb210719": "Bashrc Backdoor {} gefunden", - "9a9f27d5f9f8c056fff7986c87a94c30": "Es wurde festgestellt, dass das Bild Bashrc Backdoor hat: [{}], böswilliger Codeinhalt:
{}", - "d8a828116070b9d92315ca309cca1991": "1. Geben Sie den Container ein, der mit dem Bild bereitgestellt wird, und löschen Sie den böswilligen Code unter der Datei
2.Überprüfen Sie, ob der Container eingedrungen ist, und aktualisieren Sie das Zugriffs -Token oder das Kontokennwort des Geschäfts im Container
3.Es wird empfohlen, das offizielle Bild oder andere vertrauenswürdige Image -Bereitstellungsbehälter zu ersetzen", - "e1439f3f7d25d378078d513a82a3fa87": "Backdoor -Datei gefunden {}", - "9ede9d4bd542eedf78e39b0acf0206e3": "Es wurde festgestellt, dass die bashrc Backdoor -Datei [{}] im Bild vorhanden ist und der böswillige Codeinhalt:
{} lautet", - "686765b4612ecd8f774648db29a1541d": "Cron Backdoor entdeckt {}", - "390bdc0b3c37a56ede9467b0c220a3b6": "Es wurde festgestellt, dass der Cron Backdoor [{}] im Bild vorhanden ist und der böswillige Codeinhalt:
{} lautet", - "caea084281a3cb2515e5618cd3856163": "Fund System Backdoor: {}", - "d04061273caa56d5a0c3d74f3e9fd482": "Es wurde festgestellt, dass die Systemd Backdoor -Datei [{}] im Bild vorhanden ist und der böswillige Codeinhalt:
{} lautet", - "fc76e0fe415c49cc1c09bf76035fc4e9": "Gefunden SSHD Backdoor {}", - "00b2409f52ef5bc56afe29ccbe5cfa2c": "Fand die SSHD Soft Link Backdoor: {}, die Datei trifft die böswillige Funktion [exe = {}; link_file = {}]", - "e747da31a54cd71fb1a2860cae0f9f77": "Fand die TCPWrapper Backdoor {}", - "a2b09164c8d23894736bcc6a646861e0": "Es wurde festgestellt, dass die TCPWrapper Backdoor -Datei [{}] im Bild vorhanden ist und der böswillige Codeinhalt:
{} lautet", - "a7fd9f6b190b8531039376fbbda5f482": "Benutzer waren gefährdet {}", - "5d46ed5f4af3f30cfcc8bd66942f93b4": "Der Benutzername {} kann den Container -Flucht durch den Befehl [{}] vervollständigen, sodass der Angreifer Zugriffsrechte für den Host oder andere Container erhalten können.Bösartiger Inhalt:
{}", - "4ca0a18aa36a60613104cacdae514dec": "1. Es wird empfohlen, das Bild zu löschen oder es nicht mehr zu verwenden
2.Wenn bereits ein Unternehmen das Bild verwendet, geben Sie die Containerumgebung ein und löschen Sie den Inhalt des Benutzer {} in der Datei /etc /sudoers.", - "611afea08ae3b216a34dfde4c143f46c": "不 支持 的 系统 版本 版本", + "c0ef08aa7bd6276137ccd491a8041223": "Es gibt kein Volumen zu sichern", + "584e35dd4a55da88bd232ac7a19b9b95": "Die Sicherungsaufgabe wurde erfolgreich erstellt.", + "0b08674e1c87f3f8508a4ae9b0c160f8": "Ich habe keine Sicherungsaufgabe erstellt {}", + "2a0f93407bb61e2403ccd032cbc64e3e": "erfolgreich löschen", + "13d829d3f2b78c971207d944f2a96c55": "Die Datei nicht löschen, Grund: {}", "0af5787b053c4bf5dbe610731f7d4199": "Der Dateipfad kann keine chinesischen Zeichen enthalten!", "719ee030d81490fc055af0c4426aacb9": "Erkennung fehlgeschlagen: {}", "ee3936ffdc910e2cb8578ad1fae322f0": "Die Erkennung vergeht!", @@ -1990,136 +2037,64 @@ "428ed92bf9d3198f4c9885c11fdb2be3": "Diese Vorlagen erfolgreich: [{}]
Diese Vorlagen fehlen: Der Vorlagenname existiert bereits oder ist falsch formatiert [{}]", "70975749d256333f1b3b62c864ca265a": "Nicht ändern!", "2360e954ae9eecac28b2a3edad5e8ce0": "Erfolgreich ändern!", - "e8ad47bc3f119a4d4072f5cb114676f4": "Bildname kann nicht leer sein", - "e5e3829984a9637afc2546ad2c87d83b": "Spiegelpfad kann nicht leer sein", - "e5f40049c6d67bd11d9a1a1889f5b84a": "Bild -ID kann nicht leer sein", - "5e022f79dcc774c79bc55ee28774e2e7": "Der Bildname kann nicht enthalten /", - "c00be60f9f3f7d747aadfdb124e855ef": "Erfolgreich gespeichert auf: {}", - "cb1f8d99b492340cf701101c87884a8c": "Kann das Bild nicht exportieren!", - "afaa91d141ded3e37b8b9ebf8bc31c51": "Das Exportieren des Bildes ist fehlgeschlagen und die Verbindung zum Docker zeitlich abgestimmt.Bitte versuchen Sie den Docker neu und versuchen Sie es erneut!", - "5b980f2e1c82c04c91376d55d4306a91": "Image nicht exportieren!
{}", - "e5e8c7cac8b71e94280fa08301d21e78": "Bitte geben Sie den Bildpfad ein!", - "5441400ea3bd16cffdf70c46c34f61d4": "Das Bild nicht importieren.Die Dateierweiterung muss.tar sein!", - "67b97e4746a2faf5d59206a80bb28649": "Bildimport war erfolgreich! {}", - "deceb44868a29ae5d579114348736cbb": "Der Bildimport ist fehlgeschlagen und das temporäre Verzeichnis des Containers wurde nicht erstellt.Bitte prüfen Sie, ob die Schutzsoftware einen Abfangen -Datensatz hat!", - "8eb05618b0f04e727b0685427fd49c8e": "Importieren nicht importiert!
{}", - "721aa02577670c1049ea9d12caa8938c": "Bitte geben Sie den richtigen Dockerfile -Pfad ein!", - "736df9a7c491f3299efdeb9f7d7e9e0f": "Bild erfolgreich erstellen!", - "6e85568dae869303ca7a4486f55458a3": "Build fehlgeschlagen, Verbindung zeitlich festgelegt", - "5bb301b85cc1f42e56174d3d9a4c0286": "Build fehlgeschlagen!{}", - "f51455b323ec2db8004c812001043330": "Build fehlgeschlagen! Die angegebene Dockerfile wurde nicht gefunden", - "8e1b9c9b75950d0feba6813d32766e61": "Build fehlgeschlagen! {}", - "eba0ec758a6464a20c14c0f23ceee62e": "Spiegel erfolgreich gelöscht!", - "8dd326278d09a3ac4bc56cf725c8f262": "Das Löschen ist fehlgeschlagen und das Bild kann nicht existieren!", - "11ead921bc0e3d94f1f9e0db4bf8ed8d": "Die Bild -ID wird in mehr als einem Bild verwendet. Erzwingen Sie das Bild, das gelöscht werden soll!", - "43993616c7433350755d30a3b4d065dd": "Das Bild wird verwendet.Bitte löschen Sie den Container, bevor Sie das Bild löschen!", - "d6992c3fcf2269c249cd5f18f1ac2c11": "Image nicht löschen!
{}", - "0c6c071174fde5b47c9eef8088c17a89": "Das Bild nicht löschen, die Verbindung zum Docker -zeitlich festgelegt, bitte starten Sie sie neu und versuchen Sie es erneut!", - "a3ba80a8e1e0d9af94c809e909431b3c": "fehlgeschlagen, melden Sie sich bei Repository an [{}] fehlgeschlagen. Bitte versuchen Sie, sich erneut bei diesem Repository anzumelden! \\ r \\ n", - "cc40077b6ee61fbfa35713a21e8eb866": "BT_FAILED, melden Sie sich bei Repository [{}] fehl. Bitte versuchen Sie, sich erneut bei diesem Repository anzumelden!{}", - "60b488c60b6747bf34a86a69740b636d": "Das Push -Bild kann [/] nicht enthalten. Verwenden Sie bitte das folgende Format: Bild: v1 (Bildname: Version).", - "44dbec830b87eb037e8fcbb0e1b56160": "Es kann nicht in der Lage sein, das öffentliche Repository von Docker zu machen!", - "b4c46001066c912344e3bdb0df86e848": "Repository [{}] Anmeldung fehlgeschlagen!", - "0ebfb094c6482acb049e0dd0d3107307": "Push Failed, Image Label -Fehler, bitte geben Sie ein, z. B. V1.0.1", - "d26bdd6e86002ed92089dc71347822ce": "Push fehlgeschlagen, habe keine Erlaubnis, in dieses Repository zu pushen!", - "82058092ad7d2c7aa5e2f012b6544e59": "Push -Fehler! {}", - "2b228d4775d23d2725ec227ba648bd43": "Erfolgreich drücken, Mirror: {}", - "9e396f640866ded9c3a47268f96a36e3": "Ziehen Sie das Bild, bitte warten Sie ... \\ r \\ n", - "7e5f4d488d318dc7c235095c8456f5e4": "Ziehen oder nach Bildern suchen ... \\ r \\ n", - "5a7377f73fc144fd961e8b2ffeba66af": "Pull fehlgeschlagen! \\ r \\ n", - "97a6dfe3a273202edffe31af7a43e220": "Verwenden Sie die Standardspiegelstation nicht, um das Bild zu ziehen!Versuchen Sie, eine andere Spiegelstation zu verwenden, um für Sie zu ziehen, bitte warten Sie ... \\ r \\ n", - "484616540fc726ef4f52e97a1c2f0fef": "Das Bild nicht ziehen! \\ R \\ n", - "1cd77329b2bddfb200e656214b1fdf32": "Das Bild nicht ziehen!", - "63c709b9759af42fef890d539d822575": "Pull fehlgeschlagen! {} \\ R \\ n", - "b4aba972332d1f3728171905a033fb99": "Bild Pull [{}] erfolgreich \\ r \\ n", - "2fae21ffd185d9e9730b39bc7de23852": "Bild erfolgreich gezogen!", - "8a635442294fd90195a43d9a1672fc3f": "Das Bild nicht ziehen!", - "711de72d616e7abb29dfa919244d382d": "Pull ist fehlgeschlagen, das Bild existiert nicht oder das Bild kann ein privates Bild sein.Sie müssen Ihr DockerHub -Konto Passwort eingeben! \\ R \\ n", - "e9511e26273da5b4537b4683668b548e": "Pull fehlgeschlagen! {} \\ r \\ n", - "05d13bf5dcc37754db74b2356e6e117c": "Pull fehlgeschlagen, es gibt kein solches Bild im Repository! \\ r \\ n", - "714841af7f3de6c8d99ba03f4cee0ee5": "Pull fehlgeschlagen, das Bildformat ist falsch, wie z. B. nginx: v 1! \\ r \\ n", - "2d941c4fa4da32ccafa8670a07f23c1d": "Das Bild wurde erfolgreich gezogen.", - "5282194697748d9fcd1ccd8a90428424": "Es kann nicht dieses Spiegelbild geben.", - "d6facab17334983e7c6f8c561c239820": "Das Bild hat nicht gezogen. Dies ist ein privates Bild. Bitte geben Sie das Kontokennwort ein!", - "b507deb7848d566982b339265c8f5482": "Pull -Bildversagen

Grund: {}", - "e90811ef0a60b6d299b4e1064d7788d0": "Keine nutzlosen Bilder!", - "f343313c101aeaff0516990ebea3dcef": "nicht löschen! {}", - "90ecd58b3feb0b2be11f0af685ad39fe": "Das Löschen von nutzlosen Bildern ist fehlgeschlagen und die Verbindung zum Docker -zeitlich abgestimmt.Bitte starten Sie den Docker -Service neu und versuchen Sie es erneut!", - "4097585e32152eb74bbee5ab8c463718": "Der Docker -Service läuft ungewöhnlich, bitte starten Sie sie neu und versuchen Sie es erneut!", - "26a0931677e111565f3ff7d059b94d8b": "Die Gateway -Einstellung ist falsch. Geben Sie bitte ein Gateway ein, das dem Subnetz entspricht: {}", - "def2ba1ce0e4d77692c14e5b984636fa": "Fehler mit Subnetzadressformat, bitte geben Sie ein, zum Beispiel: 172.16.0.0/16", - "716eeeb727fd667635ccf1d18891d46e": "Fehler beim IP -Bereich Format, geben Sie bitte den entsprechenden IP -Bereich für dieses Subnetz ein:", - "e310a873e7812c7f994d482604061fee": "IP Range [{}] existiert bereits!", - "db88b911ea66744c24b22efcafef2101": "Die Systemkernelversion ist zu niedrig. Aktualisieren Sie den Kernel oder wählen Sie einen anderen Netzwerkmodus aus", - "9cebb294a44695984eaaf2134df63a51": "Der aktuelle Knoten ist kein Schwarm und muss konfiguriert werden, bevor er verwendet werden kann", - "85ac438bd64f13e2ad61cf60e5ade3d3": "NETWEISE ADS NETWORK!{}", - "640520ffb5d9c01336710bad3ea6d7ff": "Das Netzwerk erfolgreich hinzugefügt!", - "87574a543563d2e037b87a6cf705e3ff": "Das System Standard -Netzwerk kann nicht gelöscht werden!", - "23b6d9d6c36088deb928efad7fb9b63b": "Das Netzwerk kann nicht gelöscht werden, während es verwendet wird!", - "2aa70dad9bff94a855fdde3fc113e6c5": "Löschen fehlgeschlagen!{}", - "8f512551c7ddf61331c3d068e80c642c": "Es gibt keine nutzlosen Netzwerke!", - "08efe6a4e12437b79225c8b59fd710eb": "Netzwerk -ID kann nicht leer sein", - "a636381ee5e6d6d021fff745ca132905": "Container -ID kann nicht leer sein", - "31a75a8d220d37dc4a7ea28d0f24cc19": "Netzwerkunterbrechung war erfolgreich!", - "a2b9895fca7698902da9319b52392366": "Container -ID: {}, existiert nicht!", - "c81f03a558307d5aaf3b339af28e04ff": "Netzwerk -ID: {}, existiert nicht!", - "12a90fe85b8863e1dea43284988d7750": "Netzwerkunterbrechung fehlgeschlagen!{}", - "6226d2fef3bf047236f0f3a57dcd71fb": "Netzwerkverbindung erfolgreich!", - "d882b8375782b1bc56ccaf84ed27d20b": "Es wurde keine Verbindung zum Netzwerk hergestellt!{}", - "221d1ea3c23f430e03a4486dca865014": "Der Container existiert nicht. Bitte aktualisieren Sie den Browser und versuchen Sie es erneut!", - "7e88e25ea6c628c2d03c526c04af3eed": "Der Containerstatus nicht erhalten:", - "ae178e022cf2fe30f402145572528de8": "Volumennamen können nicht weniger als 2 Zeichen lang sein!", + "7c6f761019365f8a5cfb2fb54d9e199d": "info.json wird heruntergeladen!", + "10066fce84fe34e9cc33e0338532988b": "Der info.json -Download ist fehlgeschlagen!", + "0672e579ab0e3454713eb683ddcc4859": "{} Download fehlgeschlagen, bitte resync!", + "8e790e81fffa7f51d099f710bd8f82cf": "{} YML -Dateitest fehlgeschlagen, {}", + "371acfea202589c4efd6724888f66595": "{} Download abgeschlossen!", + "51cf61e34b3f71ce1e430cdfcf129b80": "{} Dekompression fehlgeschlagen", + "c59b65890496cdf2b14d127a1f76f73d": "{} erfolgreich extrahiert", + "0117718c35c7a16a62de5c259e1d35ee": "Die Erstellung der Verzeichnisse ist aus den folgenden Gründen fehlgeschlagen: {}", + "374e3fe41b55a0b29420e455fb514dd6": "Das Speichervolumen wurde erstellt", + "6d0d40f64f89227daf345eb2257638e8": "{} kann keine Leerzeichen enthalten", + "a00b49ace55de909015029a0d6d6096f": "{} kann nicht null sein!", + "54498312bb8f97ce07a9a0b0b47cfad1": "Server Port [{}] ist besetzt. Bitte wechseln Sie zu einem anderen Port!", + "47b74e08252747225c49ea0cb011c79e": "Projektstart fehlgeschlagen {}", + "838089af9a2941a49862f342c056a8ca": "Beginnen Sie mit der Erstellung des Projekts", + "9b149598fb30f54fec9e82a3d121a464": "{} existiert bereits, bitte ändern Sie den Projektnamen", + "634370637f6a5b88940c75f826953d0c": "Benutzerprojektverzeichnis konnte nicht erstellt werden, Details: {}", + "f7b14d3f642d711a23d5a0cca725fd0d": "Das Projektverzeichnis nicht kopiert.Details: {}", + "7bdaccb3d20432c5e0150862ab1cc3f3": "Fehlende Parameter Name", + "9b90b5b49486a61d9b0e6dbbbcb56cad": "Fehlende Parameter container_info", + "b23d7110e9bf6539b4964afe0d4934e2": "Die Gruppierung existiert bereits", + "a90ca6939fe71693c145f50596c6e0e6": "Container {} wurde von Gruppe {} hinzugefügt!", + "e3cf7e2f2d14257e7ea33657b135d534": "Fügen Sie fehlgeschlagen: {}", + "fcbeb38a63ced9d3de476fb08c31d71e": "Fehlende Parameter -ID", + "fe4e0032f69b4100ed143d475e8b5050": "Erfolg bearbeiten", + "6c4ed52bea35c4c43839b8f0b44489f9": "Bearbeiten fehlgeschlagen: {}", + "6c0129a45e9da4e1820335f3d06a869f": "Löschen fehlgeschlagen: {}", + "2a743a86676fd52214d3c0af1b0238b5": "Statusparameterfehler", + "f95136e5c1f3ccbb09ace8fc24f1e0ca": "Container [{}] Operation ist fehlgeschlagen", + "2e01172e31495f41fcebcf3f831cc82c": "Operation erfolgreich", + "244a98f8c45f938980f48b168aef02c9": "Operation fehlgeschlagen: {}", + "fc431240dfc80a731900d5f2ddb6dfc3": "Container -Startreihenfolge {}", + "5ea6c6eea14c24c92eeeccaeea5c46dc": "Ungültiger Zustand!", + "0f3f874698792dc81c7c00b9e74fea34": "{} \\ r \\ n", + "aad4acc1243565c5c2ca41e5733e5fe0": "erfolgreich \\ r \\ n", + "d8f5a29760a4f000dd754819b1faadcc": "fehlgeschlagen \\ r \\ n", + "73977612ef83925db43df7745df9c5eb": "\\ r \\ nno Antwort für mehr als 10 Minuten! \\ r \\ n", + "6345c76d66a8a9e9cdd3f9d996ff062d": "Bitte geben Sie CMD weiter", + "bba401eadefa8222f3e60a312cc19f34": "Nur Docker Run oder Docker Pull -Befehle können ausgeführt werden", + "b5592904212696df3e5bcec990c8676a": "Der gefährliche Befehl existiert: [{}], Ausführung ist nicht erlaubt!", + "cfff471dc04b6ba4aeb2cc2844b2c94b": "Gefährliches Symbol existiert: [{}], Ausführung ist nicht erlaubt!", + "f1d9b154a0c2625d828a504a8cb35682": "Der Befehl wurde ausgeführt!", + "45a0bbacbe8d5ea062167e88423e4573": "Nginx oder Apache Server wurde nicht erkannt, installieren Sie bitte zuerst eine!", + "bdaf560796795d6a303bc9a1d75a34c5": "Projekttyp [{}] vorhandene Domäne: {}", + "4588a786e80c83c2cbde37b930c3d778": "Server -Port [{}] wird nicht verwendet. Bitte geben Sie den Port ein, um umzukehren!", + "6888cf6586ce3c187150146a2d1db0ac": "Fehler hinzufügen, Datenbank kann nicht geschrieben werden!", "9f9663b59d32947ff1f2c5b364c571b8": "erfolgreich hinzugefügt!", + "e6bddfc6a0bbf72d592236c61b411f9a": "Fügen Sie mit Fehler fehlgeschlagen hinzu: {}", + "1bfa1b1738332c4835f5efe7c54ab9c2": "Parameterfehler!", + "0d66954ff42aa042c219a356266f5bc0": "Es wurden keine Reverse -Proxy -Informationen festgestellt!", + "ae178e022cf2fe30f402145572528de8": "Volumennamen können nicht weniger als 2 Zeichen lang sein!", "365c770f123d22093084908ebcdc75fc": "Volumenname existiert bereits!", "2dc51ae60242f0e5b56a9f0d176f91d4": "Addition fehlgeschlagen {}", "307feea9ab8928f39595316b11992cb1": "Treiberoptionstags müssen Wörterbuch-/Schlüsselwertepaare sein!", "f529949f8a98615c109ee8b8eb9f7656": "Fügen Sie fehlgeschlagen hinzu!{}", - "2a0f93407bb61e2403ccd032cbc64e3e": "erfolgreich löschen", "a4ec5c1fa47f2ce0c875f91ea4e7dd08": "Das Speichervolumen wird verwendet und kann nicht gelöscht werden!", "11ff7153b67d275618dd3a62d1e56373": "Das Speichervolumen existiert nicht!", + "2aa70dad9bff94a855fdde3fc113e6c5": "Löschen fehlgeschlagen!{}", "55c31f03e88bd6ad4ce7f68d425648dd": "Keine nutzlosen Speichermengen!", - "5395cc8155f62a666b8f0d0f9f207676": "Repository -Informationen existieren bereits!", - "9b10e472adfe6372c9175b9002f098fd": "[Offizielles Docker -Repository] Nicht bearbeitbar!", - "5858be44c285048a8f51c126b2fd23e9": "Bearbeitung fehlgeschlagen!Grund: Konto Passwort entschlüsselt!Bitte löschen Sie das Repository und fügen Sie es erneut hinzu", - "7e51d0e26e1b467aff3c89d3e0751ec0": "Bearbeitung fehlgeschlagen!Grund:{}", - "6478f13dd58e5a4329e19be9020243ff": "Dieses Repository konnte nicht gefunden werden", - "d5309f3186607eb36bee41e8a28cea3a": "Erfolg bearbeiten!", - "9e20bffc0d4093d18fcbc5c98fa0fd87": "[Offizielles Docker -Repository] kann nicht entfernt werden!", - "a62336a87697ab6911ba550015a798ef": "Delete fehlgeschlagen, die Repository -ID gibt möglicherweise nicht!", - "c28bc5c07ec6f2b56777ac7c852dd64b": "Setup erfolgreich!", - "f2bd8f0373084151bbc07e8c1409e37c": "Setup fehlgeschlagen! {}", - "54197759827cfaf0cdb1e213fa49771e": "Anmeldetest fehlgeschlagen!Grund: Möglicherweise ist ein Konto Passwort -Fehler, bitte überprüfen Sie!", - "657a0b7e82731fb4ae516d14081f17d0": "Anmeldetest fehlgeschlagen!Grund: {}", - "11cde3a2ca81c845978b98e4a6ec471e": "Die Überwachungssparzeit muss eine positive Ganzzahl sein!", - "b314fb25bf654a2256bf53b0f6986c93": "Überwachungsdaten können nicht länger als 999 Tage beibehalten werden!", - "60e46aeaed758964902dd7ae99858f03": "Dort", - "1ba194462d31177d3db4ad6bf18fdbe5": "Docker Service Setup ist fehlgeschlagen, bitte schalten Sie die Aapanel-Anti-In-Intrusion aus und versuchen Sie es erneut!", - "422f78617d6852c41e370982d73235ed": "Setup fehlgeschlagen!Fehlergrund: {}", - "dca5bd22c99a74f74074a3a53d78a58b": "{} Erfolg", - "be62f7640f2c5b730ba50ecc580ae618": "Globaler Konfigurationsdateifehler, bitte überprüfen Sie {}!", - "8ebe0b989b543cf96149811c7a1f3fe2": "Geschwindigkeitsadresse [{}] Formatfehler
Referenz: https://mirror.ccscscentyun.com", - "ec1ec17a5862a949e277432e1d09484d": "Setup fehlgeschlagen!Fehlergrund: {}", - "179a2001e96bb8d0475488f80c7216a8": "Erfolgreich aktualisieren!", - "f4dc83b81fe6993f99c2b54494eeeec1": "Beginnen Sie erfolgreich zu überwachen!", - "af79fd88d4b6f7e8a1ac05e199747fdb": "Es wurde nicht mit der Überwachung begonnen!", - "6f4d03d4d1ee0bd282ea744730b7ceda": "Docker Monitoring wurde erfolgreich gestoppt!", - "4cc06d8560bb116a38a5aae1458cbe4a": "Docker-Compose-Dateipfad kann nicht leer sein!", - "8d885b86e8562c2128689c4a2601c054": "Docker-Compose-Datei existiert nicht!", - "7bdd4d85dda1275e2be709fd9e0d71dd": "Die Docker-Compose-Datei ist nicht ausführbar oder keine Docker-Compose-Datei!", - "c28e19f0398bc1819a890878021836c1": "Die Installationsaufgabe existiert bereits. Bitte fügen Sie sie nicht noch einmal hinzu!", - "a87b64b2d19f29438274f80ce36a3579": "Die Installationsaufgabe wurde der Warteschlange hinzugefügt!", - "c1710a5899fa03f7ad5ea1945a91e4f8": "Bitte löschen Sie alle Container und Bilder, bevor Sie Docker deinstallieren!", - "d388487780fba74e4ff3f3b9ffbce58b": "Kann deinstalliert werden!", - "c4ba6d01fd53333a6e7e85707758c550": "Erfolgreich deinstallieren!", - "b7affa7cc663144bc99b9edb3f1a027f": "Die Reparaturaufgabe wurde der Warteschlange hinzugefügt!", - "cb49a4daafc9d27bd460967891968225": "Erfolgreich gespeichert!", - "739722f14db791bd300e08318a48ba59": "Speichern fehlgeschlagen, Grund: Dämon.json -Konfigurationsdatei -Formatfehler!", - "58fcf0699f38a60c8025330585ac205a": "Speichern fehlgeschlagen, Grund: {}", - "720d2290c3082615c0f79894bfdcabd7": "Bitte geben Sie die richtige I PV 6 -Adresse ein!", - "c0ef08aa7bd6276137ccd491a8041223": "Es gibt kein Volumen zu sichern", - "584e35dd4a55da88bd232ac7a19b9b95": "Die Sicherungsaufgabe wurde erfolgreich erstellt.", - "0b08674e1c87f3f8508a4ae9b0c160f8": "Ich habe keine Sicherungsaufgabe erstellt {}", - "13d829d3f2b78c971207d944f2a96c55": "Die Datei nicht löschen, Grund: {}", "6169a7282b361deb5f6f5b6e18f9426e": "CMD -Parameterfehler", "286933a4f24bee0eed1f9300f70a30c7": "Nur der Befehl Docker Run kann ausgeführt werden", "a46a6b274dcbfc5a629d234c2816a165": "Es gibt Gefahrensymbole: [{}], Ausführung ist nicht erlaubt!", @@ -2146,24 +2121,26 @@ "994e5a057aca3524ba773ec33228e184": "Schöpfungsversagen!{}", "00ff90441ea0bdece5d9e5c72efa14a7": "Die Containererstellung ist fehlgeschlagen und die Verbindung zum Docker zeitlich abgestimmt!", "8879635d66ad75dcbfc8c31ba1351116": "Container konnte nicht laufen!{}", - "facfe02e3070c389fe486efac23f2ab6": "容器 创建 成功!", "71dc70f7ab3a4bc0c2a7141718d3a9b2": "Schöpfungsversagen!", + "1983b37067c7e94095a5113786fdef9c": "Die Bearbeitung ist fehlgeschlagen, die Verbindung zum Docker ist abgelaufen. Bitte starten Sie Docker neu und versuchen Sie es erneut!", + "c558fedcb5850939202e684ff32c7c50": "Update fehlgeschlagen! {}", "ed0029af5f77a5dfacbc2452e8c3ec92": "Container -ID ist abnormal", "c5b3db7efde90edcb803a4a79e559b21": "Der neue Bildname kann nicht leer sein!", "b10305369ebb41ef24699b8137733465": "Der Spiegel existiert nicht!", - "d567f353b12e618571935661f31c2a16": "Die Bearbeitung von Containern ist fehlgeschlagen und die Verbindung zum Docker -zeitlich abgestimmt.", - "c558fedcb5850939202e684ff32c7c50": "Update fehlgeschlagen! {}", + "9e90efb62702b147b71e8731290caf44": "Das Bild [{}] existiert nicht. Bitte aktivieren Sie [Bild ziehen erzwingen] und versuchen Sie es erneut!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "Der neue Container wurde nicht erfolgreich erstellt und der alte Container wurde wiederhergestellt.{}", + "1f004e412319b7ed472624e011b3d2ba": "Update erfolgreich!", + "a2ea046c20d2da5cebf2dea01a62dabe": "Update fehlgeschlagen!Der Containerstatus wurde wiederhergestellt", "b84bf4d95051856f9965b55bb5402de3": "Container existiert nicht!", + "d567f353b12e618571935661f31c2a16": "Die Bearbeitung von Containern ist fehlgeschlagen und die Verbindung zum Docker -zeitlich abgestimmt.", "f2124ee490df203b3f86509401c76a09": "Der Container wird erfolgreich bearbeitet und das Subnetz wird nicht angegeben, wenn das derzeit angegebene [{}] -Netzwerk erstellt wird und die IP nicht angepasst werden kann und die IP automatisch zugewiesen wurde!", "b95d75cd8e04e9cca297c3cd1091b2eb": "Der Container wird erfolgreich bearbeitet, das Netzwerk [{}] Einstellung schlägt fehl und die IP -Adresse wurde automatisch zugewiesen, Fehlerdetails: {}!", "4363bb34365a67238ecc6a98ce46b361": "Das Bild wurde generiert und {}", "4bb30e8d57a6a7e548758daf4ac33983": "erfolgreich einreichen!", "a32e1f09fc2739d94c51a7168675e0e9": "Einreichung fehlgeschlagen! {}", - "9ff81cc845af62a773af3412bdf7d9a0": "Die Container -ID ist abnormal. Bitte aktualisieren Sie die Seite und versuchen Sie es erneut!", - "d8f5602e197fb8b3c772f071ad4a8baf": "Wählen Sie den Shell -Typ aus!", - "9ad72ac09babc507baa6e165041e128c": "Diese Hülle wird nicht unterstützt, um Choose Bash oder SH!", "172f51d3307b02aeb6dc703a442f4724": "Versäumt, Container zu bekommen", "684fc00ae67504a56c09ef71431b1261": "Erfolgreich exportiert nach: {}", + "f9a48b804d917398e795016687f3b0f4": "Bitte deaktivieren Sie [Manipulationssicher für Unternehmen], bevor Sie es versuchen!", "3ab9d9b76e8d22434930622b5f0acc6a": "Der Behälter wurde gelöscht!", "d1fe1d6e5e8c17b60f749ad36ff3bcaa": "IPv6 Server Port [{}] ist besetzt!", "9f13645ac42f0c9908a35637a525d561": "IPv4 Server Port [{}] ist besetzt!", @@ -2186,6 +2163,7 @@ "dac7d97aeb94cf9d3b3b5d7d072c4cff": "Bitte schalten Sie den Manipulationsschutz des Enterprise aus, bevor Sie es erneut versuchen!", "32ca87e65c5fc75d3857767417b56439": "versäumt zu löschen!{}", "b0ea22ff0b389c2a32b8f4367ab650db": "Parameterfehler, bitte in der Neustart -Richtlinie restart_policy weitergeben!", + "179a2001e96bb8d0475488f80c7216a8": "Erfolgreich aktualisieren!", "3b2f70397fa8a827c7146cbd900f7222": "Update fehlgeschlagen!{}", "c147897a9d1746a58de531e9c0158c23": "Der Behälter wird nicht begonnen und kann nicht umbenannt werden!", "a89c2e8f7eb81399f984330e55014c6f": "Erfolgreich umbenennen!", @@ -2194,45 +2172,135 @@ "363b76cd4207ec1adb31b9f7ee3930c8": "Erfolgreich unpinn!", "0fffc4397713115e14ef45273241dfbb": "Parameterfehler, bitte weitergeben: Bemerkung!", "dce2cbc7791016e4876ab144e53b4f82": "Parameterfehler, bitte übergeben: ID!", - "7bdaccb3d20432c5e0150862ab1cc3f3": "Fehlende Parameter Name", - "9b90b5b49486a61d9b0e6dbbbcb56cad": "Fehlende Parameter container_info", - "b23d7110e9bf6539b4964afe0d4934e2": "Die Gruppierung existiert bereits", - "a90ca6939fe71693c145f50596c6e0e6": "Container {} wurde von Gruppe {} hinzugefügt!", - "e3cf7e2f2d14257e7ea33657b135d534": "Fügen Sie fehlgeschlagen: {}", - "fcbeb38a63ced9d3de476fb08c31d71e": "Fehlende Parameter -ID", - "fe4e0032f69b4100ed143d475e8b5050": "Erfolg bearbeiten", - "6c4ed52bea35c4c43839b8f0b44489f9": "Bearbeiten fehlgeschlagen: {}", - "6c0129a45e9da4e1820335f3d06a869f": "Löschen fehlgeschlagen: {}", - "2a743a86676fd52214d3c0af1b0238b5": "Statusparameterfehler", - "f95136e5c1f3ccbb09ace8fc24f1e0ca": "Container [{}] Operation ist fehlgeschlagen", - "2e01172e31495f41fcebcf3f831cc82c": "Operation erfolgreich", - "244a98f8c45f938980f48b168aef02c9": "Operation fehlgeschlagen: {}", - "fc431240dfc80a731900d5f2ddb6dfc3": "Container -Startreihenfolge {}", - "5ea6c6eea14c24c92eeeccaeea5c46dc": "Ungültiger Zustand!", - "45a0bbacbe8d5ea062167e88423e4573": "Nginx oder Apache Server wurde nicht erkannt, installieren Sie bitte zuerst eine!", - "bdaf560796795d6a303bc9a1d75a34c5": "Projekttyp [{}] vorhandene Domäne: {}", - "4588a786e80c83c2cbde37b930c3d778": "Server -Port [{}] wird nicht verwendet. Bitte geben Sie den Port ein, um umzukehren!", - "6888cf6586ce3c187150146a2d1db0ac": "Fehler hinzufügen, Datenbank kann nicht geschrieben werden!", - "e6bddfc6a0bbf72d592236c61b411f9a": "Fügen Sie mit Fehler fehlgeschlagen hinzu: {}", - "1bfa1b1738332c4835f5efe7c54ab9c2": "Parameterfehler!", - "0d66954ff42aa042c219a356266f5bc0": "Es wurden keine Reverse -Proxy -Informationen festgestellt!", - "7c6f761019365f8a5cfb2fb54d9e199d": "info.json wird heruntergeladen!", - "10066fce84fe34e9cc33e0338532988b": "Der info.json -Download ist fehlgeschlagen!", - "0672e579ab0e3454713eb683ddcc4859": "{} Download fehlgeschlagen, bitte resync!", - "8e790e81fffa7f51d099f710bd8f82cf": "{} YML -Dateitest fehlgeschlagen, {}", - "371acfea202589c4efd6724888f66595": "{} Download abgeschlossen!", - "51cf61e34b3f71ce1e430cdfcf129b80": "{} Dekompression fehlgeschlagen", - "c59b65890496cdf2b14d127a1f76f73d": "{} erfolgreich extrahiert", - "0117718c35c7a16a62de5c259e1d35ee": "Die Erstellung der Verzeichnisse ist aus den folgenden Gründen fehlgeschlagen: {}", - "374e3fe41b55a0b29420e455fb514dd6": "Das Speichervolumen wurde erstellt", - "6d0d40f64f89227daf345eb2257638e8": "{} kann keine Leerzeichen enthalten", - "a00b49ace55de909015029a0d6d6096f": "{} kann nicht null sein!", - "54498312bb8f97ce07a9a0b0b47cfad1": "Server Port [{}] ist besetzt. Bitte wechseln Sie zu einem anderen Port!", - "47b74e08252747225c49ea0cb011c79e": "Projektstart fehlgeschlagen {}", - "838089af9a2941a49862f342c056a8ca": "Beginnen Sie mit der Erstellung des Projekts", - "9b149598fb30f54fec9e82a3d121a464": "{} existiert bereits, bitte ändern Sie den Projektnamen", - "634370637f6a5b88940c75f826953d0c": "Benutzerprojektverzeichnis konnte nicht erstellt werden, Details: {}", - "f7b14d3f642d711a23d5a0cca725fd0d": "Das Projektverzeichnis nicht kopiert.Details: {}", + "ca1bc3e1d32b99b90395da47b88576a9": "Parameterfehler, bitte übergeben Sie: ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "Parameterfehler, bitte übergeben Sie: _ws!", + "11cde3a2ca81c845978b98e4a6ec471e": "Die Überwachungssparzeit muss eine positive Ganzzahl sein!", + "b314fb25bf654a2256bf53b0f6986c93": "Überwachungsdaten können nicht länger als 999 Tage beibehalten werden!", + "60e46aeaed758964902dd7ae99858f03": "Dort", + "c28bc5c07ec6f2b56777ac7c852dd64b": "Setup erfolgreich!", + "422f78617d6852c41e370982d73235ed": "Setup fehlgeschlagen!Fehlergrund: {}", + "dca5bd22c99a74f74074a3a53d78a58b": "{} Erfolg", + "ec1ec17a5862a949e277432e1d09484d": "Setup fehlgeschlagen!Fehlergrund: {}", + "f4dc83b81fe6993f99c2b54494eeeec1": "Beginnen Sie erfolgreich zu überwachen!", + "af79fd88d4b6f7e8a1ac05e199747fdb": "Es wurde nicht mit der Überwachung begonnen!", + "6f4d03d4d1ee0bd282ea744730b7ceda": "Docker Monitoring wurde erfolgreich gestoppt!", + "4cc06d8560bb116a38a5aae1458cbe4a": "Docker-Compose-Dateipfad kann nicht leer sein!", + "8d885b86e8562c2128689c4a2601c054": "Docker-Compose-Datei existiert nicht!", + "a87b64b2d19f29438274f80ce36a3579": "Die Installationsaufgabe wurde der Warteschlange hinzugefügt!", + "d388487780fba74e4ff3f3b9ffbce58b": "Kann deinstalliert werden!", + "c4ba6d01fd53333a6e7e85707758c550": "Erfolgreich deinstallieren!", + "b7affa7cc663144bc99b9edb3f1a027f": "Die Reparaturaufgabe wurde der Warteschlange hinzugefügt!", + "cb49a4daafc9d27bd460967891968225": "Erfolgreich gespeichert!", + "58fcf0699f38a60c8025330585ac205a": "Speichern fehlgeschlagen, Grund: {}", + "6c3e5d603d8845422e861fb0b4eed350": "Ein Konfigurationselement, das dies tut", + "f324009782d2d9e73d1087884ebc2c4c": "Das Docker-Root darf nicht leer sein!", + "538960e1336f919e37a0d2c024c56830": "Das aktuelle Docker-Root-Verzeichnis ist das Zielverzeichnis und muss nicht geändert werden!", + "f2bd8f0373084151bbc07e8c1409e37c": "Setup fehlgeschlagen! {}", + "a848bbd79221dfdce1c9dca536dbfada": "Das JSON-Format der Proxy-Einstellungen ist falsch!", + "edf6eb680187066c4dea216b3b20d6d2": "Proxy-Einrichtung erfolgreich!", + "720d2290c3082615c0f79894bfdcabd7": "Bitte geben Sie die richtige I PV 6 -Adresse ein!", + "b01f9411136207ad7df28b9bf2387e2a": "Upgrade fehlgeschlagen!Gründe für das Scheitern:{}", + "da896b628e3ded58445e4b015320f327": "Überladung schlägt fehl aus folgendem Grund:{}", + "efb869976990f78b3d6fcbaf270e3323": "Nachladen erfolgreich!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Globale Profilüberladung fehlgeschlagen:{}", + "75bbb7a00c3b5b510913952fe089f52a": "Falscher Parameter, Pfadparameter!", + "273609d18876f5f9e3f021032e5b57a3": "Einrichtung fehlgeschlagen!", + "5e022f79dcc774c79bc55ee28774e2e7": "Der Bildname kann nicht enthalten /", + "c00be60f9f3f7d747aadfdb124e855ef": "Erfolgreich gespeichert auf: {}", + "cb1f8d99b492340cf701101c87884a8c": "Kann das Bild nicht exportieren!", + "afaa91d141ded3e37b8b9ebf8bc31c51": "Das Exportieren des Bildes ist fehlgeschlagen und die Verbindung zum Docker zeitlich abgestimmt.Bitte versuchen Sie den Docker neu und versuchen Sie es erneut!", + "5b980f2e1c82c04c91376d55d4306a91": "Image nicht exportieren!
{}", + "e5e8c7cac8b71e94280fa08301d21e78": "Bitte geben Sie den Bildpfad ein!", + "5441400ea3bd16cffdf70c46c34f61d4": "Das Bild nicht importieren.Die Dateierweiterung muss.tar sein!", + "0720c6c4f478b3a374b4a438f7cf80ad": "Das Importieren des Bildes ist fehlgeschlagen, die Verbindung zum Docker ist abgelaufen. Versuchen Sie bitte, Docker neu zu starten und versuchen Sie es erneut!", + "22cc0388137842df9649b3bbcff345e8": "Wenn der Image-Import fehlschlägt und das temporäre Containerverzeichnis nicht erstellt wird, prüfen Sie, ob die Schutzsoftware über einen Abfangdatensatz verfügt.", + "67b97e4746a2faf5d59206a80bb28649": "Bildimport war erfolgreich! {}", + "deceb44868a29ae5d579114348736cbb": "Der Bildimport ist fehlgeschlagen und das temporäre Verzeichnis des Containers wurde nicht erstellt.Bitte prüfen Sie, ob die Schutzsoftware einen Abfangen -Datensatz hat!", + "8eb05618b0f04e727b0685427fd49c8e": "Importieren nicht importiert!
{}", + "721aa02577670c1049ea9d12caa8938c": "Bitte geben Sie den richtigen Dockerfile -Pfad ein!", + "736df9a7c491f3299efdeb9f7d7e9e0f": "Bild erfolgreich erstellen!", + "6e85568dae869303ca7a4486f55458a3": "Build fehlgeschlagen, Verbindung zeitlich festgelegt", + "5bb301b85cc1f42e56174d3d9a4c0286": "Build fehlgeschlagen!{}", + "f51455b323ec2db8004c812001043330": "Build fehlgeschlagen! Die angegebene Dockerfile wurde nicht gefunden", + "8e1b9c9b75950d0feba6813d32766e61": "Build fehlgeschlagen! {}", + "eba0ec758a6464a20c14c0f23ceee62e": "Spiegel erfolgreich gelöscht!", + "8dd326278d09a3ac4bc56cf725c8f262": "Das Löschen ist fehlgeschlagen und das Bild kann nicht existieren!", + "11ead921bc0e3d94f1f9e0db4bf8ed8d": "Die Bild -ID wird in mehr als einem Bild verwendet. Erzwingen Sie das Bild, das gelöscht werden soll!", + "43993616c7433350755d30a3b4d065dd": "Das Bild wird verwendet.Bitte löschen Sie den Container, bevor Sie das Bild löschen!", + "d6992c3fcf2269c249cd5f18f1ac2c11": "Image nicht löschen!
{}", + "0c6c071174fde5b47c9eef8088c17a89": "Das Bild nicht löschen, die Verbindung zum Docker -zeitlich festgelegt, bitte starten Sie sie neu und versuchen Sie es erneut!", + "a3ba80a8e1e0d9af94c809e909431b3c": "fehlgeschlagen, melden Sie sich bei Repository an [{}] fehlgeschlagen. Bitte versuchen Sie, sich erneut bei diesem Repository anzumelden! \\ r \\ n", + "cc40077b6ee61fbfa35713a21e8eb866": "BT_FAILED, melden Sie sich bei Repository [{}] fehl. Bitte versuchen Sie, sich erneut bei diesem Repository anzumelden!{}", + "60b488c60b6747bf34a86a69740b636d": "Das Push -Bild kann [/] nicht enthalten. Verwenden Sie bitte das folgende Format: Bild: v1 (Bildname: Version).", + "44dbec830b87eb037e8fcbb0e1b56160": "Es kann nicht in der Lage sein, das öffentliche Repository von Docker zu machen!", + "b4c46001066c912344e3bdb0df86e848": "Repository [{}] Anmeldung fehlgeschlagen!", + "0ebfb094c6482acb049e0dd0d3107307": "Push Failed, Image Label -Fehler, bitte geben Sie ein, z. B. V1.0.1", + "d26bdd6e86002ed92089dc71347822ce": "Push fehlgeschlagen, habe keine Erlaubnis, in dieses Repository zu pushen!", + "82058092ad7d2c7aa5e2f012b6544e59": "Push -Fehler! {}", + "2b228d4775d23d2725ec227ba648bd43": "Erfolgreich drücken, Mirror: {}", + "9e396f640866ded9c3a47268f96a36e3": "Ziehen Sie das Bild, bitte warten Sie ... \\ r \\ n", + "7e5f4d488d318dc7c235095c8456f5e4": "Ziehen oder nach Bildern suchen ... \\ r \\ n", + "97a6dfe3a273202edffe31af7a43e220": "Verwenden Sie die Standardspiegelstation nicht, um das Bild zu ziehen!Versuchen Sie, eine andere Spiegelstation zu verwenden, um für Sie zu ziehen, bitte warten Sie ... \\ r \\ n", + "484616540fc726ef4f52e97a1c2f0fef": "Das Bild nicht ziehen! \\ R \\ n", + "1cd77329b2bddfb200e656214b1fdf32": "Das Bild nicht ziehen!", + "63c709b9759af42fef890d539d822575": "Pull fehlgeschlagen! {} \\ R \\ n", + "b4aba972332d1f3728171905a033fb99": "Bild Pull [{}] erfolgreich \\ r \\ n", + "2fae21ffd185d9e9730b39bc7de23852": "Bild erfolgreich gezogen!", + "8a635442294fd90195a43d9a1672fc3f": "Das Bild nicht ziehen!", + "711de72d616e7abb29dfa919244d382d": "Pull ist fehlgeschlagen, das Bild existiert nicht oder das Bild kann ein privates Bild sein.Sie müssen Ihr DockerHub -Konto Passwort eingeben! \\ R \\ n", + "e9511e26273da5b4537b4683668b548e": "Pull fehlgeschlagen! {} \\ r \\ n", + "05d13bf5dcc37754db74b2356e6e117c": "Pull fehlgeschlagen, es gibt kein solches Bild im Repository! \\ r \\ n", + "714841af7f3de6c8d99ba03f4cee0ee5": "Pull fehlgeschlagen, das Bildformat ist falsch, wie z. B. nginx: v 1! \\ r \\ n", + "2d941c4fa4da32ccafa8670a07f23c1d": "Das Bild wurde erfolgreich gezogen.", + "5282194697748d9fcd1ccd8a90428424": "Es kann nicht dieses Spiegelbild geben.", + "d6facab17334983e7c6f8c561c239820": "Das Bild hat nicht gezogen. Dies ist ein privates Bild. Bitte geben Sie das Kontokennwort ein!", + "b507deb7848d566982b339265c8f5482": "Pull -Bildversagen

Grund: {}", + "e90811ef0a60b6d299b4e1064d7788d0": "Keine nutzlosen Bilder!", + "f343313c101aeaff0516990ebea3dcef": "nicht löschen! {}", + "90ecd58b3feb0b2be11f0af685ad39fe": "Das Löschen von nutzlosen Bildern ist fehlgeschlagen und die Verbindung zum Docker -zeitlich abgestimmt.Bitte starten Sie den Docker -Service neu und versuchen Sie es erneut!", + "0568e5e8aa7c811dd420c818189a0d46": "vor Sekunden", + "53c53a79f864561f8b6886b3dde7cd51": "vor Minuten", + "f329a0dab82282e50e3aea9260e95d53": "Vor Stunden", + "7a1af30a5ce889031cbc2472766159e3": "vor Tagen", + "558a41d55884223583b3542e802d2b64": "Der Spiegelname darf nicht leer sein!", + "4097585e32152eb74bbee5ab8c463718": "Der Docker -Service läuft ungewöhnlich, bitte starten Sie sie neu und versuchen Sie es erneut!", + "26a0931677e111565f3ff7d059b94d8b": "Die Gateway -Einstellung ist falsch. Geben Sie bitte ein Gateway ein, das dem Subnetz entspricht: {}", + "def2ba1ce0e4d77692c14e5b984636fa": "Fehler mit Subnetzadressformat, bitte geben Sie ein, zum Beispiel: 172.16.0.0/16", + "716eeeb727fd667635ccf1d18891d46e": "Fehler beim IP -Bereich Format, geben Sie bitte den entsprechenden IP -Bereich für dieses Subnetz ein:", + "e310a873e7812c7f994d482604061fee": "IP Range [{}] existiert bereits!", + "db88b911ea66744c24b22efcafef2101": "Die Systemkernelversion ist zu niedrig. Aktualisieren Sie den Kernel oder wählen Sie einen anderen Netzwerkmodus aus", + "9cebb294a44695984eaaf2134df63a51": "Der aktuelle Knoten ist kein Schwarm und muss konfiguriert werden, bevor er verwendet werden kann", + "85ac438bd64f13e2ad61cf60e5ade3d3": "NETWEISE ADS NETWORK!{}", + "640520ffb5d9c01336710bad3ea6d7ff": "Das Netzwerk erfolgreich hinzugefügt!", + "87574a543563d2e037b87a6cf705e3ff": "Das System Standard -Netzwerk kann nicht gelöscht werden!", + "23b6d9d6c36088deb928efad7fb9b63b": "Das Netzwerk kann nicht gelöscht werden, während es verwendet wird!", + "8f512551c7ddf61331c3d068e80c642c": "Es gibt keine nutzlosen Netzwerke!", + "08efe6a4e12437b79225c8b59fd710eb": "Netzwerk -ID kann nicht leer sein", + "a636381ee5e6d6d021fff745ca132905": "Container -ID kann nicht leer sein", + "31a75a8d220d37dc4a7ea28d0f24cc19": "Netzwerkunterbrechung war erfolgreich!", + "a2b9895fca7698902da9319b52392366": "Container -ID: {}, existiert nicht!", + "c81f03a558307d5aaf3b339af28e04ff": "Netzwerk -ID: {}, existiert nicht!", + "12a90fe85b8863e1dea43284988d7750": "Netzwerkunterbrechung fehlgeschlagen!{}", + "6226d2fef3bf047236f0f3a57dcd71fb": "Netzwerkverbindung erfolgreich!", + "d882b8375782b1bc56ccaf84ed27d20b": "Es wurde keine Verbindung zum Netzwerk hergestellt!{}", + "0e8623af4dd4d3b732904872d22fbf83": "Der Netzwerkname darf nicht leer sein!", + "5aa2044b58e63d58ddecc69421802404": "Gateways können", + "ceaa20eefd6749452a947c7f5dfa4eb0": "IP-Bereiche dürfen nicht leer sein!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "Das Erstellen eines Netzwerks ist fehlgeschlagen!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Netzwerkname: [{}] existiert bereits!", + "9cdc09516d85ae057d1d9bedc988849e": "Schaffen Sie erfolgreich ein Netzwerk!", + "5395cc8155f62a666b8f0d0f9f207676": "Repository -Informationen existieren bereits!", + "9b10e472adfe6372c9175b9002f098fd": "[Offizielles Docker -Repository] Nicht bearbeitbar!", + "5858be44c285048a8f51c126b2fd23e9": "Bearbeitung fehlgeschlagen!Grund: Konto Passwort entschlüsselt!Bitte löschen Sie das Repository und fügen Sie es erneut hinzu", + "7e51d0e26e1b467aff3c89d3e0751ec0": "Bearbeitung fehlgeschlagen!Grund:{}", + "6478f13dd58e5a4329e19be9020243ff": "Dieses Repository konnte nicht gefunden werden", + "d5309f3186607eb36bee41e8a28cea3a": "Erfolg bearbeiten!", + "9e20bffc0d4093d18fcbc5c98fa0fd87": "[Offizielles Docker -Repository] kann nicht entfernt werden!", + "a62336a87697ab6911ba550015a798ef": "Delete fehlgeschlagen, die Repository -ID gibt möglicherweise nicht!", + "54197759827cfaf0cdb1e213fa49771e": "Anmeldetest fehlgeschlagen!Grund: Möglicherweise ist ein Konto Passwort -Fehler, bitte überprüfen Sie!", + "657a0b7e82731fb4ae516d14081f17d0": "Anmeldetest fehlgeschlagen!Grund: {}", + "221d1ea3c23f430e03a4486dca865014": "Der Container existiert nicht. Bitte aktualisieren Sie den Browser und versuchen Sie es erneut!", + "7e88e25ea6c628c2d03c526c04af3eed": "Der Containerstatus nicht erhalten:", "cb337dbfbc18aafa482051b6fc349dea": "Die Konfigurationsdatei nicht erhalten", "84d3fc0c1c70fcd6fdd7ca7c3be11225": "Das Projekt existiert bereits!", "a280b122a0b3249c26b1f94ad4573f50": "Schreiben Sie fehlgeschlagen!", @@ -2251,6 +2319,32 @@ "d6d90f977089e176ec7443db17c41279": "容器 添加 成功!!", "04cd9210bf9290bda98bc76ca4bc59fd": "容器 删除 成功!!", "d867a5e10a7a9485129c679b85453e3f": "项目 删除 成功!!", + "459ed27083c25b82135efedccaa60ada": "Scannen {} Ausnahmeverlaufsbefehl scannen", + "37c614d5d300e6c391808efd5363ec82": "Scannen {} empfindliche Informationen", + "5ddc98a53573410c7cb65727946c5d3f": "Scannen {} Backdoor", + "6bb6be880d819a93af392183d16fccdf": "Scannen {} Container entkommt", + "cd7fb7cf576b22469514b5b30f365158": "{} Scan abgeschlossen", + "7d643f192968be3f8a54be28592e9176": "Das Scannen des Bildes ist fehlgeschlagen:{}", + "acc2731ee0f5b78d4e801d2daf814c32": "Verdächtiger Befehl abnormaler Geschichtsbefehl gefunden", + "3069c277261d044bb309e4b09ae798fa": "Es wurde festgestellt, dass das Bild über einen abnormalen historischen Befehl [{}] verfügt, der Malware oder Code in das Hostsystem implantieren kann, wenn der Container ausgeführt wird, was Sicherheitsrisiken verursacht.", + "6d64734fff5534f48029ffba4aa3678d": "1. Es wird empfohlen, zu prüfen, ob der Befehl für normales Geschäft erforderlich ist.
2. Es wird empfohlen, die offizielle und zuverlässige Infrastruktur zu wählen, um unnötige Verluste zu vermeiden.", + "6684913201a60be0b5e89c4dfb210719": "Bashrc Backdoor {} gefunden", + "9a9f27d5f9f8c056fff7986c87a94c30": "Es wurde festgestellt, dass das Bild Bashrc Backdoor hat: [{}], böswilliger Codeinhalt:
{}", + "d8a828116070b9d92315ca309cca1991": "1. Geben Sie den Container ein, der mit dem Bild bereitgestellt wird, und löschen Sie den böswilligen Code unter der Datei
2.Überprüfen Sie, ob der Container eingedrungen ist, und aktualisieren Sie das Zugriffs -Token oder das Kontokennwort des Geschäfts im Container
3.Es wird empfohlen, das offizielle Bild oder andere vertrauenswürdige Image -Bereitstellungsbehälter zu ersetzen", + "e1439f3f7d25d378078d513a82a3fa87": "Backdoor -Datei gefunden {}", + "9ede9d4bd542eedf78e39b0acf0206e3": "Es wurde festgestellt, dass die bashrc Backdoor -Datei [{}] im Bild vorhanden ist und der böswillige Codeinhalt:
{} lautet", + "686765b4612ecd8f774648db29a1541d": "Cron Backdoor entdeckt {}", + "390bdc0b3c37a56ede9467b0c220a3b6": "Es wurde festgestellt, dass der Cron Backdoor [{}] im Bild vorhanden ist und der böswillige Codeinhalt:
{} lautet", + "caea084281a3cb2515e5618cd3856163": "Fund System Backdoor: {}", + "d04061273caa56d5a0c3d74f3e9fd482": "Es wurde festgestellt, dass die Systemd Backdoor -Datei [{}] im Bild vorhanden ist und der böswillige Codeinhalt:
{} lautet", + "fc76e0fe415c49cc1c09bf76035fc4e9": "Gefunden SSHD Backdoor {}", + "00b2409f52ef5bc56afe29ccbe5cfa2c": "Fand die SSHD Soft Link Backdoor: {}, die Datei trifft die böswillige Funktion [exe = {}; link_file = {}]", + "e747da31a54cd71fb1a2860cae0f9f77": "Fand die TCPWrapper Backdoor {}", + "a2b09164c8d23894736bcc6a646861e0": "Es wurde festgestellt, dass die TCPWrapper Backdoor -Datei [{}] im Bild vorhanden ist und der böswillige Codeinhalt:
{} lautet", + "a7fd9f6b190b8531039376fbbda5f482": "Benutzer waren gefährdet {}", + "5d46ed5f4af3f30cfcc8bd66942f93b4": "Der Benutzername {} kann den Container -Flucht durch den Befehl [{}] vervollständigen, sodass der Angreifer Zugriffsrechte für den Host oder andere Container erhalten können.Bösartiger Inhalt:
{}", + "4ca0a18aa36a60613104cacdae514dec": "1. Es wird empfohlen, das Bild zu löschen oder es nicht mehr zu verwenden
2.Wenn bereits ein Unternehmen das Bild verwendet, geben Sie die Containerumgebung ein und löschen Sie den Inhalt des Benutzer {} in der Datei /etc /sudoers.", + "611afea08ae3b216a34dfde4c143f46c": "不 支持 的 系统 版本 版本", "68ae8c43a52aac63c5c62e1974afdda6": "Skript -ID kann nicht leer sein", "eee298ea1d9259c2f0e2061ecd89c21c": "Das angegebene Skript existiert nicht", "b68a8dd0c887719b7cc3e10dc11843ce": "Das integrierte Skript von Aapanel kann nicht gelöscht werden", @@ -2289,6 +2383,147 @@ "101da618f72223d3eac9e66fe510b04f": "Aufgabenereignis -ID kann nicht leer sein", "bee903cc3d03ab2c237eefb1d601fbcb": "Die Skriptausführung ist mit der Fehlermeldung fehlgeschlagen: \\ n {}", "1d78758685e5e2f4efeeb490f8521abd": "\\N", + "ca6977d373320a7fdb51047199d4cc59": "Adminer ist nicht installiert!", + "38641e6ce3a6369e108eb595672c8edc": "Deinstallation erfolgreich!", + "9cae26284a7ad2f46132c1e8e196d089": "Erfolgreich installieren!", + "a9a92e55770213c8aa1fb2871dc43563": "Adminer-Port erfolgreich eingestellt!", + "b611124a9bad44e328d7ce809912802d": "Erfolgreich einstellen!", + "2321763bf0b4cbf345b1e19dc9faec47": "Stellen Sie die Adminer-PHP-Version erfolgreich ein!", + "40a1f70c155550ad2dafa5e556e10c3c": "PHP-Version lässt sich nicht installieren!", + "e75e68c65607a7cfcc570d51345d7e33": "Dateimonitor", + "983e2622c48ae7231c5d29b135133b0e": "Monitor -Verzeichnis hinzufügen: {}", + "15c7df4ddd1d366c2cdfa2689c15369d": "IP -Filterprogramm Compilation fehlgeschlagen", + "423c2da1e20a5f2138cc810423475eef": "IP -Adresse kann nicht leer sein!", + "1e116dc22492b28a7a38a6029416d0e1": "Die IP -Adresse ist im falschen Format!", + "8c8f15a1c1cce8bbdc465e865c804b40": "Die maximale Blockierzeit darf 24 Tage nicht überschreiten!", + "fb86e24ffe47ba150610ba1efd96929a": "Die temporäre Blockierung der IP -Adresse CIDR -Blöcke wird nicht unterstützt", + "bdb199a03e52488d499ea6bb0cb0d1ed": "WAF ist erforderlich, um IP -Adresssegmente zu blockieren", + "1ac8e9ffcea7cf6e9fa183c1b9038599": "Die IP -Daten existieren nicht!", + "04d46623edcb5663566cf43f575de9b2": "Website -Name kann nicht leer sein!", + "4dcde63f7fd4415f3b5eb6cb889d135c": "Der Zugabe war erfolgreich", + "d303480175994c6ad240cf24a4a99640": "Website -Konfiguration gibt es nicht!", + "87d1f7257214d09ba39656b72c864bac": "Account Setup erfolgreich!", + "aa5bb2d58da86c4b9160e94d0c4538f1": "URI kann nicht leer sein!", + "ade0ab88aa0ee9c18f0979d5b62b517d": "Der URI existiert bereits, bitte fügen Sie es nicht wieder hinzu!", + "506d9cb0cb2468fd09048bcbe8b37497": "URI existiert nicht", + "cf180f27e678d4e297f690e581961417": "Das Höradressformat ist falsch!", + "1ed0fa9bb8768d56bf2d3232d7067023": "Falsche Höranschluss-Bereich!, Anforderung: 1024-65535", + "e6aa58b2f41bc53f6b84657d47eb35c1": "Der Datenspeicherpfad gibt es nicht!", + "c87be59ecbed944c2b45fea87d62f473": "IP -Statistikmodus Fehler, Anforderung: 0 oder 1", + "fbc4861b0190c90a5388e44d2bbac678": "Die aktuelle Version ist nicht verfügbar. Bitte aktualisieren Sie das Panel und versuchen Sie es erneut", + "8b1d5629a1346da21fcaeb9f8f0db6d2": "Startzeitformatfehler!", + "7a238977c4b13d23ac3e6b151a914cab": "Endzeit -Formatfehler!", + "a87a482f3bced3ce16bc9a351e8b5ce8": "Die Startzeit kann nicht größer sein als die Endzeit!", + "a0ef69b1680461368a9130e770256ca6": "Datumsformatfehler!", + "2493958c6f4051bb8d254d77d77b622b": "Zeitgranularitätsfehler, Unterstützung: Minute, Stunde, Datum", + "4c4258ffd9a69c8e332346241a3cbdae": "Die Daten der Negationszustandsdaten sind im falschen Format!", + "b47f4e8b7540cae56e085231c3c984c1": "Die Zugriffs -ID kann nicht leer sein!", + "fea04488a926034079dc00c5a60a9135": "Das Zugriffs -ID -Format ist falsch!", + "da206b8971dcba715ed8cdd1a82736e1": "Die Zugriffs -ID existiert nicht!", + "fd65e390dd8aa35ea3622658247776d0": "Das Datumsformat ist falsch", + "9a4f1ea39f3a554d4e5431f86eb0450b": "Der Site -Name kann nicht leer sein!", + "b59417ef234946819788acfde92a00a7": "Die Spülung war erfolgreich", + "aaa3736c0541d4a4d82193c2204ec317": "Die Startzeit ist im falschen Format!", + "e579606ed1219291caeb3bfad786dd3f": "Die Endzeit ist im falschen Format!", + "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "Das Datumsformat ist falsch!", + "53c85b9d96ea14f3f8224a5d2e659894": "Parameter kann nicht leer sein!", + "9dc21ed8c6025cab9873847e6e1ca506": "Der Abfragetyp ist falsch!", + "236c6e2f9a266b929b283eda30c2b3b6": "Es sind keine relevanten Daten verfügbar!", + "50fc65b5f19812ccf756b7ad7de7f4cb": "Session_id kann nicht leer sein!", + "8f2adb53dcb8d2c660159b1f8e8012ed": "Die Sitzungs -ID ist falsch!", + "7f4419a5b09e1a04936f6aba6939521a": "Konfigurationsprüfung abgeschlossen!", + "f3df0751d9522bf2e68034bab4cd49a5": "Konfigurationsreinigung abgeschlossen", + "191fae10bdd9d3eb6cb110b524fe40b7": "Die Einreichung war erfolgreich", + "f53208c04e48d7ee19222b6adf343810": "Der Benutzername kann nicht weniger als 3 Zeichen lang sein!", + "251e2cae1dbed2b37f7d16961a606970": "Die Auswahl der Berechtigungsstufe ist falsch!", + "a835325a5600b6571a24111e4d318e2c": "Bitte wählen Sie eine Website!", + "a669655fa991afcfa0cfa3f62286d944": "Die Passwortlänge kann nicht weniger als 5 Zeichen betragen!", + "4d8d30e66ad9aaccc738ad99d5083955": "Der Benutzername existiert bereits!", + "12152390a5bf2ebce0f00b0fb5c650a2": "Die Ergänzung war erfolgreich!", + "4d1b7f489e07d6ca02ca1910a3884c48": "Der Benutzer existiert nicht!", + "3e83aa40dd320efb027151c02aab2871": "Die Länge des Passworts kann nicht weniger als 8 Zeichen betragen!", + "d3748b3102cc8ba898f0f0bec842ce9e": "Die Änderung war erfolgreich!", + "ac75e534c7334e1fd02c68a3993f1568": "Die Löschung ist erfolgreich!", + "ca281da1f13858d0b599d19e18a510bf": "Der Webstatus wird falsch ausgewählt!", + "c88239bc4a113ab0f02acb9bc31b3437": "Der Webport ist falsch!", + "f06e6a5985a91ac55c651e0b573378f0": "Das Web -Sicherheitsverzeichnis kann nicht leer sein!", + "41a871d7ec26993be1367226321e06fa": "Die Länge der Sicherheitseingangsadresse kann nicht weniger als 6 Ziffern betragen!", + "16f83d0969b9f7fe56ac3b55f9dedb26": "Dieser Eingang ist bereits vom Gremium besetzt. Bitte verwenden Sie einen anderen Eingang!", + "066df5a1cf19314e0265a1eb396848ac": "Die Eingangsadresse ist falsch formatiert, zum Beispiel: /my_Monitor", + "794ee58637251012717d7e565aafc2a1": "Das Setup war erfolgreich!", + "2531ce72ea98e5aa8f4953eee783b540": "Keine Fehlerprotokolle gefunden!", + "0fc543dae93d3f76f5f7ff8048f5c398": "Für den Export wurden keine maskierten IPs gefunden!", + "5552ac99360952da2cf289f556ad19a6": "Es wurden keine maskierten IPs synchronisiert!", + "3332452d6ecd015473b133de021a9e06": "Die Synchronisation ist erfolgreich!", + "e6afdb1b63ca733f5d1741c7eff7a64e": "Es wird verarbeitet, wiederhole es nicht!", + "696212205a77e698860ff5195992642b": "Der Reparaturbetrieb ist abgeschlossen", + "97cb85456b49af4258f4c8da38bb576a": "Die geplante Aufgabe wird erfolgreich hinzugefügt!", + "2739213f569742c0782252f41279c060": "Fehlgeschlagen eine geplante Aufgabe", + "1cc4efde4fab0b4bbc2812a8b58f59b0": "Bitte geben Sie einen Site -Namen an", + "3b5ef9e1ea5a8dbd9606075686dbf15f": "Bitte geben Sie einen Datumsbereich an", + "f8412f656685f470a82b74de3d9f24d5": "Die Exportaufgabe existiert bereits", + "96ed379ec1882dcf52f0ff65057efb92": "Bitte geben Sie die Felder an, die Sie exportieren möchten", + "4e698e0709485a0e93a706964b748c5b": "Unbekannter Exporttyp", + "2a2dbc12afac446fe408eb78453bc6c2": "Die Exportaufgabe existiert nicht", + "9ff8782f584db728284fadd719967806": "Es gab einen Fehler bei der Exportaufgabe", + "b4421542e9cff8ce336075b668b8f87e": "Der Exportdatensatz existiert nicht", + "41564d1cd7f8ecb23bcc590cb2217518": "Bitte geben Sie ein neues Datenverzeichnis ein", + "699856a3cc697d8afcfd04dcd2f0729a": "Das angegebene Verzeichnis entspricht dem aktuellen Verzeichnis", + "103422cd692bcaf56a7367075caf2274": "Das angegebene Verzeichnis wird auf derselben Festplatte wie das aktuelle Verzeichnis verteilt, sodass keine Datenmigration erforderlich ist", + "bcbd9605d3b8753bb8afbc765b293e01": "Die Änderungs- und Datenmigrationsaufgaben haben begonnen", + "967a57ad58881afe2c5da6cf0d7fce8c": "Bitte geben Sie die IP -Adresse und den Crawler -Namen ein", + "62b73e6c2a169296e73edf8a4d1e02f0": "Bitte geben Sie eine korrekte IP -Adresse ein", + "0e1a26f6137c04f0f80956210069e46d": "Bitte geben Sie den richtigen Crawler -Namen ein", + "fe8d50ca26f2e864d2bf4a932801bb85": "Unerwarteter Fehler, versuchen Sie, das Plugin zu reparieren", + "21aa998a1dee8774bc88ce2a070bf4de": "Bitte geben Sie eine IP -Adresse ein", + "2e0c672edc06ef05e44de98ac1b7a47d": "Die Löschung ist erfolgreich", + "0f9d9b728fba6427b5ff4da49aee1738": "Die Spinne wurde falsch ausgewählt!", + "e48c86e701ddba3ab084d5457aa58714": "Die IP kann nicht leer sein!", + "3bdb147b7a040582220aa7f1ce2af19b": "Das IP -Format ist falsch!", + "b60597b6a9525341fa5d4d441084658d": "Es wurden keine Auflösungsdatensätze der IP -Adresse abgefragt", + "86e9360dac1c5eece29f32c9aba8011d": "Die Rettung war erfolgreich", + "e5320166e7623b6a39f9a7af7c20c787": "Angeben eines anderen Website -Parameterfehlers", + "c21fbb62edf94306d2e73365e6e7d637": "Der Parameter, der eine andere Website angibt, kann nicht leer sein", + "c7fae0c9886cac3924fe5e459e171ab1": "Löschung fehlgeschlagen", + "9a84d2910d3d36b78d7060f1c77e27f6": "Der Site -Name ist nicht angegeben", + "0987458a95b8bb7d6cdf9fa0630b6407": "Der aktuelle Server ist nicht nginx und unterstützt keine benutzerdefinierte Sammlung", + "b925dfe3295278bd81a85bded66da01d": "Der Statuscode befindet sich im falschen Format", + "2a8793bbb8bc38a7df9d8c796648526a": "Kein Standortname wird ausgewählt", + "6878600890a41b84c145423618ea2431": "Keine Website -Informationen gefunden", + "eff712873c55654bf48eaf421a184e73": "Es wurde kein benutzerdefinierter Sammlungsname eingegeben", + "116208583eac10a8769774a6eaaff926": "Der Erwerbstyp ist falsch", + "fff3d7679cb121a30e68a104b58c934e": "Der Sammelinhalt wurde nicht eingegeben", + "75db42595fc9aee34df76df808712f92": "Benutzerdefinierte Sammlungsnamen können keine Sonderzeichen enthalten ({})", + "9667904e74175dfde9824cb8cd099ce7": "Headerinhalt sollte mit $ http_ beginnen", + "4c61d0ee460aa25eb6b5c413c46c9236": "Der Sammelinhalt des Körpertyps sollte [$ + nginx -Protokollvariable] enthalten.", + "c03680a7ae35b7ce5b62f67b854d3b06": "Der Sammelinhalt sollte [$ + nginx log Variable] enthalten.", + "d621342512cf7910a6dc4e7d736bcc63": "Der Sammelinhalt kann keine Sonderzeichen enthalten 【", + "b4704dc559a05c5721c095b97c4dbbc0": "Der benutzerdefinierte Sammlungsname wird dupliziert", + "6594b670e8bd06e352f112c1bf194fc1": "Custom Collection Inhalt wird dupliziert", + "a531c58ef7fefbbbd79becda53ede191": "Ein benutzerdefinierter Sammlungsname ist nicht angegeben", + "88c0c3ae4ef97b6069a35672b2caa05c": "Der Sammelinhalt des Körpertyps sollte [$ + nginx -Protokollvariable] enthalten.", + "41353000c0d351db90c9eec095bae879": "Es gibt bereits doppelte Sammlungen mit dem Namen : {}", + "ce78b7a225f05ece35ed7adc68b08a88": "Die zu ändernde Erfassungskonfiguration wurde nicht gefunden", + "521df7df29b44fcee614de96cecca61c": "Die Löschung ist erfolgreich", + "3b0ccb5c759b0941d50e331b22013560": "Nicht unterstützte Erweiterungen: {}", + "7ea48870539b84996d1b1691c22823a7": "Das geänderte Datenformat ist falsch", + "bc64045195c8ed198a69772b3a204ef2": "Die zu geänderten Daten sind nicht angegeben", + "bb02871a5e118841b95b69c5bff55baf": "Die schwarze Liste befindet sich im falschen Format", + "1aac00a8c681100fd27b287c0b0516f1": "Das Build -Konfigurationsformat analysiert falsch", + "f6df35a69157ae1fca6415b043485334": "Die Aufgaben -ID ist nicht angegeben", + "524a477cee9485a5a80a860e2bc5b5d5": "Die Aufgaben -ID ist falsch", + "4b5d95ed20303e337aec42486a0fb3fd": "Die aktuelle Website wurde nicht befragt", + "19e777b7c8cdc1ce56ad2f4fe735b2b7": "Die aktuelle Website ist nicht das laufende Verzeichnis abfragt", + "45484ac5ec748cf3362d425ed7142b75": "Die Regel kann nicht leer sein", + "b36196750a032a791ecc8035853dc648": "Der Regelname kann nicht leer sein", + "cfa7bc3b484b8068e78bc6f55a2aaeaf": "Keine Regel angegeben", + "835365605f9e08c44c0b7f65a422d059": "Der Datumsparameter ist falsch", + "4fa3e528186292138b224a0a1d46ec59": "Der Website -Name ist falsch", + "3769ee974734f97166d6bce6b96e9b4e": "Datenfehler", + "daddfa03b4ea762e009a36ce970b2b59": "Es ist kein Baidu -Konto eingerichtet", + "0379d9c081b6fd9ec2fd86e8672a4e72": "Wenn Sie die Daten nicht erhalten, ist es möglicherweise so, dass die Anmeldeinformationen abgelaufen sind und Sie versuchen, sich erneut anzumelden", + "8057e57596c33acf04619825d625a483": "Das Update war erfolgreich", + "3149165696693c4f6fef18928261a50f": "Es ist kein 360 -Konto eingerichtet", "add390e6467c956fbb7f6da0f51d23d6": "Die Send -Aufgabe wurde ausgeführt", "e8edb193e1cb171a17efe2765d72af71": "Datei existiert nicht", "63d325d5c4dfd07afdf888fdf727542e": "Importieren Sie erfolgreich, überspringen Sie {}, nicht beschriebene Benutzer, doppelte E -Mail -Adresse: {}", @@ -2512,141 +2747,6 @@ "decc12f91f9703a201987fdeabe572a4": "Die Website mit demselben Namen [{}] existiert bereits, bitte ändern Sie sie, bevor Sie sie erstellen", "de67e3b2c564a899fe3195606036a7f1": "Installation erfolgreich", "8d5496d961b4d4e08474b20c1450737a": "Es wurde nicht erstellt, eine Website zu erstellen", - "e75e68c65607a7cfcc570d51345d7e33": "Dateimonitor", - "983e2622c48ae7231c5d29b135133b0e": "Monitor -Verzeichnis hinzufügen: {}", - "15c7df4ddd1d366c2cdfa2689c15369d": "IP -Filterprogramm Compilation fehlgeschlagen", - "423c2da1e20a5f2138cc810423475eef": "IP -Adresse kann nicht leer sein!", - "1e116dc22492b28a7a38a6029416d0e1": "Die IP -Adresse ist im falschen Format!", - "8c8f15a1c1cce8bbdc465e865c804b40": "Die maximale Blockierzeit darf 24 Tage nicht überschreiten!", - "fb86e24ffe47ba150610ba1efd96929a": "Die temporäre Blockierung der IP -Adresse CIDR -Blöcke wird nicht unterstützt", - "bdb199a03e52488d499ea6bb0cb0d1ed": "WAF ist erforderlich, um IP -Adresssegmente zu blockieren", - "1ac8e9ffcea7cf6e9fa183c1b9038599": "Die IP -Daten existieren nicht!", - "04d46623edcb5663566cf43f575de9b2": "Website -Name kann nicht leer sein!", - "b611124a9bad44e328d7ce809912802d": "Erfolgreich einstellen!", - "4dcde63f7fd4415f3b5eb6cb889d135c": "Der Zugabe war erfolgreich", - "d303480175994c6ad240cf24a4a99640": "Website -Konfiguration gibt es nicht!", - "87d1f7257214d09ba39656b72c864bac": "Account Setup erfolgreich!", - "aa5bb2d58da86c4b9160e94d0c4538f1": "URI kann nicht leer sein!", - "ade0ab88aa0ee9c18f0979d5b62b517d": "Der URI existiert bereits, bitte fügen Sie es nicht wieder hinzu!", - "506d9cb0cb2468fd09048bcbe8b37497": "URI existiert nicht", - "cf180f27e678d4e297f690e581961417": "Das Höradressformat ist falsch!", - "1ed0fa9bb8768d56bf2d3232d7067023": "Falsche Höranschluss-Bereich!, Anforderung: 1024-65535", - "e6aa58b2f41bc53f6b84657d47eb35c1": "Der Datenspeicherpfad gibt es nicht!", - "c87be59ecbed944c2b45fea87d62f473": "IP -Statistikmodus Fehler, Anforderung: 0 oder 1", - "fbc4861b0190c90a5388e44d2bbac678": "Die aktuelle Version ist nicht verfügbar. Bitte aktualisieren Sie das Panel und versuchen Sie es erneut", - "8b1d5629a1346da21fcaeb9f8f0db6d2": "Startzeitformatfehler!", - "7a238977c4b13d23ac3e6b151a914cab": "Endzeit -Formatfehler!", - "a87a482f3bced3ce16bc9a351e8b5ce8": "Die Startzeit kann nicht größer sein als die Endzeit!", - "a0ef69b1680461368a9130e770256ca6": "Datumsformatfehler!", - "2493958c6f4051bb8d254d77d77b622b": "Zeitgranularitätsfehler, Unterstützung: Minute, Stunde, Datum", - "4c4258ffd9a69c8e332346241a3cbdae": "Die Daten der Negationszustandsdaten sind im falschen Format!", - "b47f4e8b7540cae56e085231c3c984c1": "Die Zugriffs -ID kann nicht leer sein!", - "fea04488a926034079dc00c5a60a9135": "Das Zugriffs -ID -Format ist falsch!", - "da206b8971dcba715ed8cdd1a82736e1": "Die Zugriffs -ID existiert nicht!", - "fd65e390dd8aa35ea3622658247776d0": "Das Datumsformat ist falsch", - "9a4f1ea39f3a554d4e5431f86eb0450b": "Der Site -Name kann nicht leer sein!", - "b59417ef234946819788acfde92a00a7": "Die Spülung war erfolgreich", - "aaa3736c0541d4a4d82193c2204ec317": "Die Startzeit ist im falschen Format!", - "e579606ed1219291caeb3bfad786dd3f": "Die Endzeit ist im falschen Format!", - "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "Das Datumsformat ist falsch!", - "53c85b9d96ea14f3f8224a5d2e659894": "Parameter kann nicht leer sein!", - "9dc21ed8c6025cab9873847e6e1ca506": "Der Abfragetyp ist falsch!", - "236c6e2f9a266b929b283eda30c2b3b6": "Es sind keine relevanten Daten verfügbar!", - "50fc65b5f19812ccf756b7ad7de7f4cb": "Session_id kann nicht leer sein!", - "8f2adb53dcb8d2c660159b1f8e8012ed": "Die Sitzungs -ID ist falsch!", - "7f4419a5b09e1a04936f6aba6939521a": "Konfigurationsprüfung abgeschlossen!", - "f3df0751d9522bf2e68034bab4cd49a5": "Konfigurationsreinigung abgeschlossen", - "191fae10bdd9d3eb6cb110b524fe40b7": "Die Einreichung war erfolgreich", - "f53208c04e48d7ee19222b6adf343810": "Der Benutzername kann nicht weniger als 3 Zeichen lang sein!", - "251e2cae1dbed2b37f7d16961a606970": "Die Auswahl der Berechtigungsstufe ist falsch!", - "a835325a5600b6571a24111e4d318e2c": "Bitte wählen Sie eine Website!", - "a669655fa991afcfa0cfa3f62286d944": "Die Passwortlänge kann nicht weniger als 5 Zeichen betragen!", - "4d8d30e66ad9aaccc738ad99d5083955": "Der Benutzername existiert bereits!", - "12152390a5bf2ebce0f00b0fb5c650a2": "Die Ergänzung war erfolgreich!", - "4d1b7f489e07d6ca02ca1910a3884c48": "Der Benutzer existiert nicht!", - "3e83aa40dd320efb027151c02aab2871": "Die Länge des Passworts kann nicht weniger als 8 Zeichen betragen!", - "d3748b3102cc8ba898f0f0bec842ce9e": "Die Änderung war erfolgreich!", - "ac75e534c7334e1fd02c68a3993f1568": "Die Löschung ist erfolgreich!", - "ca281da1f13858d0b599d19e18a510bf": "Der Webstatus wird falsch ausgewählt!", - "c88239bc4a113ab0f02acb9bc31b3437": "Der Webport ist falsch!", - "f06e6a5985a91ac55c651e0b573378f0": "Das Web -Sicherheitsverzeichnis kann nicht leer sein!", - "41a871d7ec26993be1367226321e06fa": "Die Länge der Sicherheitseingangsadresse kann nicht weniger als 6 Ziffern betragen!", - "16f83d0969b9f7fe56ac3b55f9dedb26": "Dieser Eingang ist bereits vom Gremium besetzt. Bitte verwenden Sie einen anderen Eingang!", - "066df5a1cf19314e0265a1eb396848ac": "Die Eingangsadresse ist falsch formatiert, zum Beispiel: /my_Monitor", - "794ee58637251012717d7e565aafc2a1": "Das Setup war erfolgreich!", - "2531ce72ea98e5aa8f4953eee783b540": "Keine Fehlerprotokolle gefunden!", - "0fc543dae93d3f76f5f7ff8048f5c398": "Für den Export wurden keine maskierten IPs gefunden!", - "5552ac99360952da2cf289f556ad19a6": "Es wurden keine maskierten IPs synchronisiert!", - "3332452d6ecd015473b133de021a9e06": "Die Synchronisation ist erfolgreich!", - "e6afdb1b63ca733f5d1741c7eff7a64e": "Es wird verarbeitet, wiederhole es nicht!", - "696212205a77e698860ff5195992642b": "Der Reparaturbetrieb ist abgeschlossen", - "97cb85456b49af4258f4c8da38bb576a": "Die geplante Aufgabe wird erfolgreich hinzugefügt!", - "2739213f569742c0782252f41279c060": "Fehlgeschlagen eine geplante Aufgabe", - "1cc4efde4fab0b4bbc2812a8b58f59b0": "Bitte geben Sie einen Site -Namen an", - "3b5ef9e1ea5a8dbd9606075686dbf15f": "Bitte geben Sie einen Datumsbereich an", - "f8412f656685f470a82b74de3d9f24d5": "Die Exportaufgabe existiert bereits", - "96ed379ec1882dcf52f0ff65057efb92": "Bitte geben Sie die Felder an, die Sie exportieren möchten", - "4e698e0709485a0e93a706964b748c5b": "Unbekannter Exporttyp", - "2a2dbc12afac446fe408eb78453bc6c2": "Die Exportaufgabe existiert nicht", - "9ff8782f584db728284fadd719967806": "Es gab einen Fehler bei der Exportaufgabe", - "b4421542e9cff8ce336075b668b8f87e": "Der Exportdatensatz existiert nicht", - "41564d1cd7f8ecb23bcc590cb2217518": "Bitte geben Sie ein neues Datenverzeichnis ein", - "699856a3cc697d8afcfd04dcd2f0729a": "Das angegebene Verzeichnis entspricht dem aktuellen Verzeichnis", - "103422cd692bcaf56a7367075caf2274": "Das angegebene Verzeichnis wird auf derselben Festplatte wie das aktuelle Verzeichnis verteilt, sodass keine Datenmigration erforderlich ist", - "bcbd9605d3b8753bb8afbc765b293e01": "Die Änderungs- und Datenmigrationsaufgaben haben begonnen", - "967a57ad58881afe2c5da6cf0d7fce8c": "Bitte geben Sie die IP -Adresse und den Crawler -Namen ein", - "62b73e6c2a169296e73edf8a4d1e02f0": "Bitte geben Sie eine korrekte IP -Adresse ein", - "0e1a26f6137c04f0f80956210069e46d": "Bitte geben Sie den richtigen Crawler -Namen ein", - "fe8d50ca26f2e864d2bf4a932801bb85": "Unerwarteter Fehler, versuchen Sie, das Plugin zu reparieren", - "21aa998a1dee8774bc88ce2a070bf4de": "Bitte geben Sie eine IP -Adresse ein", - "2e0c672edc06ef05e44de98ac1b7a47d": "Die Löschung ist erfolgreich", - "0f9d9b728fba6427b5ff4da49aee1738": "Die Spinne wurde falsch ausgewählt!", - "e48c86e701ddba3ab084d5457aa58714": "Die IP kann nicht leer sein!", - "3bdb147b7a040582220aa7f1ce2af19b": "Das IP -Format ist falsch!", - "b60597b6a9525341fa5d4d441084658d": "Es wurden keine Auflösungsdatensätze der IP -Adresse abgefragt", - "86e9360dac1c5eece29f32c9aba8011d": "Die Rettung war erfolgreich", - "e5320166e7623b6a39f9a7af7c20c787": "Angeben eines anderen Website -Parameterfehlers", - "c21fbb62edf94306d2e73365e6e7d637": "Der Parameter, der eine andere Website angibt, kann nicht leer sein", - "c7fae0c9886cac3924fe5e459e171ab1": "Löschung fehlgeschlagen", - "9a84d2910d3d36b78d7060f1c77e27f6": "Der Site -Name ist nicht angegeben", - "0987458a95b8bb7d6cdf9fa0630b6407": "Der aktuelle Server ist nicht nginx und unterstützt keine benutzerdefinierte Sammlung", - "b925dfe3295278bd81a85bded66da01d": "Der Statuscode befindet sich im falschen Format", - "2a8793bbb8bc38a7df9d8c796648526a": "Kein Standortname wird ausgewählt", - "6878600890a41b84c145423618ea2431": "Keine Website -Informationen gefunden", - "eff712873c55654bf48eaf421a184e73": "Es wurde kein benutzerdefinierter Sammlungsname eingegeben", - "116208583eac10a8769774a6eaaff926": "Der Erwerbstyp ist falsch", - "fff3d7679cb121a30e68a104b58c934e": "Der Sammelinhalt wurde nicht eingegeben", - "75db42595fc9aee34df76df808712f92": "Benutzerdefinierte Sammlungsnamen können keine Sonderzeichen enthalten ({})", - "9667904e74175dfde9824cb8cd099ce7": "Headerinhalt sollte mit $ http_ beginnen", - "4c61d0ee460aa25eb6b5c413c46c9236": "Der Sammelinhalt des Körpertyps sollte [$ + nginx -Protokollvariable] enthalten.", - "c03680a7ae35b7ce5b62f67b854d3b06": "Der Sammelinhalt sollte [$ + nginx log Variable] enthalten.", - "d621342512cf7910a6dc4e7d736bcc63": "Der Sammelinhalt kann keine Sonderzeichen enthalten 【", - "b4704dc559a05c5721c095b97c4dbbc0": "Der benutzerdefinierte Sammlungsname wird dupliziert", - "6594b670e8bd06e352f112c1bf194fc1": "Custom Collection Inhalt wird dupliziert", - "a531c58ef7fefbbbd79becda53ede191": "Ein benutzerdefinierter Sammlungsname ist nicht angegeben", - "88c0c3ae4ef97b6069a35672b2caa05c": "Der Sammelinhalt des Körpertyps sollte [$ + nginx -Protokollvariable] enthalten.", - "41353000c0d351db90c9eec095bae879": "Es gibt bereits doppelte Sammlungen mit dem Namen : {}", - "ce78b7a225f05ece35ed7adc68b08a88": "Die zu ändernde Erfassungskonfiguration wurde nicht gefunden", - "521df7df29b44fcee614de96cecca61c": "Die Löschung ist erfolgreich", - "3b0ccb5c759b0941d50e331b22013560": "Nicht unterstützte Erweiterungen: {}", - "7ea48870539b84996d1b1691c22823a7": "Das geänderte Datenformat ist falsch", - "bc64045195c8ed198a69772b3a204ef2": "Die zu geänderten Daten sind nicht angegeben", - "bb02871a5e118841b95b69c5bff55baf": "Die schwarze Liste befindet sich im falschen Format", - "1aac00a8c681100fd27b287c0b0516f1": "Das Build -Konfigurationsformat analysiert falsch", - "f6df35a69157ae1fca6415b043485334": "Die Aufgaben -ID ist nicht angegeben", - "524a477cee9485a5a80a860e2bc5b5d5": "Die Aufgaben -ID ist falsch", - "4b5d95ed20303e337aec42486a0fb3fd": "Die aktuelle Website wurde nicht befragt", - "19e777b7c8cdc1ce56ad2f4fe735b2b7": "Die aktuelle Website ist nicht das laufende Verzeichnis abfragt", - "45484ac5ec748cf3362d425ed7142b75": "Die Regel kann nicht leer sein", - "b36196750a032a791ecc8035853dc648": "Der Regelname kann nicht leer sein", - "cfa7bc3b484b8068e78bc6f55a2aaeaf": "Keine Regel angegeben", - "835365605f9e08c44c0b7f65a422d059": "Der Datumsparameter ist falsch", - "4fa3e528186292138b224a0a1d46ec59": "Der Website -Name ist falsch", - "3769ee974734f97166d6bce6b96e9b4e": "Datenfehler", - "daddfa03b4ea762e009a36ce970b2b59": "Es ist kein Baidu -Konto eingerichtet", - "0379d9c081b6fd9ec2fd86e8672a4e72": "Wenn Sie die Daten nicht erhalten, ist es möglicherweise so, dass die Anmeldeinformationen abgelaufen sind und Sie versuchen, sich erneut anzumelden", - "8057e57596c33acf04619825d625a483": "Das Update war erfolgreich", - "3149165696693c4f6fef18928261a50f": "Es ist kein 360 -Konto eingerichtet", "74a7684631b29d814a52e3401576411a": "Das Zeitformat ist falsch", "f146f571f352f376dda16114593afd32": "Nicht PHP -Datei in diesem Ordner", "a5ef7f95136c8e93b70c99cdc25d3b1b": "Die Regel ist leer oder die Regeldatei ist falsch", @@ -2821,7 +2921,6 @@ "e200e571a58c37376c8498c2dc506c95": "Der [Param] -Typ ist falsch, er braucht ein JSON -Format", "96ed9027cae5703401727a3d07764133": "Der aktuelle URI existiert nicht", "466767592170f74d16bcac3034109b33": "Das Pfadargument muss verabschiedet werden", - "d81f83ae44da0682974272b976e8e550": "Erfolgreiche Genesung", "c2d2481eafb29f7e1525c6c63441359e": "Bitte übergeben Sie den Namen der Website", "4950f82b4231ebbfa780bcf4eec4c545": "Bitte geben Sie die richtige IP -Adresse ein!", "abd5af540ed5a858d02b03846d94c1f4": "Ablehnung!", @@ -2914,7 +3013,6 @@ "215a4c6687559aa75d554670e06f3694": "Der Benutzer kann nicht größer als 10.000 sein", "902ee0e2b591f9872a41c319c402e0b9": "Die Textlänge kann nicht größer als 200 sein", "2307dba1bc155ca6f1a5bbf21dc4a258": "Die Pseudo-Static enthält die Richtlinie [! -E $ request_filename], die vor dieser Funktion entfernt werden muss!", - "fa5e4af74d3d68ba371e6dcf84595c3d": "Die Website existiert nicht", "db8b3ac7a5408e3bc0d103bb9b071c7b": "Der Parameter ist falsch, der Datenparameter fehlt", "a0318cc60ff3297d4bef0399dc89fa8d": "Der Parameter ist falsch, der Datenparameter befindet sich nicht im JSON -Format", "8b682d8c8139c2ea686c7a87a03ba292": "Der Parameter ist falsch, der Name des Namens Parameter fehlt", @@ -2950,31 +3048,37 @@ "c9bbcef0c80ca1a2859dd61d0210a117": "Der Parameter [send_type] ist falsch", "a79ff4350874c27408a1858a88058344": "Wenn der Instantiationsnachrichtskanal fehlschlägt, überprüfen Sie, ob der Nachrichtenkanal korrekt eingestellt ist", "50f223163c6f8e9f6b46d66165252cab": "Erfolg des Herunterfahrens!", - "eee590fc0d0f3382fe436b60b02e37f0": "Mailboxinformationen sind nicht korrekt konfiguriert", - "e4e7eb56340203583dd940475fc6e924": "Das empfangende Postfach ist nicht konfiguriert", - "c6beb4efa41b5adbf89191be9d139c70": "Versäumnis, eine Nachricht zu senden, wurde der Empfänger des Sendens nicht gesendet: {}", - "e401ec76f9a9d1dfe7d484e6c4b49656": "Versäumte, E -Mail an einige Empfänger zu senden, einschließlich: {}", + "02eef33534a6f8b3c95fc65e4f98bea9": "Unvollständige Informationen", + "2f45c6e0ccf998c7d31b3764e7da3751": "Anmerkung Namen können nicht länger als 15 Zeichen sein", + "6e3ce0906145a9641111ebbf7735f145": "Telegramm konnte {} nicht senden", + "27285cc132e6c145a142ae2dff054ace": "Der Hinweisname darf 15 Zeichen nicht überschreiten", "b136ab8957d5ede7e3747fcc927a49aa": "Parameterformatfehler", "4ccc991965b1b5bbe3efd6b65a1cd6fb": "Der Körpertyp muss JSON, Formdaten oder NULL sein", "b0b017688b107601f2b3439381c4c61b": "Die Sendungsmethode ist falsch", "4f4979589df1b84ac44fc64a92e2b3f3": "Überprüfen Sie, ob die SSL -Option falsch ist", - "02eef33534a6f8b3c95fc65e4f98bea9": "Unvollständige Informationen", - "2f45c6e0ccf998c7d31b3764e7da3751": "Anmerkung Namen können nicht länger als 15 Zeichen sein", "85284ecbde15ff997e89e6e8f07e399b": "WeChat -Informationen sind nicht korrekt konfiguriert", - "886051a73fe04f873d814dc9823b4064": "Die Dingtalk -Informationen sind nicht korrekt konfiguriert", - "2d1b0e55888d196484a0bfd0f85ff71c": "Die Dingtalk -Konfiguration ist falsch. Bitte konfigurieren Sie den Dingtalk -Roboter neu", "3fb32283f52bea8068006817c5b9b95b": "Die Entbindung ist erfolgreich", "8acd58125d3f7cc181a71926ef5c8a4b": "Versäumte sich mit der Cloud zu verbinden", + "886051a73fe04f873d814dc9823b4064": "Die Dingtalk -Informationen sind nicht korrekt konfiguriert", + "2d1b0e55888d196484a0bfd0f85ff71c": "Die Dingtalk -Konfiguration ist falsch. Bitte konfigurieren Sie den Dingtalk -Roboter neu", + "eee590fc0d0f3382fe436b60b02e37f0": "Mailboxinformationen sind nicht korrekt konfiguriert", + "e4e7eb56340203583dd940475fc6e924": "Das empfangende Postfach ist nicht konfiguriert", + "c6beb4efa41b5adbf89191be9d139c70": "Versäumnis, eine Nachricht zu senden, wurde der Empfänger des Sendens nicht gesendet: {}", + "e401ec76f9a9d1dfe7d484e6c4b49656": "Versäumte, E -Mail an einige Empfänger zu senden, einschließlich: {}", "703480d2938f7c89b563e1d731e94118": "Test senden fehl", "fdc137942b6f2d81fa922d7ace16a94c": "Ein Typ, der von der aktuellen Schnittstelle nicht unterstützt wird", "37f17a256a93646ef0ac721096ec0ce8": "Die gleiche Send -Konfiguration gibt es bereits und kann nicht wiederholt hinzugefügt werden", "2783bb2e5b99dce08138bf58d0880603": "Der entsprechende Absender ist nicht gefunden", "b5a30e6f46753c06ada44d6bbd757599": "Erfolgreich löschen", "81550843cd0a2d7e046cb23a868f8e8e": "Das Senden war erfolgreich", - "6e3ce0906145a9641111ebbf7735f145": "Telegramm konnte {} nicht senden", - "27285cc132e6c145a142ae2dff054ace": "Der Hinweisname darf 15 Zeichen nicht überschreiten", "bb8f2701fa6b013fe8aa74659ceda547": "Taskdaten nicht lesen.", "b12cc83d0b14fe739a930fd84d10ae8d": "Die Aufgabe wurde nicht gefunden.", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Es werden nur Container- und App-Typen unterstützt", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "Version {} zum Anwenden von {} existiert nicht", + "a5c1e82e4d1142b8c7e0bc1499446181": "GIT-ADRESSE IST NICHT EINGESTELLT", + "4e24bbe093c9dfb90092a0f4e71733dc": "Der Filialname ist nicht festgelegt", + "b3c02fc58b92f549f529992c8a696a66": "Der Pfad der ZIP-Datei ist nicht festgelegt", + "eecf07d92b354565df633b06401206a1": "Bitte wählen Sie den Dateipfad aus", "eb9eb53b7ac221c64f6f32c547317d22": "Der Pfadparameter kann nicht leer sein", "0444d0f0434a4d910eb7a06039e39066": "[{}] Datei existiert nicht", "f4c3904df3aa98458b5f99bd5519e409": "{} abgeschlossen, wenn das Protokoll keine Ausnahme, um dieses Fenster zu schließen! \\ r \\ n", @@ -3018,6 +3122,9 @@ "1b6d9f6dc5480584f937681a5d9f0a80": "Cache -Informationen nicht gefunden", "f013f8c1d30136733e3d476dbe3a238e": "Die aktualisierte Konfiguration ist erfolgreich", "3d928c01114361a57fb24c42d9a1ee2d": "Konfiguration nicht aktualisiert: {}", + "795d1693702d930f7fc18edfb0f1c0d3": "Fehlkonfiguration des MCP-Servers", + "a16d1dbe265c57e0417ae396c3c30043": "Kein Dienst gefunden [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] Kein Bild gefunden", "092ca03f32caffd34d3f0532836283b7": "Die Skriptdatei für Deepseek_R1 wurde nicht gefunden", "17ee8c2efafe32a5d204e039e971aee4": "Weniger als 1550 MB Speicher verhindert, dass Deepseek R 1 eingesetzt wird", "d3eb7a147ac81b2f691a6e7ad42cc83c": "Keine Verarbeitung erforderlich", @@ -3069,6 +3176,13 @@ "7b016fb85c09d39e89eb1875e590a6ac": "Wenn Sie die Anwendungskategorie nicht erhalten", "20552a0ed8eef740c631cc049fd940b9": "Fehlertyp Fehler, bitte geben Sie: {}!", "c0963001ffeaec423d1be82d464d6a1a": "Bitte übergeben Sie den Parameter ID/Service_Name!", + "4de8e45b499205551f4a09fd074e5246": "Fehlende Parameter!Ausweis", + "02e85c0a0fa01fabdb5426af13e87853": "Fehlende Parameter!Appname", + "d910ee67a0875a17b6e663f9e19369a4": "Dieser App-Link wird nicht unterstützt!", + "32d030406e8d755a59468a50bd385b22": "Der Container konnte nicht abgerufen werden", + "c8e0f1ed3c37b015ee446297591d172f": "Fehlende Parameter!app_name", + "dad9445733497150b5f2cd29a5aed506": "Der App-Name ist nicht zulässig. Bitte verwenden Sie keine illegalen Zeichen!", + "a04daa98db618d6c2a19aeed5af39448": "Für die angegebene App wurde keine docker-compose.yml-Datei gefunden!", "75d0c803cc4694e08d99d958ef762fcc": "Der Domain -Name kann nicht leer sein!", "676c8a7788ad0ddcb68d53fc7d960679": "Es wurde nicht ein Baota -Netznetz erstellt.Err: {}", "23d07f1e537a8809b268a60a6881f44c": "Fehler bei der Portbereich, bitte geben Sie einen Port zwischen 0-65535 ein!", @@ -3096,11 +3210,30 @@ "2025d918448073508d336b72a7a28093": "Die Datenbank existiert bereits!", "4a8f0a2ac362e62ba4e76f52b5791f0e": "Die Kreation ist erfolgreich!", "76f3f12040afb77724966e2af67ab403": "Bitte übergeben Sie den Datenbankparameter!", + "74fd3ba5b92aa59e471161d2a585a93c": "Der Parameter „model_name“ darf nicht null sein", + "760a1226f2ba701b04963681ab97d575": "Der Parameter „model_version“ darf nicht null sein", + "2a88d88050ddcc0e28f0da4576be2232": "Der Parameter service_name darf nicht null sein", + "fd0f83d70400b1dd9f6ae9c093638411": "Containerinformationen konnten nicht abgerufen werden, die Ausführung von Docker-Compose ist außergewöhnlich!", + "2aec223006d3894d3c1a48bca642c141": "Das Modell wird heruntergeladen. Bitte überprüfen Sie die Protokolle später", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Modell konnte nicht gelöscht werden, Docker-Compose-Ausführungsausnahme!", + "d75a01e0d2c0cb8dad89216653024903": "Modell erfolgreich gelöscht!", "bf483666a33d372f729985363d512d74": "Der primäre Domänenname kann kein generischer DNS sein", "3c4b1f6d2d9ef27ace95adceea599588": "Die Zugabe fehlte und die Daten konnten nicht in die Site -Datenbank eingefügt werden", "20825a634340a0b49b1a5e7f2fe47ea3": "Der Add fehlgeschlagen und die Daten konnten nicht in die Docker -Website -Datenbank eingefügt werden", "653f81d3e5516550e6d5e35abcdbe97c": "[{}] ist die umgekehrte Erzeugung des Panels, und die HTTP -Authentifizierung von [/] kann nicht gelöscht werden!", "d4b66e7369e5077a3c31ad79629f0ab9": "Bitte geben Sie eine Liste von Websites weiter, die gelöscht werden müssen!", + "f0501638237d7e8f934ec55ac3ffb20f": "Wenn die Installation fehlschlägt, überprüfen Sie das Netzwerk oder installieren Sie Git manuell", + "608113c9694987fa65b22ecb164aee59": "Die Umgebung wurde erfolgreich installiert", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "Das Apphub-Verzeichnis existiert nicht", + "7ec67f9826a24ca4a930a6e168ee9611": "Die Lösung war erfolgreich", + "af2c4fa868813e47b80859a0b36e00f4": "GIT-INFORMATIONEN WURDEN ERFOLGREICH KONFIGURIERT", + "2b038e106d4ca5c11b787e16c73253ef": "Wenn Sie es nicht tun", + "12d1b3062be6f8bb374511323c349ed7": "Bitte legen Sie zuerst die Git-Informationen fest", + "798cd5a257af539ecfe6bb44f45ee788": "Der Import aus Git ist fehlgeschlagen", + "8170f5d37a617dcbf16fe8dd414073dc": "Import aus Git erfolgreich", + "6e40e5a8ad741ca4bd714fa52ef32333": "Das Dateiformat ist falsch. Bitte wählen Sie die ZIP- oder GZ-Datei aus", + "c4996991c50032c9b296c11da356acb2": "Importfehler:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Erfolgreicher Import", "e48121dc556643fd31b26c190eedbad3": "Nur Nginx wird unterstützt, bitte installieren Sie Nginx vor der Verwendung!", "135f7ef9aeb50bf7b988416b0a679dff": "Der Domain -Name kann nicht leer sein, bitte geben Sie mindestens einen Domain -Namen ein!", "c82b42d921224a0699f854c28c2450d2": "Das Proxy -Ziel kann nicht leer sein!", @@ -3108,6 +3241,7 @@ "f68c204aa9e12e0513aa7a4569449cfe": "UNIX -Dateien müssen mit.Sperre wie/tmp/flash.app.sperren!", "5c23a6c025d7071599c70575dc858f26": "Das Proxy -Ziel existiert nicht!", "2fba0b6c1602ec254b1bc06bacba575d": "Das Proxy -Ziel muss mit http: // oder https: //!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path ist das Stammverzeichnis, Show Proxy Path kann nicht geschlossen werden!", "772c6f93b20b52d5c998f4b58dbcf8f7": "Port [{}] ist illegal!", "f76df64b8f66e4f6050adf633c91c7fb": "Die Website [{}] existiert bereits, bitte fügen Sie sie nicht noch einmal hinzu!", "6599f1c3d3d3760768d9023827e8edf0": "Reverse Proxy -Projekt erfolgreich hinzugefügt!", @@ -3139,7 +3273,6 @@ "d591e0043cbf6d14950a46178a537626": "Das Proxy -Ziel muss mit http: // oder https: // beginnen", "247d1a7dc144bd12d4c9f8797387babe": "【{}】 Existiert bereits im umgekehrten Proxy und kann nicht wieder hinzugefügt werden!", "36a7891857288c55bc5d87c470212812": "Ich kann nicht leer sein!", - "62dc2bbb0528fe87522c74b113883a48": "Die angegebene Site existiert nicht!", "c8a68e4ff275e827bbbe348eddecbf2b": "Reverse Proxy -Projekt erfolgreich gelöscht!", "88f9a8852b822982a9a3e839813d91bb": "Domänen können nicht leer sein!", "85fb0c03511da1e4d308fd135dec4486": "Der Domain -Name kann keine Kommas enthalten!", @@ -3189,12 +3322,8 @@ "61e795d02f4452904f2574d936c571e6": "Aufräumarbeiten ist fehlgeschlagen, das Cache -Verzeichnis gibt es nicht!", "3c99c479e3c65eac24272afc13cec604": "https port [{}] ist illegal!", "b9629c2dea839825c2f1916b44a154a1": "Nginx -Konfigurationsdateifehler, Inventar!: {}", - "b02ab16f5a7d45a871789d3944a41c69": "Sicherung abgeschlossen, aber nicht in der Lage, den Zeitstempel abzurufen", - "ffad0690fefe9ebaaf4d847a42b19f90": "Sicherungskonfigurationsdatei gibt es nicht", - "b16acd08872bef5685bddff85a29f625": "Datenverpackung", - "df4bb29cbb7fe7e3dbc82e961d5b5b53": "Daten vorbereiten", - "2b2a2a0b0596507029dd0feb9485a216": "Keine laufenden Aufgaben gefunden.überprüfen Sie bitte", "32b169f72b293ef80d35435e9894f8e2": "Initialisierung", + "58ba018dcbe1c47ea0a293fdcee21e63": "Panel-Installation", "67355337eaf300b91de09a8083c93ebf": "Lokale Backup", "99e8ebaa5ad2fafe4e141574f6b4a73f": "Datei -Upload", "bd6d996cdca2252e9b99253b2a587287": "Datenwiederherstellung", @@ -3208,12 +3337,17 @@ "37a5c6e23237ddff7185d375c34eed60": "Aufgabe {} existiert nicht", "f613fc3fb0aee3affafcae3477d42bf8": "Eine Aufgabe wird bereits ausgeführt, Task -ID: {}", "367b4a21be07204266d306508cc92dc7": "Migrationsaufgabe Initialisierung", + "793c8358adb487f79f85acfdc44d54bb": "Migrationsaufgabe erstellen: {} -> {}", + "e597529fcdfa1dab69eadaf1c44088ba": "Migrationsaufgabe erfolgreich erstellt", "c304dcebe892b468725402a369b3dd46": "Verbindung zu Server {}: {} herstellen", "d2f3c14129fe059cf6d99f1583abc23e": "[+] Erfolgreich mit Server {} verbunden", "ae3c4e96fa1411ea25c05ce9a18ae2ae": "Erfolgreich mit Server verbunden {}", "c7203791b356c5f3faf5d8c43d54a575": "Authentifizierung fehlgeschlagen: falscher Benutzername oder Passwort", "10adeeeb866978b5ae637ae2bc13fb96": "SSH -Verbindungsausnahme: {}", + "1e36faff765dbbbe631f424983a21783": "Netzwerkverbindungsfehler: {}", + "f9d5c96265bf9a99b163f5adf699cde9": "Verbindung zum Server fehlgeschlagen: {}", "cd4dc264f41eda817374af0bddcea259": "Verbinden Sie mit dem RSA -Schlüssel", + "5e1b5e437b38bfb11b1e4853f8838d3f": "RSA-Schlüssel konnte nicht geladen werden: {}", "fb947607c0d2814eed45d41a9e3227f1": "Verbinden Sie mit dem DSA -Schlüssel an", "1cc35e618813746cb1bd4658f7ac61a0": "DSA -Schlüssel nicht laden: {}", "e9ba4ba778d8a0b4423c09ff6cb32726": "Verbinden Sie mit dem ECDSA -Schlüssel", @@ -3221,9 +3355,13 @@ "f579ce14b1e98ae9ad4d392279730d9a": "Verbinden Sie mit {} Schlüssel", "696797724fc3db3f012761759f720c23": "Nicht laden {} Schlüssel: {}", "fa4e18c6d3b0c0fa6a5ac1303dda02a7": "Überprüfen Sie bitte, ob das Schlüsseldateiformat korrekt ist oder laden kann oder laden kann oder laden kann.", + "369709628dacb54949b2c711acd93968": "[*] Es wird versucht, die Verbindung zum Server wiederherzustellen (Versuch {}/{})...", "88aefbc5392deac3ab63223d6d82b66b": "[!] Die maximale Anzahl der erreichten Wiederholungen nicht wieder verbinden ({}).", + "908300abff5dfdf254726c2193f3e550": "Die erneute Verbindung zum Server konnte nicht wiederhergestellt werden. Die maximale Anzahl an Wiederholungsversuchen wurde erreicht ({}).", + "5842d2e8785c14b1e357c4ee1dd1a0c6": "[+] Verbindung zum Server {} getrennt", "7463b0247d5614df91270544c6b944bb": "[!] SSH -Verbindung nicht hergestellt", "43234c4b446ff41810dcf807d317cba7": "[*] Ausführungsbefehl: {}", + "db4d271e5cb8fe3192ed73bd624a86fe": "[+] Ausgabe:", "c519185a1f47d37b21866e5f05928dc8": "[!] Fehler:", "6a2909a7dbeca5d8c85843ecd4cd3fae": "[!] SSH -Verbindungsverbindung während der Ausführung des Befehls unterbrochen: {}", "88783238ef5d081aade9e63160d329fb": "[*] Erfolgreich wieder verbunden, den Befehl wiederholen ...", @@ -3238,13 +3376,18 @@ "8a4d20948ccc8034e3118af3bb683da3": "Beginnen Sie mit der Installation von Aapanel", "df97b5d4f31c5cd4a3611774abb6de52": "[*] Aapanel installieren ...", "d91a58f92edb4b30de7e5399908922da": "[*] Aapanel mit dem Befehl installieren: {}", - "79fca63f99a824fc4015d93604433ea1": "Die Aapanel -Installation ist fehlgeschlagen", "f20af8613aed0194f191d660977de57c": "Installation abgeschlossen", "4357633f73240ceb1b14d13877a90ac2": "Aapanel wurde erfolgreich installiert und starten Sie die Backup -Aufgabe ...", - "cd3d4cf5a75fd5f9467f6d0f196dbec8": "[+] Passwort: {}", "f109f7ce6f98f5a3cbf2d273c5749911": "[+] Adresse: http: // {}: {} {}", + "79fca63f99a824fc4015d93604433ea1": "Die Aapanel -Installation ist fehlgeschlagen", + "b1508aec34af599979d919e20b64e385": "Installationsfortschritt: {}", + "7b6725a19c46bc6d47e5a49c5764991f": "[+] Benutzername: {}", + "cd3d4cf5a75fd5f9467f6d0f196dbec8": "[+] Passwort: {}", "6703def4d1bfb870f64ca461a7bffc0c": "[*] Backup -Verzeichnis erstellen ...", "c550206bc8daea4b287573ee31f839de": "[+] Backup -Verzeichnis {} erstellt", + "9e3f708636e9ea820d608629fdf47c65": "[!] Fehler beim Erstellen des Sicherungsverzeichnisses {}", + "9f22d9cb59270cf0f6382a66a63ed8cd": "Größe der Remote-Datei konnte nicht ermittelt werden: {}", + "ff490ab3be22afd2f2a06842935eedd3": "Die Sicherungsdatei {} existiert nicht", "e69d7c21f42d046b365c56045ffca873": "Starten Sie das Hochladen der Sicherungsdatei {} auf den Server", "df6ecb94c7a5f06b78d0bde168e769e9": "[*] Die Sicherungsdatei {} auf den Server hochladen ...", "217c9c3fec268ff4d6c35bd4d5d564ea": "Es wurde nicht ein Backup -Verzeichnis erstellt", @@ -3252,24 +3395,31 @@ "08b57d594c99a8339461fe78ebf95f1a": "Vorbereitung auf das Hochladen von Dateien, Größe: {: .2f} mb", "2f24607a7361d721459e3a12584fd340": "Die Datei bereits vollständig hochgeladen, überspringen Sie den Upload -Schritt", "4d57fe7dc3462ad55cc9bb1623a3eb5e": "[*] Unvollständige Upload -Datei erkannt, versuchen, wieder aufzunehmen ...", + "9c30f21dd1175d2e9b7503e873a52b2f": "[*] Hochgeladen: {:.2f} % ({:.2f} MB / {:.2f} MB)", "04e05f53e1a18a781dbabae6cdd0e495": "Unvollständige Upload -Datei erkannt, die von {: .2f} mb wieder aufgenommen werden", "426e1c0eadfad630c5433af2757cee8f": "[*] Neues Upload beginnen ...", "61eb03fffeb48e199890a5a8a24a5dc9": "Neues Upload beginnen", "148b2912de8b29f47dc234983554ea2b": "\\ r [*] Fortschritt hochladen: {: .2f}% - {: .2f} kb/s - verbleibende Zeit: {}", "470e645fe1f07b6d4e77fc7b16b2a9a0": "Überprüfung der Dateigröße bestanden: {: .2f} mb", + "40070e1f0867f97db0fa33039fae2063": "Datei erfolgreich hochgeladen", + "95dd52c0ce48e72f2021dee1a7a86433": "Dateigröße stimmt nicht überein: lokal {:.2f} MB, remote {:.2f} MB", "f7dac1a705d6bd05b3a42086923cf932": "Upload unterbrochen: {}", "554472ae3f1db37c67fe53e4a2fb53cd": "[*] Wird versuchen, von Breakpoint {: .2f} mb wieder aufzunehmen (Versuch {}/{}) ...", - "40070e1f0867f97db0fa33039fae2063": "Datei erfolgreich hochgeladen", + "1e6aeb0dc8e2567bdec31246c27233a2": "Datei-Upload fehlgeschlagen, maximale Anzahl an Wiederholungsversuchen erreicht", "31c53955195484e892d36d1815e2e5cd": "[*] Start, Backup -Datei zu extrahieren {} ...", "21ec696ab5bc206eac1cf62268824cf0": "[!] Backup -Datei {} existiert nicht", "e344a18f13f2b196f3b56938c824dd5f": "[!] Der Zeitstempel nicht aus dem Backup -Dateinamen extrahieren", "d4a81ed03254ca37166d84ccb7de0bd6": "[!] Die Extraktion der Sicherungsdatei ist fehlgeschlagen", "0838e64585e87c91bdfa34890445346e": "[+] Erfolgreich extrahierte Sicherungsdatei, Verzeichnis: {}", + "0fddb4bae41a7fc9e2de8896d8cb819f": "Wiederherstellung des Backups starten (Zeitstempel: {})", + "5a275e6386d2d3c647f6ccecb422debc": "[*] Wiederherstellung des Backups wird gestartet (Zeitstempel: {})...", "e9b7b10566a85a5356096a630d64d2d7": "[*] Warten auf den Aapanel -Service ...", + "8d7b4f7247dec431d103af1ce34d0233": "Wiederherstellungsmodul existiert nicht: {}", "304e687ee7c78fdae6e70226f61d9708": "Ausführung von Wiederherstellungsaufgaben addieren ...", "ac3f9da9a646fe10c989e74b42fe5e8e": "[*] Durchführung der Wiederherstellung der Operation ...", "ac6fa0596fbb508fe61e44848548b50c": "Ich versäumte es, den Befehl restoure auszuführen", "846cdc02545d18e4b5308d076aa93e95": "Backup wurde erfolgreich wiederhergestellt", + "062ca961d059ebd358098ffdb12f42bb": "Die Wiederherstellung der Sicherung ist fehlgeschlagen. Bitte überprüfen Sie das Protokoll", "f857f6dc6a146a3b125ea3253052ca43": "Migrationsaufgabe beginnen", "53779b59d2ae1ff96f4afdfa6bbc6c7f": "Überprüfen Sie, ob Curl oder WGE installiert ist", "39679b63dca413a83cf5b664d46c929b": "Curl- oder WGet -Check bestanden", @@ -3295,54 +3445,84 @@ "d192d35fb79e54273bedf84f9ee3d772": "Migrate_backup_info.json Datei nicht hochladen: {}", "fdf17802146b46b291164d7c933950c1": "Sicherungsdatei erfolgreich hochgeladen", "97dc827b342454de3a5f9416ee1e513b": "Vorbereitung zum Extrahieren der Sicherungsdatei {}", + "67c40d3544174eb6d6fa63dccaa6bf6e": "Das Hinzufügen einer Wiederherstellungs-Backup-Aufgabe wird vorbereitet", "7ec7fd83e38b6d53374f37bd32a3da09": "Vorbereitung auf die Wiederherstellung des Backups (Zeitstempel: {})", "7fd19264d09d2ff33f1f8b5867354fdb": "Eine Ausnahme trat während des Backups und der Wiederherstellung auf", "ef05e1295515a64356e53d3c11498f25": "Stellen Sie die Backup -Aufgabe erfolgreich hinzu", + "f90b7afaee99210e74fa3bc47d4f4918": "Alle Migrationsvorgänge wurden abgeschlossen", "9e5e797901f9870ebf7a96266bc1e972": "Migrationsaufgabe abgeschlossen", + "dd2a8fc49fd7c92616c228c8039410c8": "Während des Migrationsprozesses ist ein Fehler aufgetreten: {}", "1a119744a8cc132d708306e1fb90543f": "[*] Überprüfung der SSH -Verbindungsinformationen ...", + "ef3ae6d88f5637005f063685ad50c625": "[+] Überprüfung der SSH-Verbindung erfolgreich", "66db9584d2d99eeb99a90f5f4c52d944": "SSH -Verbindungsüberprüfung erfolgreich", + "a0bc8a00e83b79e42010343c31924dd2": "Die Überprüfung der SSH-Verbindung ist fehlgeschlagen", "e871fe05e99da0c88a09686c3b7c88d7": "[*] Aapanel installieren ...", + "1f3ff88a0fdd87e71bf237f3805dccde": "[*] Sicherungsdatei wird hochgeladen...", + "c0b860cd7155af1e642fd0c41ee29262": "Pfad der Sicherungsdatei nicht angegeben", "fa1ab4e94bafd1f5b6ea55e3e9dc33a4": "Die Extraktion der Sicherungsdatei ist fehlgeschlagen", + "d36c2f46c959ee1fb416a947f8e75a47": "Die Wiederherstellung der Sicherung ist fehlgeschlagen", + "de6b9cefab1a252ada4463ee8f015f07": "[+] 所有操作已完成", "496249e9e1cd99dd54146ed6565fe3f8": "所有操作已完成", "20c605607dbf9d6d1d7bb62ddc792ee0": "[!] 执行过程中发生错误: {}", "4020efc99e8c60a0e7d27a5598d501e4": "执行过程中发生错误: {}", "55be882ba3aef502f3a93ad90bb9d613": "[*] Backup -Befehl ausführen ...", + "1a6da8233a4a66ccc90d767967f22d35": "[+] Sicherungsaufgabe erfolgreich hinzugefügt", + "af3c2b419ba0779d81ac91cd3ca246b6": "[*] Warten auf den Abschluss der Sicherungsaufgabe...", "c8eb8110632bb540ca112819e96dc770": "[+] Backup -Aufgabe abgeschlossen: {}", + "0d1135061a5b00b63bdb12c2f3c9461f": "Sicherungsaufgabe fehlgeschlagen, Sicherungsdatei nicht generiert", + "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] Sicherungsaufgabe abgeschlossen (Datei nach Zeitüberschreitung erkannt): {}", "637452f337bdc2991f23593124d62440": "[!] Backup -Aufgabe zeitlich festgelegt und innerhalb der angegebenen Zeit nicht abgeschlossen", "ec3a935e2442ef55924ad758e17b92cb": "Verpackung abgeschlossen", + "ffad0690fefe9ebaaf4d847a42b19f90": "Sicherungskonfigurationsdatei gibt es nicht", "40379fed8ad84c0869a1b3e94f8a56fb": "Ein Backup -Prozess wird bereits ausgeführt!", "20bf8648c4a3ea91ad3057f9aeca5f88": "Starten Sie die Komprimierung und Verpackung aller Daten", "dc72aa669e82dd5ec7cff2ed35f2762d": "Komprimierung und Verpackung aller abgeschlossenen Daten.Datengröße: {}", "bacf615d02bfa3c58728f62490489e9a": "Backup abgeschlossen.Sicherungsdatei: {}", + "ad69c11076734ffc4c0532b54e6f5be3": "Sicherungsdatei wird in den Cloud-Speicher hochgeladen...", "c3a6378e06ff3e479a85b0f15c41cb1e": "{} Hochladen in Stücken ...", + "c722636ded0be8237386a427242ff3b2": "{} Hochladen...", "bb914d2441ee988dcd4d616350272f10": "Fehler beim Hochladen auf {}: {}", "8085ded0444fcde19b9ea4d365502f67": "Sicherungsinformationen nicht gefunden", + "b02ab16f5a7d45a871789d3944a41c69": "Sicherung abgeschlossen, aber nicht in der Lage, den Zeitstempel abzurufen", "46f183fbf6bd1e64702d6930667cf117": "Informationen zur Erschließung von Fehlerabschlüssen von Fehler: {}", + "2cb88461938b0c418391af13f65a727d": "Der Sicherungsvorgang wird ausgeführt, der Zeitstempel kann jedoch nicht abgerufen werden", "269159feb2faab7515c90b9f5de791a5": "Sicherungskonfigurationsdatei gibt es nicht: {}", + "daa55a73708f906c8cee0bb87284740c": "Fehler beim Abrufen der Informationen zum Sicherungsfortschritt: {}", "01ecbbb2b353cf4d915bbe1c1cd5505c": "Serverkonfiguration", "ca3c22c9c94069053b85db0f50373639": "Sicherung der Serverkonfiguration", + "b16acd08872bef5685bddff85a29f625": "Datenverpackung", + "d41c74fcc2dd04880a0285c147188bf7": "Backup-Daten vorbereiten", "806cb06592627effa1a4073fa2f66ce2": "Ein Wiederherstellungsprozess wird bereits ausgeführt!", "37dfdfda0ab7a98140943484fe70a76c": "Dekomprimieren Sie das Datenpaket", + "c415a70c8540eb59121587b3ab5d5cfa": "Beginnen Sie mit der Wiederherstellung der Daten", + "c76bac64baa6fbf5c51ec144c70d91d3": "Datenwiederherstellung abgeschlossen", "da7f5eb715a1a1a2378ee56a5ee24bbd": "Datenwiederherstellung fehlgeschlagen: {}", "ca0af2ce76c89e3bfa4bad3105c21203": "Wiederherstellung abgeschlossen, aber nicht in der Lage, den Zeitstempel wiederherzustellen", + "0f4f13d63e87130a24667c6bd4cb5e2e": "Die Wiederherstellungskonfigurationsdatei ist nicht vorhanden", "0c5d25bf5706190b8ad0d8289a93aeba": "Fehler Erhalten von Informationen zur Wiederherstellung von Wiederherstellungen: {}", + "667a68bf7113541f218081fac58f6815": "Wiederherstellungskonfigurationsdatei existiert nicht: {}", + "e7a91a4400b67b84e7cca61642b93f4d": "Fehler beim Abrufen der Informationen zum Wiederherstellungsfortschritt: {}", "1b4c2c21e77ac36e4097a92dabd55bc0": "Unbekannt {}", "c1173fa3bd3d44530eead89e7edeefe1": "Daten Dekompression", "a76a19147d36f4f2d6801cf602de2718": "Unbekannte Aufgabe", + "5ba4673aac259be67bac9db8cfc9c5b2": "Datenwiederherstellung wird vorbereitet", + "5b43e0e228169e5df9cec81876cd3710": "Fehler: Force-Parameter muss 0 oder 1 sein", "4c3880bb027f159e801041b1021e88e8": "Verfahren", "7d3c180ded4dcc8eade80cd031ab1b5d": "Bitte arbeiten Sie nicht häufig, bitte warten Sie einen Moment", "37b15a5d1e4fa625ea8996de5e378a84": "Erfolgreich abgerufen", - "b0d4998a26f5b5742ad38c4af8817e32": "Ausnahme", "616e012bcc90980f6ddfd2b3c17345f8": "Versäumt, Fortschritte zu erzielen", "9e0a136b55af822e72c8d6716d2d4bf3": "Unbekannter Typ", + "6ac0b58e56cefd76e61bc840dfad94fa": "Die Aufgabe wurde erfolgreich gestoppt", "b808472e703dfd53fdcb59fbe89e3436": "Erfolgreich ausgeführt", + "12b65fbe011be723b4ae981c0d42c44d": "Wiederherstellungsaufgabe erfolgreich hinzugefügt", + "741e160bb129a548e26fbad37c8f674d": "Der SSH-Verbindungstest ist fehlgeschlagen. Bitte überprüfen Sie, ob IP und Port korrekt sind", "e0867cf8c8a1935e8bd681f0ff28a612": "SSH -Verbindung erfolgreich überprüft", "f94e94b4ec479336f36fdf9fe1004b83": "Meine Migrationsaufgabe", "b100f6e1c91f013adf0ca5ce6606a89d": "Migrationsaufgabe erfolgreich hinzugefügt", "fd0099266c1971c5c40036e615d67fd4": "Erfolgreich migriert", "87aa2e739755a6fea3a63876b5a1d48e": "Erfolgreich", - "6ac0b58e56cefd76e61bc840dfad94fa": "Die Aufgabe wurde erfolgreich gestoppt", "d7db03701029007097b8e0cd61a983f6": "Derzeit keine Migrationsaufgabe", + "808781229f7b019ba6a44ea3871e3b6d": "Lesemigrationsaufgabe fehlgeschlagen, bitte versuchen Sie es später noch einmal!", "e728b6a004aa5e61efd25bf815a6e290": "Backup -Aufgabe beginnen ...", "c9d48d6a4ebe28917b5439c91faaff68": "Aapanel -Installation abgeschlossen!", "f5e7895e7c31fedd32b520012910f960": "Migrationsaufgabe", @@ -3354,15 +3534,62 @@ "3a02e4b05ad1b321e855aa6116699b6e": "Migrationserinnerung erfolgreich gelöscht", "334afd10871f8c52a884e307d2e17ccf": "Migrationsgeschichte erfolgreich gelöscht", "2f393a2518f5668880822f47fcdb5cc0": "Migrationsgeschichte existiert nicht", + "df4bb29cbb7fe7e3dbc82e961d5b5b53": "Daten vorbereiten", + "2b2a2a0b0596507029dd0feb9485a216": "Keine laufenden Aufgaben gefunden.überprüfen Sie bitte", + "d4e8a75d522d3e77ae80eadd49b0865e": "Die Liste der Remote-Datenbanken ist leer", + "5d806f11bb91996cafe7836b27a4e770": "Redis -Verbindungsausnahme!", + "1d69261c05f6ce03d2cab5528d443fa7": "Starten einer Sicherung von Datenbankdaten", + "0cf1803cfdfda6f67d12fa7e1c4a25a7": "Backup {} Remote {} Datenbank", + "32d68be800692faddb12c5252fded05e": "{} Remote {} Datenbankinformationen ✓", + "0c64283397c43effb13a2cbe818ce929": "Datenbankdatensicherung abgeschlossen", + "2f7d7cfc04be64fa087e964d41cb26b4": "Beginnen Sie mit der Wiederherstellung der SQLite -Datenbankliste", + "a1248c409fec22277ab13a6bb433188e": "Die Sicherungsdatei SQLite -Datenbankliste gibt es nicht. Überspringen der Wiederherstellung", + "d03ebecb5f420070192de8712926151a": "Wiederherstellung der SQLite -Datenbankliste abgeschlossen", + "ad6937d61b4d6e93a13f03308c66f2eb": "Der Mongodb-Dienst läuft nicht!", + "f60644c6526c4d9afe5b20db75fc2e5b": "Datenbanksicherung fehlgeschlagen, das Exportverzeichnis gibt es nicht!", + "161bb420493657920405937a2cf42c96": "Backup -Komprimierung fehlgeschlagen!", + "20a42330f9241c13c91e3e203449a8a6": "Mangel an Backup -Tools installieren Sie sich zuerst über den Software Store über den Software Store!", + "7eff7c4aeb6bfe736f8a78c0096f92c7": "Bitte setzen Sie sich zuerst Administrator Passwort ein!", + "6e907b499869ab16105a7aba198e13a7": "Das Datenbankkennwort ist leer!Bitte setzen Sie das Datenbankkennwort zuerst!", + "d8a3336243e1c08e8a29c75af1eb528c": "MySQL-Initialisierung erfolgreich!", + "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL wird neu starten, bitte warte ...", + "73af95fd2322196e0d9792df4ca1f566": "MongoDB-Initialisierung erfolgreich!", + "8c9718f3235e7c36c9f400bc68db1ef5": "MongoDB-Set-Authentifizierung fehlgeschlagen!Fehler: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "PostgreSQL-Initialisierung erfolgreich!", + "c46866b7bc29cf9d478835bda10e43ce": "Redis-Initialisierung erfolgreich!", + "4e889bbbfc5e25ebf611e5764b8a358c": "Beginnen Sie mit der Wiederherstellung der Datenbank", + "c9206e74b8d32e1e0a5710c0fe322cee": "Wiederherstellung {} Datenbank {}", + "ecea29915732c5d0001ece74601f3d20": "{} Datenbank {} ✓", + "b61a878149263a02fa99cc635409ee25": "{} Datenbank {} ✗ ({})", + "3fa7c5a9beafa67bb44999cab5cff52c": "Die {} Datenbank nicht wiederherstellen {} Grund: {}", + "e89775cca910deb5e484f631606cceb1": "Datenbankdatenwiederherstellung abgeschlossen", + "9750547146e22f364299bc5f561a3fb6": "Beginnen Sie mit der Wiederherstellung der Remote -Datenbank", + "23f2db47eb6ff16785e5a222c8657f93": "Remote -Datenbankwiederherstellung abgeschlossen", + "b17f6f187c4ecfd392c6367ec2ba6498": "{} Backup -ID existiert nicht, importieren beendet", + "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} Datenbank -ID existiert nicht, die Datenwiederherstellung beendet ab", + "611881e9f5d01b22a447c282aa8aca23": "Die MySQL -Datenbank {} existiert bereits", + "ea31cbc6134300ca816c913d227b605f": "Es wurde nicht {} -Datenbank erstellt.Grund: {}", + "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "Datenbank existiert bereits und überspringt die SQL -Wiederherstellung", + "556843e4a406b780b0cf83c43366a8dd": "Erfolgreich importieren", + "af71c2c0e3813c9a77fe48507ea8e4d1": "MongoDB -Datenbank {} existiert bereits", + "84b4d8c8cdd02488c0f868e97b22a3c2": "Kreation erfolgreich", + "10aec3a9e9564a9851c117b259245136": "Datenbank existiert bereits, überspringen Datenwiederherstellung", + "b819d4259ca3ab0042562acea69e83e1": "Die PostgreSQL-Datenbank {} existiert bereits", + "31b21eca2e62de420cf05e8135089114": "Sicherungsdatei existiert nicht!", + "3eed4851380704f25eec3921befde38f": "Wiederherstellung erfolgreich", "cbea0a592d6a3c48f2418d687cf54200": "Sichern Sie die Terminaldaten auf", "e7e06b2dd59401dcf79acf2e3124d2fb": "Terminaldatensicherung abgeschlossen.Datengröße: {}", "a273d4d4d0cf13abc1d7a4f96b8c851e": "Beginnen Sie mit der Wiederherstellung der Terminaldaten", "1a15a2b43f1dd92e836a592fb180843d": "Wiederherstellung fehlgeschlagen, die Datei gibt es nicht", "95d831166994e434da49f3ed70b73e8e": "Terminaldatenwiederherstellung abgeschlossen", "e3a04ee4c0a034510866948e571c7966": "Starten der Sicherung von Firewall -Daten", + "9a176a20c15e3dc096ed8bc5a05182ba": "Firewall-Portregeln ✓", "ce693968cbf6e5f66af91e3dd2317d78": "Firewall IP -Regeln ✓", + "7ebd5e6b35357be0d5079f674f68ed8f": "Firewall-Weiterleitungsregeln ✓", "8dfa78d85bb1d152b0cafe398b27e1ae": "Regeln der Firewall Region ✓", + "927bb2298acc2c29d1beaff4d1656371": "Firewall-Datensicherung abgeschlossen", "d076d2dde53272dc55d47f34a465ebef": "Initialisieren von Firewall -Daten", + "3e0b3a3e90cc4a1f5abbf3fd1a38c2b7": "Installiert.", "d1b0c3d7a1b5f80626ec1a2395b4f990": "Beginn der Wiederherstellung von Firewall -Daten", "1f35b1eac1045718a64b4133a8e8829b": "Beginn der Wiederherstellung der Firewall -Port -Regeln", "a168f915263109733b87807a0db41e01": "Firewall -Port -Regeln erfolgreich wiederhergestellt ✓", @@ -3373,14 +3600,31 @@ "326c03834ea4914dbb02cf04e0c0164f": "Beginn der Wiederherstellung von Firewall -Weiterleitungsregeln", "b077ba90ec76f05d0e541733e8291e3f": "Firewall -Weiterleitungsregeln erfolgreich wiederhergestellt ✓", "5ed68fe9a3e0530485018c0704d91035": "Versäumte es, die Regeln für die Weiterleitung von Firewall wiederherzustellen", + "03f3f31fd240913a083a78fc2d60f6f8": "Wiederherstellung der Firewall-Regionsregeln wird gestartet", "6f9922502feac3b7e6ede129664e3e18": "Regeln der Firewall -Region erfolgreich wiederhergestellt ✓", "771b376bf4473fc2f1cea6958de2afeb": "Die Regeln der Firewall -Region versäumte es nicht, die Regeln der Firewall wiederherzustellen", "6331b46ffa70ff97b558022d5ae8098a": "Neustart der Firewall", "1bb2a65f17d7e3c685f36f7ff1794338": "Firewall Neustart abgeschlossen", "246f6edb1d9df9b3abe78fc810876c28": "Es wurde keine Firewall -Daten wiederhergestellt: {}", + "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "Beginnen Sie mit der Sicherung der Site-Daten", + "c886466d255b20be0dbde7f1b44b7f20": "Sichern {} Projekt: {}", + "7ecf25c18499d663d2e636d0a99f73a3": "{} Projekt {} ✓ ({})", + "0fc5eeb9bebed19653578a5df99d3e6e": "Site -Datensicherung abgeschlossen", + "9a2e8778b2a816fedb9f83afadcc2341": "Beginnen Sie mit der Wiederherstellung der Website Python -Abhängigkeiten ...", + "fd16d36423b43735556724e0395e8f91": "Standort Python -Abhängigkeiten Restoration abgeschlossen", + "bbf57ca8231bce958a3e528a08491874": "Site -Datenbankeinfüge fehlgeschlagen: {}", + "389f018ba17dc25cb23a5300d8f630db": "Site Backup -Verzeichnis existiert nicht: {}", + "21654e03b247d5e25abaa0ad542883c0": "Starten Sie die Daten zur Wiederherstellung von Site -Daten", + "c8cecd19f4f4a680a5879f828d1c5578": "{} Projekt wird wiederhergestellt: {}", + "35850d3654332477522ee06c756a3c85": "Das Verzeichnis der Source Site nicht löschen: {}", + "c88b730f7a6a312159272ce532947de2": "{} Projekt: {} ✓", + "24ee51964e4ece856493ca28fdb075ed": "Standortdatenwiederherstellung abgeschlossen", "483829cb5ae13bb190eb59acdf4f3231": "Sichern Sie die Datenversanddaten", "8c7a0774ab14bae83a69b8562102fb0a": "E -Mail -Server -Datensicherungssicherung abgeschlossen.Datengröße: {}", + "e8480272035737a247832288f618c270": "Beginnen Sie mit der Wiederherstellung der Mailserverdaten", + "e058c7e1fd9cd1a4fd7ac7240a7765d2": "Wiederherstellung fehlgeschlagen, Datei existiert nicht", "6e6e9dcfdf7bd846ab85a4ff0e0e2f95": "Mail -Serverdatenwiederherstellung abgeschlossen", + "1502c42b339a3dfe20e4c95186b38dc3": "Beginnen Sie mit der Sicherung der FTP-Kontoinformationen", "b5cf2f2c48fb5978825d3341759dd6d6": "{} Benutzer ✓", "120446d8a303de2396a1bb62ba8e8755": "Fehlgeschlagen, FTP -Kontoinformationen zu sichern: {}", "b18010e000c073a3587a89b2931c2770": "Sicherungssicherung von FTP -Kontoinformationen abgeschlossen", @@ -3398,11 +3642,17 @@ "2f29dad748ac1d8d50481ecbd7e05091": "Systemhärtung ✓ ({})", "79bb9b38c599612b8b8f38ddc50f5c25": "Starten Sie die Wiederherstellung von Plugin -Daten", "ee84e47223f5ce39b8bb239376db4af3": "Wenn die migrierte Maschine nicht an einen Aapanel -Benutzer gebunden und auf professionelle Version aktualisiert wird, können Plugin -Wiederherstellungsfehler auftreten", + "30560687e27ef30b6f1cde26359eea6c": "Beginnen Sie mit der Installation der Nginx-Firewall", + "a776b4ccf7343a25223817c8597ca7cf": "Nginx-Firewall ✓", + "d0c97e94eb5061783de7bbad8e7bd295": "Beginnen Sie mit der Wiederherstellung der Nginx-Firewall-Daten", "0010c09bd9f322c3b88a89dd0b52c831": "Nginx -Firewall -Daten ✓", + "427ad80bf462a92719fcff5c1a1be755": "Nginx-Firewall ✗", + "29ad27f749c3f913779d432115de597f": "Beginnen Sie mit der Installation des Website-Überwachungsberichts", "66f3f8adc854963e94a643b706157309": "Website -Überwachungsbericht ✓", "a0dded50b067929299258b3c8fc1b0e6": "Starten Sie die Wiederherstellung der Website -Überwachungsberichtsdaten", "bd43add14ebbd0f448c207c48e1d5ac8": "Datenüberwachungsberichtsdaten ✓", "a7b8bc831a9b36cc5127b5f8ecbec22a": "Website -Überwachungsbericht ✗", + "c922c95c5f7973050d08412a26aab462": "Beginnen Sie mit der Installation des Manipulationsschutzes für Unternehmen", "31d844f4dd95b8a71e8ddbd1b9912ae5": "Enterprise Manipulationsschutz ✓", "8fcd5da199e1e04830a686a576a2e914": "Beginnen Sie mit der Wiederherstellung von Enterprise Manper Protection -Daten", "941b78173e944c6737a858bada098311": "Enterprise Manper Protection Data ✓", @@ -3410,17 +3660,23 @@ "cdcfb9e176572fe14bdc4c88474d8baf": "Beginnen Sie mit der Installation der Systemhärten", "4d86b9c9f554fa3d477a86d2f62aaa1b": "Systemhärtung ✓", "5633c4d754985da6c7fab116964ac501": "Beginnen Sie mit der Wiederherstellung des Systemhärtungsdaten", + "bda583fc184a8e079a37e169a9614e10": "Daten zur Systemhärtung ✓", "479557cf249b3145d91a94ed130c5ecb": "Systemhärtung ✗", "746e85b89c25244ae397c06029badc9c": "Plugin -Datenwiederherstellung vollständig", "69d45b5b241dac0fa1efaf7b6966520b": "Sichern Sie die SSL -Zertifikatsinformationen", "835601ead78ba62b89c4b27956645362": "{} {} Zertifikatendatei existiert nicht ✗ ✗", + "025de5f8c791241d326ec4e086e9898e": "{} [{}] Zertifikat ist abgelaufen ✗", + "ecd204c03ea44719e6fa4ea25569266a": "{} {} ✓", "aa6b67db23e9cb0b943aa6c0def92cb4": "{} {} Backup fehlgeschlagen: {} ✗", "ec56d7aedc9c5242d094ebbaeda5047e": "DNS -API -Anbieterinformationssicherung abgeschlossen", + "b561b1ca5fd89d639144a099f5fe096d": "Sicherung der SSL-Zertifikatinformationen abgeschlossen", "7aa422d849ba11b569187382a3a509d1": "Wiederherstellung von Bereitstellungsseiten für Zertifikat {} ...", "4573d024bbb8e1f8c8efb2582a6a01c0": "Wiederherstellte Bereitstellungsseiten für Zertifikat {}: {}", "baa339aa8e95d46851fd48574cb1d902": "Wiederherstellung von Bereitstellungsempfestern für das Zertifikat {} ...", + "9307ae55fb4a7b878e377790e040eec4": "Wiederhergestellte Bereitstellungspostfächer für Zertifikat {}: {}", "b057e2d52c20f76bf3c788eb9b4873fa": "Wiederherstellung des Bereitstellungsbereichs für Zertifikat {} ...", "41596c0d36a66c44434d5882c3cfa793": "Wiederhergestelltes Bereitstellungsbereich für Zertifikat {}: {}", + "6ffcb0a3e8cdf728b3e7bc45ae221e5a": "Das Einfügen des Zertifikats ist fehlgeschlagen. Bitte überprüfen Sie das Protokoll", "c8a71420e709d8a4d02914a78d9a0e06": "Starten Sie die Konfiguration der Domänen -SSL -Zertifikatrestaurant", "0672a3dc402dc9657fd0a0f1580d1c12": "Keine Wiederherstellungsdaten gefunden", "52f23f668fced51c3e25c781299fbff8": "Backup -Verzeichnis {} existiert nicht. Die SSL -Zertifikatsinformationen können nicht wiederhergestellt werden", @@ -3433,49 +3689,13 @@ "ff0550fa0270ac20419790a51900d815": "Backup Crontab Task Fertigstellung", "a7609aefd5330a1384704e73dc0b4dc0": "Beginnen Sie mit der Wiederherstellung der Crontab -Aufgabe", "48ed083561c2f201d9fe52f6a35ee982": "Die Aufgabe von Crontab entsprach", - "5d806f11bb91996cafe7836b27a4e770": "Redis -Verbindungsausnahme!", - "1d69261c05f6ce03d2cab5528d443fa7": "Starten einer Sicherung von Datenbankdaten", - "0cf1803cfdfda6f67d12fa7e1c4a25a7": "Backup {} Remote {} Datenbank", - "32d68be800692faddb12c5252fded05e": "{} Remote {} Datenbankinformationen ✓", - "0c64283397c43effb13a2cbe818ce929": "Datenbankdatensicherung abgeschlossen", - "2f7d7cfc04be64fa087e964d41cb26b4": "Beginnen Sie mit der Wiederherstellung der SQLite -Datenbankliste", - "a1248c409fec22277ab13a6bb433188e": "Die Sicherungsdatei SQLite -Datenbankliste gibt es nicht. Überspringen der Wiederherstellung", - "d03ebecb5f420070192de8712926151a": "Wiederherstellung der SQLite -Datenbankliste abgeschlossen", - "f60644c6526c4d9afe5b20db75fc2e5b": "Datenbanksicherung fehlgeschlagen, das Exportverzeichnis gibt es nicht!", - "161bb420493657920405937a2cf42c96": "Backup -Komprimierung fehlgeschlagen!", - "20a42330f9241c13c91e3e203449a8a6": "Mangel an Backup -Tools installieren Sie sich zuerst über den Software Store über den Software Store!", - "7eff7c4aeb6bfe736f8a78c0096f92c7": "Bitte setzen Sie sich zuerst Administrator Passwort ein!", - "6e907b499869ab16105a7aba198e13a7": "Das Datenbankkennwort ist leer!Bitte setzen Sie das Datenbankkennwort zuerst!", - "982c5a05ac4dbaee10c865ba767b2249": "MySQL DB -Synchronisation ...", - "a9ace5523668233a3867f26cc86e29c9": "MySQL DB -Synchronisation abgeschlossen.", - "c15645e9ad579e4bfcb536bc5d7015c3": "Beginnen Sie mit der Wiederherstellung der Datenbankdaten", - "c9206e74b8d32e1e0a5710c0fe322cee": "Wiederherstellung {} Datenbank {}", - "ecea29915732c5d0001ece74601f3d20": "{} Datenbank {} ✓", - "b61a878149263a02fa99cc635409ee25": "{} Datenbank {} ✗ ({})", - "3fa7c5a9beafa67bb44999cab5cff52c": "Die {} Datenbank nicht wiederherstellen {} Grund: {}", - "e89775cca910deb5e484f631606cceb1": "Datenbankdatenwiederherstellung abgeschlossen", - "9750547146e22f364299bc5f561a3fb6": "Beginnen Sie mit der Wiederherstellung der Remote -Datenbank", - "23f2db47eb6ff16785e5a222c8657f93": "Remote -Datenbankwiederherstellung abgeschlossen", - "6aca7aec516bcaf7ded80873f08dd55c": "MySQL -Initialisierung erfolgreich mit Passwort {}", - "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL wird neu starten, bitte warte ...", - "a692f58dc09f3e41c133ea460ff3b8df": "{} Datenbankkennwortwiederherstellung fehlgeschlagen.Grund: {}", - "b17f6f187c4ecfd392c6367ec2ba6498": "{} Backup -ID existiert nicht, importieren beendet", - "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} Datenbank -ID existiert nicht, die Datenwiederherstellung beendet ab", - "611881e9f5d01b22a447c282aa8aca23": "Die MySQL -Datenbank {} existiert bereits", - "98b38cd2445396b44204b7201a33f64b": "Die Datenbankzugriffsberechtigungen nicht wiederherstellen.Grund: {}", - "ea31cbc6134300ca816c913d227b605f": "Es wurde nicht {} -Datenbank erstellt.Grund: {}", - "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "Datenbank existiert bereits und überspringt die SQL -Wiederherstellung", - "556843e4a406b780b0cf83c43366a8dd": "Erfolgreich importieren", - "af71c2c0e3813c9a77fe48507ea8e4d1": "MongoDB -Datenbank {} existiert bereits", - "416ad8b141103f9704100ce4070c5975": "Die Validierung des Datenbankdatensatzes fehlte, die Wiederherstellung wurde gestoppt", - "84b4d8c8cdd02488c0f868e97b22a3c2": "Kreation erfolgreich", - "10aec3a9e9564a9851c117b259245136": "Datenbank existiert bereits, überspringen Datenwiederherstellung", - "3eed4851380704f25eec3921befde38f": "Wiederherstellung erfolgreich", + "e9ed6b2a27deb5699565f0441dc713e9": "Beginnen Sie mit der Sicherung der Softwareinformationen", "e690c7866c5dbacbbc7860af5e6a3af1": "Software -Informationen Sicherung abgeschlossen", "cabf299a6cfa5874e23582c535f301c6": "Starten Sie die Installation von nginx- {}", "33ec71107108ed89c0b526d5473526c8": "Installieren Sie den Apache -Dienst", "b815f2a7e299ea99d41d665c728756d9": "Webserver -Installation abgeschlossen", "70510d59e30015790f07ca53c80c5bec": "Starten Sie die Installation von PHP- {}", + "2de6c0aa3c26285104f898b368bcf287": "Beginnen Sie mit der Installation von node-{}", "7d5cf115afd8be7c2a36d03b31d1ce44": "Installieren Sie die Installation von Mariadb- {}", "92e77c2b107f440d6d54062228112f73": "Installieren Sie die Installation von MySQL- {}", "4b09abb2edd44a4510395a297a2ff155": "Starten Sie die Installation von MongoDB- {}", @@ -3485,15 +3705,5 @@ "99782b6a478e499d45a91f9d78e1c73a": "Starten Sie die Installation von PhpMyAdmin- {}", "640c4e334dc9587e212d36e685059478": "Starten Sie die Installation von FTP- {}", "aecfeaaa9e3bcff1f6169598772e90c0": "Beginnen Sie mit der Wiederherstellung des Panel -Laufumfelds", - "c886466d255b20be0dbde7f1b44b7f20": "Sichern {} Projekt: {}", - "7ecf25c18499d663d2e636d0a99f73a3": "{} Projekt {} ✓ ({})", - "0fc5eeb9bebed19653578a5df99d3e6e": "Site -Datensicherung abgeschlossen", - "9a2e8778b2a816fedb9f83afadcc2341": "Beginnen Sie mit der Wiederherstellung der Website Python -Abhängigkeiten ...", - "fd16d36423b43735556724e0395e8f91": "Standort Python -Abhängigkeiten Restoration abgeschlossen", - "bbf57ca8231bce958a3e528a08491874": "Site -Datenbankeinfüge fehlgeschlagen: {}", - "389f018ba17dc25cb23a5300d8f630db": "Site Backup -Verzeichnis existiert nicht: {}", - "21654e03b247d5e25abaa0ad542883c0": "Starten Sie die Daten zur Wiederherstellung von Site -Daten", - "35850d3654332477522ee06c756a3c85": "Das Verzeichnis der Source Site nicht löschen: {}", - "c88b730f7a6a312159272ce532947de2": "{} Projekt: {} ✓", - "24ee51964e4ece856493ca28fdb075ed": "Standortdatenwiederherstellung abgeschlossen" + "3b83e3fdb17c70ca190e263e0bd7173e": "Überspringt die Installation, wenn dieselbe Umgebung vorhanden ist" } \ No newline at end of file diff --git a/BTPanel/languages/en/server.json b/BTPanel/languages/en/server.json index 2a9a32b4..de23f608 100644 --- a/BTPanel/languages/en/server.json +++ b/BTPanel/languages/en/server.json @@ -14,64 +14,30 @@ "4cc4ddc196a295ee4ab82daec08f91a6": "Site does not exist", "25bb121145f918572eea2ef07ff8e89c": "Backup error", "f8320b26d30ab433c5a54546d21f414c": "False", - "4bbfcde12aa36ec375a332f51bf905d6": "Per Day", - "60956b50bb8e8c711d3adb889a70137f": "Per Day, run at {} Hour {} Min", - "78748f15bb65939b6d130c3a5cf8b7dc": "Every {} Days", - "cf9af10dcebe2f12092ff6028a535f08": "Every {} Days, run at {} Hour {} Min", - "e114abed903b9d26c476d4f6cd59c04b": "Per Hour", - "0aef48ea8132b0551fa25a10fd0a6585": "Per Hour, run at {} Min", - "50419faf9662e0c3f283d496bcb8eb72": "Every {} Hours", - "2a0706d7e3ca3ce9e955471a0648dfcc": "Every {} Hours, run at {} Min", - "84d94bf0382f611906b7edd65d6af169": "Every {} Minutes", - "14d27796d1c96457c7c019661a2f32d4": "Run Every {} Minutes", - "6c25e6a6da95b3d583c6ec4c3f82ed4d": "Weekly", - "e1df614d393ab86fd63c5062f7e77936": "Every {}, run at {} Hour {} Min", - "9030e39f00132d583da4122532e509e9": "Monthly", - "69c5e99b9ad8d2b8f11be9a60cbf71da": "Monthly, run on {}Day {} Hour {}Min", - "9d1a0949c39e66a0cd65240bc0ac9177": "Sunday", - "6f8522e0610541f1ef215a22ffa66ff6": "Monday", - "5792315f09a5d54fb7e3d066672b507f": "Tuesday", - "796c163589f295373e171842f37265d5": "Wednesday", - "78ae6f0cd191d25147e252dc54768238": "Thursday", - "c33b138a163847cdb6caeeb7c9a126b4": "Friday", - "8b7051187b9191cdcdae6ed5a10e5adc": "Saturday", - "e00d5128f631253b7b6ed8d5454c0c81": "Unable to write to file, please check if [System hardening] is enabled!", - "685689743579a8f09fcec5d7df04e39e": "Name of task cannot be empty!", - "a5c04aced897c770105858268324b53f": "The current task is Disable status, please open the task before modifying!", - "85305ee6be0f078791c7437ec54dda12": "Failed to add", - "08a1ce771119bb393fa49478216ae809": "log is empty", - "b8fd4dbe5c3650beaec0a3d44d7f0245": "Logs emptied", - "ff47c70e853d0b3635935be883b018e9": "Failed to empty task logs!", - "e0c4da1afd18acbb66bc5fac261a42ef": "The specified task does not exist!", - "998ad6f12ce5285a1b72d4265d9b36cc": "Successfully deleted", - "e274abcaad0a7fff74d9adb67e578d5f": "Failed to delete", - "38fa2d4f8f9a13062c0c9007d97f6a84": "Failed to read file!", - "f57d5686d9dd67f0e81924de8d13af95": "Task has been executed!", - "0b1c93d38c86c8d379886293cdf8ba66": "Task cancelled!", - "d5ef96e383d376beeec28da7acfea516": "Download file", - "f24f6c5f5841340f898a6baaa6478bcd": "Download file {}", - "b2d87dda66a4643c6cf673f787c5f226": "Configuration file not exist", - "9fdd777388a418cef77bce46c1b2511a": "Specified compression format is not supported!", - "4fa407ee74026903dc3013d0b2471eac": "Compression succeeded!", - "ece43dcaac9352f58c422e500266a927": "Uncompression succeeded!", - "b9c1dcb37c44dca19765636de065b1c1": "Backup Succeeded!", - "ac4eb62573e34c36ff426c8a6360c781": "Backup error!", - "438ca4ffcf6fbd44ec129e73a24f0deb": "Select sql/gz/zip file!", - "0edfb4a54d6cf45209a6c7929b8b9919": "Successfully imported database!", - "b0698ab9adefa7515299f311c725ba4d": "Clear sorting successfully", - "8611f56e253646a455ceeb020052fa97": "Failed to modify", - "bef28b813bf12be3924925bbb62883dd": "Executed successfully!", - "fda63bff3e0143980e5761376859b00b": "Execution failed, check if Apache installed", - "22012355700877ab73f89de8014ab20b": "Apache rule configuration error:
failed to activate:

", - "9848c96a046adb1759233241661ff694": "{} service failed to start", - "6ed577cdce37bbd9c66871ac1677dc53": "Service stop failed!", - "572e5703371c43aae299181c0e3567d4": "Please run the program when all install tasks finished!", - "c7138b4b5f7ded833942aef4e230771d": "Command sent successfully!", - "d56f0ed99825b4d62ab84753a65f7f1e": "Panel restarted", - "bff9ef87fdda677f86ae6dddec54a104": "No compatible PHP version found, please install first", + "18928426418954e3a8bc166c892af5c5": "User name or password cannot be empty!", + "14422683e14b8a03fd02b84480703c41": "You have failed to log in many times, please try again in {} seconds!", + "179b0ad118200b66c6e90535d9d8ad4f": "Disk inode has been exhausted, the panel has attempted to release the inode. Please try again ...", + "7edd0140c2f050286273be74039b1df7": "Verification failed, please refresh the page and log in again!", + "9a9b0bf6269ba974cc6a00bb0f0de1d0": "Verification code can not be empty!", + "2b7ae590e0538e70b7a359a94d30f1f4": "Verification code is incorrect, please try again!", + "21f763b26858bf8ff40f931d714ab106": "wrong user name or password,{}", - "6e264f3408e9b769d3fb7e2c807f301f": "The operation failed. Please check that the key is correct", - "d4ac5985eccd334896e3cf23706e43b0": "Added successfully", - "92188d43af4373bacbf00951da16532a": "Failed to get the website path. Please check if the website exists", - "ceaefd9a46d78491b9fdb912b5c71eeb": "Failed to create the validation file. Check if the write was blocked", - "1bb3608b1bc684c3dc85090db249346b": "No certificate information was obtained", - "c8c7de7f5b740307d55affea39b79993": "The setup was successful", - "131c05252110792212e3e3666a351154": "SSL related configuration, do NOT delete or modify the next line of commented-out 404 rules", - "4ba7e24ac1607ab761c124ca7352ad08": "Error page configuration, allowed to be commented, deleted or modified", - "31bb30ca4135945adbe0c2daa9545b39": "PHP reference configuration, allowed to be commented, deleted or modified", - "f9da3e5ae75ce0ae39884ae2ea295a66": "URL rewrite rule reference, any modification will invalidate the rewrite rules set by the panel", - "73e1f7d487ad73d55414fe26ea11cbf0": "Not specify parameter [sitePath]", - "6aabca3a3e1c79bd5837a1ddae95fe70": "There was an error creating, please try again.", - "256c9a85375f57f2dc9f6f318c6578f1": "Create the website [ {} ] successfully", - "481df7dbcd4c0317088bde8c913d5893": "Please fill in the website path", - "b1b2484c013c646d7f41d6b2f495b6ef": "The website path cannot be the root directory [/]", - "1c3bff99564f1370a5b1bf6c0773f8c4": "Please check if the [Email] format correct", - "af9091566e669f016edf16ba97464cbe": "Password very weak, if you are sure to use it, please tick [ Allow weak passwords ]", - "b0dbad478d4f07c38aec8f440ed98b66": "Please install Mysql and PHP first!", - "46491fef7553177ef58a55b2db917072": "Please do not set the website root directory to the system main directory:
{}", - "59d5fef323e89ded50ed6036848a97f3": "The format of the webname parameter is incorrect, it should be a parseable JSON string", - "078a3d3e263be2851ddfd9fa059d098f": "Port range is incorrect! should be between 100-65535", - "50370024fdd22dc69099a46d011b20e2": "PHP version cannot be empty", - "44bd68c6703adf65ff21c63e9a876aa1": "Format of primary domain is incorrect", - "23eded6de9c06451f67ecb7ed3a8c95b": "Primary domain cannot be wildcard DNS record", - "f54249d2613e48be05837ec9cd615a5f": "The site you tried to add already exists!", - "b537e2d1946d559d3de4fb3c045d290f": "The domain you tried to add already exists!", - "f91c641aef33cf8ef4a29bc5d3a7193a": "Failed to add, write configuraton ERROR!", - "c3c7869d22051eaa78a831834a398351": "There was an error deleting, please try again.", - "e2d272e229674e4c6765fab24a323604": "Delete website [{}] successfully", - "aa5f20e061736fe68a915163e7e6d122": "Specified site does NOT exist", - "f11e72daff0ce484f4c401bd0bd28ae5": "Successfully deleted site!", - "c57d58c6bbd34144325871d75b42a577": "Please enter the host domain name", - "5c7b7c2f6ed78eefdd77aaa3dddde61a": "Domain cannot be empty!", - "ef446d50df1605a582f9b44b57327536": "Domain name format is incorrect!", - "68ae44808f90043dee02358ee768bf6e": "Format of domain is invalid!", - "1628c2a26ab6d1211b435f85782f8acc": "The specified domain name has been bound by the website [{}]", - "925dc658ddf0f69509632848bcd39577": "The specified domain name has been bound by a subdirectory of the website [{}]!", - "7b02cf82181f516626a36b86c6a686f5": "Successfully added site!", - "9b3c4205f2f408790c9c1c5da53c3bfb": "Failed to get PHP version!", - "abc3db87d5608cc9559556468a696a35": "Please choose a domain name", - "7807e17f2bf49fb802bba1a04822ea16": "Please choose a port", - "e5925c3a126a66c0565df6d8ef49550e": "Last domain cannot be deleted!", - "17088ffed1e537b917a6ecc9dc957159": "Private Key ERROR, please check!", - "26924bd958e212f07c31b6ffca9cbf8c": "Certificate ERROR, please check!", - "44e2c1c3cfd8d248d7c9190a8f07c0ee": "Error getting certificate", - "fc0d039d9dcf3905ae8032c9cb33f475": "ERROR:
{}", - "ddc2be35a5ed0bf09a88139c4ad10b4a": "Same as original path, no need to change!", - "84a8921b25f505d0d2077aeb5db4bc16": "Static", - "ad74aa2854e988c3157f92e0120bb19e": "Apache2.2 does NOT support MultiPHP!,{}", - "4018ce634a10d352867f04962f107c14": "There was an error setting, please try again.", - "f1bef4fd5183ae83a5896c32a3d5e81d": "Custom PHP configuration only supports Nginx", - "879e0d022ff268704f93a7e2b504c224": "The PHP connection configuration cannot be empty when customizing the version!", - "73d6e709b568b43405052cec999798c5": "The PHP connection configuration format is incorrect, please refer to the example!", - "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "The specified unix socket [{}] does not exist!", - "751ac8fd72a0acd79772370efcae9c89": "Unable to connect to [{}], please check whether the machine can connect to the target server", - "3cb7d414f8ae92b2b29057f91346f7dc": "Setup failed, no enable-php-xx related configuration items were found in the website configuration file!", - "c7a6a892c6cdfc9b0fedefb0a1d2083a": "Requested directory does not exist", - "4622561ceaaecb6ef7dd51e65c9f4ec5": "Base directory turned off!", - "e4ec1f40794bdf92e7261e6e0c51895a": "Base directory turned on!", - "eeddf79f68ffe029ed83fddcba46b35f": "Old proxy", - "1592678472ea1b601fd74abff47c56b1": "Can NOT get target URL", - "18edd294853d381dbe0d612ab58bc123": "An error was detected in the configuration file. Please solve it before proceeding", - "8b5899be4df3aedb03c6fbad9055ed1c": "Database name cannot be more than 40 characters!", - "111376d92c49c1a6c1522a2ef1dac23c": "Specified reverse proxy name or proxy folder already exists", - "09a988aa2e3185fce9fa8f4e8710b862": "Cannot set both directory and global proxies", - "012a8e497feddccb8e4a47aa5e2dc156": "Please enter number", - "90da7d2de9aa12ec32ee04172ca0d2d3": "Sent Domain format error :", - "440544138d3ed8a2229792c88bad3bd8": "The target URL cannot be accessed", - "faf2457853593b3296699c4adacc7825": "Please enter the content to be replaced", - "748e5ad33460a17cf26c8024bb0a1620": "The content to replace cannot be the same as the content to be replaced", - "195d5db9e1559f06348715bc3a822036": "A global reverse proxy already exists in the rewrite/nginx master configuration/vhost file", - "cc38d47ec9ac62ffc67a5db9c08d5d52": "Destination URL cannot be empty", - "fb79afbbe0688565b7894b644dfd798d": "The target URL cannot be [http:// or https://], please fill in the full URL, such as: https://aapanel.com", - "29c9da826ae868c8c6444328f48bcf40": "Reverse proxies are not currently available for Wordpress sites that use one-click deployment", - "a59dfc3ae22fd96d46011503a4f40744": "Proxy suspended", - "118f77feff598376a776af9b8e738efc": "Saved successfully", - "078bb5f960587121c7cd606ddba5ad58": "Please enable the reverse proxy before editing!", - "fe7185cec796e18d58f8e84dc4da946f": "Currently only support Nginx", - "222a267cc5778206b253be35ee3ddab5": "Current", - "38441d4a89765279852ca2830aa89c83": "New URL rewrite rule has been saved!", - "c27a45bf16475a157ca1014cf886bb56": "Please enter a note", - "9a962a24e9b7b07800d6b7c7efd86f30": "Username or password cannot be less than 3 digits!", - "7eb904262649f9b2e4ba52e2bba9db71": "The password fomart is wrong, please do not use special symbols for the first two digits!", - "492c7f01035f1cf9b88756f897f02b87": "ERROR, primary domain cannot be IP address!", - "0a2b8c4a98495f6af19be9c1c342844e": "Succeeded, please test JSP program!", - "49281f9c7680652b1d110625da5c8cca": "Tomcat mapping closed!", - "ec3b07b78fd4f3307c84858957ddbd0f": "Get Site run path false", - "02e602e968050352febfc4ddcae332f0": "OpenLiteSpeed does not support setting the default site", - "362538d60f495840284c667e67831b16": "Scan directory", - "4f137439eb93e6c752873c8af2d3d1cb": "Scan Task has in the queue!", - "613a6375944c3035efe735e87766fbbd": "Update Succeeded!", - "6177805463a6a4f28e61bb3435bee13b": "Successfully set, the site will stop automatically when expires!", - "1a69486f70b6baf749e6e1c4d5fcf689": "URL suffix cannot be empty!", - "2f858201b6da6a5419c5af8fd26f815c": "Anti-theft chain domain name cannot be empty!", - "f36c15e89d61e07fb44095ae920b8fbc": "Please turn on the hotlink first!", - "70dc560b6f4af6d210c9eeb8434c571c": "Response resources should use URI path or HTTP status code, such as: /test.png or 404", - "aa8722f512ecebf5dae454e526402508": "Please turn on anti-theft first!", - "bd0d7585c64988d80747a32fb0e3e15e": "Log is empty", - "a17f5bc22553d897f6363867c0165256": "Default category", - "0d0d87a34e787b2f4a59d912d4d441e4": "Category name cannot be empty", - "6818a5095a78431eb3c99fe022b687b0": "Category name cannot exceed 16 letters", - "c4f16bb3d87b92062f73954c86485f64": "Add up to 10 categories!", - "5fd53f59be2a3dee94df28886840b9a3": "Specified category name already exists!", - "1c44b4096bb88e459ddadef895bea1c2": "Specified category does NOT exist!", - "8f52253b1f007fd14ed0f60b89593d2d": "Category deleted!", - "b51515085fc6ea6a07192c61e068c124": "Successfully modified", - "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "This function only supports Nginx/Apache", - "6678fd91bc04eb1e34e3474809387e7a": "Query failed , does not exist address", - "7ac0a27b48f2931c7f294b996fe6b273": "Error parsing configuration file", - "ee3a15a26aee235ac255e37342b444bb": "Setup successfully", - "79799f8c2f024685df774550ea5b427d": "Website [proxy,redirect,http to https] are not set to restart automatically", - "29faf053a22c387532298233399e66f9": "Configuration file parsing error", - "6c881e76c76b1f102bcb97a8b4f682f6": "This website has turn on [proxy,redirect,http to https] auto restart", - "13fc1b8a101214be1a472db8de1bd8fd": "Website has turn off auto restart", - "1fb58c8e2967a648359d13aa22d9e493": "The site does not exist!", - "b0cd0c2bc5c6ce9f71127d60872209ce": "Website [{}] renamed: [{}]", "3f96c422b7a59fe6e8bf7531c647a64c": "The specified account does not exist", "cb5e7fdc51569eedfbf3a9a0d3c819cc": "The specified order does not exist!", "8bd32b310825307a909c682871008642": "Order deleted successfully!", @@ -398,12 +121,103 @@ "6953519c64b998226d0294b961deca62": "Revoke certificate", "1bbd31373b98ad5a6320af00b2a15ee0": "Renew when the expiration time is lte certain time", "8fcc1d6fd24fad55d9e8fea6631886db": "Please enter the index of the order to be revoked in the --index parameter", - "7b84e677e97bd4943a6639a22c1a1704": "password参数不能为空", - "5f3160e82bc0c5278923b609841e588b": "开启成功", - "f288f8c23f8d03a699a49bf1fb8e7f53": "ssh选项失败", - "d3118650da719b6b0cc83230204491de": "加密方式错误", - "24513dc8c02bb021a1c944009c19215b": "开启失败", - "8a3140f96ba5c5df5560d0bd27aa4cd8": "关闭成功", + "b0698ab9adefa7515299f311c725ba4d": "Clear sorting successfully", + "8611f56e253646a455ceeb020052fa97": "Failed to modify", + "ebdcf538e79de6922f498cc8c735eab5": "The system firewall is not open", + "a296add6341b715925c0be2b83514ee3": "IP address you entered is illegal!", + "3433b9709eed7423f1900061ef743af6": "Disabling this IP will cause your server to fail", + "57e7b2320dd3984312335605d57ee0f8": "The IP exists in block list, no need to repeat processing!", + "4bb8df740a7119979ff7854d034200a8": "IP address is illegal!", + "998ad6f12ce5285a1b72d4265d9b36cc": "Successfully deleted", + "ff9c66f005c08efd15752fb261057b46": "Port range must be between 22 and 65535!", + "b26b09909c3b090f31dba4a0986e1b84": "The port exists, no need to repeat the release!", + "408f58c25fc55295236fbb64a2d884ff": "Failed,cannot delete current port of the panel", + "e274abcaad0a7fff74d9adb67e578d5f": "Failed to delete", + "ad6fc2abb89b42d391b4bf84e8e6cd2d": "SSH service turned off", + "0692d6f0819524aaa05e73f03022ec5b": "SSH service turned on", + "d0749aaba8b833466dfcbb0428e4f89c": "SUCCESS", + "ffdc24f916f3071233ca7710aff032c8": "{}", + "6e264f3408e9b769d3fb7e2c807f301f": "The operation failed. Please check that the key is correct", + "d4ac5985eccd334896e3cf23706e43b0": "Added successfully", + "92188d43af4373bacbf00951da16532a": "Failed to get the website path. Please check if the website exists", + "ceaefd9a46d78491b9fdb912b5c71eeb": "Failed to create the validation file. Check if the write was blocked", + "1bb3608b1bc684c3dc85090db249346b": "No certificate information was obtained", "b0a783e3ada9e792e3ff3ca4eb477c80": "Certificate does not exist!", "fca4e47d90253577901e874737b87dc0": "Certificate read error!", "813595d6c41e417bea96adb1ad89043f": "Certificate format error", @@ -422,9 +236,391 @@ "501ffa672acb20c4764563d6e839879b": "Failed to connect to the cloud. Unable to delete data on the cloud.", "a810cdf921c5b92a3f6d29667ec78ffc": "del success", "df569fbc92d17644e83b44541596633f": "Failed to connect to the cloud.", + "140bda69874872f8402052c613c0b3b9": "aaPanel Alert Test Email", + "76a1ec4a3fcdc304394ff14dc90f8072": "The number of panel threads should be between 1-1024", + "dd7e82b5fb3c67e3e41d96f22ba838fd": "New panel port", + "248336101b461380a4b2391a7625493d": "Saved", + "40624aabb99173387dd6d575759b12db": "The certPem parameter is missing!", + "37db9679113eef382992a1478f1b79ff": "The privateKey parameter is missing!", + "7063e5fbf2ea8d0809fe307b6df00467": "Certificate saved!", + "d2174fc17fcd785706114088b84dbbce": "Temporary login URL has been generated", + "b5101eb6e685091719013d1a75756a53": "\\1", + "0bfe47819da04212a33dac83b71430e8": "\\2", + "bef28b813bf12be3924925bbb62883dd": "Executed successfully!", + "fda63bff3e0143980e5761376859b00b": "Execution failed, check if Apache installed", + "22012355700877ab73f89de8014ab20b": "Apache rule configuration error:
failed to activate:

", + "9848c96a046adb1759233241661ff694": "{} service failed to start", + "6ed577cdce37bbd9c66871ac1677dc53": "Service stop failed!", + "572e5703371c43aae299181c0e3567d4": "Please run the program when all install tasks finished!", + "c7138b4b5f7ded833942aef4e230771d": "Command sent successfully!", + "d56f0ed99825b4d62ab84753a65f7f1e": "Panel restarted", + "3d8c9e517719022b27ad5f27c578fa31": "Get RAM False", + "d47ab7b9ce539ba13f4e045561bb8ed7": "Get Uptime False", + "8e39175bab478762d3d029bee327c704": "Get Restart Time False", + "e16cf27704f83c8b0a0efc16886ea75d": "Get date False", + "c158c8096b76b85803e71232b2dd5e74": "Get time detail False", + "a6ec06b5eb6a42e13e072d2e992e31a0": "Get reqpersec False", + "cdd32490a46567fd0c1ee9d4b170b762": "Get TotalAccesses False", + "62b939086708b37d68c00cb713994b52": "Get TotalKBytes False", + "13b06d17b35dfeeafa50e12ad9ec1735": "Get BusyWorkers False", + "724fc9214ccce3e6a5787648240a4533": "Get IdleWorkers False", + "7a7f329389283fdd3290c735f90946e9": "mpm_event_module conf not found or /www/server/apache/conf/extra/httpd-mpm.conf is empty", + "c22cf8376b1893dcfcef0649fe1a7d87": "Second", + "db669c6377ab90eef78800a48fd4a453": "Request timeout", + "af52f5340c065f4d38182f7a27d59f75": "Keep alive", + "70b46e57f3c33abdb9558bc5c3a234d9": "Max keep-alive requests per connection", + "6868568c3abc547e622a303891a906b0": "Default processes", + "224114c62dceb7ebee2db43c6c79a961": "Maximum number of idle threads", + "3c60809d9a5a0900dfbc28bb017e410b": "Minimum number of idle threads available to handle request spikes", + "3783030daf8154be6e11fc4160c229c3": "Number of threads created by each child process", + "2f25e4b1a2cb84576740da749a2daef2": "Maximum number of connections that will be processed simultaneously", + "72e3edfd72758944413b1e4e9c432f1e": "Limit on the number of connections that an individual child server will handle during its life", + "26c74a59d7d10bd927dce45e449943f1": "Configuration ERROR", + "b2d87dda66a4643c6cf673f787c5f226": "Configuration file not exist", + "bff9ef87fdda677f86ae6dddec54a104": "No compatible PHP version found, please install first", + "4bbfcde12aa36ec375a332f51bf905d6": "Per Day", + "60956b50bb8e8c711d3adb889a70137f": "Per Day, run at {} Hour {} Min", + "78748f15bb65939b6d130c3a5cf8b7dc": "Every {} Days", + "cf9af10dcebe2f12092ff6028a535f08": "Every {} Days, run at {} Hour {} Min", + "e114abed903b9d26c476d4f6cd59c04b": "Per Hour", + "0aef48ea8132b0551fa25a10fd0a6585": "Per Hour, run at {} Min", + "50419faf9662e0c3f283d496bcb8eb72": "Every {} Hours", + "2a0706d7e3ca3ce9e955471a0648dfcc": "Every {} Hours, run at {} Min", + "84d94bf0382f611906b7edd65d6af169": "Every {} Minutes", + "14d27796d1c96457c7c019661a2f32d4": "Run Every {} Minutes", + "6c25e6a6da95b3d583c6ec4c3f82ed4d": "Weekly", + "e1df614d393ab86fd63c5062f7e77936": "Every {}, run at {} Hour {} Min", + "9030e39f00132d583da4122532e509e9": "Monthly", + "69c5e99b9ad8d2b8f11be9a60cbf71da": "Monthly, run on {}Day {} Hour {}Min", + "9d1a0949c39e66a0cd65240bc0ac9177": "Sunday", + "6f8522e0610541f1ef215a22ffa66ff6": "Monday", + "5792315f09a5d54fb7e3d066672b507f": "Tuesday", + "796c163589f295373e171842f37265d5": "Wednesday", + "78ae6f0cd191d25147e252dc54768238": "Thursday", + "c33b138a163847cdb6caeeb7c9a126b4": "Friday", + "8b7051187b9191cdcdae6ed5a10e5adc": "Saturday", + "e00d5128f631253b7b6ed8d5454c0c81": "Unable to write to file, please check if [System hardening] is enabled!", + "685689743579a8f09fcec5d7df04e39e": "Name of task cannot be empty!", + "a5c04aced897c770105858268324b53f": "The current task is Disable status, please open the task before modifying!", + "85305ee6be0f078791c7437ec54dda12": "Failed to add", + "08a1ce771119bb393fa49478216ae809": "log is empty", + "b8fd4dbe5c3650beaec0a3d44d7f0245": "Logs emptied", + "ff47c70e853d0b3635935be883b018e9": "Failed to empty task logs!", + "e0c4da1afd18acbb66bc5fac261a42ef": "The specified task does not exist!", + "38fa2d4f8f9a13062c0c9007d97f6a84": "Failed to read file!", + "f57d5686d9dd67f0e81924de8d13af95": "Task has been executed!", + "da07d14105efb3ba634c1d35618447ab": "The parameter is incorrect!", + "ea2b2676c28c0db26d39331a336c6b92": "start", + "ef399b2d446bb37b7c32ad2cc1b6045b": "stop", + "0b12c9f33fde8b15970c7390c54d7ca5": "failed to close the log", + "b55eed05ce4922d8a6c881f0f2b05bbf": "successfully set", + "5afb8de2bbb11b44592503000290c173": "The specified plugin does not exist!", + "8b266978ab5161642a2d95d3f03f3945": "Please uninstall [{}] first", + "ad626ac6de7ea412c9156f73b7666cd4": "Depends on the following software, please install [{}] first", + "acf7b210e1f5fbdb2e24af573f0e1831": "At least [{0}] CPU cores are required to install", + "d0c8fa89a1eccf8a377d11eea540fd0c": "At least [{0} MB] memory is required to install", + "52e44340370925b110c7fba475b805e3": "Only supports [{}] system", + "e3b16d9e5a24c8d27578d7670e840200": "Depend on the following software, please install first [{}]", + "a0405fa5f045a30ba3aeff1c65ad8c38": "Installation process canceled!", + "a13ed989898e4c7529942fa656ff6733": "System critical directory is not writable!", + "7a71d673b95a1bd0d10705c865f5a626": "1. If [System Hardening] is installed, please turn it off", + "c5041819fd15366b66dd9539116ea6ad": "2. If Yunsuo is installed, please turn off [System Hardening] feature", + "101935ed7ea8a021a536a614363350eb": "3. If Safedog is installed, please turn off [System Protection] feature", + "8c4aa1aa63c24703138358074a515b99": "4. If other security software is used, please uninstall it", + "2eaba30c177044d12634b22016f5dd99": "Please specify the software name!", + "0d3811da2c2a4315b921093d36e6759d": "Sorry, currently OLS official does not support php8.1", + "0d06a64610d5755d0d395305f9b3a664": "Please log in as aaPanel account first", + "2c9056dcb1285057d5248e7ed16d2b4d": "File hash verification failed, stop installation!", + "fb95b07b4c663c0a52cda545eef1d869": "Installation succeeded!", + "fac5f4d9d430e77699ec114d346c9bb2": "Installation failed", + "349838fb1d851d3e2014b9fe39203275": "Install", + "a9ba3c226edabcfe1978d6f4c5daf404": "Nginx 1.8.1 is too old, no longer available, please choose another version!", + "75d7d596e2cc30d482111fae7b4f6d88": "Installation task added to queue", + "ee83f5efe8a95f2e8529da7d4bb01d2b": "Uninstallaton succeeded", + "4432eb207b29c9ead490158b76397532": "The database list is not empty. For your data security, please backup and delete the existing database.
Forced uninstall command: rm -rf /www/server/mysql", + "ba922eb50c83147a9bc0e9f40877d986": "Uninstallation succeeded", + "b860df98df6ab84521a4cef036973028": "Scoring range [1-5]", + "eb536feb2c569974c2b5cf85cae91041": "Connection failure!", + "a70188f907ee9df93a4b749109a23460": "Failed to get software list ({})", + "16ad37f5aafc6478f2f6d63d70554530": "Please do NOT repeat adding", + "18ea7bdb25b2a66507ffb1bb8b42fefa": "Dashboard only display up to 12 software!", + "2aa461271893ae0493789e9e8f248fdc": "Shortcut Bar only display up to 5 software!", + "98cb93d354af289a900cd9e03cee2df2": "Installation failed!", + "17e4e003ade65cd7a54131d3404d2f98": "NOT opened", + "bda730e0e5c7444ef6f4f49957ab4f39": "To be paid", + "24fe48030f7d3097d5882535b04c3fa8": "Expired", + "cbfcfe47e7420af71ce1666844c565a3": "Sort saved", + "6a20d0daaec1ce3950a321704041dc90": "This plugin does NOT have template!", + "6f5cb320fb3a7e303403054320ad943c": "Software list updated!", + "b269cd272a31017961c245e2c84a1a2f": "File download failed!", + "88183b946cc5f0e8c96b2e66e1c74a7e": "Unknown", + "84f7539fe8674bb0689347dc7acd7b43": "No plugin info found in the archive, please check the plugin package!", + "affc007de5f6791707f3de155a3a642a": "Temporary file does NOT exist, please re-upload!", + "117f1bb083c7d556079a3c77093be5e2": "Export failed, please check permissions!", + "a8f375e795e0a130837f2a468518a413": "Non-compliant names can only be numbers, letters, underscores", + "a06490b9729d0868e31d834c9bffa0bd": "The specified custom compilation parameters do not exist!", + "5e71fccee12caedf853a7313ea204721": "Error: Name or service not known", + "b6e3d7366f73e2c5e32717d679db6474": "Error: Failed to establish a new connection", + "cdffdb1c794cf0dd777b3941a31459e4": "Error: Read timed out", + "4573823cc04a9cbf8a7bb254b762db91": "Error: Connection refused", + "e3c2e426ad1b23571c48ec572ca675bf": "Error: Remote end closed connection without response", + "db3a5c61130d7ca2046f5f9d0cd08073": "Error: {}", + "fe723570085e5cc1ecc3dfc88a46aa2d": "Download timeout: {}", + "0eeb116408665d50a2f2092a6c277ee6": "No available disk space.", + "57a43d6e8c479df3a51421eba70d5621": "Verify package checksum failed.", + "c12c62dd767caf90d62356b47349d871": "Cannot get progress bar for this plugin.", + "8fde9a929c417549ed2f9144fa68c0d2": "The rule name can only be composed of letters, numbers, and underscores!", + "868a6f377594831b39e91745c7807e28": "The specify rule name is not exists! [ {} ]", + "5d9cf1940fae6317dd43a7f1b5ca8f36": "The specify rule name is already exists! [ {} ]", + "473bc9055d76e148db4d28e7bec67295": "Rule name needs to be greater than 3 bytes", + "5b097df78b1d8c65d8b524354029f114": "File suffix cannot be empty", + "496e2dfba11ca4381ef6277e6e9a62dc": "Directory cannot be empty", + "84278582ca50b97777b2c8ce780f9715": "For Support|Suggestions, please visit the aaPanel Forum", + "aa00d1012298d40c84daf11e09956c65": "Downloading:", + "3c8ad9e6e9c39de49294aa2db8630f25": "Nginx is not install", + "8bdafc47214a88c8cc4bc6326771040a": "Data acquisition failed!", + "d84c752e17017ec4b4987497ce15dfd0": "PHP load status acquisition failed!", + "cf6e5eb2bfedf2e0529a552c1017c21e": "write file failed!", + "842bbd281516b01e70be499dbe67d3aa": "Successfully set", + "ff7ca5d4ef00526f701d3ae0b3833940": "Failed to get the list, please check if the [AK/SK/Storage] setting is correct!", + "517fa3f50147b216828f9aca9fd08927": "演示服务器,禁止此操作!", + "e39bf0b6a74eb0459abefe075607833f": "Error, cannot end task processes!", + "c40f1a202bfa106ac04f83a4740b3bd1": "Fail to connect to the server!", + "ca3eb6afad663b2881fababde6d59d63": "Please bind your account first!", + "df1f69a87b498b8b12c90be5a3b885db": "File download failed, please try again or update manually!", + "e448bd5c1c654d1ef33cf40620808693": "Requested PHP version does NOT exist!", + "7c769ceaad458456d4c3bc8276015a8d": "Permission denied!", + "178d2e6a3f4abd4552188dcf36df7687": "Panel Logs emptied!", + "99a0d283490c238c6faf2d0387dbcda7": "The current web server is openlitespeed. This function is not supported yet.", + "20b4593b7de7ef359c1a0269f83e896b": "Port range is incorrect!", + "0e656ce1afc98099f2e01e8f71362f92": "Please enter the correct port number", + "88897967b12e6907309204ad6d0647af": "Please do NOT use the usual port as the phpMyAdmin port!", + "e4859a777f8d4f300baf8fff0284fe81": "Did not find the apache phpmyadmin ssl configuration file, please try to close the ssl port settings before opening", + "6bd4e79acd767010d96091baf9daba77": "Did not detect the port that nginx phpmyadmin listens, please confirm whether the file has been manually modified.", + "7478cfa7a09bbe61467b07dea2e9721d": "Did not detect the port that apache phpmyadmin listens, please confirm whether the file has been manually modified.", + "a7dad48fefe8778dd10744a8a4dbae8e": "New phpMyAdmin SSL Port", + "a168cddbe84613b0a468887d44e7eaf5": "The panel certificate does not exist. Please apply for the panel certificate and try again.", + "c0c23cdf9e9329e576cfbddcc85666a3": "Open successfully, please manually release phpmyadmin ssl port", + "b7f3560235e37cebdbde7db33c3df64c": "Operation failed", + "7f91451dfcb0045a4684fa68b35d0365": "New phpMyAdmin Port", + "bb1ca97ec761fc37101737ba0aa2e7c5": "ERROR", + "14c525aba20f0a52255a799f51ced885": "Warning list does NOT exist!", + "586a19c1eeaf6fe9d57f1d894fc487fc": "Log file does NOT exist!", + "190045c03f9a72a1900c60d63e1e2b8b": "Account binding has expired, please re-bind on the [Settings] page!", + "907fddd6007347a0daffc4a64156f0de": "Ignore success, this version will no longer be reminded to update.", + "131c05252110792212e3e3666a351154": "SSL related configuration, do NOT delete or modify the next line of commented-out 404 rules", + "4ba7e24ac1607ab761c124ca7352ad08": "Error page configuration, allowed to be commented, deleted or modified", + "31bb30ca4135945adbe0c2daa9545b39": "PHP reference configuration, allowed to be commented, deleted or modified", + "f9da3e5ae75ce0ae39884ae2ea295a66": "URL rewrite rule reference, any modification will invalidate the rewrite rules set by the panel", + "73e1f7d487ad73d55414fe26ea11cbf0": "Not specify parameter [sitePath]", + "6aabca3a3e1c79bd5837a1ddae95fe70": "There was an error creating, please try again.", + "256c9a85375f57f2dc9f6f318c6578f1": "Create the website [ {} ] successfully", + "481df7dbcd4c0317088bde8c913d5893": "Please fill in the website path", + "b1b2484c013c646d7f41d6b2f495b6ef": "The website path cannot be the root directory [/]", + "1c3bff99564f1370a5b1bf6c0773f8c4": "Please check if the [Email] format correct", + "af9091566e669f016edf16ba97464cbe": "Password very weak, if you are sure to use it, please tick [ Allow weak passwords ]", + "b0dbad478d4f07c38aec8f440ed98b66": "Please install Mysql and PHP first!", + "46491fef7553177ef58a55b2db917072": "Please do not set the website root directory to the system main directory:
{}", + "59d5fef323e89ded50ed6036848a97f3": "The format of the webname parameter is incorrect, it should be a parseable JSON string", + "078a3d3e263be2851ddfd9fa059d098f": "Port range is incorrect! should be between 100-65535", + "50370024fdd22dc69099a46d011b20e2": "PHP version cannot be empty", + "44bd68c6703adf65ff21c63e9a876aa1": "Format of primary domain is incorrect", + "23eded6de9c06451f67ecb7ed3a8c95b": "Primary domain cannot be wildcard DNS record", + "f54249d2613e48be05837ec9cd615a5f": "The site you tried to add already exists!", + "b537e2d1946d559d3de4fb3c045d290f": "The domain you tried to add already exists!", + "f91c641aef33cf8ef4a29bc5d3a7193a": "Failed to add, write configuraton ERROR!", + "c3c7869d22051eaa78a831834a398351": "There was an error deleting, please try again.", + "e2d272e229674e4c6765fab24a323604": "Delete website [{}] successfully", + "aa5f20e061736fe68a915163e7e6d122": "Specified site does NOT exist", + "f11e72daff0ce484f4c401bd0bd28ae5": "Successfully deleted site!", + "c57d58c6bbd34144325871d75b42a577": "Please enter the host domain name", + "5c7b7c2f6ed78eefdd77aaa3dddde61a": "Domain cannot be empty!", + "ef446d50df1605a582f9b44b57327536": "Domain name format is incorrect!", + "68ae44808f90043dee02358ee768bf6e": "Format of domain is invalid!", + "1628c2a26ab6d1211b435f85782f8acc": "The specified domain name has been bound by the website [{}]", + "925dc658ddf0f69509632848bcd39577": "The specified domain name has been bound by a subdirectory of the website [{}]!", + "7b02cf82181f516626a36b86c6a686f5": "Successfully added site!", + "9b3c4205f2f408790c9c1c5da53c3bfb": "Failed to get PHP version!", + "abc3db87d5608cc9559556468a696a35": "Please choose a domain name", + "7807e17f2bf49fb802bba1a04822ea16": "Please choose a port", + "e5925c3a126a66c0565df6d8ef49550e": "Last domain cannot be deleted!", + "17088ffed1e537b917a6ecc9dc957159": "Private Key ERROR, please check!", + "26924bd958e212f07c31b6ffca9cbf8c": "Certificate ERROR, please check!", + "44e2c1c3cfd8d248d7c9190a8f07c0ee": "Error getting certificate", + "fc0d039d9dcf3905ae8032c9cb33f475": "ERROR:
{}", + "ddc2be35a5ed0bf09a88139c4ad10b4a": "Same as original path, no need to change!", + "84a8921b25f505d0d2077aeb5db4bc16": "Static", + "ad74aa2854e988c3157f92e0120bb19e": "Apache2.2 does NOT support MultiPHP!,{}", + "4018ce634a10d352867f04962f107c14": "There was an error setting, please try again.", + "f1bef4fd5183ae83a5896c32a3d5e81d": "Custom PHP configuration only supports Nginx", + "879e0d022ff268704f93a7e2b504c224": "The PHP connection configuration cannot be empty when customizing the version!", + "73d6e709b568b43405052cec999798c5": "The PHP connection configuration format is incorrect, please refer to the example!", + "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "The specified unix socket [{}] does not exist!", + "751ac8fd72a0acd79772370efcae9c89": "Unable to connect to [{}], please check whether the machine can connect to the target server", + "3cb7d414f8ae92b2b29057f91346f7dc": "Setup failed, no enable-php-xx related configuration items were found in the website configuration file!", + "c7a6a892c6cdfc9b0fedefb0a1d2083a": "Requested directory does not exist", + "4622561ceaaecb6ef7dd51e65c9f4ec5": "Base directory turned off!", + "e4ec1f40794bdf92e7261e6e0c51895a": "Base directory turned on!", + "eeddf79f68ffe029ed83fddcba46b35f": "Old proxy", + "1592678472ea1b601fd74abff47c56b1": "Can NOT get target URL", + "18edd294853d381dbe0d612ab58bc123": "An error was detected in the configuration file. Please solve it before proceeding", + "8b5899be4df3aedb03c6fbad9055ed1c": "Database name cannot be more than 40 characters!", + "111376d92c49c1a6c1522a2ef1dac23c": "Specified reverse proxy name or proxy folder already exists", + "09a988aa2e3185fce9fa8f4e8710b862": "Cannot set both directory and global proxies", + "012a8e497feddccb8e4a47aa5e2dc156": "Please enter number", + "90da7d2de9aa12ec32ee04172ca0d2d3": "Sent Domain format error :", + "440544138d3ed8a2229792c88bad3bd8": "The target URL cannot be accessed", + "faf2457853593b3296699c4adacc7825": "Please enter the content to be replaced", + "748e5ad33460a17cf26c8024bb0a1620": "The content to replace cannot be the same as the content to be replaced", + "195d5db9e1559f06348715bc3a822036": "A global reverse proxy already exists in the rewrite/nginx master configuration/vhost file", + "cc38d47ec9ac62ffc67a5db9c08d5d52": "Destination URL cannot be empty", + "fb79afbbe0688565b7894b644dfd798d": "The target URL cannot be [http:// or https://], please fill in the full URL, such as: https://aapanel.com", + "29c9da826ae868c8c6444328f48bcf40": "Reverse proxies are not currently available for Wordpress sites that use one-click deployment", + "a59dfc3ae22fd96d46011503a4f40744": "Proxy suspended", + "078bb5f960587121c7cd606ddba5ad58": "Please enable the reverse proxy before editing!", + "fe7185cec796e18d58f8e84dc4da946f": "Currently only support Nginx", + "222a267cc5778206b253be35ee3ddab5": "Current", + "38441d4a89765279852ca2830aa89c83": "New URL rewrite rule has been saved!", + "b9c1dcb37c44dca19765636de065b1c1": "Backup Succeeded!", + "c27a45bf16475a157ca1014cf886bb56": "Please enter a note", + "9a962a24e9b7b07800d6b7c7efd86f30": "Username or password cannot be less than 3 digits!", + "7eb904262649f9b2e4ba52e2bba9db71": "The password fomart is wrong, please do not use special symbols for the first two digits!", + "492c7f01035f1cf9b88756f897f02b87": "ERROR, primary domain cannot be IP address!", + "0a2b8c4a98495f6af19be9c1c342844e": "Succeeded, please test JSP program!", + "49281f9c7680652b1d110625da5c8cca": "Tomcat mapping closed!", + "ec3b07b78fd4f3307c84858957ddbd0f": "Get Site run path false", + "02e602e968050352febfc4ddcae332f0": "OpenLiteSpeed does not support setting the default site", + "362538d60f495840284c667e67831b16": "Scan directory", + "4f137439eb93e6c752873c8af2d3d1cb": "Scan Task has in the queue!", + "613a6375944c3035efe735e87766fbbd": "Update Succeeded!", + "6177805463a6a4f28e61bb3435bee13b": "Successfully set, the site will stop automatically when expires!", + "1a69486f70b6baf749e6e1c4d5fcf689": "URL suffix cannot be empty!", + "2f858201b6da6a5419c5af8fd26f815c": "Anti-theft chain domain name cannot be empty!", + "f36c15e89d61e07fb44095ae920b8fbc": "Please turn on the hotlink first!", + "70dc560b6f4af6d210c9eeb8434c571c": "Response resources should use URI path or HTTP status code, such as: /test.png or 404", + "aa8722f512ecebf5dae454e526402508": "Please turn on anti-theft first!", + "bd0d7585c64988d80747a32fb0e3e15e": "Log is empty", + "a17f5bc22553d897f6363867c0165256": "Default category", + "0d0d87a34e787b2f4a59d912d4d441e4": "Category name cannot be empty", + "6818a5095a78431eb3c99fe022b687b0": "Category name cannot exceed 16 letters", + "c4f16bb3d87b92062f73954c86485f64": "Add up to 10 categories!", + "5fd53f59be2a3dee94df28886840b9a3": "Specified category name already exists!", + "1c44b4096bb88e459ddadef895bea1c2": "Specified category does NOT exist!", + "8f52253b1f007fd14ed0f60b89593d2d": "Category deleted!", + "b51515085fc6ea6a07192c61e068c124": "Successfully modified", + "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "This function only supports Nginx/Apache", + "6678fd91bc04eb1e34e3474809387e7a": "Query failed , does not exist address", + "7ac0a27b48f2931c7f294b996fe6b273": "Error parsing configuration file", + "ee3a15a26aee235ac255e37342b444bb": "Setup successfully", + "79799f8c2f024685df774550ea5b427d": "Website [proxy,redirect,http to https] are not set to restart automatically", + "29faf053a22c387532298233399e66f9": "Configuration file parsing error", + "6c881e76c76b1f102bcb97a8b4f682f6": "This website has turn on [proxy,redirect,http to https] auto restart", + "13fc1b8a101214be1a472db8de1bd8fd": "Website has turn off auto restart", + "1fb58c8e2967a648359d13aa22d9e493": "The site does not exist!", + "b0cd0c2bc5c6ce9f71127d60872209ce": "Website [{}] renamed: [{}]", + "946fb31f804cdde218dbf05d7183e94e": "MD5 consistent!", + "d83dadd8fcee6c014db8af454bc279fc": "Download successfully", + "1336bbfcadd9119f86ecd48c2d9fb770": "The database connection is abnormal. Please check whether the root user authority or database configuration parameters are correct.", + "ee102508d210854b6fc7da18e598140b": "Generated password detection failed!", + "6e72fc97e2f1be35ae40ca21d6b1df38": "The database of this wordpress was not found, this may be caused by the fact that you have manually deleted the database", + "6df8e9d3a4e149ff12445d981f6fc244": "Password reset successful", + "f748d4e467e9f4f27540b6f5ce5b1ef8": "This feature currently only supports Nginx", + "9747bb4f34180afd2f9a681397b269fb": "Cleaned up successfully!", + "015d337f0646fe4b8a89b30041436e7f": "Updated successfully!", + "321b336d92b3e894060637528499dcf9": "Deployment was successful!", + "1850193ca4b37a25ee94db903eddc16f": "Deployment failed!", + "b390405514d6291f511c9f3a4fb31249": "Site ID must be numeric", + "e650b17a0b833e3bcdd8e859b37ce94e": "This database was not found!", + "a0adaeeb3642584bd931c757b6f71d78": "PHP FPM optimization succeeded", + "f11ab236591dc778c39c9429e141dba2": "Mysql optimization succeeded", + "d145648d4281cb3266714c5986bcab8b": "Nginx FastCgi cache configuration already exists", + "9c373c2796e866dc590f9dc7c80609da": "Nginx FastCgi configuration error!", + "2750e686fcc97deec0122789a059edbd": "Nginx FastCgi cache configuration complete", + "615681ddc1b0efb9f6d434adc1451bb7": "Nginx init FastCgi cache configuration already exists", + "a61c53dff88925e428f2a295b18ac807": "Nginx init FastCgi configuration error!", + "28b386f7ab5957184b60f47c0e540d68": "Nginx init FastCgi cache configuration complete", + "b7082bd55a134bb3a142570572e1c469": "FastCgi configuration does not exist in website configuration", + "c0ff8a4b4b8f68c4ba7df88588291590": "The FastCgi configuration already exists in the website configuration", + "e3a6621c5ea036c8f82d3f2d343f1bc8": "Website FastCgi configuration error!", + "4c87778ab71a4e47170ccafd6edb4922": "Website FastCgi configuration complete", + "e3fa50f6413dbb7bfe7cb26e1acd3d98": "Please login with account first", + "121303c67f81a8ebda41de51c8afaf27": "Please log in to your aaPanel account on the panel first!", + "d5670370d84473122d8e4d5a3b27b4bf": "parameter error: num", + "6b1c16b7a785029c0a11de3ab31cb125": "Flush status success", + "e06c1ddc33f674068e3ca201094145d1": "Activate successfully", + "819b23804f66eddddfba39e7bdc53e68": "Activate failed", + "4f57c5dce8b638737a368af15409439f": "Activate Failed", + "fe94df1697f309269e00428cae6bd141": "Renew Failed", + "b2ac1158b825f44cb363648fa3ad60cb": "Renew successfully", + "78d29c0fadebf704e471a63afd430250": "Apply Failed", + "3649e869737aa87f263194ce7f88f19e": "Apply successfully", + "34c4dc380e690d2ff6ebb6aaed103401": "product_id Parameter ERROR!", + "28731318aa493586f88894355a79cb48": "Failed to connect to the server!", + "0161305479129bbe47bb020605a15d40": "Setup successful!", + "5c9b599b99f7a169b9cd25f7045eaac5": "Synchronization success!", + "b6601359f1ae1067d4c4d271b7407639": "同步成功1!", + "10a1984f6c5b935c5d8c7d4b4345e1e5": "同步成功!", + "86da84e8e3aacf73ee745caee5904268": "同步失败!", + "8ed30fe61ac59c9e1cb4a75d9a48d477": "Created successfully!", + "330e51da1228a070540f82eb8e78155c": "Set up successfully!", + "7ac73ef676faaa8a5f8e3924b4d151e3": "Username or password cannot be less than 3 characters", + "88d8a4565feba5ad270c00e85564b96d": "OpenLiteSpeed is currently not supported", + "c1f8cf125da0d6db1c4e0d09033c9ddd": "Please enter an account or password", + "bd7fb7b4280616cbe5de49eb1ee8cc3a": "Please enter the directory to be protected", + "8c48114518721e3966cd4553a0cee705": "Please enter the Name", + "dd65d82f6868cfa127f86e5658674829": "Site password protection has been set, please cancel and then set. Site directory --> Password access", + "1cc6b0e84b90d0ca0b863fccc0f33b36": "Directory has been protected", + "b7526fc6f8b21e71ea1e290a982df4c9": "Successfully created", + "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2 does NOT support MultiPHP!", + "69be778c38b9edc0ab3040c478c39370": "ERROR: %s
Forced uninstall command: rm -rf /www/server/mysql", - "ba922eb50c83147a9bc0e9f40877d986": "Uninstallation succeeded", - "b860df98df6ab84521a4cef036973028": "Scoring range [1-5]", - "eb536feb2c569974c2b5cf85cae91041": "Connection failure!", - "a70188f907ee9df93a4b749109a23460": "Failed to get software list ({})", - "16ad37f5aafc6478f2f6d63d70554530": "Please do NOT repeat adding", - "18ea7bdb25b2a66507ffb1bb8b42fefa": "Dashboard only display up to 12 software!", - "2aa461271893ae0493789e9e8f248fdc": "Shortcut Bar only display up to 5 software!", - "98cb93d354af289a900cd9e03cee2df2": "Installation failed!", - "17e4e003ade65cd7a54131d3404d2f98": "NOT opened", - "bda730e0e5c7444ef6f4f49957ab4f39": "To be paid", - "24fe48030f7d3097d5882535b04c3fa8": "Expired", - "cbfcfe47e7420af71ce1666844c565a3": "Sort saved", - "6a20d0daaec1ce3950a321704041dc90": "This plugin does NOT have template!", - "6f5cb320fb3a7e303403054320ad943c": "Software list updated!", - "b269cd272a31017961c245e2c84a1a2f": "File download failed!", - "88183b946cc5f0e8c96b2e66e1c74a7e": "Unknown", - "84f7539fe8674bb0689347dc7acd7b43": "No plugin info found in the archive, please check the plugin package!", - "affc007de5f6791707f3de155a3a642a": "Temporary file does NOT exist, please re-upload!", - "117f1bb083c7d556079a3c77093be5e2": "Export failed, please check permissions!", - "a8f375e795e0a130837f2a468518a413": "Non-compliant names can only be numbers, letters, underscores", - "a06490b9729d0868e31d834c9bffa0bd": "The specified custom compilation parameters do not exist!", - "5e71fccee12caedf853a7313ea204721": "Error: Name or service not known", - "b6e3d7366f73e2c5e32717d679db6474": "Error: Failed to establish a new connection", - "cdffdb1c794cf0dd777b3941a31459e4": "Error: Read timed out", - "4573823cc04a9cbf8a7bb254b762db91": "Error: Connection refused", - "e3c2e426ad1b23571c48ec572ca675bf": "Error: Remote end closed connection without response", - "db3a5c61130d7ca2046f5f9d0cd08073": "Error: {}", - "fe723570085e5cc1ecc3dfc88a46aa2d": "Download timeout: {}", - "0eeb116408665d50a2f2092a6c277ee6": "No available disk space.", - "57a43d6e8c479df3a51421eba70d5621": "Verify package checksum failed.", - "c12c62dd767caf90d62356b47349d871": "Cannot get progress bar for this plugin.", - "8fde9a929c417549ed2f9144fa68c0d2": "The rule name can only be composed of letters, numbers, and underscores!", - "868a6f377594831b39e91745c7807e28": "The specify rule name is not exists! [ {} ]", - "5d9cf1940fae6317dd43a7f1b5ca8f36": "The specify rule name is already exists! [ {} ]", - "473bc9055d76e148db4d28e7bec67295": "Rule name needs to be greater than 3 bytes", - "5b097df78b1d8c65d8b524354029f114": "File suffix cannot be empty", - "496e2dfba11ca4381ef6277e6e9a62dc": "Directory cannot be empty", + "b7ad022c6ce9435c43c6760c8ba89b20": "CA can", + "5d39c57e28ab85457e4949306be619e8": "The CA server connection timed out, please try again later.", + "721eb0b3ea85b39c22f16d6dfc84bc32": "The domain name does not belong to this DNS service provider. Please ensure that the domain name is filled in correctly.", + "b5366a9c53b455fdf8a552c205ca9021": "The DNS server connection failed. Please check if the key is correct.", + "4de3dc0403846edfe5ff520837e2bbe5": "The signing failed, the domain name exact set of domains: (.+): {} exceeded the weekly number of repeated issuances!", + "30c0b6ae1acf6137b588473814f3330d": "The signing failed, the current server IP has reached the limit of creating up to 10 accounts every 3 hours..", + "797e2e43e3fc3737891adc8ab4a1655c": "The verification failed, the domain name was not resolved, or the resolution did not take effect.!", + "9efd01f346301888216d77d35ec156cf": "Authentication failed, domain name resolution error or verification URL could not be accessed!", + "6c23a7d25119c77017d1aa04761fefe8": "Failed to connect to CA server, please try again later.", + "b7a370078ae6520cde883252890195cf": "Unsupported domain name {}, please check if the domain name is correct!", + "1593706a4e3794c75129c8347021f0c5": "The domain name {} did not find a resolution record. Please check if the domain name is resolved.!", + "1d80008b0cc4936ab73047baf061c84e": "If a valid TXT resolution record is not found in the domain name {}, please check if the TXT record is correctly parsed. If it is applied by DNSAPI, please try again in 10 minutes.!", + "81dab277ae106f35a118916e25f3f026": "Found the wrong TXT record on {}: {}, please check if the TXT resolution is correct. If it is applied by DNSAPI, please try again in 10 minutes.!", + "b1bc7e763e87ef08d753a0676a0d5361": "This domain name does not exist under this dnspod account. Adding parsing failed.!", + "43901eff07fff70732a4e1d6a732920b": "Connection timed out, CA server could not access your website!", + "7cb06b776259c13fa73d3be5577df74c": "The domain name {} is currently required to verify the CAA record. Please manually resolve the CAA record, or try again after 1 hour.!", + "09c36cbe592612c2546e60652f2d6964": "Verification timeout, please check whether the domain name is correctly resolved. If dns is resolved, the connection between the server and Let", + "e10beec48a4a4b433b2fec2eaff64671": "More than 5 verification failures in 1 hour, application is temporarily banned, please try again later!", + "239067c8e0586af7c09738e8240438fb": "The renewal failed and the certificate directory does not exist.", + "c7664672bf11463a4cc40c61aeca77f1": "Renewal failed, missing account_key.", + "3f56bc50f098e641bb3d42e2d4255cbe": "Ready to apply for SSL, domain name {}", + "bd6995f087c0dacaecd470ca10539a2b": "The list of applied domain names cannot be empty.", + "3b5e16d8f5e1b88c78e494e6601a4d01": "Get successful, please manually resolve the domain name", + "cf6b24b05942cd0c3723d7a4c25e6138": "|-Saving certificate..", + "bbb21c1842b512148f687ea068553c85": "|-Setting up auto-renewal configuration..", + "c06d0b48f82d74d3c2854dabdba12d93": "|-The application is successful and it is being automatically deployed to the website!", + "569488d54cbcce1331896e4254f63a92": "Application successful.", + "1851141907c561e6ac67cba17e549232": "|-Initializing ACME protocol...", + "78e67927014eab1b84eb285b6057fca6": "|-Registering account...", + "4896fdcb74c0e04522c8d3d89d08d569": "|-Getting verification information...", + "1016ed461618afd2dde9a4a709a4d080": "|-Return the verification information to the front end, wait for the user to manually resolve the domain name and complete the verification...", + "81a3b1828b60659bc3d3c9711e66f0ba": "|-User submits verification request...", + "f147fc272d665cd009e1108c5fb6993d": "|-Requesting CA to verify domain name [{}]...", + "4c699430325d31db3d7b43b0a0999364": "|-Get CA verification results [{}]...", + "2b7dd2a937ababf46efb11073787664c": "|-All domain names are verified and CSR is being sent...", + "1de253d3eb460e60480626694092d89e": "|-Getting certificate content...", + "a0c16d2f8e2aeba9dd9a3b040861ff39": "Certificate acquisition failed, please try again later.", + "89edc2a5e6ccecc2bdbdd1f9536fb90a": "|-Error: {}, exited the application process.", + "94417e0c15f634f59ce15128ef146686": "|-Error: {}, exit the application process.", + "03268bb5fa60cf57ac7c30f1f99dab01": "|-Exited the application process!", + "be2d0d9f1a9d04ff22b70bd5bee9b8ef": "An error occurred while requesting a certificate using dns", + "409bd1860bf065c68921473fc2266347": "|-Adding resolution record, domain name [{}], record value [{}]...", + "8b2ee088303a8001eaedb8c62e3de7e3": "|-Attempt to verify the resolution result, domain name [{}], record value [{}]...", + "a11fba95c84fff590acd7dbdea4528e6": "|-Request CA to verify domain name [{}]...", + "676e1a4f8e4561ad55045461f3421d62": "|-Check CA verification results [{}]...", + "d60d5b998a8ef802ba7f5b5ed343e256": "|-An error occurred, try again [{}]", + "71087be1722815599ebecd0fd0f58b5e": "|-Fetching certificate content...", + "6d1e7a222bfe888debd080a117490c9d": "|-Clearing resolve history [{}]", + "77619ceb7742d8a8f87e52b02592d873": "The signing failed, we were unable to verify your domain name:

1. Check if the domain name is bound to the corresponding site.

2. Check if the domain name is correctly resolved to the server, or the resolution is not fully effective.

3. If your site has a reverse proxy set up, or if you are using a CDN, please turn it off first.

4. If your site has a 301 redirect, please turn it off first

5. If the above checks confirm that there is no problem, please try to change the DNS service provider.

", + "4d6822ed3bd01f379f2ab4b1e68068d7": "|-There are currently no certificates to renew.", + "b74c00ca5fee122c49cd66ce3d91b2cf": "|-Renewal failed:", + "0b1c93d38c86c8d379886293cdf8ba66": "Task cancelled!", + "d5ef96e383d376beeec28da7acfea516": "Download file", + "f24f6c5f5841340f898a6baaa6478bcd": "Download file {}", + "9fdd777388a418cef77bce46c1b2511a": "Specified compression format is not supported!", + "4fa407ee74026903dc3013d0b2471eac": "Compression succeeded!", + "ece43dcaac9352f58c422e500266a927": "Uncompression succeeded!", + "ac4eb62573e34c36ff426c8a6360c781": "Backup error!", + "438ca4ffcf6fbd44ec129e73a24f0deb": "Select sql/gz/zip file!", + "0edfb4a54d6cf45209a6c7929b8b9919": "Successfully imported database!", "f6039d44b29456b20f8f373155ae4973": "Username", "3544848f820b9d94a3f3871a382cf138": "New password", "6b1bc4e672d58d46d23502dcd78129be": "Clearing log info", @@ -710,161 +855,18 @@ "5093d954f09d473d091355fe292920a8": "|-Entrance limit cancelled", "e0b1cb1725c8fb29d42fa69d679a73ea": "|-Domain limit cancelled", "968c7b9246b5ab3d3e7659cea211a20b": "|-IP access limit cancelled", - "b7ad022c6ce9435c43c6760c8ba89b20": "CA can", - "5d39c57e28ab85457e4949306be619e8": "The CA server connection timed out, please try again later.", - "721eb0b3ea85b39c22f16d6dfc84bc32": "The domain name does not belong to this DNS service provider. Please ensure that the domain name is filled in correctly.", - "b5366a9c53b455fdf8a552c205ca9021": "The DNS server connection failed. Please check if the key is correct.", - "4de3dc0403846edfe5ff520837e2bbe5": "The signing failed, the domain name exact set of domains: (.+): {} exceeded the weekly number of repeated issuances!", - "30c0b6ae1acf6137b588473814f3330d": "The signing failed, the current server IP has reached the limit of creating up to 10 accounts every 3 hours..", - "797e2e43e3fc3737891adc8ab4a1655c": "The verification failed, the domain name was not resolved, or the resolution did not take effect.!", - "9efd01f346301888216d77d35ec156cf": "Authentication failed, domain name resolution error or verification URL could not be accessed!", - "6c23a7d25119c77017d1aa04761fefe8": "Failed to connect to CA server, please try again later.", - "b7a370078ae6520cde883252890195cf": "Unsupported domain name {}, please check if the domain name is correct!", - "1593706a4e3794c75129c8347021f0c5": "The domain name {} did not find a resolution record. Please check if the domain name is resolved.!", - "1d80008b0cc4936ab73047baf061c84e": "If a valid TXT resolution record is not found in the domain name {}, please check if the TXT record is correctly parsed. If it is applied by DNSAPI, please try again in 10 minutes.!", - "81dab277ae106f35a118916e25f3f026": "Found the wrong TXT record on {}: {}, please check if the TXT resolution is correct. If it is applied by DNSAPI, please try again in 10 minutes.!", - "b1bc7e763e87ef08d753a0676a0d5361": "This domain name does not exist under this dnspod account. Adding parsing failed.!", - "43901eff07fff70732a4e1d6a732920b": "Connection timed out, CA server could not access your website!", - "7cb06b776259c13fa73d3be5577df74c": "The domain name {} is currently required to verify the CAA record. Please manually resolve the CAA record, or try again after 1 hour.!", - "09c36cbe592612c2546e60652f2d6964": "Verification timeout, please check whether the domain name is correctly resolved. If dns is resolved, the connection between the server and Let", - "e10beec48a4a4b433b2fec2eaff64671": "More than 5 verification failures in 1 hour, application is temporarily banned, please try again later!", - "239067c8e0586af7c09738e8240438fb": "The renewal failed and the certificate directory does not exist.", - "c7664672bf11463a4cc40c61aeca77f1": "Renewal failed, missing account_key.", - "3f56bc50f098e641bb3d42e2d4255cbe": "Ready to apply for SSL, domain name {}", - "bd6995f087c0dacaecd470ca10539a2b": "The list of applied domain names cannot be empty.", - "3b5e16d8f5e1b88c78e494e6601a4d01": "Get successful, please manually resolve the domain name", - "cf6b24b05942cd0c3723d7a4c25e6138": "|-Saving certificate..", - "bbb21c1842b512148f687ea068553c85": "|-Setting up auto-renewal configuration..", - "c06d0b48f82d74d3c2854dabdba12d93": "|-The application is successful and it is being automatically deployed to the website!", - "569488d54cbcce1331896e4254f63a92": "Application successful.", - "1851141907c561e6ac67cba17e549232": "|-Initializing ACME protocol...", - "78e67927014eab1b84eb285b6057fca6": "|-Registering account...", - "4896fdcb74c0e04522c8d3d89d08d569": "|-Getting verification information...", - "1016ed461618afd2dde9a4a709a4d080": "|-Return the verification information to the front end, wait for the user to manually resolve the domain name and complete the verification...", - "81a3b1828b60659bc3d3c9711e66f0ba": "|-User submits verification request...", - "f147fc272d665cd009e1108c5fb6993d": "|-Requesting CA to verify domain name [{}]...", - "4c699430325d31db3d7b43b0a0999364": "|-Get CA verification results [{}]...", - "2b7dd2a937ababf46efb11073787664c": "|-All domain names are verified and CSR is being sent...", - "1de253d3eb460e60480626694092d89e": "|-Getting certificate content...", - "a0c16d2f8e2aeba9dd9a3b040861ff39": "Certificate acquisition failed, please try again later.", - "89edc2a5e6ccecc2bdbdd1f9536fb90a": "|-Error: {}, exited the application process.", - "94417e0c15f634f59ce15128ef146686": "|-Error: {}, exit the application process.", - "03268bb5fa60cf57ac7c30f1f99dab01": "|-Exited the application process!", - "be2d0d9f1a9d04ff22b70bd5bee9b8ef": "An error occurred while requesting a certificate using dns", - "409bd1860bf065c68921473fc2266347": "|-Adding resolution record, domain name [{}], record value [{}]...", - "8b2ee088303a8001eaedb8c62e3de7e3": "|-Attempt to verify the resolution result, domain name [{}], record value [{}]...", - "a11fba95c84fff590acd7dbdea4528e6": "|-Request CA to verify domain name [{}]...", - "676e1a4f8e4561ad55045461f3421d62": "|-Check CA verification results [{}]...", - "d60d5b998a8ef802ba7f5b5ed343e256": "|-An error occurred, try again [{}]", - "71087be1722815599ebecd0fd0f58b5e": "|-Fetching certificate content...", - "6d1e7a222bfe888debd080a117490c9d": "|-Clearing resolve history [{}]", - "77619ceb7742d8a8f87e52b02592d873": "The signing failed, we were unable to verify your domain name:

1. Check if the domain name is bound to the corresponding site.

2. Check if the domain name is correctly resolved to the server, or the resolution is not fully effective.

3. If your site has a reverse proxy set up, or if you are using a CDN, please turn it off first.

4. If your site has a 301 redirect, please turn it off first

5. If the above checks confirm that there is no problem, please try to change the DNS service provider.

", - "4d6822ed3bd01f379f2ab4b1e68068d7": "|-There are currently no certificates to renew.", - "b74c00ca5fee122c49cd66ce3d91b2cf": "|-Renewal failed:", - "140bda69874872f8402052c613c0b3b9": "aaPanel Alert Test Email", - "76a1ec4a3fcdc304394ff14dc90f8072": "The number of panel threads should be between 1-1024", - "dd7e82b5fb3c67e3e41d96f22ba838fd": "New panel port", - "40624aabb99173387dd6d575759b12db": "The certPem parameter is missing!", - "37db9679113eef382992a1478f1b79ff": "The privateKey parameter is missing!", - "d2174fc17fcd785706114088b84dbbce": "Temporary login URL has been generated", - "b5101eb6e685091719013d1a75756a53": "\\1", - "0bfe47819da04212a33dac83b71430e8": "\\2", - "946fb31f804cdde218dbf05d7183e94e": "MD5 consistent!", - "d83dadd8fcee6c014db8af454bc279fc": "Download successfully", - "1336bbfcadd9119f86ecd48c2d9fb770": "The database connection is abnormal. Please check whether the root user authority or database configuration parameters are correct.", - "ee102508d210854b6fc7da18e598140b": "Generated password detection failed!", - "6e72fc97e2f1be35ae40ca21d6b1df38": "The database of this wordpress was not found, this may be caused by the fact that you have manually deleted the database", - "6df8e9d3a4e149ff12445d981f6fc244": "Password reset successful", - "f748d4e467e9f4f27540b6f5ce5b1ef8": "This feature currently only supports Nginx", - "9747bb4f34180afd2f9a681397b269fb": "Cleaned up successfully!", - "015d337f0646fe4b8a89b30041436e7f": "Updated successfully!", - "321b336d92b3e894060637528499dcf9": "Deployment was successful!", - "1850193ca4b37a25ee94db903eddc16f": "Deployment failed!", - "b390405514d6291f511c9f3a4fb31249": "Site ID must be numeric", - "e650b17a0b833e3bcdd8e859b37ce94e": "This database was not found!", - "a0adaeeb3642584bd931c757b6f71d78": "PHP FPM optimization succeeded", - "f11ab236591dc778c39c9429e141dba2": "Mysql optimization succeeded", - "d145648d4281cb3266714c5986bcab8b": "Nginx FastCgi cache configuration already exists", - "9c373c2796e866dc590f9dc7c80609da": "Nginx FastCgi configuration error!", - "2750e686fcc97deec0122789a059edbd": "Nginx FastCgi cache configuration complete", - "615681ddc1b0efb9f6d434adc1451bb7": "Nginx init FastCgi cache configuration already exists", - "a61c53dff88925e428f2a295b18ac807": "Nginx init FastCgi configuration error!", - "28b386f7ab5957184b60f47c0e540d68": "Nginx init FastCgi cache configuration complete", - "b7082bd55a134bb3a142570572e1c469": "FastCgi configuration does not exist in website configuration", - "c0ff8a4b4b8f68c4ba7df88588291590": "The FastCgi configuration already exists in the website configuration", - "e3a6621c5ea036c8f82d3f2d343f1bc8": "Website FastCgi configuration error!", - "4c87778ab71a4e47170ccafd6edb4922": "Website FastCgi configuration complete", - "90d0982f5d024da53b21f69d3f0c8cbb": "Database does NOT exist!", - "b376175f0c97d2ab7c37e44ec3b3a1b9": "Nonsupport mysql5.1!", - "0161305479129bbe47bb020605a15d40": "Setup successful!", - "5c9b599b99f7a169b9cd25f7045eaac5": "Synchronization success!", - "b6601359f1ae1067d4c4d271b7407639": "同步成功1!", - "10a1984f6c5b935c5d8c7d4b4345e1e5": "同步成功!", - "86da84e8e3aacf73ee745caee5904268": "同步失败!", - "8ed30fe61ac59c9e1cb4a75d9a48d477": "Created successfully!", - "330e51da1228a070540f82eb8e78155c": "Set up successfully!", - "7ac73ef676faaa8a5f8e3924b4d151e3": "Username or password cannot be less than 3 characters", - "88d8a4565feba5ad270c00e85564b96d": "OpenLiteSpeed is currently not supported", - "c1f8cf125da0d6db1c4e0d09033c9ddd": "Please enter an account or password", - "bd7fb7b4280616cbe5de49eb1ee8cc3a": "Please enter the directory to be protected", - "8c48114518721e3966cd4553a0cee705": "Please enter the Name", - "dd65d82f6868cfa127f86e5658674829": "Site password protection has been set, please cancel and then set. Site directory --> Password access", - "1cc6b0e84b90d0ca0b863fccc0f33b36": "Directory has been protected", - "b7526fc6f8b21e71ea1e290a982df4c9": "Successfully created", - "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2 does NOT support MultiPHP!", - "69be778c38b9edc0ab3040c478c39370": "ERROR: %s
2.It is recommended to choose official and reliable infrastructure to avoid unnecessary losses.", - "475dfbee8626a4d939cf631aad174de3": "Scanning:{}", - "71c7dfa944a5a50f281c0acb232dcdeb": "Scanning:{}...", - "0c29ac6d8e69451c80f8ef857e499ab2": "Sensitive directories found{}", - "53872e73575a306598c0c4060b44181c": "The image exists in a sensitive directory:{}, may be used by attackers to steal sensitive data or source code, leading to further security issues.", - "6fe56120a0502f9678988d756dd27682": "1. Enter the container deployed using the image and delete the directory without affecting the business
2. If it cannot be deleted, restrict access to the directory", - "6b2f9867ccd6f3e6f06726c06ed684d5": "Sensitive files found{}", - "6684913201a60be0b5e89c4dfb210719": "Found bashrc backdoor{}", - "9a9f27d5f9f8c056fff7986c87a94c30": "It was found that the image has bashrc backdoor: [{}], malicious code content:
{}", - "d8a828116070b9d92315ca309cca1991": "1. Enter the container deployed using the image and delete the malicious code under the file
2. Check whether the container has been invaded, and update the access token or account password of the business in the container
3. It is recommended to replace the official image or Other trusted image deployment containers", - "e1439f3f7d25d378078d513a82a3fa87": "Backdoor file found{}", - "9ede9d4bd542eedf78e39b0acf0206e3": "It was found that the bashrc backdoor file [{}] exists in the image, and the malicious code content is:
{}", - "686765b4612ecd8f774648db29a1541d": "cron backdoor discovered{}", - "390bdc0b3c37a56ede9467b0c220a3b6": "It was found that the cron backdoor [{}] exists in the image, and the malicious code content is:
{}", - "caea084281a3cb2515e5618cd3856163": "Found system backdoor:{}", - "d04061273caa56d5a0c3d74f3e9fd482": "It was found that the systemd backdoor file [{}] exists in the image, and the malicious code content is:
{}", - "fc76e0fe415c49cc1c09bf76035fc4e9": "Found sshd backdoor{}", - "00b2409f52ef5bc56afe29ccbe5cfa2c": "Found the sshd soft link backdoor: {}, the file hits the malicious feature [exe={};link_file={}]", - "e747da31a54cd71fb1a2860cae0f9f77": "Found the tcpwrapper backdoor{}", - "a2b09164c8d23894736bcc6a646861e0": "It was found that the tcpwrapper backdoor file [{}] exists in the image, and the malicious code content is:
{}", - "a7fd9f6b190b8531039376fbbda5f482": "Users found to be at risk of escape{}", - "5d46ed5f4af3f30cfcc8bd66942f93b4": "The username {} may complete container escape through the command [{}], allowing the attacker to obtain access rights to the host or other containers. Malicious content:
{}", - "4ca0a18aa36a60613104cacdae514dec": "1. It is recommended to delete the image or no longer use it
2. If there is already a business using the image, enter the container environment and delete the content of the user {} in the /etc/sudoers file.", - "611afea08ae3b216a34dfde4c143f46c": "不支持的系统版本", + "c0ef08aa7bd6276137ccd491a8041223": "There is no volume to back up", + "584e35dd4a55da88bd232ac7a19b9b95": "The backup task was created successfully.", + "0b08674e1c87f3f8508a4ae9b0c160f8": "Failed to create a backup task {}", + "2a0f93407bb61e2403ccd032cbc64e3e": "successfully delete", + "13d829d3f2b78c971207d944f2a96c55": "Failed to delete the file, reason: {}", "0af5787b053c4bf5dbe610731f7d4199": "The file path cannot contain Chinese characters!", "719ee030d81490fc055af0c4426aacb9": "Detection failed: {}", "ee3936ffdc910e2cb8578ad1fae322f0": "Detection passes!", @@ -2001,136 +2037,64 @@ "428ed92bf9d3198f4c9885c11fdb2be3": "These templates succeed: [{}]
These templates fail: the template name already exists or is incorrectly formatted [{}]", "70975749d256333f1b3b62c864ca265a": "Fail to modify!", "2360e954ae9eecac28b2a3edad5e8ce0": "Modify successfully!", - "e8ad47bc3f119a4d4072f5cb114676f4": "Image name cannot be empty", - "e5e3829984a9637afc2546ad2c87d83b": "Mirror path cannot be empty", - "e5f40049c6d67bd11d9a1a1889f5b84a": "Image ID cannot be empty", - "5e022f79dcc774c79bc55ee28774e2e7": "The image name cannot contain /", - "c00be60f9f3f7d747aadfdb124e855ef": "Successfully saved to:{}", - "cb1f8d99b492340cf701101c87884a8c": "Cannot export image!", - "afaa91d141ded3e37b8b9ebf8bc31c51": "Exporting the image failed and the connection to docker timed out. Please try restarting docker and try again!", - "5b980f2e1c82c04c91376d55d4306a91": "Failed to export image!
{}", - "e5e8c7cac8b71e94280fa08301d21e78": "Please enter the image path!", - "5441400ea3bd16cffdf70c46c34f61d4": "Failed to import the image. The file extension must be.tar!", - "67b97e4746a2faf5d59206a80bb28649": "Image import was successful!{}", - "deceb44868a29ae5d579114348736cbb": "The image import failed and the temporary directory of the container failed to be created. Please check whether the protection software has an interception record!", - "8eb05618b0f04e727b0685427fd49c8e": "Failed to import image!
{}", - "721aa02577670c1049ea9d12caa8938c": "Please enter the correct DockerFile path!", - "736df9a7c491f3299efdeb9f7d7e9e0f": "Build image successfully!", - "6e85568dae869303ca7a4486f55458a3": "Build failed, connection timed out", - "5bb301b85cc1f42e56174d3d9a4c0286": "Build failed! {}", - "f51455b323ec2db8004c812001043330": "Build failed!The specified Dockerfile was not found", - "8e1b9c9b75950d0feba6813d32766e61": "Build failed!{}", - "eba0ec758a6464a20c14c0f23ceee62e": "Mirror deleted successfully!", - "8dd326278d09a3ac4bc56cf725c8f262": "The delete failed and the image may not exist!", - "11ead921bc0e3d94f1f9e0db4bf8ed8d": "The image ID is used in more than one image, force the image to be deleted!", - "43993616c7433350755d30a3b4d065dd": "The image is in use. Please delete the container before deleting the image!", - "d6992c3fcf2269c249cd5f18f1ac2c11": "Failed to delete image!
{}", - "0c6c071174fde5b47c9eef8088c17a89": "Failed to delete image,The connection to docker timed out, please restart and try again!", - "a3ba80a8e1e0d9af94c809e909431b3c": "failed, Login to repository [{}] failed, please try to log in to this repository again!\\r\\n", - "cc40077b6ee61fbfa35713a21e8eb866": "bt_failed, Login to repository [{}] failed, please try to log in to this repository again! {}", - "60b488c60b6747bf34a86a69740b636d": "The pushed image cannot contain [/], please use the following format: image:v1 (image name: version)", - "44dbec830b87eb037e8fcbb0e1b56160": "Unable to push to Docker public repository!", - "b4c46001066c912344e3bdb0df86e848": "Repository [{}] Login failed!", - "0ebfb094c6482acb049e0dd0d3107307": "Push failed, image label error, please enter such as: v1.0.1", - "d26bdd6e86002ed92089dc71347822ce": "Push failed, do not have permission to push to this repository!", - "82058092ad7d2c7aa5e2f012b6544e59": "Push failure!{}", - "2b228d4775d23d2725ec227ba648bd43": "Push successfully, mirror:{}", - "9e396f640866ded9c3a47268f96a36e3": "Pulling the image, please wait...\\r\\n", - "7e5f4d488d318dc7c235095c8456f5e4": "Pull or search for images...\\r\\n", - "5a7377f73fc144fd961e8b2ffeba66af": "pull failed!\\r\\n", - "97a6dfe3a273202edffe31af7a43e220": "Failed to use the default mirror station to pull the image! Trying to use another mirror station to pull for you, please wait...\\r\\n", - "484616540fc726ef4f52e97a1c2f0fef": "Failed to pull image!\\r\\n", - "1cd77329b2bddfb200e656214b1fdf32": "Failed to pull the image!", - "63c709b9759af42fef890d539d822575": "Pull failed!{}\\r\\n", - "b4aba972332d1f3728171905a033fb99": "Image pull [{}] successful\\r\\n", - "2fae21ffd185d9e9730b39bc7de23852": "Image pulled successfully!", - "8a635442294fd90195a43d9a1672fc3f": "Failed to pull image!", - "711de72d616e7abb29dfa919244d382d": "Pull failed,The image does not exist, or the image may be a private image. You need to enter your dockerhub account password!\\r\\n", - "e9511e26273da5b4537b4683668b548e": "pull failed!{}\\r\\n", - "05d13bf5dcc37754db74b2356e6e117c": "pull failed,There is no such image in the repository!\\r\\n", - "714841af7f3de6c8d99ba03f4cee0ee5": "pull failed, The image format is wrong, such as: nginx:v 1!\\r\\n", - "2d941c4fa4da32ccafa8670a07f23c1d": "The image was pulled successfully.", - "5282194697748d9fcd1ccd8a90428424": "There may not be this mirror image.", - "d6facab17334983e7c6f8c561c239820": "Failed to pull the image, this is a private image, please enter the account password!", - "b507deb7848d566982b339265c8f5482": "Pull image failure

Reason: {}", - "e90811ef0a60b6d299b4e1064d7788d0": "No useless images!", - "f343313c101aeaff0516990ebea3dcef": "failed to delete!{}", - "90ecd58b3feb0b2be11f0af685ad39fe": "Deletion of useless images failed and the connection to docker timed out. Please try restarting the docker service and try again!", - "4097585e32152eb74bbee5ab8c463718": "The docker service is running abnormally, please restart and try again!", - "26a0931677e111565f3ff7d059b94d8b": "The gateway setting is wrong, Please enter a gateway that matches the subnet: {}", - "def2ba1ce0e4d77692c14e5b984636fa": "Subnet address format error, please enter for example: 172.16.0.0/16", - "716eeeb727fd667635ccf1d18891d46e": "IP range format error, please enter the appropriate IP range for this subnet:", - "e310a873e7812c7f994d482604061fee": "IP range [ {}] already exists!", - "db88b911ea66744c24b22efcafef2101": "The system kernel version is too low, please update the kernel or choose another network mode", - "9cebb294a44695984eaaf2134df63a51": "The current node is not a Swarm and needs to be configured before it can be used", - "85ac438bd64f13e2ad61cf60e5ade3d3": "Failed to add network! {}", - "640520ffb5d9c01336710bad3ea6d7ff": "Added network successfully!", - "87574a543563d2e037b87a6cf705e3ff": "The system default network cannot be deleted!", - "23b6d9d6c36088deb928efad7fb9b63b": "The network cannot be deleted while it is in use!", - "2aa70dad9bff94a855fdde3fc113e6c5": "Delete failed! {}", - "8f512551c7ddf61331c3d068e80c642c": "There are no useless networks!", - "08efe6a4e12437b79225c8b59fd710eb": "Network ID cannot be empty", - "a636381ee5e6d6d021fff745ca132905": "Container ID cannot be empty", - "31a75a8d220d37dc4a7ea28d0f24cc19": "Network disconnection was successful!", - "a2b9895fca7698902da9319b52392366": "Container ID: {}, does not exist!", - "c81f03a558307d5aaf3b339af28e04ff": "Network ID: {}, does not exist!", - "12a90fe85b8863e1dea43284988d7750": "Network disconnection failed! {}", - "6226d2fef3bf047236f0f3a57dcd71fb": "Network connection successful!", - "d882b8375782b1bc56ccaf84ed27d20b": "Failed to connect to network! {}", - "221d1ea3c23f430e03a4486dca865014": "The container does not exist, please refresh the browser and try again!", - "7e88e25ea6c628c2d03c526c04af3eed": "Failed to get container status: ", - "ae178e022cf2fe30f402145572528de8": "Volume names can be no less than 2 characters long!", + "7c6f761019365f8a5cfb2fb54d9e199d": "info.json is downloaded!", + "10066fce84fe34e9cc33e0338532988b": "The info.json download failed!", + "0672e579ab0e3454713eb683ddcc4859": "{} Download failed, please resync!", + "8e790e81fffa7f51d099f710bd8f82cf": "{}yml file test failed,{}", + "371acfea202589c4efd6724888f66595": "{} Download completed!", + "51cf61e34b3f71ce1e430cdfcf129b80": "{} Decompression failed", + "c59b65890496cdf2b14d127a1f76f73d": "{} extracted successfully", + "0117718c35c7a16a62de5c259e1d35ee": "Directory creation failed for the following reasons: {}", + "374e3fe41b55a0b29420e455fb514dd6": "The storage volume has been created", + "6d0d40f64f89227daf345eb2257638e8": "{} cannot contain Spaces", + "a00b49ace55de909015029a0d6d6096f": "{} cannot be null!", + "54498312bb8f97ce07a9a0b0b47cfad1": "Server port [ {}] is occupied, please change to another port!", + "47b74e08252747225c49ea0cb011c79e": "Project startup failed {}", + "838089af9a2941a49862f342c056a8ca": "Start creating the project", + "9b149598fb30f54fec9e82a3d121a464": "{} already exists, please change the project name", + "634370637f6a5b88940c75f826953d0c": "User project directory failed to create,details: {}", + "f7b14d3f642d711a23d5a0cca725fd0d": "Failed to copy project directory. Details: {}", + "7bdaccb3d20432c5e0150862ab1cc3f3": "Missing parameters name", + "9b90b5b49486a61d9b0e6dbbbcb56cad": "Missing parameters container_info", + "b23d7110e9bf6539b4964afe0d4934e2": "The grouping already exists", + "a90ca6939fe71693c145f50596c6e0e6": "Container {} has been added by group {}!", + "e3cf7e2f2d14257e7ea33657b135d534": "Add failed:{}", + "fcbeb38a63ced9d3de476fb08c31d71e": "Missing parameters id", + "fe4e0032f69b4100ed143d475e8b5050": "Edit Success", + "6c4ed52bea35c4c43839b8f0b44489f9": "Edit failed:{}", + "6c0129a45e9da4e1820335f3d06a869f": "Deletion failed:{}", + "2a743a86676fd52214d3c0af1b0238b5": "status Parameter error", + "f95136e5c1f3ccbb09ace8fc24f1e0ca": "Container [{}] operation failed", + "2e01172e31495f41fcebcf3f831cc82c": "Operation successful", + "244a98f8c45f938980f48b168aef02c9": "Operation failed:{}", + "fc431240dfc80a731900d5f2ddb6dfc3": "Container start order {}", + "5ea6c6eea14c24c92eeeccaeea5c46dc": "Invalid state!", + "0f3f874698792dc81c7c00b9e74fea34": "{}\\r\\n", + "aad4acc1243565c5c2ca41e5733e5fe0": "successful\\r\\n", + "d8f5a29760a4f000dd754819b1faadcc": "failed\\r\\n", + "73977612ef83925db43df7745df9c5eb": "\\r\\nNo response for more than 10 minutes!\\r\\n", + "6345c76d66a8a9e9cdd3f9d996ff062d": "Please pass in cmd", + "bba401eadefa8222f3e60a312cc19f34": "Only docker run or docker pull commands can be executed", + "b5592904212696df3e5bcec990c8676a": "Dangerous command exists: [ {}], execution is not allowed!", + "cfff471dc04b6ba4aeb2cc2844b2c94b": "Dangerous symbol exists: [ {}], execution is not allowed!", + "f1d9b154a0c2625d828a504a8cb35682": "The command has been executed!", + "45a0bbacbe8d5ea062167e88423e4573": "nginx or apache server was not detected, please install one first!", + "bdaf560796795d6a303bc9a1d75a34c5": "Project Type [{}] Existing Domain: {}", + "4588a786e80c83c2cbde37b930c3d778": "Server port [ {}] is not used, please enter the port in use to reverse!", + "6888cf6586ce3c187150146a2d1db0ac": "Add failure, database cannot be written!", "9f9663b59d32947ff1f2c5b364c571b8": "successfully added!", + "e6bddfc6a0bbf72d592236c61b411f9a": "Add failed with error: {}", + "1bfa1b1738332c4835f5efe7c54ab9c2": "parameter error!", + "0d66954ff42aa042c219a356266f5bc0": "No reverse proxy information was detected!", + "ae178e022cf2fe30f402145572528de8": "Volume names can be no less than 2 characters long!", "365c770f123d22093084908ebcdc75fc": "Volume name already exists!", "2dc51ae60242f0e5b56a9f0d176f91d4": "addition failed {}", "307feea9ab8928f39595316b11992cb1": "Driver option tags must be dictionary/key-value pairs!", "f529949f8a98615c109ee8b8eb9f7656": "Add failed! {}", - "2a0f93407bb61e2403ccd032cbc64e3e": "successfully delete", "a4ec5c1fa47f2ce0c875f91ea4e7dd08": "The storage volume is in use and cannot be deleted!", "11ff7153b67d275618dd3a62d1e56373": "The storage volume does not exist!", + "2aa70dad9bff94a855fdde3fc113e6c5": "Delete failed! {}", "55c31f03e88bd6ad4ce7f68d425648dd": "No useless storage volumes!", - "5395cc8155f62a666b8f0d0f9f207676": "Repository information already exists!", - "9b10e472adfe6372c9175b9002f098fd": "[Official Docker repository] Not editable!", - "5858be44c285048a8f51c126b2fd23e9": "Editing failed! Reason: Account password decryption failed! Please delete the repository and add it again", - "7e51d0e26e1b467aff3c89d3e0751ec0": "Editing failed! Reason:{}", - "6478f13dd58e5a4329e19be9020243ff": "This repository could not be found", - "d5309f3186607eb36bee41e8a28cea3a": "Edit success!", - "9e20bffc0d4093d18fcbc5c98fa0fd87": "[Official Docker repository] can not be removed!", - "a62336a87697ab6911ba550015a798ef": "Delete failed,The repository id may not exist!", - "c28bc5c07ec6f2b56777ac7c852dd64b": "Setup Successful!", - "f2bd8f0373084151bbc07e8c1409e37c": "Setup failed!{}", - "54197759827cfaf0cdb1e213fa49771e": "Login test failed! Reason: May be account password error, please check!", - "657a0b7e82731fb4ae516d14081f17d0": "Login test failed! Reason: {}", - "11cde3a2ca81c845978b98e4a6ec471e": "The monitoring save time needs to be a positive integer!", - "b314fb25bf654a2256bf53b0f6986c93": "Monitoring data cannot be retained for more than 999 days!", - "60e46aeaed758964902dd7ae99858f03": "There", - "1ba194462d31177d3db4ad6bf18fdbe5": "Docker service setup failed, please turn off aapanel anti-intrusion and try again!", - "422f78617d6852c41e370982d73235ed": "Setup failed! Failure reason:{}", - "dca5bd22c99a74f74074a3a53d78a58b": "{} success", - "be62f7640f2c5b730ba50ecc580ae618": "Global configuration file error, please check {}!", - "8ebe0b989b543cf96149811c7a1f3fe2": "Speedup address [ {}] Format error
Reference: https://mirror.ccs.tencentyun.com", - "ec1ec17a5862a949e277432e1d09484d": "Setup failed! Failure reason :{}", - "179a2001e96bb8d0475488f80c7216a8": "Update successfully!", - "f4dc83b81fe6993f99c2b54494eeeec1": "Start monitoring successfully!", - "af79fd88d4b6f7e8a1ac05e199747fdb": "Failed to start monitoring!", - "6f4d03d4d1ee0bd282ea744730b7ceda": "Docker monitoring stopped successfully!", - "4cc06d8560bb116a38a5aae1458cbe4a": "docker-compose file path cannot be empty!", - "8d885b86e8562c2128689c4a2601c054": "docker-compose file does not exist!", - "7bdd4d85dda1275e2be709fd9e0d71dd": "docker-compose file is not executable or is not a docker-compose file!", - "c28e19f0398bc1819a890878021836c1": "The installation task already exists, please do not add it again!", - "a87b64b2d19f29438274f80ce36a3579": "The installation task has been added to the queue!", - "c1710a5899fa03f7ad5ea1945a91e4f8": "Please delete all containers and images before uninstalling docker!", - "d388487780fba74e4ff3f3b9ffbce58b": "Can be uninstalled!", - "c4ba6d01fd53333a6e7e85707758c550": "Uninstall successful!", - "b7affa7cc663144bc99b9edb3f1a027f": "The repair task has been added to the queue!", - "cb49a4daafc9d27bd460967891968225": "Saved successfully!", - "739722f14db791bd300e08318a48ba59": "Saving failed, reason: daemon.json configuration file format error!", - "58fcf0699f38a60c8025330585ac205a": "Save failed, reason: {}", - "720d2290c3082615c0f79894bfdcabd7": "Please enter the correct I Pv 6 address!", - "c0ef08aa7bd6276137ccd491a8041223": "There is no volume to back up", - "584e35dd4a55da88bd232ac7a19b9b95": "The backup task was created successfully.", - "0b08674e1c87f3f8508a4ae9b0c160f8": "Failed to create a backup task {}", - "13d829d3f2b78c971207d944f2a96c55": "Failed to delete the file, reason: {}", "6169a7282b361deb5f6f5b6e18f9426e": "cmd parameter error", "286933a4f24bee0eed1f9300f70a30c7": "Only the docker run command can be executed", "a46a6b274dcbfc5a629d234c2816a165": "There are danger symbols: [{}],Execution is not allowed!", @@ -2157,24 +2121,26 @@ "994e5a057aca3524ba773ec33228e184": "Creation failure! {}", "00ff90441ea0bdece5d9e5c72efa14a7": "The container creation failed and the connection to docker timed out!", "8879635d66ad75dcbfc8c31ba1351116": "Container failed to run! {}", - "facfe02e3070c389fe486efac23f2ab6": "容器创建成功!", "71dc70f7ab3a4bc0c2a7141718d3a9b2": "Creation failure!", + "1983b37067c7e94095a5113786fdef9c": "Editing failed, connection to docker timed out, please restart docker and try again!", + "c558fedcb5850939202e684ff32c7c50": "Update failed!{}", "ed0029af5f77a5dfacbc2452e8c3ec92": "Container ID is abnormal", "c5b3db7efde90edcb803a4a79e559b21": "The new image name cannot be empty!", "b10305369ebb41ef24699b8137733465": "The mirror does not exist!", - "d567f353b12e618571935661f31c2a16": "Container editing failed and the connection to docker timed out.", - "c558fedcb5850939202e684ff32c7c50": "Update failed!{}", + "9e90efb62702b147b71e8731290caf44": "The image [{}] does not exist, please try to check [Force pull image] and try again!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "The new container was not created successfully, and the old container has been restored. {}", + "1f004e412319b7ed472624e011b3d2ba": "Update successful!", + "a2ea046c20d2da5cebf2dea01a62dabe": "Update failed! The container state has been restored", "b84bf4d95051856f9965b55bb5402de3": "Container does not exist!", + "d567f353b12e618571935661f31c2a16": "Container editing failed and the connection to docker timed out.", "f2124ee490df203b3f86509401c76a09": "The container is successfully edited, and the subnet is not specified when the currently specified [{}] network is created, and the IP cannot be customized, and the IP has been automatically assigned to you!", "b95d75cd8e04e9cca297c3cd1091b2eb": "The container is successfully edited, the network [{}] setting fails, and the IP address has been automatically assigned to you, error details:{}!", "4363bb34365a67238ecc6a98ce46b361": "The image has been generated, and{}", "4bb30e8d57a6a7e548758daf4ac33983": "submit successfully!", "a32e1f09fc2739d94c51a7168675e0e9": "Submission Failed!{}", - "9ff81cc845af62a773af3412bdf7d9a0": "The container ID is abnormal, please refresh the page and try again!", - "d8f5602e197fb8b3c772f071ad4a8baf": "Select the shell type!", - "9ad72ac09babc507baa6e165041e128c": "This shell is not supported-choose bash or sh!", "172f51d3307b02aeb6dc703a442f4724": "Failed to get container", "684fc00ae67504a56c09ef71431b1261": "Successfully exported to:{}", + "f9a48b804d917398e795016687f3b0f4": "Please turn off the [Tamper-proof for Enterprise] before trying!", "3ab9d9b76e8d22434930622b5f0acc6a": "The container has been deleted!", "d1fe1d6e5e8c17b60f749ad36ff3bcaa": "ipv6 server port [ {}] is occupied!", "9f13645ac42f0c9908a35637a525d561": "ipv4 server port [ {}] is occupied!", @@ -2197,6 +2163,7 @@ "dac7d97aeb94cf9d3b3b5d7d072c4cff": "Please turn off enterprise tamper protection before trying again!", "32ca87e65c5fc75d3857767417b56439": "failed to delete! {}", "b0ea22ff0b389c2a32b8f4367ab650db": "Parameter error, please pass in restart policy restart_policy!", + "179a2001e96bb8d0475488f80c7216a8": "Update successfully!", "3b2f70397fa8a827c7146cbd900f7222": "Update failed! {}", "c147897a9d1746a58de531e9c0158c23": "The container is not started and cannot be renamed!", "a89c2e8f7eb81399f984330e55014c6f": "Rename successfully!", @@ -2205,45 +2172,135 @@ "363b76cd4207ec1adb31b9f7ee3930c8": "Unpinned successfully!", "0fffc4397713115e14ef45273241dfbb": "Parameter error, Please pass in: remark!", "dce2cbc7791016e4876ab144e53b4f82": "Parameter error, Please pass in: id!", - "7bdaccb3d20432c5e0150862ab1cc3f3": "Missing parameters name", - "9b90b5b49486a61d9b0e6dbbbcb56cad": "Missing parameters container_info", - "b23d7110e9bf6539b4964afe0d4934e2": "The grouping already exists", - "a90ca6939fe71693c145f50596c6e0e6": "Container {} has been added by group {}!", - "e3cf7e2f2d14257e7ea33657b135d534": "Add failed:{}", - "fcbeb38a63ced9d3de476fb08c31d71e": "Missing parameters id", - "fe4e0032f69b4100ed143d475e8b5050": "Edit Success", - "6c4ed52bea35c4c43839b8f0b44489f9": "Edit failed:{}", - "6c0129a45e9da4e1820335f3d06a869f": "Deletion failed:{}", - "2a743a86676fd52214d3c0af1b0238b5": "status Parameter error", - "f95136e5c1f3ccbb09ace8fc24f1e0ca": "Container [{}] operation failed", - "2e01172e31495f41fcebcf3f831cc82c": "Operation successful", - "244a98f8c45f938980f48b168aef02c9": "Operation failed:{}", - "fc431240dfc80a731900d5f2ddb6dfc3": "Container start order {}", - "5ea6c6eea14c24c92eeeccaeea5c46dc": "Invalid state!", - "45a0bbacbe8d5ea062167e88423e4573": "nginx or apache server was not detected, please install one first!", - "bdaf560796795d6a303bc9a1d75a34c5": "Project Type [{}] Existing Domain: {}", - "4588a786e80c83c2cbde37b930c3d778": "Server port [ {}] is not used, please enter the port in use to reverse!", - "6888cf6586ce3c187150146a2d1db0ac": "Add failure, database cannot be written!", - "e6bddfc6a0bbf72d592236c61b411f9a": "Add failed with error: {}", - "1bfa1b1738332c4835f5efe7c54ab9c2": "parameter error!", - "0d66954ff42aa042c219a356266f5bc0": "No reverse proxy information was detected!", - "7c6f761019365f8a5cfb2fb54d9e199d": "info.json is downloaded!", - "10066fce84fe34e9cc33e0338532988b": "The info.json download failed!", - "0672e579ab0e3454713eb683ddcc4859": "{} Download failed, please resync!", - "8e790e81fffa7f51d099f710bd8f82cf": "{}yml file test failed,{}", - "371acfea202589c4efd6724888f66595": "{} Download completed!", - "51cf61e34b3f71ce1e430cdfcf129b80": "{} Decompression failed", - "c59b65890496cdf2b14d127a1f76f73d": "{} extracted successfully", - "0117718c35c7a16a62de5c259e1d35ee": "Directory creation failed for the following reasons: {}", - "374e3fe41b55a0b29420e455fb514dd6": "The storage volume has been created", - "6d0d40f64f89227daf345eb2257638e8": "{} cannot contain Spaces", - "a00b49ace55de909015029a0d6d6096f": "{} cannot be null!", - "54498312bb8f97ce07a9a0b0b47cfad1": "Server port [ {}] is occupied, please change to another port!", - "47b74e08252747225c49ea0cb011c79e": "Project startup failed {}", - "838089af9a2941a49862f342c056a8ca": "Start creating the project", - "9b149598fb30f54fec9e82a3d121a464": "{} already exists, please change the project name", - "634370637f6a5b88940c75f826953d0c": "User project directory failed to create,details: {}", - "f7b14d3f642d711a23d5a0cca725fd0d": "Failed to copy project directory. Details: {}", + "ca1bc3e1d32b99b90395da47b88576a9": "Parameter error, Please pass in: ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "Parameter error, Please pass in: _ws!", + "11cde3a2ca81c845978b98e4a6ec471e": "The monitoring save time needs to be a positive integer!", + "b314fb25bf654a2256bf53b0f6986c93": "Monitoring data cannot be retained for more than 999 days!", + "60e46aeaed758964902dd7ae99858f03": "There", + "c28bc5c07ec6f2b56777ac7c852dd64b": "Setup Successful!", + "422f78617d6852c41e370982d73235ed": "Setup failed! Failure reason:{}", + "dca5bd22c99a74f74074a3a53d78a58b": "{} success", + "ec1ec17a5862a949e277432e1d09484d": "Setup failed! Failure reason :{}", + "f4dc83b81fe6993f99c2b54494eeeec1": "Start monitoring successfully!", + "af79fd88d4b6f7e8a1ac05e199747fdb": "Failed to start monitoring!", + "6f4d03d4d1ee0bd282ea744730b7ceda": "Docker monitoring stopped successfully!", + "4cc06d8560bb116a38a5aae1458cbe4a": "docker-compose file path cannot be empty!", + "8d885b86e8562c2128689c4a2601c054": "docker-compose file does not exist!", + "a87b64b2d19f29438274f80ce36a3579": "The installation task has been added to the queue!", + "d388487780fba74e4ff3f3b9ffbce58b": "Can be uninstalled!", + "c4ba6d01fd53333a6e7e85707758c550": "Uninstall successful!", + "b7affa7cc663144bc99b9edb3f1a027f": "The repair task has been added to the queue!", + "cb49a4daafc9d27bd460967891968225": "Saved successfully!", + "58fcf0699f38a60c8025330585ac205a": "Save failed, reason: {}", + "6c3e5d603d8845422e861fb0b4eed350": "A configuration item that doesn", + "f324009782d2d9e73d1087884ebc2c4c": "The Docker root cannot be empty!", + "538960e1336f919e37a0d2c024c56830": "The current Docker root directory is the target directory and does not need to be changed!", + "f2bd8f0373084151bbc07e8c1409e37c": "Setup failed!{}", + "a848bbd79221dfdce1c9dca536dbfada": "The JSON format of the proxy settings is wrong!", + "edf6eb680187066c4dea216b3b20d6d2": "Proxy setup successful!", + "720d2290c3082615c0f79894bfdcabd7": "Please enter the correct I Pv 6 address!", + "b01f9411136207ad7df28b9bf2387e2a": "Upgrade failed! Reasons for failure:{}", + "da896b628e3ded58445e4b015320f327": "Overload fails due to:{}", + "efb869976990f78b3d6fcbaf270e3323": "Reload successful!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Global profile overload failed:{}", + "75bbb7a00c3b5b510913952fe089f52a": "Wrong parameter, path parameter!", + "273609d18876f5f9e3f021032e5b57a3": "Setup failed!", + "5e022f79dcc774c79bc55ee28774e2e7": "The image name cannot contain /", + "c00be60f9f3f7d747aadfdb124e855ef": "Successfully saved to:{}", + "cb1f8d99b492340cf701101c87884a8c": "Cannot export image!", + "afaa91d141ded3e37b8b9ebf8bc31c51": "Exporting the image failed and the connection to docker timed out. Please try restarting docker and try again!", + "5b980f2e1c82c04c91376d55d4306a91": "Failed to export image!
{}", + "e5e8c7cac8b71e94280fa08301d21e78": "Please enter the image path!", + "5441400ea3bd16cffdf70c46c34f61d4": "Failed to import the image. The file extension must be.tar!", + "0720c6c4f478b3a374b4a438f7cf80ad": "Failed to import the image, the connection to docker timed out, please try to restart docker and try again!", + "22cc0388137842df9649b3bbcff345e8": "If the image import fails and the temporary container directory is not created, check whether the protection software has an interception record.", + "67b97e4746a2faf5d59206a80bb28649": "Image import was successful!{}", + "deceb44868a29ae5d579114348736cbb": "The image import failed and the temporary directory of the container failed to be created. Please check whether the protection software has an interception record!", + "8eb05618b0f04e727b0685427fd49c8e": "Failed to import image!
{}", + "721aa02577670c1049ea9d12caa8938c": "Please enter the correct DockerFile path!", + "736df9a7c491f3299efdeb9f7d7e9e0f": "Build image successfully!", + "6e85568dae869303ca7a4486f55458a3": "Build failed, connection timed out", + "5bb301b85cc1f42e56174d3d9a4c0286": "Build failed! {}", + "f51455b323ec2db8004c812001043330": "Build failed!The specified Dockerfile was not found", + "8e1b9c9b75950d0feba6813d32766e61": "Build failed!{}", + "eba0ec758a6464a20c14c0f23ceee62e": "Mirror deleted successfully!", + "8dd326278d09a3ac4bc56cf725c8f262": "The delete failed and the image may not exist!", + "11ead921bc0e3d94f1f9e0db4bf8ed8d": "The image ID is used in more than one image, force the image to be deleted!", + "43993616c7433350755d30a3b4d065dd": "The image is in use. Please delete the container before deleting the image!", + "d6992c3fcf2269c249cd5f18f1ac2c11": "Failed to delete image!
{}", + "0c6c071174fde5b47c9eef8088c17a89": "Failed to delete image,The connection to docker timed out, please restart and try again!", + "a3ba80a8e1e0d9af94c809e909431b3c": "failed, Login to repository [{}] failed, please try to log in to this repository again!\\r\\n", + "cc40077b6ee61fbfa35713a21e8eb866": "bt_failed, Login to repository [{}] failed, please try to log in to this repository again! {}", + "60b488c60b6747bf34a86a69740b636d": "The pushed image cannot contain [/], please use the following format: image:v1 (image name: version)", + "44dbec830b87eb037e8fcbb0e1b56160": "Unable to push to Docker public repository!", + "b4c46001066c912344e3bdb0df86e848": "Repository [{}] Login failed!", + "0ebfb094c6482acb049e0dd0d3107307": "Push failed, image label error, please enter such as: v1.0.1", + "d26bdd6e86002ed92089dc71347822ce": "Push failed, do not have permission to push to this repository!", + "82058092ad7d2c7aa5e2f012b6544e59": "Push failure!{}", + "2b228d4775d23d2725ec227ba648bd43": "Push successfully, mirror:{}", + "9e396f640866ded9c3a47268f96a36e3": "Pulling the image, please wait...\\r\\n", + "7e5f4d488d318dc7c235095c8456f5e4": "Pull or search for images...\\r\\n", + "97a6dfe3a273202edffe31af7a43e220": "Failed to use the default mirror station to pull the image! Trying to use another mirror station to pull for you, please wait...\\r\\n", + "484616540fc726ef4f52e97a1c2f0fef": "Failed to pull image!\\r\\n", + "1cd77329b2bddfb200e656214b1fdf32": "Failed to pull the image!", + "63c709b9759af42fef890d539d822575": "Pull failed!{}\\r\\n", + "b4aba972332d1f3728171905a033fb99": "Image pull [{}] successful\\r\\n", + "2fae21ffd185d9e9730b39bc7de23852": "Image pulled successfully!", + "8a635442294fd90195a43d9a1672fc3f": "Failed to pull image!", + "711de72d616e7abb29dfa919244d382d": "Pull failed,The image does not exist, or the image may be a private image. You need to enter your dockerhub account password!\\r\\n", + "e9511e26273da5b4537b4683668b548e": "pull failed!{}\\r\\n", + "05d13bf5dcc37754db74b2356e6e117c": "pull failed,There is no such image in the repository!\\r\\n", + "714841af7f3de6c8d99ba03f4cee0ee5": "pull failed, The image format is wrong, such as: nginx:v 1!\\r\\n", + "2d941c4fa4da32ccafa8670a07f23c1d": "The image was pulled successfully.", + "5282194697748d9fcd1ccd8a90428424": "There may not be this mirror image.", + "d6facab17334983e7c6f8c561c239820": "Failed to pull the image, this is a private image, please enter the account password!", + "b507deb7848d566982b339265c8f5482": "Pull image failure

Reason: {}", + "e90811ef0a60b6d299b4e1064d7788d0": "No useless images!", + "f343313c101aeaff0516990ebea3dcef": "failed to delete!{}", + "90ecd58b3feb0b2be11f0af685ad39fe": "Deletion of useless images failed and the connection to docker timed out. Please try restarting the docker service and try again!", + "0568e5e8aa7c811dd420c818189a0d46": "seconds ago", + "53c53a79f864561f8b6886b3dde7cd51": "minutes ago", + "f329a0dab82282e50e3aea9260e95d53": "hours ago", + "7a1af30a5ce889031cbc2472766159e3": "days ago", + "558a41d55884223583b3542e802d2b64": "The mirror name cannot be empty!", + "4097585e32152eb74bbee5ab8c463718": "The docker service is running abnormally, please restart and try again!", + "26a0931677e111565f3ff7d059b94d8b": "The gateway setting is wrong, Please enter a gateway that matches the subnet: {}", + "def2ba1ce0e4d77692c14e5b984636fa": "Subnet address format error, please enter for example: 172.16.0.0/16", + "716eeeb727fd667635ccf1d18891d46e": "IP range format error, please enter the appropriate IP range for this subnet:", + "e310a873e7812c7f994d482604061fee": "IP range [ {}] already exists!", + "db88b911ea66744c24b22efcafef2101": "The system kernel version is too low, please update the kernel or choose another network mode", + "9cebb294a44695984eaaf2134df63a51": "The current node is not a Swarm and needs to be configured before it can be used", + "85ac438bd64f13e2ad61cf60e5ade3d3": "Failed to add network! {}", + "640520ffb5d9c01336710bad3ea6d7ff": "Added network successfully!", + "87574a543563d2e037b87a6cf705e3ff": "The system default network cannot be deleted!", + "23b6d9d6c36088deb928efad7fb9b63b": "The network cannot be deleted while it is in use!", + "8f512551c7ddf61331c3d068e80c642c": "There are no useless networks!", + "08efe6a4e12437b79225c8b59fd710eb": "Network ID cannot be empty", + "a636381ee5e6d6d021fff745ca132905": "Container ID cannot be empty", + "31a75a8d220d37dc4a7ea28d0f24cc19": "Network disconnection was successful!", + "a2b9895fca7698902da9319b52392366": "Container ID: {}, does not exist!", + "c81f03a558307d5aaf3b339af28e04ff": "Network ID: {}, does not exist!", + "12a90fe85b8863e1dea43284988d7750": "Network disconnection failed! {}", + "6226d2fef3bf047236f0f3a57dcd71fb": "Network connection successful!", + "d882b8375782b1bc56ccaf84ed27d20b": "Failed to connect to network! {}", + "0e8623af4dd4d3b732904872d22fbf83": "The network name cannot be empty!", + "5aa2044b58e63d58ddecc69421802404": "Gateways can", + "ceaa20eefd6749452a947c7f5dfa4eb0": "IP ranges cannot be empty!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "Creating a network failed!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Network name: [{}] already exists!", + "9cdc09516d85ae057d1d9bedc988849e": "Create a network successfully!", + "5395cc8155f62a666b8f0d0f9f207676": "Repository information already exists!", + "9b10e472adfe6372c9175b9002f098fd": "[Official Docker repository] Not editable!", + "5858be44c285048a8f51c126b2fd23e9": "Editing failed! Reason: Account password decryption failed! Please delete the repository and add it again", + "7e51d0e26e1b467aff3c89d3e0751ec0": "Editing failed! Reason:{}", + "6478f13dd58e5a4329e19be9020243ff": "This repository could not be found", + "d5309f3186607eb36bee41e8a28cea3a": "Edit success!", + "9e20bffc0d4093d18fcbc5c98fa0fd87": "[Official Docker repository] can not be removed!", + "a62336a87697ab6911ba550015a798ef": "Delete failed,The repository id may not exist!", + "54197759827cfaf0cdb1e213fa49771e": "Login test failed! Reason: May be account password error, please check!", + "657a0b7e82731fb4ae516d14081f17d0": "Login test failed! Reason: {}", + "221d1ea3c23f430e03a4486dca865014": "The container does not exist, please refresh the browser and try again!", + "7e88e25ea6c628c2d03c526c04af3eed": "Failed to get container status: ", "cb337dbfbc18aafa482051b6fc349dea": "Failed to get the configuration file", "84d3fc0c1c70fcd6fdd7ca7c3be11225": "The project already exists!", "a280b122a0b3249c26b1f94ad4573f50": "Write failed!", @@ -2262,6 +2319,32 @@ "d6d90f977089e176ec7443db17c41279": "容器添加成功!", "04cd9210bf9290bda98bc76ca4bc59fd": "容器删除成功!", "d867a5e10a7a9485129c679b85453e3f": "项目删除成功!", + "459ed27083c25b82135efedccaa60ada": "Scanning {} exception history command", + "37c614d5d300e6c391808efd5363ec82": "Scanning {} sensitive information", + "5ddc98a53573410c7cb65727946c5d3f": "Scanning {} backdoor", + "6bb6be880d819a93af392183d16fccdf": "Scanning {} container escapes", + "cd7fb7cf576b22469514b5b30f365158": "{}Scan completed", + "7d643f192968be3f8a54be28592e9176": "Scanning the image failed:{}", + "acc2731ee0f5b78d4e801d2daf814c32": "Suspicious abnormal history command found", + "3069c277261d044bb309e4b09ae798fa": "It was found that the image has an abnormal historical command [{}], which may implant malware or code into the host system when the container is running, causing security risks.", + "6d64734fff5534f48029ffba4aa3678d": "1.It is recommended to check whether the command is required for normal business
2.It is recommended to choose official and reliable infrastructure to avoid unnecessary losses.", + "6684913201a60be0b5e89c4dfb210719": "Found bashrc backdoor{}", + "9a9f27d5f9f8c056fff7986c87a94c30": "It was found that the image has bashrc backdoor: [{}], malicious code content:
{}", + "d8a828116070b9d92315ca309cca1991": "1. Enter the container deployed using the image and delete the malicious code under the file
2. Check whether the container has been invaded, and update the access token or account password of the business in the container
3. It is recommended to replace the official image or Other trusted image deployment containers", + "e1439f3f7d25d378078d513a82a3fa87": "Backdoor file found{}", + "9ede9d4bd542eedf78e39b0acf0206e3": "It was found that the bashrc backdoor file [{}] exists in the image, and the malicious code content is:
{}", + "686765b4612ecd8f774648db29a1541d": "cron backdoor discovered{}", + "390bdc0b3c37a56ede9467b0c220a3b6": "It was found that the cron backdoor [{}] exists in the image, and the malicious code content is:
{}", + "caea084281a3cb2515e5618cd3856163": "Found system backdoor:{}", + "d04061273caa56d5a0c3d74f3e9fd482": "It was found that the systemd backdoor file [{}] exists in the image, and the malicious code content is:
{}", + "fc76e0fe415c49cc1c09bf76035fc4e9": "Found sshd backdoor{}", + "00b2409f52ef5bc56afe29ccbe5cfa2c": "Found the sshd soft link backdoor: {}, the file hits the malicious feature [exe={};link_file={}]", + "e747da31a54cd71fb1a2860cae0f9f77": "Found the tcpwrapper backdoor{}", + "a2b09164c8d23894736bcc6a646861e0": "It was found that the tcpwrapper backdoor file [{}] exists in the image, and the malicious code content is:
{}", + "a7fd9f6b190b8531039376fbbda5f482": "Users found to be at risk of escape{}", + "5d46ed5f4af3f30cfcc8bd66942f93b4": "The username {} may complete container escape through the command [{}], allowing the attacker to obtain access rights to the host or other containers. Malicious content:
{}", + "4ca0a18aa36a60613104cacdae514dec": "1. It is recommended to delete the image or no longer use it
2. If there is already a business using the image, enter the container environment and delete the content of the user {} in the /etc/sudoers file.", + "611afea08ae3b216a34dfde4c143f46c": "不支持的系统版本", "68ae8c43a52aac63c5c62e1974afdda6": "Script ID cannot be empty", "eee298ea1d9259c2f0e2061ecd89c21c": "The specified script does not exist", "b68a8dd0c887719b7cc3e10dc11843ce": "The built-in script of aapanel cannot be deleted", @@ -2300,6 +2383,147 @@ "101da618f72223d3eac9e66fe510b04f": "Task event ID cannot be empty", "bee903cc3d03ab2c237eefb1d601fbcb": "Script execution failed with error message:\\n{}", "1d78758685e5e2f4efeeb490f8521abd": "\\n", + "ca6977d373320a7fdb51047199d4cc59": "Adminer is not installed!", + "38641e6ce3a6369e108eb595672c8edc": "Uninstall Successfully!", + "9cae26284a7ad2f46132c1e8e196d089": "Install Successfully!", + "a9a92e55770213c8aa1fb2871dc43563": "Set Adminer port successfully!", + "b611124a9bad44e328d7ce809912802d": "Set successfully!", + "2321763bf0b4cbf345b1e19dc9faec47": "Set Adminer php version successfully!", + "40a1f70c155550ad2dafa5e556e10c3c": "PHP version does not install!", + "e75e68c65607a7cfcc570d51345d7e33": "File monitor", + "983e2622c48ae7231c5d29b135133b0e": "Add monitor directory: {}", + "15c7df4ddd1d366c2cdfa2689c15369d": "IP filter program compilation failed", + "423c2da1e20a5f2138cc810423475eef": "IP address cannot be empty!", + "1e116dc22492b28a7a38a6029416d0e1": "The IP address is in the wrong format!", + "8c8f15a1c1cce8bbdc465e865c804b40": "The maximum blocking period cannot exceed 24 days!", + "fb86e24ffe47ba150610ba1efd96929a": "Temporary blocking of IP address CIDR blocks is not supported", + "bdb199a03e52488d499ea6bb0cb0d1ed": "WAF is required to block IP address segments", + "1ac8e9ffcea7cf6e9fa183c1b9038599": "The IP data does not exist!", + "04d46623edcb5663566cf43f575de9b2": "Website name cannot be empty!", + "4dcde63f7fd4415f3b5eb6cb889d135c": "The addition was successful", + "d303480175994c6ad240cf24a4a99640": "Website configuration does not exist!", + "87d1f7257214d09ba39656b72c864bac": "Account Setup successful!", + "aa5bb2d58da86c4b9160e94d0c4538f1": "URI cannot be empty!", + "ade0ab88aa0ee9c18f0979d5b62b517d": "The URI already exists, please do not add it again!", + "506d9cb0cb2468fd09048bcbe8b37497": "URI does not exist", + "cf180f27e678d4e297f690e581961417": "The listening address format is wrong!", + "1ed0fa9bb8768d56bf2d3232d7067023": "Wrong listening port range!, requirement: 1024-65535", + "e6aa58b2f41bc53f6b84657d47eb35c1": "The data save path does not exist!", + "c87be59ecbed944c2b45fea87d62f473": "IP statistics mode error, requirement: 0 or 1", + "fbc4861b0190c90a5388e44d2bbac678": "The current version is not available, please upgrade the panel and try again", + "8b1d5629a1346da21fcaeb9f8f0db6d2": "Start time format error!", + "7a238977c4b13d23ac3e6b151a914cab": "End time format error!", + "a87a482f3bced3ce16bc9a351e8b5ce8": "The start time cannot be greater than the end time!", + "a0ef69b1680461368a9130e770256ca6": "Date format error!", + "2493958c6f4051bb8d254d77d77b622b": "Time granularity error, support: minute, hour, date", + "4c4258ffd9a69c8e332346241a3cbdae": "The negation condition data is in the wrong format!", + "b47f4e8b7540cae56e085231c3c984c1": "Access ID cannot be empty!", + "fea04488a926034079dc00c5a60a9135": "The access ID format is incorrect!", + "da206b8971dcba715ed8cdd1a82736e1": "Access ID does not exist!", + "fd65e390dd8aa35ea3622658247776d0": "The date format is incorrect", + "9a4f1ea39f3a554d4e5431f86eb0450b": "The site name cannot be empty!", + "b59417ef234946819788acfde92a00a7": "The purge was successful", + "aaa3736c0541d4a4d82193c2204ec317": "The start time is in the wrong format!", + "e579606ed1219291caeb3bfad786dd3f": "The end time is in the wrong format!", + "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "The date format is incorrect!", + "53c85b9d96ea14f3f8224a5d2e659894": "Parameter cannot be empty!", + "9dc21ed8c6025cab9873847e6e1ca506": "The query type is incorrect!", + "236c6e2f9a266b929b283eda30c2b3b6": "No relevant data are available!", + "50fc65b5f19812ccf756b7ad7de7f4cb": "session_id cannot be empty!", + "8f2adb53dcb8d2c660159b1f8e8012ed": "The session ID is incorrect!", + "7f4419a5b09e1a04936f6aba6939521a": "Configuration check completed!", + "f3df0751d9522bf2e68034bab4cd49a5": "Configuration cleanup completed", + "191fae10bdd9d3eb6cb110b524fe40b7": "The submission was successful", + "f53208c04e48d7ee19222b6adf343810": "The username cannot be less than 3 characters in length!", + "251e2cae1dbed2b37f7d16961a606970": "Permission level selection is incorrect!", + "a835325a5600b6571a24111e4d318e2c": "Please select a website!", + "a669655fa991afcfa0cfa3f62286d944": "The password length cannot be less than 5 characters!", + "4d8d30e66ad9aaccc738ad99d5083955": "The username already exists!", + "12152390a5bf2ebce0f00b0fb5c650a2": "The addition was successful!", + "4d1b7f489e07d6ca02ca1910a3884c48": "The user does not exist!", + "3e83aa40dd320efb027151c02aab2871": "The length of the password cannot be less than 8 characters!", + "d3748b3102cc8ba898f0f0bec842ce9e": "The modification was successful!", + "ac75e534c7334e1fd02c68a3993f1568": "The deletion is successful!", + "ca281da1f13858d0b599d19e18a510bf": "The web status is selected incorrectly!", + "c88239bc4a113ab0f02acb9bc31b3437": "The web port is incorrect!", + "f06e6a5985a91ac55c651e0b573378f0": "The web security directory cannot be empty!", + "41a871d7ec26993be1367226321e06fa": "The length of the security entrance address cannot be less than 6 digits!", + "16f83d0969b9f7fe56ac3b55f9dedb26": "This entrance is already occupied by the panel, please use a different entrance!", + "066df5a1cf19314e0265a1eb396848ac": "Ingress address is incorrectly formatted, for example: /my_monitor", + "794ee58637251012717d7e565aafc2a1": "The setup was successful!", + "2531ce72ea98e5aa8f4953eee783b540": "No error logs found!", + "0fc543dae93d3f76f5f7ff8048f5c398": "No masked IPs were found for export!", + "5552ac99360952da2cf289f556ad19a6": "No masked IPs were found to sync!", + "3332452d6ecd015473b133de021a9e06": "SYNCHRONIZATION SUCCEEDED!", + "e6afdb1b63ca733f5d1741c7eff7a64e": "It is being processed, do not repeat it!", + "696212205a77e698860ff5195992642b": "The repair operation is complete", + "97cb85456b49af4258f4c8da38bb576a": "The scheduled task is successfully added!", + "2739213f569742c0782252f41279c060": "Failed to add a scheduled task", + "1cc4efde4fab0b4bbc2812a8b58f59b0": "Please specify a site name", + "3b5ef9e1ea5a8dbd9606075686dbf15f": "Please specify a date range", + "f8412f656685f470a82b74de3d9f24d5": "The export task already exists", + "96ed379ec1882dcf52f0ff65057efb92": "Please specify the fields you want to export", + "4e698e0709485a0e93a706964b748c5b": "Unknown export type", + "2a2dbc12afac446fe408eb78453bc6c2": "The export task does not exist", + "9ff8782f584db728284fadd719967806": "There was an error with the export task", + "b4421542e9cff8ce336075b668b8f87e": "The export record does not exist", + "41564d1cd7f8ecb23bcc590cb2217518": "Please enter a new data directory", + "699856a3cc697d8afcfd04dcd2f0729a": "The specified directory is the same as the current directory", + "103422cd692bcaf56a7367075caf2274": "The specified directory is partitioned on the same disk as the current directory, so no data migration is required", + "bcbd9605d3b8753bb8afbc765b293e01": "The modification and data migration tasks have started", + "967a57ad58881afe2c5da6cf0d7fce8c": "Please enter the IP address and crawler name", + "62b73e6c2a169296e73edf8a4d1e02f0": "Please enter a correct IP address", + "0e1a26f6137c04f0f80956210069e46d": "Please enter the correct crawler name", + "fe8d50ca26f2e864d2bf4a932801bb85": "Unexpected error, try fixing the plugin", + "21aa998a1dee8774bc88ce2a070bf4de": "Please enter an IP address", + "2e0c672edc06ef05e44de98ac1b7a47d": "The deletion is successful", + "0f9d9b728fba6427b5ff4da49aee1738": "The spider was selected incorrectly!", + "e48c86e701ddba3ab084d5457aa58714": "The IP cannot be empty!", + "3bdb147b7a040582220aa7f1ce2af19b": "The IP format is incorrect!", + "b60597b6a9525341fa5d4d441084658d": "No resolution records of the IP address were queried", + "86e9360dac1c5eece29f32c9aba8011d": "The save was successful", + "e5320166e7623b6a39f9a7af7c20c787": "Specifying a different website parameter error", + "c21fbb62edf94306d2e73365e6e7d637": "The parameter specifying another website cannot be empty", + "c7fae0c9886cac3924fe5e459e171ab1": "Deletion failed", + "9a84d2910d3d36b78d7060f1c77e27f6": "The site name is not specified", + "0987458a95b8bb7d6cdf9fa0630b6407": "The current server is not nginx and does not support custom collection", + "b925dfe3295278bd81a85bded66da01d": "The status code is in the wrong format", + "2a8793bbb8bc38a7df9d8c796648526a": "No site name is selected", + "6878600890a41b84c145423618ea2431": "No website information found", + "eff712873c55654bf48eaf421a184e73": "No custom collection name was entered", + "116208583eac10a8769774a6eaaff926": "The acquisition type is incorrect", + "fff3d7679cb121a30e68a104b58c934e": "The collection content was not entered", + "75db42595fc9aee34df76df808712f92": "Custom collection names cannot contain special characters({})", + "9667904e74175dfde9824cb8cd099ce7": "Header content should start with $http_", + "4c61d0ee460aa25eb6b5c413c46c9236": " The collection content of the body type should contain [$ + nginx log variable]", + "c03680a7ae35b7ce5b62f67b854d3b06": "The collection content should contain [$ + nginx log variable]", + "d621342512cf7910a6dc4e7d736bcc63": "The collection content cannot contain special characters【", + "b4704dc559a05c5721c095b97c4dbbc0": "The custom collection name is duplicated", + "6594b670e8bd06e352f112c1bf194fc1": "Custom collection content is duplicated", + "a531c58ef7fefbbbd79becda53ede191": "A custom collection name is not specified", + "88c0c3ae4ef97b6069a35672b2caa05c": "The collection content of the body type should contain [$ + nginx log variable]", + "41353000c0d351db90c9eec095bae879": "There are already duplicate collections, named:{}", + "ce78b7a225f05ece35ed7adc68b08a88": "The acquisition configuration to modify was not found", + "521df7df29b44fcee614de96cecca61c": "The deletion is successful ", + "3b0ccb5c759b0941d50e331b22013560": "Unsupported extensions: {}", + "7ea48870539b84996d1b1691c22823a7": "The modified data format is incorrect", + "bc64045195c8ed198a69772b3a204ef2": "The data to be modified is not specified", + "bb02871a5e118841b95b69c5bff55baf": "The blacklist is in the wrong format", + "1aac00a8c681100fd27b287c0b0516f1": "The build configuration format is parsing incorrectly", + "f6df35a69157ae1fca6415b043485334": "The task ID is not specified", + "524a477cee9485a5a80a860e2bc5b5d5": "The task ID is incorrect", + "4b5d95ed20303e337aec42486a0fb3fd": "The current website was not queried", + "19e777b7c8cdc1ce56ad2f4fe735b2b7": "The current website does not query the running directory", + "45484ac5ec748cf3362d425ed7142b75": "The rule cannot be empty", + "b36196750a032a791ecc8035853dc648": "The rule name cannot be empty", + "cfa7bc3b484b8068e78bc6f55a2aaeaf": "No rule specified", + "835365605f9e08c44c0b7f65a422d059": "The date parameter is incorrect", + "4fa3e528186292138b224a0a1d46ec59": "The website name is incorrect", + "3769ee974734f97166d6bce6b96e9b4e": "Data errors", + "daddfa03b4ea762e009a36ce970b2b59": "There is no Baidu account set up", + "0379d9c081b6fd9ec2fd86e8672a4e72": "If you fail to get the data, it may be that the login information has expired, and you can try to log in again", + "8057e57596c33acf04619825d625a483": "The update was successful", + "3149165696693c4f6fef18928261a50f": "There is no 360 account set up", "add390e6467c956fbb7f6da0f51d23d6": "The send task has been executed", "e8edb193e1cb171a17efe2765d72af71": "File does not exist", "63d325d5c4dfd07afdf888fdf727542e": "Import successfully, skip {} unsubscribed users , duplicate email addres:{}", @@ -2523,141 +2747,6 @@ "decc12f91f9703a201987fdeabe572a4": "The site with the same name [{}] already exists, please modify it before creating it", "de67e3b2c564a899fe3195606036a7f1": "Installation successful", "8d5496d961b4d4e08474b20c1450737a": "Failed to create a site", - "e75e68c65607a7cfcc570d51345d7e33": "File monitor", - "983e2622c48ae7231c5d29b135133b0e": "Add monitor directory: {}", - "15c7df4ddd1d366c2cdfa2689c15369d": "IP filter program compilation failed", - "423c2da1e20a5f2138cc810423475eef": "IP address cannot be empty!", - "1e116dc22492b28a7a38a6029416d0e1": "The IP address is in the wrong format!", - "8c8f15a1c1cce8bbdc465e865c804b40": "The maximum blocking period cannot exceed 24 days!", - "fb86e24ffe47ba150610ba1efd96929a": "Temporary blocking of IP address CIDR blocks is not supported", - "bdb199a03e52488d499ea6bb0cb0d1ed": "WAF is required to block IP address segments", - "1ac8e9ffcea7cf6e9fa183c1b9038599": "The IP data does not exist!", - "04d46623edcb5663566cf43f575de9b2": "Website name cannot be empty!", - "b611124a9bad44e328d7ce809912802d": "Set successfully!", - "4dcde63f7fd4415f3b5eb6cb889d135c": "The addition was successful", - "d303480175994c6ad240cf24a4a99640": "Website configuration does not exist!", - "87d1f7257214d09ba39656b72c864bac": "Account Setup successful!", - "aa5bb2d58da86c4b9160e94d0c4538f1": "URI cannot be empty!", - "ade0ab88aa0ee9c18f0979d5b62b517d": "The URI already exists, please do not add it again!", - "506d9cb0cb2468fd09048bcbe8b37497": "URI does not exist", - "cf180f27e678d4e297f690e581961417": "The listening address format is wrong!", - "1ed0fa9bb8768d56bf2d3232d7067023": "Wrong listening port range!, requirement: 1024-65535", - "e6aa58b2f41bc53f6b84657d47eb35c1": "The data save path does not exist!", - "c87be59ecbed944c2b45fea87d62f473": "IP statistics mode error, requirement: 0 or 1", - "fbc4861b0190c90a5388e44d2bbac678": "The current version is not available, please upgrade the panel and try again", - "8b1d5629a1346da21fcaeb9f8f0db6d2": "Start time format error!", - "7a238977c4b13d23ac3e6b151a914cab": "End time format error!", - "a87a482f3bced3ce16bc9a351e8b5ce8": "The start time cannot be greater than the end time!", - "a0ef69b1680461368a9130e770256ca6": "Date format error!", - "2493958c6f4051bb8d254d77d77b622b": "Time granularity error, support: minute, hour, date", - "4c4258ffd9a69c8e332346241a3cbdae": "The negation condition data is in the wrong format!", - "b47f4e8b7540cae56e085231c3c984c1": "Access ID cannot be empty!", - "fea04488a926034079dc00c5a60a9135": "The access ID format is incorrect!", - "da206b8971dcba715ed8cdd1a82736e1": "Access ID does not exist!", - "fd65e390dd8aa35ea3622658247776d0": "The date format is incorrect", - "9a4f1ea39f3a554d4e5431f86eb0450b": "The site name cannot be empty!", - "b59417ef234946819788acfde92a00a7": "The purge was successful", - "aaa3736c0541d4a4d82193c2204ec317": "The start time is in the wrong format!", - "e579606ed1219291caeb3bfad786dd3f": "The end time is in the wrong format!", - "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "The date format is incorrect!", - "53c85b9d96ea14f3f8224a5d2e659894": "Parameter cannot be empty!", - "9dc21ed8c6025cab9873847e6e1ca506": "The query type is incorrect!", - "236c6e2f9a266b929b283eda30c2b3b6": "No relevant data are available!", - "50fc65b5f19812ccf756b7ad7de7f4cb": "session_id cannot be empty!", - "8f2adb53dcb8d2c660159b1f8e8012ed": "The session ID is incorrect!", - "7f4419a5b09e1a04936f6aba6939521a": "Configuration check completed!", - "f3df0751d9522bf2e68034bab4cd49a5": "Configuration cleanup completed", - "191fae10bdd9d3eb6cb110b524fe40b7": "The submission was successful", - "f53208c04e48d7ee19222b6adf343810": "The username cannot be less than 3 characters in length!", - "251e2cae1dbed2b37f7d16961a606970": "Permission level selection is incorrect!", - "a835325a5600b6571a24111e4d318e2c": "Please select a website!", - "a669655fa991afcfa0cfa3f62286d944": "The password length cannot be less than 5 characters!", - "4d8d30e66ad9aaccc738ad99d5083955": "The username already exists!", - "12152390a5bf2ebce0f00b0fb5c650a2": "The addition was successful!", - "4d1b7f489e07d6ca02ca1910a3884c48": "The user does not exist!", - "3e83aa40dd320efb027151c02aab2871": "The length of the password cannot be less than 8 characters!", - "d3748b3102cc8ba898f0f0bec842ce9e": "The modification was successful!", - "ac75e534c7334e1fd02c68a3993f1568": "The deletion is successful!", - "ca281da1f13858d0b599d19e18a510bf": "The web status is selected incorrectly!", - "c88239bc4a113ab0f02acb9bc31b3437": "The web port is incorrect!", - "f06e6a5985a91ac55c651e0b573378f0": "The web security directory cannot be empty!", - "41a871d7ec26993be1367226321e06fa": "The length of the security entrance address cannot be less than 6 digits!", - "16f83d0969b9f7fe56ac3b55f9dedb26": "This entrance is already occupied by the panel, please use a different entrance!", - "066df5a1cf19314e0265a1eb396848ac": "Ingress address is incorrectly formatted, for example: /my_monitor", - "794ee58637251012717d7e565aafc2a1": "The setup was successful!", - "2531ce72ea98e5aa8f4953eee783b540": "No error logs found!", - "0fc543dae93d3f76f5f7ff8048f5c398": "No masked IPs were found for export!", - "5552ac99360952da2cf289f556ad19a6": "No masked IPs were found to sync!", - "3332452d6ecd015473b133de021a9e06": "SYNCHRONIZATION SUCCEEDED!", - "e6afdb1b63ca733f5d1741c7eff7a64e": "It is being processed, do not repeat it!", - "696212205a77e698860ff5195992642b": "The repair operation is complete", - "97cb85456b49af4258f4c8da38bb576a": "The scheduled task is successfully added!", - "2739213f569742c0782252f41279c060": "Failed to add a scheduled task", - "1cc4efde4fab0b4bbc2812a8b58f59b0": "Please specify a site name", - "3b5ef9e1ea5a8dbd9606075686dbf15f": "Please specify a date range", - "f8412f656685f470a82b74de3d9f24d5": "The export task already exists", - "96ed379ec1882dcf52f0ff65057efb92": "Please specify the fields you want to export", - "4e698e0709485a0e93a706964b748c5b": "Unknown export type", - "2a2dbc12afac446fe408eb78453bc6c2": "The export task does not exist", - "9ff8782f584db728284fadd719967806": "There was an error with the export task", - "b4421542e9cff8ce336075b668b8f87e": "The export record does not exist", - "41564d1cd7f8ecb23bcc590cb2217518": "Please enter a new data directory", - "699856a3cc697d8afcfd04dcd2f0729a": "The specified directory is the same as the current directory", - "103422cd692bcaf56a7367075caf2274": "The specified directory is partitioned on the same disk as the current directory, so no data migration is required", - "bcbd9605d3b8753bb8afbc765b293e01": "The modification and data migration tasks have started", - "967a57ad58881afe2c5da6cf0d7fce8c": "Please enter the IP address and crawler name", - "62b73e6c2a169296e73edf8a4d1e02f0": "Please enter a correct IP address", - "0e1a26f6137c04f0f80956210069e46d": "Please enter the correct crawler name", - "fe8d50ca26f2e864d2bf4a932801bb85": "Unexpected error, try fixing the plugin", - "21aa998a1dee8774bc88ce2a070bf4de": "Please enter an IP address", - "2e0c672edc06ef05e44de98ac1b7a47d": "The deletion is successful", - "0f9d9b728fba6427b5ff4da49aee1738": "The spider was selected incorrectly!", - "e48c86e701ddba3ab084d5457aa58714": "The IP cannot be empty!", - "3bdb147b7a040582220aa7f1ce2af19b": "The IP format is incorrect!", - "b60597b6a9525341fa5d4d441084658d": "No resolution records of the IP address were queried", - "86e9360dac1c5eece29f32c9aba8011d": "The save was successful", - "e5320166e7623b6a39f9a7af7c20c787": "Specifying a different website parameter error", - "c21fbb62edf94306d2e73365e6e7d637": "The parameter specifying another website cannot be empty", - "c7fae0c9886cac3924fe5e459e171ab1": "Deletion failed", - "9a84d2910d3d36b78d7060f1c77e27f6": "The site name is not specified", - "0987458a95b8bb7d6cdf9fa0630b6407": "The current server is not nginx and does not support custom collection", - "b925dfe3295278bd81a85bded66da01d": "The status code is in the wrong format", - "2a8793bbb8bc38a7df9d8c796648526a": "No site name is selected", - "6878600890a41b84c145423618ea2431": "No website information found", - "eff712873c55654bf48eaf421a184e73": "No custom collection name was entered", - "116208583eac10a8769774a6eaaff926": "The acquisition type is incorrect", - "fff3d7679cb121a30e68a104b58c934e": "The collection content was not entered", - "75db42595fc9aee34df76df808712f92": "Custom collection names cannot contain special characters({})", - "9667904e74175dfde9824cb8cd099ce7": "Header content should start with $http_", - "4c61d0ee460aa25eb6b5c413c46c9236": " The collection content of the body type should contain [$ + nginx log variable]", - "c03680a7ae35b7ce5b62f67b854d3b06": "The collection content should contain [$ + nginx log variable]", - "d621342512cf7910a6dc4e7d736bcc63": "The collection content cannot contain special characters【", - "b4704dc559a05c5721c095b97c4dbbc0": "The custom collection name is duplicated", - "6594b670e8bd06e352f112c1bf194fc1": "Custom collection content is duplicated", - "a531c58ef7fefbbbd79becda53ede191": "A custom collection name is not specified", - "88c0c3ae4ef97b6069a35672b2caa05c": "The collection content of the body type should contain [$ + nginx log variable]", - "41353000c0d351db90c9eec095bae879": "There are already duplicate collections, named:{}", - "ce78b7a225f05ece35ed7adc68b08a88": "The acquisition configuration to modify was not found", - "521df7df29b44fcee614de96cecca61c": "The deletion is successful ", - "3b0ccb5c759b0941d50e331b22013560": "Unsupported extensions: {}", - "7ea48870539b84996d1b1691c22823a7": "The modified data format is incorrect", - "bc64045195c8ed198a69772b3a204ef2": "The data to be modified is not specified", - "bb02871a5e118841b95b69c5bff55baf": "The blacklist is in the wrong format", - "1aac00a8c681100fd27b287c0b0516f1": "The build configuration format is parsing incorrectly", - "f6df35a69157ae1fca6415b043485334": "The task ID is not specified", - "524a477cee9485a5a80a860e2bc5b5d5": "The task ID is incorrect", - "4b5d95ed20303e337aec42486a0fb3fd": "The current website was not queried", - "19e777b7c8cdc1ce56ad2f4fe735b2b7": "The current website does not query the running directory", - "45484ac5ec748cf3362d425ed7142b75": "The rule cannot be empty", - "b36196750a032a791ecc8035853dc648": "The rule name cannot be empty", - "cfa7bc3b484b8068e78bc6f55a2aaeaf": "No rule specified", - "835365605f9e08c44c0b7f65a422d059": "The date parameter is incorrect", - "4fa3e528186292138b224a0a1d46ec59": "The website name is incorrect", - "3769ee974734f97166d6bce6b96e9b4e": "Data errors", - "daddfa03b4ea762e009a36ce970b2b59": "There is no Baidu account set up", - "0379d9c081b6fd9ec2fd86e8672a4e72": "If you fail to get the data, it may be that the login information has expired, and you can try to log in again", - "8057e57596c33acf04619825d625a483": "The update was successful", - "3149165696693c4f6fef18928261a50f": "There is no 360 account set up", "74a7684631b29d814a52e3401576411a": "The time format is incorrect", "f146f571f352f376dda16114593afd32": "Not php file in this folder", "a5ef7f95136c8e93b70c99cdc25d3b1b": "The rule is empty or the rule file is wrong", @@ -2832,7 +2921,6 @@ "e200e571a58c37376c8498c2dc506c95": "The [param] type is wrong, it needs json format", "96ed9027cae5703401727a3d07764133": "The current URI does not exist", "466767592170f74d16bcac3034109b33": "The path argument must be passed", - "d81f83ae44da0682974272b976e8e550": "Successful recovery", "c2d2481eafb29f7e1525c6c63441359e": "Please pass the website name", "4950f82b4231ebbfa780bcf4eec4c545": "Please enter the correct IP address!", "abd5af540ed5a858d02b03846d94c1f4": "inexistence!", @@ -2925,7 +3013,6 @@ "215a4c6687559aa75d554670e06f3694": "The user cannot be greater than 10,000", "902ee0e2b591f9872a41c319c402e0b9": "The text length cannot be greater than 200", "2307dba1bc155ca6f1a5bbf21dc4a258": "The pseudo-static contains the [!-e $request_filename] directive, which needs to be removed before this function can be used!", - "fa5e4af74d3d68ba371e6dcf84595c3d": "The website does not exist", "db8b3ac7a5408e3bc0d103bb9b071c7b": "The parameter is incorrect,The data parameter is missing", "a0318cc60ff3297d4bef0399dc89fa8d": "The parameter is incorrect,The data parameter is not in json format", "8b682d8c8139c2ea686c7a87a03ba292": "The parameter is incorrect,The name parameter is missing", @@ -2961,31 +3048,37 @@ "c9bbcef0c80ca1a2859dd61d0210a117": "The parameter [send_type] is incorrect", "a79ff4350874c27408a1858a88058344": "If the instantiation message channel fails, check whether the message channel is set correctly", "50f223163c6f8e9f6b46d66165252cab": "Shutdown success!", - "eee590fc0d0f3382fe436b60b02e37f0": "Mailbox information is not configured correctly", - "e4e7eb56340203583dd940475fc6e924": "The receiving mailbox is not configured", - "c6beb4efa41b5adbf89191be9d139c70": "Failed to send message, Recipient of failed to send:{}", - "e401ec76f9a9d1dfe7d484e6c4b49656": "Failed to send mail to some recipients, including:{}", + "02eef33534a6f8b3c95fc65e4f98bea9": "Incomplete information", + "2f45c6e0ccf998c7d31b3764e7da3751": "Note names cannot be longer than 15 characters", + "6e3ce0906145a9641111ebbf7735f145": "Telegram Failed to send {}", + "27285cc132e6c145a142ae2dff054ace": "Note name cannot exceed 15 characters", "b136ab8957d5ede7e3747fcc927a49aa": "Parameter format error", "4ccc991965b1b5bbe3efd6b65a1cd6fb": "The body type must be json,form data, or null", "b0b017688b107601f2b3439381c4c61b": "The sending method is incorrect", "4f4979589df1b84ac44fc64a92e2b3f3": "Verify if the SSL option is wrong", - "02eef33534a6f8b3c95fc65e4f98bea9": "Incomplete information", - "2f45c6e0ccf998c7d31b3764e7da3751": "Note names cannot be longer than 15 characters", "85284ecbde15ff997e89e6e8f07e399b": "WeChat information is not configured correctly", - "886051a73fe04f873d814dc9823b4064": "DingTalk information is not correctly configured", - "2d1b0e55888d196484a0bfd0f85ff71c": "The DingTalk configuration is incorrect, please reconfigure the DingTalk robot", "3fb32283f52bea8068006817c5b9b95b": "The unbinding is successful", "8acd58125d3f7cc181a71926ef5c8a4b": "Failed to link to the cloud", + "886051a73fe04f873d814dc9823b4064": "DingTalk information is not correctly configured", + "2d1b0e55888d196484a0bfd0f85ff71c": "The DingTalk configuration is incorrect, please reconfigure the DingTalk robot", + "eee590fc0d0f3382fe436b60b02e37f0": "Mailbox information is not configured correctly", + "e4e7eb56340203583dd940475fc6e924": "The receiving mailbox is not configured", + "c6beb4efa41b5adbf89191be9d139c70": "Failed to send message, Recipient of failed to send:{}", + "e401ec76f9a9d1dfe7d484e6c4b49656": "Failed to send mail to some recipients, including:{}", "703480d2938f7c89b563e1d731e94118": "Test send failed", "fdc137942b6f2d81fa922d7ace16a94c": "A type that is not supported by the current interface", "37f17a256a93646ef0ac721096ec0ce8": "The same send configuration already exists and cannot be added repeatedly", "2783bb2e5b99dce08138bf58d0880603": "Corresponding sender not found", "b5a30e6f46753c06ada44d6bbd757599": "Successfully delete", "81550843cd0a2d7e046cb23a868f8e8e": "The sending was successful", - "6e3ce0906145a9641111ebbf7735f145": "Telegram Failed to send {}", - "27285cc132e6c145a142ae2dff054ace": "Note name cannot exceed 15 characters", "bb8f2701fa6b013fe8aa74659ceda547": "Unable to read task data.", "b12cc83d0b14fe739a930fd84d10ae8d": "The task has not been found.", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Only container and app types are supported", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "Version {} for applying {} does not exist", + "a5c1e82e4d1142b8c7e0bc1499446181": "GIT ADDRESS IS NOT SET", + "4e24bbe093c9dfb90092a0f4e71733dc": "The branch name is not set", + "b3c02fc58b92f549f529992c8a696a66": "The zip file path is not set", + "eecf07d92b354565df633b06401206a1": "Please select the file path", "eb9eb53b7ac221c64f6f32c547317d22": "The path parameter cannot be empty", "0444d0f0434a4d910eb7a06039e39066": "[{}] file does not exist", "f4c3904df3aa98458b5f99bd5519e409": " {} completed, if the log no exception to close this window!\\r\\n", @@ -3029,6 +3122,9 @@ "1b6d9f6dc5480584f937681a5d9f0a80": "Cache information not found", "f013f8c1d30136733e3d476dbe3a238e": "The updated configuration is successful", "3d928c01114361a57fb24c42d9a1ee2d": "Failed to update configuration: {}", + "795d1693702d930f7fc18edfb0f1c0d3": "MCP server misconfiguration", + "a16d1dbe265c57e0417ae396c3c30043": "No service found [{}] ", + "8987b626b78029fdd11fe51351195830": "[{}] No found image", "092ca03f32caffd34d3f0532836283b7": "The script file for deepseek_r1 was not found", "17ee8c2efafe32a5d204e039e971aee4": "Less than 1550 MB of memory prevents deepseek r 1 from being deployed", "d3eb7a147ac81b2f691a6e7ad42cc83c": "No processing required", @@ -3080,6 +3176,13 @@ "7b016fb85c09d39e89eb1875e590a6ac": "Failed to obtain the application category, please click [Update Application List] in the upper right corner", "20552a0ed8eef740c631cc049fd940b9": "Application type error, please pass in:{}!", "c0963001ffeaec423d1be82d464d6a1a": "Please pass id/service_name parameter!", + "4de8e45b499205551f4a09fd074e5246": "Missing parameters! id", + "02e85c0a0fa01fabdb5426af13e87853": "Missing parameters! appname", + "d910ee67a0875a17b6e663f9e19369a4": "This app link is not supported!", + "32d030406e8d755a59468a50bd385b22": "Failed to get the container", + "c8e0f1ed3c37b015ee446297591d172f": "Missing parameters! app_name", + "dad9445733497150b5f2cd29a5aed506": "The app name is not legal, please do not include illegal characters!", + "a04daa98db618d6c2a19aeed5af39448": "No docker-compose.yml file found for the specified app!", "75d0c803cc4694e08d99d958ef762fcc": "The domain name cannot be empty!", "676c8a7788ad0ddcb68d53fc7d960679": "Failed to create a baota net network. err: {}", "23d07f1e537a8809b268a60a6881f44c": "Port range error, please enter a port between 0-65535!", @@ -3107,11 +3210,30 @@ "2025d918448073508d336b72a7a28093": "The database already exists!", "4a8f0a2ac362e62ba4e76f52b5791f0e": "The creation is successful!", "76f3f12040afb77724966e2af67ab403": "Please pass the database parameter!", + "74fd3ba5b92aa59e471161d2a585a93c": "model_name parameter cannot be null", + "760a1226f2ba701b04963681ab97d575": "model_version parameter cannot be null", + "2a88d88050ddcc0e28f0da4576be2232": "service_name parameter cannot be null", + "fd0f83d70400b1dd9f6ae9c093638411": "Failed to get container information, docker-compose execution is exceptional!", + "2aec223006d3894d3c1a48bca642c141": "The model is being downloaded, please check the logs later", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Failed to delete model, docker-compose execution exception!", + "d75a01e0d2c0cb8dad89216653024903": "Successful deletion of model!", "bf483666a33d372f729985363d512d74": "The primary domain name cannot be a generic DNS", "3c4b1f6d2d9ef27ace95adceea599588": "The addition failed and the data could not be inserted into the site database", "20825a634340a0b49b1a5e7f2fe47ea3": "The add failed and the data could not be inserted into the docker website database", "653f81d3e5516550e6d5e35abcdbe97c": "[{}] is the reverse generation of the panel, and the http authentication of [/] cannot be deleted!", "d4b66e7369e5077a3c31ad79629f0ab9": "Please pass in a list of websites that need to be deleted!", + "f0501638237d7e8f934ec55ac3ffb20f": "If the installation fails, check the network or install git manually", + "608113c9694987fa65b22ecb164aee59": "The environment was successfully installed", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "The apphub directory does not exist", + "7ec67f9826a24ca4a930a6e168ee9611": "The resolution was successful", + "af2c4fa868813e47b80859a0b36e00f4": "GIT INFORMATION IS SUCCESSFULLY CONFIGURED", + "2b038e106d4ca5c11b787e16c73253ef": "If you don", + "12d1b3062be6f8bb374511323c349ed7": "Please set the git information first", + "798cd5a257af539ecfe6bb44f45ee788": "Import from git failed", + "8170f5d37a617dcbf16fe8dd414073dc": "Import from git successful", + "6e40e5a8ad741ca4bd714fa52ef32333": "The file format is incorrect, please select the zip or gz file", + "c4996991c50032c9b296c11da356acb2": "Import failure:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Successful import", "e48121dc556643fd31b26c190eedbad3": "Only Nginx is supported, please install Nginx before use!", "135f7ef9aeb50bf7b988416b0a679dff": "The domain name cannot be empty, please enter at least one domain name!", "c82b42d921224a0699f854c28c2450d2": "The proxy target cannot be empty!", @@ -3119,6 +3241,7 @@ "f68c204aa9e12e0513aa7a4569449cfe": "Unix files must end with. lock, such as/tmp/flash.app. lock!", "5c23a6c025d7071599c70575dc858f26": "The proxy target does not exist!", "2fba0b6c1602ec254b1bc06bacba575d": "The proxy target must start with http://or https://!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path is root directory, cannot close Show Proxy Path!", "772c6f93b20b52d5c998f4b58dbcf8f7": "Port [{}] is illegal!", "f76df64b8f66e4f6050adf633c91c7fb": "The website [{}] already exists, please do not add it again!", "6599f1c3d3d3760768d9023827e8edf0": "Reverse proxy project added successfully!", @@ -3150,7 +3273,6 @@ "d591e0043cbf6d14950a46178a537626": "The proxy target must start with http://or https://", "247d1a7dc144bd12d4c9f8797387babe": "【 {} 】 already exists in the reverse proxy and cannot be added again!", "36a7891857288c55bc5d87c470212812": "ID cannot be empty!", - "62dc2bbb0528fe87522c74b113883a48": "The specified site does not exist!", "c8a68e4ff275e827bbbe348eddecbf2b": "Reverse proxy project deleted successfully!", "88f9a8852b822982a9a3e839813d91bb": "Domains cannot be empty!", "85fb0c03511da1e4d308fd135dec4486": "The domain name cannot contain commas!", @@ -3200,12 +3322,6 @@ "61e795d02f4452904f2574d936c571e6": "Cleanup failed, cache directory does not exist!", "3c99c479e3c65eac24272afc13cec604": "https port [{}] is illegal!", "b9629c2dea839825c2f1916b44a154a1": "Nginx Configuration file error, inventory!:{}", - "b02ab16f5a7d45a871789d3944a41c69": "Backup completed but unable to retrieve timestamp", - "ffad0690fefe9ebaaf4d847a42b19f90": "Backup configuration file does not exist", - "46f183fbf6bd1e64702d6930667cf117": "Error retrieving backup completion information: {}", - "b16acd08872bef5685bddff85a29f625": "Data Packaging", - "df4bb29cbb7fe7e3dbc82e961d5b5b53": "Preparing data", - "2b2a2a0b0596507029dd0feb9485a216": "No ongoing tasks found. Please check", "32b169f72b293ef80d35435e9894f8e2": "Initializing", "58ba018dcbe1c47ea0a293fdcee21e63": "Panel Installation", "67355337eaf300b91de09a8083c93ebf": "Local Backup", @@ -3357,6 +3473,7 @@ "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] Backup task completed (file detected after timeout): {}", "637452f337bdc2991f23593124d62440": "[!] Backup task timed out and did not complete within the specified time", "ec3a935e2442ef55924ad758e17b92cb": "Packaging completed", + "ffad0690fefe9ebaaf4d847a42b19f90": "Backup configuration file does not exist", "40379fed8ad84c0869a1b3e94f8a56fb": "A backup process is already running!", "20bf8648c4a3ea91ad3057f9aeca5f88": "Start compressing and packaging all data", "dc72aa669e82dd5ec7cff2ed35f2762d": "Compression and packaging of all data completed. Data size: {}", @@ -3366,11 +3483,14 @@ "c722636ded0be8237386a427242ff3b2": "{} Uploading...", "bb914d2441ee988dcd4d616350272f10": "Error occurred while uploading to {}: {}", "8085ded0444fcde19b9ea4d365502f67": "Backup info not found", + "b02ab16f5a7d45a871789d3944a41c69": "Backup completed but unable to retrieve timestamp", + "46f183fbf6bd1e64702d6930667cf117": "Error retrieving backup completion information: {}", "2cb88461938b0c418391af13f65a727d": "Backup process is running, but unable to retrieve timestamp", "269159feb2faab7515c90b9f5de791a5": "Backup configuration file does not exist: {}", "daa55a73708f906c8cee0bb87284740c": "Error retrieving backup progress information: {}", "01ecbbb2b353cf4d915bbe1c1cd5505c": "Server Configuration", "ca3c22c9c94069053b85db0f50373639": "Backing up server configuration", + "b16acd08872bef5685bddff85a29f625": "Data Packaging", "d41c74fcc2dd04880a0285c147188bf7": "Preparing backup data", "806cb06592627effa1a4073fa2f66ce2": "A restore process is already running!", "37dfdfda0ab7a98140943484fe70a76c": "Start decompressing the data package", @@ -3390,7 +3510,6 @@ "4c3880bb027f159e801041b1021e88e8": "Method", "7d3c180ded4dcc8eade80cd031ab1b5d": "Please do not operate frequently, please wait a moment", "37b15a5d1e4fa625ea8996de5e378a84": "Successfully retrieved", - "b0d4998a26f5b5742ad38c4af8817e32": "Exception", "616e012bcc90980f6ddfd2b3c17345f8": "Failed to get progress", "9e0a136b55af822e72c8d6716d2d4bf3": "Unknown Type", "6ac0b58e56cefd76e61bc840dfad94fa": "Task stopped successfully", @@ -3415,6 +3534,49 @@ "3a02e4b05ad1b321e855aa6116699b6e": "Migration reminder deleted successfully", "334afd10871f8c52a884e307d2e17ccf": "Migration history deleted successfully", "2f393a2518f5668880822f47fcdb5cc0": "Migration history does not exist", + "df4bb29cbb7fe7e3dbc82e961d5b5b53": "Preparing data", + "2b2a2a0b0596507029dd0feb9485a216": "No ongoing tasks found. Please check", + "d4e8a75d522d3e77ae80eadd49b0865e": "The list of remote databases is empty", + "5d806f11bb91996cafe7836b27a4e770": "Redis connection exception!", + "1d69261c05f6ce03d2cab5528d443fa7": "Starting a backup of database data", + "0cf1803cfdfda6f67d12fa7e1c4a25a7": "Backup {}remote {}database", + "32d68be800692faddb12c5252fded05e": "{}Remote {} database information ✓", + "0c64283397c43effb13a2cbe818ce929": "Database data backup completed", + "2f7d7cfc04be64fa087e964d41cb26b4": "Start restoring SQLite database list", + "a1248c409fec22277ab13a6bb433188e": "SQLite database list backup file does not exist, skipping restoration", + "d03ebecb5f420070192de8712926151a": "SQLite database list restoration completed", + "ad6937d61b4d6e93a13f03308c66f2eb": "Mongodb service is not running!", + "f60644c6526c4d9afe5b20db75fc2e5b": "Database backup failed, export directory does not exist!", + "161bb420493657920405937a2cf42c96": "Backup compression failed!", + "20a42330f9241c13c91e3e203449a8a6": "Lack of backup tool, please install pgsql manager via software store first!", + "7eff7c4aeb6bfe736f8a78c0096f92c7": "Please set administrator password first!", + "6e907b499869ab16105a7aba198e13a7": "Database password is empty! Please set database password first!", + "d8a3336243e1c08e8a29c75af1eb528c": "MySQL initialization successful!", + "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL will restart, please wait...", + "73af95fd2322196e0d9792df4ca1f566": "MongoDB initialization successful!", + "8c9718f3235e7c36c9f400bc68db1ef5": "MongoDB set auth failed! error: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "PostgreSQL initialization successful!", + "c46866b7bc29cf9d478835bda10e43ce": "Redis initialization successful!", + "4e889bbbfc5e25ebf611e5764b8a358c": "Start restoring database", + "c9206e74b8d32e1e0a5710c0fe322cee": "Restoring {} database {}", + "ecea29915732c5d0001ece74601f3d20": "{} database {} ✓", + "b61a878149263a02fa99cc635409ee25": "{} database {} ✗ ({})", + "3fa7c5a9beafa67bb44999cab5cff52c": "Failed to restore {} database {} Reason: {}", + "e89775cca910deb5e484f631606cceb1": "Database data restoration completed", + "9750547146e22f364299bc5f561a3fb6": "Start restoring remote database", + "23f2db47eb6ff16785e5a222c8657f93": "Remote database restoration completed", + "b17f6f187c4ecfd392c6367ec2ba6498": "{} backup id does not exist, import terminated", + "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} database id does not exist, data recovery terminated", + "611881e9f5d01b22a447c282aa8aca23": "MySQL database {} already exists", + "ea31cbc6134300ca816c913d227b605f": "Failed to create {} database. Reason: {}", + "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "Database already exists, skipping SQL restoration", + "556843e4a406b780b0cf83c43366a8dd": "Import successful", + "af71c2c0e3813c9a77fe48507ea8e4d1": "MongoDB database {} already exists", + "84b4d8c8cdd02488c0f868e97b22a3c2": "Creation successful", + "10aec3a9e9564a9851c117b259245136": "Database already exists, skipping data restoration", + "b819d4259ca3ab0042562acea69e83e1": "PostgreSQL database {} already exists", + "31b21eca2e62de420cf05e8135089114": "Backup file does not exist!", + "3eed4851380704f25eec3921befde38f": "Restoration successful", "cbea0a592d6a3c48f2418d687cf54200": "Start backing up terminal data", "e7e06b2dd59401dcf79acf2e3124d2fb": "Terminal data backup completed. Data size: {}", "a273d4d4d0cf13abc1d7a4f96b8c851e": "Start restoring terminal data", @@ -3444,6 +3606,19 @@ "6331b46ffa70ff97b558022d5ae8098a": "Starting firewall restart", "1bb2a65f17d7e3c685f36f7ff1794338": "Firewall restart completed", "246f6edb1d9df9b3abe78fc810876c28": "Failed to restore firewall data: {}", + "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "Start backing up site data", + "c886466d255b20be0dbde7f1b44b7f20": "Backing up {} project: {}", + "7ecf25c18499d663d2e636d0a99f73a3": "{} project {} ✓ ({})", + "0fc5eeb9bebed19653578a5df99d3e6e": "Site data backup completed", + "9a2e8778b2a816fedb9f83afadcc2341": "Starting to restore site Python dependencies...", + "fd16d36423b43735556724e0395e8f91": "Site Python dependencies restoration completed", + "bbf57ca8231bce958a3e528a08491874": "Site database insert failed: {}", + "389f018ba17dc25cb23a5300d8f630db": "Site backup directory does not exist: {}", + "21654e03b247d5e25abaa0ad542883c0": "Start restoring site data", + "c8cecd19f4f4a680a5879f828d1c5578": "Restoring {} project: {}", + "35850d3654332477522ee06c756a3c85": "Failed to delete source site directory: {}", + "c88b730f7a6a312159272ce532947de2": "{} project: {} ✓", + "24ee51964e4ece856493ca28fdb075ed": "Site data restoration completed", "483829cb5ae13bb190eb59acdf4f3231": "Start backing up mail server data", "8c7a0774ab14bae83a69b8562102fb0a": "Mail server data backup completed. Data size: {}", "e8480272035737a247832288f618c270": "Start restoring mail server data", @@ -3514,48 +3689,6 @@ "ff0550fa0270ac20419790a51900d815": "Backup Crontab Task completion", "a7609aefd5330a1384704e73dc0b4dc0": "Start restoring Crontab Task", "48ed083561c2f201d9fe52f6a35ee982": "Crontab Task complished", - "d4e8a75d522d3e77ae80eadd49b0865e": "The list of remote databases is empty", - "5d806f11bb91996cafe7836b27a4e770": "Redis connection exception!", - "1d69261c05f6ce03d2cab5528d443fa7": "Starting a backup of database data", - "0cf1803cfdfda6f67d12fa7e1c4a25a7": "Backup {}remote {}database", - "32d68be800692faddb12c5252fded05e": "{}Remote {} database information ✓", - "0c64283397c43effb13a2cbe818ce929": "Database data backup completed", - "2f7d7cfc04be64fa087e964d41cb26b4": "Start restoring SQLite database list", - "a1248c409fec22277ab13a6bb433188e": "SQLite database list backup file does not exist, skipping restoration", - "d03ebecb5f420070192de8712926151a": "SQLite database list restoration completed", - "ad6937d61b4d6e93a13f03308c66f2eb": "Mongodb service is not running!", - "f60644c6526c4d9afe5b20db75fc2e5b": "Database backup failed, export directory does not exist!", - "161bb420493657920405937a2cf42c96": "Backup compression failed!", - "20a42330f9241c13c91e3e203449a8a6": "Lack of backup tool, please install pgsql manager via software store first!", - "7eff7c4aeb6bfe736f8a78c0096f92c7": "Please set administrator password first!", - "6e907b499869ab16105a7aba198e13a7": "Database password is empty! Please set database password first!", - "982c5a05ac4dbaee10c865ba767b2249": "MySQL db synchronization...", - "a9ace5523668233a3867f26cc86e29c9": "MySQL db synchronization completed.", - "c15645e9ad579e4bfcb536bc5d7015c3": "Start restoring database data", - "c9206e74b8d32e1e0a5710c0fe322cee": "Restoring {} database {}", - "ecea29915732c5d0001ece74601f3d20": "{} database {} ✓", - "b61a878149263a02fa99cc635409ee25": "{} database {} ✗ ({})", - "3fa7c5a9beafa67bb44999cab5cff52c": "Failed to restore {} database {} Reason: {}", - "e89775cca910deb5e484f631606cceb1": "Database data restoration completed", - "9750547146e22f364299bc5f561a3fb6": "Start restoring remote database", - "23f2db47eb6ff16785e5a222c8657f93": "Remote database restoration completed", - "6aca7aec516bcaf7ded80873f08dd55c": "MySQL initialization successful with password {}", - "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL will restart, please wait...", - "a692f58dc09f3e41c133ea460ff3b8df": "{} database password restoration failed. Reason: {}", - "b17f6f187c4ecfd392c6367ec2ba6498": "{} backup id does not exist, import terminated", - "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} database id does not exist, data recovery terminated", - "611881e9f5d01b22a447c282aa8aca23": "MySQL database {} already exists", - "98b38cd2445396b44204b7201a33f64b": "Failed to restore {} database access permissions. Reason: {}", - "ea31cbc6134300ca816c913d227b605f": "Failed to create {} database. Reason: {}", - "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "Database already exists, skipping SQL restoration", - "556843e4a406b780b0cf83c43366a8dd": "Import successful", - "af71c2c0e3813c9a77fe48507ea8e4d1": "MongoDB database {} already exists", - "416ad8b141103f9704100ce4070c5975": "Database record validation failed, restoration stopped", - "84b4d8c8cdd02488c0f868e97b22a3c2": "Creation successful", - "10aec3a9e9564a9851c117b259245136": "Database already exists, skipping data restoration", - "b819d4259ca3ab0042562acea69e83e1": "PostgreSQL database {} already exists", - "31b21eca2e62de420cf05e8135089114": "Backup file does not exist!", - "3eed4851380704f25eec3921befde38f": "Restoration successful", "e9ed6b2a27deb5699565f0441dc713e9": "Start backing up software information", "e690c7866c5dbacbbc7860af5e6a3af1": "Software information backup completed", "cabf299a6cfa5874e23582c535f301c6": "Start installing nginx-{}", @@ -3572,18 +3705,5 @@ "99782b6a478e499d45a91f9d78e1c73a": "Start installing phpmyadmin-{}", "640c4e334dc9587e212d36e685059478": "Start installing ftp-{}", "aecfeaaa9e3bcff1f6169598772e90c0": "Start restoring panel running environment", - "3b83e3fdb17c70ca190e263e0bd7173e": "Will skip installation if the same environment exists", - "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "Start backing up site data", - "c886466d255b20be0dbde7f1b44b7f20": "Backing up {} project: {}", - "7ecf25c18499d663d2e636d0a99f73a3": "{} project {} ✓ ({})", - "0fc5eeb9bebed19653578a5df99d3e6e": "Site data backup completed", - "9a2e8778b2a816fedb9f83afadcc2341": "Starting to restore site Python dependencies...", - "fd16d36423b43735556724e0395e8f91": "Site Python dependencies restoration completed", - "bbf57ca8231bce958a3e528a08491874": "Site database insert failed: {}", - "389f018ba17dc25cb23a5300d8f630db": "Site backup directory does not exist: {}", - "21654e03b247d5e25abaa0ad542883c0": "Start restoring site data", - "c8cecd19f4f4a680a5879f828d1c5578": "Restoring {} project: {}", - "35850d3654332477522ee06c756a3c85": "Failed to delete source site directory: {}", - "c88b730f7a6a312159272ce532947de2": "{} project: {} ✓", - "24ee51964e4ece856493ca28fdb075ed": "Site data restoration completed" + "3b83e3fdb17c70ca190e263e0bd7173e": "Will skip installation if the same environment exists" } \ No newline at end of file diff --git a/BTPanel/languages/fra/server.json b/BTPanel/languages/fra/server.json index 8bb4ae90..f0117a9a 100644 --- a/BTPanel/languages/fra/server.json +++ b/BTPanel/languages/fra/server.json @@ -14,63 +14,30 @@ "4cc4ddc196a295ee4ab82daec08f91a6": "Le site n'existe pas", "25bb121145f918572eea2ef07ff8e89c": "Erreur de sauvegarde", "f8320b26d30ab433c5a54546d21f414c": "FAUX", - "4bbfcde12aa36ec375a332f51bf905d6": "Par jour", - "60956b50bb8e8c711d3adb889a70137f": "Par jour, exécutez à {} heure {} min", - "78748f15bb65939b6d130c3a5cf8b7dc": "Chaque {} jours", - "cf9af10dcebe2f12092ff6028a535f08": "Chaque {} jours, exécutez à {} heure {} min", - "e114abed903b9d26c476d4f6cd59c04b": "Par heure", - "0aef48ea8132b0551fa25a10fd0a6585": "Par heure, courez à {} min", - "50419faf9662e0c3f283d496bcb8eb72": "Chaque {} heures", - "2a0706d7e3ca3ce9e955471a0648dfcc": "Chaque {} heures, exécutez à {} min", - "84d94bf0382f611906b7edd65d6af169": "Chaque {} minutes", - "14d27796d1c96457c7c019661a2f32d4": "Exécutez chaque {} minutes", - "6c25e6a6da95b3d583c6ec4c3f82ed4d": "Hebdomadaire", - "e1df614d393ab86fd63c5062f7e77936": "Chaque {}, exécutez à {} heure {} min", - "69c5e99b9ad8d2b8f11be9a60cbf71da": "Mensuellement, exécutez le {} jour {} heure {} min", - "9d1a0949c39e66a0cd65240bc0ac9177": "Dimanche", - "6f8522e0610541f1ef215a22ffa66ff6": "Lundi", - "5792315f09a5d54fb7e3d066672b507f": "Mardi", - "796c163589f295373e171842f37265d5": "Mercredi", - "78ae6f0cd191d25147e252dc54768238": "Jeudi", - "c33b138a163847cdb6caeeb7c9a126b4": "Vendredi", - "8b7051187b9191cdcdae6ed5a10e5adc": "Samedi", - "e00d5128f631253b7b6ed8d5454c0c81": "Impossible d'écrire dans le fichier, veuillez vérifier si [le durcissement du système] est activé!", - "685689743579a8f09fcec5d7df04e39e": "Le nom de la tâche ne peut pas être vide!", - "a5c04aced897c770105858268324b53f": "La tâche actuelle est le statut de désactivation, veuillez ouvrir la tâche avant de modifier!", - "85305ee6be0f078791c7437ec54dda12": "Échec de l'ajout", - "08a1ce771119bb393fa49478216ae809": "Le journal est vide", - "b8fd4dbe5c3650beaec0a3d44d7f0245": "Journaux vidés", - "ff47c70e853d0b3635935be883b018e9": "Impossible de vider les journaux de tâches!", - "e0c4da1afd18acbb66bc5fac261a42ef": "La tâche spécifiée n'existe pas!", - "998ad6f12ce5285a1b72d4265d9b36cc": "Supprimé avec succès", - "e274abcaad0a7fff74d9adb67e578d5f": "Échec de la suppression", - "38fa2d4f8f9a13062c0c9007d97f6a84": "Impossible de lire le fichier!", - "f57d5686d9dd67f0e81924de8d13af95": "La tâche a été exécutée!", - "0b1c93d38c86c8d379886293cdf8ba66": "Tâche annulée!", - "d5ef96e383d376beeec28da7acfea516": "Télécharger le fichier", - "f24f6c5f5841340f898a6baaa6478bcd": "Télécharger le fichier {}", - "b2d87dda66a4643c6cf673f787c5f226": "Le fichier de configuration n'existe pas", - "9fdd777388a418cef77bce46c1b2511a": "Le format de compression spécifié n'est pas pris en charge!", - "4fa407ee74026903dc3013d0b2471eac": "La compression a réussi!", - "ece43dcaac9352f58c422e500266a927": "Le non-compression a réussi!", - "b9c1dcb37c44dca19765636de065b1c1": "La sauvegarde a réussi!", - "ac4eb62573e34c36ff426c8a6360c781": "Erreur de sauvegarde!", - "438ca4ffcf6fbd44ec129e73a24f0deb": "Sélectionnez le fichier SQL / GZ / ZIP!", - "0edfb4a54d6cf45209a6c7929b8b9919": "Base de données importée avec succès!", - "b0698ab9adefa7515299f311c725ba4d": "Effacer le tri avec succès", - "8611f56e253646a455ceeb020052fa97": "Échec de la modification", - "bef28b813bf12be3924925bbb62883dd": "Exécuté avec succès!", - "fda63bff3e0143980e5761376859b00b": "Échec de l'exécution, vérifiez si Apache installé", - "22012355700877ab73f89de8014ab20b": "Erreur de configuration de la règle Apache:
n'a pas réussi à activer:

", - "9848c96a046adb1759233241661ff694": "{} Le service n'a pas réussi à démarrer", - "6ed577cdce37bbd9c66871ac1677dc53": "L'arrêt du service a échoué!", - "572e5703371c43aae299181c0e3567d4": "Veuillez exécuter le programme lorsque toutes les tâches d'installation sont terminées!", - "c7138b4b5f7ded833942aef4e230771d": "Commande envoyée avec succès!", - "d56f0ed99825b4d62ab84753a65f7f1e": "Panneau redémarré", - "bff9ef87fdda677f86ae6dddec54a104": "Aucune version PHP compatible trouvée, veuillez installer d'abord", + "18928426418954e3a8bc166c892af5c5": "Le nom d'utilisateur ou le mot de passe ne peut pas être vide!", + "14422683e14b8a03fd02b84480703c41": "Vous n'avez pas réussi à vous connecter plusieurs fois, veuillez réessayer en {} secondes!", + "179b0ad118200b66c6e90535d9d8ad4f": "L'inode du disque a été épuisé, le panneau a tenté de libérer l'inode.Veuillez réessayer ...", + "7edd0140c2f050286273be74039b1df7": "La vérification a échoué, veuillez actualiser la page et vous connecter à nouveau!", + "9a9b0bf6269ba974cc6a00bb0f0de1d0": "Le code de vérification ne peut pas être vide!", + "2b7ae590e0538e70b7a359a94d30f1f4": "Le code de vérification est incorrect, veuillez réessayer!", + "21f763b26858bf8ff40f931d714ab106": "mauvais nom d'utilisateur ou mot de passe , {}", - "6e264f3408e9b769d3fb7e2c807f301f": "L'opération a échoué.Veuillez vérifier que la clé est correcte", - "d4ac5985eccd334896e3cf23706e43b0": "Ajouté avec succès", - "92188d43af4373bacbf00951da16532a": "N'a pas réussi à obtenir le chemin du site Web.Veuillez vérifier si le site Web existe", - "ceaefd9a46d78491b9fdb912b5c71eeb": "Échec de la création du fichier de validation.Vérifiez si l'écriture a été bloquée", - "1bb3608b1bc684c3dc85090db249346b": "Aucune information de certificat n'a été obtenue", - "c8c7de7f5b740307d55affea39b79993": "La configuration a réussi", - "131c05252110792212e3e3666a351154": "Configuration liée à SSL, ne supprimez pas et ne modifiez pas la ligne suivante de règles 404 commentées", - "4ba7e24ac1607ab761c124ca7352ad08": "Configuration de la page d'erreur, autorisée à être commentée, supprimée ou modifiée", - "31bb30ca4135945adbe0c2daa9545b39": "Configuration de référence PHP, autorisé à être commenté, supprimé ou modifié", - "f9da3e5ae75ce0ae39884ae2ea295a66": "Référence de la règle de réécriture de l'URL, toute modification invalidera les règles de réécriture définies par le panneau", - "73e1f7d487ad73d55414fe26ea11cbf0": "Pas spécifier le paramètre [Sitepath]", - "6aabca3a3e1c79bd5837a1ddae95fe70": "Il y a eu une erreur de création, veuillez réessayer.", - "256c9a85375f57f2dc9f6f318c6578f1": "Créer le site Web [{}]", - "481df7dbcd4c0317088bde8c913d5893": "Veuillez remplir le chemin du site Web", - "b1b2484c013c646d7f41d6b2f495b6ef": "Le chemin du site Web ne peut pas être le répertoire racine [/]", - "1c3bff99564f1370a5b1bf6c0773f8c4": "Veuillez vérifier si le format [e-mail] est correct", - "af9091566e669f016edf16ba97464cbe": "Mot de passe très faible, si vous êtes sûr de l'utiliser, veuillez cocher [autoriser les mots de passe faibles]", - "b0dbad478d4f07c38aec8f440ed98b66": "Veuillez d'abord installer MySQL et PHP!", - "46491fef7553177ef58a55b2db917072": "Veuillez ne pas définir le répertoire racine du site Web sur le répertoire principal du système:
{}", - "59d5fef323e89ded50ed6036848a97f3": "Le format du paramètre webname est incorrect, il devrait être une chaîne JSON à analyse", - "078a3d3e263be2851ddfd9fa059d098f": "La gamme de ports est incorrecte!devrait être entre 100 et 65535", - "50370024fdd22dc69099a46d011b20e2": "La version PHP ne peut pas être vide", - "44bd68c6703adf65ff21c63e9a876aa1": "Le format du domaine primaire est incorrect", - "23eded6de9c06451f67ecb7ed3a8c95b": "Le domaine primaire ne peut pas être un enregistrement DNS générique", - "f54249d2613e48be05837ec9cd615a5f": "Le site que vous avez essayé d'ajouter existe déjà!", - "b537e2d1946d559d3de4fb3c045d290f": "Le domaine que vous avez essayé d'ajouter existe déjà!", - "f91c641aef33cf8ef4a29bc5d3a7193a": "Échec de l'ajout, écrivez une erreur de configuration!", - "c3c7869d22051eaa78a831834a398351": "Il y a eu une erreur d'erreur, veuillez réessayer.", - "e2d272e229674e4c6765fab24a323604": "Supprimer le site Web [{}]", - "aa5f20e061736fe68a915163e7e6d122": "Le site spécifié n'existe pas", - "f11e72daff0ce484f4c401bd0bd28ae5": "Site supprimé avec succès!", - "c57d58c6bbd34144325871d75b42a577": "Veuillez saisir le nom de domaine de l'hôte", - "5c7b7c2f6ed78eefdd77aaa3dddde61a": "Le domaine ne peut pas être vide!", - "ef446d50df1605a582f9b44b57327536": "Le format de nom de domaine est incorrect!", - "68ae44808f90043dee02358ee768bf6e": "Le format du domaine n'est pas valide!", - "1628c2a26ab6d1211b435f85782f8acc": "Le nom de domaine spécifié a été lié par le site Web [{}]", - "925dc658ddf0f69509632848bcd39577": "Le nom de domaine spécifié a été lié par un sous-répertoire du site Web [{}]!", - "7b02cf82181f516626a36b86c6a686f5": "Site ajouté avec succès!", - "9b3c4205f2f408790c9c1c5da53c3bfb": "Échec de l'obtention de la version PHP!", - "abc3db87d5608cc9559556468a696a35": "Veuillez choisir un nom de domaine", - "7807e17f2bf49fb802bba1a04822ea16": "Veuillez choisir un port", - "e5925c3a126a66c0565df6d8ef49550e": "Le dernier domaine ne peut pas être supprimé!", - "17088ffed1e537b917a6ecc9dc957159": "Erreur de clé privée, veuillez vérifier!", - "26924bd958e212f07c31b6ffca9cbf8c": "Erreur de certificat, veuillez vérifier!", - "44e2c1c3cfd8d248d7c9190a8f07c0ee": "Erreur d'obtention de certificat", - "fc0d039d9dcf3905ae8032c9cb33f475": "Erreur:
{}", - "ddc2be35a5ed0bf09a88139c4ad10b4a": "Identique à un chemin d'origine, pas besoin de changer!", - "84a8921b25f505d0d2077aeb5db4bc16": "Statique", - "ad74aa2854e988c3157f92e0120bb19e": "Apache2.2 ne prend pas en charge Multiphp!, {}", - "4018ce634a10d352867f04962f107c14": "Il y avait un paramètre d'erreur, veuillez réessayer.", - "f1bef4fd5183ae83a5896c32a3d5e81d": "La configuration PHP personnalisée ne prend en charge que Nginx", - "879e0d022ff268704f93a7e2b504c224": "La configuration de la connexion PHP ne peut pas être vide lors de la personnalisation de la version!", - "73d6e709b568b43405052cec999798c5": "Le format de configuration de la connexion PHP est incorrect, veuillez vous référer à l'exemple!", - "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "Le socket Unix spécifié [{}] n'existe pas!", - "751ac8fd72a0acd79772370efcae9c89": "Impossible de se connecter à [{}], veuillez vérifier si la machine peut se connecter au serveur cible", - "3cb7d414f8ae92b2b29057f91346f7dc": "La configuration a échoué, aucun élément de configuration lié enable-PHP-XX n'a ​​été trouvé dans le fichier de configuration du site Web!", - "c7a6a892c6cdfc9b0fedefb0a1d2083a": "Le répertoire demandé n'existe pas", - "4622561ceaaecb6ef7dd51e65c9f4ec5": "Répertoire de base éteint!", - "e4ec1f40794bdf92e7261e6e0c51895a": "Le répertoire de base allumé!", - "eeddf79f68ffe029ed83fddcba46b35f": "Vieux proxy", - "1592678472ea1b601fd74abff47c56b1": "Impossible d'obtenir une URL cible", - "18edd294853d381dbe0d612ab58bc123": "Une erreur a été détectée dans le fichier de configuration.Veuillez le résoudre avant de continuer", - "8b5899be4df3aedb03c6fbad9055ed1c": "Le nom de la base de données ne peut pas comporter plus de 40 caractères!", - "111376d92c49c1a6c1522a2ef1dac23c": "Un nom de proxy inversé spécifié ou un dossier proxy existe déjà", - "09a988aa2e3185fce9fa8f4e8710b862": "Impossible de définir à la fois le répertoire et les proxies mondiaux", - "012a8e497feddccb8e4a47aa5e2dc156": "Veuillez saisir le numéro", - "90da7d2de9aa12ec32ee04172ca0d2d3": "Erreur de format de domaine envoyé:", - "440544138d3ed8a2229792c88bad3bd8": "L'URL cible ne peut pas être accessible", - "faf2457853593b3296699c4adacc7825": "Veuillez saisir le contenu à remplacer", - "748e5ad33460a17cf26c8024bb0a1620": "Le contenu à remplacer ne peut pas être le même que le contenu à remplacer", - "195d5db9e1559f06348715bc3a822036": "Un proxy inversé global existe déjà dans le fichier de configuration maître / VHOST de réécriture / nginx", - "cc38d47ec9ac62ffc67a5db9c08d5d52": "L'URL de destination ne peut pas être vide", - "fb79afbbe0688565b7894b644dfd798d": "L'URL cible ne peut pas être [http: // ou https: //], veuillez remplir l'URL complète, comme: https://aapanel.com", - "29c9da826ae868c8c6444328f48bcf40": "Les procurations inverses ne sont pas actuellement disponibles pour les sites WordPress qui utilisent un déploiement en un clic", - "a59dfc3ae22fd96d46011503a4f40744": "Proxy suspendu", - "118f77feff598376a776af9b8e738efc": "Sauvé avec succès", - "078bb5f960587121c7cd606ddba5ad58": "Veuillez activer le proxy inversé avant le montage!", - "fe7185cec796e18d58f8e84dc4da946f": "Prend actuellement en charge Nginx", - "38441d4a89765279852ca2830aa89c83": "Une nouvelle règle de réécriture d'URL a été enregistrée!", - "c27a45bf16475a157ca1014cf886bb56": "Veuillez saisir une note", - "9a962a24e9b7b07800d6b7c7efd86f30": "Le nom d'utilisateur ou le mot de passe ne peut pas être inférieur à 3 chiffres!", - "7eb904262649f9b2e4ba52e2bba9db71": "Le format de mot de passe est faux, veuillez ne pas utiliser de symboles spéciaux pour les deux premiers chiffres!", - "492c7f01035f1cf9b88756f897f02b87": "Erreur, le domaine principal ne peut pas être l'adresse IP!", - "0a2b8c4a98495f6af19be9c1c342844e": "Réussi, veuillez tester le programme JSP!", - "49281f9c7680652b1d110625da5c8cca": "Tomcat Mappage fermé!", - "ec3b07b78fd4f3307c84858957ddbd0f": "Obtenir le chemin de l'exécution du site faux", - "02e602e968050352febfc4ddcae332f0": "OpenLitesPeed ne prend pas en charge la définition du site par défaut", - "362538d60f495840284c667e67831b16": "Répertoire de balayage", - "4f137439eb93e6c752873c8af2d3d1cb": "La tâche de numérisation a dans la file d'attente!", - "613a6375944c3035efe735e87766fbbd": "La mise à jour a réussi!", - "6177805463a6a4f28e61bb3435bee13b": "Défini avec succès, le site s'arrêtera automatiquement à l'expiration!", - "1a69486f70b6baf749e6e1c4d5fcf689": "Le suffixe d'URL ne peut pas être vide!", - "2f858201b6da6a5419c5af8fd26f815c": "Le nom de domaine de la chaîne antivol ne peut pas être vide!", - "f36c15e89d61e07fb44095ae920b8fbc": "Veuillez d'abord allumer le hotlink!", - "70dc560b6f4af6d210c9eeb8434c571c": "Les ressources de réponse doivent utiliser URI Path ou HTTP Status Code, telles que: /test.png ou 404", - "aa8722f512ecebf5dae454e526402508": "Veuillez d'abord activer l'antivol!", - "bd0d7585c64988d80747a32fb0e3e15e": "Le journal est vide", - "a17f5bc22553d897f6363867c0165256": "Catégorie par défaut", - "0d0d87a34e787b2f4a59d912d4d441e4": "Le nom de catégorie ne peut pas être vide", - "6818a5095a78431eb3c99fe022b687b0": "Le nom de catégorie ne peut pas dépasser 16 lettres", - "c4f16bb3d87b92062f73954c86485f64": "Ajoutez jusqu'à 10 catégories!", - "5fd53f59be2a3dee94df28886840b9a3": "Le nom de catégorie spécifié existe déjà!", - "1c44b4096bb88e459ddadef895bea1c2": "La catégorie spécifiée n'existe pas!", - "8f52253b1f007fd14ed0f60b89593d2d": "Catégorie supprimée!", - "b51515085fc6ea6a07192c61e068c124": "Modifié avec succès", - "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "Cette fonction prend uniquement en charge nginx / apache", - "6678fd91bc04eb1e34e3474809387e7a": "La requête a échoué, n'existe pas d'adresse", - "7ac0a27b48f2931c7f294b996fe6b273": "Fichier de configuration d'analyse d'erreur", - "ee3a15a26aee235ac255e37342b444bb": "Configurer avec succès", - "79799f8c2f024685df774550ea5b427d": "Le site Web [proxy, redirection, http vers HTTPS] ne sont pas définis pour redémarrer automatiquement", - "29faf053a22c387532298233399e66f9": "Erreur d'analyse du fichier de configuration", - "6c881e76c76b1f102bcb97a8b4f682f6": "Ce site Web a activé [proxy, redirection, http vers https] redémarrer automatiquement", - "13fc1b8a101214be1a472db8de1bd8fd": "Le site Web a désactivé le redémarrage automatique", - "1fb58c8e2967a648359d13aa22d9e493": "Le site n'existe pas!", - "b0cd0c2bc5c6ce9f71127d60872209ce": "Site Web [{}] renommé: [{}]", "3f96c422b7a59fe6e8bf7531c647a64c": "Le compte spécifié n'existe pas", "cb5e7fdc51569eedfbf3a9a0d3c819cc": "L'ordre spécifié n'existe pas!", "8bd32b310825307a909c682871008642": "Commandez avec succès!", @@ -395,12 +121,101 @@ "6953519c64b998226d0294b961deca62": "Résoudre un certificat", "1bbd31373b98ad5a6320af00b2a15ee0": "Renouveler lorsque l'heure d'expiration est lte", "8fcc1d6fd24fad55d9e8fea6631886db": "Veuillez saisir l'index de l'ordre à révoquer dans le paramètre - Index", - "7b84e677e97bd4943a6639a22c1a1704": "mot de passe 参数 不 能 为空", - "5f3160e82bc0c5278923b609841e588b": "开启 成功", - "f288f8c23f8d03a699a49bf1fb8e7f53": "ssh 选项 失败", - "d3118650da719b6b0cc83230204491de": "加密 方式 错误", - "24513dc8c02bb021a1c944009c19215b": "开启 失败", - "8a3140f96ba5c5df5560d0bd27aa4cd8": "关闭 成功", + "b0698ab9adefa7515299f311c725ba4d": "Effacer le tri avec succès", + "8611f56e253646a455ceeb020052fa97": "Échec de la modification", + "ebdcf538e79de6922f498cc8c735eab5": "Le pare-feu du système n'est pas ouvert", + "a296add6341b715925c0be2b83514ee3": "L'adresse IP que vous avez saisie est illégale!", + "3433b9709eed7423f1900061ef743af6": "La désactivation de cette IP entraînera l'échec de votre serveur", + "57e7b2320dd3984312335605d57ee0f8": "L'IP existe dans la liste des blocs, pas besoin de répéter le traitement!", + "4bb8df740a7119979ff7854d034200a8": "L'adresse IP est illégale!", + "998ad6f12ce5285a1b72d4265d9b36cc": "Supprimé avec succès", + "ff9c66f005c08efd15752fb261057b46": "La gamme de ports doit être comprise entre 22 et 65535!", + "b26b09909c3b090f31dba4a0986e1b84": "Le port existe, pas besoin de répéter la version!", + "408f58c25fc55295236fbb64a2d884ff": "Échec, ne peut pas supprimer le port actuel du panneau", + "e274abcaad0a7fff74d9adb67e578d5f": "Échec de la suppression", + "ad6fc2abb89b42d391b4bf84e8e6cd2d": "Service SSH éteint", + "0692d6f0819524aaa05e73f03022ec5b": "Le service SSH a activé", + "d0749aaba8b833466dfcbb0428e4f89c": "SUCCÈS", + "ffdc24f916f3071233ca7710aff032c8": " {}", + "6e264f3408e9b769d3fb7e2c807f301f": "L'opération a échoué.Veuillez vérifier que la clé est correcte", + "d4ac5985eccd334896e3cf23706e43b0": "Ajouté avec succès", + "92188d43af4373bacbf00951da16532a": "N'a pas réussi à obtenir le chemin du site Web.Veuillez vérifier si le site Web existe", + "ceaefd9a46d78491b9fdb912b5c71eeb": "Échec de la création du fichier de validation.Vérifiez si l'écriture a été bloquée", + "1bb3608b1bc684c3dc85090db249346b": "Aucune information de certificat n'a été obtenue", "b0a783e3ada9e792e3ff3ca4eb477c80": "Le certificat n'existe pas!", "fca4e47d90253577901e874737b87dc0": "Erreur de lecture du certificat!", "813595d6c41e417bea96adb1ad89043f": "Erreur de format de certificat", @@ -419,9 +234,387 @@ "501ffa672acb20c4764563d6e839879b": "Échec de la connexion au cloud.Impossible de supprimer des données sur le cloud.", "a810cdf921c5b92a3f6d29667ec78ffc": "Succès de Del", "df569fbc92d17644e83b44541596633f": "Échec de la connexion au cloud.", + "140bda69874872f8402052c613c0b3b9": "e-mail de test d'alerte AAPANEL", + "76a1ec4a3fcdc304394ff14dc90f8072": "Le nombre de threads de panneau doit être compris entre 1 et 1024", + "dd7e82b5fb3c67e3e41d96f22ba838fd": "Nouveau port de panneau", + "248336101b461380a4b2391a7625493d": "Sauvé", + "40624aabb99173387dd6d575759b12db": "Le paramètre CERTPEM est manquant!", + "37db9679113eef382992a1478f1b79ff": "Le paramètre Privatekey est manquant!", + "7063e5fbf2ea8d0809fe307b6df00467": "Certificat enregistré!", + "d2174fc17fcd785706114088b84dbbce": "L'URL de connexion temporaire a été générée", + "b5101eb6e685091719013d1a75756a53": "\\ 1", + "0bfe47819da04212a33dac83b71430e8": "\\ 2", + "bef28b813bf12be3924925bbb62883dd": "Exécuté avec succès!", + "fda63bff3e0143980e5761376859b00b": "Échec de l'exécution, vérifiez si Apache installé", + "22012355700877ab73f89de8014ab20b": "Erreur de configuration de la règle Apache:
n'a pas réussi à activer:

", + "9848c96a046adb1759233241661ff694": "{} Le service n'a pas réussi à démarrer", + "6ed577cdce37bbd9c66871ac1677dc53": "L'arrêt du service a échoué!", + "572e5703371c43aae299181c0e3567d4": "Veuillez exécuter le programme lorsque toutes les tâches d'installation sont terminées!", + "c7138b4b5f7ded833942aef4e230771d": "Commande envoyée avec succès!", + "d56f0ed99825b4d62ab84753a65f7f1e": "Panneau redémarré", + "3d8c9e517719022b27ad5f27c578fa31": "Obtenez un RAM faux", + "d47ab7b9ce539ba13f4e045561bb8ed7": "Faire du temps de disponibilité faux", + "8e39175bab478762d3d029bee327c704": "Obtenir le temps de redémarrage faux", + "e16cf27704f83c8b0a0efc16886ea75d": "Obtenir une date fausse", + "c158c8096b76b85803e71232b2dd5e74": "Obtenir le détail du temps faux", + "a6ec06b5eb6a42e13e072d2e992e31a0": "Obtenez un reqpersec faux", + "cdd32490a46567fd0c1ee9d4b170b762": "Obtenir des accessions totales fausses", + "62b939086708b37d68c00cb713994b52": "Obtenez un TotalKbytes faux", + "13b06d17b35dfeeafa50e12ad9ec1735": "Obtenez des travailleurs occupés faux", + "724fc9214ccce3e6a5787648240a4533": "Faire fausses travailleurs des oiseaux", + "7a7f329389283fdd3290c735f90946e9": "MPM_EVENT_MODULE CON", + "db669c6377ab90eef78800a48fd4a453": "Demander un délai d'expiration", + "af52f5340c065f4d38182f7a27d59f75": "Rester en vie", + "70b46e57f3c33abdb9558bc5c3a234d9": "Demandes de main-d'œuvre maximale par connexion", + "6868568c3abc547e622a303891a906b0": "Processus par défaut", + "224114c62dceb7ebee2db43c6c79a961": "Nombre maximum de threads inactifs", + "3c60809d9a5a0900dfbc28bb017e410b": "Nombre minimum de threads inactifs disponibles pour gérer les pics de demande", + "3783030daf8154be6e11fc4160c229c3": "Nombre de threads créés par chaque processus d'enfant", + "2f25e4b1a2cb84576740da749a2daef2": "Nombre maximum de connexions qui seront traitées simultanément", + "72e3edfd72758944413b1e4e9c432f1e": "Limiter le nombre de connexions qu'un serveur d'enfants individuel gérera au cours de sa vie", + "26c74a59d7d10bd927dce45e449943f1": "Erreur de configuration", + "b2d87dda66a4643c6cf673f787c5f226": "Le fichier de configuration n'existe pas", + "bff9ef87fdda677f86ae6dddec54a104": "Aucune version PHP compatible trouvée, veuillez installer d'abord", + "4bbfcde12aa36ec375a332f51bf905d6": "Par jour", + "60956b50bb8e8c711d3adb889a70137f": "Par jour, exécutez à {} heure {} min", + "78748f15bb65939b6d130c3a5cf8b7dc": "Chaque {} jours", + "cf9af10dcebe2f12092ff6028a535f08": "Chaque {} jours, exécutez à {} heure {} min", + "e114abed903b9d26c476d4f6cd59c04b": "Par heure", + "0aef48ea8132b0551fa25a10fd0a6585": "Par heure, courez à {} min", + "50419faf9662e0c3f283d496bcb8eb72": "Chaque {} heures", + "2a0706d7e3ca3ce9e955471a0648dfcc": "Chaque {} heures, exécutez à {} min", + "84d94bf0382f611906b7edd65d6af169": "Chaque {} minutes", + "14d27796d1c96457c7c019661a2f32d4": "Exécutez chaque {} minutes", + "6c25e6a6da95b3d583c6ec4c3f82ed4d": "Hebdomadaire", + "e1df614d393ab86fd63c5062f7e77936": "Chaque {}, exécutez à {} heure {} min", + "69c5e99b9ad8d2b8f11be9a60cbf71da": "Mensuellement, exécutez le {} jour {} heure {} min", + "9d1a0949c39e66a0cd65240bc0ac9177": "Dimanche", + "6f8522e0610541f1ef215a22ffa66ff6": "Lundi", + "5792315f09a5d54fb7e3d066672b507f": "Mardi", + "796c163589f295373e171842f37265d5": "Mercredi", + "78ae6f0cd191d25147e252dc54768238": "Jeudi", + "c33b138a163847cdb6caeeb7c9a126b4": "Vendredi", + "8b7051187b9191cdcdae6ed5a10e5adc": "Samedi", + "e00d5128f631253b7b6ed8d5454c0c81": "Impossible d'écrire dans le fichier, veuillez vérifier si [le durcissement du système] est activé!", + "685689743579a8f09fcec5d7df04e39e": "Le nom de la tâche ne peut pas être vide!", + "a5c04aced897c770105858268324b53f": "La tâche actuelle est le statut de désactivation, veuillez ouvrir la tâche avant de modifier!", + "85305ee6be0f078791c7437ec54dda12": "Échec de l'ajout", + "08a1ce771119bb393fa49478216ae809": "Le journal est vide", + "b8fd4dbe5c3650beaec0a3d44d7f0245": "Journaux vidés", + "ff47c70e853d0b3635935be883b018e9": "Impossible de vider les journaux de tâches!", + "e0c4da1afd18acbb66bc5fac261a42ef": "La tâche spécifiée n'existe pas!", + "38fa2d4f8f9a13062c0c9007d97f6a84": "Impossible de lire le fichier!", + "f57d5686d9dd67f0e81924de8d13af95": "La tâche a été exécutée!", + "da07d14105efb3ba634c1d35618447ab": "Le paramètre est incorrect!", + "ea2b2676c28c0db26d39331a336c6b92": "commencer", + "ef399b2d446bb37b7c32ad2cc1b6045b": "arrêt", + "0b12c9f33fde8b15970c7390c54d7ca5": "Échec de la fermeture du journal", + "b55eed05ce4922d8a6c881f0f2b05bbf": "Set avec succès", + "5afb8de2bbb11b44592503000290c173": "Le plugin spécifié n'existe pas!", + "8b266978ab5161642a2d95d3f03f3945": "Veuillez désinstaller [{}] d'abord", + "ad626ac6de7ea412c9156f73b7666cd4": "Dépend du logiciel suivant, veuillez installer [{}] d'abord", + "acf7b210e1f5fbdb2e24af573f0e1831": "Au moins [{0}] les noyaux CPU sont nécessaires pour installer", + "d0c8fa89a1eccf8a377d11eea540fd0c": "Au moins [{0} MB] la mémoire est nécessaire pour installer", + "52e44340370925b110c7fba475b805e3": "Supporte uniquement le système [{}]", + "e3b16d9e5a24c8d27578d7670e840200": "Dépendre du logiciel suivant, veuillez installer d'abord [{}]", + "a0405fa5f045a30ba3aeff1c65ad8c38": "Processus d'installation annulé!", + "a13ed989898e4c7529942fa656ff6733": "Le répertoire critique du système n'est pas écrit!", + "7a71d673b95a1bd0d10705c865f5a626": "1. Si [le durcissement du système] est installé, veuillez le désactiver", + "c5041819fd15366b66dd9539116ea6ad": "2. Si Yunsuo est installé, veuillez désactiver la fonction [durcissement du système]", + "101935ed7ea8a021a536a614363350eb": "3. Si safEDOG est installé, veuillez désactiver la fonction [Protection du système]", + "8c4aa1aa63c24703138358074a515b99": "4. Si d'autres logiciels de sécurité sont utilisés, veuillez le désinstaller", + "2eaba30c177044d12634b22016f5dd99": "Veuillez spécifier le nom du logiciel!", + "0d3811da2c2a4315b921093d36e6759d": "Désolé, le fonctionnaire de l'OLS ne prend actuellement pas en charge PHP8.1", + "0d06a64610d5755d0d395305f9b3a664": "Veuillez d'abord vous connecter en tant que compte Aapanel", + "2c9056dcb1285057d5248e7ed16d2b4d": "La vérification du hachage du fichier a échoué, arrêtez l'installation!", + "fb95b07b4c663c0a52cda545eef1d869": "L'installation a réussi!", + "fac5f4d9d430e77699ec114d346c9bb2": "L'installation a échoué", + "349838fb1d851d3e2014b9fe39203275": "Installer", + "a9ba3c226edabcfe1978d6f4c5daf404": "Nginx 1.8.1 est trop ancien, plus disponible, veuillez choisir une autre version!", + "75d7d596e2cc30d482111fae7b4f6d88": "Tâche d'installation ajoutée à la file d'attente", + "ee83f5efe8a95f2e8529da7d4bb01d2b": "Uninstallaton a réussi", + "4432eb207b29c9ead490158b76397532": "La liste de bases de données n'est pas vide.Pour votre sécurité de données, veuillez sauvegarder et supprimer la base de données existante.
Commande de désinstallation forcée: RM -RF / www / server / mysql", + "ba922eb50c83147a9bc0e9f40877d986": "La désinstallation a réussi", + "b860df98df6ab84521a4cef036973028": "Plage de notation [1-5]", + "eb536feb2c569974c2b5cf85cae91041": "Échec de la connexion!", + "a70188f907ee9df93a4b749109a23460": "Échec de la liste des logiciels ({})", + "16ad37f5aafc6478f2f6d63d70554530": "Veuillez ne pas répéter en ajoutant", + "18ea7bdb25b2a66507ffb1bb8b42fefa": "Le tableau de bord affiche uniquement jusqu'à 12 logiciels!", + "2aa461271893ae0493789e9e8f248fdc": "La barre de raccourci affiche uniquement jusqu'à 5 logiciels!", + "98cb93d354af289a900cd9e03cee2df2": "L'installation a échoué!", + "17e4e003ade65cd7a54131d3404d2f98": "Non ouvert", + "bda730e0e5c7444ef6f4f49957ab4f39": "Être payé", + "24fe48030f7d3097d5882535b04c3fa8": "Expiré", + "cbfcfe47e7420af71ce1666844c565a3": "Trier sauvé", + "6a20d0daaec1ce3950a321704041dc90": "Ce plugin n'a pas de modèle!", + "6f5cb320fb3a7e303403054320ad943c": "Liste des logiciels mis à jour!", + "b269cd272a31017961c245e2c84a1a2f": "Le téléchargement du fichier a échoué!", + "84f7539fe8674bb0689347dc7acd7b43": "Aucune information sur le plugin trouvé dans les archives, veuillez vérifier le package du plugin!", + "affc007de5f6791707f3de155a3a642a": "Le fichier temporaire n'existe pas, veuillez re-télécharger!", + "117f1bb083c7d556079a3c77093be5e2": "Exportation a échoué, veuillez vérifier les autorisations!", + "a8f375e795e0a130837f2a468518a413": "Les noms non conformes ne peuvent être que des chiffres, des lettres, des soulignements", + "a06490b9729d0868e31d834c9bffa0bd": "Les paramètres de compilation personnalisés spécifiés n'existent pas!", + "5e71fccee12caedf853a7313ea204721": "Erreur: nom ou service non connu", + "b6e3d7366f73e2c5e32717d679db6474": "Erreur: n'a pas établi une nouvelle connexion", + "cdffdb1c794cf0dd777b3941a31459e4": "Erreur: Lire expiré", + "4573823cc04a9cbf8a7bb254b762db91": "Erreur: connexion refusée", + "e3c2e426ad1b23571c48ec572ca675bf": "Erreur: connexion close à distance à distance sans réponse", + "db3a5c61130d7ca2046f5f9d0cd08073": "Erreur: {}", + "fe723570085e5cc1ecc3dfc88a46aa2d": "Télécharger le délai: {}", + "0eeb116408665d50a2f2092a6c277ee6": "Pas d'espace disque disponible.", + "57a43d6e8c479df3a51421eba70d5621": "Vérifiez que la somme de contrôle du package a échoué.", + "c12c62dd767caf90d62356b47349d871": "Impossible d'obtenir une barre de progression pour ce plugin.", + "8fde9a929c417549ed2f9144fa68c0d2": "Le nom de la règle ne peut être composé que de lettres, de chiffres et de soulignements!", + "868a6f377594831b39e91745c7807e28": "Le nom de la règle Spécifiez n'existe pas![{}]", + "5d9cf1940fae6317dd43a7f1b5ca8f36": "Le nom de la règle Spécifiez déjà![{}]", + "473bc9055d76e148db4d28e7bec67295": "Le nom de la règle doit être supérieur à 3 octets", + "5b097df78b1d8c65d8b524354029f114": "Le suffixe de fichiers ne peut pas être vide", + "496e2dfba11ca4381ef6277e6e9a62dc": "Le répertoire ne peut pas être vide", + "84278582ca50b97777b2c8ce780f9715": "Pour le soutien | Suggestions, veuillez visiter le forum AAPanel", + "aa00d1012298d40c84daf11e09956c65": "Téléchargement:", + "3c8ad9e6e9c39de49294aa2db8630f25": "Nginx n'est pas installé", + "8bdafc47214a88c8cc4bc6326771040a": "L'acquisition de données a échoué!", + "d84c752e17017ec4b4987497ce15dfd0": "L'acquisition du statut de charge PHP a échoué!", + "cf6e5eb2bfedf2e0529a552c1017c21e": "Écrivez le fichier échoué!", + "842bbd281516b01e70be499dbe67d3aa": "Définir avec succès", + "ff7ca5d4ef00526f701d3ae0b3833940": "Échec de la liste, veuillez vérifier si le paramètre [AK / SK / Storage] est correct!", + "517fa3f50147b216828f9aca9fd08927": "演示 服务器 , 禁止 此 操作!", + "e39bf0b6a74eb0459abefe075607833f": "Erreur, ne peut pas mettre fin aux processus de tâche!", + "c40f1a202bfa106ac04f83a4740b3bd1": "Ne pas se connecter au serveur!", + "ca3eb6afad663b2881fababde6d59d63": "Veuillez lier votre compte d'abord!", + "df1f69a87b498b8b12c90be5a3b885db": "Le téléchargement du fichier a échoué, veuillez réessayer ou mettre à jour manuellement!", + "e448bd5c1c654d1ef33cf40620808693": "La version PHP demandée n'existe pas!", + "7c769ceaad458456d4c3bc8276015a8d": "Permission refusée!", + "178d2e6a3f4abd4552188dcf36df7687": "Journaux du panneau vides!", + "99a0d283490c238c6faf2d0387dbcda7": "Le serveur Web actuel est OpenLitesPeed.Cette fonction n'est pas encore prise en charge.", + "20b4593b7de7ef359c1a0269f83e896b": "La gamme de ports est incorrecte!", + "0e656ce1afc98099f2e01e8f71362f92": "Veuillez saisir le numéro de port correct", + "88897967b12e6907309204ad6d0647af": "Veuillez ne pas utiliser le port habituel comme port phpmyadmin!", + "e4859a777f8d4f300baf8fff0284fe81": "Je n'ai pas trouvé le fichier de configuration SSL Apache PhpMyAdmin SSL, veuillez essayer de fermer les paramètres du port SSL avant l'ouverture", + "6bd4e79acd767010d96091baf9daba77": "N'a pas détecté le port que Nginx phpmyadmin écoute, veuillez confirmer si le fichier a été modifié manuellement.", + "7478cfa7a09bbe61467b07dea2e9721d": "N'a pas détecté le port qu'Apache phpmyadmin écoute, veuillez confirmer si le fichier a été modifié manuellement.", + "a7dad48fefe8778dd10744a8a4dbae8e": "Nouveau port ssl phpmyadmin", + "a168cddbe84613b0a468887d44e7eaf5": "Le certificat du panneau n'existe pas.Veuillez demander le certificat du panneau et réessayer.", + "c0c23cdf9e9329e576cfbddcc85666a3": "Ouvert avec succès, veuillez libérer manuellement le port SSL PhpMyAdmin", + "b7f3560235e37cebdbde7db33c3df64c": "L'opération a échoué", + "7f91451dfcb0045a4684fa68b35d0365": "Nouveau port phpmyadmin", + "bb1ca97ec761fc37101737ba0aa2e7c5": "ERREUR", + "14c525aba20f0a52255a799f51ced885": "La liste d'avertissement n'existe pas!", + "586a19c1eeaf6fe9d57f1d894fc487fc": "Le fichier journal n'existe pas!", + "190045c03f9a72a1900c60d63e1e2b8b": "La liaison du compte a expiré, veuillez vous réunir sur la page [Paramètres]!", + "907fddd6007347a0daffc4a64156f0de": "Ignorer le succès, cette version ne sera plus rappelée à la mise à jour.", + "131c05252110792212e3e3666a351154": "Configuration liée à SSL, ne supprimez pas et ne modifiez pas la ligne suivante de règles 404 commentées", + "4ba7e24ac1607ab761c124ca7352ad08": "Configuration de la page d'erreur, autorisée à être commentée, supprimée ou modifiée", + "31bb30ca4135945adbe0c2daa9545b39": "Configuration de référence PHP, autorisé à être commenté, supprimé ou modifié", + "f9da3e5ae75ce0ae39884ae2ea295a66": "Référence de la règle de réécriture de l'URL, toute modification invalidera les règles de réécriture définies par le panneau", + "73e1f7d487ad73d55414fe26ea11cbf0": "Pas spécifier le paramètre [Sitepath]", + "6aabca3a3e1c79bd5837a1ddae95fe70": "Il y a eu une erreur de création, veuillez réessayer.", + "256c9a85375f57f2dc9f6f318c6578f1": "Créer le site Web [{}]", + "481df7dbcd4c0317088bde8c913d5893": "Veuillez remplir le chemin du site Web", + "b1b2484c013c646d7f41d6b2f495b6ef": "Le chemin du site Web ne peut pas être le répertoire racine [/]", + "1c3bff99564f1370a5b1bf6c0773f8c4": "Veuillez vérifier si le format [e-mail] est correct", + "af9091566e669f016edf16ba97464cbe": "Mot de passe très faible, si vous êtes sûr de l'utiliser, veuillez cocher [autoriser les mots de passe faibles]", + "b0dbad478d4f07c38aec8f440ed98b66": "Veuillez d'abord installer MySQL et PHP!", + "46491fef7553177ef58a55b2db917072": "Veuillez ne pas définir le répertoire racine du site Web sur le répertoire principal du système:
{}", + "59d5fef323e89ded50ed6036848a97f3": "Le format du paramètre webname est incorrect, il devrait être une chaîne JSON à analyse", + "078a3d3e263be2851ddfd9fa059d098f": "La gamme de ports est incorrecte!devrait être entre 100 et 65535", + "50370024fdd22dc69099a46d011b20e2": "La version PHP ne peut pas être vide", + "44bd68c6703adf65ff21c63e9a876aa1": "Le format du domaine primaire est incorrect", + "23eded6de9c06451f67ecb7ed3a8c95b": "Le domaine primaire ne peut pas être un enregistrement DNS générique", + "f54249d2613e48be05837ec9cd615a5f": "Le site que vous avez essayé d'ajouter existe déjà!", + "b537e2d1946d559d3de4fb3c045d290f": "Le domaine que vous avez essayé d'ajouter existe déjà!", + "f91c641aef33cf8ef4a29bc5d3a7193a": "Échec de l'ajout, écrivez une erreur de configuration!", + "c3c7869d22051eaa78a831834a398351": "Il y a eu une erreur d'erreur, veuillez réessayer.", + "e2d272e229674e4c6765fab24a323604": "Supprimer le site Web [{}]", + "aa5f20e061736fe68a915163e7e6d122": "Le site spécifié n'existe pas", + "f11e72daff0ce484f4c401bd0bd28ae5": "Site supprimé avec succès!", + "c57d58c6bbd34144325871d75b42a577": "Veuillez saisir le nom de domaine de l'hôte", + "5c7b7c2f6ed78eefdd77aaa3dddde61a": "Le domaine ne peut pas être vide!", + "ef446d50df1605a582f9b44b57327536": "Le format de nom de domaine est incorrect!", + "68ae44808f90043dee02358ee768bf6e": "Le format du domaine n'est pas valide!", + "1628c2a26ab6d1211b435f85782f8acc": "Le nom de domaine spécifié a été lié par le site Web [{}]", + "925dc658ddf0f69509632848bcd39577": "Le nom de domaine spécifié a été lié par un sous-répertoire du site Web [{}]!", + "7b02cf82181f516626a36b86c6a686f5": "Site ajouté avec succès!", + "9b3c4205f2f408790c9c1c5da53c3bfb": "Échec de l'obtention de la version PHP!", + "abc3db87d5608cc9559556468a696a35": "Veuillez choisir un nom de domaine", + "7807e17f2bf49fb802bba1a04822ea16": "Veuillez choisir un port", + "e5925c3a126a66c0565df6d8ef49550e": "Le dernier domaine ne peut pas être supprimé!", + "17088ffed1e537b917a6ecc9dc957159": "Erreur de clé privée, veuillez vérifier!", + "26924bd958e212f07c31b6ffca9cbf8c": "Erreur de certificat, veuillez vérifier!", + "44e2c1c3cfd8d248d7c9190a8f07c0ee": "Erreur d'obtention de certificat", + "fc0d039d9dcf3905ae8032c9cb33f475": "Erreur:
{}", + "ddc2be35a5ed0bf09a88139c4ad10b4a": "Identique à un chemin d'origine, pas besoin de changer!", + "84a8921b25f505d0d2077aeb5db4bc16": "Statique", + "ad74aa2854e988c3157f92e0120bb19e": "Apache2.2 ne prend pas en charge Multiphp!, {}", + "4018ce634a10d352867f04962f107c14": "Il y avait un paramètre d'erreur, veuillez réessayer.", + "f1bef4fd5183ae83a5896c32a3d5e81d": "La configuration PHP personnalisée ne prend en charge que Nginx", + "879e0d022ff268704f93a7e2b504c224": "La configuration de la connexion PHP ne peut pas être vide lors de la personnalisation de la version!", + "73d6e709b568b43405052cec999798c5": "Le format de configuration de la connexion PHP est incorrect, veuillez vous référer à l'exemple!", + "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "Le socket Unix spécifié [{}] n'existe pas!", + "751ac8fd72a0acd79772370efcae9c89": "Impossible de se connecter à [{}], veuillez vérifier si la machine peut se connecter au serveur cible", + "3cb7d414f8ae92b2b29057f91346f7dc": "La configuration a échoué, aucun élément de configuration lié enable-PHP-XX n'a ​​été trouvé dans le fichier de configuration du site Web!", + "c7a6a892c6cdfc9b0fedefb0a1d2083a": "Le répertoire demandé n'existe pas", + "4622561ceaaecb6ef7dd51e65c9f4ec5": "Répertoire de base éteint!", + "e4ec1f40794bdf92e7261e6e0c51895a": "Le répertoire de base allumé!", + "eeddf79f68ffe029ed83fddcba46b35f": "Vieux proxy", + "1592678472ea1b601fd74abff47c56b1": "Impossible d'obtenir une URL cible", + "18edd294853d381dbe0d612ab58bc123": "Une erreur a été détectée dans le fichier de configuration.Veuillez le résoudre avant de continuer", + "8b5899be4df3aedb03c6fbad9055ed1c": "Le nom de la base de données ne peut pas comporter plus de 40 caractères!", + "111376d92c49c1a6c1522a2ef1dac23c": "Un nom de proxy inversé spécifié ou un dossier proxy existe déjà", + "09a988aa2e3185fce9fa8f4e8710b862": "Impossible de définir à la fois le répertoire et les proxies mondiaux", + "012a8e497feddccb8e4a47aa5e2dc156": "Veuillez saisir le numéro", + "90da7d2de9aa12ec32ee04172ca0d2d3": "Erreur de format de domaine envoyé:", + "440544138d3ed8a2229792c88bad3bd8": "L'URL cible ne peut pas être accessible", + "faf2457853593b3296699c4adacc7825": "Veuillez saisir le contenu à remplacer", + "748e5ad33460a17cf26c8024bb0a1620": "Le contenu à remplacer ne peut pas être le même que le contenu à remplacer", + "195d5db9e1559f06348715bc3a822036": "Un proxy inversé global existe déjà dans le fichier de configuration maître / VHOST de réécriture / nginx", + "cc38d47ec9ac62ffc67a5db9c08d5d52": "L'URL de destination ne peut pas être vide", + "fb79afbbe0688565b7894b644dfd798d": "L'URL cible ne peut pas être [http: // ou https: //], veuillez remplir l'URL complète, comme: https://aapanel.com", + "29c9da826ae868c8c6444328f48bcf40": "Les procurations inverses ne sont pas actuellement disponibles pour les sites WordPress qui utilisent un déploiement en un clic", + "a59dfc3ae22fd96d46011503a4f40744": "Proxy suspendu", + "078bb5f960587121c7cd606ddba5ad58": "Veuillez activer le proxy inversé avant le montage!", + "fe7185cec796e18d58f8e84dc4da946f": "Prend actuellement en charge Nginx", + "38441d4a89765279852ca2830aa89c83": "Une nouvelle règle de réécriture d'URL a été enregistrée!", + "b9c1dcb37c44dca19765636de065b1c1": "La sauvegarde a réussi!", + "c27a45bf16475a157ca1014cf886bb56": "Veuillez saisir une note", + "9a962a24e9b7b07800d6b7c7efd86f30": "Le nom d'utilisateur ou le mot de passe ne peut pas être inférieur à 3 chiffres!", + "7eb904262649f9b2e4ba52e2bba9db71": "Le format de mot de passe est faux, veuillez ne pas utiliser de symboles spéciaux pour les deux premiers chiffres!", + "492c7f01035f1cf9b88756f897f02b87": "Erreur, le domaine principal ne peut pas être l'adresse IP!", + "0a2b8c4a98495f6af19be9c1c342844e": "Réussi, veuillez tester le programme JSP!", + "49281f9c7680652b1d110625da5c8cca": "Tomcat Mappage fermé!", + "ec3b07b78fd4f3307c84858957ddbd0f": "Obtenir le chemin de l'exécution du site faux", + "02e602e968050352febfc4ddcae332f0": "OpenLitesPeed ne prend pas en charge la définition du site par défaut", + "362538d60f495840284c667e67831b16": "Répertoire de balayage", + "4f137439eb93e6c752873c8af2d3d1cb": "La tâche de numérisation a dans la file d'attente!", + "613a6375944c3035efe735e87766fbbd": "La mise à jour a réussi!", + "6177805463a6a4f28e61bb3435bee13b": "Défini avec succès, le site s'arrêtera automatiquement à l'expiration!", + "1a69486f70b6baf749e6e1c4d5fcf689": "Le suffixe d'URL ne peut pas être vide!", + "2f858201b6da6a5419c5af8fd26f815c": "Le nom de domaine de la chaîne antivol ne peut pas être vide!", + "f36c15e89d61e07fb44095ae920b8fbc": "Veuillez d'abord allumer le hotlink!", + "70dc560b6f4af6d210c9eeb8434c571c": "Les ressources de réponse doivent utiliser URI Path ou HTTP Status Code, telles que: /test.png ou 404", + "aa8722f512ecebf5dae454e526402508": "Veuillez d'abord activer l'antivol!", + "bd0d7585c64988d80747a32fb0e3e15e": "Le journal est vide", + "a17f5bc22553d897f6363867c0165256": "Catégorie par défaut", + "0d0d87a34e787b2f4a59d912d4d441e4": "Le nom de catégorie ne peut pas être vide", + "6818a5095a78431eb3c99fe022b687b0": "Le nom de catégorie ne peut pas dépasser 16 lettres", + "c4f16bb3d87b92062f73954c86485f64": "Ajoutez jusqu'à 10 catégories!", + "5fd53f59be2a3dee94df28886840b9a3": "Le nom de catégorie spécifié existe déjà!", + "1c44b4096bb88e459ddadef895bea1c2": "La catégorie spécifiée n'existe pas!", + "8f52253b1f007fd14ed0f60b89593d2d": "Catégorie supprimée!", + "b51515085fc6ea6a07192c61e068c124": "Modifié avec succès", + "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "Cette fonction prend uniquement en charge nginx / apache", + "6678fd91bc04eb1e34e3474809387e7a": "La requête a échoué, n'existe pas d'adresse", + "7ac0a27b48f2931c7f294b996fe6b273": "Fichier de configuration d'analyse d'erreur", + "ee3a15a26aee235ac255e37342b444bb": "Configurer avec succès", + "79799f8c2f024685df774550ea5b427d": "Le site Web [proxy, redirection, http vers HTTPS] ne sont pas définis pour redémarrer automatiquement", + "29faf053a22c387532298233399e66f9": "Erreur d'analyse du fichier de configuration", + "6c881e76c76b1f102bcb97a8b4f682f6": "Ce site Web a activé [proxy, redirection, http vers https] redémarrer automatiquement", + "13fc1b8a101214be1a472db8de1bd8fd": "Le site Web a désactivé le redémarrage automatique", + "1fb58c8e2967a648359d13aa22d9e493": "Le site n'existe pas!", + "b0cd0c2bc5c6ce9f71127d60872209ce": "Site Web [{}] renommé: [{}]", + "946fb31f804cdde218dbf05d7183e94e": "MD5 cohérent!", + "d83dadd8fcee6c014db8af454bc279fc": "Télécharger avec succès", + "1336bbfcadd9119f86ecd48c2d9fb770": "La connexion de la base de données est anormale.Veuillez vérifier si l'autorité de l'utilisateur racine ou les paramètres de configuration de la base de données sont corrects.", + "ee102508d210854b6fc7da18e598140b": "La détection de mot de passe générée a échoué!", + "6e72fc97e2f1be35ae40ca21d6b1df38": "La base de données de ce WordPress n'a pas été trouvée, cela peut être causé par le fait que vous avez supprimé manuellement la base de données", + "6df8e9d3a4e149ff12445d981f6fc244": "Réinitialiser le mot de passe réussi", + "f748d4e467e9f4f27540b6f5ce5b1ef8": "Cette fonctionnalité ne prend actuellement en charge que Nginx", + "9747bb4f34180afd2f9a681397b269fb": "Nettoyé avec succès!", + "015d337f0646fe4b8a89b30041436e7f": "Mis à jour avec succès!", + "321b336d92b3e894060637528499dcf9": "Le déploiement a réussi!", + "1850193ca4b37a25ee94db903eddc16f": "Le déploiement a échoué!", + "b390405514d6291f511c9f3a4fb31249": "L'ID du site doit être numérique", + "e650b17a0b833e3bcdd8e859b37ce94e": "Cette base de données n'a pas été trouvée!", + "a0adaeeb3642584bd931c757b6f71d78": "L'optimisation PHP FPM a réussi", + "f11ab236591dc778c39c9429e141dba2": "L'optimisation MySQL a réussi", + "d145648d4281cb3266714c5986bcab8b": "La configuration du cache Nginx Fastcgi existe déjà", + "9c373c2796e866dc590f9dc7c80609da": "Erreur de configuration Nginx Fastcgi!", + "2750e686fcc97deec0122789a059edbd": "Configuration du cache Nginx Fastcgi complète", + "615681ddc1b0efb9f6d434adc1451bb7": "La configuration du cache nginx init fastcgi existe déjà", + "a61c53dff88925e428f2a295b18ac807": "Erreur de configuration nginx init fastcgi!", + "28b386f7ab5957184b60f47c0e540d68": "Ningx init Fastcgi Cache Configuration complète", + "b7082bd55a134bb3a142570572e1c469": "La configuration FastCGI n'existe pas dans la configuration du site Web", + "c0ff8a4b4b8f68c4ba7df88588291590": "La configuration FastCGI existe déjà dans la configuration du site Web", + "e3a6621c5ea036c8f82d3f2d343f1bc8": "Erreur de configuration FastCGI du site Web!", + "4c87778ab71a4e47170ccafd6edb4922": "Site Web FastCGI Configuration complète", + "e3fa50f6413dbb7bfe7cb26e1acd3d98": "Veuillez vous connecter avec le compte d'abord", + "121303c67f81a8ebda41de51c8afaf27": "Veuillez d'abord vous connecter à votre compte AAPanel sur le panneau!", + "d5670370d84473122d8e4d5a3b27b4bf": "Erreur des paramètres: num", + "6b1c16b7a785029c0a11de3ab31cb125": "Succès du statut de rinçage", + "e06c1ddc33f674068e3ca201094145d1": "Activer avec succès", + "819b23804f66eddddfba39e7bdc53e68": "Activer l'échec", + "4f57c5dce8b638737a368af15409439f": "Activer l'échec", + "fe94df1697f309269e00428cae6bd141": "Le renouveau a échoué", + "b2ac1158b825f44cb363648fa3ad60cb": "Renouveler avec succès", + "78d29c0fadebf704e471a63afd430250": "Appliquer l'échec", + "3649e869737aa87f263194ce7f88f19e": "Appliquer avec succès", + "34c4dc380e690d2ff6ebb6aaed103401": "Erreur de paramètre product_id!", + "28731318aa493586f88894355a79cb48": "Impossible de se connecter au serveur!", + "0161305479129bbe47bb020605a15d40": "Configurer réussi!", + "5c9b599b99f7a169b9cd25f7045eaac5": "Succès de synchronisation!", + "b6601359f1ae1067d4c4d271b7407639": "同步 成功 1!", + "10a1984f6c5b935c5d8c7d4b4345e1e5": "同步 成功!", + "86da84e8e3aacf73ee745caee5904268": "同步 失败!", + "8ed30fe61ac59c9e1cb4a75d9a48d477": "Créé avec succès!", + "330e51da1228a070540f82eb8e78155c": "Configurez avec succès!", + "7ac73ef676faaa8a5f8e3924b4d151e3": "Le nom d'utilisateur ou le mot de passe ne peut pas être inférieur à 3 caractères", + "88d8a4565feba5ad270c00e85564b96d": "OpenLitespeed n'est actuellement pas pris en charge", + "c1f8cf125da0d6db1c4e0d09033c9ddd": "Veuillez saisir un compte ou un mot de passe", + "bd7fb7b4280616cbe5de49eb1ee8cc3a": "Veuillez saisir le répertoire à protéger", + "8c48114518721e3966cd4553a0cee705": "Veuillez saisir le nom", + "dd65d82f6868cfa127f86e5658674829": "La protection du mot de passe du site a été définie, veuillez annuler puis définir.Répertoire du site -> Accès au mot de passe", + "1cc6b0e84b90d0ca0b863fccc0f33b36": "Le répertoire a été protégé", + "b7526fc6f8b21e71ea1e290a982df4c9": "Créé avec succès", + "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2 ne prend pas en charge Multiphp!", + "69be778c38b9edc0ab3040c478c39370": "Erreur:% s
Commande de désinstallation forcée: RM -RF / www / server / mysql", - "ba922eb50c83147a9bc0e9f40877d986": "La désinstallation a réussi", - "b860df98df6ab84521a4cef036973028": "Plage de notation [1-5]", - "eb536feb2c569974c2b5cf85cae91041": "Échec de la connexion!", - "a70188f907ee9df93a4b749109a23460": "Échec de la liste des logiciels ({})", - "16ad37f5aafc6478f2f6d63d70554530": "Veuillez ne pas répéter en ajoutant", - "18ea7bdb25b2a66507ffb1bb8b42fefa": "Le tableau de bord affiche uniquement jusqu'à 12 logiciels!", - "2aa461271893ae0493789e9e8f248fdc": "La barre de raccourci affiche uniquement jusqu'à 5 logiciels!", - "98cb93d354af289a900cd9e03cee2df2": "L'installation a échoué!", - "17e4e003ade65cd7a54131d3404d2f98": "Non ouvert", - "bda730e0e5c7444ef6f4f49957ab4f39": "Être payé", - "24fe48030f7d3097d5882535b04c3fa8": "Expiré", - "cbfcfe47e7420af71ce1666844c565a3": "Trier sauvé", - "6a20d0daaec1ce3950a321704041dc90": "Ce plugin n'a pas de modèle!", - "6f5cb320fb3a7e303403054320ad943c": "Liste des logiciels mis à jour!", - "b269cd272a31017961c245e2c84a1a2f": "Le téléchargement du fichier a échoué!", - "84f7539fe8674bb0689347dc7acd7b43": "Aucune information sur le plugin trouvé dans les archives, veuillez vérifier le package du plugin!", - "affc007de5f6791707f3de155a3a642a": "Le fichier temporaire n'existe pas, veuillez re-télécharger!", - "117f1bb083c7d556079a3c77093be5e2": "Exportation a échoué, veuillez vérifier les autorisations!", - "a8f375e795e0a130837f2a468518a413": "Les noms non conformes ne peuvent être que des chiffres, des lettres, des soulignements", - "a06490b9729d0868e31d834c9bffa0bd": "Les paramètres de compilation personnalisés spécifiés n'existent pas!", - "5e71fccee12caedf853a7313ea204721": "Erreur: nom ou service non connu", - "b6e3d7366f73e2c5e32717d679db6474": "Erreur: n'a pas établi une nouvelle connexion", - "cdffdb1c794cf0dd777b3941a31459e4": "Erreur: Lire expiré", - "4573823cc04a9cbf8a7bb254b762db91": "Erreur: connexion refusée", - "e3c2e426ad1b23571c48ec572ca675bf": "Erreur: connexion close à distance à distance sans réponse", - "db3a5c61130d7ca2046f5f9d0cd08073": "Erreur: {}", - "fe723570085e5cc1ecc3dfc88a46aa2d": "Télécharger le délai: {}", - "0eeb116408665d50a2f2092a6c277ee6": "Pas d'espace disque disponible.", - "57a43d6e8c479df3a51421eba70d5621": "Vérifiez que la somme de contrôle du package a échoué.", - "c12c62dd767caf90d62356b47349d871": "Impossible d'obtenir une barre de progression pour ce plugin.", - "8fde9a929c417549ed2f9144fa68c0d2": "Le nom de la règle ne peut être composé que de lettres, de chiffres et de soulignements!", - "868a6f377594831b39e91745c7807e28": "Le nom de la règle Spécifiez n'existe pas![{}]", - "5d9cf1940fae6317dd43a7f1b5ca8f36": "Le nom de la règle Spécifiez déjà![{}]", - "473bc9055d76e148db4d28e7bec67295": "Le nom de la règle doit être supérieur à 3 octets", - "5b097df78b1d8c65d8b524354029f114": "Le suffixe de fichiers ne peut pas être vide", - "496e2dfba11ca4381ef6277e6e9a62dc": "Le répertoire ne peut pas être vide", + "b7ad022c6ce9435c43c6760c8ba89b20": "Ca peut", + "5d39c57e28ab85457e4949306be619e8": "La connexion du serveur CA a chronométré, veuillez réessayer plus tard.", + "721eb0b3ea85b39c22f16d6dfc84bc32": "Le nom de domaine n'appartient pas à ce fournisseur de services DNS.Veuillez vous assurer que le nom de domaine est correctement rempli.", + "b5366a9c53b455fdf8a552c205ca9021": "La connexion du serveur DNS a échoué.Veuillez vérifier si la clé est correcte.", + "4de3dc0403846edfe5ff520837e2bbe5": "La signature a échoué, l'ensemble de domaines exact du nom de domaine: (. +): {} A dépassé le nombre hebdomadaire d'émissions répétées!", + "30c0b6ae1acf6137b588473814f3330d": "La signature a échoué, l'IP du serveur actuel a atteint la limite de création jusqu'à 10 comptes toutes les 3 heures.", + "797e2e43e3fc3737891adc8ab4a1655c": "La vérification a échoué, le nom de domaine n'a pas été résolu ou la résolution n'a pas pris effet.!", + "9efd01f346301888216d77d35ec156cf": "Échec de l'authentification, l'erreur de résolution du nom de domaine ou l'URL de vérification n'a pas pu être accessible!", + "6c23a7d25119c77017d1aa04761fefe8": "Échec de la connexion au serveur CA, veuillez réessayer plus tard.", + "b7a370078ae6520cde883252890195cf": "Nom de domaine non pris en charge {}, veuillez vérifier si le nom de domaine est correct!", + "1593706a4e3794c75129c8347021f0c5": "Le nom de domaine {} n'a pas trouvé d'enregistrement de résolution.Veuillez vérifier si le nom de domaine est résolu.!", + "1d80008b0cc4936ab73047baf061c84e": "Si un enregistrement de résolution TXT valide n'est pas trouvé dans le nom de domaine {}, veuillez vérifier si l'enregistrement TXT est correctement analysé.S'il est appliqué par DNSAPI, veuillez réessayer en 10 minutes.!", + "81dab277ae106f35a118916e25f3f026": "J'ai trouvé le mauvais enregistrement TXT sur {}: {}, veuillez vérifier si la résolution TXT est correcte.S'il est appliqué par DNSAPI, veuillez réessayer en 10 minutes.!", + "b1bc7e763e87ef08d753a0676a0d5361": "Ce nom de domaine n'existe pas sous ce compte DNSPOD.L'ajout d'analyse a échoué.!", + "43901eff07fff70732a4e1d6a732920b": "Connexion Salong Out, le serveur CA n'a pas pu accéder à votre site Web!", + "7cb06b776259c13fa73d3be5577df74c": "Le nom de domaine {} est actuellement nécessaire pour vérifier l'enregistrement CAA.Veuillez résoudre manuellement le record de la CAA, ou réessayer après 1 heure.!", + "09c36cbe592612c2546e60652f2d6964": "Délai de vérification, veuillez vérifier si le nom de domaine est correctement résolu.Si DNS est résolu, la connexion entre le serveur et laissez", + "e10beec48a4a4b433b2fec2eaff64671": "Plus de 5 échecs de vérification en 1 heure, l'application est temporairement interdite, veuillez réessayer plus tard!", + "239067c8e0586af7c09738e8240438fb": "Le renouvellement a échoué et le répertoire du certificat n'existe pas.", + "c7664672bf11463a4cc40c61aeca77f1": "Le renouveau a échoué, manquant Account_Key.", + "3f56bc50f098e641bb3d42e2d4255cbe": "Prêt à postuler pour SSL, nom de domaine {}", + "bd6995f087c0dacaecd470ca10539a2b": "La liste des noms de domaine appliqués ne peut pas être vide.", + "3b5e16d8f5e1b88c78e494e6601a4d01": "Réussir, veuillez résoudre manuellement le nom de domaine", + "cf6b24b05942cd0c3723d7a4c25e6138": "| - certificat de sauvetage ..", + "bbb21c1842b512148f687ea068553c85": "| -Setting la configuration de renouvellement automatique.", + "c06d0b48f82d74d3c2854dabdba12d93": "| -La application est réussie et elle est automatiquement déployée sur le site Web!", + "569488d54cbcce1331896e4254f63a92": "Application réussie.", + "1851141907c561e6ac67cba17e549232": "| -Initialisation du protocole ACME ...", + "78e67927014eab1b84eb285b6057fca6": "| - Comptering compte ...", + "4896fdcb74c0e04522c8d3d89d08d569": "|-Citer les informations de vérification ...", + "1016ed461618afd2dde9a4a709a4d080": "| -Arecriner les informations de vérification à l'avant, attendez que l'utilisateur résoudre manuellement le nom de domaine et terminer la vérification ...", + "81a3b1828b60659bc3d3c9711e66f0ba": "| -User soumet une demande de vérification ...", + "f147fc272d665cd009e1108c5fb6993d": "| -Requestation de CA pour vérifier le nom de domaine [{}] ...", + "4c699430325d31db3d7b43b0a0999364": "| -Get CA Vérification Résultats [{}] ...", + "2b7dd2a937ababf46efb11073787664c": "| - tous les noms de domaine sont vérifiés et le RSR est envoyé ...", + "1de253d3eb460e60480626694092d89e": "| -Getting Certificate Content ...", + "a0c16d2f8e2aeba9dd9a3b040861ff39": "L'acquisition du certificat a échoué, veuillez réessayer plus tard.", + "89edc2a5e6ccecc2bdbdd1f9536fb90a": "| -Error: {}, a quitté le processus d'application.", + "94417e0c15f634f59ce15128ef146686": "| -Error: {}, quittez le processus d'application.", + "03268bb5fa60cf57ac7c30f1f99dab01": "| -Exité le processus de demande!", + "be2d0d9f1a9d04ff22b70bd5bee9b8ef": "Une erreur s'est produite lors de la demande d'un certificat à l'aide de DNS", + "409bd1860bf065c68921473fc2266347": "| -Adding Resolution Enregistrement, nom de domaine [{}], valeur d'enregistrement [{}] ...", + "8b2ee088303a8001eaedb8c62e3de7e3": "| -ATTempt pour vérifier le résultat de la résolution, nom de domaine [{}], valeur d'enregistrement [{}] ...", + "a11fba95c84fff590acd7dbdea4528e6": "| -Request ca pour vérifier le nom de domaine [{}] ...", + "676e1a4f8e4561ad55045461f3421d62": "| -Check CA Vérification Résultats [{}] ...", + "d60d5b998a8ef802ba7f5b5ed343e256": "| -Un erreur s'est produite, réessayez [{}]", + "71087be1722815599ebecd0fd0f58b5e": "| - Contenu de certificat de sortie ...", + "6d1e7a222bfe888debd080a117490c9d": "| -Cléaring History Resolve [{}]", + "77619ceb7742d8a8f87e52b02592d873": "La signature a échoué, nous n'avons pas pu vérifier votre nom de domaine:

1.Vérifiez si le nom de domaine est lié au site correspondant.

2.Vérifiez si le nom de domaine est correctement résolu au serveur, ou si la résolution n'est pas pleinement efficace.

3.Si votre site a une configuration proxy inverse, ou si vous utilisez un CDN, veuillez le désactiver en premier.

4.Si votre site a une redirection 301, veuillez le désactiver d'abord

5.Si les vérifications ci-dessus confirment qu'il n'y a pas de problème, veuillez essayer de modifier le fournisseur de services DNS.

", + "4d6822ed3bd01f379f2ab4b1e68068d7": "| -Il n'y a actuellement aucun certificat à renouveler.", + "b74c00ca5fee122c49cd66ce3d91b2cf": "| -Renewal a échoué:", + "0b1c93d38c86c8d379886293cdf8ba66": "Tâche annulée!", + "d5ef96e383d376beeec28da7acfea516": "Télécharger le fichier", + "f24f6c5f5841340f898a6baaa6478bcd": "Télécharger le fichier {}", + "9fdd777388a418cef77bce46c1b2511a": "Le format de compression spécifié n'est pas pris en charge!", + "4fa407ee74026903dc3013d0b2471eac": "La compression a réussi!", + "ece43dcaac9352f58c422e500266a927": "Le non-compression a réussi!", + "ac4eb62573e34c36ff426c8a6360c781": "Erreur de sauvegarde!", + "438ca4ffcf6fbd44ec129e73a24f0deb": "Sélectionnez le fichier SQL / GZ / ZIP!", + "0edfb4a54d6cf45209a6c7929b8b9919": "Base de données importée avec succès!", "f6039d44b29456b20f8f373155ae4973": "Nom d'utilisateur", "3544848f820b9d94a3f3871a382cf138": "Nouveau mot de passe", "6b1bc4e672d58d46d23502dcd78129be": "Effacer les informations du journal", @@ -706,159 +849,18 @@ "5093d954f09d473d091355fe292920a8": "| - limite d'entrée annulée", "e0b1cb1725c8fb29d42fa69d679a73ea": "| -Domain Limite annulée", "968c7b9246b5ab3d3e7659cea211a20b": "| -Ip Limite d'accès annulé", - "b7ad022c6ce9435c43c6760c8ba89b20": "Ca peut", - "5d39c57e28ab85457e4949306be619e8": "La connexion du serveur CA a chronométré, veuillez réessayer plus tard.", - "721eb0b3ea85b39c22f16d6dfc84bc32": "Le nom de domaine n'appartient pas à ce fournisseur de services DNS.Veuillez vous assurer que le nom de domaine est correctement rempli.", - "b5366a9c53b455fdf8a552c205ca9021": "La connexion du serveur DNS a échoué.Veuillez vérifier si la clé est correcte.", - "4de3dc0403846edfe5ff520837e2bbe5": "La signature a échoué, l'ensemble de domaines exact du nom de domaine: (. +): {} A dépassé le nombre hebdomadaire d'émissions répétées!", - "30c0b6ae1acf6137b588473814f3330d": "La signature a échoué, l'IP du serveur actuel a atteint la limite de création jusqu'à 10 comptes toutes les 3 heures.", - "797e2e43e3fc3737891adc8ab4a1655c": "La vérification a échoué, le nom de domaine n'a pas été résolu ou la résolution n'a pas pris effet.!", - "9efd01f346301888216d77d35ec156cf": "Échec de l'authentification, l'erreur de résolution du nom de domaine ou l'URL de vérification n'a pas pu être accessible!", - "6c23a7d25119c77017d1aa04761fefe8": "Échec de la connexion au serveur CA, veuillez réessayer plus tard.", - "b7a370078ae6520cde883252890195cf": "Nom de domaine non pris en charge {}, veuillez vérifier si le nom de domaine est correct!", - "1593706a4e3794c75129c8347021f0c5": "Le nom de domaine {} n'a pas trouvé d'enregistrement de résolution.Veuillez vérifier si le nom de domaine est résolu.!", - "1d80008b0cc4936ab73047baf061c84e": "Si un enregistrement de résolution TXT valide n'est pas trouvé dans le nom de domaine {}, veuillez vérifier si l'enregistrement TXT est correctement analysé.S'il est appliqué par DNSAPI, veuillez réessayer en 10 minutes.!", - "81dab277ae106f35a118916e25f3f026": "J'ai trouvé le mauvais enregistrement TXT sur {}: {}, veuillez vérifier si la résolution TXT est correcte.S'il est appliqué par DNSAPI, veuillez réessayer en 10 minutes.!", - "b1bc7e763e87ef08d753a0676a0d5361": "Ce nom de domaine n'existe pas sous ce compte DNSPOD.L'ajout d'analyse a échoué.!", - "43901eff07fff70732a4e1d6a732920b": "Connexion Salong Out, le serveur CA n'a pas pu accéder à votre site Web!", - "7cb06b776259c13fa73d3be5577df74c": "Le nom de domaine {} est actuellement nécessaire pour vérifier l'enregistrement CAA.Veuillez résoudre manuellement le record de la CAA, ou réessayer après 1 heure.!", - "09c36cbe592612c2546e60652f2d6964": "Délai de vérification, veuillez vérifier si le nom de domaine est correctement résolu.Si DNS est résolu, la connexion entre le serveur et laissez", - "e10beec48a4a4b433b2fec2eaff64671": "Plus de 5 échecs de vérification en 1 heure, l'application est temporairement interdite, veuillez réessayer plus tard!", - "239067c8e0586af7c09738e8240438fb": "Le renouvellement a échoué et le répertoire du certificat n'existe pas.", - "c7664672bf11463a4cc40c61aeca77f1": "Le renouveau a échoué, manquant Account_Key.", - "3f56bc50f098e641bb3d42e2d4255cbe": "Prêt à postuler pour SSL, nom de domaine {}", - "bd6995f087c0dacaecd470ca10539a2b": "La liste des noms de domaine appliqués ne peut pas être vide.", - "3b5e16d8f5e1b88c78e494e6601a4d01": "Réussir, veuillez résoudre manuellement le nom de domaine", - "cf6b24b05942cd0c3723d7a4c25e6138": "| - certificat de sauvetage ..", - "bbb21c1842b512148f687ea068553c85": "| -Setting la configuration de renouvellement automatique.", - "c06d0b48f82d74d3c2854dabdba12d93": "| -La application est réussie et elle est automatiquement déployée sur le site Web!", - "569488d54cbcce1331896e4254f63a92": "Application réussie.", - "1851141907c561e6ac67cba17e549232": "| -Initialisation du protocole ACME ...", - "78e67927014eab1b84eb285b6057fca6": "| - Comptering compte ...", - "4896fdcb74c0e04522c8d3d89d08d569": "|-Citer les informations de vérification ...", - "1016ed461618afd2dde9a4a709a4d080": "| -Arecriner les informations de vérification à l'avant, attendez que l'utilisateur résoudre manuellement le nom de domaine et terminer la vérification ...", - "81a3b1828b60659bc3d3c9711e66f0ba": "| -User soumet une demande de vérification ...", - "f147fc272d665cd009e1108c5fb6993d": "| -Requestation de CA pour vérifier le nom de domaine [{}] ...", - "4c699430325d31db3d7b43b0a0999364": "| -Get CA Vérification Résultats [{}] ...", - "2b7dd2a937ababf46efb11073787664c": "| - tous les noms de domaine sont vérifiés et le RSR est envoyé ...", - "1de253d3eb460e60480626694092d89e": "| -Getting Certificate Content ...", - "a0c16d2f8e2aeba9dd9a3b040861ff39": "L'acquisition du certificat a échoué, veuillez réessayer plus tard.", - "89edc2a5e6ccecc2bdbdd1f9536fb90a": "| -Error: {}, a quitté le processus d'application.", - "94417e0c15f634f59ce15128ef146686": "| -Error: {}, quittez le processus d'application.", - "03268bb5fa60cf57ac7c30f1f99dab01": "| -Exité le processus de demande!", - "be2d0d9f1a9d04ff22b70bd5bee9b8ef": "Une erreur s'est produite lors de la demande d'un certificat à l'aide de DNS", - "409bd1860bf065c68921473fc2266347": "| -Adding Resolution Enregistrement, nom de domaine [{}], valeur d'enregistrement [{}] ...", - "8b2ee088303a8001eaedb8c62e3de7e3": "| -ATTempt pour vérifier le résultat de la résolution, nom de domaine [{}], valeur d'enregistrement [{}] ...", - "a11fba95c84fff590acd7dbdea4528e6": "| -Request ca pour vérifier le nom de domaine [{}] ...", - "676e1a4f8e4561ad55045461f3421d62": "| -Check CA Vérification Résultats [{}] ...", - "d60d5b998a8ef802ba7f5b5ed343e256": "| -Un erreur s'est produite, réessayez [{}]", - "71087be1722815599ebecd0fd0f58b5e": "| - Contenu de certificat de sortie ...", - "6d1e7a222bfe888debd080a117490c9d": "| -Cléaring History Resolve [{}]", - "77619ceb7742d8a8f87e52b02592d873": "La signature a échoué, nous n'avons pas pu vérifier votre nom de domaine:

1.Vérifiez si le nom de domaine est lié au site correspondant.

2.Vérifiez si le nom de domaine est correctement résolu au serveur, ou si la résolution n'est pas pleinement efficace.

3.Si votre site a une configuration proxy inverse, ou si vous utilisez un CDN, veuillez le désactiver en premier.

4.Si votre site a une redirection 301, veuillez le désactiver d'abord

5.Si les vérifications ci-dessus confirment qu'il n'y a pas de problème, veuillez essayer de modifier le fournisseur de services DNS.

", - "4d6822ed3bd01f379f2ab4b1e68068d7": "| -Il n'y a actuellement aucun certificat à renouveler.", - "b74c00ca5fee122c49cd66ce3d91b2cf": "| -Renewal a échoué:", - "140bda69874872f8402052c613c0b3b9": "e-mail de test d'alerte AAPANEL", - "76a1ec4a3fcdc304394ff14dc90f8072": "Le nombre de threads de panneau doit être compris entre 1 et 1024", - "dd7e82b5fb3c67e3e41d96f22ba838fd": "Nouveau port de panneau", - "40624aabb99173387dd6d575759b12db": "Le paramètre CERTPEM est manquant!", - "37db9679113eef382992a1478f1b79ff": "Le paramètre Privatekey est manquant!", - "d2174fc17fcd785706114088b84dbbce": "L'URL de connexion temporaire a été générée", - "b5101eb6e685091719013d1a75756a53": "\\ 1", - "0bfe47819da04212a33dac83b71430e8": "\\ 2", - "946fb31f804cdde218dbf05d7183e94e": "MD5 cohérent!", - "d83dadd8fcee6c014db8af454bc279fc": "Télécharger avec succès", - "1336bbfcadd9119f86ecd48c2d9fb770": "La connexion de la base de données est anormale.Veuillez vérifier si l'autorité de l'utilisateur racine ou les paramètres de configuration de la base de données sont corrects.", - "ee102508d210854b6fc7da18e598140b": "La détection de mot de passe générée a échoué!", - "6e72fc97e2f1be35ae40ca21d6b1df38": "La base de données de ce WordPress n'a pas été trouvée, cela peut être causé par le fait que vous avez supprimé manuellement la base de données", - "6df8e9d3a4e149ff12445d981f6fc244": "Réinitialiser le mot de passe réussi", - "f748d4e467e9f4f27540b6f5ce5b1ef8": "Cette fonctionnalité ne prend actuellement en charge que Nginx", - "9747bb4f34180afd2f9a681397b269fb": "Nettoyé avec succès!", - "015d337f0646fe4b8a89b30041436e7f": "Mis à jour avec succès!", - "321b336d92b3e894060637528499dcf9": "Le déploiement a réussi!", - "1850193ca4b37a25ee94db903eddc16f": "Le déploiement a échoué!", - "b390405514d6291f511c9f3a4fb31249": "L'ID du site doit être numérique", - "e650b17a0b833e3bcdd8e859b37ce94e": "Cette base de données n'a pas été trouvée!", - "a0adaeeb3642584bd931c757b6f71d78": "L'optimisation PHP FPM a réussi", - "f11ab236591dc778c39c9429e141dba2": "L'optimisation MySQL a réussi", - "d145648d4281cb3266714c5986bcab8b": "La configuration du cache Nginx Fastcgi existe déjà", - "9c373c2796e866dc590f9dc7c80609da": "Erreur de configuration Nginx Fastcgi!", - "2750e686fcc97deec0122789a059edbd": "Configuration du cache Nginx Fastcgi complète", - "615681ddc1b0efb9f6d434adc1451bb7": "La configuration du cache nginx init fastcgi existe déjà", - "a61c53dff88925e428f2a295b18ac807": "Erreur de configuration nginx init fastcgi!", - "28b386f7ab5957184b60f47c0e540d68": "Ningx init Fastcgi Cache Configuration complète", - "b7082bd55a134bb3a142570572e1c469": "La configuration FastCGI n'existe pas dans la configuration du site Web", - "c0ff8a4b4b8f68c4ba7df88588291590": "La configuration FastCGI existe déjà dans la configuration du site Web", - "e3a6621c5ea036c8f82d3f2d343f1bc8": "Erreur de configuration FastCGI du site Web!", - "4c87778ab71a4e47170ccafd6edb4922": "Site Web FastCGI Configuration complète", - "90d0982f5d024da53b21f69d3f0c8cbb": "La base de données n'existe pas!", - "b376175f0c97d2ab7c37e44ec3b3a1b9": "MySQL5.1 non du support!", - "0161305479129bbe47bb020605a15d40": "Configurer réussi!", - "5c9b599b99f7a169b9cd25f7045eaac5": "Succès de synchronisation!", - "b6601359f1ae1067d4c4d271b7407639": "同步 成功 1!", - "10a1984f6c5b935c5d8c7d4b4345e1e5": "同步 成功!", - "86da84e8e3aacf73ee745caee5904268": "同步 失败!", - "8ed30fe61ac59c9e1cb4a75d9a48d477": "Créé avec succès!", - "330e51da1228a070540f82eb8e78155c": "Configurez avec succès!", - "7ac73ef676faaa8a5f8e3924b4d151e3": "Le nom d'utilisateur ou le mot de passe ne peut pas être inférieur à 3 caractères", - "88d8a4565feba5ad270c00e85564b96d": "OpenLitespeed n'est actuellement pas pris en charge", - "c1f8cf125da0d6db1c4e0d09033c9ddd": "Veuillez saisir un compte ou un mot de passe", - "bd7fb7b4280616cbe5de49eb1ee8cc3a": "Veuillez saisir le répertoire à protéger", - "8c48114518721e3966cd4553a0cee705": "Veuillez saisir le nom", - "dd65d82f6868cfa127f86e5658674829": "La protection du mot de passe du site a été définie, veuillez annuler puis définir.Répertoire du site -> Accès au mot de passe", - "1cc6b0e84b90d0ca0b863fccc0f33b36": "Le répertoire a été protégé", - "b7526fc6f8b21e71ea1e290a982df4c9": "Créé avec succès", - "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2 ne prend pas en charge Multiphp!", - "69be778c38b9edc0ab3040c478c39370": "Erreur:% s
2. Il est recommandé de choisir une infrastructure officielle et fiable pour éviter les pertes inutiles.", - "475dfbee8626a4d939cf631aad174de3": "Balayage:{}", - "71c7dfa944a5a50f281c0acb232dcdeb": "Balayage:{}...", - "0c29ac6d8e69451c80f8ef857e499ab2": "Répertoires sensibles trouvés {}", - "53872e73575a306598c0c4060b44181c": "L'image existe dans un répertoire sensible: {}, peut être utilisé par les attaquants pour voler des données sensibles ou un code source, conduisant à d'autres problèmes de sécurité.", - "6fe56120a0502f9678988d756dd27682": "1. Entrez le conteneur déployé à l'aide de l'image et supprimez le répertoire sans affecter l'entreprise
2. S'il ne peut pas être supprimé, restreignez l'accès au répertoire", - "6b2f9867ccd6f3e6f06726c06ed684d5": "Fichiers sensibles trouvés {}", - "6684913201a60be0b5e89c4dfb210719": "Trouvé Bashrc Backdoor {}", - "9a9f27d5f9f8c056fff7986c87a94c30": "Il a été constaté que l'image a une porte dérobée bashrc: [{}], contenu de code malveillant:
{}", - "d8a828116070b9d92315ca309cca1991": "1. Entrez le conteneur déployé à l'aide de l'image et supprimez le code malveillant sous le fichier
2.Vérifiez si le conteneur a été envahi et mettez à jour le jeton d'accès ou le mot de passe du compte de l'entreprise dans le conteneur
3.Il est recommandé de remplacer l'image officielle ou d'autres conteneurs de déploiement d'image de confiance", - "e1439f3f7d25d378078d513a82a3fa87": "Fichier de porte dérobée trouvé {}", - "9ede9d4bd542eedf78e39b0acf0206e3": "Il a été constaté que le fichier de porte dérobée Bashrc [{}] existe dans l'image, et le contenu du code malveillant est:
{}", - "686765b4612ecd8f774648db29a1541d": "Cron Backdoor a découvert {}", - "390bdc0b3c37a56ede9467b0c220a3b6": "Il a été constaté que la porte dérobée Cron [{}] existe dans l'image, et le contenu du code malveillant est:
{}", - "caea084281a3cb2515e5618cd3856163": "Détermique du système trouvé: {}", - "d04061273caa56d5a0c3d74f3e9fd482": "Il a été constaté que le fichier de porte dérobée SystemD [{}] existe dans l'image, et le contenu du code malveillant est:
{}", - "fc76e0fe415c49cc1c09bf76035fc4e9": "Trouvé SSHD Backdoor {}", - "00b2409f52ef5bc56afe29ccbe5cfa2c": "Found le sshd Soft Link Backdoor: {}, le fichier frappe la fonction malveillante [exe = {}; link_file = {}]", - "e747da31a54cd71fb1a2860cae0f9f77": "Trouvé le TCPWrapper Backdoor {}", - "a2b09164c8d23894736bcc6a646861e0": "Il a été constaté que le fichier de porte dérobée TCPWrapper [{}] existe dans l'image, et le contenu du code malveillant est:
{}", - "a7fd9f6b190b8531039376fbbda5f482": "Les utilisateurs se sont révélés à risque d'évasion {}", - "5d46ed5f4af3f30cfcc8bd66942f93b4": "Le nom d'utilisateur {} peut compléter l'échappement du conteneur via la commande [{}], permettant à l'attaquant d'obtenir des droits d'accès à l'hôte ou à d'autres conteneurs.Contenu malveillant:
{}", - "4ca0a18aa36a60613104cacdae514dec": "1. Il est recommandé de supprimer l'image ou de ne plus l'utiliser
2.S'il existe déjà une entreprise utilisant l'image, entrez l'environnement de conteneur et supprimez le contenu de l'utilisateur {} dans le fichier / etc / sudoers.", - "611afea08ae3b216a34dfde4c143f46c": "不 支持 的 系统 版本", + "c0ef08aa7bd6276137ccd491a8041223": "Il n'y a pas de volume à sauvegarder", + "584e35dd4a55da88bd232ac7a19b9b95": "La tâche de sauvegarde a été créée avec succès.", + "0b08674e1c87f3f8508a4ae9b0c160f8": "Échec de la création d'une tâche de sauvegarde {}", + "2a0f93407bb61e2403ccd032cbc64e3e": "Supprimer avec succès", + "13d829d3f2b78c971207d944f2a96c55": "Échec de la suppression du fichier, raison: {}", "0af5787b053c4bf5dbe610731f7d4199": "Le chemin du fichier ne peut pas contenir de caractères chinois!", "719ee030d81490fc055af0c4426aacb9": "Échec de la détection: {}", "ee3936ffdc910e2cb8578ad1fae322f0": "Détection passe!", @@ -1983,136 +2029,64 @@ "428ed92bf9d3198f4c9885c11fdb2be3": "Ces modèles réussissent: [{}]
Ces modèles échouent: le nom du modèle existe déjà ou est mal formaté [{}]", "70975749d256333f1b3b62c864ca265a": "Ne pas modifier!", "2360e954ae9eecac28b2a3edad5e8ce0": "Modifiez avec succès!", - "e8ad47bc3f119a4d4072f5cb114676f4": "Le nom de l'image ne peut pas être vide", - "e5e3829984a9637afc2546ad2c87d83b": "Le chemin du miroir ne peut pas être vide", - "e5f40049c6d67bd11d9a1a1889f5b84a": "L'ID d'image ne peut pas être vide", - "5e022f79dcc774c79bc55ee28774e2e7": "Le nom de l'image ne peut pas contenir /", - "c00be60f9f3f7d747aadfdb124e855ef": "Enregistré avec succès à: {}", - "cb1f8d99b492340cf701101c87884a8c": "Impossible d'exporter l'image!", - "afaa91d141ded3e37b8b9ebf8bc31c51": "L'exportation de l'image a échoué et la connexion à Docker a expiré.Veuillez essayer de redémarrer Docker et réessayer!", - "5b980f2e1c82c04c91376d55d4306a91": "Échec de l'exportation de l'image!
{}", - "e5e8c7cac8b71e94280fa08301d21e78": "Veuillez saisir le chemin d'image!", - "5441400ea3bd16cffdf70c46c34f61d4": "Échec de l'importation de l'image.L'extension de fichier doit être.tar!", - "67b97e4746a2faf5d59206a80bb28649": "L'importation d'image a réussi! {}", - "deceb44868a29ae5d579114348736cbb": "L'importation d'image a échoué et le répertoire temporaire du conteneur n'a pas été créé.Veuillez vérifier si le logiciel de protection a un enregistrement d'interception!", - "8eb05618b0f04e727b0685427fd49c8e": "Échec de l'importation d'image!
{}", - "721aa02577670c1049ea9d12caa8938c": "Veuillez saisir le chemin Dockerfile correct!", - "736df9a7c491f3299efdeb9f7d7e9e0f": "Construisez l'image avec succès!", - "6e85568dae869303ca7a4486f55458a3": "Build a échoué, la connexion a expiré", - "5bb301b85cc1f42e56174d3d9a4c0286": "Build a échoué!{}", - "f51455b323ec2db8004c812001043330": "Build a échoué! Le dockerfile spécifié n'a pas été trouvé", - "8e1b9c9b75950d0feba6813d32766e61": "Build a échoué! {}", - "eba0ec758a6464a20c14c0f23ceee62e": "Miroir supprimé avec succès!", - "8dd326278d09a3ac4bc56cf725c8f262": "La suppression a échoué et l'image peut ne pas exister!", - "11ead921bc0e3d94f1f9e0db4bf8ed8d": "L'ID d'image est utilisé dans plus d'une image, forcez l'image à être supprimée!", - "43993616c7433350755d30a3b4d065dd": "L'image est utilisée.Veuillez supprimer le conteneur avant de supprimer l'image!", - "d6992c3fcf2269c249cd5f18f1ac2c11": "Échec de la suppression de l'image!
{}", - "0c6c071174fde5b47c9eef8088c17a89": "Échec de la suppression de l'image, la connexion à Docker a chronométré, veuillez redémarrer et réessayer!", - "a3ba80a8e1e0d9af94c809e909431b3c": "Échec, se connecter au référentiel [{}] Échec, veuillez essayer de vous connecter à ce référentiel! \\ r \\ n", - "cc40077b6ee61fbfa35713a21e8eb866": "bt_failed, connectez-vous au référentiel [{}] échoué, veuillez essayer de vous connecter à nouveau à ce référentiel!{}", - "60b488c60b6747bf34a86a69740b636d": "L'image poussée ne peut pas contenir [/], veuillez utiliser le format suivant: Image: V1 (Nom de l'image: version)", - "44dbec830b87eb037e8fcbb0e1b56160": "Impossible de pousser au référentiel public docker!", - "b4c46001066c912344e3bdb0df86e848": "Le référentiel [{}] Login a échoué!", - "0ebfb094c6482acb049e0dd0d3107307": "Échec de la poussée, erreur d'étiquette d'image, veuillez entrer comme: v1.0.1", - "d26bdd6e86002ed92089dc71347822ce": "Push a échoué, n'avez pas la permission de pousser à ce référentiel!", - "82058092ad7d2c7aa5e2f012b6544e59": "Échec poussé! {}", - "2b228d4775d23d2725ec227ba648bd43": "Poussez avec succès, Mirror: {}", - "9e396f640866ded9c3a47268f96a36e3": "Tirer l'image, veuillez patienter ... \\ r \\ n", - "7e5f4d488d318dc7c235095c8456f5e4": "Tirez ou recherchez des images ... \\ r \\ n", - "5a7377f73fc144fd961e8b2ffeba66af": "tire a échoué! \\ r \\ n", - "97a6dfe3a273202edffe31af7a43e220": "Impossible d'utiliser la station de miroir par défaut pour tirer l'image!Essayant d'utiliser une autre station de miroir pour vous tirer, veuillez patienter ... \\ r \\ n", - "484616540fc726ef4f52e97a1c2f0fef": "Échec de l'image! \\ R \\ n", - "1cd77329b2bddfb200e656214b1fdf32": "N'a pas réussi à tirer l'image!", - "63c709b9759af42fef890d539d822575": "Full a échoué! {} \\ R \\ n", - "b4aba972332d1f3728171905a033fb99": "Image pull [{}] réussi \\ r \\ n", - "2fae21ffd185d9e9730b39bc7de23852": "Image tirée avec succès!", - "8a635442294fd90195a43d9a1672fc3f": "Échec de l'image!", - "711de72d616e7abb29dfa919244d382d": "Échec de la traction, l'image n'existe pas ou l'image peut être une image privée.Vous devez entrer le mot de passe du compte DockerHub! \\ R \\ n", - "e9511e26273da5b4537b4683668b548e": "Full a échoué! {} \\ r \\ n", - "05d13bf5dcc37754db74b2356e6e117c": "Full a échoué, il n'y a pas une telle image dans le référentiel! \\ r \\ n", - "714841af7f3de6c8d99ba03f4cee0ee5": "Échec de la traction, le format d'image est faux, comme: nginx: v 1! \\ r \\ n", - "2d941c4fa4da32ccafa8670a07f23c1d": "L'image a été tirée avec succès.", - "5282194697748d9fcd1ccd8a90428424": "Il n'y a peut-être pas cette image miroir.", - "d6facab17334983e7c6f8c561c239820": "Échec de l'image, il s'agit d'une image privée, veuillez saisir le mot de passe du compte!", - "b507deb7848d566982b339265c8f5482": "Échec de l'image à tirer

Raison: {}", - "e90811ef0a60b6d299b4e1064d7788d0": "Pas d'images inutiles!", - "f343313c101aeaff0516990ebea3dcef": "Échec de la suppression! {}", - "90ecd58b3feb0b2be11f0af685ad39fe": "La suppression des images inutiles a échoué et la connexion à Docker a expiré.Veuillez essayer de redémarrer le service Docker et réessayer!", - "4097585e32152eb74bbee5ab8c463718": "Le service Docker s'exécute anormalement, redémarrez et réessayez!", - "26a0931677e111565f3ff7d059b94d8b": "Le paramètre de passerelle est mauvais, veuillez entrer une passerelle qui correspond au sous-réseau: {}", - "def2ba1ce0e4d77692c14e5b984636fa": "Erreur de format d'adresse de sous-réseau, veuillez entrer par exemple: 172.16.0.0/16", - "716eeeb727fd667635ccf1d18891d46e": "Erreur de format de plage IP, veuillez saisir la plage IP appropriée pour ce sous-réseau:", - "e310a873e7812c7f994d482604061fee": "IP Range [{}] existe déjà!", - "db88b911ea66744c24b22efcafef2101": "La version du noyau système est trop faible, veuillez mettre à jour le noyau ou choisir un autre mode réseau", - "9cebb294a44695984eaaf2134df63a51": "Le nœud actuel n'est pas un essaim et doit être configuré avant de pouvoir être utilisé", - "85ac438bd64f13e2ad61cf60e5ade3d3": "Impossible d'ajouter le réseau!{}", - "640520ffb5d9c01336710bad3ea6d7ff": "Ajout du réseau avec succès!", - "87574a543563d2e037b87a6cf705e3ff": "Le réseau par défaut du système ne peut pas être supprimé!", - "23b6d9d6c36088deb928efad7fb9b63b": "Le réseau ne peut pas être supprimé pendant qu'il est utilisé!", - "2aa70dad9bff94a855fdde3fc113e6c5": "Supprimer échoué!{}", - "8f512551c7ddf61331c3d068e80c642c": "Il n'y a pas de réseaux inutiles!", - "08efe6a4e12437b79225c8b59fd710eb": "L'ID du réseau ne peut pas être vide", - "a636381ee5e6d6d021fff745ca132905": "L'ID du conteneur ne peut pas être vide", - "31a75a8d220d37dc4a7ea28d0f24cc19": "La déconnexion du réseau a réussi!", - "a2b9895fca7698902da9319b52392366": "ID de conteneur: {}, n'existe pas!", - "c81f03a558307d5aaf3b339af28e04ff": "ID de réseau: {}, n'existe pas!", - "12a90fe85b8863e1dea43284988d7750": "La déconnexion du réseau a échoué!{}", - "6226d2fef3bf047236f0f3a57dcd71fb": "Connexion du réseau réussi!", - "d882b8375782b1bc56ccaf84ed27d20b": "Échec de la connexion au réseau!{}", - "221d1ea3c23f430e03a4486dca865014": "Le conteneur n'existe pas, veuillez actualiser le navigateur et réessayer!", - "7e88e25ea6c628c2d03c526c04af3eed": "Échec de l'obtention du statut de conteneur:", - "ae178e022cf2fe30f402145572528de8": "Les noms de volume ne peuvent pas compter de 2 caractères!", + "7c6f761019365f8a5cfb2fb54d9e199d": "info.json est téléchargé!", + "10066fce84fe34e9cc33e0338532988b": "Le téléchargement info.json a échoué!", + "0672e579ab0e3454713eb683ddcc4859": "{} Téléchargement a échoué, veuillez résonner!", + "8e790e81fffa7f51d099f710bd8f82cf": "{} test de fichier YML a échoué, {}", + "371acfea202589c4efd6724888f66595": "{} Télécharger terminé!", + "51cf61e34b3f71ce1e430cdfcf129b80": "{} Décompression a échoué", + "c59b65890496cdf2b14d127a1f76f73d": "{} extrait avec succès", + "0117718c35c7a16a62de5c259e1d35ee": "La création du répertoire a échoué pour les raisons suivantes: {}", + "374e3fe41b55a0b29420e455fb514dd6": "Le volume de stockage a été créé", + "6d0d40f64f89227daf345eb2257638e8": "{} ne peut pas contenir d'espaces", + "a00b49ace55de909015029a0d6d6096f": "{} ne peut pas être nul!", + "54498312bb8f97ce07a9a0b0b47cfad1": "Le port serveur [{}] est occupé, veuillez passer à un autre port!", + "47b74e08252747225c49ea0cb011c79e": "Le démarrage du projet a échoué {}", + "838089af9a2941a49862f342c056a8ca": "Commencez à créer le projet", + "9b149598fb30f54fec9e82a3d121a464": "{} existe déjà, veuillez changer le nom du projet", + "634370637f6a5b88940c75f826953d0c": "Le répertoire du projet utilisateur n'a pas réussi à créer, les détails: {}", + "f7b14d3f642d711a23d5a0cca725fd0d": "Échec de la copie du répertoire du projet.Détails: {}", + "7bdaccb3d20432c5e0150862ab1cc3f3": "Nom des paramètres manquants", + "9b90b5b49486a61d9b0e6dbbbcb56cad": "Paramètres manquants conteneur_info", + "b23d7110e9bf6539b4964afe0d4934e2": "Le regroupement existe déjà", + "a90ca6939fe71693c145f50596c6e0e6": "Le conteneur {} a été ajouté par le groupe {}!", + "e3cf7e2f2d14257e7ea33657b135d534": "Ajouter un échec: {}", + "fcbeb38a63ced9d3de476fb08c31d71e": "ID des paramètres manquants", + "fe4e0032f69b4100ed143d475e8b5050": "Modifier le succès", + "6c4ed52bea35c4c43839b8f0b44489f9": "Modifier l'échec: {}", + "6c0129a45e9da4e1820335f3d06a869f": "La suppression a échoué: {}", + "2a743a86676fd52214d3c0af1b0238b5": "Erreur du paramètre d'état", + "f95136e5c1f3ccbb09ace8fc24f1e0ca": "L'opération de conteneur [{}] a échoué", + "2e01172e31495f41fcebcf3f831cc82c": "Opération réussie", + "244a98f8c45f938980f48b168aef02c9": "Échec de l'opération: {}", + "fc431240dfc80a731900d5f2ddb6dfc3": "Ordre de démarrage du conteneur {}", + "5ea6c6eea14c24c92eeeccaeea5c46dc": "État invalide!", + "0f3f874698792dc81c7c00b9e74fea34": "{} \\ r \\ n", + "aad4acc1243565c5c2ca41e5733e5fe0": "réussi \\ r \\ n", + "d8f5a29760a4f000dd754819b1faadcc": "Échec \\ r \\ n", + "73977612ef83925db43df7745df9c5eb": "\\ r \\ nno réponse pendant plus de 10 minutes! \\ r \\ n", + "6345c76d66a8a9e9cdd3f9d996ff062d": "Veuillez passer en CMD", + "bba401eadefa8222f3e60a312cc19f34": "Seules les commandes Docker Run ou Docker Pull peuvent être exécutées", + "b5592904212696df3e5bcec990c8676a": "La commande dangereuse existe: [{}], l'exécution n'est pas autorisée!", + "cfff471dc04b6ba4aeb2cc2844b2c94b": "Le symbole dangereux existe: [{}], l'exécution n'est pas autorisée!", + "f1d9b154a0c2625d828a504a8cb35682": "La commande a été exécutée!", + "45a0bbacbe8d5ea062167e88423e4573": "Le serveur Nginx ou Apache n'a pas été détecté, veuillez en installer un en premier!", + "bdaf560796795d6a303bc9a1d75a34c5": "Type de projet [{}] Domaine existant: {}", + "4588a786e80c83c2cbde37b930c3d778": "Le port serveur [{}] n'est pas utilisé, veuillez entrer le port utilisé pour inverser!", + "6888cf6586ce3c187150146a2d1db0ac": "Ajouter un échec, la base de données ne peut pas être écrite!", "9f9663b59d32947ff1f2c5b364c571b8": "Ajouté avec succès!", + "e6bddfc6a0bbf72d592236c61b411f9a": "Ajouter un échec avec l'erreur: {}", + "1bfa1b1738332c4835f5efe7c54ab9c2": "Erreur de paramètre!", + "0d66954ff42aa042c219a356266f5bc0": "Aucune information par procuration inversée n'a été détectée!", + "ae178e022cf2fe30f402145572528de8": "Les noms de volume ne peuvent pas compter de 2 caractères!", "365c770f123d22093084908ebcdc75fc": "Le nom de volume existe déjà!", "2dc51ae60242f0e5b56a9f0d176f91d4": "L'ajout a échoué {}", "307feea9ab8928f39595316b11992cb1": "Les balises d'option de pilote doivent être des paires de dictionnaires / clés!", "f529949f8a98615c109ee8b8eb9f7656": "Ajouter un échec!{}", - "2a0f93407bb61e2403ccd032cbc64e3e": "Supprimer avec succès", "a4ec5c1fa47f2ce0c875f91ea4e7dd08": "Le volume de stockage est utilisé et ne peut pas être supprimé!", "11ff7153b67d275618dd3a62d1e56373": "Le volume de stockage n'existe pas!", + "2aa70dad9bff94a855fdde3fc113e6c5": "Supprimer échoué!{}", "55c31f03e88bd6ad4ce7f68d425648dd": "Pas de volumes de stockage inutiles!", - "5395cc8155f62a666b8f0d0f9f207676": "Les informations sur le référentiel existe déjà!", - "9b10e472adfe6372c9175b9002f098fd": "[Référentiel officiel de Docker] Pas modifiable!", - "5858be44c285048a8f51c126b2fd23e9": "Édition a échoué!Raison: le décryptage du mot de passe du compte a échoué!Veuillez supprimer le référentiel et l'ajouter à nouveau", - "7e51d0e26e1b467aff3c89d3e0751ec0": "Édition a échoué!Raison:{}", - "6478f13dd58e5a4329e19be9020243ff": "Ce référentiel n'a pas pu être trouvé", - "d5309f3186607eb36bee41e8a28cea3a": "Modifier le succès!", - "9e20bffc0d4093d18fcbc5c98fa0fd87": "[Référentiel officiel de Docker] ne peut pas être supprimé!", - "a62336a87697ab6911ba550015a798ef": "Supprimer l'échec, l'ID du référentiel peut ne pas exister!", - "c28bc5c07ec6f2b56777ac7c852dd64b": "Configurer réussi!", - "f2bd8f0373084151bbc07e8c1409e37c": "La configuration a échoué! {}", - "54197759827cfaf0cdb1e213fa49771e": "Le test de connexion a échoué!Raison: peut être une erreur de mot de passe du compte, veuillez vérifier!", - "657a0b7e82731fb4ae516d14081f17d0": "Le test de connexion a échoué!Raison: {}", - "11cde3a2ca81c845978b98e4a6ec471e": "Le temps de surveillance doit être un entier positif!", - "b314fb25bf654a2256bf53b0f6986c93": "Les données de surveillance ne peuvent pas être conservées pendant plus de 999 jours!", - "60e46aeaed758964902dd7ae99858f03": "Là", - "1ba194462d31177d3db4ad6bf18fdbe5": "La configuration du service Docker a échoué, veuillez désactiver l'anti-intrusion AAPANEL et réessayer!", - "422f78617d6852c41e370982d73235ed": "La configuration a échoué!Raison de défaillance: {}", - "dca5bd22c99a74f74074a3a53d78a58b": "{} succès", - "be62f7640f2c5b730ba50ecc580ae618": "Erreur de fichier de configuration globale, veuillez vérifier {}!", - "8ebe0b989b543cf96149811c7a1f3fe2": "Adresse de vitesse [{}] Erreur de format
Référence: https://mirror.ccs.tencentyun.com", - "ec1ec17a5862a949e277432e1d09484d": "La configuration a échoué!Raison de défaillance: {}", - "179a2001e96bb8d0475488f80c7216a8": "Mettez à jour avec succès!", - "f4dc83b81fe6993f99c2b54494eeeec1": "Commencez à surveiller avec succès!", - "af79fd88d4b6f7e8a1ac05e199747fdb": "Impossible de commencer la surveillance!", - "6f4d03d4d1ee0bd282ea744730b7ceda": "La surveillance de Docker s'est arrêtée avec succès!", - "4cc06d8560bb116a38a5aae1458cbe4a": "Le chemin du fichier docker-compose ne peut pas être vide!", - "8d885b86e8562c2128689c4a2601c054": "Le fichier docker-compose n'existe pas!", - "7bdd4d85dda1275e2be709fd9e0d71dd": "Le fichier docker-compose n'est pas exécutable ou n'est pas un fichier docker-compose!", - "c28e19f0398bc1819a890878021836c1": "La tâche d'installation existe déjà, veuillez ne plus l'ajouter!", - "a87b64b2d19f29438274f80ce36a3579": "La tâche d'installation a été ajoutée à la file d'attente!", - "c1710a5899fa03f7ad5ea1945a91e4f8": "Veuillez supprimer tous les conteneurs et images avant de désinstaller Docker!", - "d388487780fba74e4ff3f3b9ffbce58b": "Peut être désinstallé!", - "c4ba6d01fd53333a6e7e85707758c550": "Désinstaller réussi!", - "b7affa7cc663144bc99b9edb3f1a027f": "La tâche de réparation a été ajoutée à la file d'attente!", - "cb49a4daafc9d27bd460967891968225": "Sauvé avec succès!", - "739722f14db791bd300e08318a48ba59": "Échec de l'échec, raison: Daemon.json Format de fichier de configuration Erreur!", - "58fcf0699f38a60c8025330585ac205a": "Échec de l'échec, raison: {}", - "720d2290c3082615c0f79894bfdcabd7": "Veuillez saisir l'adresse correcte I PV 6!", - "c0ef08aa7bd6276137ccd491a8041223": "Il n'y a pas de volume à sauvegarder", - "584e35dd4a55da88bd232ac7a19b9b95": "La tâche de sauvegarde a été créée avec succès.", - "0b08674e1c87f3f8508a4ae9b0c160f8": "Échec de la création d'une tâche de sauvegarde {}", - "13d829d3f2b78c971207d944f2a96c55": "Échec de la suppression du fichier, raison: {}", "6169a7282b361deb5f6f5b6e18f9426e": "Erreur de paramètre CMD", "286933a4f24bee0eed1f9300f70a30c7": "Seule la commande docker run peut être exécutée", "a46a6b274dcbfc5a629d234c2816a165": "Il y a des symboles de danger: [{}], l'exécution n'est pas autorisée!", @@ -2139,24 +2113,26 @@ "994e5a057aca3524ba773ec33228e184": "Échec de la création!{}", "00ff90441ea0bdece5d9e5c72efa14a7": "La création de conteneurs a échoué et la connexion à Docker a expiré!", "8879635d66ad75dcbfc8c31ba1351116": "Le conteneur n'a pas fonctionné!{}", - "facfe02e3070c389fe486efac23f2ab6": "容器 创建 成功!", "71dc70f7ab3a4bc0c2a7141718d3a9b2": "Échec de la création!", + "1983b37067c7e94095a5113786fdef9c": "Échec de la modification, la connexion au Docker a expiré, veuillez redémarrer Docker et réessayer !", + "c558fedcb5850939202e684ff32c7c50": "La mise à jour a échoué! {}", "ed0029af5f77a5dfacbc2452e8c3ec92": "L'ID du conteneur est anormal", "c5b3db7efde90edcb803a4a79e559b21": "Le nouveau nom d'image ne peut pas être vide!", "b10305369ebb41ef24699b8137733465": "Le miroir n'existe pas!", - "d567f353b12e618571935661f31c2a16": "L'édition des conteneurs a échoué et la connexion à Docker a expiré.", - "c558fedcb5850939202e684ff32c7c50": "La mise à jour a échoué! {}", + "9e90efb62702b147b71e8731290caf44": "L'image [{}] n'existe pas, veuillez essayer de cocher [Forcer l'extraction de l'image] et réessayer !", + "6cfa55c53df6db8efa59aa2ae6cef97a": "Le nouveau conteneur n'a pas été créé correctement et l'ancien conteneur a été restauré.{}", + "1f004e412319b7ed472624e011b3d2ba": "Mise à jour réussie !", + "a2ea046c20d2da5cebf2dea01a62dabe": "La mise à jour a échoué !L'état du conteneur a été restauré", "b84bf4d95051856f9965b55bb5402de3": "Le conteneur n'existe pas!", + "d567f353b12e618571935661f31c2a16": "L'édition des conteneurs a échoué et la connexion à Docker a expiré.", "f2124ee490df203b3f86509401c76a09": "Le conteneur est modifié avec succès et le sous-réseau n'est pas spécifié lorsque le réseau [{}]] actuellement spécifié est créé, et l'IP ne peut pas être personnalisé, et l'IP vous a été automatiquement attribué!", "b95d75cd8e04e9cca297c3cd1091b2eb": "Le conteneur est modifié avec succès, le paramètre réseau [{}] échoue et l'adresse IP vous a été automatiquement attribuée, les détails d'erreur: {}!", "4363bb34365a67238ecc6a98ce46b361": "L'image a été générée et {}", "4bb30e8d57a6a7e548758daf4ac33983": "Soumettez avec succès!", "a32e1f09fc2739d94c51a7168675e0e9": "La soumission a échoué! {}", - "9ff81cc845af62a773af3412bdf7d9a0": "L'ID de conteneur est anormal, veuillez actualiser la page et réessayer!", - "d8f5602e197fb8b3c772f071ad4a8baf": "Sélectionnez le type de shell!", - "9ad72ac09babc507baa6e165041e128c": "Cette coquille n'est pas prise en charge à choose ou Sh!", "172f51d3307b02aeb6dc703a442f4724": "Échec de l'obtention du conteneur", "684fc00ae67504a56c09ef71431b1261": "Exporté avec succès vers: {}", + "f9a48b804d917398e795016687f3b0f4": "Veuillez désactiver [Inviolable pour Entreprise] avant d'essayer !", "3ab9d9b76e8d22434930622b5f0acc6a": "Le conteneur a été supprimé!", "d1fe1d6e5e8c17b60f749ad36ff3bcaa": "Le port de serveur IPv6 [{}] est occupé!", "9f13645ac42f0c9908a35637a525d561": "Le port de serveur IPv4 [{}] est occupé!", @@ -2179,6 +2155,7 @@ "dac7d97aeb94cf9d3b3b5d7d072c4cff": "Veuillez éteindre la protection de la stimulation de l'entreprise avant de réessayer!", "32ca87e65c5fc75d3857767417b56439": "Échec de la suppression!{}", "b0ea22ff0b389c2a32b8f4367ab650db": "Erreur des paramètres, veuillez passer dans Restarter Policy Restart_Policy!", + "179a2001e96bb8d0475488f80c7216a8": "Mettez à jour avec succès!", "3b2f70397fa8a827c7146cbd900f7222": "La mise à jour a échoué!{}", "c147897a9d1746a58de531e9c0158c23": "Le conteneur n'est pas démarré et ne peut pas être renommé!", "a89c2e8f7eb81399f984330e55014c6f": "Renommez avec succès!", @@ -2187,45 +2164,135 @@ "363b76cd4207ec1adb31b9f7ee3930c8": "Sans succès!", "0fffc4397713115e14ef45273241dfbb": "Erreur des paramètres, veuillez passer: Remarque!", "dce2cbc7791016e4876ab144e53b4f82": "Erreur des paramètres, veuillez passer: id!", - "7bdaccb3d20432c5e0150862ab1cc3f3": "Nom des paramètres manquants", - "9b90b5b49486a61d9b0e6dbbbcb56cad": "Paramètres manquants conteneur_info", - "b23d7110e9bf6539b4964afe0d4934e2": "Le regroupement existe déjà", - "a90ca6939fe71693c145f50596c6e0e6": "Le conteneur {} a été ajouté par le groupe {}!", - "e3cf7e2f2d14257e7ea33657b135d534": "Ajouter un échec: {}", - "fcbeb38a63ced9d3de476fb08c31d71e": "ID des paramètres manquants", - "fe4e0032f69b4100ed143d475e8b5050": "Modifier le succès", - "6c4ed52bea35c4c43839b8f0b44489f9": "Modifier l'échec: {}", - "6c0129a45e9da4e1820335f3d06a869f": "La suppression a échoué: {}", - "2a743a86676fd52214d3c0af1b0238b5": "Erreur du paramètre d'état", - "f95136e5c1f3ccbb09ace8fc24f1e0ca": "L'opération de conteneur [{}] a échoué", - "2e01172e31495f41fcebcf3f831cc82c": "Opération réussie", - "244a98f8c45f938980f48b168aef02c9": "Échec de l'opération: {}", - "fc431240dfc80a731900d5f2ddb6dfc3": "Ordre de démarrage du conteneur {}", - "5ea6c6eea14c24c92eeeccaeea5c46dc": "État invalide!", - "45a0bbacbe8d5ea062167e88423e4573": "Le serveur Nginx ou Apache n'a pas été détecté, veuillez en installer un en premier!", - "bdaf560796795d6a303bc9a1d75a34c5": "Type de projet [{}] Domaine existant: {}", - "4588a786e80c83c2cbde37b930c3d778": "Le port serveur [{}] n'est pas utilisé, veuillez entrer le port utilisé pour inverser!", - "6888cf6586ce3c187150146a2d1db0ac": "Ajouter un échec, la base de données ne peut pas être écrite!", - "e6bddfc6a0bbf72d592236c61b411f9a": "Ajouter un échec avec l'erreur: {}", - "1bfa1b1738332c4835f5efe7c54ab9c2": "Erreur de paramètre!", - "0d66954ff42aa042c219a356266f5bc0": "Aucune information par procuration inversée n'a été détectée!", - "7c6f761019365f8a5cfb2fb54d9e199d": "info.json est téléchargé!", - "10066fce84fe34e9cc33e0338532988b": "Le téléchargement info.json a échoué!", - "0672e579ab0e3454713eb683ddcc4859": "{} Téléchargement a échoué, veuillez résonner!", - "8e790e81fffa7f51d099f710bd8f82cf": "{} test de fichier YML a échoué, {}", - "371acfea202589c4efd6724888f66595": "{} Télécharger terminé!", - "51cf61e34b3f71ce1e430cdfcf129b80": "{} Décompression a échoué", - "c59b65890496cdf2b14d127a1f76f73d": "{} extrait avec succès", - "0117718c35c7a16a62de5c259e1d35ee": "La création du répertoire a échoué pour les raisons suivantes: {}", - "374e3fe41b55a0b29420e455fb514dd6": "Le volume de stockage a été créé", - "6d0d40f64f89227daf345eb2257638e8": "{} ne peut pas contenir d'espaces", - "a00b49ace55de909015029a0d6d6096f": "{} ne peut pas être nul!", - "54498312bb8f97ce07a9a0b0b47cfad1": "Le port serveur [{}] est occupé, veuillez passer à un autre port!", - "47b74e08252747225c49ea0cb011c79e": "Le démarrage du projet a échoué {}", - "838089af9a2941a49862f342c056a8ca": "Commencez à créer le projet", - "9b149598fb30f54fec9e82a3d121a464": "{} existe déjà, veuillez changer le nom du projet", - "634370637f6a5b88940c75f826953d0c": "Le répertoire du projet utilisateur n'a pas réussi à créer, les détails: {}", - "f7b14d3f642d711a23d5a0cca725fd0d": "Échec de la copie du répertoire du projet.Détails: {}", + "ca1bc3e1d32b99b90395da47b88576a9": "Erreur de paramètre, veuillez transmettre : ws_callback !", + "b4770fb21a608a5ba1ecacae409093d0": "Erreur de paramètre, veuillez transmettre : _ws !", + "11cde3a2ca81c845978b98e4a6ec471e": "Le temps de surveillance doit être un entier positif!", + "b314fb25bf654a2256bf53b0f6986c93": "Les données de surveillance ne peuvent pas être conservées pendant plus de 999 jours!", + "60e46aeaed758964902dd7ae99858f03": "Là", + "c28bc5c07ec6f2b56777ac7c852dd64b": "Configurer réussi!", + "422f78617d6852c41e370982d73235ed": "La configuration a échoué!Raison de défaillance: {}", + "dca5bd22c99a74f74074a3a53d78a58b": "{} succès", + "ec1ec17a5862a949e277432e1d09484d": "La configuration a échoué!Raison de défaillance: {}", + "f4dc83b81fe6993f99c2b54494eeeec1": "Commencez à surveiller avec succès!", + "af79fd88d4b6f7e8a1ac05e199747fdb": "Impossible de commencer la surveillance!", + "6f4d03d4d1ee0bd282ea744730b7ceda": "La surveillance de Docker s'est arrêtée avec succès!", + "4cc06d8560bb116a38a5aae1458cbe4a": "Le chemin du fichier docker-compose ne peut pas être vide!", + "8d885b86e8562c2128689c4a2601c054": "Le fichier docker-compose n'existe pas!", + "a87b64b2d19f29438274f80ce36a3579": "La tâche d'installation a été ajoutée à la file d'attente!", + "d388487780fba74e4ff3f3b9ffbce58b": "Peut être désinstallé!", + "c4ba6d01fd53333a6e7e85707758c550": "Désinstaller réussi!", + "b7affa7cc663144bc99b9edb3f1a027f": "La tâche de réparation a été ajoutée à la file d'attente!", + "cb49a4daafc9d27bd460967891968225": "Sauvé avec succès!", + "58fcf0699f38a60c8025330585ac205a": "Échec de l'échec, raison: {}", + "6c3e5d603d8845422e861fb0b4eed350": "Un élément de configuration qui ne", + "f324009782d2d9e73d1087884ebc2c4c": "La racine Docker ne peut pas être vide!", + "538960e1336f919e37a0d2c024c56830": "Le répertoire racine actuel de Docker est le répertoire cible et n’a pas besoin d’être modifié !", + "f2bd8f0373084151bbc07e8c1409e37c": "La configuration a échoué! {}", + "a848bbd79221dfdce1c9dca536dbfada": "Le format JSON des paramètres du proxy est erroné !", + "edf6eb680187066c4dea216b3b20d6d2": "Configuration du proxy réussie !", + "720d2290c3082615c0f79894bfdcabd7": "Veuillez saisir l'adresse correcte I PV 6!", + "b01f9411136207ad7df28b9bf2387e2a": "La mise à niveau a échoué !Raisons de l'échec :{}", + "da896b628e3ded58445e4b015320f327": "La surcharge échoue en raison de :{}", + "efb869976990f78b3d6fcbaf270e3323": "Rechargement réussi !", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Échec de la surcharge du profil global :{}", + "75bbb7a00c3b5b510913952fe089f52a": "Mauvais paramètre, paramètre de chemin !", + "273609d18876f5f9e3f021032e5b57a3": "Échec de l'installation !", + "5e022f79dcc774c79bc55ee28774e2e7": "Le nom de l'image ne peut pas contenir /", + "c00be60f9f3f7d747aadfdb124e855ef": "Enregistré avec succès à: {}", + "cb1f8d99b492340cf701101c87884a8c": "Impossible d'exporter l'image!", + "afaa91d141ded3e37b8b9ebf8bc31c51": "L'exportation de l'image a échoué et la connexion à Docker a expiré.Veuillez essayer de redémarrer Docker et réessayer!", + "5b980f2e1c82c04c91376d55d4306a91": "Échec de l'exportation de l'image!
{}", + "e5e8c7cac8b71e94280fa08301d21e78": "Veuillez saisir le chemin d'image!", + "5441400ea3bd16cffdf70c46c34f61d4": "Échec de l'importation de l'image.L'extension de fichier doit être.tar!", + "0720c6c4f478b3a374b4a438f7cf80ad": "Échec de l'importation de l'image, la connexion à Docker a expiré, veuillez essayer de redémarrer Docker et réessayer !", + "22cc0388137842df9649b3bbcff345e8": "Si l'importation de l'image échoue et que le répertoire du conteneur temporaire n'est pas créé, vérifiez si le logiciel de protection dispose d'un enregistrement d'interception.", + "67b97e4746a2faf5d59206a80bb28649": "L'importation d'image a réussi! {}", + "deceb44868a29ae5d579114348736cbb": "L'importation d'image a échoué et le répertoire temporaire du conteneur n'a pas été créé.Veuillez vérifier si le logiciel de protection a un enregistrement d'interception!", + "8eb05618b0f04e727b0685427fd49c8e": "Échec de l'importation d'image!
{}", + "721aa02577670c1049ea9d12caa8938c": "Veuillez saisir le chemin Dockerfile correct!", + "736df9a7c491f3299efdeb9f7d7e9e0f": "Construisez l'image avec succès!", + "6e85568dae869303ca7a4486f55458a3": "Build a échoué, la connexion a expiré", + "5bb301b85cc1f42e56174d3d9a4c0286": "Build a échoué!{}", + "f51455b323ec2db8004c812001043330": "Build a échoué! Le dockerfile spécifié n'a pas été trouvé", + "8e1b9c9b75950d0feba6813d32766e61": "Build a échoué! {}", + "eba0ec758a6464a20c14c0f23ceee62e": "Miroir supprimé avec succès!", + "8dd326278d09a3ac4bc56cf725c8f262": "La suppression a échoué et l'image peut ne pas exister!", + "11ead921bc0e3d94f1f9e0db4bf8ed8d": "L'ID d'image est utilisé dans plus d'une image, forcez l'image à être supprimée!", + "43993616c7433350755d30a3b4d065dd": "L'image est utilisée.Veuillez supprimer le conteneur avant de supprimer l'image!", + "d6992c3fcf2269c249cd5f18f1ac2c11": "Échec de la suppression de l'image!
{}", + "0c6c071174fde5b47c9eef8088c17a89": "Échec de la suppression de l'image, la connexion à Docker a chronométré, veuillez redémarrer et réessayer!", + "a3ba80a8e1e0d9af94c809e909431b3c": "Échec, se connecter au référentiel [{}] Échec, veuillez essayer de vous connecter à ce référentiel! \\ r \\ n", + "cc40077b6ee61fbfa35713a21e8eb866": "bt_failed, connectez-vous au référentiel [{}] échoué, veuillez essayer de vous connecter à nouveau à ce référentiel!{}", + "60b488c60b6747bf34a86a69740b636d": "L'image poussée ne peut pas contenir [/], veuillez utiliser le format suivant: Image: V1 (Nom de l'image: version)", + "44dbec830b87eb037e8fcbb0e1b56160": "Impossible de pousser au référentiel public docker!", + "b4c46001066c912344e3bdb0df86e848": "Le référentiel [{}] Login a échoué!", + "0ebfb094c6482acb049e0dd0d3107307": "Échec de la poussée, erreur d'étiquette d'image, veuillez entrer comme: v1.0.1", + "d26bdd6e86002ed92089dc71347822ce": "Push a échoué, n'avez pas la permission de pousser à ce référentiel!", + "82058092ad7d2c7aa5e2f012b6544e59": "Échec poussé! {}", + "2b228d4775d23d2725ec227ba648bd43": "Poussez avec succès, Mirror: {}", + "9e396f640866ded9c3a47268f96a36e3": "Tirer l'image, veuillez patienter ... \\ r \\ n", + "7e5f4d488d318dc7c235095c8456f5e4": "Tirez ou recherchez des images ... \\ r \\ n", + "97a6dfe3a273202edffe31af7a43e220": "Impossible d'utiliser la station de miroir par défaut pour tirer l'image!Essayant d'utiliser une autre station de miroir pour vous tirer, veuillez patienter ... \\ r \\ n", + "484616540fc726ef4f52e97a1c2f0fef": "Échec de l'image! \\ R \\ n", + "1cd77329b2bddfb200e656214b1fdf32": "N'a pas réussi à tirer l'image!", + "63c709b9759af42fef890d539d822575": "Full a échoué! {} \\ R \\ n", + "b4aba972332d1f3728171905a033fb99": "Image pull [{}] réussi \\ r \\ n", + "2fae21ffd185d9e9730b39bc7de23852": "Image tirée avec succès!", + "8a635442294fd90195a43d9a1672fc3f": "Échec de l'image!", + "711de72d616e7abb29dfa919244d382d": "Échec de la traction, l'image n'existe pas ou l'image peut être une image privée.Vous devez entrer le mot de passe du compte DockerHub! \\ R \\ n", + "e9511e26273da5b4537b4683668b548e": "Full a échoué! {} \\ r \\ n", + "05d13bf5dcc37754db74b2356e6e117c": "Full a échoué, il n'y a pas une telle image dans le référentiel! \\ r \\ n", + "714841af7f3de6c8d99ba03f4cee0ee5": "Échec de la traction, le format d'image est faux, comme: nginx: v 1! \\ r \\ n", + "2d941c4fa4da32ccafa8670a07f23c1d": "L'image a été tirée avec succès.", + "5282194697748d9fcd1ccd8a90428424": "Il n'y a peut-être pas cette image miroir.", + "d6facab17334983e7c6f8c561c239820": "Échec de l'image, il s'agit d'une image privée, veuillez saisir le mot de passe du compte!", + "b507deb7848d566982b339265c8f5482": "Échec de l'image à tirer

Raison: {}", + "e90811ef0a60b6d299b4e1064d7788d0": "Pas d'images inutiles!", + "f343313c101aeaff0516990ebea3dcef": "Échec de la suppression! {}", + "90ecd58b3feb0b2be11f0af685ad39fe": "La suppression des images inutiles a échoué et la connexion à Docker a expiré.Veuillez essayer de redémarrer le service Docker et réessayer!", + "0568e5e8aa7c811dd420c818189a0d46": "il y a quelques secondes", + "53c53a79f864561f8b6886b3dde7cd51": "il y a quelques minutes", + "f329a0dab82282e50e3aea9260e95d53": "il y a des heures", + "7a1af30a5ce889031cbc2472766159e3": "il y a quelques jours", + "558a41d55884223583b3542e802d2b64": "Le nom du miroir ne peut pas être vide !", + "4097585e32152eb74bbee5ab8c463718": "Le service Docker s'exécute anormalement, redémarrez et réessayez!", + "26a0931677e111565f3ff7d059b94d8b": "Le paramètre de passerelle est mauvais, veuillez entrer une passerelle qui correspond au sous-réseau: {}", + "def2ba1ce0e4d77692c14e5b984636fa": "Erreur de format d'adresse de sous-réseau, veuillez entrer par exemple: 172.16.0.0/16", + "716eeeb727fd667635ccf1d18891d46e": "Erreur de format de plage IP, veuillez saisir la plage IP appropriée pour ce sous-réseau:", + "e310a873e7812c7f994d482604061fee": "IP Range [{}] existe déjà!", + "db88b911ea66744c24b22efcafef2101": "La version du noyau système est trop faible, veuillez mettre à jour le noyau ou choisir un autre mode réseau", + "9cebb294a44695984eaaf2134df63a51": "Le nœud actuel n'est pas un essaim et doit être configuré avant de pouvoir être utilisé", + "85ac438bd64f13e2ad61cf60e5ade3d3": "Impossible d'ajouter le réseau!{}", + "640520ffb5d9c01336710bad3ea6d7ff": "Ajout du réseau avec succès!", + "87574a543563d2e037b87a6cf705e3ff": "Le réseau par défaut du système ne peut pas être supprimé!", + "23b6d9d6c36088deb928efad7fb9b63b": "Le réseau ne peut pas être supprimé pendant qu'il est utilisé!", + "8f512551c7ddf61331c3d068e80c642c": "Il n'y a pas de réseaux inutiles!", + "08efe6a4e12437b79225c8b59fd710eb": "L'ID du réseau ne peut pas être vide", + "a636381ee5e6d6d021fff745ca132905": "L'ID du conteneur ne peut pas être vide", + "31a75a8d220d37dc4a7ea28d0f24cc19": "La déconnexion du réseau a réussi!", + "a2b9895fca7698902da9319b52392366": "ID de conteneur: {}, n'existe pas!", + "c81f03a558307d5aaf3b339af28e04ff": "ID de réseau: {}, n'existe pas!", + "12a90fe85b8863e1dea43284988d7750": "La déconnexion du réseau a échoué!{}", + "6226d2fef3bf047236f0f3a57dcd71fb": "Connexion du réseau réussi!", + "d882b8375782b1bc56ccaf84ed27d20b": "Échec de la connexion au réseau!{}", + "0e8623af4dd4d3b732904872d22fbf83": "Le nom du réseau ne peut pas être vide !", + "5aa2044b58e63d58ddecc69421802404": "Les passerelles peuvent", + "ceaa20eefd6749452a947c7f5dfa4eb0": "Les plages IP ne peuvent pas être vides !", + "c3e2cce9a4a1b26f46f462f34ae391b9": "La création d'un réseau a échoué !", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Nom du réseau : [{}] existe déjà !", + "9cdc09516d85ae057d1d9bedc988849e": "Créez un réseau avec succès !", + "5395cc8155f62a666b8f0d0f9f207676": "Les informations sur le référentiel existe déjà!", + "9b10e472adfe6372c9175b9002f098fd": "[Référentiel officiel de Docker] Pas modifiable!", + "5858be44c285048a8f51c126b2fd23e9": "Édition a échoué!Raison: le décryptage du mot de passe du compte a échoué!Veuillez supprimer le référentiel et l'ajouter à nouveau", + "7e51d0e26e1b467aff3c89d3e0751ec0": "Édition a échoué!Raison:{}", + "6478f13dd58e5a4329e19be9020243ff": "Ce référentiel n'a pas pu être trouvé", + "d5309f3186607eb36bee41e8a28cea3a": "Modifier le succès!", + "9e20bffc0d4093d18fcbc5c98fa0fd87": "[Référentiel officiel de Docker] ne peut pas être supprimé!", + "a62336a87697ab6911ba550015a798ef": "Supprimer l'échec, l'ID du référentiel peut ne pas exister!", + "54197759827cfaf0cdb1e213fa49771e": "Le test de connexion a échoué!Raison: peut être une erreur de mot de passe du compte, veuillez vérifier!", + "657a0b7e82731fb4ae516d14081f17d0": "Le test de connexion a échoué!Raison: {}", + "221d1ea3c23f430e03a4486dca865014": "Le conteneur n'existe pas, veuillez actualiser le navigateur et réessayer!", + "7e88e25ea6c628c2d03c526c04af3eed": "Échec de l'obtention du statut de conteneur:", "cb337dbfbc18aafa482051b6fc349dea": "Échec de l'obtention du fichier de configuration", "84d3fc0c1c70fcd6fdd7ca7c3be11225": "Le projet existe déjà!", "a280b122a0b3249c26b1f94ad4573f50": "Écriture a échoué!", @@ -2244,6 +2311,32 @@ "d6d90f977089e176ec7443db17c41279": "容器 添加 成功!", "04cd9210bf9290bda98bc76ca4bc59fd": "容器 删除 成功!", "d867a5e10a7a9485129c679b85453e3f": "项目 删除 成功!", + "459ed27083c25b82135efedccaa60ada": "Numérisation {} Commande d'historique d'exception", + "37c614d5d300e6c391808efd5363ec82": "Analyse {} Informations sensibles", + "5ddc98a53573410c7cb65727946c5d3f": "Scanne {} dérobée", + "6bb6be880d819a93af392183d16fccdf": "Scanne {} Container s'échappe", + "cd7fb7cf576b22469514b5b30f365158": "{} Scan terminé", + "7d643f192968be3f8a54be28592e9176": "Échec de la numérisation de l'image :{}", + "acc2731ee0f5b78d4e801d2daf814c32": "Commandement de l'histoire anormale suspecte trouvé", + "3069c277261d044bb309e4b09ae798fa": "Il a été constaté que l'image a une commande historique anormale [{}], qui peut implanter des logiciels malveillants ou du code dans le système hôte lorsque le conteneur s'exécute, provoquant des risques de sécurité.", + "6d64734fff5534f48029ffba4aa3678d": "1. Il est recommandé de vérifier si la commande est requise pour les activités normales
2. Il est recommandé de choisir une infrastructure officielle et fiable pour éviter les pertes inutiles.", + "6684913201a60be0b5e89c4dfb210719": "Trouvé Bashrc Backdoor {}", + "9a9f27d5f9f8c056fff7986c87a94c30": "Il a été constaté que l'image a une porte dérobée bashrc: [{}], contenu de code malveillant:
{}", + "d8a828116070b9d92315ca309cca1991": "1. Entrez le conteneur déployé à l'aide de l'image et supprimez le code malveillant sous le fichier
2.Vérifiez si le conteneur a été envahi et mettez à jour le jeton d'accès ou le mot de passe du compte de l'entreprise dans le conteneur
3.Il est recommandé de remplacer l'image officielle ou d'autres conteneurs de déploiement d'image de confiance", + "e1439f3f7d25d378078d513a82a3fa87": "Fichier de porte dérobée trouvé {}", + "9ede9d4bd542eedf78e39b0acf0206e3": "Il a été constaté que le fichier de porte dérobée Bashrc [{}] existe dans l'image, et le contenu du code malveillant est:
{}", + "686765b4612ecd8f774648db29a1541d": "Cron Backdoor a découvert {}", + "390bdc0b3c37a56ede9467b0c220a3b6": "Il a été constaté que la porte dérobée Cron [{}] existe dans l'image, et le contenu du code malveillant est:
{}", + "caea084281a3cb2515e5618cd3856163": "Détermique du système trouvé: {}", + "d04061273caa56d5a0c3d74f3e9fd482": "Il a été constaté que le fichier de porte dérobée SystemD [{}] existe dans l'image, et le contenu du code malveillant est:
{}", + "fc76e0fe415c49cc1c09bf76035fc4e9": "Trouvé SSHD Backdoor {}", + "00b2409f52ef5bc56afe29ccbe5cfa2c": "Found le sshd Soft Link Backdoor: {}, le fichier frappe la fonction malveillante [exe = {}; link_file = {}]", + "e747da31a54cd71fb1a2860cae0f9f77": "Trouvé le TCPWrapper Backdoor {}", + "a2b09164c8d23894736bcc6a646861e0": "Il a été constaté que le fichier de porte dérobée TCPWrapper [{}] existe dans l'image, et le contenu du code malveillant est:
{}", + "a7fd9f6b190b8531039376fbbda5f482": "Les utilisateurs se sont révélés à risque d'évasion {}", + "5d46ed5f4af3f30cfcc8bd66942f93b4": "Le nom d'utilisateur {} peut compléter l'échappement du conteneur via la commande [{}], permettant à l'attaquant d'obtenir des droits d'accès à l'hôte ou à d'autres conteneurs.Contenu malveillant:
{}", + "4ca0a18aa36a60613104cacdae514dec": "1. Il est recommandé de supprimer l'image ou de ne plus l'utiliser
2.S'il existe déjà une entreprise utilisant l'image, entrez l'environnement de conteneur et supprimez le contenu de l'utilisateur {} dans le fichier / etc / sudoers.", + "611afea08ae3b216a34dfde4c143f46c": "不 支持 的 系统 版本", "68ae8c43a52aac63c5c62e1974afdda6": "L'ID de script ne peut pas être vide", "eee298ea1d9259c2f0e2061ecd89c21c": "Le script spécifié n'existe pas", "b68a8dd0c887719b7cc3e10dc11843ce": "Le script intégré d'AAPanel ne peut pas être supprimé", @@ -2282,6 +2375,147 @@ "101da618f72223d3eac9e66fe510b04f": "L'ID de l'événement de tâche ne peut pas être vide", "bee903cc3d03ab2c237eefb1d601fbcb": "L'exécution du script a échoué avec le message d'erreur: \\ n {}", "1d78758685e5e2f4efeeb490f8521abd": "\\ n", + "ca6977d373320a7fdb51047199d4cc59": "L'administrateur n'est pas installé !", + "38641e6ce3a6369e108eb595672c8edc": "Désinstallez avec succès !", + "9cae26284a7ad2f46132c1e8e196d089": "Installez avec succès !", + "a9a92e55770213c8aa1fb2871dc43563": "Définissez le port administrateur avec succès !", + "b611124a9bad44e328d7ce809912802d": "Réglez avec succès!", + "2321763bf0b4cbf345b1e19dc9faec47": "Définissez la version PHP de l'administrateur avec succès !", + "40a1f70c155550ad2dafa5e556e10c3c": "La version PHP ne s'installe pas !", + "e75e68c65607a7cfcc570d51345d7e33": "Moniteur de fichiers", + "983e2622c48ae7231c5d29b135133b0e": "Ajouter le répertoire du moniteur: {}", + "15c7df4ddd1d366c2cdfa2689c15369d": "La compilation du programme de filtre IP a échoué", + "423c2da1e20a5f2138cc810423475eef": "L'adresse IP ne peut pas être vide!", + "1e116dc22492b28a7a38a6029416d0e1": "L'adresse IP est dans le mauvais format!", + "8c8f15a1c1cce8bbdc465e865c804b40": "La période de blocage maximale ne peut pas dépasser 24 jours!", + "fb86e24ffe47ba150610ba1efd96929a": "Le blocage temporaire des blocs CIDR de l'adresse IP n'est pas pris en charge", + "bdb199a03e52488d499ea6bb0cb0d1ed": "WAF est tenu de bloquer les segments d'adresse IP", + "1ac8e9ffcea7cf6e9fa183c1b9038599": "Les données IP n'existent pas!", + "04d46623edcb5663566cf43f575de9b2": "Le nom du site Web ne peut pas être vide!", + "4dcde63f7fd4415f3b5eb6cb889d135c": "L'ajout a réussi", + "d303480175994c6ad240cf24a4a99640": "La configuration du site Web n'existe pas!", + "87d1f7257214d09ba39656b72c864bac": "Configuration du compte réussi!", + "aa5bb2d58da86c4b9160e94d0c4538f1": "Uri ne peut pas être vide!", + "ade0ab88aa0ee9c18f0979d5b62b517d": "L'URI existe déjà, veuillez ne plus l'ajouter!", + "506d9cb0cb2468fd09048bcbe8b37497": "Uri n'existe pas", + "cf180f27e678d4e297f690e581961417": "Le format d'adresse d'écoute est faux!", + "1ed0fa9bb8768d56bf2d3232d7067023": "Mauvaise gamme de ports d'écoute!, Exigence: 1024-65535", + "e6aa58b2f41bc53f6b84657d47eb35c1": "Le chemin de sauvegarde des données n'existe pas!", + "c87be59ecbed944c2b45fea87d62f473": "Erreur du mode IP Statistics, exigence: 0 ou 1", + "fbc4861b0190c90a5388e44d2bbac678": "La version actuelle n'est pas disponible, veuillez mettre à niveau le panneau et réessayer", + "8b1d5629a1346da21fcaeb9f8f0db6d2": "Erreur du format de début!", + "7a238977c4b13d23ac3e6b151a914cab": "Erreur de format de temps de fin!", + "a87a482f3bced3ce16bc9a351e8b5ce8": "L'heure de début ne peut pas être plus grande que l'heure de fin!", + "a0ef69b1680461368a9130e770256ca6": "Erreur de format de date!", + "2493958c6f4051bb8d254d77d77b622b": "Erreur de granularité du temps, support: minute, heure, date", + "4c4258ffd9a69c8e332346241a3cbdae": "Les données sur les conditions de négation sont dans le mauvais format!", + "b47f4e8b7540cae56e085231c3c984c1": "L'ID d'accès ne peut pas être vide!", + "fea04488a926034079dc00c5a60a9135": "Le format d'identification d'accès est incorrect!", + "da206b8971dcba715ed8cdd1a82736e1": "L'ID d'accès n'existe pas!", + "fd65e390dd8aa35ea3622658247776d0": "Le format de date est incorrect", + "9a4f1ea39f3a554d4e5431f86eb0450b": "Le nom du site ne peut pas être vide!", + "b59417ef234946819788acfde92a00a7": "La purge a réussi", + "aaa3736c0541d4a4d82193c2204ec317": "L'heure de début est dans le mauvais format!", + "e579606ed1219291caeb3bfad786dd3f": "L'heure de fin est dans le mauvais format!", + "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "Le format de date est incorrect!", + "53c85b9d96ea14f3f8224a5d2e659894": "Le paramètre ne peut pas être vide!", + "9dc21ed8c6025cab9873847e6e1ca506": "Le type de requête est incorrect!", + "236c6e2f9a266b929b283eda30c2b3b6": "Aucune donnée pertinente n'est disponible!", + "50fc65b5f19812ccf756b7ad7de7f4cb": "Session_id ne peut pas être vide!", + "8f2adb53dcb8d2c660159b1f8e8012ed": "L'ID de session est incorrect!", + "7f4419a5b09e1a04936f6aba6939521a": "Vérification de la configuration terminée!", + "f3df0751d9522bf2e68034bab4cd49a5": "Nettoyage de la configuration terminée", + "191fae10bdd9d3eb6cb110b524fe40b7": "La soumission a réussi", + "f53208c04e48d7ee19222b6adf343810": "Le nom d'utilisateur ne peut pas être inférieur à 3 caractères!", + "251e2cae1dbed2b37f7d16961a606970": "La sélection du niveau d'autorisation est incorrecte!", + "a835325a5600b6571a24111e4d318e2c": "Veuillez sélectionner un site Web!", + "a669655fa991afcfa0cfa3f62286d944": "La longueur du mot de passe ne peut pas être inférieure à 5 caractères!", + "4d8d30e66ad9aaccc738ad99d5083955": "Le nom d'utilisateur existe déjà!", + "12152390a5bf2ebce0f00b0fb5c650a2": "L'ajout a réussi!", + "4d1b7f489e07d6ca02ca1910a3884c48": "L'utilisateur n'existe pas!", + "3e83aa40dd320efb027151c02aab2871": "La longueur du mot de passe ne peut pas être inférieure à 8 caractères!", + "d3748b3102cc8ba898f0f0bec842ce9e": "La modification a réussi!", + "ac75e534c7334e1fd02c68a3993f1568": "La suppression réussit!", + "ca281da1f13858d0b599d19e18a510bf": "L'état Web est mal sélectionné!", + "c88239bc4a113ab0f02acb9bc31b3437": "Le port Web est incorrect!", + "f06e6a5985a91ac55c651e0b573378f0": "Le répertoire de sécurité Web ne peut pas être vide!", + "41a871d7ec26993be1367226321e06fa": "La durée de l'adresse d'entrée de sécurité ne peut pas être inférieure à 6 chiffres!", + "16f83d0969b9f7fe56ac3b55f9dedb26": "Cette entrée est déjà occupée par le panneau, veuillez utiliser une autre entrée!", + "066df5a1cf19314e0265a1eb396848ac": "L'adresse d'entrée est mal formatée, par exemple: / my_monitor", + "794ee58637251012717d7e565aafc2a1": "La configuration a réussi!", + "2531ce72ea98e5aa8f4953eee783b540": "Aucun journal d'erreur trouvé!", + "0fc543dae93d3f76f5f7ff8048f5c398": "Aucun IPS masqué n'a été trouvé pour l'exportation!", + "5552ac99360952da2cf289f556ad19a6": "Aucun IPS masqué n'a été constaté pour synchroniser!", + "3332452d6ecd015473b133de021a9e06": "La synchronisation a réussi!", + "e6afdb1b63ca733f5d1741c7eff7a64e": "Il est traité, ne le répétez pas!", + "696212205a77e698860ff5195992642b": "L'opération de réparation est complète", + "97cb85456b49af4258f4c8da38bb576a": "La tâche planifiée est ajoutée avec succès!", + "2739213f569742c0782252f41279c060": "Échec de l'ajout d'une tâche planifiée", + "1cc4efde4fab0b4bbc2812a8b58f59b0": "Veuillez spécifier un nom de site", + "3b5ef9e1ea5a8dbd9606075686dbf15f": "Veuillez spécifier une plage de dates", + "f8412f656685f470a82b74de3d9f24d5": "La tâche d'exportation existe déjà", + "96ed379ec1882dcf52f0ff65057efb92": "Veuillez spécifier les champs que vous souhaitez exporter", + "4e698e0709485a0e93a706964b748c5b": "Type d'exportation inconnu", + "2a2dbc12afac446fe408eb78453bc6c2": "La tâche d'exportation n'existe pas", + "9ff8782f584db728284fadd719967806": "Il y a eu une erreur avec la tâche d'exportation", + "b4421542e9cff8ce336075b668b8f87e": "Le dossier d'exportation n'existe pas", + "41564d1cd7f8ecb23bcc590cb2217518": "Veuillez saisir un nouveau répertoire de données", + "699856a3cc697d8afcfd04dcd2f0729a": "Le répertoire spécifié est le même que le répertoire actuel", + "103422cd692bcaf56a7367075caf2274": "Le répertoire spécifié est partitionné sur le même disque que le répertoire actuel, donc aucune migration de données n'est requise", + "bcbd9605d3b8753bb8afbc765b293e01": "Les tâches de modification et de migration des données ont commencé", + "967a57ad58881afe2c5da6cf0d7fce8c": "Veuillez saisir l'adresse IP et le nom du robot", + "62b73e6c2a169296e73edf8a4d1e02f0": "Veuillez saisir une adresse IP correcte", + "0e1a26f6137c04f0f80956210069e46d": "Veuillez saisir le nom de robot correct", + "fe8d50ca26f2e864d2bf4a932801bb85": "Erreur inattendue, essayez de réparer le plugin", + "21aa998a1dee8774bc88ce2a070bf4de": "Veuillez saisir une adresse IP", + "2e0c672edc06ef05e44de98ac1b7a47d": "La suppression est réussie", + "0f9d9b728fba6427b5ff4da49aee1738": "L'araignée a été sélectionnée de manière incorrecte!", + "e48c86e701ddba3ab084d5457aa58714": "L'IP ne peut pas être vide!", + "3bdb147b7a040582220aa7f1ce2af19b": "Le format IP est incorrect!", + "b60597b6a9525341fa5d4d441084658d": "Aucun enregistrement de résolution de l'adresse IP n'a été interrogé", + "86e9360dac1c5eece29f32c9aba8011d": "La sauvegarde a réussi", + "e5320166e7623b6a39f9a7af7c20c787": "Spécification d'une erreur de paramètre de site Web différent", + "c21fbb62edf94306d2e73365e6e7d637": "Le paramètre spécifiant un autre site Web ne peut pas être vide", + "c7fae0c9886cac3924fe5e459e171ab1": "La suppression a échoué", + "9a84d2910d3d36b78d7060f1c77e27f6": "Le nom du site n'est pas spécifié", + "0987458a95b8bb7d6cdf9fa0630b6407": "Le serveur actuel n'est pas nginx et ne prend pas en charge la collection personnalisée", + "b925dfe3295278bd81a85bded66da01d": "Le code d'état est dans le mauvais format", + "2a8793bbb8bc38a7df9d8c796648526a": "Aucun nom de site n'est sélectionné", + "6878600890a41b84c145423618ea2431": "Aucune information sur le site Web trouvé", + "eff712873c55654bf48eaf421a184e73": "Aucun nom de collection personnalisé n'a été entré", + "116208583eac10a8769774a6eaaff926": "Le type d'acquisition est incorrect", + "fff3d7679cb121a30e68a104b58c934e": "Le contenu de la collection n'a pas été entré", + "75db42595fc9aee34df76df808712f92": "Les noms de collection personnalisés ne peuvent pas contenir de caractères spéciaux ({})", + "9667904e74175dfde9824cb8cd099ce7": "Le contenu de l'en-tête doit commencer par $ http_", + "4c61d0ee460aa25eb6b5c413c46c9236": "Le contenu de la collection du type de corps doit contenir [$ + nginx journal variable]", + "c03680a7ae35b7ce5b62f67b854d3b06": "Le contenu de la collection doit contenir [$ + nginx journal variable]", + "d621342512cf7910a6dc4e7d736bcc63": "Le contenu de la collection ne peut pas contenir de caractères spéciaux 【", + "b4704dc559a05c5721c095b97c4dbbc0": "Le nom de la collection personnalisée est dupliqué", + "6594b670e8bd06e352f112c1bf194fc1": "Le contenu de la collection personnalisée est dupliqué", + "a531c58ef7fefbbbd79becda53ede191": "Un nom de collection personnalisé n'est pas spécifié", + "88c0c3ae4ef97b6069a35672b2caa05c": "Le contenu de la collection du type de corps doit contenir [$ + nginx journal variable]", + "41353000c0d351db90c9eec095bae879": "Il existe déjà des collections en double, nommées: {}", + "ce78b7a225f05ece35ed7adc68b08a88": "La configuration d'acquisition à modifier n'a pas été trouvée", + "521df7df29b44fcee614de96cecca61c": "La suppression est réussie", + "3b0ccb5c759b0941d50e331b22013560": "Extensions non soutenues: {}", + "7ea48870539b84996d1b1691c22823a7": "Le format de données modifié est incorrect", + "bc64045195c8ed198a69772b3a204ef2": "Les données à modifier ne sont pas spécifiées", + "bb02871a5e118841b95b69c5bff55baf": "La liste noire est dans le mauvais format", + "1aac00a8c681100fd27b287c0b0516f1": "Le format de configuration de build analyse incorrectement", + "f6df35a69157ae1fca6415b043485334": "L'ID de tâche n'est pas spécifié", + "524a477cee9485a5a80a860e2bc5b5d5": "L'ID de tâche est incorrect", + "4b5d95ed20303e337aec42486a0fb3fd": "Le site Web actuel n'a pas été interrogé", + "19e777b7c8cdc1ce56ad2f4fe735b2b7": "Le site Web actuel ne demande pas le répertoire en cours d'exécution", + "45484ac5ec748cf3362d425ed7142b75": "La règle ne peut pas être vide", + "b36196750a032a791ecc8035853dc648": "Le nom de la règle ne peut pas être vide", + "cfa7bc3b484b8068e78bc6f55a2aaeaf": "Aucune règle spécifiée", + "835365605f9e08c44c0b7f65a422d059": "Le paramètre de date est incorrect", + "4fa3e528186292138b224a0a1d46ec59": "Le nom du site Web est incorrect", + "3769ee974734f97166d6bce6b96e9b4e": "Erreurs de données", + "daddfa03b4ea762e009a36ce970b2b59": "Il n'y a pas de compte Baidu configuré", + "0379d9c081b6fd9ec2fd86e8672a4e72": "Si vous ne parvenez pas à obtenir les données, il se peut que les informations de connexion soient expirées, et vous pouvez essayer de vous connecter à nouveau", + "8057e57596c33acf04619825d625a483": "La mise à jour a réussi", + "3149165696693c4f6fef18928261a50f": "Il n'y a aucune configuration de compte 360", "add390e6467c956fbb7f6da0f51d23d6": "La tâche d'envoi a été exécutée", "e8edb193e1cb171a17efe2765d72af71": "Le fichier n'existe pas", "63d325d5c4dfd07afdf888fdf727542e": "Importez avec succès, sautez {} utilisateurs non subscrits, adresse e-mail en double: {}", @@ -2505,141 +2739,6 @@ "decc12f91f9703a201987fdeabe572a4": "Le site avec le même nom [{}] existe déjà, veuillez le modifier avant de le créer", "de67e3b2c564a899fe3195606036a7f1": "L'installation réussie", "8d5496d961b4d4e08474b20c1450737a": "Échec de la création d'un site", - "e75e68c65607a7cfcc570d51345d7e33": "Moniteur de fichiers", - "983e2622c48ae7231c5d29b135133b0e": "Ajouter le répertoire du moniteur: {}", - "15c7df4ddd1d366c2cdfa2689c15369d": "La compilation du programme de filtre IP a échoué", - "423c2da1e20a5f2138cc810423475eef": "L'adresse IP ne peut pas être vide!", - "1e116dc22492b28a7a38a6029416d0e1": "L'adresse IP est dans le mauvais format!", - "8c8f15a1c1cce8bbdc465e865c804b40": "La période de blocage maximale ne peut pas dépasser 24 jours!", - "fb86e24ffe47ba150610ba1efd96929a": "Le blocage temporaire des blocs CIDR de l'adresse IP n'est pas pris en charge", - "bdb199a03e52488d499ea6bb0cb0d1ed": "WAF est tenu de bloquer les segments d'adresse IP", - "1ac8e9ffcea7cf6e9fa183c1b9038599": "Les données IP n'existent pas!", - "04d46623edcb5663566cf43f575de9b2": "Le nom du site Web ne peut pas être vide!", - "b611124a9bad44e328d7ce809912802d": "Réglez avec succès!", - "4dcde63f7fd4415f3b5eb6cb889d135c": "L'ajout a réussi", - "d303480175994c6ad240cf24a4a99640": "La configuration du site Web n'existe pas!", - "87d1f7257214d09ba39656b72c864bac": "Configuration du compte réussi!", - "aa5bb2d58da86c4b9160e94d0c4538f1": "Uri ne peut pas être vide!", - "ade0ab88aa0ee9c18f0979d5b62b517d": "L'URI existe déjà, veuillez ne plus l'ajouter!", - "506d9cb0cb2468fd09048bcbe8b37497": "Uri n'existe pas", - "cf180f27e678d4e297f690e581961417": "Le format d'adresse d'écoute est faux!", - "1ed0fa9bb8768d56bf2d3232d7067023": "Mauvaise gamme de ports d'écoute!, Exigence: 1024-65535", - "e6aa58b2f41bc53f6b84657d47eb35c1": "Le chemin de sauvegarde des données n'existe pas!", - "c87be59ecbed944c2b45fea87d62f473": "Erreur du mode IP Statistics, exigence: 0 ou 1", - "fbc4861b0190c90a5388e44d2bbac678": "La version actuelle n'est pas disponible, veuillez mettre à niveau le panneau et réessayer", - "8b1d5629a1346da21fcaeb9f8f0db6d2": "Erreur du format de début!", - "7a238977c4b13d23ac3e6b151a914cab": "Erreur de format de temps de fin!", - "a87a482f3bced3ce16bc9a351e8b5ce8": "L'heure de début ne peut pas être plus grande que l'heure de fin!", - "a0ef69b1680461368a9130e770256ca6": "Erreur de format de date!", - "2493958c6f4051bb8d254d77d77b622b": "Erreur de granularité du temps, support: minute, heure, date", - "4c4258ffd9a69c8e332346241a3cbdae": "Les données sur les conditions de négation sont dans le mauvais format!", - "b47f4e8b7540cae56e085231c3c984c1": "L'ID d'accès ne peut pas être vide!", - "fea04488a926034079dc00c5a60a9135": "Le format d'identification d'accès est incorrect!", - "da206b8971dcba715ed8cdd1a82736e1": "L'ID d'accès n'existe pas!", - "fd65e390dd8aa35ea3622658247776d0": "Le format de date est incorrect", - "9a4f1ea39f3a554d4e5431f86eb0450b": "Le nom du site ne peut pas être vide!", - "b59417ef234946819788acfde92a00a7": "La purge a réussi", - "aaa3736c0541d4a4d82193c2204ec317": "L'heure de début est dans le mauvais format!", - "e579606ed1219291caeb3bfad786dd3f": "L'heure de fin est dans le mauvais format!", - "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "Le format de date est incorrect!", - "53c85b9d96ea14f3f8224a5d2e659894": "Le paramètre ne peut pas être vide!", - "9dc21ed8c6025cab9873847e6e1ca506": "Le type de requête est incorrect!", - "236c6e2f9a266b929b283eda30c2b3b6": "Aucune donnée pertinente n'est disponible!", - "50fc65b5f19812ccf756b7ad7de7f4cb": "Session_id ne peut pas être vide!", - "8f2adb53dcb8d2c660159b1f8e8012ed": "L'ID de session est incorrect!", - "7f4419a5b09e1a04936f6aba6939521a": "Vérification de la configuration terminée!", - "f3df0751d9522bf2e68034bab4cd49a5": "Nettoyage de la configuration terminée", - "191fae10bdd9d3eb6cb110b524fe40b7": "La soumission a réussi", - "f53208c04e48d7ee19222b6adf343810": "Le nom d'utilisateur ne peut pas être inférieur à 3 caractères!", - "251e2cae1dbed2b37f7d16961a606970": "La sélection du niveau d'autorisation est incorrecte!", - "a835325a5600b6571a24111e4d318e2c": "Veuillez sélectionner un site Web!", - "a669655fa991afcfa0cfa3f62286d944": "La longueur du mot de passe ne peut pas être inférieure à 5 caractères!", - "4d8d30e66ad9aaccc738ad99d5083955": "Le nom d'utilisateur existe déjà!", - "12152390a5bf2ebce0f00b0fb5c650a2": "L'ajout a réussi!", - "4d1b7f489e07d6ca02ca1910a3884c48": "L'utilisateur n'existe pas!", - "3e83aa40dd320efb027151c02aab2871": "La longueur du mot de passe ne peut pas être inférieure à 8 caractères!", - "d3748b3102cc8ba898f0f0bec842ce9e": "La modification a réussi!", - "ac75e534c7334e1fd02c68a3993f1568": "La suppression réussit!", - "ca281da1f13858d0b599d19e18a510bf": "L'état Web est mal sélectionné!", - "c88239bc4a113ab0f02acb9bc31b3437": "Le port Web est incorrect!", - "f06e6a5985a91ac55c651e0b573378f0": "Le répertoire de sécurité Web ne peut pas être vide!", - "41a871d7ec26993be1367226321e06fa": "La durée de l'adresse d'entrée de sécurité ne peut pas être inférieure à 6 chiffres!", - "16f83d0969b9f7fe56ac3b55f9dedb26": "Cette entrée est déjà occupée par le panneau, veuillez utiliser une autre entrée!", - "066df5a1cf19314e0265a1eb396848ac": "L'adresse d'entrée est mal formatée, par exemple: / my_monitor", - "794ee58637251012717d7e565aafc2a1": "La configuration a réussi!", - "2531ce72ea98e5aa8f4953eee783b540": "Aucun journal d'erreur trouvé!", - "0fc543dae93d3f76f5f7ff8048f5c398": "Aucun IPS masqué n'a été trouvé pour l'exportation!", - "5552ac99360952da2cf289f556ad19a6": "Aucun IPS masqué n'a été constaté pour synchroniser!", - "3332452d6ecd015473b133de021a9e06": "La synchronisation a réussi!", - "e6afdb1b63ca733f5d1741c7eff7a64e": "Il est traité, ne le répétez pas!", - "696212205a77e698860ff5195992642b": "L'opération de réparation est complète", - "97cb85456b49af4258f4c8da38bb576a": "La tâche planifiée est ajoutée avec succès!", - "2739213f569742c0782252f41279c060": "Échec de l'ajout d'une tâche planifiée", - "1cc4efde4fab0b4bbc2812a8b58f59b0": "Veuillez spécifier un nom de site", - "3b5ef9e1ea5a8dbd9606075686dbf15f": "Veuillez spécifier une plage de dates", - "f8412f656685f470a82b74de3d9f24d5": "La tâche d'exportation existe déjà", - "96ed379ec1882dcf52f0ff65057efb92": "Veuillez spécifier les champs que vous souhaitez exporter", - "4e698e0709485a0e93a706964b748c5b": "Type d'exportation inconnu", - "2a2dbc12afac446fe408eb78453bc6c2": "La tâche d'exportation n'existe pas", - "9ff8782f584db728284fadd719967806": "Il y a eu une erreur avec la tâche d'exportation", - "b4421542e9cff8ce336075b668b8f87e": "Le dossier d'exportation n'existe pas", - "41564d1cd7f8ecb23bcc590cb2217518": "Veuillez saisir un nouveau répertoire de données", - "699856a3cc697d8afcfd04dcd2f0729a": "Le répertoire spécifié est le même que le répertoire actuel", - "103422cd692bcaf56a7367075caf2274": "Le répertoire spécifié est partitionné sur le même disque que le répertoire actuel, donc aucune migration de données n'est requise", - "bcbd9605d3b8753bb8afbc765b293e01": "Les tâches de modification et de migration des données ont commencé", - "967a57ad58881afe2c5da6cf0d7fce8c": "Veuillez saisir l'adresse IP et le nom du robot", - "62b73e6c2a169296e73edf8a4d1e02f0": "Veuillez saisir une adresse IP correcte", - "0e1a26f6137c04f0f80956210069e46d": "Veuillez saisir le nom de robot correct", - "fe8d50ca26f2e864d2bf4a932801bb85": "Erreur inattendue, essayez de réparer le plugin", - "21aa998a1dee8774bc88ce2a070bf4de": "Veuillez saisir une adresse IP", - "2e0c672edc06ef05e44de98ac1b7a47d": "La suppression est réussie", - "0f9d9b728fba6427b5ff4da49aee1738": "L'araignée a été sélectionnée de manière incorrecte!", - "e48c86e701ddba3ab084d5457aa58714": "L'IP ne peut pas être vide!", - "3bdb147b7a040582220aa7f1ce2af19b": "Le format IP est incorrect!", - "b60597b6a9525341fa5d4d441084658d": "Aucun enregistrement de résolution de l'adresse IP n'a été interrogé", - "86e9360dac1c5eece29f32c9aba8011d": "La sauvegarde a réussi", - "e5320166e7623b6a39f9a7af7c20c787": "Spécification d'une erreur de paramètre de site Web différent", - "c21fbb62edf94306d2e73365e6e7d637": "Le paramètre spécifiant un autre site Web ne peut pas être vide", - "c7fae0c9886cac3924fe5e459e171ab1": "La suppression a échoué", - "9a84d2910d3d36b78d7060f1c77e27f6": "Le nom du site n'est pas spécifié", - "0987458a95b8bb7d6cdf9fa0630b6407": "Le serveur actuel n'est pas nginx et ne prend pas en charge la collection personnalisée", - "b925dfe3295278bd81a85bded66da01d": "Le code d'état est dans le mauvais format", - "2a8793bbb8bc38a7df9d8c796648526a": "Aucun nom de site n'est sélectionné", - "6878600890a41b84c145423618ea2431": "Aucune information sur le site Web trouvé", - "eff712873c55654bf48eaf421a184e73": "Aucun nom de collection personnalisé n'a été entré", - "116208583eac10a8769774a6eaaff926": "Le type d'acquisition est incorrect", - "fff3d7679cb121a30e68a104b58c934e": "Le contenu de la collection n'a pas été entré", - "75db42595fc9aee34df76df808712f92": "Les noms de collection personnalisés ne peuvent pas contenir de caractères spéciaux ({})", - "9667904e74175dfde9824cb8cd099ce7": "Le contenu de l'en-tête doit commencer par $ http_", - "4c61d0ee460aa25eb6b5c413c46c9236": "Le contenu de la collection du type de corps doit contenir [$ + nginx journal variable]", - "c03680a7ae35b7ce5b62f67b854d3b06": "Le contenu de la collection doit contenir [$ + nginx journal variable]", - "d621342512cf7910a6dc4e7d736bcc63": "Le contenu de la collection ne peut pas contenir de caractères spéciaux 【", - "b4704dc559a05c5721c095b97c4dbbc0": "Le nom de la collection personnalisée est dupliqué", - "6594b670e8bd06e352f112c1bf194fc1": "Le contenu de la collection personnalisée est dupliqué", - "a531c58ef7fefbbbd79becda53ede191": "Un nom de collection personnalisé n'est pas spécifié", - "88c0c3ae4ef97b6069a35672b2caa05c": "Le contenu de la collection du type de corps doit contenir [$ + nginx journal variable]", - "41353000c0d351db90c9eec095bae879": "Il existe déjà des collections en double, nommées: {}", - "ce78b7a225f05ece35ed7adc68b08a88": "La configuration d'acquisition à modifier n'a pas été trouvée", - "521df7df29b44fcee614de96cecca61c": "La suppression est réussie", - "3b0ccb5c759b0941d50e331b22013560": "Extensions non soutenues: {}", - "7ea48870539b84996d1b1691c22823a7": "Le format de données modifié est incorrect", - "bc64045195c8ed198a69772b3a204ef2": "Les données à modifier ne sont pas spécifiées", - "bb02871a5e118841b95b69c5bff55baf": "La liste noire est dans le mauvais format", - "1aac00a8c681100fd27b287c0b0516f1": "Le format de configuration de build analyse incorrectement", - "f6df35a69157ae1fca6415b043485334": "L'ID de tâche n'est pas spécifié", - "524a477cee9485a5a80a860e2bc5b5d5": "L'ID de tâche est incorrect", - "4b5d95ed20303e337aec42486a0fb3fd": "Le site Web actuel n'a pas été interrogé", - "19e777b7c8cdc1ce56ad2f4fe735b2b7": "Le site Web actuel ne demande pas le répertoire en cours d'exécution", - "45484ac5ec748cf3362d425ed7142b75": "La règle ne peut pas être vide", - "b36196750a032a791ecc8035853dc648": "Le nom de la règle ne peut pas être vide", - "cfa7bc3b484b8068e78bc6f55a2aaeaf": "Aucune règle spécifiée", - "835365605f9e08c44c0b7f65a422d059": "Le paramètre de date est incorrect", - "4fa3e528186292138b224a0a1d46ec59": "Le nom du site Web est incorrect", - "3769ee974734f97166d6bce6b96e9b4e": "Erreurs de données", - "daddfa03b4ea762e009a36ce970b2b59": "Il n'y a pas de compte Baidu configuré", - "0379d9c081b6fd9ec2fd86e8672a4e72": "Si vous ne parvenez pas à obtenir les données, il se peut que les informations de connexion soient expirées, et vous pouvez essayer de vous connecter à nouveau", - "8057e57596c33acf04619825d625a483": "La mise à jour a réussi", - "3149165696693c4f6fef18928261a50f": "Il n'y a aucune configuration de compte 360", "74a7684631b29d814a52e3401576411a": "Le format de temps est incorrect", "f146f571f352f376dda16114593afd32": "Pas un fichier php dans ce dossier", "a5ef7f95136c8e93b70c99cdc25d3b1b": "La règle est vide ou le fichier de règle est faux", @@ -2814,7 +2913,6 @@ "e200e571a58c37376c8498c2dc506c95": "Le type [param] est faux, il a besoin de format JSON", "96ed9027cae5703401727a3d07764133": "L'URI actuel n'existe pas", "466767592170f74d16bcac3034109b33": "L'argument de chemin doit être passé", - "d81f83ae44da0682974272b976e8e550": "Récupération réussie", "c2d2481eafb29f7e1525c6c63441359e": "Veuillez passer le nom du site Web", "4950f82b4231ebbfa780bcf4eec4c545": "Veuillez saisir l'adresse IP correcte!", "abd5af540ed5a858d02b03846d94c1f4": "inexistence!", @@ -2907,7 +3005,6 @@ "215a4c6687559aa75d554670e06f3694": "L'utilisateur ne peut pas être supérieur à 10 000", "902ee0e2b591f9872a41c319c402e0b9": "La longueur du texte ne peut pas être supérieure à 200", "2307dba1bc155ca6f1a5bbf21dc4a258": "La pseudo-statique contient la directive [! -E $ request_filename], qui doit être supprimée avant que cette fonction puisse être utilisée!", - "fa5e4af74d3d68ba371e6dcf84595c3d": "Le site Web n'existe pas", "db8b3ac7a5408e3bc0d103bb9b071c7b": "Le paramètre est incorrect, le paramètre de données manque", "a0318cc60ff3297d4bef0399dc89fa8d": "Le paramètre est incorrect, le paramètre de données n'est pas au format JSON", "8b682d8c8139c2ea686c7a87a03ba292": "Le paramètre est incorrect, le paramètre de nom manque", @@ -2943,31 +3040,37 @@ "c9bbcef0c80ca1a2859dd61d0210a117": "Le paramètre [Send_Type] est incorrect", "a79ff4350874c27408a1858a88058344": "Si le canal de message d'instanciation échoue, vérifiez si le canal de message est défini correctement", "50f223163c6f8e9f6b46d66165252cab": "Arrêt du succès!", - "eee590fc0d0f3382fe436b60b02e37f0": "Les informations sur la boîte aux lettres ne sont pas configurées correctement", - "e4e7eb56340203583dd940475fc6e924": "La boîte aux lettres de réception n'est pas configurée", - "c6beb4efa41b5adbf89191be9d139c70": "Échec de l'envoi du message, le destinataire de l'échec de l'envoi: {}", - "e401ec76f9a9d1dfe7d484e6c4b49656": "Échec de l'envoi de courrier à certains destinataires, notamment: {}", + "02eef33534a6f8b3c95fc65e4f98bea9": "Informations incomplètes", + "2f45c6e0ccf998c7d31b3764e7da3751": "Les noms de notes ne peuvent pas compter plus de 15 caractères", + "6e3ce0906145a9641111ebbf7735f145": "Telegram n'a pas réussi à envoyer {}", + "27285cc132e6c145a142ae2dff054ace": "Le nom de la note ne peut pas dépasser 15 caractères", "b136ab8957d5ede7e3747fcc927a49aa": "Erreur de format de paramètre", "4ccc991965b1b5bbe3efd6b65a1cd6fb": "Le type de corps doit être JSON, les données de formulaire ou null", "b0b017688b107601f2b3439381c4c61b": "La méthode d'envoi est incorrecte", "4f4979589df1b84ac44fc64a92e2b3f3": "Vérifiez si l'option SSL est erronée", - "02eef33534a6f8b3c95fc65e4f98bea9": "Informations incomplètes", - "2f45c6e0ccf998c7d31b3764e7da3751": "Les noms de notes ne peuvent pas compter plus de 15 caractères", "85284ecbde15ff997e89e6e8f07e399b": "Les informations WeChat ne sont pas configurées correctement", - "886051a73fe04f873d814dc9823b4064": "Les informations Dingtalk ne sont pas correctement configurées", - "2d1b0e55888d196484a0bfd0f85ff71c": "La configuration de Dingtalk est incorrecte, veuillez reconfigurer le robot Dingtalk", "3fb32283f52bea8068006817c5b9b95b": "La dénigmentation est réussie", "8acd58125d3f7cc181a71926ef5c8a4b": "Impossible de créer un lien vers le cloud", + "886051a73fe04f873d814dc9823b4064": "Les informations Dingtalk ne sont pas correctement configurées", + "2d1b0e55888d196484a0bfd0f85ff71c": "La configuration de Dingtalk est incorrecte, veuillez reconfigurer le robot Dingtalk", + "eee590fc0d0f3382fe436b60b02e37f0": "Les informations sur la boîte aux lettres ne sont pas configurées correctement", + "e4e7eb56340203583dd940475fc6e924": "La boîte aux lettres de réception n'est pas configurée", + "c6beb4efa41b5adbf89191be9d139c70": "Échec de l'envoi du message, le destinataire de l'échec de l'envoi: {}", + "e401ec76f9a9d1dfe7d484e6c4b49656": "Échec de l'envoi de courrier à certains destinataires, notamment: {}", "703480d2938f7c89b563e1d731e94118": "Test Send a échoué", "fdc137942b6f2d81fa922d7ace16a94c": "Un type qui n'est pas pris en charge par l'interface actuelle", "37f17a256a93646ef0ac721096ec0ce8": "La même configuration d'envoi existe déjà et ne peut pas être ajoutée à plusieurs reprises", "2783bb2e5b99dce08138bf58d0880603": "Expéditeur correspondant introuvable", "b5a30e6f46753c06ada44d6bbd757599": "Supprimer avec succès", "81550843cd0a2d7e046cb23a868f8e8e": "L'envoi a réussi", - "6e3ce0906145a9641111ebbf7735f145": "Telegram n'a pas réussi à envoyer {}", - "27285cc132e6c145a142ae2dff054ace": "Le nom de la note ne peut pas dépasser 15 caractères", "bb8f2701fa6b013fe8aa74659ceda547": "Impossible de lire les données de la tâche.", "b12cc83d0b14fe739a930fd84d10ae8d": "La tâche n'a pas été trouvée.", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Seuls les types de conteneurs et d'applications sont pris en charge", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "La version {} pour l'application de {} n'existe pas", + "a5c1e82e4d1142b8c7e0bc1499446181": "L'ADRESSE GIT N'EST PAS DÉFINIE", + "4e24bbe093c9dfb90092a0f4e71733dc": "Le nom de la branche n'est pas défini", + "b3c02fc58b92f549f529992c8a696a66": "Le chemin du fichier zip n'est pas défini", + "eecf07d92b354565df633b06401206a1": "Veuillez sélectionner le chemin du fichier", "eb9eb53b7ac221c64f6f32c547317d22": "Le paramètre de chemin ne peut pas être vide", "0444d0f0434a4d910eb7a06039e39066": "[{}] le fichier n'existe pas", "f4c3904df3aa98458b5f99bd5519e409": "{} terminé, si le journal ne fait pas d'exception pour fermer cette fenêtre! \\ r \\ n", @@ -3011,6 +3114,9 @@ "1b6d9f6dc5480584f937681a5d9f0a80": "Informations sur le cache introuvables", "f013f8c1d30136733e3d476dbe3a238e": "La configuration mise à jour est réussie", "3d928c01114361a57fb24c42d9a1ee2d": "Échec de la mise à jour de la configuration: {}", + "795d1693702d930f7fc18edfb0f1c0d3": "Mauvaise configuration du serveur MCP", + "a16d1dbe265c57e0417ae396c3c30043": "Aucun service trouvé [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] Aucune image trouvée", "092ca03f32caffd34d3f0532836283b7": "Le fichier de script pour Deepseek_R1 n'a pas été trouvé", "17ee8c2efafe32a5d204e039e971aee4": "Moins de 1550 Mo de mémoire empêche le déploiement de Deepseek R 1", "d3eb7a147ac81b2f691a6e7ad42cc83c": "Aucun traitement requis", @@ -3062,6 +3168,13 @@ "7b016fb85c09d39e89eb1875e590a6ac": "Échec de l'obtention de la catégorie des applications, veuillez cliquer sur [MISE À JOUR Liste des applications] dans le coin supérieur droit", "20552a0ed8eef740c631cc049fd940b9": "Erreur de type d'application, veuillez passer: {}!", "c0963001ffeaec423d1be82d464d6a1a": "Veuillez passer le paramètre ID / Service_name!", + "4de8e45b499205551f4a09fd074e5246": "Paramètres manquants !identifiant", + "02e85c0a0fa01fabdb5426af13e87853": "Paramètres manquants !nom de l'application", + "d910ee67a0875a17b6e663f9e19369a4": "Ce lien d'application n'est pas pris en charge !", + "32d030406e8d755a59468a50bd385b22": "Impossible d'obtenir le conteneur", + "c8e0f1ed3c37b015ee446297591d172f": "Paramètres manquants !nom_application", + "dad9445733497150b5f2cd29a5aed506": "Le nom de l'application n'est pas légal, veuillez ne pas inclure de caractères illégaux !", + "a04daa98db618d6c2a19aeed5af39448": "Aucun fichier docker-compose.yml trouvé pour l'application spécifiée !", "75d0c803cc4694e08d99d958ef762fcc": "Le nom de domaine ne peut pas être vide!", "676c8a7788ad0ddcb68d53fc7d960679": "Échec de la création d'un réseau Baota Net.err: {}", "23d07f1e537a8809b268a60a6881f44c": "Erreur de plage de port, veuillez saisir un port entre 0-65535!", @@ -3089,11 +3202,30 @@ "2025d918448073508d336b72a7a28093": "La base de données existe déjà!", "4a8f0a2ac362e62ba4e76f52b5791f0e": "La création réussit!", "76f3f12040afb77724966e2af67ab403": "Veuillez passer le paramètre de la base de données!", + "74fd3ba5b92aa59e471161d2a585a93c": "Le paramètre model_name ne peut pas être nul", + "760a1226f2ba701b04963681ab97d575": "Le paramètre model_version ne peut pas être nul", + "2a88d88050ddcc0e28f0da4576be2232": "Le paramètre service_name ne peut pas être nul", + "fd0f83d70400b1dd9f6ae9c093638411": "Échec de l'obtention des informations sur le conteneur, l'exécution de docker-compose est exceptionnelle !", + "2aec223006d3894d3c1a48bca642c141": "Le modèle est en cours de téléchargement, veuillez vérifier les journaux plus tard", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Échec de la suppression du modèle, exception d'exécution de docker-compose !", + "d75a01e0d2c0cb8dad89216653024903": "Suppression réussie du modèle !", "bf483666a33d372f729985363d512d74": "Le nom de domaine principal ne peut pas être un DNS générique", "3c4b1f6d2d9ef27ace95adceea599588": "L'ajout a échoué et les données n'ont pas pu être insérées dans la base de données du site", "20825a634340a0b49b1a5e7f2fe47ea3": "L'ajout a échoué et les données n'ont pas pu être insérées dans la base de données du site Web Docker", "653f81d3e5516550e6d5e35abcdbe97c": "[{}] est la génération inverse du panneau, et l'authentification HTTP de [/] ne peut pas être supprimée!", "d4b66e7369e5077a3c31ad79629f0ab9": "Veuillez passer une liste de sites Web qui doivent être supprimés!", + "f0501638237d7e8f934ec55ac3ffb20f": "Si l'installation échoue, vérifiez le réseau ou installez git manuellement", + "608113c9694987fa65b22ecb164aee59": "L'environnement a été installé avec succès", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "Le répertoire apphub n'existe pas", + "7ec67f9826a24ca4a930a6e168ee9611": "La résolution a réussi", + "af2c4fa868813e47b80859a0b36e00f4": "LES INFORMATIONS GIT SONT CONFIGURÉES AVEC SUCCÈS", + "2b038e106d4ca5c11b787e16c73253ef": "Si tu ne", + "12d1b3062be6f8bb374511323c349ed7": "Veuillez d'abord définir les informations git", + "798cd5a257af539ecfe6bb44f45ee788": "L'importation depuis git a échoué", + "8170f5d37a617dcbf16fe8dd414073dc": "Importation depuis git réussie", + "6e40e5a8ad741ca4bd714fa52ef32333": "Le format de fichier est incorrect, veuillez sélectionner le fichier zip ou gz", + "c4996991c50032c9b296c11da356acb2": "Échec de l'importation :{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Importation réussie", "e48121dc556643fd31b26c190eedbad3": "Seul Nginx est pris en charge, veuillez installer nginx avant utilisation!", "135f7ef9aeb50bf7b988416b0a679dff": "Le nom de domaine ne peut pas être vide, veuillez saisir au moins un nom de domaine!", "c82b42d921224a0699f854c28c2450d2": "La cible proxy ne peut pas être vide!", @@ -3101,6 +3233,7 @@ "f68c204aa9e12e0513aa7a4569449cfe": "Les fichiers UNIX doivent se terminer avec.Lock, tel que / tmp / flash.app.verrouillage!", "5c23a6c025d7071599c70575dc858f26": "La cible proxy n'existe pas!", "2fba0b6c1602ec254b1bc06bacba575d": "La cible proxy doit commencer par http: // ou https: //!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path est le répertoire racine, impossible de fermer Show Proxy Path !", "772c6f93b20b52d5c998f4b58dbcf8f7": "Le port [{}] est illégal!", "f76df64b8f66e4f6050adf633c91c7fb": "Le site Web [{}] existe déjà, veuillez ne plus l'ajouter!", "6599f1c3d3d3760768d9023827e8edf0": "Le projet proxy inversé a ajouté avec succès!", @@ -3132,7 +3265,6 @@ "d591e0043cbf6d14950a46178a537626": "La cible proxy doit commencer par http: // ou https: //", "247d1a7dc144bd12d4c9f8797387babe": "【{}】 Existe déjà dans le proxy inverse et ne peut plus être ajouté!", "36a7891857288c55bc5d87c470212812": "Je ne peux pas être vide!", - "62dc2bbb0528fe87522c74b113883a48": "Le site spécifié n'existe pas!", "c8a68e4ff275e827bbbe348eddecbf2b": "Projet proxy inversé supprimé avec succès!", "88f9a8852b822982a9a3e839813d91bb": "Les domaines ne peuvent pas être vides!", "85fb0c03511da1e4d308fd135dec4486": "Le nom de domaine ne peut pas contenir de virgules!", @@ -3182,17 +3314,12 @@ "61e795d02f4452904f2574d936c571e6": "Le nettoyage a échoué, le répertoire de cache n'existe pas!", "3c99c479e3c65eac24272afc13cec604": "Le port https [{}] est illégal!", "b9629c2dea839825c2f1916b44a154a1": "Erreur de fichier de configuration Nginx, inventaire !: {}", - "b02ab16f5a7d45a871789d3944a41c69": "Sauvegarde terminée mais incapable de récupérer l'horodatage", - "ffad0690fefe9ebaaf4d847a42b19f90": "Le fichier de configuration de sauvegarde n'existe pas", - "46f183fbf6bd1e64702d6930667cf117": "Erreur Récupération des informations d'achèvement de sauvegarde: {}", - "b16acd08872bef5685bddff85a29f625": "Emballage de données", - "df4bb29cbb7fe7e3dbc82e961d5b5b53": "Préparer des données", - "2b2a2a0b0596507029dd0feb9485a216": "Pas de tâches en cours trouvées.Vérifiez s'il vous plaît", "32b169f72b293ef80d35435e9894f8e2": "Initialisation", "58ba018dcbe1c47ea0a293fdcee21e63": "Installation de panneau", "67355337eaf300b91de09a8083c93ebf": "Sauvegarde locale", "99e8ebaa5ad2fafe4e141574f6b4a73f": "Téléchargement de fichiers", "bd6d996cdca2252e9b99253b2a587287": "Restauration de données", + "03a2bd12e8b51af547a08985d4882d6d": "Migration terminée", "0fd957e5b2d9c535c344e9a8f86a225c": "Échec de la lecture de l'état de la tâche: {}", "181f2da22cdbf536f67e46452108d95d": "Échec de l'enregistrement de l'état de la tâche: {}", "4439b17c5e0977e0c73c643cea950424": "Échec de l'enregistrement de la tâche globale: {}", @@ -3202,15 +3329,24 @@ "37a5c6e23237ddff7185d375c34eed60": "La tâche {} n'existe pas", "f613fc3fb0aee3affafcae3477d42bf8": "Une tâche est déjà en cours d'exécution, ID de tâche: {}", "367b4a21be07204266d306508cc92dc7": "Tâche de migration initialisant", + "793c8358adb487f79f85acfdc44d54bb": "Création d'une tâche de migration : {} -> {}", "e597529fcdfa1dab69eadaf1c44088ba": "Tâche de migration créée avec succès", "c304dcebe892b468725402a369b3dd46": "Connexion au serveur {}: {}", + "d2f3c14129fe059cf6d99f1583abc23e": "[+] Connexion réussie au serveur {}", + "ae3c4e96fa1411ea25c05ce9a18ae2ae": "Connexion réussie au serveur {}", "c7203791b356c5f3faf5d8c43d54a575": "Échec de l'authentification: nom d'utilisateur ou mot de passe incorrect", + "10adeeeb866978b5ae637ae2bc13fb96": "Exception de connexion SSH : {}", "1e36faff765dbbbe631f424983a21783": "Erreur de connexion réseau: {}", "f9d5c96265bf9a99b163f5adf699cde9": "Échec de la connexion au serveur: {}", + "cd4dc264f41eda817374af0bddcea259": "Connexion à l'aide de la clé RSA", + "5e1b5e437b38bfb11b1e4853f8838d3f": "Échec du chargement de la clé RSA : {}", "fb947607c0d2814eed45d41a9e3227f1": "Connexion à l'aide de la clé DSA", + "1cc35e618813746cb1bd4658f7ac61a0": "Échec du chargement de la clé DSA : {}", "e9ba4ba778d8a0b4423c09ff6cb32726": "Connexion à l'aide de la clé ECDSA", "f618338d0d56f440d7fb1b59d8add72c": "Impossible de charger la clé ECDSA: {}", + "f579ce14b1e98ae9ad4d392279730d9a": "Connexion à l'aide de la touche {}", "696797724fc3db3f012761759f720c23": "Impossible de charger {} clé: {}", + "fa4e18c6d3b0c0fa6a5ac1303dda02a7": "Impossible de reconnaître ou de charger la clé, veuillez vérifier si le format du fichier clé est correct", "369709628dacb54949b2c711acd93968": "[*] Tenter de se reconnecter au serveur (Tentative {} / {}) ...", "88aefbc5392deac3ab63223d6d82b66b": "[!] Échec de la reconnexion au serveur, le nombre maximum de tentatives atteintes ({})", "908300abff5dfdf254726c2193f3e550": "Échec de la reconnexion au serveur, le nombre maximum de tentatives atteintes ({})", @@ -3223,8 +3359,12 @@ "88783238ef5d081aade9e63160d329fb": "[*] Reconnecté avec succès, réessayer la commande ...", "8692bb08477b83615b1ae995552e2c92": "[*] Détection du type de système d'exploitation du serveur ...", "95adf53ab7c91ed98c77d3c0e38a2a1a": "[+] Type de système d'exploitation: {}", + "2ab043e41d8fd10931cfa912b4b11bf8": "[!] Impossible de déterminer le type de système d'exploitation", + "2d23313d6e3e201771154cf99d5dab34": "L'installation de curl ou wget a échoué, veuillez l'installer manuellement", + "b44992b4430f7759108e5242176b7871": "[+] curl ou wget est installé", "4ba07005cef8f98a0625a7d1eb0a142e": "curl ou wget est installé", "e3a56811a35322959c535d38d2e91f7e": "[!] Curl ou Wget n'est pas installé, essayant d'installer ...", + "613a8be93fcd44002e549e0767c85a86": "Impossible de détecter le type de système d'exploitation, veuillez installer curl ou wget manuellement", "8a4d20948ccc8034e3118af3bb683da3": "Commencez à installer AAPANEL", "df97b5d4f31c5cd4a3611774abb6de52": "[*] Commencer à installer AAPANEL ...", "d91a58f92edb4b30de7e5399908922da": "[*] Installation de Aapanel avec la commande: {}", @@ -3243,16 +3383,20 @@ "e69d7c21f42d046b365c56045ffca873": "Démarrage du fichier de sauvegarde {} sur le serveur", "df6ecb94c7a5f06b78d0bde168e769e9": "[*] Commencer à télécharger le fichier de sauvegarde {} sur le serveur ...", "217c9c3fec268ff4d6c35bd4d5d564ea": "Échec de la création du répertoire de sauvegarde", + "2942f90ee3b191c0b98add719760e356": "[*] Taille du fichier : {:.2f} Mo", "08b57d594c99a8339461fe78ebf95f1a": "Préparation à télécharger le fichier, taille: {: .2f} mb", "2f24607a7361d721459e3a12584fd340": "Fichier déjà complètement téléchargé, sautant l'étape de téléchargement", "4d57fe7dc3462ad55cc9bb1623a3eb5e": "[*] Fichier de téléchargement incomplet détecté, tentant de reprendre ...", + "9c30f21dd1175d2e9b7503e873a52b2f": "[*] Téléversé : {:.2f} % ({:.2f} Mo / {:.2f} Mo)", + "04e05f53e1a18a781dbabae6cdd0e495": "Fichier de téléchargement incomplet détecté, reprise à partir de {:.2f} Mo", "426e1c0eadfad630c5433af2757cee8f": "[*] Début de nouveau téléchargement ...", "61eb03fffeb48e199890a5a8a24a5dc9": "Démarrer un nouveau téléchargement", + "148b2912de8b29f47dc234983554ea2b": "\\r[*] Progression du téléchargement : {:.2f}% - {:.2f} Ko/s - Temps restant : {}", "470e645fe1f07b6d4e77fc7b16b2a9a0": "Vérification de la taille du fichier passé: {: .2f} MB", + "40070e1f0867f97db0fa33039fae2063": "Fichier téléchargé avec succès", "95dd52c0ce48e72f2021dee1a7a86433": "Déliachance de la taille du fichier: local {: .2f} MB, télécommande {: .2f} MB", "f7dac1a705d6bd05b3a42086923cf932": "Téléchargement interrompu: {}", "554472ae3f1db37c67fe53e4a2fb53cd": "[*] Essaiera de reprendre à partir de Breakpoint {: .2f} MB (Tentative {} / {}) ...", - "40070e1f0867f97db0fa33039fae2063": "Fichier téléchargé avec succès", "1e6aeb0dc8e2567bdec31246c27233a2": "Le téléchargement de fichiers a échoué, le nombre maximum de tentatives atteintes", "31c53955195484e892d36d1815e2e5cd": "[*] Commencer à extraire le fichier de sauvegarde {} ...", "21ec696ab5bc206eac1cf62268824cf0": "[!] Le fichier de sauvegarde {} n'existe pas", @@ -3261,10 +3405,14 @@ "0838e64585e87c91bdfa34890445346e": "[+] Fichier de sauvegarde extrait avec succès, répertoire: {}", "0fddb4bae41a7fc9e2de8896d8cb819f": "Commencez à restaurer la sauvegarde (horodatage: {})", "5a275e6386d2d3c647f6ccecb422debc": "[*] Commencer à restaurer la sauvegarde (horodatage: {}) ...", + "e9b7b10566a85a5356096a630d64d2d7": "[*] En attente du démarrage du service aapanel...", "8d7b4f7247dec431d103af1ce34d0233": "Le module de restauration n'existe pas: {}", + "304e687ee7c78fdae6e70226f61d9708": "Exécution d'une tâche d'ajout de restauration...", "ac3f9da9a646fe10c989e74b42fe5e8e": "[*] Exécution de l'opération de restauration ...", "ac6fa0596fbb508fe61e44848548b50c": "Échec de l'exécution de la commande de restauration", "846cdc02545d18e4b5308d076aa93e95": "La sauvegarde a été restaurée avec succès", + "062ca961d059ebd358098ffdb12f42bb": "La restauration de la sauvegarde a échoué, veuillez vérifier le journal", + "f857f6dc6a146a3b125ea3253052ca43": "Démarrer la tâche de migration", "53779b59d2ae1ff96f4afdfa6bbc6c7f": "Vérifiez si Curl ou WGET est installé", "39679b63dca413a83cf5b664d46c929b": "Curl ou WGET CHECK PASSÉ", "0de6a624fa64af38f9a880430e72607e": "Préparation à installer AAPANEL", @@ -3317,6 +3465,7 @@ "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] Tâche de sauvegarde terminée (fichier détecté après le temps mort): {}", "637452f337bdc2991f23593124d62440": "[!] La tâche de sauvegarde a chronométré et ne s'est pas terminée dans le délai spécifié", "ec3a935e2442ef55924ad758e17b92cb": "Emballage terminé", + "ffad0690fefe9ebaaf4d847a42b19f90": "Le fichier de configuration de sauvegarde n'existe pas", "40379fed8ad84c0869a1b3e94f8a56fb": "Un processus de sauvegarde est déjà en cours d'exécution!", "20bf8648c4a3ea91ad3057f9aeca5f88": "Commencez à comprimer et à emballer toutes les données", "dc72aa669e82dd5ec7cff2ed35f2762d": "Compression et emballage de toutes les données terminées.Taille des données: {}", @@ -3325,17 +3474,23 @@ "c3a6378e06ff3e479a85b0f15c41cb1e": "{} Téléchargement en morceaux ...", "c722636ded0be8237386a427242ff3b2": "{} Téléchargement ...", "bb914d2441ee988dcd4d616350272f10": "Une erreur s'est produite lors du téléchargement sur {}: {}", + "8085ded0444fcde19b9ea4d365502f67": "Informations de sauvegarde introuvables", + "b02ab16f5a7d45a871789d3944a41c69": "Sauvegarde terminée mais incapable de récupérer l'horodatage", + "46f183fbf6bd1e64702d6930667cf117": "Erreur Récupération des informations d'achèvement de sauvegarde: {}", "2cb88461938b0c418391af13f65a727d": "Le processus de sauvegarde est en cours d'exécution, mais incapable de récupérer l'horodatage", "269159feb2faab7515c90b9f5de791a5": "Le fichier de configuration de sauvegarde n'existe pas: {}", "daa55a73708f906c8cee0bb87284740c": "Erreur Récupération des informations de progression de la sauvegarde: {}", "01ecbbb2b353cf4d915bbe1c1cd5505c": "Configuration du serveur", "ca3c22c9c94069053b85db0f50373639": "Sauvegarde de la configuration du serveur", + "b16acd08872bef5685bddff85a29f625": "Emballage de données", "d41c74fcc2dd04880a0285c147188bf7": "Préparation des données de sauvegarde", "806cb06592627effa1a4073fa2f66ce2": "Un processus de restauration est déjà en cours d'exécution!", "37dfdfda0ab7a98140943484fe70a76c": "Commencer à décompresser le package de données", "c415a70c8540eb59121587b3ab5d5cfa": "Commencez à restaurer les données", "c76bac64baa6fbf5c51ec144c70d91d3": "Restauration des données terminée", + "da7f5eb715a1a1a2378ee56a5ee24bbd": "Échec de la restauration des données : {}", "ca0af2ce76c89e3bfa4bad3105c21203": "Restaurer terminé mais incapable d'obtenir une horodatage de restauration", + "0f4f13d63e87130a24667c6bd4cb5e2e": "Le fichier de configuration de restauration n'existe pas", "0c5d25bf5706190b8ad0d8289a93aeba": "Erreur d'obtention des informations d'achèvement de restauration: {}", "667a68bf7113541f218081fac58f6815": "Restaurer le fichier de configuration n'existe pas: {}", "e7a91a4400b67b84e7cca61642b93f4d": "Erreur d'obtention des informations de progression de restauration: {}", @@ -3347,7 +3502,7 @@ "4c3880bb027f159e801041b1021e88e8": "Méthode", "7d3c180ded4dcc8eade80cd031ab1b5d": "Veuillez ne pas fonctionner fréquemment, veuillez attendre un moment", "37b15a5d1e4fa625ea8996de5e378a84": "Récupéré avec succès", - "b0d4998a26f5b5742ad38c4af8817e32": "Exception", + "616e012bcc90980f6ddfd2b3c17345f8": "Impossible de progresser", "9e0a136b55af822e72c8d6716d2d4bf3": "Type inconnu", "6ac0b58e56cefd76e61bc840dfad94fa": "La tâche s'est arrêtée avec succès", "b808472e703dfd53fdcb59fbe89e3436": "Exécuté avec succès", @@ -3357,6 +3512,7 @@ "f94e94b4ec479336f36fdf9fe1004b83": "Ma tâche de migration", "b100f6e1c91f013adf0ca5ce6606a89d": "Tâche de migration ajoutée avec succès", "fd0099266c1971c5c40036e615d67fd4": "Migré avec succès", + "87aa2e739755a6fea3a63876b5a1d48e": "Avec succès", "d7db03701029007097b8e0cd61a983f6": "Aucune tâche de migration actuellement", "808781229f7b019ba6a44ea3871e3b6d": "Lisez la tâche de migration FAIL, veuillez réessayer plus tard!", "e728b6a004aa5e61efd25bf815a6e290": "Démarrage de la tâche de sauvegarde ...", @@ -3370,6 +3526,49 @@ "3a02e4b05ad1b321e855aa6116699b6e": "Rappel de migration supprimé avec succès", "334afd10871f8c52a884e307d2e17ccf": "L'historique des migrations a supprimé avec succès", "2f393a2518f5668880822f47fcdb5cc0": "L'historique des migrations n'existe pas", + "df4bb29cbb7fe7e3dbc82e961d5b5b53": "Préparer des données", + "2b2a2a0b0596507029dd0feb9485a216": "Pas de tâches en cours trouvées.Vérifiez s'il vous plaît", + "d4e8a75d522d3e77ae80eadd49b0865e": "La liste des bases de données distantes est vide", + "5d806f11bb91996cafe7836b27a4e770": "Exception de connexion Redis!", + "1d69261c05f6ce03d2cab5528d443fa7": "Démarrage d'une sauvegarde des données de base de données", + "0cf1803cfdfda6f67d12fa7e1c4a25a7": "Base de sauvegarde {} Remote {} Base de données", + "32d68be800692faddb12c5252fded05e": "{} Remote {} Informations sur la base de données ✓", + "0c64283397c43effb13a2cbe818ce929": "Sauvegarde des données de la base de données terminée", + "2f7d7cfc04be64fa087e964d41cb26b4": "Commencez à restaurer la liste des bases de données SQLite", + "a1248c409fec22277ab13a6bb433188e": "Le fichier de sauvegarde de la liste des bases de données SQLite n'existe pas, sauter la restauration", + "d03ebecb5f420070192de8712926151a": "Restauration de la liste des bases de données SQLite terminée", + "ad6937d61b4d6e93a13f03308c66f2eb": "Le service MongoDB ne fonctionne pas!", + "f60644c6526c4d9afe5b20db75fc2e5b": "La sauvegarde de la base de données a échoué, le répertoire d'exportation n'existe pas!", + "161bb420493657920405937a2cf42c96": "La compression de sauvegarde a échoué!", + "20a42330f9241c13c91e3e203449a8a6": "Manque d'outil de sauvegarde, veuillez d'abord installer PGSQL Manager via Software Store!", + "7eff7c4aeb6bfe736f8a78c0096f92c7": "Veuillez d'abord définir le mot de passe de l'administrateur!", + "6e907b499869ab16105a7aba198e13a7": "Le mot de passe de la base de données est vide!Veuillez d'abord définir le mot de passe de la base de données!", + "d8a3336243e1c08e8a29c75af1eb528c": "Initialisation MySQL réussie !", + "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL redémarrera, veuillez patienter ...", + "73af95fd2322196e0d9792df4ca1f566": "Initialisation MongoDB réussie !", + "8c9718f3235e7c36c9f400bc68db1ef5": "Échec de l'authentification définie par MongoDB !erreur: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "Initialisation PostgreSQL réussie !", + "c46866b7bc29cf9d478835bda10e43ce": "Initialisation Redis réussie !", + "4e889bbbfc5e25ebf611e5764b8a358c": "Commencer à restaurer la base de données", + "c9206e74b8d32e1e0a5710c0fe322cee": "Restauration de la base de données {} {}", + "ecea29915732c5d0001ece74601f3d20": "{} base de données {} ✓", + "b61a878149263a02fa99cc635409ee25": "{} base de données {} ✗ ({})", + "3fa7c5a9beafa67bb44999cab5cff52c": "Échec de la restauration de la base de données {} {} raison: {}", + "e89775cca910deb5e484f631606cceb1": "Restauration des données de la base de données terminée", + "9750547146e22f364299bc5f561a3fb6": "Commencez à restaurer la base de données distante", + "23f2db47eb6ff16785e5a222c8657f93": "Restauration de la base de données à distance terminée", + "b17f6f187c4ecfd392c6367ec2ba6498": "{} L'ID de sauvegarde n'existe pas, l'importation terminée", + "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} L'ID de base de données n'existe pas, la récupération des données terminée", + "611881e9f5d01b22a447c282aa8aca23": "MySQL Database {} existe déjà", + "ea31cbc6134300ca816c913d227b605f": "Échec de la base de données {}.Raison: {}", + "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "La base de données existe déjà, ignorer la restauration SQL", + "556843e4a406b780b0cf83c43366a8dd": "Importer réussi", + "af71c2c0e3813c9a77fe48507ea8e4d1": "La base de données MongoDB {} existe déjà", + "84b4d8c8cdd02488c0f868e97b22a3c2": "Création réussie", + "10aec3a9e9564a9851c117b259245136": "La base de données existe déjà, sautant la restauration des données", + "b819d4259ca3ab0042562acea69e83e1": "Base de données postgresql {} existe déjà", + "31b21eca2e62de420cf05e8135089114": "Le fichier de sauvegarde n'existe pas!", + "3eed4851380704f25eec3921befde38f": "Restauration réussie", "cbea0a592d6a3c48f2418d687cf54200": "Commencez à sauvegarder les données du terminal", "e7e06b2dd59401dcf79acf2e3124d2fb": "Sauvegarde des données du terminal terminée.Taille des données: {}", "a273d4d4d0cf13abc1d7a4f96b8c851e": "Commencez à restaurer les données du terminal", @@ -3380,6 +3579,7 @@ "ce693968cbf6e5f66af91e3dd2317d78": "Règles IP de pare-feu ✓", "7ebd5e6b35357be0d5079f674f68ed8f": "Règles de transfert de pare-feu ✓", "8dfa78d85bb1d152b0cafe398b27e1ae": "Règles de la région du pare-feu ✓", + "927bb2298acc2c29d1beaff4d1656371": "Sauvegarde des données du pare-feu terminée", "d076d2dde53272dc55d47f34a465ebef": "Initialisation des données de pare-feu", "3e0b3a3e90cc4a1f5abbf3fd1a38c2b7": "Installé.", "d1b0c3d7a1b5f80626ec1a2395b4f990": "Démarrage de la restauration des données de pare-feu", @@ -3398,13 +3598,28 @@ "6331b46ffa70ff97b558022d5ae8098a": "Démarrage du pare-feu", "1bb2a65f17d7e3c685f36f7ff1794338": "Redémarrage du pare-feu terminé", "246f6edb1d9df9b3abe78fc810876c28": "Échec de la restauration des données du pare-feu: {}", + "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "Commencez à sauvegarder les données du site", + "c886466d255b20be0dbde7f1b44b7f20": "Sauvegarde {} Projet: {}", + "7ecf25c18499d663d2e636d0a99f73a3": "{} projet {} ✓ ({})", + "0fc5eeb9bebed19653578a5df99d3e6e": "Sauvegarde des données du site terminée", + "9a2e8778b2a816fedb9f83afadcc2341": "Commencer à restaurer les dépendances Python du site ...", + "fd16d36423b43735556724e0395e8f91": "Site Python Dépendances Restauration terminée", + "bbf57ca8231bce958a3e528a08491874": "L'insertion de la base de données du site a échoué: {}", + "389f018ba17dc25cb23a5300d8f630db": "Le répertoire de sauvegarde du site n'existe pas: {}", + "21654e03b247d5e25abaa0ad542883c0": "Commencez à restaurer les données du site", + "c8cecd19f4f4a680a5879f828d1c5578": "Restauration {} Projet: {}", + "35850d3654332477522ee06c756a3c85": "Échec de la suppression du répertoire du site source: {}", + "c88b730f7a6a312159272ce532947de2": "{} Projet: {} ✓", + "24ee51964e4ece856493ca28fdb075ed": "Restauration des données du site terminée", "483829cb5ae13bb190eb59acdf4f3231": "Commencez à sauvegarder les données du serveur de messagerie", "8c7a0774ab14bae83a69b8562102fb0a": "Sauvegarde des données du serveur de messagerie terminée.Taille des données: {}", "e8480272035737a247832288f618c270": "Commencez à restaurer les données du serveur de messagerie", "e058c7e1fd9cd1a4fd7ac7240a7765d2": "La restauration a échoué, le fichier n'existe pas", "6e6e9dcfdf7bd846ab85a4ff0e0e2f95": "Restauration des données du serveur de messagerie terminée", + "1502c42b339a3dfe20e4c95186b38dc3": "Commencez à sauvegarder les informations du compte FTP", "b5cf2f2c48fb5978825d3341759dd6d6": "{} utilisateur ✓", "120446d8a303de2396a1bb62ba8e8755": "Échec de la sauvegarde des informations du compte FTP: {}", + "b18010e000c073a3587a89b2931c2770": "Sauvegarde des informations du compte FTP terminée", "c9073077bfd7adb73cbe253177b08833": "Restauration {} compte", "c5df3d6bec6157b48fb24bf8fe2a2add": "FTP Création a échoué: {}", "f3f8d4ba630fa6a7de1e9f4e34bad5dc": "{} Compte ✓", @@ -3425,12 +3640,15 @@ "0010c09bd9f322c3b88a89dd0b52c831": "Données de pare-feu Nginx ✓", "427ad80bf462a92719fcff5c1a1be755": "Pare-feu nginx ✗", "29ad27f749c3f913779d432115de597f": "Commencez à installer le rapport de surveillance du site Web", + "66f3f8adc854963e94a643b706157309": "Rapport de surveillance du site Web ✓", "a0dded50b067929299258b3c8fc1b0e6": "Commencez à restaurer les données du rapport de surveillance du site Web", + "bd43add14ebbd0f448c207c48e1d5ac8": "Données du rapport de surveillance du site Web ✓", "a7b8bc831a9b36cc5127b5f8ecbec22a": "Rapport de surveillance du site Web ✗", "c922c95c5f7973050d08412a26aab462": "Commencez à installer une protection contre les entreprises", "31d844f4dd95b8a71e8ddbd1b9912ae5": "Protection de sabotage d'entreprise ✓", "8fcd5da199e1e04830a686a576a2e914": "Commencez à restaurer les données de protection contre l'entreprise", "941b78173e944c6737a858bada098311": "Données de protection contre les entreprises en entreprise ✓", + "50bcd3813a4b18663b0bdc29f73b8c90": "Protection contre la falsification d'entreprise ✗", "cdcfb9e176572fe14bdc4c88474d8baf": "Commencez à installer le durcissement du système", "4d86b9c9f554fa3d477a86d2f62aaa1b": "Durcissement du système ✓", "5633c4d754985da6c7fab116964ac501": "Commencez à restaurer les données de durcissement du système", @@ -3442,6 +3660,7 @@ "025de5f8c791241d326ec4e086e9898e": "{} [{}] Le certificat a expiré ✗", "ecd204c03ea44719e6fa4ea25569266a": "{} {} ✓", "aa6b67db23e9cb0b943aa6c0def92cb4": "{} {} La sauvegarde a échoué: {} ✗", + "ec56d7aedc9c5242d094ebbaeda5047e": "Sauvegarde des informations du fournisseur d'API DNS terminée", "b561b1ca5fd89d639144a099f5fe096d": "Bauche de sauvegarde des informations sur le certificat SSL terminée", "7aa422d849ba11b569187382a3a509d1": "Restauration de sites de déploiement pour certificat {} ...", "4573d024bbb8e1f8c8efb2582a6a01c0": "Sites de déploiement restaurés pour certificat {}: {}", @@ -3451,6 +3670,7 @@ "41596c0d36a66c44434d5882c3cfa793": "Panneau de déploiement restauré pour certificat {}: {}", "6ffcb0a3e8cdf728b3e7bc45ae221e5a": "L'insertion du certificat a échoué, veuillez vérifier le journal", "c8a71420e709d8a4d02914a78d9a0e06": "Commencez à restaurer la configuration du certificat SSL du domaine", + "0672a3dc402dc9657fd0a0f1580d1c12": "Aucune donnée de restauration trouvée", "52f23f668fced51c3e25c781299fbff8": "Le répertoire de sauvegarde {} n'existe pas, incapable de restaurer les informations de certificat SSL", "ad93ef11d3e4238618571f517e11e80d": "Restauration {} Sujet: {}", "c49480308ee71202cc5fff5ea96eaaed": "Le fichier de certificat n'existe pas", @@ -3461,46 +3681,6 @@ "ff0550fa0270ac20419790a51900d815": "Achèvement de la tâche de sauvegarde Crontab", "a7609aefd5330a1384704e73dc0b4dc0": "Commencez à restaurer la tâche Crontab", "48ed083561c2f201d9fe52f6a35ee982": "La tâche Crontab a été compliquée", - "d4e8a75d522d3e77ae80eadd49b0865e": "La liste des bases de données distantes est vide", - "5d806f11bb91996cafe7836b27a4e770": "Exception de connexion Redis!", - "1d69261c05f6ce03d2cab5528d443fa7": "Démarrage d'une sauvegarde des données de base de données", - "0cf1803cfdfda6f67d12fa7e1c4a25a7": "Base de sauvegarde {} Remote {} Base de données", - "32d68be800692faddb12c5252fded05e": "{} Remote {} Informations sur la base de données ✓", - "0c64283397c43effb13a2cbe818ce929": "Sauvegarde des données de la base de données terminée", - "2f7d7cfc04be64fa087e964d41cb26b4": "Commencez à restaurer la liste des bases de données SQLite", - "a1248c409fec22277ab13a6bb433188e": "Le fichier de sauvegarde de la liste des bases de données SQLite n'existe pas, sauter la restauration", - "d03ebecb5f420070192de8712926151a": "Restauration de la liste des bases de données SQLite terminée", - "ad6937d61b4d6e93a13f03308c66f2eb": "Le service MongoDB ne fonctionne pas!", - "f60644c6526c4d9afe5b20db75fc2e5b": "La sauvegarde de la base de données a échoué, le répertoire d'exportation n'existe pas!", - "161bb420493657920405937a2cf42c96": "La compression de sauvegarde a échoué!", - "20a42330f9241c13c91e3e203449a8a6": "Manque d'outil de sauvegarde, veuillez d'abord installer PGSQL Manager via Software Store!", - "7eff7c4aeb6bfe736f8a78c0096f92c7": "Veuillez d'abord définir le mot de passe de l'administrateur!", - "6e907b499869ab16105a7aba198e13a7": "Le mot de passe de la base de données est vide!Veuillez d'abord définir le mot de passe de la base de données!", - "04c651a70b89bd4fd8fc8702c0bf61e9": "La sauvegarde de la base de données a échoué, le fichier d'exportation n'existe pas!", - "982c5a05ac4dbaee10c865ba767b2249": "MySQL DB Synchronisation ...", - "a9ace5523668233a3867f26cc86e29c9": "MySQL DB Synchronisation terminée.", - "c15645e9ad579e4bfcb536bc5d7015c3": "Commencez à restaurer les données de base de données", - "c9206e74b8d32e1e0a5710c0fe322cee": "Restauration de la base de données {} {}", - "b61a878149263a02fa99cc635409ee25": "{} base de données {} ✗ ({})", - "3fa7c5a9beafa67bb44999cab5cff52c": "Échec de la restauration de la base de données {} {} raison: {}", - "e89775cca910deb5e484f631606cceb1": "Restauration des données de la base de données terminée", - "9750547146e22f364299bc5f561a3fb6": "Commencez à restaurer la base de données distante", - "23f2db47eb6ff16785e5a222c8657f93": "Restauration de la base de données à distance terminée", - "6aca7aec516bcaf7ded80873f08dd55c": "MySQL Initialisation réussie avec le mot de passe {}", - "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL redémarrera, veuillez patienter ...", - "a692f58dc09f3e41c133ea460ff3b8df": "{} La restauration du mot de passe de la base de données a échoué.Raison: {}", - "b17f6f187c4ecfd392c6367ec2ba6498": "{} L'ID de sauvegarde n'existe pas, l'importation terminée", - "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} L'ID de base de données n'existe pas, la récupération des données terminée", - "611881e9f5d01b22a447c282aa8aca23": "MySQL Database {} existe déjà", - "98b38cd2445396b44204b7201a33f64b": "Échec de la restauration des autorisations d'accès à la base de données.Raison: {}", - "ea31cbc6134300ca816c913d227b605f": "Échec de la base de données {}.Raison: {}", - "556843e4a406b780b0cf83c43366a8dd": "Importer réussi", - "416ad8b141103f9704100ce4070c5975": "La validation d'enregistrement de la base de données a échoué, la restauration s'est arrêtée", - "84b4d8c8cdd02488c0f868e97b22a3c2": "Création réussie", - "10aec3a9e9564a9851c117b259245136": "La base de données existe déjà, sautant la restauration des données", - "b819d4259ca3ab0042562acea69e83e1": "Base de données postgresql {} existe déjà", - "31b21eca2e62de420cf05e8135089114": "Le fichier de sauvegarde n'existe pas!", - "3eed4851380704f25eec3921befde38f": "Restauration réussie", "e9ed6b2a27deb5699565f0441dc713e9": "Commencez à sauvegarder les informations logicielles", "e690c7866c5dbacbbc7860af5e6a3af1": "Sauvegarde des informations logicielles terminée", "cabf299a6cfa5874e23582c535f301c6": "Commencez à installer nginx- {}", @@ -3510,21 +3690,12 @@ "2de6c0aa3c26285104f898b368bcf287": "Commencez à installer le nœud - {}", "7d5cf115afd8be7c2a36d03b31d1ce44": "Commencez à installer Mariadb- {}", "92e77c2b107f440d6d54062228112f73": "Commencez à installer mysql- {}", + "4b09abb2edd44a4510395a297a2ff155": "Commencez à installer mongodb-{}", "69fa45968c5cc7a9115bff54e70c95c1": "Commencez à installer memcached {}", + "fbabb869ff01746bd144289622b277fc": "Commencez à installer redis-{}", + "da7d69765f1876fba52c21a17e8c74c6": "Commencez à installer postgresql-{}", "99782b6a478e499d45a91f9d78e1c73a": "Commencez à installer phpmyadmin- {}", "640c4e334dc9587e212d36e685059478": "Commencez à installer FTP- {}", "aecfeaaa9e3bcff1f6169598772e90c0": "Commencez à restaurer l'environnement d'exécution du panneau", - "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "Commencez à sauvegarder les données du site", - "c886466d255b20be0dbde7f1b44b7f20": "Sauvegarde {} Projet: {}", - "7ecf25c18499d663d2e636d0a99f73a3": "{} projet {} ✓ ({})", - "0fc5eeb9bebed19653578a5df99d3e6e": "Sauvegarde des données du site terminée", - "9a2e8778b2a816fedb9f83afadcc2341": "Commencer à restaurer les dépendances Python du site ...", - "fd16d36423b43735556724e0395e8f91": "Site Python Dépendances Restauration terminée", - "bbf57ca8231bce958a3e528a08491874": "L'insertion de la base de données du site a échoué: {}", - "389f018ba17dc25cb23a5300d8f630db": "Le répertoire de sauvegarde du site n'existe pas: {}", - "21654e03b247d5e25abaa0ad542883c0": "Commencez à restaurer les données du site", - "c8cecd19f4f4a680a5879f828d1c5578": "Restauration {} Projet: {}", - "35850d3654332477522ee06c756a3c85": "Échec de la suppression du répertoire du site source: {}", - "c88b730f7a6a312159272ce532947de2": "{} Projet: {} ✓", - "24ee51964e4ece856493ca28fdb075ed": "Restauration des données du site terminée" + "3b83e3fdb17c70ca190e263e0bd7173e": "Ignorera l'installation si le même environnement existe" } \ No newline at end of file diff --git a/BTPanel/languages/ind/server.json b/BTPanel/languages/ind/server.json index 78fac29a..903e6c80 100644 --- a/BTPanel/languages/ind/server.json +++ b/BTPanel/languages/ind/server.json @@ -14,64 +14,30 @@ "4cc4ddc196a295ee4ab82daec08f91a6": "Situs tidak ada", "25bb121145f918572eea2ef07ff8e89c": "Kesalahan cadangan", "f8320b26d30ab433c5a54546d21f414c": "PALSU", - "4bbfcde12aa36ec375a332f51bf905d6": "Per hari", - "60956b50bb8e8c711d3adb889a70137f": "Per hari, jalankan di {} jam {} min", - "78748f15bb65939b6d130c3a5cf8b7dc": "Setiap hari", - "cf9af10dcebe2f12092ff6028a535f08": "Setiap hari {}, jalankan di {} jam {} min", - "e114abed903b9d26c476d4f6cd59c04b": "Per jam", - "0aef48ea8132b0551fa25a10fd0a6585": "Per jam, jalankan di {} min", - "50419faf9662e0c3f283d496bcb8eb72": "Setiap {} jam", - "2a0706d7e3ca3ce9e955471a0648dfcc": "Setiap {} jam, jalankan di {} min", - "84d94bf0382f611906b7edd65d6af169": "Setiap {} menit", - "14d27796d1c96457c7c019661a2f32d4": "Jalankan setiap {} menit", - "6c25e6a6da95b3d583c6ec4c3f82ed4d": "Mingguan", - "e1df614d393ab86fd63c5062f7e77936": "Setiap {}, jalankan di {} jam {} min", - "9030e39f00132d583da4122532e509e9": "Bulanan", - "69c5e99b9ad8d2b8f11be9a60cbf71da": "Bulanan, jalankan di {} hari {} jam {} min", - "9d1a0949c39e66a0cd65240bc0ac9177": "Minggu", - "6f8522e0610541f1ef215a22ffa66ff6": "Senin", - "5792315f09a5d54fb7e3d066672b507f": "Selasa", - "796c163589f295373e171842f37265d5": "Rabu", - "78ae6f0cd191d25147e252dc54768238": "Kamis", - "c33b138a163847cdb6caeeb7c9a126b4": "Jumat", - "8b7051187b9191cdcdae6ed5a10e5adc": "Sabtu", - "e00d5128f631253b7b6ed8d5454c0c81": "Tidak dapat menulis ke file, silakan periksa apakah [System Hardening] diaktifkan!", - "685689743579a8f09fcec5d7df04e39e": "Nama tugas tidak bisa kosong!", - "a5c04aced897c770105858268324b53f": "Tugas saat ini menonaktifkan status, buka tugas sebelum memodifikasi!", - "85305ee6be0f078791c7437ec54dda12": "Gagal menambahkan", - "08a1ce771119bb393fa49478216ae809": "Log kosong", - "b8fd4dbe5c3650beaec0a3d44d7f0245": "Log dikosongkan", - "ff47c70e853d0b3635935be883b018e9": "Gagal mengosongkan log tugas!", - "e0c4da1afd18acbb66bc5fac261a42ef": "Tugas yang ditentukan tidak ada!", - "998ad6f12ce5285a1b72d4265d9b36cc": "Berhasil dihapus", - "e274abcaad0a7fff74d9adb67e578d5f": "Gagal menghapus", - "38fa2d4f8f9a13062c0c9007d97f6a84": "Gagal membaca file!", - "f57d5686d9dd67f0e81924de8d13af95": "Tugas telah dieksekusi!", - "0b1c93d38c86c8d379886293cdf8ba66": "Tugas dibatalkan!", - "d5ef96e383d376beeec28da7acfea516": "Unduh file", - "f24f6c5f5841340f898a6baaa6478bcd": "Unduh File {}", - "b2d87dda66a4643c6cf673f787c5f226": "File konfigurasi tidak ada", - "9fdd777388a418cef77bce46c1b2511a": "Format kompresi yang ditentukan tidak didukung!", - "4fa407ee74026903dc3013d0b2471eac": "Kompresi berhasil!", - "ece43dcaac9352f58c422e500266a927": "Uncompression berhasil!", - "b9c1dcb37c44dca19765636de065b1c1": "Cadangan berhasil!", - "ac4eb62573e34c36ff426c8a6360c781": "Kesalahan cadangan!", - "438ca4ffcf6fbd44ec129e73a24f0deb": "Pilih file SQL/GZ/ZIP!", - "0edfb4a54d6cf45209a6c7929b8b9919": "Database yang berhasil diimpor!", - "b0698ab9adefa7515299f311c725ba4d": "Clear Sfollow berhasil", - "8611f56e253646a455ceeb020052fa97": "Gagal memodifikasi", - "bef28b813bf12be3924925bbb62883dd": "Dieksekusi dengan sukses!", - "fda63bff3e0143980e5761376859b00b": "Eksekusi gagal, periksa apakah Apache diinstal", - "22012355700877ab73f89de8014ab20b": "Kesalahan konfigurasi aturan apache:
Gagal mengaktifkan:

", - "9848c96a046adb1759233241661ff694": "{} layanan gagal dimulai", - "6ed577cdce37bbd9c66871ac1677dc53": "Layanan berhenti gagal!", - "572e5703371c43aae299181c0e3567d4": "Silakan jalankan program saat semua tugas menginstal selesai!", - "c7138b4b5f7ded833942aef4e230771d": "Perintah berhasil dikirim!", - "d56f0ed99825b4d62ab84753a65f7f1e": "Panel restart", - "bff9ef87fdda677f86ae6dddec54a104": "Tidak ada versi PHP yang kompatibel yang ditemukan, silakan instal dulu", + "18928426418954e3a8bc166c892af5c5": "Nama pengguna atau kata sandi tidak bisa kosong!", + "14422683e14b8a03fd02b84480703c41": "Anda telah gagal masuk berkali -kali, silakan coba lagi di {} detik!", + "179b0ad118200b66c6e90535d9d8ad4f": "Inode disk telah habis, panel telah berusaha melepaskan inode.Tolong coba lagi ...", + "7edd0140c2f050286273be74039b1df7": "Verifikasi gagal, silakan segarkan halaman dan masuk lagi!", + "9a9b0bf6269ba974cc6a00bb0f0de1d0": "Kode verifikasi tidak bisa kosong!", + "2b7ae590e0538e70b7a359a94d30f1f4": "Kode verifikasi salah, coba lagi!", + "21f763b26858bf8ff40f931d714ab106": "Nama pengguna atau kata sandi yang salah , {}", - "6e264f3408e9b769d3fb7e2c807f301f": "Operasi gagal.Harap periksa apakah kuncinya benar", - "d4ac5985eccd334896e3cf23706e43b0": "Ditambahkan dengan sukses", - "92188d43af4373bacbf00951da16532a": "Gagal mendapatkan jalur situs web.Silakan periksa apakah ada situs web", - "ceaefd9a46d78491b9fdb912b5c71eeb": "Gagal membuat file validasi.Periksa apakah tulisannya diblokir", - "1bb3608b1bc684c3dc85090db249346b": "Tidak ada informasi sertifikat yang diperoleh", - "c8c7de7f5b740307d55affea39b79993": "Pengaturan berhasil", - "131c05252110792212e3e3666a351154": "Konfigurasi Terkait SSL, Jangan Hapus atau Modifikasi Baris Berikutnya dari aturan 404 yang dikomentari", - "4ba7e24ac1607ab761c124ca7352ad08": "Konfigurasi halaman kesalahan, diizinkan untuk dikomentari, dihapus atau dimodifikasi", - "31bb30ca4135945adbe0c2daa9545b39": "Konfigurasi referensi PHP, diizinkan untuk dikomentari, dihapus atau dimodifikasi", - "f9da3e5ae75ce0ae39884ae2ea295a66": "URL Menulis Referensi Aturan RE, modifikasi apa pun akan membatalkan aturan penulisan ulang yang ditetapkan oleh panel", - "73e1f7d487ad73d55414fe26ea11cbf0": "Tidak menentukan parameter [sitepath]", - "6aabca3a3e1c79bd5837a1ddae95fe70": "Ada kesalahan yang membuat, coba lagi.", - "256c9a85375f57f2dc9f6f318c6578f1": "Buat situs web [{}] dengan sukses", - "481df7dbcd4c0317088bde8c913d5893": "Silakan isi jalur situs web", - "b1b2484c013c646d7f41d6b2f495b6ef": "Jalur situs web tidak dapat menjadi direktori root [/]", - "1c3bff99564f1370a5b1bf6c0773f8c4": "Silakan periksa apakah format [email] benar", - "af9091566e669f016edf16ba97464cbe": "Kata sandi sangat lemah, jika Anda pasti menggunakannya, silakan centang [Izinkan kata sandi lemah]", - "b0dbad478d4f07c38aec8f440ed98b66": "Harap instal MySQL dan PHP terlebih dahulu!", - "46491fef7553177ef58a55b2db917072": "Tolong jangan atur direktori root situs web ke direktori utama sistem:
{}", - "59d5fef323e89ded50ed6036848a97f3": "Format parameter WebName salah, itu harus menjadi string JSON yang dapat diisi", - "078a3d3e263be2851ddfd9fa059d098f": "Rentang port salah!harus antara 100-65535", - "50370024fdd22dc69099a46d011b20e2": "Versi PHP tidak bisa kosong", - "44bd68c6703adf65ff21c63e9a876aa1": "Format domain primer salah", - "23eded6de9c06451f67ecb7ed3a8c95b": "Domain primer tidak bisa menjadi rekor DNS wildcard", - "f54249d2613e48be05837ec9cd615a5f": "Situs yang Anda coba tambahkan sudah ada!", - "b537e2d1946d559d3de4fb3c045d290f": "Domain yang Anda coba tambahkan sudah ada!", - "f91c641aef33cf8ef4a29bc5d3a7193a": "Gagal menambahkan, tulis kesalahan configuraton!", - "c3c7869d22051eaa78a831834a398351": "Ada kesalahan yang dihapus, coba lagi.", - "e2d272e229674e4c6765fab24a323604": "Hapus situs web [{}] dengan sukses", - "aa5f20e061736fe68a915163e7e6d122": "Situs yang ditentukan tidak ada", - "f11e72daff0ce484f4c401bd0bd28ae5": "Situs yang berhasil dihapus!", - "c57d58c6bbd34144325871d75b42a577": "Harap masukkan nama domain host", - "5c7b7c2f6ed78eefdd77aaa3dddde61a": "Domain tidak bisa kosong!", - "ef446d50df1605a582f9b44b57327536": "Format nama domain salah!", - "68ae44808f90043dee02358ee768bf6e": "Format domain tidak valid!", - "1628c2a26ab6d1211b435f85782f8acc": "Nama domain yang ditentukan telah terikat oleh situs web [{}]", - "925dc658ddf0f69509632848bcd39577": "Nama domain yang ditentukan telah diikat oleh subdirektori situs web [{}]!", - "7b02cf82181f516626a36b86c6a686f5": "Situs yang berhasil ditambahkan!", - "9b3c4205f2f408790c9c1c5da53c3bfb": "Gagal mendapatkan versi PHP!", - "abc3db87d5608cc9559556468a696a35": "Pilih nama domain", - "7807e17f2bf49fb802bba1a04822ea16": "Pilih port", - "e5925c3a126a66c0565df6d8ef49550e": "Domain terakhir tidak dapat dihapus!", - "17088ffed1e537b917a6ecc9dc957159": "Kesalahan kunci pribadi, silakan periksa!", - "26924bd958e212f07c31b6ffca9cbf8c": "Kesalahan sertifikat, silakan periksa!", - "44e2c1c3cfd8d248d7c9190a8f07c0ee": "Kesalahan mendapatkan sertifikat", - "fc0d039d9dcf3905ae8032c9cb33f475": "Kesalahan:
{}", - "ddc2be35a5ed0bf09a88139c4ad10b4a": "Sama seperti jalur asli, tidak perlu berubah!", - "84a8921b25f505d0d2077aeb5db4bc16": "Statis", - "ad74aa2854e988c3157f92e0120bb19e": "Apache2.2 tidak mendukung multiphp!, {}", - "4018ce634a10d352867f04962f107c14": "Ada pengaturan kesalahan, coba lagi.", - "f1bef4fd5183ae83a5896c32a3d5e81d": "Konfigurasi PHP khusus hanya mendukung Nginx", - "879e0d022ff268704f93a7e2b504c224": "Konfigurasi koneksi PHP tidak dapat kosong saat menyesuaikan versi!", - "73d6e709b568b43405052cec999798c5": "Format konfigurasi koneksi PHP salah, silakan merujuk ke contoh!", - "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "Soket UNIX yang ditentukan [{}] tidak ada!", - "751ac8fd72a0acd79772370efcae9c89": "Tidak dapat terhubung ke [{}], silakan periksa apakah mesin dapat terhubung ke server target", - "3cb7d414f8ae92b2b29057f91346f7dc": "Pengaturan Gagal, tidak ada item konfigurasi terkait-PHP-XX yang ditemukan di file konfigurasi situs web!", - "c7a6a892c6cdfc9b0fedefb0a1d2083a": "Direktori yang diminta tidak ada", - "4622561ceaaecb6ef7dd51e65c9f4ec5": "Direktori dasar dimatikan!", - "e4ec1f40794bdf92e7261e6e0c51895a": "Direktori dasar dinyalakan!", - "eeddf79f68ffe029ed83fddcba46b35f": "Proxy lama", - "1592678472ea1b601fd74abff47c56b1": "Tidak bisa mendapatkan target url", - "18edd294853d381dbe0d612ab58bc123": "Kesalahan terdeteksi dalam file konfigurasi.Harap selesaikan sebelum melanjutkan", - "8b5899be4df3aedb03c6fbad9055ed1c": "Nama basis data tidak bisa lebih dari 40 karakter!", - "111376d92c49c1a6c1522a2ef1dac23c": "Nama proxy terbalik atau folder proxy sudah ada", - "09a988aa2e3185fce9fa8f4e8710b862": "Tidak dapat mengatur proksi direktori dan global", - "012a8e497feddccb8e4a47aa5e2dc156": "Harap masukkan nomor", - "90da7d2de9aa12ec32ee04172ca0d2d3": "Kirim Kesalahan Format Domain:", - "440544138d3ed8a2229792c88bad3bd8": "URL target tidak dapat diakses", - "faf2457853593b3296699c4adacc7825": "Harap masukkan konten yang akan diganti", - "748e5ad33460a17cf26c8024bb0a1620": "Konten yang akan diganti tidak bisa sama dengan konten yang akan diganti", - "195d5db9e1559f06348715bc3a822036": "Proksi terbalik global sudah ada di file konfigurasi/vhost penulisan ulang/nginx", - "cc38d47ec9ac62ffc67a5db9c08d5d52": "URL tujuan tidak bisa kosong", - "fb79afbbe0688565b7894b644dfd798d": "URL target tidak dapat [http: // atau https: //], silakan isi URL lengkap, seperti: https://aapanel.com", - "29c9da826ae868c8c6444328f48bcf40": "Proxy terbalik saat ini tidak tersedia untuk situs WordPress yang menggunakan penyebaran satu klik", - "a59dfc3ae22fd96d46011503a4f40744": "Proxy ditangguhkan", - "118f77feff598376a776af9b8e738efc": "Disimpan dengan sukses", - "078bb5f960587121c7cd606ddba5ad58": "Harap aktifkan proxy terbalik sebelum diedit!", - "fe7185cec796e18d58f8e84dc4da946f": "Saat ini hanya mendukung Nginx", - "222a267cc5778206b253be35ee3ddab5": "Saat ini", - "38441d4a89765279852ca2830aa89c83": "Aturan Penulisan Ulang URL Baru telah disimpan!", - "c27a45bf16475a157ca1014cf886bb56": "Harap masukkan catatan", - "9a962a24e9b7b07800d6b7c7efd86f30": "Nama pengguna atau kata sandi tidak bisa kurang dari 3 digit!", - "7eb904262649f9b2e4ba52e2bba9db71": "Format kata sandi salah, jangan gunakan simbol khusus untuk dua digit pertama!", - "492c7f01035f1cf9b88756f897f02b87": "Kesalahan, domain primer tidak bisa menjadi alamat IP!", - "0a2b8c4a98495f6af19be9c1c342844e": "Berhasil, harap uji program JSP!", - "49281f9c7680652b1d110625da5c8cca": "Pemetaan Tomcat ditutup!", - "ec3b07b78fd4f3307c84858957ddbd0f": "Dapatkan Path Run Situs Salah", - "02e602e968050352febfc4ddcae332f0": "OpenLiteSpeed ​​tidak mendukung pengaturan situs default", - "362538d60f495840284c667e67831b16": "Direktori Pindai", - "4f137439eb93e6c752873c8af2d3d1cb": "Tugas pemindaian ada dalam antrian!", - "613a6375944c3035efe735e87766fbbd": "Perbarui berhasil!", - "6177805463a6a4f28e61bb3435bee13b": "Berhasil diatur, situs akan berhenti secara otomatis saat kedaluwarsa!", - "1a69486f70b6baf749e6e1c4d5fcf689": "URL Suffix tidak bisa kosong!", - "2f858201b6da6a5419c5af8fd26f815c": "Nama domain rantai anti-pencurian tidak bisa kosong!", - "f36c15e89d61e07fb44095ae920b8fbc": "Tolong nyalakan hotlink terlebih dahulu!", - "70dc560b6f4af6d210c9eeb8434c571c": "Sumber daya respons harus menggunakan jalur URI atau kode status HTTP, seperti: /test.png atau 404", - "aa8722f512ecebf5dae454e526402508": "Tolong nyalakan anti-pencurian terlebih dahulu!", - "bd0d7585c64988d80747a32fb0e3e15e": "Log kosong", - "a17f5bc22553d897f6363867c0165256": "Kategori default", - "0d0d87a34e787b2f4a59d912d4d441e4": "Nama kategori tidak bisa kosong", - "6818a5095a78431eb3c99fe022b687b0": "Nama kategori tidak bisa melebihi 16 huruf", - "c4f16bb3d87b92062f73954c86485f64": "Tambahkan hingga 10 kategori!", - "5fd53f59be2a3dee94df28886840b9a3": "Nama kategori yang ditentukan sudah ada!", - "1c44b4096bb88e459ddadef895bea1c2": "Kategori yang ditentukan tidak ada!", - "8f52253b1f007fd14ed0f60b89593d2d": "Kategori Dihapus!", - "b51515085fc6ea6a07192c61e068c124": "Berhasil dimodifikasi", - "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "Fungsi ini hanya mendukung Nginx/Apache", - "6678fd91bc04eb1e34e3474809387e7a": "Kueri gagal, tidak ada alamat", - "7ac0a27b48f2931c7f294b996fe6b273": "File konfigurasi parsing kesalahan", - "ee3a15a26aee235ac255e37342b444bb": "Pengaturan berhasil", - "79799f8c2f024685df774550ea5b427d": "Situs web [proxy, redirect, http ke https] tidak diatur untuk restart secara otomatis", - "29faf053a22c387532298233399e66f9": "Kesalahan parsing file konfigurasi", - "6c881e76c76b1f102bcb97a8b4f682f6": "Situs web ini menghidupkan [proxy, redirect, http ke https] auto restart", - "13fc1b8a101214be1a472db8de1bd8fd": "Situs web telah mematikan restart otomatis", - "1fb58c8e2967a648359d13aa22d9e493": "Situs tidak ada!", - "b0cd0c2bc5c6ce9f71127d60872209ce": "Situs web [{}] berganti nama: [{}]", "3f96c422b7a59fe6e8bf7531c647a64c": "Akun yang ditentukan tidak ada", "cb5e7fdc51569eedfbf3a9a0d3c819cc": "Pesanan yang ditentukan tidak ada!", "8bd32b310825307a909c682871008642": "Pesanan dihapus dengan sukses!", @@ -398,12 +121,103 @@ "6953519c64b998226d0294b961deca62": "Mencabut sertifikat", "1bbd31373b98ad5a6320af00b2a15ee0": "Perbarui kapan waktu kedaluwarsa adalah waktu tertentu", "8fcc1d6fd24fad55d9e8fea6631886db": "Harap masukkan indeks pesanan yang akan dicabut di parameter --index", - "7b84e677e97bd4943a6639a22c1a1704": "kata sandi 参数不能为空", - "5f3160e82bc0c5278923b609841e588b": "开启成功", - "f288f8c23f8d03a699a49bf1fb8e7f53": "ssh 选项失败", - "d3118650da719b6b0cc83230204491de": "加密方式错误", - "24513dc8c02bb021a1c944009c19215b": "开启失败", - "8a3140f96ba5c5df5560d0bd27aa4cd8": "关闭成功", + "b0698ab9adefa7515299f311c725ba4d": "Clear Sfollow berhasil", + "8611f56e253646a455ceeb020052fa97": "Gagal memodifikasi", + "ebdcf538e79de6922f498cc8c735eab5": "Firewall sistem tidak terbuka", + "a296add6341b715925c0be2b83514ee3": "Alamat IP yang Anda masukkan ilegal!", + "3433b9709eed7423f1900061ef743af6": "Menonaktifkan IP ini akan menyebabkan server Anda gagal", + "57e7b2320dd3984312335605d57ee0f8": "IP ada dalam daftar blok, tidak perlu mengulangi pemrosesan!", + "4bb8df740a7119979ff7854d034200a8": "Alamat IP ilegal!", + "998ad6f12ce5285a1b72d4265d9b36cc": "Berhasil dihapus", + "ff9c66f005c08efd15752fb261057b46": "Rentang port harus antara 22 dan 65535!", + "b26b09909c3b090f31dba4a0986e1b84": "Port ada, tidak perlu mengulangi rilis!", + "408f58c25fc55295236fbb64a2d884ff": "Gagal, tidak dapat menghapus port panel saat ini", + "e274abcaad0a7fff74d9adb67e578d5f": "Gagal menghapus", + "ad6fc2abb89b42d391b4bf84e8e6cd2d": "Layanan SSH dimatikan", + "0692d6f0819524aaa05e73f03022ec5b": "Layanan SSH dihidupkan", + "d0749aaba8b833466dfcbb0428e4f89c": "KESUKSESAN", + "ffdc24f916f3071233ca7710aff032c8": " {}", + "6e264f3408e9b769d3fb7e2c807f301f": "Operasi gagal.Harap periksa apakah kuncinya benar", + "d4ac5985eccd334896e3cf23706e43b0": "Ditambahkan dengan sukses", + "92188d43af4373bacbf00951da16532a": "Gagal mendapatkan jalur situs web.Silakan periksa apakah ada situs web", + "ceaefd9a46d78491b9fdb912b5c71eeb": "Gagal membuat file validasi.Periksa apakah tulisannya diblokir", + "1bb3608b1bc684c3dc85090db249346b": "Tidak ada informasi sertifikat yang diperoleh", "b0a783e3ada9e792e3ff3ca4eb477c80": "Sertifikat tidak ada!", "fca4e47d90253577901e874737b87dc0": "Kesalahan Baca Sertifikat!", "813595d6c41e417bea96adb1ad89043f": "Kesalahan Format Sertifikat", @@ -422,9 +236,391 @@ "501ffa672acb20c4764563d6e839879b": "Gagal terhubung ke cloud.Tidak dapat menghapus data di cloud.", "a810cdf921c5b92a3f6d29667ec78ffc": "Sukses Del", "df569fbc92d17644e83b44541596633f": "Gagal terhubung ke cloud.", + "140bda69874872f8402052c613c0b3b9": "Email Uji Peringatan Aapanel", + "76a1ec4a3fcdc304394ff14dc90f8072": "Jumlah utas panel harus antara 1-1024", + "dd7e82b5fb3c67e3e41d96f22ba838fd": "Port panel baru", + "248336101b461380a4b2391a7625493d": "Disimpan", + "40624aabb99173387dd6d575759b12db": "Parameter CERTPEM tidak ada!", + "37db9679113eef382992a1478f1b79ff": "Parameter privateKey tidak ada!", + "7063e5fbf2ea8d0809fe307b6df00467": "Sertifikat disimpan!", + "d2174fc17fcd785706114088b84dbbce": "URL login sementara telah dihasilkan", + "b5101eb6e685091719013d1a75756a53": "\\ 1", + "0bfe47819da04212a33dac83b71430e8": "\\ 2", + "bef28b813bf12be3924925bbb62883dd": "Dieksekusi dengan sukses!", + "fda63bff3e0143980e5761376859b00b": "Eksekusi gagal, periksa apakah Apache diinstal", + "22012355700877ab73f89de8014ab20b": "Kesalahan konfigurasi aturan apache:
Gagal mengaktifkan:

", + "9848c96a046adb1759233241661ff694": "{} layanan gagal dimulai", + "6ed577cdce37bbd9c66871ac1677dc53": "Layanan berhenti gagal!", + "572e5703371c43aae299181c0e3567d4": "Silakan jalankan program saat semua tugas menginstal selesai!", + "c7138b4b5f7ded833942aef4e230771d": "Perintah berhasil dikirim!", + "d56f0ed99825b4d62ab84753a65f7f1e": "Panel restart", + "3d8c9e517719022b27ad5f27c578fa31": "Dapatkan ram false", + "d47ab7b9ce539ba13f4e045561bb8ed7": "Dapatkan Uptime False", + "8e39175bab478762d3d029bee327c704": "Dapatkan waktu restart false", + "e16cf27704f83c8b0a0efc16886ea75d": "Dapatkan tanggal palsu", + "c158c8096b76b85803e71232b2dd5e74": "Dapatkan Detail Waktu Salah", + "a6ec06b5eb6a42e13e072d2e992e31a0": "Dapatkan reqpersec false", + "cdd32490a46567fd0c1ee9d4b170b762": "Dapatkan TotalCessses Salah", + "62b939086708b37d68c00cb713994b52": "Dapatkan TotalkBytes Salah", + "13b06d17b35dfeeafa50e12ad9ec1735": "Dapatkan pekerja sibuk salah", + "724fc9214ccce3e6a5787648240a4533": "Dapatkan Illworkers Salah", + "7a7f329389283fdd3290c735f90946e9": "mpm_event_module conf tidak ditemukan atau /www/server/apache/conf/extra/httpd-mpm.conf kosong", + "c22cf8376b1893dcfcef0649fe1a7d87": "Kedua", + "db669c6377ab90eef78800a48fd4a453": "Meminta batas waktu", + "af52f5340c065f4d38182f7a27d59f75": "Mempertahankan", + "70b46e57f3c33abdb9558bc5c3a234d9": "Permintaan Max Keep-Alive per koneksi", + "6868568c3abc547e622a303891a906b0": "Proses default", + "224114c62dceb7ebee2db43c6c79a961": "Jumlah maksimum benang idle", + "3c60809d9a5a0900dfbc28bb017e410b": "Jumlah minimum utas idle yang tersedia untuk menangani lonjakan permintaan", + "3783030daf8154be6e11fc4160c229c3": "Jumlah utas yang dibuat oleh setiap proses anak", + "2f25e4b1a2cb84576740da749a2daef2": "Jumlah koneksi maksimum yang akan diproses secara bersamaan", + "72e3edfd72758944413b1e4e9c432f1e": "Batasi jumlah koneksi yang akan ditangani oleh server anak individu selama hidupnya", + "26c74a59d7d10bd927dce45e449943f1": "Kesalahan Konfigurasi", + "b2d87dda66a4643c6cf673f787c5f226": "File konfigurasi tidak ada", + "bff9ef87fdda677f86ae6dddec54a104": "Tidak ada versi PHP yang kompatibel yang ditemukan, silakan instal dulu", + "4bbfcde12aa36ec375a332f51bf905d6": "Per hari", + "60956b50bb8e8c711d3adb889a70137f": "Per hari, jalankan di {} jam {} min", + "78748f15bb65939b6d130c3a5cf8b7dc": "Setiap hari", + "cf9af10dcebe2f12092ff6028a535f08": "Setiap hari {}, jalankan di {} jam {} min", + "e114abed903b9d26c476d4f6cd59c04b": "Per jam", + "0aef48ea8132b0551fa25a10fd0a6585": "Per jam, jalankan di {} min", + "50419faf9662e0c3f283d496bcb8eb72": "Setiap {} jam", + "2a0706d7e3ca3ce9e955471a0648dfcc": "Setiap {} jam, jalankan di {} min", + "84d94bf0382f611906b7edd65d6af169": "Setiap {} menit", + "14d27796d1c96457c7c019661a2f32d4": "Jalankan setiap {} menit", + "6c25e6a6da95b3d583c6ec4c3f82ed4d": "Mingguan", + "e1df614d393ab86fd63c5062f7e77936": "Setiap {}, jalankan di {} jam {} min", + "9030e39f00132d583da4122532e509e9": "Bulanan", + "69c5e99b9ad8d2b8f11be9a60cbf71da": "Bulanan, jalankan di {} hari {} jam {} min", + "9d1a0949c39e66a0cd65240bc0ac9177": "Minggu", + "6f8522e0610541f1ef215a22ffa66ff6": "Senin", + "5792315f09a5d54fb7e3d066672b507f": "Selasa", + "796c163589f295373e171842f37265d5": "Rabu", + "78ae6f0cd191d25147e252dc54768238": "Kamis", + "c33b138a163847cdb6caeeb7c9a126b4": "Jumat", + "8b7051187b9191cdcdae6ed5a10e5adc": "Sabtu", + "e00d5128f631253b7b6ed8d5454c0c81": "Tidak dapat menulis ke file, silakan periksa apakah [System Hardening] diaktifkan!", + "685689743579a8f09fcec5d7df04e39e": "Nama tugas tidak bisa kosong!", + "a5c04aced897c770105858268324b53f": "Tugas saat ini menonaktifkan status, buka tugas sebelum memodifikasi!", + "85305ee6be0f078791c7437ec54dda12": "Gagal menambahkan", + "08a1ce771119bb393fa49478216ae809": "Log kosong", + "b8fd4dbe5c3650beaec0a3d44d7f0245": "Log dikosongkan", + "ff47c70e853d0b3635935be883b018e9": "Gagal mengosongkan log tugas!", + "e0c4da1afd18acbb66bc5fac261a42ef": "Tugas yang ditentukan tidak ada!", + "38fa2d4f8f9a13062c0c9007d97f6a84": "Gagal membaca file!", + "f57d5686d9dd67f0e81924de8d13af95": "Tugas telah dieksekusi!", + "da07d14105efb3ba634c1d35618447ab": "Parameternya salah!", + "ea2b2676c28c0db26d39331a336c6b92": "awal", + "ef399b2d446bb37b7c32ad2cc1b6045b": "berhenti", + "0b12c9f33fde8b15970c7390c54d7ca5": "Gagal menutup log", + "b55eed05ce4922d8a6c881f0f2b05bbf": "berhasil mengatur", + "5afb8de2bbb11b44592503000290c173": "Plugin yang ditentukan tidak ada!", + "8b266978ab5161642a2d95d3f03f3945": "Tolong uninstall [{}] pertama", + "ad626ac6de7ea412c9156f73b7666cd4": "Tergantung pada perangkat lunak berikut, silakan instal [{}] pertama", + "acf7b210e1f5fbdb2e24af573f0e1831": "Setidaknya [{0}] core cpu diperlukan untuk menginstal", + "d0c8fa89a1eccf8a377d11eea540fd0c": "Setidaknya [{0} MB] memori diperlukan untuk menginstal", + "52e44340370925b110c7fba475b805e3": "Hanya mendukung sistem [{}]", + "e3b16d9e5a24c8d27578d7670e840200": "Bergantung pada perangkat lunak berikut, silakan instal terlebih dahulu [{}]", + "a0405fa5f045a30ba3aeff1c65ad8c38": "Proses instalasi dibatalkan!", + "a13ed989898e4c7529942fa656ff6733": "Direktori Kritis Sistem tidak dapat ditulis!", + "7a71d673b95a1bd0d10705c865f5a626": "1. Jika [System Hardening] diinstal, silakan matikan", + "c5041819fd15366b66dd9539116ea6ad": "2. Jika Yunsuo diinstal, silakan matikan fitur [System Hardening]", + "101935ed7ea8a021a536a614363350eb": "3. Jika Safedog diinstal, silakan matikan fitur [Perlindungan Sistem]", + "8c4aa1aa63c24703138358074a515b99": "4. Jika perangkat lunak keamanan lain digunakan, silakan hapus instalannya", + "2eaba30c177044d12634b22016f5dd99": "Harap tentukan nama perangkat lunaknya!", + "0d3811da2c2a4315b921093d36e6759d": "Maaf, saat ini OLS Official tidak mendukung Php8.1", + "0d06a64610d5755d0d395305f9b3a664": "Harap masuk sebagai akun aapanel terlebih dahulu", + "2c9056dcb1285057d5248e7ed16d2b4d": "Verifikasi hash file gagal, hentikan instalasi!", + "fb95b07b4c663c0a52cda545eef1d869": "Instalasi berhasil!", + "fac5f4d9d430e77699ec114d346c9bb2": "Instalasi gagal", + "349838fb1d851d3e2014b9fe39203275": "Memasang", + "a9ba3c226edabcfe1978d6f4c5daf404": "Nginx 1.8.1 terlalu tua, tidak lagi tersedia, pilih versi lain!", + "75d7d596e2cc30d482111fae7b4f6d88": "Tugas instalasi ditambahkan ke antrian", + "ee83f5efe8a95f2e8529da7d4bb01d2b": "Uninstallaton berhasil", + "4432eb207b29c9ead490158b76397532": "Daftar database tidak kosong.Untuk keamanan data Anda, silakan cadangkan dan hapus database yang ada.
Perintah uninstall paksa: RM -RF/www/server/mysql", + "ba922eb50c83147a9bc0e9f40877d986": "Uninstallation berhasil", + "b860df98df6ab84521a4cef036973028": "Kisaran penilaian [1-5]", + "eb536feb2c569974c2b5cf85cae91041": "Kegagalan koneksi!", + "a70188f907ee9df93a4b749109a23460": "Gagal mendapatkan daftar perangkat lunak ({})", + "16ad37f5aafc6478f2f6d63d70554530": "Tolong jangan ulangi menambahkan", + "18ea7bdb25b2a66507ffb1bb8b42fefa": "Dasbor hanya menampilkan hingga 12 perangkat lunak!", + "2aa461271893ae0493789e9e8f248fdc": "Pintasan hanya menampilkan hingga 5 perangkat lunak!", + "98cb93d354af289a900cd9e03cee2df2": "Instalasi gagal!", + "17e4e003ade65cd7a54131d3404d2f98": "Tidak dibuka", + "bda730e0e5c7444ef6f4f49957ab4f39": "Harus dibayar", + "24fe48030f7d3097d5882535b04c3fa8": "Kedaluwarsa", + "cbfcfe47e7420af71ce1666844c565a3": "Sortir disimpan", + "6a20d0daaec1ce3950a321704041dc90": "Plugin ini tidak memiliki template!", + "6f5cb320fb3a7e303403054320ad943c": "Daftar Perangkat Lunak diperbarui!", + "b269cd272a31017961c245e2c84a1a2f": "Unduh File Gagal!", + "88183b946cc5f0e8c96b2e66e1c74a7e": "Tidak dikenal", + "84f7539fe8674bb0689347dc7acd7b43": "Tidak ada info plugin yang ditemukan di arsip, silakan periksa paket plugin!", + "affc007de5f6791707f3de155a3a642a": "File sementara tidak ada, silakan unggul kembali!", + "117f1bb083c7d556079a3c77093be5e2": "Ekspor gagal, silakan periksa izin!", + "a8f375e795e0a130837f2a468518a413": "Nama yang tidak sesuai hanya bisa berupa angka, huruf, garis bawah", + "a06490b9729d0868e31d834c9bffa0bd": "Parameter kompilasi khusus yang ditentukan tidak ada!", + "5e71fccee12caedf853a7313ea204721": "Kesalahan: Nama atau layanan tidak diketahui", + "b6e3d7366f73e2c5e32717d679db6474": "Kesalahan: Gagal membuat koneksi baru", + "cdffdb1c794cf0dd777b3941a31459e4": "Kesalahan: Baca waktu habis", + "4573823cc04a9cbf8a7bb254b762db91": "Kesalahan: Koneksi ditolak", + "e3c2e426ad1b23571c48ec572ca675bf": "Kesalahan: Koneksi tertutup ujung jarak jauh tanpa respons", + "db3a5c61130d7ca2046f5f9d0cd08073": "Kesalahan: {}", + "fe723570085e5cc1ecc3dfc88a46aa2d": "Unduh Timeout: {}", + "0eeb116408665d50a2f2092a6c277ee6": "Tidak ada ruang disk yang tersedia.", + "57a43d6e8c479df3a51421eba70d5621": "Verifikasi paket checksum gagal.", + "c12c62dd767caf90d62356b47349d871": "Tidak bisa mendapatkan bilah kemajuan untuk plugin ini.", + "8fde9a929c417549ed2f9144fa68c0d2": "Nama aturan hanya dapat terdiri dari huruf, angka, dan garis bawah!", + "868a6f377594831b39e91745c7807e28": "Tentukan nama aturan tidak ada![{}]", + "5d9cf1940fae6317dd43a7f1b5ca8f36": "Tentukan nama aturan sudah ada![{}]", + "473bc9055d76e148db4d28e7bec67295": "Nama aturan harus lebih besar dari 3 byte", + "5b097df78b1d8c65d8b524354029f114": "File Suffix tidak bisa kosong", + "496e2dfba11ca4381ef6277e6e9a62dc": "Direktori tidak bisa kosong", + "84278582ca50b97777b2c8ce780f9715": "Untuk dukungan | Saran, silakan kunjungi Forum Aapanel", + "aa00d1012298d40c84daf11e09956c65": "Mengunduh:", + "3c8ad9e6e9c39de49294aa2db8630f25": "Nginx tidak menginstal", + "8bdafc47214a88c8cc4bc6326771040a": "Akuisisi data gagal!", + "d84c752e17017ec4b4987497ce15dfd0": "Akuisisi status beban PHP gagal!", + "cf6e5eb2bfedf2e0529a552c1017c21e": "Tulis file gagal!", + "842bbd281516b01e70be499dbe67d3aa": "Berhasil mengatur", + "ff7ca5d4ef00526f701d3ae0b3833940": "Gagal mendapatkan daftar, silakan periksa apakah pengaturan [AK/SK/penyimpanan] benar!", + "517fa3f50147b216828f9aca9fd08927": "演示服务器 , 禁止此操作!", + "e39bf0b6a74eb0459abefe075607833f": "Kesalahan, tidak dapat mengakhiri proses tugas!", + "c40f1a202bfa106ac04f83a4740b3bd1": "Gagal terhubung ke server!", + "ca3eb6afad663b2881fababde6d59d63": "Harap ikat akun Anda dulu!", + "df1f69a87b498b8b12c90be5a3b885db": "Unduh File Gagal, coba lagi atau perbarui secara manual!", + "e448bd5c1c654d1ef33cf40620808693": "Versi PHP yang diminta tidak ada!", + "7c769ceaad458456d4c3bc8276015a8d": "Izin ditolak!", + "178d2e6a3f4abd4552188dcf36df7687": "Log panel dikosongkan!", + "99a0d283490c238c6faf2d0387dbcda7": "Server web saat ini adalah OpenLiteSpeed.Fungsi ini belum didukung.", + "20b4593b7de7ef359c1a0269f83e896b": "Rentang port salah!", + "0e656ce1afc98099f2e01e8f71362f92": "Harap masukkan nomor port yang benar", + "88897967b12e6907309204ad6d0647af": "Tolong jangan gunakan port biasa sebagai port phpMyadmin!", + "e4859a777f8d4f300baf8fff0284fe81": "Tidak menemukan file konfigurasi SSL Apache PHPMYADMIN, silakan cobalah untuk menutup pengaturan port SSL sebelum membuka", + "6bd4e79acd767010d96091baf9daba77": "Tidak mendeteksi port yang didengarkan Nginx PHPMyAdmin, harap konfirmasi apakah file tersebut telah dimodifikasi secara manual.", + "7478cfa7a09bbe61467b07dea2e9721d": "Tidak mendeteksi port yang didengarkan Apache PhpMyAdmin, harap konfirmasi apakah file tersebut telah dimodifikasi secara manual.", + "a7dad48fefe8778dd10744a8a4dbae8e": "Port phpmyadmin ssl baru", + "a168cddbe84613b0a468887d44e7eaf5": "Sertifikat panel tidak ada.Silakan melamar sertifikat panel dan coba lagi.", + "c0c23cdf9e9329e576cfbddcc85666a3": "Buka dengan sukses, silakan lepaskan port SSL phpMyadmin secara manual", + "b7f3560235e37cebdbde7db33c3df64c": "Operasi gagal", + "7f91451dfcb0045a4684fa68b35d0365": "Port phpMyadmin baru", + "bb1ca97ec761fc37101737ba0aa2e7c5": "KESALAHAN", + "14c525aba20f0a52255a799f51ced885": "Daftar peringatan tidak ada!", + "586a19c1eeaf6fe9d57f1d894fc487fc": "File log tidak ada!", + "190045c03f9a72a1900c60d63e1e2b8b": "Mengikat Akun telah kedaluwarsa, silakan mengikat kembali pada halaman [Pengaturan]!", + "907fddd6007347a0daffc4a64156f0de": "Abaikan kesuksesan, versi ini tidak akan lagi diingatkan untuk memperbarui.", + "131c05252110792212e3e3666a351154": "Konfigurasi Terkait SSL, Jangan Hapus atau Modifikasi Baris Berikutnya dari aturan 404 yang dikomentari", + "4ba7e24ac1607ab761c124ca7352ad08": "Konfigurasi halaman kesalahan, diizinkan untuk dikomentari, dihapus atau dimodifikasi", + "31bb30ca4135945adbe0c2daa9545b39": "Konfigurasi referensi PHP, diizinkan untuk dikomentari, dihapus atau dimodifikasi", + "f9da3e5ae75ce0ae39884ae2ea295a66": "URL Menulis Referensi Aturan RE, modifikasi apa pun akan membatalkan aturan penulisan ulang yang ditetapkan oleh panel", + "73e1f7d487ad73d55414fe26ea11cbf0": "Tidak menentukan parameter [sitepath]", + "6aabca3a3e1c79bd5837a1ddae95fe70": "Ada kesalahan yang membuat, coba lagi.", + "256c9a85375f57f2dc9f6f318c6578f1": "Buat situs web [{}] dengan sukses", + "481df7dbcd4c0317088bde8c913d5893": "Silakan isi jalur situs web", + "b1b2484c013c646d7f41d6b2f495b6ef": "Jalur situs web tidak dapat menjadi direktori root [/]", + "1c3bff99564f1370a5b1bf6c0773f8c4": "Silakan periksa apakah format [email] benar", + "af9091566e669f016edf16ba97464cbe": "Kata sandi sangat lemah, jika Anda pasti menggunakannya, silakan centang [Izinkan kata sandi lemah]", + "b0dbad478d4f07c38aec8f440ed98b66": "Harap instal MySQL dan PHP terlebih dahulu!", + "46491fef7553177ef58a55b2db917072": "Tolong jangan atur direktori root situs web ke direktori utama sistem:
{}", + "59d5fef323e89ded50ed6036848a97f3": "Format parameter WebName salah, itu harus menjadi string JSON yang dapat diisi", + "078a3d3e263be2851ddfd9fa059d098f": "Rentang port salah!harus antara 100-65535", + "50370024fdd22dc69099a46d011b20e2": "Versi PHP tidak bisa kosong", + "44bd68c6703adf65ff21c63e9a876aa1": "Format domain primer salah", + "23eded6de9c06451f67ecb7ed3a8c95b": "Domain primer tidak bisa menjadi rekor DNS wildcard", + "f54249d2613e48be05837ec9cd615a5f": "Situs yang Anda coba tambahkan sudah ada!", + "b537e2d1946d559d3de4fb3c045d290f": "Domain yang Anda coba tambahkan sudah ada!", + "f91c641aef33cf8ef4a29bc5d3a7193a": "Gagal menambahkan, tulis kesalahan configuraton!", + "c3c7869d22051eaa78a831834a398351": "Ada kesalahan yang dihapus, coba lagi.", + "e2d272e229674e4c6765fab24a323604": "Hapus situs web [{}] dengan sukses", + "aa5f20e061736fe68a915163e7e6d122": "Situs yang ditentukan tidak ada", + "f11e72daff0ce484f4c401bd0bd28ae5": "Situs yang berhasil dihapus!", + "c57d58c6bbd34144325871d75b42a577": "Harap masukkan nama domain host", + "5c7b7c2f6ed78eefdd77aaa3dddde61a": "Domain tidak bisa kosong!", + "ef446d50df1605a582f9b44b57327536": "Format nama domain salah!", + "68ae44808f90043dee02358ee768bf6e": "Format domain tidak valid!", + "1628c2a26ab6d1211b435f85782f8acc": "Nama domain yang ditentukan telah terikat oleh situs web [{}]", + "925dc658ddf0f69509632848bcd39577": "Nama domain yang ditentukan telah diikat oleh subdirektori situs web [{}]!", + "7b02cf82181f516626a36b86c6a686f5": "Situs yang berhasil ditambahkan!", + "9b3c4205f2f408790c9c1c5da53c3bfb": "Gagal mendapatkan versi PHP!", + "abc3db87d5608cc9559556468a696a35": "Pilih nama domain", + "7807e17f2bf49fb802bba1a04822ea16": "Pilih port", + "e5925c3a126a66c0565df6d8ef49550e": "Domain terakhir tidak dapat dihapus!", + "17088ffed1e537b917a6ecc9dc957159": "Kesalahan kunci pribadi, silakan periksa!", + "26924bd958e212f07c31b6ffca9cbf8c": "Kesalahan sertifikat, silakan periksa!", + "44e2c1c3cfd8d248d7c9190a8f07c0ee": "Kesalahan mendapatkan sertifikat", + "fc0d039d9dcf3905ae8032c9cb33f475": "Kesalahan:
{}", + "ddc2be35a5ed0bf09a88139c4ad10b4a": "Sama seperti jalur asli, tidak perlu berubah!", + "84a8921b25f505d0d2077aeb5db4bc16": "Statis", + "ad74aa2854e988c3157f92e0120bb19e": "Apache2.2 tidak mendukung multiphp!, {}", + "4018ce634a10d352867f04962f107c14": "Ada pengaturan kesalahan, coba lagi.", + "f1bef4fd5183ae83a5896c32a3d5e81d": "Konfigurasi PHP khusus hanya mendukung Nginx", + "879e0d022ff268704f93a7e2b504c224": "Konfigurasi koneksi PHP tidak dapat kosong saat menyesuaikan versi!", + "73d6e709b568b43405052cec999798c5": "Format konfigurasi koneksi PHP salah, silakan merujuk ke contoh!", + "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "Soket UNIX yang ditentukan [{}] tidak ada!", + "751ac8fd72a0acd79772370efcae9c89": "Tidak dapat terhubung ke [{}], silakan periksa apakah mesin dapat terhubung ke server target", + "3cb7d414f8ae92b2b29057f91346f7dc": "Pengaturan Gagal, tidak ada item konfigurasi terkait-PHP-XX yang ditemukan di file konfigurasi situs web!", + "c7a6a892c6cdfc9b0fedefb0a1d2083a": "Direktori yang diminta tidak ada", + "4622561ceaaecb6ef7dd51e65c9f4ec5": "Direktori dasar dimatikan!", + "e4ec1f40794bdf92e7261e6e0c51895a": "Direktori dasar dinyalakan!", + "eeddf79f68ffe029ed83fddcba46b35f": "Proxy lama", + "1592678472ea1b601fd74abff47c56b1": "Tidak bisa mendapatkan target url", + "18edd294853d381dbe0d612ab58bc123": "Kesalahan terdeteksi dalam file konfigurasi.Harap selesaikan sebelum melanjutkan", + "8b5899be4df3aedb03c6fbad9055ed1c": "Nama basis data tidak bisa lebih dari 40 karakter!", + "111376d92c49c1a6c1522a2ef1dac23c": "Nama proxy terbalik atau folder proxy sudah ada", + "09a988aa2e3185fce9fa8f4e8710b862": "Tidak dapat mengatur proksi direktori dan global", + "012a8e497feddccb8e4a47aa5e2dc156": "Harap masukkan nomor", + "90da7d2de9aa12ec32ee04172ca0d2d3": "Kirim Kesalahan Format Domain:", + "440544138d3ed8a2229792c88bad3bd8": "URL target tidak dapat diakses", + "faf2457853593b3296699c4adacc7825": "Harap masukkan konten yang akan diganti", + "748e5ad33460a17cf26c8024bb0a1620": "Konten yang akan diganti tidak bisa sama dengan konten yang akan diganti", + "195d5db9e1559f06348715bc3a822036": "Proksi terbalik global sudah ada di file konfigurasi/vhost penulisan ulang/nginx", + "cc38d47ec9ac62ffc67a5db9c08d5d52": "URL tujuan tidak bisa kosong", + "fb79afbbe0688565b7894b644dfd798d": "URL target tidak dapat [http: // atau https: //], silakan isi URL lengkap, seperti: https://aapanel.com", + "29c9da826ae868c8c6444328f48bcf40": "Proxy terbalik saat ini tidak tersedia untuk situs WordPress yang menggunakan penyebaran satu klik", + "a59dfc3ae22fd96d46011503a4f40744": "Proxy ditangguhkan", + "078bb5f960587121c7cd606ddba5ad58": "Harap aktifkan proxy terbalik sebelum diedit!", + "fe7185cec796e18d58f8e84dc4da946f": "Saat ini hanya mendukung Nginx", + "222a267cc5778206b253be35ee3ddab5": "Saat ini", + "38441d4a89765279852ca2830aa89c83": "Aturan Penulisan Ulang URL Baru telah disimpan!", + "b9c1dcb37c44dca19765636de065b1c1": "Cadangan berhasil!", + "c27a45bf16475a157ca1014cf886bb56": "Harap masukkan catatan", + "9a962a24e9b7b07800d6b7c7efd86f30": "Nama pengguna atau kata sandi tidak bisa kurang dari 3 digit!", + "7eb904262649f9b2e4ba52e2bba9db71": "Format kata sandi salah, jangan gunakan simbol khusus untuk dua digit pertama!", + "492c7f01035f1cf9b88756f897f02b87": "Kesalahan, domain primer tidak bisa menjadi alamat IP!", + "0a2b8c4a98495f6af19be9c1c342844e": "Berhasil, harap uji program JSP!", + "49281f9c7680652b1d110625da5c8cca": "Pemetaan Tomcat ditutup!", + "ec3b07b78fd4f3307c84858957ddbd0f": "Dapatkan Path Run Situs Salah", + "02e602e968050352febfc4ddcae332f0": "OpenLiteSpeed ​​tidak mendukung pengaturan situs default", + "362538d60f495840284c667e67831b16": "Direktori Pindai", + "4f137439eb93e6c752873c8af2d3d1cb": "Tugas pemindaian ada dalam antrian!", + "613a6375944c3035efe735e87766fbbd": "Perbarui berhasil!", + "6177805463a6a4f28e61bb3435bee13b": "Berhasil diatur, situs akan berhenti secara otomatis saat kedaluwarsa!", + "1a69486f70b6baf749e6e1c4d5fcf689": "URL Suffix tidak bisa kosong!", + "2f858201b6da6a5419c5af8fd26f815c": "Nama domain rantai anti-pencurian tidak bisa kosong!", + "f36c15e89d61e07fb44095ae920b8fbc": "Tolong nyalakan hotlink terlebih dahulu!", + "70dc560b6f4af6d210c9eeb8434c571c": "Sumber daya respons harus menggunakan jalur URI atau kode status HTTP, seperti: /test.png atau 404", + "aa8722f512ecebf5dae454e526402508": "Tolong nyalakan anti-pencurian terlebih dahulu!", + "bd0d7585c64988d80747a32fb0e3e15e": "Log kosong", + "a17f5bc22553d897f6363867c0165256": "Kategori default", + "0d0d87a34e787b2f4a59d912d4d441e4": "Nama kategori tidak bisa kosong", + "6818a5095a78431eb3c99fe022b687b0": "Nama kategori tidak bisa melebihi 16 huruf", + "c4f16bb3d87b92062f73954c86485f64": "Tambahkan hingga 10 kategori!", + "5fd53f59be2a3dee94df28886840b9a3": "Nama kategori yang ditentukan sudah ada!", + "1c44b4096bb88e459ddadef895bea1c2": "Kategori yang ditentukan tidak ada!", + "8f52253b1f007fd14ed0f60b89593d2d": "Kategori Dihapus!", + "b51515085fc6ea6a07192c61e068c124": "Berhasil dimodifikasi", + "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "Fungsi ini hanya mendukung Nginx/Apache", + "6678fd91bc04eb1e34e3474809387e7a": "Kueri gagal, tidak ada alamat", + "7ac0a27b48f2931c7f294b996fe6b273": "File konfigurasi parsing kesalahan", + "ee3a15a26aee235ac255e37342b444bb": "Pengaturan berhasil", + "79799f8c2f024685df774550ea5b427d": "Situs web [proxy, redirect, http ke https] tidak diatur untuk restart secara otomatis", + "29faf053a22c387532298233399e66f9": "Kesalahan parsing file konfigurasi", + "6c881e76c76b1f102bcb97a8b4f682f6": "Situs web ini menghidupkan [proxy, redirect, http ke https] auto restart", + "13fc1b8a101214be1a472db8de1bd8fd": "Situs web telah mematikan restart otomatis", + "1fb58c8e2967a648359d13aa22d9e493": "Situs tidak ada!", + "b0cd0c2bc5c6ce9f71127d60872209ce": "Situs web [{}] berganti nama: [{}]", + "946fb31f804cdde218dbf05d7183e94e": "MD5 Konsisten!", + "d83dadd8fcee6c014db8af454bc279fc": "Unduh berhasil", + "1336bbfcadd9119f86ecd48c2d9fb770": "Koneksi database tidak normal.Silakan periksa apakah otoritas pengguna root atau parameter konfigurasi basis data sudah benar.", + "ee102508d210854b6fc7da18e598140b": "Deteksi kata sandi yang dihasilkan gagal!", + "6e72fc97e2f1be35ae40ca21d6b1df38": "Basis data WordPress ini tidak ditemukan, ini mungkin disebabkan oleh fakta bahwa Anda telah menghapus database secara manual", + "6df8e9d3a4e149ff12445d981f6fc244": "Kata sandi reset berhasil", + "f748d4e467e9f4f27540b6f5ce5b1ef8": "Fitur ini saat ini hanya mendukung Nginx", + "9747bb4f34180afd2f9a681397b269fb": "Dibersihkan dengan sukses!", + "015d337f0646fe4b8a89b30041436e7f": "Diperbarui dengan sukses!", + "321b336d92b3e894060637528499dcf9": "Penempatan berhasil!", + "1850193ca4b37a25ee94db903eddc16f": "Penyebaran gagal!", + "b390405514d6291f511c9f3a4fb31249": "ID Situs harus numerik", + "e650b17a0b833e3bcdd8e859b37ce94e": "Basis data ini tidak ditemukan!", + "a0adaeeb3642584bd931c757b6f71d78": "Optimasi php fpm berhasil", + "f11ab236591dc778c39c9429e141dba2": "Optimalisasi MySQL berhasil", + "d145648d4281cb3266714c5986bcab8b": "Konfigurasi cache Nginx Fastcgi sudah ada", + "9c373c2796e866dc590f9dc7c80609da": "Kesalahan konfigurasi Nginx FastCGI!", + "2750e686fcc97deec0122789a059edbd": "Konfigurasi cache fastcgi nginx selesai", + "615681ddc1b0efb9f6d434adc1451bb7": "Konfigurasi Cache Nginx Init Fastcgi sudah ada", + "a61c53dff88925e428f2a295b18ac807": "Kesalahan konfigurasi Nginx Init FastCGI!", + "28b386f7ab5957184b60f47c0e540d68": "Konfigurasi Cache Nginx Init Fastcgi Lengkap", + "b7082bd55a134bb3a142570572e1c469": "Konfigurasi FastCGI tidak ada dalam konfigurasi situs web", + "c0ff8a4b4b8f68c4ba7df88588291590": "Konfigurasi FastCGI sudah ada di konfigurasi situs web", + "e3a6621c5ea036c8f82d3f2d343f1bc8": "Kesalahan Konfigurasi FastCGI Situs Web!", + "4c87778ab71a4e47170ccafd6edb4922": "Konfigurasi Fastcgi Situs Web Lengkap", + "e3fa50f6413dbb7bfe7cb26e1acd3d98": "Harap masuk dengan akun dulu", + "121303c67f81a8ebda41de51c8afaf27": "Harap masuk ke akun Aapanel Anda di panel terlebih dahulu!", + "d5670370d84473122d8e4d5a3b27b4bf": "Kesalahan Parameter: Num", + "6b1c16b7a785029c0a11de3ab31cb125": "Keberhasilan status flush", + "e06c1ddc33f674068e3ca201094145d1": "Aktifkan dengan sukses", + "819b23804f66eddddfba39e7bdc53e68": "Aktifkan gagal", + "4f57c5dce8b638737a368af15409439f": "Aktifkan gagal", + "fe94df1697f309269e00428cae6bd141": "Pembaruan gagal", + "b2ac1158b825f44cb363648fa3ad60cb": "Memperbarui dengan sukses", + "78d29c0fadebf704e471a63afd430250": "Berlaku gagal", + "3649e869737aa87f263194ce7f88f19e": "Terapkan dengan sukses", + "34c4dc380e690d2ff6ebb6aaed103401": "Kesalahan Parameter Product_ID!", + "28731318aa493586f88894355a79cb48": "Gagal terhubung ke server!", + "0161305479129bbe47bb020605a15d40": "Siapkan Sukses!", + "5c9b599b99f7a169b9cd25f7045eaac5": "Sinkronisasi Sukses!", + "b6601359f1ae1067d4c4d271b7407639": "同步成功 1!", + "10a1984f6c5b935c5d8c7d4b4345e1e5": "同步成功!", + "86da84e8e3aacf73ee745caee5904268": "同步失败!", + "8ed30fe61ac59c9e1cb4a75d9a48d477": "Dibuat dengan sukses!", + "330e51da1228a070540f82eb8e78155c": "Siapkan dengan sukses!", + "7ac73ef676faaa8a5f8e3924b4d151e3": "Nama pengguna atau kata sandi tidak bisa kurang dari 3 karakter", + "88d8a4565feba5ad270c00e85564b96d": "OpenLiteSpeed ​​saat ini tidak didukung", + "c1f8cf125da0d6db1c4e0d09033c9ddd": "Harap masukkan akun atau kata sandi", + "bd7fb7b4280616cbe5de49eb1ee8cc3a": "Harap masukkan direktori untuk dilindungi", + "8c48114518721e3966cd4553a0cee705": "Harap masukkan namanya", + "dd65d82f6868cfa127f86e5658674829": "Perlindungan kata sandi situs telah ditetapkan, harap batal dan kemudian setel.Direktori Situs -> Akses Kata Sandi", + "1cc6b0e84b90d0ca0b863fccc0f33b36": "Direktori telah dilindungi", + "b7526fc6f8b21e71ea1e290a982df4c9": "Berhasil dibuat", + "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2 tidak mendukung multiphp!", + "69be778c38b9edc0ab3040c478c39370": "Kesalahan: %s
Perintah uninstall paksa: RM -RF/www/server/mysql", - "ba922eb50c83147a9bc0e9f40877d986": "Uninstallation berhasil", - "b860df98df6ab84521a4cef036973028": "Kisaran penilaian [1-5]", - "eb536feb2c569974c2b5cf85cae91041": "Kegagalan koneksi!", - "a70188f907ee9df93a4b749109a23460": "Gagal mendapatkan daftar perangkat lunak ({})", - "16ad37f5aafc6478f2f6d63d70554530": "Tolong jangan ulangi menambahkan", - "18ea7bdb25b2a66507ffb1bb8b42fefa": "Dasbor hanya menampilkan hingga 12 perangkat lunak!", - "2aa461271893ae0493789e9e8f248fdc": "Pintasan hanya menampilkan hingga 5 perangkat lunak!", - "98cb93d354af289a900cd9e03cee2df2": "Instalasi gagal!", - "17e4e003ade65cd7a54131d3404d2f98": "Tidak dibuka", - "bda730e0e5c7444ef6f4f49957ab4f39": "Harus dibayar", - "24fe48030f7d3097d5882535b04c3fa8": "Kedaluwarsa", - "cbfcfe47e7420af71ce1666844c565a3": "Sortir disimpan", - "6a20d0daaec1ce3950a321704041dc90": "Plugin ini tidak memiliki template!", - "6f5cb320fb3a7e303403054320ad943c": "Daftar Perangkat Lunak diperbarui!", - "b269cd272a31017961c245e2c84a1a2f": "Unduh File Gagal!", - "88183b946cc5f0e8c96b2e66e1c74a7e": "Tidak dikenal", - "84f7539fe8674bb0689347dc7acd7b43": "Tidak ada info plugin yang ditemukan di arsip, silakan periksa paket plugin!", - "affc007de5f6791707f3de155a3a642a": "File sementara tidak ada, silakan unggul kembali!", - "117f1bb083c7d556079a3c77093be5e2": "Ekspor gagal, silakan periksa izin!", - "a8f375e795e0a130837f2a468518a413": "Nama yang tidak sesuai hanya bisa berupa angka, huruf, garis bawah", - "a06490b9729d0868e31d834c9bffa0bd": "Parameter kompilasi khusus yang ditentukan tidak ada!", - "5e71fccee12caedf853a7313ea204721": "Kesalahan: Nama atau layanan tidak diketahui", - "b6e3d7366f73e2c5e32717d679db6474": "Kesalahan: Gagal membuat koneksi baru", - "cdffdb1c794cf0dd777b3941a31459e4": "Kesalahan: Baca waktu habis", - "4573823cc04a9cbf8a7bb254b762db91": "Kesalahan: Koneksi ditolak", - "e3c2e426ad1b23571c48ec572ca675bf": "Kesalahan: Koneksi tertutup ujung jarak jauh tanpa respons", - "db3a5c61130d7ca2046f5f9d0cd08073": "Kesalahan: {}", - "fe723570085e5cc1ecc3dfc88a46aa2d": "Unduh Timeout: {}", - "0eeb116408665d50a2f2092a6c277ee6": "Tidak ada ruang disk yang tersedia.", - "57a43d6e8c479df3a51421eba70d5621": "Verifikasi paket checksum gagal.", - "c12c62dd767caf90d62356b47349d871": "Tidak bisa mendapatkan bilah kemajuan untuk plugin ini.", - "8fde9a929c417549ed2f9144fa68c0d2": "Nama aturan hanya dapat terdiri dari huruf, angka, dan garis bawah!", - "868a6f377594831b39e91745c7807e28": "Tentukan nama aturan tidak ada![{}]", - "5d9cf1940fae6317dd43a7f1b5ca8f36": "Tentukan nama aturan sudah ada![{}]", - "473bc9055d76e148db4d28e7bec67295": "Nama aturan harus lebih besar dari 3 byte", - "5b097df78b1d8c65d8b524354029f114": "File Suffix tidak bisa kosong", - "496e2dfba11ca4381ef6277e6e9a62dc": "Direktori tidak bisa kosong", + "b7ad022c6ce9435c43c6760c8ba89b20": "CA bisa", + "5d39c57e28ab85457e4949306be619e8": "Koneksi server CA berjangka waktu, coba lagi nanti.", + "721eb0b3ea85b39c22f16d6dfc84bc32": "Nama domain bukan milik penyedia layanan DNS ini.Harap pastikan bahwa nama domain diisi dengan benar.", + "b5366a9c53b455fdf8a552c205ca9021": "Koneksi server DNS gagal.Harap periksa apakah kuncinya benar.", + "4de3dc0403846edfe5ff520837e2bbe5": "Penandatanganan gagal, nama domain set domain yang tepat: (.+): {} Melebihi jumlah mingguan dari penerbitan berulang!", + "30c0b6ae1acf6137b588473814f3330d": "Penandatanganan gagal, IP server saat ini telah mencapai batas membuat hingga 10 akun setiap 3 jam ..", + "797e2e43e3fc3737891adc8ab4a1655c": "Verifikasi gagal, nama domain tidak diselesaikan, atau resolusi tidak berlaku.!", + "9efd01f346301888216d77d35ec156cf": "Otentikasi gagal, kesalahan resolusi nama domain atau URL verifikasi tidak dapat diakses!", + "6c23a7d25119c77017d1aa04761fefe8": "Gagal terhubung ke server CA, coba lagi nanti.", + "b7a370078ae6520cde883252890195cf": "Nama domain yang tidak didukung {}, silakan periksa apakah nama domainnya benar!", + "1593706a4e3794c75129c8347021f0c5": "Nama domain {} tidak menemukan catatan resolusi.Silakan periksa apakah nama domain diselesaikan.!", + "1d80008b0cc4936ab73047baf061c84e": "Jika catatan resolusi TXT yang valid tidak ditemukan di nama domain {}, silakan periksa apakah catatan TXT diuraikan dengan benar.Jika diterapkan oleh DNSAPI, silakan coba lagi dalam 10 menit.!", + "81dab277ae106f35a118916e25f3f026": "Menemukan catatan txt yang salah pada {}: {}, silakan periksa apakah resolusi txt sudah benar.Jika diterapkan oleh DNSAPI, silakan coba lagi dalam 10 menit.!", + "b1bc7e763e87ef08d753a0676a0d5361": "Nama domain ini tidak ada di bawah akun DNSPOD ini.Menambahkan parsing gagal.!", + "43901eff07fff70732a4e1d6a732920b": "Koneksi diatur waktunya, server CA tidak dapat mengakses situs web Anda!", + "7cb06b776259c13fa73d3be5577df74c": "Nama domain {} saat ini diperlukan untuk memverifikasi catatan CAA.Harap selesaikan secara manual catatan CAA, atau coba lagi setelah 1 jam.!", + "09c36cbe592612c2546e60652f2d6964": "Timeout verifikasi, silakan periksa apakah nama domain diselesaikan dengan benar.Jika DNS diselesaikan, koneksi antara server dan biarkan", + "e10beec48a4a4b433b2fec2eaff64671": "Lebih dari 5 kegagalan verifikasi dalam 1 jam, aplikasi dilarang sementara, coba lagi nanti!", + "239067c8e0586af7c09738e8240438fb": "Pembaruan gagal dan direktori sertifikat tidak ada.", + "c7664672bf11463a4cc40c61aeca77f1": "Pembaruan gagal, hilang akun_key.", + "3f56bc50f098e641bb3d42e2d4255cbe": "Siap Mendaftar untuk SSL, Nama Domain {}", + "bd6995f087c0dacaecd470ca10539a2b": "Daftar nama domain yang diterapkan tidak bisa kosong.", + "3b5e16d8f5e1b88c78e494e6601a4d01": "Dapatkan sukses, tolong selesaikan secara manual nama domain", + "cf6b24b05942cd0c3723d7a4c25e6138": "| -Seltiffan-sertifikat ..", + "bbb21c1842b512148f687ea068553c85": "| -Setting konfigurasi pembaruan otomatis ..", + "c06d0b48f82d74d3c2854dabdba12d93": "|-Aplikasi berhasil dan secara otomatis digunakan ke situs web!", + "569488d54cbcce1331896e4254f63a92": "Aplikasi berhasil.", + "1851141907c561e6ac67cba17e549232": "| -Initializing ACME Protocol ...", + "78e67927014eab1b84eb285b6057fca6": "| -Sok Akun Pendaftaran ...", + "4896fdcb74c0e04522c8d3d89d08d569": "| -Betting informasi verifikasi ...", + "1016ed461618afd2dde9a4a709a4d080": "| -Memuatkan informasi verifikasi ke ujung depan, tunggu pengguna untuk menyelesaikan nama domain secara manual dan lengkapi verifikasi ...", + "81a3b1828b60659bc3d3c9711e66f0ba": "| -User mengirimkan permintaan verifikasi ...", + "f147fc272d665cd009e1108c5fb6993d": "| -Memajakan CA untuk memverifikasi nama domain [{}] ...", + "4c699430325d31db3d7b43b0a0999364": "| -Get CA Hasil Verifikasi [{}] ...", + "2b7dd2a937ababf46efb11073787664c": "| -Semua nama domain diverifikasi dan CSR sedang dikirim ...", + "1de253d3eb460e60480626694092d89e": "| -Getting Konten Sertifikat ...", + "a0c16d2f8e2aeba9dd9a3b040861ff39": "Akuisisi sertifikat gagal, coba lagi nanti.", + "89edc2a5e6ccecc2bdbdd1f9536fb90a": "| -Error: {}, keluar dari proses aplikasi.", + "94417e0c15f634f59ce15128ef146686": "| -Error: {}, keluar dari proses aplikasi.", + "03268bb5fa60cf57ac7c30f1f99dab01": "| -Kelesaikan proses aplikasi!", + "be2d0d9f1a9d04ff22b70bd5bee9b8ef": "Terjadi kesalahan saat meminta sertifikat menggunakan DNS", + "409bd1860bf065c68921473fc2266347": "| -Adding Resolution Record, nama domain [{}], nilai catatan [{}] ...", + "8b2ee088303a8001eaedb8c62e3de7e3": "| -Attempt untuk memverifikasi hasil resolusi, nama domain [{}], nilai catatan [{}] ...", + "a11fba95c84fff590acd7dbdea4528e6": "| -Request CA untuk memverifikasi nama domain [{}] ...", + "676e1a4f8e4561ad55045461f3421d62": "| -Ceck CA Hasil Verifikasi [{}] ...", + "d60d5b998a8ef802ba7f5b5ed343e256": "| -Se kesalahan terjadi, coba lagi [{}]", + "71087be1722815599ebecd0fd0f58b5e": "| -Fetching Konten Sertifikat ...", + "6d1e7a222bfe888debd080a117490c9d": "| -Clearing Resolve History [{}]", + "77619ceb7742d8a8f87e52b02592d873": "Penandatanganan gagal, kami tidak dapat memverifikasi nama domain Anda:

1.Periksa apakah nama domain terikat ke situs yang sesuai.

2.Periksa apakah nama domain diselesaikan dengan benar ke server, atau resolusi tidak sepenuhnya efektif.

3.Jika situs Anda memiliki pengaturan proxy terbalik, atau jika Anda menggunakan CDN, silakan matikan terlebih dahulu.

4.Jika situs Anda memiliki pengalihan 301, silakan matikan terlebih dahulu

5.Jika cek di atas mengkonfirmasi bahwa tidak ada masalah, cobalah untuk mengubah penyedia layanan DNS.

", + "4d6822ed3bd01f379f2ab4b1e68068d7": "| -Medar saat ini tidak ada sertifikat untuk memperbarui.", + "b74c00ca5fee122c49cd66ce3d91b2cf": "| -Renewal gagal :", + "0b1c93d38c86c8d379886293cdf8ba66": "Tugas dibatalkan!", + "d5ef96e383d376beeec28da7acfea516": "Unduh file", + "f24f6c5f5841340f898a6baaa6478bcd": "Unduh File {}", + "9fdd777388a418cef77bce46c1b2511a": "Format kompresi yang ditentukan tidak didukung!", + "4fa407ee74026903dc3013d0b2471eac": "Kompresi berhasil!", + "ece43dcaac9352f58c422e500266a927": "Uncompression berhasil!", + "ac4eb62573e34c36ff426c8a6360c781": "Kesalahan cadangan!", + "438ca4ffcf6fbd44ec129e73a24f0deb": "Pilih file SQL/GZ/ZIP!", + "0edfb4a54d6cf45209a6c7929b8b9919": "Database yang berhasil diimpor!", "f6039d44b29456b20f8f373155ae4973": "Nama belakang", "3544848f820b9d94a3f3871a382cf138": "Kata sandi baru", "6b1bc4e672d58d46d23502dcd78129be": "Menghapus info log", @@ -710,161 +855,18 @@ "5093d954f09d473d091355fe292920a8": "| -Mentrance Limit dibatalkan", "e0b1cb1725c8fb29d42fa69d679a73ea": "| -Domain Limit dibatalkan", "968c7b9246b5ab3d3e7659cea211a20b": "| -IP Batas akses dibatalkan", - "b7ad022c6ce9435c43c6760c8ba89b20": "CA bisa", - "5d39c57e28ab85457e4949306be619e8": "Koneksi server CA berjangka waktu, coba lagi nanti.", - "721eb0b3ea85b39c22f16d6dfc84bc32": "Nama domain bukan milik penyedia layanan DNS ini.Harap pastikan bahwa nama domain diisi dengan benar.", - "b5366a9c53b455fdf8a552c205ca9021": "Koneksi server DNS gagal.Harap periksa apakah kuncinya benar.", - "4de3dc0403846edfe5ff520837e2bbe5": "Penandatanganan gagal, nama domain set domain yang tepat: (.+): {} Melebihi jumlah mingguan dari penerbitan berulang!", - "30c0b6ae1acf6137b588473814f3330d": "Penandatanganan gagal, IP server saat ini telah mencapai batas membuat hingga 10 akun setiap 3 jam ..", - "797e2e43e3fc3737891adc8ab4a1655c": "Verifikasi gagal, nama domain tidak diselesaikan, atau resolusi tidak berlaku.!", - "9efd01f346301888216d77d35ec156cf": "Otentikasi gagal, kesalahan resolusi nama domain atau URL verifikasi tidak dapat diakses!", - "6c23a7d25119c77017d1aa04761fefe8": "Gagal terhubung ke server CA, coba lagi nanti.", - "b7a370078ae6520cde883252890195cf": "Nama domain yang tidak didukung {}, silakan periksa apakah nama domainnya benar!", - "1593706a4e3794c75129c8347021f0c5": "Nama domain {} tidak menemukan catatan resolusi.Silakan periksa apakah nama domain diselesaikan.!", - "1d80008b0cc4936ab73047baf061c84e": "Jika catatan resolusi TXT yang valid tidak ditemukan di nama domain {}, silakan periksa apakah catatan TXT diuraikan dengan benar.Jika diterapkan oleh DNSAPI, silakan coba lagi dalam 10 menit.!", - "81dab277ae106f35a118916e25f3f026": "Menemukan catatan txt yang salah pada {}: {}, silakan periksa apakah resolusi txt sudah benar.Jika diterapkan oleh DNSAPI, silakan coba lagi dalam 10 menit.!", - "b1bc7e763e87ef08d753a0676a0d5361": "Nama domain ini tidak ada di bawah akun DNSPOD ini.Menambahkan parsing gagal.!", - "43901eff07fff70732a4e1d6a732920b": "Koneksi diatur waktunya, server CA tidak dapat mengakses situs web Anda!", - "7cb06b776259c13fa73d3be5577df74c": "Nama domain {} saat ini diperlukan untuk memverifikasi catatan CAA.Harap selesaikan secara manual catatan CAA, atau coba lagi setelah 1 jam.!", - "09c36cbe592612c2546e60652f2d6964": "Timeout verifikasi, silakan periksa apakah nama domain diselesaikan dengan benar.Jika DNS diselesaikan, koneksi antara server dan biarkan", - "e10beec48a4a4b433b2fec2eaff64671": "Lebih dari 5 kegagalan verifikasi dalam 1 jam, aplikasi dilarang sementara, coba lagi nanti!", - "239067c8e0586af7c09738e8240438fb": "Pembaruan gagal dan direktori sertifikat tidak ada.", - "c7664672bf11463a4cc40c61aeca77f1": "Pembaruan gagal, hilang akun_key.", - "3f56bc50f098e641bb3d42e2d4255cbe": "Siap Mendaftar untuk SSL, Nama Domain {}", - "bd6995f087c0dacaecd470ca10539a2b": "Daftar nama domain yang diterapkan tidak bisa kosong.", - "3b5e16d8f5e1b88c78e494e6601a4d01": "Dapatkan sukses, tolong selesaikan secara manual nama domain", - "cf6b24b05942cd0c3723d7a4c25e6138": "| -Seltiffan-sertifikat ..", - "bbb21c1842b512148f687ea068553c85": "| -Setting konfigurasi pembaruan otomatis ..", - "c06d0b48f82d74d3c2854dabdba12d93": "|-Aplikasi berhasil dan secara otomatis digunakan ke situs web!", - "569488d54cbcce1331896e4254f63a92": "Aplikasi berhasil.", - "1851141907c561e6ac67cba17e549232": "| -Initializing ACME Protocol ...", - "78e67927014eab1b84eb285b6057fca6": "| -Sok Akun Pendaftaran ...", - "4896fdcb74c0e04522c8d3d89d08d569": "| -Betting informasi verifikasi ...", - "1016ed461618afd2dde9a4a709a4d080": "| -Memuatkan informasi verifikasi ke ujung depan, tunggu pengguna untuk menyelesaikan nama domain secara manual dan lengkapi verifikasi ...", - "81a3b1828b60659bc3d3c9711e66f0ba": "| -User mengirimkan permintaan verifikasi ...", - "f147fc272d665cd009e1108c5fb6993d": "| -Memajakan CA untuk memverifikasi nama domain [{}] ...", - "4c699430325d31db3d7b43b0a0999364": "| -Get CA Hasil Verifikasi [{}] ...", - "2b7dd2a937ababf46efb11073787664c": "| -Semua nama domain diverifikasi dan CSR sedang dikirim ...", - "1de253d3eb460e60480626694092d89e": "| -Getting Konten Sertifikat ...", - "a0c16d2f8e2aeba9dd9a3b040861ff39": "Akuisisi sertifikat gagal, coba lagi nanti.", - "89edc2a5e6ccecc2bdbdd1f9536fb90a": "| -Error: {}, keluar dari proses aplikasi.", - "94417e0c15f634f59ce15128ef146686": "| -Error: {}, keluar dari proses aplikasi.", - "03268bb5fa60cf57ac7c30f1f99dab01": "| -Kelesaikan proses aplikasi!", - "be2d0d9f1a9d04ff22b70bd5bee9b8ef": "Terjadi kesalahan saat meminta sertifikat menggunakan DNS", - "409bd1860bf065c68921473fc2266347": "| -Adding Resolution Record, nama domain [{}], nilai catatan [{}] ...", - "8b2ee088303a8001eaedb8c62e3de7e3": "| -Attempt untuk memverifikasi hasil resolusi, nama domain [{}], nilai catatan [{}] ...", - "a11fba95c84fff590acd7dbdea4528e6": "| -Request CA untuk memverifikasi nama domain [{}] ...", - "676e1a4f8e4561ad55045461f3421d62": "| -Ceck CA Hasil Verifikasi [{}] ...", - "d60d5b998a8ef802ba7f5b5ed343e256": "| -Se kesalahan terjadi, coba lagi [{}]", - "71087be1722815599ebecd0fd0f58b5e": "| -Fetching Konten Sertifikat ...", - "6d1e7a222bfe888debd080a117490c9d": "| -Clearing Resolve History [{}]", - "77619ceb7742d8a8f87e52b02592d873": "Penandatanganan gagal, kami tidak dapat memverifikasi nama domain Anda:

1.Periksa apakah nama domain terikat ke situs yang sesuai.

2.Periksa apakah nama domain diselesaikan dengan benar ke server, atau resolusi tidak sepenuhnya efektif.

3.Jika situs Anda memiliki pengaturan proxy terbalik, atau jika Anda menggunakan CDN, silakan matikan terlebih dahulu.

4.Jika situs Anda memiliki pengalihan 301, silakan matikan terlebih dahulu

5.Jika cek di atas mengkonfirmasi bahwa tidak ada masalah, cobalah untuk mengubah penyedia layanan DNS.

", - "4d6822ed3bd01f379f2ab4b1e68068d7": "| -Medar saat ini tidak ada sertifikat untuk memperbarui.", - "b74c00ca5fee122c49cd66ce3d91b2cf": "| -Renewal gagal :", - "140bda69874872f8402052c613c0b3b9": "Email Uji Peringatan Aapanel", - "76a1ec4a3fcdc304394ff14dc90f8072": "Jumlah utas panel harus antara 1-1024", - "dd7e82b5fb3c67e3e41d96f22ba838fd": "Port panel baru", - "40624aabb99173387dd6d575759b12db": "Parameter CERTPEM tidak ada!", - "37db9679113eef382992a1478f1b79ff": "Parameter privateKey tidak ada!", - "d2174fc17fcd785706114088b84dbbce": "URL login sementara telah dihasilkan", - "b5101eb6e685091719013d1a75756a53": "\\ 1", - "0bfe47819da04212a33dac83b71430e8": "\\ 2", - "946fb31f804cdde218dbf05d7183e94e": "MD5 Konsisten!", - "d83dadd8fcee6c014db8af454bc279fc": "Unduh berhasil", - "1336bbfcadd9119f86ecd48c2d9fb770": "Koneksi database tidak normal.Silakan periksa apakah otoritas pengguna root atau parameter konfigurasi basis data sudah benar.", - "ee102508d210854b6fc7da18e598140b": "Deteksi kata sandi yang dihasilkan gagal!", - "6e72fc97e2f1be35ae40ca21d6b1df38": "Basis data WordPress ini tidak ditemukan, ini mungkin disebabkan oleh fakta bahwa Anda telah menghapus database secara manual", - "6df8e9d3a4e149ff12445d981f6fc244": "Kata sandi reset berhasil", - "f748d4e467e9f4f27540b6f5ce5b1ef8": "Fitur ini saat ini hanya mendukung Nginx", - "9747bb4f34180afd2f9a681397b269fb": "Dibersihkan dengan sukses!", - "015d337f0646fe4b8a89b30041436e7f": "Diperbarui dengan sukses!", - "321b336d92b3e894060637528499dcf9": "Penempatan berhasil!", - "1850193ca4b37a25ee94db903eddc16f": "Penyebaran gagal!", - "b390405514d6291f511c9f3a4fb31249": "ID Situs harus numerik", - "e650b17a0b833e3bcdd8e859b37ce94e": "Basis data ini tidak ditemukan!", - "a0adaeeb3642584bd931c757b6f71d78": "Optimasi php fpm berhasil", - "f11ab236591dc778c39c9429e141dba2": "Optimalisasi MySQL berhasil", - "d145648d4281cb3266714c5986bcab8b": "Konfigurasi cache Nginx Fastcgi sudah ada", - "9c373c2796e866dc590f9dc7c80609da": "Kesalahan konfigurasi Nginx FastCGI!", - "2750e686fcc97deec0122789a059edbd": "Konfigurasi cache fastcgi nginx selesai", - "615681ddc1b0efb9f6d434adc1451bb7": "Konfigurasi Cache Nginx Init Fastcgi sudah ada", - "a61c53dff88925e428f2a295b18ac807": "Kesalahan konfigurasi Nginx Init FastCGI!", - "28b386f7ab5957184b60f47c0e540d68": "Konfigurasi Cache Nginx Init Fastcgi Lengkap", - "b7082bd55a134bb3a142570572e1c469": "Konfigurasi FastCGI tidak ada dalam konfigurasi situs web", - "c0ff8a4b4b8f68c4ba7df88588291590": "Konfigurasi FastCGI sudah ada di konfigurasi situs web", - "e3a6621c5ea036c8f82d3f2d343f1bc8": "Kesalahan Konfigurasi FastCGI Situs Web!", - "4c87778ab71a4e47170ccafd6edb4922": "Konfigurasi Fastcgi Situs Web Lengkap", - "90d0982f5d024da53b21f69d3f0c8cbb": "Basis data tidak ada!", - "b376175f0c97d2ab7c37e44ec3b3a1b9": "Nonsupport MySQL5.1!", - "0161305479129bbe47bb020605a15d40": "Siapkan Sukses!", - "5c9b599b99f7a169b9cd25f7045eaac5": "Sinkronisasi Sukses!", - "b6601359f1ae1067d4c4d271b7407639": "同步成功 1!", - "10a1984f6c5b935c5d8c7d4b4345e1e5": "同步成功!", - "86da84e8e3aacf73ee745caee5904268": "同步失败!", - "8ed30fe61ac59c9e1cb4a75d9a48d477": "Dibuat dengan sukses!", - "330e51da1228a070540f82eb8e78155c": "Siapkan dengan sukses!", - "7ac73ef676faaa8a5f8e3924b4d151e3": "Nama pengguna atau kata sandi tidak bisa kurang dari 3 karakter", - "88d8a4565feba5ad270c00e85564b96d": "OpenLiteSpeed ​​saat ini tidak didukung", - "c1f8cf125da0d6db1c4e0d09033c9ddd": "Harap masukkan akun atau kata sandi", - "bd7fb7b4280616cbe5de49eb1ee8cc3a": "Harap masukkan direktori untuk dilindungi", - "8c48114518721e3966cd4553a0cee705": "Harap masukkan namanya", - "dd65d82f6868cfa127f86e5658674829": "Perlindungan kata sandi situs telah ditetapkan, harap batal dan kemudian setel.Direktori Situs -> Akses Kata Sandi", - "1cc6b0e84b90d0ca0b863fccc0f33b36": "Direktori telah dilindungi", - "b7526fc6f8b21e71ea1e290a982df4c9": "Berhasil dibuat", - "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2 tidak mendukung multiphp!", - "69be778c38b9edc0ab3040c478c39370": "Kesalahan: %s
2. disarankan untuk memilih infrastruktur resmi dan andal untuk menghindari kerugian yang tidak perlu.", - "475dfbee8626a4d939cf631aad174de3": "Pemindaian: {}", - "71c7dfa944a5a50f281c0acb232dcdeb": "Pemindaian: {} ...", - "0c29ac6d8e69451c80f8ef857e499ab2": "Direktori sensitif ditemukan {}", - "53872e73575a306598c0c4060b44181c": "Gambar ada di direktori sensitif: {}, dapat digunakan oleh penyerang untuk mencuri data sensitif atau kode sumber, yang mengarah ke masalah keamanan lebih lanjut.", - "6fe56120a0502f9678988d756dd27682": "1. Masukkan wadah yang digunakan menggunakan gambar dan hapus direktori tanpa mempengaruhi bisnis
2. Jika tidak dapat dihapus, batasi akses ke direktori", - "6b2f9867ccd6f3e6f06726c06ed684d5": "File sensitif ditemukan {}", - "6684913201a60be0b5e89c4dfb210719": "Ditemukan Bashrc Backdoor {}", - "9a9f27d5f9f8c056fff7986c87a94c30": "Ditemukan bahwa gambar tersebut memiliki backdoor Bashrc: [{}], konten kode berbahaya:
{}", - "d8a828116070b9d92315ca309cca1991": "1. Masukkan wadah yang digunakan menggunakan gambar dan hapus kode berbahaya di bawah file
2.Periksa apakah wadah telah diserang, dan perbarui token akses atau kata sandi akun bisnis di wadah
3.Disarankan untuk mengganti gambar resmi atau wadah penyebaran gambar tepercaya lainnya", - "e1439f3f7d25d378078d513a82a3fa87": "File backdoor ditemukan {}", - "9ede9d4bd542eedf78e39b0acf0206e3": "Ditemukan bahwa file backdoor Bashrc [{}] ada di gambar, dan konten kode berbahaya adalah:
{}", - "686765b4612ecd8f774648db29a1541d": "Cron Backdoor Ditemukan {}", - "390bdc0b3c37a56ede9467b0c220a3b6": "Ditemukan bahwa cron backdoor [{}] ada di gambar, dan konten kode berbahaya adalah:
{}", - "caea084281a3cb2515e5618cd3856163": "Sistem backdoor yang ditemukan: {}", - "d04061273caa56d5a0c3d74f3e9fd482": "Ditemukan bahwa file backdoor systemd [{}] ada di gambar, dan konten kode berbahaya adalah:
{}", - "fc76e0fe415c49cc1c09bf76035fc4e9": "Ditemukan sshd backdoor {}", - "00b2409f52ef5bc56afe29ccbe5cfa2c": "Ditemukan SSHD Soft Link Backdoor: {}, file mengenai fitur berbahaya [exe = {}; link_file = {}]", - "e747da31a54cd71fb1a2860cae0f9f77": "Menemukan TCPWrapper Backdoor {}", - "a2b09164c8d23894736bcc6a646861e0": "Ditemukan bahwa file backdoor tcpwrapper [{}] ada di gambar, dan konten kode berbahaya adalah:
{}", - "a7fd9f6b190b8531039376fbbda5f482": "Pengguna ditemukan berisiko melarikan diri {}", - "5d46ed5f4af3f30cfcc8bd66942f93b4": "Nama pengguna {} dapat menyelesaikan pelarian wadah melalui perintah [{}], yang memungkinkan penyerang untuk mendapatkan hak akses ke host atau wadah lainnya.Konten berbahaya:
{}", - "4ca0a18aa36a60613104cacdae514dec": "1. Disarankan untuk menghapus gambar atau tidak lagi menggunakannya
2.Jika sudah ada bisnis yang menggunakan gambar, masukkan lingkungan kontainer dan hapus konten pengguna {} dalam file /etc /sudoers.", - "611afea08ae3b216a34dfde4c143f46c": "不支持的系统版本", + "c0ef08aa7bd6276137ccd491a8041223": "Tidak ada volume untuk dicadangkan", + "584e35dd4a55da88bd232ac7a19b9b95": "Tugas cadangan dibuat dengan sukses.", + "0b08674e1c87f3f8508a4ae9b0c160f8": "Gagal membuat tugas cadangan {}", + "2a0f93407bb61e2403ccd032cbc64e3e": "berhasil menghapus", + "13d829d3f2b78c971207d944f2a96c55": "Gagal menghapus file, alasan: {}", "0af5787b053c4bf5dbe610731f7d4199": "Jalur file tidak dapat berisi karakter Cina!", "719ee030d81490fc055af0c4426aacb9": "Deteksi Gagal: {}", "ee3936ffdc910e2cb8578ad1fae322f0": "Deteksi berlalu!", @@ -2001,136 +2037,64 @@ "428ed92bf9d3198f4c9885c11fdb2be3": "Templat ini berhasil: [{}]
Templat ini gagal: Nama templat sudah ada atau diformat secara tidak benar [{}]", "70975749d256333f1b3b62c864ca265a": "Gagal memodifikasi!", "2360e954ae9eecac28b2a3edad5e8ce0": "Modifikasi dengan sukses!", - "e8ad47bc3f119a4d4072f5cb114676f4": "Nama gambar tidak bisa kosong", - "e5e3829984a9637afc2546ad2c87d83b": "Jalur cermin tidak bisa kosong", - "e5f40049c6d67bd11d9a1a1889f5b84a": "ID gambar tidak bisa kosong", - "5e022f79dcc774c79bc55ee28774e2e7": "Nama gambar tidak dapat berisi /", - "c00be60f9f3f7d747aadfdb124e855ef": "Berhasil disimpan untuk: {}", - "cb1f8d99b492340cf701101c87884a8c": "Tidak dapat mengekspor gambar!", - "afaa91d141ded3e37b8b9ebf8bc31c51": "Mengekspor gambar gagal dan koneksi ke Docker berjangka waktu.Silakan coba restart Docker dan coba lagi!", - "5b980f2e1c82c04c91376d55d4306a91": "Gagal mengekspor gambar!
{}", - "e5e8c7cac8b71e94280fa08301d21e78": "Harap masukkan jalur gambar!", - "5441400ea3bd16cffdf70c46c34f61d4": "Gagal mengimpor gambar.Ekstensi file harus.", - "67b97e4746a2faf5d59206a80bb28649": "Impor gambar berhasil! {}", - "deceb44868a29ae5d579114348736cbb": "Impor gambar gagal dan direktori sementara dari wadah gagal dibuat.Silakan periksa apakah perangkat lunak perlindungan memiliki catatan intersepsi!", - "8eb05618b0f04e727b0685427fd49c8e": "Gagal mengimpor gambar!
{}", - "721aa02577670c1049ea9d12caa8938c": "Harap masukkan jalur DockerFile yang benar!", - "736df9a7c491f3299efdeb9f7d7e9e0f": "Bangun gambar dengan sukses!", - "6e85568dae869303ca7a4486f55458a3": "Build Gagal, Koneksi Waktu Keluar", - "5bb301b85cc1f42e56174d3d9a4c0286": "Bangun Gagal!{}", - "f51455b323ec2db8004c812001043330": "Build Gagal! Dockerfile yang ditentukan tidak ditemukan", - "8e1b9c9b75950d0feba6813d32766e61": "Build Gagal! {}", - "eba0ec758a6464a20c14c0f23ceee62e": "Mirror berhasil dihapus!", - "8dd326278d09a3ac4bc56cf725c8f262": "Hapus gagal dan gambar mungkin tidak ada!", - "11ead921bc0e3d94f1f9e0db4bf8ed8d": "ID gambar digunakan dalam lebih dari satu gambar, paksa gambar untuk dihapus!", - "43993616c7433350755d30a3b4d065dd": "Gambar sedang digunakan.Harap hapus wadah sebelum menghapus gambar!", - "d6992c3fcf2269c249cd5f18f1ac2c11": "Gagal menghapus gambar!
{}", - "0c6c071174fde5b47c9eef8088c17a89": "Gagal menghapus gambar, koneksi ke Docker Timeed Out, silakan restart dan coba lagi!", - "a3ba80a8e1e0d9af94c809e909431b3c": "Gagal, Masuk ke Repositori [{}] Gagal, coba masuk ke repositori ini lagi! \\ R \\ n", - "cc40077b6ee61fbfa35713a21e8eb866": "BT_FAILED, Masuk ke Repositori [{}] Gagal, coba masuk ke repositori ini lagi!{}", - "60b488c60b6747bf34a86a69740b636d": "Gambar yang didorong tidak dapat berisi [/], silakan gunakan format berikut: Gambar: V1 (Nama Gambar: Versi)", - "44dbec830b87eb037e8fcbb0e1b56160": "Tidak dapat mendorong ke repositori publik Docker!", - "b4c46001066c912344e3bdb0df86e848": "Repositori [{}] Login Gagal!", - "0ebfb094c6482acb049e0dd0d3107307": "Dorong gagal, kesalahan label gambar, silakan masukkan seperti: v1.0.1", - "d26bdd6e86002ed92089dc71347822ce": "Dorong gagal, tidak memiliki izin untuk mendorong ke repositori ini!", - "82058092ad7d2c7aa5e2f012b6544e59": "Dorong kegagalan! {}", - "2b228d4775d23d2725ec227ba648bd43": "Dorong berhasil, mirror: {}", - "9e396f640866ded9c3a47268f96a36e3": "Menarik gambar, harap tunggu ... \\ r \\ n", - "7e5f4d488d318dc7c235095c8456f5e4": "Tarik atau cari gambar ... \\ r \\ n", - "5a7377f73fc144fd961e8b2ffeba66af": "Tarik gagal! \\ r \\ n", - "97a6dfe3a273202edffe31af7a43e220": "Gagal menggunakan stasiun cermin default untuk menarik gambar!Mencoba menggunakan stasiun cermin lain untuk menarik Anda, harap tunggu ... \\ r \\ n", - "484616540fc726ef4f52e97a1c2f0fef": "Gagal menarik gambar! \\ R \\ n", - "1cd77329b2bddfb200e656214b1fdf32": "Gagal menarik gambar!", - "63c709b9759af42fef890d539d822575": "Tarik gagal! {} \\ R \\ n", - "b4aba972332d1f3728171905a033fb99": "Gambar tarik [{}] berhasil \\ r \\ n", - "2fae21ffd185d9e9730b39bc7de23852": "Gambar berhasil ditarik!", - "8a635442294fd90195a43d9a1672fc3f": "Gagal menarik gambar!", - "711de72d616e7abb29dfa919244d382d": "Tarik gagal, gambar tidak ada, atau gambar mungkin gambar pribadi.Anda harus memasukkan kata sandi akun Dockerhub Anda! \\ R \\ n", - "e9511e26273da5b4537b4683668b548e": "Tarik gagal! {} \\ r \\ n", - "05d13bf5dcc37754db74b2356e6e117c": "Tarik gagal, tidak ada gambar seperti itu di repositori! \\ r \\ n", - "714841af7f3de6c8d99ba03f4cee0ee5": "Tarik gagal, format gambar salah, seperti: nginx: v 1! \\ r \\ n", - "2d941c4fa4da32ccafa8670a07f23c1d": "Gambar itu berhasil ditarik.", - "5282194697748d9fcd1ccd8a90428424": "Mungkin tidak ada gambar cermin ini.", - "d6facab17334983e7c6f8c561c239820": "Gagal menarik gambar, ini adalah gambar pribadi, silakan masukkan kata sandi akun!", - "b507deb7848d566982b339265c8f5482": "Tarik Kegagalan Gambar

Alasan: {}", - "e90811ef0a60b6d299b4e1064d7788d0": "Tidak ada gambar yang tidak berguna!", - "f343313c101aeaff0516990ebea3dcef": "Gagal Menghapus! {}", - "90ecd58b3feb0b2be11f0af685ad39fe": "Penghapusan gambar yang tidak berguna gagal dan koneksi ke Docker diatur waktunya.Silakan coba restart layanan Docker dan coba lagi!", - "4097585e32152eb74bbee5ab8c463718": "Layanan Docker berjalan secara tidak normal, silakan restart dan coba lagi!", - "26a0931677e111565f3ff7d059b94d8b": "Pengaturan gateway salah, silakan masukkan gateway yang cocok dengan subnet: {}", - "def2ba1ce0e4d77692c14e5b984636fa": "Kesalahan Format Alamat Subnet, Harap Masukkan misalnya: 172.16.0.0/16", - "716eeeb727fd667635ccf1d18891d46e": "Kesalahan format rentang ip, silakan masukkan rentang IP yang sesuai untuk subnet ini:", - "e310a873e7812c7f994d482604061fee": "Rentang IP [{}] sudah ada!", - "db88b911ea66744c24b22efcafef2101": "Versi kernel sistem terlalu rendah, harap perbarui kernel atau pilih mode jaringan lain", - "9cebb294a44695984eaaf2134df63a51": "Node saat ini bukan segerombolan dan perlu dikonfigurasi sebelum dapat digunakan", - "85ac438bd64f13e2ad61cf60e5ade3d3": "Gagal menambahkan jaringan!{}", - "640520ffb5d9c01336710bad3ea6d7ff": "Menambahkan jaringan berhasil!", - "87574a543563d2e037b87a6cf705e3ff": "Jaringan default sistem tidak dapat dihapus!", - "23b6d9d6c36088deb928efad7fb9b63b": "Jaringan tidak dapat dihapus saat sedang digunakan!", - "2aa70dad9bff94a855fdde3fc113e6c5": "Hapus Gagal!{}", - "8f512551c7ddf61331c3d068e80c642c": "Tidak ada jaringan yang tidak berguna!", - "08efe6a4e12437b79225c8b59fd710eb": "ID jaringan tidak bisa kosong", - "a636381ee5e6d6d021fff745ca132905": "ID Kontainer tidak bisa kosong", - "31a75a8d220d37dc4a7ea28d0f24cc19": "Pemutusan jaringan berhasil!", - "a2b9895fca7698902da9319b52392366": "ID Kontainer: {}, tidak ada!", - "c81f03a558307d5aaf3b339af28e04ff": "ID jaringan: {}, tidak ada!", - "12a90fe85b8863e1dea43284988d7750": "Pemutusan jaringan gagal!{}", - "6226d2fef3bf047236f0f3a57dcd71fb": "Koneksi jaringan berhasil!", - "d882b8375782b1bc56ccaf84ed27d20b": "Gagal terhubung ke jaringan!{}", - "221d1ea3c23f430e03a4486dca865014": "Wadah tidak ada, silakan segarkan browser dan coba lagi!", - "7e88e25ea6c628c2d03c526c04af3eed": "Gagal mendapatkan status kontainer:", - "ae178e022cf2fe30f402145572528de8": "Nama volume bisa tidak kurang dari 2 karakter!", + "7c6f761019365f8a5cfb2fb54d9e199d": "info.json diunduh!", + "10066fce84fe34e9cc33e0338532988b": "Unduhan info.json gagal!", + "0672e579ab0e3454713eb683ddcc4859": "{} Unduh Gagal, Harap Kembali Sync!", + "8e790e81fffa7f51d099f710bd8f82cf": "{} uji file yml gagal, {}", + "371acfea202589c4efd6724888f66595": "{} Unduh selesai!", + "51cf61e34b3f71ce1e430cdfcf129b80": "{} Dekompresi gagal", + "c59b65890496cdf2b14d127a1f76f73d": "{} berhasil diekstraksi", + "0117718c35c7a16a62de5c259e1d35ee": "Penciptaan Direktori Gagal karena alasan berikut: {}", + "374e3fe41b55a0b29420e455fb514dd6": "Volume penyimpanan telah dibuat", + "6d0d40f64f89227daf345eb2257638e8": "{} tidak dapat berisi spasi", + "a00b49ace55de909015029a0d6d6096f": "{} tidak bisa nol!", + "54498312bb8f97ce07a9a0b0b47cfad1": "Port Server [{}] ditempati, harap ubah ke port lain!", + "47b74e08252747225c49ea0cb011c79e": "Startup proyek gagal {}", + "838089af9a2941a49862f342c056a8ca": "Mulailah Membuat Proyek", + "9b149598fb30f54fec9e82a3d121a464": "{} sudah ada, harap ubah nama proyek", + "634370637f6a5b88940c75f826953d0c": "Direktori Proyek Pengguna Gagal Membuat, Detail: {}", + "f7b14d3f642d711a23d5a0cca725fd0d": "Gagal menyalin direktori proyek.Detail: {}", + "7bdaccb3d20432c5e0150862ab1cc3f3": "Nama parameter yang hilang", + "9b90b5b49486a61d9b0e6dbbbcb56cad": "Parameter yang hilang container_info", + "b23d7110e9bf6539b4964afe0d4934e2": "Pengelompokan sudah ada", + "a90ca6939fe71693c145f50596c6e0e6": "Wadah {} telah ditambahkan oleh grup {}!", + "e3cf7e2f2d14257e7ea33657b135d534": "Tambahkan gagal: {}", + "fcbeb38a63ced9d3de476fb08c31d71e": "ID parameter yang hilang", + "fe4e0032f69b4100ed143d475e8b5050": "Edit kesuksesan", + "6c4ed52bea35c4c43839b8f0b44489f9": "Edit gagal: {}", + "6c0129a45e9da4e1820335f3d06a869f": "Penghapusan gagal: {}", + "2a743a86676fd52214d3c0af1b0238b5": "Kesalahan Parameter Status", + "f95136e5c1f3ccbb09ace8fc24f1e0ca": "Operasi Container [{}] gagal", + "2e01172e31495f41fcebcf3f831cc82c": "Operasi berhasil", + "244a98f8c45f938980f48b168aef02c9": "Operasi Gagal: {}", + "fc431240dfc80a731900d5f2ddb6dfc3": "Wadah start order {}", + "5ea6c6eea14c24c92eeeccaeea5c46dc": "Keadaan tidak valid!", + "0f3f874698792dc81c7c00b9e74fea34": "{} \\ r \\ n", + "aad4acc1243565c5c2ca41e5733e5fe0": "berhasil \\ r \\ n", + "d8f5a29760a4f000dd754819b1faadcc": "Gagal \\ r \\ n", + "73977612ef83925db43df7745df9c5eb": "Respon \\ r \\ non selama lebih dari 10 menit! \\ r \\ n", + "6345c76d66a8a9e9cdd3f9d996ff062d": "Tolong lulus dalam CMD", + "bba401eadefa8222f3e60a312cc19f34": "Hanya Docker Run atau Docker Pull Command yang dapat dieksekusi", + "b5592904212696df3e5bcec990c8676a": "Perintah berbahaya ada: [{}], eksekusi tidak diperbolehkan!", + "cfff471dc04b6ba4aeb2cc2844b2c94b": "Simbol Berbahaya ada: [{}], eksekusi tidak diperbolehkan!", + "f1d9b154a0c2625d828a504a8cb35682": "Perintah telah dieksekusi!", + "45a0bbacbe8d5ea062167e88423e4573": "Server Nginx atau Apache tidak terdeteksi, silakan instal satu terlebih dahulu!", + "bdaf560796795d6a303bc9a1d75a34c5": "Jenis Proyek [{}] Domain yang ada: {}", + "4588a786e80c83c2cbde37b930c3d778": "Port Server [{}] tidak digunakan, silakan masukkan port yang digunakan untuk membalikkan!", + "6888cf6586ce3c187150146a2d1db0ac": "Tambahkan kegagalan, database tidak dapat ditulis!", "9f9663b59d32947ff1f2c5b364c571b8": "berhasil ditambahkan!", + "e6bddfc6a0bbf72d592236c61b411f9a": "Tambahkan gagal dengan kesalahan: {}", + "1bfa1b1738332c4835f5efe7c54ab9c2": "Kesalahan parameter!", + "0d66954ff42aa042c219a356266f5bc0": "Tidak ada informasi proxy terbalik yang terdeteksi!", + "ae178e022cf2fe30f402145572528de8": "Nama volume bisa tidak kurang dari 2 karakter!", "365c770f123d22093084908ebcdc75fc": "Nama volume sudah ada!", "2dc51ae60242f0e5b56a9f0d176f91d4": "penambahan gagal {}", "307feea9ab8928f39595316b11992cb1": "Tag Opsi Driver harus pasangan Kamus/Nilai Kunci!", "f529949f8a98615c109ee8b8eb9f7656": "Tambahkan gagal!{}", - "2a0f93407bb61e2403ccd032cbc64e3e": "berhasil menghapus", "a4ec5c1fa47f2ce0c875f91ea4e7dd08": "Volume penyimpanan sedang digunakan dan tidak dapat dihapus!", "11ff7153b67d275618dd3a62d1e56373": "Volume penyimpanan tidak ada!", + "2aa70dad9bff94a855fdde3fc113e6c5": "Hapus Gagal!{}", "55c31f03e88bd6ad4ce7f68d425648dd": "Tidak ada volume penyimpanan yang tidak berguna!", - "5395cc8155f62a666b8f0d0f9f207676": "Informasi repositori sudah ada!", - "9b10e472adfe6372c9175b9002f098fd": "[Repositori Docker Resmi] Tidak dapat diedit!", - "5858be44c285048a8f51c126b2fd23e9": "Pengeditan Gagal!Alasan: Dekripsi Kata Sandi Akun Gagal!Harap hapus repositori dan tambahkan lagi", - "7e51d0e26e1b467aff3c89d3e0751ec0": "Pengeditan Gagal!Alasan:{}", - "6478f13dd58e5a4329e19be9020243ff": "Repositori ini tidak dapat ditemukan", - "d5309f3186607eb36bee41e8a28cea3a": "Edit Sukses!", - "9e20bffc0d4093d18fcbc5c98fa0fd87": "[Repositori Docker Resmi] tidak dapat dihapus!", - "a62336a87697ab6911ba550015a798ef": "Hapus gagal, ID repositori mungkin tidak ada!", - "c28bc5c07ec6f2b56777ac7c852dd64b": "Siapkan Sukses!", - "f2bd8f0373084151bbc07e8c1409e37c": "Pengaturan Gagal! {}", - "54197759827cfaf0cdb1e213fa49771e": "Tes login gagal!Alasan: Mungkin kesalahan kata sandi akun, silakan periksa!", - "657a0b7e82731fb4ae516d14081f17d0": "Tes login gagal!Alasan: {}", - "11cde3a2ca81c845978b98e4a6ec471e": "Pemantauan menghemat waktu harus menjadi bilangan bulat positif!", - "b314fb25bf654a2256bf53b0f6986c93": "Data pemantauan tidak dapat disimpan selama lebih dari 999 hari!", - "60e46aeaed758964902dd7ae99858f03": "Di sana", - "1ba194462d31177d3db4ad6bf18fdbe5": "Pengaturan layanan Docker gagal, silakan matikan anti-intrusi Aapanel dan coba lagi!", - "422f78617d6852c41e370982d73235ed": "Pengaturan Gagal!Alasan Kegagalan: {}", - "dca5bd22c99a74f74074a3a53d78a58b": "{} kesuksesan", - "be62f7640f2c5b730ba50ecc580ae618": "Kesalahan file konfigurasi global, silakan periksa {}!", - "8ebe0b989b543cf96149811c7a1f3fe2": "Alamat Speedup [{}] Kesalahan format
Referensi: https://mirror.ccs.tencentyun.com", - "ec1ec17a5862a949e277432e1d09484d": "Pengaturan Gagal!Alasan Kegagalan: {}", - "179a2001e96bb8d0475488f80c7216a8": "Perbarui dengan sukses!", - "f4dc83b81fe6993f99c2b54494eeeec1": "Mulailah memantau dengan sukses!", - "af79fd88d4b6f7e8a1ac05e199747fdb": "Gagal mulai memantau!", - "6f4d03d4d1ee0bd282ea744730b7ceda": "Pemantauan Docker berhenti dengan sukses!", - "4cc06d8560bb116a38a5aae1458cbe4a": "Jalur file komposisi Docker tidak bisa kosong!", - "8d885b86e8562c2128689c4a2601c054": "File Kompose Docker tidak ada!", - "7bdd4d85dda1275e2be709fd9e0d71dd": "File Komposisi Docker tidak dapat dieksekusi atau bukan file compose Docker!", - "c28e19f0398bc1819a890878021836c1": "Tugas instalasi sudah ada, tolong jangan menambahkannya lagi!", - "a87b64b2d19f29438274f80ce36a3579": "Tugas instalasi telah ditambahkan ke antrian!", - "c1710a5899fa03f7ad5ea1945a91e4f8": "Harap hapus semua wadah dan gambar sebelum menghapus pemasangan Docker!", - "d388487780fba74e4ff3f3b9ffbce58b": "Bisa dihapus!", - "c4ba6d01fd53333a6e7e85707758c550": "Hapus instalasi sukses!", - "b7affa7cc663144bc99b9edb3f1a027f": "Tugas perbaikan telah ditambahkan ke antrian!", - "cb49a4daafc9d27bd460967891968225": "Diselamatkan dengan sukses!", - "739722f14db791bd300e08318a48ba59": "Simpan Gagal, Alasan: Kesalahan Format File Konfigurasi Daemon.json!", - "58fcf0699f38a60c8025330585ac205a": "Simpan Gagal, Alasan: {}", - "720d2290c3082615c0f79894bfdcabd7": "Harap masukkan alamat I PV 6 yang benar!", - "c0ef08aa7bd6276137ccd491a8041223": "Tidak ada volume untuk dicadangkan", - "584e35dd4a55da88bd232ac7a19b9b95": "Tugas cadangan dibuat dengan sukses.", - "0b08674e1c87f3f8508a4ae9b0c160f8": "Gagal membuat tugas cadangan {}", - "13d829d3f2b78c971207d944f2a96c55": "Gagal menghapus file, alasan: {}", "6169a7282b361deb5f6f5b6e18f9426e": "Kesalahan parameter CMD", "286933a4f24bee0eed1f9300f70a30c7": "Hanya perintah Docker Run yang dapat dieksekusi", "a46a6b274dcbfc5a629d234c2816a165": "Ada simbol bahaya: [{}], eksekusi tidak diperbolehkan!", @@ -2157,24 +2121,26 @@ "994e5a057aca3524ba773ec33228e184": "Kegagalan penciptaan!{}", "00ff90441ea0bdece5d9e5c72efa14a7": "Pembuatan wadah gagal dan koneksi ke Docker diatur waktunya!", "8879635d66ad75dcbfc8c31ba1351116": "Kontainer gagal berjalan!{}", - "facfe02e3070c389fe486efac23f2ab6": "容器创建成功!", "71dc70f7ab3a4bc0c2a7141718d3a9b2": "Kegagalan penciptaan!", + "1983b37067c7e94095a5113786fdef9c": "Pengeditan gagal, waktu koneksi ke buruh pelabuhan habis, silakan mulai ulang buruh pelabuhan dan coba lagi!", + "c558fedcb5850939202e684ff32c7c50": "Pembaruan Gagal! {}", "ed0029af5f77a5dfacbc2452e8c3ec92": "ID kontainer tidak normal", "c5b3db7efde90edcb803a4a79e559b21": "Nama gambar baru tidak bisa kosong!", "b10305369ebb41ef24699b8137733465": "Cermin tidak ada!", - "d567f353b12e618571935661f31c2a16": "Pengeditan kontainer gagal dan koneksi ke Docker diatur waktunya.", - "c558fedcb5850939202e684ff32c7c50": "Pembaruan Gagal! {}", + "9e90efb62702b147b71e8731290caf44": "Gambar [{}] tidak ada, coba centang [Force pull image] dan coba lagi!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "Penampung baru tidak berhasil dibuat, dan penampung lama telah dipulihkan.{}", + "1f004e412319b7ed472624e011b3d2ba": "Pembaruan berhasil!", + "a2ea046c20d2da5cebf2dea01a62dabe": "Pembaruan gagal!Status kontainer telah dipulihkan", "b84bf4d95051856f9965b55bb5402de3": "Wadah tidak ada!", + "d567f353b12e618571935661f31c2a16": "Pengeditan kontainer gagal dan koneksi ke Docker diatur waktunya.", "f2124ee490df203b3f86509401c76a09": "Wadah ini berhasil diedit, dan subnet tidak ditentukan ketika jaringan [{}] yang ditentukan saat ini dibuat, dan IP tidak dapat disesuaikan, dan IP telah secara otomatis ditetapkan untuk Anda!", "b95d75cd8e04e9cca297c3cd1091b2eb": "Wadah berhasil diedit, pengaturan jaringan [{}] gagal, dan alamat IP telah secara otomatis ditetapkan kepada Anda, detail kesalahan: {}!", "4363bb34365a67238ecc6a98ce46b361": "Gambar telah dihasilkan, dan {}", "4bb30e8d57a6a7e548758daf4ac33983": "Kirim dengan sukses!", "a32e1f09fc2739d94c51a7168675e0e9": "Pengajuan Gagal! {}", - "9ff81cc845af62a773af3412bdf7d9a0": "ID wadah tidak normal, silakan segarkan halaman dan coba lagi!", - "d8f5602e197fb8b3c772f071ad4a8baf": "Pilih jenis shell!", - "9ad72ac09babc507baa6e165041e128c": "Cangkang ini tidak didukung-pilih-pilih atau sh!", "172f51d3307b02aeb6dc703a442f4724": "Gagal mendapatkan wadah", "684fc00ae67504a56c09ef71431b1261": "Berhasil diekspor ke: {}", + "f9a48b804d917398e795016687f3b0f4": "Harap matikan [Tahan kerusakan untuk Perusahaan] sebelum mencoba!", "3ab9d9b76e8d22434930622b5f0acc6a": "Wadah telah dihapus!", "d1fe1d6e5e8c17b60f749ad36ff3bcaa": "port server IPv6 [{}] ditempati!", "9f13645ac42f0c9908a35637a525d561": "port server IPv4 [{}] ditempati!", @@ -2197,6 +2163,7 @@ "dac7d97aeb94cf9d3b3b5d7d072c4cff": "Tolong matikan Perlindungan Tamper Enterprise sebelum mencoba lagi!", "32ca87e65c5fc75d3857767417b56439": "Gagal menghapus!{}", "b0ea22ff0b389c2a32b8f4367ab650db": "Kesalahan parameter, silakan lulus dalam restart kebijakan restart_policy!", + "179a2001e96bb8d0475488f80c7216a8": "Perbarui dengan sukses!", "3b2f70397fa8a827c7146cbd900f7222": "Pembaruan Gagal!{}", "c147897a9d1746a58de531e9c0158c23": "Wadah tidak dimulai dan tidak dapat diganti namanya!", "a89c2e8f7eb81399f984330e55014c6f": "Ganti nama dengan sukses!", @@ -2205,45 +2172,135 @@ "363b76cd4207ec1adb31b9f7ee3930c8": "Dibutuhkan dengan sukses!", "0fffc4397713115e14ef45273241dfbb": "Kesalahan Parameter, Harap Lewati: Komentar!", "dce2cbc7791016e4876ab144e53b4f82": "Kesalahan Parameter, Harap Lewati: ID!", - "7bdaccb3d20432c5e0150862ab1cc3f3": "Nama parameter yang hilang", - "9b90b5b49486a61d9b0e6dbbbcb56cad": "Parameter yang hilang container_info", - "b23d7110e9bf6539b4964afe0d4934e2": "Pengelompokan sudah ada", - "a90ca6939fe71693c145f50596c6e0e6": "Wadah {} telah ditambahkan oleh grup {}!", - "e3cf7e2f2d14257e7ea33657b135d534": "Tambahkan gagal: {}", - "fcbeb38a63ced9d3de476fb08c31d71e": "ID parameter yang hilang", - "fe4e0032f69b4100ed143d475e8b5050": "Edit kesuksesan", - "6c4ed52bea35c4c43839b8f0b44489f9": "Edit gagal: {}", - "6c0129a45e9da4e1820335f3d06a869f": "Penghapusan gagal: {}", - "2a743a86676fd52214d3c0af1b0238b5": "Kesalahan Parameter Status", - "f95136e5c1f3ccbb09ace8fc24f1e0ca": "Operasi Container [{}] gagal", - "2e01172e31495f41fcebcf3f831cc82c": "Operasi berhasil", - "244a98f8c45f938980f48b168aef02c9": "Operasi Gagal: {}", - "fc431240dfc80a731900d5f2ddb6dfc3": "Wadah start order {}", - "5ea6c6eea14c24c92eeeccaeea5c46dc": "Keadaan tidak valid!", - "45a0bbacbe8d5ea062167e88423e4573": "Server Nginx atau Apache tidak terdeteksi, silakan instal satu terlebih dahulu!", - "bdaf560796795d6a303bc9a1d75a34c5": "Jenis Proyek [{}] Domain yang ada: {}", - "4588a786e80c83c2cbde37b930c3d778": "Port Server [{}] tidak digunakan, silakan masukkan port yang digunakan untuk membalikkan!", - "6888cf6586ce3c187150146a2d1db0ac": "Tambahkan kegagalan, database tidak dapat ditulis!", - "e6bddfc6a0bbf72d592236c61b411f9a": "Tambahkan gagal dengan kesalahan: {}", - "1bfa1b1738332c4835f5efe7c54ab9c2": "Kesalahan parameter!", - "0d66954ff42aa042c219a356266f5bc0": "Tidak ada informasi proxy terbalik yang terdeteksi!", - "7c6f761019365f8a5cfb2fb54d9e199d": "info.json diunduh!", - "10066fce84fe34e9cc33e0338532988b": "Unduhan info.json gagal!", - "0672e579ab0e3454713eb683ddcc4859": "{} Unduh Gagal, Harap Kembali Sync!", - "8e790e81fffa7f51d099f710bd8f82cf": "{} uji file yml gagal, {}", - "371acfea202589c4efd6724888f66595": "{} Unduh selesai!", - "51cf61e34b3f71ce1e430cdfcf129b80": "{} Dekompresi gagal", - "c59b65890496cdf2b14d127a1f76f73d": "{} berhasil diekstraksi", - "0117718c35c7a16a62de5c259e1d35ee": "Penciptaan Direktori Gagal karena alasan berikut: {}", - "374e3fe41b55a0b29420e455fb514dd6": "Volume penyimpanan telah dibuat", - "6d0d40f64f89227daf345eb2257638e8": "{} tidak dapat berisi spasi", - "a00b49ace55de909015029a0d6d6096f": "{} tidak bisa nol!", - "54498312bb8f97ce07a9a0b0b47cfad1": "Port Server [{}] ditempati, harap ubah ke port lain!", - "47b74e08252747225c49ea0cb011c79e": "Startup proyek gagal {}", - "838089af9a2941a49862f342c056a8ca": "Mulailah Membuat Proyek", - "9b149598fb30f54fec9e82a3d121a464": "{} sudah ada, harap ubah nama proyek", - "634370637f6a5b88940c75f826953d0c": "Direktori Proyek Pengguna Gagal Membuat, Detail: {}", - "f7b14d3f642d711a23d5a0cca725fd0d": "Gagal menyalin direktori proyek.Detail: {}", + "ca1bc3e1d32b99b90395da47b88576a9": "Kesalahan parameter, Silakan sampaikan: ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "Kesalahan parameter, Harap sampaikan: _ws!", + "11cde3a2ca81c845978b98e4a6ec471e": "Pemantauan menghemat waktu harus menjadi bilangan bulat positif!", + "b314fb25bf654a2256bf53b0f6986c93": "Data pemantauan tidak dapat disimpan selama lebih dari 999 hari!", + "60e46aeaed758964902dd7ae99858f03": "Di sana", + "c28bc5c07ec6f2b56777ac7c852dd64b": "Siapkan Sukses!", + "422f78617d6852c41e370982d73235ed": "Pengaturan Gagal!Alasan Kegagalan: {}", + "dca5bd22c99a74f74074a3a53d78a58b": "{} kesuksesan", + "ec1ec17a5862a949e277432e1d09484d": "Pengaturan Gagal!Alasan Kegagalan: {}", + "f4dc83b81fe6993f99c2b54494eeeec1": "Mulailah memantau dengan sukses!", + "af79fd88d4b6f7e8a1ac05e199747fdb": "Gagal mulai memantau!", + "6f4d03d4d1ee0bd282ea744730b7ceda": "Pemantauan Docker berhenti dengan sukses!", + "4cc06d8560bb116a38a5aae1458cbe4a": "Jalur file komposisi Docker tidak bisa kosong!", + "8d885b86e8562c2128689c4a2601c054": "File Kompose Docker tidak ada!", + "a87b64b2d19f29438274f80ce36a3579": "Tugas instalasi telah ditambahkan ke antrian!", + "d388487780fba74e4ff3f3b9ffbce58b": "Bisa dihapus!", + "c4ba6d01fd53333a6e7e85707758c550": "Hapus instalasi sukses!", + "b7affa7cc663144bc99b9edb3f1a027f": "Tugas perbaikan telah ditambahkan ke antrian!", + "cb49a4daafc9d27bd460967891968225": "Diselamatkan dengan sukses!", + "58fcf0699f38a60c8025330585ac205a": "Simpan Gagal, Alasan: {}", + "6c3e5d603d8845422e861fb0b4eed350": "Item konfigurasi yang tidak", + "f324009782d2d9e73d1087884ebc2c4c": "Akar Docker tidak boleh kosong!", + "538960e1336f919e37a0d2c024c56830": "Direktori root Docker saat ini adalah direktori target dan tidak perlu diubah!", + "f2bd8f0373084151bbc07e8c1409e37c": "Pengaturan Gagal! {}", + "a848bbd79221dfdce1c9dca536dbfada": "Format JSON pada pengaturan proxy salah!", + "edf6eb680187066c4dea216b3b20d6d2": "Penyiapan proxy berhasil!", + "720d2290c3082615c0f79894bfdcabd7": "Harap masukkan alamat I PV 6 yang benar!", + "b01f9411136207ad7df28b9bf2387e2a": "Peningkatan gagal!Alasan kegagalan:{}", + "da896b628e3ded58445e4b015320f327": "Gagal melakukan kelebihan beban karena:{}", + "efb869976990f78b3d6fcbaf270e3323": "Muat ulang berhasil!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Gagal membebani profil global:{}", + "75bbb7a00c3b5b510913952fe089f52a": "Parameter salah, parameter jalur!", + "273609d18876f5f9e3f021032e5b57a3": "Penyiapan gagal!", + "5e022f79dcc774c79bc55ee28774e2e7": "Nama gambar tidak dapat berisi /", + "c00be60f9f3f7d747aadfdb124e855ef": "Berhasil disimpan untuk: {}", + "cb1f8d99b492340cf701101c87884a8c": "Tidak dapat mengekspor gambar!", + "afaa91d141ded3e37b8b9ebf8bc31c51": "Mengekspor gambar gagal dan koneksi ke Docker berjangka waktu.Silakan coba restart Docker dan coba lagi!", + "5b980f2e1c82c04c91376d55d4306a91": "Gagal mengekspor gambar!
{}", + "e5e8c7cac8b71e94280fa08301d21e78": "Harap masukkan jalur gambar!", + "5441400ea3bd16cffdf70c46c34f61d4": "Gagal mengimpor gambar.Ekstensi file harus.", + "0720c6c4f478b3a374b4a438f7cf80ad": "Gagal mengimpor gambar, waktu koneksi ke buruh pelabuhan habis, coba mulai ulang buruh pelabuhan dan coba lagi!", + "22cc0388137842df9649b3bbcff345e8": "Jika impor gambar gagal dan direktori kontainer sementara tidak dibuat, periksa apakah perangkat lunak perlindungan memiliki catatan intersepsi.", + "67b97e4746a2faf5d59206a80bb28649": "Impor gambar berhasil! {}", + "deceb44868a29ae5d579114348736cbb": "Impor gambar gagal dan direktori sementara dari wadah gagal dibuat.Silakan periksa apakah perangkat lunak perlindungan memiliki catatan intersepsi!", + "8eb05618b0f04e727b0685427fd49c8e": "Gagal mengimpor gambar!
{}", + "721aa02577670c1049ea9d12caa8938c": "Harap masukkan jalur DockerFile yang benar!", + "736df9a7c491f3299efdeb9f7d7e9e0f": "Bangun gambar dengan sukses!", + "6e85568dae869303ca7a4486f55458a3": "Build Gagal, Koneksi Waktu Keluar", + "5bb301b85cc1f42e56174d3d9a4c0286": "Bangun Gagal!{}", + "f51455b323ec2db8004c812001043330": "Build Gagal! Dockerfile yang ditentukan tidak ditemukan", + "8e1b9c9b75950d0feba6813d32766e61": "Build Gagal! {}", + "eba0ec758a6464a20c14c0f23ceee62e": "Mirror berhasil dihapus!", + "8dd326278d09a3ac4bc56cf725c8f262": "Hapus gagal dan gambar mungkin tidak ada!", + "11ead921bc0e3d94f1f9e0db4bf8ed8d": "ID gambar digunakan dalam lebih dari satu gambar, paksa gambar untuk dihapus!", + "43993616c7433350755d30a3b4d065dd": "Gambar sedang digunakan.Harap hapus wadah sebelum menghapus gambar!", + "d6992c3fcf2269c249cd5f18f1ac2c11": "Gagal menghapus gambar!
{}", + "0c6c071174fde5b47c9eef8088c17a89": "Gagal menghapus gambar, koneksi ke Docker Timeed Out, silakan restart dan coba lagi!", + "a3ba80a8e1e0d9af94c809e909431b3c": "Gagal, Masuk ke Repositori [{}] Gagal, coba masuk ke repositori ini lagi! \\ R \\ n", + "cc40077b6ee61fbfa35713a21e8eb866": "BT_FAILED, Masuk ke Repositori [{}] Gagal, coba masuk ke repositori ini lagi!{}", + "60b488c60b6747bf34a86a69740b636d": "Gambar yang didorong tidak dapat berisi [/], silakan gunakan format berikut: Gambar: V1 (Nama Gambar: Versi)", + "44dbec830b87eb037e8fcbb0e1b56160": "Tidak dapat mendorong ke repositori publik Docker!", + "b4c46001066c912344e3bdb0df86e848": "Repositori [{}] Login Gagal!", + "0ebfb094c6482acb049e0dd0d3107307": "Dorong gagal, kesalahan label gambar, silakan masukkan seperti: v1.0.1", + "d26bdd6e86002ed92089dc71347822ce": "Dorong gagal, tidak memiliki izin untuk mendorong ke repositori ini!", + "82058092ad7d2c7aa5e2f012b6544e59": "Dorong kegagalan! {}", + "2b228d4775d23d2725ec227ba648bd43": "Dorong berhasil, mirror: {}", + "9e396f640866ded9c3a47268f96a36e3": "Menarik gambar, harap tunggu ... \\ r \\ n", + "7e5f4d488d318dc7c235095c8456f5e4": "Tarik atau cari gambar ... \\ r \\ n", + "97a6dfe3a273202edffe31af7a43e220": "Gagal menggunakan stasiun cermin default untuk menarik gambar!Mencoba menggunakan stasiun cermin lain untuk menarik Anda, harap tunggu ... \\ r \\ n", + "484616540fc726ef4f52e97a1c2f0fef": "Gagal menarik gambar! \\ R \\ n", + "1cd77329b2bddfb200e656214b1fdf32": "Gagal menarik gambar!", + "63c709b9759af42fef890d539d822575": "Tarik gagal! {} \\ R \\ n", + "b4aba972332d1f3728171905a033fb99": "Gambar tarik [{}] berhasil \\ r \\ n", + "2fae21ffd185d9e9730b39bc7de23852": "Gambar berhasil ditarik!", + "8a635442294fd90195a43d9a1672fc3f": "Gagal menarik gambar!", + "711de72d616e7abb29dfa919244d382d": "Tarik gagal, gambar tidak ada, atau gambar mungkin gambar pribadi.Anda harus memasukkan kata sandi akun Dockerhub Anda! \\ R \\ n", + "e9511e26273da5b4537b4683668b548e": "Tarik gagal! {} \\ r \\ n", + "05d13bf5dcc37754db74b2356e6e117c": "Tarik gagal, tidak ada gambar seperti itu di repositori! \\ r \\ n", + "714841af7f3de6c8d99ba03f4cee0ee5": "Tarik gagal, format gambar salah, seperti: nginx: v 1! \\ r \\ n", + "2d941c4fa4da32ccafa8670a07f23c1d": "Gambar itu berhasil ditarik.", + "5282194697748d9fcd1ccd8a90428424": "Mungkin tidak ada gambar cermin ini.", + "d6facab17334983e7c6f8c561c239820": "Gagal menarik gambar, ini adalah gambar pribadi, silakan masukkan kata sandi akun!", + "b507deb7848d566982b339265c8f5482": "Tarik Kegagalan Gambar

Alasan: {}", + "e90811ef0a60b6d299b4e1064d7788d0": "Tidak ada gambar yang tidak berguna!", + "f343313c101aeaff0516990ebea3dcef": "Gagal Menghapus! {}", + "90ecd58b3feb0b2be11f0af685ad39fe": "Penghapusan gambar yang tidak berguna gagal dan koneksi ke Docker diatur waktunya.Silakan coba restart layanan Docker dan coba lagi!", + "0568e5e8aa7c811dd420c818189a0d46": "beberapa detik yang lalu", + "53c53a79f864561f8b6886b3dde7cd51": "beberapa menit yang lalu", + "f329a0dab82282e50e3aea9260e95d53": "beberapa jam yang lalu", + "7a1af30a5ce889031cbc2472766159e3": "beberapa hari yang lalu", + "558a41d55884223583b3542e802d2b64": "Nama cermin tidak boleh kosong!", + "4097585e32152eb74bbee5ab8c463718": "Layanan Docker berjalan secara tidak normal, silakan restart dan coba lagi!", + "26a0931677e111565f3ff7d059b94d8b": "Pengaturan gateway salah, silakan masukkan gateway yang cocok dengan subnet: {}", + "def2ba1ce0e4d77692c14e5b984636fa": "Kesalahan Format Alamat Subnet, Harap Masukkan misalnya: 172.16.0.0/16", + "716eeeb727fd667635ccf1d18891d46e": "Kesalahan format rentang ip, silakan masukkan rentang IP yang sesuai untuk subnet ini:", + "e310a873e7812c7f994d482604061fee": "Rentang IP [{}] sudah ada!", + "db88b911ea66744c24b22efcafef2101": "Versi kernel sistem terlalu rendah, harap perbarui kernel atau pilih mode jaringan lain", + "9cebb294a44695984eaaf2134df63a51": "Node saat ini bukan segerombolan dan perlu dikonfigurasi sebelum dapat digunakan", + "85ac438bd64f13e2ad61cf60e5ade3d3": "Gagal menambahkan jaringan!{}", + "640520ffb5d9c01336710bad3ea6d7ff": "Menambahkan jaringan berhasil!", + "87574a543563d2e037b87a6cf705e3ff": "Jaringan default sistem tidak dapat dihapus!", + "23b6d9d6c36088deb928efad7fb9b63b": "Jaringan tidak dapat dihapus saat sedang digunakan!", + "8f512551c7ddf61331c3d068e80c642c": "Tidak ada jaringan yang tidak berguna!", + "08efe6a4e12437b79225c8b59fd710eb": "ID jaringan tidak bisa kosong", + "a636381ee5e6d6d021fff745ca132905": "ID Kontainer tidak bisa kosong", + "31a75a8d220d37dc4a7ea28d0f24cc19": "Pemutusan jaringan berhasil!", + "a2b9895fca7698902da9319b52392366": "ID Kontainer: {}, tidak ada!", + "c81f03a558307d5aaf3b339af28e04ff": "ID jaringan: {}, tidak ada!", + "12a90fe85b8863e1dea43284988d7750": "Pemutusan jaringan gagal!{}", + "6226d2fef3bf047236f0f3a57dcd71fb": "Koneksi jaringan berhasil!", + "d882b8375782b1bc56ccaf84ed27d20b": "Gagal terhubung ke jaringan!{}", + "0e8623af4dd4d3b732904872d22fbf83": "Nama jaringan tidak boleh kosong!", + "5aa2044b58e63d58ddecc69421802404": "Gateway bisa", + "ceaa20eefd6749452a947c7f5dfa4eb0": "Rentang IP tidak boleh kosong!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "Gagal membuat jaringan!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Nama jaringan: [{}] sudah ada!", + "9cdc09516d85ae057d1d9bedc988849e": "Buat jaringan dengan sukses!", + "5395cc8155f62a666b8f0d0f9f207676": "Informasi repositori sudah ada!", + "9b10e472adfe6372c9175b9002f098fd": "[Repositori Docker Resmi] Tidak dapat diedit!", + "5858be44c285048a8f51c126b2fd23e9": "Pengeditan Gagal!Alasan: Dekripsi Kata Sandi Akun Gagal!Harap hapus repositori dan tambahkan lagi", + "7e51d0e26e1b467aff3c89d3e0751ec0": "Pengeditan Gagal!Alasan:{}", + "6478f13dd58e5a4329e19be9020243ff": "Repositori ini tidak dapat ditemukan", + "d5309f3186607eb36bee41e8a28cea3a": "Edit Sukses!", + "9e20bffc0d4093d18fcbc5c98fa0fd87": "[Repositori Docker Resmi] tidak dapat dihapus!", + "a62336a87697ab6911ba550015a798ef": "Hapus gagal, ID repositori mungkin tidak ada!", + "54197759827cfaf0cdb1e213fa49771e": "Tes login gagal!Alasan: Mungkin kesalahan kata sandi akun, silakan periksa!", + "657a0b7e82731fb4ae516d14081f17d0": "Tes login gagal!Alasan: {}", + "221d1ea3c23f430e03a4486dca865014": "Wadah tidak ada, silakan segarkan browser dan coba lagi!", + "7e88e25ea6c628c2d03c526c04af3eed": "Gagal mendapatkan status kontainer:", "cb337dbfbc18aafa482051b6fc349dea": "Gagal mendapatkan file konfigurasi", "84d3fc0c1c70fcd6fdd7ca7c3be11225": "Proyek sudah ada!", "a280b122a0b3249c26b1f94ad4573f50": "Tulis gagal!", @@ -2262,6 +2319,32 @@ "d6d90f977089e176ec7443db17c41279": "容器添加成功!", "04cd9210bf9290bda98bc76ca4bc59fd": "容器删除成功!", "d867a5e10a7a9485129c679b85453e3f": "项目删除成功!", + "459ed27083c25b82135efedccaa60ada": "Pemindaian {} perintah riwayat pengecualian", + "37c614d5d300e6c391808efd5363ec82": "Pemindaian {} informasi sensitif", + "5ddc98a53573410c7cb65727946c5d3f": "Pemindaian {} backdoor", + "6bb6be880d819a93af392183d16fccdf": "Pemindaian {} container lolos", + "cd7fb7cf576b22469514b5b30f365158": "{} Scan selesai", + "7d643f192968be3f8a54be28592e9176": "Gagal memindai gambar:{}", + "acc2731ee0f5b78d4e801d2daf814c32": "Komando Sejarah abnormal yang mencurigakan ditemukan", + "3069c277261d044bb309e4b09ae798fa": "Ditemukan bahwa gambar tersebut memiliki perintah historis yang abnormal [{}], yang dapat menanamkan malware atau kode ke dalam sistem host ketika wadah berjalan, menyebabkan risiko keamanan.", + "6d64734fff5534f48029ffba4aa3678d": "1. Dianjurkan untuk memeriksa apakah perintah tersebut diperlukan untuk bisnis normal
2. disarankan untuk memilih infrastruktur resmi dan andal untuk menghindari kerugian yang tidak perlu.", + "6684913201a60be0b5e89c4dfb210719": "Ditemukan Bashrc Backdoor {}", + "9a9f27d5f9f8c056fff7986c87a94c30": "Ditemukan bahwa gambar tersebut memiliki backdoor Bashrc: [{}], konten kode berbahaya:
{}", + "d8a828116070b9d92315ca309cca1991": "1. Masukkan wadah yang digunakan menggunakan gambar dan hapus kode berbahaya di bawah file
2.Periksa apakah wadah telah diserang, dan perbarui token akses atau kata sandi akun bisnis di wadah
3.Disarankan untuk mengganti gambar resmi atau wadah penyebaran gambar tepercaya lainnya", + "e1439f3f7d25d378078d513a82a3fa87": "File backdoor ditemukan {}", + "9ede9d4bd542eedf78e39b0acf0206e3": "Ditemukan bahwa file backdoor Bashrc [{}] ada di gambar, dan konten kode berbahaya adalah:
{}", + "686765b4612ecd8f774648db29a1541d": "Cron Backdoor Ditemukan {}", + "390bdc0b3c37a56ede9467b0c220a3b6": "Ditemukan bahwa cron backdoor [{}] ada di gambar, dan konten kode berbahaya adalah:
{}", + "caea084281a3cb2515e5618cd3856163": "Sistem backdoor yang ditemukan: {}", + "d04061273caa56d5a0c3d74f3e9fd482": "Ditemukan bahwa file backdoor systemd [{}] ada di gambar, dan konten kode berbahaya adalah:
{}", + "fc76e0fe415c49cc1c09bf76035fc4e9": "Ditemukan sshd backdoor {}", + "00b2409f52ef5bc56afe29ccbe5cfa2c": "Ditemukan SSHD Soft Link Backdoor: {}, file mengenai fitur berbahaya [exe = {}; link_file = {}]", + "e747da31a54cd71fb1a2860cae0f9f77": "Menemukan TCPWrapper Backdoor {}", + "a2b09164c8d23894736bcc6a646861e0": "Ditemukan bahwa file backdoor tcpwrapper [{}] ada di gambar, dan konten kode berbahaya adalah:
{}", + "a7fd9f6b190b8531039376fbbda5f482": "Pengguna ditemukan berisiko melarikan diri {}", + "5d46ed5f4af3f30cfcc8bd66942f93b4": "Nama pengguna {} dapat menyelesaikan pelarian wadah melalui perintah [{}], yang memungkinkan penyerang untuk mendapatkan hak akses ke host atau wadah lainnya.Konten berbahaya:
{}", + "4ca0a18aa36a60613104cacdae514dec": "1. Disarankan untuk menghapus gambar atau tidak lagi menggunakannya
2.Jika sudah ada bisnis yang menggunakan gambar, masukkan lingkungan kontainer dan hapus konten pengguna {} dalam file /etc /sudoers.", + "611afea08ae3b216a34dfde4c143f46c": "不支持的系统版本", "68ae8c43a52aac63c5c62e1974afdda6": "ID skrip tidak bisa kosong", "eee298ea1d9259c2f0e2061ecd89c21c": "Skrip yang ditentukan tidak ada", "b68a8dd0c887719b7cc3e10dc11843ce": "Skrip bawaan Aapanel tidak dapat dihapus", @@ -2300,6 +2383,147 @@ "101da618f72223d3eac9e66fe510b04f": "ID acara tugas tidak bisa kosong", "bee903cc3d03ab2c237eefb1d601fbcb": "Eksekusi skrip gagal dengan pesan kesalahan: \\ n {}", "1d78758685e5e2f4efeeb490f8521abd": "\\N", + "ca6977d373320a7fdb51047199d4cc59": "Adminer belum diinstal!", + "38641e6ce3a6369e108eb595672c8edc": "Uninstall Berhasil!", + "9cae26284a7ad2f46132c1e8e196d089": "Instal Berhasil!", + "a9a92e55770213c8aa1fb2871dc43563": "Setel port Adminer berhasil!", + "b611124a9bad44e328d7ce809912802d": "Setel berhasil!", + "2321763bf0b4cbf345b1e19dc9faec47": "Berhasil mengatur versi php Adminer!", + "40a1f70c155550ad2dafa5e556e10c3c": "Versi PHP tidak dapat diinstal!", + "e75e68c65607a7cfcc570d51345d7e33": "Monitor file", + "983e2622c48ae7231c5d29b135133b0e": "Tambahkan Direktori Monitor: {}", + "15c7df4ddd1d366c2cdfa2689c15369d": "Kompilasi Program Filter IP Gagal", + "423c2da1e20a5f2138cc810423475eef": "Alamat IP tidak bisa kosong!", + "1e116dc22492b28a7a38a6029416d0e1": "Alamat IP dalam format yang salah!", + "8c8f15a1c1cce8bbdc465e865c804b40": "Periode pemblokiran maksimum tidak dapat melebihi 24 hari!", + "fb86e24ffe47ba150610ba1efd96929a": "Pemblokiran sementara blok CIDR alamat IP tidak didukung", + "bdb199a03e52488d499ea6bb0cb0d1ed": "WAF diperlukan untuk memblokir segmen alamat IP", + "1ac8e9ffcea7cf6e9fa183c1b9038599": "Data IP tidak ada!", + "04d46623edcb5663566cf43f575de9b2": "Nama situs web tidak bisa kosong!", + "4dcde63f7fd4415f3b5eb6cb889d135c": "Penambahannya berhasil", + "d303480175994c6ad240cf24a4a99640": "Konfigurasi situs web tidak ada!", + "87d1f7257214d09ba39656b72c864bac": "Pengaturan akun berhasil!", + "aa5bb2d58da86c4b9160e94d0c4538f1": "Uri tidak bisa kosong!", + "ade0ab88aa0ee9c18f0979d5b62b517d": "URI sudah ada, tolong jangan menambahkannya lagi!", + "506d9cb0cb2468fd09048bcbe8b37497": "Uri tidak ada", + "cf180f27e678d4e297f690e581961417": "Format alamat mendengarkan salah!", + "1ed0fa9bb8768d56bf2d3232d7067023": "Rentang Port Mendengarkan yang Salah!, Persyaratan: 1024-65535", + "e6aa58b2f41bc53f6b84657d47eb35c1": "Jalur penyimpanan data tidak ada!", + "c87be59ecbed944c2b45fea87d62f473": "IP Statistik Mode Kesalahan, Persyaratan: 0 atau 1", + "fbc4861b0190c90a5388e44d2bbac678": "Versi saat ini tidak tersedia, tingkatkan panel dan coba lagi", + "8b1d5629a1346da21fcaeb9f8f0db6d2": "Kesalahan Format Waktu Mulai!", + "7a238977c4b13d23ac3e6b151a914cab": "Kesalahan Format Waktu Akhir!", + "a87a482f3bced3ce16bc9a351e8b5ce8": "Waktu mulai tidak bisa lebih besar dari waktu akhir!", + "a0ef69b1680461368a9130e770256ca6": "Kesalahan format tanggal!", + "2493958c6f4051bb8d254d77d77b622b": "Kesalahan granularitas waktu, dukungan: menit, jam, tanggal", + "4c4258ffd9a69c8e332346241a3cbdae": "Data kondisi negasi dalam format yang salah!", + "b47f4e8b7540cae56e085231c3c984c1": "ID akses tidak bisa kosong!", + "fea04488a926034079dc00c5a60a9135": "Format ID akses salah!", + "da206b8971dcba715ed8cdd1a82736e1": "ID akses tidak ada!", + "fd65e390dd8aa35ea3622658247776d0": "Format tanggal salah", + "9a4f1ea39f3a554d4e5431f86eb0450b": "Nama situs tidak bisa kosong!", + "b59417ef234946819788acfde92a00a7": "Pembersihan itu berhasil", + "aaa3736c0541d4a4d82193c2204ec317": "Waktu mulai dalam format yang salah!", + "e579606ed1219291caeb3bfad786dd3f": "Waktu akhir dalam format yang salah!", + "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "Format tanggal salah!", + "53c85b9d96ea14f3f8224a5d2e659894": "Parameter tidak bisa kosong!", + "9dc21ed8c6025cab9873847e6e1ca506": "Jenis kueri salah!", + "236c6e2f9a266b929b283eda30c2b3b6": "Tidak ada data yang relevan yang tersedia!", + "50fc65b5f19812ccf756b7ad7de7f4cb": "session_id tidak bisa kosong!", + "8f2adb53dcb8d2c660159b1f8e8012ed": "ID sesi salah!", + "7f4419a5b09e1a04936f6aba6939521a": "Pemeriksaan Konfigurasi Selesai!", + "f3df0751d9522bf2e68034bab4cd49a5": "Pembersihan konfigurasi selesai", + "191fae10bdd9d3eb6cb110b524fe40b7": "Pengajuan berhasil", + "f53208c04e48d7ee19222b6adf343810": "Nama pengguna tidak bisa kurang dari 3 karakter!", + "251e2cae1dbed2b37f7d16961a606970": "Pemilihan level izin salah!", + "a835325a5600b6571a24111e4d318e2c": "Pilih situs web!", + "a669655fa991afcfa0cfa3f62286d944": "Panjang kata sandi tidak bisa kurang dari 5 karakter!", + "4d8d30e66ad9aaccc738ad99d5083955": "Nama pengguna sudah ada!", + "12152390a5bf2ebce0f00b0fb5c650a2": "Penambahannya berhasil!", + "4d1b7f489e07d6ca02ca1910a3884c48": "Pengguna tidak ada!", + "3e83aa40dd320efb027151c02aab2871": "Panjang kata sandi tidak bisa kurang dari 8 karakter!", + "d3748b3102cc8ba898f0f0bec842ce9e": "Modifikasi berhasil!", + "ac75e534c7334e1fd02c68a3993f1568": "Penghapusannya berhasil!", + "ca281da1f13858d0b599d19e18a510bf": "Status web dipilih secara tidak benar!", + "c88239bc4a113ab0f02acb9bc31b3437": "Port web salah!", + "f06e6a5985a91ac55c651e0b573378f0": "Direktori Keamanan Web tidak bisa kosong!", + "41a871d7ec26993be1367226321e06fa": "Panjang alamat pintu masuk keamanan tidak bisa kurang dari 6 digit!", + "16f83d0969b9f7fe56ac3b55f9dedb26": "Pintu masuk ini sudah ditempati oleh panel, silakan gunakan pintu masuk yang berbeda!", + "066df5a1cf19314e0265a1eb396848ac": "Alamat masuknya diformat secara tidak benar, misalnya: /my_monitor", + "794ee58637251012717d7e565aafc2a1": "Pengaturannya berhasil!", + "2531ce72ea98e5aa8f4953eee783b540": "Tidak ada log kesalahan yang ditemukan!", + "0fc543dae93d3f76f5f7ff8048f5c398": "Tidak ada IP bertopeng yang ditemukan untuk ekspor!", + "5552ac99360952da2cf289f556ad19a6": "Tidak ada IP bertopeng yang ditemukan untuk disinkronkan!", + "3332452d6ecd015473b133de021a9e06": "Sinkronisasi berhasil!", + "e6afdb1b63ca733f5d1741c7eff7a64e": "Itu sedang diproses, jangan mengulanginya!", + "696212205a77e698860ff5195992642b": "Operasi perbaikan selesai", + "97cb85456b49af4258f4c8da38bb576a": "Tugas yang dijadwalkan berhasil ditambahkan!", + "2739213f569742c0782252f41279c060": "Gagal menambahkan tugas yang dijadwalkan", + "1cc4efde4fab0b4bbc2812a8b58f59b0": "Harap tentukan nama situs", + "3b5ef9e1ea5a8dbd9606075686dbf15f": "Harap tentukan rentang tanggal", + "f8412f656685f470a82b74de3d9f24d5": "Tugas ekspor sudah ada", + "96ed379ec1882dcf52f0ff65057efb92": "Harap tentukan bidang yang ingin Anda ekspor", + "4e698e0709485a0e93a706964b748c5b": "Jenis ekspor yang tidak diketahui", + "2a2dbc12afac446fe408eb78453bc6c2": "Tugas ekspor tidak ada", + "9ff8782f584db728284fadd719967806": "Ada kesalahan dengan tugas ekspor", + "b4421542e9cff8ce336075b668b8f87e": "Catatan ekspor tidak ada", + "41564d1cd7f8ecb23bcc590cb2217518": "Harap masukkan direktori data baru", + "699856a3cc697d8afcfd04dcd2f0729a": "Direktori yang ditentukan sama dengan direktori saat ini", + "103422cd692bcaf56a7367075caf2274": "Direktori yang ditentukan dipartisi pada disk yang sama dengan direktori saat ini, jadi tidak diperlukan migrasi data", + "bcbd9605d3b8753bb8afbc765b293e01": "Tugas Modifikasi dan Migrasi Data telah dimulai", + "967a57ad58881afe2c5da6cf0d7fce8c": "Harap masukkan alamat IP dan nama crawler", + "62b73e6c2a169296e73edf8a4d1e02f0": "Harap masukkan alamat IP yang benar", + "0e1a26f6137c04f0f80956210069e46d": "Harap masukkan nama crawler yang benar", + "fe8d50ca26f2e864d2bf4a932801bb85": "Kesalahan tak terduga, coba perbaiki plugin", + "21aa998a1dee8774bc88ce2a070bf4de": "Harap masukkan alamat IP", + "2e0c672edc06ef05e44de98ac1b7a47d": "Penghapusan berhasil", + "0f9d9b728fba6427b5ff4da49aee1738": "Laba -laba itu dipilih secara tidak benar!", + "e48c86e701ddba3ab084d5457aa58714": "IP tidak bisa kosong!", + "3bdb147b7a040582220aa7f1ce2af19b": "Format IP salah!", + "b60597b6a9525341fa5d4d441084658d": "Tidak ada catatan resolusi dari alamat IP yang ditanyai", + "86e9360dac1c5eece29f32c9aba8011d": "Simpan berhasil", + "e5320166e7623b6a39f9a7af7c20c787": "Menentukan kesalahan parameter situs web yang berbeda", + "c21fbb62edf94306d2e73365e6e7d637": "Parameter yang menentukan situs web lain tidak bisa kosong", + "c7fae0c9886cac3924fe5e459e171ab1": "Penghapusan gagal", + "9a84d2910d3d36b78d7060f1c77e27f6": "Nama situs tidak ditentukan", + "0987458a95b8bb7d6cdf9fa0630b6407": "Server saat ini bukan Nginx dan tidak mendukung koleksi khusus", + "b925dfe3295278bd81a85bded66da01d": "Kode status dalam format yang salah", + "2a8793bbb8bc38a7df9d8c796648526a": "Tidak ada nama situs yang dipilih", + "6878600890a41b84c145423618ea2431": "Tidak ada informasi situs web yang ditemukan", + "eff712873c55654bf48eaf421a184e73": "Tidak ada nama koleksi khusus yang dimasukkan", + "116208583eac10a8769774a6eaaff926": "Jenis akuisisi salah", + "fff3d7679cb121a30e68a104b58c934e": "Konten koleksi tidak dimasukkan", + "75db42595fc9aee34df76df808712f92": "Nama koleksi khusus tidak dapat berisi karakter khusus ({})", + "9667904e74175dfde9824cb8cd099ce7": "Konten header harus dimulai dengan $ http_", + "4c61d0ee460aa25eb6b5c413c46c9236": "Konten pengumpulan jenis tubuh harus berisi [$ + Nginx Log Variable]", + "c03680a7ae35b7ce5b62f67b854d3b06": "Konten koleksi harus berisi [$ + Nginx Log Variable]", + "d621342512cf7910a6dc4e7d736bcc63": "Konten koleksi tidak dapat berisi karakter khusus 【", + "b4704dc559a05c5721c095b97c4dbbc0": "Nama koleksi khusus digandakan", + "6594b670e8bd06e352f112c1bf194fc1": "Konten koleksi khusus digandakan", + "a531c58ef7fefbbbd79becda53ede191": "Nama koleksi khusus tidak ditentukan", + "88c0c3ae4ef97b6069a35672b2caa05c": "Konten pengumpulan jenis tubuh harus berisi [$ + Nginx Log Variable]", + "41353000c0d351db90c9eec095bae879": "Sudah ada koleksi duplikat, bernama : {}", + "ce78b7a225f05ece35ed7adc68b08a88": "Konfigurasi akuisisi untuk memodifikasi tidak ditemukan", + "521df7df29b44fcee614de96cecca61c": "Penghapusan berhasil", + "3b0ccb5c759b0941d50e331b22013560": "Ekstensi yang tidak didukung: {}", + "7ea48870539b84996d1b1691c22823a7": "Format data yang dimodifikasi salah", + "bc64045195c8ed198a69772b3a204ef2": "Data yang akan dimodifikasi tidak ditentukan", + "bb02871a5e118841b95b69c5bff55baf": "Daftar hitam dalam format yang salah", + "1aac00a8c681100fd27b287c0b0516f1": "Format konfigurasi build tidak memeluk", + "f6df35a69157ae1fca6415b043485334": "ID tugas tidak ditentukan", + "524a477cee9485a5a80a860e2bc5b5d5": "ID tugas salah", + "4b5d95ed20303e337aec42486a0fb3fd": "Situs web saat ini tidak ditanyai", + "19e777b7c8cdc1ce56ad2f4fe735b2b7": "Situs web saat ini tidak menanyakan direktori yang sedang berjalan", + "45484ac5ec748cf3362d425ed7142b75": "Aturannya tidak bisa kosong", + "b36196750a032a791ecc8035853dc648": "Nama aturan tidak bisa kosong", + "cfa7bc3b484b8068e78bc6f55a2aaeaf": "Tidak ada aturan yang ditentukan", + "835365605f9e08c44c0b7f65a422d059": "Parameter tanggal salah", + "4fa3e528186292138b224a0a1d46ec59": "Nama situs web salah", + "3769ee974734f97166d6bce6b96e9b4e": "Kesalahan data", + "daddfa03b4ea762e009a36ce970b2b59": "Tidak ada akun baidu yang diatur", + "0379d9c081b6fd9ec2fd86e8672a4e72": "Jika Anda gagal mendapatkan data, mungkin informasi login telah kedaluwarsa, dan Anda dapat mencoba masuk lagi", + "8057e57596c33acf04619825d625a483": "Pembaruan berhasil", + "3149165696693c4f6fef18928261a50f": "Tidak ada 360 akun yang diatur", "add390e6467c956fbb7f6da0f51d23d6": "Tugas Kirim telah dieksekusi", "e8edb193e1cb171a17efe2765d72af71": "File tidak ada", "63d325d5c4dfd07afdf888fdf727542e": "Impor Berhasil, Lewati {} Pengguna yang Tidak Berhasil, Alamat Email Duplikat: {}", @@ -2523,141 +2747,6 @@ "decc12f91f9703a201987fdeabe572a4": "Situs dengan nama yang sama [{}] sudah ada, harap modifikasi sebelum membuatnya", "de67e3b2c564a899fe3195606036a7f1": "Instalasi berhasil", "8d5496d961b4d4e08474b20c1450737a": "Gagal membuat situs", - "e75e68c65607a7cfcc570d51345d7e33": "Monitor file", - "983e2622c48ae7231c5d29b135133b0e": "Tambahkan Direktori Monitor: {}", - "15c7df4ddd1d366c2cdfa2689c15369d": "Kompilasi Program Filter IP Gagal", - "423c2da1e20a5f2138cc810423475eef": "Alamat IP tidak bisa kosong!", - "1e116dc22492b28a7a38a6029416d0e1": "Alamat IP dalam format yang salah!", - "8c8f15a1c1cce8bbdc465e865c804b40": "Periode pemblokiran maksimum tidak dapat melebihi 24 hari!", - "fb86e24ffe47ba150610ba1efd96929a": "Pemblokiran sementara blok CIDR alamat IP tidak didukung", - "bdb199a03e52488d499ea6bb0cb0d1ed": "WAF diperlukan untuk memblokir segmen alamat IP", - "1ac8e9ffcea7cf6e9fa183c1b9038599": "Data IP tidak ada!", - "04d46623edcb5663566cf43f575de9b2": "Nama situs web tidak bisa kosong!", - "b611124a9bad44e328d7ce809912802d": "Setel berhasil!", - "4dcde63f7fd4415f3b5eb6cb889d135c": "Penambahannya berhasil", - "d303480175994c6ad240cf24a4a99640": "Konfigurasi situs web tidak ada!", - "87d1f7257214d09ba39656b72c864bac": "Pengaturan akun berhasil!", - "aa5bb2d58da86c4b9160e94d0c4538f1": "Uri tidak bisa kosong!", - "ade0ab88aa0ee9c18f0979d5b62b517d": "URI sudah ada, tolong jangan menambahkannya lagi!", - "506d9cb0cb2468fd09048bcbe8b37497": "Uri tidak ada", - "cf180f27e678d4e297f690e581961417": "Format alamat mendengarkan salah!", - "1ed0fa9bb8768d56bf2d3232d7067023": "Rentang Port Mendengarkan yang Salah!, Persyaratan: 1024-65535", - "e6aa58b2f41bc53f6b84657d47eb35c1": "Jalur penyimpanan data tidak ada!", - "c87be59ecbed944c2b45fea87d62f473": "IP Statistik Mode Kesalahan, Persyaratan: 0 atau 1", - "fbc4861b0190c90a5388e44d2bbac678": "Versi saat ini tidak tersedia, tingkatkan panel dan coba lagi", - "8b1d5629a1346da21fcaeb9f8f0db6d2": "Kesalahan Format Waktu Mulai!", - "7a238977c4b13d23ac3e6b151a914cab": "Kesalahan Format Waktu Akhir!", - "a87a482f3bced3ce16bc9a351e8b5ce8": "Waktu mulai tidak bisa lebih besar dari waktu akhir!", - "a0ef69b1680461368a9130e770256ca6": "Kesalahan format tanggal!", - "2493958c6f4051bb8d254d77d77b622b": "Kesalahan granularitas waktu, dukungan: menit, jam, tanggal", - "4c4258ffd9a69c8e332346241a3cbdae": "Data kondisi negasi dalam format yang salah!", - "b47f4e8b7540cae56e085231c3c984c1": "ID akses tidak bisa kosong!", - "fea04488a926034079dc00c5a60a9135": "Format ID akses salah!", - "da206b8971dcba715ed8cdd1a82736e1": "ID akses tidak ada!", - "fd65e390dd8aa35ea3622658247776d0": "Format tanggal salah", - "9a4f1ea39f3a554d4e5431f86eb0450b": "Nama situs tidak bisa kosong!", - "b59417ef234946819788acfde92a00a7": "Pembersihan itu berhasil", - "aaa3736c0541d4a4d82193c2204ec317": "Waktu mulai dalam format yang salah!", - "e579606ed1219291caeb3bfad786dd3f": "Waktu akhir dalam format yang salah!", - "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "Format tanggal salah!", - "53c85b9d96ea14f3f8224a5d2e659894": "Parameter tidak bisa kosong!", - "9dc21ed8c6025cab9873847e6e1ca506": "Jenis kueri salah!", - "236c6e2f9a266b929b283eda30c2b3b6": "Tidak ada data yang relevan yang tersedia!", - "50fc65b5f19812ccf756b7ad7de7f4cb": "session_id tidak bisa kosong!", - "8f2adb53dcb8d2c660159b1f8e8012ed": "ID sesi salah!", - "7f4419a5b09e1a04936f6aba6939521a": "Pemeriksaan Konfigurasi Selesai!", - "f3df0751d9522bf2e68034bab4cd49a5": "Pembersihan konfigurasi selesai", - "191fae10bdd9d3eb6cb110b524fe40b7": "Pengajuan berhasil", - "f53208c04e48d7ee19222b6adf343810": "Nama pengguna tidak bisa kurang dari 3 karakter!", - "251e2cae1dbed2b37f7d16961a606970": "Pemilihan level izin salah!", - "a835325a5600b6571a24111e4d318e2c": "Pilih situs web!", - "a669655fa991afcfa0cfa3f62286d944": "Panjang kata sandi tidak bisa kurang dari 5 karakter!", - "4d8d30e66ad9aaccc738ad99d5083955": "Nama pengguna sudah ada!", - "12152390a5bf2ebce0f00b0fb5c650a2": "Penambahannya berhasil!", - "4d1b7f489e07d6ca02ca1910a3884c48": "Pengguna tidak ada!", - "3e83aa40dd320efb027151c02aab2871": "Panjang kata sandi tidak bisa kurang dari 8 karakter!", - "d3748b3102cc8ba898f0f0bec842ce9e": "Modifikasi berhasil!", - "ac75e534c7334e1fd02c68a3993f1568": "Penghapusannya berhasil!", - "ca281da1f13858d0b599d19e18a510bf": "Status web dipilih secara tidak benar!", - "c88239bc4a113ab0f02acb9bc31b3437": "Port web salah!", - "f06e6a5985a91ac55c651e0b573378f0": "Direktori Keamanan Web tidak bisa kosong!", - "41a871d7ec26993be1367226321e06fa": "Panjang alamat pintu masuk keamanan tidak bisa kurang dari 6 digit!", - "16f83d0969b9f7fe56ac3b55f9dedb26": "Pintu masuk ini sudah ditempati oleh panel, silakan gunakan pintu masuk yang berbeda!", - "066df5a1cf19314e0265a1eb396848ac": "Alamat masuknya diformat secara tidak benar, misalnya: /my_monitor", - "794ee58637251012717d7e565aafc2a1": "Pengaturannya berhasil!", - "2531ce72ea98e5aa8f4953eee783b540": "Tidak ada log kesalahan yang ditemukan!", - "0fc543dae93d3f76f5f7ff8048f5c398": "Tidak ada IP bertopeng yang ditemukan untuk ekspor!", - "5552ac99360952da2cf289f556ad19a6": "Tidak ada IP bertopeng yang ditemukan untuk disinkronkan!", - "3332452d6ecd015473b133de021a9e06": "Sinkronisasi berhasil!", - "e6afdb1b63ca733f5d1741c7eff7a64e": "Itu sedang diproses, jangan mengulanginya!", - "696212205a77e698860ff5195992642b": "Operasi perbaikan selesai", - "97cb85456b49af4258f4c8da38bb576a": "Tugas yang dijadwalkan berhasil ditambahkan!", - "2739213f569742c0782252f41279c060": "Gagal menambahkan tugas yang dijadwalkan", - "1cc4efde4fab0b4bbc2812a8b58f59b0": "Harap tentukan nama situs", - "3b5ef9e1ea5a8dbd9606075686dbf15f": "Harap tentukan rentang tanggal", - "f8412f656685f470a82b74de3d9f24d5": "Tugas ekspor sudah ada", - "96ed379ec1882dcf52f0ff65057efb92": "Harap tentukan bidang yang ingin Anda ekspor", - "4e698e0709485a0e93a706964b748c5b": "Jenis ekspor yang tidak diketahui", - "2a2dbc12afac446fe408eb78453bc6c2": "Tugas ekspor tidak ada", - "9ff8782f584db728284fadd719967806": "Ada kesalahan dengan tugas ekspor", - "b4421542e9cff8ce336075b668b8f87e": "Catatan ekspor tidak ada", - "41564d1cd7f8ecb23bcc590cb2217518": "Harap masukkan direktori data baru", - "699856a3cc697d8afcfd04dcd2f0729a": "Direktori yang ditentukan sama dengan direktori saat ini", - "103422cd692bcaf56a7367075caf2274": "Direktori yang ditentukan dipartisi pada disk yang sama dengan direktori saat ini, jadi tidak diperlukan migrasi data", - "bcbd9605d3b8753bb8afbc765b293e01": "Tugas Modifikasi dan Migrasi Data telah dimulai", - "967a57ad58881afe2c5da6cf0d7fce8c": "Harap masukkan alamat IP dan nama crawler", - "62b73e6c2a169296e73edf8a4d1e02f0": "Harap masukkan alamat IP yang benar", - "0e1a26f6137c04f0f80956210069e46d": "Harap masukkan nama crawler yang benar", - "fe8d50ca26f2e864d2bf4a932801bb85": "Kesalahan tak terduga, coba perbaiki plugin", - "21aa998a1dee8774bc88ce2a070bf4de": "Harap masukkan alamat IP", - "2e0c672edc06ef05e44de98ac1b7a47d": "Penghapusan berhasil", - "0f9d9b728fba6427b5ff4da49aee1738": "Laba -laba itu dipilih secara tidak benar!", - "e48c86e701ddba3ab084d5457aa58714": "IP tidak bisa kosong!", - "3bdb147b7a040582220aa7f1ce2af19b": "Format IP salah!", - "b60597b6a9525341fa5d4d441084658d": "Tidak ada catatan resolusi dari alamat IP yang ditanyai", - "86e9360dac1c5eece29f32c9aba8011d": "Simpan berhasil", - "e5320166e7623b6a39f9a7af7c20c787": "Menentukan kesalahan parameter situs web yang berbeda", - "c21fbb62edf94306d2e73365e6e7d637": "Parameter yang menentukan situs web lain tidak bisa kosong", - "c7fae0c9886cac3924fe5e459e171ab1": "Penghapusan gagal", - "9a84d2910d3d36b78d7060f1c77e27f6": "Nama situs tidak ditentukan", - "0987458a95b8bb7d6cdf9fa0630b6407": "Server saat ini bukan Nginx dan tidak mendukung koleksi khusus", - "b925dfe3295278bd81a85bded66da01d": "Kode status dalam format yang salah", - "2a8793bbb8bc38a7df9d8c796648526a": "Tidak ada nama situs yang dipilih", - "6878600890a41b84c145423618ea2431": "Tidak ada informasi situs web yang ditemukan", - "eff712873c55654bf48eaf421a184e73": "Tidak ada nama koleksi khusus yang dimasukkan", - "116208583eac10a8769774a6eaaff926": "Jenis akuisisi salah", - "fff3d7679cb121a30e68a104b58c934e": "Konten koleksi tidak dimasukkan", - "75db42595fc9aee34df76df808712f92": "Nama koleksi khusus tidak dapat berisi karakter khusus ({})", - "9667904e74175dfde9824cb8cd099ce7": "Konten header harus dimulai dengan $ http_", - "4c61d0ee460aa25eb6b5c413c46c9236": "Konten pengumpulan jenis tubuh harus berisi [$ + Nginx Log Variable]", - "c03680a7ae35b7ce5b62f67b854d3b06": "Konten koleksi harus berisi [$ + Nginx Log Variable]", - "d621342512cf7910a6dc4e7d736bcc63": "Konten koleksi tidak dapat berisi karakter khusus 【", - "b4704dc559a05c5721c095b97c4dbbc0": "Nama koleksi khusus digandakan", - "6594b670e8bd06e352f112c1bf194fc1": "Konten koleksi khusus digandakan", - "a531c58ef7fefbbbd79becda53ede191": "Nama koleksi khusus tidak ditentukan", - "88c0c3ae4ef97b6069a35672b2caa05c": "Konten pengumpulan jenis tubuh harus berisi [$ + Nginx Log Variable]", - "41353000c0d351db90c9eec095bae879": "Sudah ada koleksi duplikat, bernama : {}", - "ce78b7a225f05ece35ed7adc68b08a88": "Konfigurasi akuisisi untuk memodifikasi tidak ditemukan", - "521df7df29b44fcee614de96cecca61c": "Penghapusan berhasil", - "3b0ccb5c759b0941d50e331b22013560": "Ekstensi yang tidak didukung: {}", - "7ea48870539b84996d1b1691c22823a7": "Format data yang dimodifikasi salah", - "bc64045195c8ed198a69772b3a204ef2": "Data yang akan dimodifikasi tidak ditentukan", - "bb02871a5e118841b95b69c5bff55baf": "Daftar hitam dalam format yang salah", - "1aac00a8c681100fd27b287c0b0516f1": "Format konfigurasi build tidak memeluk", - "f6df35a69157ae1fca6415b043485334": "ID tugas tidak ditentukan", - "524a477cee9485a5a80a860e2bc5b5d5": "ID tugas salah", - "4b5d95ed20303e337aec42486a0fb3fd": "Situs web saat ini tidak ditanyai", - "19e777b7c8cdc1ce56ad2f4fe735b2b7": "Situs web saat ini tidak menanyakan direktori yang sedang berjalan", - "45484ac5ec748cf3362d425ed7142b75": "Aturannya tidak bisa kosong", - "b36196750a032a791ecc8035853dc648": "Nama aturan tidak bisa kosong", - "cfa7bc3b484b8068e78bc6f55a2aaeaf": "Tidak ada aturan yang ditentukan", - "835365605f9e08c44c0b7f65a422d059": "Parameter tanggal salah", - "4fa3e528186292138b224a0a1d46ec59": "Nama situs web salah", - "3769ee974734f97166d6bce6b96e9b4e": "Kesalahan data", - "daddfa03b4ea762e009a36ce970b2b59": "Tidak ada akun baidu yang diatur", - "0379d9c081b6fd9ec2fd86e8672a4e72": "Jika Anda gagal mendapatkan data, mungkin informasi login telah kedaluwarsa, dan Anda dapat mencoba masuk lagi", - "8057e57596c33acf04619825d625a483": "Pembaruan berhasil", - "3149165696693c4f6fef18928261a50f": "Tidak ada 360 akun yang diatur", "74a7684631b29d814a52e3401576411a": "Format waktu salah", "f146f571f352f376dda16114593afd32": "Bukan file php di folder ini", "a5ef7f95136c8e93b70c99cdc25d3b1b": "Aturannya kosong atau file aturan salah", @@ -2832,7 +2921,6 @@ "e200e571a58c37376c8498c2dc506c95": "Jenis [param] salah, perlu format JSON", "96ed9027cae5703401727a3d07764133": "URI saat ini tidak ada", "466767592170f74d16bcac3034109b33": "Argumen jalan harus dilewati", - "d81f83ae44da0682974272b976e8e550": "Pemulihan yang berhasil", "c2d2481eafb29f7e1525c6c63441359e": "Harap berikan nama situs web", "4950f82b4231ebbfa780bcf4eec4c545": "Harap masukkan alamat IP yang benar!", "abd5af540ed5a858d02b03846d94c1f4": "inexistence!", @@ -2925,7 +3013,6 @@ "215a4c6687559aa75d554670e06f3694": "Pengguna tidak bisa lebih besar dari 10.000", "902ee0e2b591f9872a41c319c402e0b9": "Panjang teks tidak bisa lebih besar dari 200", "2307dba1bc155ca6f1a5bbf21dc4a258": "Pseudo-Static berisi arahan [! -E $ request_filename], yang perlu dihapus sebelum fungsi ini dapat digunakan!", - "fa5e4af74d3d68ba371e6dcf84595c3d": "Situs web tidak ada", "db8b3ac7a5408e3bc0d103bb9b071c7b": "Parameternya salah, parameter data tidak ada", "a0318cc60ff3297d4bef0399dc89fa8d": "Parameternya salah, parameter data tidak dalam format JSON", "8b682d8c8139c2ea686c7a87a03ba292": "Parameternya salah, parameter nama hilang", @@ -2961,31 +3048,37 @@ "c9bbcef0c80ca1a2859dd61d0210a117": "Parameter [send_type] salah", "a79ff4350874c27408a1858a88058344": "Jika saluran pesan instantiasi gagal, periksa apakah saluran pesan diatur dengan benar", "50f223163c6f8e9f6b46d66165252cab": "Sukses shutdown!", - "eee590fc0d0f3382fe436b60b02e37f0": "Informasi kotak surat tidak dikonfigurasi dengan benar", - "e4e7eb56340203583dd940475fc6e924": "Kotak surat penerima tidak dikonfigurasi", - "c6beb4efa41b5adbf89191be9d139c70": "Gagal mengirim pesan, penerima gagal mengirim: {}", - "e401ec76f9a9d1dfe7d484e6c4b49656": "Gagal mengirim surat ke beberapa penerima, termasuk: {}", + "02eef33534a6f8b3c95fc65e4f98bea9": "Informasi yang tidak lengkap", + "2f45c6e0ccf998c7d31b3764e7da3751": "Catatan nama tidak lebih dari 15 karakter", + "6e3ce0906145a9641111ebbf7735f145": "Telegram gagal mengirim {}", + "27285cc132e6c145a142ae2dff054ace": "CATATAN Nama tidak bisa melebihi 15 karakter", "b136ab8957d5ede7e3747fcc927a49aa": "Kesalahan format parameter", "4ccc991965b1b5bbe3efd6b65a1cd6fb": "Jenis tubuh harus JSON, Data bentuk, atau nol", "b0b017688b107601f2b3439381c4c61b": "Metode Pengiriman salah", "4f4979589df1b84ac44fc64a92e2b3f3": "Verifikasi jika opsi SSL salah", - "02eef33534a6f8b3c95fc65e4f98bea9": "Informasi yang tidak lengkap", - "2f45c6e0ccf998c7d31b3764e7da3751": "Catatan nama tidak lebih dari 15 karakter", "85284ecbde15ff997e89e6e8f07e399b": "Informasi WeChat tidak dikonfigurasi dengan benar", - "886051a73fe04f873d814dc9823b4064": "Informasi DingTalk tidak dikonfigurasi dengan benar", - "2d1b0e55888d196484a0bfd0f85ff71c": "Konfigurasi DingTalk salah, harap konkonfigurasikan ulang robot DingTalk", "3fb32283f52bea8068006817c5b9b95b": "The Unbinding berhasil", "8acd58125d3f7cc181a71926ef5c8a4b": "Gagal menautkan ke cloud", + "886051a73fe04f873d814dc9823b4064": "Informasi DingTalk tidak dikonfigurasi dengan benar", + "2d1b0e55888d196484a0bfd0f85ff71c": "Konfigurasi DingTalk salah, harap konkonfigurasikan ulang robot DingTalk", + "eee590fc0d0f3382fe436b60b02e37f0": "Informasi kotak surat tidak dikonfigurasi dengan benar", + "e4e7eb56340203583dd940475fc6e924": "Kotak surat penerima tidak dikonfigurasi", + "c6beb4efa41b5adbf89191be9d139c70": "Gagal mengirim pesan, penerima gagal mengirim: {}", + "e401ec76f9a9d1dfe7d484e6c4b49656": "Gagal mengirim surat ke beberapa penerima, termasuk: {}", "703480d2938f7c89b563e1d731e94118": "Tes kirim gagal", "fdc137942b6f2d81fa922d7ace16a94c": "Jenis yang tidak didukung oleh antarmuka saat ini", "37f17a256a93646ef0ac721096ec0ce8": "Konfigurasi kirim yang sama sudah ada dan tidak dapat ditambahkan berulang kali", "2783bb2e5b99dce08138bf58d0880603": "Pengirim yang sesuai tidak ditemukan", "b5a30e6f46753c06ada44d6bbd757599": "Berhasil menghapus", "81550843cd0a2d7e046cb23a868f8e8e": "Pengiriman berhasil", - "6e3ce0906145a9641111ebbf7735f145": "Telegram gagal mengirim {}", - "27285cc132e6c145a142ae2dff054ace": "CATATAN Nama tidak bisa melebihi 15 karakter", "bb8f2701fa6b013fe8aa74659ceda547": "Tidak dapat membaca data tugas.", "b12cc83d0b14fe739a930fd84d10ae8d": "Tugas belum ditemukan.", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Hanya jenis kontainer dan aplikasi yang didukung", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "Versi {} untuk menerapkan {} tidak ada", + "a5c1e82e4d1142b8c7e0bc1499446181": "ALAMAT GIT TIDAK DIATUR", + "4e24bbe093c9dfb90092a0f4e71733dc": "Nama cabang belum ditetapkan", + "b3c02fc58b92f549f529992c8a696a66": "Jalur file zip tidak disetel", + "eecf07d92b354565df633b06401206a1": "Silakan pilih jalur file", "eb9eb53b7ac221c64f6f32c547317d22": "Parameter jalur tidak bisa kosong", "0444d0f0434a4d910eb7a06039e39066": "[{}] file tidak ada", "f4c3904df3aa98458b5f99bd5519e409": "{} selesai, jika log tidak terkecuali untuk menutup jendela ini! \\ r \\ n", @@ -3029,6 +3122,9 @@ "1b6d9f6dc5480584f937681a5d9f0a80": "Informasi cache tidak ditemukan", "f013f8c1d30136733e3d476dbe3a238e": "Konfigurasi yang diperbarui berhasil", "3d928c01114361a57fb24c42d9a1ee2d": "Gagal memperbarui konfigurasi: {}", + "795d1693702d930f7fc18edfb0f1c0d3": "Kesalahan konfigurasi server MCP", + "a16d1dbe265c57e0417ae396c3c30043": "Tidak ada layanan yang ditemukan [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] Tidak ada gambar yang ditemukan", "092ca03f32caffd34d3f0532836283b7": "File skrip untuk deepseek_r1 tidak ditemukan", "17ee8c2efafe32a5d204e039e971aee4": "Kurang dari 1550 MB memori mencegah Deepseek R 1", "d3eb7a147ac81b2f691a6e7ad42cc83c": "Tidak diperlukan pemrosesan", @@ -3080,6 +3176,13 @@ "7b016fb85c09d39e89eb1875e590a6ac": "Gagal mendapatkan kategori aplikasi, silakan klik [Perbarui Daftar Aplikasi] di sudut kanan atas", "20552a0ed8eef740c631cc049fd940b9": "Kesalahan Jenis Aplikasi, Harap Lewati: {}!", "c0963001ffeaec423d1be82d464d6a1a": "Harap lulus ID/service_name Parameter!", + "4de8e45b499205551f4a09fd074e5246": "Parameter tidak ada!pengenal", + "02e85c0a0fa01fabdb5426af13e87853": "Parameter tidak ada!nama aplikasi", + "d910ee67a0875a17b6e663f9e19369a4": "Tautan aplikasi ini tidak didukung!", + "32d030406e8d755a59468a50bd385b22": "Gagal mendapatkan kontainer", + "c8e0f1ed3c37b015ee446297591d172f": "Parameter tidak ada!nama_aplikasi", + "dad9445733497150b5f2cd29a5aed506": "Nama aplikasi tidak sah, mohon jangan menyertakan karakter ilegal!", + "a04daa98db618d6c2a19aeed5af39448": "Tidak ditemukan file docker-compose.yml untuk aplikasi yang ditentukan!", "75d0c803cc4694e08d99d958ef762fcc": "Nama domain tidak bisa kosong!", "676c8a7788ad0ddcb68d53fc7d960679": "Gagal membuat jaringan Baota Net.err: {}", "23d07f1e537a8809b268a60a6881f44c": "Kesalahan rentang port, silakan masukkan port antara 0-65535!", @@ -3107,11 +3210,30 @@ "2025d918448073508d336b72a7a28093": "Database sudah ada!", "4a8f0a2ac362e62ba4e76f52b5791f0e": "Ciptaannya berhasil!", "76f3f12040afb77724966e2af67ab403": "Harap berikan parameter database!", + "74fd3ba5b92aa59e471161d2a585a93c": "Parameter model_name tidak boleh nol", + "760a1226f2ba701b04963681ab97d575": "Parameter model_version tidak boleh nol", + "2a88d88050ddcc0e28f0da4576be2232": "Parameter nama_layanan tidak boleh nol", + "fd0f83d70400b1dd9f6ae9c093638411": "Gagal mendapatkan informasi container, eksekusi penulisan buruh pelabuhan luar biasa!", + "2aec223006d3894d3c1a48bca642c141": "Model sedang diunduh, silakan periksa lognya nanti", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Gagal menghapus model, pengecualian eksekusi penulisan buruh pelabuhan!", + "d75a01e0d2c0cb8dad89216653024903": "Penghapusan model berhasil!", "bf483666a33d372f729985363d512d74": "Nama domain utama tidak bisa menjadi DNS generik", "3c4b1f6d2d9ef27ace95adceea599588": "Penambahan gagal dan data tidak dapat dimasukkan ke dalam database situs", "20825a634340a0b49b1a5e7f2fe47ea3": "Tambah gagal dan data tidak dapat dimasukkan ke dalam database situs web Docker", "653f81d3e5516550e6d5e35abcdbe97c": "[{}] adalah generasi terbalik dari panel, dan otentikasi HTTP [/] tidak dapat dihapus!", "d4b66e7369e5077a3c31ad79629f0ab9": "Harap lulus dalam daftar situs web yang perlu dihapus!", + "f0501638237d7e8f934ec55ac3ffb20f": "Jika penginstalan gagal, periksa jaringan atau instal git secara manual", + "608113c9694987fa65b22ecb164aee59": "Lingkungan berhasil diinstal", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "Direktori apphub tidak ada", + "7ec67f9826a24ca4a930a6e168ee9611": "Resolusi tersebut berhasil", + "af2c4fa868813e47b80859a0b36e00f4": "INFORMASI GIT BERHASIL DIKONFIGURASI", + "2b038e106d4ca5c11b787e16c73253ef": "Jika kamu tidak", + "12d1b3062be6f8bb374511323c349ed7": "Silakan atur informasi git terlebih dahulu", + "798cd5a257af539ecfe6bb44f45ee788": "Impor dari git gagal", + "8170f5d37a617dcbf16fe8dd414073dc": "Impor dari git berhasil", + "6e40e5a8ad741ca4bd714fa52ef32333": "Format file salah, silakan pilih file zip atau gz", + "c4996991c50032c9b296c11da356acb2": "Kegagalan impor:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Impor berhasil", "e48121dc556643fd31b26c190eedbad3": "Hanya nginx yang didukung, silakan instal Nginx sebelum digunakan!", "135f7ef9aeb50bf7b988416b0a679dff": "Nama domain tidak bisa kosong, silakan masukkan setidaknya satu nama domain!", "c82b42d921224a0699f854c28c2450d2": "Target proxy tidak bisa kosong!", @@ -3119,6 +3241,7 @@ "f68c204aa9e12e0513aa7a4569449cfe": "File UNIX harus diakhiri dengan.kunci, seperti/tmp/flash.app.kunci!", "5c23a6c025d7071599c70575dc858f26": "Target proxy tidak ada!", "2fba0b6c1602ec254b1bc06bacba575d": "Target proxy harus dimulai dengan http: // atau https: //!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path adalah direktori root, tidak dapat menutup Tampilkan Jalur Proxy!", "772c6f93b20b52d5c998f4b58dbcf8f7": "Port [{}] ilegal!", "f76df64b8f66e4f6050adf633c91c7fb": "Situs web [{}] sudah ada, tolong jangan menambahkannya lagi!", "6599f1c3d3d3760768d9023827e8edf0": "Reverse Proxy Project ditambahkan dengan sukses!", @@ -3150,7 +3273,6 @@ "d591e0043cbf6d14950a46178a537626": "Target proxy harus dimulai dengan http: // atau https: //", "247d1a7dc144bd12d4c9f8797387babe": "【{}】 Sudah ada di proxy terbalik dan tidak dapat ditambahkan lagi!", "36a7891857288c55bc5d87c470212812": "ID tidak bisa kosong!", - "62dc2bbb0528fe87522c74b113883a48": "Situs yang ditentukan tidak ada!", "c8a68e4ff275e827bbbe348eddecbf2b": "Reverse Proxy Project berhasil dihapus!", "88f9a8852b822982a9a3e839813d91bb": "Domain tidak bisa kosong!", "85fb0c03511da1e4d308fd135dec4486": "Nama domain tidak dapat berisi koma!", @@ -3200,12 +3322,6 @@ "61e795d02f4452904f2574d936c571e6": "Pembersihan gagal, direktori cache tidak ada!", "3c99c479e3c65eac24272afc13cec604": "port https [{}] ilegal!", "b9629c2dea839825c2f1916b44a154a1": "Kesalahan file konfigurasi nginx, inventaris !: {}", - "b02ab16f5a7d45a871789d3944a41c69": "Cadangan selesai tetapi tidak dapat mengambil cap waktu", - "ffad0690fefe9ebaaf4d847a42b19f90": "File konfigurasi cadangan tidak ada", - "46f183fbf6bd1e64702d6930667cf117": "Kesalahan Mengambil Informasi Penyelesaian Cadangan: {}", - "b16acd08872bef5685bddff85a29f625": "Kemasan Data", - "df4bb29cbb7fe7e3dbc82e961d5b5b53": "Menyiapkan data", - "2b2a2a0b0596507029dd0feb9485a216": "Tidak ada tugas yang sedang berlangsung yang ditemukan.Silakan periksa", "32b169f72b293ef80d35435e9894f8e2": "Inisialisasi", "58ba018dcbe1c47ea0a293fdcee21e63": "Instalasi Panel", "67355337eaf300b91de09a8083c93ebf": "Cadangan lokal", @@ -3241,6 +3357,7 @@ "fa4e18c6d3b0c0fa6a5ac1303dda02a7": "Tidak dapat mengenali atau memuat kunci, silakan periksa apakah format file kunci sudah benar", "369709628dacb54949b2c711acd93968": "[*] Mencoba untuk terhubung kembali ke server (coba {}/{}) ...", "88aefbc5392deac3ab63223d6d82b66b": "[!] Gagal terhubung kembali ke server, jumlah maksimum retries tercapai ({})", + "908300abff5dfdf254726c2193f3e550": "Gagal menyambung kembali ke server, jumlah percobaan ulang maksimum telah tercapai ({})", "5842d2e8785c14b1e357c4ee1dd1a0c6": "[+] Terputus dari server {}", "7463b0247d5614df91270544c6b944bb": "[!] Koneksi SSH tidak dibuat", "43234c4b446ff41810dcf807d317cba7": "[*] Mengeksekusi perintah: {}", @@ -3356,6 +3473,7 @@ "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] Tugas cadangan selesai (file terdeteksi setelah timeout): {}", "637452f337bdc2991f23593124d62440": "[!] Tugas cadangan diatur waktunya dan tidak selesai dalam waktu yang ditentukan", "ec3a935e2442ef55924ad758e17b92cb": "Kemasan selesai", + "ffad0690fefe9ebaaf4d847a42b19f90": "File konfigurasi cadangan tidak ada", "40379fed8ad84c0869a1b3e94f8a56fb": "Proses cadangan sudah berjalan!", "20bf8648c4a3ea91ad3057f9aeca5f88": "Mulailah mengompresi dan mengemas semua data", "dc72aa669e82dd5ec7cff2ed35f2762d": "Kompresi dan pengemasan semua data selesai.Ukuran Data: {}", @@ -3365,11 +3483,14 @@ "c722636ded0be8237386a427242ff3b2": "{} Mengunggah ...", "bb914d2441ee988dcd4d616350272f10": "Kesalahan terjadi saat mengunggah ke {}: {}", "8085ded0444fcde19b9ea4d365502f67": "Info cadangan tidak ditemukan", + "b02ab16f5a7d45a871789d3944a41c69": "Cadangan selesai tetapi tidak dapat mengambil cap waktu", + "46f183fbf6bd1e64702d6930667cf117": "Kesalahan Mengambil Informasi Penyelesaian Cadangan: {}", "2cb88461938b0c418391af13f65a727d": "Proses cadangan sedang berjalan, tetapi tidak dapat mengambil cap waktu", "269159feb2faab7515c90b9f5de791a5": "File konfigurasi cadangan tidak ada: {}", "daa55a73708f906c8cee0bb87284740c": "Kesalahan Mengambil Informasi Kemajuan Cadangan: {}", "01ecbbb2b353cf4d915bbe1c1cd5505c": "Konfigurasi Server", "ca3c22c9c94069053b85db0f50373639": "Mencadangkan konfigurasi server", + "b16acd08872bef5685bddff85a29f625": "Kemasan Data", "d41c74fcc2dd04880a0285c147188bf7": "Mempersiapkan data cadangan", "806cb06592627effa1a4073fa2f66ce2": "Proses pemulihan sudah berjalan!", "37dfdfda0ab7a98140943484fe70a76c": "Mulailah mendekompresi paket data", @@ -3389,7 +3510,6 @@ "4c3880bb027f159e801041b1021e88e8": "Metode", "7d3c180ded4dcc8eade80cd031ab1b5d": "Tolong jangan beroperasi, harap tunggu sebentar", "37b15a5d1e4fa625ea8996de5e378a84": "Berhasil diambil", - "b0d4998a26f5b5742ad38c4af8817e32": "Pengecualian", "616e012bcc90980f6ddfd2b3c17345f8": "Gagal mendapatkan kemajuan", "9e0a136b55af822e72c8d6716d2d4bf3": "Tipe yang tidak diketahui", "6ac0b58e56cefd76e61bc840dfad94fa": "Tugas berhenti dengan sukses", @@ -3414,12 +3534,58 @@ "3a02e4b05ad1b321e855aa6116699b6e": "Pengingat migrasi berhasil dihapus", "334afd10871f8c52a884e307d2e17ccf": "Sejarah migrasi berhasil dihapus", "2f393a2518f5668880822f47fcdb5cc0": "Sejarah migrasi tidak ada", + "df4bb29cbb7fe7e3dbc82e961d5b5b53": "Menyiapkan data", + "2b2a2a0b0596507029dd0feb9485a216": "Tidak ada tugas yang sedang berlangsung yang ditemukan.Silakan periksa", + "d4e8a75d522d3e77ae80eadd49b0865e": "Daftar database jarak jauh kosong", + "5d806f11bb91996cafe7836b27a4e770": "Pengecualian Koneksi Redis!", + "1d69261c05f6ce03d2cab5528d443fa7": "Memulai cadangan data database", + "0cf1803cfdfda6f67d12fa7e1c4a25a7": "Cadangan {} Remote {} database", + "32d68be800692faddb12c5252fded05e": "{} Remote {} Informasi Basis Data ✓", + "0c64283397c43effb13a2cbe818ce929": "Cadangan data database selesai", + "2f7d7cfc04be64fa087e964d41cb26b4": "Mulai Memulihkan Daftar Database Sqlite", + "a1248c409fec22277ab13a6bb433188e": "File cadangan daftar database sqlite tidak ada, melewatkan restorasi", + "d03ebecb5f420070192de8712926151a": "Restorasi daftar database SQLite selesai", + "ad6937d61b4d6e93a13f03308c66f2eb": "Layanan MongoDB tidak berjalan!", + "f60644c6526c4d9afe5b20db75fc2e5b": "Cadangan basis data gagal, Direktori Ekspor tidak ada!", + "161bb420493657920405937a2cf42c96": "Kompresi cadangan gagal!", + "20a42330f9241c13c91e3e203449a8a6": "Kurangnya alat cadangan, silakan instal PGSQL Manager melalui Software Store terlebih dahulu!", + "7eff7c4aeb6bfe736f8a78c0096f92c7": "Harap atur kata sandi administrator terlebih dahulu!", + "6e907b499869ab16105a7aba198e13a7": "Kata sandi basis data kosong!Harap atur kata sandi basis data terlebih dahulu!", + "d8a3336243e1c08e8a29c75af1eb528c": "Inisialisasi MySQL berhasil!", + "ee9017df13cf59a9b0d6588c5e8d9e5a": "Mysql akan restart, tolong tunggu ...", + "73af95fd2322196e0d9792df4ca1f566": "Inisialisasi MongoDB berhasil!", + "8c9718f3235e7c36c9f400bc68db1ef5": "Otentikasi set MongoDB gagal!kesalahan: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "Inisialisasi PostgreSQL berhasil!", + "c46866b7bc29cf9d478835bda10e43ce": "Inisialisasi Redis berhasil!", + "4e889bbbfc5e25ebf611e5764b8a358c": "Mulai memulihkan basis data", + "c9206e74b8d32e1e0a5710c0fe322cee": "Memulihkan {} database {}", + "ecea29915732c5d0001ece74601f3d20": "{} database {} ✓", + "b61a878149263a02fa99cc635409ee25": "{} database {} ✗ ({})", + "3fa7c5a9beafa67bb44999cab5cff52c": "Gagal mengembalikan {} database {} alasan: {}", + "e89775cca910deb5e484f631606cceb1": "Restorasi data database selesai", + "9750547146e22f364299bc5f561a3fb6": "Mulailah memulihkan database jarak jauh", + "23f2db47eb6ff16785e5a222c8657f93": "Restorasi Database Jarak Jauh Selesai", + "b17f6f187c4ecfd392c6367ec2ba6498": "{} ID cadangan tidak ada, impor diakhiri", + "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} ID database tidak ada, pemulihan data diakhiri", + "611881e9f5d01b22a447c282aa8aca23": "Database mysql {} sudah ada", + "ea31cbc6134300ca816c913d227b605f": "Gagal membuat database {}.Alasan: {}", + "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "Database sudah ada, melewatkan restorasi SQL", + "556843e4a406b780b0cf83c43366a8dd": "Impor berhasil", + "af71c2c0e3813c9a77fe48507ea8e4d1": "MongoDB Database {} sudah ada", + "84b4d8c8cdd02488c0f868e97b22a3c2": "Penciptaan berhasil", + "10aec3a9e9564a9851c117b259245136": "Database sudah ada, melewatkan pemulihan data", + "b819d4259ca3ab0042562acea69e83e1": "Database postgresql {} sudah ada", + "31b21eca2e62de420cf05e8135089114": "File cadangan tidak ada!", + "3eed4851380704f25eec3921befde38f": "Restorasi berhasil", "cbea0a592d6a3c48f2418d687cf54200": "Mulailah mencadangkan data terminal", "e7e06b2dd59401dcf79acf2e3124d2fb": "Cadangan data terminal selesai.Ukuran Data: {}", "a273d4d4d0cf13abc1d7a4f96b8c851e": "Mulailah memulihkan data terminal", "1a15a2b43f1dd92e836a592fb180843d": "Kembalikan gagal, file tidak ada", "95d831166994e434da49f3ed70b73e8e": "Restorasi data terminal selesai", + "e3a04ee4c0a034510866948e571c7966": "Memulai pencadangan data firewall", + "9a176a20c15e3dc096ed8bc5a05182ba": "Aturan port firewall ✓", "ce693968cbf6e5f66af91e3dd2317d78": "Aturan IP Firewall ✓", + "7ebd5e6b35357be0d5079f674f68ed8f": "Aturan penerusan firewall ✓", "8dfa78d85bb1d152b0cafe398b27e1ae": "Peraturan Wilayah Firewall ✓", "927bb2298acc2c29d1beaff4d1656371": "Cadangan Data Firewall Selesai", "d076d2dde53272dc55d47f34a465ebef": "Menginisialisasi data firewall", @@ -3440,6 +3606,19 @@ "6331b46ffa70ff97b558022d5ae8098a": "Mulai restart firewall", "1bb2a65f17d7e3c685f36f7ff1794338": "Firewall restart selesai", "246f6edb1d9df9b3abe78fc810876c28": "Gagal mengembalikan data firewall: {}", + "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "Mulailah mencadangkan data situs", + "c886466d255b20be0dbde7f1b44b7f20": "Backing Up {} Project: {}", + "7ecf25c18499d663d2e636d0a99f73a3": "{} Project {} ✓ ({})", + "0fc5eeb9bebed19653578a5df99d3e6e": "Cadangan Data Situs Selesai", + "9a2e8778b2a816fedb9f83afadcc2341": "Mulai mengembalikan dependensi Python situs ...", + "fd16d36423b43735556724e0395e8f91": "Restorasi Dependensi Python Situs Selesai", + "bbf57ca8231bce958a3e528a08491874": "Insert database situs gagal: {}", + "389f018ba17dc25cb23a5300d8f630db": "Direktori cadangan situs tidak ada: {}", + "21654e03b247d5e25abaa0ad542883c0": "Mulailah memulihkan data situs", + "c8cecd19f4f4a680a5879f828d1c5578": "Memulihkan {} proyek: {}", + "35850d3654332477522ee06c756a3c85": "Gagal Menghapus Direktori Situs Sumber: {}", + "c88b730f7a6a312159272ce532947de2": "{} proyek: {} ✓", + "24ee51964e4ece856493ca28fdb075ed": "Restorasi data situs selesai", "483829cb5ae13bb190eb59acdf4f3231": "Mulailah mencadangkan data server surat", "8c7a0774ab14bae83a69b8562102fb0a": "Cadangan Data Server Surat selesai.Ukuran Data: {}", "e8480272035737a247832288f618c270": "Mulailah memulihkan data server surat", @@ -3466,11 +3645,14 @@ "30560687e27ef30b6f1cde26359eea6c": "Mulailah menginstal firewall nginx", "a776b4ccf7343a25223817c8597ca7cf": "Nginx Firewall ✓", "d0c97e94eb5061783de7bbad8e7bd295": "Mulailah mengembalikan data firewall nginx", + "0010c09bd9f322c3b88a89dd0b52c831": "Data firewall Nginx ✓", "427ad80bf462a92719fcff5c1a1be755": "Nginx Firewall ✗", "29ad27f749c3f913779d432115de597f": "Mulailah menginstal Laporan Pemantauan Situs Web", "66f3f8adc854963e94a643b706157309": "Laporan Pemantauan Situs Web ✓", "a0dded50b067929299258b3c8fc1b0e6": "Mulailah memulihkan data laporan pemantauan situs web", "bd43add14ebbd0f448c207c48e1d5ac8": "Data Laporan Pemantauan Situs Web ✓", + "a7b8bc831a9b36cc5127b5f8ecbec22a": "Laporan pemantauan situs web ✗", + "c922c95c5f7973050d08412a26aab462": "Mulai pasang perlindungan kerusakan perusahaan", "31d844f4dd95b8a71e8ddbd1b9912ae5": "Perlindungan tamper perusahaan ✓", "8fcd5da199e1e04830a686a576a2e914": "Mulailah memulihkan data perlindungan tamper perusahaan", "941b78173e944c6737a858bada098311": "Data Perlindungan Tamper Enterprise ✓", @@ -3490,12 +3672,16 @@ "b561b1ca5fd89d639144a099f5fe096d": "Cadangan Informasi Sertifikat SSL Selesai", "7aa422d849ba11b569187382a3a509d1": "Memulihkan situs penempatan untuk sertifikat {} ...", "4573d024bbb8e1f8c8efb2582a6a01c0": "Situs Penyebaran yang Dipulihkan untuk Sertifikat {}: {}", + "baa339aa8e95d46851fd48574cb1d902": "Memulihkan kotak surat penerapan untuk sertifikat {}...", + "9307ae55fb4a7b878e377790e040eec4": "Kotak surat penerapan yang dipulihkan untuk sertifikat {}: {}", "b057e2d52c20f76bf3c788eb9b4873fa": "Memulihkan panel penyebaran untuk sertifikat {} ...", "41596c0d36a66c44434d5882c3cfa793": "Panel penempatan yang dipulihkan untuk sertifikat {}: {}", "6ffcb0a3e8cdf728b3e7bc45ae221e5a": "Penyisipan sertifikat gagal, silakan periksa log", + "c8a71420e709d8a4d02914a78d9a0e06": "Mulai pulihkan konfigurasi sertifikat SSL domain", "0672a3dc402dc9657fd0a0f1580d1c12": "Tidak ada data pemulihan yang ditemukan", "52f23f668fced51c3e25c781299fbff8": "Direktori Cadangan {} tidak ada, tidak dapat mengembalikan informasi sertifikat SSL", "ad93ef11d3e4238618571f517e11e80d": "Memulihkan {} subjek: {}", + "c49480308ee71202cc5fff5ea96eaaed": "File sertifikat tidak ada", "42db220bc931b97aecdef6b6f0362bc4": "Sertifikat yang hilang atau file kunci pribadi", "9f88b7ffec183a54f2e7e6136b4f5ac7": "Restorasi Informasi Sertifikat SSL selesai", "5e211e4fb46748c1d243b59a15645df7": "Memulai tugas yang dijadwalkan cadangan", @@ -3503,50 +3689,10 @@ "ff0550fa0270ac20419790a51900d815": "Penyelesaian tugas crontab cadangan", "a7609aefd5330a1384704e73dc0b4dc0": "Mulailah memulihkan tugas crontab", "48ed083561c2f201d9fe52f6a35ee982": "Tugas crontab mengeluh", - "d4e8a75d522d3e77ae80eadd49b0865e": "Daftar database jarak jauh kosong", - "5d806f11bb91996cafe7836b27a4e770": "Pengecualian Koneksi Redis!", - "1d69261c05f6ce03d2cab5528d443fa7": "Memulai cadangan data database", - "0cf1803cfdfda6f67d12fa7e1c4a25a7": "Cadangan {} Remote {} database", - "32d68be800692faddb12c5252fded05e": "{} Remote {} Informasi Basis Data ✓", - "0c64283397c43effb13a2cbe818ce929": "Cadangan data database selesai", - "2f7d7cfc04be64fa087e964d41cb26b4": "Mulai Memulihkan Daftar Database Sqlite", - "a1248c409fec22277ab13a6bb433188e": "File cadangan daftar database sqlite tidak ada, melewatkan restorasi", - "d03ebecb5f420070192de8712926151a": "Restorasi daftar database SQLite selesai", - "ad6937d61b4d6e93a13f03308c66f2eb": "Layanan MongoDB tidak berjalan!", - "f60644c6526c4d9afe5b20db75fc2e5b": "Cadangan basis data gagal, Direktori Ekspor tidak ada!", - "161bb420493657920405937a2cf42c96": "Kompresi cadangan gagal!", - "20a42330f9241c13c91e3e203449a8a6": "Kurangnya alat cadangan, silakan instal PGSQL Manager melalui Software Store terlebih dahulu!", - "7eff7c4aeb6bfe736f8a78c0096f92c7": "Harap atur kata sandi administrator terlebih dahulu!", - "6e907b499869ab16105a7aba198e13a7": "Kata sandi basis data kosong!Harap atur kata sandi basis data terlebih dahulu!", - "982c5a05ac4dbaee10c865ba767b2249": "Sinkronisasi db mysql ...", - "a9ace5523668233a3867f26cc86e29c9": "Sinkronisasi DB MySQL selesai.", - "c15645e9ad579e4bfcb536bc5d7015c3": "Mulailah memulihkan data basis data", - "c9206e74b8d32e1e0a5710c0fe322cee": "Memulihkan {} database {}", - "ecea29915732c5d0001ece74601f3d20": "{} database {} ✓", - "b61a878149263a02fa99cc635409ee25": "{} database {} ✗ ({})", - "3fa7c5a9beafa67bb44999cab5cff52c": "Gagal mengembalikan {} database {} alasan: {}", - "e89775cca910deb5e484f631606cceb1": "Restorasi data database selesai", - "9750547146e22f364299bc5f561a3fb6": "Mulailah memulihkan database jarak jauh", - "23f2db47eb6ff16785e5a222c8657f93": "Restorasi Database Jarak Jauh Selesai", - "6aca7aec516bcaf7ded80873f08dd55c": "Inisialisasi MySQL berhasil dengan kata sandi {}", - "ee9017df13cf59a9b0d6588c5e8d9e5a": "Mysql akan restart, tolong tunggu ...", - "a692f58dc09f3e41c133ea460ff3b8df": "{} Restorasi kata sandi basis data gagal.Alasan: {}", - "b17f6f187c4ecfd392c6367ec2ba6498": "{} ID cadangan tidak ada, impor diakhiri", - "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} ID database tidak ada, pemulihan data diakhiri", - "611881e9f5d01b22a447c282aa8aca23": "Database mysql {} sudah ada", - "98b38cd2445396b44204b7201a33f64b": "Gagal mengembalikan {} izin akses basis data.Alasan: {}", - "ea31cbc6134300ca816c913d227b605f": "Gagal membuat database {}.Alasan: {}", - "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "Database sudah ada, melewatkan restorasi SQL", - "556843e4a406b780b0cf83c43366a8dd": "Impor berhasil", - "af71c2c0e3813c9a77fe48507ea8e4d1": "MongoDB Database {} sudah ada", - "416ad8b141103f9704100ce4070c5975": "Validasi catatan database gagal, restorasi berhenti", - "84b4d8c8cdd02488c0f868e97b22a3c2": "Penciptaan berhasil", - "10aec3a9e9564a9851c117b259245136": "Database sudah ada, melewatkan pemulihan data", - "b819d4259ca3ab0042562acea69e83e1": "Database postgresql {} sudah ada", - "31b21eca2e62de420cf05e8135089114": "File cadangan tidak ada!", - "3eed4851380704f25eec3921befde38f": "Restorasi berhasil", "e9ed6b2a27deb5699565f0441dc713e9": "Mulailah mencadangkan informasi perangkat lunak", "e690c7866c5dbacbbc7860af5e6a3af1": "Cadangan Informasi Perangkat Lunak selesai", + "cabf299a6cfa5874e23582c535f301c6": "Mulai menginstal nginx-{}", + "33ec71107108ed89c0b526d5473526c8": "Mulai instal layanan Apache", "b815f2a7e299ea99d41d665c728756d9": "Instalasi server web selesai", "70510d59e30015790f07ca53c80c5bec": "Mulailah menginstal php- {}", "2de6c0aa3c26285104f898b368bcf287": "Mulailah menginstal node- {}", @@ -3559,18 +3705,5 @@ "99782b6a478e499d45a91f9d78e1c73a": "Mulailah menginstal phpmyadmin- {}", "640c4e334dc9587e212d36e685059478": "Mulailah menginstal ftp- {}", "aecfeaaa9e3bcff1f6169598772e90c0": "Mulailah memulihkan lingkungan menjalankan panel", - "3b83e3fdb17c70ca190e263e0bd7173e": "Akan melewatkan instalasi jika lingkungan yang sama ada", - "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "Mulailah mencadangkan data situs", - "c886466d255b20be0dbde7f1b44b7f20": "Backing Up {} Project: {}", - "7ecf25c18499d663d2e636d0a99f73a3": "{} Project {} ✓ ({})", - "0fc5eeb9bebed19653578a5df99d3e6e": "Cadangan Data Situs Selesai", - "9a2e8778b2a816fedb9f83afadcc2341": "Mulai mengembalikan dependensi Python situs ...", - "fd16d36423b43735556724e0395e8f91": "Restorasi Dependensi Python Situs Selesai", - "bbf57ca8231bce958a3e528a08491874": "Insert database situs gagal: {}", - "389f018ba17dc25cb23a5300d8f630db": "Direktori cadangan situs tidak ada: {}", - "21654e03b247d5e25abaa0ad542883c0": "Mulailah memulihkan data situs", - "c8cecd19f4f4a680a5879f828d1c5578": "Memulihkan {} proyek: {}", - "35850d3654332477522ee06c756a3c85": "Gagal Menghapus Direktori Situs Sumber: {}", - "c88b730f7a6a312159272ce532947de2": "{} proyek: {} ✓", - "24ee51964e4ece856493ca28fdb075ed": "Restorasi data situs selesai" + "3b83e3fdb17c70ca190e263e0bd7173e": "Akan melewatkan instalasi jika lingkungan yang sama ada" } \ No newline at end of file diff --git a/BTPanel/languages/it/server.json b/BTPanel/languages/it/server.json index 51aa2266..edbb0eca 100644 --- a/BTPanel/languages/it/server.json +++ b/BTPanel/languages/it/server.json @@ -14,39 +14,30 @@ "4cc4ddc196a295ee4ab82daec08f91a6": "Il sito non esiste", "25bb121145f918572eea2ef07ff8e89c": "Errore di backup", "f8320b26d30ab433c5a54546d21f414c": "Falso", - "4bbfcde12aa36ec375a332f51bf905d6": "Al giorno", - "60956b50bb8e8c711d3adb889a70137f": "Al giorno, eseguire a {} ora {} min", - "78748f15bb65939b6d130c3a5cf8b7dc": "Ogni {} giorni", - "cf9af10dcebe2f12092ff6028a535f08": "Ogni {} giorni, eseguire a {} ora {} min", - "e114abed903b9d26c476d4f6cd59c04b": "All'ora", - "0aef48ea8132b0551fa25a10fd0a6585": "All'ora, correre a {} min", - "50419faf9662e0c3f283d496bcb8eb72": "Ogni {} ore", - "2a0706d7e3ca3ce9e955471a0648dfcc": "Ogni {} ore, eseguire a {} min", - "84d94bf0382f611906b7edd65d6af169": "Ogni {} minuti", - "14d27796d1c96457c7c019661a2f32d4": "Esegui ogni {} minuti", - "6c25e6a6da95b3d583c6ec4c3f82ed4d": "Settimanale", - "e1df614d393ab86fd63c5062f7e77936": "Ogni {}, eseguire a {} ora {} min", - "9030e39f00132d583da4122532e509e9": "Mensile", - "69c5e99b9ad8d2b8f11be9a60cbf71da": "Mensile, esegui su {} giorno {} ora {} min", - "9d1a0949c39e66a0cd65240bc0ac9177": "Domenica", - "6f8522e0610541f1ef215a22ffa66ff6": "Lunedi", - "5792315f09a5d54fb7e3d066672b507f": "Martedì", - "796c163589f295373e171842f37265d5": "Mercoledì", - "78ae6f0cd191d25147e252dc54768238": "Giovedì", - "c33b138a163847cdb6caeeb7c9a126b4": "Venerdì", - "8b7051187b9191cdcdae6ed5a10e5adc": "Sabato", - "e00d5128f631253b7b6ed8d5454c0c81": "Impossibile scrivere su file, controlla se [indurimento del sistema] è abilitato!", - "685689743579a8f09fcec5d7df04e39e": "Il nome dell'attività non può essere vuoto!", - "a5c04aced897c770105858268324b53f": "L'attività corrente è disabilita lo stato, si prega di aprire l'attività prima di modificare!", - "85305ee6be0f078791c7437ec54dda12": "Impossibile aggiungere", - "08a1ce771119bb393fa49478216ae809": "Il registro è vuoto", - "b8fd4dbe5c3650beaec0a3d44d7f0245": "I registri svuotati", - "ff47c70e853d0b3635935be883b018e9": "Impossibile svuotare i registri delle attività!", - "e0c4da1afd18acbb66bc5fac261a42ef": "L'attività specificata non esiste!", - "998ad6f12ce5285a1b72d4265d9b36cc": "Cancellato con successo", - "e274abcaad0a7fff74d9adb67e578d5f": "Impossibile eliminare", - "38fa2d4f8f9a13062c0c9007d97f6a84": "Impossibile leggere il file!", - "f57d5686d9dd67f0e81924de8d13af95": "L'attività è stata eseguita!", + "18928426418954e3a8bc166c892af5c5": "Il nome utente o la password non possono essere vuoti!", + "14422683e14b8a03fd02b84480703c41": "Non sei riuscito ad accedere molte volte, riprova in {} secondi!", + "179b0ad118200b66c6e90535d9d8ad4f": "Il disco del disco è stato esaurito, il pannello ha tentato di rilasciare l'inode.Per favore riprova ...", + "7edd0140c2f050286273be74039b1df7": "Verifica non riuscita, aggiorna la pagina e accedi di nuovo!", + "9a9b0bf6269ba974cc6a00bb0f0de1d0": "Il codice di verifica non può essere vuoto!", + "2b7ae590e0538e70b7a359a94d30f1f4": "Il codice di verifica non è corretto, riprova!", + "21f763b26858bf8ff40f931d714ab106": "Nome utente o password sbagliato , 5 caratteri):", - "219863186dddc079747a525bb7877a88": "Pls Immettere la nuova password di root mysql :", - "c172da334fdcac77f704fa4408dd2f16": "| -Errore, la password non può essere vuota", - "a79cf67c04d379c4916dc584c9d8333f": "| -Errore, la password non può essere inferiore a 8 caratteri", - "06f5000079703a33b91564159f07770a": "| -Errore, la password non può contenere caratteri speciali", - "913153f9957100bcf3029e8f3d5bc5e9": "Pls Inserisci nuova porta del pannello:", - "39ea14ec0df812219c450ba15230ad2d": "| -Errore, nessuna porta valida inserita", - "bab5cb07adebbfbd938180d6862a7ce7": "| -Errore, pls non utilizzano la porta comune come porta del pannello", - "00213d6b5423971311e5a47f83081a24": "| -Errore, la nuova porta è la stessa della porta del pannello corrente, non è necessario cambiare", - "e1e57838b2c7e1567fb96e20bfd474e0": "| -Errore, la porta specificata è già in uso", - "5093d954f09d473d091355fe292920a8": "|-Entrance Limite annullato", - "e0b1cb1725c8fb29d42fa69d679a73ea": "| -Domin Limite annullato", - "968c7b9246b5ab3d3e7659cea211a20b": "| -IP Limite di accesso annullato", - "7b84e677e97bd4943a6639a22c1a1704": "password Il parametro non può essere vuoto", - "5f3160e82bc0c5278923b609841e588b": "Aperto con successo", - "f288f8c23f8d03a699a49bf1fb8e7f53": "SSH Opzione fallita", - "d3118650da719b6b0cc83230204491de": "Metodo di crittografia errato", - "24513dc8c02bb021a1c944009c19215b": "Impossibile aprire", - "8a3140f96ba5c5df5560d0bd27aa4cd8": "Chiuso con successo", - "ebdcf538e79de6922f498cc8c735eab5": "Il firewall del sistema non è aperto", - "a296add6341b715925c0be2b83514ee3": "L'indirizzo IP che hai inserito è illegale!", - "3433b9709eed7423f1900061ef743af6": "Disabilitare questo IP farà fallire il tuo server", - "57e7b2320dd3984312335605d57ee0f8": "L'IP esiste nell'elenco dei blocchi, non è necessario ripetere l'elaborazione!", - "4bb8df740a7119979ff7854d034200a8": "L'indirizzo IP è illegale!", - "ff9c66f005c08efd15752fb261057b46": "La gamma di porte deve essere compresa tra 22 e 65535!", - "b26b09909c3b090f31dba4a0986e1b84": "Il porto esiste, non è necessario ripetere il rilascio!", - "408f58c25fc55295236fbb64a2d884ff": "Non riuscito, non è in grado di eliminare la porta corrente del pannello", - "ad6fc2abb89b42d391b4bf84e8e6cd2d": "Il servizio SSH ha disattivato", - "0692d6f0819524aaa05e73f03022ec5b": "Servizio SSH acceso", - "d0749aaba8b833466dfcbb0428e4f89c": "SUCCESSO", - "ffdc24f916f3071233ca7710aff032c8": "
non è riuscito ad attivare:

", - "9848c96a046adb1759233241661ff694": "{} Il servizio non e avviato", - "6ed577cdce37bbd9c66871ac1677dc53": "La fermata del servizio non è riuscita!", - "572e5703371c43aae299181c0e3567d4": "Esegui il programma al termine di tutte le attività di installazione!", - "c7138b4b5f7ded833942aef4e230771d": "Comando inviato correttamente!", - "d56f0ed99825b4d62ab84753a65f7f1e": "Pannello riavviato", - "c8c7de7f5b740307d55affea39b79993": "L'impostazione ha avuto successo", - "e3fa50f6413dbb7bfe7cb26e1acd3d98": "Si prega di accedere prima con l'account", - "121303c67f81a8ebda41de51c8afaf27": "Accedi prima al tuo account Aapanel sul pannello!", - "d5670370d84473122d8e4d5a3b27b4bf": "Errore del parametro: num", - "64ab1925be79469a2097a6490725e3cf": "Errore dei parametri", - "c40f1a202bfa106ac04f83a4740b3bd1": "Impossibile connettersi al server!", - "6b1c16b7a785029c0a11de3ab31cb125": "Flush Status Success", - "e06c1ddc33f674068e3ca201094145d1": "Attivare con successo", - "819b23804f66eddddfba39e7bdc53e68": "Attivare fallimento", - "4f57c5dce8b638737a368af15409439f": "Attivare fallimento", - "fe94df1697f309269e00428cae6bd141": "Rinnovare fallito", - "b2ac1158b825f44cb363648fa3ad60cb": "Rinnovare con successo", - "78d29c0fadebf704e471a63afd430250": "Applicare non riuscita", - "3649e869737aa87f263194ce7f88f19e": "Applicare con successo", - "34c4dc380e690d2ff6ebb6aaed103401": "Errore parametro Product_ID!", - "28731318aa493586f88894355a79cb48": "Impossibile connettersi al server!", - "18928426418954e3a8bc166c892af5c5": "Il nome utente o la password non possono essere vuoti!", - "14422683e14b8a03fd02b84480703c41": "Non sei riuscito ad accedere molte volte, riprova in {} secondi!", - "179b0ad118200b66c6e90535d9d8ad4f": "Il disco del disco è stato esaurito, il pannello ha tentato di rilasciare l'inode.Per favore riprova ...", - "7edd0140c2f050286273be74039b1df7": "Verifica non riuscita, aggiorna la pagina e accedi di nuovo!", - "9a9b0bf6269ba974cc6a00bb0f0de1d0": "Il codice di verifica non può essere vuoto!", - "2b7ae590e0538e70b7a359a94d30f1f4": "Il codice di verifica non è corretto, riprova!", - "21f763b26858bf8ff40f931d714ab106": "Nome utente o password sbagliato , 1.Controllare se il nome di dominio è associato al sito corrispondente.

2.Controllare se il nome di dominio è correttamente risolto sul server o la risoluzione non è completamente efficace.

3.Se il tuo sito ha una configurazione del proxy inverso o se si utilizza un CDN, disattiva prima.

4.Se il tuo sito ha un reindirizzamento 301, disattivalo per primo

5.Se i controlli di cui sopra confermano che non vi è alcun problema, prova a modificare il fornitore di servizi DNS.

", - "4d6822ed3bd01f379f2ab4b1e68068d7": "| -Con non ci sono certificati da rinnovare.", - "b74c00ca5fee122c49cd66ce3d91b2cf": "| -Renewal fallito :", - "d5ef96e383d376beeec28da7acfea516": "Scarica file", - "f24f6c5f5841340f898a6baaa6478bcd": "Scarica file {}", - "9fdd777388a418cef77bce46c1b2511a": "Il formato di compressione specificato non è supportato!", - "4fa407ee74026903dc3013d0b2471eac": "La compressione è riuscita!", - "ece43dcaac9352f58c422e500266a927": "La dispressione è riuscita!", - "b9c1dcb37c44dca19765636de065b1c1": "Il backup è riuscito!", - "ac4eb62573e34c36ff426c8a6360c781": "Errore di backup!", - "438ca4ffcf6fbd44ec129e73a24f0deb": "Seleziona file sql/gz/zip!", - "0edfb4a54d6cf45209a6c7929b8b9919": "Database importato correttamente!", "3f96c422b7a59fe6e8bf7531c647a64c": "L'account specificato non esiste", "cb5e7fdc51569eedfbf3a9a0d3c819cc": "L'ordine specificato non esiste!", "8bd32b310825307a909c682871008642": "Ordina eliminato con successo!", @@ -327,6 +83,8 @@ "d568b4df4d83c54698fe15ad656181ed": "L'emissione non è riuscita, il dominio {} ha superato il limite delle ristampe settimanali!", "5ac0673b95a9e6af88bb008e24c09bf4": "Connessione al server CA non riuscita, riprova più tardi.", "2948ef630d1bdb0b2e7209d83f13af67": "Nome del dominio non supportato {}, si prega di controllare che il nome di dominio è corretto!", + "27bad102d3dd6f86d5f6c680c8353089": "La creazione dell'ordine non è riuscita, riprova più tardi!", + "1a728d28f052c9956f9d014d60c61bff": "CA Server ha negato l'accesso, riprova più tardi!", "35390f482d893d9c9c0c0bb055e70572": "Troppe richieste per questo nome di dominio.Si prega di riprovare 3 ore dopo", "cae6404c4aecf46684930fe2a86676a6": "Permettere", "ab511534580180bb5c56aab7331d0c36": "La CA non può trovare o ottenere il record DNSKEY utilizzato per verificare la firma DNSSEC", @@ -363,37 +121,23 @@ "6953519c64b998226d0294b961deca62": "Certificato di revoca", "1bbd31373b98ad5a6320af00b2a15ee0": "Rinnovare quando il tempo di scadenza è un certo tempo", "8fcc1d6fd24fad55d9e8fea6631886db": "Immettere l'indice dell'ordine da revocare nel parametro --Index", - "3c8ad9e6e9c39de49294aa2db8630f25": "Nginx non è installato", - "8bdafc47214a88c8cc4bc6326771040a": "Acquisizione dei dati non riuscita!", - "d84c752e17017ec4b4987497ce15dfd0": "Acquisizione dello stato di carico PHP non riuscita!", - "ee83f5efe8a95f2e8529da7d4bb01d2b": "Ininstallaton è riuscito", - "cf6e5eb2bfedf2e0529a552c1017c21e": "Scrivi il file non riuscito!", - "842bbd281516b01e70be499dbe67d3aa": "Impostare correttamente", - "ff7ca5d4ef00526f701d3ae0b3833940": "Impossibile ottenere l'elenco, controlla se l'impostazione [AK/SK/Storage] è corretta!", - "517fa3f50147b216828f9aca9fd08927": "server dimostrativo , Questa azione è vietata!", - "e39bf0b6a74eb0459abefe075607833f": "Errore, Impossibile porre fine ai processi dell'attività!", - "ca3eb6afad663b2881fababde6d59d63": "Per favore lega prima il tuo account!", - "df1f69a87b498b8b12c90be5a3b885db": "Download di file non riuscito, riprova o aggiorna manualmente!", - "e448bd5c1c654d1ef33cf40620808693": "La versione PHP richiesta non esiste!", - "7c769ceaad458456d4c3bc8276015a8d": "Autorizzazione negata!", - "178d2e6a3f4abd4552188dcf36df7687": "I registri dei pannelli svuotati!", - "99a0d283490c238c6faf2d0387dbcda7": "L'attuale server Web è openLitedSpeed.Questa funzione non è ancora supportata.", - "20b4593b7de7ef359c1a0269f83e896b": "La gamma di porte non è corretta!", - "0e656ce1afc98099f2e01e8f71362f92": "Immettere il numero di porta corretto", - "88897967b12e6907309204ad6d0647af": "Si prega di non usare la solita porta come porta PhpMyAdmin!", - "e4859a777f8d4f300baf8fff0284fe81": "Non ho trovato il file di configurazione SSL Apache PhpMyAdmin, prova a chiudere le impostazioni della porta SSL prima di aprire", - "6bd4e79acd767010d96091baf9daba77": "Non ha rilevato la porta che Nginx PhpMyAdmin ascolta, conferma se il file è stato modificato manualmente.", - "7478cfa7a09bbe61467b07dea2e9721d": "Non ha rilevato la porta che Apache PhpMyAdmin ascolta, conferma se il file è stato modificato manualmente.", - "a7dad48fefe8778dd10744a8a4dbae8e": "Nuova porta SSL PhpMyadmin", - "a168cddbe84613b0a468887d44e7eaf5": "Il certificato del panel non esiste.Si prega di richiedere il certificato del panel e riprovare.", - "c0c23cdf9e9329e576cfbddcc85666a3": "Apri correttamente, rilascia manualmente la porta SSL PhpMyAdmin", - "b7f3560235e37cebdbde7db33c3df64c": "Operazione non riuscita", - "7f91451dfcb0045a4684fa68b35d0365": "Nuova porta Phpmyadmin", - "bb1ca97ec761fc37101737ba0aa2e7c5": "ERRORE", - "14c525aba20f0a52255a799f51ced885": "L'elenco di avvertimento non esiste!", - "586a19c1eeaf6fe9d57f1d894fc487fc": "Il file di registro non esiste!", - "190045c03f9a72a1900c60d63e1e2b8b": "La rilegatura dell'account è scaduta, si prega di rinnovare la pagina [Impostazioni]!", - "907fddd6007347a0daffc4a64156f0de": "Ignora il successo, questa versione non verrà più ricordata di aggiornare.", + "b0698ab9adefa7515299f311c725ba4d": "Cancella ordinamento con successo", + "8611f56e253646a455ceeb020052fa97": "Impossibile modificare", + "ebdcf538e79de6922f498cc8c735eab5": "Il firewall del sistema non è aperto", + "a296add6341b715925c0be2b83514ee3": "L'indirizzo IP che hai inserito è illegale!", + "3433b9709eed7423f1900061ef743af6": "Disabilitare questo IP farà fallire il tuo server", + "57e7b2320dd3984312335605d57ee0f8": "L'IP esiste nell'elenco dei blocchi, non è necessario ripetere l'elaborazione!", + "4bb8df740a7119979ff7854d034200a8": "L'indirizzo IP è illegale!", + "998ad6f12ce5285a1b72d4265d9b36cc": "Cancellato con successo", + "ff9c66f005c08efd15752fb261057b46": "La gamma di porte deve essere compresa tra 22 e 65535!", + "b26b09909c3b090f31dba4a0986e1b84": "Il porto esiste, non è necessario ripetere il rilascio!", + "408f58c25fc55295236fbb64a2d884ff": "Non riuscito, non è in grado di eliminare la porta corrente del pannello", + "e274abcaad0a7fff74d9adb67e578d5f": "Impossibile eliminare", + "ad6fc2abb89b42d391b4bf84e8e6cd2d": "Il servizio SSH ha disattivato", + "0692d6f0819524aaa05e73f03022ec5b": "Servizio SSH acceso", + "d0749aaba8b833466dfcbb0428e4f89c": "SUCCESSO", + "ffdc24f916f3071233ca7710aff032c8": "
{}", + "6e264f3408e9b769d3fb7e2c807f301f": "L'operazione non è riuscita.Si prega di controllare che la chiave sia corretta", + "d4ac5985eccd334896e3cf23706e43b0": "Aggiunto con successo", + "92188d43af4373bacbf00951da16532a": "Impossibile ottenere il percorso del sito web.Si prega di controllare se esiste il sito web", + "ceaefd9a46d78491b9fdb912b5c71eeb": "Impossibile creare il file di convalida.Controlla se la scrittura è stata bloccata", + "1bb3608b1bc684c3dc85090db249346b": "Non sono state ottenute informazioni sul certificato", + "b0a783e3ada9e792e3ff3ca4eb477c80": "Il certificato non esiste!", + "fca4e47d90253577901e874737b87dc0": "Errore di lettura del certificato!", + "813595d6c41e417bea96adb1ad89043f": "Errore in formato certificato", + "16e6977cb4d0694335f3492ad8767370": "Certificato non trovato", + "b267d8a6cbf23d69056263e194742c06": "Il certificato non è valido", + "f8ad04059d0821e2ece2ed287bb3cd13": "Errore del formato di informazioni sul certificato", + "a441b2686419ee07dac67ba6bbf3ddf5": "Errore di scrittura DB", + "34c7694451633cb615e98b06d040c5c7": "Errore di query DB:", + "ba709b27ba6099126b4162a916a20174": "non è stato effettuato l'accesso, quindi", + "ae01e57647be41f3c1e2a0e49dae3de8": "Ottieni i dati del cloud Fail!", + "8d1747726b316e3a1063e5db9fe65864": "Ottieni il cloud fallire!", + "ff34f52bf8f702f83843e0d8f3e6bfac": "params sbagliati", + "41309f5b21613cfea3728a55036f9970": "Non è stato effettuato l'accesso, quindi incapace di caricare sul cloud!", + "6e4a26963219701ba8e062a1255fe089": "Nessun certificato specificato.", + "2c7d38ab0f7a91f5474efc897eaf4b2a": "File locale del successo.Ma il file cloud del non fa.", + "501ffa672acb20c4764563d6e839879b": "Impossibile connettersi al cloud.Impossibile eliminare i dati sul cloud.", + "a810cdf921c5b92a3f6d29667ec78ffc": "del successo", + "df569fbc92d17644e83b44541596633f": "Impossibile connettersi al cloud.", + "140bda69874872f8402052c613c0b3b9": "Email di test di avviso Aapanel", + "76a1ec4a3fcdc304394ff14dc90f8072": "Il numero di thread di pannelli dovrebbe essere compreso tra 1-1024", + "dd7e82b5fb3c67e3e41d96f22ba838fd": "Nuova porta del pannello", + "248336101b461380a4b2391a7625493d": "Salvato", + "40624aabb99173387dd6d575759b12db": "Manca il parametro CERTPEM!", + "37db9679113eef382992a1478f1b79ff": "Manca il parametro PrivateKey!", + "7063e5fbf2ea8d0809fe307b6df00467": "Certificato salvato!", + "d2174fc17fcd785706114088b84dbbce": "È stato generato l'URL di accesso temporaneo", + "b5101eb6e685091719013d1a75756a53": "\\ 1", + "0bfe47819da04212a33dac83b71430e8": "\\ 2", + "bef28b813bf12be3924925bbb62883dd": "Eseguito con successo!", + "fda63bff3e0143980e5761376859b00b": "Esecuzione non riuscita, controlla se Apache è installato", + "22012355700877ab73f89de8014ab20b": "Errore di configurazione della regola Apache:
non è riuscito ad attivare:

", + "9848c96a046adb1759233241661ff694": "{} Il servizio non ha avviato", + "6ed577cdce37bbd9c66871ac1677dc53": "La fermata del servizio non è riuscita!", + "572e5703371c43aae299181c0e3567d4": "Esegui il programma al termine di tutte le attività di installazione!", + "c7138b4b5f7ded833942aef4e230771d": "Comando inviato correttamente!", + "d56f0ed99825b4d62ab84753a65f7f1e": "Pannello riavviato", + "3d8c9e517719022b27ad5f27c578fa31": "Ottieni Ram False", + "d47ab7b9ce539ba13f4e045561bb8ed7": "Ottieni tempo falso", + "8e39175bab478762d3d029bee327c704": "Ottieni il tempo di riavvio falso", + "e16cf27704f83c8b0a0efc16886ea75d": "Ottieni la data falsa", + "c158c8096b76b85803e71232b2dd5e74": "Ottieni il dettaglio del tempo falso", + "a6ec06b5eb6a42e13e072d2e992e31a0": "Ottieni reqpersec false", + "cdd32490a46567fd0c1ee9d4b170b762": "Ottieni falsi di totalmente", + "62b939086708b37d68c00cb713994b52": "Ottieni Totalkbytes False", + "13b06d17b35dfeeafa50e12ad9ec1735": "Diventa falso", + "724fc9214ccce3e6a5787648240a4533": "Ottieni Falseworker False", + "7a7f329389283fdd3290c735f90946e9": "mpm_event_module conf non trovato o /www/server/apache/conf/extra/httpd-mpm.conf è vuoto", + "db669c6377ab90eef78800a48fd4a453": "Richiedi timeout", + "af52f5340c065f4d38182f7a27d59f75": "Mantieni vivo", + "70b46e57f3c33abdb9558bc5c3a234d9": "Richieste di manutenzione massima per connessione", + "6868568c3abc547e622a303891a906b0": "Processi predefiniti", + "224114c62dceb7ebee2db43c6c79a961": "Numero massimo di thread inattivi", + "3c60809d9a5a0900dfbc28bb017e410b": "Numero minimo di thread inattivi disponibili per gestire i picchi di richiesta", + "3783030daf8154be6e11fc4160c229c3": "Numero di thread creati da ogni processo figlio", + "2f25e4b1a2cb84576740da749a2daef2": "Numero massimo di connessioni che verranno elaborate contemporaneamente", + "72e3edfd72758944413b1e4e9c432f1e": "Limite al numero di connessioni che un singolo server figlio gestirà durante la sua vita", + "26c74a59d7d10bd927dce45e449943f1": "Errore di configurazione", + "b2d87dda66a4643c6cf673f787c5f226": "Il file di configurazione non esiste", + "bff9ef87fdda677f86ae6dddec54a104": "Nessuna versione PHP compatibile trovata, installa prima", + "4bbfcde12aa36ec375a332f51bf905d6": "Al giorno", + "60956b50bb8e8c711d3adb889a70137f": "Al giorno, eseguire a {} ora {} min", + "78748f15bb65939b6d130c3a5cf8b7dc": "Ogni {} giorni", + "cf9af10dcebe2f12092ff6028a535f08": "Ogni {} giorni, eseguire a {} ora {} min", + "e114abed903b9d26c476d4f6cd59c04b": "All'ora", + "0aef48ea8132b0551fa25a10fd0a6585": "All'ora, correre a {} min", + "50419faf9662e0c3f283d496bcb8eb72": "Ogni {} ore", + "2a0706d7e3ca3ce9e955471a0648dfcc": "Ogni {} ore, eseguire a {} min", + "84d94bf0382f611906b7edd65d6af169": "Ogni {} minuti", + "14d27796d1c96457c7c019661a2f32d4": "Esegui ogni {} minuti", + "6c25e6a6da95b3d583c6ec4c3f82ed4d": "Settimanale", + "e1df614d393ab86fd63c5062f7e77936": "Ogni {}, eseguire a {} ora {} min", + "9030e39f00132d583da4122532e509e9": "Mensile", + "69c5e99b9ad8d2b8f11be9a60cbf71da": "Mensile, esegui su {} day {} ora {} min", + "9d1a0949c39e66a0cd65240bc0ac9177": "Domenica", + "6f8522e0610541f1ef215a22ffa66ff6": "Lunedi", + "5792315f09a5d54fb7e3d066672b507f": "Martedì", + "796c163589f295373e171842f37265d5": "Mercoledì", + "78ae6f0cd191d25147e252dc54768238": "Giovedì", + "c33b138a163847cdb6caeeb7c9a126b4": "Venerdì", + "8b7051187b9191cdcdae6ed5a10e5adc": "Sabato", + "e00d5128f631253b7b6ed8d5454c0c81": "Impossibile scrivere su file, controlla se [indurimento del sistema] è abilitato!", + "685689743579a8f09fcec5d7df04e39e": "Il nome dell'attività non può essere vuoto!", + "a5c04aced897c770105858268324b53f": "L'attività corrente è disabilita lo stato, si prega di aprire l'attività prima di modificare!", + "85305ee6be0f078791c7437ec54dda12": "Impossibile aggiungere", + "08a1ce771119bb393fa49478216ae809": "Il registro è vuoto", + "b8fd4dbe5c3650beaec0a3d44d7f0245": "I registri svuotati", + "ff47c70e853d0b3635935be883b018e9": "Impossibile svuotare i registri delle attività!", + "e0c4da1afd18acbb66bc5fac261a42ef": "L'attività specificata non esiste!", + "38fa2d4f8f9a13062c0c9007d97f6a84": "Impossibile leggere il file!", + "f57d5686d9dd67f0e81924de8d13af95": "L'attività è stata eseguita!", + "da07d14105efb3ba634c1d35618447ab": "Il parametro non è corretto!", + "ea2b2676c28c0db26d39331a336c6b92": "inizio", + "ef399b2d446bb37b7c32ad2cc1b6045b": "fermare", + "0b12c9f33fde8b15970c7390c54d7ca5": "Impossibile chiudere il registro", + "b55eed05ce4922d8a6c881f0f2b05bbf": "Impostato con successo", "5afb8de2bbb11b44592503000290c173": "Il plug -in specificato non esiste!", "8b266978ab5161642a2d95d3f03f3945": "Si prega di disinstallare [{}] prima", "ad626ac6de7ea412c9156f73b7666cd4": "Dipende dal seguente software, installa prima [{}]", - "acf7b210e1f5fbdb2e24af573f0e1831": "Almeno [{0}] CPU Core sono necessari per l'installazione", - "d0c8fa89a1eccf8a377d11eea540fd0c": "Almeno [{0} mb] memoria minima richiesta", + "acf7b210e1f5fbdb2e24af573f0e1831": "Almeno [{0}] core CPU sono necessari per l'installazione", + "d0c8fa89a1eccf8a377d11eea540fd0c": "Almeno [{0} mb] è necessaria la memoria", "52e44340370925b110c7fba475b805e3": "Supporta solo il sistema [{}]", "e3b16d9e5a24c8d27578d7670e840200": "Dipende dal seguente software, installa prima [{}]", "a0405fa5f045a30ba3aeff1c65ad8c38": "Processo di installazione cancellato!", @@ -439,6 +336,7 @@ "349838fb1d851d3e2014b9fe39203275": "Installare", "a9ba3c226edabcfe1978d6f4c5daf404": "Nginx 1.8.1 è troppo vecchio, non più disponibile, scegli un'altra versione!", "75d7d596e2cc30d482111fae7b4f6d88": "Attività di installazione aggiunta alla coda", + "ee83f5efe8a95f2e8529da7d4bb01d2b": "Ininstallaton è riuscito", "4432eb207b29c9ead490158b76397532": "L'elenco dei database non è vuoto.Per la sicurezza dei dati, si prega di eseguire il backup ed elimina il database esistente.
Comando di disinstallazione forzata: RM -rf/www/server/mysql", "ba922eb50c83147a9bc0e9f40877d986": "La disinstallazione è riuscita", "b860df98df6ab84521a4cef036973028": "Gamma di punteggio [1-5]", @@ -475,71 +373,171 @@ "473bc9055d76e148db4d28e7bec67295": "Il nome della regola deve essere maggiore di 3 byte", "5b097df78b1d8c65d8b524354029f114": "Il suffisso del file non può essere vuoto", "496e2dfba11ca4381ef6277e6e9a62dc": "La directory non può essere vuota", - "fa57fd4dd2f47d6e5e076c347fbee513": "Site_add_err_domain_tow", - "4eb35aa4b95736df133dd3ad772f1ec9": "La directory critica di sistema non può essere utilizzata come directory del sito", - "ec3e16ff1cd800e523f731b41df3f426": "Ssl_btuser_un", - "3dfca5981995cf406aed48842d0e44ba": "LAONOUND!", - "195db7b1dd43ab76173d8f6497a878d6": "Ssl_get_success", - "04eb7ae7b137df9d43f7588dac35db5d": "Ssl_not_btuser", - "ca9cb3b791215702c4330798c401a014": "Ho ottenuto con successo!", - "37779be9505d214d4c1b4b4e0e787a6a": "Per favore, lega il tuo account!", - "68e5b651b8a03d3426ebe579b6277ad3": "Nella verifica, si prega di contattare Aapanel se l'audit non riesce ancora dopo 24 ore", - "e258cf596248ca4aa2e4e2f13330bddd": "Parametro mancante: Orgname", - "16d3f2401cbbe53b161e39ecdf231835": "Parametro mancante: Orgphone", - "a3f1cf2cf7b9ad3a2647dcc4ea53b6bf": "Parametro mancante: OrgpostalCode", - "f55e8a77d3d5e546dd17c9d390d0f6ff": "Parametro mancante: Orgredion", - "7352f05f848f83458514f0831219268a": "Parametro mancante: Orgcity", - "c8ebbfbfcd3f26ac1002b94108792064": "Parametro mancante: orgaddress", - "27080d6b8da669b86c02360fb57b8887": "Parametro mancante: Orgdivision", - "5ba45db78c10af9d2c688a5ccd3cd81f": "Impossibile scrivere file di convalida: {}", - "a5400f9a88a3f15a80b0ff75fdc5864e": "Impossibile ottenere il file di convalida!", - "629a33ef099a4963a8e6e249f30c72e9": "Non è riuscito a ottenere, riprova più tardi!", - "580669bcb4613a94bea927ddf53f50f7": "[Force HTTPS] è abilitato sul sito Web corrente, disattiva questa funzione prima di richiedere un certificato SSL!", - "561835523e11275c474be160c1ad22b6": "Errore di verifica!", - "0c929407264ab24358bed16e6c6f393b": "Impossibile impostare", - "633f426cb9cb6957cf0166705091dfe3": "Errore del tipo di parametro", - "a27662985dec244948a7fd891fa209cf": "Il certificato non esiste!", - "3a68c964dedbb33eb3091b4945423351": "Certificato eliminato!", - "ad1bd4960cc19a6639b0d31892e3ea3a": "Impossibile eliminare!", - "e5c00995fa7d7901a1087b9605be1a30": "Analisi del certificato non riuscita", - "db1d81b9d44158c60f1341a0cb9a532d": "Certificato salvato con successo!", - "2e3554148da9aa3efb7c11bb41680a5e": "Impossibile salvare il certificato!", - "d382dcb0d81e4b4588f9f40e39586d81": "Al momento non ci sono certificati da rinnovare!", - "70feb1290a735feedc5d1e01b3f19d09": "Non esiste un certificato che può essere rinnovato sul sito Web corrente.", - "385fdc82de8819f151a0c8a6fba725ec": "Il parametro pdata non può essere vuoto!", - "05e5c702b39bcadfddcb3b98b9723c67": "Impossibile connettersi al server!
{}", - "6e264f3408e9b769d3fb7e2c807f301f": "L'operazione non è riuscita.Si prega di controllare che la chiave sia corretta", - "d4ac5985eccd334896e3cf23706e43b0": "Aggiunto con successo", - "92188d43af4373bacbf00951da16532a": "Impossibile ottenere il percorso del sito web.Si prega di controllare se esiste il sito web", - "ceaefd9a46d78491b9fdb912b5c71eeb": "Impossibile creare il file di convalida.Controlla se la scrittura è stata bloccata", - "1bb3608b1bc684c3dc85090db249346b": "Non sono state ottenute informazioni sul certificato", - "e06d1ba70f1331e9f9a113cc2f887d3f": "Non autorizzato", - "6c89f438bb1463ecd92f1832d0aaa277": "Codice QR scaduto", - "a11371c8ae1f6978f0dd88d0bddaa1be": "Scansionare QRCore correttamente", - "ab9f853a311a37b0fdc50cdfb4e7ac05": "Login non riuscito 2", - "735ff2bcf3bc80998a077ba01d50ab8c": "Accesso non riuscito 1", - "5b0308d8fa9b2acb17601e300f789005": "L'API non è attivata", - "55c294cfb3e6b69997d8b5cf04369914": "Telefono non legato", - "13b08ce52b782ebdc94a64637cd3c992": "In attesa di accesso al codice di scansione app 1", - "21d947c00f0d5b4ca710f7db100b8af3": "In attesa di accesso al codice di scansione app 2", - "9d7820cd626f61af19de756761a2280f": "In attesa di accesso al codice di scansione app", - "ed8abe55f77bc3512706869b791aa8f0": "Il codice QR corrente non è valido 222", - "727f11bf8b090ccbf27efcfb530e262f": "Accedi di successo!", - "da07d14105efb3ba634c1d35618447ab": "Il parametro non è corretto!", - "ea2b2676c28c0db26d39331a336c6b92": "inizio", - "ef399b2d446bb37b7c32ad2cc1b6045b": "fermare", - "0b12c9f33fde8b15970c7390c54d7ca5": "Impossibile chiudere il registro", - "b55eed05ce4922d8a6c881f0f2b05bbf": "Impostato con successo", - "140bda69874872f8402052c613c0b3b9": "Email di test di avviso Aapanel", - "76a1ec4a3fcdc304394ff14dc90f8072": "Il numero di thread di pannelli dovrebbe essere compreso tra 1-1024", - "dd7e82b5fb3c67e3e41d96f22ba838fd": "Nuova porta del pannello", - "248336101b461380a4b2391a7625493d": "Salvato", - "40624aabb99173387dd6d575759b12db": "Manca il parametro CERTPEM!", - "37db9679113eef382992a1478f1b79ff": "Manca il parametro PrivateKey!", - "7063e5fbf2ea8d0809fe307b6df00467": "Certificato salvato!", - "d2174fc17fcd785706114088b84dbbce": "È stato generato l'URL di accesso temporaneo", - "b5101eb6e685091719013d1a75756a53": "\\ 1", - "0bfe47819da04212a33dac83b71430e8": "\\ 2", + "84278582ca50b97777b2c8ce780f9715": "Per supporto | Suggerimenti, visitare il forum Aapanel", + "aa00d1012298d40c84daf11e09956c65": "Download:", + "3c8ad9e6e9c39de49294aa2db8630f25": "Nginx non è installato", + "8bdafc47214a88c8cc4bc6326771040a": "Acquisizione dei dati non riuscita!", + "d84c752e17017ec4b4987497ce15dfd0": "Acquisizione dello stato di carico PHP non riuscita!", + "cf6e5eb2bfedf2e0529a552c1017c21e": "Scrivi il file non riuscito!", + "842bbd281516b01e70be499dbe67d3aa": "Impostare correttamente", + "ff7ca5d4ef00526f701d3ae0b3833940": "Impossibile ottenere l'elenco, controlla se l'impostazione [AK/SK/Storage] è corretta!", + "517fa3f50147b216828f9aca9fd08927": "server dimostrativo , Questa azione è vietata!", + "e39bf0b6a74eb0459abefe075607833f": "Errore, Impossibile porre fine ai processi dell'attività!", + "c40f1a202bfa106ac04f83a4740b3bd1": "Impossibile connettersi al server!", + "ca3eb6afad663b2881fababde6d59d63": "Per favore lega prima il tuo account!", + "df1f69a87b498b8b12c90be5a3b885db": "Download di file non riuscito, riprova o aggiorna manualmente!", + "e448bd5c1c654d1ef33cf40620808693": "La versione PHP richiesta non esiste!", + "7c769ceaad458456d4c3bc8276015a8d": "Autorizzazione negata!", + "178d2e6a3f4abd4552188dcf36df7687": "I registri dei pannelli svuotati!", + "99a0d283490c238c6faf2d0387dbcda7": "L'attuale server Web è openLitedSpeed.Questa funzione non è ancora supportata.", + "20b4593b7de7ef359c1a0269f83e896b": "La gamma di porte non è corretta!", + "0e656ce1afc98099f2e01e8f71362f92": "Immettere il numero di porta corretto", + "88897967b12e6907309204ad6d0647af": "Si prega di non usare la solita porta come porta PhpMyAdmin!", + "e4859a777f8d4f300baf8fff0284fe81": "Non ho trovato il file di configurazione SSL Apache PhpMyAdmin, prova a chiudere le impostazioni della porta SSL prima di aprire", + "6bd4e79acd767010d96091baf9daba77": "Non ha rilevato la porta che Nginx PhpMyAdmin ascolta, conferma se il file è stato modificato manualmente.", + "7478cfa7a09bbe61467b07dea2e9721d": "Non ha rilevato la porta che Apache PhpMyAdmin ascolta, conferma se il file è stato modificato manualmente.", + "a7dad48fefe8778dd10744a8a4dbae8e": "Nuova porta SSL PhpMyadmin", + "a168cddbe84613b0a468887d44e7eaf5": "Il certificato del panel non esiste.Si prega di richiedere il certificato del panel e riprovare.", + "c0c23cdf9e9329e576cfbddcc85666a3": "Apri correttamente, rilascia manualmente la porta SSL PhpMyAdmin", + "b7f3560235e37cebdbde7db33c3df64c": "Operazione non riuscita", + "7f91451dfcb0045a4684fa68b35d0365": "Nuova porta Phpmyadmin", + "bb1ca97ec761fc37101737ba0aa2e7c5": "ERRORE", + "14c525aba20f0a52255a799f51ced885": "L'elenco di avvertimento non esiste!", + "586a19c1eeaf6fe9d57f1d894fc487fc": "Il file di registro non esiste!", + "190045c03f9a72a1900c60d63e1e2b8b": "La rilegatura dell'account è scaduta, si prega di rinnovare la pagina [Impostazioni]!", + "907fddd6007347a0daffc4a64156f0de": "Ignora il successo, questa versione non verrà più ricordata di aggiornare.", + "131c05252110792212e3e3666a351154": "Configurazione relativa a SSL, non eliminare o modificare la riga successiva delle regole 404 commentate", + "4ba7e24ac1607ab761c124ca7352ad08": "Configurazione della pagina di errore, consentita di essere commentata, eliminata o modificata", + "31bb30ca4135945adbe0c2daa9545b39": "Configurazione di riferimento PHP, consentita di essere commentata, eliminata o modificata", + "f9da3e5ae75ce0ae39884ae2ea295a66": "RIFERIMENTO DI REGOLA DI REWITA URL, qualsiasi modifica invaliderà le regole di riscrittura impostate dal panel", + "73e1f7d487ad73d55414fe26ea11cbf0": "Non specificare il parametro [Sitepath]", + "6aabca3a3e1c79bd5837a1ddae95fe70": "C'è stato un errore creando, riprova.", + "256c9a85375f57f2dc9f6f318c6578f1": "Crea il sito Web [{}] correttamente", + "481df7dbcd4c0317088bde8c913d5893": "Si prega di compilare il percorso del sito Web", + "b1b2484c013c646d7f41d6b2f495b6ef": "Il percorso del sito Web non può essere la directory di root [/]", + "1c3bff99564f1370a5b1bf6c0773f8c4": "Si prega di verificare se il formato [e -mail] è corretto", + "af9091566e669f016edf16ba97464cbe": "Password molto debole, se sei sicuro di usarlo, segui [Consenti password deboli]", + "b0dbad478d4f07c38aec8f440ed98b66": "Per favore installa MySQL e PHP prima!", + "46491fef7553177ef58a55b2db917072": "Si prega di non impostare la directory radice del sito Web nella directory principale del sistema:
{}", + "59d5fef323e89ded50ed6036848a97f3": "Il formato del parametro WebName non è corretto, dovrebbe essere una stringa JSON di lavoro", + "078a3d3e263be2851ddfd9fa059d098f": "La gamma di porte non è corretta!dovrebbe essere tra 100-65535", + "50370024fdd22dc69099a46d011b20e2": "La versione PHP non può essere vuota", + "44bd68c6703adf65ff21c63e9a876aa1": "Il formato del dominio primario non è corretto", + "23eded6de9c06451f67ecb7ed3a8c95b": "Il dominio primario non può essere un record di DNS jolly", + "f54249d2613e48be05837ec9cd615a5f": "Il sito che hai provato ad aggiungere esiste già!", + "b537e2d1946d559d3de4fb3c045d290f": "Il dominio che hai provato ad aggiungere esiste già!", + "f91c641aef33cf8ef4a29bc5d3a7193a": "Impossibile aggiungere, scrivi l'errore configuraton!", + "c3c7869d22051eaa78a831834a398351": "C'è stato un errore di eliminazione, riprova.", + "e2d272e229674e4c6765fab24a323604": "Elimina il sito Web [{}] correttamente", + "aa5f20e061736fe68a915163e7e6d122": "Il sito specificato non esiste", + "f11e72daff0ce484f4c401bd0bd28ae5": "Sito eliminato con successo!", + "c57d58c6bbd34144325871d75b42a577": "Immettere il nome di dominio host", + "5c7b7c2f6ed78eefdd77aaa3dddde61a": "Il dominio non può essere vuoto!", + "ef446d50df1605a582f9b44b57327536": "Il formato del nome di dominio non è corretto!", + "68ae44808f90043dee02358ee768bf6e": "Il formato del dominio non è valido!", + "1628c2a26ab6d1211b435f85782f8acc": "Il nome di dominio specificato è stato vincolato dal sito Web [{}]", + "925dc658ddf0f69509632848bcd39577": "Il nome di dominio specificato è stato vincolato da una sottodirectory del sito Web [{}]!", + "7b02cf82181f516626a36b86c6a686f5": "Sito aggiunto con successo!", + "9b3c4205f2f408790c9c1c5da53c3bfb": "Impossibile ottenere la versione PHP!", + "abc3db87d5608cc9559556468a696a35": "Si prega di scegliere un nome di dominio", + "7807e17f2bf49fb802bba1a04822ea16": "Scegli una porta", + "e5925c3a126a66c0565df6d8ef49550e": "L'ultimo dominio non può essere eliminato!", + "17088ffed1e537b917a6ecc9dc957159": "Errore chiave privato, controlla!", + "26924bd958e212f07c31b6ffca9cbf8c": "Errore del certificato, controlla!", + "44e2c1c3cfd8d248d7c9190a8f07c0ee": "Errore per ottenere il certificato", + "fc0d039d9dcf3905ae8032c9cb33f475": "Errore:
{}", + "ddc2be35a5ed0bf09a88139c4ad10b4a": "Come il percorso originale, non c'è bisogno di cambiare!", + "ad74aa2854e988c3157f92e0120bb19e": "Apache2.2 non supporta MultiPHP !, {}", + "4018ce634a10d352867f04962f107c14": "C'è stata un'impostazione di errore, riprova.", + "f1bef4fd5183ae83a5896c32a3d5e81d": "La configurazione PHP personalizzata supporta solo NGINX", + "879e0d022ff268704f93a7e2b504c224": "La configurazione della connessione PHP non può essere vuota quando si personalizza la versione!", + "73d6e709b568b43405052cec999798c5": "Il formato di configurazione della connessione PHP non è corretto, consultare l'esempio!", + "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "Il socket unix specificato [{}] non esiste!", + "751ac8fd72a0acd79772370efcae9c89": "Impossibile connettersi a [{}], controlla se la macchina può connettersi al server di destinazione", + "3cb7d414f8ae92b2b29057f91346f7dc": "Impostazione non riuscita, non sono stati trovati elementi di configurazione correlati abilita-php-xx nel file di configurazione del sito Web!", + "c7a6a892c6cdfc9b0fedefb0a1d2083a": "La directory richiesta non esiste", + "4622561ceaaecb6ef7dd51e65c9f4ec5": "La directory di base spenta!", + "e4ec1f40794bdf92e7261e6e0c51895a": "Directory di base attivato!", + "eeddf79f68ffe029ed83fddcba46b35f": "Vecchio proxy", + "1592678472ea1b601fd74abff47c56b1": "Non è possibile ottenere URL target", + "18edd294853d381dbe0d612ab58bc123": "Un errore è stato rilevato nel file di configurazione.Si prega di risolverlo prima di procedere", + "8b5899be4df3aedb03c6fbad9055ed1c": "Il nome del database non può essere più di 40 caratteri!", + "111376d92c49c1a6c1522a2ef1dac23c": "Il nome proxy inverso specificato o la cartella proxy esistono già", + "09a988aa2e3185fce9fa8f4e8710b862": "Impossibile impostare sia la directory che i proxy globali", + "012a8e497feddccb8e4a47aa5e2dc156": "Inserisci il numero", + "90da7d2de9aa12ec32ee04172ca0d2d3": "Errore in formato di dominio inviato:", + "440544138d3ed8a2229792c88bad3bd8": "Non è possibile accedere all'URL target", + "faf2457853593b3296699c4adacc7825": "Inserisci il contenuto da sostituire", + "748e5ad33460a17cf26c8024bb0a1620": "Il contenuto da sostituire non può essere lo stesso del contenuto da sostituire", + "195d5db9e1559f06348715bc3a822036": "Un proxy inverso globale esiste già nel file di configurazione/vHost di riscrittura/nginx", + "cc38d47ec9ac62ffc67a5db9c08d5d52": "L'URL di destinazione non può essere vuoto", + "fb79afbbe0688565b7894b644dfd798d": "L'URL target non può essere [http: // o https: //], per favore compila l'URL completo, come: https://aapanel.com", + "29c9da826ae868c8c6444328f48bcf40": "I proxy inversi non sono attualmente disponibili per i siti WordPress che utilizzano la distribuzione con un clic", + "a59dfc3ae22fd96d46011503a4f40744": "Proxy sospeso", + "078bb5f960587121c7cd606ddba5ad58": "Si prega di abilitare il proxy inverso prima di modificare!", + "fe7185cec796e18d58f8e84dc4da946f": "Attualmente supporta solo nginx", + "222a267cc5778206b253be35ee3ddab5": "Attuale", + "38441d4a89765279852ca2830aa89c83": "La nuova regola di riscrittura dell'URL è stata salvata!", + "b9c1dcb37c44dca19765636de065b1c1": "Il backup è riuscito!", + "c27a45bf16475a157ca1014cf886bb56": "Inserisci una nota", + "9a962a24e9b7b07800d6b7c7efd86f30": "Il nome utente o la password non possono essere inferiori a 3 cifre!", + "7eb904262649f9b2e4ba52e2bba9db71": "Il formato della password è sbagliato, non utilizzare simboli speciali per le prime due cifre!", + "492c7f01035f1cf9b88756f897f02b87": "Errore, il dominio primario non può essere un indirizzo IP!", + "0a2b8c4a98495f6af19be9c1c342844e": "Sono riusciti, per favore testa il programma JSP!", + "49281f9c7680652b1d110625da5c8cca": "Tomcat Mapping chiuso!", + "ec3b07b78fd4f3307c84858957ddbd0f": "Ottieni il percorso di esecuzione del sito falso", + "02e602e968050352febfc4ddcae332f0": "OpenLiteSpeed ​​non supporta l'impostazione del sito predefinito", + "362538d60f495840284c667e67831b16": "Directory di scansione", + "4f137439eb93e6c752873c8af2d3d1cb": "L'attività di scansione ha in coda!", + "613a6375944c3035efe735e87766fbbd": "L'aggiornamento è riuscito!", + "6177805463a6a4f28e61bb3435bee13b": "Impostato correttamente, il sito si fermerà automaticamente quando scade!", + "1a69486f70b6baf749e6e1c4d5fcf689": "Il suffisso dell'URL non può essere vuoto!", + "2f858201b6da6a5419c5af8fd26f815c": "Il nome del dominio a catena antifurto non può essere vuoto!", + "f36c15e89d61e07fb44095ae920b8fbc": "Per favore accendi prima il collegamento hotlink!", + "70dc560b6f4af6d210c9eeb8434c571c": "Le risorse di risposta dovrebbero utilizzare il percorso URI o il codice di stato HTTP, come: /test.png o 404", + "aa8722f512ecebf5dae454e526402508": "Per favore accendi prima antifurto!", + "bd0d7585c64988d80747a32fb0e3e15e": "Il registro è vuoto", + "a17f5bc22553d897f6363867c0165256": "Categoria predefinita", + "0d0d87a34e787b2f4a59d912d4d441e4": "Il nome della categoria non può essere vuoto", + "6818a5095a78431eb3c99fe022b687b0": "Il nome della categoria non può superare 16 lettere", + "c4f16bb3d87b92062f73954c86485f64": "Aggiungi fino a 10 categorie!", + "5fd53f59be2a3dee94df28886840b9a3": "Il nome della categoria specificato esiste già!", + "1c44b4096bb88e459ddadef895bea1c2": "La categoria specificata non esiste!", + "8f52253b1f007fd14ed0f60b89593d2d": "Categoria Eliminata!", + "b51515085fc6ea6a07192c61e068c124": "Modificato correttamente", + "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "Questa funzione supporta solo nginx/apache", + "6678fd91bc04eb1e34e3474809387e7a": "Query non è riuscita, non esiste un indirizzo", + "7ac0a27b48f2931c7f294b996fe6b273": "File di configurazione dell'analisi dell'errore", + "ee3a15a26aee235ac255e37342b444bb": "Configurazione correttamente", + "79799f8c2f024685df774550ea5b427d": "Il sito Web [proxy, reindirizzamento, http a https] non è impostato per riavviare automaticamente", + "29faf053a22c387532298233399e66f9": "Errore di analisi del file di configurazione", + "6c881e76c76b1f102bcb97a8b4f682f6": "Questo sito Web ha attivato [proxy, reindirizzamento, http a https] riavvio automatico", + "13fc1b8a101214be1a472db8de1bd8fd": "Il sito Web ha disattivato il riavvio automatico", + "1fb58c8e2967a648359d13aa22d9e493": "Il sito non esiste!", + "b0cd0c2bc5c6ce9f71127d60872209ce": "Sito Web [{}] rinominato: [{}]", "946fb31f804cdde218dbf05d7183e94e": "Md5 coerente!", "d83dadd8fcee6c014db8af454bc279fc": "Scarica correttamente", "1336bbfcadd9119f86ecd48c2d9fb770": "La connessione del database è anormale.Si prega di verificare se l'autorità utente root o i parametri di configurazione del database sono corretti.", @@ -565,9 +563,58 @@ "c0ff8a4b4b8f68c4ba7df88588291590": "La configurazione FastCGI esiste già nella configurazione del sito Web", "e3a6621c5ea036c8f82d3f2d343f1bc8": "Sito Web Errore di configurazione FastCGI!", "4c87778ab71a4e47170ccafd6edb4922": "Sito Web FastCGI Configurazione completa", + "e3fa50f6413dbb7bfe7cb26e1acd3d98": "Si prega di accedere prima con l'account", + "121303c67f81a8ebda41de51c8afaf27": "Accedi prima al tuo account Aapanel sul pannello!", + "d5670370d84473122d8e4d5a3b27b4bf": "Errore del parametro: num", + "6b1c16b7a785029c0a11de3ab31cb125": "Flush Status Success", + "e06c1ddc33f674068e3ca201094145d1": "Attivare con successo", + "819b23804f66eddddfba39e7bdc53e68": "Attivare fallimento", + "4f57c5dce8b638737a368af15409439f": "Attivare fallimento", + "fe94df1697f309269e00428cae6bd141": "Rinnovare fallito", + "b2ac1158b825f44cb363648fa3ad60cb": "Rinnovare con successo", + "78d29c0fadebf704e471a63afd430250": "Applicare non riuscita", + "3649e869737aa87f263194ce7f88f19e": "Applicare con successo", + "34c4dc380e690d2ff6ebb6aaed103401": "Errore parametro Product_ID!", + "28731318aa493586f88894355a79cb48": "Impossibile connettersi al server!", + "0161305479129bbe47bb020605a15d40": "Configurazione di successo!", + "5c9b599b99f7a169b9cd25f7045eaac5": "Successo di sincronizzazione!", + "b6601359f1ae1067d4c4d271b7407639": "Sincronizzazione riuscita 1!", + "10a1984f6c5b935c5d8c7d4b4345e1e5": "Sincronizzazione riuscita!", + "86da84e8e3aacf73ee745caee5904268": "Sincronizzazione non riuscita!", + "8ed30fe61ac59c9e1cb4a75d9a48d477": "Creato con successo!", + "330e51da1228a070540f82eb8e78155c": "Imposta con successo!", + "7ac73ef676faaa8a5f8e3924b4d151e3": "Nome utente o password non può essere inferiore a 3 caratteri", + "88d8a4565feba5ad270c00e85564b96d": "OpenLitespeed non è attualmente supportato", + "c1f8cf125da0d6db1c4e0d09033c9ddd": "Immettere un account o una password", + "bd7fb7b4280616cbe5de49eb1ee8cc3a": "Inserisci la directory per essere protetto", + "8c48114518721e3966cd4553a0cee705": "Inserisci il nome", + "dd65d82f6868cfa127f86e5658674829": "La protezione della password del sito è stata impostata, si prega di annullare e quindi impostato.Directory del sito -> Accesso alla password", + "1cc6b0e84b90d0ca0b863fccc0f33b36": "La directory è stata protetta", + "b7526fc6f8b21e71ea1e290a982df4c9": "Creato con successo", + "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2 non supporta il multiphp!", + "69be778c38b9edc0ab3040c478c39370": "Errore: %s
Accesso alla password", - "1cc6b0e84b90d0ca0b863fccc0f33b36": "La directory è stata protetta", - "b7526fc6f8b21e71ea1e290a982df4c9": "Creato con successo", - "7c0f11514254eedfffc86cf0bd09b98f": "Apache2.2 non supporta il multiphp!", - "69be778c38b9edc0ab3040c478c39370": "Errore: %s
{}", - "59d5fef323e89ded50ed6036848a97f3": "Il formato del parametro WebName non è corretto, dovrebbe essere una stringa JSON di lavoro", - "078a3d3e263be2851ddfd9fa059d098f": "La gamma di porte non è corretta!dovrebbe essere tra 100-65535", - "50370024fdd22dc69099a46d011b20e2": "La versione PHP non può essere vuota", - "44bd68c6703adf65ff21c63e9a876aa1": "Il formato del dominio primario non è corretto", - "23eded6de9c06451f67ecb7ed3a8c95b": "Il dominio primario non può essere un record di DNS jolly", - "f54249d2613e48be05837ec9cd615a5f": "Il sito che hai provato ad aggiungere esiste già!", - "b537e2d1946d559d3de4fb3c045d290f": "Il dominio che hai provato ad aggiungere esiste già!", - "f91c641aef33cf8ef4a29bc5d3a7193a": "Impossibile aggiungere, scrivi l'errore configuraton!", - "c3c7869d22051eaa78a831834a398351": "C'è stato un errore di eliminazione, riprova.", - "e2d272e229674e4c6765fab24a323604": "Elimina il sito Web [{}] correttamente", - "aa5f20e061736fe68a915163e7e6d122": "Il sito specificato non esiste", - "f11e72daff0ce484f4c401bd0bd28ae5": "Sito eliminato con successo!", - "c57d58c6bbd34144325871d75b42a577": "Immettere il nome di dominio host", - "5c7b7c2f6ed78eefdd77aaa3dddde61a": "Il dominio non può essere vuoto!", - "ef446d50df1605a582f9b44b57327536": "Il formato del nome di dominio non è corretto!", - "68ae44808f90043dee02358ee768bf6e": "Il formato del dominio non è valido!", - "1628c2a26ab6d1211b435f85782f8acc": "Il nome di dominio specificato è stato vincolato dal sito Web [{}]", - "925dc658ddf0f69509632848bcd39577": "Il nome di dominio specificato è stato vincolato da una sottodirectory del sito Web [{}]!", - "7b02cf82181f516626a36b86c6a686f5": "Sito aggiunto con successo!", - "9b3c4205f2f408790c9c1c5da53c3bfb": "Impossibile ottenere la versione PHP!", - "abc3db87d5608cc9559556468a696a35": "Si prega di scegliere un nome di dominio", - "7807e17f2bf49fb802bba1a04822ea16": "Scegli una porta", - "e5925c3a126a66c0565df6d8ef49550e": "L'ultimo dominio non può essere eliminato!", - "17088ffed1e537b917a6ecc9dc957159": "Errore chiave privato, controlla!", - "26924bd958e212f07c31b6ffca9cbf8c": "Errore del certificato, controlla!", - "44e2c1c3cfd8d248d7c9190a8f07c0ee": "Errore per ottenere il certificato", - "fc0d039d9dcf3905ae8032c9cb33f475": "Errore:
{}", - "ddc2be35a5ed0bf09a88139c4ad10b4a": "Come il percorso originale, non c'è bisogno di cambiare!", - "ad74aa2854e988c3157f92e0120bb19e": "Apache2.2 non supporta MultiPHP !, {}", - "4018ce634a10d352867f04962f107c14": "C'è stata un'impostazione di errore, riprova.", - "f1bef4fd5183ae83a5896c32a3d5e81d": "La configurazione PHP personalizzata supporta solo NGINX", - "879e0d022ff268704f93a7e2b504c224": "La configurazione della connessione PHP non può essere vuota quando si personalizza la versione!", - "73d6e709b568b43405052cec999798c5": "Il formato di configurazione della connessione PHP non è corretto, consultare l'esempio!", - "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "Il socket unix specificato [{}] non esiste!", - "751ac8fd72a0acd79772370efcae9c89": "Impossibile connettersi a [{}], controlla se la macchina può connettersi al server di destinazione", - "3cb7d414f8ae92b2b29057f91346f7dc": "Impostazione non riuscita, non sono stati trovati elementi di configurazione correlati abilita-php-xx nel file di configurazione del sito Web!", - "4622561ceaaecb6ef7dd51e65c9f4ec5": "La directory di base spenta!", - "e4ec1f40794bdf92e7261e6e0c51895a": "Directory di base attivato!", - "eeddf79f68ffe029ed83fddcba46b35f": "Vecchio proxy", - "1592678472ea1b601fd74abff47c56b1": "Non è possibile ottenere URL target", - "18edd294853d381dbe0d612ab58bc123": "Un errore è stato rilevato nel file di configurazione.Si prega di risolverlo prima di procedere", - "8b5899be4df3aedb03c6fbad9055ed1c": "Il nome del database non può essere più di 40 caratteri!", - "111376d92c49c1a6c1522a2ef1dac23c": "Il nome proxy inverso specificato o la cartella proxy esistono già", - "09a988aa2e3185fce9fa8f4e8710b862": "Impossibile impostare sia la directory che i proxy globali", - "012a8e497feddccb8e4a47aa5e2dc156": "Inserisci il numero", - "90da7d2de9aa12ec32ee04172ca0d2d3": "Errore in formato di dominio inviato:", - "440544138d3ed8a2229792c88bad3bd8": "Non è possibile accedere all'URL target", - "faf2457853593b3296699c4adacc7825": "Inserisci il contenuto da sostituire", - "748e5ad33460a17cf26c8024bb0a1620": "Il contenuto da sostituire non può essere lo stesso del contenuto da sostituire", - "195d5db9e1559f06348715bc3a822036": "Un proxy inverso globale esiste già nel file di configurazione/vHost di riscrittura/nginx", - "cc38d47ec9ac62ffc67a5db9c08d5d52": "L'URL di destinazione non può essere vuoto", - "fb79afbbe0688565b7894b644dfd798d": "L'URL target non può essere [http: // o https: //], per favore compila l'URL completo, come: https://aapanel.com", - "29c9da826ae868c8c6444328f48bcf40": "I proxy inversi non sono attualmente disponibili per i siti WordPress che utilizzano la distribuzione con un clic", - "a59dfc3ae22fd96d46011503a4f40744": "Proxy sospeso", - "078bb5f960587121c7cd606ddba5ad58": "Si prega di abilitare il proxy inverso prima di modificare!", - "fe7185cec796e18d58f8e84dc4da946f": "Attualmente supporta solo nginx", - "222a267cc5778206b253be35ee3ddab5": "Attuale", - "38441d4a89765279852ca2830aa89c83": "La nuova regola di riscrittura dell'URL è stata salvata!", - "c27a45bf16475a157ca1014cf886bb56": "Inserisci una nota", - "9a962a24e9b7b07800d6b7c7efd86f30": "Il nome utente o la password non possono essere inferiori a 3 cifre!", - "7eb904262649f9b2e4ba52e2bba9db71": "Il formato della password è sbagliato, non utilizzare simboli speciali per le prime due cifre!", - "492c7f01035f1cf9b88756f897f02b87": "Errore, il dominio primario non può essere un indirizzo IP!", - "0a2b8c4a98495f6af19be9c1c342844e": "Sono riusciti, per favore testa il programma JSP!", - "49281f9c7680652b1d110625da5c8cca": "Tomcat Mapping chiuso!", - "ec3b07b78fd4f3307c84858957ddbd0f": "Ottieni il percorso di esecuzione del sito falso", - "02e602e968050352febfc4ddcae332f0": "OpenLiteSpeed ​​non supporta l'impostazione del sito predefinito", - "362538d60f495840284c667e67831b16": "Directory di scansione", - "4f137439eb93e6c752873c8af2d3d1cb": "L'attività di scansione ha in coda!", - "613a6375944c3035efe735e87766fbbd": "L'aggiornamento è riuscito!", - "6177805463a6a4f28e61bb3435bee13b": "Impostato correttamente, il sito si fermerà automaticamente quando scade!", - "1a69486f70b6baf749e6e1c4d5fcf689": "Il suffisso dell'URL non può essere vuoto!", - "2f858201b6da6a5419c5af8fd26f815c": "Il nome del dominio a catena antifurto non può essere vuoto!", - "f36c15e89d61e07fb44095ae920b8fbc": "Per favore accendi prima il collegamento hotlink!", - "70dc560b6f4af6d210c9eeb8434c571c": "Le risorse di risposta dovrebbero utilizzare il percorso URI o il codice di stato HTTP, come: /test.png o 404", - "aa8722f512ecebf5dae454e526402508": "Per favore accendi prima antifurto!", - "bd0d7585c64988d80747a32fb0e3e15e": "Il registro è vuoto", - "a17f5bc22553d897f6363867c0165256": "Categoria predefinita", - "0d0d87a34e787b2f4a59d912d4d441e4": "Il nome della categoria non può essere vuoto", - "6818a5095a78431eb3c99fe022b687b0": "Il nome della categoria non può superare 16 lettere", - "c4f16bb3d87b92062f73954c86485f64": "Aggiungi fino a 10 categorie!", - "5fd53f59be2a3dee94df28886840b9a3": "Il nome della categoria specificato esiste già!", - "1c44b4096bb88e459ddadef895bea1c2": "La categoria specificata non esiste!", - "8f52253b1f007fd14ed0f60b89593d2d": "Categoria Eliminata!", - "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "Questa funzione supporta solo nginx/apache", - "6678fd91bc04eb1e34e3474809387e7a": "Query non è riuscita, non esiste un indirizzo", - "7ac0a27b48f2931c7f294b996fe6b273": "File di configurazione dell'analisi dell'errore", - "ee3a15a26aee235ac255e37342b444bb": "Configurazione correttamente", - "79799f8c2f024685df774550ea5b427d": "Il sito Web [proxy, reindirizzamento, http a https] non è impostato per riavviare automaticamente", - "29faf053a22c387532298233399e66f9": "Errore di analisi del file di configurazione", - "6c881e76c76b1f102bcb97a8b4f682f6": "Questo sito Web ha attivato [proxy, reindirizzamento, http a https] riavvio automatico", - "13fc1b8a101214be1a472db8de1bd8fd": "Il sito Web ha disattivato il riavvio automatico", - "1fb58c8e2967a648359d13aa22d9e493": "Il sito non esiste!", - "b0cd0c2bc5c6ce9f71127d60872209ce": "Sito Web [{}] rinominato: [{}]", - "84278582ca50b97777b2c8ce780f9715": "Per supporto | Suggerimenti, visitare il forum Aapanel", - "aa00d1012298d40c84daf11e09956c65": "Download:", - "96aa6974173414b7a392afd70e5af6ad": "Impossibile trovare il file di config nginx [{}]", - "d85076ee3898ee82924d3b38cd49b7a8": "Processi di lavoro", - "d0d1c4d1d25829f47c3e497e7f3c0132": "Auto significa automatico", - "5c81587d9eb573fc7e6a4bc67b4603ba": "Connessioni del lavoratore", - "5f892c3cd4a800e96fd4a7d6b81cdef2": "Se abilitare la trasmissione compressa", - "0dd93c7dd7d0a539fb21b522a5c138cf": "File minimo da comprimere", - "6dfd8b44b3dad3eaec0587ac3bacdcd1": "Livello di compressione", - "36bacbbd75b4f381e4ae33983250de39": "File massimo da caricare", - "6b30b46e4151e28f5e815efdaccf2544": "Hash Tabella Dimensione del nome del server", - "4351aafd37b886a0537c175ea055d5aa": "Dimensione del buffer di intestazione client", - "d4a3f809e2109d7429c9fefd1ebb4996": "Ottieni la chiave {} false", - "c8ef5bb0221c3b1f8c90c6648ed0ff5b": "Ottieni valore {} false", - "3f1adbc068546184b4d2ca44fc9eb253": "Tampone del corpo client", - "811544f02f92e50584dd389bbdd761bc": "Errore dei parametri!-1", - "ae2c3655aab6402bd855f44421dc51d4": "Errore dei parametri!-2", - "e79a40d9379469f0f3d26251ecf0d334": "Il file di configurazione Nginx non esiste!", + "b7ad022c6ce9435c43c6760c8ba89b20": "Cab può", + "5d39c57e28ab85457e4949306be619e8": "La connessione del server CA è scaduta, riprova più tardi.", + "721eb0b3ea85b39c22f16d6dfc84bc32": "Il nome di dominio non appartiene a questo fornitore di servizi DNS.Assicurati che il nome di dominio sia compilato correttamente.", + "b5366a9c53b455fdf8a552c205ca9021": "La connessione del server DNS non è riuscita.Si prega di controllare se la chiave è corretta.", + "4de3dc0403846edfe5ff520837e2bbe5": "La firma non è riuscita, il set esatto del nome di dominio di domini: (.+): {} Ha superato il numero settimanale di emissioni ripetute!", + "30c0b6ae1acf6137b588473814f3330d": "La firma non è riuscita, l'IP del server corrente ha raggiunto il limite di creazione di un massimo di 10 account ogni 3 ore.", + "797e2e43e3fc3737891adc8ab4a1655c": "La verifica non è riuscita, il nome del dominio non è stato risolto o la risoluzione non ha avuto effetto.!", + "9efd01f346301888216d77d35ec156cf": "Autenticazione non è possibile accedere all'errore di risoluzione del nome di dominio o all'URL di verifica!", + "6c23a7d25119c77017d1aa04761fefe8": "Impossibile connettersi al server CA, riprovare più tardi.", + "b7a370078ae6520cde883252890195cf": "Nome del dominio non supportato {}, controlla se il nome di dominio è corretto!", + "1593706a4e3794c75129c8347021f0c5": "Il nome di dominio {} non ha trovato un record di risoluzione.Si prega di controllare se il nome di dominio è risolto.!", + "1d80008b0cc4936ab73047baf061c84e": "Se un record di risoluzione TXT valido non viene trovato nel nome di dominio {}, verificare se il record TXT è corretto correttamente.Se viene applicato da DNSAPI, riprova in 10 minuti.!", + "81dab277ae106f35a118916e25f3f026": "Trovato il record di txt sbagliato su {}: {}, controlla se la risoluzione TXT è corretta.Se viene applicato da DNSAPI, riprova in 10 minuti.!", + "b1bc7e763e87ef08d753a0676a0d5361": "Questo nome di dominio non esiste nell'ambito di questo account DNSPOD.L'aggiunta di analisi non è riuscita.!", + "43901eff07fff70732a4e1d6a732920b": "Connessione a Timed Out, CA Server non ha potuto accedere al tuo sito Web!", + "7cb06b776259c13fa73d3be5577df74c": "Il nome di dominio {} è attualmente richiesto per verificare il record CAA.Si prega di risolvere manualmente il record CAA o riprovare dopo 1 ora.", + "09c36cbe592612c2546e60652f2d6964": "Timeout di verifica, verificare se il nome di dominio è correttamente risolto.Se DNS viene risolto, la connessione tra il server e let", + "e10beec48a4a4b433b2fec2eaff64671": "Più di 5 guasti di verifica in 1 ora, l'applicazione viene temporaneamente vietata, riprova più tardi!", + "239067c8e0586af7c09738e8240438fb": "Il rinnovo non è riuscito e la directory del certificato non esiste.", + "c7664672bf11463a4cc40c61aeca77f1": "Rinnovo non riuscito, mancante Account_key.", + "3f56bc50f098e641bb3d42e2d4255cbe": "Pronto per richiedere SSL, nome di dominio {}", + "bd6995f087c0dacaecd470ca10539a2b": "L'elenco dei nomi di dominio applicati non può essere vuoto.", + "3b5e16d8f5e1b88c78e494e6601a4d01": "Avere successo, per favore risolvi manualmente il nome di dominio", + "cf6b24b05942cd0c3723d7a4c25e6138": "| Certificato di salvataggio ..", + "bbb21c1842b512148f687ea068553c85": "| -Spinging UP Configurazione del rinnovo automatico ..", + "c06d0b48f82d74d3c2854dabdba12d93": "| -La applicazione ha esito positivo e viene distribuita automaticamente sul sito Web!", + "569488d54cbcce1331896e4254f63a92": "Applicazione con successo.", + "1851141907c561e6ac67cba17e549232": "| -Inizializzare il protocollo ACME ...", + "78e67927014eab1b84eb285b6057fca6": "|-Account di registrazione ...", + "4896fdcb74c0e04522c8d3d89d08d569": "| -Teatro informazioni di verifica ...", + "1016ed461618afd2dde9a4a709a4d080": "| -Sornante le informazioni di verifica al front-end, attendere che l'utente risolva manualmente il nome di dominio e completa la verifica ...", + "81a3b1828b60659bc3d3c9711e66f0ba": "| -User presenta una richiesta di verifica ...", + "f147fc272d665cd009e1108c5fb6993d": "| -Vequesting CA per verificare il nome di dominio [{}] ...", + "4c699430325d31db3d7b43b0a0999364": "| -Get CA Verifica Risultati [{}] ...", + "2b7dd2a937ababf46efb11073787664c": "| -Tutti i nomi di dominio vengono verificati e CSR viene inviato ...", + "1de253d3eb460e60480626694092d89e": "| -Tegere il contenuto del certificato ...", + "a0c16d2f8e2aeba9dd9a3b040861ff39": "Acquisizione del certificato non riuscita, riprova più tardi.", + "89edc2a5e6ccecc2bdbdd1f9536fb90a": "| -Error: {}, è uscito dal processo di applicazione.", + "94417e0c15f634f59ce15128ef146686": "| -Error: {}, esci dal processo di applicazione.", + "03268bb5fa60cf57ac7c30f1f99dab01": "| -Secied il processo di candidatura!", + "be2d0d9f1a9d04ff22b70bd5bee9b8ef": "Si è verificato un errore durante la richiesta di un certificato utilizzando DNS", + "409bd1860bf065c68921473fc2266347": "| -Adding Resolution Record, Domain Name [{}], valore record [{}] ...", + "8b2ee088303a8001eaedb8c62e3de7e3": "| -Tempt per verificare il risultato della risoluzione, nome di dominio [{}], valore record [{}] ...", + "a11fba95c84fff590acd7dbdea4528e6": "| -Request CA per verificare il nome di dominio [{}] ...", + "676e1a4f8e4561ad55045461f3421d62": "| -Check CA Verifica Results [{}] ...", + "d60d5b998a8ef802ba7f5b5ed343e256": "| -In errore si è verificato, riprova [{}]", + "71087be1722815599ebecd0fd0f58b5e": "| -Fetching Certificate Content ...", + "6d1e7a222bfe888debd080a117490c9d": "| -Clearing Resolve History [{}]", + "77619ceb7742d8a8f87e52b02592d873": "La firma non è riuscita, non siamo stati in grado di verificare il nome del tuo dominio:

1.Controllare se il nome di dominio è associato al sito corrispondente.

2.Controllare se il nome di dominio è correttamente risolto sul server o la risoluzione non è completamente efficace.

3.Se il tuo sito ha una configurazione del proxy inverso o se si utilizza un CDN, disattiva prima.

4.Se il tuo sito ha un reindirizzamento 301, disattivalo per primo

5.Se i controlli di cui sopra confermano che non vi è alcun problema, prova a modificare il fornitore di servizi DNS.

", + "4d6822ed3bd01f379f2ab4b1e68068d7": "| -Con non ci sono certificati da rinnovare.", + "b74c00ca5fee122c49cd66ce3d91b2cf": "| -Rinnovo fallito :", + "0b1c93d38c86c8d379886293cdf8ba66": "Attività cancellata!", + "d5ef96e383d376beeec28da7acfea516": "Scarica file", + "f24f6c5f5841340f898a6baaa6478bcd": "Scarica file {}", + "9fdd777388a418cef77bce46c1b2511a": "Il formato di compressione specificato non è supportato!", + "4fa407ee74026903dc3013d0b2471eac": "La compressione è riuscita!", + "ece43dcaac9352f58c422e500266a927": "La dispressione è riuscita!", + "ac4eb62573e34c36ff426c8a6360c781": "Errore di backup!", + "438ca4ffcf6fbd44ec129e73a24f0deb": "Seleziona file sql/gz/zip!", + "0edfb4a54d6cf45209a6c7929b8b9919": "Database importato correttamente!", + "f6039d44b29456b20f8f373155ae4973": "Nome utente", + "3544848f820b9d94a3f3871a382cf138": "Nuova password", + "6b1bc4e672d58d46d23502dcd78129be": "Cancellatura delle informazioni del registro", + "0e900c57ee4635719ba671229ead12ff": "Cancellezione della cronologia delle attività", + "1dfefaa079cbde4da09e89af6b49ff33": "Cancellatura dei record di monitoraggio della rete", + "f59489317e210ec566cf6b6c9e3b20b9": "Cancamento dei record di monitoraggio della CPU", + "e0976b426e3109ee01a1182b7c04b987": "Cancellatura dei record di monitoraggio del disco", + "2c1eb277ff700f04b65306399784f875": "Cancellatura delle informazioni IP", + "4abfe31831aa15dc27ff44067b2bf0d1": "Storia del sistema di compensazione", + "0c06c1eb5ef47b883f7cbcab9be84e97": "Il pannello è confezionato con successo.Si prega di non accedere al pannello per fare altre operazioni!", + "b60091f633dedd493b16f5548e32233d": "Indirizzo di inizializzazione del pannello", + "b097eb5212f13c74d1c96b59f65c4dd6": "Attività {} eliminate correttamente!", + "e82eb2921856b4230611dc1406f60a6f": "Sistema spazzatura cancellata, totalmente cancellata [{}] file, spazio su disco liberato [{}]", + "0d793de4ae05511630a2eeea9b5528d9": "| -Cleared [{}], eliminati [{}] file, spazio su disco liberato [{}]", + "db62071d34202efa3a0aa1a743394938": "| -Spool Cleard, Eliminad [{}] File, Spazio disco liberato [{}]", + "a1d3c6c221b8ceaaef8881e09d0a2945": "| -Clearing PHP Sessione ...", + "c16f6a333c0ba871467568be496cbea0": "Sessione | -Php Cleard, Eliminad [{}] File, Spazio disco liberato [{}]", + "5d88b58a1c0ba0dee9eeb89a8bcdda36": "| -Scluderne i file temporanei e i registri del sito ...", + "e038ca57ad9c03f40bec42908af2ccff": "| -Temporary Files e Log del sito cancellati, Eliminati [{}] File, Spazio disco liberato [{}]", + "fa3d217e80478d3c03c437b7fc11432f": "| -Errore, il nome utente non può essere inferiore a 5 caratteri", + "4cffae9f32bf898c859a5937268b9727": "| -Errore, non posso usare il nome utente troppo semplice", + "fbcb6a4b1126170666b4c4102afbb43d": "| -New Nome utente: {}", + "cbe2d798534f872748b7cba6615596d8": "Edizione personalizzata con Aapanel", + "ec1d9ff2578e1f231696217b2c2d15ab": "Fallito , non può eliminare la porta corrente del pannello!", + "51708089c15820800d3dd7bd8d8cdfba": "aapanel", + "fee066b1b93fecf9545758cf9a87c3de": "Aggiornamento del plugin ...", + "c6462fea6d27e4ecfc68ae1944051f77": "Login è riuscito, caricando ...", + "c11f9218de293117d2cd58a009534167": "Tutti i plugin sono stati aggiornati correttamente a 6.0 compatibili!", + "cc478711642936a519c27b7c388fbb50": "aapanel cli", + "cfef992430ab5a7b2373138d4b86425c": "Pannello di riavvio", + "95b8b68d1c80ca75e1ab15bf5b9a8394": "Porta del pannello di modifica", + "f3013e54b467cdb2fac9a424bae963e4": "Pannello di arresto", + "15ea17031cb6a968e3b9ea2b28546c53": "Cancella cache del pannello", + "20cdfcd210da305d900d25ec4c084184": "Cancella limite di accesso", + "ab41db99c7941ef74c37bd97733f7707": "Pannello di ricarica", + "315f4fdd99e49c6a2e80a95ce82ba534": "Annullare il limite di ammissione", + "07ed88796641228c3602122cf5075fc2": "Cambia password del pannello", + "63d8f2a0e51e9243f91b0285e4e44667": "Annulla il limite di associazione del dominio", + "3913f08c2fa53f4c413cc0772f9401d1": "Modifica Nome utente del pannello", + "b773a80578cdc8f50d57393d6b0a3d67": "Annulla il limite di accesso IP", + "a6a23a4004f99fef13372de56433edbc": "Cambia forzatamente la password di root mysql", + "bc449263dd0183a82a3d0a03cd8f26dc": "Visualizza informazioni predefinite del pannello", + "975687e8a64e2c2842a34ca6d6bf8e85": "Cleanda spazzatura del sistema", + "84bc199f1a5ce205b0f5fc3e64ef3e95": "Pls INVIO Numero di comando :", + "51c6348531daaf0fb1e84fafa12b5f15": "Pls Immettere nuova password:", + "34c4edd98a45ea8a13556965a6c4f2b0": "Pls Inserisci il nuovo nome utente (> 5 caratteri):", + "219863186dddc079747a525bb7877a88": "Pls Immettere la nuova password di root mysql :", + "c172da334fdcac77f704fa4408dd2f16": "| -Errore, la password non può essere vuota", + "a79cf67c04d379c4916dc584c9d8333f": "| -Errore, la password non può essere inferiore a 8 caratteri", + "06f5000079703a33b91564159f07770a": "| -Errore, la password non può contenere caratteri speciali", + "913153f9957100bcf3029e8f3d5bc5e9": "Pls Inserisci nuova porta del pannello:", + "39ea14ec0df812219c450ba15230ad2d": "| -Errore, nessuna porta valida inserita", + "bab5cb07adebbfbd938180d6862a7ce7": "| -Errore, pls non utilizzano la porta comune come porta del pannello", + "00213d6b5423971311e5a47f83081a24": "| -Errore, la nuova porta è la stessa della porta del pannello corrente, non è necessario cambiare", + "e1e57838b2c7e1567fb96e20bfd474e0": "| -Errore, la porta specificata è già in uso", + "5093d954f09d473d091355fe292920a8": "|-Entrance Limite annullato", + "e0b1cb1725c8fb29d42fa69d679a73ea": "| -Domin Limite annullato", + "968c7b9246b5ab3d3e7659cea211a20b": "| -IP Limite di accesso annullato", + "e06d1ba70f1331e9f9a113cc2f887d3f": "Non autorizzato", + "6c89f438bb1463ecd92f1832d0aaa277": "Codice QR scaduto", + "a11371c8ae1f6978f0dd88d0bddaa1be": "Scansionare QRCore correttamente", + "ab9f853a311a37b0fdc50cdfb4e7ac05": "Login non riuscito 2", + "735ff2bcf3bc80998a077ba01d50ab8c": "Accesso non riuscito 1", + "5b0308d8fa9b2acb17601e300f789005": "L'API non è attivata", + "55c294cfb3e6b69997d8b5cf04369914": "Telefono non legato", + "13b08ce52b782ebdc94a64637cd3c992": "In attesa di accesso al codice di scansione app 1", + "21d947c00f0d5b4ca710f7db100b8af3": "In attesa di accesso al codice di scansione app 2", + "9d7820cd626f61af19de756761a2280f": "In attesa di accesso al codice di scansione app", + "ed8abe55f77bc3512706869b791aa8f0": "Il codice QR corrente non è valido 222", + "727f11bf8b090ccbf27efcfb530e262f": "Accesso eseguito con successo!", "8d4d13a3836227d377455b5dc0256d5a": "Scusate, OLS non supporta attualmente questa funzione", "6ca3d3b27428d22e047e13a552f1600e": "Aggiungi correttamente", "868903fa7bc939d9ff39df264589c0fd": "Elimina con successo", @@ -930,7 +931,7 @@ "a58667d22a7d741f6c90bc6082acf1c4": "L'esportazione del database non è riuscita!", "640a52c8f34bbd9ed9f214353440a490": "La notifica è stata inviata", "3875029ec22001de5ece63df8ea8286d": "Backup a {}, un totale di {} {} e fallimenti {}.", - "af3eb0c9d6b3f6e7e32d6b81df04a186": "Backup non riuscito {}/total {} siti", + "af3eb0c9d6b3f6e7e32d6b81df04a186": "Backup non riuscito {}/totale {} siti", "0dbafec38271230939c0fc9d41e9667c": "Impossibile inviare notifica", "2e828c10c1802fcfb4b8cabf63941c95": "Esiste già", "d24776f54a44056b81759c279541eaa1": "IP non esiste", @@ -951,6 +952,8 @@ "7a428a0050c9d556e632a5f7175b24ed": "Il suffisso non può essere vuoto;Inserisci [ *. *] per cercare tutti i file", "cdd28535892f88791917e7ed77a8245c": "La directory non può essere vuota o /", "e7582a886ed8861ac63d9b2a7d94b973": "Il contenuto da sostituire non può essere vuoto", + "90d0982f5d024da53b21f69d3f0c8cbb": "Il database non esiste!", + "b376175f0c97d2ab7c37e44ec3b3a1b9": "Non supporta mysql5.1!", "4ff3b49771b3e27d533b9f4757e8e405": "Nessun registro", "e50f043316845a08a945f69e097f1a54": "Aperto con successo", "9bac3879208bc174db83cbf159528cc6": "Nessuna autenticazione della password", @@ -1110,8 +1113,8 @@ "a0db66604e4493a5782f45097fcad859": "Questo tipo esiste già.", "ffbeb35495d2bfaaf4957cc8db9cd8e6": "Aggiungi con successo!", "e7d698b3874686530ce8eade7d46cd89": "del successo", - "5ccf1f7d5db89204eee4cfdcdb0944d4": "Cancellazione non riuscita", - "7c7d6bc523a6ba94346ef9419f4b93a6": "Cancellato con successo", + "5ccf1f7d5db89204eee4cfdcdb0944d4": "Del Fail", + "7c7d6bc523a6ba94346ef9419f4b93a6": "Del con successo", "838d94727e13707491b9d9c9510ba453": "Sincronizzazione di successo.", "33c678a30e066da93ac44a17629f3900": "DNS_TYPE UNDEFINATO", "ac612c51ba24c8559bd045e2c3706011": "Il file del modulo {} non esiste.", @@ -1189,7 +1192,7 @@ "dfda9d0c9d44e155e4125ebccfcbea99": "Sbloccato con successo", "6ed05063a343a4a8c2fb6bb191f57644": "Stato normale , saltare.", "29833bee6957ec87ae7e9f81346a0929": "Servizio non installato , saltare.", - "f99d5d784d98d4e59b100ffb596fbc9a": "一Esegui una volta al giorno , saltare.", + "f99d5d784d98d4e59b100ffb596fbc9a": "一Spingi una volta al giorno , saltare.", "2e11d603b68f16cce28a92f1fee630d4": "Edizione professionale permanente , saltare.", "887755b06aa757db733fcdb5c4b90d8e": "Soglia non raggiunta , saltare.", "944ec5555dd02ca9855e2aad5f31ecc3": "Certificato scaduto non trovato , saltare.", @@ -1214,50 +1217,6 @@ "2226683c8d89df274e2ded7e04fc4a82": "Non è possibile utilizzare la directory critica di sistema come directory di backup predefinita", "e69cc1102c087a819764e93d50ab3ef0": "Non è stato possibile trovare il sito Web specificato.", "a584585f2e3445e4d2d93865bb0c7952": "Non è stato possibile trovare il database specificato.", - "011f5bc126ef873c518707207467b8bf": "Il servizio MongoDB non è stato ancora avviato!", - "22ccd99629b3c3d5a8533884821f4189": "La password del database non può essere vuota o avere caratteri speciali!", - "c976dec7ee3b051c53f9761bd9aa73c2": "La password del database non può essere cinese, modifica il nome!", - "282a7d2dabc5b37dfe75dc697dbbacae": "Tipo di database SID necessita di tipo int!", - "e1fa0193b4a126d332026f2c608681c9": "Il nome del database non può essere vuoto!", - "5c58f12f149b01b546d97b25b95c0df3": "Il database specificato non esiste.", - "89f2b141f7790003d85cee94389a5899": "Il percorso di importazione non lo fa", - "579cd57c80fb53784de0bd606c14891e": "È possibile importare solo file compressi!", - "c3522356d75eaa63da51f2c2f6c9bd84": "Mancanza di strumenti di backup, installa prima MongoDB tramite [App Store]!", - "4143861cb7ed8d905267a8ea56ad5935": "Il formato di file non è corretto!", - "2e36f9ef630e2714cd71fe91d4e8bf15": "L'autenticazione della password è stata abilitata.La password non può essere vuota quando il database è eseguito il backup.Si prega di impostare una password e riprovare!", - "d28fa16e1236163fbc5787469193f18f": "Backup del database non è riuscito, il file non esiste", - "04aa3a99d1550de2a89aa408790e0234": "Backup non riuscito, {}.", - "2a389cf13e591eb8202af139c82a762c": "Il backup viene eseguito correttamente, il file di backup è inferiore a 1b, si prega di controllare l'integrità di backup.", - "37ef1150b54080db22f4de766c00a902": "Tipo di database SID necessita di type int !!", - "bb372e9b5c377f89809981e38570e41b": "Il servizio MongoDB non è stato ancora avviato !!", - "1a80d7a1efd89c63a3f8f33bd9b07397": "Il tipo di database SID richiede un INT!", - "e36f515323b0caa721c681b2d378a695": "Il servizio MongoDB non è abilitato!", - "c254f52cdaeb7f1a88c6bdd3e3e3c3f8": "Modifica il errore , il database [", - "d9533af3481500e4eab2d71bc0d80f50": "La password del database non può essere vuota o contenere caratteri speciali", - "5e2ab00d16dbc00c7fc25cbade8fab26": "La modifica non è riuscita perché il database specificato non esiste.", - "e3d61b8e9ff54176be78612b4de00321": "L'accesso alla password non è abilitato per il database.", - "b949f2f31ecdc2714448b254511fb797": "Il nome del database non può contenere caratteri speciali", - "42ea48e57900c1ca39c38b7740b156e5": "Il database non esiste!", - "ff14e82e3d1041c3fe4986830981065d": "La password del database è vuota. Imposta prima la password.", - "2de872b07fddc8df9c2085fa214e780b": "Mancanza di strumenti di backup, per favore prima tramite il gestore PGSQL del negozio di software!", - "200e48e96725c9ce425d7dbf388cbb8e": "La dimensione del file di backup è inferiore a 2KB.Controlla l'integrità di backup.", - "894f4e4dbeef39cd673987e501f8c2ab": "Seleziona SQL 、 GZ 、 File zip!", - "f5905bb1f1098b37b11d1e1787296924": "Mancanza di strumento di recupero, si prega di utilizzare la gestione del software per installare PGSQL!", - "ba32600a98bc2e63a7609dfd18f7a764": "La password del database non può essere vuota.", - "e7381be5e7f44708306bc9816f83481c": "Modifica il errore , il database specificato non esiste.", - "7d354324037030e692b06b94f9d024c7": "Se PGSQL non è installato o avviato, installa o avvia prima", - "a877289c330ccbad75d3674c560e89d3": "La password non deve essere inferiore a 8 cifre.", - "da3304c09f836a15a0c1ef43d28ce833": "Il file {} non esiste, controlla l'installazione è completa!", - "e6d4787574cefef9b9dd6b3ab549bf68": "La password dell'amministratore viene modificata correttamente.Procedura.", - "b67d85c71006c071b58767216be65eb2": "La connessione a PGSQL remota non riesce.Esegui le seguenti operazioni per correggere l'errore :
1 、 La porta del database è corretta e il firewall consente di accedere
2 、 Controlla se la password dell'account del database è corretta
3 、 pg_hba.confwhether per aggiungere un record di rilascio del client
4 、 postgresql.conf add hispend ad indirizzo IP corretto.", - "0fbbe53688d144223b78036507d85b47": "I database SQLServer non possono iniziare con i numeri!", - "27cfc7c44317601d8cbdc241c928d17c": "La politica di complessità della password del server SQL non corrisponde, dovrebbe essere 8-128 caratteri e contenerne 3 in maiuscolo, minuscolo, cifre, simboli speciali!", - "f06bab2dcffc83aa9e8e3be555a9e56f": "Operazione non riuscita.Il database remoto non può essere eseguito il backup.", - "20fe68f46608aefa2c884b9390aa4cd2": "L'importazione non è riuscita perché il file non è un file zip valido.", - "a52ecc2f72eafcf3453f9a50ffb7d0aa": "La password del database [", - "df4ac7366fa4fda98e94ea68f0e40d3c": "Il server SQL non è installato o avviato.Installa o avvialo prima", - "935e0f201a754f406575ec14bde54a21": "La password di Sathe non può essere vuota o avere simboli speciali", - "896543f6d67a62d4c594b28eeee3c923": "La password di SA viene modificata con successo.", "fdf95ff2f0a3298c8a83aad5255780e5": "Database [", "35936286a74058c49c309b2a7b6bcc27": "Il nome utente del database non è valido!", "e2d70330883c9001c29e0225b6c99e9c": "Il nome del database non è valido!", @@ -1286,9 +1245,53 @@ "9c367cb765f842bfe6a0465674b8d311": "L'operazione ha successo.", "7a48d7e0ce17e4a5ad1dadbfa199e464": "Ripristina il successo.", "e9bc861d80a7d42ec15bcdb7e5529cda": "Ripristinare il fallimento.", + "011f5bc126ef873c518707207467b8bf": "Il servizio MongoDB non è stato ancora avviato!", + "22ccd99629b3c3d5a8533884821f4189": "La password del database non può essere vuota o avere caratteri speciali!", + "c976dec7ee3b051c53f9761bd9aa73c2": "La password del database non può essere cinese, modifica il nome!", + "282a7d2dabc5b37dfe75dc697dbbacae": "Tipo di database SID necessita di tipo int!", + "e1fa0193b4a126d332026f2c608681c9": "Il nome del database non può essere vuoto!", + "5c58f12f149b01b546d97b25b95c0df3": "Il database specificato non esiste.", + "89f2b141f7790003d85cee94389a5899": "Il percorso di importazione non lo fa", + "579cd57c80fb53784de0bd606c14891e": "È possibile importare solo file compressi!", + "c3522356d75eaa63da51f2c2f6c9bd84": "Mancanza di strumenti di backup, installa prima MongoDB tramite [App Store]!", + "4143861cb7ed8d905267a8ea56ad5935": "Il formato di file non è corretto!", + "2e36f9ef630e2714cd71fe91d4e8bf15": "L'autenticazione della password è stata abilitata.La password non può essere vuota quando il database è eseguito il backup.Si prega di impostare una password e riprovare!", + "d28fa16e1236163fbc5787469193f18f": "Backup del database non è riuscito, il file non esiste", + "04aa3a99d1550de2a89aa408790e0234": "Backup non riuscito, {}.", + "2a389cf13e591eb8202af139c82a762c": "Il backup viene eseguito correttamente, il file di backup è inferiore a 1b, si prega di controllare l'integrità di backup.", + "37ef1150b54080db22f4de766c00a902": "Tipo di database SID necessita di type int !!", + "bb372e9b5c377f89809981e38570e41b": "Il servizio MongoDB non è stato ancora avviato !!", + "1a80d7a1efd89c63a3f8f33bd9b07397": "Il tipo di database SID richiede un INT!", + "e36f515323b0caa721c681b2d378a695": "Il servizio MongoDB non è abilitato!", + "c254f52cdaeb7f1a88c6bdd3e3e3c3f8": "Modifica il errore , il database [", + "d9533af3481500e4eab2d71bc0d80f50": "La password del database non può essere vuota o contenere caratteri speciali", + "5e2ab00d16dbc00c7fc25cbade8fab26": "La modifica non è riuscita perché il database specificato non esiste.", + "e3d61b8e9ff54176be78612b4de00321": "L'accesso alla password non è abilitato per il database.", + "b949f2f31ecdc2714448b254511fb797": "Il nome del database non può contenere caratteri speciali", + "42ea48e57900c1ca39c38b7740b156e5": "Il database non esiste!", + "ff14e82e3d1041c3fe4986830981065d": "La password del database è vuota.Imposta prima la password.", + "2de872b07fddc8df9c2085fa214e780b": "Mancanza di strumenti di backup, per favore prima tramite il gestore PGSQL del negozio di software!", + "200e48e96725c9ce425d7dbf388cbb8e": "La dimensione del file di backup è inferiore a 2KB.Controlla l'integrità di backup.", + "894f4e4dbeef39cd673987e501f8c2ab": "Seleziona SQL 、 GZ 、 File zip!", + "f5905bb1f1098b37b11d1e1787296924": "Mancanza di strumento di recupero, si prega di utilizzare la gestione del software per installare PGSQL!", + "ba32600a98bc2e63a7609dfd18f7a764": "La password del database non può essere vuota.", + "e7381be5e7f44708306bc9816f83481c": "Modifica il errore , il database specificato non esiste.", + "7d354324037030e692b06b94f9d024c7": "Se PGSQL non è installato o avviato, installa o avvia prima", + "a877289c330ccbad75d3674c560e89d3": "La password non deve essere inferiore a 8 cifre.", + "da3304c09f836a15a0c1ef43d28ce833": "Il file {} non esiste, controlla l'installazione è completa!", + "e6d4787574cefef9b9dd6b3ab549bf68": "La password dell'amministratore viene modificata correttamente.Procedura.", + "b67d85c71006c071b58767216be65eb2": "La connessione a PGSQL remota non riesce.Esegui le seguenti operazioni per correggere l'errore :
1 、 La porta del database è corretta e il firewall consente di accedere
2 、 Controlla se la password dell'account del database è corretta
3 、 pg_hba.confwhether per aggiungere un record di rilascio del client
4 、 postgresql.conf add hispend ad indirizzo IP corretto.", + "0fbbe53688d144223b78036507d85b47": "I database SQLServer non possono iniziare con i numeri!", + "27cfc7c44317601d8cbdc241c928d17c": "La politica di complessità della password del server SQL non corrisponde, dovrebbe essere 8-128 caratteri e contenerne 3 in maiuscolo, minuscolo, cifre, simboli speciali!", + "f06bab2dcffc83aa9e8e3be555a9e56f": "Operazione non riuscita.Il database remoto non può essere eseguito il backup.", + "20fe68f46608aefa2c884b9390aa4cd2": "L'importazione non è riuscita perché il file non è un file zip valido.", + "a52ecc2f72eafcf3453f9a50ffb7d0aa": "La password del database [", + "df4ac7366fa4fda98e94ea68f0e40d3c": "Il server SQL non è installato o avviato.Installa o avvialo prima", + "935e0f201a754f406575ec14bde54a21": "La password di Sathe non può essere vuota o avere simboli speciali", + "896543f6d67a62d4c594b28eeee3c923": "La password di SA viene modificata con successo.", "bb0b766f654bd8338d9dabb8c57378ff": "Creazione del database non è riuscita.Per favore controlla lo stato di esecuzione di MySQL e riprova.", "439d4d68575132c1a273fc36bbf6f72c": "Nessun sito di sito trovato con id {}", - "bff0e83714a9073c270776c37cc64791": "Errore parametro", + "bff0e83714a9073c270776c37cc64791": "Errore di parametro", "5766c6d37d04fdab31ce8622fcf6fab6": "Si prega di iniziare il firewall prima di importare regole!", "277467377ce35c4535ce0c9e36f4978f": "Nessuna regola può essere esportata", "686160d344e24c2dbcac934048f03baf": "Il file non può essere vuoto", @@ -1311,42 +1314,40 @@ "af9a54527ffd3f962a61e34911f918dc": "Il formato del nome di dominio di destinazione non è corretto", "7f9c4436cdf25844dcd0cd46b62c2916": "Per favore, passa id", "905d5834754a81bea63ea590793346bc": "indirizzo di destinazione {} Esiste già , Non aggiungere duplicati", - "315208d3066fd1615ba13b698c0af371": "Puntamento ip non può essere vuoto", + "315208d3066fd1615ba13b698c0af371": "Bersaglio ip non può essere vuoto", "5bd31a01422acec34ec752e0a46f9415": "Non puoi aggiungere il tuo IP", "ba797e05926242a5135289c98dcd9d36": "La porta sorgente non può essere vuota", "3ec1da1913c04a2c53dd6d6379f99d4c": "L'indirizzo di destinazione non può essere vuoto", "efef8b005464719937a7daa96ed5b3d8": "La regola di inoltro delle porte esiste già , Non aggiungere duplicati", - "0dbd3323f74314d1cf85c7db5ac2fd1d": "L'attuale versione del browser IE è troppo bassa per visualizzare alcune funzionalità, utilizza un altro browser.O se si utilizza un browser sviluppato da un'azienda cinese, si prega di passare alla modalità estrema!", - "47b1cbb355da8faa6415f12c96469ba1": "20 guasti di verifica consecutivi, vietati per 1 ora", - "749707db319ac2fa02785c1bdb58083b": "Errore: il file di configurazione della configurazione SSHD non esiste", - "80b695b495da54ed6a76eac8a965bc7b": "Annulla correttamente l'allarme di accesso", - "40d3b22b13a0b11ed727aa257e2228c0": "Il canale di messaggi non è installato", - "87597848076b873c1a9bb9ffea64950b": "Errore: il file di configurazione della configurazione SSHD non esiste", - "bdb119e343438b628e7ba8b20e4632ed": "Errore: la configurazione sshd non esiste", - "45de64a88b25b6527ccd3efbce76ed3b": "Parametro Errore di passaggio", - "387e90104fbc0261c1ae5db9443f0b22": "Imposta il metodo di accesso root come: {}", - "0fd775e0a957d247e199d2cd911078e8": "La password non può essere vuota", - "2279ae228c06ace23e59cc218f2536f8": "La password non può essere lunga meno di 8 bit", - "207d2e497f2ca0d97f1453671d4d824a": "Il nome utente esiste già", - "e1c5fbbb3782936fa209244fcc62ea7e": "La password deve contenere lettere e numeri o simboli", - "4c94c49ecaebd37c52172946778fc296": "Errori di configurazione", - "e7e807310035d5b348cbf55c28df2968": "Ottieni il lavoratore Ram False", - "dc2e22fb7940c00998017d342198a9e2": "Ottieni il tempo di uptime del lavoratore falso", - "f5332a2b815ca2e09f3e658e8c81a282": "Ottieni il tempo di riavvio del lavoratore falso", - "2d052af48937c6a8916f84a9a5d2a5e1": "Ottieni la data del lavoratore falso", - "6880f4164c935867cecf3a89e8ac01ce": "Ottieni il dettaglio del tempo del lavoratore falso", - "a3589163c43210f6d8f52f6a2d46823f": "Ottieni il lavoratore reqpersec false", - "6dfcfe44b282f6a36ea2e487b583c543": "Ottieni il lavoratore totalmente falso", - "d1448a41deace3e0a5cb3555cee67b97": "Ottieni il lavoratore Totalkbytes False", - "1bdd788c6927c1fd0420ca6e2316642e": "Ottieni i lavoratori affidati dei lavoratori falsi", - "f656a1e1c80cdf1eb1c63d3a0b121a65": "Ottieni Falseworker False", - "3f8ee4f649b32e181c15c39682629844": "L'utente [{}] esiste!", - "b23886f3380c4a9500a7614474ff6bf8": "La password deve essere almeno [{}] caratteri", - "f20eaf62a87c2072f7c09ec70a6b90c9": "Elimina errore", - "49b236322476b6e7baf65369b4b61565": "Del_error", - "9607dbc43fb07121ebd102497290c15b": "{} Utente FTP non riuscito!", - "8b73e5696a44d470ee99c274152c1b54": "Port [{}] è usato!", - "384169bf557e2785a74c6ab4c8ca0d9c": "Errore di modifica", + "4943a6954b9887aa5989713fcbb2a0d1": "Errore: Impossibile connettersi al server {}, verificare se l'impostazione [AK/SK/Storage] è corretta!", + "da10c98ffbf34b30edec9cf47d998a68": "Applicazione di successo!", + "24380483226504475d196fdcff7a6c77": "Impossibile connettere il server!-1", + "353d91a7655b3ef5e024d07eef1888ab": "Impossibile connettere il server!-2", + "75809e3b321efe1afbdf9773494d5dd9": "Non ho trovato il file di configurazione {}, prova a chiudere le impostazioni della porta SSL prima di aprire", + "7d7014331b485392e1d6055aad5c26cd": "Non è stato trovato il file di configurazione SSL di nginx phpmyadmin, prova a chiudere le impostazioni della porta SSL prima di aprirle", + "35e15c0be5bb51b628d96c9a520c9b01": "Port [{}] è in uso!", + "f471efd0f135fbddafdce4ad1febf5bb": "L'attuale server Web è openLitedSpeed.", + "4a32aac45fa22d0c693a646d5e265bf1": "Il certificato del panel non esiste.", + "c6b59c5c3d29862a6dc85e9375094c83": "L'attuale server Web è di accesso locale e privato.", + "056197513cf8b469874e09b037fa5aaf": "L'attuale server Web non è supportato.", + "7ec0387d04c7d7c8259b497464fa3282": "phpmyadmin già {}!", + "4790f238a5706fa03ed78c98efabd5f2": "La rilegatura è valida!", + "c6fdc537935f8c3e97a442e8be9adf20": "C'è un file con lo stesso nome della cartella caricata.Si prega di controllare e riprovare", + "055df73dfeac55aa4ddb8b31e98d3fea": "L'utente corrente non ha autorizzazioni sufficienti per accedere o modificare {}", + "3ff13f637b9e318936f8d30f77c57c64": "La directory corrente ha permessi di sola lettura", + "8c7dd0d2966be0d1427bb839c94a993a": "Caricamento non riuscito: {}", + "fc937a95d443a5accb3dc43dabf8a4c0": "Spazio su disco insufficiente", + "dc494cbbc1dad9fe8a2d219d561840d5": "Si è verificato un errore durante il caricamento del file. Eliminare il file temporaneo.【 {} 】Riprova più tardi", + "45cd3dad5e3ac153966eff8aaf30c33d": "Esiste una cartella con lo stesso nome del file caricato. Controlla e riprova.", + "eaf87474bf8e355eb84fadd0caf91f14": "L'utente corrente non ha autorizzazioni sufficienti per accedere o modificare", + "fe56b3a6f3a8b6a24f60a62408351b0e": "Questa è la directory del cestino per il riciclo, premi il pulsante [riciclo] nell'angolo in alto a destra per aprire", + "8ec1fba8a89cb67bc958d7b2424156e9": "File spostato per riciclare il cestino", + "99a091a444e6e207f60506fb4f0bdcce": "File eliminato correttamente", + "5873103908815f34241636e336e1f463": "L'attività di compressione è stata aggiunta alla coda dei messaggi!", + "e57b7bae408dd226fabe86773cd6b3c3": "Operazione batch riuscita [{}], non riuscita [{}]", + "c28802f8d7f5a40cb9f17cace202e59f": "Errore di query, {}", + "11c99562b6212de14ddf1dcb06ea1696": "Nessuna attività nella formazione {}", + "94f33212bde1cd76797fe4fe78b2167f": "Aggiorna compositore da {} a {}", "f5484a1a111b9d70ecaafb36a7df48f6": "L'e -mail non esiste", "59d26291d38cd716232dd08e1c6c5304": "Si prega di inserire la tua email", "d76fd2d8c3dffcbab0885c9bdf78fe16": "Email esiste già", @@ -1370,6 +1371,7 @@ "501b1c01d3b31cb34cbcad5a19ae851e": "Il periodo di scadenza della password non può essere più lungo di {} giorni", "db6890122bbd9e97fb8e1b117b367358": "Il tempo di scadenza della password è impostato su [{}] giorni", "486b7d3b3ca271d873ef1c9d4c0e07a7": "Password modificata!", + "8e6595abbb40f247c74fffdf61bd5a00": "Installazione fallita!Prova ad accedere di nuovo.", "6c6b6e84490b34b36f33dcc8ae85fdc2": "Le password immesse due volte sono incoerenti, riprova!", "55f5bbcf01ad984ea402d50061609240": "La password non può essere inferiore a 5 caratteri!", "59b39458556877d386a837773736eb2d": "La password deve avere una lunghezza di almeno otto caratteri e contenere almeno tre combinazioni di cifre, lettere maiuscole, lettere minuscole e caratteri speciali", @@ -1391,7 +1393,6 @@ "5ad475cca538c88655b2299588b9a091": "Il tempo di timeout deve essere compreso tra 300s-30 giorni", "7b66709539a01edb71eacc470ce7f4bc": "Il dominio non può vincolare l'indirizzo IP", "f522b971d05877c869be6f81b9eb7fe8": "Si prega di impostare l'IP del server corretto", - "35e15c0be5bb51b628d96c9a520c9b01": "Porta [{}] è in uso!", "716e57b0f48924438fc1209c06353fc7": "Impossibile utilizzare la directory critica del sistema come directory di backup predefinita", "17ceb8d2128aa1ce5f2f51ef5b19a809": "Impossibile utilizzare la directory critica del sistema come directory del sito predefinito", "e60263ac381ae4a9ad460a5c706b9b5a": "Configurazione salvata", @@ -1415,7 +1416,7 @@ "8c7a5b3c69236d00b3577be9c91a71cc": "Le informazioni richieste del pannello non esistono!", "5b8ce0c16a86626165e93796b14d4bf6": "Errore Lettura del file di configurazione PHP, prova a reinstallare questo PHP!", "0631278069374277ff3b2cc2949940fd": "Inserisci il corretto [dominio o IP]!", - "ac40ea6dbb38e754acea879d58701424": "{} Giorni", + "ac40ea6dbb38e754acea879d58701424": "{} Giorni (s)", "7a3fd8f7ddf80ae2db423aa55177d22a": "{} Giorni) {} ore)", "377e7b3a05033be3164d7900c2feb2a6": "{} Ore)", "b2a09ec7e869bb555211fe7b26b5cf3e": "{} Ora (s) {} minuto (s)", @@ -1452,65 +1453,9 @@ "25baa40bd86bb31a5095cf5457e87f74": "Il testo inviato è troppo lungo, regola e revoca (max: 512)", "1cc5a8ad869ce7dd47987b6eb278260a": "Inviato con successo", "7e4182fc0365b28328ac2ec8896f73b1": "L'impostazione non è riuscita!{}", - "4943a6954b9887aa5989713fcbb2a0d1": "Errore: Impossibile connettersi al server {}, verificare se l'impostazione [AK/SK/Storage] è corretta!", - "da10c98ffbf34b30edec9cf47d998a68": "Applicazione di successo!", - "24380483226504475d196fdcff7a6c77": "Impossibile connettere il server!-1", - "353d91a7655b3ef5e024d07eef1888ab": "Impossibile connettere il server!-2", - "75809e3b321efe1afbdf9773494d5dd9": "Non ho trovato il file di configurazione {}, prova a chiudere le impostazioni della porta SSL prima di aprire", - "f471efd0f135fbddafdce4ad1febf5bb": "L'attuale server Web è openLitedSpeed.", - "4a32aac45fa22d0c693a646d5e265bf1": "Il certificato del panel non esiste.", - "c6b59c5c3d29862a6dc85e9375094c83": "L'attuale server Web è di accesso locale e privato.", - "056197513cf8b469874e09b037fa5aaf": "L'attuale server Web non è supportato.", - "7ec0387d04c7d7c8259b497464fa3282": "phpmyadmin già {}!", - "4790f238a5706fa03ed78c98efabd5f2": "La rilegatura è valida!", - "e9a08443260e6f3b795eb57419a6ad77": "Impossibile collegarsi a Cloud Storage!", - "efc33dbd7910fde6ce3fe364a7d43bfc": "Il file di configurazione rsyslog non esiste! \\ Nplease controlla se rsyslog è installato o if /ect/rsyslog.cn esiste! \\ Nif Il sistema di debain non è installato, si prega di eseguire : apt-get installa :", - "a6fba111c7d0f418059856c4160b4d0d": "Il parametro non è corretto!", - "7e8ca7bb5dd0e69e0cd0d0e66832e2cd": "Creazione del database non è riuscita.Per favore controlla lo stato di esecuzione di MySQL e riprova.{}", - "45f9a99535dea651b8f160f6cf23f826": "Lettura del file di configurazione non riuscito!", - "5e3b84200bea6d70f6fed1d5802a7fa0": "Query non è riuscita, non esiste un indirizzo", - "5fa721871e93bc4121df74ce51454519": "Attiva il plugin non riuscito, riprova più tardi.", - "9f139adb77c26c263ff2a956d66f80fe": "Il plug -in disattivato non è riuscito, riprova più tardi.", - "f8e169b0ef8d58f84c71e375141852ed": "Impossibile creare il set", - "e35ca748f8c5a0e78731bae94fb7d68a": "Impossibile rimuovere i set", - "468baaa7179c8b181d1de35fa00267e9": "Tipo non valido di elementi set", - "a01e808b2be07634b0e3714bff919ae1": "Impossibile rimuovere gli elementi dal set", - "35c9b2817b191a3f60553d46b748068b": "Impossibile modificare gli articoli dallo stato dal set", - "73b1d7767613c6300db27ade773369fa": "Rimuovere il sito remoto WordPress non riuscito", - "492478fa7955b2282528aefe56d42ec4": "Il profilo non esiste!", - "71804f43c7fe50a625e9fd1f930365ce": "Non è riuscito a ottenere dal cloud!", - "46fb7ccd0be31ec840d524d8f99f1368": "Aggiornamento completato!", - "d631f73db41ac42021c522b61fba3274": "Non c'è bisogno di aggiornare!", - "11ce17a8cf1f195a0687c00fc4201d2f": "Successo di importazione!", - "d49c4e6f0a63eb94dfb921be5d804e8b": "Il sito non esiste!", - "0b5efcfb8a290faab14ebce65ece59e7": "Directory root pericoloso del sito web!", - "d747c3e10f8c5fd5c0aec8b422883292": "Il pacchetto specificato non esiste.!", - "22e806afb25ddcb6cf205be320eb2350": "Impossibile trovare [file di configurazione di distribuzione automatica AAPANEL] nel pacchetto di installazione", - "7658d0092e96ef38859c12f2a91f641f": "Al momento non ci sono attività di distribuzione!", - "dd1ddef2d75c7c80540db8c12270af8a": "Il parametro passato non è un oggetto interno universale", - "93916600bce5b19586cbf51d558b5d78": "Si prega di controllare se il formato [{}] è corretto per esempio: {}", - "b4e82db400aed46c6a1d61b93ff20f0f": "Failing di connessione: {}", - "aa40ceff8d69dc0bf2a3887e2d5c778c": "Failing di connessione: {} {}", - "69ee350f3262c97f7e3f35cc66443942": "Il modulo Paramiko non esiste e l'installazione fallisce!", - "d580ca3289757bd32c3e11df44ccea78": "La password o la chiave privata non possono essere vuote: {}: {}", - "df9dc7c6d010fa7d486ab5c61159450f": "Autenticazione scaduta, premi Invio per riprovare! {}", - "05d673d467b6e721ff5ee92b285e5072": "La verifica della chiave privata non riesce, la chiave privata può essere errata o il tipo di autenticazione della chiave privata SSH-DSS potrebbe non essere abilitato nel file di configurazione/ETC/SSHD_CONFIG", - "cae18886e1496f99e56fe64dae2a0947": "Autenticazione non riuscita, controlla se la chiave privata è corretta: {}", - "7e850998d3cb8c4dc8b204766721e846": "Account o password errata: {}", - "dfd29171bd018b7352abb2cf085404fd": "Nome utente o password errata: {}", - "8a857e7b7b8835de19ffb7404445b30f": "Tipo di autenticazione non supportato: {}", - "8f4a5b1853e2c68682303a3ac016e97b": "L'importazione ha avuto successo", - "bb07cf4e0082f6181204bf785e625924": "L'importazione non è riuscita", - "4e19c797e19c111b1fad1470cc2c18e3": "Non ci sono comandi esportabili", - "bd35e8b82c9450d88a62a318773a2244": "L'esportazione non è riuscita", - "e420cebff3e23fb8eedd388024ce1839": "Il formato URL target è sbagliato {}", - "dd2b16eb608e5838d556598d479e9264": "Aspetta che inizi il ripristino", - "f5fa57ce44938aa510e6cb68bd52c24b": "Nessun file di registro", - "1bb87a5feb9e217c858933afdce8f4e7": "Il file di registro è troppo grande!", - "21290da79237752afe963ecef5d89b5a": "Avvia la scansione di successo", - "8e0e316031928c8c96c94ad6d57bd03e": "La directory non è stata scansionata", - "9208374e1391bb886971bad99b2380f1": "Digita mancata corrispondenza", - "580d97d0b321127650cf1901cc3524b2": "Il record non esiste", + "94e431cde2ffda2ef08526fa2af1b0b5": "Imposta risorsa con successo!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "Impostazione risorsa non riuscita {}", + "bedfc521aa92e68b04430d33289c6b3c": "Nell'hosting multi-webserver sono supportate solo le versioni nginx 1.24 e successive!", "e6c81af465e7bdf8761e0072eb217ca6": "Non è supportato dal sistema attuale", "44164f2aee5b6836802ff8142f495629": "La scansione non è riuscita", "ee6cb8cccfef01a6931ac569767b7303": "è stato installato DB locale", @@ -1527,19 +1472,51 @@ "157aebc66e02126c7568365a18392758": "La password del database non può contenere caratteri cinesi {}", "480b606c09fb9d52b9e47995e04641de": "DB non trovato!", "f730258407ac8fda3c780e7c59a09f16": "Password modificata correttamente per database [{}]!", + "36856cc0aff5e4d792ab1919ec9e24f9": "Backup del database [{}] riuscito!", + "cd338377817d5286c26f62c0562ebe72": "Database importato con successo [{}]", "4461199265eb82e1de46055d7f4568b6": "Il backup è riuscito", "ecc5e49aaee7ba7dc9a1b1b89e008c13": "Seleziona il file SQL/GZ/ZIP", "3bb533d00c768936c2c3bf24d2c542a2": "Il file di configurazione non esiste {}", "c811067e114e07cbb188afd110ddc579": "Sync {} database dal server!", "a47891f08609cb38f4de9fd50def4650": "Ottieni il database {} dal server!", + "8aec4a4bd998059f3dbb932da4714b00": "IP non trovato!", "a62053a8ff838da8ba33aae82d8fda5b": "Errore di connessione del database!", "65a61bd2b3c632fd1d27b19db5abf197": "La password del database MySQL scade", "dfcaac01b569325ec535229328d52f6d": "Errore di query del database!", - "c77d5ef44d6a21abe99c3e370a0f5364": "Errore del parametro: coupon_id", - "1cb4143e9dbb7515e606ab6854578a00": "Errore del parametro: CYCLE_UNIT", - "2121d979fb82aae9f0a62572bf36217f": "Richiesta di interfaccia non riuscita ({})!", - "287e14ef978fb00ce99942e799c36649": "Parametro mancante Limit_time o il parametro non può essere vuoto!", - "8feb15ff2883086bba98d9d791d10bf7": "Il tempo non può essere inferiore all'ora corrente!", + "efc33dbd7910fde6ce3fe364a7d43bfc": "Il file di configurazione rsyslog non esiste! \\ Nplease controlla se rsyslog è installato o if /ect/rsyslog.cn esiste! \\ Nif Il sistema di debain non è installato, si prega di eseguire : apt-get installa :", + "a6fba111c7d0f418059856c4160b4d0d": "Il parametro non è corretto!", + "3f8ee4f649b32e181c15c39682629844": "L'utente [{}] esiste!", + "b23886f3380c4a9500a7614474ff6bf8": "La password deve essere almeno [{}] caratteri", + "f20eaf62a87c2072f7c09ec70a6b90c9": "Elimina errore", + "49b236322476b6e7baf65369b4b61565": "Del_error", + "9607dbc43fb07121ebd102497290c15b": "{} Utente FTP non riuscito!", + "8b73e5696a44d470ee99c274152c1b54": "Port [{}] è usato!", + "384169bf557e2785a74c6ab4c8ca0d9c": "Errore di modifica", + "e420cebff3e23fb8eedd388024ce1839": "Il formato URL target è sbagliato {}", + "62dc2bbb0528fe87522c74b113883a48": "Il sito specificato non esiste!", + "4675bfcf662ee236a05dcb763cf9d520": "L'impostazione della cache di Apache non è riuscita.Controlla se il sito web funziona correttamente!", + "0b9aca52d360d6f7a8f2c5c897c93005": "Le impostazioni della cache di Apache hanno avuto successo!", + "a2cd28fcd32e92be995b2335768fdea3": "La cache Apache è attualmente supportata solo nell'hosting multi-webserver", + "b288b8637582cc38c1d4c902ed03cbec": "L'installazione del plugin della cache non è riuscita", + "aebabb72ad41fbe46f73abcc9dc00b9f": "Impossibile attivare il plug-in della cache.Prova ad attivarlo manualmente e quindi ad abilitare la cache", + "3981bd44ca3f1d5abafc6b15ba8c7435": "Le impostazioni della cache OLS sono riuscite!", + "3777f748e5535e7e38261b2e0afc8274": "Configurazione della cache OLS non riuscita: {}", + "93916600bce5b19586cbf51d558b5d78": "Si prega di controllare se il formato [{}] è corretto per esempio: {}", + "8e342838d5cf3a93e34956c9550db4d0": "Distribuzione non riuscita: {}", + "0dbd3323f74314d1cf85c7db5ac2fd1d": "L'attuale versione del browser IE è troppo bassa per visualizzare alcune funzionalità, utilizza un altro browser.O se si utilizza un browser sviluppato da un'azienda cinese, si prega di passare alla modalità estrema!", + "47b1cbb355da8faa6415f12c96469ba1": "20 guasti di verifica consecutivi, vietati per 1 ora", + "dd1ddef2d75c7c80540db8c12270af8a": "Il parametro passato non è un oggetto interno universale", + "e7e807310035d5b348cbf55c28df2968": "Ottieni il lavoratore Ram False", + "dc2e22fb7940c00998017d342198a9e2": "Ottieni il tempo di uptime del lavoratore falso", + "f5332a2b815ca2e09f3e658e8c81a282": "Ottieni il tempo di riavvio del lavoratore falso", + "2d052af48937c6a8916f84a9a5d2a5e1": "Ottieni la data del lavoratore falso", + "6880f4164c935867cecf3a89e8ac01ce": "Ottieni il dettaglio del tempo del lavoratore falso", + "a3589163c43210f6d8f52f6a2d46823f": "Ottieni il lavoratore reqpersec false", + "6dfcfe44b282f6a36ea2e487b583c543": "Ottieni il lavoratore totalmente falso", + "d1448a41deace3e0a5cb3555cee67b97": "Ottieni il lavoratore Totalkbytes False", + "1bdd788c6927c1fd0420ca6e2316642e": "Ottieni i lavoratori affidati dei lavoratori falsi", + "f656a1e1c80cdf1eb1c63d3a0b121a65": "Ottieni Falseworker False", + "dd2b16eb608e5838d556598d479e9264": "Aspetta che inizi il ripristino", "9bb70ddd7b082fbaafb0b47a989b5cf5": "Impossibile ottenere il fuso orario!", "38f40438a6c7e12eca9b4ea2ad297b3e": "Impostato su Top con successo!", "257ee5f5c18f04e3a83fd18b33babf08": "Inserisci l'ID non fissato!", @@ -1612,18 +1589,145 @@ "f222f6f9531a00476e39863b53bcde07": "L'apertura non è riuscita", "52d812a7c0b57b35fac4e668122191a3": "Esecuzione dello script non è riuscito", "f804ceef9dd122e198f13357be514e41": "Backup automatico database [All]-MySQL", - "26e64121956b9e7e55244a508f146864": "Backup automatico sito [All]", + "26e64121956b9e7e55244a508f146864": "Sito di backup automatico [All]", + "a499f309ac7a223d611d7a0a85900342": "Nessun record di riavvio trovato.", + "d23fb11ea541cd5f1c0b05851d54fd58": "Contrassegnato come letto.", + "c77d5ef44d6a21abe99c3e370a0f5364": "Errore del parametro: coupon_id", + "1cb4143e9dbb7515e606ab6854578a00": "Errore del parametro: CYCLE_UNIT", + "2121d979fb82aae9f0a62572bf36217f": "Richiesta di interfaccia non riuscita ({})!", + "287e14ef978fb00ce99942e799c36649": "Parametro mancante Limit_time o il parametro non può essere vuoto!", + "8feb15ff2883086bba98d9d791d10bf7": "Il tempo non può essere inferiore all'ora corrente!", + "b4e82db400aed46c6a1d61b93ff20f0f": "Failing di connessione: {}", + "aa40ceff8d69dc0bf2a3887e2d5c778c": "Failing di connessione: {} {}", + "69ee350f3262c97f7e3f35cc66443942": "Il modulo Paramiko non esiste e l'installazione fallisce!", + "d580ca3289757bd32c3e11df44ccea78": "La password o la chiave privata non possono essere vuote: {}: {}", + "df9dc7c6d010fa7d486ab5c61159450f": "Autenticazione scaduta, premi Invio per riprovare! {}", + "05d673d467b6e721ff5ee92b285e5072": "La verifica della chiave privata non riesce, la chiave privata può essere errata o il tipo di autenticazione della chiave privata SSH-DSS potrebbe non essere abilitato nel file di configurazione/ETC/SSHD_CONFIG", + "cae18886e1496f99e56fe64dae2a0947": "Autenticazione non riuscita, controlla se la chiave privata è corretta: {}", + "7e850998d3cb8c4dc8b204766721e846": "Account o password errata: {}", + "dfd29171bd018b7352abb2cf085404fd": "Nome utente o password errata: {}", + "8a857e7b7b8835de19ffb7404445b30f": "Tipo di autenticazione non supportato: {}", + "8f4a5b1853e2c68682303a3ac016e97b": "L'importazione ha avuto successo", + "bb07cf4e0082f6181204bf785e625924": "L'importazione non è riuscita", + "4e19c797e19c111b1fad1470cc2c18e3": "Non ci sono comandi esportabili", + "bd35e8b82c9450d88a62a318773a2244": "L'esportazione non è riuscita", + "e9a08443260e6f3b795eb57419a6ad77": "Impossibile collegarsi a Cloud Storage!", + "66924214c228f7eb631ac940281c7190": "Impostazione di successo", + "d55e6e0c13df775ea0eabea4f36ff8da": "Si prega di abilitare almeno un comando e un firewall", + "322d678e45d68284d90503f36da32648": "L'operazione è stata eseguita", + "26eaf477d247c668a143b415491995dd": "Il tuo attuale indirizzo IP [{}] non è nella whitelist.", + "c26b7075352954fb3e96fbe983dbd083": "Il tuo attuale indirizzo IP [{}] è nella whitelist.", + "f9cfac18ac1fe92adcc47b139d0617a8": "Aggiunto fallito", + "bf31291dfc89be9a8af12c3fa15e7e4d": "Operazione eseguita", + "71a1c5f19c8e300d350f5f68c71e4559": "Elimina non riuscita", + "01f144a7cfd324d0dab94f8aa6e29374": "Elimina con successo", + "749707db319ac2fa02785c1bdb58083b": "Errore: il file di configurazione della configurazione SSHD non esiste", + "80b695b495da54ed6a76eac8a965bc7b": "Annulla correttamente l'allarme di accesso", + "40d3b22b13a0b11ed727aa257e2228c0": "Il canale di messaggi non è installato", + "87597848076b873c1a9bb9ffea64950b": "Errore: il file di configurazione della configurazione SSHD non esiste", + "bdb119e343438b628e7ba8b20e4632ed": "Errore: la configurazione sshd non esiste", + "45de64a88b25b6527ccd3efbce76ed3b": "Parametro Errore di passaggio", + "387e90104fbc0261c1ae5db9443f0b22": "Imposta il metodo di accesso root come: {}", + "0fd775e0a957d247e199d2cd911078e8": "La password non può essere vuota", + "2279ae228c06ace23e59cc218f2536f8": "La password non può essere lunga meno di 8 bit", + "207d2e497f2ca0d97f1453671d4d824a": "Il nome utente esiste già", + "e1c5fbbb3782936fa209244fcc62ea7e": "La password deve contenere lettere e numeri o simboli", + "4c94c49ecaebd37c52172946778fc296": "Errori di configurazione", + "492478fa7955b2282528aefe56d42ec4": "Il profilo non esiste!", + "71804f43c7fe50a625e9fd1f930365ce": "Non è riuscito a ottenere dal cloud!", + "46fb7ccd0be31ec840d524d8f99f1368": "Aggiornamento completato!", + "d631f73db41ac42021c522b61fba3274": "Non c'è bisogno di aggiornare!", + "11ce17a8cf1f195a0687c00fc4201d2f": "Successo di importazione!", + "d49c4e6f0a63eb94dfb921be5d804e8b": "Il sito non esiste!", + "0b5efcfb8a290faab14ebce65ece59e7": "Directory root pericoloso del sito web!", + "d747c3e10f8c5fd5c0aec8b422883292": "Il pacchetto specificato non esiste.!", + "22e806afb25ddcb6cf205be320eb2350": "Impossibile trovare [file di configurazione di distribuzione automatica AAPANEL] nel pacchetto di installazione", + "7658d0092e96ef38859c12f2a91f641f": "Al momento non ci sono attività di distribuzione!", + "f5fa57ce44938aa510e6cb68bd52c24b": "Nessun file di registro", + "1bb87a5feb9e217c858933afdce8f4e7": "Il file di registro è troppo grande!", + "21290da79237752afe963ecef5d89b5a": "Avvia la scansione di successo", + "8e0e316031928c8c96c94ad6d57bd03e": "La directory non è stata scansionata", + "9208374e1391bb886971bad99b2380f1": "Digita mancata corrispondenza", + "580d97d0b321127650cf1901cc3524b2": "Il record non esiste", + "152b976545ff1ee50e0de21da7af1266": "La verifica è in corso.....", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "Verifica dei parametri", + "80f9a0a476836be5fdec10fe414e88a9": "{} Il sito web è in fase di creazione....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "Crea sito web", + "8a9535f05c52e58f46e3237b9da019cc": "Aggiungi configurazioni opzionali: database, FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "Aggiungi configurazioni opzionali", + "2a5e8b7e4116ee81db89ba173f60bf90": "La verifica dei parametri non è riuscita", + "2f35a151cc0256f0d9ad5410eccbe5d0": "Verifica del parametro non riuscita: {}", + "af2a8e2174ea327f9fbf77d84029d58b": "Verifica dei parametri riuscita", + "181fc26e7b655ba36b3b075ca1ebc350": "Impossibile creare il sito Web", + "7118aff13541bf3d74a9c47fb458e102": "Impossibile creare il sito web: {}", + "be33773093fc2e135ba4bc26f4bb5509": "Il sito web è stato creato con successo", + "505a83f220c02df2f85c3810cd9ceb38": "Successo", + "8d823a9933eefd02bf1003481f816f64": "Non riuscito: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "Avvio di successo!", + "31b88b436695f7e0bc5dad1cb8999737": "Non utilizzare le porte del pannello di servizio!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "La porta è occupata o l'intervallo di porte non è corretto!Dovrebbe essere compreso tra 100 e 65535", + "7dde7f2ae7cb4ed56b1b683b479ad303": "Avviso: la versione {} non è stata ancora installata,", + "839067817c5a1e7fcce2f905284d630e": "Riscrivi la directory di origine e Riscrivi la directory di destinazione devono essere compilati contemporaneamente", + "4b6ad864ce62dac8466dde7ec62e7ea9": "La riscrittura della directory di origine e la riscrittura della directory di destinazione non possono essere la stessa cosa", + "ed6fe3e47d3686c7af83b67535b426b5": "La directory di origine della riscrittura deve iniziare con /", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "La directory di destinazione riscritta deve iniziare con /", + "fa5e4af74d3d68ba371e6dcf84595c3d": "Il sito web non esiste", + "45f9a99535dea651b8f160f6cf23f826": "Lettura del file di configurazione non riuscito!", + "5e3b84200bea6d70f6fed1d5802a7fa0": "Query non è riuscita, non esiste un indirizzo", + "5fa721871e93bc4121df74ce51454519": "Attiva il plugin non riuscito, riprova più tardi.", + "9f139adb77c26c263ff2a956d66f80fe": "Il plug -in disattivato non è riuscito, riprova più tardi.", + "f8e169b0ef8d58f84c71e375141852ed": "Impossibile creare il set", + "e35ca748f8c5a0e78731bae94fb7d68a": "Impossibile rimuovere i set", + "468baaa7179c8b181d1de35fa00267e9": "Tipo non valido di elementi set", + "a01e808b2be07634b0e3714bff919ae1": "Impossibile rimuovere gli elementi dal set", + "35c9b2817b191a3f60553d46b748068b": "Impossibile modificare gli articoli dallo stato dal set", + "87a9a388a3ef42018ceb866756c4ee39": "Connessione al database non riuscita, controlla lo stato del database!", + "73b1d7767613c6300db27ade773369fa": "Rimuovere il sito remoto WordPress non riuscito", + "a75c113f53d4342010d140325fa29eec": "E' stata abilitata la multiservizi del sito.", + "b0a517b4d596e5fc1351f8dc12e73a74": "Seleziona il servizio mantenuto", + "7e953c855b391ac0716a4eeb47c5c5c3": "Abilita prima più servizi", + "55d523aa501b0e7e93e172a9e6829a8a": "Errore nell'ottenimento delle informazioni sulla versione di nginx", + "08f18bb6c6293307f68d5f822ed7dbe1": "Attualmente, openresty non è supportato", + "45020a62e40bbb43f6e05c62ad50288e": "Esiste già un'attività di installazione.Si prega di attendere prima il completamento!", + "4052df86d5a8dd12943cc8b1d53162e4": "L'installazione del servizio non è riuscita.Per favore riprova!", + "8033c09e6fedf841205b29b57c0ae0d1": "Avvio del servizio non riuscito: {}", + "442d02a722dc331f8b85d328fb99a174": "La modalità multiservizio è stata abilitata con successo", + "a0b289e4caa220dcd62692401d5083f5": "Impossibile disinstallare il servizio {}.Per favore riprova!", + "0045406cf97cbdca708c795aa9554145": "Impossibile riavviare il servizio {}.Prova un riavvio manuale o controlla il file di configurazione.", + "52cd203105425f66daf42d81f05c540f": "La modalità multiservizio è stata disabilitata con successo", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "Il riavvio del servizio non è riuscito.Controlla il file di configurazione di Apache!", + "a949ed64edc73a99f9f9c801a84b6390": "Il tipo di servizio specificato non esiste", + "408f206d494c5f26144f7492315dfa21": "Si è verificato un errore durante il passaggio dei servizi in batch!", + "e9fd26be1a67520e66f2e99d61977c32": "L'ID del sito web non esiste", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "L'attuale servizio del sito web è già {}", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "La modifica della configurazione non è riuscita.", + "98e762d03fc5ffcb381010aff10c7bde": "Passaggio a {} riuscito correttamente", + "293f667205bd8aa91c72f966c03c3de5": "Il tipo di servizio del sito web ottenuto non è corretto", + "8562d96fc303411ee017a30b83d75712": "Riparato con successo", + "d9d76120c8c13b40d2e8e49b0d6117da": "Si è verificato un errore in multiservizio e la riparazione non è riuscita.Prova a chiudere multiservizio e poi a riaprirlo!:{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "Il file di configurazione non esiste", + "c8622023712105e9e7328396976a2667": "Il file di configurazione di cui è stato eseguito il backup non esiste: {}", + "d81f83ae44da0682974272b976e8e550": "Recupero riuscito", + "12572c9827392d4bd4c028881ed06242": "Sono presenti conflitti di riscrittura di proxy o URL globali sul sito Web.Per favore cancellalo e riprova!", + "92bce01ab77d0d50efec1d424cab583b": "Questo sito Web ha un proxy inverso.Per favore cancellalo e riprova!", + "30c74a0981da2edec86936cd288479f7": "Il sito Web ha configurato un proxy inverso globale.Per favore cancellalo prima!", + "c3fe8f7adf26d613d9593acede34303b": "Il sito Web è configurato con l'associazione del nome di dominio della sottodirectory.Per favore cancellalo prima!", "c601909c952f2064e91d6f3c1d1a7128": "★ Avvia backup [{}]", - "890b5b1ca2b1aa96f0781c9fdc77ab88": "☆ Backup eseguito [{}]", - "5316694cae24d434370be2d76146a500": "| -Errore : {}", + "890b5b1ca2b1aa96f0781c9fdc77ab88": "☆ Backup è completo [{}]", + "5316694cae24d434370be2d76146a500": "| -Error : {}", "b763e7e9f6b23d4b5066458506d26d55": "L'esecuzione dell'attività di backup non è riuscita.", "713660262f5ab9c3af9aa17c8d8a412c": "Backup a", + "de5ac4bddf9b72b649c0cbd4243f76c6": "riprovare dopo qualche secondo... attendere prego...", + "6905a88552caae6df77f56bd19f6d76a": "Le impostazioni dell'attività Cron rimangono locali.Il backup locale viene mantenuto.", + "63701b3fa795bcd399aab5d489f8eae9": "Le impostazioni dell'attività Cron non rimangono locali.Il backup locale non viene conservato.", + "837cc24a222df21e74245f4cfac6ad09": "Impostazione utente su don", + "57d4380c974a85fe8db5914c934addf4": "L'attività programmata non esiste!{}", "038ae15d38f9f027abda2aabf18324ab": "Mantieni l'ultimo numero di backup: {} copie per {}", "58c65e272cfde6fc8cf73d0ffcde4bbd": "Caricamento su {}, per favore aspetta ...", "243c0f3ec002883d6fa7770957ecf9bd": "L'attività programmata non esiste!", - "57d4380c974a85fe8db5914c934addf4": "L'attività programmata non esiste!{}", "78df833c741b9814545d76a83f2db9b5": "{} Database di backup {} non esiste", - "69c66d6525e77e17c2aaffea61f4d730": "Impossibile collegarsi a Cloud Storage, controlla se la configurazione è corretta!", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB ha abilitato l'autenticazione di sicurezza.", "8a09aa6b7131f71b3ba97f13d5b7823f": "Il numero di ordine specificato non esiste e non può essere rinnovato!", "72905fe72d071dffbc0c1a20eb8def87": "Non sono state trovate informazioni su questo ordine.", "0b033e06e17e9fb14f93e6f11eed6599": "L'ordine è scaduto.Si prega di candidarti!", @@ -1631,37 +1735,11 @@ "972f14a9afdebc7e5b366f465171776a": "L'ordine è scaduto.Si prega di candidarsi di nuovo.", "1008d1a5b18463e45c0bdb930bc0087c": "Questo certificato non è stato trovato.", "2e95d6e834bed89e1e199808d0cfd8aa": "Si prega di specificare il root del documento del sito Web nel parametro - -path!", - "4a8d983505848031c77a15c408cd1f3e": "| -Retry il comando", + "4a8d983505848031c77a15c408cd1f3e": "| -Riprova il comando", "ed069811f3c302d22a0f4aafc6903826": "| -Il utente abbandona l'applicazione ed esce dal programma!", - "66924214c228f7eb631ac940281c7190": "Impostazione di successo", - "d55e6e0c13df775ea0eabea4f36ff8da": "Si prega di abilitare almeno un comando e un firewall", - "322d678e45d68284d90503f36da32648": "L'operazione è stata eseguita", - "7f6a5159defff4366792aa7c992f6f0b": "Modificato con successo", - "01f144a7cfd324d0dab94f8aa6e29374": "Elimina con successo", - "26eaf477d247c668a143b415491995dd": "Il tuo attuale indirizzo IP [{}] non è nella whitelist.", - "c26b7075352954fb3e96fbe983dbd083": "Il tuo attuale indirizzo IP [{}] è nella whitelist.", - "f9cfac18ac1fe92adcc47b139d0617a8": "Aggiunto fallito", - "bf31291dfc89be9a8af12c3fa15e7e4d": "Operazione eseguita", - "71a1c5f19c8e300d350f5f68c71e4559": "Elimina non riuscita", - "c6fdc537935f8c3e97a442e8be9adf20": "C'è un file con lo stesso nome della cartella caricata.Si prega di controllare e riprovare", - "055df73dfeac55aa4ddb8b31e98d3fea": "L'utente corrente non ha autorizzazioni sufficienti per accedere o modificare {}", - "3ff13f637b9e318936f8d30f77c57c64": "La directory corrente ha permessi di sola lettura", - "8c7dd0d2966be0d1427bb839c94a993a": "Caricamento non riuscito: {}", - "fc937a95d443a5accb3dc43dabf8a4c0": "Spazio su disco insufficiente", - "dc494cbbc1dad9fe8a2d219d561840d5": "Si è verificato un errore durante il caricamento del file. Eliminare il file temporaneo.【 {} 】 Riprova più tardi", - "45cd3dad5e3ac153966eff8aaf30c33d": "Esiste una cartella con lo stesso nome del file caricato. Controlla e riprova.", - "eaf87474bf8e355eb84fadd0caf91f14": "L'utente corrente non ha autorizzazioni sufficienti per accedere o modificare", - "fe56b3a6f3a8b6a24f60a62408351b0e": "Questa è la directory del cestino per il riciclo, premi il pulsante [riciclo] nell'angolo in alto a destra per aprire", - "8ec1fba8a89cb67bc958d7b2424156e9": "File spostato per riciclare il cestino", - "99a091a444e6e207f60506fb4f0bdcce": "File eliminato correttamente", - "08f4aae44a9ffaffc3e72390e7ce2b20": "L'attività di compressione è stata aggiunta alla coda dei messaggi!", - "c28802f8d7f5a40cb9f17cace202e59f": "Errore di query, {}", - "11c99562b6212de14ddf1dcb06ea1696": "Nessuna attività nella formazione {}", - "94f33212bde1cd76797fe4fe78b2167f": "Aggiorna compositore da {} a {}", "daa9a175b001e007de4d7ca89ec19aec": "Tipo di nodo non valido: {}", "abb41b16dcebff17c55d75000fe3cabf": "Automazione non valida", "e9d2603582f4a20d640b8e7d3b3e08b7": "Impossibile modificare l'automazione nello stato di esecuzione.", - "505a83f220c02df2f85c3810cd9ceb38": "Successo", "d2fcac4ec8e0f366bff10d45d37bb3d3": "Invalid Automation_id: {}", "d171abccfa056d262e7e081b84510c4f": "Automazione non valida: Impossibile caricare i trigger", "ae3ff0ee4b1a6c1dfe230d9b15a4d4a0": "Automazione non valida: trigger incompleti", @@ -1669,6 +1747,7 @@ "0fdf6b21eacd19ce746639f1c4613607": "end_time deve essere maggiore di start_time", "18fc7ff48f030eda26c7446cdccd441d": "dati non validi", "dcb3fc2a35a17abb01744383ebf3cdc4": "Dati non validi -2", + "7122d35c3532d63c8d9fc5c5bd320558": "Impossibile ottenere l'elenco degli ordini, riprova più tardi!", "079217f7bb63fed72af9bb79048e3967": "'**", "b3248ad84a12659b1599607f969741a0": "L'autorizzazione DNS di Cloudflare deve essere", "0ad00e6c415af62cdaa8537c32574052": "Alias ​​esiste già!", @@ -1682,14 +1761,15 @@ "8d49c4cd608eaa6d8d9a1e0ab6658fb4": "Provider DNS non trovato!", "79922b861a42a4e2350f69501eb25ca0": "Record DNS non trovato!", "39b361ca64471b92b1b1e84dee7d5226": "Aggiornamento con successo!", + "84e9feba40d0aed963505e503cf821e3": "Aggiornamento non riuscito...", "8ef6a7854d197b829e350936856847fc": "Certificato SSL non trovato!", - "e10f97e65f8e6bb8d78cad066bd3133a": "Rinnovato con successo!", - "d87bc3fd830939bce7f1f369849eb042": "Sito ID non trovato!", + "02d59ec01b27b9b07cc92b56b4590690": "Il certificato SSL ha meno di 30 giorni, non è necessario rinnovarlo!", + "c85411871b8773e799e64d0c23ef79d3": "Ordine non trovato!", "9dd5fcad400ad7db65baa55be5535d94": "Applica correttamente!", "3f5a9a220cd8c53770c59c4931beb2be": "Auth_Type deve essere", "4fadb14ca725c013569fc00385d750fd": "I domini sono vuoti", - "ef01e80156516ee70bc7031ecc223061": "Sito non trovato", - "584447441c36bdf097a426f26cd1ae0f": "Sito non in esecuzione", + "2a6bb1bdd798217656edecf672b6df3c": "Errore di verifica Http01, ma sito non trovato.", + "962682f10423a33a75f4b1277b3690c9": "Errore di verifica Http01, ma il sito non è in esecuzione", "fdbdc3e70ef01cae6ba7f67b34622aa1": "Tipo di autentico sconosciuto", "52357aa86932ebcc9ff6e741ef6244b5": "Aggiorna il certificato non riuscito", "2e54bae7cebff2ed29eee92ee852cf0f": "Certificato SSL non trovato!", @@ -1753,7 +1833,6 @@ "55bbeb07229c08c530c5119918035594": "La regola di output è impostata correttamente", "8be2d40f6fa3e12c46ba68bfb23951d1": "configurazione delle regole di Outputhe non riuscita: {}", "5d6e1e45c8d58b5f2800aabe961be7e6": "Servizio account non avviato, inizia prima il servizio", - "b3e1f3f951a065d621dba454b2523365": "Richiesta non riuscita", "9f570fb82d621c780cae5d4a3b7b21fa": "Inizia con successo", "d6fd80e8f386ec01318ebbd911b3cb8c": "Inizio non riuscito", "54b737c15ee80b356bed65d1e4bbdf11": "Stop non è riuscito", @@ -1782,6 +1861,8 @@ "55df5f27012531e176be79f81b90d779": "Cancellato con successo", "785a530106a46c897769c1cf2df6c2f3": "Ha iniziato con successo", "274fbf19776d1b6efee0e71f075739cd": "Si è fermato con successo", + "81c5f87b76468dbe7a152121fee71663": "Non ci sono tronchi ridondanti da pulire", + "12af24fd6d32854160728cffa4ea2150": "Nessuna pulizia ha avuto successo", "90b0ccf9b077f2cadeef3daaf17d86b8": "Fire/Wall ha {}", "3d2fb8221a478c63e13b494d7279e2ac": "Aggiunto correttamente, {} la stessa regola esiste per la porta ed è stata saltata", "fc66f87cb8d92e3caf13485d65ecc309": "operare con successo", @@ -1791,25 +1872,81 @@ "29b89ed8f1aa15665f877c12e0d14bac": "L'importazione non è riuscita.Il formato delle regole è sbagliato.Riprova in base al formato delle regole di esportazione!", "002827869c69ad72bc41ca442547bbac": "Annulla Ignora la regola correttamente", "63ecd16effc3eab31bf1eec574ece639": "Sbloccato di successo!", - "81c5f87b76468dbe7a152121fee71663": "Non ci sono tronchi ridondanti da pulire", - "12af24fd6d32854160728cffa4ea2150": "Nessuna pulizia ha avuto successo", - "d1b44799de985cad123821498285dfbd": "Database_input_err_format", + "eacd845def6fe750cfc0986f24565045": "La password di accesso locale è vuota", + "fea087517c26fadd409bd4b9dc642555": "normale", + "e1a4b8afc2cb3f56f0c98876c06d6d58": "Impossibile connettersi al database!", + "a18fb7f91f74b73e7326700913e7e35c": "Specifica che il server esiste già: [{}:{}]", + "079d7d1539d30a76e53b6fb54d370d32": "Aggiungi con successo!", + "72bfbe1d7dd57250382b570043041e82": "Aggiungi errore: {}", + "270b19b2e9da5da821c7b54a1a8d7fd6": "Errore nel passaggio dei parametri, riprova!", + "ffcba623cf91331a0ba5b3ab969db1f9": "Eliminato con successo!", + "43bf15425909c99f2cc1553eaffaf476": "Impossibile eliminare: {}", + "0947887a435eff51a71f1e54615af33c": "Impossibile connettersi al database [{}:{}].", + "844eea2c94a872941b4e4fe66c92c659": "Connessione al database [localhost:27017] non riuscita!{}", + "90b65217be3c698d9b1fbff0dccdc71b": "Il servizio Mongodb non è ancora attivo!", + "7d1a075632098426af1e2197d274bdb6": "Il nome del database non può contenere i seguenti caratteri./\\\\.\\", + "48b2c30b0f984cdcc6cd7ed4ee376fdc": "Il nome del database contiene spazi e non può essere aggiunto correttamente!", + "93efcc7fc4e9d402978828bacd4a5bc2": "L'utente del database esiste già, utilizza un altro nome del database!", + "393223cf51f8e25df5d53ae425de74a9": "la banca dati non esiste.", + "2162130c1a1937f839cc660f5e70ebdb": "Il servizio Mongodb non è ancora attivo!", + "45da541afaa00457a2f4617a1dd4855f": "La cancellazione del database dei nomi degli amministratori è vietata a causa delle restrizioni di Mongodb!", + "2465ac13d0470c6414b77dc59fbcdbbc": "Mancanza di strumenti di backup, installare prima MongoDB tramite Software Manager!", + "d2af5fe1710856e97dbfdf1adc6d5e98": "Parametro mancante!id", + "9c17c1312620910f7c3d27a20f01e968": "La banca dati non esiste!{db_id}", + "57bb958a6998e558b00b5d89d240b240": "Il formato bson json csv è attualmente supportato!", + "3b4ee1461f518d1bd1ed20615d670df1": "È necessario specificare i campi di esportazione quando si esporta in formato CSV!", + "d2c7790b1f776ce6ad06426b03fa71b1": "La password di accesso locale è vuota, imposta prima la password del database!", + "699c43a1633256e97b95615a562eef88": "La password del database è vuota!Imposta prima la password del database!", + "1acdae1719cee0ce5c586cd6995b70a9": "MongoDB ha abilitato l'autenticazione di sicurezza,", + "67e943332602d7a5b9765306caa8604d": "Tipo di database sconosciuto", + "04c651a70b89bd4fd8fc8702c0bf61e9": "Backup del database fallito, il file di esportazione non esiste!", + "e880101cd795726a7c8e2c2f4033f9dc": "Il backup ha fallito!", + "ae1110dd560e4e7968b297620be7ea36": "BACKUP_SUCCESSO", + "bff09c8822165bf816a5b5a4d1fe9140": "Il percorso di importazione non esiste!", + "3d003d1417aec658cd020f9faf66a5c1": "L'importazione di file zip è supportata solo!", "3397a2bc97209578e6c113606a4c7b7b": "Database_input_success", + "94b43778dbd724133db47ee2126da3a9": "Nessun database sincronizzato", "aae27fc3d2273773edab02e15288cb14": "Database Sync Success {}", + "164c5fa905dbffad015f4593d1b85fb9": "Il tipo di database sid richiede il tipo int!", + "3a621b20dadc66881772503620282533": "DATABASE_OTTIENI_SUCCESSO", + "505a6be34cf7e61f93f2665896cfafaa": "Modifica non riuscita, database [", + "13966ea12f4ed389be50c95e65d8a2dd": "La password del database non può essere vuota o contenere caratteri speciali.", + "361cbf31511a2bf38fc664157d183328": "La password del database non può essere cinese, cambia il nome!", + "252d8cfbb164b773c5f84ce9d814ae3c": "La modifica non è riuscita, il database specificato non esiste.", + "aea43e9b982f6105e584e46b778d9f9e": "La modifica non è riuscita, il database non è abilitato per l'autenticazione di sicurezza.", + "0b46bb64ce97c64f6dddc87bccf949e8": "Le informazioni sul database remoto non esistono!", + "9e1a9b35939cc4887854eb2ed84f401f": "Il nome del database non può contenere caratteri speciali, reimpostalo.", + "90299d1fb53fdf7a570db71a1b61c127": "Per favore imposta prima la password di root PgSQL!", + "01d3922e30b7aff9c7265e91c57cc829": "Il formato IP non è corretto!", + "b2349e65b04baa3a0d50ad030535b73e": "inserito non è legale, la modifica non è riuscita", + "932c4edd1a70a505be1099f4e7874692": "Modifica i diritti di accesso utente pgsql correttamente", + "f562938bcf2a52b32261e4f4a99c3e00": "Cancellazione fallita! Il database corrente è in fase di connessione!", + "573ba454733eee7cd866addcd11ea21c": "Impossibile eliminare il database!", + "fec7dbd4f36266728d6eda5e168d1cc0": "La banca dati non esiste!", + "69579eb94ffe47354dac42abc8cac9d1": "La password del database è vuota, impostala prima.", + "fb642275547236f1fb2ea7717ace26d8": "Per favore imposta prima la password dell'amministratore!", + "95abdbd5890c3ceec62026c6246d8030": "L'esecuzione del backup ha avuto successo,", + "7307a92023c68b6842a8dafb1b500f16": "Mancanza di strumenti di recupero,", + "eef4302ce8a129e5d70767668a9e9110": "Scegli il formato file sql, tar.gz, gz, zip!", "c5aafcc6af38d67c22ccc8d19f60ed0b": "Success del database {}", "a8de1650a48acf0e91c7ba840bd48295": "La password del database non può essere vuota", "9a53422dee5315eb489d4e448f4ea976": "Modifica il errore , il database specificato non esiste", "3ca4ea8082e41867cee227d4686a4c17": "Success password del database {}", + "0033a9566af4f930bebbd45802be5427": "connessione fallita", + "ae576ea2a8c76765fa69287fb1347d1a": "Connessione al database remoto fallita!", + "d1b44799de985cad123821498285dfbd": "Database_input_err_format", "df5647a7421161dcbda85323db41cc99": "Successo di sincronizzazione del database", "2a52f6106614dfbd519714df03ebb16a": "Successo del database", "1182c39d730924cb4f4d8d229fadb0f3": "Successo della password del database", - "2329fa05126d3149fb7c2b4000b5fe4f": "Non può essere aggiunto ripetutamente", - "29059b2bf7113a24a8f74c7a96ef3f35": "Il percorso di importazione non esiste!", - "8e2cb5c5af10de81e26b113c0d41244d": "È supportato solo l'importazione di file compressi!", - "94b43778dbd724133db47ee2126da3a9": "Nessun database sincronizzato", - "82e06d5a957cddcb4043ad10f306fa63": "Connessione del database non riuscita", - "12ab97e2c1036a3c79b45db63f01091c": "Il database remoto non potrebbe essere connesso", + "15a8af9e80d0a0c2d87314c154fff181": "non supporta il cluster Redis!", + "c2dafded2689dc11914376d72a70dfc2": "Connessione Redis fallita!", "b283988bc23c61b2e6393195064ccc5f": "L'operazione ha successo", + "a9ed7f25ce1ffcf98cf5ec7db86abdf4": "Il backup dei database remoti non è supportato al momento!", + "9d1ee7d092060a4d3418a979fba5e46b": "BACKUP_ERRORE", + "1fcdee5d4329f1f638bc2d818f3e510a": "file non trovato", + "517b554160a14e74d52943ea29ab5a66": "La connessione Redis non è riuscita", + "ec010eeffc0a20399b186f334b3b6769": "connessione al database remoto non riuscita {}", + "2322848a32fd761a98a0bd76e633bc97": "Le informazioni sul database remoto non esistono!", "61dccc90b62286cfe99a0836cd7016f4": "La directory del progetto non esiste!", "393f59f008214da917a3644f9bddd08c": "L'elemento specificato non esiste!", "76f7795cbd69658732375d59e3ac4443": "Il file di configurazione package.json non è stato trovato nella directory del progetto!", @@ -1839,19 +1976,19 @@ "bbffcc99d1822ea57ca5e7dc614157ec": "Il progetto non esiste", "53797f7f191af4c7851d0419ca27b334": "Il progetto non è iniziato", "f45bc552cdf8369ab9fe2213eec7b802": "Il file di registro non esiste", - "5395cc8155f62a666b8f0d0f9f207676": "Le informazioni sul repository esistono già!", - "9f9663b59d32947ff1f2c5b364c571b8": "Aggiunto con successo!", - "9b10e472adfe6372c9175b9002f098fd": "[Repository ufficiale Docker] non modificabile!", - "5858be44c285048a8f51c126b2fd23e9": "L'editing non è riuscito!Motivo: decrittazione della password dell'account non riuscita!Si prega di eliminare il repository e aggiungerlo di nuovo", - "7e51d0e26e1b467aff3c89d3e0751ec0": "L'editing non è riuscito!Motivo:{}", - "6478f13dd58e5a4329e19be9020243ff": "Questo repository non è stato trovato", - "d5309f3186607eb36bee41e8a28cea3a": "Modifica successo!", - "9e20bffc0d4093d18fcbc5c98fa0fd87": "[Repository Docker ufficiale] non può essere rimosso!", - "a62336a87697ab6911ba550015a798ef": "Elimina non riuscita, l'ID repository potrebbe non esistere!", - "c28bc5c07ec6f2b56777ac7c852dd64b": "Configurazione di successo!", - "f2bd8f0373084151bbc07e8c1409e37c": "Configurazione non riuscita! {}", - "54197759827cfaf0cdb1e213fa49771e": "Test di accesso non riuscito!Motivo: può essere un errore della password dell'account, controlla!", - "657a0b7e82731fb4ae516d14081f17d0": "Test di accesso non riuscito!Motivo: {}", + "f9be861aad3eda81843c7797487da8e9": "Lo stato attuale della sicurezza del sistema è buono e non sono presenti vulnerabilità o rischi evidenti", + "890e24b14414e3da9bc2ad63d6d0befb": "Esistono alcuni rischi per la sicurezza nel sistema e alcune configurazioni o politiche devono essere migliorate", + "951c23a91dfe39b5ea5d00405b4dc2c5": "Il sistema presenta evidenti vulnerabilità di sicurezza, ti preghiamo di risolverle in tempo", + "de36cae19b2a65a45cb4dfccb435530b": "Il sistema è in uno stato ad alto rischio, riparare gli elementi di rischio rilevanti il ​​prima possibile", + "ea848f5d6978f5916cd3df4191195e2a": "L'host esiste già!", + "7aa425b3819e79208faaed38fe137f34": "Impossibile connettersi al server, controlla se viene avviato Docker!", + "c90ca78b1fc8554e867a696d30255cba": "Aggiungi con successo l'host Docker!", + "8ee5196fbd93bf345bf018132e808a0a": "Elimina con successo l'host!", + "c0ef08aa7bd6276137ccd491a8041223": "Non c'è volume a cui eseguire il backup", + "584e35dd4a55da88bd232ac7a19b9b95": "L'attività di backup è stata creata correttamente.", + "0b08674e1c87f3f8508a4ae9b0c160f8": "Impossibile creare un'attività di backup {}", + "2a0f93407bb61e2403ccd032cbc64e3e": "Elimina con successo", + "13d829d3f2b78c971207d944f2a96c55": "Impossibile eliminare il file, motivo: {}", "0af5787b053c4bf5dbe610731f7d4199": "Il percorso del file non può contenere caratteri cinesi!", "719ee030d81490fc055af0c4426aacb9": "Rilevamento non riuscito: {}", "ee3936ffdc910e2cb8578ad1fae322f0": "Passa di rilevamento!", @@ -1891,36 +2028,6 @@ "428ed92bf9d3198f4c9885c11fdb2be3": "Questi modelli hanno successo: [{}]
Questi modelli falliscono: il nome del modello esiste già o è formattato in modo errato [{}]", "70975749d256333f1b3b62c864ca265a": "Non riesce a modificare!", "2360e954ae9eecac28b2a3edad5e8ce0": "Modifica correttamente!", - "ea848f5d6978f5916cd3df4191195e2a": "L'host esiste già!", - "7aa425b3819e79208faaed38fe137f34": "Impossibile connettersi al server, controlla se viene avviato Docker!", - "c90ca78b1fc8554e867a696d30255cba": "Aggiungi con successo l'host Docker!", - "8ee5196fbd93bf345bf018132e808a0a": "Elimina con successo l'host!", - "11cde3a2ca81c845978b98e4a6ec471e": "Il monitoraggio di risparmio deve essere un numero intero positivo!", - "b314fb25bf654a2256bf53b0f6986c93": "I dati di monitoraggio non possono essere mantenuti per più di 999 giorni!", - "60e46aeaed758964902dd7ae99858f03": "Là", - "1ba194462d31177d3db4ad6bf18fdbe5": "La configurazione del servizio Docker non è riuscita, disattiva l'anti-intrusione di Aapanel e riprova!", - "422f78617d6852c41e370982d73235ed": "L'impostazione non è riuscita!Motivo di fallimento: {}", - "dca5bd22c99a74f74074a3a53d78a58b": "{} successo", - "be62f7640f2c5b730ba50ecc580ae618": "Errore del file di configurazione globale, controlla {}!", - "8ebe0b989b543cf96149811c7a1f3fe2": "SpeedUp Indirizzo [{}] Errore del formato
Riferimento: https://mirror.ccs.tencentyun.com", - "ec1ec17a5862a949e277432e1d09484d": "L'impostazione non è riuscita!Motivo di fallimento: {}", - "179a2001e96bb8d0475488f80c7216a8": "Aggiornamento con successo!", - "f4dc83b81fe6993f99c2b54494eeeec1": "Inizia a monitorare con successo!", - "af79fd88d4b6f7e8a1ac05e199747fdb": "Impossibile iniziare a monitorare!", - "6f4d03d4d1ee0bd282ea744730b7ceda": "Il monitoraggio Docker si è fermato con successo!", - "4cc06d8560bb116a38a5aae1458cbe4a": "Il percorso del file Docker-Opse non può essere vuoto!", - "8d885b86e8562c2128689c4a2601c054": "Docker-compose File non esiste!", - "7bdd4d85dda1275e2be709fd9e0d71dd": "Il file Docker-Opse non è eseguibile o non è un file Docker-Opse!", - "c28e19f0398bc1819a890878021836c1": "L'attività di installazione esiste già, per favore non aggiungerlo di nuovo!", - "a87b64b2d19f29438274f80ce36a3579": "L'attività di installazione è stata aggiunta alla coda!", - "c1710a5899fa03f7ad5ea1945a91e4f8": "Elimina tutti i contenitori e le immagini prima di disinstallare Docker!", - "d388487780fba74e4ff3f3b9ffbce58b": "Può essere disinstallato!", - "c4ba6d01fd53333a6e7e85707758c550": "Disinstallare il successo!", - "b7affa7cc663144bc99b9edb3f1a027f": "L'attività di riparazione è stata aggiunta alla coda!", - "cb49a4daafc9d27bd460967891968225": "Salvato con successo!", - "739722f14db791bd300e08318a48ba59": "Salvataggio non riuscito, Motivo: Errore del formato del file di configurazione Daemon.json!", - "58fcf0699f38a60c8025330585ac205a": "Salva non riuscito, motivo: {}", - "720d2290c3082615c0f79894bfdcabd7": "Inserisci l'indirizzo corretto I PV 6!", "7c6f761019365f8a5cfb2fb54d9e199d": "info.json viene scaricato!", "10066fce84fe34e9cc33e0338532988b": "Il download info.json non è riuscito!", "0672e579ab0e3454713eb683ddcc4859": "{} Download non riuscito, per favore risinc!", @@ -1938,12 +2045,43 @@ "9b149598fb30f54fec9e82a3d121a464": "{} esiste già, modifica il nome del progetto", "634370637f6a5b88940c75f826953d0c": "La directory del progetto utente non è riuscita a creare, dettagli: {}", "f7b14d3f642d711a23d5a0cca725fd0d": "Impossibile copiare la directory del progetto.Dettagli: {}", + "7bdaccb3d20432c5e0150862ab1cc3f3": "Nome dei parametri mancanti", + "9b90b5b49486a61d9b0e6dbbbcb56cad": "Parametri mancanti Container_Info", + "b23d7110e9bf6539b4964afe0d4934e2": "Il raggruppamento esiste già", + "a90ca6939fe71693c145f50596c6e0e6": "Container {} è stato aggiunto dal gruppo {}!", + "e3cf7e2f2d14257e7ea33657b135d534": "Aggiungi fallito: {}", + "fcbeb38a63ced9d3de476fb08c31d71e": "Parametri mancanti ID", + "fe4e0032f69b4100ed143d475e8b5050": "Modificare il successo", + "6c4ed52bea35c4c43839b8f0b44489f9": "Modifica non riuscita: {}", + "6c0129a45e9da4e1820335f3d06a869f": "Delezione non riuscita: {}", + "2a743a86676fd52214d3c0af1b0238b5": "Errore del parametro di stato", + "f95136e5c1f3ccbb09ace8fc24f1e0ca": "Operazione Container [{}] non riuscita", + "2e01172e31495f41fcebcf3f831cc82c": "Operazione riuscita", + "244a98f8c45f938980f48b168aef02c9": "Operazione non riuscita: {}", + "fc431240dfc80a731900d5f2ddb6dfc3": "Container Start Order {}", + "5ea6c6eea14c24c92eeeccaeea5c46dc": "Stato non valido!", + "0f3f874698792dc81c7c00b9e74fea34": "{} \\ r \\ n", + "aad4acc1243565c5c2ca41e5733e5fe0": "successo \\ r \\ n", + "d8f5a29760a4f000dd754819b1faadcc": "fallito \\ r \\ n", + "73977612ef83925db43df7745df9c5eb": "risposta \\ r \\ nno per più di 10 minuti! \\ r \\ n", + "6345c76d66a8a9e9cdd3f9d996ff062d": "Si prega di passare in cmd", + "bba401eadefa8222f3e60a312cc19f34": "È possibile eseguire solo comandi Docker Run o Docker Pull", + "b5592904212696df3e5bcec990c8676a": "Il comando pericoloso esiste: [{}], l'esecuzione non è consentita!", + "cfff471dc04b6ba4aeb2cc2844b2c94b": "Il simbolo pericoloso esiste: [{}], l'esecuzione non è consentita!", + "f1d9b154a0c2625d828a504a8cb35682": "Il comando è stato eseguito!", + "45a0bbacbe8d5ea062167e88423e4573": "Il server Nginx o Apache non è stato rilevato, installa prima!", + "bdaf560796795d6a303bc9a1d75a34c5": "Tipo di progetto [{}] Dominio esistente: {}", + "4588a786e80c83c2cbde37b930c3d778": "La porta del server [{}] non viene utilizzata, inserisci la porta in uso per invertire!", + "6888cf6586ce3c187150146a2d1db0ac": "Aggiungi errore, il database non può essere scritto!", + "9f9663b59d32947ff1f2c5b364c571b8": "Aggiunto con successo!", + "e6bddfc6a0bbf72d592236c61b411f9a": "Aggiungi non riuscito con errore: {}", + "1bfa1b1738332c4835f5efe7c54ab9c2": "Errore dei parametri!", + "0d66954ff42aa042c219a356266f5bc0": "Non sono state rilevate informazioni sul proxy inverso!", "ae178e022cf2fe30f402145572528de8": "I nomi del volume possono essere lunghi non meno di 2 caratteri!", "365c770f123d22093084908ebcdc75fc": "Il nome del volume esiste già!", "2dc51ae60242f0e5b56a9f0d176f91d4": "aggiunta non riuscita {}", "307feea9ab8928f39595316b11992cb1": "I tag dell'opzione driver devono essere coppie di dizionario/valore chiave!", "f529949f8a98615c109ee8b8eb9f7656": "Aggiungi fallito!{}", - "2a0f93407bb61e2403ccd032cbc64e3e": "Elimina con successo", "a4ec5c1fa47f2ce0c875f91ea4e7dd08": "Il volume di archiviazione è in uso e non può essere eliminato!", "11ff7153b67d275618dd3a62d1e56373": "Il volume di archiviazione non esiste!", "2aa70dad9bff94a855fdde3fc113e6c5": "Elimina fallita!{}", @@ -1951,7 +2089,6 @@ "6169a7282b361deb5f6f5b6e18f9426e": "Errore del parametro CMD", "286933a4f24bee0eed1f9300f70a30c7": "È possibile eseguire solo il comando Docker Run", "a46a6b274dcbfc5a629d234c2816a165": "Ci sono simboli di pericolo: [{}], l'esecuzione non è consentita!", - "f1d9b154a0c2625d828a504a8cb35682": "Il comando è stato eseguito!", "8135363a6a5e2c145c6cedab8ac1e510": "Il formato della porta è sbagliato, questo metodo non è supportato!", "3b825826968319b6256c4020cc49676f": "La porta del server [{}] è già occupata, sostituiscila con una porta diversa!", "70b35bb3bb2fe425a981e8cc68c06906": "Per favore, tira l'immagine di cui hai bisogno", @@ -1975,24 +2112,26 @@ "994e5a057aca3524ba773ec33228e184": "Creazione fallimento!{}", "00ff90441ea0bdece5d9e5c72efa14a7": "La creazione del contenitore non è riuscita e la connessione a Docker è scaduta!", "8879635d66ad75dcbfc8c31ba1351116": "Il contenitore non è riuscito a correre!{}", - "facfe02e3070c389fe486efac23f2ab6": "Contenitore creato con successo!", "71dc70f7ab3a4bc0c2a7141718d3a9b2": "Creazione fallimento!", + "1983b37067c7e94095a5113786fdef9c": "Modifica non riuscita, connessione alla finestra mobile scaduta, riavvia la finestra mobile e riprova!", + "c558fedcb5850939202e684ff32c7c50": "Aggiornamento non riuscito! {}", "ed0029af5f77a5dfacbc2452e8c3ec92": "L'ID del contenitore è anormale", "c5b3db7efde90edcb803a4a79e559b21": "Il nuovo nome dell'immagine non può essere vuoto!", "b10305369ebb41ef24699b8137733465": "Lo specchio non esiste!", - "d567f353b12e618571935661f31c2a16": "Modifica del contenitore non riuscita e la connessione a Docker è scaduta.", - "c558fedcb5850939202e684ff32c7c50": "Aggiornamento non riuscito! {}", + "9e90efb62702b147b71e8731290caf44": "L'immagine [{}] non esiste, prova a selezionare [Forza estrazione immagine] e riprova!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "Il nuovo contenitore non è stato creato correttamente e il vecchio contenitore è stato ripristinato.{}", + "1f004e412319b7ed472624e011b3d2ba": "Aggiornamento riuscito!", + "a2ea046c20d2da5cebf2dea01a62dabe": "Aggiornamento non riuscito!Lo stato del contenitore è stato ripristinato", "b84bf4d95051856f9965b55bb5402de3": "Il contenitore non esiste!", + "d567f353b12e618571935661f31c2a16": "Modifica del contenitore non riuscita e la connessione a Docker è scaduta.", "f2124ee490df203b3f86509401c76a09": "Il contenitore viene modificato correttamente e la sottorete non viene specificata quando viene creata la rete [{}] attualmente specificata e l'IP non può essere personalizzato e l'IP è stato automaticamente assegnato a te!", "b95d75cd8e04e9cca297c3cd1091b2eb": "Il contenitore viene modificato correttamente, l'impostazione di rete [{}] non riesce e l'indirizzo IP è stato assegnato automaticamente, dettagli di errore: {}!", "4363bb34365a67238ecc6a98ce46b361": "L'immagine è stata generata e {}", - "4bb30e8d57a6a7e548758daf4ac33983": "Inviato con successo!", + "4bb30e8d57a6a7e548758daf4ac33983": "Invia con successo!", "a32e1f09fc2739d94c51a7168675e0e9": "Presentazione non riuscita! {}", - "9ff81cc845af62a773af3412bdf7d9a0": "L'ID contenitore è anormale, aggiorna la pagina e riprova!", - "d8f5602e197fb8b3c772f071ad4a8baf": "Seleziona il tipo di shell!", - "9ad72ac09babc507baa6e165041e128c": "Questo guscio non è supportato a choose o SH!", "172f51d3307b02aeb6dc703a442f4724": "Impossibile ottenere contenitore", "684fc00ae67504a56c09ef71431b1261": "Esportato correttamente in: {}", + "f9a48b804d917398e795016687f3b0f4": "Si prega di disattivare [Antimanomissione per Enterprise] prima di provare!", "3ab9d9b76e8d22434930622b5f0acc6a": "Il contenitore è stato eliminato!", "d1fe1d6e5e8c17b60f749ad36ff3bcaa": "La porta del server IPv6 [{}] è occupata!", "9f13645ac42f0c9908a35637a525d561": "La porta del server IPv4 [{}] è occupata!", @@ -2015,14 +2154,106 @@ "dac7d97aeb94cf9d3b3b5d7d072c4cff": "Si prega di disattivare la protezione del manomissione aziendale prima di riprovare!", "32ca87e65c5fc75d3857767417b56439": "Impossibile eliminare!{}", "b0ea22ff0b389c2a32b8f4367ab650db": "Errore dei parametri, si prega di passare nella politica di riavvio Restart_Policy!", + "179a2001e96bb8d0475488f80c7216a8": "Aggiornamento con successo!", "3b2f70397fa8a827c7146cbd900f7222": "Aggiornamento non riuscito!{}", "c147897a9d1746a58de531e9c0158c23": "Il contenitore non è avviato e non può essere rinominato!", "a89c2e8f7eb81399f984330e55014c6f": "Rinomina con successo!", "8a615b544c027899738b19f2cc40fd93": "La rinascita non è riuscita!{}", - "3506ae5524d7b5dbd75ed328349e065e": "Set Top eseguito con successo!", + "3506ae5524d7b5dbd75ed328349e065e": "Set Top con successo!", "363b76cd4207ec1adb31b9f7ee3930c8": "Non fisso con successo!", "0fffc4397713115e14ef45273241dfbb": "Errore dei parametri, si prega di passare: osservazione!", "dce2cbc7791016e4876ab144e53b4f82": "Errore dei parametri, si prega di passare: id!", + "ca1bc3e1d32b99b90395da47b88576a9": "Errore parametro. Inserisci: ws_callback!", + "b4770fb21a608a5ba1ecacae409093d0": "Errore parametro. Inserisci: _ws!", + "11cde3a2ca81c845978b98e4a6ec471e": "Il monitoraggio di risparmio deve essere un numero intero positivo!", + "b314fb25bf654a2256bf53b0f6986c93": "I dati di monitoraggio non possono essere mantenuti per più di 999 giorni!", + "60e46aeaed758964902dd7ae99858f03": "Là", + "c28bc5c07ec6f2b56777ac7c852dd64b": "Configurazione di successo!", + "422f78617d6852c41e370982d73235ed": "L'impostazione non è riuscita!Motivo di fallimento: {}", + "dca5bd22c99a74f74074a3a53d78a58b": "{} successo", + "ec1ec17a5862a949e277432e1d09484d": "L'impostazione non è riuscita!Motivo di fallimento: {}", + "f4dc83b81fe6993f99c2b54494eeeec1": "Inizia a monitorare con successo!", + "af79fd88d4b6f7e8a1ac05e199747fdb": "Impossibile iniziare a monitorare!", + "6f4d03d4d1ee0bd282ea744730b7ceda": "Il monitoraggio Docker si è fermato con successo!", + "4cc06d8560bb116a38a5aae1458cbe4a": "Il percorso del file Docker-Opse non può essere vuoto!", + "8d885b86e8562c2128689c4a2601c054": "Docker-compose File non esiste!", + "a87b64b2d19f29438274f80ce36a3579": "L'attività di installazione è stata aggiunta alla coda!", + "d388487780fba74e4ff3f3b9ffbce58b": "Può essere disinstallato!", + "c4ba6d01fd53333a6e7e85707758c550": "Disinstallare il successo!", + "b7affa7cc663144bc99b9edb3f1a027f": "L'attività di riparazione è stata aggiunta alla coda!", + "cb49a4daafc9d27bd460967891968225": "Salvato con successo!", + "58fcf0699f38a60c8025330585ac205a": "Salva non riuscito, motivo: {}", + "6c3e5d603d8845422e861fb0b4eed350": "Un elemento di configurazione che non lo fa", + "f324009782d2d9e73d1087884ebc2c4c": "La radice Docker non può essere vuota!", + "538960e1336f919e37a0d2c024c56830": "L'attuale directory root di Docker è la directory di destinazione e non è necessario modificarla!", + "f2bd8f0373084151bbc07e8c1409e37c": "Configurazione non riuscita! {}", + "a848bbd79221dfdce1c9dca536dbfada": "Il formato JSON delle impostazioni del proxy è sbagliato!", + "edf6eb680187066c4dea216b3b20d6d2": "Configurazione del proxy riuscita!", + "720d2290c3082615c0f79894bfdcabd7": "Inserisci l'indirizzo corretto I PV 6!", + "b01f9411136207ad7df28b9bf2387e2a": "Aggiornamento non riuscito!Motivi del fallimento:{}", + "da896b628e3ded58445e4b015320f327": "Il sovraccarico non riesce a causa di:{}", + "efb869976990f78b3d6fcbaf270e3323": "Ricarica riuscita!", + "1b3b50aa7886ea66845ced2c18cbf6b1": "Overload del profilo globale non riuscito:{}", + "75bbb7a00c3b5b510913952fe089f52a": "Parametro sbagliato, parametro del percorso!", + "273609d18876f5f9e3f021032e5b57a3": "Installazione non riuscita!", + "5e022f79dcc774c79bc55ee28774e2e7": "Il nome dell'immagine non può contenere /", + "c00be60f9f3f7d747aadfdb124e855ef": "Salvato correttamente a: {}", + "cb1f8d99b492340cf701101c87884a8c": "Impossibile esportare l'immagine!", + "afaa91d141ded3e37b8b9ebf8bc31c51": "L'esportazione dell'immagine non è riuscita e la connessione a Docker è scaduta.Prova a riavviare Docker e riprova!", + "5b980f2e1c82c04c91376d55d4306a91": "Impossibile esportare immagine!
{}", + "e5e8c7cac8b71e94280fa08301d21e78": "Inserisci il percorso dell'immagine!", + "5441400ea3bd16cffdf70c46c34f61d4": "Impossibile importare l'immagine.L'estensione del file deve essere.tar!", + "0720c6c4f478b3a374b4a438f7cf80ad": "Impossibile importare l'immagine, la connessione alla finestra mobile è scaduta, prova a riavviare la finestra mobile e riprova!", + "22cc0388137842df9649b3bbcff345e8": "Se l'importazione dell'immagine non riesce e la directory del contenitore temporaneo non viene creata, verificare se il software di protezione dispone di un record di intercettazione.", + "67b97e4746a2faf5d59206a80bb28649": "L'importazione di immagini ha avuto successo! {}", + "deceb44868a29ae5d579114348736cbb": "L'importazione dell'immagine non è riuscita e la directory temporanea del contenitore non è stata creata.Si prega di controllare se il software di protezione ha un record di intercettazione!", + "8eb05618b0f04e727b0685427fd49c8e": "Impossibile importare immagine!
{}", + "721aa02577670c1049ea9d12caa8938c": "Inserisci il percorso Dockerfile corretto!", + "736df9a7c491f3299efdeb9f7d7e9e0f": "Costruisci l'immagine con successo!", + "6e85568dae869303ca7a4486f55458a3": "Build non riuscita, connessione scaduta", + "5bb301b85cc1f42e56174d3d9a4c0286": "Build fallita!{}", + "f51455b323ec2db8004c812001043330": "Build non è riuscito! Il Dockerfile specificato non è stato trovato", + "8e1b9c9b75950d0feba6813d32766e61": "Build fallito! {}", + "eba0ec758a6464a20c14c0f23ceee62e": "Mirror eliminato con successo!", + "8dd326278d09a3ac4bc56cf725c8f262": "L'elimina non è riuscita e l'immagine potrebbe non esistere!", + "11ead921bc0e3d94f1f9e0db4bf8ed8d": "L'ID immagine viene utilizzato in più di un'immagine, costringe l'immagine ad essere eliminata!", + "43993616c7433350755d30a3b4d065dd": "L'immagine è in uso.Elimina il contenitore prima di eliminare l'immagine!", + "d6992c3fcf2269c249cd5f18f1ac2c11": "Impossibile eliminare l'immagine!
{}", + "0c6c071174fde5b47c9eef8088c17a89": "Impossibile eliminare l'immagine, la connessione a Docker è scaduta, riavvia e riprova!", + "a3ba80a8e1e0d9af94c809e909431b3c": "non riuscito, accedi al repository [{}] non riuscito, prova ad accedere di nuovo a questo repository! \\ r \\ n", + "cc40077b6ee61fbfa35713a21e8eb866": "BT_FAILED, Accedi al repository [{}] non riuscito, prova ad accedere di nuovo a questo repository!{}", + "60b488c60b6747bf34a86a69740b636d": "L'immagine spinta non può contenere [/], utilizzare il seguente formato: Immagine: V1 (Nome immagine: versione)", + "44dbec830b87eb037e8fcbb0e1b56160": "Impossibile spingere al repository pubblico Docker!", + "b4c46001066c912344e3bdb0df86e848": "Repository [{}] Accesso non riuscito!", + "0ebfb094c6482acb049e0dd0d3107307": "Push non riuscito, errore dell'etichetta dell'immagine, immettere come: v1.0.1", + "d26bdd6e86002ed92089dc71347822ce": "Push non è riuscito, non avere il permesso di spingere in questo repository!", + "82058092ad7d2c7aa5e2f012b6544e59": "Push Faller! {}", + "2b228d4775d23d2725ec227ba648bd43": "Push correttamente, mirror: {}", + "9e396f640866ded9c3a47268f96a36e3": "Tirando l'immagine, per favore aspetta ... \\ r \\ n", + "7e5f4d488d318dc7c235095c8456f5e4": "Tirare o cercare immagini ... \\ r \\ n", + "97a6dfe3a273202edffe31af7a43e220": "Impossibile utilizzare la stazione speculare predefinita per tirare l'immagine!Cercando di usare un'altra stazione a specchio per tirarti per te, per favore aspetta ... \\ r \\ n", + "484616540fc726ef4f52e97a1c2f0fef": "Impossibile tirare l'immagine! \\ R \\ n", + "1cd77329b2bddfb200e656214b1fdf32": "Impossibile tirare l'immagine!", + "63c709b9759af42fef890d539d822575": "Pull non riuscito! {} \\ R \\ n", + "b4aba972332d1f3728171905a033fb99": "Immagine pull [{}] riuscita \\ r \\ n", + "2fae21ffd185d9e9730b39bc7de23852": "Immagine tirata con successo!", + "8a635442294fd90195a43d9a1672fc3f": "Non è riuscito a tirare l'immagine!", + "711de72d616e7abb29dfa919244d382d": "Pullo non è esistito, l'immagine non esiste o l'immagine può essere un'immagine privata.Devi inserire la password dell'account DockerHub! \\ R \\ N", + "e9511e26273da5b4537b4683668b548e": "pull non riuscito! {} \\ r \\ n", + "05d13bf5dcc37754db74b2356e6e117c": "pull non riuscito, non esiste un tale immagine nel repository! \\ r \\ n", + "714841af7f3de6c8d99ba03f4cee0ee5": "pull non riuscito, il formato dell'immagine è sbagliato, come: nginx: v 1! \\ r \\ n", + "2d941c4fa4da32ccafa8670a07f23c1d": "L'immagine è stata tirata con successo.", + "5282194697748d9fcd1ccd8a90428424": "Potrebbe non esserci questa immagine speculare.", + "d6facab17334983e7c6f8c561c239820": "Impossibile estrarre l'immagine, questa è un'immagine privata, inserisci la password dell'account!", + "b507deb7848d566982b339265c8f5482": "PULL IMMAGINE ESCORSO

Motivo: {}", + "e90811ef0a60b6d299b4e1064d7788d0": "Nessuna immagine inutile!", + "f343313c101aeaff0516990ebea3dcef": "Impossibile eliminare! {}", + "90ecd58b3feb0b2be11f0af685ad39fe": "La cancellazione di immagini inutili non è riuscita e la connessione a Docker è scaduta.Prova a riavviare il servizio Docker e riprova!", + "0568e5e8aa7c811dd420c818189a0d46": "secondi fa", + "53c53a79f864561f8b6886b3dde7cd51": "minuti fa", + "f329a0dab82282e50e3aea9260e95d53": "ore fa", + "7a1af30a5ce889031cbc2472766159e3": "giorni fa", + "558a41d55884223583b3542e802d2b64": "Il nome del mirror non può essere vuoto!", "4097585e32152eb74bbee5ab8c463718": "Il servizio Docker è in esecuzione in modo anomalo, riavvia e riprova!", "26a0931677e111565f3ff7d059b94d8b": "L'impostazione del gateway è sbagliata, inserisci un gateway che corrisponde alla sottorete: {}", "def2ba1ce0e4d77692c14e5b984636fa": "Errore del formato dell'indirizzo della sottorete, immettere per esempio: 172.16.0/16", @@ -2043,128 +2274,24 @@ "12a90fe85b8863e1dea43284988d7750": "La disconnessione della rete non è riuscita!{}", "6226d2fef3bf047236f0f3a57dcd71fb": "Connessione di rete con successo!", "d882b8375782b1bc56ccaf84ed27d20b": "Impossibile connettersi alla rete!{}", - "e8ad47bc3f119a4d4072f5cb114676f4": "Il nome dell'immagine non può essere vuoto", - "e5e3829984a9637afc2546ad2c87d83b": "Il percorso dello specchio non può essere vuoto", - "e5f40049c6d67bd11d9a1a1889f5b84a": "L'ID immagine non può essere vuoto", - "5e022f79dcc774c79bc55ee28774e2e7": "Il nome dell'immagine non può contenere /", - "c00be60f9f3f7d747aadfdb124e855ef": "Salvato correttamente a: {}", - "cb1f8d99b492340cf701101c87884a8c": "Impossibile esportare l'immagine!", - "afaa91d141ded3e37b8b9ebf8bc31c51": "L'esportazione dell'immagine non è riuscita e la connessione a Docker è scaduta.Prova a riavviare Docker e riprova!", - "5b980f2e1c82c04c91376d55d4306a91": "Impossibile esportare immagine!
{}", - "e5e8c7cac8b71e94280fa08301d21e78": "Inserisci il percorso dell'immagine!", - "5441400ea3bd16cffdf70c46c34f61d4": "Impossibile importare l'immagine.L'estensione del file deve essere.tar!", - "67b97e4746a2faf5d59206a80bb28649": "L'importazione di immagini ha avuto successo! {}", - "deceb44868a29ae5d579114348736cbb": "L'importazione dell'immagine non è riuscita e la directory temporanea del contenitore non è stata creata.Si prega di controllare se il software di protezione ha un record di intercettazione!", - "8eb05618b0f04e727b0685427fd49c8e": "Impossibile importare immagine!
{}", - "721aa02577670c1049ea9d12caa8938c": "Inserisci il percorso Dockerfile corretto!", - "736df9a7c491f3299efdeb9f7d7e9e0f": "Costruisci l'immagine con successo!", - "6e85568dae869303ca7a4486f55458a3": "Build non riuscita, connessione scaduta", - "5bb301b85cc1f42e56174d3d9a4c0286": "Build fallita!{}", - "f51455b323ec2db8004c812001043330": "Build non è riuscito! Il Dockerfile specificato non è stato trovato", - "8e1b9c9b75950d0feba6813d32766e61": "Build fallito! {}", - "eba0ec758a6464a20c14c0f23ceee62e": "Mirror eliminato con successo!", - "8dd326278d09a3ac4bc56cf725c8f262": "L'elimina non è riuscita e l'immagine potrebbe non esistere!", - "11ead921bc0e3d94f1f9e0db4bf8ed8d": "L'ID immagine viene utilizzato in più di un'immagine, costringe l'immagine ad essere eliminata!", - "43993616c7433350755d30a3b4d065dd": "L'immagine è in uso.Elimina il contenitore prima di eliminare l'immagine!", - "d6992c3fcf2269c249cd5f18f1ac2c11": "Impossibile eliminare l'immagine!
{}", - "0c6c071174fde5b47c9eef8088c17a89": "Impossibile eliminare l'immagine, la connessione a Docker è scaduta, riavvia e riprova!", - "0f3f874698792dc81c7c00b9e74fea34": "{} \\ r \\ n", - "a3ba80a8e1e0d9af94c809e909431b3c": "non riuscito, accedi al repository [{}] non riuscito, prova ad accedere di nuovo a questo repository! \\ r \\ n", - "cc40077b6ee61fbfa35713a21e8eb866": "BT_FAILED, Accedi al repository [{}] non riuscito, prova ad accedere di nuovo a questo repository!{}", - "60b488c60b6747bf34a86a69740b636d": "L'immagine spinta non può contenere [/], utilizzare il seguente formato: Immagine: V1 (Nome immagine: versione)", - "44dbec830b87eb037e8fcbb0e1b56160": "Impossibile spingere al repository pubblico Docker!", - "b4c46001066c912344e3bdb0df86e848": "Repository [{}] Accesso non riuscito!", - "0ebfb094c6482acb049e0dd0d3107307": "Push non riuscito, errore dell'etichetta dell'immagine, immettere come: v1.0.1", - "d26bdd6e86002ed92089dc71347822ce": "Push non è riuscito, non avere il permesso di spingere in questo repository!", - "82058092ad7d2c7aa5e2f012b6544e59": "Push Faller! {}", - "2b228d4775d23d2725ec227ba648bd43": "Push correttamente, mirror: {}", - "9e396f640866ded9c3a47268f96a36e3": "Tirando l'immagine, per favore aspetta ... \\ r \\ n", - "7e5f4d488d318dc7c235095c8456f5e4": "Tirare o cercare immagini ... \\ r \\ n", - "5a7377f73fc144fd961e8b2ffeba66af": "pull non riuscito! \\ r \\ n", - "97a6dfe3a273202edffe31af7a43e220": "Impossibile utilizzare la stazione speculare predefinita per tirare l'immagine!Cercando di usare un'altra stazione a specchio per tirarti per te, per favore aspetta ... \\ r \\ n", - "484616540fc726ef4f52e97a1c2f0fef": "Impossibile tirare l'immagine! \\ R \\ n", - "1cd77329b2bddfb200e656214b1fdf32": "Impossibile tirare l'immagine!", - "63c709b9759af42fef890d539d822575": "Pull non riuscito! {} \\ R \\ n", - "b4aba972332d1f3728171905a033fb99": "Immagine pull [{}] riuscita \\ r \\ n", - "2fae21ffd185d9e9730b39bc7de23852": "Immagine tirata con successo!", - "8a635442294fd90195a43d9a1672fc3f": "Non è riuscito a tirare l'immagine!", - "711de72d616e7abb29dfa919244d382d": "Pullo non è esistito, l'immagine non esiste o l'immagine può essere un'immagine privata.Devi inserire la password dell'account DockerHub! \\ R \\ N", - "e9511e26273da5b4537b4683668b548e": "pull non riuscito! {} \\ r \\ n", - "05d13bf5dcc37754db74b2356e6e117c": "pull non riuscito, non esiste un tale immagine nel repository! \\ r \\ n", - "714841af7f3de6c8d99ba03f4cee0ee5": "pull non riuscito, il formato dell'immagine è sbagliato, come: nginx: v 1! \\ r \\ n", - "2d941c4fa4da32ccafa8670a07f23c1d": "L'immagine è stata tirata con successo.", - "5282194697748d9fcd1ccd8a90428424": "Potrebbe non esserci questa immagine speculare.", - "d6facab17334983e7c6f8c561c239820": "Impossibile estrarre l'immagine, questa è un'immagine privata, inserisci la password dell'account!", - "b507deb7848d566982b339265c8f5482": "PULL IMMAGINE ESCORSO

Motivo: {}", - "e90811ef0a60b6d299b4e1064d7788d0": "Nessuna immagine inutile!", - "f343313c101aeaff0516990ebea3dcef": "Impossibile eliminare! {}", - "90ecd58b3feb0b2be11f0af685ad39fe": "La cancellazione di immagini inutili non è riuscita e la connessione a Docker è scaduta.Prova a riavviare il servizio Docker e riprova!", - "45a0bbacbe8d5ea062167e88423e4573": "Il server Nginx o Apache non è stato rilevato, installa prima!", - "bdaf560796795d6a303bc9a1d75a34c5": "Tipo di progetto [{}] Dominio esistente: {}", - "4588a786e80c83c2cbde37b930c3d778": "La porta del server [{}] non viene utilizzata, inserisci la porta in uso per invertire!", - "6888cf6586ce3c187150146a2d1db0ac": "Aggiungi errore, il database non può essere scritto!", - "e6bddfc6a0bbf72d592236c61b411f9a": "Aggiungi non riuscito con errore: {}", - "1bfa1b1738332c4835f5efe7c54ab9c2": "Errore dei parametri!", - "0d66954ff42aa042c219a356266f5bc0": "Non sono state rilevate informazioni sul proxy inverso!", - "65960a94c86ed543e6ecf9865cb7aab9": "Il motore di rilevamento viene inizializzato.Il primo carico potrebbe richiedere molto tempo ...", - "2e2456601fd9b5e6a2f7345d8877e2eb": "Apt-get viene aggiornato.Il primo carico potrebbe richiedere molto tempo ...", - "8c902642d409e04304c1b50daef221ad": "Motore di rilevamento installato, la prima esecuzione può richiedere migliaia di anni ...", - "e4cf763784740f252924c589b16d4f25": "La cache Yum viene aggiornata.Il primo carico potrebbe richiedere molto tempo ...", - "5677925b683b9c781fb956882c4d736e": "Versione di sistema non supportata {}", - "f1f3e9961d2a46c83e8d226aa1cc1dbb": "La versione di sistema non supportata {} \\ ncirrently supporta solo Debian, Ubuntu, Centros", - "938e7de7df2aa5efe531d693deeb5907": "Controllo libdl.so biblioteche dipendenti ...", - "459ed27083c25b82135efedccaa60ada": "Scansione del comando di cronologia delle eccezioni", - "37c614d5d300e6c391808efd5363ec82": "Scansione di informazioni sensibili {}", - "5ddc98a53573410c7cb65727946c5d3f": "Scansione {} backdoor", - "6bb6be880d819a93af392183d16fccdf": "Scansione {} sfugge al contenitore", - "cd7fb7cf576b22469514b5b30f365158": "{} Scansione completata", - "acc2731ee0f5b78d4e801d2daf814c32": "Comando di storia anormale sospetto trovato", - "3069c277261d044bb309e4b09ae798fa": "È stato scoperto che l'immagine ha un comando storico anormale [{}], che può impiantare malware o codice nel sistema host quando il contenitore è in esecuzione, causando rischi per la sicurezza.", - "6d64734fff5534f48029ffba4aa3678d": "1. Si consiglia di verificare se il comando è richiesto per le normali affari
2. Si consiglia di scegliere infrastrutture ufficiali e affidabili per evitare perdite inutili.", - "475dfbee8626a4d939cf631aad174de3": "Scansione: {}", - "71c7dfa944a5a50f281c0acb232dcdeb": "Scansione: {} ...", - "0c29ac6d8e69451c80f8ef857e499ab2": "Directory sensibili trovate {}", - "53872e73575a306598c0c4060b44181c": "L'immagine esiste in una directory sensibile: {}, può essere utilizzata dagli aggressori per rubare dati sensibili o codice sorgente, portando a ulteriori problemi di sicurezza.", - "6fe56120a0502f9678988d756dd27682": "1. Immettere il contenitore distribuito utilizzando l'immagine ed eliminare la directory senza influire sul business
2. Se non può essere eliminato, limitare l'accesso alla directory", - "6b2f9867ccd6f3e6f06726c06ed684d5": "File sensibili trovati {}", - "6684913201a60be0b5e89c4dfb210719": "Trovato backdoor Bashrc {}", - "9a9f27d5f9f8c056fff7986c87a94c30": "È stato scoperto che l'immagine ha backdoor Bashrc: [{}], contenuto di codice dannoso:
{}", - "d8a828116070b9d92315ca309cca1991": "1. Immettere il contenitore distribuito utilizzando l'immagine ed eliminare il codice dannoso sotto il file
2.Controlla se il contenitore è stato invaso e aggiorna il token di accesso o la password dell'account dell'azienda nel contenitore
3.Si consiglia di sostituire l'immagine ufficiale o altri contenitori di distribuzione dell'immagine di fiducia", - "e1439f3f7d25d378078d513a82a3fa87": "File backdoor trovato {}", - "9ede9d4bd542eedf78e39b0acf0206e3": "È stato scoperto che il file backdoor Bashrc [{}] esiste nell'immagine e il contenuto del codice dannoso è:
{}", - "686765b4612ecd8f774648db29a1541d": "cron backdoor scoperto {}", - "390bdc0b3c37a56ede9467b0c220a3b6": "È stato scoperto che l'esistenza di Cron Backdoor [{}] nell'immagine e il contenuto del codice dannoso è:
{}", - "caea084281a3cb2515e5618cd3856163": "Backdoor del sistema trovato: {}", - "d04061273caa56d5a0c3d74f3e9fd482": "È stato scoperto che il file backdoor di sistema [{}] esiste nell'immagine e il contenuto del codice dannoso è:
{{}", - "fc76e0fe415c49cc1c09bf76035fc4e9": "Trovato sshd backdoor {}", - "00b2409f52ef5bc56afe29ccbe5cfa2c": "Trovato il backdoor SSHD soft link: {}, il file colpisce la funzione dannosa [exe = {}; link_file = {}]", - "e747da31a54cd71fb1a2860cae0f9f77": "Ho trovato il backdoor TCPWrapper {}", - "a2b09164c8d23894736bcc6a646861e0": "È stato scoperto che il file backdoor TCPWrapper [{}] esiste nell'immagine e il contenuto del codice dannoso è:
{}", - "a7fd9f6b190b8531039376fbbda5f482": "Gli utenti hanno trovato a rischio di fuga {}", - "5d46ed5f4af3f30cfcc8bd66942f93b4": "Il nome utente {} può completare la fuga del contenitore attraverso il comando [{}], consentendo all'attaccante di ottenere diritti di accesso all'host o ad altri contenitori.Contenuto dannoso:
{}", - "4ca0a18aa36a60613104cacdae514dec": "1. Si consiglia di eliminare l'immagine o non usarla più
2.Se esiste già un'attività che utilizza l'immagine, immettere l'ambiente del contenitore ed eliminare il contenuto dell'utente {} nel file /etc /sudoers.", - "611afea08ae3b216a34dfde4c143f46c": "Versione del sistema non supportata", + "0e8623af4dd4d3b732904872d22fbf83": "Il nome della rete non può essere vuoto!", + "5aa2044b58e63d58ddecc69421802404": "I gateway possono", + "ceaa20eefd6749452a947c7f5dfa4eb0": "Gli intervalli IP non possono essere vuoti!", + "c3e2cce9a4a1b26f46f462f34ae391b9": "Creazione di una rete fallita!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "Nome della rete: [{}] esiste già!", + "9cdc09516d85ae057d1d9bedc988849e": "Crea una rete con successo!", + "5395cc8155f62a666b8f0d0f9f207676": "Le informazioni sul repository esistono già!", + "9b10e472adfe6372c9175b9002f098fd": "[Repository ufficiale Docker] non modificabile!", + "5858be44c285048a8f51c126b2fd23e9": "L'editing non è riuscito!Motivo: decrittazione della password dell'account non riuscita!Si prega di eliminare il repository e aggiungerlo di nuovo", + "7e51d0e26e1b467aff3c89d3e0751ec0": "L'editing non è riuscito!Motivo:{}", + "6478f13dd58e5a4329e19be9020243ff": "Questo repository non è stato trovato", + "d5309f3186607eb36bee41e8a28cea3a": "Modifica successo!", + "9e20bffc0d4093d18fcbc5c98fa0fd87": "[Repository Docker ufficiale] non può essere rimosso!", + "a62336a87697ab6911ba550015a798ef": "Elimina non riuscita, l'ID repository potrebbe non esistere!", + "54197759827cfaf0cdb1e213fa49771e": "Test di accesso non riuscito!Motivo: può essere un errore della password dell'account, controlla!", + "657a0b7e82731fb4ae516d14081f17d0": "Test di accesso non riuscito!Motivo: {}", "221d1ea3c23f430e03a4486dca865014": "Il contenitore non esiste, aggiorna il browser e riprova!", "7e88e25ea6c628c2d03c526c04af3eed": "Impossibile ottenere lo stato del contenitore:", - "c0ef08aa7bd6276137ccd491a8041223": "Non c'è volume a cui eseguire il backup", - "584e35dd4a55da88bd232ac7a19b9b95": "L'attività di backup è stata creata correttamente.", - "0b08674e1c87f3f8508a4ae9b0c160f8": "Impossibile creare un'attività di backup {}", - "13d829d3f2b78c971207d944f2a96c55": "Impossibile eliminare il file, motivo: {}", - "7bdaccb3d20432c5e0150862ab1cc3f3": "Nome dei parametri mancanti", - "9b90b5b49486a61d9b0e6dbbbcb56cad": "Parametri mancanti Container_Info", - "b23d7110e9bf6539b4964afe0d4934e2": "Il raggruppamento esiste già", - "a90ca6939fe71693c145f50596c6e0e6": "Container {} è stato aggiunto dal gruppo {}!", - "e3cf7e2f2d14257e7ea33657b135d534": "Aggiungi fallito: {}", - "fcbeb38a63ced9d3de476fb08c31d71e": "Parametri mancanti ID", - "fe4e0032f69b4100ed143d475e8b5050": "Modificare il successo", - "6c4ed52bea35c4c43839b8f0b44489f9": "Modifica non riuscita: {}", - "6c0129a45e9da4e1820335f3d06a869f": "Delezione non riuscita: {}", - "2a743a86676fd52214d3c0af1b0238b5": "Errore del parametro di stato", - "f95136e5c1f3ccbb09ace8fc24f1e0ca": "Operazione Container [{}] non riuscita", - "2e01172e31495f41fcebcf3f831cc82c": "Operazione riuscita", - "244a98f8c45f938980f48b168aef02c9": "Operazione non riuscita: {}", - "fc431240dfc80a731900d5f2ddb6dfc3": "Container Start Order {}", - "5ea6c6eea14c24c92eeeccaeea5c46dc": "Stato non valido!", "cb337dbfbc18aafa482051b6fc349dea": "Impossibile ottenere il file di configurazione", "84d3fc0c1c70fcd6fdd7ca7c3be11225": "Il progetto esiste già!", "a280b122a0b3249c26b1f94ad4573f50": "Scrivi fallito!", @@ -2183,13 +2310,32 @@ "d6d90f977089e176ec7443db17c41279": "Contenitore aggiunto correttamente!", "04cd9210bf9290bda98bc76ca4bc59fd": "Contenitore eliminato correttamente!", "d867a5e10a7a9485129c679b85453e3f": "Progetto eliminato correttamente!", - "aad4acc1243565c5c2ca41e5733e5fe0": "successo \\ r \\ n", - "d8f5a29760a4f000dd754819b1faadcc": "fallito \\ r \\ n", - "73977612ef83925db43df7745df9c5eb": "risposta \\ r \\ nno per più di 10 minuti! \\ r \\ n", - "6345c76d66a8a9e9cdd3f9d996ff062d": "Si prega di passare in cmd", - "bba401eadefa8222f3e60a312cc19f34": "È possibile eseguire solo comandi Docker Run o Docker Pull", - "b5592904212696df3e5bcec990c8676a": "Il comando pericoloso esiste: [{}], l'esecuzione non è consentita!", - "cfff471dc04b6ba4aeb2cc2844b2c94b": "Il simbolo pericoloso esiste: [{}], l'esecuzione non è consentita!", + "459ed27083c25b82135efedccaa60ada": "Scansione del comando di cronologia delle eccezioni", + "37c614d5d300e6c391808efd5363ec82": "Scansione di informazioni sensibili {}", + "5ddc98a53573410c7cb65727946c5d3f": "Scansione {} backdoor", + "6bb6be880d819a93af392183d16fccdf": "Scanning {} sfugge al contenitore", + "cd7fb7cf576b22469514b5b30f365158": "{} Scansione completata", + "7d643f192968be3f8a54be28592e9176": "La scansione dell'immagine non è riuscita:{}", + "acc2731ee0f5b78d4e801d2daf814c32": "Comando di storia anormale sospetto trovato", + "3069c277261d044bb309e4b09ae798fa": "È stato scoperto che l'immagine ha un comando storico anormale [{}], che può impiantare malware o codice nel sistema host quando il contenitore è in esecuzione, causando rischi per la sicurezza.", + "6d64734fff5534f48029ffba4aa3678d": "1. Si consiglia di verificare se il comando è richiesto per le normali affari
2. Si consiglia di scegliere infrastrutture ufficiali e affidabili per evitare perdite inutili.", + "6684913201a60be0b5e89c4dfb210719": "Trovato backdoor Bashrc {}", + "9a9f27d5f9f8c056fff7986c87a94c30": "È stato scoperto che l'immagine ha backdoor Bashrc: [{}], contenuto di codice dannoso:
{}", + "d8a828116070b9d92315ca309cca1991": "1. Immettere il contenitore distribuito utilizzando l'immagine ed eliminare il codice dannoso sotto il file
2.Controlla se il contenitore è stato invaso e aggiorna il token di accesso o la password dell'account dell'azienda nel contenitore
3.Si consiglia di sostituire l'immagine ufficiale o altri contenitori di distribuzione dell'immagine di fiducia", + "e1439f3f7d25d378078d513a82a3fa87": "File backdoor trovato {}", + "9ede9d4bd542eedf78e39b0acf0206e3": "È stato scoperto che il file backdoor Bashrc [{}] esiste nell'immagine e il contenuto del codice dannoso è:
{}", + "686765b4612ecd8f774648db29a1541d": "cron backdoor scoperto {}", + "390bdc0b3c37a56ede9467b0c220a3b6": "È stato scoperto che l'esistenza di Cron Backdoor [{}] nell'immagine e il contenuto del codice dannoso è:
{}", + "caea084281a3cb2515e5618cd3856163": "Backdoor del sistema trovato: {}", + "d04061273caa56d5a0c3d74f3e9fd482": "È stato scoperto che il file backdoor di sistema [{}] esiste nell'immagine e il contenuto del codice dannoso è:
{{}", + "fc76e0fe415c49cc1c09bf76035fc4e9": "Trovato sshd backdoor {}", + "00b2409f52ef5bc56afe29ccbe5cfa2c": "Trovato il backdoor SSHD soft link: {}, il file colpisce la funzione dannosa [exe = {}; link_file = {}]", + "e747da31a54cd71fb1a2860cae0f9f77": "Ho trovato il backdoor TCPWrapper {}", + "a2b09164c8d23894736bcc6a646861e0": "È stato scoperto che il file backdoor TCPWrapper [{}] esiste nell'immagine e il contenuto del codice dannoso è:
{}", + "a7fd9f6b190b8531039376fbbda5f482": "Gli utenti hanno trovato a rischio di fuga {}", + "5d46ed5f4af3f30cfcc8bd66942f93b4": "Il nome utente {} può completare la fuga del contenitore attraverso il comando [{}], consentendo all'attaccante di ottenere diritti di accesso all'host o ad altri contenitori.Contenuto dannoso:
{}", + "4ca0a18aa36a60613104cacdae514dec": "1. Si consiglia di eliminare l'immagine o non usarla più
2.Se esiste già un'attività che utilizza l'immagine, immettere l'ambiente del contenitore ed eliminare il contenuto dell'utente {} nel file /etc /sudoers.", + "611afea08ae3b216a34dfde4c143f46c": "Versione del sistema non supportata", "68ae8c43a52aac63c5c62e1974afdda6": "L'ID script non può essere vuoto", "eee298ea1d9259c2f0e2061ecd89c21c": "Lo script specificato non esiste", "b68a8dd0c887719b7cc3e10dc11843ce": "La sceneggiatura incorporata di Aapanel non può essere eliminata", @@ -2228,6 +2374,147 @@ "101da618f72223d3eac9e66fe510b04f": "L'ID evento dell'attività non può essere vuoto", "bee903cc3d03ab2c237eefb1d601fbcb": "Esecuzione dello script non riuscita con il messaggio di errore: \\ n {}", "1d78758685e5e2f4efeeb490f8521abd": "\\N", + "ca6977d373320a7fdb51047199d4cc59": "L'amministratore non è installato!", + "38641e6ce3a6369e108eb595672c8edc": "Disinstallazione riuscita!", + "9cae26284a7ad2f46132c1e8e196d089": "Installazione completata con successo!", + "a9a92e55770213c8aa1fb2871dc43563": "Imposta la porta amministratore con successo!", + "b611124a9bad44e328d7ce809912802d": "Imposta con successo!", + "2321763bf0b4cbf345b1e19dc9faec47": "Imposta la versione php dell'amministratore con successo!", + "40a1f70c155550ad2dafa5e556e10c3c": "La versione PHP non si installa!", + "e75e68c65607a7cfcc570d51345d7e33": "Monitor del file", + "983e2622c48ae7231c5d29b135133b0e": "Aggiungi directory monitor: {}", + "15c7df4ddd1d366c2cdfa2689c15369d": "Compilazione del programma di filtro IP non riuscita", + "423c2da1e20a5f2138cc810423475eef": "L'indirizzo IP non può essere vuoto!", + "1e116dc22492b28a7a38a6029416d0e1": "L'indirizzo IP è nel formato sbagliato!", + "8c8f15a1c1cce8bbdc465e865c804b40": "Il periodo di blocco massimo non può superare i 24 giorni!", + "fb86e24ffe47ba150610ba1efd96929a": "Il blocco temporaneo degli indirizzi IP i blocchi CIDR non è supportato", + "bdb199a03e52488d499ea6bb0cb0d1ed": "WAF è richiesto per bloccare i segmenti di indirizzo IP", + "1ac8e9ffcea7cf6e9fa183c1b9038599": "I dati IP non esistono!", + "04d46623edcb5663566cf43f575de9b2": "Il nome del sito web non può essere vuoto!", + "4dcde63f7fd4415f3b5eb6cb889d135c": "L'aggiunta ha avuto successo", + "d303480175994c6ad240cf24a4a99640": "La configurazione del sito Web non esiste!", + "87d1f7257214d09ba39656b72c864bac": "Configurazione dell'account successo!", + "aa5bb2d58da86c4b9160e94d0c4538f1": "Uri non può essere vuoto!", + "ade0ab88aa0ee9c18f0979d5b62b517d": "L'URI esiste già, per favore non aggiungerlo di nuovo!", + "506d9cb0cb2468fd09048bcbe8b37497": "Uri non esiste", + "cf180f27e678d4e297f690e581961417": "Il formato dell'indirizzo di ascolto è sbagliato!", + "1ed0fa9bb8768d56bf2d3232d7067023": "Gamma di porte di ascolto sbagliata!, Requisito: 1024-65535", + "e6aa58b2f41bc53f6b84657d47eb35c1": "Il percorso di salvataggio dei dati non esiste!", + "c87be59ecbed944c2b45fea87d62f473": "Errore in modalità statistica IP, requisito: 0 o 1", + "fbc4861b0190c90a5388e44d2bbac678": "La versione corrente non è disponibile, aggiorna il pannello e riprova", + "8b1d5629a1346da21fcaeb9f8f0db6d2": "Errore in formato orario di inizio!", + "7a238977c4b13d23ac3e6b151a914cab": "Errore in formato tempo di fine!", + "a87a482f3bced3ce16bc9a351e8b5ce8": "L'ora di inizio non può essere maggiore dell'ora di fine!", + "a0ef69b1680461368a9130e770256ca6": "Errore del formato della data!", + "2493958c6f4051bb8d254d77d77b622b": "Errore di granularità temporale, supporto: minuto, ora, data", + "4c4258ffd9a69c8e332346241a3cbdae": "I dati della condizione di negazione sono nel formato sbagliato!", + "b47f4e8b7540cae56e085231c3c984c1": "Access ID non può essere vuoto!", + "fea04488a926034079dc00c5a60a9135": "Il formato ID di accesso non è corretto!", + "da206b8971dcba715ed8cdd1a82736e1": "Access ID non esiste!", + "fd65e390dd8aa35ea3622658247776d0": "Il formato della data non è corretto", + "9a4f1ea39f3a554d4e5431f86eb0450b": "Il nome del sito non può essere vuoto!", + "b59417ef234946819788acfde92a00a7": "La purga ebbe successo", + "aaa3736c0541d4a4d82193c2204ec317": "L'ora di inizio è nel formato sbagliato!", + "e579606ed1219291caeb3bfad786dd3f": "Il tempo di fine è nel formato sbagliato!", + "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "Il formato della data non è corretto!", + "53c85b9d96ea14f3f8224a5d2e659894": "Il parametro non può essere vuoto!", + "9dc21ed8c6025cab9873847e6e1ca506": "Il tipo di query non è corretto!", + "236c6e2f9a266b929b283eda30c2b3b6": "Non sono disponibili dati pertinenti!", + "50fc65b5f19812ccf756b7ad7de7f4cb": "session_id non può essere vuoto!", + "8f2adb53dcb8d2c660159b1f8e8012ed": "L'ID della sessione non è corretto!", + "7f4419a5b09e1a04936f6aba6939521a": "Controllo di configurazione completato!", + "f3df0751d9522bf2e68034bab4cd49a5": "Pulizia di configurazione completata", + "191fae10bdd9d3eb6cb110b524fe40b7": "La sottomissione ha avuto successo", + "f53208c04e48d7ee19222b6adf343810": "Il nome utente non può avere meno di 3 caratteri!", + "251e2cae1dbed2b37f7d16961a606970": "La selezione del livello di autorizzazione non è corretta!", + "a835325a5600b6571a24111e4d318e2c": "Seleziona un sito Web!", + "a669655fa991afcfa0cfa3f62286d944": "La lunghezza della password non può essere inferiore a 5 caratteri!", + "4d8d30e66ad9aaccc738ad99d5083955": "Il nome utente esiste già!", + "12152390a5bf2ebce0f00b0fb5c650a2": "L'aggiunta ha avuto successo!", + "4d1b7f489e07d6ca02ca1910a3884c48": "L'utente non esiste!", + "3e83aa40dd320efb027151c02aab2871": "La lunghezza della password non può essere inferiore a 8 caratteri!", + "d3748b3102cc8ba898f0f0bec842ce9e": "La modifica ha avuto successo!", + "ac75e534c7334e1fd02c68a3993f1568": "La cancellazione ha successo!", + "ca281da1f13858d0b599d19e18a510bf": "Lo stato Web è selezionato in modo errato!", + "c88239bc4a113ab0f02acb9bc31b3437": "La porta web non è corretta!", + "f06e6a5985a91ac55c651e0b573378f0": "La directory di sicurezza web non può essere vuota!", + "41a871d7ec26993be1367226321e06fa": "La lunghezza dell'indirizzo di ingresso della sicurezza non può essere inferiore a 6 cifre!", + "16f83d0969b9f7fe56ac3b55f9dedb26": "Questo ingresso è già occupato dal pannello, utilizza un ingresso diverso!", + "066df5a1cf19314e0265a1eb396848ac": "L'indirizzo di ingresso è formattato in modo errato, ad esempio: /my_monitor", + "794ee58637251012717d7e565aafc2a1": "L'impostazione ha avuto successo!", + "2531ce72ea98e5aa8f4953eee783b540": "Nessun registro degli errori trovati!", + "0fc543dae93d3f76f5f7ff8048f5c398": "Non sono stati trovati IP mascherati per l'esportazione!", + "5552ac99360952da2cf289f556ad19a6": "Non sono stati trovati IP mascherati per sincronizzare!", + "3332452d6ecd015473b133de021a9e06": "La sincronizzazione è riuscita!", + "e6afdb1b63ca733f5d1741c7eff7a64e": "Viene elaborato, non ripeterlo!", + "696212205a77e698860ff5195992642b": "L'operazione di riparazione è completa", + "97cb85456b49af4258f4c8da38bb576a": "L'attività programmata viene aggiunta correttamente!", + "2739213f569742c0782252f41279c060": "Impossibile aggiungere un'attività programmata", + "1cc4efde4fab0b4bbc2812a8b58f59b0": "Si prega di specificare un nome del sito", + "3b5ef9e1ea5a8dbd9606075686dbf15f": "Si prega di specificare un intervallo di date", + "f8412f656685f470a82b74de3d9f24d5": "L'attività di esportazione esiste già", + "96ed379ec1882dcf52f0ff65057efb92": "Si prega di specificare i campi che si desidera esportare", + "4e698e0709485a0e93a706964b748c5b": "Tipo di esportazione sconosciuto", + "2a2dbc12afac446fe408eb78453bc6c2": "L'attività di esportazione non esiste", + "9ff8782f584db728284fadd719967806": "C'è stato un errore con l'attività di esportazione", + "b4421542e9cff8ce336075b668b8f87e": "Il record di esportazione non esiste", + "41564d1cd7f8ecb23bcc590cb2217518": "Inserisci una nuova directory di dati", + "699856a3cc697d8afcfd04dcd2f0729a": "La directory specificata è la stessa della directory corrente", + "103422cd692bcaf56a7367075caf2274": "La directory specificata è suddivisa sullo stesso disco della directory corrente, quindi non è richiesta alcuna migrazione dei dati", + "bcbd9605d3b8753bb8afbc765b293e01": "Le attività di modifica e migrazione dei dati sono iniziate", + "967a57ad58881afe2c5da6cf0d7fce8c": "Immettere l'indirizzo IP e il nome del crawler", + "62b73e6c2a169296e73edf8a4d1e02f0": "Immettere un indirizzo IP corretto", + "0e1a26f6137c04f0f80956210069e46d": "Inserisci il nome del crawler corretto", + "fe8d50ca26f2e864d2bf4a932801bb85": "Errore imprevisto, prova a correggere il plugin", + "21aa998a1dee8774bc88ce2a070bf4de": "Inserisci un indirizzo IP", + "2e0c672edc06ef05e44de98ac1b7a47d": "La cancellazione ha successo", + "0f9d9b728fba6427b5ff4da49aee1738": "Il ragno è stato selezionato in modo errato!", + "e48c86e701ddba3ab084d5457aa58714": "L'IP non può essere vuoto!", + "3bdb147b7a040582220aa7f1ce2af19b": "Il formato IP non è corretto!", + "b60597b6a9525341fa5d4d441084658d": "Non sono stati interrogati i record di risoluzione dell'indirizzo IP", + "86e9360dac1c5eece29f32c9aba8011d": "Il salvataggio ebbe successo", + "e5320166e7623b6a39f9a7af7c20c787": "Specificando un diverso errore del parametro del sito Web", + "c21fbb62edf94306d2e73365e6e7d637": "Il parametro che specifica un altro sito Web non può essere vuoto", + "c7fae0c9886cac3924fe5e459e171ab1": "La cancellazione non è riuscita", + "9a84d2910d3d36b78d7060f1c77e27f6": "Il nome del sito non è specificato", + "0987458a95b8bb7d6cdf9fa0630b6407": "Il server corrente non è nginx e non supporta la raccolta personalizzata", + "b925dfe3295278bd81a85bded66da01d": "Il codice di stato è nel formato sbagliato", + "2a8793bbb8bc38a7df9d8c796648526a": "Non è stato selezionato nessun nome in sito", + "6878600890a41b84c145423618ea2431": "Nessuna informazione sul sito Web trovata", + "eff712873c55654bf48eaf421a184e73": "Non è stato inserito alcun nome di raccolta personalizzato", + "116208583eac10a8769774a6eaaff926": "Il tipo di acquisizione non è corretto", + "fff3d7679cb121a30e68a104b58c934e": "Il contenuto di raccolta non è stato inserito", + "75db42595fc9aee34df76df808712f92": "I nomi della raccolta personalizzati non possono contenere caratteri speciali ({})", + "9667904e74175dfde9824cb8cd099ce7": "Il contenuto dell'intestazione dovrebbe iniziare con $ http_", + "4c61d0ee460aa25eb6b5c413c46c9236": "Il contenuto di raccolta del tipo di corpo dovrebbe contenere [variabile di registro $ + nginx]", + "c03680a7ae35b7ce5b62f67b854d3b06": "Il contenuto di raccolta dovrebbe contenere [$ + nginx log variabile]", + "d621342512cf7910a6dc4e7d736bcc63": "Il contenuto della raccolta non può contenere caratteri speciali 【", + "b4704dc559a05c5721c095b97c4dbbc0": "Il nome della raccolta personalizzato è duplicato", + "6594b670e8bd06e352f112c1bf194fc1": "Il contenuto di raccolta personalizzato è duplicato", + "a531c58ef7fefbbbd79becda53ede191": "Non è specificato un nome di raccolta personalizzato", + "88c0c3ae4ef97b6069a35672b2caa05c": "Il contenuto di raccolta del tipo di corpo dovrebbe contenere [variabile di registro $ + nginx]", + "41353000c0d351db90c9eec095bae879": "Ci sono già collezioni duplicate, denominate : {}", + "ce78b7a225f05ece35ed7adc68b08a88": "La configurazione di acquisizione da modificare non è stata trovata", + "521df7df29b44fcee614de96cecca61c": "La cancellazione ha successo", + "3b0ccb5c759b0941d50e331b22013560": "Estensioni non supportate: {}", + "7ea48870539b84996d1b1691c22823a7": "Il formato di dati modificato non è corretto", + "bc64045195c8ed198a69772b3a204ef2": "I dati da modificare non vengono specificati", + "bb02871a5e118841b95b69c5bff55baf": "La lista nera è nel formato sbagliato", + "1aac00a8c681100fd27b287c0b0516f1": "Il formato di configurazione di build è analizzato in modo errato", + "f6df35a69157ae1fca6415b043485334": "L'ID dell'attività non è specificato", + "524a477cee9485a5a80a860e2bc5b5d5": "L'ID attività non è corretto", + "4b5d95ed20303e337aec42486a0fb3fd": "Il sito web attuale non è stato interrogato", + "19e777b7c8cdc1ce56ad2f4fe735b2b7": "Il sito Web corrente non interroga la directory in esecuzione", + "45484ac5ec748cf3362d425ed7142b75": "La regola non può essere vuota", + "b36196750a032a791ecc8035853dc648": "Il nome della regola non può essere vuoto", + "cfa7bc3b484b8068e78bc6f55a2aaeaf": "Nessuna regola specificata", + "835365605f9e08c44c0b7f65a422d059": "Il parametro della data non è corretto", + "4fa3e528186292138b224a0a1d46ec59": "Il nome del sito Web non è corretto", + "3769ee974734f97166d6bce6b96e9b4e": "Errori di dati", + "daddfa03b4ea762e009a36ce970b2b59": "Non esiste un account Baidu impostato", + "0379d9c081b6fd9ec2fd86e8672a4e72": "Se non riesci a ottenere i dati, è possibile che le informazioni di accesso siano scadute e puoi provare ad accedere di nuovo", + "8057e57596c33acf04619825d625a483": "L'aggiornamento ha avuto successo", + "3149165696693c4f6fef18928261a50f": "Non esiste un account 360 impostato", "add390e6467c956fbb7f6da0f51d23d6": "L'attività di invio è stata eseguita", "e8edb193e1cb171a17efe2765d72af71": "Il file non esiste", "63d325d5c4dfd07afdf888fdf727542e": "Importa correttamente, salta {} utenti non sottoscritti, indirizzo e -mail duplicato: {}", @@ -2451,141 +2738,6 @@ "decc12f91f9703a201987fdeabe572a4": "Il sito con lo stesso nome [{}] esiste già, modificalo prima di crearlo", "de67e3b2c564a899fe3195606036a7f1": "Installazione riuscita", "8d5496d961b4d4e08474b20c1450737a": "Impossibile creare un sito", - "e75e68c65607a7cfcc570d51345d7e33": "Monitor del file", - "983e2622c48ae7231c5d29b135133b0e": "Aggiungi directory monitor: {}", - "15c7df4ddd1d366c2cdfa2689c15369d": "Compilazione del programma di filtro IP non riuscita", - "423c2da1e20a5f2138cc810423475eef": "L'indirizzo IP non può essere vuoto!", - "1e116dc22492b28a7a38a6029416d0e1": "L'indirizzo IP è nel formato sbagliato!", - "8c8f15a1c1cce8bbdc465e865c804b40": "Il periodo di blocco massimo non può superare i 24 giorni!", - "fb86e24ffe47ba150610ba1efd96929a": "Il blocco temporaneo degli indirizzi IP i blocchi CIDR non è supportato", - "bdb199a03e52488d499ea6bb0cb0d1ed": "WAF è richiesto per bloccare i segmenti di indirizzo IP", - "1ac8e9ffcea7cf6e9fa183c1b9038599": "I dati IP non esistono!", - "04d46623edcb5663566cf43f575de9b2": "Il nome del sito web non può essere vuoto!", - "b611124a9bad44e328d7ce809912802d": "Imposta con successo!", - "4dcde63f7fd4415f3b5eb6cb889d135c": "L'aggiunta ha avuto successo", - "d303480175994c6ad240cf24a4a99640": "La configurazione del sito Web non esiste!", - "87d1f7257214d09ba39656b72c864bac": "Configurazione dell'account successo!", - "aa5bb2d58da86c4b9160e94d0c4538f1": "Uri non può essere vuoto!", - "ade0ab88aa0ee9c18f0979d5b62b517d": "L'URI esiste già, per favore non aggiungerlo di nuovo!", - "506d9cb0cb2468fd09048bcbe8b37497": "Uri non esiste", - "cf180f27e678d4e297f690e581961417": "Il formato dell'indirizzo di ascolto è sbagliato!", - "1ed0fa9bb8768d56bf2d3232d7067023": "Gamma di porte di ascolto sbagliata!, Requisito: 1024-65535", - "e6aa58b2f41bc53f6b84657d47eb35c1": "Il percorso di salvataggio dei dati non esiste!", - "c87be59ecbed944c2b45fea87d62f473": "Errore in modalità statistica IP, requisito: 0 o 1", - "fbc4861b0190c90a5388e44d2bbac678": "La versione corrente non è disponibile, aggiorna il pannello e riprova", - "8b1d5629a1346da21fcaeb9f8f0db6d2": "Errore in formato orario di inizio!", - "7a238977c4b13d23ac3e6b151a914cab": "Errore in formato tempo di fine!", - "a87a482f3bced3ce16bc9a351e8b5ce8": "L'ora di inizio non può essere maggiore dell'ora di fine!", - "a0ef69b1680461368a9130e770256ca6": "Errore del formato della data!", - "2493958c6f4051bb8d254d77d77b622b": "Errore di granularità temporale, supporto: minuto, ora, data", - "4c4258ffd9a69c8e332346241a3cbdae": "I dati della condizione di negazione sono nel formato sbagliato!", - "b47f4e8b7540cae56e085231c3c984c1": "Access ID non può essere vuoto!", - "fea04488a926034079dc00c5a60a9135": "Il formato ID di accesso non è corretto!", - "da206b8971dcba715ed8cdd1a82736e1": "Access ID non esiste!", - "fd65e390dd8aa35ea3622658247776d0": "Il formato della data non è corretto", - "9a4f1ea39f3a554d4e5431f86eb0450b": "Il nome del sito non può essere vuoto!", - "b59417ef234946819788acfde92a00a7": "La purga ebbe successo", - "aaa3736c0541d4a4d82193c2204ec317": "L'ora di inizio è nel formato sbagliato!", - "e579606ed1219291caeb3bfad786dd3f": "Il tempo di fine è nel formato sbagliato!", - "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "Il formato della data non è corretto!", - "53c85b9d96ea14f3f8224a5d2e659894": "Il parametro non può essere vuoto!", - "9dc21ed8c6025cab9873847e6e1ca506": "Il tipo di query non è corretto!", - "236c6e2f9a266b929b283eda30c2b3b6": "Non sono disponibili dati pertinenti!", - "50fc65b5f19812ccf756b7ad7de7f4cb": "session_id non può essere vuoto!", - "8f2adb53dcb8d2c660159b1f8e8012ed": "L'ID della sessione non è corretto!", - "7f4419a5b09e1a04936f6aba6939521a": "Controllo di configurazione completato!", - "f3df0751d9522bf2e68034bab4cd49a5": "Pulizia di configurazione completata", - "191fae10bdd9d3eb6cb110b524fe40b7": "La sottomissione ha avuto successo", - "f53208c04e48d7ee19222b6adf343810": "Il nome utente non può avere meno di 3 caratteri!", - "251e2cae1dbed2b37f7d16961a606970": "La selezione del livello di autorizzazione non è corretta!", - "a835325a5600b6571a24111e4d318e2c": "Seleziona un sito Web!", - "a669655fa991afcfa0cfa3f62286d944": "La lunghezza della password non può essere inferiore a 5 caratteri!", - "4d8d30e66ad9aaccc738ad99d5083955": "Il nome utente esiste già!", - "12152390a5bf2ebce0f00b0fb5c650a2": "L'aggiunta ha avuto successo!", - "4d1b7f489e07d6ca02ca1910a3884c48": "L'utente non esiste!", - "3e83aa40dd320efb027151c02aab2871": "La lunghezza della password non può essere inferiore a 8 caratteri!", - "d3748b3102cc8ba898f0f0bec842ce9e": "La modifica ha avuto successo!", - "ac75e534c7334e1fd02c68a3993f1568": "La cancellazione ha successo!", - "ca281da1f13858d0b599d19e18a510bf": "Lo stato Web è selezionato in modo errato!", - "c88239bc4a113ab0f02acb9bc31b3437": "La porta web non è corretta!", - "f06e6a5985a91ac55c651e0b573378f0": "La directory di sicurezza web non può essere vuota!", - "41a871d7ec26993be1367226321e06fa": "La lunghezza dell'indirizzo di ingresso della sicurezza non può essere inferiore a 6 cifre!", - "16f83d0969b9f7fe56ac3b55f9dedb26": "Questo ingresso è già occupato dal pannello, utilizza un ingresso diverso!", - "066df5a1cf19314e0265a1eb396848ac": "L'indirizzo di ingresso è formattato in modo errato, ad esempio: /my_monitor", - "794ee58637251012717d7e565aafc2a1": "L'impostazione ha avuto successo!", - "2531ce72ea98e5aa8f4953eee783b540": "Nessun registro degli errori trovati!", - "0fc543dae93d3f76f5f7ff8048f5c398": "Non sono stati trovati IP mascherati per l'esportazione!", - "5552ac99360952da2cf289f556ad19a6": "Non sono stati trovati IP mascherati per sincronizzare!", - "3332452d6ecd015473b133de021a9e06": "La sincronizzazione è riuscita!", - "e6afdb1b63ca733f5d1741c7eff7a64e": "Viene elaborato, non ripeterlo!", - "696212205a77e698860ff5195992642b": "L'operazione di riparazione è completa", - "97cb85456b49af4258f4c8da38bb576a": "L'attività programmata viene aggiunta correttamente!", - "2739213f569742c0782252f41279c060": "Impossibile aggiungere un'attività programmata", - "1cc4efde4fab0b4bbc2812a8b58f59b0": "Si prega di specificare un nome del sito", - "3b5ef9e1ea5a8dbd9606075686dbf15f": "Si prega di specificare un intervallo di date", - "f8412f656685f470a82b74de3d9f24d5": "L'attività di esportazione esiste già", - "96ed379ec1882dcf52f0ff65057efb92": "Si prega di specificare i campi che si desidera esportare", - "4e698e0709485a0e93a706964b748c5b": "Tipo di esportazione sconosciuto", - "2a2dbc12afac446fe408eb78453bc6c2": "L'attività di esportazione non esiste", - "9ff8782f584db728284fadd719967806": "C'è stato un errore con l'attività di esportazione", - "b4421542e9cff8ce336075b668b8f87e": "Il record di esportazione non esiste", - "41564d1cd7f8ecb23bcc590cb2217518": "Inserisci una nuova directory di dati", - "699856a3cc697d8afcfd04dcd2f0729a": "La directory specificata è la stessa della directory corrente", - "103422cd692bcaf56a7367075caf2274": "La directory specificata è suddivisa sullo stesso disco della directory corrente, quindi non è richiesta alcuna migrazione dei dati", - "bcbd9605d3b8753bb8afbc765b293e01": "Le attività di modifica e migrazione dei dati sono iniziate", - "967a57ad58881afe2c5da6cf0d7fce8c": "Immettere l'indirizzo IP e il nome del crawler", - "62b73e6c2a169296e73edf8a4d1e02f0": "Immettere un indirizzo IP corretto", - "0e1a26f6137c04f0f80956210069e46d": "Inserisci il nome del crawler corretto", - "fe8d50ca26f2e864d2bf4a932801bb85": "Errore imprevisto, prova a correggere il plugin", - "21aa998a1dee8774bc88ce2a070bf4de": "Inserisci un indirizzo IP", - "2e0c672edc06ef05e44de98ac1b7a47d": "La cancellazione ha successo", - "0f9d9b728fba6427b5ff4da49aee1738": "Il ragno è stato selezionato in modo errato!", - "e48c86e701ddba3ab084d5457aa58714": "L'IP non può essere vuoto!", - "3bdb147b7a040582220aa7f1ce2af19b": "Il formato IP non è corretto!", - "b60597b6a9525341fa5d4d441084658d": "Non sono stati interrogati i record di risoluzione dell'indirizzo IP", - "86e9360dac1c5eece29f32c9aba8011d": "Il salvataggio ebbe successo", - "e5320166e7623b6a39f9a7af7c20c787": "Specificando un diverso errore del parametro del sito Web", - "c21fbb62edf94306d2e73365e6e7d637": "Il parametro che specifica un altro sito Web non può essere vuoto", - "c7fae0c9886cac3924fe5e459e171ab1": "La cancellazione non è riuscita", - "9a84d2910d3d36b78d7060f1c77e27f6": "Il nome del sito non è specificato", - "0987458a95b8bb7d6cdf9fa0630b6407": "Il server corrente non è nginx e non supporta la raccolta personalizzata", - "b925dfe3295278bd81a85bded66da01d": "Il codice di stato è nel formato sbagliato", - "2a8793bbb8bc38a7df9d8c796648526a": "Non è stato selezionato nessun nome sito", - "6878600890a41b84c145423618ea2431": "Nessuna informazione sul sito Web trovata", - "eff712873c55654bf48eaf421a184e73": "Non è stato inserito alcun nome di raccolta personalizzato", - "116208583eac10a8769774a6eaaff926": "Il tipo di acquisizione non è corretto", - "fff3d7679cb121a30e68a104b58c934e": "Il contenuto di raccolta non è stato inserito", - "75db42595fc9aee34df76df808712f92": "I nomi della raccolta personalizzati non possono contenere caratteri speciali ({})", - "9667904e74175dfde9824cb8cd099ce7": "Il contenuto dell'intestazione dovrebbe iniziare con $ http_", - "4c61d0ee460aa25eb6b5c413c46c9236": "Il contenuto di raccolta del tipo di corpo dovrebbe contenere [variabile di registro $ + nginx]", - "c03680a7ae35b7ce5b62f67b854d3b06": "Il contenuto di raccolta dovrebbe contenere [$ + nginx log variabile]", - "d621342512cf7910a6dc4e7d736bcc63": "Il contenuto della raccolta non può contenere caratteri speciali 【", - "b4704dc559a05c5721c095b97c4dbbc0": "Il nome della raccolta personalizzato è duplicato", - "6594b670e8bd06e352f112c1bf194fc1": "Il contenuto di raccolta personalizzato è duplicato", - "a531c58ef7fefbbbd79becda53ede191": "Non è specificato un nome di raccolta personalizzato", - "88c0c3ae4ef97b6069a35672b2caa05c": "Il contenuto di raccolta del tipo di corpo dovrebbe contenere [variabile di registro $ + nginx]", - "41353000c0d351db90c9eec095bae879": "Ci sono già collezioni duplicate, denominate : {}", - "ce78b7a225f05ece35ed7adc68b08a88": "La configurazione di acquisizione da modificare non è stata trovata", - "521df7df29b44fcee614de96cecca61c": "La cancellazione ha successo", - "3b0ccb5c759b0941d50e331b22013560": "Estensioni non supportate: {}", - "7ea48870539b84996d1b1691c22823a7": "Il formato di dati modificato non è corretto", - "bc64045195c8ed198a69772b3a204ef2": "I dati da modificare non vengono specificati", - "bb02871a5e118841b95b69c5bff55baf": "La lista nera è nel formato sbagliato", - "1aac00a8c681100fd27b287c0b0516f1": "Il formato di configurazione di build è analizzato in modo errato", - "f6df35a69157ae1fca6415b043485334": "L'ID dell'attività non è specificato", - "524a477cee9485a5a80a860e2bc5b5d5": "L'ID attività non è corretto", - "4b5d95ed20303e337aec42486a0fb3fd": "Il sito web attuale non è stato interrogato", - "19e777b7c8cdc1ce56ad2f4fe735b2b7": "Il sito Web corrente non interroga la directory in esecuzione", - "45484ac5ec748cf3362d425ed7142b75": "La regola non può essere vuota", - "b36196750a032a791ecc8035853dc648": "Il nome della regola non può essere vuoto", - "cfa7bc3b484b8068e78bc6f55a2aaeaf": "Nessuna regola specificata", - "835365605f9e08c44c0b7f65a422d059": "Il parametro della data non è corretto", - "4fa3e528186292138b224a0a1d46ec59": "Il nome del sito Web non è corretto", - "3769ee974734f97166d6bce6b96e9b4e": "Errori di dati", - "daddfa03b4ea762e009a36ce970b2b59": "Non esiste un account Baidu impostato", - "0379d9c081b6fd9ec2fd86e8672a4e72": "Se non riesci a ottenere i dati, è possibile che le informazioni di accesso siano scadute e puoi provare ad accedere di nuovo", - "8057e57596c33acf04619825d625a483": "L'aggiornamento ha avuto successo", - "3149165696693c4f6fef18928261a50f": "Non esiste un account 360 impostato", "74a7684631b29d814a52e3401576411a": "Il formato tempo non è corretto", "f146f571f352f376dda16114593afd32": "Non file PHP in questa cartella", "a5ef7f95136c8e93b70c99cdc25d3b1b": "La regola è vuota o il file della regola è sbagliato", @@ -2698,13 +2850,13 @@ "5ccddb202b5b5e7f96aa3181bda9beb3": "Inserisci il tipo!", "2913b96effaf71ad6c7487658e4056ce": "Inserisci il nome dell'area!", "9c4bd2c334c14c48159a045e21a279c6": "Il tipo inserito non è corretto!", - "66d6ebf480448bc6846362868a584866": "Non è consentito impostare【Cina continentale】E【Al di fuori della Cina continentale】一Uguale all'apertura delle restrizioni regionali!", + "66d6ebf480448bc6846362868a584866": "Non è consentito impostare【Cina continentaleE【Al di fuori della Cina continentale】一Uguale all'apertura delle restrizioni regionali!", "60e59018ad2d3e94f166beed6445cf7f": "Inserisci un ID!", "86484538f21c95f5d8b2e1df43135470": "Si prega di entrare in apertura!", "230f490b7f059873ba86a8ad13a8b007": "Inserisci lo stato!", "ee89c7f6d23c70ad8f7f0072e3e0cb9e": "Non sono stati trovati parametri per questo URL!", "d1a198fffa0319462af0ceca6bc39dca": "L'aggiunta di un URL con un URL [/] non è consentito alla whitelist", - "0711b255059aaab715cfb46f6c503af7": "URL [ /] non è consentito aggiungere alla whitelist", + "0711b255059aaab715cfb46f6c503af7": "URL [ /] non è consentito essere aggiunto alla whitelist", "e233e412faa6c35ecb389c502a7b6537": "Impostare correttamente", "e78511f517dc9b86fd743725e8eae766": "Il tempo di blocco non può superare 86400!", "14fc8ce684c7f8c9cbd9357d46db244c": "L'intestazione della richiesta che hai aggiunto esiste già!", @@ -2760,7 +2912,6 @@ "e200e571a58c37376c8498c2dc506c95": "Il tipo [param] è sbagliato, ha bisogno di formato JSON", "96ed9027cae5703401727a3d07764133": "L'URI attuale non esiste", "466767592170f74d16bcac3034109b33": "L'argomento del percorso deve essere superato", - "d81f83ae44da0682974272b976e8e550": "Recupero riuscito", "c2d2481eafb29f7e1525c6c63441359e": "Si prega di passare il nome del sito Web", "4950f82b4231ebbfa780bcf4eec4c545": "Inserisci l'indirizzo IP corretto!", "abd5af540ed5a858d02b03846d94c1f4": "inesistenza!", @@ -2844,7 +2995,7 @@ "ab46bbdd4119a38d6ff4bdbd7c9065fc": "Il parametro non è corretto, manca il parametro di identità", "25cf1a0c49aeb9d32801a5ab30507e7f": "Il parametro non è corretto, manca il parametro di tipo", "00204d3b9a172174c943f8660ec75291": "Il parametro non è corretto, manca il parametro di testo", - "30454e0ce7a66a8fddddadcf19fce8f0": "Il parametro non è corretto, tipo I parametri consentono solo testo predefinito", + "30454e0ce7a66a8fddddadcf19fce8f0": "Il parametro non è corretto, gli unici parametri consentiti sono e testo predefinito", "5c1dcb6e10270159f05daa76de3b5437": "I QP non possono essere inferiori a 0", "4443c53175005bd3105c50baddd81660": "I QP non possono essere superiori a 10.000", "262feefe0c785688578a5f642d683225": "Il tempo non può essere maggiore di 60", @@ -2852,7 +3003,6 @@ "215a4c6687559aa75d554670e06f3694": "L'utente non può essere maggiore di 10.000", "902ee0e2b591f9872a41c319c402e0b9": "La lunghezza del testo non può essere maggiore di 200", "2307dba1bc155ca6f1a5bbf21dc4a258": "Lo pseudo-statico contiene la direttiva [! -E $ request_filename], che deve essere rimossa prima che possa essere utilizzata questa funzione!", - "fa5e4af74d3d68ba371e6dcf84595c3d": "Il sito web non esiste", "db8b3ac7a5408e3bc0d103bb9b071c7b": "Il parametro non è corretto, manca il parametro dati", "a0318cc60ff3297d4bef0399dc89fa8d": "Il parametro non è corretto, il parametro dati non è in formato JSON", "8b682d8c8139c2ea686c7a87a03ba292": "Il parametro non è corretto, manca il parametro del nome", @@ -2890,6 +3040,12 @@ "50f223163c6f8e9f6b46d66165252cab": "SUCCESSO DI SCHEDDOWD!", "02eef33534a6f8b3c95fc65e4f98bea9": "Informazioni incomplete", "2f45c6e0ccf998c7d31b3764e7da3751": "I nomi delle note non possono essere più lunghi di 15 caratteri", + "6e3ce0906145a9641111ebbf7735f145": "Telegram non è riuscito a inviare {}", + "27285cc132e6c145a142ae2dff054ace": "Il nome della nota non può superare i 15 caratteri", + "b136ab8957d5ede7e3747fcc927a49aa": "Errore del formato dei parametri", + "4ccc991965b1b5bbe3efd6b65a1cd6fb": "Il tipo di corpo deve essere JSON, forma di dati o null", + "b0b017688b107601f2b3439381c4c61b": "Il metodo di invio non è corretto", + "4f4979589df1b84ac44fc64a92e2b3f3": "Verifica se l'opzione SSL è sbagliata", "85284ecbde15ff997e89e6e8f07e399b": "Le informazioni di WeChat non sono configurate correttamente", "3fb32283f52bea8068006817c5b9b95b": "L'incontro ha successo", "8acd58125d3f7cc181a71926ef5c8a4b": "Impossibile collegare al cloud", @@ -2905,14 +3061,14 @@ "2783bb2e5b99dce08138bf58d0880603": "Mittente corrispondente non trovato", "b5a30e6f46753c06ada44d6bbd757599": "Elimina con successo", "81550843cd0a2d7e046cb23a868f8e8e": "L'invio ha avuto successo", - "6e3ce0906145a9641111ebbf7735f145": "Telegram non è riuscito a inviare {}", - "27285cc132e6c145a142ae2dff054ace": "Il nome della nota non può superare i 15 caratteri", - "b136ab8957d5ede7e3747fcc927a49aa": "Errore del formato dei parametri", - "4ccc991965b1b5bbe3efd6b65a1cd6fb": "Il tipo di corpo deve essere JSON, forma di dati o null", - "b0b017688b107601f2b3439381c4c61b": "Il metodo di invio non è corretto", - "4f4979589df1b84ac44fc64a92e2b3f3": "Verifica se l'opzione SSL è sbagliata", "bb8f2701fa6b013fe8aa74659ceda547": "Impossibile leggere i dati delle attività.", "b12cc83d0b14fe739a930fd84d10ae8d": "Il compito non è stato trovato.", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "Sono supportati solo i tipi di contenitore e app", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "La versione {} per l'applicazione di {} non esiste", + "a5c1e82e4d1142b8c7e0bc1499446181": "L'INDIRIZZO GIT NON È IMPOSTATO", + "4e24bbe093c9dfb90092a0f4e71733dc": "Il nome del ramo non è impostato", + "b3c02fc58b92f549f529992c8a696a66": "Il percorso del file zip non è impostato", + "eecf07d92b354565df633b06401206a1": "Seleziona il percorso del file", "eb9eb53b7ac221c64f6f32c547317d22": "Il parametro del percorso non può essere vuoto", "0444d0f0434a4d910eb7a06039e39066": "[{}] il file non esiste", "f4c3904df3aa98458b5f99bd5519e409": "{} completato, se il registro non è eccezione per chiudere questa finestra! \\ r \\ n", @@ -2956,6 +3112,9 @@ "1b6d9f6dc5480584f937681a5d9f0a80": "Informazioni sulla cache non trovate", "f013f8c1d30136733e3d476dbe3a238e": "La configurazione aggiornata ha esito positivo", "3d928c01114361a57fb24c42d9a1ee2d": "Impossibile aggiornare la configurazione: {}", + "795d1693702d930f7fc18edfb0f1c0d3": "Configurazione errata del server MCP", + "a16d1dbe265c57e0417ae396c3c30043": "Nessun servizio trovato [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] Nessuna immagine trovata", "092ca03f32caffd34d3f0532836283b7": "Il file di script per deepseek_r1 non è stato trovato", "17ee8c2efafe32a5d204e039e971aee4": "Meno di 1550 MB di memoria impedisce la distribuzione di DeepSeek R 1", "d3eb7a147ac81b2f691a6e7ad42cc83c": "Nessuna elaborazione richiesta", @@ -2986,7 +3145,6 @@ "2140e826934629d9a43ba2bf4f2b1774": "Si prega di passare il parametro dipendente_app!", "2ab5fb77429e37f42b87e205d6e51728": "Si prega di passare il parametro Service_Name!", "9d6521661f6a152c21bf6d4305d5c9b3": "Passa il parametro App_Name!", - "e880101cd795726a7c8e2c2f4033f9dc": "Il backup ha fallito!", "e020f13e1a68b8030d7038cea78b3aaa": "Backup di successo!", "c4dcfb467d82071a7a4cbbe0b5036f9e": "Non ci sono ancora dati di backup!", "76b5c77ee72a9ffa0f4b3a8e0101ad41": "Si prega di passare il parametro file_name!", @@ -3008,6 +3166,13 @@ "7b016fb85c09d39e89eb1875e590a6ac": "Impossibile ottenere la categoria dell'applicazione, fare clic su [Elenco delle applicazioni di aggiornamento] nell'angolo in alto a destra", "20552a0ed8eef740c631cc049fd940b9": "Errore del tipo di applicazione, si prega di passare: {}!", "c0963001ffeaec423d1be82d464d6a1a": "Passa il parametro ID/Service_Name!", + "4de8e45b499205551f4a09fd074e5246": "Parametri mancanti!id", + "02e85c0a0fa01fabdb5426af13e87853": "Parametri mancanti!nomeapp", + "d910ee67a0875a17b6e663f9e19369a4": "Questo collegamento all'app non è supportato!", + "32d030406e8d755a59468a50bd385b22": "Impossibile ottenere il contenitore", + "c8e0f1ed3c37b015ee446297591d172f": "Parametri mancanti!nome_app", + "dad9445733497150b5f2cd29a5aed506": "Il nome dell'app non è legale, non includere caratteri illegali!", + "a04daa98db618d6c2a19aeed5af39448": "Nessun file docker-compose.yml trovato per l'app specificata!", "75d0c803cc4694e08d99d958ef762fcc": "Il nome di dominio non può essere vuoto!", "676c8a7788ad0ddcb68d53fc7d960679": "Impossibile creare una rete di rete Baota.err: {}", "23d07f1e537a8809b268a60a6881f44c": "Errore dell'intervallo di porte, immettere una porta tra 0-65535!", @@ -3016,7 +3181,7 @@ "b4bf995bdf5a4506e8286bbd9b24fc2b": "Si prega di passare il parametro del dominio!", "6473522415a76cf1e712b23980020814": "Si prega di passare il parametro Disable_Domain!", "4522d1a945678e134f39e5909db6ac81": "Passa il parametro App_Name!", - "6da74914983889333884da51c3aa400a": "Per favore, passa App_Path parametro!", + "6da74914983889333884da51c3aa400a": "请传 App_Path 参数!", "8267489f1a242a5034b5ffd66fd504a0": "Si prega di passare il parametro Memory_Limit!", "658658f81426b1d37bae43373d44498b": "Si prega di passare il parametro S_Version!", "6a40ca48521720e9a084fd682c55efcb": "Si prega di passare il parametro Service_Name!", @@ -3035,11 +3200,30 @@ "2025d918448073508d336b72a7a28093": "Il database esiste già!", "4a8f0a2ac362e62ba4e76f52b5791f0e": "La creazione ha successo!", "76f3f12040afb77724966e2af67ab403": "Si prega di passare il parametro del database!", + "74fd3ba5b92aa59e471161d2a585a93c": "Il parametro model_name non può essere nullo", + "760a1226f2ba701b04963681ab97d575": "Il parametro model_version non può essere nullo", + "2a88d88050ddcc0e28f0da4576be2232": "Il parametro service_name non può essere nullo", + "fd0f83d70400b1dd9f6ae9c093638411": "Impossibile ottenere informazioni sul contenitore, l'esecuzione di docker-compose è eccezionale!", + "2aec223006d3894d3c1a48bca642c141": "Il modello è in fase di download, controlla i log più tardi", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "Impossibile eliminare il modello, eccezione di esecuzione docker-compose!", + "d75a01e0d2c0cb8dad89216653024903": "Eliminazione del modello riuscita!", "bf483666a33d372f729985363d512d74": "Il nome di dominio principale non può essere un DNS generico", "3c4b1f6d2d9ef27ace95adceea599588": "L'aggiunta non è riuscita e i dati non possono essere inseriti nel database del sito", "20825a634340a0b49b1a5e7f2fe47ea3": "L'aggiunta non è riuscita e i dati non possono essere inseriti nel database del sito Web Docker", "653f81d3e5516550e6d5e35abcdbe97c": "[{}] è la generazione inversa del pannello e l'autenticazione HTTP di [/] non può essere eliminata!", "d4b66e7369e5077a3c31ad79629f0ab9": "Si prega di passare in un elenco di siti Web che devono essere eliminati!", + "f0501638237d7e8f934ec55ac3ffb20f": "Se l'installazione fallisce, controlla la rete o installa git manualmente", + "608113c9694987fa65b22ecb164aee59": "L'ambiente è stato installato correttamente", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "La directory apphub non esiste", + "7ec67f9826a24ca4a930a6e168ee9611": "La risoluzione ha avuto successo", + "af2c4fa868813e47b80859a0b36e00f4": "LE INFORMAZIONI GIT SONO CONFIGURATE CON SUCCESSO", + "2b038e106d4ca5c11b787e16c73253ef": "Se non lo fai", + "12d1b3062be6f8bb374511323c349ed7": "Per favore imposta prima le informazioni git", + "798cd5a257af539ecfe6bb44f45ee788": "Importazione da Git non riuscita", + "8170f5d37a617dcbf16fe8dd414073dc": "Importazione da Git riuscita", + "6e40e5a8ad741ca4bd714fa52ef32333": "Il formato del file non è corretto, seleziona il file zip o gz", + "c4996991c50032c9b296c11da356acb2": "Errore di importazione:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "Importazione riuscita", "e48121dc556643fd31b26c190eedbad3": "Solo Nginx è supportato, installa nginx prima dell'uso!", "135f7ef9aeb50bf7b988416b0a679dff": "Il nome di dominio non può essere vuoto, inserisci almeno un nome di dominio!", "c82b42d921224a0699f854c28c2450d2": "L'obiettivo proxy non può essere vuoto!", @@ -3047,6 +3231,7 @@ "f68c204aa9e12e0513aa7a4569449cfe": "I file UNIX devono finire con.Blocca, come/tmp/flash.app.serratura!", "5c23a6c025d7071599c70575dc858f26": "L'obiettivo proxy non esiste!", "2fba0b6c1602ec254b1bc06bacba575d": "L'obiettivo proxy deve iniziare con http: // o https: //!", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path è la directory root, non è possibile chiudere Mostra percorso proxy!", "772c6f93b20b52d5c998f4b58dbcf8f7": "Port [{}] è illegale!", "f76df64b8f66e4f6050adf633c91c7fb": "Il sito Web [{}] esiste già, per favore non aggiungerlo di nuovo!", "6599f1c3d3d3760768d9023827e8edf0": "Progetto proxy inverso aggiunto correttamente!", @@ -3078,7 +3263,6 @@ "d591e0043cbf6d14950a46178a537626": "L'obiettivo proxy deve iniziare con http: // o https: //", "247d1a7dc144bd12d4c9f8797387babe": "【{}】 Esiste già nel proxy inverso e non può essere aggiunto di nuovo!", "36a7891857288c55bc5d87c470212812": "Non posso essere vuoto!", - "62dc2bbb0528fe87522c74b113883a48": "Il sito specificato non esiste!", "c8a68e4ff275e827bbbe348eddecbf2b": "Progetto proxy inverso eliminato correttamente!", "88f9a8852b822982a9a3e839813d91bb": "I domini non possono essere vuoti!", "85fb0c03511da1e4d308fd135dec4486": "Il nome di dominio non può contenere virgole!", @@ -3124,7 +3308,392 @@ "f1522550bdc24955aa540480fdccaff5": "Rilevato che la versione NGINX corrente supporta solo i tipi di sostituzione predefiniti.Prova a reinstallare Nginx versione 1.20 o superiore e riprova!", "0d57a0216b328aeba6ef5fc3cbf3b7e9": "Nessuna informazione di configurazione trovata per il contenuto prima della sostituzione: [{}]!", "e00f42f6421b797439a64e3ef24c132a": "site_name non può essere vuoto!", - "a6fd23485ca8abe4ab7d0580d28c4bf9": "Pulizia completata con successo!", + "a6fd23485ca8abe4ab7d0580d28c4bf9": "Pulizia avvenuta con successo!", "61e795d02f4452904f2574d936c571e6": "Cleanup non riuscita, la directory della cache non esiste!", - "3c99c479e3c65eac24272afc13cec604": "HTTPS Porta [{}] è illegale!" + "3c99c479e3c65eac24272afc13cec604": "HTTPS Port [{}] è illegale!", + "b9629c2dea839825c2f1916b44a154a1": "Errore nel file di configurazione Nginx, inventario!:{}", + "32b169f72b293ef80d35435e9894f8e2": "Inizializzazione", + "58ba018dcbe1c47ea0a293fdcee21e63": "Installazione a pannello", + "67355337eaf300b91de09a8083c93ebf": "Backup locale", + "99e8ebaa5ad2fafe4e141574f6b4a73f": "Caricamento file", + "bd6d996cdca2252e9b99253b2a587287": "Ripristino dati", + "03a2bd12e8b51af547a08985d4882d6d": "Migrazione completata", + "0fd957e5b2d9c535c344e9a8f86a225c": "Impossibile leggere lo stato dell'attività: {}", + "181f2da22cdbf536f67e46452108d95d": "Impossibile salvare lo stato dell'attività: {}", + "4439b17c5e0977e0c73c643cea950424": "Impossibile salvare il record dell'attività globale: {}", + "74c6e9c56a9d836f2dac86fe8e0770e3": "Impossibile leggere l'ID dell'attività attualmente in esecuzione", + "62688aeae1c92fc7d92caaa83f22a411": "Stato dell'attività recuperata correttamente", + "087b165a5f0bd5a04f2ce4be7dca14dd": "Nessuna attività in esecuzione", + "37a5c6e23237ddff7185d375c34eed60": "L'attività {} non esiste", + "f613fc3fb0aee3affafcae3477d42bf8": "Un'attività è già in esecuzione, ID attività: {}", + "367b4a21be07204266d306508cc92dc7": "Inizializzazione dell'attività di migrazione", + "793c8358adb487f79f85acfdc44d54bb": "Creazione dell'attività di migrazione: {} -> {}", + "e597529fcdfa1dab69eadaf1c44088ba": "Attività di migrazione creata correttamente", + "c304dcebe892b468725402a369b3dd46": "Connessione al server {}:{}", + "d2f3c14129fe059cf6d99f1583abc23e": "[+] Connessione riuscita al server {}", + "ae3c4e96fa1411ea25c05ce9a18ae2ae": "Connessione al server {} riuscita correttamente", + "c7203791b356c5f3faf5d8c43d54a575": "Autenticazione non riuscita: nome utente o password errati", + "10adeeeb866978b5ae637ae2bc13fb96": "Eccezione connessione SSH: {}", + "1e36faff765dbbbe631f424983a21783": "Errore di connessione di rete: {}", + "f9d5c96265bf9a99b163f5adf699cde9": "Impossibile connettersi al server: {}", + "cd4dc264f41eda817374af0bddcea259": "Connessione tramite chiave RSA", + "5e1b5e437b38bfb11b1e4853f8838d3f": "Impossibile caricare la chiave RSA: {}", + "fb947607c0d2814eed45d41a9e3227f1": "Connessione tramite chiave DSA", + "1cc35e618813746cb1bd4658f7ac61a0": "Impossibile caricare la chiave DSA: {}", + "e9ba4ba778d8a0b4423c09ff6cb32726": "Connessione tramite chiave ECDSA", + "f618338d0d56f440d7fb1b59d8add72c": "Impossibile caricare la chiave ECDSA: {}", + "f579ce14b1e98ae9ad4d392279730d9a": "Connessione tramite chiave {}", + "696797724fc3db3f012761759f720c23": "Impossibile caricare la chiave {}: {}", + "fa4e18c6d3b0c0fa6a5ac1303dda02a7": "Impossibile riconoscere o caricare la chiave, verificare se il formato del file della chiave è corretto", + "369709628dacb54949b2c711acd93968": "[*] Tentativo di riconnessione al server (tentativo {}/{})...", + "88aefbc5392deac3ab63223d6d82b66b": "[!] Impossibile riconnettersi al server, è stato raggiunto il numero massimo di tentativi ({})", + "908300abff5dfdf254726c2193f3e550": "Impossibile riconnettersi al server, è stato raggiunto il numero massimo di tentativi ({})", + "5842d2e8785c14b1e357c4ee1dd1a0c6": "[+] Disconnesso dal server {}", + "7463b0247d5614df91270544c6b944bb": "[!] Connessione SSH non stabilita", + "43234c4b446ff41810dcf807d317cba7": "[*] Comando in esecuzione: {}", + "db4d271e5cb8fe3192ed73bd624a86fe": "[+] Uscita:", + "c519185a1f47d37b21866e5f05928dc8": "[!] Errore:", + "6a2909a7dbeca5d8c85843ecd4cd3fae": "[!] Connessione SSH disconnessa durante l'esecuzione del comando: {}", + "88783238ef5d081aade9e63160d329fb": "[*] Riconnessione riuscita, nuovo tentativo di comando...", + "8692bb08477b83615b1ae995552e2c92": "[*] Rilevamento del tipo di sistema operativo del server...", + "95adf53ab7c91ed98c77d3c0e38a2a1a": "[+] Tipo di sistema operativo: {}", + "2ab043e41d8fd10931cfa912b4b11bf8": "[!] Impossibile determinare il tipo di sistema operativo", + "2d23313d6e3e201771154cf99d5dab34": "L'installazione di curl o wget non è riuscita, installalo manualmente", + "b44992b4430f7759108e5242176b7871": "[+] curl o wget è installato", + "4ba07005cef8f98a0625a7d1eb0a142e": "curl o wget è installato", + "e3a56811a35322959c535d38d2e91f7e": "[!] curl o wget non sono installati, sto tentando di installarli...", + "613a8be93fcd44002e549e0767c85a86": "Impossibile rilevare il tipo di sistema operativo, installare manualmente curl o wget", + "8a4d20948ccc8034e3118af3bb683da3": "Inizia l'installazione di aapanel", + "df97b5d4f31c5cd4a3611774abb6de52": "[*] Avvio dell'installazione di aapanel...", + "d91a58f92edb4b30de7e5399908922da": "[*] Installazione di aapanel con il comando: {}", + "f20af8613aed0194f191d660977de57c": "Installazione completata", + "4357633f73240ceb1b14d13877a90ac2": "aapanel installato correttamente, avvio dell'attività di backup...", + "f109f7ce6f98f5a3cbf2d273c5749911": "[+] indirizzo: http://{}:{}{}", + "79fca63f99a824fc4015d93604433ea1": "L'installazione di aapanel non è riuscita", + "b1508aec34af599979d919e20b64e385": "Avanzamento dell'installazione: {}", + "7b6725a19c46bc6d47e5a49c5764991f": "[+] nome utente: {}", + "cd3d4cf5a75fd5f9467f6d0f196dbec8": "[+] password: {}", + "6703def4d1bfb870f64ca461a7bffc0c": "[*] Creazione della directory di backup...", + "c550206bc8daea4b287573ee31f839de": "[+] Directory di backup {} creata", + "9e3f708636e9ea820d608629fdf47c65": "[!] Impossibile creare la directory di backup {}", + "9f22d9cb59270cf0f6382a66a63ed8cd": "Impossibile ottenere la dimensione del file remoto: {}", + "ff490ab3be22afd2f2a06842935eedd3": "Il file di backup {} non esiste", + "e69d7c21f42d046b365c56045ffca873": "Inizia a caricare il file di backup {} sul server", + "df6ecb94c7a5f06b78d0bde168e769e9": "[*] Avvio del caricamento del file di backup {} sul server...", + "217c9c3fec268ff4d6c35bd4d5d564ea": "Impossibile creare la directory di backup", + "2942f90ee3b191c0b98add719760e356": "[*] Dimensione file: {:.2f} MB", + "08b57d594c99a8339461fe78ebf95f1a": "Preparazione al caricamento del file, dimensione: {:.2f} MB", + "2f24607a7361d721459e3a12584fd340": "File già completamente caricato, saltando il passaggio di caricamento", + "4d57fe7dc3462ad55cc9bb1623a3eb5e": "[*] Rilevato file di caricamento incompleto, tentativo di riprendere...", + "9c30f21dd1175d2e9b7503e873a52b2f": "[*] Caricati: {:.2f}% ({:.2f}MB / {:.2f}MB)", + "04e05f53e1a18a781dbabae6cdd0e495": "Rilevato file di caricamento incompleto, ripresa da {:.2f}MB", + "426e1c0eadfad630c5433af2757cee8f": "[*] Inizio nuovo caricamento...", + "61eb03fffeb48e199890a5a8a24a5dc9": "Inizio nuovo caricamento", + "148b2912de8b29f47dc234983554ea2b": "\\r[*] Avanzamento caricamento: {:.2f}% - {:.2f} KB/s - Tempo rimanente: {}", + "470e645fe1f07b6d4e77fc7b16b2a9a0": "Verifica della dimensione del file superata: {:.2f}MB", + "40070e1f0867f97db0fa33039fae2063": "File caricato con successo", + "95dd52c0ce48e72f2021dee1a7a86433": "Mancata corrispondenza delle dimensioni del file: locale {:.2f}MB, remoto {:.2f}MB", + "f7dac1a705d6bd05b3a42086923cf932": "Caricamento interrotto: {}", + "554472ae3f1db37c67fe53e4a2fb53cd": "[*] Proverò a riprendere dal punto di interruzione {:.2f}MB (tentativo {}/{})...", + "1e6aeb0dc8e2567bdec31246c27233a2": "Caricamento file non riuscito, è stato raggiunto il numero massimo di tentativi", + "31c53955195484e892d36d1815e2e5cd": "[*] Avvio dell'estrazione del file di backup {}...", + "21ec696ab5bc206eac1cf62268824cf0": "[!] Il file di backup {} non esiste", + "e344a18f13f2b196f3b56938c824dd5f": "[!] Impossibile estrarre il timestamp dal nome del file di backup", + "d4a81ed03254ca37166d84ccb7de0bd6": "[!] Estrazione del file di backup non riuscita", + "0838e64585e87c91bdfa34890445346e": "[+] File di backup estratto correttamente, directory: {}", + "0fddb4bae41a7fc9e2de8896d8cb819f": "Inizia a ripristinare il backup (timestamp: {})", + "5a275e6386d2d3c647f6ccecb422debc": "[*] Avvio del ripristino del backup (timestamp: {})...", + "e9b7b10566a85a5356096a630d64d2d7": "[*] In attesa dell'avvio del servizio aapanel...", + "8d7b4f7247dec431d103af1ce34d0233": "Il modulo di ripristino non esiste: {}", + "304e687ee7c78fdae6e70226f61d9708": "Esecuzione dell'attività di aggiunta ripristino in corso...", + "ac3f9da9a646fe10c989e74b42fe5e8e": "[*] Esecuzione dell'operazione di ripristino in corso...", + "ac6fa0596fbb508fe61e44848548b50c": "Impossibile eseguire il comando di ripristino", + "846cdc02545d18e4b5308d076aa93e95": "Backup ripristinato correttamente", + "062ca961d059ebd358098ffdb12f42bb": "Ripristino del backup non riuscito, controlla il registro", + "f857f6dc6a146a3b125ea3253052ca43": "Avvia l'attività di migrazione", + "53779b59d2ae1ff96f4afdfa6bbc6c7f": "Controlla se curl o wget sono installati", + "39679b63dca413a83cf5b664d46c929b": "controllo curl o wget superato", + "0de6a624fa64af38f9a880430e72607e": "Preparazione all'installazione di aapanel", + "28dbda7cf25735198d7695702b18aad5": "Installazione di aapanel... circa 5 minuti....", + "7a58e7034a9db769af197c85beccafd5": "Installazione di aapanel completata, avvio dell'attività di backup...", + "a850af0d3bf3586319178228af5698bf": "Inizia a eseguire l'attività di backup su questa macchina", + "28ec7aad1cd6afdbbc35a6aeaa95761a": "In attesa del completamento del backup locale", + "82550a0ece235f0d0b363135e8d94d28": "Attività di backup annullata o non riuscita", + "c8f2865e1e43bb2fd88a0e16f3cd4c17": "L'attività di backup è scaduta e non è stata completata entro il tempo specificato", + "4bb768be41853a0aed9f56d5907be1bd": "Ho ottenuto il timestamp di backup: {}", + "c129e18a625645767772504cf77e279a": "Impossibile leggere il timestamp del backup", + "39869251ca57148d747cfd6ee60bf604": "Il file di timestamp di backup non esiste", + "60f1d8c19f5fbb046deac4aab745f63c": "Il file di backup non esiste: {}", + "d67c60b6be8ebfd9f73816a7e8e4abfe": "Impossibile leggere il percorso del file di backup", + "9e6caab47781582f556a81245571d8a7": "Backup locale completato: {}", + "b4df9a8cca277b49933dce7c8be7ab20": "Backup locale completato", + "6c97fd171b87d3f954040d4dea833cb9": "Preparazione al caricamento del file di backup", + "6384458c2647bf7e1af9d942aab00d6d": "Preparazione al caricamento del file di backup: {}", + "e2fdcbc1d4e8b1fa77a161c4448a4bf6": "Preparazione al caricamento del file migrate_backup_info.json", + "6533c064fee3726a0f1caf89a423fd3b": "Connessione persa durante il caricamento del file migrate_backup_info.json", + "ffa61675a37203858ec712cc635fcbdb": "File migrazione_backup_info.json caricato correttamente", + "d192d35fb79e54273bedf84f9ee3d772": "Impossibile caricare il file migrate_backup_info.json: {}", + "fdf17802146b46b291164d7c933950c1": "File di backup caricato correttamente", + "97dc827b342454de3a5f9416ee1e513b": "Preparazione all'estrazione del file di backup {}", + "67c40d3544174eb6d6fa63dccaa6bf6e": "Preparazione per aggiungere l'attività di backup di ripristino", + "7ec7fd83e38b6d53374f37bd32a3da09": "Preparazione al ripristino del backup (timestamp: {})", + "7fd19264d09d2ff33f1f8b5867354fdb": "Si è verificata un'eccezione durante il backup e il ripristino", + "ef05e1295515a64356e53d3c11498f25": "Ripristina l'attività di backup aggiunta correttamente", + "f90b7afaee99210e74fa3bc47d4f4918": "Tutte le operazioni di migrazione sono state completate", + "9e5e797901f9870ebf7a96266bc1e972": "Attività di migrazione completata", + "dd2a8fc49fd7c92616c228c8039410c8": "Si è verificato un errore durante il processo di migrazione: {}", + "1a119744a8cc132d708306e1fb90543f": "[*] Verifica delle informazioni sulla connessione SSH...", + "ef3ae6d88f5637005f063685ad50c625": "[+] Verifica della connessione SSH riuscita", + "66db9584d2d99eeb99a90f5f4c52d944": "Verifica della connessione SSH riuscita", + "a0bc8a00e83b79e42010343c31924dd2": "La verifica della connessione SSH non è riuscita", + "e871fe05e99da0c88a09686c3b7c88d7": "[*] Installazione di aapanel...", + "1f3ff88a0fdd87e71bf237f3805dccde": "[*] Caricamento file di backup...", + "c0b860cd7155af1e642fd0c41ee29262": "Percorso del file di backup non specificato", + "fa1ab4e94bafd1f5b6ea55e3e9dc33a4": "Estrazione del file di backup non riuscita", + "d36c2f46c959ee1fb416a947f8e75a47": "Ripristino del backup non riuscito", + "de6b9cefab1a252ada4463ee8f015f07": "[+] 所有操作已完成", + "496249e9e1cd99dd54146ed6565fe3f8": "所有操作已完成", + "20c605607dbf9d6d1d7bb62ddc792ee0": "[!] 执行过程中发生错误: {}", + "4020efc99e8c60a0e7d27a5598d501e4": "执行过程中发生错误: {}", + "55be882ba3aef502f3a93ad90bb9d613": "[*] Esecuzione del comando di backup in corso...", + "1a6da8233a4a66ccc90d767967f22d35": "[+] Attività di backup aggiunta correttamente", + "af3c2b419ba0779d81ac91cd3ca246b6": "[*] In attesa del completamento dell'attività di backup...", + "c8eb8110632bb540ca112819e96dc770": "[+] Attività di backup completata: {}", + "0d1135061a5b00b63bdb12c2f3c9461f": "L'attività di backup non è riuscita, il file di backup non è stato generato", + "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] Attività di backup completata (file rilevato dopo il timeout): {}", + "637452f337bdc2991f23593124d62440": "[!] L'attività di backup è scaduta e non è stata completata entro il tempo specificato", + "ec3a935e2442ef55924ad758e17b92cb": "Imballaggio completato", + "ffad0690fefe9ebaaf4d847a42b19f90": "Il file di configurazione del backup non esiste", + "40379fed8ad84c0869a1b3e94f8a56fb": "Un processo di backup è già in esecuzione!", + "20bf8648c4a3ea91ad3057f9aeca5f88": "Inizia a comprimere e impacchettare tutti i dati", + "dc72aa669e82dd5ec7cff2ed35f2762d": "Compressione e confezionamento di tutti i dati completati.Dimensione dei dati: {}", + "bacf615d02bfa3c58728f62490489e9a": "Backup completato.File di backup: {}", + "ad69c11076734ffc4c0532b54e6f5be3": "Caricamento del file di backup nell'archivio cloud...", + "c3a6378e06ff3e479a85b0f15c41cb1e": "{} Caricamento in blocchi...", + "c722636ded0be8237386a427242ff3b2": "{} Caricamento...", + "bb914d2441ee988dcd4d616350272f10": "Si è verificato un errore durante il caricamento su {}: {}", + "8085ded0444fcde19b9ea4d365502f67": "Informazioni di backup non trovate", + "b02ab16f5a7d45a871789d3944a41c69": "Backup completato ma impossibile recuperare il timestamp", + "46f183fbf6bd1e64702d6930667cf117": "Errore durante il recupero delle informazioni sul completamento del backup: {}", + "2cb88461938b0c418391af13f65a727d": "Il processo di backup è in esecuzione, ma non è possibile recuperare il timestamp", + "269159feb2faab7515c90b9f5de791a5": "Il file di configurazione del backup non esiste: {}", + "daa55a73708f906c8cee0bb87284740c": "Errore durante il recupero delle informazioni sullo stato di avanzamento del backup: {}", + "01ecbbb2b353cf4d915bbe1c1cd5505c": "Configurazione del server", + "ca3c22c9c94069053b85db0f50373639": "Backup della configurazione del server", + "b16acd08872bef5685bddff85a29f625": "Imballaggio dei dati", + "d41c74fcc2dd04880a0285c147188bf7": "Preparazione dei dati di backup", + "806cb06592627effa1a4073fa2f66ce2": "Un processo di ripristino è già in esecuzione!", + "37dfdfda0ab7a98140943484fe70a76c": "Inizia a decomprimere il pacchetto dati", + "c415a70c8540eb59121587b3ab5d5cfa": "Inizia a ripristinare i dati", + "c76bac64baa6fbf5c51ec144c70d91d3": "Ripristino dei dati completato", + "da7f5eb715a1a1a2378ee56a5ee24bbd": "Ripristino dei dati non riuscito: {}", + "ca0af2ce76c89e3bfa4bad3105c21203": "Ripristino completato ma impossibile ottenere il timestamp del ripristino", + "0f4f13d63e87130a24667c6bd4cb5e2e": "Il file di configurazione di ripristino non esiste", + "0c5d25bf5706190b8ad0d8289a93aeba": "Errore durante il recupero delle informazioni sul completamento del ripristino: {}", + "667a68bf7113541f218081fac58f6815": "Il file di configurazione di ripristino non esiste: {}", + "e7a91a4400b67b84e7cca61642b93f4d": "Errore durante il recupero delle informazioni sullo stato di avanzamento del ripristino: {}", + "1b4c2c21e77ac36e4097a92dabd55bc0": "Sconosciuto {}", + "c1173fa3bd3d44530eead89e7edeefe1": "Decompressione dei dati", + "a76a19147d36f4f2d6801cf602de2718": "Compito sconosciuto", + "5ba4673aac259be67bac9db8cfc9c5b2": "Preparazione al ripristino dei dati", + "5b43e0e228169e5df9cec81876cd3710": "Errore: il parametro di forzatura deve essere 0 o 1", + "4c3880bb027f159e801041b1021e88e8": "Metodo", + "7d3c180ded4dcc8eade80cd031ab1b5d": "Si prega di non operare frequentemente, attendere un momento", + "37b15a5d1e4fa625ea8996de5e378a84": "Recuperato con successo", + "616e012bcc90980f6ddfd2b3c17345f8": "Impossibile ottenere progressi", + "9e0a136b55af822e72c8d6716d2d4bf3": "Tipo sconosciuto", + "6ac0b58e56cefd76e61bc840dfad94fa": "L'attività è stata interrotta correttamente", + "b808472e703dfd53fdcb59fbe89e3436": "Eseguito con successo", + "12b65fbe011be723b4ae981c0d42c44d": "Attività di ripristino aggiunta correttamente", + "741e160bb129a548e26fbad37c8f674d": "Il test della connessione SSH non è riuscito, controlla se l'IP e la porta sono corretti", + "e0867cf8c8a1935e8bd681f0ff28a612": "Connessione SSH verificata correttamente", + "f94e94b4ec479336f36fdf9fe1004b83": "Il mio compito di migrazione", + "b100f6e1c91f013adf0ca5ce6606a89d": "Attività di migrazione aggiunta correttamente", + "fd0099266c1971c5c40036e615d67fd4": "Migrazione riuscita", + "87aa2e739755a6fea3a63876b5a1d48e": "Con successo", + "d7db03701029007097b8e0cd61a983f6": "Nessuna attività di migrazione al momento", + "808781229f7b019ba6a44ea3871e3b6d": "l'attività di lettura della migrazione non è riuscita, riprova più tardi!", + "e728b6a004aa5e61efd25bf815a6e290": "Avvio dell'attività di backup...", + "c9d48d6a4ebe28917b5439c91faaff68": "Installazione del pannello completata!", + "f5e7895e7c31fedd32b520012910f960": "Compito di migrazione", + "3a94451860f0c20374128e61e8783d26": "Installazione del pannello aa", + "f02f38d885226197e729453ea104feac": "Ripristina attività", + "0ba29c6a1afacf586b03a26162c72274": "Ambiente", + "f072f24284b47eaf8adcf88b29021618": "Il registro della migrazione non esiste", + "9166b100905c2625ba9df2524f8c2faa": "Test di connessione SSH fallito: {}", + "3a02e4b05ad1b321e855aa6116699b6e": "Promemoria di migrazione eliminato correttamente", + "334afd10871f8c52a884e307d2e17ccf": "Cronologia della migrazione eliminata correttamente", + "2f393a2518f5668880822f47fcdb5cc0": "La storia della migrazione non esiste", + "df4bb29cbb7fe7e3dbc82e961d5b5b53": "Preparazione dei dati", + "2b2a2a0b0596507029dd0feb9485a216": "Nessuna attività in corso trovata.si prega di controllare", + "d4e8a75d522d3e77ae80eadd49b0865e": "L'elenco dei database remoti è vuoto", + "5d806f11bb91996cafe7836b27a4e770": "Eccezione di connessione Redis!", + "1d69261c05f6ce03d2cab5528d443fa7": "Avvio di un backup dei dati del database", + "0cf1803cfdfda6f67d12fa7e1c4a25a7": "Backup del database {}remoto {}", + "32d68be800692faddb12c5252fded05e": "Informazioni sul database {}remoto {} ✓", + "0c64283397c43effb13a2cbe818ce929": "Backup dei dati del database completato", + "2f7d7cfc04be64fa087e964d41cb26b4": "Inizia a ripristinare l'elenco dei database SQLite", + "a1248c409fec22277ab13a6bb433188e": "Il file di backup dell'elenco dei database SQLite non esiste, il ripristino verrà saltato", + "d03ebecb5f420070192de8712926151a": "Ripristino dell'elenco dei database SQLite completato", + "ad6937d61b4d6e93a13f03308c66f2eb": "Il servizio Mongodb non è in esecuzione!", + "f60644c6526c4d9afe5b20db75fc2e5b": "Backup del database fallito, la directory di esportazione non esiste!", + "161bb420493657920405937a2cf42c96": "La compressione del backup non è riuscita!", + "20a42330f9241c13c91e3e203449a8a6": "Mancanza di strumento di backup, installare prima pgsql manager tramite il negozio di software!", + "7eff7c4aeb6bfe736f8a78c0096f92c7": "Imposta prima la password dell'amministratore!", + "6e907b499869ab16105a7aba198e13a7": "La password del database è vuota!Si prega di impostare prima la password del database!", + "d8a3336243e1c08e8a29c75af1eb528c": "Inizializzazione MySQL riuscita!", + "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL si riavvierà, attendere...", + "73af95fd2322196e0d9792df4ca1f566": "Inizializzazione MongoDB riuscita!", + "8c9718f3235e7c36c9f400bc68db1ef5": "Autenticazione impostazione MongoDB non riuscita!errore: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "Inizializzazione PostgreSQL riuscita!", + "c46866b7bc29cf9d478835bda10e43ce": "Inizializzazione Redis riuscita!", + "4e889bbbfc5e25ebf611e5764b8a358c": "Inizia a ripristinare il database", + "c9206e74b8d32e1e0a5710c0fe322cee": "Ripristino del {} database {}", + "ecea29915732c5d0001ece74601f3d20": "{} database {} ✓", + "b61a878149263a02fa99cc635409ee25": "{} database {} ✗ ({})", + "3fa7c5a9beafa67bb44999cab5cff52c": "Impossibile ripristinare il database {} {} Motivo: {}", + "e89775cca910deb5e484f631606cceb1": "Ripristino dei dati del database completato", + "9750547146e22f364299bc5f561a3fb6": "Inizia a ripristinare il database remoto", + "23f2db47eb6ff16785e5a222c8657f93": "Ripristino del database remoto completato", + "b17f6f187c4ecfd392c6367ec2ba6498": "{} ID backup non esiste, importazione terminata", + "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} ID database non esiste, ripristino dati terminato", + "611881e9f5d01b22a447c282aa8aca23": "Il database MySQL {} esiste già", + "ea31cbc6134300ca816c913d227b605f": "Impossibile creare il database {}.Motivo: {}", + "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "Il database esiste già, saltando il ripristino SQL", + "556843e4a406b780b0cf83c43366a8dd": "Importazione riuscita", + "af71c2c0e3813c9a77fe48507ea8e4d1": "Il database MongoDB {} esiste già", + "84b4d8c8cdd02488c0f868e97b22a3c2": "Creazione riuscita", + "10aec3a9e9564a9851c117b259245136": "Il database esiste già, verrà saltato il ripristino dei dati", + "b819d4259ca3ab0042562acea69e83e1": "Il database PostgreSQL {} esiste già", + "31b21eca2e62de420cf05e8135089114": "Il file di backup non esiste!", + "3eed4851380704f25eec3921befde38f": "Restauro riuscito", + "cbea0a592d6a3c48f2418d687cf54200": "Avvia il backup dei dati del terminale", + "e7e06b2dd59401dcf79acf2e3124d2fb": "Backup dei dati del terminale completato.Dimensione dei dati: {}", + "a273d4d4d0cf13abc1d7a4f96b8c851e": "Inizia a ripristinare i dati del terminale", + "1a15a2b43f1dd92e836a592fb180843d": "Ripristino non riuscito, il file non esiste", + "95d831166994e434da49f3ed70b73e8e": "Ripristino dei dati del terminale completato", + "e3a04ee4c0a034510866948e571c7966": "Avvio del backup dei dati del firewall", + "9a176a20c15e3dc096ed8bc5a05182ba": "Regole della porta del firewall ✓", + "ce693968cbf6e5f66af91e3dd2317d78": "Regole IP del firewall ✓", + "7ebd5e6b35357be0d5079f674f68ed8f": "Regole di inoltro del firewall ✓", + "8dfa78d85bb1d152b0cafe398b27e1ae": "Regole regionali del firewall ✓", + "927bb2298acc2c29d1beaff4d1656371": "Backup dei dati del firewall completato", + "d076d2dde53272dc55d47f34a465ebef": "Inizializzazione dei dati del firewall", + "3e0b3a3e90cc4a1f5abbf3fd1a38c2b7": "Installato.", + "d1b0c3d7a1b5f80626ec1a2395b4f990": "Avvio del ripristino dei dati del firewall", + "1f35b1eac1045718a64b4133a8e8829b": "Avvio del ripristino delle regole della porta del firewall", + "a168f915263109733b87807a0db41e01": "Le regole della porta del firewall sono state ripristinate correttamente ✓", + "ce04afdfe07dead0b0fb34e6bc00b6e5": "Impossibile ripristinare le regole della porta del firewall", + "c32b29f59e8b553998c75c5d7bc44dc6": "Avvio del ripristino delle regole IP del firewall", + "b68673b625a1d48b3953e37bb39fcbab": "Le regole IP del firewall sono state ripristinate correttamente ✓", + "ee0294aac018e0ab5f4e5e020f8d867c": "Impossibile ripristinare le regole IP del firewall", + "326c03834ea4914dbb02cf04e0c0164f": "Avvio del ripristino delle regole di inoltro del firewall", + "b077ba90ec76f05d0e541733e8291e3f": "Le regole di inoltro del firewall sono state ripristinate correttamente ✓", + "5ed68fe9a3e0530485018c0704d91035": "Impossibile ripristinare le regole di inoltro del firewall", + "03f3f31fd240913a083a78fc2d60f6f8": "Avvio del ripristino delle regole della regione del firewall", + "6f9922502feac3b7e6ede129664e3e18": "Le regole della regione del firewall sono state ripristinate correttamente ✓", + "771b376bf4473fc2f1cea6958de2afeb": "Impossibile ripristinare le regole della regione del firewall", + "6331b46ffa70ff97b558022d5ae8098a": "Avvio del riavvio del firewall", + "1bb2a65f17d7e3c685f36f7ff1794338": "Riavvio del firewall completato", + "246f6edb1d9df9b3abe78fc810876c28": "Impossibile ripristinare i dati del firewall: {}", + "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "Avvia il backup dei dati del sito", + "c886466d255b20be0dbde7f1b44b7f20": "Backup di {} progetto: {}", + "7ecf25c18499d663d2e636d0a99f73a3": "{} progetto {} ✓ ({})", + "0fc5eeb9bebed19653578a5df99d3e6e": "Backup dei dati del sito completato", + "9a2e8778b2a816fedb9f83afadcc2341": "Avvio del ripristino delle dipendenze Python del sito...", + "fd16d36423b43735556724e0395e8f91": "Ripristino delle dipendenze Python del sito completato", + "bbf57ca8231bce958a3e528a08491874": "Inserimento del database del sito non riuscito: {}", + "389f018ba17dc25cb23a5300d8f630db": "La directory di backup del sito non esiste: {}", + "21654e03b247d5e25abaa0ad542883c0": "Inizia a ripristinare i dati del sito", + "c8cecd19f4f4a680a5879f828d1c5578": "Ripristino di {} progetto: {}", + "35850d3654332477522ee06c756a3c85": "Impossibile eliminare la directory del sito di origine: {}", + "c88b730f7a6a312159272ce532947de2": "{} progetto: {} ✓", + "24ee51964e4ece856493ca28fdb075ed": "Ripristino dei dati del sito completato", + "483829cb5ae13bb190eb59acdf4f3231": "Avvia il backup dei dati del server di posta", + "8c7a0774ab14bae83a69b8562102fb0a": "Backup dei dati del server di posta completato.Dimensione dei dati: {}", + "e8480272035737a247832288f618c270": "Inizia a ripristinare i dati del server di posta", + "e058c7e1fd9cd1a4fd7ac7240a7765d2": "Il ripristino non è riuscito, il file non esiste", + "6e6e9dcfdf7bd846ab85a4ff0e0e2f95": "Ripristino dei dati del server di posta completato", + "1502c42b339a3dfe20e4c95186b38dc3": "Avvia il backup delle informazioni dell'account FTP", + "b5cf2f2c48fb5978825d3341759dd6d6": "{} utente ✓", + "120446d8a303de2396a1bb62ba8e8755": "Impossibile eseguire il backup delle informazioni sull'account FTP: {}", + "b18010e000c073a3587a89b2931c2770": "Backup delle informazioni sull'account FTP completato", + "c9073077bfd7adb73cbe253177b08833": "Ripristino dell'account {}", + "c5df3d6bec6157b48fb24bf8fe2a2add": "Creazione FTP non riuscita: {}", + "f3f8d4ba630fa6a7de1e9f4e34bad5dc": "{} account ✓", + "af4ff8fd3803d5496f74604eb1665e81": "Inizia a ripristinare la configurazione dell'account FTP", + "2bf94c9147c8220fc83f955175216c40": "ftp: account [{}] ripristinato correttamente ✓", + "9417f3027d6326176c986ffeee1f4491": "Impossibile ripristinare la configurazione dell'account FTP: {}", + "8ed95b2c3c38acf7e9532a582f08bb86": "Ripristino della configurazione dell'account FTP completato", + "49237b104331e8724e521b2fe6fdf6d8": "Avvia il backup dei dati del plug-in", + "26d785a1a32377e0e0e9498f4a7da12e": "Firewall Nginx ✓ ({})", + "7f578816e3867140ee56ccbbc1d69f55": "Rapporto sul monitoraggio del sito web ✓ ({})", + "ff083aca075c6543c2999781b6677c19": "Protezione antimanomissione aziendale ✓ ({})", + "2f29dad748ac1d8d50481ecbd7e05091": "Rafforzamento del sistema ✓ ({})", + "79bb9b38c599612b8b8f38ddc50f5c25": "Inizia a ripristinare i dati del plugin", + "ee84e47223f5ce39b8bb239376db4af3": "Se il computer migrato non è associato a un utente aapanel e aggiornato alla versione Professional, potrebbero verificarsi errori di ripristino del plug-in", + "30560687e27ef30b6f1cde26359eea6c": "Inizia l'installazione del firewall Nginx", + "a776b4ccf7343a25223817c8597ca7cf": "Firewall Nginx ✓", + "d0c97e94eb5061783de7bbad8e7bd295": "Inizia a ripristinare i dati del firewall Nginx", + "0010c09bd9f322c3b88a89dd0b52c831": "Dati del firewall Nginx ✓", + "427ad80bf462a92719fcff5c1a1be755": "Firewall Nginx ✗", + "29ad27f749c3f913779d432115de597f": "Inizia a installare il rapporto di monitoraggio del sito web", + "66f3f8adc854963e94a643b706157309": "Rapporto sul monitoraggio del sito web ✓", + "a0dded50b067929299258b3c8fc1b0e6": "Inizia a ripristinare i dati del report di monitoraggio del sito web", + "bd43add14ebbd0f448c207c48e1d5ac8": "Dati del report di monitoraggio del sito web ✓", + "a7b8bc831a9b36cc5127b5f8ecbec22a": "Rapporto sul monitoraggio del sito web ✗", + "c922c95c5f7973050d08412a26aab462": "Inizia a installare la protezione antimanomissione aziendale", + "31d844f4dd95b8a71e8ddbd1b9912ae5": "Protezione antimanomissione aziendale ✓", + "8fcd5da199e1e04830a686a576a2e914": "Inizia a ripristinare i dati aziendali di protezione dalle manomissioni", + "941b78173e944c6737a858bada098311": "Dati aziendali sulla protezione dalle manomissioni ✓", + "50bcd3813a4b18663b0bdc29f73b8c90": "Protezione antimanomissione aziendale ✗", + "cdcfb9e176572fe14bdc4c88474d8baf": "Inizia l'installazione della protezione avanzata del sistema", + "4d86b9c9f554fa3d477a86d2f62aaa1b": "Rafforzamento del sistema ✓", + "5633c4d754985da6c7fab116964ac501": "Avvia il ripristino dei dati di protezione avanzata del sistema", + "bda583fc184a8e079a37e169a9614e10": "Dati di rafforzamento del sistema ✓", + "479557cf249b3145d91a94ed130c5ecb": "Rafforzamento del sistema ✗", + "746e85b89c25244ae397c06029badc9c": "Ripristino dei dati del plugin completato", + "69d45b5b241dac0fa1efaf7b6966520b": "Avvia il backup delle informazioni del certificato SSL", + "835601ead78ba62b89c4b27956645362": "{} {} Il file del certificato non esiste ✗", + "025de5f8c791241d326ec4e086e9898e": "{} [{}] Il certificato è scaduto ✗", + "ecd204c03ea44719e6fa4ea25569266a": "{} {} ✓", + "aa6b67db23e9cb0b943aa6c0def92cb4": "{} {} Backup non riuscito: {} ✗", + "ec56d7aedc9c5242d094ebbaeda5047e": "Backup delle informazioni del provider API DNS completato", + "b561b1ca5fd89d639144a099f5fe096d": "Backup delle informazioni del certificato SSL completato", + "7aa422d849ba11b569187382a3a509d1": "Ripristino dei siti di distribuzione per il certificato {}...", + "4573d024bbb8e1f8c8efb2582a6a01c0": "Siti di distribuzione ripristinati per il certificato {}: {}", + "baa339aa8e95d46851fd48574cb1d902": "Ripristino delle cassette postali di distribuzione per il certificato {}...", + "9307ae55fb4a7b878e377790e040eec4": "Cassette postali di distribuzione ripristinate per il certificato {}: {}", + "b057e2d52c20f76bf3c788eb9b4873fa": "Ripristino del pannello di distribuzione per il certificato {}...", + "41596c0d36a66c44434d5882c3cfa793": "Pannello di distribuzione ripristinato per il certificato {}: {}", + "6ffcb0a3e8cdf728b3e7bc45ae221e5a": "Inserimento del certificato non riuscito, controlla il registro", + "c8a71420e709d8a4d02914a78d9a0e06": "Inizia a ripristinare la configurazione del certificato SSL del dominio", + "0672a3dc402dc9657fd0a0f1580d1c12": "Nessun dato di ripristino trovato", + "52f23f668fced51c3e25c781299fbff8": "La directory di backup {} non esiste, impossibile ripristinare le informazioni sul certificato SSL", + "ad93ef11d3e4238618571f517e11e80d": "Ripristino di {} Oggetto: {}", + "c49480308ee71202cc5fff5ea96eaaed": "Il file del certificato non esiste", + "42db220bc931b97aecdef6b6f0362bc4": "Certificato o file della chiave privata mancante", + "9f88b7ffec183a54f2e7e6136b4f5ac7": "Ripristino delle informazioni del certificato SSL completato", + "5e211e4fb46748c1d243b59a15645df7": "Avvio di un'attività pianificata di backup", + "a9d58d413bd48f1bd7e8041b6d8ceab0": "Attività Crontab {} ✓", + "ff0550fa0270ac20419790a51900d815": "Completamento dell'attività Crontab di backup", + "a7609aefd5330a1384704e73dc0b4dc0": "Inizia a ripristinare l'attività Crontab", + "48ed083561c2f201d9fe52f6a35ee982": "Attività Crontab completata", + "e9ed6b2a27deb5699565f0441dc713e9": "Avvia il backup delle informazioni sul software", + "e690c7866c5dbacbbc7860af5e6a3af1": "Backup delle informazioni sul software completato", + "cabf299a6cfa5874e23582c535f301c6": "Inizia a installare nginx-{}", + "33ec71107108ed89c0b526d5473526c8": "Inizia l'installazione del servizio Apache", + "b815f2a7e299ea99d41d665c728756d9": "Installazione del server Web completata", + "70510d59e30015790f07ca53c80c5bec": "Inizia a installare php-{}", + "2de6c0aa3c26285104f898b368bcf287": "Inizia l'installazione di node-{}", + "7d5cf115afd8be7c2a36d03b31d1ce44": "Inizia l'installazione di mariadb-{}", + "92e77c2b107f440d6d54062228112f73": "Inizia l'installazione di mysql-{}", + "4b09abb2edd44a4510395a297a2ff155": "Inizia l'installazione di mongodb-{}", + "69fa45968c5cc7a9115bff54e70c95c1": "Inizia l'installazione di memcached-{}", + "fbabb869ff01746bd144289622b277fc": "Inizia a installare Redis-{}", + "da7d69765f1876fba52c21a17e8c74c6": "Inizia l'installazione di postgresql-{}", + "99782b6a478e499d45a91f9d78e1c73a": "Inizia a installare phpmyadmin-{}", + "640c4e334dc9587e212d36e685059478": "Inizia l'installazione di ftp-{}", + "aecfeaaa9e3bcff1f6169598772e90c0": "Avvia il ripristino dell'ambiente in esecuzione del pannello", + "3b83e3fdb17c70ca190e263e0bd7173e": "Salterà l'installazione se esiste lo stesso ambiente" } \ No newline at end of file diff --git a/BTPanel/languages/kor/server.json b/BTPanel/languages/kor/server.json index abdf057e..5f9167ec 100644 --- a/BTPanel/languages/kor/server.json +++ b/BTPanel/languages/kor/server.json @@ -14,39 +14,30 @@ "4cc4ddc196a295ee4ab82daec08f91a6": "사이트는 존재하지 않습니다", "25bb121145f918572eea2ef07ff8e89c": "백업 오류", "f8320b26d30ab433c5a54546d21f414c": "거짓", - "4bbfcde12aa36ec375a332f51bf905d6": "하루에", - "60956b50bb8e8c711d3adb889a70137f": "하루에 {} 시간 {} min에 실행하십시오", - "78748f15bb65939b6d130c3a5cf8b7dc": "모든 {} 일", - "cf9af10dcebe2f12092ff6028a535f08": "{} 일 ​​때마다 {} 시간 {} min에 실행됩니다", - "e114abed903b9d26c476d4f6cd59c04b": "시간당", - "0aef48ea8132b0551fa25a10fd0a6585": "시간당 {} min에서 실행하십시오", - "50419faf9662e0c3f283d496bcb8eb72": "모든 {} 시간", - "2a0706d7e3ca3ce9e955471a0648dfcc": "{} 시간마다 {} min에서 실행됩니다", - "84d94bf0382f611906b7edd65d6af169": "모든 {} 분", - "14d27796d1c96457c7c019661a2f32d4": "{} 분마다 실행하십시오", - "6c25e6a6da95b3d583c6ec4c3f82ed4d": "주간", - "e1df614d393ab86fd63c5062f7e77936": "모든 {}, {} 시간 {} min에 실행됩니다", - "9030e39f00132d583da4122532e509e9": "월간 간행물", - "69c5e99b9ad8d2b8f11be9a60cbf71da": "월간, {} day {} Hour {} min에 실행하십시오", - "9d1a0949c39e66a0cd65240bc0ac9177": "일요일", - "6f8522e0610541f1ef215a22ffa66ff6": "월요일", - "5792315f09a5d54fb7e3d066672b507f": "화요일", - "796c163589f295373e171842f37265d5": "수요일", - "78ae6f0cd191d25147e252dc54768238": "목요일", - "c33b138a163847cdb6caeeb7c9a126b4": "금요일", - "8b7051187b9191cdcdae6ed5a10e5adc": "토요일", - "e00d5128f631253b7b6ed8d5454c0c81": "파일에 쓸 수 없으면 [System Hardening]이 활성화되어 있는지 확인하십시오!", - "685689743579a8f09fcec5d7df04e39e": "작업 이름은 비어있을 수 없습니다!", - "a5c04aced897c770105858268324b53f": "현재 작업은 상태를 비활성화하고 수정하기 전에 작업을 열어주십시오!", - "85305ee6be0f078791c7437ec54dda12": "추가하지 못했습니다", - "08a1ce771119bb393fa49478216ae809": "로그가 비어 있습니다", - "b8fd4dbe5c3650beaec0a3d44d7f0245": "로그가 비 웠습니다", - "ff47c70e853d0b3635935be883b018e9": "작업 로그를 비우지 못했습니다!", - "e0c4da1afd18acbb66bc5fac261a42ef": "지정된 작업이 존재하지 않습니다!", - "998ad6f12ce5285a1b72d4265d9b36cc": "성공적으로 삭제되었습니다", - "e274abcaad0a7fff74d9adb67e578d5f": "삭제하지 못했습니다", - "38fa2d4f8f9a13062c0c9007d97f6a84": "파일을 읽지 못했습니다!", - "f57d5686d9dd67f0e81924de8d13af95": "작업이 실행되었습니다!", + "18928426418954e3a8bc166c892af5c5": "사용자 이름이나 비밀번호는 비어있을 수 없습니다!", + "14422683e14b8a03fd02b84480703c41": "여러 번 로그인하지 못했습니다. {} 초 안에 다시 시도하십시오!", + "179b0ad118200b66c6e90535d9d8ad4f": "디스크 inode가 소진되었고 패널은 inode를 해제하려고 시도했습니다.다시 시도 해주세요 ...", + "7edd0140c2f050286273be74039b1df7": "확인 실패, 페이지를 새로 고치고 다시 로그인하십시오!", + "9a9b0bf6269ba974cc6a00bb0f0de1d0": "검증 코드는 비어있을 수 없습니다!", + "2b7ae590e0538e70b7a359a94d30f1f4": "확인 코드가 잘못되었습니다. 다시 시도하십시오!", + "21f763b26858bf8ff40f931d714ab106": "잘못된 사용자 이름 또는 비밀번호, 5 자) :", - "219863186dddc079747a525bb7877a88": "pls는 새로운 mysql 루트 비밀번호를 입력합니다 :", - "c172da334fdcac77f704fa4408dd2f16": "|-오류, 비밀번호는 비어있을 수 없습니다", - "a79cf67c04d379c4916dc584c9d8333f": "|-오류, 암호는 8 자 미만일 수 없습니다", - "06f5000079703a33b91564159f07770a": "|-오류, 비밀번호에는 특수 문자가 포함될 수 없습니다", - "913153f9957100bcf3029e8f3d5bc5e9": "pls는 새 패널 포트를 입력합니다.", - "39ea14ec0df812219c450ba15230ad2d": "|-오류, 유효한 포트가 입력되지 않았습니다", - "bab5cb07adebbfbd938180d6862a7ce7": "|-오류, pls는 공통 포트를 패널 포트로 사용하지 않습니다.", - "00213d6b5423971311e5a47f83081a24": "|-오류, 새 포트는 현재 패널 포트와 동일하며 변경할 필요가 없습니다.", - "e1e57838b2c7e1567fb96e20bfd474e0": "|-오류, 지정된 포트가 이미 사용 중입니다", - "5093d954f09d473d091355fe292920a8": "|-감기 한도가 취소되었습니다", - "e0b1cb1725c8fb29d42fa69d679a73ea": "|-도메인 제한이 취소되었습니다", - "968c7b9246b5ab3d3e7659cea211a20b": "| -IP 액세스 한계가 취소되었습니다", - "7b84e677e97bd4943a6639a22c1a1704": "비밀번호 参数不能为空", - "5f3160e82bc0c5278923b609841e588b": "开启成功", - "f288f8c23f8d03a699a49bf1fb8e7f53": "SSH 选项失败", - "d3118650da719b6b0cc83230204491de": "加密方式错误", - "24513dc8c02bb021a1c944009c19215b": "开启失败", - "8a3140f96ba5c5df5560d0bd27aa4cd8": "关闭成功", - "ebdcf538e79de6922f498cc8c735eab5": "시스템 방화벽이 열려 있지 않습니다", - "a296add6341b715925c0be2b83514ee3": "입력 한 IP 주소는 불법입니다!", - "3433b9709eed7423f1900061ef743af6": "이 IP를 비활성화하면 서버가 실패하게됩니다", - "57e7b2320dd3984312335605d57ee0f8": "IP는 블록 목록에 존재하며 처리를 반복 할 필요가 없습니다!", - "4bb8df740a7119979ff7854d034200a8": "IP 주소는 불법입니다!", - "ff9c66f005c08efd15752fb261057b46": "포트 범위는 22에서 65535 사이 여야합니다!", - "b26b09909c3b090f31dba4a0986e1b84": "포트가 존재하며 릴리스를 반복 할 필요가 없습니다!", - "408f58c25fc55295236fbb64a2d884ff": "실패하면 패널의 현재 포트를 삭제할 수 없습니다", - "ad6fc2abb89b42d391b4bf84e8e6cd2d": "SSH 서비스가 꺼졌습니다", - "0692d6f0819524aaa05e73f03022ec5b": "SSH 서비스가 켜졌습니다", - "d0749aaba8b833466dfcbb0428e4f89c": "성공", - "ffdc24f916f3071233ca7710aff032c8": "<스타일 =", - "3b144e13d2ee7af72b5b81e21a935a2a": "공통 기본 포트를 사용하지 마십시오!", - "bef28b813bf12be3924925bbb62883dd": "성공적으로 실행되었습니다!", - "fda63bff3e0143980e5761376859b00b": "실행 실패, Apache가 설치되어 있는지 확인하십시오", - "22012355700877ab73f89de8014ab20b": "아파치 규칙 구성 오류 :
활성화에 실패 :

", - "9848c96a046adb1759233241661ff694": "{} 서비스가 시작되지 않았습니다", - "6ed577cdce37bbd9c66871ac1677dc53": "서비스 중지 실패!", - "572e5703371c43aae299181c0e3567d4": "모든 설치 작업이 완료되면 프로그램을 실행하십시오!", - "c7138b4b5f7ded833942aef4e230771d": "명령이 성공적으로 전송되었습니다!", - "d56f0ed99825b4d62ab84753a65f7f1e": "패널이 다시 시작되었습니다", - "c8c7de7f5b740307d55affea39b79993": "설정이 성공적이었습니다", - "e3fa50f6413dbb7bfe7cb26e1acd3d98": "먼저 계정으로 로그인하십시오", - "121303c67f81a8ebda41de51c8afaf27": "먼저 패널에서 Aapanel 계정에 로그인하십시오!", - "d5670370d84473122d8e4d5a3b27b4bf": "매개 변수 오류 : num", - "64ab1925be79469a2097a6490725e3cf": "매개 변수 오류", - "c40f1a202bfa106ac04f83a4740b3bd1": "서버에 연결하지 못합니다!", - "6b1c16b7a785029c0a11de3ab31cb125": "플러시 상태 성공", - "e06c1ddc33f674068e3ca201094145d1": "성공적으로 활성화하십시오", - "819b23804f66eddddfba39e7bdc53e68": "활성화 실패", - "4f57c5dce8b638737a368af15409439f": "활성화 실패", - "fe94df1697f309269e00428cae6bd141": "갱신 실패", - "b2ac1158b825f44cb363648fa3ad60cb": "성공적으로 갱신하십시오", - "78d29c0fadebf704e471a63afd430250": "적용 실패", - "3649e869737aa87f263194ce7f88f19e": "성공적으로 적용하십시오", - "34c4dc380e690d2ff6ebb6aaed103401": "product_id 매개 변수 오류!", - "28731318aa493586f88894355a79cb48": "서버에 연결하지 못했습니다!", - "18928426418954e3a8bc166c892af5c5": "사용자 이름이나 비밀번호는 비어있을 수 없습니다!", - "14422683e14b8a03fd02b84480703c41": "여러 번 로그인하지 못했습니다. {} 초 안에 다시 시도하십시오!", - "179b0ad118200b66c6e90535d9d8ad4f": "디스크 inode가 소진되었고 패널은 inode를 해제하려고 시도했습니다.다시 시도 해주세요 ...", - "7edd0140c2f050286273be74039b1df7": "확인 실패, 페이지를 새로 고치고 다시 로그인하십시오!", - "9a9b0bf6269ba974cc6a00bb0f0de1d0": "검증 코드는 비어있을 수 없습니다!", - "2b7ae590e0538e70b7a359a94d30f1f4": "확인 코드가 잘못되었습니다. 다시 시도하십시오!", - "21f763b26858bf8ff40f931d714ab106": "잘못된 사용자 이름 또는 비밀번호, 1.도메인 이름이 해당 사이트에 바인딩되어 있는지 확인하십시오.

2.도메인 이름이 서버에 올바르게 해결되었는지 또는 해상도가 완전히 효과적이지 않은지 확인하십시오.

3.사이트에 리버스 프록시가 설정되어 있거나 CDN을 사용하는 경우 먼저 끄십시오.

4.사이트에 301 리디렉션이있는 경우 먼저 끄십시오

5.위의 수표가 문제가 없는지 확인하면 DNS 서비스 제공 업체를 변경하십시오.

", - "4d6822ed3bd01f379f2ab4b1e68068d7": "|-현재 갱신 할 인증서가 없습니다.", - "b74c00ca5fee122c49cd66ce3d91b2cf": "| -Renewal 실패 :", - "d5ef96e383d376beeec28da7acfea516": "파일 다운로드", - "f24f6c5f5841340f898a6baaa6478bcd": "다운로드 파일 {}", - "9fdd777388a418cef77bce46c1b2511a": "지정된 압축 형식은 지원되지 않습니다!", - "4fa407ee74026903dc3013d0b2471eac": "압축이 성공했습니다!", - "ece43dcaac9352f58c422e500266a927": "무수압이 성공했습니다!", - "b9c1dcb37c44dca19765636de065b1c1": "백업이 성공했습니다!", - "ac4eb62573e34c36ff426c8a6360c781": "백업 오류!", - "438ca4ffcf6fbd44ec129e73a24f0deb": "SQL/GZ/ZIP 파일을 선택하십시오!", - "0edfb4a54d6cf45209a6c7929b8b9919": "성공적으로 가져온 데이터베이스!", "3f96c422b7a59fe6e8bf7531c647a64c": "지정된 계정이 존재하지 않습니다", "cb5e7fdc51569eedfbf3a9a0d3c819cc": "지정된 순서가 존재하지 않습니다!", "8bd32b310825307a909c682871008642": "성공적으로 삭제 된 주문!", @@ -329,6 +83,8 @@ "d568b4df4d83c54698fe15ad656181ed": "발행 실패, 도메인 {}는 주간 재발행의 한도를 초과했습니다!", "5ac0673b95a9e6af88bb008e24c09bf4": "CA 서버에 대한 연결이 실패했습니다. 나중에 다시 시도하십시오.", "2948ef630d1bdb0b2e7209d83f13af67": "지원되지 않는 도메인 이름 {}, 도메인 이름이 올바른지 확인하십시오!", + "27bad102d3dd6f86d5f6c680c8353089": "주문 제작 실패, 나중에 다시 시도하십시오!", + "1a728d28f052c9956f9d014d60c61bff": "CA 서버 액세스 거부, 나중에 다시 시도하십시오!", "35390f482d893d9c9c0c0bb055e70572": "이 도메인 이름에 대한 요청이 너무 많습니다.3 시간 후에 다시 시도하십시오", "cae6404c4aecf46684930fe2a86676a6": "허락하다", "ab511534580180bb5c56aab7331d0c36": "CA는 DNSSEC 서명을 확인하는 데 사용되는 DNSKEY 레코드를 찾거나 얻을 수 없습니다.", @@ -365,37 +121,23 @@ "6953519c64b998226d0294b961deca62": "취소 인증서", "1bbd31373b98ad5a6320af00b2a15ee0": "만료 시간이 특정 시간이면 갱신하십시오", "8fcc1d6fd24fad55d9e8fea6631886db": "-Index 매개 변수에 취소 할 주문 지수를 입력하십시오.", - "3c8ad9e6e9c39de49294aa2db8630f25": "nginx가 설치되지 않았습니다", - "8bdafc47214a88c8cc4bc6326771040a": "데이터 수집이 실패했습니다!", - "d84c752e17017ec4b4987497ce15dfd0": "PHP로드 상태 획득이 실패했습니다!", - "ee83f5efe8a95f2e8529da7d4bb01d2b": "Uninstallaton이 성공했습니다", - "cf6e5eb2bfedf2e0529a552c1017c21e": "파일 쓰기 실패!", - "842bbd281516b01e70be499dbe67d3aa": "성공적으로 설정했습니다", - "ff7ca5d4ef00526f701d3ae0b3833940": "목록을 얻지 못하면 [AK/SK/Storage] 설정이 올바른지 확인하십시오!", - "517fa3f50147b216828f9aca9fd08927": "演示服务器, 禁止此操作!", - "e39bf0b6a74eb0459abefe075607833f": "오류, 작업 프로세스를 종료 할 수 없습니다!", - "ca3eb6afad663b2881fababde6d59d63": "먼저 계정을 바인딩하십시오!", - "df1f69a87b498b8b12c90be5a3b885db": "파일 다운로드 실패, 다시 시도하거나 수동으로 업데이트하십시오!", - "e448bd5c1c654d1ef33cf40620808693": "요청 된 PHP 버전이 존재하지 않습니다!", - "7c769ceaad458456d4c3bc8276015a8d": "허가가 거부되었습니다!", - "178d2e6a3f4abd4552188dcf36df7687": "패널 로그가 비워졌습니다!", - "99a0d283490c238c6faf2d0387dbcda7": "현재 웹 서버는 OpenLitEspeed입니다.이 기능은 아직 지원되지 않습니다.", - "20b4593b7de7ef359c1a0269f83e896b": "포트 범위가 잘못되었습니다!", - "0e656ce1afc98099f2e01e8f71362f92": "올바른 포트 번호를 입력하십시오", - "88897967b12e6907309204ad6d0647af": "일반적인 포트를 phpmyadmin 포트로 사용하지 마십시오!", - "e4859a777f8d4f300baf8fff0284fe81": "Apache Phpmyadmin SSL 구성 파일을 찾지 못했습니다. 열기 전에 SSL 포트 설정을 닫으십시오.", - "6bd4e79acd767010d96091baf9daba77": "nginx phpmyadmin이 듣는 포트를 감지하지 못했습니다. 파일이 수동으로 수정되었는지 확인하십시오.", - "7478cfa7a09bbe61467b07dea2e9721d": "Apache Phpmyadmin이 듣는 포트를 감지하지 못했습니다. 파일이 수동으로 수정되었는지 확인하십시오.", - "a7dad48fefe8778dd10744a8a4dbae8e": "새로운 phpmyadmin SSL 포트", - "a168cddbe84613b0a468887d44e7eaf5": "패널 인증서는 존재하지 않습니다.패널 인증서를 신청하고 다시 시도하십시오.", - "c0c23cdf9e9329e576cfbddcc85666a3": "성공적으로 열면 Phpmyadmin SSL 포트를 수동으로 릴리스하십시오", - "b7f3560235e37cebdbde7db33c3df64c": "작동 실패", - "7f91451dfcb0045a4684fa68b35d0365": "새로운 phpmyadmin 포트", - "bb1ca97ec761fc37101737ba0aa2e7c5": "오류", - "14c525aba20f0a52255a799f51ced885": "경고 목록이 존재하지 않습니다!", - "586a19c1eeaf6fe9d57f1d894fc487fc": "로그 파일이 존재하지 않습니다!", - "190045c03f9a72a1900c60d63e1e2b8b": "계정 바인딩이 만료되었습니다. [설정] 페이지에서 다시 바인드하십시오!", - "907fddd6007347a0daffc4a64156f0de": "성공을 무시하면이 버전은 더 이상 업데이트를 상기시킬 수 없습니다.", + "b0698ab9adefa7515299f311c725ba4d": "정렬을 성공적으로 정렬합니다", + "8611f56e253646a455ceeb020052fa97": "수정하지 못했습니다", + "ebdcf538e79de6922f498cc8c735eab5": "시스템 방화벽이 열려 있지 않습니다", + "a296add6341b715925c0be2b83514ee3": "입력 한 IP 주소는 불법입니다!", + "3433b9709eed7423f1900061ef743af6": "이 IP를 비활성화하면 서버가 실패하게됩니다", + "57e7b2320dd3984312335605d57ee0f8": "IP는 블록 목록에 존재하며 처리를 반복 할 필요가 없습니다!", + "4bb8df740a7119979ff7854d034200a8": "IP 주소는 불법입니다!", + "998ad6f12ce5285a1b72d4265d9b36cc": "성공적으로 삭제되었습니다", + "ff9c66f005c08efd15752fb261057b46": "포트 범위는 22에서 65535 사이 여야합니다!", + "b26b09909c3b090f31dba4a0986e1b84": "포트가 존재하며 릴리스를 반복 할 필요가 없습니다!", + "408f58c25fc55295236fbb64a2d884ff": "실패하면 패널의 현재 포트를 삭제할 수 없습니다", + "e274abcaad0a7fff74d9adb67e578d5f": "삭제하지 못했습니다", + "ad6fc2abb89b42d391b4bf84e8e6cd2d": "SSH 서비스가 꺼졌습니다", + "0692d6f0819524aaa05e73f03022ec5b": "SSH 서비스가 켜졌습니다", + "d0749aaba8b833466dfcbb0428e4f89c": "성공", + "ffdc24f916f3071233ca7710aff032c8": "<스타일 =", + "3b144e13d2ee7af72b5b81e21a935a2a": "공통 기본 포트를 사용하지 마십시오!", "a410e97f3f643ccfb1081f7f9627b5bc": "[{}] 모듈 설치가 실패했습니다", "08f8ae280fc1d36cd348a8819712c20d": "[{}] 모듈이 성공적으로 설치되었습니다.", "c3b8b9273913dc20cee1a0740b36e074": "[{}] 모듈이 성공적으로 제거되었습니다", @@ -421,6 +163,160 @@ "d55b30607c2a9a2616347d6edb789f6b": "마지막", "5da618e8e4b89c66fe86e32cdafde142": "에서", "9952a15e524c95759c3580205db6fac1": "다음 소프트웨어에 따라 [{1}]를 먼저 설치하십시오", + "96aa6974173414b7a392afd70e5af6ad": "nginx 구성 파일을 찾을 수 없습니다 [{}]", + "d85076ee3898ee82924d3b38cd49b7a8": "작업자 프로세스", + "d0d1c4d1d25829f47c3e497e7f3c0132": "자동은 자동을 의미합니다", + "5c81587d9eb573fc7e6a4bc67b4603ba": "작업자 연결", + "939bf39176f01b8324dfed32f5580af3": "연결 시간 초과", + "5f892c3cd4a800e96fd4a7d6b81cdef2": "압축 전송을 활성화할지 여부", + "0dd93c7dd7d0a539fb21b522a5c138cf": "압축 할 최소 파일", + "6dfd8b44b3dad3eaec0587ac3bacdcd1": "압축 수준", + "36bacbbd75b4f381e4ae33983250de39": "업로드 할 최대 파일", + "6b30b46e4151e28f5e815efdaccf2544": "서버 이름의 해시 테이블 크기", + "4351aafd37b886a0537c175ea055d5aa": "클라이언트 헤더 버퍼 크기", + "d4a3f809e2109d7429c9fefd1ebb4996": "키 {} false를 얻으십시오", + "c8ef5bb0221c3b1f8c90c6648ed0ff5b": "값 {} false를 얻으십시오", + "3f1adbc068546184b4d2ca44fc9eb253": "클라이언트 바디 버퍼", + "811544f02f92e50584dd389bbdd761bc": "매개 변수 오류!-1", + "ae2c3655aab6402bd855f44421dc51d4": "매개 변수 오류!-2", + "e79a40d9379469f0f3d26251ecf0d334": "nginx 구성 파일이 존재하지 않습니다!", + "c8c7de7f5b740307d55affea39b79993": "설정이 성공적이었습니다", + "ec3e16ff1cd800e523f731b41df3f426": "ssl_btuser_un", + "3dfca5981995cf406aed48842d0e44ba": "매여 있지 않은!", + "195db7b1dd43ab76173d8f6497a878d6": "ssl_get_success", + "04eb7ae7b137df9d43f7588dac35db5d": "ssl_not_btuser", + "ca9cb3b791215702c4330798c401a014": "성공적으로 얻었습니다!", + "37779be9505d214d4c1b4b4e0e787a6a": "귀하의 계정을 구속하십시오!", + "68e5b651b8a03d3426ebe579b6277ad3": "확인에서 24 시간 후에 감사가 여전히 실패하면 Aapanel에 문의하십시오.", + "e258cf596248ca4aa2e4e2f13330bddd": "매개 변수 누락 : orgname", + "16d3f2401cbbe53b161e39ecdf231835": "매개 변수 누락 : orgphone", + "a3f1cf2cf7b9ad3a2647dcc4ea53b6bf": "누락 된 매개 변수 : orgpostalcode", + "f55e8a77d3d5e546dd17c9d390d0f6ff": "누락 된 매개 변수 : Orgregrient", + "7352f05f848f83458514f0831219268a": "누락 된 매개 변수 : orgcity", + "c8ebbfbfcd3f26ac1002b94108792064": "매개 변수 누락 : orgaddress", + "27080d6b8da669b86c02360fb57b8887": "누락 된 매개 변수 : orgdivision", + "5ba45db78c10af9d2c688a5ccd3cd81f": "유효성 검사 파일을 쓸 수 없음 : {}", + "a5400f9a88a3f15a80b0ff75fdc5864e": "유효성 검사 파일을 얻지 못했습니다!", + "629a33ef099a4963a8e6e249f30c72e9": "얻지 못했습니다. 나중에 다시 시도하십시오!", + "580669bcb4613a94bea927ddf53f50f7": "[Force HTTPS]는 현재 웹 사이트에서 활성화되어 있습니다. SSL 인증서를 신청하기 전에이 기능을 끄십시오!", + "561835523e11275c474be160c1ad22b6": "확인 오류!", + "0c929407264ab24358bed16e6c6f393b": "설정하지 못했습니다", + "64ab1925be79469a2097a6490725e3cf": "매개 변수 오류", + "633f426cb9cb6957cf0166705091dfe3": "매개 변수 유형 오류", + "a27662985dec244948a7fd891fa209cf": "인증서는 존재하지 않습니다!", + "3a68c964dedbb33eb3091b4945423351": "인증서 삭제!", + "ad1bd4960cc19a6639b0d31892e3ea3a": "삭제하지 못했습니다!", + "e5c00995fa7d7901a1087b9605be1a30": "인증서 구문 분석에 실패했습니다", + "db1d81b9d44158c60f1341a0cb9a532d": "성공적으로 인증서를 저장했습니다!", + "2e3554148da9aa3efb7c11bb41680a5e": "인증서를 저장하지 못했습니다!", + "d382dcb0d81e4b4588f9f40e39586d81": "현재 갱신 할 인증서가 없습니다!", + "70feb1290a735feedc5d1e01b3f19d09": "현재 웹 사이트에서 갱신 할 수있는 인증서는 없습니다.", + "385fdc82de8819f151a0c8a6fba725ec": "PDATA 매개 변수는 비어있을 수 없습니다!", + "05e5c702b39bcadfddcb3b98b9723c67": "连接服务器失败!
{}", + "6e264f3408e9b769d3fb7e2c807f301f": "작업이 실패했습니다.키가 올바른지 확인하십시오", + "d4ac5985eccd334896e3cf23706e43b0": "성공적으로 추가되었습니다", + "92188d43af4373bacbf00951da16532a": "웹 사이트 경로를 얻지 못했습니다.웹 사이트가 있는지 확인하십시오", + "ceaefd9a46d78491b9fdb912b5c71eeb": "유효성 검사 파일을 만들지 못했습니다.쓰기가 차단되었는지 확인하십시오", + "1bb3608b1bc684c3dc85090db249346b": "인증서 정보는 얻지 못했습니다", + "b0a783e3ada9e792e3ff3ca4eb477c80": "인증서는 존재하지 않습니다!", + "fca4e47d90253577901e874737b87dc0": "인증서 읽기 오류!", + "813595d6c41e417bea96adb1ad89043f": "인증서 형식 오류", + "16e6977cb4d0694335f3492ad8767370": "인증서를 찾을 수 없습니다", + "b267d8a6cbf23d69056263e194742c06": "인증서는 유효하지 않습니다", + "f8ad04059d0821e2ece2ed287bb3cd13": "인증서 정보 형식 오류", + "a441b2686419ee07dac67ba6bbf3ddf5": "DB 쓰기 오류", + "34c7694451633cb615e98b06d040c5c7": "DB 쿼리 오류 :", + "ba709b27ba6099126b4162a916a20174": "로그인하지 않았으므로", + "ae01e57647be41f3c1e2a0e49dae3de8": "클라우드 데이터 실패를 얻으십시오!", + "8d1747726b316e3a1063e5db9fe65864": "클라우드 실패를 얻으십시오!", + "ff34f52bf8f702f83843e0d8f3e6bfac": "매개 변수가 잘못되었습니다", + "41309f5b21613cfea3728a55036f9970": "로그인하지 않으므로 클라우드에 업로드 할 수 없습니다!", + "6e4a26963219701ba8e062a1255fe089": "지정된 인증서가 없습니다.", + "2c7d38ab0f7a91f5474efc897eaf4b2a": "로컬 파일 델 성공.그러나 클라우드 파일 del 실패.", + "501ffa672acb20c4764563d6e839879b": "클라우드에 연결하지 못했습니다.클라우드에서 데이터를 삭제할 수 없습니다.", + "a810cdf921c5b92a3f6d29667ec78ffc": "델 성공", + "df569fbc92d17644e83b44541596633f": "클라우드에 연결하지 못했습니다.", + "140bda69874872f8402052c613c0b3b9": "Aapanel Alert 테스트 이메일", + "76a1ec4a3fcdc304394ff14dc90f8072": "패널 스레드의 수는 1-1024 사이이어야합니다", + "dd7e82b5fb3c67e3e41d96f22ba838fd": "새로운 패널 포트", + "248336101b461380a4b2391a7625493d": "저장", + "40624aabb99173387dd6d575759b12db": "CERTPEM 매개 변수가 누락되었습니다!", + "37db9679113eef382992a1478f1b79ff": "개인 키 매개 변수가 누락되었습니다!", + "7063e5fbf2ea8d0809fe307b6df00467": "인증서 저장!", + "d2174fc17fcd785706114088b84dbbce": "임시 로그인 URL이 생성되었습니다", + "b5101eb6e685091719013d1a75756a53": "\\ 1", + "0bfe47819da04212a33dac83b71430e8": "\\ 2", + "bef28b813bf12be3924925bbb62883dd": "성공적으로 실행되었습니다!", + "fda63bff3e0143980e5761376859b00b": "실행 실패, Apache가 설치되어 있는지 확인하십시오", + "22012355700877ab73f89de8014ab20b": "아파치 규칙 구성 오류 :
활성화에 실패 :

", + "9848c96a046adb1759233241661ff694": "{} 서비스가 시작되지 않았습니다", + "6ed577cdce37bbd9c66871ac1677dc53": "서비스 중지 실패!", + "572e5703371c43aae299181c0e3567d4": "모든 설치 작업이 완료되면 프로그램을 실행하십시오!", + "c7138b4b5f7ded833942aef4e230771d": "명령이 성공적으로 전송되었습니다!", + "d56f0ed99825b4d62ab84753a65f7f1e": "패널이 다시 시작되었습니다", + "3d8c9e517719022b27ad5f27c578fa31": "RAM False를 얻으십시오", + "d47ab7b9ce539ba13f4e045561bb8ed7": "가동 시간 거짓", + "8e39175bab478762d3d029bee327c704": "시간을 다시 시작하십시오", + "e16cf27704f83c8b0a0efc16886ea75d": "날짜를 거짓으로 받으십시오", + "c158c8096b76b85803e71232b2dd5e74": "세부 사항을 거짓으로 얻으십시오", + "a6ec06b5eb6a42e13e072d2e992e31a0": "reqpersec false를 얻으십시오", + "cdd32490a46567fd0c1ee9d4b170b762": "TotalAccesses false를 얻으십시오", + "62b939086708b37d68c00cb713994b52": "Totalkbytes가 거짓을 얻으십시오", + "13b06d17b35dfeeafa50e12ad9ec1735": "바쁜 일들이 거짓을 얻으십시오", + "724fc9214ccce3e6a5787648240a4533": "유휴 작업자를 거짓으로 얻으십시오", + "7a7f329389283fdd3290c735f90946e9": "MPM_EVENT_MODULE COND를 찾지 못하거나/www/server/apache/conf/extra/httpd-mpm.conf는 비어 있습니다", + "c22cf8376b1893dcfcef0649fe1a7d87": "두번째", + "db669c6377ab90eef78800a48fd4a453": "시간 초과 요청", + "af52f5340c065f4d38182f7a27d59f75": "살아남아라", + "70b46e57f3c33abdb9558bc5c3a234d9": "연결 당 Max Keep-Agive 요청", + "6868568c3abc547e622a303891a906b0": "기본 프로세스", + "224114c62dceb7ebee2db43c6c79a961": "최대 유휴 스레드 수", + "3c60809d9a5a0900dfbc28bb017e410b": "요청 스파이크를 처리하는 데 사용할 수있는 최소 유휴 스레드 수", + "3783030daf8154be6e11fc4160c229c3": "각 어린이 과정에서 생성 된 스레드 수", + "2f25e4b1a2cb84576740da749a2daef2": "동시에 처리 될 최대 연결 수", + "72e3edfd72758944413b1e4e9c432f1e": "개별 자식 서버가 수명 동안 처리 할 연결 수의 제한", + "26c74a59d7d10bd927dce45e449943f1": "구성 오류", + "b2d87dda66a4643c6cf673f787c5f226": "구성 파일이 존재하지 않습니다", + "bff9ef87fdda677f86ae6dddec54a104": "호환 가능한 PHP 버전이 없습니다. 먼저 설치하십시오", + "4bbfcde12aa36ec375a332f51bf905d6": "하루에", + "60956b50bb8e8c711d3adb889a70137f": "하루에 {} 시간 {} min에 실행하십시오", + "78748f15bb65939b6d130c3a5cf8b7dc": "모든 {} 일", + "cf9af10dcebe2f12092ff6028a535f08": "{} 일 ​​때마다 {} 시간 {} min에 실행됩니다", + "e114abed903b9d26c476d4f6cd59c04b": "시간당", + "0aef48ea8132b0551fa25a10fd0a6585": "시간당 {} min에서 실행하십시오", + "50419faf9662e0c3f283d496bcb8eb72": "모든 {} 시간", + "2a0706d7e3ca3ce9e955471a0648dfcc": "{} 시간마다 {} min에서 실행됩니다", + "84d94bf0382f611906b7edd65d6af169": "모든 {} 분", + "14d27796d1c96457c7c019661a2f32d4": "{} 분마다 실행하십시오", + "6c25e6a6da95b3d583c6ec4c3f82ed4d": "주간", + "e1df614d393ab86fd63c5062f7e77936": "모든 {}, {} 시간 {} min에 실행됩니다", + "9030e39f00132d583da4122532e509e9": "월간 간행물", + "69c5e99b9ad8d2b8f11be9a60cbf71da": "월간, {} day {} Hour {} min에 실행하십시오", + "9d1a0949c39e66a0cd65240bc0ac9177": "일요일", + "6f8522e0610541f1ef215a22ffa66ff6": "월요일", + "5792315f09a5d54fb7e3d066672b507f": "화요일", + "796c163589f295373e171842f37265d5": "수요일", + "78ae6f0cd191d25147e252dc54768238": "목요일", + "c33b138a163847cdb6caeeb7c9a126b4": "금요일", + "8b7051187b9191cdcdae6ed5a10e5adc": "토요일", + "e00d5128f631253b7b6ed8d5454c0c81": "파일에 쓸 수 없으면 [System Hardening]이 활성화되어 있는지 확인하십시오!", + "685689743579a8f09fcec5d7df04e39e": "작업 이름은 비어있을 수 없습니다!", + "a5c04aced897c770105858268324b53f": "현재 작업은 상태를 비활성화하고 수정하기 전에 작업을 열어주십시오!", + "85305ee6be0f078791c7437ec54dda12": "추가하지 못했습니다", + "08a1ce771119bb393fa49478216ae809": "로그가 비어 있습니다", + "b8fd4dbe5c3650beaec0a3d44d7f0245": "로그가 비 웠습니다", + "ff47c70e853d0b3635935be883b018e9": "작업 로그를 비우지 못했습니다!", + "e0c4da1afd18acbb66bc5fac261a42ef": "지정된 작업이 존재하지 않습니다!", + "38fa2d4f8f9a13062c0c9007d97f6a84": "파일을 읽지 못했습니다!", + "f57d5686d9dd67f0e81924de8d13af95": "작업이 실행되었습니다!", + "da07d14105efb3ba634c1d35618447ab": "매개 변수가 올바르지 않습니다.", + "ea2b2676c28c0db26d39331a336c6b92": "시작", + "ef399b2d446bb37b7c32ad2cc1b6045b": "멈추다", + "0b12c9f33fde8b15970c7390c54d7ca5": "로그를 닫지 못했습니다", + "b55eed05ce4922d8a6c881f0f2b05bbf": "성공적으로 설정했습니다", "5afb8de2bbb11b44592503000290c173": "지정된 플러그인이 존재하지 않습니다!", "8b266978ab5161642a2d95d3f03f3945": "먼저 [{}]를 제거하십시오", "ad626ac6de7ea412c9156f73b7666cd4": "다음 소프트웨어에 따라 [{}]를 먼저 설치하십시오", @@ -443,6 +339,7 @@ "349838fb1d851d3e2014b9fe39203275": "설치하다", "a9ba3c226edabcfe1978d6f4c5daf404": "Nginx 1.8.1은 너무 오래되어 더 이상 사용할 수 없습니다. 다른 버전을 선택하십시오!", "75d7d596e2cc30d482111fae7b4f6d88": "큐에 설치 작업이 추가되었습니다", + "ee83f5efe8a95f2e8529da7d4bb01d2b": "Uninstallaton이 성공했습니다", "4432eb207b29c9ead490158b76397532": "데이터베이스 목록은 비어 있지 않습니다.데이터 보안은 기존 데이터베이스를 백업하고 삭제하십시오.
강제 UNINSTALL 명령 : RM -RF/www/Server/MySQL", "ba922eb50c83147a9bc0e9f40877d986": "제거가 성공했습니다", "b860df98df6ab84521a4cef036973028": "점수 범위 [1-5]", @@ -481,71 +378,172 @@ "473bc9055d76e148db4d28e7bec67295": "규칙 이름은 3 바이트 이상이어야합니다", "5b097df78b1d8c65d8b524354029f114": "파일 접미사는 비어있을 수 없습니다", "496e2dfba11ca4381ef6277e6e9a62dc": "디렉토리는 비어있을 수 없습니다", - "fa57fd4dd2f47d6e5e076c347fbee513": "site_add_err_domain_tow", - "4eb35aa4b95736df133dd3ad772f1ec9": "시스템 임계 디렉토리는 사이트 디렉토리로 사용할 수 없습니다", - "ec3e16ff1cd800e523f731b41df3f426": "ssl_btuser_un", - "3dfca5981995cf406aed48842d0e44ba": "매여 있지 않은!", - "195db7b1dd43ab76173d8f6497a878d6": "ssl_get_success", - "04eb7ae7b137df9d43f7588dac35db5d": "ssl_not_btuser", - "ca9cb3b791215702c4330798c401a014": "성공적으로 얻었습니다!", - "37779be9505d214d4c1b4b4e0e787a6a": "귀하의 계정을 구속하십시오!", - "68e5b651b8a03d3426ebe579b6277ad3": "확인에서 24 시간 후에 감사가 여전히 실패하면 Aapanel에 문의하십시오.", - "e258cf596248ca4aa2e4e2f13330bddd": "매개 변수 누락 : orgname", - "16d3f2401cbbe53b161e39ecdf231835": "매개 변수 누락 : orgphone", - "a3f1cf2cf7b9ad3a2647dcc4ea53b6bf": "누락 된 매개 변수 : orgpostalcode", - "f55e8a77d3d5e546dd17c9d390d0f6ff": "누락 된 매개 변수 : Orgregrient", - "7352f05f848f83458514f0831219268a": "누락 된 매개 변수 : orgcity", - "c8ebbfbfcd3f26ac1002b94108792064": "매개 변수 누락 : orgaddress", - "27080d6b8da669b86c02360fb57b8887": "누락 된 매개 변수 : orgdivision", - "5ba45db78c10af9d2c688a5ccd3cd81f": "유효성 검사 파일을 쓸 수 없음 : {}", - "a5400f9a88a3f15a80b0ff75fdc5864e": "유효성 검사 파일을 얻지 못했습니다!", - "629a33ef099a4963a8e6e249f30c72e9": "얻지 못했습니다. 나중에 다시 시도하십시오!", - "580669bcb4613a94bea927ddf53f50f7": "[Force HTTPS]는 현재 웹 사이트에서 활성화되어 있습니다. SSL 인증서를 신청하기 전에이 기능을 끄십시오!", - "561835523e11275c474be160c1ad22b6": "확인 오류!", - "0c929407264ab24358bed16e6c6f393b": "설정하지 못했습니다", - "633f426cb9cb6957cf0166705091dfe3": "매개 변수 유형 오류", - "a27662985dec244948a7fd891fa209cf": "인증서는 존재하지 않습니다!", - "3a68c964dedbb33eb3091b4945423351": "인증서 삭제!", - "ad1bd4960cc19a6639b0d31892e3ea3a": "삭제하지 못했습니다!", - "e5c00995fa7d7901a1087b9605be1a30": "인증서 구문 분석에 실패했습니다", - "db1d81b9d44158c60f1341a0cb9a532d": "성공적으로 인증서를 저장했습니다!", - "2e3554148da9aa3efb7c11bb41680a5e": "인증서를 저장하지 못했습니다!", - "d382dcb0d81e4b4588f9f40e39586d81": "현재 갱신 할 인증서가 없습니다!", - "70feb1290a735feedc5d1e01b3f19d09": "현재 웹 사이트에서 갱신 할 수있는 인증서는 없습니다.", - "385fdc82de8819f151a0c8a6fba725ec": "PDATA 매개 변수는 비어있을 수 없습니다!", - "05e5c702b39bcadfddcb3b98b9723c67": "连接服务器失败!
{}", - "6e264f3408e9b769d3fb7e2c807f301f": "작업이 실패했습니다.키가 올바른지 확인하십시오", - "d4ac5985eccd334896e3cf23706e43b0": "성공적으로 추가되었습니다", - "92188d43af4373bacbf00951da16532a": "웹 사이트 경로를 얻지 못했습니다.웹 사이트가 있는지 확인하십시오", - "ceaefd9a46d78491b9fdb912b5c71eeb": "유효성 검사 파일을 만들지 못했습니다.쓰기가 차단되었는지 확인하십시오", - "1bb3608b1bc684c3dc85090db249346b": "인증서 정보는 얻지 못했습니다", - "e06d1ba70f1331e9f9a113cc2f887d3f": "무단", - "6c89f438bb1463ecd92f1832d0aaa277": "QR 코드가 만료되었습니다", - "a11371c8ae1f6978f0dd88d0bddaa1be": "qrcore를 성공적으로 스캔하십시오", - "ab9f853a311a37b0fdc50cdfb4e7ac05": "로그인 실패 2", - "735ff2bcf3bc80998a077ba01d50ab8c": "로그인 실패 1", - "5b0308d8fa9b2acb17601e300f789005": "API가 켜지지 않았습니다", - "55c294cfb3e6b69997d8b5cf04369914": "결합되지 않은 전화", - "13b08ce52b782ebdc94a64637cd3c992": "앱 스캔 코드 로그인 대기 1", - "21d947c00f0d5b4ca710f7db100b8af3": "앱 스캔 코드 로그인 대기 2", - "9d7820cd626f61af19de756761a2280f": "앱 스캔 코드 로그인을 기다리고 있습니다", - "ed8abe55f77bc3512706869b791aa8f0": "222", - "727f11bf8b090ccbf27efcfb530e262f": "성공적으로 로그인!", - "da07d14105efb3ba634c1d35618447ab": "매개 변수가 올바르지 않습니다.", - "ea2b2676c28c0db26d39331a336c6b92": "시작", - "ef399b2d446bb37b7c32ad2cc1b6045b": "멈추다", - "0b12c9f33fde8b15970c7390c54d7ca5": "로그를 닫지 못했습니다", - "b55eed05ce4922d8a6c881f0f2b05bbf": "성공적으로 설정했습니다", - "140bda69874872f8402052c613c0b3b9": "Aapanel Alert 테스트 이메일", - "76a1ec4a3fcdc304394ff14dc90f8072": "패널 스레드의 수는 1-1024 사이이어야합니다", - "dd7e82b5fb3c67e3e41d96f22ba838fd": "새로운 패널 포트", - "248336101b461380a4b2391a7625493d": "저장", - "40624aabb99173387dd6d575759b12db": "CERTPEM 매개 변수가 누락되었습니다!", - "37db9679113eef382992a1478f1b79ff": "개인 키 매개 변수가 누락되었습니다!", - "7063e5fbf2ea8d0809fe307b6df00467": "인증서 저장!", - "d2174fc17fcd785706114088b84dbbce": "임시 로그인 URL이 생성되었습니다", - "b5101eb6e685091719013d1a75756a53": "\\ 1", - "0bfe47819da04212a33dac83b71430e8": "\\ 2", + "84278582ca50b97777b2c8ce780f9715": "지원 | 제안은 Aapanel 포럼을 방문하십시오", + "aa00d1012298d40c84daf11e09956c65": "다운로드 :", + "3c8ad9e6e9c39de49294aa2db8630f25": "nginx가 설치되지 않았습니다", + "8bdafc47214a88c8cc4bc6326771040a": "데이터 수집이 실패했습니다!", + "d84c752e17017ec4b4987497ce15dfd0": "PHP로드 상태 획득이 실패했습니다!", + "cf6e5eb2bfedf2e0529a552c1017c21e": "파일 쓰기 실패!", + "842bbd281516b01e70be499dbe67d3aa": "성공적으로 설정했습니다", + "ff7ca5d4ef00526f701d3ae0b3833940": "목록을 얻지 못하면 [AK/SK/Storage] 설정이 올바른지 확인하십시오!", + "517fa3f50147b216828f9aca9fd08927": "演示服务器, 禁止此操作!", + "e39bf0b6a74eb0459abefe075607833f": "오류, 작업 프로세스를 종료 할 수 없습니다!", + "c40f1a202bfa106ac04f83a4740b3bd1": "서버에 연결하지 못합니다!", + "ca3eb6afad663b2881fababde6d59d63": "먼저 계정을 바인딩하십시오!", + "df1f69a87b498b8b12c90be5a3b885db": "파일 다운로드 실패, 다시 시도하거나 수동으로 업데이트하십시오!", + "e448bd5c1c654d1ef33cf40620808693": "요청 된 PHP 버전이 존재하지 않습니다!", + "7c769ceaad458456d4c3bc8276015a8d": "허가가 거부되었습니다!", + "178d2e6a3f4abd4552188dcf36df7687": "패널 로그가 비워졌습니다!", + "99a0d283490c238c6faf2d0387dbcda7": "현재 웹 서버는 OpenLitEspeed입니다.이 기능은 아직 지원되지 않습니다.", + "20b4593b7de7ef359c1a0269f83e896b": "포트 범위가 잘못되었습니다!", + "0e656ce1afc98099f2e01e8f71362f92": "올바른 포트 번호를 입력하십시오", + "88897967b12e6907309204ad6d0647af": "일반적인 포트를 phpmyadmin 포트로 사용하지 마십시오!", + "e4859a777f8d4f300baf8fff0284fe81": "Apache Phpmyadmin SSL 구성 파일을 찾지 못했습니다. 열기 전에 SSL 포트 설정을 닫으십시오.", + "6bd4e79acd767010d96091baf9daba77": "nginx phpmyadmin이 듣는 포트를 감지하지 못했습니다. 파일이 수동으로 수정되었는지 확인하십시오.", + "7478cfa7a09bbe61467b07dea2e9721d": "Apache Phpmyadmin이 듣는 포트를 감지하지 못했습니다. 파일이 수동으로 수정되었는지 확인하십시오.", + "a7dad48fefe8778dd10744a8a4dbae8e": "새로운 phpmyadmin SSL 포트", + "a168cddbe84613b0a468887d44e7eaf5": "패널 인증서는 존재하지 않습니다.패널 인증서를 신청하고 다시 시도하십시오.", + "c0c23cdf9e9329e576cfbddcc85666a3": "성공적으로 열면 Phpmyadmin SSL 포트를 수동으로 릴리스하십시오", + "b7f3560235e37cebdbde7db33c3df64c": "작동 실패", + "7f91451dfcb0045a4684fa68b35d0365": "새로운 phpmyadmin 포트", + "bb1ca97ec761fc37101737ba0aa2e7c5": "오류", + "14c525aba20f0a52255a799f51ced885": "경고 목록이 존재하지 않습니다!", + "586a19c1eeaf6fe9d57f1d894fc487fc": "로그 파일이 존재하지 않습니다!", + "190045c03f9a72a1900c60d63e1e2b8b": "계정 바인딩이 만료되었습니다. [설정] 페이지에서 다시 바인드하십시오!", + "907fddd6007347a0daffc4a64156f0de": "성공을 무시하면이 버전은 더 이상 업데이트를 상기시킬 수 없습니다.", + "131c05252110792212e3e3666a351154": "SSL 관련 구성, 다음 주 댓글이있는 404 규칙을 삭제하거나 수정하지 마십시오.", + "4ba7e24ac1607ab761c124ca7352ad08": "오류 페이지 구성, 주석, 삭제 또는 수정 허용", + "31bb30ca4135945adbe0c2daa9545b39": "PHP 참조 구성, 댓글, 삭제 또는 수정 허용", + "f9da3e5ae75ce0ae39884ae2ea295a66": "URL 재 작성 규칙 참조, 모든 수정은 패널에서 설정 한 재 작성 규칙을 무효화합니다.", + "73e1f7d487ad73d55414fe26ea11cbf0": "매개 변수를 지정하지 않음 [sitepath]", + "6aabca3a3e1c79bd5837a1ddae95fe70": "오류가 발생했습니다. 다시 시도하십시오.", + "256c9a85375f57f2dc9f6f318c6578f1": "웹 사이트 [{}]를 성공적으로 만듭니다", + "481df7dbcd4c0317088bde8c913d5893": "웹 사이트 경로를 작성하십시오", + "b1b2484c013c646d7f41d6b2f495b6ef": "웹 사이트 경로는 루트 디렉토리가 될 수 없습니다 [/]", + "1c3bff99564f1370a5b1bf6c0773f8c4": "[이메일] 형식이 올바른지 확인하십시오", + "af9091566e669f016edf16ba97464cbe": "비밀번호가 매우 약합니다. 사용하겠다고 생각하면 진드기를 진드기 [약한 비밀번호 허용].", + "b0dbad478d4f07c38aec8f440ed98b66": "MySQL 및 PHP를 먼저 설치하십시오!", + "46491fef7553177ef58a55b2db917072": "웹 사이트 루트 디렉토리를 시스템 기본 디렉토리로 설정하지 마십시오 :
{}", + "59d5fef323e89ded50ed6036848a97f3": "WebName 매개 변수의 형식이 올바르지 않으므로 Parsable JSON String이어야합니다.", + "078a3d3e263be2851ddfd9fa059d098f": "포트 범위가 잘못되었습니다!100-65535 사이 여야합니다", + "50370024fdd22dc69099a46d011b20e2": "PHP 버전은 비어있을 수 없습니다", + "44bd68c6703adf65ff21c63e9a876aa1": "기본 도메인의 형식이 잘못되었습니다", + "23eded6de9c06451f67ecb7ed3a8c95b": "기본 도메인은 와일드 카드 DNS 레코드가 될 수 없습니다", + "f54249d2613e48be05837ec9cd615a5f": "당신이 추가하려는 사이트는 이미 존재합니다!", + "b537e2d1946d559d3de4fb3c045d290f": "당신이 추가하려는 도메인은 이미 존재합니다!", + "f91c641aef33cf8ef4a29bc5d3a7193a": "추가하지 못했습니다. configuraton 오류를 작성하십시오!", + "c3c7869d22051eaa78a831834a398351": "오류가 삭제되었습니다. 다시 시도하십시오.", + "e2d272e229674e4c6765fab24a323604": "웹 사이트 삭제 [{}]가 성공적으로", + "aa5f20e061736fe68a915163e7e6d122": "지정된 사이트는 존재하지 않습니다", + "f11e72daff0ce484f4c401bd0bd28ae5": "사이트를 성공적으로 삭제했습니다!", + "c57d58c6bbd34144325871d75b42a577": "호스트 도메인 이름을 입력하십시오", + "5c7b7c2f6ed78eefdd77aaa3dddde61a": "도메인은 비어있을 수 없습니다!", + "ef446d50df1605a582f9b44b57327536": "도메인 이름 형식이 잘못되었습니다!", + "68ae44808f90043dee02358ee768bf6e": "도메인의 형식은 유효하지 않습니다!", + "1628c2a26ab6d1211b435f85782f8acc": "지정된 도메인 이름은 웹 사이트 [{}]에 제대로되었습니다.", + "925dc658ddf0f69509632848bcd39577": "지정된 도메인 이름은 웹 사이트의 하위 디렉토리에 의해 제대로되었습니다 [{}]!", + "7b02cf82181f516626a36b86c6a686f5": "사이트가 성공적으로 추가되었습니다!", + "9b3c4205f2f408790c9c1c5da53c3bfb": "PHP 버전을 얻지 못했습니다!", + "abc3db87d5608cc9559556468a696a35": "도메인 이름을 선택하십시오", + "7807e17f2bf49fb802bba1a04822ea16": "포트를 선택하십시오", + "e5925c3a126a66c0565df6d8ef49550e": "마지막 도메인은 삭제할 수 없습니다!", + "17088ffed1e537b917a6ecc9dc957159": "개인 키 오류, 확인하십시오!", + "26924bd958e212f07c31b6ffca9cbf8c": "인증서 오류, 확인하십시오!", + "44e2c1c3cfd8d248d7c9190a8f07c0ee": "인증서를받는 오류", + "fc0d039d9dcf3905ae8032c9cb33f475": "오류 :
{}", + "ddc2be35a5ed0bf09a88139c4ad10b4a": "원래 경로와 마찬가지로 변경할 필요가 없습니다!", + "84a8921b25f505d0d2077aeb5db4bc16": "공전", + "ad74aa2854e988c3157f92e0120bb19e": "APACHE2.2는 다중 기능을 지원하지 않습니다!, {}", + "4018ce634a10d352867f04962f107c14": "오류 설정이있었습니다. 다시 시도하십시오.", + "f1bef4fd5183ae83a5896c32a3d5e81d": "사용자 정의 PHP 구성은 Nginx 만 지원합니다", + "879e0d022ff268704f93a7e2b504c224": "버전을 사용자 정의 할 때는 PHP 연결 구성을 비울 수 없습니다!", + "73d6e709b568b43405052cec999798c5": "PHP 연결 구성 형식이 올바르지 않습니다. 예제를 참조하십시오!", + "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "지정된 UNIX 소켓 [{}]가 존재하지 않습니다!", + "751ac8fd72a0acd79772370efcae9c89": "[{}]에 연결할 수없고 시스템이 대상 서버에 연결할 수 있는지 확인하십시오.", + "3cb7d414f8ae92b2b29057f91346f7dc": "설정 실패, 웹 사이트 구성 파일에 Enable-PHP-XX 관련 구성 항목이 발견되지 않았습니다!", + "c7a6a892c6cdfc9b0fedefb0a1d2083a": "요청 된 디렉토리는 존재하지 않습니다", + "4622561ceaaecb6ef7dd51e65c9f4ec5": "기본 디렉토리가 꺼졌습니다!", + "e4ec1f40794bdf92e7261e6e0c51895a": "기본 디렉토리가 켜졌습니다!", + "eeddf79f68ffe029ed83fddcba46b35f": "오래된 대리", + "1592678472ea1b601fd74abff47c56b1": "대상 URL을 얻을 수 없습니다", + "18edd294853d381dbe0d612ab58bc123": "구성 파일에서 오류가 감지되었습니다.진행하기 전에 해결하십시오", + "8b5899be4df3aedb03c6fbad9055ed1c": "데이터베이스 이름은 40 자를 초과 할 수 없습니다!", + "111376d92c49c1a6c1522a2ef1dac23c": "지정된 리버스 프록시 이름 또는 프록시 폴더가 이미 존재합니다", + "09a988aa2e3185fce9fa8f4e8710b862": "디렉토리와 글로벌 프록시를 모두 설정할 수 없습니다", + "012a8e497feddccb8e4a47aa5e2dc156": "번호를 입력하십시오", + "90da7d2de9aa12ec32ee04172ca0d2d3": "전송 된 도메인 형식 오류 :", + "440544138d3ed8a2229792c88bad3bd8": "대상 URL에 액세스 할 수 없습니다", + "faf2457853593b3296699c4adacc7825": "교체 할 내용을 입력하십시오", + "748e5ad33460a17cf26c8024bb0a1620": "대체 할 내용은 교체 할 컨텐츠와 동일 할 수 없습니다.", + "195d5db9e1559f06348715bc3a822036": "글로벌 리버스 프록시는 이미 다시 쓰기/nginx 마스터 구성/vhost 파일에 존재합니다.", + "cc38d47ec9ac62ffc67a5db9c08d5d52": "대상 URL은 비어있을 수 없습니다", + "fb79afbbe0688565b7894b644dfd798d": "대상 URL은 [http : // 또는 https : //]가 될 수 없으며 : https://aapanel.com과 같은 전체 URL을 작성하십시오.", + "29c9da826ae868c8c6444328f48bcf40": "1 클릭 배포를 사용하는 WordPress 사이트에서는 현재 리버스 프록시를 사용할 수 없습니다.", + "a59dfc3ae22fd96d46011503a4f40744": "프록시가 중단되었습니다", + "078bb5f960587121c7cd606ddba5ad58": "편집하기 전에 리버스 프록시를 활성화하십시오!", + "fe7185cec796e18d58f8e84dc4da946f": "현재 Nginx 만 지원합니다", + "222a267cc5778206b253be35ee3ddab5": "현재의", + "38441d4a89765279852ca2830aa89c83": "새로운 URL 재 작성 규칙이 저장되었습니다!", + "b9c1dcb37c44dca19765636de065b1c1": "백업이 성공했습니다!", + "c27a45bf16475a157ca1014cf886bb56": "메모를 입력하십시오", + "9a962a24e9b7b07800d6b7c7efd86f30": "사용자 이름이나 비밀번호는 3 자리 미만일 수 없습니다!", + "7eb904262649f9b2e4ba52e2bba9db71": "비밀번호 형식이 잘못되었습니다. 처음 두 자리에 특수 기호를 사용하지 마십시오!", + "492c7f01035f1cf9b88756f897f02b87": "오류, 기본 도메인은 IP 주소가 될 수 없습니다!", + "0a2b8c4a98495f6af19be9c1c342844e": "성공했습니다. JSP 프로그램을 테스트하십시오!", + "49281f9c7680652b1d110625da5c8cca": "Tomcat 매핑이 닫혔습니다!", + "ec3b07b78fd4f3307c84858957ddbd0f": "사이트 실행 경로를 거짓으로 얻습니다", + "02e602e968050352febfc4ddcae332f0": "OpenLitespeed는 기본 사이트 설정을 지원하지 않습니다", + "362538d60f495840284c667e67831b16": "스캔 디렉토리", + "4f137439eb93e6c752873c8af2d3d1cb": "스캔 작업에는 대기열에 있습니다!", + "613a6375944c3035efe735e87766fbbd": "업데이트가 성공했습니다!", + "6177805463a6a4f28e61bb3435bee13b": "성공적으로 설정하면 만료되면 사이트가 자동으로 중지됩니다!", + "1a69486f70b6baf749e6e1c4d5fcf689": "URL 접미사는 비어있을 수 없습니다!", + "2f858201b6da6a5419c5af8fd26f815c": "도난 방지 체인 도메인 이름은 비어있을 수 없습니다!", + "f36c15e89d61e07fb44095ae920b8fbc": "먼저 핫 링크를 켜십시오!", + "70dc560b6f4af6d210c9eeb8434c571c": "응답 리소스는 : /test.png 또는 404와 같은 URI 경로 또는 HTTP 상태 코드를 사용해야합니다.", + "aa8722f512ecebf5dae454e526402508": "먼저 안티 도난을 켜십시오!", + "bd0d7585c64988d80747a32fb0e3e15e": "로그가 비어 있습니다", + "a17f5bc22553d897f6363867c0165256": "기본 범주", + "0d0d87a34e787b2f4a59d912d4d441e4": "카테고리 이름은 비어있을 수 없습니다", + "6818a5095a78431eb3c99fe022b687b0": "카테고리 이름은 16 글자를 초과 할 수 없습니다", + "c4f16bb3d87b92062f73954c86485f64": "최대 10 개의 카테고리를 추가하십시오!", + "5fd53f59be2a3dee94df28886840b9a3": "지정된 카테고리 이름이 이미 존재합니다!", + "1c44b4096bb88e459ddadef895bea1c2": "지정된 범주가 존재하지 않습니다!", + "8f52253b1f007fd14ed0f60b89593d2d": "카테고리 삭제!", + "b51515085fc6ea6a07192c61e068c124": "성공적으로 수정되었습니다", + "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "이 기능은 Nginx/Apache 만 지원합니다", + "6678fd91bc04eb1e34e3474809387e7a": "쿼리 실패, 주소가 없습니다", + "7ac0a27b48f2931c7f294b996fe6b273": "오류 파싱 구성 파일", + "ee3a15a26aee235ac255e37342b444bb": "성공적으로 설정", + "79799f8c2f024685df774550ea5b427d": "웹 사이트 [프록시, 리디렉션, http에서 https]", + "29faf053a22c387532298233399e66f9": "구성 파일 구문 분석 오류", + "6c881e76c76b1f102bcb97a8b4f682f6": "이 웹 사이트는 [프록시, 리디렉션, http에서 https에서 https] 자동 재시작을 켜고 있습니다.", + "13fc1b8a101214be1a472db8de1bd8fd": "웹 사이트는 자동 재시작을 해제했습니다", + "1fb58c8e2967a648359d13aa22d9e493": "사이트가 존재하지 않습니다!", + "b0cd0c2bc5c6ce9f71127d60872209ce": "웹 사이트 [{}] 이름이 변경되었습니다 : [{}]", "946fb31f804cdde218dbf05d7183e94e": "MD5 일관성!", "d83dadd8fcee6c014db8af454bc279fc": "성공적으로 다운로드하십시오", "1336bbfcadd9119f86ecd48c2d9fb770": "데이터베이스 연결은 비정상적입니다.루트 사용자 기관 또는 데이터베이스 구성 매개 변수가 올바른지 확인하십시오.", @@ -571,9 +569,58 @@ "c0ff8a4b4b8f68c4ba7df88588291590": "FASTCGI 구성은 이미 웹 사이트 구성에 존재합니다", "e3a6621c5ea036c8f82d3f2d343f1bc8": "웹 사이트 FASTCGI 구성 오류!", "4c87778ab71a4e47170ccafd6edb4922": "웹 사이트 FASTCGI 구성 완료", + "e3fa50f6413dbb7bfe7cb26e1acd3d98": "먼저 계정으로 로그인하십시오", + "121303c67f81a8ebda41de51c8afaf27": "먼저 패널에서 Aapanel 계정에 로그인하십시오!", + "d5670370d84473122d8e4d5a3b27b4bf": "매개 변수 오류 : num", + "6b1c16b7a785029c0a11de3ab31cb125": "플러시 상태 성공", + "e06c1ddc33f674068e3ca201094145d1": "성공적으로 활성화하십시오", + "819b23804f66eddddfba39e7bdc53e68": "활성화 실패", + "4f57c5dce8b638737a368af15409439f": "활성화 실패", + "fe94df1697f309269e00428cae6bd141": "갱신 실패", + "b2ac1158b825f44cb363648fa3ad60cb": "성공적으로 갱신하십시오", + "78d29c0fadebf704e471a63afd430250": "적용 실패", + "3649e869737aa87f263194ce7f88f19e": "성공적으로 적용하십시오", + "34c4dc380e690d2ff6ebb6aaed103401": "product_id 매개 변수 오류!", + "28731318aa493586f88894355a79cb48": "서버에 연결하지 못했습니다!", + "0161305479129bbe47bb020605a15d40": "설정 성공!", + "5c9b599b99f7a169b9cd25f7045eaac5": "동기화 성공!", + "b6601359f1ae1067d4c4d271b7407639": "同步成功 1!", + "10a1984f6c5b935c5d8c7d4b4345e1e5": "同步成功!", + "86da84e8e3aacf73ee745caee5904268": "同步失败!", + "8ed30fe61ac59c9e1cb4a75d9a48d477": "성공적으로 만들어졌습니다!", + "330e51da1228a070540f82eb8e78155c": "성공적으로 설정하십시오!", + "7ac73ef676faaa8a5f8e3924b4d151e3": "사용자 이름이나 비밀번호는 3 자 미만일 수 없습니다", + "88d8a4565feba5ad270c00e85564b96d": "OpenLitespeed는 현재 지원되지 않습니다", + "c1f8cf125da0d6db1c4e0d09033c9ddd": "계정이나 비밀번호를 입력하십시오", + "bd7fb7b4280616cbe5de49eb1ee8cc3a": "보호 할 디렉토리를 입력하십시오", + "8c48114518721e3966cd4553a0cee705": "이름을 입력하십시오", + "dd65d82f6868cfa127f86e5658674829": "사이트 비밀번호 보호가 설정되어 취소 한 다음 설정하십시오.사이트 디렉토리 -> 비밀번호 액세스", + "1cc6b0e84b90d0ca0b863fccc0f33b36": "디렉토리가 보호되었습니다", + "b7526fc6f8b21e71ea1e290a982df4c9": "성공적으로 만들어졌습니다", + "7c0f11514254eedfffc86cf0bd09b98f": "APACHE2.2는 Multiphp를 지원하지 않습니다!", + "69be778c38b9edc0ab3040c478c39370": "오류 : %s
비밀번호 액세스", - "1cc6b0e84b90d0ca0b863fccc0f33b36": "디렉토리가 보호되었습니다", - "b7526fc6f8b21e71ea1e290a982df4c9": "성공적으로 만들어졌습니다", - "7c0f11514254eedfffc86cf0bd09b98f": "APACHE2.2는 Multiphp를 지원하지 않습니다!", - "69be778c38b9edc0ab3040c478c39370": "오류 : %s
{}", - "59d5fef323e89ded50ed6036848a97f3": "WebName 매개 변수의 형식이 올바르지 않으므로 Parsable JSON String이어야합니다.", - "078a3d3e263be2851ddfd9fa059d098f": "포트 범위가 잘못되었습니다!100-65535 사이 여야합니다", - "50370024fdd22dc69099a46d011b20e2": "PHP 버전은 비어있을 수 없습니다", - "44bd68c6703adf65ff21c63e9a876aa1": "기본 도메인의 형식이 잘못되었습니다", - "23eded6de9c06451f67ecb7ed3a8c95b": "기본 도메인은 와일드 카드 DNS 레코드가 될 수 없습니다", - "f54249d2613e48be05837ec9cd615a5f": "당신이 추가하려는 사이트는 이미 존재합니다!", - "b537e2d1946d559d3de4fb3c045d290f": "당신이 추가하려는 도메인은 이미 존재합니다!", - "f91c641aef33cf8ef4a29bc5d3a7193a": "추가하지 못했습니다. configuraton 오류를 작성하십시오!", - "c3c7869d22051eaa78a831834a398351": "오류가 삭제되었습니다. 다시 시도하십시오.", - "e2d272e229674e4c6765fab24a323604": "웹 사이트 삭제 [{}]가 성공적으로", - "aa5f20e061736fe68a915163e7e6d122": "지정된 사이트는 존재하지 않습니다", - "f11e72daff0ce484f4c401bd0bd28ae5": "사이트를 성공적으로 삭제했습니다!", - "c57d58c6bbd34144325871d75b42a577": "호스트 도메인 이름을 입력하십시오", - "5c7b7c2f6ed78eefdd77aaa3dddde61a": "도메인은 비어있을 수 없습니다!", - "ef446d50df1605a582f9b44b57327536": "도메인 이름 형식이 잘못되었습니다!", - "68ae44808f90043dee02358ee768bf6e": "도메인의 형식은 유효하지 않습니다!", - "1628c2a26ab6d1211b435f85782f8acc": "지정된 도메인 이름은 웹 사이트 [{}]에 제대로되었습니다.", - "925dc658ddf0f69509632848bcd39577": "지정된 도메인 이름은 웹 사이트의 하위 디렉토리에 의해 제대로되었습니다 [{}]!", - "7b02cf82181f516626a36b86c6a686f5": "사이트가 성공적으로 추가되었습니다!", - "9b3c4205f2f408790c9c1c5da53c3bfb": "PHP 버전을 얻지 못했습니다!", - "abc3db87d5608cc9559556468a696a35": "도메인 이름을 선택하십시오", - "7807e17f2bf49fb802bba1a04822ea16": "포트를 선택하십시오", - "e5925c3a126a66c0565df6d8ef49550e": "마지막 도메인은 삭제할 수 없습니다!", - "17088ffed1e537b917a6ecc9dc957159": "개인 키 오류, 확인하십시오!", - "26924bd958e212f07c31b6ffca9cbf8c": "인증서 오류, 확인하십시오!", - "44e2c1c3cfd8d248d7c9190a8f07c0ee": "인증서를받는 오류", - "fc0d039d9dcf3905ae8032c9cb33f475": "오류 :
{}", - "ddc2be35a5ed0bf09a88139c4ad10b4a": "원래 경로와 마찬가지로 변경할 필요가 없습니다!", - "84a8921b25f505d0d2077aeb5db4bc16": "공전", - "ad74aa2854e988c3157f92e0120bb19e": "APACHE2.2는 다중 기능을 지원하지 않습니다!, {}", - "4018ce634a10d352867f04962f107c14": "오류 설정이있었습니다. 다시 시도하십시오.", - "f1bef4fd5183ae83a5896c32a3d5e81d": "사용자 정의 PHP 구성은 Nginx 만 지원합니다", - "879e0d022ff268704f93a7e2b504c224": "버전을 사용자 정의 할 때는 PHP 연결 구성을 비울 수 없습니다!", - "73d6e709b568b43405052cec999798c5": "PHP 연결 구성 형식이 올바르지 않습니다. 예제를 참조하십시오!", - "90a0cb1e2a8bee7ba3bcc51d8b80ee2e": "지정된 UNIX 소켓 [{}]가 존재하지 않습니다!", - "751ac8fd72a0acd79772370efcae9c89": "[{}]에 연결할 수없고 시스템이 대상 서버에 연결할 수 있는지 확인하십시오.", - "3cb7d414f8ae92b2b29057f91346f7dc": "설정 실패, 웹 사이트 구성 파일에 Enable-PHP-XX 관련 구성 항목이 발견되지 않았습니다!", - "4622561ceaaecb6ef7dd51e65c9f4ec5": "기본 디렉토리가 꺼졌습니다!", - "e4ec1f40794bdf92e7261e6e0c51895a": "기본 디렉토리가 켜졌습니다!", - "eeddf79f68ffe029ed83fddcba46b35f": "오래된 대리", - "1592678472ea1b601fd74abff47c56b1": "대상 URL을 얻을 수 없습니다", - "18edd294853d381dbe0d612ab58bc123": "구성 파일에서 오류가 감지되었습니다.진행하기 전에 해결하십시오", - "8b5899be4df3aedb03c6fbad9055ed1c": "데이터베이스 이름은 40 자를 초과 할 수 없습니다!", - "111376d92c49c1a6c1522a2ef1dac23c": "지정된 리버스 프록시 이름 또는 프록시 폴더가 이미 존재합니다", - "09a988aa2e3185fce9fa8f4e8710b862": "디렉토리와 글로벌 프록시를 모두 설정할 수 없습니다", - "012a8e497feddccb8e4a47aa5e2dc156": "번호를 입력하십시오", - "90da7d2de9aa12ec32ee04172ca0d2d3": "전송 된 도메인 형식 오류 :", - "440544138d3ed8a2229792c88bad3bd8": "대상 URL에 액세스 할 수 없습니다", - "faf2457853593b3296699c4adacc7825": "교체 할 내용을 입력하십시오", - "748e5ad33460a17cf26c8024bb0a1620": "대체 할 내용은 교체 할 컨텐츠와 동일 할 수 없습니다.", - "195d5db9e1559f06348715bc3a822036": "글로벌 리버스 프록시는 이미 다시 쓰기/nginx 마스터 구성/vhost 파일에 존재합니다.", - "cc38d47ec9ac62ffc67a5db9c08d5d52": "대상 URL은 비어있을 수 없습니다", - "fb79afbbe0688565b7894b644dfd798d": "대상 URL은 [http : // 또는 https : //]가 될 수 없으며 : https://aapanel.com과 같은 전체 URL을 작성하십시오.", - "29c9da826ae868c8c6444328f48bcf40": "1 클릭 배포를 사용하는 WordPress 사이트에서는 현재 리버스 프록시를 사용할 수 없습니다.", - "a59dfc3ae22fd96d46011503a4f40744": "프록시가 중단되었습니다", - "078bb5f960587121c7cd606ddba5ad58": "편집하기 전에 리버스 프록시를 활성화하십시오!", - "fe7185cec796e18d58f8e84dc4da946f": "현재 Nginx 만 지원합니다", - "222a267cc5778206b253be35ee3ddab5": "현재의", - "38441d4a89765279852ca2830aa89c83": "새로운 URL 재 작성 규칙이 저장되었습니다!", - "c27a45bf16475a157ca1014cf886bb56": "메모를 입력하십시오", - "9a962a24e9b7b07800d6b7c7efd86f30": "사용자 이름이나 비밀번호는 3 자리 미만일 수 없습니다!", - "7eb904262649f9b2e4ba52e2bba9db71": "비밀번호 형식이 잘못되었습니다. 처음 두 자리에 특수 기호를 사용하지 마십시오!", - "492c7f01035f1cf9b88756f897f02b87": "오류, 기본 도메인은 IP 주소가 될 수 없습니다!", - "0a2b8c4a98495f6af19be9c1c342844e": "성공했습니다. JSP 프로그램을 테스트하십시오!", - "49281f9c7680652b1d110625da5c8cca": "Tomcat 매핑이 닫혔습니다!", - "ec3b07b78fd4f3307c84858957ddbd0f": "사이트 실행 경로를 거짓으로 얻습니다", - "02e602e968050352febfc4ddcae332f0": "OpenLitespeed는 기본 사이트 설정을 지원하지 않습니다", - "362538d60f495840284c667e67831b16": "스캔 디렉토리", - "4f137439eb93e6c752873c8af2d3d1cb": "스캔 작업에는 대기열에 있습니다!", - "613a6375944c3035efe735e87766fbbd": "업데이트가 성공했습니다!", - "6177805463a6a4f28e61bb3435bee13b": "성공적으로 설정하면 만료되면 사이트가 자동으로 중지됩니다!", - "1a69486f70b6baf749e6e1c4d5fcf689": "URL 접미사는 비어있을 수 없습니다!", - "2f858201b6da6a5419c5af8fd26f815c": "도난 방지 체인 도메인 이름은 비어있을 수 없습니다!", - "f36c15e89d61e07fb44095ae920b8fbc": "먼저 핫 링크를 켜십시오!", - "70dc560b6f4af6d210c9eeb8434c571c": "응답 리소스는 : /test.png 또는 404와 같은 URI 경로 또는 HTTP 상태 코드를 사용해야합니다.", - "aa8722f512ecebf5dae454e526402508": "먼저 안티 도난을 켜십시오!", - "bd0d7585c64988d80747a32fb0e3e15e": "로그가 비어 있습니다", - "a17f5bc22553d897f6363867c0165256": "기본 범주", - "0d0d87a34e787b2f4a59d912d4d441e4": "카테고리 이름은 비어있을 수 없습니다", - "6818a5095a78431eb3c99fe022b687b0": "카테고리 이름은 16 글자를 초과 할 수 없습니다", - "c4f16bb3d87b92062f73954c86485f64": "최대 10 개의 카테고리를 추가하십시오!", - "5fd53f59be2a3dee94df28886840b9a3": "지정된 카테고리 이름이 이미 존재합니다!", - "1c44b4096bb88e459ddadef895bea1c2": "지정된 범주가 존재하지 않습니다!", - "8f52253b1f007fd14ed0f60b89593d2d": "카테고리 삭제!", - "8d5a0b5b1a1c8691e1c0918e5a4da1a7": "이 기능은 Nginx/Apache 만 지원합니다", - "6678fd91bc04eb1e34e3474809387e7a": "쿼리 실패, 주소가 없습니다", - "7ac0a27b48f2931c7f294b996fe6b273": "오류 파싱 구성 파일", - "ee3a15a26aee235ac255e37342b444bb": "성공적으로 설정", - "79799f8c2f024685df774550ea5b427d": "웹 사이트 [프록시, 리디렉션, http에서 https]", - "29faf053a22c387532298233399e66f9": "구성 파일 구문 분석 오류", - "6c881e76c76b1f102bcb97a8b4f682f6": "이 웹 사이트는 [프록시, 리디렉션, http에서 https에서 https] 자동 재시작을 켜고 있습니다.", - "13fc1b8a101214be1a472db8de1bd8fd": "웹 사이트는 자동 재시작을 해제했습니다", - "1fb58c8e2967a648359d13aa22d9e493": "사이트가 존재하지 않습니다!", - "b0cd0c2bc5c6ce9f71127d60872209ce": "웹 사이트 [{}] 이름이 변경되었습니다 : [{}]", - "84278582ca50b97777b2c8ce780f9715": "지원 | 제안은 Aapanel 포럼을 방문하십시오", - "aa00d1012298d40c84daf11e09956c65": "다운로드 :", - "96aa6974173414b7a392afd70e5af6ad": "nginx 구성 파일을 찾을 수 없습니다 [{}]", - "d85076ee3898ee82924d3b38cd49b7a8": "작업자 프로세스", - "d0d1c4d1d25829f47c3e497e7f3c0132": "자동은 자동을 의미합니다", - "5c81587d9eb573fc7e6a4bc67b4603ba": "작업자 연결", - "5f892c3cd4a800e96fd4a7d6b81cdef2": "압축 전송을 활성화할지 여부", - "0dd93c7dd7d0a539fb21b522a5c138cf": "압축 할 최소 파일", - "6dfd8b44b3dad3eaec0587ac3bacdcd1": "압축 수준", - "36bacbbd75b4f381e4ae33983250de39": "업로드 할 최대 파일", - "6b30b46e4151e28f5e815efdaccf2544": "서버 이름의 해시 테이블 크기", - "4351aafd37b886a0537c175ea055d5aa": "클라이언트 헤더 버퍼 크기", - "d4a3f809e2109d7429c9fefd1ebb4996": "키 {} false를 얻으십시오", - "c8ef5bb0221c3b1f8c90c6648ed0ff5b": "값 {} false를 얻으십시오", - "3f1adbc068546184b4d2ca44fc9eb253": "클라이언트 바디 버퍼", - "811544f02f92e50584dd389bbdd761bc": "매개 변수 오류!-1", - "ae2c3655aab6402bd855f44421dc51d4": "매개 변수 오류!-2", - "e79a40d9379469f0f3d26251ecf0d334": "nginx 구성 파일이 존재하지 않습니다!", + "b7ad022c6ce9435c43c6760c8ba89b20": "CA 캔", + "5d39c57e28ab85457e4949306be619e8": "CA 서버 연결 시간이 제기되었습니다. 나중에 다시 시도하십시오.", + "721eb0b3ea85b39c22f16d6dfc84bc32": "도메인 이름은이 DNS 서비스 제공 업체에 속하지 않습니다.도메인 이름이 올바르게 채워 졌는지 확인하십시오.", + "b5366a9c53b455fdf8a552c205ca9021": "DNS 서버 연결에 실패했습니다.키가 올바른지 확인하십시오.", + "4de3dc0403846edfe5ff520837e2bbe5": "서명이 실패하고 도메인 이름 정확한 도메인 세트 : (.+) : {} 주간 반복 발행 수를 초과했습니다!", + "30c0b6ae1acf6137b588473814f3330d": "서명이 실패했으며 현재 서버 IP는 3 시간마다 최대 10 개의 계정을 생성하는 한도에 도달했습니다.", + "797e2e43e3fc3737891adc8ab4a1655c": "검증이 실패했거나 도메인 이름이 해결되지 않았거나 해상도가 적용되지 않았습니다.!", + "9efd01f346301888216d77d35ec156cf": "인증 실패, 도메인 이름 해상도 오류 또는 확인 URL에 액세스 할 수 없습니다!", + "6c23a7d25119c77017d1aa04761fefe8": "CA 서버에 연결하지 못했습니다. 나중에 다시 시도하십시오.", + "b7a370078ae6520cde883252890195cf": "지원되지 않는 도메인 이름 {}, 도메인 이름이 올바른지 확인하십시오!", + "1593706a4e3794c75129c8347021f0c5": "도메인 이름 {}는 해상도 레코드를 찾지 못했습니다.도메인 이름이 해결되었는지 확인하십시오.!", + "1d80008b0cc4936ab73047baf061c84e": "도메인 이름 {}에 유효한 txt 해상도 레코드가없는 경우 TXT 레코드가 올바르게 구문 분석되어 있는지 확인하십시오.DNSAPI에 의해 적용되면 10 분 후에 다시 시도하십시오.!", + "81dab277ae106f35a118916e25f3f026": "{} : {}에서 잘못된 TXT 레코드를 찾았습니다. TXT 해상도가 올바른지 확인하십시오.DNSAPI에 의해 적용되면 10 분 후에 다시 시도하십시오.!", + "b1bc7e763e87ef08d753a0676a0d5361": "이 도메인 이름은이 dnspod 계정에 존재하지 않습니다.구문 분석 추가에 실패했습니다.!", + "43901eff07fff70732a4e1d6a732920b": "Connection Timed Out, CA 서버는 귀하의 웹 사이트에 액세스 할 수 없습니다!", + "7cb06b776259c13fa73d3be5577df74c": "도메인 이름 {}는 현재 CAA 레코드를 확인하기 위해 필요합니다.CAA 레코드를 수동으로 해결하거나 1 시간 후에 다시 시도하십시오.!", + "09c36cbe592612c2546e60652f2d6964": "확인 시간 초과, 도메인 이름이 올바르게 해결되었는지 확인하십시오.DNS가 해결되면 서버와", + "e10beec48a4a4b433b2fec2eaff64671": "1 시간 안에 5 개 이상의 검증 실패, 응용 프로그램이 일시적으로 금지됩니다. 나중에 다시 시도하십시오!", + "239067c8e0586af7c09738e8240438fb": "갱신에 실패했고 인증서 디렉토리가 존재하지 않습니다.", + "c7664672bf11463a4cc40c61aeca77f1": "갱신 실패, Account_key가 누락되었습니다.", + "3f56bc50f098e641bb3d42e2d4255cbe": "SSL 신청 준비, 도메인 이름 {}", + "bd6995f087c0dacaecd470ca10539a2b": "적용된 도메인 이름 목록은 비어있을 수 없습니다.", + "3b5e16d8f5e1b88c78e494e6601a4d01": "성공하면 도메인 이름을 수동으로 해결하십시오", + "cf6b24b05942cd0c3723d7a4c25e6138": "|-절약 증명서 ..", + "bbb21c1842b512148f687ea068553c85": "|-자동 갱신 구성 ..", + "c06d0b48f82d74d3c2854dabdba12d93": "|-응용 프로그램이 성공적이며 웹 사이트에 자동으로 배포되고 있습니다!", + "569488d54cbcce1331896e4254f63a92": "응용 프로그램 성공.", + "1851141907c561e6ac67cba17e549232": "|-아메리카 프로토콜을 소지 화 ...", + "78e67927014eab1b84eb285b6057fca6": "|-계정 등록 ...", + "4896fdcb74c0e04522c8d3d89d08d569": "|-검증 정보가 ...", + "1016ed461618afd2dde9a4a709a4d080": "|-검증 정보를 프론트 엔드로 돌리고 사용자가 도메인 이름을 수동으로 해결하고 확인을 완료 할 때까지 기다립니다 ...", + "81a3b1828b60659bc3d3c9711e66f0ba": "|-사용자는 확인 요청을 제출합니다 ...", + "f147fc272d665cd009e1108c5fb6993d": "|-도메인 이름을 확인하려면 CA를 요청합니다 [{}] ...", + "4c699430325d31db3d7b43b0a0999364": "|-CA 검증 결과 [{}] ...", + "2b7dd2a937ababf46efb11073787664c": "|-도메인 이름이 확인되고 CSR이 전송됩니다 ...", + "1de253d3eb460e60480626694092d89e": "|-인증서 컨텐츠 작성 ...", + "a0c16d2f8e2aeba9dd9a3b040861ff39": "인증서 획득이 실패했습니다. 나중에 다시 시도하십시오.", + "89edc2a5e6ccecc2bdbdd1f9536fb90a": "| -error : {}, 신청 절차를 종료했습니다.", + "94417e0c15f634f59ce15128ef146686": "| -error : {}, 신청 절차를 종료하십시오.", + "03268bb5fa60cf57ac7c30f1f99dab01": "|-신청 프로세스를 나타 냈습니다!", + "be2d0d9f1a9d04ff22b70bd5bee9b8ef": "DNS를 사용하여 인증서를 요청하는 동안 오류가 발생했습니다", + "409bd1860bf065c68921473fc2266347": "|-addding 해상도 레코드, 도메인 이름 [{}], 레코드 값 [{}] ...", + "8b2ee088303a8001eaedb8c62e3de7e3": "|-해상도 결과, 도메인 이름 [{}], 레코드 값 [{}] ...", + "a11fba95c84fff590acd7dbdea4528e6": "|-도메인 이름을 확인하려면 [{}] ...", + "676e1a4f8e4561ad55045461f3421d62": "| -CA 검증 결과를 확인합니다 [{}] ...", + "d60d5b998a8ef802ba7f5b5ed343e256": "|-오류가 발생했고 다시 시도하십시오 [{}]", + "71087be1722815599ebecd0fd0f58b5e": "|-인증서 컨텐츠 페치 ...", + "6d1e7a222bfe888debd080a117490c9d": "|-기복 결의 역사 [{}]", + "77619ceb7742d8a8f87e52b02592d873": "서명이 실패하면 도메인 이름을 확인할 수 없었습니다.

1.도메인 이름이 해당 사이트에 바인딩되어 있는지 확인하십시오.

2.도메인 이름이 서버에 올바르게 해결되었는지 또는 해상도가 완전히 효과적이지 않은지 확인하십시오.

3.사이트에 리버스 프록시가 설정되어 있거나 CDN을 사용하는 경우 먼저 끄십시오.

4.사이트에 301 리디렉션이있는 경우 먼저 끄십시오

5.위의 수표가 문제가 없는지 확인하면 DNS 서비스 제공 업체를 변경하십시오.

", + "4d6822ed3bd01f379f2ab4b1e68068d7": "|-현재 갱신 할 인증서가 없습니다.", + "b74c00ca5fee122c49cd66ce3d91b2cf": "| -Renewal 실패 :", + "0b1c93d38c86c8d379886293cdf8ba66": "작업이 취소되었습니다!", + "d5ef96e383d376beeec28da7acfea516": "파일 다운로드", + "f24f6c5f5841340f898a6baaa6478bcd": "다운로드 파일 {}", + "9fdd777388a418cef77bce46c1b2511a": "지정된 압축 형식은 지원되지 않습니다!", + "4fa407ee74026903dc3013d0b2471eac": "압축이 성공했습니다!", + "ece43dcaac9352f58c422e500266a927": "무수압이 성공했습니다!", + "ac4eb62573e34c36ff426c8a6360c781": "백업 오류!", + "438ca4ffcf6fbd44ec129e73a24f0deb": "SQL/GZ/ZIP 파일을 선택하십시오!", + "0edfb4a54d6cf45209a6c7929b8b9919": "성공적으로 가져온 데이터베이스!", + "f6039d44b29456b20f8f373155ae4973": "사용자 이름", + "3544848f820b9d94a3f3871a382cf138": "새 비밀번호", + "6b1bc4e672d58d46d23502dcd78129be": "로그 정보를 청산합니다", + "0e900c57ee4635719ba671229ead12ff": "작업 기록 청산", + "1dfefaa079cbde4da09e89af6b49ff33": "네트워크 모니터링 레코드 제거", + "f59489317e210ec566cf6b6c9e3b20b9": "CPU 모니터링 레코드 지우기", + "e0976b426e3109ee01a1182b7c04b987": "디스크 모니터링 레코드 지우기", + "2c1eb277ff700f04b65306399784f875": "IP 정보 지우기", + "4abfe31831aa15dc27ff44067b2bf0d1": "시스템 기록 청산", + "0c06c1eb5ef47b883f7cbcab9be84e97": "패널은 성공적으로 포장되었습니다.다른 작업을 수행하려면 패널에 로그인하지 마십시오!", + "b60091f633dedd493b16f5548e32233d": "패널 초기화 주소", + "b097eb5212f13c74d1c96b59f65c4dd6": "{} 작업을 성공적으로 지우 셨습니다!", + "e82eb2921856b4230611dc1406f60a6f": "시스템 쓰레기는 청소하고 완전히 삭제 된 [{}] 파일, 해제 디스크 공간 [{}]", + "0d793de4ae05511630a2eeea9b5528d9": "| -Cleared [{}], 삭제 된 [{}] 파일, 해제 디스크 공간 [{}]", + "db62071d34202efa3a0aa1a743394938": "| -spool 지우기, 삭제 된 [{}] 파일, 해제 디스크 공간 [{}]", + "a1d3c6c221b8ceaaef8881e09d0a2945": "| -PHP 세션 ...", + "c16f6a333c0ba871467568be496cbea0": "| -php 세션이 지우고 삭제 된 [{}] 파일, 해제 디스크 공간 [{}]", + "5d88b58a1c0ba0dee9eeb89a8bcdda36": "|-임시 파일 및 사이트 로그를 정리 ...", + "e038ca57ad9c03f40bec42908af2ccff": "|-임시 파일 및 사이트 로그가 지워지고 삭제 된 [{}] 파일, 해제 디스크 공간 [{}]", + "fa3d217e80478d3c03c437b7fc11432f": "|-오류, 사용자 이름은 5 자 미만일 수 없습니다", + "4cffae9f32bf898c859a5937268b9727": "| -error, 너무 간단한 사용자 이름을 사용할 수 없습니다", + "fbcb6a4b1126170666b4c4102afbb43d": "| -New 사용자 이름 : {}", + "cbe2d798534f872748b7cba6615596d8": "Aapanel이있는 맞춤형 에디션", + "ec1d9ff2578e1f231696217b2c2d15ab": "실패, 패널의 현재 포트를 삭제할 수 없습니다!", + "51708089c15820800d3dd7bd8d8cdfba": "Aapanel", + "fee066b1b93fecf9545758cf9a87c3de": "플러그인 업데이트 ...", + "c6462fea6d27e4ecfc68ae1944051f77": "로그인 성공,로드 ...", + "c11f9218de293117d2cd58a009534167": "모든 플러그인이 6.0으로 성공적으로 업데이트되었습니다!", + "cc478711642936a519c27b7c388fbb50": "Aapanel Cli", + "cfef992430ab5a7b2373138d4b86425c": "다시 시작 패널", + "95b8b68d1c80ca75e1ab15bf5b9a8394": "패널 포트를 변경하십시오", + "f3013e54b467cdb2fac9a424bae963e4": "정지 패널", + "15ea17031cb6a968e3b9ea2b28546c53": "지우기 패널 캐시", + "20cdfcd210da305d900d25ec4c084184": "명확한 로그인 제한", + "ab41db99c7941ef74c37bd97733f7707": "새로 고침 패널", + "315f4fdd99e49c6a2e80a95ce82ba534": "입구 제한을 취소하십시오", + "07ed88796641228c3602122cf5075fc2": "패널 비밀번호를 변경하십시오", + "63d8f2a0e51e9243f91b0285e4e44667": "도메인 바인딩 한계를 취소합니다", + "3913f08c2fa53f4c413cc0772f9401d1": "패널 사용자 이름을 변경하십시오", + "b773a80578cdc8f50d57393d6b0a3d67": "IP 액세스 한계를 취소합니다", + "a6a23a4004f99fef13372de56433edbc": "MySQL 루트 비밀번호를 강제로 변경하십시오", + "bc449263dd0183a82a3d0a03cd8f26dc": "패널 기본 정보를 봅니다", + "975687e8a64e2c2842a34ca6d6bf8e85": "명확한 시스템 쓰레기", + "84bc199f1a5ce205b0f5fc3e64ef3e95": "pls 입력 명령 번호 :", + "954be127268a1704a7af22b23bb440e8": "취소!", + "51c6348531daaf0fb1e84fafa12b5f15": "pls는 새 비밀번호를 입력합니다.", + "34c4edd98a45ea8a13556965a6c4f2b0": "pls는 새 사용자 이름을 입력합니다 (> 5 자) :", + "219863186dddc079747a525bb7877a88": "pls는 새로운 mysql 루트 비밀번호를 입력합니다 :", + "c172da334fdcac77f704fa4408dd2f16": "|-오류, 비밀번호는 비어있을 수 없습니다", + "a79cf67c04d379c4916dc584c9d8333f": "|-오류, 암호는 8 자 미만일 수 없습니다", + "06f5000079703a33b91564159f07770a": "|-오류, 비밀번호에는 특수 문자가 포함될 수 없습니다", + "913153f9957100bcf3029e8f3d5bc5e9": "pls는 새 패널 포트를 입력합니다.", + "39ea14ec0df812219c450ba15230ad2d": "|-오류, 유효한 포트가 입력되지 않았습니다", + "bab5cb07adebbfbd938180d6862a7ce7": "|-오류, pls는 공통 포트를 패널 포트로 사용하지 않습니다.", + "00213d6b5423971311e5a47f83081a24": "|-오류, 새 포트는 현재 패널 포트와 동일하며 변경할 필요가 없습니다.", + "e1e57838b2c7e1567fb96e20bfd474e0": "|-오류, 지정된 포트가 이미 사용 중입니다", + "5093d954f09d473d091355fe292920a8": "|-감기 한도가 취소되었습니다", + "e0b1cb1725c8fb29d42fa69d679a73ea": "|-도메인 제한이 취소되었습니다", + "968c7b9246b5ab3d3e7659cea211a20b": "| -IP 액세스 한계가 취소되었습니다", + "e06d1ba70f1331e9f9a113cc2f887d3f": "무단", + "6c89f438bb1463ecd92f1832d0aaa277": "QR 코드가 만료되었습니다", + "a11371c8ae1f6978f0dd88d0bddaa1be": "qrcore를 성공적으로 스캔하십시오", + "ab9f853a311a37b0fdc50cdfb4e7ac05": "로그인 실패 2", + "735ff2bcf3bc80998a077ba01d50ab8c": "로그인 실패 1", + "5b0308d8fa9b2acb17601e300f789005": "API가 켜지지 않았습니다", + "55c294cfb3e6b69997d8b5cf04369914": "결합되지 않은 전화", + "13b08ce52b782ebdc94a64637cd3c992": "앱 스캔 코드 로그인 대기 1", + "21d947c00f0d5b4ca710f7db100b8af3": "앱 스캔 코드 로그인 대기 2", + "9d7820cd626f61af19de756761a2280f": "앱 스캔 코드 로그인을 기다리고 있습니다", + "ed8abe55f77bc3512706869b791aa8f0": "222", + "727f11bf8b090ccbf27efcfb530e262f": "성공적으로 로그인!", "8d4d13a3836227d377455b5dc0256d5a": "죄송합니다. OLS는 현재이 기능을 지원하지 않습니다", "6ca3d3b27428d22e047e13a552f1600e": "성공적으로 추가하십시오", "868903fa7bc939d9ff39df264589c0fd": "성공적으로 삭제하십시오", @@ -958,6 +959,8 @@ "7a428a0050c9d556e632a5f7175b24ed": "접미사는 비어있을 수 없습니다.모든 파일을 검색하려면 [ *. *]를 입력하십시오", "cdd28535892f88791917e7ed77a8245c": "디렉토리는 비어 있거나 / /", "e7582a886ed8861ac63d9b2a7d94b973": "교체 할 내용은 비어있을 수 없습니다", + "90d0982f5d024da53b21f69d3f0c8cbb": "데이터베이스가 존재하지 않습니다!", + "b376175f0c97d2ab7c37e44ec3b3a1b9": "Nonsupport mysql5.1!", "4ff3b49771b3e27d533b9f4757e8e405": "无日志", "e50f043316845a08a945f69e097f1a54": "성공적으로 열렸습니다", "9bac3879208bc174db83cbf159528cc6": "비밀번호 인증이 없습니다", @@ -1223,6 +1226,34 @@ "2226683c8d89df274e2ded7e04fc4a82": "시스템 임계 디렉토리를 기본 백업 디렉토리로 사용할 수 없습니다.", "e69cc1102c087a819764e93d50ab3ef0": "지정된 웹 사이트를 찾을 수 없었습니다.", "a584585f2e3445e4d2d93865bb0c7952": "지정된 데이터베이스를 찾을 수 없습니다.", + "fdf95ff2f0a3298c8a83aad5255780e5": "데이터베이스 [", + "35936286a74058c49c309b2a7b6bcc27": "데이터베이스 사용자 이름이 잘못되었습니다!", + "e2d70330883c9001c29e0225b6c99e9c": "데이터베이스 이름은 유효하지 않습니다!", + "68519350e49a18c7380764a80dd6daa9": "매개 변수 전달 오류, 누락 된 매개 변수 {}!", + "152b651d5c0151cc3864d20d187d77fe": "통과하다!", + "bea367683a2238e537e3833d0b15622e": "지정된 서버가 이미 존재합니다 : [{} : {}]", + "0b5f04d53d3af37f88b9b46b568d1dee": "실패 추가 : {}", + "0667c3c8ef82f94545b286b69ef83030": "매개 변수가 전달 된 오류가 발생했습니다. 다시 시도하십시오!", + "4621e9c9b573b1bc868d310934d04cac": "지정된 원격 서버가 존재하지 않습니다!", + "81eef63c48701d6d256ad3e7789bd8f6": "성공적으로 삭제 : {}", + "c1f0a2e54f38603c731c9625f35aaa11": "성공적으로 수정되었습니다!", + "072b1fb2c5c32e99fea89190987f1511": "편집 실패 : {}", + "0267067a2f76a814e9f2c9c111fa6a2e": "MySQLDB 구성 요소가 누락되었습니다!", + "b1b74781e4481f083f18ad6719a6b583": "데이터베이스를 연결하려면 오류가 발생합니다", + "94bce4b2a745d07c681c29af6824d435": "데이터베이스 연결 시간이 초과되면 구성이 올바른지 확인하십시오.", + "34fbe37d35b2a1bc1a58bdcc559be395": "MySQL 비밀번호 오류.", + "3d28138b07e32fc589d1a654980b1c28": "최대 연결 수를 초과하면 나중에 다시 시도하십시오.", + "f5f1c56c404d98779a4fbe5630f7d778": "데이터베이스 연결이 실패했습니다. 루트 사용자가 127.0.0.1에 액세스 할 수있는 권한이 있는지 확인하십시오.", + "a9905dc3078535a661eb1aeb06f5a6da": "데이터베이스 비밀번호가 잘못되었습니다!", + "b99ad6bb4ca9c32cc31655c1f26ad347": "연결 시간이 끝나면 TCP/IP 기능을 수동으로 활성화하십시오 (시작 메뉴-> SQL 2005-> 구성 도구-> 2005 네트워크 구성-> TCP/IP-> 활성화)", + "734539622328115b6a79770792621598": "지정된 데이터베이스가 이미 존재합니다. 반복적으로 추가하지 마십시오.", + "d0f9cbbc082071764bd58cb868dc86d8": "작업에 실패했으며 원격 데이터베이스는 작업을 지원하지 않습니다.", + "2ff54c9774281fd464a75fac44b2bbee": "권한이 충분하지 않으면 루트 사용자를 사용하십시오.", + "d4e4cbdf86adbbf8338c46fa850b0d97": "실패한 생성 SQL Server에는 GUI 지원이 필요합니다", + "0e50ad3c23c4eb42db81e7ea3da4848e": "매개 변수 전달 오류.", + "9c367cb765f842bfe6a0465674b8d311": "운영이 성공적입니다.", + "7a48d7e0ce17e4a5ad1dadbfa199e464": "성공적으로 복원하십시오.", + "e9bc861d80a7d42ec15bcdb7e5529cda": "실패를 복원하십시오.", "011f5bc126ef873c518707207467b8bf": "MongoDB 서비스는 아직 시작되지 않았습니다!", "22ccd99629b3c3d5a8533884821f4189": "데이터베이스 비밀번호는 비어 있거나 특수 문자가 없습니다!", "c976dec7ee3b051c53f9761bd9aa73c2": "데이터베이스 비밀번호는 중국어가 될 수 없습니다. 이름을 변경하십시오!", @@ -1267,34 +1298,6 @@ "df4ac7366fa4fda98e94ea68f0e40d3c": "SQL 서버가 설치되거나 시작되지 않았습니다.먼저 설치하거나 시작하십시오", "935e0f201a754f406575ec14bde54a21": "SATHE 암호는 비어 있거나 특수 기호가 없을 수 없습니다", "896543f6d67a62d4c594b28eeee3c923": "SA의 비밀번호가 성공적으로 변경됩니다.", - "fdf95ff2f0a3298c8a83aad5255780e5": "데이터베이스 [", - "35936286a74058c49c309b2a7b6bcc27": "데이터베이스 사용자 이름이 잘못되었습니다!", - "e2d70330883c9001c29e0225b6c99e9c": "데이터베이스 이름은 유효하지 않습니다!", - "68519350e49a18c7380764a80dd6daa9": "매개 변수 전달 오류, 누락 된 매개 변수 {}!", - "152b651d5c0151cc3864d20d187d77fe": "통과하다!", - "bea367683a2238e537e3833d0b15622e": "지정된 서버가 이미 존재합니다 : [{} : {}]", - "0b5f04d53d3af37f88b9b46b568d1dee": "실패 추가 : {}", - "0667c3c8ef82f94545b286b69ef83030": "매개 변수가 전달 된 오류가 발생했습니다. 다시 시도하십시오!", - "4621e9c9b573b1bc868d310934d04cac": "지정된 원격 서버가 존재하지 않습니다!", - "81eef63c48701d6d256ad3e7789bd8f6": "성공적으로 삭제 : {}", - "c1f0a2e54f38603c731c9625f35aaa11": "성공적으로 수정되었습니다!", - "072b1fb2c5c32e99fea89190987f1511": "편집 실패 : {}", - "0267067a2f76a814e9f2c9c111fa6a2e": "MySQLDB 구성 요소가 누락되었습니다!", - "b1b74781e4481f083f18ad6719a6b583": "데이터베이스를 연결하려면 오류가 발생합니다", - "94bce4b2a745d07c681c29af6824d435": "데이터베이스 연결 시간이 초과되면 구성이 올바른지 확인하십시오.", - "34fbe37d35b2a1bc1a58bdcc559be395": "MySQL 비밀번호 오류.", - "3d28138b07e32fc589d1a654980b1c28": "최대 연결 수를 초과하면 나중에 다시 시도하십시오.", - "f5f1c56c404d98779a4fbe5630f7d778": "데이터베이스 연결이 실패했습니다. 루트 사용자가 127.0.0.1에 액세스 할 수있는 권한이 있는지 확인하십시오.", - "a9905dc3078535a661eb1aeb06f5a6da": "데이터베이스 비밀번호가 잘못되었습니다!", - "b99ad6bb4ca9c32cc31655c1f26ad347": "연결 시간이 끝나면 TCP/IP 기능을 수동으로 활성화하십시오 (시작 메뉴-> SQL 2005-> 구성 도구-> 2005 네트워크 구성-> TCP/IP-> 활성화)", - "734539622328115b6a79770792621598": "지정된 데이터베이스가 이미 존재합니다. 반복적으로 추가하지 마십시오.", - "d0f9cbbc082071764bd58cb868dc86d8": "작업에 실패했으며 원격 데이터베이스는 작업을 지원하지 않습니다.", - "2ff54c9774281fd464a75fac44b2bbee": "권한이 충분하지 않으면 루트 사용자를 사용하십시오.", - "d4e4cbdf86adbbf8338c46fa850b0d97": "실패한 생성 SQL Server에는 GUI 지원이 필요합니다", - "0e50ad3c23c4eb42db81e7ea3da4848e": "매개 변수 전달 오류.", - "9c367cb765f842bfe6a0465674b8d311": "운영이 성공적입니다.", - "7a48d7e0ce17e4a5ad1dadbfa199e464": "성공적으로 복원하십시오.", - "e9bc861d80a7d42ec15bcdb7e5529cda": "실패를 복원하십시오.", "bb0b766f654bd8338d9dabb8c57378ff": "데이터베이스 생성에 실패했습니다.MySQL 실행 상태를 확인하고 다시 시도하십시오.", "439d4d68575132c1a273fc36bbf6f72c": "id {}가있는 Site-Info가 없습니다.", "bff0e83714a9073c270776c37cc64791": "参数错误", @@ -1325,37 +1328,35 @@ "ba797e05926242a5135289c98dcd9d36": "源端口不能为空", "3ec1da1913c04a2c53dd6d6379f99d4c": "目标地址不能为空", "efef8b005464719937a7daa96ed5b3d8": "端口转发规则已存在, 请勿重复添加", - "0dbd3323f74314d1cf85c7db5ac2fd1d": "현재 IE 브라우저 버전이 너무 낮아서 일부 기능을 표시하기에는 다른 브라우저를 사용하십시오.또는 중국 회사가 개발 한 브라우저를 사용하는 경우 Extreme Mode로 전환하십시오!", - "47b1cbb355da8faa6415f12c96469ba1": "20 연속 검증 실패, 1 시간 동안 금지", - "749707db319ac2fa02785c1bdb58083b": "오류 : SSHD 구성 파일이 존재하지 않습니다", - "80b695b495da54ed6a76eac8a965bc7b": "로그인 알람을 성공적으로 취소하십시오", - "40d3b22b13a0b11ed727aa257e2228c0": "메시지 채널이 설치되지 않았습니다", - "87597848076b873c1a9bb9ffea64950b": "오류 : SSHD 구성 파일이 존재하지 않습니다", - "bdb119e343438b628e7ba8b20e4632ed": "오류 : SSHD 구성이 존재하지 않습니다", - "45de64a88b25b6527ccd3efbce76ed3b": "매개 변수 전달 오류", - "387e90104fbc0261c1ae5db9443f0b22": "루트 로그인 메소드를 다음과 같이 설정합니다. {}", - "0fd775e0a957d247e199d2cd911078e8": "비밀번호는 비어있을 수 없습니다", - "2279ae228c06ace23e59cc218f2536f8": "비밀번호의 길이는 8 비트 미만일 수 없습니다", - "207d2e497f2ca0d97f1453671d4d824a": "사용자 이름이 이미 존재합니다", - "e1c5fbbb3782936fa209244fcc62ea7e": "비밀번호에는 문자와 숫자 또는 기호가 포함되어야합니다", - "4c94c49ecaebd37c52172946778fc296": "설정 실패", - "e7e807310035d5b348cbf55c28df2968": "작업자 RAM을 거짓으로 얻으십시오", - "dc2e22fb7940c00998017d342198a9e2": "작업자 가동 시간을 거짓으로 얻으십시오", - "f5332a2b815ca2e09f3e658e8c81a282": "작업자를 다시 시작하십시오", - "2d052af48937c6a8916f84a9a5d2a5e1": "작업자 날짜를 거짓으로 받으십시오", - "6880f4164c935867cecf3a89e8ac01ce": "작업자 시간 세부 사항을 거짓으로 얻습니다", - "a3589163c43210f6d8f52f6a2d46823f": "근로자 reqpersec false를 얻으십시오", - "6dfcfe44b282f6a36ea2e487b583c543": "Worker TotalAccesses를 거짓으로 얻으십시오", - "d1448a41deace3e0a5cb3555cee67b97": "작업자 Totalkbytes가 거짓을 얻으십시오", - "1bdd788c6927c1fd0420ca6e2316642e": "근로자 바쁜 노동자에게 거짓을 얻으십시오", - "f656a1e1c80cdf1eb1c63d3a0b121a65": "노동자 유휴 노동자에게 거짓을 얻으십시오", - "3f8ee4f649b32e181c15c39682629844": "사용자 [{}]가 존재합니다!", - "b23886f3380c4a9500a7614474ff6bf8": "암호는 최소한 [{}] 문자 여야합니다", - "f20eaf62a87c2072f7c09ec70a6b90c9": "오류를 삭제하십시오", - "49b236322476b6e7baf65369b4b61565": "del_error", - "9607dbc43fb07121ebd102497290c15b": "{} FTP 사용자가 실패했습니다!", - "8b73e5696a44d470ee99c274152c1b54": "포트 [{}]가 사용됩니다!", - "384169bf557e2785a74c6ab4c8ca0d9c": "편집 오류", + "4943a6954b9887aa5989713fcbb2a0d1": "오류 : {} 서버에 연결할 수 없으면 [AK/SK/Storage] 설정이 올바른지 확인하십시오!", + "da10c98ffbf34b30edec9cf47d998a68": "성공적인 응용 프로그램!", + "24380483226504475d196fdcff7a6c77": "서버를 연결하지 못했습니다!-1", + "353d91a7655b3ef5e024d07eef1888ab": "서버를 연결하지 못했습니다!-2", + "75809e3b321efe1afbdf9773494d5dd9": "{} 구성 파일을 찾지 못했습니다. 열기 전에 SSL 포트 설정을 닫으십시오.", + "7d7014331b485392e1d6055aad5c26cd": "nginx phpmyadmin SSL 구성 파일을 찾지 못했습니다. 열기 전에 SSL 포트 설정을 닫으세요.", + "35e15c0be5bb51b628d96c9a520c9b01": "포트 [{}]가 사용 중입니다!", + "f471efd0f135fbddafdce4ad1febf5bb": "현재 웹 서버는 OpenLitEspeed입니다.", + "4a32aac45fa22d0c693a646d5e265bf1": "패널 인증서는 존재하지 않습니다.", + "c6b59c5c3d29862a6dc85e9375094c83": "현재 웹 서버는 로컬 및 개인 액세스입니다.", + "056197513cf8b469874e09b037fa5aaf": "현재 웹 서버는 지원되지 않습니다.", + "7ec0387d04c7d7c8259b497464fa3282": "phpmyadmin은 이미 {}!", + "4790f238a5706fa03ed78c98efabd5f2": "바인딩이 유효합니다!", + "c6fdc537935f8c3e97a442e8be9adf20": "업로드 된 폴더와 동일한 이름을 가진 파일이 있습니다.확인하고 다시 시도하십시오", + "055df73dfeac55aa4ddb8b31e98d3fea": "当前用户没有足够的权限去访问或者修改 {}", + "3ff13f637b9e318936f8d30f77c57c64": "当前目录为只读权限", + "8c7dd0d2966be0d1427bb839c94a993a": "上传失败 : {}", + "fc937a95d443a5accb3dc43dabf8a4c0": "磁盘空间不足", + "dc494cbbc1dad9fe8a2d219d561840d5": "文件上传发生错误请删除临时文件【 {} {", + "45cd3dad5e3ac153966eff8aaf30c33d": "存在与上传文件同名的文件夹请检查后重试", + "eaf87474bf8e355eb84fadd0caf91f14": "当前用户没有足够的权限去访问或者修改", + "fe56b3a6f3a8b6a24f60a62408351b0e": "이것은 Recycle Bin 디렉토리입니다. 오른쪽 상단의 [Recycle] 버튼을 누르십시오.", + "8ec1fba8a89cb67bc958d7b2424156e9": "파일은 빈으로 이동했습니다", + "99a091a444e6e207f60506fb4f0bdcce": "파일을 성공적으로 삭제했습니다", + "5873103908815f34241636e336e1f463": "압축 작업이 메시지 대기열에 추가되었습니다!", + "e57b7bae408dd226fabe86773cd6b3c3": "일괄 작업 성공 [{}], 실패 [{}]", + "c28802f8d7f5a40cb9f17cace202e59f": "쿼리 오류, {}", + "11c99562b6212de14ddf1dcb06ea1696": "라인업에 작업이 없음 {}", + "94f33212bde1cd76797fe4fe78b2167f": "{}에서 {}까지 작곡가 업그레이드", "f5484a1a111b9d70ecaafb36a7df48f6": "이메일은 존재하지 않습니다", "59d26291d38cd716232dd08e1c6c5304": "이메일을 입력하십시오", "d76fd2d8c3dffcbab0885c9bdf78fe16": "이메일이 이미 존재합니다", @@ -1379,6 +1380,7 @@ "501b1c01d3b31cb34cbcad5a19ae851e": "비밀번호 만료 기간은 {} 일보다 길 수 없습니다.", "db6890122bbd9e97fb8e1b117b367358": "비밀번호 만료 시간은 [{}] 일로 설정됩니다", "486b7d3b3ca271d873ef1c9d4c0e07a7": "비밀번호가 변경되었습니다!", + "8e6595abbb40f247c74fffdf61bd5a00": "설정 실패!다시 로그인해 보세요.", "6c6b6e84490b34b36f33dcc8ae85fdc2": "두 번 입력 한 비밀번호는 일관성이 없습니다. 다시 시도하십시오!", "55f5bbcf01ad984ea402d50061609240": "암호는 5 자 미만일 수 없습니다!", "59b39458556877d386a837773736eb2d": "비밀번호의 길이는 8 자 이상이어야하며 3 자리 이상의 숫자 조합, 대문자, 소문자 및 특수 문자가 포함되어 있어야합니다.", @@ -1400,7 +1402,6 @@ "5ad475cca538c88655b2299588b9a091": "시간 초과 시간은 300S에서 30 일 사이 여야합니다", "7b66709539a01edb71eacc470ce7f4bc": "도메인은 IP 주소를 바인딩 할 수 없습니다", "f522b971d05877c869be6f81b9eb7fe8": "올바른 서버 IP를 설정하십시오", - "35e15c0be5bb51b628d96c9a520c9b01": "포트 [{}]가 사용 중입니다!", "716e57b0f48924438fc1209c06353fc7": "시스템 임계 디렉토리를 기본 백업 디렉토리로 사용할 수 없습니다", "17ceb8d2128aa1ce5f2f51ef5b19a809": "시스템 임계 디렉토리를 기본 사이트 디렉토리로 사용할 수 없습니다", "e60263ac381ae4a9ad460a5c706b9b5a": "구성 저장", @@ -1424,11 +1425,11 @@ "8c7a5b3c69236d00b3577be9c91a71cc": "요청 된 패널 정보가 존재하지 않습니다!", "5b8ce0c16a86626165e93796b14d4bf6": "오류 읽기 PHP 구성 파일,이 PHP를 다시 설치하십시오!", "0631278069374277ff3b2cc2949940fd": "올바른 [도메인 또는 IP]를 입력하십시오!", - "ac40ea6dbb38e754acea879d58701424": "{} 날)", - "7a3fd8f7ddf80ae2db423aa55177d22a": "{} 일) {} 시간)", + "ac40ea6dbb38e754acea879d58701424": "{} 날", + "7a3fd8f7ddf80ae2db423aa55177d22a": "{} 일 {} 시간", "377e7b3a05033be3164d7900c2feb2a6": "{} 시간 (S)", "b2a09ec7e869bb555211fe7b26b5cf3e": "{} Hour (s) {} 분 (s)", - "9c9a5e9d306cf687381d8f1924b43b9c": "{} 분)", + "9c9a5e9d306cf687381d8f1924b43b9c": "{} 분", "0656e1b2562955020afc339b3c9a1838": "PHP가 설치되지 않았습니다", "375a8ffa8b733dd5f6b069de80c57d48": "PHP 버전을 얻지 못했습니다!", "2b5266cb205519f70b1bcf7e2654982a": "지정된 PHP 버전이 설치되지 않았습니다", @@ -1461,65 +1462,9 @@ "25baa40bd86bb31a5095cf5457e87f74": "제출 된 텍스트가 너무 길어서 조정하고 다시 제출하십시오 (Max : 512)", "1cc5a8ad869ce7dd47987b6eb278260a": "성공적으로 제출되었습니다", "7e4182fc0365b28328ac2ec8896f73b1": "설정이 실패했습니다!{}", - "4943a6954b9887aa5989713fcbb2a0d1": "오류 : {} 서버에 연결할 수 없으면 [AK/SK/Storage] 설정이 올바른지 확인하십시오!", - "da10c98ffbf34b30edec9cf47d998a68": "성공적인 응용 프로그램!", - "24380483226504475d196fdcff7a6c77": "서버를 연결하지 못했습니다!-1", - "353d91a7655b3ef5e024d07eef1888ab": "서버를 연결하지 못했습니다!-2", - "75809e3b321efe1afbdf9773494d5dd9": "{} 구성 파일을 찾지 못했습니다. 열기 전에 SSL 포트 설정을 닫으십시오.", - "f471efd0f135fbddafdce4ad1febf5bb": "현재 웹 서버는 OpenLitEspeed입니다.", - "4a32aac45fa22d0c693a646d5e265bf1": "패널 인증서는 존재하지 않습니다.", - "c6b59c5c3d29862a6dc85e9375094c83": "현재 웹 서버는 로컬 및 개인 액세스입니다.", - "056197513cf8b469874e09b037fa5aaf": "현재 웹 서버는 지원되지 않습니다.", - "7ec0387d04c7d7c8259b497464fa3282": "phpmyadmin은 이미 {}!", - "4790f238a5706fa03ed78c98efabd5f2": "바인딩이 유효합니다!", - "e9a08443260e6f3b795eb57419a6ad77": "클라우드 스토리지에 링크하지 못했습니다!", - "efc33dbd7910fde6ce3fe364a7d43bfc": "rsyslog 구성 파일이 존재하지 않습니다! \\ n rsyslog가 설치되어 있는지 또는 /ect/rsyslog.cn이 존재하는지 확인하십시오!", - "a6fba111c7d0f418059856c4160b4d0d": "매개 변수가 잘못되었습니다!", - "7e8ca7bb5dd0e69e0cd0d0e66832e2cd": "데이터베이스 생성에 실패했습니다.MySQL 실행 상태를 확인하고 다시 시도하십시오.{}", - "45f9a99535dea651b8f160f6cf23f826": "구성 파일 읽기가 실패했습니다!", - "5e3b84200bea6d70f6fed1d5802a7fa0": "쿼리 실패, 주소가 없습니다", - "5fa721871e93bc4121df74ce51454519": "플러그인 활성화 실패, 나중에 다시 시도하십시오.", - "9f139adb77c26c263ff2a956d66f80fe": "플러그인 비활성화가 실패했습니다. 나중에 다시 시도하십시오.", - "f8e169b0ef8d58f84c71e375141852ed": "세트를 만들지 못했습니다", - "e35ca748f8c5a0e78731bae94fb7d68a": "세트를 제거하지 못했습니다", - "468baaa7179c8b181d1de35fa00267e9": "잘못된 유형의 세트 항목", - "a01e808b2be07634b0e3714bff919ae1": "세트에서 항목을 제거하지 못했습니다", - "35c9b2817b191a3f60553d46b748068b": "세트에서 항목 상태를 변경하지 못했습니다", - "73b1d7767613c6300db27ade773369fa": "WordPress 원격 사이트를 제거하는 데 실패했습니다", - "492478fa7955b2282528aefe56d42ec4": "프로필이 존재하지 않습니다!", - "71804f43c7fe50a625e9fd1f930365ce": "클라우드에서 얻지 못했습니다!", - "46fb7ccd0be31ec840d524d8f99f1368": "업데이트 완료!", - "d631f73db41ac42021c522b61fba3274": "업데이트 할 필요가 없습니다!", - "11ce17a8cf1f195a0687c00fc4201d2f": "수입 성공!", - "d49c4e6f0a63eb94dfb921be5d804e8b": "사이트가 존재하지 않습니다!", - "0b5efcfb8a290faab14ebce65ece59e7": "위험한 웹 사이트 루트 디렉토리!", - "d747c3e10f8c5fd5c0aec8b422883292": "지정된 패키지는 존재하지 않습니다.!", - "22e806afb25ddcb6cf205be320eb2350": "설치 패키지에서 [Aapanel Auto Deployment Configuration File]을 찾을 수 없습니다.", - "7658d0092e96ef38859c12f2a91f641f": "현재 배포 작업이 없습니다!", - "dd1ddef2d75c7c80540db8c12270af8a": "전달 된 매개 변수는 보편적 인 내부 객체가 아닙니다", - "93916600bce5b19586cbf51d558b5d78": "[{}] 형식이 올바른지 확인하십시오 : {}", - "b4e82db400aed46c6a1d61b93ff20f0f": "연결 실패 : {}", - "aa40ceff8d69dc0bf2a3887e2d5c778c": "연결 실패 : {} {}", - "69ee350f3262c97f7e3f35cc66443942": "Paramiko 모듈이 존재하지 않으며 설치가 실패합니다!", - "d580ca3289757bd32c3e11df44ccea78": "비밀번호 또는 개인 키는 모두 비어있을 수 없습니다 : {} : {}", - "df9dc7c6d010fa7d486ab5c61159450f": "인증 시간이 초과되면 Enter를 누르면 다시 시도하십시오! {}", - "05d673d467b6e721ff5ee92b285e5072": "개인 키 확인이 실패하거나 개인 키가 잘못되었거나 SSH-DSS 개인 키 인증 유형이/etc/ssh/sshd_config 구성 파일에서 활성화되지 않을 수 있습니다.", - "cae18886e1496f99e56fe64dae2a0947": "인증 실패, 개인 키가 올바른지 확인하십시오 : {}", - "7e850998d3cb8c4dc8b204766721e846": "계정 또는 비밀번호 잘못 : {}", - "dfd29171bd018b7352abb2cf085404fd": "사용자 이름 또는 비밀번호 잘못 : {}", - "8a857e7b7b8835de19ffb7404445b30f": "지원되지 않은 인증 유형 : {}", - "8f4a5b1853e2c68682303a3ac016e97b": "수입은 성공적이었습니다", - "bb07cf4e0082f6181204bf785e625924": "수입이 실패했습니다", - "4e19c797e19c111b1fad1470cc2c18e3": "수출 가능한 명령이 없습니다", - "bd35e8b82c9450d88a62a318773a2244": "수출이 실패했습니다", - "e420cebff3e23fb8eedd388024ce1839": "대상 URL 형식이 잘못되었습니다 {}", - "dd2b16eb608e5838d556598d479e9264": "복원이 시작될 때까지 기다립니다", - "f5fa57ce44938aa510e6cb68bd52c24b": "로그 파일이 없습니다", - "1bb87a5feb9e217c858933afdce8f4e7": "로그 파일이 너무 큽니다!", - "21290da79237752afe963ecef5d89b5a": "스캔을 성공적으로 시작하십시오", - "8e0e316031928c8c96c94ad6d57bd03e": "디렉토리가 스캔되지 않았습니다", - "9208374e1391bb886971bad99b2380f1": "불일치를 입력하십시오", - "580d97d0b321127650cf1901cc3524b2": "레코드는 존재하지 않습니다", + "94e431cde2ffda2ef08526fa2af1b0b5": "자산을 성공적으로 설정했습니다!", + "fe1887f5db433aa5f5b4b35e78aa2a93": "자산 설정 실패 {}", + "bedfc521aa92e68b04430d33289c6b3c": "멀티 웹서버 호스팅에서는 nginx 1.24 이상 버전만 지원됩니다!", "e6c81af465e7bdf8761e0072eb217ca6": "현재 시스템에서 지원되지 않습니다", "44164f2aee5b6836802ff8142f495629": "스캔이 실패했습니다", "ee6cb8cccfef01a6931ac569767b7303": "로컬 DB가 설치되었습니다", @@ -1536,19 +1481,51 @@ "157aebc66e02126c7568365a18392758": "데이터베이스 암호에는 한자가 포함될 수 없습니다 {}", "480b606c09fb9d52b9e47995e04641de": "DB를 찾을 수 없습니다!", "f730258407ac8fda3c780e7c59a09f16": "데이터베이스의 비밀번호를 성공적으로 수정했습니다 [{}]!", + "36856cc0aff5e4d792ab1919ec9e24f9": "데이터베이스 [{}] 백업이 성공했습니다!", + "cd338377817d5286c26f62c0562ebe72": "데이터베이스 [{}]를 성공적으로 가져왔습니다.", "4461199265eb82e1de46055d7f4568b6": "백업이 성공했습니다", "ecc5e49aaee7ba7dc9a1b1b89e008c13": "SQL/GZ/ZIP 파일을 선택하십시오", "3bb533d00c768936c2c3bf24d2c542a2": "구성 파일이 존재하지 않습니다 {}", "c811067e114e07cbb188afd110ddc579": "서버에서 동기화 {} 데이터베이스!", "a47891f08609cb38f4de9fd50def4650": "서버에서 {} 데이터베이스를 얻으십시오!", + "8aec4a4bd998059f3dbb932da4714b00": "IP를 찾을 수 없습니다!", "a62053a8ff838da8ba33aae82d8fda5b": "데이터베이스 연결 오류!", "65a61bd2b3c632fd1d27b19db5abf197": "MySQL 데이터베이스 비밀번호가 만료됩니다", "dfcaac01b569325ec535229328d52f6d": "데이터베이스 쿼리 오류!", - "c77d5ef44d6a21abe99c3e370a0f5364": "매개 변수 오류 : 쿠폰 _id", - "1cb4143e9dbb7515e606ab6854578a00": "매개 변수 오류 : cycle_unit", - "2121d979fb82aae9f0a62572bf36217f": "인터페이스 요청 실패 ({})!", - "287e14ef978fb00ce99942e799c36649": "매개 변수 누락 된 lemittime 또는 매개 변수가 비어있을 수 없습니다!", - "8feb15ff2883086bba98d9d791d10bf7": "시간은 현재 시간보다 적을 수 없습니다!", + "efc33dbd7910fde6ce3fe364a7d43bfc": "rsyslog 구성 파일이 존재하지 않습니다! \\ n rsyslog가 설치되어 있는지 또는 /ect/rsyslog.cn이 존재하는지 확인하십시오!", + "a6fba111c7d0f418059856c4160b4d0d": "매개 변수가 잘못되었습니다!", + "3f8ee4f649b32e181c15c39682629844": "사용자 [{}]가 존재합니다!", + "b23886f3380c4a9500a7614474ff6bf8": "암호는 최소한 [{}] 문자 여야합니다", + "f20eaf62a87c2072f7c09ec70a6b90c9": "오류를 삭제하십시오", + "49b236322476b6e7baf65369b4b61565": "del_error", + "9607dbc43fb07121ebd102497290c15b": "{} FTP 사용자가 실패했습니다!", + "8b73e5696a44d470ee99c274152c1b54": "포트 [{}]가 사용됩니다!", + "384169bf557e2785a74c6ab4c8ca0d9c": "편집 오류", + "e420cebff3e23fb8eedd388024ce1839": "대상 URL 형식이 잘못되었습니다 {}", + "62dc2bbb0528fe87522c74b113883a48": "지정된 사이트가 존재하지 않습니다!", + "4675bfcf662ee236a05dcb763cf9d520": "Apache 캐시 설정에 실패했습니다.홈페이지가 제대로 작동하는지 확인해주세요!", + "0b9aca52d360d6f7a8f2c5c897c93005": "Apache 캐시 설정이 성공했습니다!", + "a2cd28fcd32e92be995b2335768fdea3": "Apache 캐시는 현재 다중 웹 서버 호스팅에서만 지원됩니다.", + "b288b8637582cc38c1d4c902ed03cbec": "캐시 플러그인 설치에 실패했습니다.", + "aebabb72ad41fbe46f73abcc9dc00b9f": "캐시 플러그인을 활성화하지 못했습니다.수동으로 활성화한 다음 캐시를 활성화해 보십시오.", + "3981bd44ca3f1d5abafc6b15ba8c7435": "OLS 캐시 설정이 성공했습니다!", + "3777f748e5535e7e38261b2e0afc8274": "OLS 캐시 구성 실패: {}", + "93916600bce5b19586cbf51d558b5d78": "[{}] 형식이 올바른지 확인하십시오 : {}", + "8e342838d5cf3a93e34956c9550db4d0": "배포 실패: {}", + "0dbd3323f74314d1cf85c7db5ac2fd1d": "현재 IE 브라우저 버전이 너무 낮아서 일부 기능을 표시하기에는 다른 브라우저를 사용하십시오.또는 중국 회사가 개발 한 브라우저를 사용하는 경우 Extreme Mode로 전환하십시오!", + "47b1cbb355da8faa6415f12c96469ba1": "20 연속 검증 실패, 1 시간 동안 금지", + "dd1ddef2d75c7c80540db8c12270af8a": "전달 된 매개 변수는 보편적 인 내부 객체가 아닙니다", + "e7e807310035d5b348cbf55c28df2968": "작업자 RAM을 거짓으로 얻으십시오", + "dc2e22fb7940c00998017d342198a9e2": "작업자 가동 시간을 거짓으로 얻으십시오", + "f5332a2b815ca2e09f3e658e8c81a282": "작업자를 다시 시작하십시오", + "2d052af48937c6a8916f84a9a5d2a5e1": "작업자 날짜를 거짓으로 받으십시오", + "6880f4164c935867cecf3a89e8ac01ce": "작업자 시간 세부 사항을 거짓으로 얻습니다", + "a3589163c43210f6d8f52f6a2d46823f": "근로자 reqpersec false를 얻으십시오", + "6dfcfe44b282f6a36ea2e487b583c543": "Worker TotalAccesses를 거짓으로 얻으십시오", + "d1448a41deace3e0a5cb3555cee67b97": "작업자 Totalkbytes가 거짓을 얻으십시오", + "1bdd788c6927c1fd0420ca6e2316642e": "근로자 바쁜 노동자에게 거짓을 얻으십시오", + "f656a1e1c80cdf1eb1c63d3a0b121a65": "노동자 유휴 노동자에게 거짓을 얻으십시오", + "dd2b16eb608e5838d556598d479e9264": "복원이 시작될 때까지 기다립니다", "9bb70ddd7b082fbaafb0b47a989b5cf5": "시간대를 얻지 못했습니다!", "38f40438a6c7e12eca9b4ea2ad297b3e": "성공적으로 최고로 설정하십시오!", "257ee5f5c18f04e3a83fd18b33babf08": "삽입되지 않은 ID를 입력하십시오!", @@ -1622,17 +1599,144 @@ "52d812a7c0b57b35fac4e668122191a3": "스크립트 실행이 실패했습니다", "f804ceef9dd122e198f13357be514e41": "자동 백업 데이터베이스 [모두] -MySQL", "26e64121956b9e7e55244a508f146864": "자동 백업 사이트 [모두]", + "a499f309ac7a223d611d7a0a85900342": "재부팅 기록을 찾을 수 없습니다.", + "d23fb11ea541cd5f1c0b05851d54fd58": "읽음으로 표시되었습니다.", + "c77d5ef44d6a21abe99c3e370a0f5364": "매개 변수 오류 : 쿠폰 _id", + "1cb4143e9dbb7515e606ab6854578a00": "매개 변수 오류 : cycle_unit", + "2121d979fb82aae9f0a62572bf36217f": "인터페이스 요청 실패 ({})!", + "287e14ef978fb00ce99942e799c36649": "매개 변수 누락 된 lemittime 또는 매개 변수가 비어있을 수 없습니다!", + "8feb15ff2883086bba98d9d791d10bf7": "시간은 현재 시간보다 적을 수 없습니다!", + "b4e82db400aed46c6a1d61b93ff20f0f": "연결 실패 : {}", + "aa40ceff8d69dc0bf2a3887e2d5c778c": "연결 실패 : {} {}", + "69ee350f3262c97f7e3f35cc66443942": "Paramiko 모듈이 존재하지 않으며 설치가 실패합니다!", + "d580ca3289757bd32c3e11df44ccea78": "비밀번호 또는 개인 키는 모두 비어있을 수 없습니다 : {} : {}", + "df9dc7c6d010fa7d486ab5c61159450f": "인증 시간이 초과되면 Enter를 누르면 다시 시도하십시오! {}", + "05d673d467b6e721ff5ee92b285e5072": "개인 키 확인이 실패하거나 개인 키가 잘못되었거나 SSH-DSS 개인 키 인증 유형이/etc/ssh/sshd_config 구성 파일에서 활성화되지 않을 수 있습니다.", + "cae18886e1496f99e56fe64dae2a0947": "인증 실패, 개인 키가 올바른지 확인하십시오 : {}", + "7e850998d3cb8c4dc8b204766721e846": "계정 또는 비밀번호 잘못 : {}", + "dfd29171bd018b7352abb2cf085404fd": "사용자 이름 또는 비밀번호 잘못 : {}", + "8a857e7b7b8835de19ffb7404445b30f": "지원되지 않은 인증 유형 : {}", + "8f4a5b1853e2c68682303a3ac016e97b": "수입은 성공적이었습니다", + "bb07cf4e0082f6181204bf785e625924": "수입이 실패했습니다", + "4e19c797e19c111b1fad1470cc2c18e3": "수출 가능한 명령이 없습니다", + "bd35e8b82c9450d88a62a318773a2244": "수출이 실패했습니다", + "e9a08443260e6f3b795eb57419a6ad77": "클라우드 스토리지에 링크하지 못했습니다!", + "66924214c228f7eb631ac940281c7190": "성공 설정", + "d55e6e0c13df775ea0eabea4f36ff8da": "하나 이상의 명령과 방화벽을 활성화하십시오", + "322d678e45d68284d90503f36da32648": "작업이 실행되었습니다", + "26eaf477d247c668a143b415491995dd": "현재 IP 주소 [{}]는 화이트리스트에 없습니다.", + "c26b7075352954fb3e96fbe983dbd083": "현재 IP 주소 [{}]는 화이트리스트에 있습니다.", + "f9cfac18ac1fe92adcc47b139d0617a8": "추가 실패", + "bf31291dfc89be9a8af12c3fa15e7e4d": "작동이 실행되었습니다", + "71a1c5f19c8e300d350f5f68c71e4559": "삭제 실패", + "01f144a7cfd324d0dab94f8aa6e29374": "성공적으로 삭제하십시오", + "749707db319ac2fa02785c1bdb58083b": "오류 : SSHD 구성 파일이 존재하지 않습니다", + "80b695b495da54ed6a76eac8a965bc7b": "로그인 알람을 성공적으로 취소하십시오", + "40d3b22b13a0b11ed727aa257e2228c0": "메시지 채널이 설치되지 않았습니다", + "87597848076b873c1a9bb9ffea64950b": "오류 : SSHD 구성 파일이 존재하지 않습니다", + "bdb119e343438b628e7ba8b20e4632ed": "오류 : SSHD 구성이 존재하지 않습니다", + "45de64a88b25b6527ccd3efbce76ed3b": "매개 변수 전달 오류", + "387e90104fbc0261c1ae5db9443f0b22": "루트 로그인 메소드를 다음과 같이 설정합니다. {}", + "0fd775e0a957d247e199d2cd911078e8": "비밀번호는 비어있을 수 없습니다", + "2279ae228c06ace23e59cc218f2536f8": "비밀번호의 길이는 8 비트 미만일 수 없습니다", + "207d2e497f2ca0d97f1453671d4d824a": "사용자 이름이 이미 존재합니다", + "e1c5fbbb3782936fa209244fcc62ea7e": "비밀번호에는 문자와 숫자 또는 기호가 포함되어야합니다", + "4c94c49ecaebd37c52172946778fc296": "설정 실패", + "492478fa7955b2282528aefe56d42ec4": "프로필이 존재하지 않습니다!", + "71804f43c7fe50a625e9fd1f930365ce": "클라우드에서 얻지 못했습니다!", + "46fb7ccd0be31ec840d524d8f99f1368": "업데이트 완료!", + "d631f73db41ac42021c522b61fba3274": "업데이트 할 필요가 없습니다!", + "11ce17a8cf1f195a0687c00fc4201d2f": "수입 성공!", + "d49c4e6f0a63eb94dfb921be5d804e8b": "사이트가 존재하지 않습니다!", + "0b5efcfb8a290faab14ebce65ece59e7": "위험한 웹 사이트 루트 디렉토리!", + "d747c3e10f8c5fd5c0aec8b422883292": "지정된 패키지는 존재하지 않습니다.!", + "22e806afb25ddcb6cf205be320eb2350": "설치 패키지에서 [Aapanel Auto Deployment Configuration File]을 찾을 수 없습니다.", + "7658d0092e96ef38859c12f2a91f641f": "현재 배포 작업이 없습니다!", + "f5fa57ce44938aa510e6cb68bd52c24b": "로그 파일이 없습니다", + "1bb87a5feb9e217c858933afdce8f4e7": "로그 파일이 너무 큽니다!", + "21290da79237752afe963ecef5d89b5a": "스캔을 성공적으로 시작하십시오", + "8e0e316031928c8c96c94ad6d57bd03e": "디렉토리가 스캔되지 않았습니다", + "9208374e1391bb886971bad99b2380f1": "불일치를 입력하십시오", + "580d97d0b321127650cf1901cc3524b2": "레코드는 존재하지 않습니다", + "152b976545ff1ee50e0de21da7af1266": "확인중입니다.....", + "e6a6fa2d0bcc8bfc2af5bcd4640ade03": "매개변수 검증", + "80f9a0a476836be5fdec10fe414e88a9": "{} 웹사이트를 생성하는 중입니다....", + "064aa7114f7c7430dcf2b0cdc05ad20c": "웹사이트 만들기", + "8a9535f05c52e58f46e3237b9da019cc": "선택적 구성 추가: 데이터베이스, FTP", + "b7575e63439333749c6e7d6a27b8a0e4": "선택적 구성 추가", + "2a5e8b7e4116ee81db89ba173f60bf90": "매개변수 확인 실패", + "2f35a151cc0256f0d9ad5410eccbe5d0": "매개변수 확인 실패: {}", + "af2a8e2174ea327f9fbf77d84029d58b": "매개변수 확인 성공", + "181fc26e7b655ba36b3b075ca1ebc350": "웹사이트를 생성하지 못했습니다.", + "7118aff13541bf3d74a9c47fb458e102": "웹사이트 생성 실패: {}", + "be33773093fc2e135ba4bc26f4bb5509": "웹사이트가 성공적으로 생성되었습니다", + "505a83f220c02df2f85c3810cd9ceb38": "성공", + "8d823a9933eefd02bf1003481f816f64": "실패: {}", + "e7b3deb11aabca0f7ae217ccccd10772": "성공적인 스타트업!", + "31b88b436695f7e0bc5dad1cb8999737": "패널 서비스의 포트를 사용하지 마십시오!", + "d0d4ff47e6dc25f0069a1d74d2f995b4": "포트가 사용 중이거나 포트 범위가 올바르지 않습니다!100에서 65535 사이여야 합니다.", + "7dde7f2ae7cb4ed56b1b683b479ad303": "경고: {} 버전이 아직 설치되지 않았습니다.", + "839067817c5a1e7fcce2f905284d630e": "원본 디렉터리 다시 쓰기와 대상 디렉터리 다시 쓰기를 동시에 채워야 합니다.", + "4b6ad864ce62dac8466dde7ec62e7ea9": "소스 디렉터리 다시 쓰기와 대상 디렉터리 다시 쓰기는 동일할 수 없습니다.", + "ed6fe3e47d3686c7af83b67535b426b5": "재작성 소스 디렉터리는 /로 시작해야 합니다.", + "8230eb6af0c1c2863c0c2f6bfaa9b37e": "재작성 대상 디렉터리는 /로 시작해야 합니다.", + "fa5e4af74d3d68ba371e6dcf84595c3d": "웹 사이트는 존재하지 않습니다", + "45f9a99535dea651b8f160f6cf23f826": "구성 파일 읽기가 실패했습니다!", + "5e3b84200bea6d70f6fed1d5802a7fa0": "쿼리 실패, 주소가 없습니다", + "5fa721871e93bc4121df74ce51454519": "플러그인 활성화 실패, 나중에 다시 시도하십시오.", + "9f139adb77c26c263ff2a956d66f80fe": "플러그인 비활성화가 실패했습니다. 나중에 다시 시도하십시오.", + "f8e169b0ef8d58f84c71e375141852ed": "세트를 만들지 못했습니다", + "e35ca748f8c5a0e78731bae94fb7d68a": "세트를 제거하지 못했습니다", + "468baaa7179c8b181d1de35fa00267e9": "잘못된 유형의 세트 항목", + "a01e808b2be07634b0e3714bff919ae1": "세트에서 항목을 제거하지 못했습니다", + "35c9b2817b191a3f60553d46b748068b": "세트에서 항목 상태를 변경하지 못했습니다", + "87a9a388a3ef42018ceb866756c4ee39": "데이터베이스 연결에 실패했습니다. 데이터베이스 상태를 확인하세요!", + "73b1d7767613c6300db27ade773369fa": "WordPress 원격 사이트를 제거하는 데 실패했습니다", + "a75c113f53d4342010d140325fa29eec": "웹사이트의 멀티 서비스가 활성화되었습니다.", + "b0a517b4d596e5fc1351f8dc12e73a74": "보유 서비스를 선택해 주세요", + "7e953c855b391ac0716a4eeb47c5c5c3": "먼저 여러 서비스를 활성화하세요.", + "55d523aa501b0e7e93e172a9e6829a8a": "nginx 버전 정보를 가져오는 중 오류가 발생했습니다.", + "08f18bb6c6293307f68d5f822ed7dbe1": "현재 openresty는 지원되지 않습니다.", + "45020a62e40bbb43f6e05c62ad50288e": "이미 설치 작업이 있습니다.먼저 완료될 때까지 기다려주세요!", + "4052df86d5a8dd12943cc8b1d53162e4": "서비스 설치에 실패했습니다.다시 시도해 주세요!", + "8033c09e6fedf841205b29b57c0ae0d1": "서비스 시작 실패: {}", + "442d02a722dc331f8b85d328fb99a174": "다중 서비스 모드가 성공적으로 활성화되었습니다", + "a0b289e4caa220dcd62692401d5083f5": "{} 서비스를 제거하지 못했습니다.다시 시도해 주세요!", + "0045406cf97cbdca708c795aa9554145": "{} 서비스를 다시 시작하지 못했습니다.수동으로 다시 시작하거나 구성 파일을 확인하세요.", + "52cd203105425f66daf42d81f05c540f": "다중 서비스 모드가 성공적으로 비활성화되었습니다", + "9c116a9cbc0701ec9e9d6b6ab2755fc8": "서비스를 다시 시작하지 못했습니다.아파치 구성 파일을 확인하세요!", + "a949ed64edc73a99f9f9c801a84b6390": "지정한 서비스 유형이 존재하지 않습니다.", + "408f206d494c5f26144f7492315dfa21": "일괄적으로 서비스를 전환하는 중 오류가 발생했습니다!", + "e9fd26be1a67520e66f2e99d61977c32": "웹사이트 ID가 존재하지 않습니다", + "d80972d5dfb46c1f11b8dba2b7aa04d3": "현재 웹사이트 서비스는 이미 {}입니다.", + "99914b932bd37a50b983c5e7c90ae93b": "{}", + "2422c065bd4ef8d950bbf17c43f907dc": "구성 수정에 실패했습니다.", + "98e762d03fc5ffcb381010aff10c7bde": "{}로 성공적으로 전환했습니다.", + "293f667205bd8aa91c72f966c03c3de5": "획득한 웹사이트 서비스 유형이 올바르지 않습니다.", + "8562d96fc303411ee017a30b83d75712": "성공적으로 수리됨", + "d9d76120c8c13b40d2e8e49b0d6117da": "멀티서비스에서 오류가 발생하여 복구가 실패하였습니다.다중 서비스를 닫았다가 다시 시작해 보세요!:{}", + "e1b5191ef3dd64eaba9ab3c787d1fa67": "구성 파일이 존재하지 않습니다.", + "c8622023712105e9e7328396976a2667": "백업된 구성 파일이 존재하지 않습니다: {}", + "d81f83ae44da0682974272b976e8e550": "성공적인 회복", + "12572c9827392d4bd4c028881ed06242": "웹사이트에 전역 프록시 또는 URL 재작성 충돌이 있습니다.삭제하고 다시 시도해 주세요!", + "92bce01ab77d0d50efec1d424cab583b": "이 웹사이트에는 역방향 프록시가 있습니다.삭제하고 다시 시도해 주세요!", + "30c74a0981da2edec86936cd288479f7": "웹사이트가 글로벌 역방향 프록시를 구성했습니다.먼저 취소해주세요!", + "c3fe8f7adf26d613d9593acede34303b": "웹사이트는 하위 디렉터리 도메인 이름 바인딩으로 구성됩니다.먼저 취소해주세요!", "c601909c952f2064e91d6f3c1d1a7128": "★ 백업 시작 [{}]", "890b5b1ca2b1aa96f0781c9fdc77ab88": "☆ 백업이 완료되었습니다 [{}]", "5316694cae24d434370be2d76146a500": "|-오류 : {}", "b763e7e9f6b23d4b5066458506d26d55": "백업 작업 실행이 실패했습니다.", "713660262f5ab9c3af9aa17c8d8a412c": "백업", + "de5ac4bddf9b72b649c0cbd4243f76c6": "몇 초 후에 다시 시도하십시오...잠시 기다려 주십시오...", + "6905a88552caae6df77f56bd19f6d76a": "Cron 작업 설정은 로컬로 유지됩니다.로컬 백업이 유지됩니다.", + "63701b3fa795bcd399aab5d489f8eae9": "Cron 작업 설정은 로컬을 유지하지 않습니다.로컬 백업은 유지되지 않습니다.", + "837cc24a222df21e74245f4cfac6ad09": "사용자 설정을 하지 않음", + "57d4380c974a85fe8db5914c934addf4": "예정된 작업이 존재하지 않습니다!{}", "038ae15d38f9f027abda2aabf18324ab": "최신 백업 수를 유지하십시오. {}에 대한 사본 {} 사본", "58c65e272cfde6fc8cf73d0ffcde4bbd": "{}에 업로드, 기다려주세요 ...", "243c0f3ec002883d6fa7770957ecf9bd": "예정된 작업이 존재하지 않습니다!", - "57d4380c974a85fe8db5914c934addf4": "예정된 작업이 존재하지 않습니다!{}", "78df833c741b9814545d76a83f2db9b5": "{} 백업 데이터베이스 {}는 존재하지 않습니다", - "69c66d6525e77e17c2aaffea61f4d730": "클라우드 스토리지에 링크하지 못하면 구성이 올바른지 확인하십시오!", + "472f0ed974a6a2aec9b70fe7d39b27ee": "MongoDB는 보안 인증을 활성화했습니다.", "8a09aa6b7131f71b3ba97f13d5b7823f": "지정된 주문 번호는 존재하지 않으며 갱신 할 수 없습니다!", "72905fe72d071dffbc0c1a20eb8def87": "이 주문에 대한 정보는 발견되지 않았습니다.", "0b033e06e17e9fb14f93e6f11eed6599": "주문이 만료되었습니다.다시 신청하십시오!", @@ -1642,35 +1746,9 @@ "2e95d6e834bed89e1e199808d0cfd8aa": "-path 매개 변수에 웹 사이트 문서 루트를 지정하십시오!", "4a8d983505848031c77a15c408cd1f3e": "|-명령을 삭제하십시오", "ed069811f3c302d22a0f4aafc6903826": "|-사용자는 응용 프로그램을 포기하고 프로그램을 종료합니다!", - "66924214c228f7eb631ac940281c7190": "성공 설정", - "d55e6e0c13df775ea0eabea4f36ff8da": "하나 이상의 명령과 방화벽을 활성화하십시오", - "322d678e45d68284d90503f36da32648": "작업이 실행되었습니다", - "7f6a5159defff4366792aa7c992f6f0b": "성공적으로 편집되었습니다", - "01f144a7cfd324d0dab94f8aa6e29374": "성공적으로 삭제하십시오", - "26eaf477d247c668a143b415491995dd": "현재 IP 주소 [{}]는 화이트리스트에 없습니다.", - "c26b7075352954fb3e96fbe983dbd083": "현재 IP 주소 [{}]는 화이트리스트에 있습니다.", - "f9cfac18ac1fe92adcc47b139d0617a8": "추가 실패", - "bf31291dfc89be9a8af12c3fa15e7e4d": "작동이 실행되었습니다", - "71a1c5f19c8e300d350f5f68c71e4559": "삭제 실패", - "c6fdc537935f8c3e97a442e8be9adf20": "업로드 된 폴더와 동일한 이름을 가진 파일이 있습니다.확인하고 다시 시도하십시오", - "055df73dfeac55aa4ddb8b31e98d3fea": "当前用户没有足够的权限去访问或者修改 {}", - "3ff13f637b9e318936f8d30f77c57c64": "当前目录为只读权限", - "8c7dd0d2966be0d1427bb839c94a993a": "上传失败 : {}", - "fc937a95d443a5accb3dc43dabf8a4c0": "磁盘空间不足", - "dc494cbbc1dad9fe8a2d219d561840d5": "文件上传发生错误请删除临时文件【 {} {", - "45cd3dad5e3ac153966eff8aaf30c33d": "存在与上传文件同名的文件夹请检查后重试", - "eaf87474bf8e355eb84fadd0caf91f14": "当前用户没有足够的权限去访问或者修改", - "fe56b3a6f3a8b6a24f60a62408351b0e": "이것은 Recycle Bin 디렉토리입니다. 오른쪽 상단의 [Recycle] 버튼을 누르십시오.", - "8ec1fba8a89cb67bc958d7b2424156e9": "파일은 빈으로 이동했습니다", - "99a091a444e6e207f60506fb4f0bdcce": "파일을 성공적으로 삭제했습니다", - "08f4aae44a9ffaffc3e72390e7ce2b20": "已将压缩任务添加到消息队列!", - "c28802f8d7f5a40cb9f17cace202e59f": "쿼리 오류, {}", - "11c99562b6212de14ddf1dcb06ea1696": "라인업에 작업이 없음 {}", - "94f33212bde1cd76797fe4fe78b2167f": "{}에서 {}까지 작곡가 업그레이드", "daa9a175b001e007de4d7ca89ec19aec": "유효하지 않은 노드 유형 : {}", "abb41b16dcebff17c55d75000fe3cabf": "잘못된 자동화", "e9d2603582f4a20d640b8e7d3b3e08b7": "실행 상태에서 자동화를 편집 할 수 없습니다.", - "505a83f220c02df2f85c3810cd9ceb38": "성공", "d2fcac4ec8e0f366bff10d45d37bb3d3": "invalid automation_id : {}", "d171abccfa056d262e7e081b84510c4f": "유효하지 않은 자동화 : 트리거를로드하지 못했습니다", "ae3ff0ee4b1a6c1dfe230d9b15a4d4a0": "잘못된 자동화 : 불완전한 트리거", @@ -1678,6 +1756,7 @@ "0fdf6b21eacd19ce746639f1c4613607": "end_time은 start_time보다 커야합니다", "18fc7ff48f030eda26c7446cdccd441d": "잘못된 데이터", "dcb3fc2a35a17abb01744383ebf3cdc4": "잘못된 데이터 -2", + "7122d35c3532d63c8d9fc5c5bd320558": "주문 목록을 가져오지 못했습니다. 나중에 다시 시도해 주세요.", "079217f7bb63fed72af9bb79048e3967": "'*", "b3248ad84a12659b1599607f969741a0": "CloudFlare DNS 권한이 있어야합니다", "0ad00e6c415af62cdaa8537c32574052": "별명이 이미 존재합니다!", @@ -1691,14 +1770,15 @@ "8d49c4cd608eaa6d8d9a1e0ab6658fb4": "DNS 제공 업체는 찾을 수 없습니다!", "79922b861a42a4e2350f69501eb25ca0": "DNS 레코드를 찾을 수 없습니다!", "39b361ca64471b92b1b1e84dee7d5226": "성공적으로 업데이트하십시오!", + "84e9feba40d0aed963505e503cf821e3": "업데이트 실패...", "8ef6a7854d197b829e350936856847fc": "SSL 인증서를 찾을 수 없습니다!", - "e10f97e65f8e6bb8d78cad066bd3133a": "성공적으로 갱신!", - "d87bc3fd830939bce7f1f369849eb042": "사이트 ID를 찾을 수 없습니다!", + "02d59ec01b27b9b07cc92b56b4590690": "SSL 인증서가 30일 미만이므로 갱신할 필요가 없습니다!", + "c85411871b8773e799e64d0c23ef79d3": "주문을 찾을 수 없습니다!", "9dd5fcad400ad7db65baa55be5535d94": "성공적으로 신청하십시오!", "3f5a9a220cd8c53770c59c4931beb2be": "auth_type가 있어야합니다", "4fadb14ca725c013569fc00385d750fd": "도메인이 비어 있습니다", - "ef01e80156516ee70bc7031ecc223061": "사이트를 찾을 수 없습니다", - "584447441c36bdf097a426f26cd1ae0f": "사이트가 실행되지 않습니다", + "2a6bb1bdd798217656edecf672b6df3c": "Http01 확인 오류가 발생했지만 사이트를 찾을 수 없습니다.", + "962682f10423a33a75f4b1277b3690c9": "Http01 확인 오류가 발생했지만 사이트가 실행되고 있지 않습니다.", "fdbdc3e70ef01cae6ba7f67b34622aa1": "알 수없는 인증 유형", "52357aa86932ebcc9ff6e741ef6244b5": "업데이트 인증서 실패", "2e54bae7cebff2ed29eee92ee852cf0f": "SSL 인증서를 찾을 수 없습니다!", @@ -1762,7 +1842,6 @@ "55bbeb07229c08c530c5119918035594": "출력 규칙이 성공적으로 설정됩니다", "8be2d40f6fa3e12c46ba68bfb23951d1": "Outputhe Rule 설정 실패 : {}", "5d6e1e45c8d58b5f2800aabe961be7e6": "계정 서비스가 시작되지 않으면 먼저 서비스를 시작하십시오", - "b3e1f3f951a065d621dba454b2523365": "요청이 실패했습니다", "9f570fb82d621c780cae5d4a3b7b21fa": "성공적으로 시작하십시오", "d6fd80e8f386ec01318ebbd911b3cb8c": "시작 실패", "54b737c15ee80b356bed65d1e4bbdf11": "중지 실패", @@ -1791,6 +1870,8 @@ "55df5f27012531e176be79f81b90d779": "성공적으로 삭제되었습니다", "785a530106a46c897769c1cf2df6c2f3": "성공적으로 시작했습니다", "274fbf19776d1b6efee0e71f075739cd": "성공적으로 멈췄습니다", + "81c5f87b76468dbe7a152121fee71663": "청소할 중복 통나무가 없습니다", + "12af24fd6d32854160728cffa4ea2150": "정리가 성공하지 못했습니다", "90b0ccf9b077f2cadeef3daaf17d86b8": "화재/벽에는 {}에", "3d2fb8221a478c63e13b494d7279e2ac": "성공적으로 추가, {} 포트에 대해 동일한 규칙이 존재하며 건너 뛰었습니다.", "fc66f87cb8d92e3caf13485d65ecc309": "성공적으로 작동합니다", @@ -1800,25 +1881,81 @@ "29b89ed8f1aa15665f877c12e0d14bac": "수입이 실패했습니다.규칙의 형식이 잘못되었습니다.수출 규칙의 형식에 따라 다시 시도하십시오!", "002827869c69ad72bc41ca442547bbac": "규칙을 무시하는 취소를 성공적으로 취소하십시오", "63ecd16effc3eab31bf1eec574ece639": "잠금 해제 성공!", - "81c5f87b76468dbe7a152121fee71663": "청소할 중복 통나무가 없습니다", - "12af24fd6d32854160728cffa4ea2150": "정리가 성공하지 못했습니다", - "d1b44799de985cad123821498285dfbd": "database_input_err_format", + "eacd845def6fe750cfc0986f24565045": "로컬 로그인 비밀번호가 비어 있습니다.", + "fea087517c26fadd409bd4b9dc642555": "정상", + "e1a4b8afc2cb3f56f0c98876c06d6d58": "데이터베이스에 연결하지 못했습니다!", + "a18fb7f91f74b73e7326700913e7e35c": "서버가 이미 존재함을 지정합니다: [{}:{}]", + "079d7d1539d30a76e53b6fb54d370d32": "성공적으로 추가되었습니다!", + "72bfbe1d7dd57250382b570043041e82": "추가 실패: {}", + "270b19b2e9da5da821c7b54a1a8d7fd6": "매개변수 전달 오류입니다. 다시 시도해 주세요.", + "ffcba623cf91331a0ba5b3ab969db1f9": "삭제되었습니다.", + "43bf15425909c99f2cc1553eaffaf476": "삭제 실패: {}", + "0947887a435eff51a71f1e54615af33c": "데이터베이스 [{}:{}]에 연결하지 못했습니다.", + "844eea2c94a872941b4e4fe66c92c659": "데이터베이스 [localhost:27017]에 연결하지 못했습니다!{}", + "90b65217be3c698d9b1fbff0dccdc71b": "Mongodb 서비스가 아직 활성화되지 않았습니다!", + "7d1a075632098426af1e2197d274bdb6": "데이터베이스 이름에는 다음 문자가 포함될 수 없습니다./\\\\.\\", + "48b2c30b0f984cdcc6cd7ed4ee376fdc": "데이터베이스 이름에 공백이 포함되어 있어 제대로 추가할 수 없습니다!", + "93efcc7fc4e9d402978828bacd4a5bc2": "데이터베이스 사용자가 이미 존재합니다. 다른 데이터베이스 이름을 사용하십시오!", + "393223cf51f8e25df5d53ae425de74a9": "데이터베이스가 존재하지 않습니다.", + "2162130c1a1937f839cc660f5e70ebdb": "Mongodb 서비스가 아직 활성화되지 않았습니다!", + "45da541afaa00457a2f4617a1dd4855f": "MongoDB 제한으로 인해 관리자 이름 데이터베이스 삭제가 금지되어 있습니다!", + "2465ac13d0470c6414b77dc59fbcdbbc": "백업 도구가 부족합니다. 먼저 소프트웨어 관리자를 통해 MongoDB를 설치하세요!", + "d2af5fe1710856e97dbfdf1adc6d5e98": "매개변수가 누락되었습니다!ID", + "9c17c1312620910f7c3d27a20f01e968": "데이터베이스가 존재하지 않습니다!{db_id}", + "57bb958a6998e558b00b5d89d240b240": "현재 bson json csv 형식이 지원됩니다!", + "3b4ee1461f518d1bd1ed20615d670df1": "csv 형식으로 내보낼 때 내보내기 필드를 지정해야 합니다!", + "d2c7790b1f776ce6ad06426b03fa71b1": "로컬 로그인 비밀번호가 비어 있습니다. 먼저 데이터베이스 비밀번호를 설정하세요!", + "699c43a1633256e97b95615a562eef88": "데이터베이스 비밀번호가 비어 있습니다. 먼저 데이터베이스 비밀번호를 설정하세요!", + "1acdae1719cee0ce5c586cd6995b70a9": "MongoDB는 보안 인증을 활성화했으며,", + "67e943332602d7a5b9765306caa8604d": "알 수 없는 데이터베이스 유형", + "04c651a70b89bd4fd8fc8702c0bf61e9": "데이터베이스 백업에 실패했습니다. 내보내기 파일이 존재하지 않습니다!", + "e880101cd795726a7c8e2c2f4033f9dc": "백업이 실패했습니다!", + "ae1110dd560e4e7968b297620be7ea36": "백업_성공", + "bff09c8822165bf816a5b5a4d1fe9140": "가져오기 경로가 존재하지 않습니다!", + "3d003d1417aec658cd020f9faf66a5c1": "zip 파일 가져오기만 지원됩니다!", "3397a2bc97209578e6c113606a4c7b7b": "database_input_success", + "94b43778dbd724133db47ee2126da3a9": "동기화 된 데이터베이스가 없습니다", "aae27fc3d2273773edab02e15288cb14": "데이터베이스 동기화 성공 {}", + "164c5fa905dbffad015f4593d1b85fb9": "데이터베이스 유형 sid에는 int 유형이 필요합니다!", + "3a621b20dadc66881772503620282533": "DATABASE_GET_SUCCESS", + "505a6be34cf7e61f93f2665896cfafaa": "수정에 실패했습니다. 데이터베이스 [", + "13966ea12f4ed389be50c95e65d8a2dd": "데이터베이스 비밀번호는 비어 있거나 특수 문자를 포함할 수 없습니다.", + "361cbf31511a2bf38fc664157d183328": "데이터베이스 비밀번호는 중국어일 수 없습니다. 이름을 변경하세요!", + "252d8cfbb164b773c5f84ce9d814ae3c": "수정에 실패했습니다. 지정한 데이터베이스가 존재하지 않습니다.", + "aea43e9b982f6105e584e46b778d9f9e": "수정에 실패했습니다. 데이터베이스에서 보안 인증을 사용할 수 없습니다.", + "0b46bb64ce97c64f6dddc87bccf949e8": "원격 데이터베이스 정보가 존재하지 않습니다!", + "9e1a9b35939cc4887854eb2ed84f401f": "데이터베이스 이름에는 특수 문자를 포함할 수 없습니다. 재설정하세요.", + "90299d1fb53fdf7a570db71a1b61c127": "먼저 PgSQL 루트 비밀번호를 설정하세요!", + "01d3922e30b7aff9c7265e91c57cc829": "IP 형식이 잘못되었습니다!", + "b2349e65b04baa3a0d50ad030535b73e": "입력한 내용이 합법적이지 않습니다. 수정에 실패했습니다.", + "932c4edd1a70a505be1099f4e7874692": "pgsql 사용자 액세스 권한을 성공적으로 수정했습니다.", + "f562938bcf2a52b32261e4f4a99c3e00": "삭제 실패!현재 데이터베이스가 연결 중입니다!", + "573ba454733eee7cd866addcd11ea21c": "데이터베이스를 삭제하지 못했습니다!", + "fec7dbd4f36266728d6eda5e168d1cc0": "데이터베이스가 존재하지 않습니다!", + "69579eb94ffe47354dac42abc8cac9d1": "데이터베이스 비밀번호가 비어 있습니다. 먼저 비밀번호를 설정하세요.", + "fb642275547236f1fb2ea7717ace26d8": "먼저 관리자 비밀번호를 설정해주세요!", + "95abdbd5890c3ceec62026c6246d8030": "백업 실행이 성공했습니다.", + "7307a92023c68b6842a8dafb1b500f16": "복구 도구가 부족합니다.", + "eef4302ce8a129e5d70767668a9e9110": "sql, tar.gz, gz, zip 파일 형식을 선택해주세요!", "c5aafcc6af38d67c22ccc8d19f60ed0b": "데이터베이스 성공 {}", "a8de1650a48acf0e91c7ba840bd48295": "데이터베이스 암호는 비어있을 수 없습니다", "9a53422dee5315eb489d4e448f4ea976": "실패를 수정하면 지정된 데이터베이스가 존재하지 않습니다", "3ca4ea8082e41867cee227d4686a4c17": "데이터베이스 비밀번호 성공 {}", + "0033a9566af4f930bebbd45802be5427": "연결 실패", + "ae576ea2a8c76765fa69287fb1347d1a": "원격 데이터베이스 연결에 실패했습니다!", + "d1b44799de985cad123821498285dfbd": "database_input_err_format", "df5647a7421161dcbda85323db41cc99": "데이터베이스 동기화 성공", "2a52f6106614dfbd519714df03ebb16a": "데이터베이스 성공", "1182c39d730924cb4f4d8d229fadb0f3": "데이터베이스 비밀번호 성공", - "2329fa05126d3149fb7c2b4000b5fe4f": "반복적으로 추가 할 수 없습니다", - "29059b2bf7113a24a8f74c7a96ef3f35": "가져 오기 경로는 존재하지 않습니다!", - "8e2cb5c5af10de81e26b113c0d41244d": "압축 파일을 가져 오는 것만 지원됩니다!", - "94b43778dbd724133db47ee2126da3a9": "동기화 된 데이터베이스가 없습니다", - "82e06d5a957cddcb4043ad10f306fa63": "데이터베이스 연결에 실패했습니다", - "12ab97e2c1036a3c79b45db63f01091c": "원격 데이터베이스를 연결할 수 없습니다", + "15a8af9e80d0a0c2d87314c154fff181": "Redis 클러스터를 지원하지 않습니다!", + "c2dafded2689dc11914376d72a70dfc2": "redis 연결 실패!", "b283988bc23c61b2e6393195064ccc5f": "운영이 성공적입니다", + "a9ed7f25ce1ffcf98cf5ec7db86abdf4": "현재 원격 데이터베이스 백업은 지원되지 않습니다!", + "9d1ee7d092060a4d3418a979fba5e46b": "백업_ERROR", + "1fcdee5d4329f1f638bc2d818f3e510a": "파일을 찾을 수 없습니다", + "517b554160a14e74d52943ea29ab5a66": "redis 연결 실패", + "ec010eeffc0a20399b186f334b3b6769": "원격 데이터베이스 연결 실패 {}", + "2322848a32fd761a98a0bd76e633bc97": "원격 데이터베이스 정보가 존재하지 않습니다!", "61dccc90b62286cfe99a0836cd7016f4": "프로젝트 디렉토리가 존재하지 않습니다!", "393f59f008214da917a3644f9bddd08c": "지정된 항목이 존재하지 않습니다!", "76f7795cbd69658732375d59e3ac4443": "package.json 구성 파일은 프로젝트 디렉토리에 없습니다!", @@ -1848,19 +1985,19 @@ "bbffcc99d1822ea57ca5e7dc614157ec": "프로젝트는 존재하지 않습니다", "53797f7f191af4c7851d0419ca27b334": "프로젝트가 시작되지 않았습니다", "f45bc552cdf8369ab9fe2213eec7b802": "로그 파일이 존재하지 않습니다", - "5395cc8155f62a666b8f0d0f9f207676": "저장소 정보가 이미 존재합니다!", - "9f9663b59d32947ff1f2c5b364c571b8": "성공적으로 추가되었습니다!", - "9b10e472adfe6372c9175b9002f098fd": "[공식 Docker Repository] 편집 할 수 없습니다!", - "5858be44c285048a8f51c126b2fd23e9": "편집 실패!이유 : 계정 비밀번호 암호 해독 실패!저장소를 삭제하고 다시 추가하십시오", - "7e51d0e26e1b467aff3c89d3e0751ec0": "편집 실패!이유:{}", - "6478f13dd58e5a4329e19be9020243ff": "이 저장소는 찾을 수 없습니다", - "d5309f3186607eb36bee41e8a28cea3a": "성공 편집!", - "9e20bffc0d4093d18fcbc5c98fa0fd87": "[공식 Docker 리포지토리]를 제거 할 수 없습니다!", - "a62336a87697ab6911ba550015a798ef": "삭제 실패, 저장소 ID가 존재하지 않을 수 있습니다!", - "c28bc5c07ec6f2b56777ac7c852dd64b": "설정 성공!", - "f2bd8f0373084151bbc07e8c1409e37c": "설정 실패! {}", - "54197759827cfaf0cdb1e213fa49771e": "로그인 테스트가 실패했습니다!이유 : 계정 비밀번호 오류 일 수 있습니다. 확인하십시오!", - "657a0b7e82731fb4ae516d14081f17d0": "로그인 테스트가 실패했습니다!이유: {}", + "f9be861aad3eda81843c7797487da8e9": "현재 시스템 보안 상태는 양호하며, 뚜렷한 취약점이나 위험 요소는 없습니다.", + "890e24b14414e3da9bc2ad63d6d0befb": "시스템에는 특정 보안 위험이 있으며 일부 구성이나 정책을 개선해야 합니다.", + "951c23a91dfe39b5ea5d00405b4dc2c5": "시스템에 명백한 보안 취약점이 있습니다. 제때에 수정해 주세요.", + "de36cae19b2a65a45cb4dfccb435530b": "시스템이 위험도가 높은 상태입니다. 가능한 한 빨리 관련 위험 항목을 수리하십시오.", + "ea848f5d6978f5916cd3df4191195e2a": "호스트가 이미 존재합니다 ists", + "7aa425b3819e79208faaed38fe137f34": "서버에 연결하지 못했습니다. Docker가 시작되었는지 확인하십시오.", + "c90ca78b1fc8554e867a696d30255cba": "Docker 호스트 추가 성공적", + "8ee5196fbd93bf345bf018132e808a0a": "호스트 삭제 성공적", + "c0ef08aa7bd6276137ccd491a8041223": "백업 할 볼륨이 없습니다", + "584e35dd4a55da88bd232ac7a19b9b95": "백업 작업이 성공적으로 생성되었습니다.", + "0b08674e1c87f3f8508a4ae9b0c160f8": "백업 작업을 만들지 못했습니다 {}", + "2a0f93407bb61e2403ccd032cbc64e3e": "성공적으로 삭제", + "13d829d3f2b78c971207d944f2a96c55": "파일을 삭제하지 못했습니다. 이유 : {}", "0af5787b053c4bf5dbe610731f7d4199": "파일 경로에는 한자가 포함될 수 없습니다!", "719ee030d81490fc055af0c4426aacb9": "탐지 실패 : {}", "ee3936ffdc910e2cb8578ad1fae322f0": "감지 통과!", @@ -1900,36 +2037,6 @@ "428ed92bf9d3198f4c9885c11fdb2be3": "이 템플릿은 성공합니다 : [{}]
이 템플릿이 실패 : 템플릿 이름이 이미 존재하거나 잘못 형식화되어 있습니다 [{}]", "70975749d256333f1b3b62c864ca265a": "수정하지 못합니다!", "2360e954ae9eecac28b2a3edad5e8ce0": "성공적으로 수정하십시오!", - "ea848f5d6978f5916cd3df4191195e2a": "호스트가 이미 존재합니다 ists", - "7aa425b3819e79208faaed38fe137f34": "서버에 연결하지 못했습니다. Docker가 시작되었는지 확인하십시오.", - "c90ca78b1fc8554e867a696d30255cba": "Docker 호스트 추가 성공적", - "8ee5196fbd93bf345bf018132e808a0a": "호스트 삭제 성공적", - "11cde3a2ca81c845978b98e4a6ec471e": "모니터링 절약 시간은 긍정적 인 정수가되어야합니다!", - "b314fb25bf654a2256bf53b0f6986c93": "모니터링 데이터는 999 일 이상 유지 될 수 없습니다!", - "60e46aeaed758964902dd7ae99858f03": "거기", - "1ba194462d31177d3db4ad6bf18fdbe5": "Docker Service Setup이 실패했습니다. Aapanel Anti-Intrientrusion을 끄고 다시 시도하십시오!", - "422f78617d6852c41e370982d73235ed": "설정이 실패했습니다!실패 이유 : {}", - "dca5bd22c99a74f74074a3a53d78a58b": "{} 성공", - "be62f7640f2c5b730ba50ecc580ae618": "글로벌 구성 파일 오류, {}를 확인하십시오!", - "8ebe0b989b543cf96149811c7a1f3fe2": "속도 업 주소 [{}] 형식 오류
참조 : https://mirror.ccs.tencentyun.com", - "ec1ec17a5862a949e277432e1d09484d": "설정이 실패했습니다!실패 이유 : {}", - "179a2001e96bb8d0475488f80c7216a8": "성공적으로 업데이트하십시오!", - "f4dc83b81fe6993f99c2b54494eeeec1": "성공적으로 모니터링을 시작하십시오!", - "af79fd88d4b6f7e8a1ac05e199747fdb": "모니터링을 시작하지 못했습니다!", - "6f4d03d4d1ee0bd282ea744730b7ceda": "도커 모니터링이 성공적으로 중단되었습니다!", - "4cc06d8560bb116a38a5aae1458cbe4a": "Docker-Compose 파일 경로는 비어있을 수 없습니다!", - "8d885b86e8562c2128689c4a2601c054": "Docker-Compose 파일이 존재하지 않습니다!", - "7bdd4d85dda1275e2be709fd9e0d71dd": "Docker-Compose 파일은 실행 가능하지 않거나 Docker-Compose 파일이 아닙니다!", - "c28e19f0398bc1819a890878021836c1": "설치 작업이 이미 존재합니다. 다시 추가하지 마십시오!", - "a87b64b2d19f29438274f80ce36a3579": "설치 작업이 대기열에 추가되었습니다!", - "c1710a5899fa03f7ad5ea1945a91e4f8": "Docker를 제거하기 전에 모든 컨테이너와 이미지를 삭제하십시오!", - "d388487780fba74e4ff3f3b9ffbce58b": "제거 할 수 있습니다!", - "c4ba6d01fd53333a6e7e85707758c550": "성공을 해제하십시오!", - "b7affa7cc663144bc99b9edb3f1a027f": "수리 작업이 줄에 추가되었습니다!", - "cb49a4daafc9d27bd460967891968225": "성공적으로 저장되었습니다!", - "739722f14db791bd300e08318a48ba59": "저장 실패, 이유 : daemon.json 구성 파일 형식 오류!", - "58fcf0699f38a60c8025330585ac205a": "실패 저장, 이유 : {}", - "720d2290c3082615c0f79894bfdcabd7": "올바른 I PV 6 주소를 입력하십시오!", "7c6f761019365f8a5cfb2fb54d9e199d": "info.json이 다운로드됩니다!", "10066fce84fe34e9cc33e0338532988b": "info.json 다운로드가 실패했습니다!", "0672e579ab0e3454713eb683ddcc4859": "{} 다운로드 실패, 재 동기화하십시오!", @@ -1947,12 +2054,43 @@ "9b149598fb30f54fec9e82a3d121a464": "{} 이미 존재합니다. 프로젝트 이름을 변경하십시오", "634370637f6a5b88940c75f826953d0c": "사용자 프로젝트 디렉토리는 생성하지 못했습니다. 세부 사항 : {}", "f7b14d3f642d711a23d5a0cca725fd0d": "프로젝트 디렉토리를 복사하지 못했습니다.세부 사항 : {}", + "7bdaccb3d20432c5e0150862ab1cc3f3": "누락 된 매개 변수 이름", + "9b90b5b49486a61d9b0e6dbbbcb56cad": "누락 된 매개 변수 container_info", + "b23d7110e9bf6539b4964afe0d4934e2": "그룹화는 이미 존재합니다", + "a90ca6939fe71693c145f50596c6e0e6": "컨테이너 {}는 그룹 {}에 의해 추가되었습니다!", + "e3cf7e2f2d14257e7ea33657b135d534": "추가 실패 : {}", + "fcbeb38a63ced9d3de476fb08c31d71e": "누락 된 매개 변수 ID", + "fe4e0032f69b4100ed143d475e8b5050": "성공 편집", + "6c4ed52bea35c4c43839b8f0b44489f9": "편집 실패 : {}", + "6c0129a45e9da4e1820335f3d06a869f": "삭제 실패 : {}", + "2a743a86676fd52214d3c0af1b0238b5": "상태 매개 변수 오류", + "f95136e5c1f3ccbb09ace8fc24f1e0ca": "컨테이너 [{}] 작동이 실패했습니다", + "2e01172e31495f41fcebcf3f831cc82c": "운영 성공", + "244a98f8c45f938980f48b168aef02c9": "작동 실패 : {}", + "fc431240dfc80a731900d5f2ddb6dfc3": "컨테이너 시작 주문 {}", + "5ea6c6eea14c24c92eeeccaeea5c46dc": "잘못된 상태!", + "0f3f874698792dc81c7c00b9e74fea34": "{} \\ r \\ n", + "aad4acc1243565c5c2ca41e5733e5fe0": "성공적인 \\ r \\ n", + "d8f5a29760a4f000dd754819b1faadcc": "실패 \\ r \\ n", + "73977612ef83925db43df7745df9c5eb": "\\ r \\ nno 10 분 이상 응답! \\ r \\ n", + "6345c76d66a8a9e9cdd3f9d996ff062d": "CMD를 통과하십시오", + "bba401eadefa8222f3e60a312cc19f34": "Docker Run 또는 Docker Pull 명령 만 실행할 수 있습니다.", + "b5592904212696df3e5bcec990c8676a": "위험한 명령이 존재합니다 : [{}], 실행이 허용되지 않습니다!", + "cfff471dc04b6ba4aeb2cc2844b2c94b": "위험한 기호가 존재합니다 : [{}], 실행이 허용되지 않습니다!", + "f1d9b154a0c2625d828a504a8cb35682": "명령이 실행되었습니다!", + "45a0bbacbe8d5ea062167e88423e4573": "Nginx 또는 Apache 서버가 감지되지 않았습니다. 먼저 설치하십시오!", + "bdaf560796795d6a303bc9a1d75a34c5": "프로젝트 유형 [{}] 기존 도메인 : {}", + "4588a786e80c83c2cbde37b930c3d778": "서버 포트 [{}]가 사용되지 않으므로 반전에 사용중인 포트를 입력하십시오!", + "6888cf6586ce3c187150146a2d1db0ac": "실패를 추가하면 데이터베이스를 작성할 수 없습니다!", + "9f9663b59d32947ff1f2c5b364c571b8": "성공적으로 추가되었습니다!", + "e6bddfc6a0bbf72d592236c61b411f9a": "오류로 실패한 추가 : {}", + "1bfa1b1738332c4835f5efe7c54ab9c2": "매개 변수 오류!", + "0d66954ff42aa042c219a356266f5bc0": "역전 프록시 정보가 감지되지 않았습니다!", "ae178e022cf2fe30f402145572528de8": "볼륨 이름은 길이가 2 자 이상일 수 있습니다!", "365c770f123d22093084908ebcdc75fc": "볼륨 이름이 이미 존재합니다!", "2dc51ae60242f0e5b56a9f0d176f91d4": "추가 실패 {}", "307feea9ab8928f39595316b11992cb1": "드라이버 옵션 태그는 사전/키 값 쌍이어야합니다!", "f529949f8a98615c109ee8b8eb9f7656": "추가 실패!{}", - "2a0f93407bb61e2403ccd032cbc64e3e": "성공적으로 삭제", "a4ec5c1fa47f2ce0c875f91ea4e7dd08": "스토리지 볼륨이 사용 중이며 삭제할 수 없습니다!", "11ff7153b67d275618dd3a62d1e56373": "스토리지 볼륨이 존재하지 않습니다!", "2aa70dad9bff94a855fdde3fc113e6c5": "삭제 실패!{}", @@ -1960,7 +2098,6 @@ "6169a7282b361deb5f6f5b6e18f9426e": "CMD 매개 변수 오류", "286933a4f24bee0eed1f9300f70a30c7": "Docker Run 명령 만 실행할 수 있습니다", "a46a6b274dcbfc5a629d234c2816a165": "위험 기호가 있습니다 : [{}], 실행이 허용되지 않습니다!", - "f1d9b154a0c2625d828a504a8cb35682": "명령이 실행되었습니다!", "8135363a6a5e2c145c6cedab8ac1e510": "포트 형식이 잘못 되었으며이 방법은 지원되지 않습니다!", "3b825826968319b6256c4020cc49676f": "서버 포트 [{}]가 이미 점유되어 있습니다. 다른 포트로 교체하십시오!", "70b35bb3bb2fe425a981e8cc68c06906": "필요한 이미지를 가져 오십시오", @@ -1984,24 +2121,26 @@ "994e5a057aca3524ba773ec33228e184": "창조 실패!{}", "00ff90441ea0bdece5d9e5c72efa14a7": "컨테이너 생성이 실패했고 Docker와의 연결이 시간이 내려졌습니다!", "8879635d66ad75dcbfc8c31ba1351116": "컨테이너가 실행되지 않았습니다!{}", - "facfe02e3070c389fe486efac23f2ab6": "容器创建成功!", "71dc70f7ab3a4bc0c2a7141718d3a9b2": "창조 실패!", + "1983b37067c7e94095a5113786fdef9c": "편집에 실패했습니다. Docker 연결 시간이 초과되었습니다. Docker를 다시 시작한 후 다시 시도하세요!", + "c558fedcb5850939202e684ff32c7c50": "업데이트 실패! {}", "ed0029af5f77a5dfacbc2452e8c3ec92": "컨테이너 ID는 비정상적입니다", "c5b3db7efde90edcb803a4a79e559b21": "새 이미지 이름은 비어있을 수 없습니다!", "b10305369ebb41ef24699b8137733465": "거울이 존재하지 않습니다!", - "d567f353b12e618571935661f31c2a16": "컨테이너 편집이 실패했고 Docker와의 연결이 시간이 내려졌습니다.", - "c558fedcb5850939202e684ff32c7c50": "업데이트 실패! {}", + "9e90efb62702b147b71e8731290caf44": "이미지 [{}]가 존재하지 않습니다. [Force pull image]를 확인하고 다시 시도하세요!", + "6cfa55c53df6db8efa59aa2ae6cef97a": "새 컨테이너가 성공적으로 생성되지 않았으며 이전 컨테이너가 복원되었습니다.{}", + "1f004e412319b7ed472624e011b3d2ba": "업데이트가 완료되었습니다.", + "a2ea046c20d2da5cebf2dea01a62dabe": "업데이트에 실패했습니다!컨테이너 상태가 복원되었습니다.", "b84bf4d95051856f9965b55bb5402de3": "컨테이너가 존재하지 않습니다!", + "d567f353b12e618571935661f31c2a16": "컨테이너 편집이 실패했고 Docker와의 연결이 시간이 내려졌습니다.", "f2124ee490df203b3f86509401c76a09": "컨테이너가 성공적으로 편집되고 현재 지정된 [{}] 네트워크가 생성되고 IP를 사용자 정의 할 수없고 IP가 자동으로 할당 된 경우 서브넷이 지정되지 않습니다!", "b95d75cd8e04e9cca297c3cd1091b2eb": "컨테이너가 성공적으로 편집되고 네트워크 [{}] 설정이 실패하고 IP 주소가 자동으로 귀하에게 오류 세부 정보를 할당했습니다.", "4363bb34365a67238ecc6a98ce46b361": "이미지가 생성되었고 {}", "4bb30e8d57a6a7e548758daf4ac33983": "성공적으로 제출하십시오!", "a32e1f09fc2739d94c51a7168675e0e9": "제출 실패! {}", - "9ff81cc845af62a773af3412bdf7d9a0": "컨테이너 ID는 비정상적입니다. 페이지를 새로 고치고 다시 시도하십시오!", - "d8f5602e197fb8b3c772f071ad4a8baf": "쉘 유형을 선택하십시오!", - "9ad72ac09babc507baa6e165041e128c": "이 껍질은 choose bash 또는 sh를 지원하지 않습니다!", "172f51d3307b02aeb6dc703a442f4724": "컨테이너를 얻지 못했습니다", "684fc00ae67504a56c09ef71431b1261": "성공적으로 수출 : {}", + "f9a48b804d917398e795016687f3b0f4": "시도하기 전에 [기업용 변조 방지]를 끄십시오!", "3ab9d9b76e8d22434930622b5f0acc6a": "컨테이너가 삭제되었습니다!", "d1fe1d6e5e8c17b60f749ad36ff3bcaa": "IPv6 서버 포트 [{}]가 점유됩니다!", "9f13645ac42f0c9908a35637a525d561": "IPv4 서버 포트 [{}]가 점유되었습니다!", @@ -2024,6 +2163,7 @@ "dac7d97aeb94cf9d3b3b5d7d072c4cff": "다시 시도하기 전에 엔터프라이즈 탬퍼 보호를 끄십시오!", "32ca87e65c5fc75d3857767417b56439": "삭제하지 못했습니다!{}", "b0ea22ff0b389c2a32b8f4367ab650db": "매개 변수 오류, 재시작 정책을 다시 전달하십시오.", + "179a2001e96bb8d0475488f80c7216a8": "성공적으로 업데이트하십시오!", "3b2f70397fa8a827c7146cbd900f7222": "업데이트 실패!{}", "c147897a9d1746a58de531e9c0158c23": "컨테이너가 시작되지 않았으며 이름을 바꿀 수 없습니다!", "a89c2e8f7eb81399f984330e55014c6f": "성공적으로 이름을 바꿉니다!", @@ -2032,6 +2172,97 @@ "363b76cd4207ec1adb31b9f7ee3930c8": "성공하지 못했습니다!", "0fffc4397713115e14ef45273241dfbb": "매개 변수 오류, 전달 : 비고!", "dce2cbc7791016e4876ab144e53b4f82": "매개 변수 오류, 통과하십시오 : id!", + "ca1bc3e1d32b99b90395da47b88576a9": "매개변수 오류입니다. ws_callback을 전달하십시오!", + "b4770fb21a608a5ba1ecacae409093d0": "매개변수 오류입니다. 전달해 주세요: _ws!", + "11cde3a2ca81c845978b98e4a6ec471e": "모니터링 절약 시간은 긍정적 인 정수가되어야합니다!", + "b314fb25bf654a2256bf53b0f6986c93": "모니터링 데이터는 999 일 이상 유지 될 수 없습니다!", + "60e46aeaed758964902dd7ae99858f03": "거기", + "c28bc5c07ec6f2b56777ac7c852dd64b": "설정 성공!", + "422f78617d6852c41e370982d73235ed": "설정이 실패했습니다!실패 이유 : {}", + "dca5bd22c99a74f74074a3a53d78a58b": "{} 성공", + "ec1ec17a5862a949e277432e1d09484d": "설정이 실패했습니다!실패 이유 : {}", + "f4dc83b81fe6993f99c2b54494eeeec1": "성공적으로 모니터링을 시작하십시오!", + "af79fd88d4b6f7e8a1ac05e199747fdb": "모니터링을 시작하지 못했습니다!", + "6f4d03d4d1ee0bd282ea744730b7ceda": "도커 모니터링이 성공적으로 중단되었습니다!", + "4cc06d8560bb116a38a5aae1458cbe4a": "Docker-Compose 파일 경로는 비어있을 수 없습니다!", + "8d885b86e8562c2128689c4a2601c054": "Docker-Compose 파일이 존재하지 않습니다!", + "a87b64b2d19f29438274f80ce36a3579": "설치 작업이 대기열에 추가되었습니다!", + "d388487780fba74e4ff3f3b9ffbce58b": "제거 할 수 있습니다!", + "c4ba6d01fd53333a6e7e85707758c550": "성공을 해제하십시오!", + "b7affa7cc663144bc99b9edb3f1a027f": "수리 작업이 줄에 추가되었습니다!", + "cb49a4daafc9d27bd460967891968225": "성공적으로 저장되었습니다!", + "58fcf0699f38a60c8025330585ac205a": "실패 저장, 이유 : {}", + "6c3e5d603d8845422e861fb0b4eed350": "그렇지 않은 구성 항목", + "f324009782d2d9e73d1087884ebc2c4c": "Docker 루트는 비워둘 수 없습니다!", + "538960e1336f919e37a0d2c024c56830": "현재 Docker 루트 디렉터리는 대상 디렉터리이므로 변경할 필요가 없습니다!", + "f2bd8f0373084151bbc07e8c1409e37c": "설정 실패! {}", + "a848bbd79221dfdce1c9dca536dbfada": "프록시 설정의 JSON 형식이 잘못되었습니다!", + "edf6eb680187066c4dea216b3b20d6d2": "프록시 설정이 완료되었습니다!", + "720d2290c3082615c0f79894bfdcabd7": "올바른 I PV 6 주소를 입력하십시오!", + "b01f9411136207ad7df28b9bf2387e2a": "업그레이드 실패!실패 이유:{}", + "da896b628e3ded58445e4b015320f327": "다음 이유로 인해 오버로드가 실패합니다.{}", + "efb869976990f78b3d6fcbaf270e3323": "새로고침에 성공했습니다.", + "1b3b50aa7886ea66845ced2c18cbf6b1": "전역 프로필 오버로드 실패:{}", + "75bbb7a00c3b5b510913952fe089f52a": "매개변수가 잘못되었습니다. 경로 매개변수입니다!", + "273609d18876f5f9e3f021032e5b57a3": "설정에 실패했습니다.", + "5e022f79dcc774c79bc55ee28774e2e7": "이미지 이름은 포함 할 수 없습니다.", + "c00be60f9f3f7d747aadfdb124e855ef": "성공적으로 저장 : {}", + "cb1f8d99b492340cf701101c87884a8c": "이미지를 내보낼 수 없습니다!", + "afaa91d141ded3e37b8b9ebf8bc31c51": "이미지를 내보내지 못하고 Docker에 대한 연결이 시간이 내려졌습니다.Docker를 다시 시작하고 다시 시도하십시오!", + "5b980f2e1c82c04c91376d55d4306a91": "이미지를 내보내지 못했습니다!
{}", + "e5e8c7cac8b71e94280fa08301d21e78": "이미지 경로를 입력하십시오!", + "5441400ea3bd16cffdf70c46c34f61d4": "이미지를 가져 오지 못했습니다.파일 확장자는이어야합니다.", + "0720c6c4f478b3a374b4a438f7cf80ad": "이미지를 가져오지 못했습니다. docker 연결 시간이 초과되었습니다. docker를 다시 시작한 후 다시 시도해 보세요!", + "22cc0388137842df9649b3bbcff345e8": "이미지 가져오기에 실패하고 임시 컨테이너 디렉터리가 생성되지 않은 경우 보호 소프트웨어에 차단 기록이 있는지 확인하세요.", + "67b97e4746a2faf5d59206a80bb28649": "이미지 가져 오기가 성공했습니다! {}", + "deceb44868a29ae5d579114348736cbb": "이미지 가져 오기에 실패했고 컨테이너의 임시 디렉토리가 생성되지 않았습니다.보호 소프트웨어에 가로 채기 레코드가 있는지 확인하십시오!", + "8eb05618b0f04e727b0685427fd49c8e": "이미지를 가져 오지 못했습니다!
{}", + "721aa02577670c1049ea9d12caa8938c": "올바른 dockerfile 경로를 입력하십시오!", + "736df9a7c491f3299efdeb9f7d7e9e0f": "이미지를 성공적으로 구축하십시오!", + "6e85568dae869303ca7a4486f55458a3": "빌드가 실패하고 연결 시간이 초과되었습니다", + "5bb301b85cc1f42e56174d3d9a4c0286": "빌드 실패!{}", + "f51455b323ec2db8004c812001043330": "빌드 실패! 지정된 Dockerfile을 찾을 수 없었습니다", + "8e1b9c9b75950d0feba6813d32766e61": "빌드 실패! {}", + "eba0ec758a6464a20c14c0f23ceee62e": "미러가 성공적으로 삭제되었습니다!", + "8dd326278d09a3ac4bc56cf725c8f262": "삭제가 실패하고 이미지가 존재하지 않을 수 있습니다!", + "11ead921bc0e3d94f1f9e0db4bf8ed8d": "이미지 ID는 둘 이상의 이미지에서 사용되며 이미지를 삭제하도록 강요하십시오!", + "43993616c7433350755d30a3b4d065dd": "이미지가 사용 중입니다.이미지를 삭제하기 전에 컨테이너를 삭제하십시오!", + "d6992c3fcf2269c249cd5f18f1ac2c11": "이미지를 삭제하지 못했습니다!
{}", + "0c6c071174fde5b47c9eef8088c17a89": "이미지를 삭제하지 못했고 Docker에 대한 연결이 시간을 초과하고 다시 시작하고 다시 시도하십시오!", + "a3ba80a8e1e0d9af94c809e909431b3c": "실패, 저장소에 로그인 [{}] 실패했습니다.이 저장소에 다시 로그인하십시오! \\ r \\ n", + "cc40077b6ee61fbfa35713a21e8eb866": "bt_failed, 저장소에 로그인 [{}] 실패했습니다.이 저장소에 다시 로그인하십시오!{}", + "60b488c60b6747bf34a86a69740b636d": "푸시 이미지는 [/]를 포함 할 수 없으며 다음 형식을 사용하십시오 : image : v1 (이미지 이름 : 버전).", + "44dbec830b87eb037e8fcbb0e1b56160": "Docker Public Repository로 추진할 수 없습니다!", + "b4c46001066c912344e3bdb0df86e848": "저장소 [{}] 로그인이 실패했습니다!", + "0ebfb094c6482acb049e0dd0d3107307": "푸시 실패, 이미지 레이블 오류, 다음과 같은 입력하십시오 : v1.0.1", + "d26bdd6e86002ed92089dc71347822ce": "푸시 실패,이 저장소로 푸시 할 권한이 없습니다!", + "82058092ad7d2c7aa5e2f012b6544e59": "푸시 실패! {}", + "2b228d4775d23d2725ec227ba648bd43": "성공적으로 밀고, 거울 : {}", + "9e396f640866ded9c3a47268f96a36e3": "이미지를 당기고 기다려주세요 ... \\ r \\ n", + "7e5f4d488d318dc7c235095c8456f5e4": "이미지를 당기거나 검색합니다 ... \\ r \\ n", + "97a6dfe3a273202edffe31af7a43e220": "기본 미러 스테이션을 사용하여 이미지를 당기지 못했습니다!다른 거울 스테이션을 사용하여 당신을 끌어 당기려고합니다 ... \\ r \\ n", + "484616540fc726ef4f52e97a1c2f0fef": "이미지를 당기지 못했습니다! \\ r \\ n", + "1cd77329b2bddfb200e656214b1fdf32": "이미지를 당기지 못했습니다!", + "63c709b9759af42fef890d539d822575": "당기 실패! {} \\ r \\ n", + "b4aba972332d1f3728171905a033fb99": "이미지 풀 [{}] 성공 \\ r \\ n", + "2fae21ffd185d9e9730b39bc7de23852": "이미지가 성공적으로 당겨졌습니다!", + "8a635442294fd90195a43d9a1672fc3f": "이미지를 당기지 못했습니다!", + "711de72d616e7abb29dfa919244d382d": "풀이 실패, 이미지가 존재하지 않거나 이미지가 개인 이미지 일 수 있습니다.DockerHub 계정 비밀번호를 입력해야합니다! \\ r \\ n", + "e9511e26273da5b4537b4683668b548e": "당기 실패! {} \\ r \\ n", + "05d13bf5dcc37754db74b2356e6e117c": "당김 실패, 저장소에는 그러한 이미지가 없습니다! \\ r \\ n", + "714841af7f3de6c8d99ba03f4cee0ee5": "풀이 실패, 이미지 형식이 잘못되었습니다. nginx : v 1! \\ r \\ n", + "2d941c4fa4da32ccafa8670a07f23c1d": "이미지가 성공적으로 당겨졌습니다.", + "5282194697748d9fcd1ccd8a90428424": "이 거울 이미지가 없을 수도 있습니다.", + "d6facab17334983e7c6f8c561c239820": "이미지를 가져 오지 못했습니다. 이것은 개인 이미지입니다. 계정 비밀번호를 입력하십시오!", + "b507deb7848d566982b339265c8f5482": "당기는 이미지 실패

이유 : {}", + "e90811ef0a60b6d299b4e1064d7788d0": "쓸모없는 이미지가 없습니다!", + "f343313c101aeaff0516990ebea3dcef": "삭제하지 못했습니다! {}", + "90ecd58b3feb0b2be11f0af685ad39fe": "쓸모없는 이미지의 삭제가 실패했고 Docker와의 연결이 시간이 내려졌습니다.Docker 서비스를 다시 시작하고 다시 시도하십시오!", + "0568e5e8aa7c811dd420c818189a0d46": "초 전", + "53c53a79f864561f8b6886b3dde7cd51": "몇 분 전", + "f329a0dab82282e50e3aea9260e95d53": "몇 시간 전", + "7a1af30a5ce889031cbc2472766159e3": "며칠 전", + "558a41d55884223583b3542e802d2b64": "미러 이름은 비워둘 수 없습니다!", "4097585e32152eb74bbee5ab8c463718": "Docker Service가 비정상적으로 실행 중입니다. 다시 시작하고 다시 시도하십시오!", "26a0931677e111565f3ff7d059b94d8b": "게이트웨이 설정이 잘못되었습니다. 서브넷과 일치하는 게이트웨이를 입력하십시오 : {}", "def2ba1ce0e4d77692c14e5b984636fa": "서브넷 주소 형식 오류 오류 예를 들어 입력하십시오 : 172.16.0.0/16", @@ -2052,128 +2283,24 @@ "12a90fe85b8863e1dea43284988d7750": "네트워크 연결이 실패했습니다!{}", "6226d2fef3bf047236f0f3a57dcd71fb": "네트워크 연결 성공!", "d882b8375782b1bc56ccaf84ed27d20b": "네트워크에 연결하지 못했습니다!{}", - "e8ad47bc3f119a4d4072f5cb114676f4": "이미지 이름은 비어있을 수 없습니다", - "e5e3829984a9637afc2546ad2c87d83b": "거울 경로는 비어있을 수 없습니다", - "e5f40049c6d67bd11d9a1a1889f5b84a": "이미지 ID는 비어있을 수 없습니다", - "5e022f79dcc774c79bc55ee28774e2e7": "이미지 이름은 포함 할 수 없습니다.", - "c00be60f9f3f7d747aadfdb124e855ef": "성공적으로 저장 : {}", - "cb1f8d99b492340cf701101c87884a8c": "이미지를 내보낼 수 없습니다!", - "afaa91d141ded3e37b8b9ebf8bc31c51": "이미지를 내보내지 못하고 Docker에 대한 연결이 시간이 내려졌습니다.Docker를 다시 시작하고 다시 시도하십시오!", - "5b980f2e1c82c04c91376d55d4306a91": "이미지를 내보내지 못했습니다!
{}", - "e5e8c7cac8b71e94280fa08301d21e78": "이미지 경로를 입력하십시오!", - "5441400ea3bd16cffdf70c46c34f61d4": "이미지를 가져 오지 못했습니다.파일 확장자는이어야합니다.", - "67b97e4746a2faf5d59206a80bb28649": "이미지 가져 오기가 성공했습니다! {}", - "deceb44868a29ae5d579114348736cbb": "이미지 가져 오기에 실패했고 컨테이너의 임시 디렉토리가 생성되지 않았습니다.보호 소프트웨어에 가로 채기 레코드가 있는지 확인하십시오!", - "8eb05618b0f04e727b0685427fd49c8e": "이미지를 가져 오지 못했습니다!
{}", - "721aa02577670c1049ea9d12caa8938c": "올바른 dockerfile 경로를 입력하십시오!", - "736df9a7c491f3299efdeb9f7d7e9e0f": "이미지를 성공적으로 구축하십시오!", - "6e85568dae869303ca7a4486f55458a3": "빌드가 실패하고 연결 시간이 초과되었습니다", - "5bb301b85cc1f42e56174d3d9a4c0286": "빌드 실패!{}", - "f51455b323ec2db8004c812001043330": "빌드 실패! 지정된 Dockerfile을 찾을 수 없었습니다", - "8e1b9c9b75950d0feba6813d32766e61": "빌드 실패! {}", - "eba0ec758a6464a20c14c0f23ceee62e": "미러가 성공적으로 삭제되었습니다!", - "8dd326278d09a3ac4bc56cf725c8f262": "삭제가 실패하고 이미지가 존재하지 않을 수 있습니다!", - "11ead921bc0e3d94f1f9e0db4bf8ed8d": "이미지 ID는 둘 이상의 이미지에서 사용되며 이미지를 삭제하도록 강요하십시오!", - "43993616c7433350755d30a3b4d065dd": "이미지가 사용 중입니다.이미지를 삭제하기 전에 컨테이너를 삭제하십시오!", - "d6992c3fcf2269c249cd5f18f1ac2c11": "이미지를 삭제하지 못했습니다!
{}", - "0c6c071174fde5b47c9eef8088c17a89": "이미지를 삭제하지 못했고 Docker에 대한 연결이 시간을 초과하고 다시 시작하고 다시 시도하십시오!", - "0f3f874698792dc81c7c00b9e74fea34": "{} \\ r \\ n", - "a3ba80a8e1e0d9af94c809e909431b3c": "실패, 저장소에 로그인 [{}] 실패했습니다.이 저장소에 다시 로그인하십시오! \\ r \\ n", - "cc40077b6ee61fbfa35713a21e8eb866": "bt_failed, 저장소에 로그인 [{}] 실패했습니다.이 저장소에 다시 로그인하십시오!{}", - "60b488c60b6747bf34a86a69740b636d": "푸시 이미지는 [/]를 포함 할 수 없으며 다음 형식을 사용하십시오 : image : v1 (이미지 이름 : 버전).", - "44dbec830b87eb037e8fcbb0e1b56160": "Docker Public Repository로 추진할 수 없습니다!", - "b4c46001066c912344e3bdb0df86e848": "저장소 [{}] 로그인이 실패했습니다!", - "0ebfb094c6482acb049e0dd0d3107307": "푸시 실패, 이미지 레이블 오류, 다음과 같은 입력하십시오 : v1.0.1", - "d26bdd6e86002ed92089dc71347822ce": "푸시 실패,이 저장소로 푸시 할 권한이 없습니다!", - "82058092ad7d2c7aa5e2f012b6544e59": "푸시 실패! {}", - "2b228d4775d23d2725ec227ba648bd43": "성공적으로 밀고, 거울 : {}", - "9e396f640866ded9c3a47268f96a36e3": "이미지를 당기고 기다려주세요 ... \\ r \\ n", - "7e5f4d488d318dc7c235095c8456f5e4": "이미지를 당기거나 검색합니다 ... \\ r \\ n", - "5a7377f73fc144fd961e8b2ffeba66af": "실패! \\ r \\ n", - "97a6dfe3a273202edffe31af7a43e220": "기본 미러 스테이션을 사용하여 이미지를 당기지 못했습니다!다른 거울 스테이션을 사용하여 당신을 끌어 당기려고합니다 ... \\ r \\ n", - "484616540fc726ef4f52e97a1c2f0fef": "이미지를 당기지 못했습니다! \\ r \\ n", - "1cd77329b2bddfb200e656214b1fdf32": "이미지를 당기지 못했습니다!", - "63c709b9759af42fef890d539d822575": "당기 실패! {} \\ r \\ n", - "b4aba972332d1f3728171905a033fb99": "이미지 풀 [{}] 성공 \\ r \\ n", - "2fae21ffd185d9e9730b39bc7de23852": "이미지가 성공적으로 당겨졌습니다!", - "8a635442294fd90195a43d9a1672fc3f": "이미지를 당기지 못했습니다!", - "711de72d616e7abb29dfa919244d382d": "풀이 실패, 이미지가 존재하지 않거나 이미지가 개인 이미지 일 수 있습니다.DockerHub 계정 비밀번호를 입력해야합니다! \\ r \\ n", - "e9511e26273da5b4537b4683668b548e": "당기 실패! {} \\ r \\ n", - "05d13bf5dcc37754db74b2356e6e117c": "당김 실패, 저장소에는 그러한 이미지가 없습니다! \\ r \\ n", - "714841af7f3de6c8d99ba03f4cee0ee5": "풀이 실패, 이미지 형식이 잘못되었습니다. nginx : v 1! \\ r \\ n", - "2d941c4fa4da32ccafa8670a07f23c1d": "이미지가 성공적으로 당겨졌습니다.", - "5282194697748d9fcd1ccd8a90428424": "이 거울 이미지가 없을 수도 있습니다.", - "d6facab17334983e7c6f8c561c239820": "이미지를 가져 오지 못했습니다. 이것은 개인 이미지입니다. 계정 비밀번호를 입력하십시오!", - "b507deb7848d566982b339265c8f5482": "당기는 이미지 실패

이유 : {}", - "e90811ef0a60b6d299b4e1064d7788d0": "쓸모없는 이미지가 없습니다!", - "f343313c101aeaff0516990ebea3dcef": "삭제하지 못했습니다! {}", - "90ecd58b3feb0b2be11f0af685ad39fe": "쓸모없는 이미지의 삭제가 실패했고 Docker와의 연결이 시간이 내려졌습니다.Docker 서비스를 다시 시작하고 다시 시도하십시오!", - "45a0bbacbe8d5ea062167e88423e4573": "Nginx 또는 Apache 서버가 감지되지 않았습니다. 먼저 설치하십시오!", - "bdaf560796795d6a303bc9a1d75a34c5": "프로젝트 유형 [{}] 기존 도메인 : {}", - "4588a786e80c83c2cbde37b930c3d778": "서버 포트 [{}]가 사용되지 않으므로 반전에 사용중인 포트를 입력하십시오!", - "6888cf6586ce3c187150146a2d1db0ac": "실패를 추가하면 데이터베이스를 작성할 수 없습니다!", - "e6bddfc6a0bbf72d592236c61b411f9a": "오류로 실패한 추가 : {}", - "1bfa1b1738332c4835f5efe7c54ab9c2": "매개 변수 오류!", - "0d66954ff42aa042c219a356266f5bc0": "역전 프록시 정보가 감지되지 않았습니다!", - "65960a94c86ed543e6ecf9865cb7aab9": "감지 엔진이 초기화되고 있습니다.첫 번째 부하는 시간이 오래 걸릴 수 있습니다 ....", - "2e2456601fd9b5e6a2f7345d8877e2eb": "apt-get이 업데이트되고 있습니다.첫 번째 부하는 시간이 오래 걸릴 수 있습니다 ....", - "8c902642d409e04304c1b50daef221ad": "탐지 엔진이 설치되고, 첫 번째 실행은 수천 년이 걸릴 수 있습니다 ...", - "e4cf763784740f252924c589b16d4f25": "YUM 캐시가 업데이트되고 있습니다.첫 번째 부하는 시간이 오래 걸릴 수 있습니다 ....", - "5677925b683b9c781fb956882c4d736e": "지원되지 않는 시스템 버전 {}", - "f1f3e9961d2a46c83e8d226aa1cc1dbb": "지원되지 않는 시스템 버전 {} \\ ncurrely는 Debian, Ubuntu, Centos 만 지원합니다", - "938e7de7df2aa5efe531d693deeb5907": "libdl.so 종속 라이브러리 확인 ...", - "459ed27083c25b82135efedccaa60ada": "스캔 {} 예외 기록 명령", - "37c614d5d300e6c391808efd5363ec82": "스캔 {} 민감한 정보", - "5ddc98a53573410c7cb65727946c5d3f": "스캔 {} 백도어", - "6bb6be880d819a93af392183d16fccdf": "스캐닝 {} 컨테이너가 탈출됩니다", - "cd7fb7cf576b22469514b5b30f365158": "{} 스캔이 완료되었습니다", - "acc2731ee0f5b78d4e801d2daf814c32": "의심스러운 비정상 역사 명령이 발견되었습니다", - "3069c277261d044bb309e4b09ae798fa": "이미지에는 비정상적인 역사적 명령 [{}]이있는 것으로 밝혀졌으며, 이는 컨테이너가 실행될 때 맬웨어 나 코드를 호스트 시스템에 이식 할 수있어 보안 위험이 발생할 수 있습니다.", - "6d64734fff5534f48029ffba4aa3678d": "1. 일반 비즈니스에 대한 명령이 필요한지 확인하는 것이 좋습니다
2. 불필요한 손실을 피하기 위해 공식적이고 신뢰할 수있는 인프라를 선택하는 것이 좋습니다.", - "475dfbee8626a4d939cf631aad174de3": "스캐닝:{}", - "71c7dfa944a5a50f281c0acb232dcdeb": "스캐닝:{}...", - "0c29ac6d8e69451c80f8ef857e499ab2": "민감한 디렉토리 발견 {}", - "53872e73575a306598c0c4060b44181c": "이미지는 민감한 디렉토리에 존재합니다. {}는 공격자가 민감한 데이터 또는 소스 코드를 훔치기 위해 사용하여 추가 보안 문제를 초래할 수 있습니다.", - "6fe56120a0502f9678988d756dd27682": "1. 이미지를 사용하여 배포 된 컨테이너를 입력하고 비즈니스에 영향을 미치지 않고 디렉토리를 삭제하십시오.
2. 삭제할 수없는 경우 디렉토리에 대한 액세스를 제한하십시오.", - "6b2f9867ccd6f3e6f06726c06ed684d5": "민감한 파일 발견 {}", - "6684913201a60be0b5e89c4dfb210719": "Bashrc 백도어 발견 {}", - "9a9f27d5f9f8c056fff7986c87a94c30": "이미지에는 bashrc 백도어가있는 것으로 밝혀졌습니다 : [{}], 악성 코드 내용 :
{}", - "d8a828116070b9d92315ca309cca1991": "1. 이미지를 사용하여 배포 된 컨테이너를 입력하고 파일
2에서 악성 코드를 삭제하십시오.컨테이너가 침입되었는지 확인하고 컨테이너에서 비즈니스의 액세스 토큰 또는 계정 비밀번호를 업데이트하십시오
3.공식 이미지 또는 기타 신뢰할 수있는 이미지 배포 컨테이너를 교체하는 것이 좋습니다.", - "e1439f3f7d25d378078d513a82a3fa87": "백도어 파일 발견 {}", - "9ede9d4bd542eedf78e39b0acf0206e3": "Bashrc 백도어 파일 [{}]은 이미지에 존재하는 것으로 밝혀졌으며 악성 코드 내용은 다음과 같습니다.
{}", - "686765b4612ecd8f774648db29a1541d": "Cron Backdoor 발견 {}", - "390bdc0b3c37a56ede9467b0c220a3b6": "Cron Backdoor [{}]가 이미지에 존재하는 것으로 밝혀졌으며 악의적 인 코드 내용은 다음과 같습니다.
{}", - "caea084281a3cb2515e5618cd3856163": "발견 된 시스템 백도어 : {}", - "d04061273caa56d5a0c3d74f3e9fd482": "SystemD 백도어 파일 [{}]이 이미지에 존재하는 것으로 밝혀졌으며 악의적 인 코드 내용은 다음과 같습니다.
{}", - "fc76e0fe415c49cc1c09bf76035fc4e9": "발견 된 sshd 백도어 {}", - "00b2409f52ef5bc56afe29ccbe5cfa2c": "SSHD 소프트 링크 백도어를 찾았습니다. {}, 파일은 악의적 인 기능을 누릅니다 [exe = {}; link_file = {}]", - "e747da31a54cd71fb1a2860cae0f9f77": "tcpwrapper 백도어를 찾았습니다 {}", - "a2b09164c8d23894736bcc6a646861e0": "TCPWRPARPE BACKDOOR 파일 [{}]이 이미지에 존재하는 것으로 밝혀졌으며 악성 코드 내용은 다음과 같습니다.
{}", - "a7fd9f6b190b8531039376fbbda5f482": "탈출의 위험이있는 사용자 {}", - "5d46ed5f4af3f30cfcc8bd66942f93b4": "사용자 이름 {}는 명령 [{}]을 통해 컨테이너 탈출을 완료 할 수 있으므로 공격자는 호스트 또는 다른 컨테이너에 대한 액세스 권한을 얻을 수 있습니다.악성 콘텐츠 :
{}", - "4ca0a18aa36a60613104cacdae514dec": "1. 이미지를 삭제하거나 더 이상 사용하지 않는 것이 좋습니다
2.이미지를 사용하는 비즈니스가있는 경우 컨테이너 환경을 입력하고 /etc /sudoers 파일에서 사용자 {}의 내용을 삭제하십시오.", - "611afea08ae3b216a34dfde4c143f46c": "不支持的系统版本", + "0e8623af4dd4d3b732904872d22fbf83": "네트워크 이름은 비워둘 수 없습니다!", + "5aa2044b58e63d58ddecc69421802404": "게이트웨이는 다음을 수행할 수 있습니다.", + "ceaa20eefd6749452a947c7f5dfa4eb0": "IP 범위는 비워둘 수 없습니다.", + "c3e2cce9a4a1b26f46f462f34ae391b9": "네트워크 생성에 실패했습니다!", + "ea5ceb520cc9b09fe27e09528b98bd2d": "네트워크 이름: [{}]이(가) 이미 존재합니다!", + "9cdc09516d85ae057d1d9bedc988849e": "네트워크를 성공적으로 만들었습니다!", + "5395cc8155f62a666b8f0d0f9f207676": "저장소 정보가 이미 존재합니다!", + "9b10e472adfe6372c9175b9002f098fd": "[공식 Docker Repository] 편집 할 수 없습니다!", + "5858be44c285048a8f51c126b2fd23e9": "편집 실패!이유 : 계정 비밀번호 암호 해독 실패!저장소를 삭제하고 다시 추가하십시오", + "7e51d0e26e1b467aff3c89d3e0751ec0": "편집 실패!이유:{}", + "6478f13dd58e5a4329e19be9020243ff": "이 저장소는 찾을 수 없습니다", + "d5309f3186607eb36bee41e8a28cea3a": "성공 편집!", + "9e20bffc0d4093d18fcbc5c98fa0fd87": "[공식 Docker 리포지토리]를 제거 할 수 없습니다!", + "a62336a87697ab6911ba550015a798ef": "삭제 실패, 저장소 ID가 존재하지 않을 수 있습니다!", + "54197759827cfaf0cdb1e213fa49771e": "로그인 테스트가 실패했습니다!이유 : 계정 비밀번호 오류 일 수 있습니다. 확인하십시오!", + "657a0b7e82731fb4ae516d14081f17d0": "로그인 테스트가 실패했습니다!이유: {}", "221d1ea3c23f430e03a4486dca865014": "컨테이너가 존재하지 않습니다. 브라우저를 새로 고치고 다시 시도하십시오!", "7e88e25ea6c628c2d03c526c04af3eed": "컨테이너 상태를 얻지 못했습니다.", - "c0ef08aa7bd6276137ccd491a8041223": "백업 할 볼륨이 없습니다", - "584e35dd4a55da88bd232ac7a19b9b95": "백업 작업이 성공적으로 생성되었습니다.", - "0b08674e1c87f3f8508a4ae9b0c160f8": "백업 작업을 만들지 못했습니다 {}", - "13d829d3f2b78c971207d944f2a96c55": "파일을 삭제하지 못했습니다. 이유 : {}", - "7bdaccb3d20432c5e0150862ab1cc3f3": "누락 된 매개 변수 이름", - "9b90b5b49486a61d9b0e6dbbbcb56cad": "누락 된 매개 변수 container_info", - "b23d7110e9bf6539b4964afe0d4934e2": "그룹화는 이미 존재합니다", - "a90ca6939fe71693c145f50596c6e0e6": "컨테이너 {}는 그룹 {}에 의해 추가되었습니다!", - "e3cf7e2f2d14257e7ea33657b135d534": "추가 실패 : {}", - "fcbeb38a63ced9d3de476fb08c31d71e": "누락 된 매개 변수 ID", - "fe4e0032f69b4100ed143d475e8b5050": "성공 편집", - "6c4ed52bea35c4c43839b8f0b44489f9": "편집 실패 : {}", - "6c0129a45e9da4e1820335f3d06a869f": "삭제 실패 : {}", - "2a743a86676fd52214d3c0af1b0238b5": "상태 매개 변수 오류", - "f95136e5c1f3ccbb09ace8fc24f1e0ca": "컨테이너 [{}] 작동이 실패했습니다", - "2e01172e31495f41fcebcf3f831cc82c": "운영 성공", - "244a98f8c45f938980f48b168aef02c9": "작동 실패 : {}", - "fc431240dfc80a731900d5f2ddb6dfc3": "컨테이너 시작 주문 {}", - "5ea6c6eea14c24c92eeeccaeea5c46dc": "잘못된 상태!", "cb337dbfbc18aafa482051b6fc349dea": "구성 파일을 가져 오지 못했습니다", "84d3fc0c1c70fcd6fdd7ca7c3be11225": "프로젝트는 이미 존재합니다!", "a280b122a0b3249c26b1f94ad4573f50": "쓰기 실패!", @@ -2192,13 +2319,32 @@ "d6d90f977089e176ec7443db17c41279": "容器添加成功!", "04cd9210bf9290bda98bc76ca4bc59fd": "容器删除成功!", "d867a5e10a7a9485129c679b85453e3f": "项目删除成功!", - "aad4acc1243565c5c2ca41e5733e5fe0": "성공적인 \\ r \\ n", - "d8f5a29760a4f000dd754819b1faadcc": "실패 \\ r \\ n", - "73977612ef83925db43df7745df9c5eb": "\\ r \\ nno 10 분 이상 응답! \\ r \\ n", - "6345c76d66a8a9e9cdd3f9d996ff062d": "CMD를 통과하십시오", - "bba401eadefa8222f3e60a312cc19f34": "Docker Run 또는 Docker Pull 명령 만 실행할 수 있습니다.", - "b5592904212696df3e5bcec990c8676a": "위험한 명령이 존재합니다 : [{}], 실행이 허용되지 않습니다!", - "cfff471dc04b6ba4aeb2cc2844b2c94b": "위험한 기호가 존재합니다 : [{}], 실행이 허용되지 않습니다!", + "459ed27083c25b82135efedccaa60ada": "스캔 {} 예외 기록 명령", + "37c614d5d300e6c391808efd5363ec82": "스캔 {} 민감한 정보", + "5ddc98a53573410c7cb65727946c5d3f": "스캔 {} 백도어", + "6bb6be880d819a93af392183d16fccdf": "스캐닝 {} 컨테이너가 탈출됩니다", + "cd7fb7cf576b22469514b5b30f365158": "{} 스캔이 완료되었습니다", + "7d643f192968be3f8a54be28592e9176": "이미지 스캔 실패:{}", + "acc2731ee0f5b78d4e801d2daf814c32": "의심스러운 비정상 역사 명령이 발견되었습니다", + "3069c277261d044bb309e4b09ae798fa": "이미지에는 비정상적인 역사적 명령 [{}]이있는 것으로 밝혀졌으며, 이는 컨테이너가 실행될 때 맬웨어 나 코드를 호스트 시스템에 이식 할 수있어 보안 위험이 발생할 수 있습니다.", + "6d64734fff5534f48029ffba4aa3678d": "1. 일반 비즈니스에 대한 명령이 필요한지 확인하는 것이 좋습니다
2. 불필요한 손실을 피하기 위해 공식적이고 신뢰할 수있는 인프라를 선택하는 것이 좋습니다.", + "6684913201a60be0b5e89c4dfb210719": "Bashrc 백도어 발견 {}", + "9a9f27d5f9f8c056fff7986c87a94c30": "이미지에는 bashrc 백도어가있는 것으로 밝혀졌습니다 : [{}], 악성 코드 내용 :
{}", + "d8a828116070b9d92315ca309cca1991": "1. 이미지를 사용하여 배포 된 컨테이너를 입력하고 파일
2에서 악성 코드를 삭제하십시오.컨테이너가 침입되었는지 확인하고 컨테이너에서 비즈니스의 액세스 토큰 또는 계정 비밀번호를 업데이트하십시오
3.공식 이미지 또는 기타 신뢰할 수있는 이미지 배포 컨테이너를 교체하는 것이 좋습니다.", + "e1439f3f7d25d378078d513a82a3fa87": "백도어 파일 발견 {}", + "9ede9d4bd542eedf78e39b0acf0206e3": "Bashrc 백도어 파일 [{}]은 이미지에 존재하는 것으로 밝혀졌으며 악성 코드 내용은 다음과 같습니다.
{}", + "686765b4612ecd8f774648db29a1541d": "Cron Backdoor 발견 {}", + "390bdc0b3c37a56ede9467b0c220a3b6": "Cron Backdoor [{}]가 이미지에 존재하는 것으로 밝혀졌으며 악의적 인 코드 내용은 다음과 같습니다.
{}", + "caea084281a3cb2515e5618cd3856163": "발견 된 시스템 백도어 : {}", + "d04061273caa56d5a0c3d74f3e9fd482": "SystemD 백도어 파일 [{}]이 이미지에 존재하는 것으로 밝혀졌으며 악의적 인 코드 내용은 다음과 같습니다.
{}", + "fc76e0fe415c49cc1c09bf76035fc4e9": "발견 된 sshd 백도어 {}", + "00b2409f52ef5bc56afe29ccbe5cfa2c": "SSHD 소프트 링크 백도어를 찾았습니다. {}, 파일은 악의적 인 기능을 누릅니다 [exe = {}; link_file = {}]", + "e747da31a54cd71fb1a2860cae0f9f77": "tcpwrapper 백도어를 찾았습니다 {}", + "a2b09164c8d23894736bcc6a646861e0": "TCPWRPARPE BACKDOOR 파일 [{}]이 이미지에 존재하는 것으로 밝혀졌으며 악성 코드 내용은 다음과 같습니다.
{}", + "a7fd9f6b190b8531039376fbbda5f482": "탈출의 위험이있는 사용자 {}", + "5d46ed5f4af3f30cfcc8bd66942f93b4": "사용자 이름 {}는 명령 [{}]을 통해 컨테이너 탈출을 완료 할 수 있으므로 공격자는 호스트 또는 다른 컨테이너에 대한 액세스 권한을 얻을 수 있습니다.악성 콘텐츠 :
{}", + "4ca0a18aa36a60613104cacdae514dec": "1. 이미지를 삭제하거나 더 이상 사용하지 않는 것이 좋습니다
2.이미지를 사용하는 비즈니스가있는 경우 컨테이너 환경을 입력하고 /etc /sudoers 파일에서 사용자 {}의 내용을 삭제하십시오.", + "611afea08ae3b216a34dfde4c143f46c": "不支持的系统版本", "68ae8c43a52aac63c5c62e1974afdda6": "스크립트 ID는 비어있을 수 없습니다", "eee298ea1d9259c2f0e2061ecd89c21c": "지정된 스크립트가 존재하지 않습니다", "b68a8dd0c887719b7cc3e10dc11843ce": "Aapanel의 내장 스크립트는 삭제할 수 없습니다", @@ -2237,6 +2383,147 @@ "101da618f72223d3eac9e66fe510b04f": "작업 이벤트 ID는 비어있을 수 없습니다", "bee903cc3d03ab2c237eefb1d601fbcb": "오류 메시지로 스크립트 실행이 실패했습니다 : \\ n {}", "1d78758685e5e2f4efeeb490f8521abd": "\\N", + "ca6977d373320a7fdb51047199d4cc59": "관리자가 설치되지 않았습니다!", + "38641e6ce3a6369e108eb595672c8edc": "성공적으로 제거되었습니다!", + "9cae26284a7ad2f46132c1e8e196d089": "성공적으로 설치되었습니다!", + "a9a92e55770213c8aa1fb2871dc43563": "관리자 포트를 성공적으로 설정했습니다!", + "b611124a9bad44e328d7ce809912802d": "성공적으로 설정하십시오!", + "2321763bf0b4cbf345b1e19dc9faec47": "Adminer PHP 버전을 성공적으로 설정했습니다!", + "40a1f70c155550ad2dafa5e556e10c3c": "PHP 버전이 설치되지 않습니다!", + "e75e68c65607a7cfcc570d51345d7e33": "파일 모니터", + "983e2622c48ae7231c5d29b135133b0e": "모니터 디렉토리 추가 : {}", + "15c7df4ddd1d366c2cdfa2689c15369d": "IP 필터 프로그램 컴파일이 실패했습니다", + "423c2da1e20a5f2138cc810423475eef": "IP 주소가 비어있을 수 없습니다!", + "1e116dc22492b28a7a38a6029416d0e1": "IP 주소는 잘못된 형식입니다!", + "8c8f15a1c1cce8bbdc465e865c804b40": "최대 차단 기간은 24 일을 초과 할 수 없습니다!", + "fb86e24ffe47ba150610ba1efd96929a": "IP 주소의 임시 차단 CIDR 블록은 지원되지 않습니다.", + "bdb199a03e52488d499ea6bb0cb0d1ed": "IP 주소 세그먼트를 차단하려면 WAF가 필요합니다", + "1ac8e9ffcea7cf6e9fa183c1b9038599": "IP 데이터가 존재하지 않습니다!", + "04d46623edcb5663566cf43f575de9b2": "웹 사이트 이름은 비어있을 수 없습니다!", + "4dcde63f7fd4415f3b5eb6cb889d135c": "추가가 성공적이었습니다", + "d303480175994c6ad240cf24a4a99640": "웹 사이트 구성이 존재하지 않습니다!", + "87d1f7257214d09ba39656b72c864bac": "계정 설정 성공!", + "aa5bb2d58da86c4b9160e94d0c4538f1": "Uri는 비어있을 수 없습니다!", + "ade0ab88aa0ee9c18f0979d5b62b517d": "URI가 이미 존재합니다. 다시 추가하지 마십시오!", + "506d9cb0cb2468fd09048bcbe8b37497": "URI는 존재하지 않습니다", + "cf180f27e678d4e297f690e581961417": "청취 주소 형식이 잘못되었습니다!", + "1ed0fa9bb8768d56bf2d3232d7067023": "잘못된 청취 포트 범위!, 요구 사항 : 1024-65535", + "e6aa58b2f41bc53f6b84657d47eb35c1": "데이터 저장 경로가 존재하지 않습니다!", + "c87be59ecbed944c2b45fea87d62f473": "IP 통계 모드 오류, 요구 사항 : 0 또는 1", + "fbc4861b0190c90a5388e44d2bbac678": "현재 버전을 사용할 수 없습니다. 패널을 업그레이드하고 다시 시도하십시오.", + "8b1d5629a1346da21fcaeb9f8f0db6d2": "시간 형식 오류를 시작하십시오!", + "7a238977c4b13d23ac3e6b151a914cab": "종료 시간 형식 오류!", + "a87a482f3bced3ce16bc9a351e8b5ce8": "시작 시간은 종료 시간보다 클 수 없습니다!", + "a0ef69b1680461368a9130e770256ca6": "날짜 형식 오류!", + "2493958c6f4051bb8d254d77d77b622b": "시간 입도 오류, 지원 : 분, 시간, 날짜", + "4c4258ffd9a69c8e332346241a3cbdae": "부정 조건 데이터는 잘못된 형식입니다!", + "b47f4e8b7540cae56e085231c3c984c1": "액세스 ID는 비어있을 수 없습니다!", + "fea04488a926034079dc00c5a60a9135": "액세스 ID 형식이 잘못되었습니다!", + "da206b8971dcba715ed8cdd1a82736e1": "액세스 ID가 존재하지 않습니다!", + "fd65e390dd8aa35ea3622658247776d0": "날짜 형식이 잘못되었습니다", + "9a4f1ea39f3a554d4e5431f86eb0450b": "사이트 이름은 비어있을 수 없습니다!", + "b59417ef234946819788acfde92a00a7": "퍼지가 성공적이었습니다", + "aaa3736c0541d4a4d82193c2204ec317": "시작 시간은 잘못된 형식입니다!", + "e579606ed1219291caeb3bfad786dd3f": "종료 시간은 잘못된 형식입니다!", + "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "날짜 형식이 잘못되었습니다!", + "53c85b9d96ea14f3f8224a5d2e659894": "매개 변수는 비어있을 수 없습니다!", + "9dc21ed8c6025cab9873847e6e1ca506": "쿼리 유형이 잘못되었습니다!", + "236c6e2f9a266b929b283eda30c2b3b6": "관련 데이터가 없습니다!", + "50fc65b5f19812ccf756b7ad7de7f4cb": "Session_id는 비어있을 수 없습니다!", + "8f2adb53dcb8d2c660159b1f8e8012ed": "세션 ID가 잘못되었습니다!", + "7f4419a5b09e1a04936f6aba6939521a": "구성 확인 완료!", + "f3df0751d9522bf2e68034bab4cd49a5": "구성 정리가 완료되었습니다", + "191fae10bdd9d3eb6cb110b524fe40b7": "제출이 성공적이었습니다", + "f53208c04e48d7ee19222b6adf343810": "사용자 이름의 길이는 3 자 미만일 수 없습니다!", + "251e2cae1dbed2b37f7d16961a606970": "권한 수준 선택이 잘못되었습니다!", + "a835325a5600b6571a24111e4d318e2c": "웹 사이트를 선택하십시오!", + "a669655fa991afcfa0cfa3f62286d944": "비밀번호 길이는 5 자 미만일 수 없습니다!", + "4d8d30e66ad9aaccc738ad99d5083955": "사용자 이름이 이미 존재합니다!", + "12152390a5bf2ebce0f00b0fb5c650a2": "추가가 성공적이었습니다!", + "4d1b7f489e07d6ca02ca1910a3884c48": "사용자는 존재하지 않습니다!", + "3e83aa40dd320efb027151c02aab2871": "암호의 길이는 8 자 미만일 수 없습니다!", + "d3748b3102cc8ba898f0f0bec842ce9e": "수정이 성공적이었습니다!", + "ac75e534c7334e1fd02c68a3993f1568": "삭제가 성공적입니다!", + "ca281da1f13858d0b599d19e18a510bf": "웹 상태가 잘못 선택되었습니다!", + "c88239bc4a113ab0f02acb9bc31b3437": "웹 포트가 잘못되었습니다!", + "f06e6a5985a91ac55c651e0b573378f0": "웹 보안 디렉토리는 비어있을 수 없습니다!", + "41a871d7ec26993be1367226321e06fa": "보안 입구 주소의 길이는 6 자리 미만일 수 없습니다!", + "16f83d0969b9f7fe56ac3b55f9dedb26": "이 입구는 이미 패널에서 차지하고 있습니다. 다른 입구를 사용하십시오!", + "066df5a1cf19314e0265a1eb396848ac": "유인 주소는 예를 들어 : /my_monitor와 같이 잘못 형식화되었습니다", + "794ee58637251012717d7e565aafc2a1": "설정이 성공적이었습니다!", + "2531ce72ea98e5aa8f4953eee783b540": "오류 로그가 발견되지 않았습니다!", + "0fc543dae93d3f76f5f7ff8048f5c398": "수출을 위해 마스크 된 IP가 발견되지 않았습니다!", + "5552ac99360952da2cf289f556ad19a6": "마스크 된 IP가 동기화되는 것으로 밝혀지지 않았습니다!", + "3332452d6ecd015473b133de021a9e06": "동기화가 성공했습니다!", + "e6afdb1b63ca733f5d1741c7eff7a64e": "처리되고 있습니다. 반복하지 마십시오!", + "696212205a77e698860ff5195992642b": "수리 작업이 완료되었습니다", + "97cb85456b49af4258f4c8da38bb576a": "예정된 작업이 성공적으로 추가됩니다!", + "2739213f569742c0782252f41279c060": "예정된 작업을 추가하지 못했습니다", + "1cc4efde4fab0b4bbc2812a8b58f59b0": "사이트 이름을 지정하십시오", + "3b5ef9e1ea5a8dbd9606075686dbf15f": "날짜 범위를 지정하십시오", + "f8412f656685f470a82b74de3d9f24d5": "수출 작업이 이미 존재합니다", + "96ed379ec1882dcf52f0ff65057efb92": "내보낼 필드를 지정하십시오", + "4e698e0709485a0e93a706964b748c5b": "알 수없는 내보내기 유형", + "2a2dbc12afac446fe408eb78453bc6c2": "내보내기 작업이 존재하지 않습니다", + "9ff8782f584db728284fadd719967806": "수출 작업에 오류가 발생했습니다", + "b4421542e9cff8ce336075b668b8f87e": "내보내기 기록은 존재하지 않습니다", + "41564d1cd7f8ecb23bcc590cb2217518": "새 데이터 디렉토리를 입력하십시오", + "699856a3cc697d8afcfd04dcd2f0729a": "지정된 디렉토리는 현재 디렉토리와 동일합니다.", + "103422cd692bcaf56a7367075caf2274": "지정된 디렉토리는 현재 디렉토리와 동일한 디스크에 분할되어 있으므로 데이터 마이그레이션이 필요하지 않습니다.", + "bcbd9605d3b8753bb8afbc765b293e01": "수정 및 데이터 마이그레이션 작업이 시작되었습니다", + "967a57ad58881afe2c5da6cf0d7fce8c": "IP 주소와 크롤러 이름을 입력하십시오", + "62b73e6c2a169296e73edf8a4d1e02f0": "올바른 IP 주소를 입력하십시오", + "0e1a26f6137c04f0f80956210069e46d": "올바른 크롤러 이름을 입력하십시오", + "fe8d50ca26f2e864d2bf4a932801bb85": "예상치 못한 오류, 플러그인을 수정하십시오", + "21aa998a1dee8774bc88ce2a070bf4de": "IP 주소를 입력하십시오", + "2e0c672edc06ef05e44de98ac1b7a47d": "삭제가 성공적입니다", + "0f9d9b728fba6427b5ff4da49aee1738": "거미가 잘못 선택되었습니다!", + "e48c86e701ddba3ab084d5457aa58714": "IP는 비어있을 수 없습니다!", + "3bdb147b7a040582220aa7f1ce2af19b": "IP 형식이 잘못되었습니다!", + "b60597b6a9525341fa5d4d441084658d": "IP 주소의 해상도 기록은 쿼리되지 않았습니다", + "86e9360dac1c5eece29f32c9aba8011d": "저장은 성공적이었습니다", + "e5320166e7623b6a39f9a7af7c20c787": "다른 웹 사이트 매개 변수 오류를 지정합니다", + "c21fbb62edf94306d2e73365e6e7d637": "다른 웹 사이트를 지정하는 매개 변수는 비어있을 수 없습니다", + "c7fae0c9886cac3924fe5e459e171ab1": "삭제가 실패했습니다", + "9a84d2910d3d36b78d7060f1c77e27f6": "사이트 이름이 지정되지 않았습니다", + "0987458a95b8bb7d6cdf9fa0630b6407": "현재 서버는 nginx가 아니며 사용자 정의 컬렉션을 지원하지 않습니다.", + "b925dfe3295278bd81a85bded66da01d": "상태 코드는 잘못된 형식입니다", + "2a8793bbb8bc38a7df9d8c796648526a": "사이트 이름이 선택되지 않았습니다", + "6878600890a41b84c145423618ea2431": "웹 사이트 정보가 발견되지 않았습니다", + "eff712873c55654bf48eaf421a184e73": "사용자 정의 컬렉션 이름이 입력되지 않았습니다", + "116208583eac10a8769774a6eaaff926": "획득 유형이 잘못되었습니다", + "fff3d7679cb121a30e68a104b58c934e": "수집 내용이 입력되지 않았습니다", + "75db42595fc9aee34df76df808712f92": "사용자 정의 수집 이름은 특수 문자를 포함 할 수 없습니다 ({})", + "9667904e74175dfde9824cb8cd099ce7": "헤더 콘텐츠는 $ http_로 시작해야합니다.", + "4c61d0ee460aa25eb6b5c413c46c9236": "신체 유형의 수집 내용에는 [$ + nginx log 변수]가 포함되어야합니다.", + "c03680a7ae35b7ce5b62f67b854d3b06": "수집 내용에는 [$ + nginx log 변수]가 포함되어야합니다.", + "d621342512cf7910a6dc4e7d736bcc63": "컬렉션 콘텐츠에는 특수 문자가 포함될 수 없습니다.", + "b4704dc559a05c5721c095b97c4dbbc0": "사용자 정의 수집 이름이 복제되었습니다", + "6594b670e8bd06e352f112c1bf194fc1": "사용자 정의 수집 컨텐츠가 복제됩니다", + "a531c58ef7fefbbbd79becda53ede191": "사용자 정의 수집 이름은 지정되지 않았습니다", + "88c0c3ae4ef97b6069a35672b2caa05c": "신체 유형의 수집 내용에는 [$ + nginx log 변수]가 포함되어야합니다.", + "41353000c0d351db90c9eec095bae879": "이미 명명 된 중복 컬렉션이 있습니다 : {}", + "ce78b7a225f05ece35ed7adc68b08a88": "수정하려는 획득 구성은 찾을 수 없었습니다", + "521df7df29b44fcee614de96cecca61c": "삭제가 성공적입니다", + "3b0ccb5c759b0941d50e331b22013560": "지원되지 않는 확장 : {}", + "7ea48870539b84996d1b1691c22823a7": "수정 된 데이터 형식이 잘못되었습니다", + "bc64045195c8ed198a69772b3a204ef2": "수정할 데이터는 지정되지 않았습니다", + "bb02871a5e118841b95b69c5bff55baf": "블랙리스트는 잘못된 형식입니다", + "1aac00a8c681100fd27b287c0b0516f1": "빌드 구성 형식이 잘못 구문 분석됩니다", + "f6df35a69157ae1fca6415b043485334": "작업 ID가 지정되지 않았습니다", + "524a477cee9485a5a80a860e2bc5b5d5": "작업 ID가 잘못되었습니다", + "4b5d95ed20303e337aec42486a0fb3fd": "현재 웹 사이트는 쿼리되지 않았습니다", + "19e777b7c8cdc1ce56ad2f4fe735b2b7": "현재 웹 사이트는 실행중인 디렉토리를 쿼리하지 않습니다", + "45484ac5ec748cf3362d425ed7142b75": "규칙은 비어있을 수 없습니다", + "b36196750a032a791ecc8035853dc648": "규칙 이름은 비어있을 수 없습니다", + "cfa7bc3b484b8068e78bc6f55a2aaeaf": "규칙이 지정되지 않았습니다", + "835365605f9e08c44c0b7f65a422d059": "날짜 매개 변수가 잘못되었습니다", + "4fa3e528186292138b224a0a1d46ec59": "웹 사이트 이름이 잘못되었습니다", + "3769ee974734f97166d6bce6b96e9b4e": "데이터 오류", + "daddfa03b4ea762e009a36ce970b2b59": "Baidu 계정이 설정되어 있지 않습니다", + "0379d9c081b6fd9ec2fd86e8672a4e72": "데이터를 얻지 못하면 로그인 정보가 만료되었으며 다시 로그인 할 수 있습니다.", + "8057e57596c33acf04619825d625a483": "업데이트가 성공적이었습니다", + "3149165696693c4f6fef18928261a50f": "360 계정 설정이 없습니다", "add390e6467c956fbb7f6da0f51d23d6": "보내기 작업이 실행되었습니다", "e8edb193e1cb171a17efe2765d72af71": "파일이 존재하지 않습니다", "63d325d5c4dfd07afdf888fdf727542e": "성공적으로 가져 오기, skip {} 구독되지 않은 사용자, 중복 이메일 주소 : {}", @@ -2460,141 +2747,6 @@ "decc12f91f9703a201987fdeabe572a4": "[{}]가 이미 같은 이름을 가진 사이트가 이미 존재합니다. 만들기 전에 수정하십시오.", "de67e3b2c564a899fe3195606036a7f1": "설치 성공", "8d5496d961b4d4e08474b20c1450737a": "사이트를 만들지 못했습니다", - "e75e68c65607a7cfcc570d51345d7e33": "파일 모니터", - "983e2622c48ae7231c5d29b135133b0e": "모니터 디렉토리 추가 : {}", - "15c7df4ddd1d366c2cdfa2689c15369d": "IP 필터 프로그램 컴파일이 실패했습니다", - "423c2da1e20a5f2138cc810423475eef": "IP 주소가 비어있을 수 없습니다!", - "1e116dc22492b28a7a38a6029416d0e1": "IP 주소는 잘못된 형식입니다!", - "8c8f15a1c1cce8bbdc465e865c804b40": "최대 차단 기간은 24 일을 초과 할 수 없습니다!", - "fb86e24ffe47ba150610ba1efd96929a": "IP 주소의 임시 차단 CIDR 블록은 지원되지 않습니다.", - "bdb199a03e52488d499ea6bb0cb0d1ed": "IP 주소 세그먼트를 차단하려면 WAF가 필요합니다", - "1ac8e9ffcea7cf6e9fa183c1b9038599": "IP 데이터가 존재하지 않습니다!", - "04d46623edcb5663566cf43f575de9b2": "웹 사이트 이름은 비어있을 수 없습니다!", - "b611124a9bad44e328d7ce809912802d": "성공적으로 설정하십시오!", - "4dcde63f7fd4415f3b5eb6cb889d135c": "추가가 성공적이었습니다", - "d303480175994c6ad240cf24a4a99640": "웹 사이트 구성이 존재하지 않습니다!", - "87d1f7257214d09ba39656b72c864bac": "계정 설정 성공!", - "aa5bb2d58da86c4b9160e94d0c4538f1": "Uri는 비어있을 수 없습니다!", - "ade0ab88aa0ee9c18f0979d5b62b517d": "URI가 이미 존재합니다. 다시 추가하지 마십시오!", - "506d9cb0cb2468fd09048bcbe8b37497": "URI는 존재하지 않습니다", - "cf180f27e678d4e297f690e581961417": "청취 주소 형식이 잘못되었습니다!", - "1ed0fa9bb8768d56bf2d3232d7067023": "잘못된 청취 포트 범위!, 요구 사항 : 1024-65535", - "e6aa58b2f41bc53f6b84657d47eb35c1": "데이터 저장 경로가 존재하지 않습니다!", - "c87be59ecbed944c2b45fea87d62f473": "IP 통계 모드 오류, 요구 사항 : 0 또는 1", - "fbc4861b0190c90a5388e44d2bbac678": "현재 버전을 사용할 수 없습니다. 패널을 업그레이드하고 다시 시도하십시오.", - "8b1d5629a1346da21fcaeb9f8f0db6d2": "시간 형식 오류를 시작하십시오!", - "7a238977c4b13d23ac3e6b151a914cab": "종료 시간 형식 오류!", - "a87a482f3bced3ce16bc9a351e8b5ce8": "시작 시간은 종료 시간보다 클 수 없습니다!", - "a0ef69b1680461368a9130e770256ca6": "날짜 형식 오류!", - "2493958c6f4051bb8d254d77d77b622b": "시간 입도 오류, 지원 : 분, 시간, 날짜", - "4c4258ffd9a69c8e332346241a3cbdae": "부정 조건 데이터는 잘못된 형식입니다!", - "b47f4e8b7540cae56e085231c3c984c1": "액세스 ID는 비어있을 수 없습니다!", - "fea04488a926034079dc00c5a60a9135": "액세스 ID 형식이 잘못되었습니다!", - "da206b8971dcba715ed8cdd1a82736e1": "액세스 ID가 존재하지 않습니다!", - "fd65e390dd8aa35ea3622658247776d0": "날짜 형식이 잘못되었습니다", - "9a4f1ea39f3a554d4e5431f86eb0450b": "사이트 이름은 비어있을 수 없습니다!", - "b59417ef234946819788acfde92a00a7": "퍼지가 성공적이었습니다", - "aaa3736c0541d4a4d82193c2204ec317": "시작 시간은 잘못된 형식입니다!", - "e579606ed1219291caeb3bfad786dd3f": "종료 시간은 잘못된 형식입니다!", - "7cf2a69e43dcdfc86ab3b2b4c378a7e8": "날짜 형식이 잘못되었습니다!", - "53c85b9d96ea14f3f8224a5d2e659894": "매개 변수는 비어있을 수 없습니다!", - "9dc21ed8c6025cab9873847e6e1ca506": "쿼리 유형이 잘못되었습니다!", - "236c6e2f9a266b929b283eda30c2b3b6": "관련 데이터가 없습니다!", - "50fc65b5f19812ccf756b7ad7de7f4cb": "Session_id는 비어있을 수 없습니다!", - "8f2adb53dcb8d2c660159b1f8e8012ed": "세션 ID가 잘못되었습니다!", - "7f4419a5b09e1a04936f6aba6939521a": "구성 확인 완료!", - "f3df0751d9522bf2e68034bab4cd49a5": "구성 정리가 완료되었습니다", - "191fae10bdd9d3eb6cb110b524fe40b7": "제출이 성공적이었습니다", - "f53208c04e48d7ee19222b6adf343810": "사용자 이름의 길이는 3 자 미만일 수 없습니다!", - "251e2cae1dbed2b37f7d16961a606970": "권한 수준 선택이 잘못되었습니다!", - "a835325a5600b6571a24111e4d318e2c": "웹 사이트를 선택하십시오!", - "a669655fa991afcfa0cfa3f62286d944": "비밀번호 길이는 5 자 미만일 수 없습니다!", - "4d8d30e66ad9aaccc738ad99d5083955": "사용자 이름이 이미 존재합니다!", - "12152390a5bf2ebce0f00b0fb5c650a2": "추가가 성공적이었습니다!", - "4d1b7f489e07d6ca02ca1910a3884c48": "사용자는 존재하지 않습니다!", - "3e83aa40dd320efb027151c02aab2871": "암호의 길이는 8 자 미만일 수 없습니다!", - "d3748b3102cc8ba898f0f0bec842ce9e": "수정이 성공적이었습니다!", - "ac75e534c7334e1fd02c68a3993f1568": "삭제가 성공적입니다!", - "ca281da1f13858d0b599d19e18a510bf": "웹 상태가 잘못 선택되었습니다!", - "c88239bc4a113ab0f02acb9bc31b3437": "웹 포트가 잘못되었습니다!", - "f06e6a5985a91ac55c651e0b573378f0": "웹 보안 디렉토리는 비어있을 수 없습니다!", - "41a871d7ec26993be1367226321e06fa": "보안 입구 주소의 길이는 6 자리 미만일 수 없습니다!", - "16f83d0969b9f7fe56ac3b55f9dedb26": "이 입구는 이미 패널에서 차지하고 있습니다. 다른 입구를 사용하십시오!", - "066df5a1cf19314e0265a1eb396848ac": "유인 주소는 예를 들어 : /my_monitor와 같이 잘못 형식화되었습니다", - "794ee58637251012717d7e565aafc2a1": "설정이 성공적이었습니다!", - "2531ce72ea98e5aa8f4953eee783b540": "오류 로그가 발견되지 않았습니다!", - "0fc543dae93d3f76f5f7ff8048f5c398": "수출을 위해 마스크 된 IP가 발견되지 않았습니다!", - "5552ac99360952da2cf289f556ad19a6": "마스크 된 IP가 동기화되는 것으로 밝혀지지 않았습니다!", - "3332452d6ecd015473b133de021a9e06": "동기화가 성공했습니다!", - "e6afdb1b63ca733f5d1741c7eff7a64e": "처리되고 있습니다. 반복하지 마십시오!", - "696212205a77e698860ff5195992642b": "수리 작업이 완료되었습니다", - "97cb85456b49af4258f4c8da38bb576a": "예정된 작업이 성공적으로 추가됩니다!", - "2739213f569742c0782252f41279c060": "예정된 작업을 추가하지 못했습니다", - "1cc4efde4fab0b4bbc2812a8b58f59b0": "사이트 이름을 지정하십시오", - "3b5ef9e1ea5a8dbd9606075686dbf15f": "날짜 범위를 지정하십시오", - "f8412f656685f470a82b74de3d9f24d5": "수출 작업이 이미 존재합니다", - "96ed379ec1882dcf52f0ff65057efb92": "내보낼 필드를 지정하십시오", - "4e698e0709485a0e93a706964b748c5b": "알 수없는 내보내기 유형", - "2a2dbc12afac446fe408eb78453bc6c2": "내보내기 작업이 존재하지 않습니다", - "9ff8782f584db728284fadd719967806": "수출 작업에 오류가 발생했습니다", - "b4421542e9cff8ce336075b668b8f87e": "내보내기 기록은 존재하지 않습니다", - "41564d1cd7f8ecb23bcc590cb2217518": "새 데이터 디렉토리를 입력하십시오", - "699856a3cc697d8afcfd04dcd2f0729a": "지정된 디렉토리는 현재 디렉토리와 동일합니다.", - "103422cd692bcaf56a7367075caf2274": "지정된 디렉토리는 현재 디렉토리와 동일한 디스크에 분할되어 있으므로 데이터 마이그레이션이 필요하지 않습니다.", - "bcbd9605d3b8753bb8afbc765b293e01": "수정 및 데이터 마이그레이션 작업이 시작되었습니다", - "967a57ad58881afe2c5da6cf0d7fce8c": "IP 주소와 크롤러 이름을 입력하십시오", - "62b73e6c2a169296e73edf8a4d1e02f0": "올바른 IP 주소를 입력하십시오", - "0e1a26f6137c04f0f80956210069e46d": "올바른 크롤러 이름을 입력하십시오", - "fe8d50ca26f2e864d2bf4a932801bb85": "예상치 못한 오류, 플러그인을 수정하십시오", - "21aa998a1dee8774bc88ce2a070bf4de": "IP 주소를 입력하십시오", - "2e0c672edc06ef05e44de98ac1b7a47d": "삭제가 성공적입니다", - "0f9d9b728fba6427b5ff4da49aee1738": "거미가 잘못 선택되었습니다!", - "e48c86e701ddba3ab084d5457aa58714": "IP는 비어있을 수 없습니다!", - "3bdb147b7a040582220aa7f1ce2af19b": "IP 형식이 잘못되었습니다!", - "b60597b6a9525341fa5d4d441084658d": "IP 주소의 해상도 기록은 쿼리되지 않았습니다", - "86e9360dac1c5eece29f32c9aba8011d": "저장은 성공적이었습니다", - "e5320166e7623b6a39f9a7af7c20c787": "다른 웹 사이트 매개 변수 오류를 지정합니다", - "c21fbb62edf94306d2e73365e6e7d637": "다른 웹 사이트를 지정하는 매개 변수는 비어있을 수 없습니다", - "c7fae0c9886cac3924fe5e459e171ab1": "삭제가 실패했습니다", - "9a84d2910d3d36b78d7060f1c77e27f6": "사이트 이름이 지정되지 않았습니다", - "0987458a95b8bb7d6cdf9fa0630b6407": "현재 서버는 nginx가 아니며 사용자 정의 컬렉션을 지원하지 않습니다.", - "b925dfe3295278bd81a85bded66da01d": "상태 코드는 잘못된 형식입니다", - "2a8793bbb8bc38a7df9d8c796648526a": "사이트 이름이 선택되지 않았습니다", - "6878600890a41b84c145423618ea2431": "웹 사이트 정보가 발견되지 않았습니다", - "eff712873c55654bf48eaf421a184e73": "사용자 정의 컬렉션 이름이 입력되지 않았습니다", - "116208583eac10a8769774a6eaaff926": "획득 유형이 잘못되었습니다", - "fff3d7679cb121a30e68a104b58c934e": "수집 내용이 입력되지 않았습니다", - "75db42595fc9aee34df76df808712f92": "사용자 정의 수집 이름은 특수 문자를 포함 할 수 없습니다 ({})", - "9667904e74175dfde9824cb8cd099ce7": "헤더 콘텐츠는 $ http_로 시작해야합니다.", - "4c61d0ee460aa25eb6b5c413c46c9236": "신체 유형의 수집 내용에는 [$ + nginx log 변수]가 포함되어야합니다.", - "c03680a7ae35b7ce5b62f67b854d3b06": "수집 내용에는 [$ + nginx log 변수]가 포함되어야합니다.", - "d621342512cf7910a6dc4e7d736bcc63": "컬렉션 콘텐츠에는 특수 문자가 포함될 수 없습니다.", - "b4704dc559a05c5721c095b97c4dbbc0": "사용자 정의 수집 이름이 복제되었습니다", - "6594b670e8bd06e352f112c1bf194fc1": "사용자 정의 수집 컨텐츠가 복제됩니다", - "a531c58ef7fefbbbd79becda53ede191": "사용자 정의 수집 이름은 지정되지 않았습니다", - "88c0c3ae4ef97b6069a35672b2caa05c": "신체 유형의 수집 내용에는 [$ + nginx log 변수]가 포함되어야합니다.", - "41353000c0d351db90c9eec095bae879": "이미 명명 된 중복 컬렉션이 있습니다 : {}", - "ce78b7a225f05ece35ed7adc68b08a88": "수정하려는 획득 구성은 찾을 수 없었습니다", - "521df7df29b44fcee614de96cecca61c": "삭제가 성공적입니다", - "3b0ccb5c759b0941d50e331b22013560": "지원되지 않는 확장 : {}", - "7ea48870539b84996d1b1691c22823a7": "수정 된 데이터 형식이 잘못되었습니다", - "bc64045195c8ed198a69772b3a204ef2": "수정할 데이터는 지정되지 않았습니다", - "bb02871a5e118841b95b69c5bff55baf": "블랙리스트는 잘못된 형식입니다", - "1aac00a8c681100fd27b287c0b0516f1": "빌드 구성 형식이 잘못 구문 분석됩니다", - "f6df35a69157ae1fca6415b043485334": "작업 ID가 지정되지 않았습니다", - "524a477cee9485a5a80a860e2bc5b5d5": "작업 ID가 잘못되었습니다", - "4b5d95ed20303e337aec42486a0fb3fd": "현재 웹 사이트는 쿼리되지 않았습니다", - "19e777b7c8cdc1ce56ad2f4fe735b2b7": "현재 웹 사이트는 실행중인 디렉토리를 쿼리하지 않습니다", - "45484ac5ec748cf3362d425ed7142b75": "규칙은 비어있을 수 없습니다", - "b36196750a032a791ecc8035853dc648": "규칙 이름은 비어있을 수 없습니다", - "cfa7bc3b484b8068e78bc6f55a2aaeaf": "규칙이 지정되지 않았습니다", - "835365605f9e08c44c0b7f65a422d059": "날짜 매개 변수가 잘못되었습니다", - "4fa3e528186292138b224a0a1d46ec59": "웹 사이트 이름이 잘못되었습니다", - "3769ee974734f97166d6bce6b96e9b4e": "데이터 오류", - "daddfa03b4ea762e009a36ce970b2b59": "Baidu 계정이 설정되어 있지 않습니다", - "0379d9c081b6fd9ec2fd86e8672a4e72": "데이터를 얻지 못하면 로그인 정보가 만료되었으며 다시 로그인 할 수 있습니다.", - "8057e57596c33acf04619825d625a483": "업데이트가 성공적이었습니다", - "3149165696693c4f6fef18928261a50f": "360 계정 설정이 없습니다", "74a7684631b29d814a52e3401576411a": "시간 형식이 잘못되었습니다", "f146f571f352f376dda16114593afd32": "이 폴더의 PHP 파일이 아닙니다", "a5ef7f95136c8e93b70c99cdc25d3b1b": "규칙이 비어 있거나 규칙 파일이 잘못되었습니다.", @@ -2769,7 +2921,6 @@ "e200e571a58c37376c8498c2dc506c95": "[param] 유형이 잘못되었고 JSON 형식이 필요합니다", "96ed9027cae5703401727a3d07764133": "현재 URI는 존재하지 않습니다", "466767592170f74d16bcac3034109b33": "경로 인수는 통과되어야합니다", - "d81f83ae44da0682974272b976e8e550": "성공적인 회복", "c2d2481eafb29f7e1525c6c63441359e": "웹 사이트 이름을 전달하십시오", "4950f82b4231ebbfa780bcf4eec4c545": "올바른 IP 주소를 입력하십시오!", "abd5af540ed5a858d02b03846d94c1f4": "불가피한!", @@ -2862,7 +3013,6 @@ "215a4c6687559aa75d554670e06f3694": "사용자는 10,000보다 클 수 없습니다", "902ee0e2b591f9872a41c319c402e0b9": "텍스트 길이는 200보다 클 수 없습니다", "2307dba1bc155ca6f1a5bbf21dc4a258": "의사 정적에는 [! -e $ request_filename] 지침이 포함되어 있으며,이 함수를 사용하기 전에 제거해야합니다!", - "fa5e4af74d3d68ba371e6dcf84595c3d": "웹 사이트는 존재하지 않습니다", "db8b3ac7a5408e3bc0d103bb9b071c7b": "매개 변수가 올바르지 않고 데이터 매개 변수가 누락되었습니다", "a0318cc60ff3297d4bef0399dc89fa8d": "매개 변수가 잘못되었고 데이터 매개 변수는 JSON 형식이 아닙니다.", "8b682d8c8139c2ea686c7a87a03ba292": "매개 변수가 올바르지 않고 이름 매개 변수가 누락되었습니다", @@ -2900,6 +3050,12 @@ "50f223163c6f8e9f6b46d66165252cab": "셧다운 성공!", "02eef33534a6f8b3c95fc65e4f98bea9": "불완전한 정보", "2f45c6e0ccf998c7d31b3764e7da3751": "노트 이름은 15 자 미만일 수 없습니다", + "6e3ce0906145a9641111ebbf7735f145": "Telegram은 {}을 보내지 못했습니다.", + "27285cc132e6c145a142ae2dff054ace": "참고 이름은 15자를 초과 할 수 없습니다", + "b136ab8957d5ede7e3747fcc927a49aa": "매개 변수 형식 오류", + "4ccc991965b1b5bbe3efd6b65a1cd6fb": "신체 유형은 JSON, Form Data 또는 NULL이어야합니다", + "b0b017688b107601f2b3439381c4c61b": "전송 메소드가 올바르지 않습니다", + "4f4979589df1b84ac44fc64a92e2b3f3": "SSL 옵션이 잘못되었는지 확인하십시오", "85284ecbde15ff997e89e6e8f07e399b": "WeChat 정보는 올바르게 구성되지 않습니다", "3fb32283f52bea8068006817c5b9b95b": "결합은 성공적입니다", "8acd58125d3f7cc181a71926ef5c8a4b": "클라우드에 링크하지 못했습니다", @@ -2915,14 +3071,14 @@ "2783bb2e5b99dce08138bf58d0880603": "해당 발신자를 찾을 수 없습니다", "b5a30e6f46753c06ada44d6bbd757599": "성공적으로 삭제", "81550843cd0a2d7e046cb23a868f8e8e": "전송은 성공적이었습니다", - "6e3ce0906145a9641111ebbf7735f145": "Telegram은 {}을 보내지 못했습니다.", - "27285cc132e6c145a142ae2dff054ace": "참고 이름은 15자를 초과 할 수 없습니다", - "b136ab8957d5ede7e3747fcc927a49aa": "매개 변수 형식 오류", - "4ccc991965b1b5bbe3efd6b65a1cd6fb": "신체 유형은 JSON, Form Data 또는 NULL이어야합니다", - "b0b017688b107601f2b3439381c4c61b": "전송 메소드가 올바르지 않습니다", - "4f4979589df1b84ac44fc64a92e2b3f3": "SSL 옵션이 잘못되었는지 확인하십시오", "bb8f2701fa6b013fe8aa74659ceda547": "작업 데이터를 읽을 수 없습니다.", "b12cc83d0b14fe739a930fd84d10ae8d": "작업은 발견되지 않았습니다.", + "88b5bf7d36b1f1a8f4c4c010b22e849a": "컨테이너 및 앱 유형만 지원됩니다.", + "e8335bb4286f52074f6a6b7a0c3c7bf8": "{}을 적용하기 위한 버전 {}이(가) 존재하지 않습니다.", + "a5c1e82e4d1142b8c7e0bc1499446181": "Git 주소가 설정되지 않았습니다.", + "4e24bbe093c9dfb90092a0f4e71733dc": "지점 이름이 설정되지 않았습니다.", + "b3c02fc58b92f549f529992c8a696a66": "zip 파일 경로가 설정되지 않았습니다.", + "eecf07d92b354565df633b06401206a1": "파일 경로를 선택해주세요", "eb9eb53b7ac221c64f6f32c547317d22": "경로 매개 변수는 비어있을 수 없습니다", "0444d0f0434a4d910eb7a06039e39066": "[{}] 파일이 존재하지 않습니다", "f4c3904df3aa98458b5f99bd5519e409": "{} 완료,이 창을 닫는 로그 예외가 없다면! \\ r \\ n", @@ -2966,6 +3122,9 @@ "1b6d9f6dc5480584f937681a5d9f0a80": "캐시 정보를 찾을 수 없습니다", "f013f8c1d30136733e3d476dbe3a238e": "업데이트 된 구성이 성공적입니다", "3d928c01114361a57fb24c42d9a1ee2d": "구성 업데이트 실패 : {}", + "795d1693702d930f7fc18edfb0f1c0d3": "MCP 서버 구성이 잘못되었습니다.", + "a16d1dbe265c57e0417ae396c3c30043": "서비스를 찾을 수 없습니다. [{}]", + "8987b626b78029fdd11fe51351195830": "[{}] 이미지를 찾을 수 없습니다.", "092ca03f32caffd34d3f0532836283b7": "DeepSeek_R1의 스크립트 파일은 찾을 수 없습니다", "17ee8c2efafe32a5d204e039e971aee4": "1550MB 미만의 메모리", "d3eb7a147ac81b2f691a6e7ad42cc83c": "처리가 필요하지 않습니다", @@ -2996,7 +3155,6 @@ "2140e826934629d9a43ba2bf4f2b1774": "종속_app 매개 변수를 전달하십시오!", "2ab5fb77429e37f42b87e205d6e51728": "Service_name 매개 변수를 전달하십시오!", "9d6521661f6a152c21bf6d4305d5c9b3": "App_name 매개 변수를 전달하십시오!", - "e880101cd795726a7c8e2c2f4033f9dc": "백업이 실패했습니다!", "e020f13e1a68b8030d7038cea78b3aaa": "백업 성공!", "c4dcfb467d82071a7a4cbbe0b5036f9e": "아직 백업 데이터가 없습니다!", "76b5c77ee72a9ffa0f4b3a8e0101ad41": "file_name 매개 변수를 전달하십시오!", @@ -3018,6 +3176,13 @@ "7b016fb85c09d39e89eb1875e590a6ac": "응용 프로그램 범주를 얻지 못하면 오른쪽 상단에서 [응용 프로그램 목록 업데이트]를 클릭하십시오.", "20552a0ed8eef740c631cc049fd940b9": "응용 프로그램 유형 오류, 전달하십시오 : {}!", "c0963001ffeaec423d1be82d464d6a1a": "ID/Service_name 매개 변수를 전달하십시오!", + "4de8e45b499205551f4a09fd074e5246": "매개변수가 누락되었습니다.ID", + "02e85c0a0fa01fabdb5426af13e87853": "매개변수가 누락되었습니다.앱 이름", + "d910ee67a0875a17b6e663f9e19369a4": "이 앱 링크는 지원되지 않습니다!", + "32d030406e8d755a59468a50bd385b22": "컨테이너를 가져오지 못했습니다.", + "c8e0f1ed3c37b015ee446297591d172f": "매개변수가 누락되었습니다.앱_이름", + "dad9445733497150b5f2cd29a5aed506": "앱 이름이 합법적이지 않습니다. 불법 문자를 포함하지 마세요!", + "a04daa98db618d6c2a19aeed5af39448": "지정된 앱에 대한 docker-compose.yml 파일을 찾을 수 없습니다!", "75d0c803cc4694e08d99d958ef762fcc": "도메인 이름은 비어있을 수 없습니다!", "676c8a7788ad0ddcb68d53fc7d960679": "Baota Net Network를 생성하지 못했습니다.err : {}", "23d07f1e537a8809b268a60a6881f44c": "포트 범위 오류, 0-65535 사이의 포트를 입력하십시오!", @@ -3045,11 +3210,30 @@ "2025d918448073508d336b72a7a28093": "데이터베이스가 이미 존재합니다!", "4a8f0a2ac362e62ba4e76f52b5791f0e": "창조가 성공적입니다!", "76f3f12040afb77724966e2af67ab403": "데이터베이스 매개 변수를 전달하십시오!", + "74fd3ba5b92aa59e471161d2a585a93c": "model_name 매개변수는 null일 수 없습니다.", + "760a1226f2ba701b04963681ab97d575": "model_version 매개변수는 null일 수 없습니다.", + "2a88d88050ddcc0e28f0da4576be2232": "service_name 매개변수는 null일 수 없습니다.", + "fd0f83d70400b1dd9f6ae9c093638411": "컨테이너 정보를 가져오지 못했습니다. docker-compose 실행이 예외입니다!", + "2aec223006d3894d3c1a48bca642c141": "모델을 다운로드하는 중입니다. 나중에 로그를 확인하세요.", + "d4503f6b7fe9af6267e7ff25b7b8d3fe": "모델 삭제 실패, docker-compose 실행 예외!", + "d75a01e0d2c0cb8dad89216653024903": "모델이 삭제되었습니다.", "bf483666a33d372f729985363d512d74": "기본 도메인 이름은 일반적인 DN이 될 수 없습니다", "3c4b1f6d2d9ef27ace95adceea599588": "추가가 실패했고 데이터를 사이트 데이터베이스에 삽입 할 수 없습니다.", "20825a634340a0b49b1a5e7f2fe47ea3": "추가 실패 및 Docker 웹 사이트 데이터베이스에 데이터를 삽입 할 수 없습니다.", "653f81d3e5516550e6d5e35abcdbe97c": "[{}]는 패널의 역 생성이며 [/]의 HTTP 인증을 삭제할 수 없습니다!", "d4b66e7369e5077a3c31ad79629f0ab9": "삭제 해야하는 웹 사이트 목록을 전달하십시오!", + "f0501638237d7e8f934ec55ac3ffb20f": "설치에 실패하면 네트워크를 확인하거나 수동으로 git을 설치하세요.", + "608113c9694987fa65b22ecb164aee59": "환경이 성공적으로 설치되었습니다.", + "3f68fc9dcbe1e4581f2e5aae5adec9f8": "apphub 디렉터리가 존재하지 않습니다.", + "7ec67f9826a24ca4a930a6e168ee9611": "해결이 성공했습니다", + "af2c4fa868813e47b80859a0b36e00f4": "GIT 정보가 성공적으로 구성되었습니다.", + "2b038e106d4ca5c11b787e16c73253ef": "당신이 돈", + "12d1b3062be6f8bb374511323c349ed7": "먼저 Git 정보를 설정해주세요.", + "798cd5a257af539ecfe6bb44f45ee788": "Git에서 가져오기 실패", + "8170f5d37a617dcbf16fe8dd414073dc": "Git에서 가져오기 성공", + "6e40e5a8ad741ca4bd714fa52ef32333": "파일 형식이 잘못되었습니다. zip 또는 gz 파일을 선택하세요.", + "c4996991c50032c9b296c11da356acb2": "가져오기 실패:{}", + "8ad9bdaced3b1cd99f1fa9d32c9a7eca": "가져오기 성공", "e48121dc556643fd31b26c190eedbad3": "Nginx 만 지원됩니다. 사용하기 전에 Nginx를 설치하십시오!", "135f7ef9aeb50bf7b988416b0a679dff": "도메인 이름은 비어있을 수 없습니다. 하나 이상의 도메인 이름을 입력하십시오!", "c82b42d921224a0699f854c28c2450d2": "프록시 대상은 비어있을 수 없습니다!", @@ -3057,6 +3241,7 @@ "f68c204aa9e12e0513aa7a4569449cfe": "유닉스 파일은 다음으로 끝나야합니다./tmp/flash.app와 같은 잠금.잠그다!", "5c23a6c025d7071599c70575dc858f26": "프록시 대상이 존재하지 않습니다!", "2fba0b6c1602ec254b1bc06bacba575d": "프록시 대상은 http : // 또는 https : //부터 시작해야합니다.", + "98abf95a1fa63ca8f31cc49eee5f3958": "Proxy_path는 루트 디렉터리이므로 프록시 경로 표시를 닫을 수 없습니다!", "772c6f93b20b52d5c998f4b58dbcf8f7": "포트 [{}]는 불법입니다!", "f76df64b8f66e4f6050adf633c91c7fb": "웹 사이트 [{}]는 이미 존재합니다. 다시 추가하지 마십시오!", "6599f1c3d3d3760768d9023827e8edf0": "리버스 프록시 프로젝트가 성공적으로 추가되었습니다!", @@ -3088,7 +3273,6 @@ "d591e0043cbf6d14950a46178a537626": "프록시 대상은 http : // 또는 https : //부터 시작해야합니다.", "247d1a7dc144bd12d4c9f8797387babe": "【{} {이미 리버스 프록시에 존재하며 다시 추가 할 수 없습니다!", "36a7891857288c55bc5d87c470212812": "이드는 비어있을 수 없습니다!", - "62dc2bbb0528fe87522c74b113883a48": "지정된 사이트가 존재하지 않습니다!", "c8a68e4ff275e827bbbe348eddecbf2b": "리버스 프록시 프로젝트가 성공적으로 삭제되었습니다!", "88f9a8852b822982a9a3e839813d91bb": "도메인은 비어있을 수 없습니다!", "85fb0c03511da1e4d308fd135dec4486": "도메인 이름에는 쉼표가 포함될 수 없습니다!", @@ -3136,5 +3320,390 @@ "e00f42f6421b797439a64e3ef24c132a": "site_name 不能为空!", "a6fd23485ca8abe4ab7d0580d28c4bf9": "정리 성공!", "61e795d02f4452904f2574d936c571e6": "정리 실패, 캐시 디렉토리가 존재하지 않습니다!", - "3c99c479e3c65eac24272afc13cec604": "HTTPS 포트 [{}]는 불법입니다!" + "3c99c479e3c65eac24272afc13cec604": "HTTPS 포트 [{}]는 불법입니다!", + "b9629c2dea839825c2f1916b44a154a1": "Nginx 구성 파일 오류, Inventory!:{}", + "32b169f72b293ef80d35435e9894f8e2": "초기화 중", + "58ba018dcbe1c47ea0a293fdcee21e63": "패널 설치", + "67355337eaf300b91de09a8083c93ebf": "로컬 백업", + "99e8ebaa5ad2fafe4e141574f6b4a73f": "파일 업로드", + "bd6d996cdca2252e9b99253b2a587287": "데이터 복원", + "03a2bd12e8b51af547a08985d4882d6d": "마이그레이션 완료", + "0fd957e5b2d9c535c344e9a8f86a225c": "작업 상태를 읽지 못했습니다: {}", + "181f2da22cdbf536f67e46452108d95d": "작업 상태를 저장하지 못했습니다: {}", + "4439b17c5e0977e0c73c643cea950424": "전역 작업 레코드를 저장하지 못했습니다: {}", + "74c6e9c56a9d836f2dac86fe8e0770e3": "현재 실행 중인 작업 ID를 읽을 수 없습니다.", + "62688aeae1c92fc7d92caaa83f22a411": "작업 상태를 성공적으로 검색했습니다.", + "087b165a5f0bd5a04f2ce4be7dca14dd": "실행 중인 작업 없음", + "37a5c6e23237ddff7185d375c34eed60": "작업 {}이(가) 존재하지 않습니다.", + "f613fc3fb0aee3affafcae3477d42bf8": "작업이 이미 실행 중입니다. 작업 ID: {}", + "367b4a21be07204266d306508cc92dc7": "마이그레이션 작업 초기화 중", + "793c8358adb487f79f85acfdc44d54bb": "마이그레이션 작업 생성: {} -> {}", + "e597529fcdfa1dab69eadaf1c44088ba": "마이그레이션 작업이 성공적으로 생성되었습니다.", + "c304dcebe892b468725402a369b3dd46": "서버 {}에 연결 중:{}", + "d2f3c14129fe059cf6d99f1583abc23e": "[+] 서버 {}에 성공적으로 연결되었습니다.", + "ae3c4e96fa1411ea25c05ce9a18ae2ae": "서버 {}에 성공적으로 연결되었습니다.", + "c7203791b356c5f3faf5d8c43d54a575": "인증 실패: 잘못된 사용자 이름 또는 비밀번호", + "10adeeeb866978b5ae637ae2bc13fb96": "SSH 연결 예외: {}", + "1e36faff765dbbbe631f424983a21783": "네트워크 연결 오류: {}", + "f9d5c96265bf9a99b163f5adf699cde9": "서버에 연결하지 못했습니다: {}", + "cd4dc264f41eda817374af0bddcea259": "RSA 키를 사용하여 연결", + "5e1b5e437b38bfb11b1e4853f8838d3f": "RSA 키를 로드하지 못했습니다: {}", + "fb947607c0d2814eed45d41a9e3227f1": "DSA 키를 사용하여 연결", + "1cc35e618813746cb1bd4658f7ac61a0": "DSA 키를 로드하지 못했습니다: {}", + "e9ba4ba778d8a0b4423c09ff6cb32726": "ECDSA 키를 사용하여 연결", + "f618338d0d56f440d7fb1b59d8add72c": "ECDSA 키를 로드하지 못했습니다: {}", + "f579ce14b1e98ae9ad4d392279730d9a": "{} 키를 사용하여 연결", + "696797724fc3db3f012761759f720c23": "{} 키를 로드하지 못했습니다: {}", + "fa4e18c6d3b0c0fa6a5ac1303dda02a7": "키를 인식하거나 로드할 수 없습니다. 키 파일 형식이 올바른지 확인하세요.", + "369709628dacb54949b2c711acd93968": "[*] 서버에 다시 연결을 시도하는 중입니다({}/{} 시도)...", + "88aefbc5392deac3ab63223d6d82b66b": "[!] 서버에 다시 연결하지 못했습니다. 최대 재시도 횟수에 도달했습니다({}).", + "908300abff5dfdf254726c2193f3e550": "서버에 다시 연결하지 못했습니다. 최대 재시도 횟수에 도달했습니다({}).", + "5842d2e8785c14b1e357c4ee1dd1a0c6": "[+] 서버 {}에서 연결이 끊어졌습니다.", + "7463b0247d5614df91270544c6b944bb": "[!] SSH 연결이 설정되지 않았습니다.", + "43234c4b446ff41810dcf807d317cba7": "[*] 실행 명령: {}", + "db4d271e5cb8fe3192ed73bd624a86fe": "[+] 출력:", + "c519185a1f47d37b21866e5f05928dc8": "[!] 오류:", + "6a2909a7dbeca5d8c85843ecd4cd3fae": "[!] 명령을 실행하는 동안 SSH 연결이 끊어졌습니다: {}", + "88783238ef5d081aade9e63160d329fb": "[*] 성공적으로 다시 연결되었습니다. 명령을 다시 시도하는 중입니다...", + "8692bb08477b83615b1ae995552e2c92": "[*] 서버 OS 유형을 감지하는 중...", + "95adf53ab7c91ed98c77d3c0e38a2a1a": "[+] OS 유형: {}", + "2ab043e41d8fd10931cfa912b4b11bf8": "[!] OS 유형을 확인할 수 없습니다", + "2d23313d6e3e201771154cf99d5dab34": "컬 또는 wget 설치에 실패했습니다. 수동으로 설치하세요.", + "b44992b4430f7759108e5242176b7871": "[+] 컬 또는 wget이 설치되었습니다.", + "4ba07005cef8f98a0625a7d1eb0a142e": "컬이나 wget이 설치되어 있습니다", + "e3a56811a35322959c535d38d2e91f7e": "[!] 컬이나 wget이 설치되지 않았습니다. 설치하려고 합니다...", + "613a8be93fcd44002e549e0767c85a86": "OS 유형을 감지할 수 없습니다. 컬 또는 wget을 수동으로 설치하십시오.", + "8a4d20948ccc8034e3118af3bb683da3": "aapanel 설치 시작", + "df97b5d4f31c5cd4a3611774abb6de52": "[*] aapanel 설치를 시작합니다...", + "d91a58f92edb4b30de7e5399908922da": "[*] 다음 명령을 사용하여 aapanel 설치: {}", + "f20af8613aed0194f191d660977de57c": "설치 완료", + "4357633f73240ceb1b14d13877a90ac2": "aapanel이 성공적으로 설치되었습니다. 백업 작업을 시작합니다...", + "f109f7ce6f98f5a3cbf2d273c5749911": "[+] 주소: http://{}:{}{}", + "79fca63f99a824fc4015d93604433ea1": "aapanel 설치 실패", + "b1508aec34af599979d919e20b64e385": "설치 진행률: {}", + "7b6725a19c46bc6d47e5a49c5764991f": "[+] 사용자 이름: {}", + "cd3d4cf5a75fd5f9467f6d0f196dbec8": "[+] 비밀번호: {}", + "6703def4d1bfb870f64ca461a7bffc0c": "[*] 백업 디렉터리 생성 중...", + "c550206bc8daea4b287573ee31f839de": "[+] 백업 디렉터리 {}가 생성됨", + "9e3f708636e9ea820d608629fdf47c65": "[!] 백업 디렉터리 {}을(를) 생성하지 못했습니다.", + "9f22d9cb59270cf0f6382a66a63ed8cd": "원격 파일 크기를 가져오지 못했습니다: {}", + "ff490ab3be22afd2f2a06842935eedd3": "백업 파일 {}이(가) 존재하지 않습니다.", + "e69d7c21f42d046b365c56045ffca873": "서버에 백업 파일 {} 업로드 시작", + "df6ecb94c7a5f06b78d0bde168e769e9": "[*] 백업 파일 {}을(를) 서버에 업로드하는 중입니다...", + "217c9c3fec268ff4d6c35bd4d5d564ea": "백업 디렉터리를 생성하지 못했습니다.", + "2942f90ee3b191c0b98add719760e356": "[*] 파일 크기: {:.2f}MB", + "08b57d594c99a8339461fe78ebf95f1a": "파일 업로드 준비 중, 크기: {:.2f}MB", + "2f24607a7361d721459e3a12584fd340": "파일이 이미 완전히 업로드되었습니다. 업로드 단계를 건너뛰는 중입니다.", + "4d57fe7dc3462ad55cc9bb1623a3eb5e": "[*] 불완전한 업로드 파일이 감지되었습니다. 재개하는 중입니다...", + "9c30f21dd1175d2e9b7503e873a52b2f": "[*] 업로드됨: {:.2f}% ({:.2f}MB / {:.2f}MB)", + "04e05f53e1a18a781dbabae6cdd0e495": "불완전한 업로드 파일이 감지되었습니다. {:.2f}MB부터 재개됩니다.", + "426e1c0eadfad630c5433af2757cee8f": "[*] 새로운 업로드를 시작합니다...", + "61eb03fffeb48e199890a5a8a24a5dc9": "새 업로드 시작 중", + "148b2912de8b29f47dc234983554ea2b": "\\r[*] 업로드 진행률: {:.2f}% - {:.2f}KB/s - 남은 시간: {}", + "470e645fe1f07b6d4e77fc7b16b2a9a0": "파일 크기 확인 통과: {:.2f}MB", + "40070e1f0867f97db0fa33039fae2063": "파일이 성공적으로 업로드되었습니다.", + "95dd52c0ce48e72f2021dee1a7a86433": "파일 크기 불일치: 로컬 {:.2f}MB, 원격 {:.2f}MB", + "f7dac1a705d6bd05b3a42086923cf932": "업로드가 중단되었습니다: {}", + "554472ae3f1db37c67fe53e4a2fb53cd": "[*] 중단점 {:.2f}MB에서 재개를 시도합니다({}/{} 시도)...", + "1e6aeb0dc8e2567bdec31246c27233a2": "파일 업로드에 실패했습니다. 최대 재시도 횟수에 도달했습니다.", + "31c53955195484e892d36d1815e2e5cd": "[*] 백업 파일 {} 추출을 시작하는 중...", + "21ec696ab5bc206eac1cf62268824cf0": "[!] 백업 파일 {}이(가) 존재하지 않습니다.", + "e344a18f13f2b196f3b56938c824dd5f": "[!] 백업 파일 이름에서 타임스탬프를 추출할 수 없습니다.", + "d4a81ed03254ca37166d84ccb7de0bd6": "[!] 백업 파일 추출 실패", + "0838e64585e87c91bdfa34890445346e": "[+] 백업 파일이 성공적으로 추출되었습니다. 디렉터리: {}", + "0fddb4bae41a7fc9e2de8896d8cb819f": "백업 복원 시작(타임스탬프: {})", + "5a275e6386d2d3c647f6ccecb422debc": "[*] 백업 복원 시작 중(타임스탬프: {})...", + "e9b7b10566a85a5356096a630d64d2d7": "[*] aapanel 서비스 시작을 기다리는 중...", + "8d7b4f7247dec431d103af1ce34d0233": "복원 모듈이 존재하지 않습니다: {}", + "304e687ee7c78fdae6e70226f61d9708": "추가 복원 작업 실행 중...", + "ac3f9da9a646fe10c989e74b42fe5e8e": "[*] 복원 작업을 실행하는 중...", + "ac6fa0596fbb508fe61e44848548b50c": "복원 명령을 실행하지 못했습니다.", + "846cdc02545d18e4b5308d076aa93e95": "백업이 성공적으로 복원되었습니다.", + "062ca961d059ebd358098ffdb12f42bb": "백업 복원에 실패했습니다. 로그를 확인하세요.", + "f857f6dc6a146a3b125ea3253052ca43": "마이그레이션 작업 시작", + "53779b59d2ae1ff96f4afdfa6bbc6c7f": "컬이나 wget이 설치되어 있는지 확인하세요.", + "39679b63dca413a83cf5b664d46c929b": "컬 또는 wget 검사가 통과되었습니다.", + "0de6a624fa64af38f9a880430e72607e": "aapanel 설치 준비", + "28dbda7cf25735198d7695702b18aad5": "aapanel 설치 중... 약 5분 소요....", + "7a58e7034a9db769af197c85beccafd5": "aapanel 설치가 완료되었습니다. 백업 작업을 시작하는 중입니다...", + "a850af0d3bf3586319178228af5698bf": "이 머신에서 백업 작업 실행 시작", + "28ec7aad1cd6afdbbc35a6aeaa95761a": "로컬 백업이 완료되기를 기다리는 중", + "82550a0ece235f0d0b363135e8d94d28": "백업 작업이 취소되거나 실패했습니다.", + "c8f2865e1e43bb2fd88a0e16f3cd4c17": "백업 작업 시간이 초과되어 지정된 시간 내에 완료되지 않았습니다.", + "4bb768be41853a0aed9f56d5907be1bd": "백업 타임스탬프를 얻었습니다: {}", + "c129e18a625645767772504cf77e279a": "백업 타임스탬프를 읽지 못했습니다.", + "39869251ca57148d747cfd6ee60bf604": "백업 타임스탬프 파일이 존재하지 않습니다.", + "60f1d8c19f5fbb046deac4aab745f63c": "백업 파일이 존재하지 않습니다: {}", + "d67c60b6be8ebfd9f73816a7e8e4abfe": "백업 파일 경로를 읽지 못했습니다.", + "9e6caab47781582f556a81245571d8a7": "로컬 백업 완료: {}", + "b4df9a8cca277b49933dce7c8be7ab20": "로컬 백업 완료", + "6c97fd171b87d3f954040d4dea833cb9": "백업 파일 업로드 준비 중", + "6384458c2647bf7e1af9d942aab00d6d": "백업 파일 업로드 준비 중: {}", + "e2fdcbc1d4e8b1fa77a161c4448a4bf6": "migration_backup_info.json 파일 업로드 준비 중", + "6533c064fee3726a0f1caf89a423fd3b": "migration_backup_info.json 파일을 업로드하는 동안 연결이 끊겼습니다.", + "ffa61675a37203858ec712cc635fcbdb": "migration_backup_info.json 파일이 성공적으로 업로드되었습니다.", + "d192d35fb79e54273bedf84f9ee3d772": "migration_backup_info.json 파일 업로드 실패: {}", + "fdf17802146b46b291164d7c933950c1": "백업 파일이 성공적으로 업로드되었습니다.", + "97dc827b342454de3a5f9416ee1e513b": "백업 파일 {} 추출 준비 중", + "67c40d3544174eb6d6fa63dccaa6bf6e": "복원 백업 작업 추가 준비 중", + "7ec7fd83e38b6d53374f37bd32a3da09": "백업 복원 준비 중(타임스탬프: {})", + "7fd19264d09d2ff33f1f8b5867354fdb": "백업 및 복원 중에 예외가 발생했습니다.", + "ef05e1295515a64356e53d3c11498f25": "복원 백업 작업이 성공적으로 추가되었습니다.", + "f90b7afaee99210e74fa3bc47d4f4918": "모든 마이그레이션 작업이 완료되었습니다.", + "9e5e797901f9870ebf7a96266bc1e972": "마이그레이션 작업이 완료되었습니다.", + "dd2a8fc49fd7c92616c228c8039410c8": "마이그레이션 프로세스 중에 오류가 발생했습니다: {}", + "1a119744a8cc132d708306e1fb90543f": "[*] SSH 연결 정보를 확인하는 중...", + "ef3ae6d88f5637005f063685ad50c625": "[+] SSH 연결 확인 성공", + "66db9584d2d99eeb99a90f5f4c52d944": "SSH 연결 확인 성공", + "a0bc8a00e83b79e42010343c31924dd2": "SSH 연결 확인 실패", + "e871fe05e99da0c88a09686c3b7c88d7": "[*] aapanel 설치 중...", + "1f3ff88a0fdd87e71bf237f3805dccde": "[*] 백업 파일 업로드 중...", + "c0b860cd7155af1e642fd0c41ee29262": "백업 파일 경로가 지정되지 않았습니다.", + "fa1ab4e94bafd1f5b6ea55e3e9dc33a4": "백업 파일 추출 실패", + "d36c2f46c959ee1fb416a947f8e75a47": "백업 복원 실패", + "de6b9cefab1a252ada4463ee8f015f07": "[+] 所有操작품已完成", + "496249e9e1cd99dd54146ed6565fe3f8": "所有操작품已完成", + "20c605607dbf9d6d1d7bb62ddc792ee0": "[!] 执行过程中发生错误: {}", + "4020efc99e8c60a0e7d27a5598d501e4": "执行过程中发生错误: {}", + "55be882ba3aef502f3a93ad90bb9d613": "[*] 백업 명령을 실행하는 중...", + "1a6da8233a4a66ccc90d767967f22d35": "[+] 백업 작업이 성공적으로 추가되었습니다.", + "af3c2b419ba0779d81ac91cd3ca246b6": "[*] 백업 작업이 완료되기를 기다리는 중...", + "c8eb8110632bb540ca112819e96dc770": "[+] 백업 작업 완료: {}", + "0d1135061a5b00b63bdb12c2f3c9461f": "백업 작업이 실패하여 백업 파일이 생성되지 않았습니다.", + "f6c3d2e26255f8c185cbcd95ccf2ccfa": "[+] 백업 작업 완료(시간 초과 후 파일 감지): {}", + "637452f337bdc2991f23593124d62440": "[!] 백업 작업 시간이 초과되어 지정된 시간 내에 완료되지 않았습니다.", + "ec3a935e2442ef55924ad758e17b92cb": "포장완료", + "ffad0690fefe9ebaaf4d847a42b19f90": "백업 구성 파일이 존재하지 않습니다.", + "40379fed8ad84c0869a1b3e94f8a56fb": "백업 프로세스가 이미 실행 중입니다!", + "20bf8648c4a3ea91ad3057f9aeca5f88": "모든 데이터 압축 및 패키징 시작", + "dc72aa669e82dd5ec7cff2ed35f2762d": "모든 데이터의 압축 및 패키징이 완료되었습니다.데이터 크기: {}", + "bacf615d02bfa3c58728f62490489e9a": "백업이 완료되었습니다.백업 파일: {}", + "ad69c11076734ffc4c0532b54e6f5be3": "클라우드 저장소에 백업 파일 업로드 중...", + "c3a6378e06ff3e479a85b0f15c41cb1e": "{} 청크로 업로드 중...", + "c722636ded0be8237386a427242ff3b2": "{} 업로드 중...", + "bb914d2441ee988dcd4d616350272f10": "{}에 업로드하는 동안 오류가 발생했습니다: {}", + "8085ded0444fcde19b9ea4d365502f67": "백업 정보를 찾을 수 없습니다.", + "b02ab16f5a7d45a871789d3944a41c69": "백업이 완료되었지만 타임스탬프를 검색할 수 없습니다.", + "46f183fbf6bd1e64702d6930667cf117": "백업 완료 정보를 검색하는 중 오류 발생: {}", + "2cb88461938b0c418391af13f65a727d": "백업 프로세스가 실행 중이지만 타임스탬프를 검색할 수 없습니다.", + "269159feb2faab7515c90b9f5de791a5": "백업 구성 파일이 존재하지 않습니다: {}", + "daa55a73708f906c8cee0bb87284740c": "백업 진행 정보를 검색하는 중 오류 발생: {}", + "01ecbbb2b353cf4d915bbe1c1cd5505c": "서버 구성", + "ca3c22c9c94069053b85db0f50373639": "서버 구성 백업 중", + "b16acd08872bef5685bddff85a29f625": "데이터 패키징", + "d41c74fcc2dd04880a0285c147188bf7": "백업 데이터 준비", + "806cb06592627effa1a4073fa2f66ce2": "복원 프로세스가 이미 실행 중입니다!", + "37dfdfda0ab7a98140943484fe70a76c": "데이터 패키지 압축 풀기 시작", + "c415a70c8540eb59121587b3ab5d5cfa": "데이터 복원 시작", + "c76bac64baa6fbf5c51ec144c70d91d3": "데이터 복원 완료", + "da7f5eb715a1a1a2378ee56a5ee24bbd": "데이터 복원 실패: {}", + "ca0af2ce76c89e3bfa4bad3105c21203": "복원이 완료되었지만 복원 타임스탬프를 가져올 수 없습니다.", + "0f4f13d63e87130a24667c6bd4cb5e2e": "복원 구성 파일이 존재하지 않습니다.", + "0c5d25bf5706190b8ad0d8289a93aeba": "복원 완료 정보를 가져오는 중 오류 발생: {}", + "667a68bf7113541f218081fac58f6815": "복원 구성 파일이 존재하지 않습니다: {}", + "e7a91a4400b67b84e7cca61642b93f4d": "복원 진행 정보를 가져오는 중 오류 발생: {}", + "1b4c2c21e77ac36e4097a92dabd55bc0": "알려지지 않은 {}", + "c1173fa3bd3d44530eead89e7edeefe1": "데이터 압축해제", + "a76a19147d36f4f2d6801cf602de2718": "알 수 없는 작업", + "5ba4673aac259be67bac9db8cfc9c5b2": "데이터 복원 준비 중", + "5b43e0e228169e5df9cec81876cd3710": "오류: force 매개변수는 0 또는 1이어야 합니다.", + "4c3880bb027f159e801041b1021e88e8": "방법", + "7d3c180ded4dcc8eade80cd031ab1b5d": "자주 조작하지 마시고 잠시만 기다려주세요.", + "37b15a5d1e4fa625ea8996de5e378a84": "성공적으로 검색되었습니다", + "616e012bcc90980f6ddfd2b3c17345f8": "진행 상황을 가져오지 못했습니다.", + "9e0a136b55af822e72c8d6716d2d4bf3": "알 수 없는 유형", + "6ac0b58e56cefd76e61bc840dfad94fa": "작업이 성공적으로 중지되었습니다.", + "b808472e703dfd53fdcb59fbe89e3436": "성공적으로 실행됨", + "12b65fbe011be723b4ae981c0d42c44d": "복원 작업이 추가되었습니다.", + "741e160bb129a548e26fbad37c8f674d": "SSH 연결 테스트에 실패했습니다. IP와 포트가 올바른지 확인하세요.", + "e0867cf8c8a1935e8bd681f0ff28a612": "SSH 연결이 성공적으로 확인되었습니다.", + "f94e94b4ec479336f36fdf9fe1004b83": "내 마이그레이션 작업", + "b100f6e1c91f013adf0ca5ce6606a89d": "마이그레이션 작업이 추가되었습니다.", + "fd0099266c1971c5c40036e615d67fd4": "성공적으로 마이그레이션되었습니다.", + "87aa2e739755a6fea3a63876b5a1d48e": "성공적으로", + "d7db03701029007097b8e0cd61a983f6": "현재 마이그레이션 작업이 없습니다.", + "808781229f7b019ba6a44ea3871e3b6d": "마이그레이션 작업 실패를 읽었습니다. 나중에 다시 시도하십시오!", + "e728b6a004aa5e61efd25bf815a6e290": "백업 작업 시작 중...", + "c9d48d6a4ebe28917b5439c91faaff68": "aapanel 설치가 완료되었습니다!", + "f5e7895e7c31fedd32b520012910f960": "마이그레이션 작업", + "3a94451860f0c20374128e61e8783d26": "아파넬 설치", + "f02f38d885226197e729453ea104feac": "복원 작업", + "0ba29c6a1afacf586b03a26162c72274": "환경", + "f072f24284b47eaf8adcf88b29021618": "마이그레이션 로그가 존재하지 않습니다.", + "9166b100905c2625ba9df2524f8c2faa": "SSH 연결 테스트 실패: {}", + "3a02e4b05ad1b321e855aa6116699b6e": "이전 알림이 삭제되었습니다.", + "334afd10871f8c52a884e307d2e17ccf": "이전 기록이 삭제되었습니다.", + "2f393a2518f5668880822f47fcdb5cc0": "마이그레이션 기록이 존재하지 않습니다.", + "df4bb29cbb7fe7e3dbc82e961d5b5b53": "데이터 준비", + "2b2a2a0b0596507029dd0feb9485a216": "진행 중인 작업이 없습니다.확인해주세요", + "d4e8a75d522d3e77ae80eadd49b0865e": "원격 데이터베이스 목록이 비어 있습니다.", + "5d806f11bb91996cafe7836b27a4e770": "Redis 연결 예외!", + "1d69261c05f6ce03d2cab5528d443fa7": "데이터베이스 데이터 백업 시작", + "0cf1803cfdfda6f67d12fa7e1c4a25a7": "백업 {}원격{}데이터베이스", + "32d68be800692faddb12c5252fded05e": "{}원격 {} 데이터베이스 정보 ✓", + "0c64283397c43effb13a2cbe818ce929": "데이터베이스 데이터 백업 완료", + "2f7d7cfc04be64fa087e964d41cb26b4": "SQLite 데이터베이스 목록 복원 시작", + "a1248c409fec22277ab13a6bb433188e": "SQLite 데이터베이스 목록 백업 파일이 존재하지 않습니다. 복원을 건너뛰는 중입니다.", + "d03ebecb5f420070192de8712926151a": "SQLite 데이터베이스 목록 복원 완료", + "ad6937d61b4d6e93a13f03308c66f2eb": "Mongodb 서비스가 실행되고 있지 않습니다!", + "f60644c6526c4d9afe5b20db75fc2e5b": "데이터베이스 백업이 실패했습니다. 내보내기 디렉터리가 존재하지 않습니다!", + "161bb420493657920405937a2cf42c96": "백업 압축에 실패했습니다!", + "20a42330f9241c13c91e3e203449a8a6": "백업 도구가 부족합니다. 먼저 소프트웨어 스토어를 통해 pgsql 관리자를 설치하세요!", + "7eff7c4aeb6bfe736f8a78c0096f92c7": "먼저 관리자 비밀번호를 설정해주세요!", + "6e907b499869ab16105a7aba198e13a7": "데이터베이스 비밀번호가 비어 있습니다!먼저 데이터베이스 비밀번호를 설정해주세요!", + "d8a3336243e1c08e8a29c75af1eb528c": "MySQL 초기화에 성공했습니다!", + "ee9017df13cf59a9b0d6588c5e8d9e5a": "MySQL이 다시 시작됩니다. 잠시 기다려 주십시오.", + "73af95fd2322196e0d9792df4ca1f566": "MongoDB 초기화에 성공했습니다!", + "8c9718f3235e7c36c9f400bc68db1ef5": "MongoDB 설정 인증에 실패했습니다!오류: {}", + "79d1fd8783e1723ef3617be74f8f5fdd": "PostgreSQL 초기화에 성공했습니다!", + "c46866b7bc29cf9d478835bda10e43ce": "Redis 초기화에 성공했습니다!", + "4e889bbbfc5e25ebf611e5764b8a358c": "데이터베이스 복원 시작", + "c9206e74b8d32e1e0a5710c0fe322cee": "{} 데이터베이스 {} 복원 중", + "ecea29915732c5d0001ece74601f3d20": "{} 데이터베이스 {} ✓", + "b61a878149263a02fa99cc635409ee25": "{} 데이터베이스 {} ✗ ({})", + "3fa7c5a9beafa67bb44999cab5cff52c": "{} 데이터베이스를 복원하지 못했습니다. {} 이유: {}", + "e89775cca910deb5e484f631606cceb1": "데이터베이스 데이터 복구 완료", + "9750547146e22f364299bc5f561a3fb6": "원격 데이터베이스 복원 시작", + "23f2db47eb6ff16785e5a222c8657f93": "원격 데이터베이스 복원 완료", + "b17f6f187c4ecfd392c6367ec2ba6498": "{} 백업 ID가 존재하지 않아 가져오기가 종료되었습니다.", + "3e686ed1f6a0bc9ccba7a3cc119b5008": "{} 데이터베이스 ID가 존재하지 않습니다. 데이터 복구가 종료되었습니다.", + "611881e9f5d01b22a447c282aa8aca23": "MySQL 데이터베이스 {}가 이미 존재합니다.", + "ea31cbc6134300ca816c913d227b605f": "{} 데이터베이스를 생성하지 못했습니다.이유: {}", + "3fdbf50d7a2f33c3d48d4cfe69a3ba77": "데이터베이스가 이미 존재합니다. SQL 복원을 건너뛰는 중입니다.", + "556843e4a406b780b0cf83c43366a8dd": "가져오기 성공", + "af71c2c0e3813c9a77fe48507ea8e4d1": "MongoDB 데이터베이스 {}가 이미 존재합니다.", + "84b4d8c8cdd02488c0f868e97b22a3c2": "생성 성공", + "10aec3a9e9564a9851c117b259245136": "데이터베이스가 이미 존재합니다. 데이터 복원을 건너뛰는 중입니다.", + "b819d4259ca3ab0042562acea69e83e1": "PostgreSQL 데이터베이스 {}가 이미 존재합니다.", + "31b21eca2e62de420cf05e8135089114": "백업 파일이 존재하지 않습니다!", + "3eed4851380704f25eec3921befde38f": "복원 성공", + "cbea0a592d6a3c48f2418d687cf54200": "터미널 데이터 백업 시작", + "e7e06b2dd59401dcf79acf2e3124d2fb": "터미널 데이터 백업이 완료되었습니다.데이터 크기: {}", + "a273d4d4d0cf13abc1d7a4f96b8c851e": "터미널 데이터 복원 시작", + "1a15a2b43f1dd92e836a592fb180843d": "복원에 실패했습니다. 파일이 존재하지 않습니다.", + "95d831166994e434da49f3ed70b73e8e": "단말기 데이터 복구 완료", + "e3a04ee4c0a034510866948e571c7966": "방화벽 데이터 백업 시작", + "9a176a20c15e3dc096ed8bc5a05182ba": "방화벽 포트 규칙 ✓", + "ce693968cbf6e5f66af91e3dd2317d78": "방화벽 IP 규칙 ✓", + "7ebd5e6b35357be0d5079f674f68ed8f": "방화벽 전달 규칙 ✓", + "8dfa78d85bb1d152b0cafe398b27e1ae": "방화벽 지역 규칙 ✓", + "927bb2298acc2c29d1beaff4d1656371": "방화벽 데이터 백업 완료", + "d076d2dde53272dc55d47f34a465ebef": "방화벽 데이터 초기화 중", + "3e0b3a3e90cc4a1f5abbf3fd1a38c2b7": "설치되었습니다.", + "d1b0c3d7a1b5f80626ec1a2395b4f990": "방화벽 데이터 복원 시작", + "1f35b1eac1045718a64b4133a8e8829b": "방화벽 포트 규칙 복원 시작", + "a168f915263109733b87807a0db41e01": "방화벽 포트 규칙이 성공적으로 복원되었습니다. ✓", + "ce04afdfe07dead0b0fb34e6bc00b6e5": "방화벽 포트 규칙을 복원하지 못했습니다.", + "c32b29f59e8b553998c75c5d7bc44dc6": "방화벽 IP 규칙 복원 시작", + "b68673b625a1d48b3953e37bb39fcbab": "방화벽 IP 규칙이 성공적으로 복원되었습니다. ✓", + "ee0294aac018e0ab5f4e5e020f8d867c": "방화벽 IP 규칙을 복원하지 못했습니다.", + "326c03834ea4914dbb02cf04e0c0164f": "방화벽 전달 규칙 복원 시작", + "b077ba90ec76f05d0e541733e8291e3f": "방화벽 전달 규칙이 성공적으로 복원되었습니다. ✓", + "5ed68fe9a3e0530485018c0704d91035": "방화벽 전달 규칙을 복원하지 못했습니다.", + "03f3f31fd240913a083a78fc2d60f6f8": "방화벽 지역 규칙 복원 시작", + "6f9922502feac3b7e6ede129664e3e18": "방화벽 지역 규칙이 성공적으로 복원되었습니다. ✓", + "771b376bf4473fc2f1cea6958de2afeb": "방화벽 지역 규칙을 복원하지 못했습니다.", + "6331b46ffa70ff97b558022d5ae8098a": "방화벽 다시 시작 시작", + "1bb2a65f17d7e3c685f36f7ff1794338": "방화벽 재시작 완료", + "246f6edb1d9df9b3abe78fc810876c28": "방화벽 데이터 복원 실패: {}", + "2c3f740bd2d0ca6e5f9cb79ededf0a5d": "사이트 데이터 백업 시작", + "c886466d255b20be0dbde7f1b44b7f20": "{} 프로젝트 백업 중: {}", + "7ecf25c18499d663d2e636d0a99f73a3": "{} 프로젝트 {} ✓ ({})", + "0fc5eeb9bebed19653578a5df99d3e6e": "사이트 데이터 백업 완료", + "9a2e8778b2a816fedb9f83afadcc2341": "사이트 Python 종속성을 복원하는 중입니다...", + "fd16d36423b43735556724e0395e8f91": "사이트 Python 종속성 복원이 완료되었습니다.", + "bbf57ca8231bce958a3e528a08491874": "사이트 데이터베이스 삽입 실패: {}", + "389f018ba17dc25cb23a5300d8f630db": "사이트 백업 디렉터리가 존재하지 않습니다: {}", + "21654e03b247d5e25abaa0ad542883c0": "사이트 데이터 복원 시작", + "c8cecd19f4f4a680a5879f828d1c5578": "{} 프로젝트 복원 중: {}", + "35850d3654332477522ee06c756a3c85": "소스 사이트 디렉터리를 삭제하지 못했습니다: {}", + "c88b730f7a6a312159272ce532947de2": "{} 프로젝트: {} ✓", + "24ee51964e4ece856493ca28fdb075ed": "사이트 데이터 복원 완료", + "483829cb5ae13bb190eb59acdf4f3231": "메일 서버 데이터 백업 시작", + "8c7a0774ab14bae83a69b8562102fb0a": "메일서버 데이터 백업이 완료되었습니다.데이터 크기: {}", + "e8480272035737a247832288f618c270": "메일 서버 데이터 복원 시작", + "e058c7e1fd9cd1a4fd7ac7240a7765d2": "복원에 실패했습니다. 파일이 존재하지 않습니다.", + "6e6e9dcfdf7bd846ab85a4ff0e0e2f95": "메일서버 데이터 복구 완료", + "1502c42b339a3dfe20e4c95186b38dc3": "FTP 계정 정보 백업 시작", + "b5cf2f2c48fb5978825d3341759dd6d6": "{} 사용자 ✓", + "120446d8a303de2396a1bb62ba8e8755": "FTP 계정 정보를 백업하지 못했습니다: {}", + "b18010e000c073a3587a89b2931c2770": "FTP 계정정보 백업 완료", + "c9073077bfd7adb73cbe253177b08833": "{} 계정 복원 중", + "c5df3d6bec6157b48fb24bf8fe2a2add": "FTP 생성 실패: {}", + "f3f8d4ba630fa6a7de1e9f4e34bad5dc": "{} 계정 ✓", + "af4ff8fd3803d5496f74604eb1665e81": "FTP 계정 구성 복원 시작", + "2bf94c9147c8220fc83f955175216c40": "ftp: [{}] 계정이 성공적으로 복원되었습니다 ✓", + "9417f3027d6326176c986ffeee1f4491": "FTP 계정 구성을 복원하지 못했습니다: {}", + "8ed95b2c3c38acf7e9532a582f08bb86": "FTP 계정 구성 복원 완료", + "49237b104331e8724e521b2fe6fdf6d8": "플러그인 데이터 백업 시작", + "26d785a1a32377e0e0e9498f4a7da12e": "Nginx 방화벽 ✓ ({})", + "7f578816e3867140ee56ccbbc1d69f55": "웹사이트 모니터링 보고서 ✓ ({})", + "ff083aca075c6543c2999781b6677c19": "기업 변조 방지 ✓ ({})", + "2f29dad748ac1d8d50481ecbd7e05091": "시스템 강화 ✓ ({})", + "79bb9b38c599612b8b8f38ddc50f5c25": "플러그인 데이터 복원 시작", + "ee84e47223f5ce39b8bb239376db4af3": "마이그레이션된 시스템이 aapanel 사용자에게 바인딩되지 않고 Professional 버전으로 업그레이드된 경우 플러그인 복원 실패가 발생할 수 있습니다.", + "30560687e27ef30b6f1cde26359eea6c": "Nginx 방화벽 설치 시작", + "a776b4ccf7343a25223817c8597ca7cf": "Nginx 방화벽 ✓", + "d0c97e94eb5061783de7bbad8e7bd295": "Nginx 방화벽 데이터 복원 시작", + "0010c09bd9f322c3b88a89dd0b52c831": "Nginx 방화벽 데이터 ✓", + "427ad80bf462a92719fcff5c1a1be755": "Nginx 방화벽 ✗", + "29ad27f749c3f913779d432115de597f": "웹사이트 모니터링 보고서 설치 시작", + "66f3f8adc854963e94a643b706157309": "웹사이트 모니터링 보고서 ✓", + "a0dded50b067929299258b3c8fc1b0e6": "웹사이트 모니터링 보고서 데이터 복원 시작", + "bd43add14ebbd0f448c207c48e1d5ac8": "웹사이트 모니터링 보고서 데이터 ✓", + "a7b8bc831a9b36cc5127b5f8ecbec22a": "웹사이트 모니터링 보고서 ✗", + "c922c95c5f7973050d08412a26aab462": "엔터프라이즈 변조 방지 설치 시작", + "31d844f4dd95b8a71e8ddbd1b9912ae5": "기업 변조 방지 ✓", + "8fcd5da199e1e04830a686a576a2e914": "엔터프라이즈 변조 방지 데이터 복원 시작", + "941b78173e944c6737a858bada098311": "기업 변조 방지 데이터 ✓", + "50bcd3813a4b18663b0bdc29f73b8c90": "기업 변조 방지 ✗", + "cdcfb9e176572fe14bdc4c88474d8baf": "시스템 강화 설치 시작", + "4d86b9c9f554fa3d477a86d2f62aaa1b": "시스템 강화 ✓", + "5633c4d754985da6c7fab116964ac501": "시스템 강화 데이터 복원 시작", + "bda583fc184a8e079a37e169a9614e10": "시스템 강화 데이터 ✓", + "479557cf249b3145d91a94ed130c5ecb": "시스템 강화 ✗", + "746e85b89c25244ae397c06029badc9c": "플러그인 데이터 복원 완료", + "69d45b5b241dac0fa1efaf7b6966520b": "SSL 인증서 정보 백업 시작", + "835601ead78ba62b89c4b27956645362": "{} {} 인증서 파일이 존재하지 않습니다 ✗", + "025de5f8c791241d326ec4e086e9898e": "{} [{}] 인증서가 만료되었습니다 ✗", + "ecd204c03ea44719e6fa4ea25569266a": "{} {} ✓", + "aa6b67db23e9cb0b943aa6c0def92cb4": "{} {} 백업 실패: {} ✗", + "ec56d7aedc9c5242d094ebbaeda5047e": "DNS API 제공업체 정보 백업 완료", + "b561b1ca5fd89d639144a099f5fe096d": "SSL 인증서 정보 백업 완료", + "7aa422d849ba11b569187382a3a509d1": "인증서 {}에 대한 배포 사이트를 복원하는 중...", + "4573d024bbb8e1f8c8efb2582a6a01c0": "인증서 {}에 대해 복원된 배포 사이트: {}", + "baa339aa8e95d46851fd48574cb1d902": "인증서 {}에 대한 배포 사서함을 복원하는 중...", + "9307ae55fb4a7b878e377790e040eec4": "인증서 {}에 대한 배포 사서함이 복원되었습니다: {}", + "b057e2d52c20f76bf3c788eb9b4873fa": "인증서 {}의 배포 패널을 복원하는 중...", + "41596c0d36a66c44434d5882c3cfa793": "인증서 {}에 대한 배포 패널이 복원되었습니다: {}", + "6ffcb0a3e8cdf728b3e7bc45ae221e5a": "인증서 삽입에 실패했습니다. 로그를 확인하세요.", + "c8a71420e709d8a4d02914a78d9a0e06": "도메인 SSL 인증서 구성 복원 시작", + "0672a3dc402dc9657fd0a0f1580d1c12": "복원 데이터가 없습니다.", + "52f23f668fced51c3e25c781299fbff8": "백업 디렉터리 {}이(가) 존재하지 않아 SSL 인증서 정보를 복원할 수 없습니다.", + "ad93ef11d3e4238618571f517e11e80d": "{} 제목 복원 중: {}", + "c49480308ee71202cc5fff5ea96eaaed": "인증서 파일이 존재하지 않습니다", + "42db220bc931b97aecdef6b6f0362bc4": "인증서 또는 개인 키 파일이 누락되었습니다.", + "9f88b7ffec183a54f2e7e6136b4f5ac7": "SSL 인증서 정보 복원 완료", + "5e211e4fb46748c1d243b59a15645df7": "백업 예약 작업 시작", + "a9d58d413bd48f1bd7e8041b6d8ceab0": "Crontab 작업 {} ✓", + "ff0550fa0270ac20419790a51900d815": "백업 Crontab 작업 완료", + "a7609aefd5330a1384704e73dc0b4dc0": "Crontab 작업 복원 시작", + "48ed083561c2f201d9fe52f6a35ee982": "Crontab 작업 완료", + "e9ed6b2a27deb5699565f0441dc713e9": "소프트웨어 정보 백업 시작", + "e690c7866c5dbacbbc7860af5e6a3af1": "소프트웨어 정보 백업 완료", + "cabf299a6cfa5874e23582c535f301c6": "nginx 설치 시작-{}", + "33ec71107108ed89c0b526d5473526c8": "아파치 서비스 설치 시작", + "b815f2a7e299ea99d41d665c728756d9": "웹서버 설치 완료", + "70510d59e30015790f07ca53c80c5bec": "PHP-{} 설치 시작", + "2de6c0aa3c26285104f898b368bcf287": "노드 설치 시작-{}", + "7d5cf115afd8be7c2a36d03b31d1ce44": "mariadb-{} 설치 시작", + "92e77c2b107f440d6d54062228112f73": "mysql-{} 설치 시작", + "4b09abb2edd44a4510395a297a2ff155": "mongodb-{} 설치 시작", + "69fa45968c5cc7a9115bff54e70c95c1": "memcached 설치 시작-{}", + "fbabb869ff01746bd144289622b277fc": "redis 설치 시작-{}", + "da7d69765f1876fba52c21a17e8c74c6": "postgresql-{} 설치 시작", + "99782b6a478e499d45a91f9d78e1c73a": "phpmyadmin-{} 설치 시작", + "640c4e334dc9587e212d36e685059478": "FTP 설치 시작-{}", + "aecfeaaa9e3bcff1f6169598772e90c0": "패널 실행 환경 복원 시작", + "3b83e3fdb17c70ca190e263e0bd7173e": "동일한 환경이 존재하는 경우 설치를 건너뜁니다." } \ No newline at end of file diff --git a/BTPanel/languages/pt/server.json b/BTPanel/languages/pt/server.json index 13909a2c..26ba20d4 100644 --- a/BTPanel/languages/pt/server.json +++ b/BTPanel/languages/pt/server.json @@ -13,64 +13,30 @@ "dc542b3a7ffb20d7a1fc0c2b35f208d8": "Diretório não existe", "4cc4ddc196a295ee4ab82daec08f91a6": "Site não existe", "25bb121145f918572eea2ef07ff8e89c": "Erro de backup", - "4bbfcde12aa36ec375a332f51bf905d6": "Por dia", - "60956b50bb8e8c711d3adb889a70137f": "Por dia, execute a {} hora {} min", - "78748f15bb65939b6d130c3a5cf8b7dc": "Cada {} dias", - "cf9af10dcebe2f12092ff6028a535f08": "Todos os dias {}, execute a {} hora {} min min", - "e114abed903b9d26c476d4f6cd59c04b": "Por hora", - "0aef48ea8132b0551fa25a10fd0a6585": "Por hora, execute a {} min", - "50419faf9662e0c3f283d496bcb8eb72": "Cada {} horas", - "2a0706d7e3ca3ce9e955471a0648dfcc": "Todas as horas {}, executadas em {} min", - "84d94bf0382f611906b7edd65d6af169": "Cada {} minutos", - "14d27796d1c96457c7c019661a2f32d4": "Execute todos os minutos {}", - "6c25e6a6da95b3d583c6ec4c3f82ed4d": "Semanalmente", - "e1df614d393ab86fd63c5062f7e77936": "Cada {}, execute a {} hora {} min min", - "9030e39f00132d583da4122532e509e9": "Mensal", - "69c5e99b9ad8d2b8f11be9a60cbf71da": "Mensalmente, execute no {} dia {} hora {} min min", - "9d1a0949c39e66a0cd65240bc0ac9177": "Domingo", - "6f8522e0610541f1ef215a22ffa66ff6": "Segunda-feira", - "5792315f09a5d54fb7e3d066672b507f": "Terça-feira", - "796c163589f295373e171842f37265d5": "Quarta-feira", - "78ae6f0cd191d25147e252dc54768238": "Quinta-feira", - "c33b138a163847cdb6caeeb7c9a126b4": "Sexta-feira", - "8b7051187b9191cdcdae6ed5a10e5adc": "Sábado", - "e00d5128f631253b7b6ed8d5454c0c81": "Incapaz de gravar no arquivo, verifique se o [endurecimento do sistema] está ativado!", - "685689743579a8f09fcec5d7df04e39e": "O nome da tarefa não pode estar vazio!", - "a5c04aced897c770105858268324b53f": "A tarefa atual é desativar o status, abra a tarefa antes de modificar!", - "85305ee6be0f078791c7437ec54dda12": "Falha ao adicionar", - "08a1ce771119bb393fa49478216ae809": "O log está vazio", - "b8fd4dbe5c3650beaec0a3d44d7f0245": "Toras esvaziadas", - "ff47c70e853d0b3635935be883b018e9": "Falha ao esvaziar logs de tarefas!", - "e0c4da1afd18acbb66bc5fac261a42ef": "A tarefa especificada não existe!", - "998ad6f12ce5285a1b72d4265d9b36cc": "Excluído com sucesso", - "e274abcaad0a7fff74d9adb67e578d5f": "Falhou em excluir", - "38fa2d4f8f9a13062c0c9007d97f6a84": "Falha ao ler o arquivo!", - "f57d5686d9dd67f0e81924de8d13af95": "Tarefa foi executada!", - "0b1c93d38c86c8d379886293cdf8ba66": "Tarefa cancelada!", - "d5ef96e383d376beeec28da7acfea516": "Baixar arquivo", - "f24f6c5f5841340f898a6baaa6478bcd": "Baixar arquivo {}", - "b2d87dda66a4643c6cf673f787c5f226": "Arquivo de configuração não existe", - "9fdd777388a418cef77bce46c1b2511a": "O formato de compressão especificado não é suportado!", - "4fa407ee74026903dc3013d0b2471eac": "A compressão foi bem -sucedida!", - "ece43dcaac9352f58c422e500266a927": "A descompressão foi bem -sucedida!", - "b9c1dcb37c44dca19765636de065b1c1": "O backup foi bem -sucedido!", - "ac4eb62573e34c36ff426c8a6360c781": "Erro de backup!", - "438ca4ffcf6fbd44ec129e73a24f0deb": "Selecione o arquivo SQL/GZ/ZIP!", - "0edfb4a54d6cf45209a6c7929b8b9919": "Banco de dados importado com sucesso!", - "b0698ab9adefa7515299f311c725ba4d": "Classificação clara com sucesso", - "8611f56e253646a455ceeb020052fa97": "Falhou em modificar", - "bef28b813bf12be3924925bbb62883dd": "Executado com sucesso!", - "fda63bff3e0143980e5761376859b00b": "A execução falhou, verifique se o Apache instalou", - "22012355700877ab73f89de8014ab20b": "Erro de configuração da regra do apache:
Falha ao ativar:

", - "9848c96a046adb1759233241661ff694": "{} O serviço não conseguiu iniciar", - "6ed577cdce37bbd9c66871ac1677dc53": "A parada de serviço falhou!", - "572e5703371c43aae299181c0e3567d4": "Por favor, execute o programa quando todas as tarefas de instalação terminarem!", - "c7138b4b5f7ded833942aef4e230771d": "Comando enviado com sucesso!", - "d56f0ed99825b4d62ab84753a65f7f1e": "Painel reiniciado", - "bff9ef87fdda677f86ae6dddec54a104": "Nenhuma versão compatível com PHP encontrada, instale primeiro", + "18928426418954e3a8bc166c892af5c5": "O nome de usuário ou a senha não podem estar vazios!", + "14422683e14b8a03fd02b84480703c41": "Você não conseguiu fazer login muitas vezes, tente novamente em {} segundos!", + "179b0ad118200b66c6e90535d9d8ad4f": "O disco inode foi esgotado, o painel tentou liberar o inode.Por favor, tente novamente ...", + "7edd0140c2f050286273be74039b1df7": "A verificação falhou, atualize a página e faça login novamente!", + "9a9b0bf6269ba974cc6a00bb0f0de1d0": "O código de verificação não pode estar vazio!", + "2b7ae590e0538e70b7a359a94d30f1f4": "O código de verificação está incorreto, tente novamente!", + "21f763b26858bf8ff40f931d714ab106": "nome de usuário ou senha errada , \nsnippet sub\n\t${1}\nsnippet summary\n\t

\n\t\t${1}\n\t\nsnippet sup\n\t${1}\nsnippet table\n\t\n\t\t${2}\n\t
\nsnippet table.\n\t\n\t\t${3}\n\t
\nsnippet table#\n\t\n\t\t${3}\n\t
\nsnippet tbody\n\t\n\t\t${1}\n\t\nsnippet td\n\t${1}\nsnippet td.\n\t${2}\nsnippet td#\n\t${2}\nsnippet td+\n\t${1}\n\ttd+${2}\nsnippet textarea\n\t${6}\nsnippet tfoot\n\t\n\t\t${1}\n\t\nsnippet th\n\t${1}\nsnippet th.\n\t${2}\nsnippet th#\n\t${2}\nsnippet th+\n\t${1}\n\tth+${2}\nsnippet thead\n\t\n\t\t${1}\n\t\nsnippet time\n\t\nsnippet title\n\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\nsnippet tr\n\t\n\t\t${1}\n\t\nsnippet tr+\n\t\n\t\t${1}\n\t\ttd+${2}\n\t\nsnippet track\n\t${5}${6}\nsnippet ul\n\t
    \n\t\t${1}\n\t
\nsnippet ul.\n\t
    \n\t\t${2}\n\t
\nsnippet ul#\n\t
    \n\t\t${2}\n\t
\nsnippet ul+\n\t
    \n\t\t
  • ${1}
  • \n\t\tli+${2}\n\t
\nsnippet var\n\t${1}\nsnippet video\n\t${8}\nsnippet wbr\n\t${1}\n"; - -}); - -ace.define("ace/snippets/html",["require","exports","module","ace/snippets/html.snippets"], function(require, exports, module){"use strict"; -exports.snippetText = require("./html.snippets"); -exports.scope = "html"; - -}); (function() { - ace.require(["ace/snippets/html"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/BTPanel/static/vite/js/LowRiskSection-legacy.js b/BTPanel/static/vite/js/LowRiskSection-legacy.js index 9b57d2fb..09993665 100644 --- a/BTPanel/static/vite/js/LowRiskSection-legacy.js +++ b/BTPanel/static/vite/js/LowRiskSection-legacy.js @@ -1 +1 @@ -System.register(["./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419"],function(e,s){"use strict";var i,t,a,d,l,o,u,r,n;return{setters:[e=>{i=e.k,t=e.R,a=e.V,d=e.an,l=e.F,o=e.O,u=e.S,r=e.a4},e=>{n=e.p},null,null,null,null],execute:function(){var s=document.createElement("style");s.textContent=".issues-list .issue-item[data-v-a4e402dd]{margin-bottom:20px;border:2px solid #eee;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.1);page-break-inside:avoid}.issues-list .issue-item.high[data-v-a4e402dd]{border-left:6px solid #ff4d4f}.issues-list .issue-item.medium[data-v-a4e402dd]{border-left:6px solid #faad14}.issues-list .issue-item.low[data-v-a4e402dd]{border-left:6px solid #52c41a}.issues-list .issue-item.cve[data-v-a4e402dd]{border-left:6px solid #722ed1}.issues-list .issue-item.ignore[data-v-a4e402dd]{border-left:6px solid #999}.issues-list .issue-item .issue-header[data-v-a4e402dd]{display:flex;align-items:center;padding:15px 20px;background-color:#f8f9fa}.issues-list .issue-item .issue-header .issue-number[data-v-a4e402dd]{flex:0 0 40px;height:40px;border-radius:50%;background-color:#07f;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;margin-right:15px;font-size:16px}.issues-list .issue-item .issue-header .issue-name[data-v-a4e402dd]{flex:1;font-weight:500;font-size:16px}.issues-list .issue-item .issue-header .issue-level[data-v-a4e402dd]{padding:4px 12px;border-radius:6px;font-size:14px;margin-right:15px;font-weight:700}.issues-list .issue-item .issue-header .issue-level.high[data-v-a4e402dd]{background-color:#ff4d4f;color:#fff}.issues-list .issue-item .issue-header .issue-level.medium[data-v-a4e402dd]{background-color:#faad14;color:#fff}.issues-list .issue-item .issue-header .issue-level.low[data-v-a4e402dd]{background-color:#52c41a;color:#fff}.issues-list .issue-item .issue-header .issue-level.ignore[data-v-a4e402dd]{background-color:#f0f0f0;color:#666}.issues-list .issue-item .issue-header .issue-auto[data-v-a4e402dd]{padding:4px 12px;border-radius:6px;font-size:14px;background-color:#f5f5f5;color:#666}.issues-list .issue-item .issue-header .issue-auto.supported[data-v-a4e402dd]{background-color:#e6f7ff;color:#07f}.issues-list .issue-item .issue-content[data-v-a4e402dd]{padding:20px}.issues-list .issue-item .issue-content .issue-ps[data-v-a4e402dd]{margin-bottom:15px;color:#666;font-size:16px;line-height:1.6}.issues-list .issue-item .issue-content .issue-tips[data-v-a4e402dd]{background-color:#f8f9fa;padding:15px;border-radius:8px;border-left:4px solid #0077ff}.issues-list .issue-item .issue-content .issue-tips .tips-title[data-v-a4e402dd]{font-weight:500;margin-bottom:10px;font-size:16px;color:#333}.issues-list .issue-item .issue-content .issue-tips .tips-content[data-v-a4e402dd]{color:#666;white-space:pre-line;line-height:1.6;font-size:15px}\n/*$vite$:1*/",document.head.appendChild(s);const p={class:"issues-list"},c=["item"],f={class:"issue-header"},m={class:"issue-number"},g=["innerHTML"],v={class:"issue-level low"},x={class:"issue-content"},b={class:"issue-ps"},h={class:"issue-tips"},y=["innerHTML"],k={key:0,class:"pagination-note"};e("default",n(i({__name:"LowRiskSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const s=e;return(e,i)=>(a(),t("div",p,[(a(!0),t(l,null,o(s.data,(e,s)=>(a(),t("div",{class:"issue-item low",key:"low-"+s,item:e},[u("div",f,[u("div",m,r(e.num),1),u("div",{class:"issue-name",innerHTML:e.name},null,8,g),u("div",v,r(e.level),1)]),u("div",x,[u("div",b,r(e.ps),1),u("div",h,[i[0]||(i[0]=u("div",{class:"tips-title"},"Solution:",-1)),u("div",{class:"tips-content",innerHTML:e.tips.replace(/\n/g,"
")},null,8,y)])])],8,c))),128)),s.totalPages>1?(a(),t("div",k," Total "+r(s.totalPages)+" pages, current page "+r(s.pageIndex+1)+". ",1)):d("",!0)]))}}),[["__scopeId","data-v-a4e402dd"]]))}}}); +System.register(["./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323"],function(e,s){"use strict";var i,t,a,d,l,o,u,r,n;return{setters:[e=>{i=e.k,t=e.R,a=e.V,d=e.an,l=e.F,o=e.O,u=e.S,r=e.a4},e=>{n=e.p},null,null,null,null],execute:function(){var s=document.createElement("style");s.textContent=".issues-list .issue-item[data-v-a4e402dd]{margin-bottom:20px;border:2px solid #eee;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.1);page-break-inside:avoid}.issues-list .issue-item.high[data-v-a4e402dd]{border-left:6px solid #ff4d4f}.issues-list .issue-item.medium[data-v-a4e402dd]{border-left:6px solid #faad14}.issues-list .issue-item.low[data-v-a4e402dd]{border-left:6px solid #52c41a}.issues-list .issue-item.cve[data-v-a4e402dd]{border-left:6px solid #722ed1}.issues-list .issue-item.ignore[data-v-a4e402dd]{border-left:6px solid #999}.issues-list .issue-item .issue-header[data-v-a4e402dd]{display:flex;align-items:center;padding:15px 20px;background-color:#f8f9fa}.issues-list .issue-item .issue-header .issue-number[data-v-a4e402dd]{flex:0 0 40px;height:40px;border-radius:50%;background-color:#07f;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;margin-right:15px;font-size:16px}.issues-list .issue-item .issue-header .issue-name[data-v-a4e402dd]{flex:1;font-weight:500;font-size:16px}.issues-list .issue-item .issue-header .issue-level[data-v-a4e402dd]{padding:4px 12px;border-radius:6px;font-size:14px;margin-right:15px;font-weight:700}.issues-list .issue-item .issue-header .issue-level.high[data-v-a4e402dd]{background-color:#ff4d4f;color:#fff}.issues-list .issue-item .issue-header .issue-level.medium[data-v-a4e402dd]{background-color:#faad14;color:#fff}.issues-list .issue-item .issue-header .issue-level.low[data-v-a4e402dd]{background-color:#52c41a;color:#fff}.issues-list .issue-item .issue-header .issue-level.ignore[data-v-a4e402dd]{background-color:#f0f0f0;color:#666}.issues-list .issue-item .issue-header .issue-auto[data-v-a4e402dd]{padding:4px 12px;border-radius:6px;font-size:14px;background-color:#f5f5f5;color:#666}.issues-list .issue-item .issue-header .issue-auto.supported[data-v-a4e402dd]{background-color:#e6f7ff;color:#07f}.issues-list .issue-item .issue-content[data-v-a4e402dd]{padding:20px}.issues-list .issue-item .issue-content .issue-ps[data-v-a4e402dd]{margin-bottom:15px;color:#666;font-size:16px;line-height:1.6}.issues-list .issue-item .issue-content .issue-tips[data-v-a4e402dd]{background-color:#f8f9fa;padding:15px;border-radius:8px;border-left:4px solid #0077ff}.issues-list .issue-item .issue-content .issue-tips .tips-title[data-v-a4e402dd]{font-weight:500;margin-bottom:10px;font-size:16px;color:#333}.issues-list .issue-item .issue-content .issue-tips .tips-content[data-v-a4e402dd]{color:#666;white-space:pre-line;line-height:1.6;font-size:15px}\n/*$vite$:1*/",document.head.appendChild(s);const p={class:"issues-list"},c=["item"],f={class:"issue-header"},m={class:"issue-number"},g=["innerHTML"],v={class:"issue-level low"},x={class:"issue-content"},b={class:"issue-ps"},h={class:"issue-tips"},y=["innerHTML"],k={key:0,class:"pagination-note"};e("default",n(i({__name:"LowRiskSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const s=e;return(e,i)=>(a(),t("div",p,[(a(!0),t(l,null,o(s.data,(e,s)=>(a(),t("div",{class:"issue-item low",key:"low-"+s,item:e},[u("div",f,[u("div",m,r(e.num),1),u("div",{class:"issue-name",innerHTML:e.name},null,8,g),u("div",v,r(e.level),1)]),u("div",x,[u("div",b,r(e.ps),1),u("div",h,[i[0]||(i[0]=u("div",{class:"tips-title"},"Solution:",-1)),u("div",{class:"tips-content",innerHTML:e.tips.replace(/\n/g,"
")},null,8,y)])])],8,c))),128)),s.totalPages>1?(a(),t("div",k," Total "+r(s.totalPages)+" pages, current page "+r(s.pageIndex+1)+". ",1)):d("",!0)]))}}),[["__scopeId","data-v-a4e402dd"]]))}}}); diff --git a/BTPanel/static/vite/js/LowRiskSection.js b/BTPanel/static/vite/js/LowRiskSection.js index 24d3e88d..e5e0235c 100644 --- a/BTPanel/static/vite/js/LowRiskSection.js +++ b/BTPanel/static/vite/js/LowRiskSection.js @@ -1 +1 @@ -import{k as s,R as e,V as a,an as i,F as t,O as l,S as n,a4 as r}from"./vue.js?v=1760428868419";import{p as o}from"./page_layout.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./public.js?v=1760428868419";const p={class:"issues-list"},u=["item"],d={class:"issue-header"},c={class:"issue-number"},m=["innerHTML"],v={class:"issue-level low"},g={class:"issue-content"},_={class:"issue-ps"},j={class:"issue-tips"},y=["innerHTML"],b={key:0,class:"pagination-note"},H=o(s({__name:"LowRiskSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(s){const o=s;return(s,H)=>(a(),e("div",p,[(a(!0),e(t,null,l(o.data,(s,i)=>(a(),e("div",{class:"issue-item low",key:"low-"+i,item:s},[n("div",d,[n("div",c,r(s.num),1),n("div",{class:"issue-name",innerHTML:s.name},null,8,m),n("div",v,r(s.level),1)]),n("div",g,[n("div",_,r(s.ps),1),n("div",j,[H[0]||(H[0]=n("div",{class:"tips-title"},"Solution:",-1)),n("div",{class:"tips-content",innerHTML:s.tips.replace(/\n/g,"
")},null,8,y)])])],8,u))),128)),o.totalPages>1?(a(),e("div",b," Total "+r(o.totalPages)+" pages, current page "+r(o.pageIndex+1)+". ",1)):i("",!0)]))}}),[["__scopeId","data-v-a4e402dd"]]);export{H as default}; +import{k as s,R as e,V as a,an as i,F as t,O as l,S as n,a4 as r}from"./vue.js?v=1762424784323";import{p as o}from"./page_layout.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./public.js?v=1762424784323";const p={class:"issues-list"},u=["item"],d={class:"issue-header"},c={class:"issue-number"},m=["innerHTML"],v={class:"issue-level low"},g={class:"issue-content"},_={class:"issue-ps"},j={class:"issue-tips"},y=["innerHTML"],b={key:0,class:"pagination-note"},H=o(s({__name:"LowRiskSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(s){const o=s;return(s,H)=>(a(),e("div",p,[(a(!0),e(t,null,l(o.data,(s,i)=>(a(),e("div",{class:"issue-item low",key:"low-"+i,item:s},[n("div",d,[n("div",c,r(s.num),1),n("div",{class:"issue-name",innerHTML:s.name},null,8,m),n("div",v,r(s.level),1)]),n("div",g,[n("div",_,r(s.ps),1),n("div",j,[H[0]||(H[0]=n("div",{class:"tips-title"},"Solution:",-1)),n("div",{class:"tips-content",innerHTML:s.tips.replace(/\n/g,"
")},null,8,y)])])],8,u))),128)),o.totalPages>1?(a(),e("div",b," Total "+r(o.totalPages)+" pages, current page "+r(o.pageIndex+1)+". ",1)):i("",!0)]))}}),[["__scopeId","data-v-a4e402dd"]]);export{H as default}; diff --git a/BTPanel/static/vite/js/MaliciousSection-legacy.js b/BTPanel/static/vite/js/MaliciousSection-legacy.js index fcd9d36d..1a06bd1e 100644 --- a/BTPanel/static/vite/js/MaliciousSection-legacy.js +++ b/BTPanel/static/vite/js/MaliciousSection-legacy.js @@ -1 +1 @@ -System.register(["./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419"],function(a,e){"use strict";var t,l,i,s,o,n,r,d,u;return{setters:[a=>{t=a.k,l=a.R,i=a.V,s=a.an,o=a.S,n=a.a4,r=a.F,d=a.O},a=>{u=a.p},null,null,null,null],execute:function(){var e=document.createElement("style");e.textContent=".malicious-summary[data-v-80b85a6a]{margin-bottom:30px;padding:20px;border-radius:12px;background-color:#f8f9fa;border:2px solid #e9ecef}.malicious-summary div[data-v-80b85a6a]{font-size:18px;margin-bottom:10px;color:#333}.malicious-table[data-v-80b85a6a]{margin-top:20px}.malicious-table .breakable-table[data-v-80b85a6a]{width:100%;border-collapse:collapse;font-size:13px}.malicious-table .breakable-table th[data-v-80b85a6a],.malicious-table .breakable-table td[data-v-80b85a6a]{padding:6px;text-align:left;border:1px solid #ddd}.malicious-table .breakable-table th[data-v-80b85a6a]{background-color:#f0f0f0;font-weight:700}.malicious-table .breakable-table td.filepath[data-v-80b85a6a]{word-break:break-all;font-size:12px}.malicious-table .breakable-table tr[data-v-80b85a6a]:nth-child(2n){background-color:#f9f9f9}.malicious-table .pagination-note[data-v-80b85a6a]{margin-top:15px;text-align:center;font-style:italic;color:#666;font-size:14px}\n/*$vite$:1*/",document.head.appendChild(e);const c={key:0,class:"malicious-summary"},b={class:"malicious-table"},p={class:"breakable-table"},m=["item"],f={class:"filepath"},g={key:0,class:"pagination-note"};a("default",u(t({__name:"MaliciousSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(a){const e=a;return(a,t)=>(i(),l("div",null,[e.reportData?.malicious_files?(i(),l("div",c,[o("div",null,"Scan Time:"+n(e.reportData.malicious_files.last_scan_time||""),1),o("div",null,"Total Scanned Files:"+n(e.reportData.malicious_files.total_scanned_files||0),1),o("div",null,"Total Detected Malicious Files:"+n(e.reportData.malicious_files.total_detected||0),1),o("div",null,"High Risk:"+n(e.reportData.malicious_files.risk_stats?.[2]||0),1),o("div",null,"Processing:"+n(e.reportData.malicious_files.processed_stats?.[1]||0)+",Unprocessed:"+n(e.reportData.malicious_files.processed_stats?.[0]||0),1)])):s("",!0),o("div",b,[o("table",p,[t[0]||(t[0]=o("thead",null,[o("tr",null,[o("th",null,"File Name"),o("th",null,"Path"),o("th",null,"Threat Type"),o("th",null,"Risk Level"),o("th",null,"Scan Time"),o("th",null,"Quarantined")])],-1)),o("tbody",null,[(i(!0),l(r,null,d(e.data,a=>(i(),l("tr",{key:a.filepath+a.time,item:a},[o("td",null,n(a.filename),1),o("td",f,n(a.filepath),1),o("td",null,n(a.threat_type),1),o("td",null,n(a.risk_level_desc),1),o("td",null,n(a.time),1),o("td",null,n(a.quarantined?"Yes":"No"),1)],8,m))),128))])]),e.totalPages>1?(i(),l("div",g," Total "+n(e.totalPages)+" pages, current page "+n(e.pageIndex+1)+". ",1)):s("",!0)])]))}}),[["__scopeId","data-v-80b85a6a"]]))}}}); +System.register(["./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323"],function(a,e){"use strict";var t,l,i,s,o,n,r,d,u;return{setters:[a=>{t=a.k,l=a.R,i=a.V,s=a.an,o=a.S,n=a.a4,r=a.F,d=a.O},a=>{u=a.p},null,null,null,null],execute:function(){var e=document.createElement("style");e.textContent=".malicious-summary[data-v-80b85a6a]{margin-bottom:30px;padding:20px;border-radius:12px;background-color:#f8f9fa;border:2px solid #e9ecef}.malicious-summary div[data-v-80b85a6a]{font-size:18px;margin-bottom:10px;color:#333}.malicious-table[data-v-80b85a6a]{margin-top:20px}.malicious-table .breakable-table[data-v-80b85a6a]{width:100%;border-collapse:collapse;font-size:13px}.malicious-table .breakable-table th[data-v-80b85a6a],.malicious-table .breakable-table td[data-v-80b85a6a]{padding:6px;text-align:left;border:1px solid #ddd}.malicious-table .breakable-table th[data-v-80b85a6a]{background-color:#f0f0f0;font-weight:700}.malicious-table .breakable-table td.filepath[data-v-80b85a6a]{word-break:break-all;font-size:12px}.malicious-table .breakable-table tr[data-v-80b85a6a]:nth-child(2n){background-color:#f9f9f9}.malicious-table .pagination-note[data-v-80b85a6a]{margin-top:15px;text-align:center;font-style:italic;color:#666;font-size:14px}\n/*$vite$:1*/",document.head.appendChild(e);const c={key:0,class:"malicious-summary"},b={class:"malicious-table"},p={class:"breakable-table"},m=["item"],f={class:"filepath"},g={key:0,class:"pagination-note"};a("default",u(t({__name:"MaliciousSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(a){const e=a;return(a,t)=>(i(),l("div",null,[e.reportData?.malicious_files?(i(),l("div",c,[o("div",null,"Scan Time:"+n(e.reportData.malicious_files.last_scan_time||""),1),o("div",null,"Total Scanned Files:"+n(e.reportData.malicious_files.total_scanned_files||0),1),o("div",null,"Total Detected Malicious Files:"+n(e.reportData.malicious_files.total_detected||0),1),o("div",null,"High Risk:"+n(e.reportData.malicious_files.risk_stats?.[2]||0),1),o("div",null,"Processing:"+n(e.reportData.malicious_files.processed_stats?.[1]||0)+",Unprocessed:"+n(e.reportData.malicious_files.processed_stats?.[0]||0),1)])):s("",!0),o("div",b,[o("table",p,[t[0]||(t[0]=o("thead",null,[o("tr",null,[o("th",null,"File Name"),o("th",null,"Path"),o("th",null,"Threat Type"),o("th",null,"Risk Level"),o("th",null,"Scan Time"),o("th",null,"Quarantined")])],-1)),o("tbody",null,[(i(!0),l(r,null,d(e.data,a=>(i(),l("tr",{key:a.filepath+a.time,item:a},[o("td",null,n(a.filename),1),o("td",f,n(a.filepath),1),o("td",null,n(a.threat_type),1),o("td",null,n(a.risk_level_desc),1),o("td",null,n(a.time),1),o("td",null,n(a.quarantined?"Yes":"No"),1)],8,m))),128))])]),e.totalPages>1?(i(),l("div",g," Total "+n(e.totalPages)+" pages, current page "+n(e.pageIndex+1)+". ",1)):s("",!0)])]))}}),[["__scopeId","data-v-80b85a6a"]]))}}}); diff --git a/BTPanel/static/vite/js/MaliciousSection.js b/BTPanel/static/vite/js/MaliciousSection.js index a54322dc..8ac9c845 100644 --- a/BTPanel/static/vite/js/MaliciousSection.js +++ b/BTPanel/static/vite/js/MaliciousSection.js @@ -1 +1 @@ -import{k as e,R as a,V as l,an as t,S as s,a4 as i,F as o,O as r}from"./vue.js?v=1760428868419";import{p as n}from"./page_layout.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./public.js?v=1760428868419";const u={key:0,class:"malicious-summary"},d={class:"malicious-table"},p={class:"breakable-table"},c=["item"],m={class:"filepath"},_={key:0,class:"pagination-note"},v=n(e({__name:"MaliciousSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const n=e;return(e,v)=>{var f,h,y,b;return l(),a("div",null,[(null==(f=n.reportData)?void 0:f.malicious_files)?(l(),a("div",u,[s("div",null,"Scan Time:"+i(n.reportData.malicious_files.last_scan_time||""),1),s("div",null,"Total Scanned Files:"+i(n.reportData.malicious_files.total_scanned_files||0),1),s("div",null,"Total Detected Malicious Files:"+i(n.reportData.malicious_files.total_detected||0),1),s("div",null,"High Risk:"+i((null==(h=n.reportData.malicious_files.risk_stats)?void 0:h[2])||0),1),s("div",null,"Processing:"+i((null==(y=n.reportData.malicious_files.processed_stats)?void 0:y[1])||0)+",Unprocessed:"+i((null==(b=n.reportData.malicious_files.processed_stats)?void 0:b[0])||0),1)])):t("",!0),s("div",d,[s("table",p,[v[0]||(v[0]=s("thead",null,[s("tr",null,[s("th",null,"File Name"),s("th",null,"Path"),s("th",null,"Threat Type"),s("th",null,"Risk Level"),s("th",null,"Scan Time"),s("th",null,"Quarantined")])],-1)),s("tbody",null,[(l(!0),a(o,null,r(n.data,e=>(l(),a("tr",{key:e.filepath+e.time,item:e},[s("td",null,i(e.filename),1),s("td",m,i(e.filepath),1),s("td",null,i(e.threat_type),1),s("td",null,i(e.risk_level_desc),1),s("td",null,i(e.time),1),s("td",null,i(e.quarantined?"Yes":"No"),1)],8,c))),128))])]),n.totalPages>1?(l(),a("div",_," Total "+i(n.totalPages)+" pages, current page "+i(n.pageIndex+1)+". ",1)):t("",!0)])])}}}),[["__scopeId","data-v-80b85a6a"]]);export{v as default}; +import{k as e,R as a,V as l,an as t,S as s,a4 as i,F as o,O as r}from"./vue.js?v=1762424784323";import{p as n}from"./page_layout.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./public.js?v=1762424784323";const u={key:0,class:"malicious-summary"},d={class:"malicious-table"},p={class:"breakable-table"},c=["item"],m={class:"filepath"},_={key:0,class:"pagination-note"},v=n(e({__name:"MaliciousSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const n=e;return(e,v)=>{var f,h,y,b;return l(),a("div",null,[(null==(f=n.reportData)?void 0:f.malicious_files)?(l(),a("div",u,[s("div",null,"Scan Time:"+i(n.reportData.malicious_files.last_scan_time||""),1),s("div",null,"Total Scanned Files:"+i(n.reportData.malicious_files.total_scanned_files||0),1),s("div",null,"Total Detected Malicious Files:"+i(n.reportData.malicious_files.total_detected||0),1),s("div",null,"High Risk:"+i((null==(h=n.reportData.malicious_files.risk_stats)?void 0:h[2])||0),1),s("div",null,"Processing:"+i((null==(y=n.reportData.malicious_files.processed_stats)?void 0:y[1])||0)+",Unprocessed:"+i((null==(b=n.reportData.malicious_files.processed_stats)?void 0:b[0])||0),1)])):t("",!0),s("div",d,[s("table",p,[v[0]||(v[0]=s("thead",null,[s("tr",null,[s("th",null,"File Name"),s("th",null,"Path"),s("th",null,"Threat Type"),s("th",null,"Risk Level"),s("th",null,"Scan Time"),s("th",null,"Quarantined")])],-1)),s("tbody",null,[(l(!0),a(o,null,r(n.data,e=>(l(),a("tr",{key:e.filepath+e.time,item:e},[s("td",null,i(e.filename),1),s("td",m,i(e.filepath),1),s("td",null,i(e.threat_type),1),s("td",null,i(e.risk_level_desc),1),s("td",null,i(e.time),1),s("td",null,i(e.quarantined?"Yes":"No"),1)],8,c))),128))])]),n.totalPages>1?(l(),a("div",_," Total "+i(n.totalPages)+" pages, current page "+i(n.pageIndex+1)+". ",1)):t("",!0)])])}}}),[["__scopeId","data-v-80b85a6a"]]);export{v as default}; diff --git a/BTPanel/static/vite/js/MidRiskSection-legacy.js b/BTPanel/static/vite/js/MidRiskSection-legacy.js index 6c1fea39..05519795 100644 --- a/BTPanel/static/vite/js/MidRiskSection-legacy.js +++ b/BTPanel/static/vite/js/MidRiskSection-legacy.js @@ -1 +1 @@ -System.register(["./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419"],function(e,s){"use strict";var i,t,a,d,u,l,o,r,n;return{setters:[e=>{i=e.k,t=e.R,a=e.V,d=e.an,u=e.F,l=e.O,o=e.S,r=e.a4},e=>{n=e.p},null,null,null,null],execute:function(){var s=document.createElement("style");s.textContent=".issues-list .issue-item[data-v-f4943d26]{margin-bottom:20px;border:2px solid #eee;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.1);page-break-inside:avoid}.issues-list .issue-item.high[data-v-f4943d26]{border-left:6px solid #ff4d4f}.issues-list .issue-item.medium[data-v-f4943d26]{border-left:6px solid #faad14}.issues-list .issue-item.low[data-v-f4943d26]{border-left:6px solid #52c41a}.issues-list .issue-item.cve[data-v-f4943d26]{border-left:6px solid #722ed1}.issues-list .issue-item.ignore[data-v-f4943d26]{border-left:6px solid #999}.issues-list .issue-item .issue-header[data-v-f4943d26]{display:flex;align-items:center;padding:15px 20px;background-color:#f8f9fa}.issues-list .issue-item .issue-header .issue-number[data-v-f4943d26]{flex:0 0 40px;height:40px;border-radius:50%;background-color:#07f;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;margin-right:15px;font-size:16px}.issues-list .issue-item .issue-header .issue-name[data-v-f4943d26]{flex:1;font-weight:500;font-size:16px}.issues-list .issue-item .issue-header .issue-level[data-v-f4943d26]{padding:4px 12px;border-radius:6px;font-size:14px;margin-right:15px;font-weight:700}.issues-list .issue-item .issue-header .issue-level.high[data-v-f4943d26]{background-color:#ff4d4f;color:#fff}.issues-list .issue-item .issue-header .issue-level.medium[data-v-f4943d26]{background-color:#faad14;color:#fff}.issues-list .issue-item .issue-header .issue-level.low[data-v-f4943d26]{background-color:#52c41a;color:#fff}.issues-list .issue-item .issue-header .issue-level.ignore[data-v-f4943d26]{background-color:#f0f0f0;color:#666}.issues-list .issue-item .issue-header .issue-auto[data-v-f4943d26]{padding:4px 12px;border-radius:6px;font-size:14px;background-color:#f5f5f5;color:#666}.issues-list .issue-item .issue-header .issue-auto.supported[data-v-f4943d26]{background-color:#e6f7ff;color:#07f}.issues-list .issue-item .issue-content[data-v-f4943d26]{padding:20px}.issues-list .issue-item .issue-content .issue-ps[data-v-f4943d26]{margin-bottom:15px;color:#666;font-size:16px;line-height:1.6}.issues-list .issue-item .issue-content .issue-tips[data-v-f4943d26]{background-color:#f8f9fa;padding:15px;border-radius:8px;border-left:4px solid #0077ff}.issues-list .issue-item .issue-content .issue-tips .tips-title[data-v-f4943d26]{font-weight:500;margin-bottom:10px;font-size:16px;color:#333}.issues-list .issue-item .issue-content .issue-tips .tips-content[data-v-f4943d26]{color:#666;white-space:pre-line;line-height:1.6;font-size:15px}\n/*$vite$:1*/",document.head.appendChild(s);const f={class:"issues-list"},p=["item"],c={class:"issue-header"},m={class:"issue-number"},g=["innerHTML"],v={class:"issue-level medium"},x={class:"issue-content"},b={class:"issue-ps"},h={class:"issue-tips"},y=["innerHTML"],k={key:0,class:"pagination-note"};e("default",n(i({__name:"MidRiskSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const s=e;return(e,i)=>(a(),t("div",f,[(a(!0),t(u,null,l(s.data,(e,s)=>(a(),t("div",{class:"issue-item medium",key:"medium-"+s,item:e},[o("div",c,[o("div",m,r(e.num),1),o("div",{class:"issue-name",innerHTML:e.name},null,8,g),o("div",v,r(e.level),1)]),o("div",x,[o("div",b,r(e.ps),1),o("div",h,[i[0]||(i[0]=o("div",{class:"tips-title"},"Solution:",-1)),o("div",{class:"tips-content",innerHTML:e.tips.replace(/\n/g,"
")},null,8,y)])])],8,p))),128)),s.totalPages>1?(a(),t("div",k," Total "+r(s.totalPages)+" pages, current page "+r(s.pageIndex+1)+". ",1)):d("",!0)]))}}),[["__scopeId","data-v-f4943d26"]]))}}}); +System.register(["./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323"],function(e,s){"use strict";var i,t,a,d,u,l,o,r,n;return{setters:[e=>{i=e.k,t=e.R,a=e.V,d=e.an,u=e.F,l=e.O,o=e.S,r=e.a4},e=>{n=e.p},null,null,null,null],execute:function(){var s=document.createElement("style");s.textContent=".issues-list .issue-item[data-v-f4943d26]{margin-bottom:20px;border:2px solid #eee;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.1);page-break-inside:avoid}.issues-list .issue-item.high[data-v-f4943d26]{border-left:6px solid #ff4d4f}.issues-list .issue-item.medium[data-v-f4943d26]{border-left:6px solid #faad14}.issues-list .issue-item.low[data-v-f4943d26]{border-left:6px solid #52c41a}.issues-list .issue-item.cve[data-v-f4943d26]{border-left:6px solid #722ed1}.issues-list .issue-item.ignore[data-v-f4943d26]{border-left:6px solid #999}.issues-list .issue-item .issue-header[data-v-f4943d26]{display:flex;align-items:center;padding:15px 20px;background-color:#f8f9fa}.issues-list .issue-item .issue-header .issue-number[data-v-f4943d26]{flex:0 0 40px;height:40px;border-radius:50%;background-color:#07f;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;margin-right:15px;font-size:16px}.issues-list .issue-item .issue-header .issue-name[data-v-f4943d26]{flex:1;font-weight:500;font-size:16px}.issues-list .issue-item .issue-header .issue-level[data-v-f4943d26]{padding:4px 12px;border-radius:6px;font-size:14px;margin-right:15px;font-weight:700}.issues-list .issue-item .issue-header .issue-level.high[data-v-f4943d26]{background-color:#ff4d4f;color:#fff}.issues-list .issue-item .issue-header .issue-level.medium[data-v-f4943d26]{background-color:#faad14;color:#fff}.issues-list .issue-item .issue-header .issue-level.low[data-v-f4943d26]{background-color:#52c41a;color:#fff}.issues-list .issue-item .issue-header .issue-level.ignore[data-v-f4943d26]{background-color:#f0f0f0;color:#666}.issues-list .issue-item .issue-header .issue-auto[data-v-f4943d26]{padding:4px 12px;border-radius:6px;font-size:14px;background-color:#f5f5f5;color:#666}.issues-list .issue-item .issue-header .issue-auto.supported[data-v-f4943d26]{background-color:#e6f7ff;color:#07f}.issues-list .issue-item .issue-content[data-v-f4943d26]{padding:20px}.issues-list .issue-item .issue-content .issue-ps[data-v-f4943d26]{margin-bottom:15px;color:#666;font-size:16px;line-height:1.6}.issues-list .issue-item .issue-content .issue-tips[data-v-f4943d26]{background-color:#f8f9fa;padding:15px;border-radius:8px;border-left:4px solid #0077ff}.issues-list .issue-item .issue-content .issue-tips .tips-title[data-v-f4943d26]{font-weight:500;margin-bottom:10px;font-size:16px;color:#333}.issues-list .issue-item .issue-content .issue-tips .tips-content[data-v-f4943d26]{color:#666;white-space:pre-line;line-height:1.6;font-size:15px}\n/*$vite$:1*/",document.head.appendChild(s);const f={class:"issues-list"},p=["item"],c={class:"issue-header"},m={class:"issue-number"},g=["innerHTML"],v={class:"issue-level medium"},x={class:"issue-content"},b={class:"issue-ps"},h={class:"issue-tips"},y=["innerHTML"],k={key:0,class:"pagination-note"};e("default",n(i({__name:"MidRiskSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const s=e;return(e,i)=>(a(),t("div",f,[(a(!0),t(u,null,l(s.data,(e,s)=>(a(),t("div",{class:"issue-item medium",key:"medium-"+s,item:e},[o("div",c,[o("div",m,r(e.num),1),o("div",{class:"issue-name",innerHTML:e.name},null,8,g),o("div",v,r(e.level),1)]),o("div",x,[o("div",b,r(e.ps),1),o("div",h,[i[0]||(i[0]=o("div",{class:"tips-title"},"Solution:",-1)),o("div",{class:"tips-content",innerHTML:e.tips.replace(/\n/g,"
")},null,8,y)])])],8,p))),128)),s.totalPages>1?(a(),t("div",k," Total "+r(s.totalPages)+" pages, current page "+r(s.pageIndex+1)+". ",1)):d("",!0)]))}}),[["__scopeId","data-v-f4943d26"]]))}}}); diff --git a/BTPanel/static/vite/js/MidRiskSection.js b/BTPanel/static/vite/js/MidRiskSection.js index d6e330cf..cd3ea1dc 100644 --- a/BTPanel/static/vite/js/MidRiskSection.js +++ b/BTPanel/static/vite/js/MidRiskSection.js @@ -1 +1 @@ -import{k as s,R as e,V as a,an as i,F as t,O as n,S as l,a4 as r}from"./vue.js?v=1760428868419";import{p}from"./page_layout.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./public.js?v=1760428868419";const u={class:"issues-list"},o=["item"],d={class:"issue-header"},m={class:"issue-number"},c=["innerHTML"],v={class:"issue-level medium"},g={class:"issue-content"},_={class:"issue-ps"},j={class:"issue-tips"},y=["innerHTML"],b={key:0,class:"pagination-note"},f=p(s({__name:"MidRiskSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(s){const p=s;return(s,f)=>(a(),e("div",u,[(a(!0),e(t,null,n(p.data,(s,i)=>(a(),e("div",{class:"issue-item medium",key:"medium-"+i,item:s},[l("div",d,[l("div",m,r(s.num),1),l("div",{class:"issue-name",innerHTML:s.name},null,8,c),l("div",v,r(s.level),1)]),l("div",g,[l("div",_,r(s.ps),1),l("div",j,[f[0]||(f[0]=l("div",{class:"tips-title"},"Solution:",-1)),l("div",{class:"tips-content",innerHTML:s.tips.replace(/\n/g,"
")},null,8,y)])])],8,o))),128)),p.totalPages>1?(a(),e("div",b," Total "+r(p.totalPages)+" pages, current page "+r(p.pageIndex+1)+". ",1)):i("",!0)]))}}),[["__scopeId","data-v-f4943d26"]]);export{f as default}; +import{k as s,R as e,V as a,an as i,F as t,O as n,S as l,a4 as r}from"./vue.js?v=1762424784323";import{p}from"./page_layout.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./public.js?v=1762424784323";const u={class:"issues-list"},o=["item"],d={class:"issue-header"},m={class:"issue-number"},c=["innerHTML"],v={class:"issue-level medium"},g={class:"issue-content"},_={class:"issue-ps"},j={class:"issue-tips"},y=["innerHTML"],b={key:0,class:"pagination-note"},f=p(s({__name:"MidRiskSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(s){const p=s;return(s,f)=>(a(),e("div",u,[(a(!0),e(t,null,n(p.data,(s,i)=>(a(),e("div",{class:"issue-item medium",key:"medium-"+i,item:s},[l("div",d,[l("div",m,r(s.num),1),l("div",{class:"issue-name",innerHTML:s.name},null,8,c),l("div",v,r(s.level),1)]),l("div",g,[l("div",_,r(s.ps),1),l("div",j,[f[0]||(f[0]=l("div",{class:"tips-title"},"Solution:",-1)),l("div",{class:"tips-content",innerHTML:s.tips.replace(/\n/g,"
")},null,8,y)])])],8,o))),128)),p.totalPages>1?(a(),e("div",b," Total "+r(p.totalPages)+" pages, current page "+r(p.pageIndex+1)+". ",1)):i("",!0)]))}}),[["__scopeId","data-v-f4943d26"]]);export{f as default}; diff --git a/BTPanel/static/vite/js/PasteConfirm-legacy.js b/BTPanel/static/vite/js/PasteConfirm-legacy.js index a17e6be5..22503d8d 100644 --- a/BTPanel/static/vite/js/PasteConfirm-legacy.js +++ b/BTPanel/static/vite/js/PasteConfirm-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./index-legacy39.js?v=1760428868419","./CalcVerify-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./soft-legacy2.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./file-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419"],function(e,l){"use strict";var t,a,s,n,i,u,c,o,r,f,y,g,m,v,d,p,_,j,w;return{setters:[e=>{t=e._},e=>{a=e.n,s=e.a8},e=>{n=e.f,i=e.B,u=e.g},e=>{c=e.C},e=>{o=e.k,r=e.i,f=e.r,y=e.av,g=e.a2,m=e.V,v=e.a3,d=e.S,p=e.W,_=e.U,j=e.ak},e=>{w=e.dg},null,null,null,null,null,null,null,null],execute:function(){const l={class:"paste-confirm-wrapper"};e("default",o({name:"PasteConfirm",__name:"PasteConfirm",setup(e,{expose:o}){const h=r("fileStore"),{currentPath:C,fileList:k,fileCopyCache:x,waitForPaste:P}=h,S=f(!1),V=y("calcVerifyRef"),z=f([]),b=f([{key:"nm",title:"File name",ellipsis:{tooltip:!0}},{key:"sz",title:"Size",width:120,render:e=>a(e.sz)},{key:"mt",title:"Last edit time",width:160,render:e=>s(e.mt)}]);async function F(){await(V.value?.validate()),await i(1,C.value),P.value=!1,u(h)}return o({open:function(){S.value=!0,z.value=n(k.value,x.value)},close:function(){S.value=!1}}),(e,a)=>{const s=w,n=t;return m(),g(n,{show:_(S),"onUpdate:show":a[0]||(a[0]=e=>j(S)?S.value=e:null),width:480,title:"The files will be overwritten",footer:!0,onConfirm:F},{default:v(()=>[d("div",l,[p(s,{columns:_(b),data:_(z)},null,8,["columns","data"]),p(c,{ref_key:"calcVerifyRef",ref:V,class:"mt-10px"},null,512)])]),_:1},8,["show"])}}}))}}}); +System.register(["./index-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./index-legacy39.js?v=1762424784323","./CalcVerify-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./file-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323"],function(e,l){"use strict";var t,a,s,n,i,u,c,o,r,f,y,g,m,v,d,p,_,j,w;return{setters:[e=>{t=e._},e=>{a=e.n,s=e.a8},e=>{n=e.f,i=e.B,u=e.g},e=>{c=e.C},e=>{o=e.k,r=e.i,f=e.r,y=e.av,g=e.a2,m=e.V,v=e.a3,d=e.S,p=e.W,_=e.U,j=e.ak},e=>{w=e.dg},null,null,null,null,null,null,null,null],execute:function(){const l={class:"paste-confirm-wrapper"};e("default",o({name:"PasteConfirm",__name:"PasteConfirm",setup(e,{expose:o}){const h=r("fileStore"),{currentPath:C,fileList:k,fileCopyCache:x,waitForPaste:P}=h,S=f(!1),V=y("calcVerifyRef"),z=f([]),b=f([{key:"nm",title:"File name",ellipsis:{tooltip:!0}},{key:"sz",title:"Size",width:120,render:e=>a(e.sz)},{key:"mt",title:"Last edit time",width:160,render:e=>s(e.mt)}]);async function F(){await(V.value?.validate()),await i(1,C.value),P.value=!1,u(h)}return o({open:function(){S.value=!0,z.value=n(k.value,x.value)},close:function(){S.value=!1}}),(e,a)=>{const s=w,n=t;return m(),g(n,{show:_(S),"onUpdate:show":a[0]||(a[0]=e=>j(S)?S.value=e:null),width:480,title:"The files will be overwritten",footer:!0,onConfirm:F},{default:v(()=>[d("div",l,[p(s,{columns:_(b),data:_(z)},null,8,["columns","data"]),p(c,{ref_key:"calcVerifyRef",ref:V,class:"mt-10px"},null,512)])]),_:1},8,["show"])}}}))}}}); diff --git a/BTPanel/static/vite/js/PasteConfirm.js b/BTPanel/static/vite/js/PasteConfirm.js index 45f7451f..6c406fb4 100644 --- a/BTPanel/static/vite/js/PasteConfirm.js +++ b/BTPanel/static/vite/js/PasteConfirm.js @@ -1 +1 @@ -import{_ as e}from"./index.js?v=1760428868419";import{n as t,a8 as a}from"./page_layout.js?v=1760428868419";import{f as s,B as i,g as o}from"./index39.js?v=1760428868419";import{C as r}from"./CalcVerify.js?v=1760428868419";import{k as l,i as n,r as m,av as p,a2 as f,V as u,a3 as c,S as v,W as d,U as _,ak as j}from"./vue.js?v=1760428868419";import{dg as w}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./public.js?v=1760428868419";import"./soft2.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";import"./file2.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";const y={class:"paste-confirm-wrapper"},h=l({name:"PasteConfirm",__name:"PasteConfirm",setup(l,{expose:h}){const C=n("fileStore"),{currentPath:k,fileList:x,fileCopyCache:g,waitForPaste:P}=C,V=m(!1),z=p("calcVerifyRef"),S=m([]),b=m([{key:"nm",title:"File name",ellipsis:{tooltip:!0}},{key:"sz",title:"Size",width:120,render:e=>t(e.sz)},{key:"mt",title:"Last edit time",width:160,render:e=>a(e.mt)}]);async function F(){var e;await(null==(e=z.value)?void 0:e.validate()),await i(1,k.value),P.value=!1,o(C)}return h({open:function(){V.value=!0,S.value=s(x.value,g.value)},close:function(){V.value=!1}}),(t,a)=>{const s=w,i=e;return u(),f(i,{show:_(V),"onUpdate:show":a[0]||(a[0]=e=>j(V)?V.value=e:null),width:480,title:"The files will be overwritten",footer:!0,onConfirm:F},{default:c(()=>[v("div",y,[d(s,{columns:_(b),data:_(S)},null,8,["columns","data"]),d(r,{ref_key:"calcVerifyRef",ref:z,class:"mt-10px"},null,512)])]),_:1},8,["show"])}}});export{h as default}; +import{_ as e}from"./index.js?v=1762424784323";import{n as t,a8 as a}from"./page_layout.js?v=1762424784323";import{f as s,B as i,g as o}from"./index39.js?v=1762424784323";import{C as r}from"./CalcVerify.js?v=1762424784323";import{k as l,i as n,r as m,av as p,a2 as f,V as u,a3 as c,S as v,W as d,U as _,ak as j}from"./vue.js?v=1762424784323";import{dg as w}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./public.js?v=1762424784323";import"./soft2.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";import"./file2.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";const y={class:"paste-confirm-wrapper"},h=l({name:"PasteConfirm",__name:"PasteConfirm",setup(l,{expose:h}){const C=n("fileStore"),{currentPath:k,fileList:x,fileCopyCache:g,waitForPaste:P}=C,V=m(!1),z=p("calcVerifyRef"),S=m([]),b=m([{key:"nm",title:"File name",ellipsis:{tooltip:!0}},{key:"sz",title:"Size",width:120,render:e=>t(e.sz)},{key:"mt",title:"Last edit time",width:160,render:e=>a(e.mt)}]);async function F(){var e;await(null==(e=z.value)?void 0:e.validate()),await i(1,k.value),P.value=!1,o(C)}return h({open:function(){V.value=!0,S.value=s(x.value,g.value)},close:function(){V.value=!1}}),(t,a)=>{const s=w,i=e;return u(),f(i,{show:_(V),"onUpdate:show":a[0]||(a[0]=e=>j(V)?V.value=e:null),width:480,title:"The files will be overwritten",footer:!0,onConfirm:F},{default:c(()=>[v("div",y,[d(s,{columns:_(b),data:_(S)},null,8,["columns","data"]),d(r,{ref_key:"calcVerifyRef",ref:z,class:"mt-10px"},null,512)])]),_:1},8,["show"])}}});export{h as default}; diff --git a/BTPanel/static/vite/js/PasteSingleConfirm-legacy.js b/BTPanel/static/vite/js/PasteSingleConfirm-legacy.js index f663f1be..5bbe3be0 100644 --- a/BTPanel/static/vite/js/PasteSingleConfirm-legacy.js +++ b/BTPanel/static/vite/js/PasteSingleConfirm-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./index-legacy39.js?v=1760428868419","./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./soft-legacy2.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./file-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419"],function(e,a){"use strict";var l,t,n,i,s,u,o,r,f,c,m,p,d,v,y,_,g,w,j,C,b,h,x,$,T,z,P;return{setters:[e=>{l=e._},e=>{t=e._},e=>{n=e.n,i=e.a8},e=>{s=e.f,u=e.c,o=e.a,r=e.g},e=>{f=e.a},e=>{c=e.k,m=e.P,p=e.i,d=e.r,v=e.e,y=e.a2,_=e.V,g=e.a3,w=e.S,j=e.W,C=e.U,b=e.j,h=e.a4,x=e.ak},e=>{$=e.dR,T=e.dT,z=e.dU,P=e.au},null,null,null,null,null,null,null],execute:function(){const a={class:"p-20px"},S={class:"w-240px"};e("default",c({name:"PasteSingleConfirm",__name:"PasteSingleConfirm",setup(e,{expose:c}){const{t:U}=m(),F=p("fileStore"),{currentPath:k,fileList:M,fileCopyCache:H,copiedFile:L,waitForPaste:N}=F,R=d(!1),V=v({type:"rename",name:"",size:0,modifyTime:""}),W=e=>{const a=s(M.value,H.value);a.length&&("overwrite"===e?V.name=a[0].nm:"rename"===e&&(V.name=q(a[0].nm)))},q=e=>e.replace(/\.(?=[^.]+$)/," - copy.");function A(){R.value=!1}async function B(){await o(L.value.path,k.value+"/"+V.name),N.value=!1,r(F)}async function D(){if("rename"==V.type)return await u(k.value,V.name)?f({title:U("file.pasteConfirm.overwriteTitle"),content:U("file.pasteConfirm.overwriteMessage",[V.name]),onConfirm:async({hide:e})=>{await B(),e(),A()}}):(await B(),A()),!1;await B()}return c({open:function(){R.value=!0;const e=s(M.value,H.value);1==e.length&&(V.type="rename",V.name=q(e[0].nm),V.size=e[0].sz,V.modifyTime=i(e[0].mt))},close:A}),(e,s)=>{const u=z,o=T,r=$,f=P,c=t,m=l;return _(),y(m,{show:C(R),"onUpdate:show":s[2]||(s[2]=e=>x(R)?R.value=e:null),width:440,title:e.$t("file.pasteConfirm.title"),footer:!0,onConfirm:D},{default:g(()=>[w("div",a,[j(c,null,{default:g(()=>[j(r,{label:e.$t("file.pasteConfirm.operationType")},{default:g(()=>[j(o,{value:C(V).type,"onUpdate:value":[s[0]||(s[0]=e=>C(V).type=e),W]},{default:g(()=>[j(u,{value:"overwrite"},{default:g(()=>[b(h(e.$t("file.pasteConfirm.overwriteFile")),1)]),_:1}),j(u,{value:"rename"},{default:g(()=>[b(h(e.$t("file.pasteConfirm.renameFile")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),j(r,{label:e.$t("file.pasteConfirm.fileName")},{default:g(()=>[w("div",S,[j(f,{value:C(V).name,"onUpdate:value":s[1]||(s[1]=e=>C(V).name=e),disabled:"overwrite"==C(V).type,placeholder:""},null,8,["value","disabled"])])]),_:1},8,["label"]),j(r,{label:e.$t("file.pasteConfirm.size")},{default:g(()=>[w("span",null,h(C(n)(C(V).size)),1)]),_:1},8,["label"]),j(r,{label:e.$t("file.pasteConfirm.lastModified"),"show-feedback":!1},{default:g(()=>[w("span",null,h(C(i)(C(V).modifyTime)),1)]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title"])}}}))}}}); +System.register(["./index-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./index-legacy39.js?v=1762424784323","./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./file-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323"],function(e,a){"use strict";var l,t,n,i,s,u,o,r,f,c,m,p,d,v,y,_,g,w,j,C,b,h,x,$,T,z,P;return{setters:[e=>{l=e._},e=>{t=e._},e=>{n=e.n,i=e.a8},e=>{s=e.f,u=e.c,o=e.a,r=e.g},e=>{f=e.a},e=>{c=e.k,m=e.P,p=e.i,d=e.r,v=e.e,y=e.a2,_=e.V,g=e.a3,w=e.S,j=e.W,C=e.U,b=e.j,h=e.a4,x=e.ak},e=>{$=e.dR,T=e.dT,z=e.dU,P=e.au},null,null,null,null,null,null,null],execute:function(){const a={class:"p-20px"},S={class:"w-240px"};e("default",c({name:"PasteSingleConfirm",__name:"PasteSingleConfirm",setup(e,{expose:c}){const{t:U}=m(),F=p("fileStore"),{currentPath:k,fileList:M,fileCopyCache:H,copiedFile:L,waitForPaste:N}=F,R=d(!1),V=v({type:"rename",name:"",size:0,modifyTime:""}),W=e=>{const a=s(M.value,H.value);a.length&&("overwrite"===e?V.name=a[0].nm:"rename"===e&&(V.name=q(a[0].nm)))},q=e=>e.replace(/\.(?=[^.]+$)/," - copy.");function A(){R.value=!1}async function B(){await o(L.value.path,k.value+"/"+V.name),N.value=!1,r(F)}async function D(){if("rename"==V.type)return await u(k.value,V.name)?f({title:U("file.pasteConfirm.overwriteTitle"),content:U("file.pasteConfirm.overwriteMessage",[V.name]),onConfirm:async({hide:e})=>{await B(),e(),A()}}):(await B(),A()),!1;await B()}return c({open:function(){R.value=!0;const e=s(M.value,H.value);1==e.length&&(V.type="rename",V.name=q(e[0].nm),V.size=e[0].sz,V.modifyTime=i(e[0].mt))},close:A}),(e,s)=>{const u=z,o=T,r=$,f=P,c=t,m=l;return _(),y(m,{show:C(R),"onUpdate:show":s[2]||(s[2]=e=>x(R)?R.value=e:null),width:440,title:e.$t("file.pasteConfirm.title"),footer:!0,onConfirm:D},{default:g(()=>[w("div",a,[j(c,null,{default:g(()=>[j(r,{label:e.$t("file.pasteConfirm.operationType")},{default:g(()=>[j(o,{value:C(V).type,"onUpdate:value":[s[0]||(s[0]=e=>C(V).type=e),W]},{default:g(()=>[j(u,{value:"overwrite"},{default:g(()=>[b(h(e.$t("file.pasteConfirm.overwriteFile")),1)]),_:1}),j(u,{value:"rename"},{default:g(()=>[b(h(e.$t("file.pasteConfirm.renameFile")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),j(r,{label:e.$t("file.pasteConfirm.fileName")},{default:g(()=>[w("div",S,[j(f,{value:C(V).name,"onUpdate:value":s[1]||(s[1]=e=>C(V).name=e),disabled:"overwrite"==C(V).type,placeholder:""},null,8,["value","disabled"])])]),_:1},8,["label"]),j(r,{label:e.$t("file.pasteConfirm.size")},{default:g(()=>[w("span",null,h(C(n)(C(V).size)),1)]),_:1},8,["label"]),j(r,{label:e.$t("file.pasteConfirm.lastModified"),"show-feedback":!1},{default:g(()=>[w("span",null,h(C(i)(C(V).modifyTime)),1)]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title"])}}}))}}}); diff --git a/BTPanel/static/vite/js/PasteSingleConfirm.js b/BTPanel/static/vite/js/PasteSingleConfirm.js index 71a98041..b9a6a8e0 100644 --- a/BTPanel/static/vite/js/PasteSingleConfirm.js +++ b/BTPanel/static/vite/js/PasteSingleConfirm.js @@ -1 +1 @@ -import{_ as e}from"./index.js?v=1760428868419";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{n as t,a8 as i}from"./page_layout.js?v=1760428868419";import{f as l,c as s,a as o,g as n}from"./index39.js?v=1760428868419";import{a as r}from"./public.js?v=1760428868419";import{k as m,P as f,i as p,r as u,e as d,a2 as v,V as _,a3 as c,S as w,W as y,U as j,j as C,a4 as b,ak as h}from"./vue.js?v=1760428868419";import{dR as g,dT as x,dU as $,au as T}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./soft2.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";import"./file2.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";const z={class:"p-20px"},P={class:"w-240px"},U=m({name:"PasteSingleConfirm",__name:"PasteSingleConfirm",setup(m,{expose:U}){const{t:F}=f(),S=p("fileStore"),{currentPath:k,fileList:M,fileCopyCache:H,copiedFile:L,waitForPaste:N}=S,R=u(!1),V=d({type:"rename",name:"",size:0,modifyTime:""}),W=e=>{const a=l(M.value,H.value);a.length&&("overwrite"===e?V.name=a[0].nm:"rename"===e&&(V.name=q(a[0].nm)))},q=e=>e.replace(/\.(?=[^.]+$)/," - copy.");function A(){R.value=!1}async function B(){await o(L.value.path,k.value+"/"+V.name),N.value=!1,n(S)}async function D(){if("rename"==V.type){return await s(k.value,V.name)?r({title:F("file.pasteConfirm.overwriteTitle"),content:F("file.pasteConfirm.overwriteMessage",[V.name]),onConfirm:async({hide:e})=>{await B(),e(),A()}}):(await B(),A()),!1}await B()}return U({open:function(){R.value=!0;const e=l(M.value,H.value);1==e.length&&(V.type="rename",V.name=q(e[0].nm),V.size=e[0].sz,V.modifyTime=i(e[0].mt))},close:A}),(l,s)=>{const o=$,n=x,r=g,m=T,f=a,p=e;return _(),v(p,{show:j(R),"onUpdate:show":s[2]||(s[2]=e=>h(R)?R.value=e:null),width:440,title:l.$t("file.pasteConfirm.title"),footer:!0,onConfirm:D},{default:c(()=>[w("div",z,[y(f,null,{default:c(()=>[y(r,{label:l.$t("file.pasteConfirm.operationType")},{default:c(()=>[y(n,{value:j(V).type,"onUpdate:value":[s[0]||(s[0]=e=>j(V).type=e),W]},{default:c(()=>[y(o,{value:"overwrite"},{default:c(()=>[C(b(l.$t("file.pasteConfirm.overwriteFile")),1)]),_:1}),y(o,{value:"rename"},{default:c(()=>[C(b(l.$t("file.pasteConfirm.renameFile")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),y(r,{label:l.$t("file.pasteConfirm.fileName")},{default:c(()=>[w("div",P,[y(m,{value:j(V).name,"onUpdate:value":s[1]||(s[1]=e=>j(V).name=e),disabled:"overwrite"==j(V).type,placeholder:""},null,8,["value","disabled"])])]),_:1},8,["label"]),y(r,{label:l.$t("file.pasteConfirm.size")},{default:c(()=>[w("span",null,b(j(t)(j(V).size)),1)]),_:1},8,["label"]),y(r,{label:l.$t("file.pasteConfirm.lastModified"),"show-feedback":!1},{default:c(()=>[w("span",null,b(j(i)(j(V).modifyTime)),1)]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title"])}}});export{U as default}; +import{_ as e}from"./index.js?v=1762424784323";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{n as t,a8 as i}from"./page_layout.js?v=1762424784323";import{f as l,c as s,a as o,g as n}from"./index39.js?v=1762424784323";import{a as r}from"./public.js?v=1762424784323";import{k as m,P as f,i as p,r as u,e as d,a2 as v,V as _,a3 as c,S as w,W as y,U as j,j as C,a4 as b,ak as h}from"./vue.js?v=1762424784323";import{dR as g,dT as x,dU as $,au as T}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./soft2.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";import"./file2.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";const z={class:"p-20px"},P={class:"w-240px"},U=m({name:"PasteSingleConfirm",__name:"PasteSingleConfirm",setup(m,{expose:U}){const{t:F}=f(),S=p("fileStore"),{currentPath:k,fileList:M,fileCopyCache:H,copiedFile:L,waitForPaste:N}=S,R=u(!1),V=d({type:"rename",name:"",size:0,modifyTime:""}),W=e=>{const a=l(M.value,H.value);a.length&&("overwrite"===e?V.name=a[0].nm:"rename"===e&&(V.name=q(a[0].nm)))},q=e=>e.replace(/\.(?=[^.]+$)/," - copy.");function A(){R.value=!1}async function B(){await o(L.value.path,k.value+"/"+V.name),N.value=!1,n(S)}async function D(){if("rename"==V.type){return await s(k.value,V.name)?r({title:F("file.pasteConfirm.overwriteTitle"),content:F("file.pasteConfirm.overwriteMessage",[V.name]),onConfirm:async({hide:e})=>{await B(),e(),A()}}):(await B(),A()),!1}await B()}return U({open:function(){R.value=!0;const e=l(M.value,H.value);1==e.length&&(V.type="rename",V.name=q(e[0].nm),V.size=e[0].sz,V.modifyTime=i(e[0].mt))},close:A}),(l,s)=>{const o=$,n=x,r=g,m=T,f=a,p=e;return _(),v(p,{show:j(R),"onUpdate:show":s[2]||(s[2]=e=>h(R)?R.value=e:null),width:440,title:l.$t("file.pasteConfirm.title"),footer:!0,onConfirm:D},{default:c(()=>[w("div",z,[y(f,null,{default:c(()=>[y(r,{label:l.$t("file.pasteConfirm.operationType")},{default:c(()=>[y(n,{value:j(V).type,"onUpdate:value":[s[0]||(s[0]=e=>j(V).type=e),W]},{default:c(()=>[y(o,{value:"overwrite"},{default:c(()=>[C(b(l.$t("file.pasteConfirm.overwriteFile")),1)]),_:1}),y(o,{value:"rename"},{default:c(()=>[C(b(l.$t("file.pasteConfirm.renameFile")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),y(r,{label:l.$t("file.pasteConfirm.fileName")},{default:c(()=>[w("div",P,[y(m,{value:j(V).name,"onUpdate:value":s[1]||(s[1]=e=>j(V).name=e),disabled:"overwrite"==j(V).type,placeholder:""},null,8,["value","disabled"])])]),_:1},8,["label"]),y(r,{label:l.$t("file.pasteConfirm.size")},{default:c(()=>[w("span",null,b(j(t)(j(V).size)),1)]),_:1},8,["label"]),y(r,{label:l.$t("file.pasteConfirm.lastModified"),"show-feedback":!1},{default:c(()=>[w("span",null,b(j(i)(j(V).modifyTime)),1)]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title"])}}});export{U as default}; diff --git a/BTPanel/static/vite/js/Permission-legacy.js b/BTPanel/static/vite/js/Permission-legacy.js index f72e8ba7..6170bae5 100644 --- a/BTPanel/static/vite/js/Permission-legacy.js +++ b/BTPanel/static/vite/js/Permission-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./index-legacy39.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./soft-legacy2.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./file-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419"],function(e,i){"use strict";var a,t,l,s,n,o,r,p,c,d,u,f,m,v,b,g,x,w,h,y,k,_,M,$,j,P,S,C,U,B,O,N,q;return{setters:[e=>{a=e._},e=>{t=e.f,l=e.a,s=e.h},e=>{n=e.a8,o=e.t,r=e.S,p=e._,c=e.w,d=e.p},e=>{u=e.g},e=>{f=e.aC,m=e.eg,v=e._,b=e.au,g=e.dV},e=>{x=e.k,w=e.P,h=e.i,y=e.r,k=e.R,_=e.V,M=e.W,$=e.a3,j=e.U,P=e.S,S=e.an,C=e.H,U=e.a4,B=e.j,O=e.ak,N=e.F,q=e.n},null,null,null,null,null,null,null],execute:function(){var i=document.createElement("style");i.textContent='@charset "UTF-8";.modal-footer-btns[data-v-b8bd1cf5]{display:flex;align-items:center;flex-direction:row;justify-content:end;gap:10px;padding:10px}.single-line-ellipsis[data-v-b8bd1cf5]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.permission-wrapper[data-v-b8bd1cf5]{height:360px}.permission-wrapper .tit[data-v-b8bd1cf5]{height:46px;display:flex;align-items:center;flex-direction:row}.permission-wrapper .tit .tit-item[data-v-b8bd1cf5]{flex:1;line-height:46px;text-align:center;cursor:pointer;font-size:14px;background:var(--color-bg-3)}.permission-wrapper .tit .tit-item.active[data-v-b8bd1cf5]{background-color:var(--color-bg-2)}.permission-wrapper .content[data-v-b8bd1cf5]{padding:20px}.permission-wrapper .content .backup-notice[data-v-b8bd1cf5]{display:flex;align-items:center;flex-direction:row;gap:10px;padding:10px;margin-bottom:20px;background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:10px}.permission-wrapper .content .options[data-v-b8bd1cf5]{display:flex;align-items:center;flex-direction:row;gap:20px;margin-bottom:20px}.permission-wrapper .content .options .option-item[data-v-b8bd1cf5]{flex:1;padding:15px 10px;border:1px solid var(--color-border);border-radius:5px;position:relative}.permission-wrapper .content .options .option-item[data-v-b8bd1cf5]:before{content:"Owner";display:block;width:auto;height:30px;padding:5px;position:absolute;left:10px;top:-15px;font-size:14px;background-color:var(--color-modal)}.permission-wrapper .content .options .option-item.group[data-v-b8bd1cf5]:before{content:"Group"}.permission-wrapper .content .options .option-item.public[data-v-b8bd1cf5]:before{content:"Public"}.permission-wrapper .content .other-settings[data-v-b8bd1cf5]{display:flex;align-items:center;flex-direction:row;gap:10px}.permission-wrapper .content .other-settings .setting-item[data-v-b8bd1cf5]{flex:1;display:flex;align-items:center;flex-direction:row;gap:10px}.permission-wrapper .content .backup-list[data-v-b8bd1cf5],.permission-wrapper .content .backup-list-item[data-v-b8bd1cf5]{display:flex;align-items:center;flex-direction:row;background:#f6f6f6;border:1px solid var(--color-border);padding:10px}.permission-wrapper .content .backup-list .name[data-v-b8bd1cf5],.permission-wrapper .content .backup-list-item .name[data-v-b8bd1cf5]{flex:1}.permission-wrapper .content .backup-list .permission[data-v-b8bd1cf5],.permission-wrapper .content .backup-list-item .permission[data-v-b8bd1cf5],.permission-wrapper .content .backup-list .owner[data-v-b8bd1cf5],.permission-wrapper .content .backup-list-item .owner[data-v-b8bd1cf5]{flex:1.5}.permission-wrapper .content .backup-list .backup-time[data-v-b8bd1cf5],.permission-wrapper .content .backup-list-item .backup-time[data-v-b8bd1cf5]{flex:2}.permission-wrapper .content .backup-list .opt[data-v-b8bd1cf5],.permission-wrapper .content .backup-list-item .opt[data-v-b8bd1cf5]{flex:3;text-align:right}.permission-wrapper .content .backup-list-item[data-v-b8bd1cf5]{border-top:none;background-color:#fff}.confirm-backup-wrapper[data-v-b8bd1cf5]{padding:20px}\n/*$vite$:1*/',document.head.appendChild(i);const L={class:"permission-wrapper"},V={class:"tit"},z={key:0,class:"content"},A={class:"backup-notice"},F={class:"options"},R={class:"option-item"},T={class:"option-item group"},D={class:"option-item public"},W={class:"other-settings"},G={class:"setting-item"},H={class:"setting-item"},E={class:"setting-item"},I={key:1,class:"content"},J={class:"backup-notice"},K={class:"confirm-backup-wrapper"},Q={class:"mb-10px"},X={class:"flex justify-start items-center gap-10px"};e("default",d(x({__name:"Permission",setup(e,{expose:i}){const{t:d}=w(),x=h("fileStore"),{choosedKeys:Y,fileList:Z,currentPath:ee}=x,ie=y(!1),ae=y(!1),te=y(""),le=y([]),se=y(!1),ne=y("SetPermission"),oe=y("777"),re=y("root"),pe=y(1),ce=y([]),de=y(["4","2","1"]),ue=y(["4","2","1"]),fe=y(["4","2","1"]),me=y([{label:"root",value:"root"},{label:"mysql",value:"mysql"},{label:"www",value:"www"}]),ve=y(!1),be=y([{key:"name",title:d("file.permissionModal.name"),ellipsis:{tooltip:!0}},{key:"permission",title:d("file.permissionModal.permission")},{key:"owner",title:d("file.permissionModal.owner")},{key:"time",title:d("file.permissionModal.backupTime"),width:90,render:e=>n(e.time,"yyyy-MM-dd")},t({width:120,options:e=>[{label:d("file.permissionModal.restore"),onClick:()=>{!async function(e){l({title:d("file.permissionModal.confirmRestore"),content:d("file.permissionModal.restoreWarning"),onConfirm:async()=>{await o.post("/files?action=restore_path_permissions",{path:ce.value[0].path,restore_sub_dir:pe.value,date:e},{requestOptions:{loading:d("file.permissionModal.loading.restoring"),successMessage:!0}}),ie.value=!1}})}(e.time)}},{label:d("Public.Btn.Delete"),onClick:()=>{!async function(e){l({title:d("file.permissionModal.confirmDelete"),content:d("file.permissionModal.deleteWarning"),onConfirm:async()=>{await o.post("/files?action=del_path_premissions",{id:e},{requestOptions:{loading:d("file.permissionModal.loading.deleting"),successMessage:!0}}),Me()}})}(e.id)}}]})]);function ge(e){ne.value=e,"BackupList"==e&&Me()}function xe(){q(()=>{const e=de.value.map(Number).reduce((e,i)=>Number(e)+i,0),i=ue.value.map(Number).reduce((e,i)=>Number(e)+i,0),a=fe.value.map(Number).reduce((e,i)=>Number(e)+i,0);oe.value=String(e)+String(i)+String(a)})}function we(e){let[i,a,t]=e.split("");de.value=he(i),ue.value=he(a),fe.value=he(t)}function he(e){switch(e){case"7":return["4","2","1"];case"6":return["4","2"];case"5":return["4","1"];case"4":return["4"];case"3":return["2","1"];case"2":return["2"];case"1":return["1"];default:return[]}}async function ye(){1==ce.value.length?await o.post("/files?action=SetFileAccess",{user:re.value,access:oe.value,all:pe.value,filename:ce.value[0].path},{requestOptions:{loading:d("file.permissionModal.loading.modifyingPermission"),successMessage:!0}}):ce.value.length>1&&await o.post("/files?action=SetBatchData",{user:re.value,access:oe.value,all:pe.value,path:ee.value,data:JSON.stringify(ce.value.map(e=>e.nm)),type:3}),u(x)}function ke(){te.value="",ae.value=!0}async function _e(){let e=ee.value;1==ce.value.length&&(e=ce.value[0].path),await o.post("/files?action=back_path_permissions",{back_sub_dir:pe.value,path:e,remark:te.value},{requestOptions:{loading:d("file.permissionModal.loading.backing"),successMessage:!0}}),te.value=""}async function Me(){ve.value=!0;try{const{message:e}=await o.post("/files?action=get_path_premissions",{path:ce.value[0].path},{requestOptions:{isOriginalResult:!0}});c(e)&&(le.value=e.map(e=>({id:Number(e[5]),name:e[4],permission:e[2],owner:e[1],time:e[3]})))}finally{ve.value=!1}}async function $e(){l({title:d("file.permissionModal.fixPermissionTitle"),content:d("file.permissionModal.fixPermissionNote"),onConfirm:async()=>{await o.post("/files?action=fix_permissions",{path:ce.value[0].path},{requestOptions:{loading:d("file.permissionModal.loading.fixingPermission"),successMessage:!0}}),ie.value=!1}})}return i({open(){ie.value=!0,ce.value=Z.value.filter(e=>Y.value.includes(e.nm)),async function(){se.value=!0;try{const e=await o.post("/files?action=GetFileAccess",{filename:ce.value[0].path},{requestOptions:{isOriginalResult:!0}});oe.value=String(e.message.chmod),re.value=e.message.chown,we(oe.value)}finally{se.value=!1}}()},close(){ie.value=!1}}),(e,i)=>{const t=p,l=f,n=v,o=m,c=b,d=g,u=s,x=r,w=a;return _(),k(N,null,[M(w,{show:j(ie),"onUpdate:show":i[9]||(i[9]=e=>O(ie)?ie.value=e:null),title:e.$t("file.permissionModal.title")+` [${1===j(ce).length?j(ce)[0].path:"Batch"}]`,width:520,footer:!0,"confirm-text":e.$t("Public.Btn.Apply"),onConfirm:ye},{default:$(()=>[M(x,{show:j(se)},{default:$(()=>[P("div",L,[P("div",V,[P("div",{class:C(["tit-item",{active:"SetPermission"==j(ne)}]),onClick:i[0]||(i[0]=e=>ge("SetPermission"))},U(e.$t("file.permissionModal.setPermission")),3),P("div",{class:C(["tit-item",{active:"BackupList"==j(ne)}]),onClick:i[1]||(i[1]=e=>ge("BackupList"))},U(e.$t("file.permissionModal.backupsList")),3)]),"SetPermission"==j(ne)?(_(),k("div",z,[P("div",A,[M(t,{name:"base-notice-yellow",size:"20"}),P("span",null,U(e.$t("file.permissionModal.noBackup")),1),M(l,{type:"primary",onClick:ke},{default:$(()=>[B(U(e.$t("file.permissionModal.backup")),1)]),_:1}),M(l,{onClick:i[2]||(i[2]=e=>ge("BackupList"))},{default:$(()=>[B(U(e.$t("file.permissionModal.restore")),1)]),_:1})]),P("div",F,[P("div",R,[M(o,{class:"flex flex-col gap-10px",value:j(de),"onUpdate:value":i[3]||(i[3]=e=>O(de)?de.value=e:null),onUpdateValue:xe},{default:$(()=>[M(n,{value:"4"},{default:$(()=>[B(U(e.$t("file.permissionModal.read")),1)]),_:1}),M(n,{value:"2"},{default:$(()=>[B(U(e.$t("file.permissionModal.write")),1)]),_:1}),M(n,{value:"1"},{default:$(()=>[B(U(e.$t("file.permissionModal.execute")),1)]),_:1})]),_:1},8,["value"])]),P("div",T,[M(o,{class:"flex flex-col gap-10px",value:j(ue),"onUpdate:value":i[4]||(i[4]=e=>O(ue)?ue.value=e:null),onUpdateValue:xe},{default:$(()=>[M(n,{value:"4"},{default:$(()=>[B(U(e.$t("file.permissionModal.read")),1)]),_:1}),M(n,{value:"2"},{default:$(()=>[B(U(e.$t("file.permissionModal.write")),1)]),_:1}),M(n,{value:"1"},{default:$(()=>[B(U(e.$t("file.permissionModal.execute")),1)]),_:1})]),_:1},8,["value"])]),P("div",D,[M(o,{class:"flex flex-col gap-10px",value:j(fe),"onUpdate:value":i[5]||(i[5]=e=>O(fe)?fe.value=e:null),onUpdateValue:xe},{default:$(()=>[M(n,{value:"4"},{default:$(()=>[B(U(e.$t("file.permissionModal.read")),1)]),_:1}),M(n,{value:"2"},{default:$(()=>[B(U(e.$t("file.permissionModal.write")),1)]),_:1}),M(n,{value:"1"},{default:$(()=>[B(U(e.$t("file.permissionModal.execute")),1)]),_:1})]),_:1},8,["value"])])]),P("div",W,[P("div",G,[M(c,{class:"flex-1",style:{width:"50px"},value:j(oe),"onUpdate:value":i[6]||(i[6]=e=>O(oe)?oe.value=e:null),onUpdateValue:we},null,8,["value"]),P("span",null,U(e.$t("file.permissionModal.permission"))+",",1)]),P("div",H,[P("span",null,U(e.$t("file.permissionModal.owner")),1),M(d,{class:"flex-1",style:{width:"50px"},options:j(me),value:j(re),"onUpdate:value":i[7]||(i[7]=e=>O(re)?re.value=e:null)},null,8,["options","value"])]),P("div",E,[M(n,{checked:j(pe),"onUpdate:checked":i[8]||(i[8]=e=>O(pe)?pe.value=e:null),"checked-value":1,"unchecked-value":0},{default:$(()=>[B(U(e.$t("file.permissionModal.applyToSubdir")),1)]),_:1},8,["checked"])])])])):"BackupList"==j(ne)?(_(),k("div",I,[P("div",J,[M(t,{name:"base-notice-yellow",size:"20"}),P("span",null,U(e.$t("file.permissionModal.fixAllPermissions")),1),M(l,{type:"primary",onClick:$e},{default:$(()=>[B(U(e.$t("file.permissionModal.fixPermissions")),1)]),_:1})]),M(u,{loading:j(ve),"max-height":160,data:j(le),columns:j(be)},null,8,["loading","data","columns"])])):S("",!0)])]),_:1},8,["show"])]),_:1},8,["show","title","confirm-text"]),M(w,{show:j(ae),"onUpdate:show":i[11]||(i[11]=e=>O(ae)?ae.value=e:null),title:e.$t("file.permissionModal.confirmBackup"),width:320,footer:!0,onConfirm:_e},{default:$(()=>[P("div",K,[P("div",Q,U(e.$t("file.permissionModal.enterBackupName")),1),P("div",X,[P("span",null,U(e.$t("file.permissionModal.remarks")),1),M(c,{value:j(te),"onUpdate:value":i[10]||(i[10]=e=>O(te)?te.value=e:null),class:"flex-1"},null,8,["value"])])])]),_:1},8,["show","title"])],64)}}}),[["__scopeId","data-v-b8bd1cf5"]]))}}}); +System.register(["./index-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./index-legacy39.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./file-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323"],function(e,i){"use strict";var a,t,l,s,n,o,r,p,c,u,d,f,m,v,g,x,w,b,h,y,k,_,M,$,j,P,S,C,U,B,O,N,q;return{setters:[e=>{a=e._},e=>{t=e.f,l=e.a,s=e.h},e=>{n=e.a8,o=e.t,r=e.S,p=e._,c=e.w,u=e.p},e=>{d=e.g},e=>{f=e.aC,m=e.eg,v=e._,g=e.au,x=e.dV},e=>{w=e.k,b=e.P,h=e.i,y=e.r,k=e.R,_=e.V,M=e.W,$=e.a3,j=e.U,P=e.S,S=e.an,C=e.H,U=e.a4,B=e.j,O=e.ak,N=e.F,q=e.n},null,null,null,null,null,null,null],execute:function(){var i=document.createElement("style");i.textContent='@charset "UTF-8";.modal-footer-btns[data-v-49186f19]{display:flex;align-items:center;flex-direction:row;justify-content:end;gap:10px;padding:10px}.single-line-ellipsis[data-v-49186f19]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.permission-wrapper[data-v-49186f19]{height:360px}.permission-wrapper .tit[data-v-49186f19]{height:46px;display:flex;align-items:center;flex-direction:row}.permission-wrapper .tit .tit-item[data-v-49186f19]{flex:1;line-height:46px;text-align:center;cursor:pointer;font-size:14px;background:var(--color-bg-3)}.permission-wrapper .tit .tit-item.active[data-v-49186f19]{background-color:var(--color-bg-2)}.permission-wrapper .content[data-v-49186f19]{padding:20px}.permission-wrapper .content .backup-notice[data-v-49186f19]{display:flex;align-items:center;flex-direction:row;gap:10px;padding:10px;margin-bottom:20px;background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:10px}.permission-wrapper .content .options[data-v-49186f19]{display:flex;align-items:center;flex-direction:row;gap:20px;margin-bottom:20px}.permission-wrapper .content .options .option-item[data-v-49186f19]{flex:1;padding:15px 10px;border:1px solid var(--color-border);border-radius:5px;position:relative}.permission-wrapper .content .options .option-item[data-v-49186f19]:before{content:"Owner";display:block;width:auto;height:30px;padding:5px;position:absolute;left:10px;top:-15px;font-size:14px;background-color:var(--color-modal)}.permission-wrapper .content .options .option-item.group[data-v-49186f19]:before{content:"Group"}.permission-wrapper .content .options .option-item.public[data-v-49186f19]:before{content:"Public"}.permission-wrapper .content .other-settings[data-v-49186f19]{display:flex;align-items:center;flex-direction:row;gap:10px}.permission-wrapper .content .other-settings .setting-item[data-v-49186f19]{flex:1;display:flex;align-items:center;flex-direction:row;gap:10px}.permission-wrapper .content .backup-list[data-v-49186f19],.permission-wrapper .content .backup-list-item[data-v-49186f19]{display:flex;align-items:center;flex-direction:row;background:#f6f6f6;border:1px solid var(--color-border);padding:10px}.permission-wrapper .content .backup-list .name[data-v-49186f19],.permission-wrapper .content .backup-list-item .name[data-v-49186f19]{flex:1}.permission-wrapper .content .backup-list .permission[data-v-49186f19],.permission-wrapper .content .backup-list-item .permission[data-v-49186f19],.permission-wrapper .content .backup-list .owner[data-v-49186f19],.permission-wrapper .content .backup-list-item .owner[data-v-49186f19]{flex:1.5}.permission-wrapper .content .backup-list .backup-time[data-v-49186f19],.permission-wrapper .content .backup-list-item .backup-time[data-v-49186f19]{flex:2}.permission-wrapper .content .backup-list .opt[data-v-49186f19],.permission-wrapper .content .backup-list-item .opt[data-v-49186f19]{flex:3;text-align:right}.permission-wrapper .content .backup-list-item[data-v-49186f19]{border-top:none;background-color:#fff}.confirm-backup-wrapper[data-v-49186f19]{padding:20px}\n/*$vite$:1*/',document.head.appendChild(i);const L={class:"permission-wrapper"},V={class:"tit"},F={key:0,class:"content"},T={class:"backup-notice"},z={class:"options"},A={class:"option-item"},R={class:"option-item group"},D={class:"option-item public"},W={class:"other-settings"},G={class:"setting-item"},H={class:"setting-item"},E={class:"setting-item"},I={key:1,class:"content"},J={class:"backup-notice"},K={class:"confirm-backup-wrapper"},Q={class:"mb-10px"},X={class:"flex justify-start items-center gap-10px"};e("default",u(w({__name:"Permission",setup(e,{expose:i}){const{t:u}=b(),w=h("fileStore"),{choosedKeys:Y,fileList:Z,currentPath:ee}=w,ie=y(!1),ae=y(!1),te=y(""),le=y([]),se=y(!1),ne=y("SetPermission"),oe=y("777"),re=y("root"),pe=y(1),ce=y([]),ue=y(["4","2","1"]),de=y(["4","2","1"]),fe=y(["4","2","1"]),me=y([{label:"root",value:"root"},{label:"mysql",value:"mysql"},{label:"www",value:"www"}]),ve=y(!1),ge=y([{key:"name",title:u("file.permissionModal.name"),ellipsis:{tooltip:!0}},{key:"permission",title:u("file.permissionModal.permission")},{key:"owner",title:u("file.permissionModal.owner")},{key:"time",title:u("file.permissionModal.backupTime"),width:90,render:e=>n(e.time,"yyyy-MM-dd")},t({width:120,options:e=>[{label:u("file.permissionModal.restore"),onClick:()=>{!async function(e){l({title:u("file.permissionModal.confirmRestore"),content:u("file.permissionModal.restoreWarning"),onConfirm:async()=>{await o.post("/files?action=restore_path_permissions",{path:ce.value[0].path,restore_sub_dir:pe.value,date:e},{requestOptions:{loading:u("file.permissionModal.loading.restoring"),successMessage:!0}}),ie.value=!1}})}(e.time)}},{label:u("Public.Btn.Delete"),onClick:()=>{!async function(e){l({title:u("file.permissionModal.confirmDelete"),content:u("file.permissionModal.deleteWarning"),onConfirm:async()=>{await o.post("/files?action=del_path_premissions",{id:e},{requestOptions:{loading:u("file.permissionModal.loading.deleting"),successMessage:!0}}),Me()}})}(e.id)}}]})]);function xe(e){ne.value=e,"BackupList"==e&&Me()}function we(){q(()=>{const e=ue.value.map(Number).reduce((e,i)=>Number(e)+i,0),i=de.value.map(Number).reduce((e,i)=>Number(e)+i,0),a=fe.value.map(Number).reduce((e,i)=>Number(e)+i,0);oe.value=String(e)+String(i)+String(a)})}function be(e){let[i,a,t]=e.split("");ue.value=he(i),de.value=he(a),fe.value=he(t)}function he(e){switch(e){case"7":return["4","2","1"];case"6":return["4","2"];case"5":return["4","1"];case"4":return["4"];case"3":return["2","1"];case"2":return["2"];case"1":return["1"];default:return[]}}async function ye(){1==ce.value.length?await o.post("/files?action=SetFileAccess",{user:re.value,access:oe.value,all:pe.value?"True":"False",filename:ce.value[0].path},{requestOptions:{loading:u("file.permissionModal.loading.modifyingPermission"),successMessage:!0}}):ce.value.length>1&&await o.post("/files?action=SetBatchData",{user:re.value,access:oe.value,all:pe.value,path:ee.value,data:JSON.stringify(ce.value.map(e=>e.nm)),type:3}),d(w)}function ke(){te.value="",ae.value=!0}async function _e(){let e=ee.value;1==ce.value.length&&(e=ce.value[0].path),await o.post("/files?action=back_path_permissions",{back_sub_dir:pe.value,path:e,remark:te.value},{requestOptions:{loading:u("file.permissionModal.loading.backing"),successMessage:!0}}),te.value=""}async function Me(){ve.value=!0;try{const{message:e}=await o.post("/files?action=get_path_premissions",{path:ce.value[0].path},{requestOptions:{isOriginalResult:!0}});c(e)&&(le.value=e.map(e=>({id:Number(e[5]),name:e[4],permission:e[2],owner:e[1],time:e[3]})))}finally{ve.value=!1}}async function $e(){l({title:u("file.permissionModal.fixPermissionTitle"),content:u("file.permissionModal.fixPermissionNote"),onConfirm:async()=>{await o.post("/files?action=fix_permissions",{path:ce.value[0].path},{requestOptions:{loading:u("file.permissionModal.loading.fixingPermission"),successMessage:!0}}),ie.value=!1}})}return i({open(){ie.value=!0,ce.value=Z.value.filter(e=>Y.value.includes(e.nm)),async function(){se.value=!0;try{const e=await o.post("/files?action=GetFileAccess",{filename:ce.value[0].path},{requestOptions:{isOriginalResult:!0}});oe.value=String(e.message.chmod),re.value=e.message.chown,be(oe.value)}finally{se.value=!1}}()},close(){ie.value=!1}}),(e,i)=>{const t=p,l=f,n=v,o=m,c=g,u=x,d=s,w=r,b=a;return _(),k(N,null,[M(b,{show:j(ie),"onUpdate:show":i[9]||(i[9]=e=>O(ie)?ie.value=e:null),title:e.$t("file.permissionModal.title")+` [${1===j(ce).length?j(ce)[0].path:"Batch"}]`,width:520,footer:!0,"confirm-text":e.$t("Public.Btn.Apply"),onConfirm:ye},{default:$(()=>[M(w,{show:j(se)},{default:$(()=>[P("div",L,[P("div",V,[P("div",{class:C(["tit-item",{active:"SetPermission"==j(ne)}]),onClick:i[0]||(i[0]=e=>xe("SetPermission"))},U(e.$t("file.permissionModal.setPermission")),3),P("div",{class:C(["tit-item",{active:"BackupList"==j(ne)}]),onClick:i[1]||(i[1]=e=>xe("BackupList"))},U(e.$t("file.permissionModal.backupsList")),3)]),"SetPermission"==j(ne)?(_(),k("div",F,[P("div",T,[M(t,{name:"base-notice-yellow",size:"20"}),P("span",null,U(e.$t("file.permissionModal.noBackup")),1),M(l,{type:"primary",onClick:ke},{default:$(()=>[B(U(e.$t("file.permissionModal.backup")),1)]),_:1}),M(l,{onClick:i[2]||(i[2]=e=>xe("BackupList"))},{default:$(()=>[B(U(e.$t("file.permissionModal.restore")),1)]),_:1})]),P("div",z,[P("div",A,[M(o,{class:"flex flex-col gap-10px",value:j(ue),"onUpdate:value":i[3]||(i[3]=e=>O(ue)?ue.value=e:null),onUpdateValue:we},{default:$(()=>[M(n,{value:"4"},{default:$(()=>[B(U(e.$t("file.permissionModal.read")),1)]),_:1}),M(n,{value:"2"},{default:$(()=>[B(U(e.$t("file.permissionModal.write")),1)]),_:1}),M(n,{value:"1"},{default:$(()=>[B(U(e.$t("file.permissionModal.execute")),1)]),_:1})]),_:1},8,["value"])]),P("div",R,[M(o,{class:"flex flex-col gap-10px",value:j(de),"onUpdate:value":i[4]||(i[4]=e=>O(de)?de.value=e:null),onUpdateValue:we},{default:$(()=>[M(n,{value:"4"},{default:$(()=>[B(U(e.$t("file.permissionModal.read")),1)]),_:1}),M(n,{value:"2"},{default:$(()=>[B(U(e.$t("file.permissionModal.write")),1)]),_:1}),M(n,{value:"1"},{default:$(()=>[B(U(e.$t("file.permissionModal.execute")),1)]),_:1})]),_:1},8,["value"])]),P("div",D,[M(o,{class:"flex flex-col gap-10px",value:j(fe),"onUpdate:value":i[5]||(i[5]=e=>O(fe)?fe.value=e:null),onUpdateValue:we},{default:$(()=>[M(n,{value:"4"},{default:$(()=>[B(U(e.$t("file.permissionModal.read")),1)]),_:1}),M(n,{value:"2"},{default:$(()=>[B(U(e.$t("file.permissionModal.write")),1)]),_:1}),M(n,{value:"1"},{default:$(()=>[B(U(e.$t("file.permissionModal.execute")),1)]),_:1})]),_:1},8,["value"])])]),P("div",W,[P("div",G,[M(c,{class:"flex-1",style:{width:"50px"},value:j(oe),"onUpdate:value":i[6]||(i[6]=e=>O(oe)?oe.value=e:null),onUpdateValue:be},null,8,["value"]),P("span",null,U(e.$t("file.permissionModal.permission"))+",",1)]),P("div",H,[P("span",null,U(e.$t("file.permissionModal.owner")),1),M(u,{class:"flex-1",style:{width:"50px"},options:j(me),value:j(re),"onUpdate:value":i[7]||(i[7]=e=>O(re)?re.value=e:null)},null,8,["options","value"])]),P("div",E,[M(n,{checked:j(pe),"onUpdate:checked":i[8]||(i[8]=e=>O(pe)?pe.value=e:null),"checked-value":1,"unchecked-value":0},{default:$(()=>[B(U(e.$t("file.permissionModal.applyToSubdir")),1)]),_:1},8,["checked"])])])])):"BackupList"==j(ne)?(_(),k("div",I,[P("div",J,[M(t,{name:"base-notice-yellow",size:"20"}),P("span",null,U(e.$t("file.permissionModal.fixAllPermissions")),1),M(l,{type:"primary",onClick:$e},{default:$(()=>[B(U(e.$t("file.permissionModal.fixPermissions")),1)]),_:1})]),M(d,{loading:j(ve),"max-height":160,data:j(le),columns:j(ge)},null,8,["loading","data","columns"])])):S("",!0)])]),_:1},8,["show"])]),_:1},8,["show","title","confirm-text"]),M(b,{show:j(ae),"onUpdate:show":i[11]||(i[11]=e=>O(ae)?ae.value=e:null),title:e.$t("file.permissionModal.confirmBackup"),width:320,footer:!0,onConfirm:_e},{default:$(()=>[P("div",K,[P("div",Q,U(e.$t("file.permissionModal.enterBackupName")),1),P("div",X,[P("span",null,U(e.$t("file.permissionModal.remarks")),1),M(c,{value:j(te),"onUpdate:value":i[10]||(i[10]=e=>O(te)?te.value=e:null),class:"flex-1"},null,8,["value"])])])]),_:1},8,["show","title"])],64)}}}),[["__scopeId","data-v-49186f19"]]))}}}); diff --git a/BTPanel/static/vite/js/Permission.js b/BTPanel/static/vite/js/Permission.js index 83235b62..ff1a9f94 100644 --- a/BTPanel/static/vite/js/Permission.js +++ b/BTPanel/static/vite/js/Permission.js @@ -1 +1 @@ -import{_ as e}from"./index.js?v=1760428868419";import{f as a,a as s,h as i}from"./public.js?v=1760428868419";import{a8 as l,t,S as o,_ as n,w as u,p as r}from"./page_layout.js?v=1760428868419";import{g as p}from"./index39.js?v=1760428868419";import{aC as c,eg as d,_ as m,au as f,dV as v}from"./naive.js?v=1760428868419";import{k as g,P as h,i as _,r as M,R as y,V as w,W as k,a3 as x,U as b,S as $,an as j,H as P,a4 as S,j as U,ak as C,F as B,n as N}from"./vue.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./soft2.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";import"./file2.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";const O={class:"permission-wrapper"},q={class:"tit"},L={key:0,class:"content"},V={class:"backup-notice"},A={class:"options"},R={class:"option-item"},D={class:"option-item group"},F={class:"option-item public"},T={class:"other-settings"},W={class:"setting-item"},z={class:"setting-item"},H={class:"setting-item"},G={key:1,class:"content"},I={class:"backup-notice"},J={class:"confirm-backup-wrapper"},K={class:"mb-10px"},E={class:"flex justify-start items-center gap-10px"},Q=r(g({__name:"Permission",setup(r,{expose:g}){const{t:Q}=h(),X=_("fileStore"),{choosedKeys:Y,fileList:Z,currentPath:ee}=X,ae=M(!1),se=M(!1),ie=M(""),le=M([]),te=M(!1),oe=M("SetPermission"),ne=M("777"),ue=M("root"),re=M(1),pe=M([]),ce=M(["4","2","1"]),de=M(["4","2","1"]),me=M(["4","2","1"]),fe=M([{label:"root",value:"root"},{label:"mysql",value:"mysql"},{label:"www",value:"www"}]),ve=M(!1),ge=M([{key:"name",title:Q("file.permissionModal.name"),ellipsis:{tooltip:!0}},{key:"permission",title:Q("file.permissionModal.permission")},{key:"owner",title:Q("file.permissionModal.owner")},{key:"time",title:Q("file.permissionModal.backupTime"),width:90,render:e=>l(e.time,"yyyy-MM-dd")},a({width:120,options:e=>[{label:Q("file.permissionModal.restore"),onClick:()=>{!async function(e){s({title:Q("file.permissionModal.confirmRestore"),content:Q("file.permissionModal.restoreWarning"),onConfirm:async()=>{await t.post("/files?action=restore_path_permissions",{path:pe.value[0].path,restore_sub_dir:re.value,date:e},{requestOptions:{loading:Q("file.permissionModal.loading.restoring"),successMessage:!0}}),ae.value=!1}})}(e.time)}},{label:Q("Public.Btn.Delete"),onClick:()=>{!async function(e){s({title:Q("file.permissionModal.confirmDelete"),content:Q("file.permissionModal.deleteWarning"),onConfirm:async()=>{await t.post("/files?action=del_path_premissions",{id:e},{requestOptions:{loading:Q("file.permissionModal.loading.deleting"),successMessage:!0}}),be()}})}(e.id)}}]})]);function he(e){oe.value=e,"BackupList"==e&&be()}function _e(){N(()=>{const e=ce.value.map(Number).reduce((e,a)=>Number(e)+a,0),a=de.value.map(Number).reduce((e,a)=>Number(e)+a,0),s=me.value.map(Number).reduce((e,a)=>Number(e)+a,0);ne.value=String(e)+String(a)+String(s)})}function Me(e){let[a,s,i]=e.split("");ce.value=ye(a),de.value=ye(s),me.value=ye(i)}function ye(e){switch(e){case"7":return["4","2","1"];case"6":return["4","2"];case"5":return["4","1"];case"4":return["4"];case"3":return["2","1"];case"2":return["2"];case"1":return["1"];default:return[]}}async function we(){1==pe.value.length?await t.post("/files?action=SetFileAccess",{user:ue.value,access:ne.value,all:re.value,filename:pe.value[0].path},{requestOptions:{loading:Q("file.permissionModal.loading.modifyingPermission"),successMessage:!0}}):pe.value.length>1&&await t.post("/files?action=SetBatchData",{user:ue.value,access:ne.value,all:re.value,path:ee.value,data:JSON.stringify(pe.value.map(e=>e.nm)),type:3}),p(X)}function ke(){ie.value="",se.value=!0}async function xe(){let e=ee.value;1==pe.value.length&&(e=pe.value[0].path),await t.post("/files?action=back_path_permissions",{back_sub_dir:re.value,path:e,remark:ie.value},{requestOptions:{loading:Q("file.permissionModal.loading.backing"),successMessage:!0}}),ie.value=""}async function be(){ve.value=!0;try{const{message:e}=await t.post("/files?action=get_path_premissions",{path:pe.value[0].path},{requestOptions:{isOriginalResult:!0}});u(e)&&(le.value=e.map(e=>({id:Number(e[5]),name:e[4],permission:e[2],owner:e[1],time:e[3]})))}finally{ve.value=!1}}async function $e(){s({title:Q("file.permissionModal.fixPermissionTitle"),content:Q("file.permissionModal.fixPermissionNote"),onConfirm:async()=>{await t.post("/files?action=fix_permissions",{path:pe.value[0].path},{requestOptions:{loading:Q("file.permissionModal.loading.fixingPermission"),successMessage:!0}}),ae.value=!1}})}return g({open(){ae.value=!0,pe.value=Z.value.filter(e=>Y.value.includes(e.nm)),async function(){te.value=!0;try{const e=await t.post("/files?action=GetFileAccess",{filename:pe.value[0].path},{requestOptions:{isOriginalResult:!0}});ne.value=String(e.message.chmod),ue.value=e.message.chown,Me(ne.value)}finally{te.value=!1}}()},close(){ae.value=!1}}),(a,s)=>{const l=n,t=c,u=m,r=d,p=f,g=v,h=i,_=o,M=e;return w(),y(B,null,[k(M,{show:b(ae),"onUpdate:show":s[9]||(s[9]=e=>C(ae)?ae.value=e:null),title:a.$t("file.permissionModal.title")+" [".concat(1===b(pe).length?b(pe)[0].path:"Batch","]"),width:520,footer:!0,"confirm-text":a.$t("Public.Btn.Apply"),onConfirm:we},{default:x(()=>[k(_,{show:b(te)},{default:x(()=>[$("div",O,[$("div",q,[$("div",{class:P(["tit-item",{active:"SetPermission"==b(oe)}]),onClick:s[0]||(s[0]=e=>he("SetPermission"))},S(a.$t("file.permissionModal.setPermission")),3),$("div",{class:P(["tit-item",{active:"BackupList"==b(oe)}]),onClick:s[1]||(s[1]=e=>he("BackupList"))},S(a.$t("file.permissionModal.backupsList")),3)]),"SetPermission"==b(oe)?(w(),y("div",L,[$("div",V,[k(l,{name:"base-notice-yellow",size:"20"}),$("span",null,S(a.$t("file.permissionModal.noBackup")),1),k(t,{type:"primary",onClick:ke},{default:x(()=>[U(S(a.$t("file.permissionModal.backup")),1)]),_:1}),k(t,{onClick:s[2]||(s[2]=e=>he("BackupList"))},{default:x(()=>[U(S(a.$t("file.permissionModal.restore")),1)]),_:1})]),$("div",A,[$("div",R,[k(r,{class:"flex flex-col gap-10px",value:b(ce),"onUpdate:value":s[3]||(s[3]=e=>C(ce)?ce.value=e:null),onUpdateValue:_e},{default:x(()=>[k(u,{value:"4"},{default:x(()=>[U(S(a.$t("file.permissionModal.read")),1)]),_:1}),k(u,{value:"2"},{default:x(()=>[U(S(a.$t("file.permissionModal.write")),1)]),_:1}),k(u,{value:"1"},{default:x(()=>[U(S(a.$t("file.permissionModal.execute")),1)]),_:1})]),_:1},8,["value"])]),$("div",D,[k(r,{class:"flex flex-col gap-10px",value:b(de),"onUpdate:value":s[4]||(s[4]=e=>C(de)?de.value=e:null),onUpdateValue:_e},{default:x(()=>[k(u,{value:"4"},{default:x(()=>[U(S(a.$t("file.permissionModal.read")),1)]),_:1}),k(u,{value:"2"},{default:x(()=>[U(S(a.$t("file.permissionModal.write")),1)]),_:1}),k(u,{value:"1"},{default:x(()=>[U(S(a.$t("file.permissionModal.execute")),1)]),_:1})]),_:1},8,["value"])]),$("div",F,[k(r,{class:"flex flex-col gap-10px",value:b(me),"onUpdate:value":s[5]||(s[5]=e=>C(me)?me.value=e:null),onUpdateValue:_e},{default:x(()=>[k(u,{value:"4"},{default:x(()=>[U(S(a.$t("file.permissionModal.read")),1)]),_:1}),k(u,{value:"2"},{default:x(()=>[U(S(a.$t("file.permissionModal.write")),1)]),_:1}),k(u,{value:"1"},{default:x(()=>[U(S(a.$t("file.permissionModal.execute")),1)]),_:1})]),_:1},8,["value"])])]),$("div",T,[$("div",W,[k(p,{class:"flex-1",style:{width:"50px"},value:b(ne),"onUpdate:value":s[6]||(s[6]=e=>C(ne)?ne.value=e:null),onUpdateValue:Me},null,8,["value"]),$("span",null,S(a.$t("file.permissionModal.permission"))+",",1)]),$("div",z,[$("span",null,S(a.$t("file.permissionModal.owner")),1),k(g,{class:"flex-1",style:{width:"50px"},options:b(fe),value:b(ue),"onUpdate:value":s[7]||(s[7]=e=>C(ue)?ue.value=e:null)},null,8,["options","value"])]),$("div",H,[k(u,{checked:b(re),"onUpdate:checked":s[8]||(s[8]=e=>C(re)?re.value=e:null),"checked-value":1,"unchecked-value":0},{default:x(()=>[U(S(a.$t("file.permissionModal.applyToSubdir")),1)]),_:1},8,["checked"])])])])):"BackupList"==b(oe)?(w(),y("div",G,[$("div",I,[k(l,{name:"base-notice-yellow",size:"20"}),$("span",null,S(a.$t("file.permissionModal.fixAllPermissions")),1),k(t,{type:"primary",onClick:$e},{default:x(()=>[U(S(a.$t("file.permissionModal.fixPermissions")),1)]),_:1})]),k(h,{loading:b(ve),"max-height":160,data:b(le),columns:b(ge)},null,8,["loading","data","columns"])])):j("",!0)])]),_:1},8,["show"])]),_:1},8,["show","title","confirm-text"]),k(M,{show:b(se),"onUpdate:show":s[11]||(s[11]=e=>C(se)?se.value=e:null),title:a.$t("file.permissionModal.confirmBackup"),width:320,footer:!0,onConfirm:xe},{default:x(()=>[$("div",J,[$("div",K,S(a.$t("file.permissionModal.enterBackupName")),1),$("div",E,[$("span",null,S(a.$t("file.permissionModal.remarks")),1),k(p,{value:b(ie),"onUpdate:value":s[10]||(s[10]=e=>C(ie)?ie.value=e:null),class:"flex-1"},null,8,["value"])])])]),_:1},8,["show","title"])],64)}}}),[["__scopeId","data-v-b8bd1cf5"]]);export{Q as default}; +import{_ as e}from"./index.js?v=1762424784323";import{f as a,a as s,h as i}from"./public.js?v=1762424784323";import{a8 as l,t,S as o,_ as n,w as u,p as r}from"./page_layout.js?v=1762424784323";import{g as p}from"./index39.js?v=1762424784323";import{aC as c,eg as d,_ as m,au as f,dV as v}from"./naive.js?v=1762424784323";import{k as g,P as h,i as _,r as M,R as y,V as w,W as k,a3 as x,U as b,S as $,an as j,H as P,a4 as S,j as U,ak as C,F as B,n as N}from"./vue.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./soft2.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";import"./file2.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";const O={class:"permission-wrapper"},q={class:"tit"},L={key:0,class:"content"},V={class:"backup-notice"},A={class:"options"},F={class:"option-item"},R={class:"option-item group"},T={class:"option-item public"},D={class:"other-settings"},W={class:"setting-item"},z={class:"setting-item"},H={class:"setting-item"},G={key:1,class:"content"},I={class:"backup-notice"},J={class:"confirm-backup-wrapper"},K={class:"mb-10px"},E={class:"flex justify-start items-center gap-10px"},Q=r(g({__name:"Permission",setup(r,{expose:g}){const{t:Q}=h(),X=_("fileStore"),{choosedKeys:Y,fileList:Z,currentPath:ee}=X,ae=M(!1),se=M(!1),ie=M(""),le=M([]),te=M(!1),oe=M("SetPermission"),ne=M("777"),ue=M("root"),re=M(1),pe=M([]),ce=M(["4","2","1"]),de=M(["4","2","1"]),me=M(["4","2","1"]),fe=M([{label:"root",value:"root"},{label:"mysql",value:"mysql"},{label:"www",value:"www"}]),ve=M(!1),ge=M([{key:"name",title:Q("file.permissionModal.name"),ellipsis:{tooltip:!0}},{key:"permission",title:Q("file.permissionModal.permission")},{key:"owner",title:Q("file.permissionModal.owner")},{key:"time",title:Q("file.permissionModal.backupTime"),width:90,render:e=>l(e.time,"yyyy-MM-dd")},a({width:120,options:e=>[{label:Q("file.permissionModal.restore"),onClick:()=>{!async function(e){s({title:Q("file.permissionModal.confirmRestore"),content:Q("file.permissionModal.restoreWarning"),onConfirm:async()=>{await t.post("/files?action=restore_path_permissions",{path:pe.value[0].path,restore_sub_dir:re.value,date:e},{requestOptions:{loading:Q("file.permissionModal.loading.restoring"),successMessage:!0}}),ae.value=!1}})}(e.time)}},{label:Q("Public.Btn.Delete"),onClick:()=>{!async function(e){s({title:Q("file.permissionModal.confirmDelete"),content:Q("file.permissionModal.deleteWarning"),onConfirm:async()=>{await t.post("/files?action=del_path_premissions",{id:e},{requestOptions:{loading:Q("file.permissionModal.loading.deleting"),successMessage:!0}}),be()}})}(e.id)}}]})]);function he(e){oe.value=e,"BackupList"==e&&be()}function _e(){N(()=>{const e=ce.value.map(Number).reduce((e,a)=>Number(e)+a,0),a=de.value.map(Number).reduce((e,a)=>Number(e)+a,0),s=me.value.map(Number).reduce((e,a)=>Number(e)+a,0);ne.value=String(e)+String(a)+String(s)})}function Me(e){let[a,s,i]=e.split("");ce.value=ye(a),de.value=ye(s),me.value=ye(i)}function ye(e){switch(e){case"7":return["4","2","1"];case"6":return["4","2"];case"5":return["4","1"];case"4":return["4"];case"3":return["2","1"];case"2":return["2"];case"1":return["1"];default:return[]}}async function we(){1==pe.value.length?await t.post("/files?action=SetFileAccess",{user:ue.value,access:ne.value,all:re.value?"True":"False",filename:pe.value[0].path},{requestOptions:{loading:Q("file.permissionModal.loading.modifyingPermission"),successMessage:!0}}):pe.value.length>1&&await t.post("/files?action=SetBatchData",{user:ue.value,access:ne.value,all:re.value,path:ee.value,data:JSON.stringify(pe.value.map(e=>e.nm)),type:3}),p(X)}function ke(){ie.value="",se.value=!0}async function xe(){let e=ee.value;1==pe.value.length&&(e=pe.value[0].path),await t.post("/files?action=back_path_permissions",{back_sub_dir:re.value,path:e,remark:ie.value},{requestOptions:{loading:Q("file.permissionModal.loading.backing"),successMessage:!0}}),ie.value=""}async function be(){ve.value=!0;try{const{message:e}=await t.post("/files?action=get_path_premissions",{path:pe.value[0].path},{requestOptions:{isOriginalResult:!0}});u(e)&&(le.value=e.map(e=>({id:Number(e[5]),name:e[4],permission:e[2],owner:e[1],time:e[3]})))}finally{ve.value=!1}}async function $e(){s({title:Q("file.permissionModal.fixPermissionTitle"),content:Q("file.permissionModal.fixPermissionNote"),onConfirm:async()=>{await t.post("/files?action=fix_permissions",{path:pe.value[0].path},{requestOptions:{loading:Q("file.permissionModal.loading.fixingPermission"),successMessage:!0}}),ae.value=!1}})}return g({open(){ae.value=!0,pe.value=Z.value.filter(e=>Y.value.includes(e.nm)),async function(){te.value=!0;try{const e=await t.post("/files?action=GetFileAccess",{filename:pe.value[0].path},{requestOptions:{isOriginalResult:!0}});ne.value=String(e.message.chmod),ue.value=e.message.chown,Me(ne.value)}finally{te.value=!1}}()},close(){ae.value=!1}}),(a,s)=>{const l=n,t=c,u=m,r=d,p=f,g=v,h=i,_=o,M=e;return w(),y(B,null,[k(M,{show:b(ae),"onUpdate:show":s[9]||(s[9]=e=>C(ae)?ae.value=e:null),title:a.$t("file.permissionModal.title")+" [".concat(1===b(pe).length?b(pe)[0].path:"Batch","]"),width:520,footer:!0,"confirm-text":a.$t("Public.Btn.Apply"),onConfirm:we},{default:x(()=>[k(_,{show:b(te)},{default:x(()=>[$("div",O,[$("div",q,[$("div",{class:P(["tit-item",{active:"SetPermission"==b(oe)}]),onClick:s[0]||(s[0]=e=>he("SetPermission"))},S(a.$t("file.permissionModal.setPermission")),3),$("div",{class:P(["tit-item",{active:"BackupList"==b(oe)}]),onClick:s[1]||(s[1]=e=>he("BackupList"))},S(a.$t("file.permissionModal.backupsList")),3)]),"SetPermission"==b(oe)?(w(),y("div",L,[$("div",V,[k(l,{name:"base-notice-yellow",size:"20"}),$("span",null,S(a.$t("file.permissionModal.noBackup")),1),k(t,{type:"primary",onClick:ke},{default:x(()=>[U(S(a.$t("file.permissionModal.backup")),1)]),_:1}),k(t,{onClick:s[2]||(s[2]=e=>he("BackupList"))},{default:x(()=>[U(S(a.$t("file.permissionModal.restore")),1)]),_:1})]),$("div",A,[$("div",F,[k(r,{class:"flex flex-col gap-10px",value:b(ce),"onUpdate:value":s[3]||(s[3]=e=>C(ce)?ce.value=e:null),onUpdateValue:_e},{default:x(()=>[k(u,{value:"4"},{default:x(()=>[U(S(a.$t("file.permissionModal.read")),1)]),_:1}),k(u,{value:"2"},{default:x(()=>[U(S(a.$t("file.permissionModal.write")),1)]),_:1}),k(u,{value:"1"},{default:x(()=>[U(S(a.$t("file.permissionModal.execute")),1)]),_:1})]),_:1},8,["value"])]),$("div",R,[k(r,{class:"flex flex-col gap-10px",value:b(de),"onUpdate:value":s[4]||(s[4]=e=>C(de)?de.value=e:null),onUpdateValue:_e},{default:x(()=>[k(u,{value:"4"},{default:x(()=>[U(S(a.$t("file.permissionModal.read")),1)]),_:1}),k(u,{value:"2"},{default:x(()=>[U(S(a.$t("file.permissionModal.write")),1)]),_:1}),k(u,{value:"1"},{default:x(()=>[U(S(a.$t("file.permissionModal.execute")),1)]),_:1})]),_:1},8,["value"])]),$("div",T,[k(r,{class:"flex flex-col gap-10px",value:b(me),"onUpdate:value":s[5]||(s[5]=e=>C(me)?me.value=e:null),onUpdateValue:_e},{default:x(()=>[k(u,{value:"4"},{default:x(()=>[U(S(a.$t("file.permissionModal.read")),1)]),_:1}),k(u,{value:"2"},{default:x(()=>[U(S(a.$t("file.permissionModal.write")),1)]),_:1}),k(u,{value:"1"},{default:x(()=>[U(S(a.$t("file.permissionModal.execute")),1)]),_:1})]),_:1},8,["value"])])]),$("div",D,[$("div",W,[k(p,{class:"flex-1",style:{width:"50px"},value:b(ne),"onUpdate:value":s[6]||(s[6]=e=>C(ne)?ne.value=e:null),onUpdateValue:Me},null,8,["value"]),$("span",null,S(a.$t("file.permissionModal.permission"))+",",1)]),$("div",z,[$("span",null,S(a.$t("file.permissionModal.owner")),1),k(g,{class:"flex-1",style:{width:"50px"},options:b(fe),value:b(ue),"onUpdate:value":s[7]||(s[7]=e=>C(ue)?ue.value=e:null)},null,8,["options","value"])]),$("div",H,[k(u,{checked:b(re),"onUpdate:checked":s[8]||(s[8]=e=>C(re)?re.value=e:null),"checked-value":1,"unchecked-value":0},{default:x(()=>[U(S(a.$t("file.permissionModal.applyToSubdir")),1)]),_:1},8,["checked"])])])])):"BackupList"==b(oe)?(w(),y("div",G,[$("div",I,[k(l,{name:"base-notice-yellow",size:"20"}),$("span",null,S(a.$t("file.permissionModal.fixAllPermissions")),1),k(t,{type:"primary",onClick:$e},{default:x(()=>[U(S(a.$t("file.permissionModal.fixPermissions")),1)]),_:1})]),k(h,{loading:b(ve),"max-height":160,data:b(le),columns:b(ge)},null,8,["loading","data","columns"])])):j("",!0)])]),_:1},8,["show"])]),_:1},8,["show","title","confirm-text"]),k(M,{show:b(se),"onUpdate:show":s[11]||(s[11]=e=>C(se)?se.value=e:null),title:a.$t("file.permissionModal.confirmBackup"),width:320,footer:!0,onConfirm:xe},{default:x(()=>[$("div",J,[$("div",K,S(a.$t("file.permissionModal.enterBackupName")),1),$("div",E,[$("span",null,S(a.$t("file.permissionModal.remarks")),1),k(p,{value:b(ie),"onUpdate:value":s[10]||(s[10]=e=>C(ie)?ie.value=e:null),class:"flex-1"},null,8,["value"])])])]),_:1},8,["show","title"])],64)}}}),[["__scopeId","data-v-49186f19"]]);export{Q as default}; diff --git a/BTPanel/static/vite/js/Progress-legacy.js b/BTPanel/static/vite/js/Progress-legacy.js index 23290f84..6279433d 100644 --- a/BTPanel/static/vite/js/Progress-legacy.js +++ b/BTPanel/static/vite/js/Progress-legacy.js @@ -1 +1 @@ -System.register(["./vue-legacy.js?v=1760428868419","./index-legacy87.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./index-legacy133.js?v=1760428868419","./index-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy12.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy8.js?v=1760428868419","./index-legacy131.js?v=1760428868419","./php-legacy.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./site-legacy4.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy15.js?v=1760428868419","./index-legacy245.js?v=1760428868419","./index-legacy99.js?v=1760428868419","./index-legacy108.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy10.js?v=1760428868419","./index-legacy98.js?v=1760428868419","./index-legacy100.js?v=1760428868419","./index-legacy101.js?v=1760428868419","./file-legacy.js?v=1760428868419","./theme-monokai-legacy.js?v=1760428868419","./refersh-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy17.js?v=1760428868419","./index-legacy105.js?v=1760428868419","./ssl-legacy.js?v=1760428868419","./cert-legacy.js?v=1760428868419","./ssl-lets-progress-legacy.js?v=1760428868419","./utils-legacy3.js?v=1760428868419","./index-legacy218.js?v=1760428868419","./paypal-js-legacy.js?v=1760428868419","./upload-legacy.js?v=1760428868419"],function(e,l){"use strict";var s,t,a,u,n,c,r,p,i,_,y,g,d,o,j,v,x,m,f,k,b,I,h,w,S,z;return{setters:[e=>{s=e.k,t=e.r,a=e.c,u=e.o,n=e.b,c=e.R,r=e.V,p=e.S,i=e.a2,_=e.U,y=e.W,g=e.a3,d=e.F,o=e.O,j=e.l,v=e.a4,x=e.v},e=>{m=e.e},e=>{f=e.gH,k=e.S,b=e.gI,I=e.d,h=e.m,w=e.p},e=>{S=e.dk,z=e.da},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){var l=document.createElement("style");l.textContent=".propress-box[data-v-939603d7]{border:1px solid var(--site-task-progress-border)}\n/*$vite$:1*/",document.head.appendChild(l);const C={class:"p-16px"},F={class:"mb-16px"},H={class:"propress-box p-10px rounded-8px"};e("default",w(s({__name:"progress",props:{params:{},callback:{type:Function}},setup(e){const l=e,s=t(!1),w=t([]),O=a(()=>w.value.findIndex(e=>0===e.status)+1),T=a(()=>w.value[O.value]?.status),$={0:"process",1:"finish","-1":"error",2:"wait"},E=e=>$[e];let R=null;const U=async()=>{const{message:e}=await m({progress_type:l.params});I(e)&&(1===e.status?(R&&clearInterval(R),h.success("Task completed!"),s.value=!0):s.value=!1,delete e.status,w.value=Object.values(e))};return u(()=>{U(),R=window.setInterval(()=>{U()},2e3)}),n(()=>{l.callback?.(),R&&clearInterval(R)}),(e,l)=>{const t=S,a=k,u=z,n=f,m=b;return r(),c("div",C,[p("div",F,[_(s)?(r(),i(t,{key:0,type:"success",title:"Task completed!"})):(r(),i(t,{key:1,type:"default",title:"In progress..."}))]),p("div",H,[y(m,{vertical:"",current:_(O),status:E(_(T)),size:"small"},{default:g(()=>[(r(!0),c(d,null,o(_(w),(e,l)=>(r(),i(n,{key:l,status:E(e.status),description:e.error||e.ps},{title:g(()=>[y(u,{class:"flex-nowrap! items-center!"},{default:g(()=>[p("span",null,v(e.title),1),j(y(a,{size:"small"},null,512),[[x,0===e.status]])]),_:2},1024)]),_:2},1032,["status","description"]))),128))]),_:1},8,["current","status"])])])}}}),[["__scopeId","data-v-939603d7"]]))}}}); +System.register(["./vue-legacy.js?v=1762424784323","./index-legacy87.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./index-legacy132.js?v=1762424784323","./index-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy12.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy8.js?v=1762424784323","./index-legacy130.js?v=1762424784323","./php-legacy.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./site-legacy4.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy15.js?v=1762424784323","./index-legacy243.js?v=1762424784323","./index-legacy99.js?v=1762424784323","./index-legacy107.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy10.js?v=1762424784323","./index-legacy98.js?v=1762424784323","./index-legacy100.js?v=1762424784323","./theme-monokai-legacy.js?v=1762424784323","./file-legacy.js?v=1762424784323","./refersh-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy17.js?v=1762424784323","./index-legacy104.js?v=1762424784323","./ssl-legacy.js?v=1762424784323","./cert-legacy.js?v=1762424784323","./ssl-lets-progress-legacy.js?v=1762424784323","./utils-legacy3.js?v=1762424784323","./index-legacy216.js?v=1762424784323","./paypal-js-legacy.js?v=1762424784323","./upload-legacy.js?v=1762424784323"],function(e,l){"use strict";var s,t,a,u,n,c,r,p,_,i,y,g,d,o,j,v,x,m,f,k,b,h,I,w,S,z;return{setters:[e=>{s=e.k,t=e.r,a=e.c,u=e.o,n=e.b,c=e.R,r=e.V,p=e.S,_=e.a2,i=e.U,y=e.W,g=e.a3,d=e.F,o=e.O,j=e.l,v=e.a4,x=e.v},e=>{m=e.e},e=>{f=e.gD,k=e.S,b=e.gE,h=e.d,I=e.m,w=e.p},e=>{S=e.dk,z=e.da},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){var l=document.createElement("style");l.textContent=".propress-box[data-v-939603d7]{border:1px solid var(--site-task-progress-border)}\n/*$vite$:1*/",document.head.appendChild(l);const C={class:"p-16px"},E={class:"mb-16px"},F={class:"propress-box p-10px rounded-8px"};e("default",w(s({__name:"progress",props:{params:{},callback:{type:Function}},setup(e){const l=e,s=t(!1),w=t([]),O=a(()=>w.value.findIndex(e=>0===e.status)+1),T=a(()=>w.value[O.value]?.status),$={0:"process",1:"finish","-1":"error",2:"wait"},D=e=>$[e];let H=null;const R=async()=>{const{message:e}=await m({progress_type:l.params});h(e)&&(1===e.status?(H&&clearInterval(H),I.success("Task completed!"),s.value=!0):s.value=!1,delete e.status,w.value=Object.values(e))};return u(()=>{R(),H=window.setInterval(()=>{R()},2e3)}),n(()=>{l.callback?.(),H&&clearInterval(H)}),(e,l)=>{const t=S,a=k,u=z,n=f,m=b;return r(),c("div",C,[p("div",E,[i(s)?(r(),_(t,{key:0,type:"success",title:"Task completed!"})):(r(),_(t,{key:1,type:"default",title:"In progress..."}))]),p("div",F,[y(m,{vertical:"",current:i(O),status:D(i(T)),size:"small"},{default:g(()=>[(r(!0),c(d,null,o(i(w),(e,l)=>(r(),_(n,{key:l,status:D(e.status),description:e.error||e.ps},{title:g(()=>[y(u,{class:"flex-nowrap! items-center!"},{default:g(()=>[p("span",null,v(e.title),1),j(y(a,{size:"small"},null,512),[[x,0===e.status]])]),_:2},1024)]),_:2},1032,["status","description"]))),128))]),_:1},8,["current","status"])])])}}}),[["__scopeId","data-v-939603d7"]]))}}}); diff --git a/BTPanel/static/vite/js/Progress.js b/BTPanel/static/vite/js/Progress.js index f90ec979..3b57a50e 100644 --- a/BTPanel/static/vite/js/Progress.js +++ b/BTPanel/static/vite/js/Progress.js @@ -1 +1 @@ -import{k as s,r as e,c as t,o as r,b as p,R as a,V as i,S as o,a2 as u,U as l,W as n,a3 as _,F as m,O as c,l as d,a4 as j,v}from"./vue.js?v=1760428868419";import{e as x}from"./index87.js?v=1760428868419";import{gH as y,S as g,gI as f,d as k,m as b,p as I}from"./page_layout.js?v=1760428868419";import{dk as w,da as h}from"./naive.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./index133.js?v=1760428868419";import"./index.js?v=1760428868419";import"./common.js?v=1760428868419";import"./public.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang12.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang8.js?v=1760428868419";import"./index131.js?v=1760428868419";import"./php.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";import"./site4.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang15.js?v=1760428868419";import"./index245.js?v=1760428868419";import"./index99.js?v=1760428868419";import"./index108.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang10.js?v=1760428868419";import"./index98.js?v=1760428868419";import"./index100.js?v=1760428868419";import"./index101.js?v=1760428868419";import"./file.js?v=1760428868419";import"./theme-monokai.js?v=1760428868419";import"./refersh.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang17.js?v=1760428868419";import"./index105.js?v=1760428868419";import"./ssl.js?v=1760428868419";import"./cert.js?v=1760428868419";import"./ssl-lets-progress.js?v=1760428868419";import"./utils3.js?v=1760428868419";import"./index218.js?v=1760428868419";import"./paypal-js.js?v=1760428868419";import"./upload.js?v=1760428868419";const z={class:"p-16px"},F={class:"mb-16px"},H={class:"propress-box p-10px rounded-8px"},O=I(s({__name:"progress",props:{params:{},callback:{type:Function}},setup(s){const I=s,O=e(!1),S=e([]),T=t(()=>S.value.findIndex(s=>0===s.status)+1),R=t(()=>{var s;return null==(s=S.value[T.value])?void 0:s.status}),U={0:"process",1:"finish","-1":"error",2:"wait"},V=s=>U[s];let W=null;const q=async()=>{const{message:s}=await x({progress_type:I.params});k(s)&&(1===s.status?(W&&clearInterval(W),b.success("Task completed!"),O.value=!0):O.value=!1,delete s.status,S.value=Object.values(s))};return r(()=>{q(),W=window.setInterval(()=>{q()},2e3)}),p(()=>{var s;null==(s=I.callback)||s.call(I),W&&clearInterval(W)}),(s,e)=>{const t=w,r=g,p=h,x=y,k=f;return i(),a("div",z,[o("div",F,[l(O)?(i(),u(t,{key:0,type:"success",title:"Task completed!"})):(i(),u(t,{key:1,type:"default",title:"In progress..."}))]),o("div",H,[n(k,{vertical:"",current:l(T),status:V(l(R)),size:"small"},{default:_(()=>[(i(!0),a(m,null,c(l(S),(s,e)=>(i(),u(x,{key:e,status:V(s.status),description:s.error||s.ps},{title:_(()=>[n(p,{class:"flex-nowrap! items-center!"},{default:_(()=>[o("span",null,j(s.title),1),d(n(r,{size:"small"},null,512),[[v,0===s.status]])]),_:2},1024)]),_:2},1032,["status","description"]))),128))]),_:1},8,["current","status"])])])}}}),[["__scopeId","data-v-939603d7"]]);export{O as default}; +import{k as s,r as e,c as t,o as r,b as p,R as a,V as i,S as o,a2 as u,U as l,W as n,a3 as _,F as m,O as c,l as d,a4 as j,v}from"./vue.js?v=1762424784323";import{e as x}from"./index87.js?v=1762424784323";import{gD as y,S as g,gE as f,d as k,m as b,p as I}from"./page_layout.js?v=1762424784323";import{dk as w,da as h}from"./naive.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./index132.js?v=1762424784323";import"./index.js?v=1762424784323";import"./common.js?v=1762424784323";import"./public.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang12.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang8.js?v=1762424784323";import"./index130.js?v=1762424784323";import"./php.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";import"./site4.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang15.js?v=1762424784323";import"./index243.js?v=1762424784323";import"./index99.js?v=1762424784323";import"./index107.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang10.js?v=1762424784323";import"./index98.js?v=1762424784323";import"./index100.js?v=1762424784323";import"./theme-monokai.js?v=1762424784323";import"./file.js?v=1762424784323";import"./refersh.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang17.js?v=1762424784323";import"./index104.js?v=1762424784323";import"./ssl.js?v=1762424784323";import"./cert.js?v=1762424784323";import"./ssl-lets-progress.js?v=1762424784323";import"./utils3.js?v=1762424784323";import"./index216.js?v=1762424784323";import"./paypal-js.js?v=1762424784323";import"./upload.js?v=1762424784323";const z={class:"p-16px"},F={class:"mb-16px"},O={class:"propress-box p-10px rounded-8px"},S=I(s({__name:"progress",props:{params:{},callback:{type:Function}},setup(s){const I=s,S=e(!1),T=e([]),D=t(()=>T.value.findIndex(s=>0===s.status)+1),E=t(()=>{var s;return null==(s=T.value[D.value])?void 0:s.status}),H={0:"process",1:"finish","-1":"error",2:"wait"},R=s=>H[s];let U=null;const V=async()=>{const{message:s}=await x({progress_type:I.params});k(s)&&(1===s.status?(U&&clearInterval(U),b.success("Task completed!"),S.value=!0):S.value=!1,delete s.status,T.value=Object.values(s))};return r(()=>{V(),U=window.setInterval(()=>{V()},2e3)}),p(()=>{var s;null==(s=I.callback)||s.call(I),U&&clearInterval(U)}),(s,e)=>{const t=w,r=g,p=h,x=y,k=f;return i(),a("div",z,[o("div",F,[l(S)?(i(),u(t,{key:0,type:"success",title:"Task completed!"})):(i(),u(t,{key:1,type:"default",title:"In progress..."}))]),o("div",O,[n(k,{vertical:"",current:l(D),status:R(l(E)),size:"small"},{default:_(()=>[(i(!0),a(m,null,c(l(T),(s,e)=>(i(),u(x,{key:e,status:R(s.status),description:s.error||s.ps},{title:_(()=>[n(p,{class:"flex-nowrap! items-center!"},{default:_(()=>[o("span",null,j(s.title),1),d(n(r,{size:"small"},null,512),[[v,0===s.status]])]),_:2},1024)]),_:2},1032,["status","description"]))),128))]),_:1},8,["current","status"])])])}}}),[["__scopeId","data-v-939603d7"]]);export{S as default}; diff --git a/BTPanel/static/vite/js/Properties-legacy.js b/BTPanel/static/vite/js/Properties-legacy.js index 6e0e3352..8406ccea 100644 --- a/BTPanel/static/vite/js/Properties-legacy.js +++ b/BTPanel/static/vite/js/Properties-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./index-legacy108.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./index-legacy39.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./soft-legacy2.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./file-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419"],function(e,t){"use strict";var i,l,a,r,s,o,n,p,d,f,u,c,m,v,y,g,w,x,h,_,b,$,j,k,z,C,T,F,P,S,H,O,U,q,M,N,R,I,K;return{setters:[e=>{i=e._},e=>{l=e._},e=>{a=e.a8,r=e.n,s=e.t,o=e.d,n=e.m,p=e.S,d=e.q,f=e._,u=e.fV,c=e.p},e=>{m=e.f,v=e.a,y=e.i},e=>{g=e.o,w=e.F},e=>{x=e.k,h=e.P,_=e.i,b=e.r,$=e.c,j=e.W,k=e.F,z=e.aK,C=e.a2,T=e.V,F=e.a3,P=e.S,S=e.U,H=e.ak,O=e.a4,U=e.j,q=e.l,M=e.R},e=>{N=e.dQ,R=e.au,I=e.dc,K=e.dg},null,null,null,null,null,null,null],execute:function(){var t=document.createElement("style");t.textContent='@charset "UTF-8";.modal-footer-btns[data-v-f7957a5e]{display:flex;align-items:center;flex-direction:row;justify-content:end;gap:10px;padding:10px}.single-line-ellipsis[data-v-f7957a5e]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.properties-wrapper[data-v-f7957a5e]{padding:16px}.properties-wrapper .tab-tit[data-v-f7957a5e]{display:flex;align-items:center;flex-direction:row;justify-content:start;gap:5px;border-bottom:1px solid #cfcfdc}.properties-wrapper .tab-tit .tab-tit-item[data-v-f7957a5e]{padding:10px;background:linear-gradient(to bottom,#f5f5f5,#dedede);border:1px solid #cfcfdc;margin-bottom:-1px;cursor:pointer}.properties-wrapper .tab-tit .tab-tit-item.active[data-v-f7957a5e]{background:#fff;border-bottom:1px solid #fff}.properties-wrapper .content[data-v-f7957a5e]{height:386px}.properties-wrapper .content .info-group .info-item[data-v-f7957a5e]{display:flex;align-items:center;flex-direction:row;justify-content:flex-start;min-height:26px;margin:4px 0}.properties-wrapper .content .info-group .info-item .info-item-label[data-v-f7957a5e]{width:120px;padding:0 10px}.properties-wrapper .content .info-group .info-item .info-item-value[data-v-f7957a5e]{flex:1;width:0}.properties-wrapper .content .detail-tit[data-v-f7957a5e],.properties-wrapper .content .detail-row[data-v-f7957a5e]{display:flex;align-items:center;flex-direction:row;gap:10px;justify-content:flex-start;background:#f6f6f6;padding:10px}.properties-wrapper .content .detail-tit .detail-tit-properties[data-v-f7957a5e],.properties-wrapper .content .detail-row .detail-tit-properties[data-v-f7957a5e]{flex:2}.properties-wrapper .content .detail-tit .detail-tit-value[data-v-f7957a5e],.properties-wrapper .content .detail-row .detail-tit-value[data-v-f7957a5e]{flex:8}.properties-wrapper .content .detail-row[data-v-f7957a5e]{background-color:#fff}.properties-wrapper .content .history-tit[data-v-f7957a5e],.properties-wrapper .content .history-row[data-v-f7957a5e]{display:flex;align-items:center;flex-direction:row;gap:10px;justify-content:flex-start;background:#f6f6f6;padding:10px}.properties-wrapper .content .history-tit .modify[data-v-f7957a5e],.properties-wrapper .content .history-row .modify[data-v-f7957a5e]{flex:3}.properties-wrapper .content .history-tit .size[data-v-f7957a5e],.properties-wrapper .content .history-row .size[data-v-f7957a5e]{flex:1}.properties-wrapper .content .history-tit .md5[data-v-f7957a5e],.properties-wrapper .content .history-row .md5[data-v-f7957a5e]{flex:4.5}.properties-wrapper .content .history-tit .opt[data-v-f7957a5e],.properties-wrapper .content .history-row .opt[data-v-f7957a5e]{flex:1.5}.properties-wrapper .content .history-row[data-v-f7957a5e]{background:#fff}.restore-history-wrapper[data-v-f7957a5e]{padding:20px}.restore-history-wrapper .content[data-v-f7957a5e]{font-size:14px;margin-bottom:10px}.restore-history-wrapper .sub-content[data-v-f7957a5e]{font-size:12px;color:#525252}\n/*$vite$:1*/',document.head.appendChild(t);const L={class:"properties-wrapper"},V={class:"content"},W={class:"info-group"},D={class:"info-item h-60px"},E={class:"info-item-label"},Q={class:"info-item-value"},A={class:"w-360px"},B={class:"my-10px"},G={class:"info-group"},J={class:"info-item"},X={class:"info-item-label"},Y={class:"info-item-value"},Z={class:"info-item"},ee={class:"info-item-label"},te={class:"info-item-value flex"},ie={class:"max-w-300px"},le={class:"info-item",style:{"margin-bottom":"0"}},ae={class:"info-item-label"},re={class:"info-item-value"},se={class:"my-10px"},oe={class:"info-group"},ne={class:"info-item"},pe={class:"info-item-label"},de={class:"info-item-value"},fe={class:"info-item"},ue={class:"info-item-label"},ce={class:"info-item-value"},me={class:"info-item",style:{"margin-bottom":"0"}},ve={class:"info-item-label"},ye={class:"info-item-value"},ge={class:"my-10px"},we={class:"info-group"},xe={class:"info-item"},he={class:"info-item-label"},_e={class:"info-item-value"},be={class:"info-item"},$e={class:"info-item-label"},je={class:"info-item-value"},ke={class:"content overflow-auto"},ze={width:"200"},Ce={class:"content"};e("default",c(x({__name:"Properties",setup(e,{expose:t}){const{t:c}=h(),x=_("fileStore"),{choosedKeys:Te,fileList:Fe,currentPath:Pe}=x,Se=b(!1),He=b("general"),Oe=b(!1),Ue=b({st_atime:0,st_mtime:0,st_ctime:0}),qe=$(()=>Ue.value.path?`${Ue.value.path}/${Ue.value.name}`:"--"),Me=b([{key:"st_mtime",title:()=>c("file.properties.modifiedTime"),width:154,render:e=>a(e.st_mtime)},{key:"st_size",title:()=>c("file.properties.size"),width:80,render:e=>r(e.st_size)},{key:"md5",title:()=>c("file.properties.md5"),ellipsis:{tooltip:!0}},m({width:110,options:e=>[{label:c("file.properties.view"),onClick:()=>{!async function(){g(0,`${Ue.value.path}/${Ue.value.name}`,Pe.value)}()}},{label:c("file.properties.restore"),onClick:()=>{!async function(e){v({title:c("file.properties.restoreHistoryFiles"),width:480,content:()=>j(k,null,[j("div",null,[c("file.properties.restoreHistoryConfirm",{time:a(e.st_mtime)})]),j("div",{class:"mt-8px text-12px text-default leading-[1.4]"},[c("file.properties.restoreHistoryWarning")])]),onConfirm:async()=>{await async function(e,t){const i=n.loading(c("file.properties.restoring"));try{const{status:i}=await s.post("/files?action=re_history",{filename:e,history:t},{requestOptions:{errorMessage:!1}});0===i?n.success(c("file.properties.restoreSuccess")):n.error(c("file.properties.restoreFailed"))}finally{i.close()}}(`${Ue.value.path}/${Ue.value.name}`,e.st_mtime)}})}(e)}}]})]),Ne=()=>{y(qe.value)};return t({open(){Se.value=!0,async function(e){Oe.value=!0;try{const{message:t}=await s.post("/files?action=get_file_attribute",{filename:e},{requestOptions:{isOriginalResult:!0}});o(t)&&(Ue.value=t)}finally{Oe.value=!1}}(Fe.value.find(e=>e.nm==Te.value[0]).path)},close(){Se.value=!1}}),(e,t)=>{const s=R,o=d,n=I,c=f,m=N,v=u,y=K,g=l,x=p,h=i,_=z("table");return T(),C(h,{show:S(Se),"onUpdate:show":t[1]||(t[1]=e=>H(Se)?Se.value=e:null),width:580,title:`[${S(Ue).name}] - ${e.$t("file.properties.fileProperties")}`},{default:F(()=>[P("div",L,[j(x,{show:S(Oe)},{default:F(()=>[j(g,{value:S(He),"onUpdate:value":t[0]||(t[0]=e=>H(He)?He.value=e:null)},{default:F(()=>[j(m,{name:"general",tab:e.$t("file.properties.general")},{default:F(()=>[P("div",V,[P("div",W,[P("div",D,[P("div",E,[j(w,{ext:`${S(Ue).st_type}`,size:"large"},null,8,["ext"])]),P("div",Q,[P("div",A,[j(s,{value:S(Ue).name,readonly:""},null,8,["value"])])])])]),P("div",B,[j(o)]),P("div",G,[P("div",J,[P("div",X,O(e.$t("file.properties.type"))+":",1),P("div",Y,O(S(Ue).st_type),1)]),P("div",Z,[P("div",ee,O(e.$t("file.properties.location"))+":",1),P("div",te,[P("div",ie,[j(n,null,{default:F(()=>[U(O(S(qe)),1)]),_:1})]),j(c,{class:"ml-10px cursor-pointer",name:"common-copy",size:"14",onClick:Ne})])]),P("div",le,[P("div",ae,O(e.$t("file.properties.size"))+":",1),P("div",re,O(S(r)(S(Ue).st_size)),1)])]),P("div",se,[j(o)]),P("div",oe,[P("div",ne,[P("div",pe,O(e.$t("file.properties.permissions"))+":",1),P("div",de,O(S(Ue).mode),1)]),P("div",fe,[P("div",ue,O(e.$t("file.properties.group"))+":",1),P("div",ce,O(S(Ue).group),1)]),P("div",me,[P("div",ve,O(e.$t("file.properties.user"))+":",1),P("div",ye,O(S(Ue).user),1)])]),P("div",ge,[j(o)]),P("div",we,[P("div",xe,[P("div",he,O(e.$t("file.properties.visitTime"))+":",1),P("div",_e,O(S(a)(S(Ue).st_atime)),1)]),P("div",be,[P("div",$e,O(e.$t("file.properties.modifiedTime"))+":",1),P("div",je,O(S(a)(S(Ue).st_mtime)),1)])])])]),_:1},8,["tab"]),j(m,{name:"details",tab:e.$t("file.properties.details")},{default:F(()=>[q((T(),M("div",ke,[j(v,null,{default:F(()=>[P("thead",null,[P("tr",null,[P("th",ze,O(e.$t("file.properties.name")),1),P("th",null,O(e.$t("file.properties.value")),1)])]),P("tbody",null,[P("tr",null,[P("td",null,O(e.$t("file.properties.name")),1),P("td",null,O(S(Ue).name),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.type")),1),P("td",null,O(S(Ue).st_type),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.location")),1),P("td",null,O(S(Ue).path),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.size")),1),P("td",null,O(S(r)(S(Ue).st_size)),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.visitTime")),1),P("td",null,O(S(a)(S(Ue).st_atime)),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.modifiedTime")),1),P("td",null,O(S(a)(S(Ue).st_mtime)),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.metadataModificationTime")),1),P("td",null,O(S(a)(S(Ue).st_mtime)),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.md5")),1),P("td",null,O(S(Ue).md5),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.sha1")),1),P("td",null,O(S(Ue).sha1),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.user")),1),P("td",null,O(S(Ue).user),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.group")),1),P("td",null,O(S(Ue).group),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.permissions")),1),P("td",null,O(S(Ue).mode),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.uid")),1),P("td",null,O(S(Ue).st_uid),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.gid")),1),P("td",null,O(S(Ue).st_gid),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.numOfInodeLinks")),1),P("td",null,O(Number(S(Ue).is_link)),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.inodeNodeNum")),1),P("td",null,O(S(Ue).st_ino),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.inodeProtectionMode")),1),P("td",null,O(S(Ue).st_mode),1)]),P("tr",null,[P("td",null,O(e.$t("file.properties.inodeResidentDevice")),1),P("td",null,O(S(Ue).st_dev),1)])])]),_:1})])),[[_]])]),_:1},8,["tab"]),j(m,{name:"history",tab:e.$t("file.properties.history")},{default:F(()=>[P("div",Ce,[j(y,{"max-height":"386px",columns:S(Me),data:S(Ue).history||[]},null,8,["columns","data"])])]),_:1},8,["tab"])]),_:1},8,["value"])]),_:1},8,["show"])])]),_:1},8,["show","title"])}}}),[["__scopeId","data-v-f7957a5e"]]))}}}); +System.register(["./index-legacy.js?v=1762424784323","./index-legacy107.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./index-legacy39.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./file-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323"],function(e,t){"use strict";var i,l,a,r,s,o,n,p,d,f,u,c,m,v,y,g,w,x,h,_,b,$,j,k,z,C,T,S,F,P,H,O,U,q,M,N,R,I,K;return{setters:[e=>{i=e._},e=>{l=e._},e=>{a=e.a8,r=e.n,s=e.t,o=e.d,n=e.m,p=e.S,d=e.q,f=e._,u=e.fS,c=e.p},e=>{m=e.f,v=e.a,y=e.i},e=>{g=e.o,w=e.F},e=>{x=e.k,h=e.P,_=e.i,b=e.r,$=e.c,j=e.W,k=e.F,z=e.aK,C=e.a2,T=e.V,S=e.a3,F=e.S,P=e.U,H=e.ak,O=e.a4,U=e.j,q=e.l,M=e.R},e=>{N=e.dQ,R=e.au,I=e.dc,K=e.dg},null,null,null,null,null,null,null],execute:function(){var t=document.createElement("style");t.textContent='@charset "UTF-8";.modal-footer-btns[data-v-f7957a5e]{display:flex;align-items:center;flex-direction:row;justify-content:end;gap:10px;padding:10px}.single-line-ellipsis[data-v-f7957a5e]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.properties-wrapper[data-v-f7957a5e]{padding:16px}.properties-wrapper .tab-tit[data-v-f7957a5e]{display:flex;align-items:center;flex-direction:row;justify-content:start;gap:5px;border-bottom:1px solid #cfcfdc}.properties-wrapper .tab-tit .tab-tit-item[data-v-f7957a5e]{padding:10px;background:linear-gradient(to bottom,#f5f5f5,#dedede);border:1px solid #cfcfdc;margin-bottom:-1px;cursor:pointer}.properties-wrapper .tab-tit .tab-tit-item.active[data-v-f7957a5e]{background:#fff;border-bottom:1px solid #fff}.properties-wrapper .content[data-v-f7957a5e]{height:386px}.properties-wrapper .content .info-group .info-item[data-v-f7957a5e]{display:flex;align-items:center;flex-direction:row;justify-content:flex-start;min-height:26px;margin:4px 0}.properties-wrapper .content .info-group .info-item .info-item-label[data-v-f7957a5e]{width:120px;padding:0 10px}.properties-wrapper .content .info-group .info-item .info-item-value[data-v-f7957a5e]{flex:1;width:0}.properties-wrapper .content .detail-tit[data-v-f7957a5e],.properties-wrapper .content .detail-row[data-v-f7957a5e]{display:flex;align-items:center;flex-direction:row;gap:10px;justify-content:flex-start;background:#f6f6f6;padding:10px}.properties-wrapper .content .detail-tit .detail-tit-properties[data-v-f7957a5e],.properties-wrapper .content .detail-row .detail-tit-properties[data-v-f7957a5e]{flex:2}.properties-wrapper .content .detail-tit .detail-tit-value[data-v-f7957a5e],.properties-wrapper .content .detail-row .detail-tit-value[data-v-f7957a5e]{flex:8}.properties-wrapper .content .detail-row[data-v-f7957a5e]{background-color:#fff}.properties-wrapper .content .history-tit[data-v-f7957a5e],.properties-wrapper .content .history-row[data-v-f7957a5e]{display:flex;align-items:center;flex-direction:row;gap:10px;justify-content:flex-start;background:#f6f6f6;padding:10px}.properties-wrapper .content .history-tit .modify[data-v-f7957a5e],.properties-wrapper .content .history-row .modify[data-v-f7957a5e]{flex:3}.properties-wrapper .content .history-tit .size[data-v-f7957a5e],.properties-wrapper .content .history-row .size[data-v-f7957a5e]{flex:1}.properties-wrapper .content .history-tit .md5[data-v-f7957a5e],.properties-wrapper .content .history-row .md5[data-v-f7957a5e]{flex:4.5}.properties-wrapper .content .history-tit .opt[data-v-f7957a5e],.properties-wrapper .content .history-row .opt[data-v-f7957a5e]{flex:1.5}.properties-wrapper .content .history-row[data-v-f7957a5e]{background:#fff}.restore-history-wrapper[data-v-f7957a5e]{padding:20px}.restore-history-wrapper .content[data-v-f7957a5e]{font-size:14px;margin-bottom:10px}.restore-history-wrapper .sub-content[data-v-f7957a5e]{font-size:12px;color:#525252}\n/*$vite$:1*/',document.head.appendChild(t);const L={class:"properties-wrapper"},W={class:"content"},D={class:"info-group"},E={class:"info-item h-60px"},Q={class:"info-item-label"},V={class:"info-item-value"},A={class:"w-360px"},B={class:"my-10px"},G={class:"info-group"},J={class:"info-item"},X={class:"info-item-label"},Y={class:"info-item-value"},Z={class:"info-item"},ee={class:"info-item-label"},te={class:"info-item-value flex"},ie={class:"max-w-300px"},le={class:"info-item",style:{"margin-bottom":"0"}},ae={class:"info-item-label"},re={class:"info-item-value"},se={class:"my-10px"},oe={class:"info-group"},ne={class:"info-item"},pe={class:"info-item-label"},de={class:"info-item-value"},fe={class:"info-item"},ue={class:"info-item-label"},ce={class:"info-item-value"},me={class:"info-item",style:{"margin-bottom":"0"}},ve={class:"info-item-label"},ye={class:"info-item-value"},ge={class:"my-10px"},we={class:"info-group"},xe={class:"info-item"},he={class:"info-item-label"},_e={class:"info-item-value"},be={class:"info-item"},$e={class:"info-item-label"},je={class:"info-item-value"},ke={class:"content overflow-auto"},ze={width:"200"},Ce={class:"content"};e("default",c(x({__name:"Properties",setup(e,{expose:t}){const{t:c}=h(),x=_("fileStore"),{choosedKeys:Te,fileList:Se,currentPath:Fe}=x,Pe=b(!1),He=b("general"),Oe=b(!1),Ue=b({st_atime:0,st_mtime:0,st_ctime:0}),qe=$(()=>Ue.value.path?`${Ue.value.path}/${Ue.value.name}`:"--"),Me=b([{key:"st_mtime",title:()=>c("file.properties.modifiedTime"),width:154,render:e=>a(e.st_mtime)},{key:"st_size",title:()=>c("file.properties.size"),width:80,render:e=>r(e.st_size)},{key:"md5",title:()=>c("file.properties.md5"),ellipsis:{tooltip:!0}},m({width:110,options:e=>[{label:c("file.properties.view"),onClick:()=>{!async function(){g(0,`${Ue.value.path}/${Ue.value.name}`,Fe.value)}()}},{label:c("file.properties.restore"),onClick:()=>{!async function(e){v({title:c("file.properties.restoreHistoryFiles"),width:480,content:()=>j(k,null,[j("div",null,[c("file.properties.restoreHistoryConfirm",{time:a(e.st_mtime)})]),j("div",{class:"mt-8px text-12px text-default leading-[1.4]"},[c("file.properties.restoreHistoryWarning")])]),onConfirm:async()=>{await async function(e,t){const i=n.loading(c("file.properties.restoring"));try{const{status:i}=await s.post("/files?action=re_history",{filename:e,history:t},{requestOptions:{errorMessage:!1}});0===i?n.success(c("file.properties.restoreSuccess")):n.error(c("file.properties.restoreFailed"))}finally{i.close()}}(`${Ue.value.path}/${Ue.value.name}`,e.st_mtime)}})}(e)}}]})]),Ne=()=>{y(qe.value)};return t({open(){Pe.value=!0,async function(e){Oe.value=!0;try{const{message:t}=await s.post("/files?action=get_file_attribute",{filename:e},{requestOptions:{isOriginalResult:!0}});o(t)&&(Ue.value=t)}finally{Oe.value=!1}}(Se.value.find(e=>e.nm==Te.value[0]).path)},close(){Pe.value=!1}}),(e,t)=>{const s=R,o=d,n=I,c=f,m=N,v=u,y=K,g=l,x=p,h=i,_=z("table");return T(),C(h,{show:P(Pe),"onUpdate:show":t[1]||(t[1]=e=>H(Pe)?Pe.value=e:null),width:580,title:`[${P(Ue).name}] - ${e.$t("file.properties.fileProperties")}`},{default:S(()=>[F("div",L,[j(x,{show:P(Oe)},{default:S(()=>[j(g,{value:P(He),"onUpdate:value":t[0]||(t[0]=e=>H(He)?He.value=e:null)},{default:S(()=>[j(m,{name:"general",tab:e.$t("file.properties.general")},{default:S(()=>[F("div",W,[F("div",D,[F("div",E,[F("div",Q,[j(w,{ext:`${P(Ue).st_type}`,size:"large"},null,8,["ext"])]),F("div",V,[F("div",A,[j(s,{value:P(Ue).name,readonly:""},null,8,["value"])])])])]),F("div",B,[j(o)]),F("div",G,[F("div",J,[F("div",X,O(e.$t("file.properties.type"))+":",1),F("div",Y,O(P(Ue).st_type),1)]),F("div",Z,[F("div",ee,O(e.$t("file.properties.location"))+":",1),F("div",te,[F("div",ie,[j(n,null,{default:S(()=>[U(O(P(qe)),1)]),_:1})]),j(c,{class:"ml-10px cursor-pointer",name:"common-copy",size:"14",onClick:Ne})])]),F("div",le,[F("div",ae,O(e.$t("file.properties.size"))+":",1),F("div",re,O(P(r)(P(Ue).st_size)),1)])]),F("div",se,[j(o)]),F("div",oe,[F("div",ne,[F("div",pe,O(e.$t("file.properties.permissions"))+":",1),F("div",de,O(P(Ue).mode),1)]),F("div",fe,[F("div",ue,O(e.$t("file.properties.group"))+":",1),F("div",ce,O(P(Ue).group),1)]),F("div",me,[F("div",ve,O(e.$t("file.properties.user"))+":",1),F("div",ye,O(P(Ue).user),1)])]),F("div",ge,[j(o)]),F("div",we,[F("div",xe,[F("div",he,O(e.$t("file.properties.visitTime"))+":",1),F("div",_e,O(P(a)(P(Ue).st_atime)),1)]),F("div",be,[F("div",$e,O(e.$t("file.properties.modifiedTime"))+":",1),F("div",je,O(P(a)(P(Ue).st_mtime)),1)])])])]),_:1},8,["tab"]),j(m,{name:"details",tab:e.$t("file.properties.details")},{default:S(()=>[q((T(),M("div",ke,[j(v,null,{default:S(()=>[F("thead",null,[F("tr",null,[F("th",ze,O(e.$t("file.properties.name")),1),F("th",null,O(e.$t("file.properties.value")),1)])]),F("tbody",null,[F("tr",null,[F("td",null,O(e.$t("file.properties.name")),1),F("td",null,O(P(Ue).name),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.type")),1),F("td",null,O(P(Ue).st_type),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.location")),1),F("td",null,O(P(Ue).path),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.size")),1),F("td",null,O(P(r)(P(Ue).st_size)),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.visitTime")),1),F("td",null,O(P(a)(P(Ue).st_atime)),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.modifiedTime")),1),F("td",null,O(P(a)(P(Ue).st_mtime)),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.metadataModificationTime")),1),F("td",null,O(P(a)(P(Ue).st_mtime)),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.md5")),1),F("td",null,O(P(Ue).md5),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.sha1")),1),F("td",null,O(P(Ue).sha1),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.user")),1),F("td",null,O(P(Ue).user),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.group")),1),F("td",null,O(P(Ue).group),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.permissions")),1),F("td",null,O(P(Ue).mode),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.uid")),1),F("td",null,O(P(Ue).st_uid),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.gid")),1),F("td",null,O(P(Ue).st_gid),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.numOfInodeLinks")),1),F("td",null,O(Number(P(Ue).is_link)),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.inodeNodeNum")),1),F("td",null,O(P(Ue).st_ino),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.inodeProtectionMode")),1),F("td",null,O(P(Ue).st_mode),1)]),F("tr",null,[F("td",null,O(e.$t("file.properties.inodeResidentDevice")),1),F("td",null,O(P(Ue).st_dev),1)])])]),_:1})])),[[_]])]),_:1},8,["tab"]),j(m,{name:"history",tab:e.$t("file.properties.history")},{default:S(()=>[F("div",Ce,[j(y,{"max-height":"386px",columns:P(Me),data:P(Ue).history||[]},null,8,["columns","data"])])]),_:1},8,["tab"])]),_:1},8,["value"])]),_:1},8,["show"])])]),_:1},8,["show","title"])}}}),[["__scopeId","data-v-f7957a5e"]]))}}}); diff --git a/BTPanel/static/vite/js/Properties.js b/BTPanel/static/vite/js/Properties.js index 5eb6d178..8b88aff8 100644 --- a/BTPanel/static/vite/js/Properties.js +++ b/BTPanel/static/vite/js/Properties.js @@ -1 +1 @@ -import{_ as e}from"./index.js?v=1760428868419";import{_ as t}from"./index108.js?v=1760428868419";import{a8 as i,n as l,t as s,d as a,m as o,S as r,q as n,_ as p,fV as u,p as d}from"./page_layout.js?v=1760428868419";import{f as m,a as f,i as c}from"./public.js?v=1760428868419";import{o as v,F as _}from"./index39.js?v=1760428868419";import{k as y,P as h,i as $,r as g,c as b,W as x,F as w,aK as j,a2 as k,V as z,a3 as T,S as C,U as P,ak as F,a4 as H,j as O,l as S,R as q}from"./vue.js?v=1760428868419";import{dQ as M,au as N,dc as R,dg as U}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./soft2.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";import"./file2.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";const I={class:"properties-wrapper"},K={class:"content"},L={class:"info-group"},V={class:"info-item h-60px"},W={class:"info-item-label"},D={class:"info-item-value"},Q={class:"w-360px"},A={class:"my-10px"},B={class:"info-group"},E={class:"info-item"},G={class:"info-item-label"},J={class:"info-item-value"},X={class:"info-item"},Y={class:"info-item-label"},Z={class:"info-item-value flex"},ee={class:"max-w-300px"},te={class:"info-item",style:{"margin-bottom":"0"}},ie={class:"info-item-label"},le={class:"info-item-value"},se={class:"my-10px"},ae={class:"info-group"},oe={class:"info-item"},re={class:"info-item-label"},ne={class:"info-item-value"},pe={class:"info-item"},ue={class:"info-item-label"},de={class:"info-item-value"},me={class:"info-item",style:{"margin-bottom":"0"}},fe={class:"info-item-label"},ce={class:"info-item-value"},ve={class:"my-10px"},_e={class:"info-group"},ye={class:"info-item"},he={class:"info-item-label"},$e={class:"info-item-value"},ge={class:"info-item"},be={class:"info-item-label"},xe={class:"info-item-value"},we={class:"content overflow-auto"},je={width:"200"},ke={class:"content"},ze=d(y({__name:"Properties",setup(d,{expose:y}){const{t:ze}=h(),Te=$("fileStore"),{choosedKeys:Ce,fileList:Pe,currentPath:Fe}=Te,He=g(!1),Oe=g("general"),Se=g(!1),qe=g({st_atime:0,st_mtime:0,st_ctime:0}),Me=b(()=>qe.value.path?"".concat(qe.value.path,"/").concat(qe.value.name):"--"),Ne=g([{key:"st_mtime",title:()=>ze("file.properties.modifiedTime"),width:154,render:e=>i(e.st_mtime)},{key:"st_size",title:()=>ze("file.properties.size"),width:80,render:e=>l(e.st_size)},{key:"md5",title:()=>ze("file.properties.md5"),ellipsis:{tooltip:!0}},m({width:110,options:e=>[{label:ze("file.properties.view"),onClick:()=>{!async function(){v(0,"".concat(qe.value.path,"/").concat(qe.value.name),Fe.value)}()}},{label:ze("file.properties.restore"),onClick:()=>{!async function(e){f({title:ze("file.properties.restoreHistoryFiles"),width:480,content:()=>x(w,null,[x("div",null,[ze("file.properties.restoreHistoryConfirm",{time:i(e.st_mtime)})]),x("div",{class:"mt-8px text-12px text-default leading-[1.4]"},[ze("file.properties.restoreHistoryWarning")])]),onConfirm:async()=>{await async function(e,t){const i=o.loading(ze("file.properties.restoring"));try{const{status:i}=await s.post("/files?action=re_history",{filename:e,history:t},{requestOptions:{errorMessage:!1}});0===i?o.success(ze("file.properties.restoreSuccess")):o.error(ze("file.properties.restoreFailed"))}finally{i.close()}}("".concat(qe.value.path,"/").concat(qe.value.name),e.st_mtime)}})}(e)}}]})]),Re=()=>{c(Me.value)};return y({open(){He.value=!0;!async function(e){Se.value=!0;try{const{message:t}=await s.post("/files?action=get_file_attribute",{filename:e},{requestOptions:{isOriginalResult:!0}});a(t)&&(qe.value=t)}finally{Se.value=!1}}(Pe.value.find(e=>e.nm==Ce.value[0]).path)},close(){He.value=!1}}),(s,a)=>{const o=N,d=n,m=R,f=p,c=M,v=u,y=U,h=t,$=r,g=e,b=j("table");return z(),k(g,{show:P(He),"onUpdate:show":a[1]||(a[1]=e=>F(He)?He.value=e:null),width:580,title:"[".concat(P(qe).name,"] - ").concat(s.$t("file.properties.fileProperties"))},{default:T(()=>[C("div",I,[x($,{show:P(Se)},{default:T(()=>[x(h,{value:P(Oe),"onUpdate:value":a[0]||(a[0]=e=>F(Oe)?Oe.value=e:null)},{default:T(()=>[x(c,{name:"general",tab:s.$t("file.properties.general")},{default:T(()=>[C("div",K,[C("div",L,[C("div",V,[C("div",W,[x(_,{ext:"".concat(P(qe).st_type),size:"large"},null,8,["ext"])]),C("div",D,[C("div",Q,[x(o,{value:P(qe).name,readonly:""},null,8,["value"])])])])]),C("div",A,[x(d)]),C("div",B,[C("div",E,[C("div",G,H(s.$t("file.properties.type"))+":",1),C("div",J,H(P(qe).st_type),1)]),C("div",X,[C("div",Y,H(s.$t("file.properties.location"))+":",1),C("div",Z,[C("div",ee,[x(m,null,{default:T(()=>[O(H(P(Me)),1)]),_:1})]),x(f,{class:"ml-10px cursor-pointer",name:"common-copy",size:"14",onClick:Re})])]),C("div",te,[C("div",ie,H(s.$t("file.properties.size"))+":",1),C("div",le,H(P(l)(P(qe).st_size)),1)])]),C("div",se,[x(d)]),C("div",ae,[C("div",oe,[C("div",re,H(s.$t("file.properties.permissions"))+":",1),C("div",ne,H(P(qe).mode),1)]),C("div",pe,[C("div",ue,H(s.$t("file.properties.group"))+":",1),C("div",de,H(P(qe).group),1)]),C("div",me,[C("div",fe,H(s.$t("file.properties.user"))+":",1),C("div",ce,H(P(qe).user),1)])]),C("div",ve,[x(d)]),C("div",_e,[C("div",ye,[C("div",he,H(s.$t("file.properties.visitTime"))+":",1),C("div",$e,H(P(i)(P(qe).st_atime)),1)]),C("div",ge,[C("div",be,H(s.$t("file.properties.modifiedTime"))+":",1),C("div",xe,H(P(i)(P(qe).st_mtime)),1)])])])]),_:1},8,["tab"]),x(c,{name:"details",tab:s.$t("file.properties.details")},{default:T(()=>[S((z(),q("div",we,[x(v,null,{default:T(()=>[C("thead",null,[C("tr",null,[C("th",je,H(s.$t("file.properties.name")),1),C("th",null,H(s.$t("file.properties.value")),1)])]),C("tbody",null,[C("tr",null,[C("td",null,H(s.$t("file.properties.name")),1),C("td",null,H(P(qe).name),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.type")),1),C("td",null,H(P(qe).st_type),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.location")),1),C("td",null,H(P(qe).path),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.size")),1),C("td",null,H(P(l)(P(qe).st_size)),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.visitTime")),1),C("td",null,H(P(i)(P(qe).st_atime)),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.modifiedTime")),1),C("td",null,H(P(i)(P(qe).st_mtime)),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.metadataModificationTime")),1),C("td",null,H(P(i)(P(qe).st_mtime)),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.md5")),1),C("td",null,H(P(qe).md5),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.sha1")),1),C("td",null,H(P(qe).sha1),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.user")),1),C("td",null,H(P(qe).user),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.group")),1),C("td",null,H(P(qe).group),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.permissions")),1),C("td",null,H(P(qe).mode),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.uid")),1),C("td",null,H(P(qe).st_uid),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.gid")),1),C("td",null,H(P(qe).st_gid),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.numOfInodeLinks")),1),C("td",null,H(Number(P(qe).is_link)),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.inodeNodeNum")),1),C("td",null,H(P(qe).st_ino),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.inodeProtectionMode")),1),C("td",null,H(P(qe).st_mode),1)]),C("tr",null,[C("td",null,H(s.$t("file.properties.inodeResidentDevice")),1),C("td",null,H(P(qe).st_dev),1)])])]),_:1})])),[[b]])]),_:1},8,["tab"]),x(c,{name:"history",tab:s.$t("file.properties.history")},{default:T(()=>[C("div",ke,[x(y,{"max-height":"386px",columns:P(Ne),data:P(qe).history||[]},null,8,["columns","data"])])]),_:1},8,["tab"])]),_:1},8,["value"])]),_:1},8,["show"])])]),_:1},8,["show","title"])}}}),[["__scopeId","data-v-f7957a5e"]]);export{ze as default}; +import{_ as e}from"./index.js?v=1762424784323";import{_ as t}from"./index107.js?v=1762424784323";import{a8 as i,n as l,t as s,d as a,m as o,S as r,q as n,_ as p,fS as u,p as d}from"./page_layout.js?v=1762424784323";import{f as m,a as f,i as c}from"./public.js?v=1762424784323";import{o as v,F as _}from"./index39.js?v=1762424784323";import{k as y,P as h,i as $,r as g,c as b,W as x,F as w,aK as j,a2 as k,V as z,a3 as T,S as C,U as P,ak as S,a4 as F,j as H,l as O,R as q}from"./vue.js?v=1762424784323";import{dQ as M,au as N,dc as R,dg as U}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./soft2.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";import"./file2.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";const I={class:"properties-wrapper"},K={class:"content"},L={class:"info-group"},W={class:"info-item h-60px"},D={class:"info-item-label"},Q={class:"info-item-value"},V={class:"w-360px"},A={class:"my-10px"},B={class:"info-group"},E={class:"info-item"},G={class:"info-item-label"},J={class:"info-item-value"},X={class:"info-item"},Y={class:"info-item-label"},Z={class:"info-item-value flex"},ee={class:"max-w-300px"},te={class:"info-item",style:{"margin-bottom":"0"}},ie={class:"info-item-label"},le={class:"info-item-value"},se={class:"my-10px"},ae={class:"info-group"},oe={class:"info-item"},re={class:"info-item-label"},ne={class:"info-item-value"},pe={class:"info-item"},ue={class:"info-item-label"},de={class:"info-item-value"},me={class:"info-item",style:{"margin-bottom":"0"}},fe={class:"info-item-label"},ce={class:"info-item-value"},ve={class:"my-10px"},_e={class:"info-group"},ye={class:"info-item"},he={class:"info-item-label"},$e={class:"info-item-value"},ge={class:"info-item"},be={class:"info-item-label"},xe={class:"info-item-value"},we={class:"content overflow-auto"},je={width:"200"},ke={class:"content"},ze=d(y({__name:"Properties",setup(d,{expose:y}){const{t:ze}=h(),Te=$("fileStore"),{choosedKeys:Ce,fileList:Pe,currentPath:Se}=Te,Fe=g(!1),He=g("general"),Oe=g(!1),qe=g({st_atime:0,st_mtime:0,st_ctime:0}),Me=b(()=>qe.value.path?"".concat(qe.value.path,"/").concat(qe.value.name):"--"),Ne=g([{key:"st_mtime",title:()=>ze("file.properties.modifiedTime"),width:154,render:e=>i(e.st_mtime)},{key:"st_size",title:()=>ze("file.properties.size"),width:80,render:e=>l(e.st_size)},{key:"md5",title:()=>ze("file.properties.md5"),ellipsis:{tooltip:!0}},m({width:110,options:e=>[{label:ze("file.properties.view"),onClick:()=>{!async function(){v(0,"".concat(qe.value.path,"/").concat(qe.value.name),Se.value)}()}},{label:ze("file.properties.restore"),onClick:()=>{!async function(e){f({title:ze("file.properties.restoreHistoryFiles"),width:480,content:()=>x(w,null,[x("div",null,[ze("file.properties.restoreHistoryConfirm",{time:i(e.st_mtime)})]),x("div",{class:"mt-8px text-12px text-default leading-[1.4]"},[ze("file.properties.restoreHistoryWarning")])]),onConfirm:async()=>{await async function(e,t){const i=o.loading(ze("file.properties.restoring"));try{const{status:i}=await s.post("/files?action=re_history",{filename:e,history:t},{requestOptions:{errorMessage:!1}});0===i?o.success(ze("file.properties.restoreSuccess")):o.error(ze("file.properties.restoreFailed"))}finally{i.close()}}("".concat(qe.value.path,"/").concat(qe.value.name),e.st_mtime)}})}(e)}}]})]),Re=()=>{c(Me.value)};return y({open(){Fe.value=!0;!async function(e){Oe.value=!0;try{const{message:t}=await s.post("/files?action=get_file_attribute",{filename:e},{requestOptions:{isOriginalResult:!0}});a(t)&&(qe.value=t)}finally{Oe.value=!1}}(Pe.value.find(e=>e.nm==Ce.value[0]).path)},close(){Fe.value=!1}}),(s,a)=>{const o=N,d=n,m=R,f=p,c=M,v=u,y=U,h=t,$=r,g=e,b=j("table");return z(),k(g,{show:P(Fe),"onUpdate:show":a[1]||(a[1]=e=>S(Fe)?Fe.value=e:null),width:580,title:"[".concat(P(qe).name,"] - ").concat(s.$t("file.properties.fileProperties"))},{default:T(()=>[C("div",I,[x($,{show:P(Oe)},{default:T(()=>[x(h,{value:P(He),"onUpdate:value":a[0]||(a[0]=e=>S(He)?He.value=e:null)},{default:T(()=>[x(c,{name:"general",tab:s.$t("file.properties.general")},{default:T(()=>[C("div",K,[C("div",L,[C("div",W,[C("div",D,[x(_,{ext:"".concat(P(qe).st_type),size:"large"},null,8,["ext"])]),C("div",Q,[C("div",V,[x(o,{value:P(qe).name,readonly:""},null,8,["value"])])])])]),C("div",A,[x(d)]),C("div",B,[C("div",E,[C("div",G,F(s.$t("file.properties.type"))+":",1),C("div",J,F(P(qe).st_type),1)]),C("div",X,[C("div",Y,F(s.$t("file.properties.location"))+":",1),C("div",Z,[C("div",ee,[x(m,null,{default:T(()=>[H(F(P(Me)),1)]),_:1})]),x(f,{class:"ml-10px cursor-pointer",name:"common-copy",size:"14",onClick:Re})])]),C("div",te,[C("div",ie,F(s.$t("file.properties.size"))+":",1),C("div",le,F(P(l)(P(qe).st_size)),1)])]),C("div",se,[x(d)]),C("div",ae,[C("div",oe,[C("div",re,F(s.$t("file.properties.permissions"))+":",1),C("div",ne,F(P(qe).mode),1)]),C("div",pe,[C("div",ue,F(s.$t("file.properties.group"))+":",1),C("div",de,F(P(qe).group),1)]),C("div",me,[C("div",fe,F(s.$t("file.properties.user"))+":",1),C("div",ce,F(P(qe).user),1)])]),C("div",ve,[x(d)]),C("div",_e,[C("div",ye,[C("div",he,F(s.$t("file.properties.visitTime"))+":",1),C("div",$e,F(P(i)(P(qe).st_atime)),1)]),C("div",ge,[C("div",be,F(s.$t("file.properties.modifiedTime"))+":",1),C("div",xe,F(P(i)(P(qe).st_mtime)),1)])])])]),_:1},8,["tab"]),x(c,{name:"details",tab:s.$t("file.properties.details")},{default:T(()=>[O((z(),q("div",we,[x(v,null,{default:T(()=>[C("thead",null,[C("tr",null,[C("th",je,F(s.$t("file.properties.name")),1),C("th",null,F(s.$t("file.properties.value")),1)])]),C("tbody",null,[C("tr",null,[C("td",null,F(s.$t("file.properties.name")),1),C("td",null,F(P(qe).name),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.type")),1),C("td",null,F(P(qe).st_type),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.location")),1),C("td",null,F(P(qe).path),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.size")),1),C("td",null,F(P(l)(P(qe).st_size)),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.visitTime")),1),C("td",null,F(P(i)(P(qe).st_atime)),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.modifiedTime")),1),C("td",null,F(P(i)(P(qe).st_mtime)),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.metadataModificationTime")),1),C("td",null,F(P(i)(P(qe).st_mtime)),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.md5")),1),C("td",null,F(P(qe).md5),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.sha1")),1),C("td",null,F(P(qe).sha1),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.user")),1),C("td",null,F(P(qe).user),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.group")),1),C("td",null,F(P(qe).group),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.permissions")),1),C("td",null,F(P(qe).mode),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.uid")),1),C("td",null,F(P(qe).st_uid),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.gid")),1),C("td",null,F(P(qe).st_gid),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.numOfInodeLinks")),1),C("td",null,F(Number(P(qe).is_link)),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.inodeNodeNum")),1),C("td",null,F(P(qe).st_ino),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.inodeProtectionMode")),1),C("td",null,F(P(qe).st_mode),1)]),C("tr",null,[C("td",null,F(s.$t("file.properties.inodeResidentDevice")),1),C("td",null,F(P(qe).st_dev),1)])])]),_:1})])),[[b]])]),_:1},8,["tab"]),x(c,{name:"history",tab:s.$t("file.properties.history")},{default:T(()=>[C("div",ke,[x(y,{"max-height":"386px",columns:P(Ne),data:P(qe).history||[]},null,8,["columns","data"])])]),_:1},8,["tab"])]),_:1},8,["value"])]),_:1},8,["show"])])]),_:1},8,["show","title"])}}}),[["__scopeId","data-v-f7957a5e"]]);export{ze as default}; diff --git a/BTPanel/static/vite/js/Recycle-legacy.js b/BTPanel/static/vite/js/Recycle-legacy.js index ecf532c9..8cface1b 100644 --- a/BTPanel/static/vite/js/Recycle-legacy.js +++ b/BTPanel/static/vite/js/Recycle-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy12.js?v=1760428868419","./public-legacy.js?v=1760428868419","./index-legacy245.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./index-legacy39.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./soft-legacy2.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./file-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419"],function(e,l){"use strict";var t,a,c,i,n,s,r,o,d,f,p,y,m,u,v,g,b,w,x,_,h,k,j,R,$,C,z,U,D,T,F,P,B;return{setters:[e=>{t=e._},e=>{a=e._},e=>{c=e.f,i=e.a,n=e.am,s=e.h},e=>{r=e._},e=>{o=e.n,d=e.a8,f=e.t,p=e.d,y=e.w,m=e.p},e=>{u=e.F,v=e.g},e=>{g=e.dc,b=e.dj,w=e.aC,x=e.dQ},e=>{_=e.k,h=e.P,k=e.i,j=e.r,R=e.W,$=e.c,C=e.a2,z=e.V,U=e.a3,D=e.S,T=e.a4,F=e.ak,P=e.U,B=e.j},null,null,null,null,null,null,null],execute:function(){var l=document.createElement("style");l.textContent='@charset "UTF-8";.modal-footer-btns[data-v-2e0c3f71]{display:flex;align-items:center;flex-direction:row;justify-content:end;gap:10px;padding:10px}.single-line-ellipsis[data-v-2e0c3f71]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recycle-wrapper .recycle-top[data-v-2e0c3f71]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;border-bottom:1px solid var(--color-border);padding:16px 20px}.recycle-wrapper .recycle-top .config-item[data-v-2e0c3f71]{display:flex;align-items:center;gap:10px}.recycle-wrapper .recycle-main[data-v-2e0c3f71]{display:flex;height:568px}.recycle-wrapper .recycle-main .bt-tabs-modal[data-v-2e0c3f71]{--n-tab-item-width: 120px}.recycle-wrapper .recycle-main .tab-content[data-v-2e0c3f71]{flex:1;width:0;height:100%;padding:16px}\n/*$vite$:1*/',document.head.appendChild(l);const q={class:"recycle-wrapper"},M={class:"recycle-top"},O={class:"flex gap-20px"},N={class:"config-item"},S={class:"config-item"},G={class:"config-item"},K={class:"recycle-main"},E={class:"tabs"},H={class:"tab-content"},I={class:"mt-10px"};e("default",m(_({__name:"Recycle",setup(e,{expose:l}){const{t:m}=h(),_=k("fileStore"),J=j(!1);l({open(){J.value=!0,le()},close(){J.value=!1}});const Q=j("all"),V=j(!1),W=j([]),A=j([]),L=j([]),X=j(!1),Y=j(!1),Z=j([{type:"selection",width:40},{key:"name",title:()=>m("file.fileName"),render:e=>R("div",{class:"flex items-center gap-4px"},[R(u,{ext:e.ext},null),R("div",{class:"flex-1 w-0"},[R(g,null,{default:()=>[e.name]})])])},{key:"dname",title:()=>m("file.recycle.originalDirectory"),ellipsis:{tooltip:!0}},{key:"size",title:()=>m("file.size"),width:180,render:e=>o(e.size)},{title:()=>m("file.recycle.removalTime"),key:"time",width:200,render:e=>d(e.time)},c({width:200,options:e=>[{label:m("file.recycle.recover"),onClick:()=>{de(e)}},{label:m("file.recycle.deletePermanently"),onClick:()=>{fe(e)}}]})]),ee=[{key:"restore",label:m("file.recycle.batchRestore"),type:"confirm",confirm:{title:m("file.recycle.batchRestore"),desc:m("file.recycle.batchRestoreConfirm"),api:e=>f.post("/files?action=Re_Recycle_bin",{path:e.rname}),done:()=>{le(),v(_)},columns:[{key:"name",title:()=>m("file.fileName")}]}},{key:"delete",label:m("file.recycle.batchDeletePermanently"),type:"confirm",confirm:{title:m("file.recycle.batchDeletePermanently"),desc:m("file.recycle.batchDeleteConfirm"),api:e=>f.post("/files?action=Del_Recycle_bin",{path:e.rname}),done:()=>{le()},columns:[{key:"name",title:()=>m("file.fileName")}]}}];async function le(){try{W.value=[],V.value=!0;const{message:e}=await f.post("/files?action=Get_Recycle_bin");p(e)&&(L.value=y(e.dirs)?e.dirs.map(e=>({...e,type:"dir",ext:"folder"})):[],A.value=y(e.files)?e.files.map(e=>({...e,type:"file",ext:e.name.split(".").pop()||""})):[],X.value=e.status,Y.value=e.status_db)}finally{V.value=!1}}const te=["jpg","jpeg","png","bmp","gif","tiff","ico","JPG","webp"],ae=["zip","rar","gz","war","tgz"],ce=["mp4","mp3","mpeg","mpg","mov","avi","webm","mkv","mkv","mp3","rmvb","wma","wmv"],ie=["iso","xlsx","xls","doc","docx","tiff","exe","so","7z","bz","dmg","apk","pptx","ppt","xlsb","pdf"],ne=$(()=>{let e=[];switch(Q.value){case"all":e=[...L.value,...A.value];break;case"folder":e=[...L.value];break;case"file":e=[...A.value];break;case"image":e=A.value.filter(e=>te.some(l=>e.name.includes(`.${l}`)));break;case"document":e=A.value.filter(e=>{const l=te.some(l=>e.name.includes(`.${l}`)),t=ae.some(l=>e.name.includes(`.${l}`)),a=ce.some(l=>e.name.includes(`.${l}`)),c=ie.some(l=>e.name.includes(`.${l}`));return l||t||a||c});break;case"database":e=[...L.value,...A.value].filter(e=>e.name.includes("BTDB_"));break;default:e=[]}return e.sort((e,l)=>l.time-e.time),e}),se=()=>{le()},re=async e=>{const l={};"file"!==e&&(l[e]=1),await f.post("/files?action=Recycle_bin",l,{requestOptions:{loading:m("file.recycle.switching"),successMessage:!0}}),le()},oe=()=>{n({text:m("file.recycle.emptyTitle"),title:m("file.recycle.emptyTitle"),content:m("file.recycle.emptyConfirm"),onConfirm:async()=>{await f.post("/files?action=Close_Recycle_bin","",{requestOptions:{loading:m("file.recycle.emptying"),successMessage:!0}}),le()}})},de=e=>{i({title:m("file.recycle.restoreFileTitle",{name:e.name}),content:m("file.recycle.restoreFileConfirm"),onConfirm:async()=>{await f.post("/files?action=Re_Recycle_bin",{path:e.rname},{requestOptions:{loading:m("file.recycle.restoring"),successMessage:!0}}),le(),v(_)}})},fe=e=>{n({text:m("file.delete"),title:m("file.recycle.deleteFileTitle",{name:e.name}),content:m("file.recycle.deleteFileConfirm"),onConfirm:async()=>{await f.post("/files?action=Del_Recycle_bin",{path:e.rname},{requestOptions:{loading:m("file.recycle.deleting"),successMessage:!0}}),le()}})};return(e,l)=>{const c=b,i=w,n=x,o=r,d=s,f=a,p=t;return z(),C(p,{show:P(J),"onUpdate:show":l[7]||(l[7]=e=>F(J)?J.value=e:null),title:e.$t("file.recycle.title"),width:"80%"},{default:U(()=>[D("div",q,[D("div",M,[D("div",O,[D("div",N,[D("div",null,T(e.$t("file.recycle.fileRecycleBin")),1),R(c,{value:P(X),"onUpdate:value":[l[0]||(l[0]=e=>F(X)?X.value=e:null),l[1]||(l[1]=()=>re("file"))]},null,8,["value"])]),D("div",S,[D("div",null,T(e.$t("file.recycle.databaseRecycleBin")),1),R(c,{value:P(Y),"onUpdate:value":[l[2]||(l[2]=e=>F(Y)?Y.value=e:null),l[3]||(l[3]=()=>re("db"))]},null,8,["value"])]),D("div",G,T(e.$t("file.recycle.warning")),1)]),R(i,{onClick:oe},{default:U(()=>[B(T(e.$t("file.recycle.emptyRecycleBin")),1)]),_:1})]),D("div",K,[D("div",E,[R(o,{value:P(Q),"onUpdate:value":[l[4]||(l[4]=e=>F(Q)?Q.value=e:null),se],panePadding:"0"},{default:U(()=>[R(n,{name:"all",tab:e.$t("file.recycle.all")},null,8,["tab"]),R(n,{name:"folder",tab:e.$t("file.recycle.folder")},null,8,["tab"]),R(n,{name:"file",tab:e.$t("file.recycle.file")},null,8,["tab"]),R(n,{name:"image",tab:e.$t("file.recycle.image")},null,8,["tab"]),R(n,{name:"document",tab:e.$t("file.recycle.document")},null,8,["tab"]),R(n,{name:"database",tab:e.$t("file.recycle.database")},null,8,["tab"])]),_:1},8,["value"])]),D("div",H,[R(d,{"checked-row-keys":P(W),"onUpdate:checkedRowKeys":l[5]||(l[5]=e=>F(W)?W.value=e:null),loading:P(V),"max-height":450,"row-key":"rname",columns:P(Z),data:P(ne)},null,8,["checked-row-keys","loading","columns","data"]),D("div",I,[R(f,{"checked-row-keys":P(W),"onUpdate:checkedRowKeys":l[6]||(l[6]=e=>F(W)?W.value=e:null),"row-key":"rname","select-width":240,data:P(ne),options:ee},null,8,["checked-row-keys","data"])])])])])]),_:1},8,["show","title"])}}}),[["__scopeId","data-v-2e0c3f71"]]))}}}); +System.register(["./index-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy12.js?v=1762424784323","./public-legacy.js?v=1762424784323","./index-legacy243.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./index-legacy39.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./file-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323"],function(e,l){"use strict";var t,a,c,i,n,s,r,o,d,f,p,y,m,u,v,g,b,w,x,_,h,k,j,R,$,C,z,U,D,T,F,P,B;return{setters:[e=>{t=e._},e=>{a=e._},e=>{c=e.f,i=e.a,n=e.am,s=e.h},e=>{r=e._},e=>{o=e.n,d=e.a8,f=e.t,p=e.d,y=e.w,m=e.p},e=>{u=e.F,v=e.g},e=>{g=e.dc,b=e.dj,w=e.aC,x=e.dQ},e=>{_=e.k,h=e.P,k=e.i,j=e.r,R=e.W,$=e.c,C=e.a2,z=e.V,U=e.a3,D=e.S,T=e.a4,F=e.ak,P=e.U,B=e.j},null,null,null,null,null,null,null],execute:function(){var l=document.createElement("style");l.textContent='@charset "UTF-8";.modal-footer-btns[data-v-2e0c3f71]{display:flex;align-items:center;flex-direction:row;justify-content:end;gap:10px;padding:10px}.single-line-ellipsis[data-v-2e0c3f71]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recycle-wrapper .recycle-top[data-v-2e0c3f71]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;border-bottom:1px solid var(--color-border);padding:16px 20px}.recycle-wrapper .recycle-top .config-item[data-v-2e0c3f71]{display:flex;align-items:center;gap:10px}.recycle-wrapper .recycle-main[data-v-2e0c3f71]{display:flex;height:568px}.recycle-wrapper .recycle-main .bt-tabs-modal[data-v-2e0c3f71]{--n-tab-item-width: 120px}.recycle-wrapper .recycle-main .tab-content[data-v-2e0c3f71]{flex:1;width:0;height:100%;padding:16px}\n/*$vite$:1*/',document.head.appendChild(l);const q={class:"recycle-wrapper"},M={class:"recycle-top"},O={class:"flex gap-20px"},N={class:"config-item"},S={class:"config-item"},G={class:"config-item"},K={class:"recycle-main"},E={class:"tabs"},H={class:"tab-content"},I={class:"mt-10px"};e("default",m(_({__name:"Recycle",setup(e,{expose:l}){const{t:m}=h(),_=k("fileStore"),J=j(!1);l({open(){J.value=!0,le()},close(){J.value=!1}});const Q=j("all"),V=j(!1),W=j([]),A=j([]),L=j([]),X=j(!1),Y=j(!1),Z=j([{type:"selection",width:40},{key:"name",title:()=>m("file.fileName"),render:e=>R("div",{class:"flex items-center gap-4px"},[R(u,{ext:e.ext},null),R("div",{class:"flex-1 w-0"},[R(g,null,{default:()=>[e.name]})])])},{key:"dname",title:()=>m("file.recycle.originalDirectory"),ellipsis:{tooltip:!0}},{key:"size",title:()=>m("file.size"),width:180,render:e=>o(e.size)},{title:()=>m("file.recycle.removalTime"),key:"time",width:200,render:e=>d(e.time)},c({width:200,options:e=>[{label:m("file.recycle.recover"),onClick:()=>{de(e)}},{label:m("file.recycle.deletePermanently"),onClick:()=>{fe(e)}}]})]),ee=[{key:"restore",label:m("file.recycle.batchRestore"),type:"confirm",confirm:{title:m("file.recycle.batchRestore"),desc:m("file.recycle.batchRestoreConfirm"),api:e=>f.post("/files?action=Re_Recycle_bin",{path:e.rname}),done:()=>{le(),v(_)},columns:[{key:"name",title:()=>m("file.fileName")}]}},{key:"delete",label:m("file.recycle.batchDeletePermanently"),type:"confirm",confirm:{title:m("file.recycle.batchDeletePermanently"),desc:m("file.recycle.batchDeleteConfirm"),api:e=>f.post("/files?action=Del_Recycle_bin",{path:e.rname}),done:()=>{le()},columns:[{key:"name",title:()=>m("file.fileName")}]}}];async function le(){try{W.value=[],V.value=!0;const{message:e}=await f.post("/files?action=Get_Recycle_bin");p(e)&&(L.value=y(e.dirs)?e.dirs.map(e=>({...e,type:"dir",ext:"folder"})):[],A.value=y(e.files)?e.files.map(e=>({...e,type:"file",ext:e.name.split(".").pop()||""})):[],X.value=e.status,Y.value=e.status_db)}finally{V.value=!1}}const te=["jpg","jpeg","png","bmp","gif","tiff","ico","JPG","webp"],ae=["zip","rar","gz","war","tgz"],ce=["mp4","mp3","mpeg","mpg","mov","avi","webm","mkv","mkv","mp3","rmvb","wma","wmv"],ie=["iso","xlsx","xls","doc","docx","tiff","exe","so","7z","bz","dmg","apk","pptx","ppt","xlsb","pdf"],ne=$(()=>{let e=[];switch(Q.value){case"all":e=[...L.value,...A.value];break;case"folder":e=[...L.value];break;case"file":e=[...A.value];break;case"image":e=A.value.filter(e=>te.some(l=>e.name.includes(`.${l}`)));break;case"document":e=A.value.filter(e=>{const l=te.some(l=>e.name.includes(`.${l}`)),t=ae.some(l=>e.name.includes(`.${l}`)),a=ce.some(l=>e.name.includes(`.${l}`)),c=ie.some(l=>e.name.includes(`.${l}`));return l||t||a||c});break;case"database":e=[...L.value,...A.value].filter(e=>e.name.includes("BTDB_"));break;default:e=[]}return e.sort((e,l)=>l.time-e.time),e}),se=()=>{le()},re=async e=>{const l={};"file"!==e&&(l[e]=1),await f.post("/files?action=Recycle_bin",l,{requestOptions:{loading:m("file.recycle.switching"),successMessage:!0}}),le()},oe=()=>{n({text:m("file.recycle.emptyTitle"),title:m("file.recycle.emptyTitle"),content:m("file.recycle.emptyConfirm"),onConfirm:async()=>{await f.post("/files?action=Close_Recycle_bin","",{requestOptions:{loading:m("file.recycle.emptying"),successMessage:!0}}),le()}})},de=e=>{i({title:m("file.recycle.restoreFileTitle",{name:e.name}),content:m("file.recycle.restoreFileConfirm"),onConfirm:async()=>{await f.post("/files?action=Re_Recycle_bin",{path:e.rname},{requestOptions:{loading:m("file.recycle.restoring"),successMessage:!0}}),le(),v(_)}})},fe=e=>{n({text:m("file.delete"),title:m("file.recycle.deleteFileTitle",{name:e.name}),content:m("file.recycle.deleteFileConfirm"),onConfirm:async()=>{await f.post("/files?action=Del_Recycle_bin",{path:e.rname},{requestOptions:{loading:m("file.recycle.deleting"),successMessage:!0}}),le()}})};return(e,l)=>{const c=b,i=w,n=x,o=r,d=s,f=a,p=t;return z(),C(p,{show:P(J),"onUpdate:show":l[7]||(l[7]=e=>F(J)?J.value=e:null),title:e.$t("file.recycle.title"),width:"80%"},{default:U(()=>[D("div",q,[D("div",M,[D("div",O,[D("div",N,[D("div",null,T(e.$t("file.recycle.fileRecycleBin")),1),R(c,{value:P(X),"onUpdate:value":[l[0]||(l[0]=e=>F(X)?X.value=e:null),l[1]||(l[1]=()=>re("file"))]},null,8,["value"])]),D("div",S,[D("div",null,T(e.$t("file.recycle.databaseRecycleBin")),1),R(c,{value:P(Y),"onUpdate:value":[l[2]||(l[2]=e=>F(Y)?Y.value=e:null),l[3]||(l[3]=()=>re("db"))]},null,8,["value"])]),D("div",G,T(e.$t("file.recycle.warning")),1)]),R(i,{onClick:oe},{default:U(()=>[B(T(e.$t("file.recycle.emptyRecycleBin")),1)]),_:1})]),D("div",K,[D("div",E,[R(o,{value:P(Q),"onUpdate:value":[l[4]||(l[4]=e=>F(Q)?Q.value=e:null),se],panePadding:"0"},{default:U(()=>[R(n,{name:"all",tab:e.$t("file.recycle.all")},null,8,["tab"]),R(n,{name:"folder",tab:e.$t("file.recycle.folder")},null,8,["tab"]),R(n,{name:"file",tab:e.$t("file.recycle.file")},null,8,["tab"]),R(n,{name:"image",tab:e.$t("file.recycle.image")},null,8,["tab"]),R(n,{name:"document",tab:e.$t("file.recycle.document")},null,8,["tab"]),R(n,{name:"database",tab:e.$t("file.recycle.database")},null,8,["tab"])]),_:1},8,["value"])]),D("div",H,[R(d,{"checked-row-keys":P(W),"onUpdate:checkedRowKeys":l[5]||(l[5]=e=>F(W)?W.value=e:null),loading:P(V),"max-height":450,"row-key":"rname",columns:P(Z),data:P(ne)},null,8,["checked-row-keys","loading","columns","data"]),D("div",I,[R(f,{"checked-row-keys":P(W),"onUpdate:checkedRowKeys":l[6]||(l[6]=e=>F(W)?W.value=e:null),"row-key":"rname","select-width":240,data:P(ne),options:ee},null,8,["checked-row-keys","data"])])])])])]),_:1},8,["show","title"])}}}),[["__scopeId","data-v-2e0c3f71"]]))}}}); diff --git a/BTPanel/static/vite/js/Recycle.js b/BTPanel/static/vite/js/Recycle.js index 11d2ea79..4524109f 100644 --- a/BTPanel/static/vite/js/Recycle.js +++ b/BTPanel/static/vite/js/Recycle.js @@ -1 +1 @@ -import{_ as e}from"./index.js?v=1760428868419";import{_ as l}from"./index.vue_vue_type_script_setup_true_lang12.js?v=1760428868419";import{f as a,a as t,am as i,h as c}from"./public.js?v=1760428868419";import{_ as s}from"./index245.js?v=1760428868419";import{n,a8 as o,t as r,d as m,w as f,p as d}from"./page_layout.js?v=1760428868419";import{F as u,g as p}from"./index39.js?v=1760428868419";import{dc as y,dj as v,aC as b,dQ as _}from"./naive.js?v=1760428868419";import{k as g,P as k,i as w,r as h,W as x,c as j,a2 as R,V as C,a3 as $,S as z,a4 as D,ak as U,U as P,j as T}from"./vue.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./soft2.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";import"./file2.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";const B={class:"recycle-wrapper"},F={class:"recycle-top"},q={class:"flex gap-20px"},M={class:"config-item"},O={class:"config-item"},N={class:"config-item"},G={class:"recycle-main"},K={class:"tabs"},S={class:"tab-content"},H={class:"mt-10px"},I=d(g({__name:"Recycle",setup(d,{expose:g}){const{t:I}=k(),J=w("fileStore"),Q=h(!1);g({open(){Q.value=!0,le()},close(){Q.value=!1}});const V=h("all"),W=h(!1),A=h([]),E=h([]),L=h([]),X=h(!1),Y=h(!1),Z=h([{type:"selection",width:40},{key:"name",title:()=>I("file.fileName"),render:e=>x("div",{class:"flex items-center gap-4px"},[x(u,{ext:e.ext},null),x("div",{class:"flex-1 w-0"},[x(y,null,{default:()=>[e.name]})])])},{key:"dname",title:()=>I("file.recycle.originalDirectory"),ellipsis:{tooltip:!0}},{key:"size",title:()=>I("file.size"),width:180,render:e=>n(e.size)},{title:()=>I("file.recycle.removalTime"),key:"time",width:200,render:e=>o(e.time)},a({width:200,options:e=>[{label:I("file.recycle.recover"),onClick:()=>{me(e)}},{label:I("file.recycle.deletePermanently"),onClick:()=>{fe(e)}}]})]),ee=[{key:"restore",label:I("file.recycle.batchRestore"),type:"confirm",confirm:{title:I("file.recycle.batchRestore"),desc:I("file.recycle.batchRestoreConfirm"),api:e=>r.post("/files?action=Re_Recycle_bin",{path:e.rname}),done:()=>{le(),p(J)},columns:[{key:"name",title:()=>I("file.fileName")}]}},{key:"delete",label:I("file.recycle.batchDeletePermanently"),type:"confirm",confirm:{title:I("file.recycle.batchDeletePermanently"),desc:I("file.recycle.batchDeleteConfirm"),api:e=>r.post("/files?action=Del_Recycle_bin",{path:e.rname}),done:()=>{le()},columns:[{key:"name",title:()=>I("file.fileName")}]}}];async function le(){try{A.value=[],W.value=!0;const{message:e}=await r.post("/files?action=Get_Recycle_bin");m(e)&&(L.value=f(e.dirs)?e.dirs.map(e=>({...e,type:"dir",ext:"folder"})):[],E.value=f(e.files)?e.files.map(e=>({...e,type:"file",ext:e.name.split(".").pop()||""})):[],X.value=e.status,Y.value=e.status_db)}finally{W.value=!1}}const ae=["jpg","jpeg","png","bmp","gif","tiff","ico","JPG","webp"],te=["zip","rar","gz","war","tgz"],ie=["mp4","mp3","mpeg","mpg","mov","avi","webm","mkv","mkv","mp3","rmvb","wma","wmv"],ce=["iso","xlsx","xls","doc","docx","tiff","exe","so","7z","bz","dmg","apk","pptx","ppt","xlsb","pdf"],se=j(()=>{let e=[];switch(V.value){case"all":e=[...L.value,...E.value];break;case"folder":e=[...L.value];break;case"file":e=[...E.value];break;case"image":e=E.value.filter(e=>ae.some(l=>e.name.includes(".".concat(l))));break;case"document":e=E.value.filter(e=>{const l=ae.some(l=>e.name.includes(".".concat(l))),a=te.some(l=>e.name.includes(".".concat(l))),t=ie.some(l=>e.name.includes(".".concat(l))),i=ce.some(l=>e.name.includes(".".concat(l)));return l||a||t||i});break;case"database":e=[...L.value,...E.value].filter(e=>e.name.includes("BTDB_"));break;default:e=[]}return e.sort((e,l)=>l.time-e.time),e}),ne=()=>{le()},oe=async e=>{const l={};"file"!==e&&(l[e]=1),await r.post("/files?action=Recycle_bin",l,{requestOptions:{loading:I("file.recycle.switching"),successMessage:!0}}),le()},re=()=>{i({text:I("file.recycle.emptyTitle"),title:I("file.recycle.emptyTitle"),content:I("file.recycle.emptyConfirm"),onConfirm:async()=>{await r.post("/files?action=Close_Recycle_bin","",{requestOptions:{loading:I("file.recycle.emptying"),successMessage:!0}}),le()}})},me=e=>{t({title:I("file.recycle.restoreFileTitle",{name:e.name}),content:I("file.recycle.restoreFileConfirm"),onConfirm:async()=>{await r.post("/files?action=Re_Recycle_bin",{path:e.rname},{requestOptions:{loading:I("file.recycle.restoring"),successMessage:!0}}),le(),p(J)}})},fe=e=>{i({text:I("file.delete"),title:I("file.recycle.deleteFileTitle",{name:e.name}),content:I("file.recycle.deleteFileConfirm"),onConfirm:async()=>{await r.post("/files?action=Del_Recycle_bin",{path:e.rname},{requestOptions:{loading:I("file.recycle.deleting"),successMessage:!0}}),le()}})};return(a,t)=>{const i=v,n=b,o=_,r=s,m=c,f=l,d=e;return C(),R(d,{show:P(Q),"onUpdate:show":t[7]||(t[7]=e=>U(Q)?Q.value=e:null),title:a.$t("file.recycle.title"),width:"80%"},{default:$(()=>[z("div",B,[z("div",F,[z("div",q,[z("div",M,[z("div",null,D(a.$t("file.recycle.fileRecycleBin")),1),x(i,{value:P(X),"onUpdate:value":[t[0]||(t[0]=e=>U(X)?X.value=e:null),t[1]||(t[1]=()=>oe("file"))]},null,8,["value"])]),z("div",O,[z("div",null,D(a.$t("file.recycle.databaseRecycleBin")),1),x(i,{value:P(Y),"onUpdate:value":[t[2]||(t[2]=e=>U(Y)?Y.value=e:null),t[3]||(t[3]=()=>oe("db"))]},null,8,["value"])]),z("div",N,D(a.$t("file.recycle.warning")),1)]),x(n,{onClick:re},{default:$(()=>[T(D(a.$t("file.recycle.emptyRecycleBin")),1)]),_:1})]),z("div",G,[z("div",K,[x(r,{value:P(V),"onUpdate:value":[t[4]||(t[4]=e=>U(V)?V.value=e:null),ne],panePadding:"0"},{default:$(()=>[x(o,{name:"all",tab:a.$t("file.recycle.all")},null,8,["tab"]),x(o,{name:"folder",tab:a.$t("file.recycle.folder")},null,8,["tab"]),x(o,{name:"file",tab:a.$t("file.recycle.file")},null,8,["tab"]),x(o,{name:"image",tab:a.$t("file.recycle.image")},null,8,["tab"]),x(o,{name:"document",tab:a.$t("file.recycle.document")},null,8,["tab"]),x(o,{name:"database",tab:a.$t("file.recycle.database")},null,8,["tab"])]),_:1},8,["value"])]),z("div",S,[x(m,{"checked-row-keys":P(A),"onUpdate:checkedRowKeys":t[5]||(t[5]=e=>U(A)?A.value=e:null),loading:P(W),"max-height":450,"row-key":"rname",columns:P(Z),data:P(se)},null,8,["checked-row-keys","loading","columns","data"]),z("div",H,[x(f,{"checked-row-keys":P(A),"onUpdate:checkedRowKeys":t[6]||(t[6]=e=>U(A)?A.value=e:null),"row-key":"rname","select-width":240,data:P(se),options:ee},null,8,["checked-row-keys","data"])])])])])]),_:1},8,["show","title"])}}}),[["__scopeId","data-v-2e0c3f71"]]);export{I as default}; +import{_ as e}from"./index.js?v=1762424784323";import{_ as l}from"./index.vue_vue_type_script_setup_true_lang12.js?v=1762424784323";import{f as a,a as t,am as i,h as c}from"./public.js?v=1762424784323";import{_ as s}from"./index243.js?v=1762424784323";import{n,a8 as o,t as r,d as m,w as f,p as d}from"./page_layout.js?v=1762424784323";import{F as u,g as p}from"./index39.js?v=1762424784323";import{dc as y,dj as v,aC as b,dQ as _}from"./naive.js?v=1762424784323";import{k as g,P as k,i as w,r as h,W as x,c as j,a2 as R,V as C,a3 as $,S as z,a4 as D,ak as U,U as P,j as T}from"./vue.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./soft2.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";import"./file2.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";const B={class:"recycle-wrapper"},F={class:"recycle-top"},q={class:"flex gap-20px"},M={class:"config-item"},O={class:"config-item"},N={class:"config-item"},G={class:"recycle-main"},K={class:"tabs"},S={class:"tab-content"},H={class:"mt-10px"},I=d(g({__name:"Recycle",setup(d,{expose:g}){const{t:I}=k(),J=w("fileStore"),Q=h(!1);g({open(){Q.value=!0,le()},close(){Q.value=!1}});const V=h("all"),W=h(!1),A=h([]),E=h([]),L=h([]),X=h(!1),Y=h(!1),Z=h([{type:"selection",width:40},{key:"name",title:()=>I("file.fileName"),render:e=>x("div",{class:"flex items-center gap-4px"},[x(u,{ext:e.ext},null),x("div",{class:"flex-1 w-0"},[x(y,null,{default:()=>[e.name]})])])},{key:"dname",title:()=>I("file.recycle.originalDirectory"),ellipsis:{tooltip:!0}},{key:"size",title:()=>I("file.size"),width:180,render:e=>n(e.size)},{title:()=>I("file.recycle.removalTime"),key:"time",width:200,render:e=>o(e.time)},a({width:200,options:e=>[{label:I("file.recycle.recover"),onClick:()=>{me(e)}},{label:I("file.recycle.deletePermanently"),onClick:()=>{fe(e)}}]})]),ee=[{key:"restore",label:I("file.recycle.batchRestore"),type:"confirm",confirm:{title:I("file.recycle.batchRestore"),desc:I("file.recycle.batchRestoreConfirm"),api:e=>r.post("/files?action=Re_Recycle_bin",{path:e.rname}),done:()=>{le(),p(J)},columns:[{key:"name",title:()=>I("file.fileName")}]}},{key:"delete",label:I("file.recycle.batchDeletePermanently"),type:"confirm",confirm:{title:I("file.recycle.batchDeletePermanently"),desc:I("file.recycle.batchDeleteConfirm"),api:e=>r.post("/files?action=Del_Recycle_bin",{path:e.rname}),done:()=>{le()},columns:[{key:"name",title:()=>I("file.fileName")}]}}];async function le(){try{A.value=[],W.value=!0;const{message:e}=await r.post("/files?action=Get_Recycle_bin");m(e)&&(L.value=f(e.dirs)?e.dirs.map(e=>({...e,type:"dir",ext:"folder"})):[],E.value=f(e.files)?e.files.map(e=>({...e,type:"file",ext:e.name.split(".").pop()||""})):[],X.value=e.status,Y.value=e.status_db)}finally{W.value=!1}}const ae=["jpg","jpeg","png","bmp","gif","tiff","ico","JPG","webp"],te=["zip","rar","gz","war","tgz"],ie=["mp4","mp3","mpeg","mpg","mov","avi","webm","mkv","mkv","mp3","rmvb","wma","wmv"],ce=["iso","xlsx","xls","doc","docx","tiff","exe","so","7z","bz","dmg","apk","pptx","ppt","xlsb","pdf"],se=j(()=>{let e=[];switch(V.value){case"all":e=[...L.value,...E.value];break;case"folder":e=[...L.value];break;case"file":e=[...E.value];break;case"image":e=E.value.filter(e=>ae.some(l=>e.name.includes(".".concat(l))));break;case"document":e=E.value.filter(e=>{const l=ae.some(l=>e.name.includes(".".concat(l))),a=te.some(l=>e.name.includes(".".concat(l))),t=ie.some(l=>e.name.includes(".".concat(l))),i=ce.some(l=>e.name.includes(".".concat(l)));return l||a||t||i});break;case"database":e=[...L.value,...E.value].filter(e=>e.name.includes("BTDB_"));break;default:e=[]}return e.sort((e,l)=>l.time-e.time),e}),ne=()=>{le()},oe=async e=>{const l={};"file"!==e&&(l[e]=1),await r.post("/files?action=Recycle_bin",l,{requestOptions:{loading:I("file.recycle.switching"),successMessage:!0}}),le()},re=()=>{i({text:I("file.recycle.emptyTitle"),title:I("file.recycle.emptyTitle"),content:I("file.recycle.emptyConfirm"),onConfirm:async()=>{await r.post("/files?action=Close_Recycle_bin","",{requestOptions:{loading:I("file.recycle.emptying"),successMessage:!0}}),le()}})},me=e=>{t({title:I("file.recycle.restoreFileTitle",{name:e.name}),content:I("file.recycle.restoreFileConfirm"),onConfirm:async()=>{await r.post("/files?action=Re_Recycle_bin",{path:e.rname},{requestOptions:{loading:I("file.recycle.restoring"),successMessage:!0}}),le(),p(J)}})},fe=e=>{i({text:I("file.delete"),title:I("file.recycle.deleteFileTitle",{name:e.name}),content:I("file.recycle.deleteFileConfirm"),onConfirm:async()=>{await r.post("/files?action=Del_Recycle_bin",{path:e.rname},{requestOptions:{loading:I("file.recycle.deleting"),successMessage:!0}}),le()}})};return(a,t)=>{const i=v,n=b,o=_,r=s,m=c,f=l,d=e;return C(),R(d,{show:P(Q),"onUpdate:show":t[7]||(t[7]=e=>U(Q)?Q.value=e:null),title:a.$t("file.recycle.title"),width:"80%"},{default:$(()=>[z("div",B,[z("div",F,[z("div",q,[z("div",M,[z("div",null,D(a.$t("file.recycle.fileRecycleBin")),1),x(i,{value:P(X),"onUpdate:value":[t[0]||(t[0]=e=>U(X)?X.value=e:null),t[1]||(t[1]=()=>oe("file"))]},null,8,["value"])]),z("div",O,[z("div",null,D(a.$t("file.recycle.databaseRecycleBin")),1),x(i,{value:P(Y),"onUpdate:value":[t[2]||(t[2]=e=>U(Y)?Y.value=e:null),t[3]||(t[3]=()=>oe("db"))]},null,8,["value"])]),z("div",N,D(a.$t("file.recycle.warning")),1)]),x(n,{onClick:re},{default:$(()=>[T(D(a.$t("file.recycle.emptyRecycleBin")),1)]),_:1})]),z("div",G,[z("div",K,[x(r,{value:P(V),"onUpdate:value":[t[4]||(t[4]=e=>U(V)?V.value=e:null),ne],panePadding:"0"},{default:$(()=>[x(o,{name:"all",tab:a.$t("file.recycle.all")},null,8,["tab"]),x(o,{name:"folder",tab:a.$t("file.recycle.folder")},null,8,["tab"]),x(o,{name:"file",tab:a.$t("file.recycle.file")},null,8,["tab"]),x(o,{name:"image",tab:a.$t("file.recycle.image")},null,8,["tab"]),x(o,{name:"document",tab:a.$t("file.recycle.document")},null,8,["tab"]),x(o,{name:"database",tab:a.$t("file.recycle.database")},null,8,["tab"])]),_:1},8,["value"])]),z("div",S,[x(m,{"checked-row-keys":P(A),"onUpdate:checkedRowKeys":t[5]||(t[5]=e=>U(A)?A.value=e:null),loading:P(W),"max-height":450,"row-key":"rname",columns:P(Z),data:P(se)},null,8,["checked-row-keys","loading","columns","data"]),z("div",H,[x(f,{"checked-row-keys":P(A),"onUpdate:checkedRowKeys":t[6]||(t[6]=e=>U(A)?A.value=e:null),"row-key":"rname","select-width":240,data:P(se),options:ee},null,8,["checked-row-keys","data"])])])])])]),_:1},8,["show","title"])}}}),[["__scopeId","data-v-2e0c3f71"]]);export{I as default}; diff --git a/BTPanel/static/vite/js/RemoteDownload-legacy.js b/BTPanel/static/vite/js/RemoteDownload-legacy.js index 78731c1a..f2ef2390 100644 --- a/BTPanel/static/vite/js/RemoteDownload-legacy.js +++ b/BTPanel/static/vite/js/RemoteDownload-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./index-legacy39.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./soft-legacy2.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./file-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419"],function(e,l){"use strict";var a,t,o,u,n,r,i,d,s,v,p,f,c,m,_,g,w,y,h,j;return{setters:[e=>{a=e._},e=>{t=e._},e=>{o=e.fU,u=e.t},e=>{n=e.b,r=e.g},e=>{i=e.k,d=e.P,s=e.i,v=e.r,p=e.av,f=e.a2,c=e.V,m=e.a3,_=e.S,g=e.W,w=e.U,y=e.ak},e=>{h=e.dR,j=e.au},null,null,null,null,null,null,null,null],execute:function(){const l={class:"p-20px pt-28px"},b={class:"w-320px"},x={class:"w-320px"},D={class:"w-320px"};e("default",i({__name:"RemoteDownload",setup(e,{expose:i}){const{t:M}=d(),R=s("fileStore"),{downloadFileFormData:U,currentPath:E}=R,k=v(!1),q=p("formRef"),F={url:{trigger:["input","blur"],validator:()=>U.value.url?!!o(U.value.url)||new Error(M("file.remoteDownloadModal.validation.urlInvalid")):new Error(M("file.remoteDownloadModal.validation.urlRequired"))},path:{trigger:["input","blur"],validator:()=>!!U.value.path||new Error(M("file.remoteDownloadModal.validation.pathRequired"))},filename:{trigger:["input","blur"],validator:()=>!!U.value.filename||new Error(M("file.remoteDownloadModal.validation.filenameRequired"))}},S=e=>{const l=e.split("/").pop();U.value.filename=l||""};i({open(){U.value.url="http://",U.value.path=E.value,U.value.filename="",k.value=!0},close(){k.value=!1}});const P=async()=>{await(q.value?.validate()),await u.post("/files?action=DownloadFile",{...U.value}),n(R),r(R)};return(e,o)=>{const u=j,n=h,r=t,i=a;return c(),f(i,{show:w(k),"onUpdate:show":o[3]||(o[3]=e=>y(k)?k.value=e:null),title:w(M)("file.remoteDownloadModal.title"),width:500,footer:!0,onConfirm:P},{default:m(()=>[_("div",l,[g(r,{ref_key:"formRef",ref:q,model:w(U),rules:F},{default:m(()=>[g(n,{label:w(M)("file.remoteDownloadModal.urlAddress"),path:"url"},{default:m(()=>[_("div",b,[g(u,{value:w(U).url,"onUpdate:value":[o[0]||(o[0]=e=>w(U).url=e),S]},null,8,["value"])])]),_:1},8,["label"]),g(n,{label:w(M)("file.remoteDownloadModal.downloadTo"),path:"path"},{default:m(()=>[_("div",x,[g(u,{value:w(U).path,"onUpdate:value":o[1]||(o[1]=e=>w(U).path=e)},null,8,["value"])])]),_:1},8,["label"]),g(n,{label:w(M)("file.remoteDownloadModal.fileName"),path:"filename"},{default:m(()=>[_("div",D,[g(u,{value:w(U).filename,"onUpdate:value":o[2]||(o[2]=e=>w(U).filename=e)},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])]),_:1},8,["show","title"])}}}))}}}); +System.register(["./index-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./index-legacy39.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./file-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323"],function(e,l){"use strict";var a,t,o,u,n,r,i,d,s,v,p,f,c,m,_,g,w,y,h,j;return{setters:[e=>{a=e._},e=>{t=e._},e=>{o=e.fR,u=e.t},e=>{n=e.b,r=e.g},e=>{i=e.k,d=e.P,s=e.i,v=e.r,p=e.av,f=e.a2,c=e.V,m=e.a3,_=e.S,g=e.W,w=e.U,y=e.ak},e=>{h=e.dR,j=e.au},null,null,null,null,null,null,null,null],execute:function(){const l={class:"p-20px pt-28px"},b={class:"w-320px"},x={class:"w-320px"},D={class:"w-320px"};e("default",i({__name:"RemoteDownload",setup(e,{expose:i}){const{t:M}=d(),R=s("fileStore"),{downloadFileFormData:U,currentPath:E}=R,k=v(!1),q=p("formRef"),F={url:{trigger:["input","blur"],validator:()=>U.value.url?!!o(U.value.url)||new Error(M("file.remoteDownloadModal.validation.urlInvalid")):new Error(M("file.remoteDownloadModal.validation.urlRequired"))},path:{trigger:["input","blur"],validator:()=>!!U.value.path||new Error(M("file.remoteDownloadModal.validation.pathRequired"))},filename:{trigger:["input","blur"],validator:()=>!!U.value.filename||new Error(M("file.remoteDownloadModal.validation.filenameRequired"))}},S=e=>{const l=e.split("/").pop();U.value.filename=l||""};i({open(){U.value.url="http://",U.value.path=E.value,U.value.filename="",k.value=!0},close(){k.value=!1}});const P=async()=>{await(q.value?.validate()),await u.post("/files?action=DownloadFile",{...U.value}),n(R),r(R)};return(e,o)=>{const u=j,n=h,r=t,i=a;return c(),f(i,{show:w(k),"onUpdate:show":o[3]||(o[3]=e=>y(k)?k.value=e:null),title:w(M)("file.remoteDownloadModal.title"),width:500,footer:!0,onConfirm:P},{default:m(()=>[_("div",l,[g(r,{ref_key:"formRef",ref:q,model:w(U),rules:F},{default:m(()=>[g(n,{label:w(M)("file.remoteDownloadModal.urlAddress"),path:"url"},{default:m(()=>[_("div",b,[g(u,{value:w(U).url,"onUpdate:value":[o[0]||(o[0]=e=>w(U).url=e),S]},null,8,["value"])])]),_:1},8,["label"]),g(n,{label:w(M)("file.remoteDownloadModal.downloadTo"),path:"path"},{default:m(()=>[_("div",x,[g(u,{value:w(U).path,"onUpdate:value":o[1]||(o[1]=e=>w(U).path=e)},null,8,["value"])])]),_:1},8,["label"]),g(n,{label:w(M)("file.remoteDownloadModal.fileName"),path:"filename"},{default:m(()=>[_("div",D,[g(u,{value:w(U).filename,"onUpdate:value":o[2]||(o[2]=e=>w(U).filename=e)},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])]),_:1},8,["show","title"])}}}))}}}); diff --git a/BTPanel/static/vite/js/RemoteDownload.js b/BTPanel/static/vite/js/RemoteDownload.js index f2078cf3..9ae654bc 100644 --- a/BTPanel/static/vite/js/RemoteDownload.js +++ b/BTPanel/static/vite/js/RemoteDownload.js @@ -1 +1 @@ -import{_ as e}from"./index.js?v=1760428868419";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{fU as l,t as o}from"./page_layout.js?v=1760428868419";import{b as t,g as r}from"./index39.js?v=1760428868419";import{k as i,P as s,i as u,r as n,av as d,a2 as p,V as m,a3 as v,S as f,W as _,U as w,ak as c}from"./vue.js?v=1760428868419";import{dR as h,au as j}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./public.js?v=1760428868419";import"./soft2.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";import"./file2.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";const b={class:"p-20px pt-28px"},x={class:"w-320px"},D={class:"w-320px"},g={class:"w-320px"},M=i({__name:"RemoteDownload",setup(i,{expose:M}){const{t:R}=s(),U=u("fileStore"),{downloadFileFormData:y,currentPath:E}=U,k=n(!1),q=d("formRef"),F={url:{trigger:["input","blur"],validator:()=>y.value.url?!!l(y.value.url)||new Error(R("file.remoteDownloadModal.validation.urlInvalid")):new Error(R("file.remoteDownloadModal.validation.urlRequired"))},path:{trigger:["input","blur"],validator:()=>!!y.value.path||new Error(R("file.remoteDownloadModal.validation.pathRequired"))},filename:{trigger:["input","blur"],validator:()=>!!y.value.filename||new Error(R("file.remoteDownloadModal.validation.filenameRequired"))}},P=e=>{const a=e.split("/").pop();y.value.filename=a||""};M({open(){y.value.url="http://",y.value.path=E.value,y.value.filename="",k.value=!0},close(){k.value=!1}});const S=async()=>{var e;await(null==(e=q.value)?void 0:e.validate()),await o.post("/files?action=DownloadFile",{...y.value}),t(U),r(U)};return(l,o)=>{const t=j,r=h,i=a,s=e;return m(),p(s,{show:w(k),"onUpdate:show":o[3]||(o[3]=e=>c(k)?k.value=e:null),title:w(R)("file.remoteDownloadModal.title"),width:500,footer:!0,onConfirm:S},{default:v(()=>[f("div",b,[_(i,{ref_key:"formRef",ref:q,model:w(y),rules:F},{default:v(()=>[_(r,{label:w(R)("file.remoteDownloadModal.urlAddress"),path:"url"},{default:v(()=>[f("div",x,[_(t,{value:w(y).url,"onUpdate:value":[o[0]||(o[0]=e=>w(y).url=e),P]},null,8,["value"])])]),_:1},8,["label"]),_(r,{label:w(R)("file.remoteDownloadModal.downloadTo"),path:"path"},{default:v(()=>[f("div",D,[_(t,{value:w(y).path,"onUpdate:value":o[1]||(o[1]=e=>w(y).path=e)},null,8,["value"])])]),_:1},8,["label"]),_(r,{label:w(R)("file.remoteDownloadModal.fileName"),path:"filename"},{default:v(()=>[f("div",g,[_(t,{value:w(y).filename,"onUpdate:value":o[2]||(o[2]=e=>w(y).filename=e)},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])]),_:1},8,["show","title"])}}});export{M as default}; +import{_ as e}from"./index.js?v=1762424784323";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{fR as l,t as o}from"./page_layout.js?v=1762424784323";import{b as t,g as r}from"./index39.js?v=1762424784323";import{k as i,P as s,i as u,r as n,av as d,a2 as p,V as m,a3 as v,S as f,W as _,U as w,ak as c}from"./vue.js?v=1762424784323";import{dR as h,au as j}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./public.js?v=1762424784323";import"./soft2.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";import"./file2.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";const b={class:"p-20px pt-28px"},x={class:"w-320px"},D={class:"w-320px"},g={class:"w-320px"},M=i({__name:"RemoteDownload",setup(i,{expose:M}){const{t:R}=s(),y=u("fileStore"),{downloadFileFormData:U,currentPath:E}=y,k=n(!1),q=d("formRef"),F={url:{trigger:["input","blur"],validator:()=>U.value.url?!!l(U.value.url)||new Error(R("file.remoteDownloadModal.validation.urlInvalid")):new Error(R("file.remoteDownloadModal.validation.urlRequired"))},path:{trigger:["input","blur"],validator:()=>!!U.value.path||new Error(R("file.remoteDownloadModal.validation.pathRequired"))},filename:{trigger:["input","blur"],validator:()=>!!U.value.filename||new Error(R("file.remoteDownloadModal.validation.filenameRequired"))}},P=e=>{const a=e.split("/").pop();U.value.filename=a||""};M({open(){U.value.url="http://",U.value.path=E.value,U.value.filename="",k.value=!0},close(){k.value=!1}});const S=async()=>{var e;await(null==(e=q.value)?void 0:e.validate()),await o.post("/files?action=DownloadFile",{...U.value}),t(y),r(y)};return(l,o)=>{const t=j,r=h,i=a,s=e;return m(),p(s,{show:w(k),"onUpdate:show":o[3]||(o[3]=e=>c(k)?k.value=e:null),title:w(R)("file.remoteDownloadModal.title"),width:500,footer:!0,onConfirm:S},{default:v(()=>[f("div",b,[_(i,{ref_key:"formRef",ref:q,model:w(U),rules:F},{default:v(()=>[_(r,{label:w(R)("file.remoteDownloadModal.urlAddress"),path:"url"},{default:v(()=>[f("div",x,[_(t,{value:w(U).url,"onUpdate:value":[o[0]||(o[0]=e=>w(U).url=e),P]},null,8,["value"])])]),_:1},8,["label"]),_(r,{label:w(R)("file.remoteDownloadModal.downloadTo"),path:"path"},{default:v(()=>[f("div",D,[_(t,{value:w(U).path,"onUpdate:value":o[1]||(o[1]=e=>w(U).path=e)},null,8,["value"])])]),_:1},8,["label"]),_(r,{label:w(R)("file.remoteDownloadModal.fileName"),path:"filename"},{default:v(()=>[f("div",g,[_(t,{value:w(U).filename,"onUpdate:value":o[2]||(o[2]=e=>w(U).filename=e)},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])]),_:1},8,["show","title"])}}});export{M as default}; diff --git a/BTPanel/static/vite/js/ResourceManagerWindow-legacy.js b/BTPanel/static/vite/js/ResourceManagerWindow-legacy.js index c1e045b2..3e95ffde 100644 --- a/BTPanel/static/vite/js/ResourceManagerWindow-legacy.js +++ b/BTPanel/static/vite/js/ResourceManagerWindow-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./index-legacy39.js?v=1760428868419"],function(e,i){"use strict";var t,a,l,c,s,n,o,r,d,u,v,f,m,p,b,w,g,x,h,y,k,M,C,_,j,$,z,P;return{setters:[e=>{t=e._},e=>{a=e.q,l=e._,c=e.S,s=e.co,n=e.a8,o=e.p},e=>{r=e.k,d=e.P,u=e.i,v=e.r,f=e.a2,m=e.V,p=e.a3,b=e.S,w=e.W,g=e.U,x=e.R,h=e.F,y=e.O,k=e.j,M=e.a4,C=e.au,_=e.ak,j=e.n},e=>{$=e.C,z=e.d,P=e.r}],execute:function(){var i=document.createElement("style");i.textContent='@charset "UTF-8";.modal-footer-btns[data-v-19bc9c68]{display:flex;align-items:center;flex-direction:row;justify-content:end;gap:10px;padding:10px}.single-line-ellipsis[data-v-19bc9c68]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.select-main .resource-view[data-v-19bc9c68]{display:flex;height:500px}.select-main .resource-view .directory[data-v-19bc9c68]{flex:2;box-sizing:border-box;background-color:var(--color-bg-2);border-right:1px solid var(--border-color)}.select-main .resource-view .directory .dir-item[data-v-19bc9c68]{display:flex;align-items:center;flex-direction:row;justify-content:start;width:100%;box-sizing:border-box;padding:10px;gap:10px;cursor:pointer}.select-main .resource-view .directory .dir-item[data-v-19bc9c68]:hover{background:var(--color-bg-3)}.select-main .resource-view .file-list[data-v-19bc9c68]{flex:8;box-sizing:border-box}.select-main .resource-view .file-list .list-tit[data-v-19bc9c68],.select-main .resource-view .file-list .list-content[data-v-19bc9c68]{display:flex;flex-direction:row;justify-content:start;align-items:center;padding:10px;background-color:var("--color-table-th")}.select-main .resource-view .file-list .list-tit .name[data-v-19bc9c68],.select-main .resource-view .file-list .list-content .name[data-v-19bc9c68]{flex:4}.select-main .resource-view .file-list .list-tit .modify[data-v-19bc9c68],.select-main .resource-view .file-list .list-content .modify[data-v-19bc9c68]{flex:3}.select-main .resource-view .file-list .list-tit .permission[data-v-19bc9c68],.select-main .resource-view .file-list .list-content .permission[data-v-19bc9c68]{flex:2}.select-main .resource-view .file-list .list-tit .owner[data-v-19bc9c68],.select-main .resource-view .file-list .list-content .owner[data-v-19bc9c68]{flex:1}.select-main .resource-view .file-list .list-content[data-v-19bc9c68]{background-color:var("--color-table-td");transition:.1s all ease-in-out;cursor:pointer}.select-main .resource-view .file-list .list-content[data-v-19bc9c68]:hover{background:var("--color-table-th")}.select-main .resource-view .file-list .list-content .name[data-v-19bc9c68]{display:flex;align-items:center;flex-direction:row;gap:10px}\n/*$vite$:1*/',document.head.appendChild(i);const S={class:"select-main"},R={class:"p-20px"},D={class:"resource-view"},U={class:"directory"},F=["onClick"],T={class:"file-list"},W={class:"list-tit"},q={class:"name"},E={class:"modify"},I={class:"permission"},N={class:"owner"},O=["onClick"],V={class:"name"},A={class:"modify"};e("R",o(r({__name:"ResourceManagerWindow",props:{currentPath:{type:String,default:"/"}},emits:["chooseDir"],setup(e,{expose:i,emit:o}){const r=e,B=o,{t:G}=d(),H=u("fileStore"),{diskMountPoint:J}=H;i({open:function(){L.value=!0,Z()},close:function(){L.value=!1}});const K=v(r.currentPath),L=v(!1),Q=v([]),X=v(!1),Y=v("");async function Z(){try{X.value=!0,Q.value=await P(K.value)}catch(e){console.warn(e)}finally{X.value=!1,Y.value=""}}function ee(e){K.value=e,j(Z)}function ie(){Y.value?B("chooseDir",K.value+"/"+Y.value):B("chooseDir",K.value),L.value=!1}return(e,i)=>{const o=a,r=l,d=s,u=c,v=t;return m(),f(v,{show:g(L),"onUpdate:show":i[0]||(i[0]=e=>_(L)?L.value=e:null),title:e.$t("file.resourceManagerModal.title"),width:750,footer:!0,onConfirm:ie},{default:p(()=>[b("div",S,[b("div",R,[w($,{ref:"choosePathRef","current-path":g(K),onPathChange:ee},null,8,["current-path"])]),w(o),b("div",D,[b("div",U,[(m(!0),x(h,null,y(g(J),(e,i)=>(m(),x("div",{class:"dir-item",key:i,onClick:i=>{return t=e.path,K.value=t,void j(Z);var t}},[w(r,{name:"file-disk",size:"18"}),k(" "+M(e.path)+" ("+M(e.size[2])+") ",1)],8,F))),128))]),b("div",T,[b("div",W,[b("div",q,M(e.$t("file.resourceManagerModal.fileName")),1),b("div",E,M(e.$t("file.resourceManagerModal.modificationTime")),1),b("div",I,M(e.$t("file.resourceManagerModal.permission")),1),b("div",N,M(e.$t("file.resourceManagerModal.owner")),1)]),w(u,{show:g(X)},{default:p(()=>[w(d,{style:{height:"460px"}},{default:p(()=>[(m(!0),x(h,null,y(g(Q),e=>(m(),x("div",{class:"list-content",key:e.nm,onClick:i=>function(e){"dir"===e.type&&(K.value="/"==K.value?`/${e.nm}`:K.value+"/"+e.nm,j(Z))}(e)},[b("div",V,[w(r,{name:g(Y)==e.nm?"file-checked":"file-unchecked",size:"16",onClick:C(i=>{return t=e,void(Y.value=t.nm);var t},["stop"])},null,8,["name","onClick"]),w(r,{name:g(z)(e.ext),size:"24"},null,8,["name"]),b("span",null,M(e.nm),1)]),b("div",A,M(g(n)(e.mt)),1),i[1]||(i[1]=b("div",{class:"permission"},"755",-1)),i[2]||(i[2]=b("div",{class:"owner"},"root",-1))],8,O))),128))]),_:1})]),_:1},8,["show"])])])])]),_:1},8,["show","title"])}}}),[["__scopeId","data-v-19bc9c68"]]))}}}); +System.register(["./index-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./index-legacy39.js?v=1762424784323"],function(e,i){"use strict";var t,a,l,c,s,n,o,r,d,u,v,f,m,p,b,w,g,x,h,y,k,M,C,_,j,$,z,P;return{setters:[e=>{t=e._},e=>{a=e.q,l=e._,c=e.S,s=e.cn,n=e.a8,o=e.p},e=>{r=e.k,d=e.P,u=e.i,v=e.r,f=e.a2,m=e.V,p=e.a3,b=e.S,w=e.W,g=e.U,x=e.R,h=e.F,y=e.O,k=e.j,M=e.a4,C=e.au,_=e.ak,j=e.n},e=>{$=e.C,z=e.d,P=e.r}],execute:function(){var i=document.createElement("style");i.textContent='@charset "UTF-8";.modal-footer-btns[data-v-19bc9c68]{display:flex;align-items:center;flex-direction:row;justify-content:end;gap:10px;padding:10px}.single-line-ellipsis[data-v-19bc9c68]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.select-main .resource-view[data-v-19bc9c68]{display:flex;height:500px}.select-main .resource-view .directory[data-v-19bc9c68]{flex:2;box-sizing:border-box;background-color:var(--color-bg-2);border-right:1px solid var(--border-color)}.select-main .resource-view .directory .dir-item[data-v-19bc9c68]{display:flex;align-items:center;flex-direction:row;justify-content:start;width:100%;box-sizing:border-box;padding:10px;gap:10px;cursor:pointer}.select-main .resource-view .directory .dir-item[data-v-19bc9c68]:hover{background:var(--color-bg-3)}.select-main .resource-view .file-list[data-v-19bc9c68]{flex:8;box-sizing:border-box}.select-main .resource-view .file-list .list-tit[data-v-19bc9c68],.select-main .resource-view .file-list .list-content[data-v-19bc9c68]{display:flex;flex-direction:row;justify-content:start;align-items:center;padding:10px;background-color:var("--color-table-th")}.select-main .resource-view .file-list .list-tit .name[data-v-19bc9c68],.select-main .resource-view .file-list .list-content .name[data-v-19bc9c68]{flex:4}.select-main .resource-view .file-list .list-tit .modify[data-v-19bc9c68],.select-main .resource-view .file-list .list-content .modify[data-v-19bc9c68]{flex:3}.select-main .resource-view .file-list .list-tit .permission[data-v-19bc9c68],.select-main .resource-view .file-list .list-content .permission[data-v-19bc9c68]{flex:2}.select-main .resource-view .file-list .list-tit .owner[data-v-19bc9c68],.select-main .resource-view .file-list .list-content .owner[data-v-19bc9c68]{flex:1}.select-main .resource-view .file-list .list-content[data-v-19bc9c68]{background-color:var("--color-table-td");transition:.1s all ease-in-out;cursor:pointer}.select-main .resource-view .file-list .list-content[data-v-19bc9c68]:hover{background:var("--color-table-th")}.select-main .resource-view .file-list .list-content .name[data-v-19bc9c68]{display:flex;align-items:center;flex-direction:row;gap:10px}\n/*$vite$:1*/',document.head.appendChild(i);const S={class:"select-main"},R={class:"p-20px"},D={class:"resource-view"},U={class:"directory"},F=["onClick"],T={class:"file-list"},W={class:"list-tit"},q={class:"name"},E={class:"modify"},I={class:"permission"},N={class:"owner"},O=["onClick"],V={class:"name"},A={class:"modify"};e("R",o(r({__name:"ResourceManagerWindow",props:{currentPath:{type:String,default:"/"}},emits:["chooseDir"],setup(e,{expose:i,emit:o}){const r=e,B=o,{t:G}=d(),H=u("fileStore"),{diskMountPoint:J}=H;i({open:function(){L.value=!0,Z()},close:function(){L.value=!1}});const K=v(r.currentPath),L=v(!1),Q=v([]),X=v(!1),Y=v("");async function Z(){try{X.value=!0,Q.value=await P(K.value)}catch(e){console.warn(e)}finally{X.value=!1,Y.value=""}}function ee(e){K.value=e,j(Z)}function ie(){Y.value?B("chooseDir",K.value+"/"+Y.value):B("chooseDir",K.value),L.value=!1}return(e,i)=>{const o=a,r=l,d=s,u=c,v=t;return m(),f(v,{show:g(L),"onUpdate:show":i[0]||(i[0]=e=>_(L)?L.value=e:null),title:e.$t("file.resourceManagerModal.title"),width:750,footer:!0,onConfirm:ie},{default:p(()=>[b("div",S,[b("div",R,[w($,{ref:"choosePathRef","current-path":g(K),onPathChange:ee},null,8,["current-path"])]),w(o),b("div",D,[b("div",U,[(m(!0),x(h,null,y(g(J),(e,i)=>(m(),x("div",{class:"dir-item",key:i,onClick:i=>{return t=e.path,K.value=t,void j(Z);var t}},[w(r,{name:"file-disk",size:"18"}),k(" "+M(e.path)+" ("+M(e.size[2])+") ",1)],8,F))),128))]),b("div",T,[b("div",W,[b("div",q,M(e.$t("file.resourceManagerModal.fileName")),1),b("div",E,M(e.$t("file.resourceManagerModal.modificationTime")),1),b("div",I,M(e.$t("file.resourceManagerModal.permission")),1),b("div",N,M(e.$t("file.resourceManagerModal.owner")),1)]),w(u,{show:g(X)},{default:p(()=>[w(d,{style:{height:"460px"}},{default:p(()=>[(m(!0),x(h,null,y(g(Q),e=>(m(),x("div",{class:"list-content",key:e.nm,onClick:i=>function(e){"dir"===e.type&&(K.value="/"==K.value?`/${e.nm}`:K.value+"/"+e.nm,j(Z))}(e)},[b("div",V,[w(r,{name:g(Y)==e.nm?"file-checked":"file-unchecked",size:"16",onClick:C(i=>{return t=e,void(Y.value=t.nm);var t},["stop"])},null,8,["name","onClick"]),w(r,{name:g(z)(e.ext),size:"24"},null,8,["name"]),b("span",null,M(e.nm),1)]),b("div",A,M(g(n)(e.mt)),1),i[1]||(i[1]=b("div",{class:"permission"},"755",-1)),i[2]||(i[2]=b("div",{class:"owner"},"root",-1))],8,O))),128))]),_:1})]),_:1},8,["show"])])])])]),_:1},8,["show","title"])}}}),[["__scopeId","data-v-19bc9c68"]]))}}}); diff --git a/BTPanel/static/vite/js/ResourceManagerWindow.js b/BTPanel/static/vite/js/ResourceManagerWindow.js index 17ba0f5d..c18978b0 100644 --- a/BTPanel/static/vite/js/ResourceManagerWindow.js +++ b/BTPanel/static/vite/js/ResourceManagerWindow.js @@ -1 +1 @@ -import{_ as a}from"./index.js?v=1760428868419";import{q as e,_ as s,S as i,co as l,a8 as n,p as o}from"./page_layout.js?v=1760428868419";import{k as t,P as r,i as c,r as u,a2 as d,V as v,a3 as m,S as f,W as p,U as h,R as k,F as w,O as y,j as M,a4 as g,au as _,ak as C,n as x}from"./vue.js?v=1760428868419";import{C as P,d as j,r as $}from"./index39.js?v=1760428868419";const z={class:"select-main"},R={class:"p-20px"},S={class:"resource-view"},D={class:"directory"},U=["onClick"],W={class:"file-list"},b={class:"list-tit"},q={class:"name"},F={class:"modify"},I={class:"permission"},N={class:"owner"},O=["onClick"],T={class:"name"},V={class:"modify"},A=o(t({__name:"ResourceManagerWindow",props:{currentPath:{type:String,default:"/"}},emits:["chooseDir"],setup(o,{expose:t,emit:A}){const B=o,E=A,{t:G}=r(),H=c("fileStore"),{diskMountPoint:J}=H;t({open:function(){L.value=!0,Z()},close:function(){L.value=!1}});const K=u(B.currentPath),L=u(!1),Q=u([]),X=u(!1),Y=u("");async function Z(){try{X.value=!0,Q.value=await $(K.value)}catch(a){console.warn(a)}finally{X.value=!1,Y.value=""}}function aa(a){K.value=a,x(Z)}function ea(){Y.value?E("chooseDir",K.value+"/"+Y.value):E("chooseDir",K.value),L.value=!1}return(o,t)=>{const r=e,c=s,u=l,$=i,A=a;return v(),d(A,{show:h(L),"onUpdate:show":t[0]||(t[0]=a=>C(L)?L.value=a:null),title:o.$t("file.resourceManagerModal.title"),width:750,footer:!0,onConfirm:ea},{default:m(()=>[f("div",z,[f("div",R,[p(P,{ref:"choosePathRef","current-path":h(K),onPathChange:aa},null,8,["current-path"])]),p(r),f("div",S,[f("div",D,[(v(!0),k(w,null,y(h(J),(a,e)=>(v(),k("div",{class:"dir-item",key:e,onClick:e=>{return s=a.path,K.value=s,void x(Z);var s}},[p(c,{name:"file-disk",size:"18"}),M(" "+g(a.path)+" ("+g(a.size[2])+") ",1)],8,U))),128))]),f("div",W,[f("div",b,[f("div",q,g(o.$t("file.resourceManagerModal.fileName")),1),f("div",F,g(o.$t("file.resourceManagerModal.modificationTime")),1),f("div",I,g(o.$t("file.resourceManagerModal.permission")),1),f("div",N,g(o.$t("file.resourceManagerModal.owner")),1)]),p($,{show:h(X)},{default:m(()=>[p(u,{style:{height:"460px"}},{default:m(()=>[(v(!0),k(w,null,y(h(Q),a=>(v(),k("div",{class:"list-content",key:a.nm,onClick:e=>function(a){"dir"===a.type&&(K.value="/"==K.value?"/".concat(a.nm):K.value+"/"+a.nm,x(Z))}(a)},[f("div",T,[p(c,{name:h(Y)==a.nm?"file-checked":"file-unchecked",size:"16",onClick:_(e=>{return s=a,void(Y.value=s.nm);var s},["stop"])},null,8,["name","onClick"]),p(c,{name:h(j)(a.ext),size:"24"},null,8,["name"]),f("span",null,g(a.nm),1)]),f("div",V,g(h(n)(a.mt)),1),t[1]||(t[1]=f("div",{class:"permission"},"755",-1)),t[2]||(t[2]=f("div",{class:"owner"},"root",-1))],8,O))),128))]),_:1})]),_:1},8,["show"])])])])]),_:1},8,["show","title"])}}}),[["__scopeId","data-v-19bc9c68"]]);export{A as R}; +import{_ as a}from"./index.js?v=1762424784323";import{q as e,_ as s,S as i,cn as l,a8 as n,p as o}from"./page_layout.js?v=1762424784323";import{k as t,P as r,i as c,r as u,a2 as d,V as v,a3 as m,S as f,W as p,U as h,R as k,F as w,O as y,j as M,a4 as g,au as _,ak as C,n as x}from"./vue.js?v=1762424784323";import{C as P,d as j,r as $}from"./index39.js?v=1762424784323";const z={class:"select-main"},R={class:"p-20px"},S={class:"resource-view"},D={class:"directory"},U=["onClick"],W={class:"file-list"},b={class:"list-tit"},q={class:"name"},F={class:"modify"},I={class:"permission"},N={class:"owner"},O=["onClick"],T={class:"name"},V={class:"modify"},A=o(t({__name:"ResourceManagerWindow",props:{currentPath:{type:String,default:"/"}},emits:["chooseDir"],setup(o,{expose:t,emit:A}){const B=o,E=A,{t:G}=r(),H=c("fileStore"),{diskMountPoint:J}=H;t({open:function(){L.value=!0,Z()},close:function(){L.value=!1}});const K=u(B.currentPath),L=u(!1),Q=u([]),X=u(!1),Y=u("");async function Z(){try{X.value=!0,Q.value=await $(K.value)}catch(a){console.warn(a)}finally{X.value=!1,Y.value=""}}function aa(a){K.value=a,x(Z)}function ea(){Y.value?E("chooseDir",K.value+"/"+Y.value):E("chooseDir",K.value),L.value=!1}return(o,t)=>{const r=e,c=s,u=l,$=i,A=a;return v(),d(A,{show:h(L),"onUpdate:show":t[0]||(t[0]=a=>C(L)?L.value=a:null),title:o.$t("file.resourceManagerModal.title"),width:750,footer:!0,onConfirm:ea},{default:m(()=>[f("div",z,[f("div",R,[p(P,{ref:"choosePathRef","current-path":h(K),onPathChange:aa},null,8,["current-path"])]),p(r),f("div",S,[f("div",D,[(v(!0),k(w,null,y(h(J),(a,e)=>(v(),k("div",{class:"dir-item",key:e,onClick:e=>{return s=a.path,K.value=s,void x(Z);var s}},[p(c,{name:"file-disk",size:"18"}),M(" "+g(a.path)+" ("+g(a.size[2])+") ",1)],8,U))),128))]),f("div",W,[f("div",b,[f("div",q,g(o.$t("file.resourceManagerModal.fileName")),1),f("div",F,g(o.$t("file.resourceManagerModal.modificationTime")),1),f("div",I,g(o.$t("file.resourceManagerModal.permission")),1),f("div",N,g(o.$t("file.resourceManagerModal.owner")),1)]),p($,{show:h(X)},{default:m(()=>[p(u,{style:{height:"460px"}},{default:m(()=>[(v(!0),k(w,null,y(h(Q),a=>(v(),k("div",{class:"list-content",key:a.nm,onClick:e=>function(a){"dir"===a.type&&(K.value="/"==K.value?"/".concat(a.nm):K.value+"/"+a.nm,x(Z))}(a)},[f("div",T,[p(c,{name:h(Y)==a.nm?"file-checked":"file-unchecked",size:"16",onClick:_(e=>{return s=a,void(Y.value=s.nm);var s},["stop"])},null,8,["name","onClick"]),p(c,{name:h(j)(a.ext),size:"24"},null,8,["name"]),f("span",null,g(a.nm),1)]),f("div",V,g(h(n)(a.mt)),1),t[1]||(t[1]=f("div",{class:"permission"},"755",-1)),t[2]||(t[2]=f("div",{class:"owner"},"root",-1))],8,O))),128))]),_:1})]),_:1},8,["show"])])])])]),_:1},8,["show","title"])}}}),[["__scopeId","data-v-19bc9c68"]]);export{A as R}; diff --git a/BTPanel/static/vite/js/SearchFileContent-legacy.js b/BTPanel/static/vite/js/SearchFileContent-legacy.js index e41e4ea0..948be39c 100644 --- a/BTPanel/static/vite/js/SearchFileContent-legacy.js +++ b/BTPanel/static/vite/js/SearchFileContent-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./index-legacy39.js?v=1760428868419","./ResourceManagerWindow-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./soft-legacy2.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./file-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419"],function(e,l){"use strict";var t,a,n,s,c,i,o,r,d,u,p,f,h,v,m,g,y,x,_,b,C,k,j,w,F,$,M,U,R,O,S,P,W,T,D,H;return{setters:[e=>{t=e._},e=>{a=e._,n=e.q,s=e.bL,c=e.bK,i=e.m,o=e.t,r=e.p},e=>{d=e.k,u=e.P,p=e.i,f=e.r,h=e.R,v=e.V,m=e.W,g=e.a3,y=e.S,x=e.U,_=e.j,b=e.a4,C=e.a2,k=e.an,j=e.F,w=e.O,F=e.au,$=e.ak},e=>{M=e.o},e=>{U=e.R},e=>{R=e.dW,O=e.dR,S=e.av,P=e.au,W=e.aC,T=e._,D=e.dT,H=e.dU},null,null,null,null,null,null,null,null],execute:function(){var l=document.createElement("style");l.textContent='@charset "UTF-8";.modal-footer-btns[data-v-17c24141]{display:flex;align-items:center;flex-direction:row;justify-content:end;gap:10px;padding:10px}.single-line-ellipsis[data-v-17c24141]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-wrapper[data-v-17c24141]{padding:20px}.search-wrapper .search-res .top-desc[data-v-17c24141]{display:flex;justify-content:start;align-content:center;margin-bottom:5px}.search-wrapper .search-res .match-list .match-list-item[data-v-17c24141]{display:flex;align-items:center;flex-direction:row;justify-content:start;gap:5px;padding:0 10px 10px}[data-v-17c24141] .n-collapse{border:1px solid var(--color-border)}[data-v-17c24141] .n-collapse .n-collapse-item:first-child>.n-collapse-item__header{padding:10px 15px 10px 5px;background:var(--color-bg-2)}\n/*$vite$:1*/',document.head.appendChild(l);const L={class:"search-wrapper"},q={class:"w-100% flex justify-start gap-6 items-center"},E={class:"w-100% flex justify-between"},I={class:"search-res"},z={class:"top-desc"},K={class:"mr-5px"},V={class:"match-list"},A={class:"text-font1 fw-bold"},B=["innerHTML"];e("default",r(d({__name:"SearchFileContent",props:{currentPath:{type:String,default:"/"}},setup(e,{expose:l}){const r=e,{t:d}=u(),G=p("fileStore"),{currentPath:J,resetSearchFileContentFormData:N}=G;function Q(){N()}l({open:function(){te.value=!0,Z.value.path=J.value},close:Q});const{searchStatistics:X,searchRes:Y,searchFileContentFormData:Z}=G,ee=f(),le=f(r.currentPath),te=f(!1);function ae(){!async function(){const e=i.loading(d("file.searchFileContentModal.searching"));try{const e=await o.post("/files?action=files_search",Z.value,{requestOptions:{isOriginalResult:!0}});Y.value=e.message,Object.keys(Y.value).length&&(X.value.files=Object.keys(Y.value).length,X.value.times=Object.values(Y.value).flat().reduce((e,l)=>e+Object.values(l).length,0))}catch(l){console.warn(l)}finally{e.close()}}()}function ne(e,l){const t=new RegExp(l,"g");return e.replace(t,`${l}`)}function se(){ee.value.open()}function ce(e){Z.value.path=e}return(e,l)=>{const i=P,o=W,r=S,d=O,u=T,p=a,f=H,G=D,N=R,ie=n,oe=c,re=s,de=t;return v(),h(j,null,[m(de,{show:x(te),"onUpdate:show":l[7]||(l[7]=e=>$(te)?te.value=e:null),title:e.$t("file.searchFileContentModal.title"),width:720,onPublicClose:Q},{default:g(()=>[y("div",L,[m(N,{"label-placement":"left","label-width":60,"label-align":"left"},{default:g(()=>[m(d,{label:e.$t("file.searchFileContentModal.search")},{default:g(()=>[m(r,null,{default:g(()=>[m(i,{value:x(Z).text,"onUpdate:value":l[0]||(l[0]=e=>x(Z).text=e)},null,8,["value"]),m(o,{type:"primary",onClick:ae},{default:g(()=>[_(b(e.$t("file.searchFileContentModal.search")),1)]),_:1})]),_:1})]),_:1},8,["label"]),m(d,{label:e.$t("file.searchFileContentModal.suffix")},{default:g(()=>[m(i,{value:x(Z).exts,"onUpdate:value":l[1]||(l[1]=e=>x(Z).exts=e)},null,8,["value"])]),_:1},8,["label"]),m(d,{label:e.$t("file.searchFileContentModal.folder")},{default:g(()=>[y("div",q,[m(i,{value:x(Z).path,"onUpdate:value":l[3]||(l[3]=e=>x(Z).path=e)},{suffix:g(()=>[m(u,{checked:x(Z).is_subdir,"onUpdate:checked":l[2]||(l[2]=e=>x(Z).is_subdir=e),"checked-value":1,"unchecked-value":0},{default:g(()=>[_(b(e.$t("file.searchFileContentModal.subdir")),1)]),_:1},8,["checked"])]),_:1},8,["value"]),m(p,{name:"file-dir",color:"#000",size:"24",style:{cursor:"pointer"},onClick:se})])]),_:1},8,["label"]),m(d,{label:e.$t("file.searchFileContentModal.mode")},{default:g(()=>[y("div",E,[m(G,{value:x(Z).mode,"onUpdate:value":l[4]||(l[4]=e=>x(Z).mode=e)},{default:g(()=>[m(f,{value:0},{default:g(()=>[_(b(e.$t("file.searchFileContentModal.words")),1)]),_:1}),m(f,{value:1},{default:g(()=>[_(b(e.$t("file.searchFileContentModal.regex")),1)]),_:1})]),_:1},8,["value"]),y("div",null,[0==x(Z).mode?(v(),C(u,{key:0,checked:x(Z).isword,"onUpdate:checked":l[5]||(l[5]=e=>x(Z).isword=e),label:e.$t("file.searchFileContentModal.matchWholeWord"),class:"mr-5","checked-value":1,"unchecked-value":0},null,8,["checked","label"])):k("",!0),m(u,{checked:x(Z).iscase,"onUpdate:checked":l[6]||(l[6]=e=>x(Z).iscase=e),label:e.$t("file.searchFileContentModal.matchCase"),"checked-value":1,"unchecked-value":0},null,8,["checked","label"])])])]),_:1},8,["label"])]),_:1}),y("div",I,[y("div",z,[y("span",K,b(e.$t("file.searchFileContentModal.searchResult")),1),y("span",null,b(x(X).times)+" "+b(e.$t("file.searchFileContentModal.matchesIn"))+" "+b(x(X).files)+" "+b(e.$t("file.searchFileContentModal.files")),1)]),m(ie,{style:{"margin-bottom":"20px"}}),(v(!0),h(j,null,w(x(Y),(l,t)=>(v(),C(re,{key:t,class:"mb-10px"},{default:g(()=>[m(oe,{title:`${t} (${e.$t("file.searchFileContentModal.match")} ${Object.values(l).length} ${e.$t("file.searchFileContentModal.times")})`,name:"1"},{"header-extra":g(()=>[m(o,{text:"",type:"primary",onClick:F(e=>async function(e){M(0,e,J.value)}(t),["stop"])},{default:g(()=>[_(b(e.$t("file.searchFileContentModal.edit")),1)]),_:2},1032,["onClick"])]),default:g(()=>[y("div",V,[(v(!0),h(j,null,w(l,(l,t)=>(v(),h("div",{class:"match-list-item",key:t},[y("div",A,b(e.$t("file.searchFileContentModal.line"))+" "+b(t)+": ",1),y("div",{innerHTML:ne(l,x(Z).text)},null,8,B)]))),128))])]),_:2},1032,["title"])]),_:2},1024))),128))])])]),_:1},8,["show","title"]),m(U,{"current-path":x(le),ref_key:"resourceRef",ref:ee,onChooseDir:ce},null,8,["current-path"])],64)}}}),[["__scopeId","data-v-17c24141"]]))}}}); +System.register(["./index-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./index-legacy39.js?v=1762424784323","./ResourceManagerWindow-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./file-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323"],function(e,l){"use strict";var t,a,n,s,c,i,o,r,d,u,p,f,h,v,m,g,y,x,_,b,C,k,j,w,F,$,M,U,R,O,S,P,W,T,D,H;return{setters:[e=>{t=e._},e=>{a=e._,n=e.q,s=e.bL,c=e.bK,i=e.m,o=e.t,r=e.p},e=>{d=e.k,u=e.P,p=e.i,f=e.r,h=e.R,v=e.V,m=e.W,g=e.a3,y=e.S,x=e.U,_=e.j,b=e.a4,C=e.a2,k=e.an,j=e.F,w=e.O,F=e.au,$=e.ak},e=>{M=e.o},e=>{U=e.R},e=>{R=e.dW,O=e.dR,S=e.av,P=e.au,W=e.aC,T=e._,D=e.dT,H=e.dU},null,null,null,null,null,null,null,null],execute:function(){var l=document.createElement("style");l.textContent='@charset "UTF-8";.modal-footer-btns[data-v-17c24141]{display:flex;align-items:center;flex-direction:row;justify-content:end;gap:10px;padding:10px}.single-line-ellipsis[data-v-17c24141]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-wrapper[data-v-17c24141]{padding:20px}.search-wrapper .search-res .top-desc[data-v-17c24141]{display:flex;justify-content:start;align-content:center;margin-bottom:5px}.search-wrapper .search-res .match-list .match-list-item[data-v-17c24141]{display:flex;align-items:center;flex-direction:row;justify-content:start;gap:5px;padding:0 10px 10px}[data-v-17c24141] .n-collapse{border:1px solid var(--color-border)}[data-v-17c24141] .n-collapse .n-collapse-item:first-child>.n-collapse-item__header{padding:10px 15px 10px 5px;background:var(--color-bg-2)}\n/*$vite$:1*/',document.head.appendChild(l);const L={class:"search-wrapper"},q={class:"w-100% flex justify-start gap-6 items-center"},E={class:"w-100% flex justify-between"},I={class:"search-res"},z={class:"top-desc"},K={class:"mr-5px"},V={class:"match-list"},A={class:"text-font1 fw-bold"},B=["innerHTML"];e("default",r(d({__name:"SearchFileContent",props:{currentPath:{type:String,default:"/"}},setup(e,{expose:l}){const r=e,{t:d}=u(),G=p("fileStore"),{currentPath:J,resetSearchFileContentFormData:N}=G;function Q(){N()}l({open:function(){te.value=!0,Z.value.path=J.value},close:Q});const{searchStatistics:X,searchRes:Y,searchFileContentFormData:Z}=G,ee=f(),le=f(r.currentPath),te=f(!1);function ae(){!async function(){const e=i.loading(d("file.searchFileContentModal.searching"));try{const e=await o.post("/files?action=files_search",Z.value,{requestOptions:{isOriginalResult:!0}});Y.value=e.message,Object.keys(Y.value).length&&(X.value.files=Object.keys(Y.value).length,X.value.times=Object.values(Y.value).flat().reduce((e,l)=>e+Object.values(l).length,0))}catch(l){console.warn(l)}finally{e.close()}}()}function ne(e,l){const t=new RegExp(l,"g");return e.replace(t,`${l}`)}function se(){ee.value.open()}function ce(e){Z.value.path=e}return(e,l)=>{const i=P,o=W,r=S,d=O,u=T,p=a,f=H,G=D,N=R,ie=n,oe=c,re=s,de=t;return v(),h(j,null,[m(de,{show:x(te),"onUpdate:show":l[7]||(l[7]=e=>$(te)?te.value=e:null),title:e.$t("file.searchFileContentModal.title"),width:720,onPublicClose:Q},{default:g(()=>[y("div",L,[m(N,{"label-placement":"left","label-width":60,"label-align":"left"},{default:g(()=>[m(d,{label:e.$t("file.searchFileContentModal.search")},{default:g(()=>[m(r,null,{default:g(()=>[m(i,{value:x(Z).text,"onUpdate:value":l[0]||(l[0]=e=>x(Z).text=e)},null,8,["value"]),m(o,{type:"primary",onClick:ae},{default:g(()=>[_(b(e.$t("file.searchFileContentModal.search")),1)]),_:1})]),_:1})]),_:1},8,["label"]),m(d,{label:e.$t("file.searchFileContentModal.suffix")},{default:g(()=>[m(i,{value:x(Z).exts,"onUpdate:value":l[1]||(l[1]=e=>x(Z).exts=e)},null,8,["value"])]),_:1},8,["label"]),m(d,{label:e.$t("file.searchFileContentModal.folder")},{default:g(()=>[y("div",q,[m(i,{value:x(Z).path,"onUpdate:value":l[3]||(l[3]=e=>x(Z).path=e)},{suffix:g(()=>[m(u,{checked:x(Z).is_subdir,"onUpdate:checked":l[2]||(l[2]=e=>x(Z).is_subdir=e),"checked-value":1,"unchecked-value":0},{default:g(()=>[_(b(e.$t("file.searchFileContentModal.subdir")),1)]),_:1},8,["checked"])]),_:1},8,["value"]),m(p,{name:"file-dir",color:"#000",size:"24",style:{cursor:"pointer"},onClick:se})])]),_:1},8,["label"]),m(d,{label:e.$t("file.searchFileContentModal.mode")},{default:g(()=>[y("div",E,[m(G,{value:x(Z).mode,"onUpdate:value":l[4]||(l[4]=e=>x(Z).mode=e)},{default:g(()=>[m(f,{value:0},{default:g(()=>[_(b(e.$t("file.searchFileContentModal.words")),1)]),_:1}),m(f,{value:1},{default:g(()=>[_(b(e.$t("file.searchFileContentModal.regex")),1)]),_:1})]),_:1},8,["value"]),y("div",null,[0==x(Z).mode?(v(),C(u,{key:0,checked:x(Z).isword,"onUpdate:checked":l[5]||(l[5]=e=>x(Z).isword=e),label:e.$t("file.searchFileContentModal.matchWholeWord"),class:"mr-5","checked-value":1,"unchecked-value":0},null,8,["checked","label"])):k("",!0),m(u,{checked:x(Z).iscase,"onUpdate:checked":l[6]||(l[6]=e=>x(Z).iscase=e),label:e.$t("file.searchFileContentModal.matchCase"),"checked-value":1,"unchecked-value":0},null,8,["checked","label"])])])]),_:1},8,["label"])]),_:1}),y("div",I,[y("div",z,[y("span",K,b(e.$t("file.searchFileContentModal.searchResult")),1),y("span",null,b(x(X).times)+" "+b(e.$t("file.searchFileContentModal.matchesIn"))+" "+b(x(X).files)+" "+b(e.$t("file.searchFileContentModal.files")),1)]),m(ie,{style:{"margin-bottom":"20px"}}),(v(!0),h(j,null,w(x(Y),(l,t)=>(v(),C(re,{key:t,class:"mb-10px"},{default:g(()=>[m(oe,{title:`${t} (${e.$t("file.searchFileContentModal.match")} ${Object.values(l).length} ${e.$t("file.searchFileContentModal.times")})`,name:"1"},{"header-extra":g(()=>[m(o,{text:"",type:"primary",onClick:F(e=>async function(e){M(0,e,J.value)}(t),["stop"])},{default:g(()=>[_(b(e.$t("file.searchFileContentModal.edit")),1)]),_:2},1032,["onClick"])]),default:g(()=>[y("div",V,[(v(!0),h(j,null,w(l,(l,t)=>(v(),h("div",{class:"match-list-item",key:t},[y("div",A,b(e.$t("file.searchFileContentModal.line"))+" "+b(t)+": ",1),y("div",{innerHTML:ne(l,x(Z).text)},null,8,B)]))),128))])]),_:2},1032,["title"])]),_:2},1024))),128))])])]),_:1},8,["show","title"]),m(U,{"current-path":x(le),ref_key:"resourceRef",ref:ee,onChooseDir:ce},null,8,["current-path"])],64)}}}),[["__scopeId","data-v-17c24141"]]))}}}); diff --git a/BTPanel/static/vite/js/SearchFileContent.js b/BTPanel/static/vite/js/SearchFileContent.js index d2e2053d..77cfe5ae 100644 --- a/BTPanel/static/vite/js/SearchFileContent.js +++ b/BTPanel/static/vite/js/SearchFileContent.js @@ -1 +1 @@ -import{_ as e}from"./index.js?v=1760428868419";import{_ as a,q as t,bL as l,bK as s,m as n,t as o,p as i}from"./page_layout.js?v=1760428868419";import{k as c,P as r,i as u,r as d,R as f,V as h,W as p,a3 as m,S as v,U as _,j as b,a4 as C,a2 as k,an as F,F as j,O as x,au as y,ak as M}from"./vue.js?v=1760428868419";import{o as g}from"./index39.js?v=1760428868419";import{R as $}from"./ResourceManagerWindow.js?v=1760428868419";import{dW as w,dR as U,av as R,au as O,aC as S,_ as P,dT as W,dU as D}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./public.js?v=1760428868419";import"./soft2.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";import"./file2.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";const H={class:"search-wrapper"},L={class:"w-100% flex justify-start gap-6 items-center"},T={class:"w-100% flex justify-between"},q={class:"search-res"},I={class:"top-desc"},z={class:"mr-5px"},E={class:"match-list"},K={class:"text-font1 fw-bold"},V=["innerHTML"],A=i(c({__name:"SearchFileContent",props:{currentPath:{type:String,default:"/"}},setup(i,{expose:c}){const A=i,{t:B}=r(),G=u("fileStore"),{currentPath:J,resetSearchFileContentFormData:N}=G;function Q(){N()}c({open:function(){te.value=!0,Z.value.path=J.value},close:Q});const{searchStatistics:X,searchRes:Y,searchFileContentFormData:Z}=G,ee=d(),ae=d(A.currentPath),te=d(!1);function le(){!async function(){const e=n.loading(B("file.searchFileContentModal.searching"));try{const e=await o.post("/files?action=files_search",Z.value,{requestOptions:{isOriginalResult:!0}});Y.value=e.message,Object.keys(Y.value).length&&(X.value.files=Object.keys(Y.value).length,X.value.times=Object.values(Y.value).flat().reduce((e,a)=>e+Object.values(a).length,0))}catch(a){console.warn(a)}finally{e.close()}}()}function se(e,a){const t=new RegExp(a,"g");return e.replace(t,''.concat(a,""))}function ne(){ee.value.open()}function oe(e){Z.value.path=e}return(n,o)=>{const i=O,c=S,r=R,u=U,d=P,A=a,B=D,G=W,N=w,ie=t,ce=s,re=l,ue=e;return h(),f(j,null,[p(ue,{show:_(te),"onUpdate:show":o[7]||(o[7]=e=>M(te)?te.value=e:null),title:n.$t("file.searchFileContentModal.title"),width:720,onPublicClose:Q},{default:m(()=>[v("div",H,[p(N,{"label-placement":"left","label-width":60,"label-align":"left"},{default:m(()=>[p(u,{label:n.$t("file.searchFileContentModal.search")},{default:m(()=>[p(r,null,{default:m(()=>[p(i,{value:_(Z).text,"onUpdate:value":o[0]||(o[0]=e=>_(Z).text=e)},null,8,["value"]),p(c,{type:"primary",onClick:le},{default:m(()=>[b(C(n.$t("file.searchFileContentModal.search")),1)]),_:1})]),_:1})]),_:1},8,["label"]),p(u,{label:n.$t("file.searchFileContentModal.suffix")},{default:m(()=>[p(i,{value:_(Z).exts,"onUpdate:value":o[1]||(o[1]=e=>_(Z).exts=e)},null,8,["value"])]),_:1},8,["label"]),p(u,{label:n.$t("file.searchFileContentModal.folder")},{default:m(()=>[v("div",L,[p(i,{value:_(Z).path,"onUpdate:value":o[3]||(o[3]=e=>_(Z).path=e)},{suffix:m(()=>[p(d,{checked:_(Z).is_subdir,"onUpdate:checked":o[2]||(o[2]=e=>_(Z).is_subdir=e),"checked-value":1,"unchecked-value":0},{default:m(()=>[b(C(n.$t("file.searchFileContentModal.subdir")),1)]),_:1},8,["checked"])]),_:1},8,["value"]),p(A,{name:"file-dir",color:"#000",size:"24",style:{cursor:"pointer"},onClick:ne})])]),_:1},8,["label"]),p(u,{label:n.$t("file.searchFileContentModal.mode")},{default:m(()=>[v("div",T,[p(G,{value:_(Z).mode,"onUpdate:value":o[4]||(o[4]=e=>_(Z).mode=e)},{default:m(()=>[p(B,{value:0},{default:m(()=>[b(C(n.$t("file.searchFileContentModal.words")),1)]),_:1}),p(B,{value:1},{default:m(()=>[b(C(n.$t("file.searchFileContentModal.regex")),1)]),_:1})]),_:1},8,["value"]),v("div",null,[0==_(Z).mode?(h(),k(d,{key:0,checked:_(Z).isword,"onUpdate:checked":o[5]||(o[5]=e=>_(Z).isword=e),label:n.$t("file.searchFileContentModal.matchWholeWord"),class:"mr-5","checked-value":1,"unchecked-value":0},null,8,["checked","label"])):F("",!0),p(d,{checked:_(Z).iscase,"onUpdate:checked":o[6]||(o[6]=e=>_(Z).iscase=e),label:n.$t("file.searchFileContentModal.matchCase"),"checked-value":1,"unchecked-value":0},null,8,["checked","label"])])])]),_:1},8,["label"])]),_:1}),v("div",q,[v("div",I,[v("span",z,C(n.$t("file.searchFileContentModal.searchResult")),1),v("span",null,C(_(X).times)+" "+C(n.$t("file.searchFileContentModal.matchesIn"))+" "+C(_(X).files)+" "+C(n.$t("file.searchFileContentModal.files")),1)]),p(ie,{style:{"margin-bottom":"20px"}}),(h(!0),f(j,null,x(_(Y),(e,a)=>(h(),k(re,{key:a,class:"mb-10px"},{default:m(()=>[p(ce,{title:"".concat(a," (").concat(n.$t("file.searchFileContentModal.match")," ").concat(Object.values(e).length," ").concat(n.$t("file.searchFileContentModal.times"),")"),name:"1"},{"header-extra":m(()=>[p(c,{text:"",type:"primary",onClick:y(e=>async function(e){g(0,e,J.value)}(a),["stop"])},{default:m(()=>[b(C(n.$t("file.searchFileContentModal.edit")),1)]),_:2},1032,["onClick"])]),default:m(()=>[v("div",E,[(h(!0),f(j,null,x(e,(e,a)=>(h(),f("div",{class:"match-list-item",key:a},[v("div",K,C(n.$t("file.searchFileContentModal.line"))+" "+C(a)+": ",1),v("div",{innerHTML:se(e,_(Z).text)},null,8,V)]))),128))])]),_:2},1032,["title"])]),_:2},1024))),128))])])]),_:1},8,["show","title"]),p($,{"current-path":_(ae),ref_key:"resourceRef",ref:ee,onChooseDir:oe},null,8,["current-path"])],64)}}}),[["__scopeId","data-v-17c24141"]]);export{A as default}; +import{_ as e}from"./index.js?v=1762424784323";import{_ as a,q as t,bL as l,bK as s,m as n,t as o,p as i}from"./page_layout.js?v=1762424784323";import{k as c,P as r,i as u,r as d,R as f,V as h,W as p,a3 as m,S as v,U as _,j as b,a4 as C,a2 as k,an as F,F as j,O as x,au as y,ak as M}from"./vue.js?v=1762424784323";import{o as g}from"./index39.js?v=1762424784323";import{R as $}from"./ResourceManagerWindow.js?v=1762424784323";import{dW as w,dR as U,av as R,au as O,aC as S,_ as P,dT as W,dU as D}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./public.js?v=1762424784323";import"./soft2.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";import"./file2.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";const H={class:"search-wrapper"},L={class:"w-100% flex justify-start gap-6 items-center"},T={class:"w-100% flex justify-between"},q={class:"search-res"},I={class:"top-desc"},z={class:"mr-5px"},E={class:"match-list"},K={class:"text-font1 fw-bold"},V=["innerHTML"],A=i(c({__name:"SearchFileContent",props:{currentPath:{type:String,default:"/"}},setup(i,{expose:c}){const A=i,{t:B}=r(),G=u("fileStore"),{currentPath:J,resetSearchFileContentFormData:N}=G;function Q(){N()}c({open:function(){te.value=!0,Z.value.path=J.value},close:Q});const{searchStatistics:X,searchRes:Y,searchFileContentFormData:Z}=G,ee=d(),ae=d(A.currentPath),te=d(!1);function le(){!async function(){const e=n.loading(B("file.searchFileContentModal.searching"));try{const e=await o.post("/files?action=files_search",Z.value,{requestOptions:{isOriginalResult:!0}});Y.value=e.message,Object.keys(Y.value).length&&(X.value.files=Object.keys(Y.value).length,X.value.times=Object.values(Y.value).flat().reduce((e,a)=>e+Object.values(a).length,0))}catch(a){console.warn(a)}finally{e.close()}}()}function se(e,a){const t=new RegExp(a,"g");return e.replace(t,''.concat(a,""))}function ne(){ee.value.open()}function oe(e){Z.value.path=e}return(n,o)=>{const i=O,c=S,r=R,u=U,d=P,A=a,B=D,G=W,N=w,ie=t,ce=s,re=l,ue=e;return h(),f(j,null,[p(ue,{show:_(te),"onUpdate:show":o[7]||(o[7]=e=>M(te)?te.value=e:null),title:n.$t("file.searchFileContentModal.title"),width:720,onPublicClose:Q},{default:m(()=>[v("div",H,[p(N,{"label-placement":"left","label-width":60,"label-align":"left"},{default:m(()=>[p(u,{label:n.$t("file.searchFileContentModal.search")},{default:m(()=>[p(r,null,{default:m(()=>[p(i,{value:_(Z).text,"onUpdate:value":o[0]||(o[0]=e=>_(Z).text=e)},null,8,["value"]),p(c,{type:"primary",onClick:le},{default:m(()=>[b(C(n.$t("file.searchFileContentModal.search")),1)]),_:1})]),_:1})]),_:1},8,["label"]),p(u,{label:n.$t("file.searchFileContentModal.suffix")},{default:m(()=>[p(i,{value:_(Z).exts,"onUpdate:value":o[1]||(o[1]=e=>_(Z).exts=e)},null,8,["value"])]),_:1},8,["label"]),p(u,{label:n.$t("file.searchFileContentModal.folder")},{default:m(()=>[v("div",L,[p(i,{value:_(Z).path,"onUpdate:value":o[3]||(o[3]=e=>_(Z).path=e)},{suffix:m(()=>[p(d,{checked:_(Z).is_subdir,"onUpdate:checked":o[2]||(o[2]=e=>_(Z).is_subdir=e),"checked-value":1,"unchecked-value":0},{default:m(()=>[b(C(n.$t("file.searchFileContentModal.subdir")),1)]),_:1},8,["checked"])]),_:1},8,["value"]),p(A,{name:"file-dir",color:"#000",size:"24",style:{cursor:"pointer"},onClick:ne})])]),_:1},8,["label"]),p(u,{label:n.$t("file.searchFileContentModal.mode")},{default:m(()=>[v("div",T,[p(G,{value:_(Z).mode,"onUpdate:value":o[4]||(o[4]=e=>_(Z).mode=e)},{default:m(()=>[p(B,{value:0},{default:m(()=>[b(C(n.$t("file.searchFileContentModal.words")),1)]),_:1}),p(B,{value:1},{default:m(()=>[b(C(n.$t("file.searchFileContentModal.regex")),1)]),_:1})]),_:1},8,["value"]),v("div",null,[0==_(Z).mode?(h(),k(d,{key:0,checked:_(Z).isword,"onUpdate:checked":o[5]||(o[5]=e=>_(Z).isword=e),label:n.$t("file.searchFileContentModal.matchWholeWord"),class:"mr-5","checked-value":1,"unchecked-value":0},null,8,["checked","label"])):F("",!0),p(d,{checked:_(Z).iscase,"onUpdate:checked":o[6]||(o[6]=e=>_(Z).iscase=e),label:n.$t("file.searchFileContentModal.matchCase"),"checked-value":1,"unchecked-value":0},null,8,["checked","label"])])])]),_:1},8,["label"])]),_:1}),v("div",q,[v("div",I,[v("span",z,C(n.$t("file.searchFileContentModal.searchResult")),1),v("span",null,C(_(X).times)+" "+C(n.$t("file.searchFileContentModal.matchesIn"))+" "+C(_(X).files)+" "+C(n.$t("file.searchFileContentModal.files")),1)]),p(ie,{style:{"margin-bottom":"20px"}}),(h(!0),f(j,null,x(_(Y),(e,a)=>(h(),k(re,{key:a,class:"mb-10px"},{default:m(()=>[p(ce,{title:"".concat(a," (").concat(n.$t("file.searchFileContentModal.match")," ").concat(Object.values(e).length," ").concat(n.$t("file.searchFileContentModal.times"),")"),name:"1"},{"header-extra":m(()=>[p(c,{text:"",type:"primary",onClick:y(e=>async function(e){g(0,e,J.value)}(a),["stop"])},{default:m(()=>[b(C(n.$t("file.searchFileContentModal.edit")),1)]),_:2},1032,["onClick"])]),default:m(()=>[v("div",E,[(h(!0),f(j,null,x(e,(e,a)=>(h(),f("div",{class:"match-list-item",key:a},[v("div",K,C(n.$t("file.searchFileContentModal.line"))+" "+C(a)+": ",1),v("div",{innerHTML:se(e,_(Z).text)},null,8,V)]))),128))])]),_:2},1032,["title"])]),_:2},1024))),128))])])]),_:1},8,["show","title"]),p($,{"current-path":_(ae),ref_key:"resourceRef",ref:ee,onChooseDir:oe},null,8,["current-path"])],64)}}}),[["__scopeId","data-v-17c24141"]]);export{A as default}; diff --git a/BTPanel/static/vite/js/ServerSecSection-legacy.js b/BTPanel/static/vite/js/ServerSecSection-legacy.js index 51c537b4..eb54430b 100644 --- a/BTPanel/static/vite/js/ServerSecSection-legacy.js +++ b/BTPanel/static/vite/js/ServerSecSection-legacy.js @@ -1 +1 @@ -System.register(["./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419"],function(e,t){"use strict";var a,r,l,s,o,n,i,c,u;return{setters:[e=>{a=e.k,r=e.R,l=e.V,s=e.an,o=e.S,n=e.a4,i=e.F,c=e.O},e=>{u=e.p},null,null,null,null],execute:function(){var t=document.createElement("style");t.textContent=".server-sec-summary[data-v-f322e76a]{margin-bottom:30px;padding:20px;border-radius:12px;background-color:#f8f9fa;border:2px solid #e9ecef}.server-sec-summary div[data-v-f322e76a]{font-size:18px;margin-bottom:10px;color:#333}.server-sec-list[data-v-f322e76a]{margin-top:20px}.server-sec-list table[data-v-f322e76a]{width:100%;border-collapse:collapse;font-size:16px;color:#333}.server-sec-list table th[data-v-f322e76a],.server-sec-list table td[data-v-f322e76a]{padding:10px 15px;text-align:left;border-bottom:1px solid #eee}.server-sec-list table th[data-v-f322e76a]{background-color:#f0f0f0;font-weight:700;color:#333}.server-sec-list table tbody tr[data-v-f322e76a]:hover{background-color:#f5f5f5}.pagination-note[data-v-f322e76a]{margin-top:15px;text-align:center;font-style:italic;color:#666;font-size:14px}\n/*$vite$:1*/",document.head.appendChild(t);const d={key:0,class:"server-sec-summary"},p={class:"server-sec-list"},v=["item"],m={key:0,class:"pagination-note"};e("default",u(a({__name:"ServerSecSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const t=e;return(e,a)=>(l(),r("div",null,[t.reportData?.server_security?(l(),r("div",d,[o("div",null,"Check Items Total:"+n(t.reportData.server_security.server_security_count?.security_count||0),1),o("div",null,"Risk Items Number:"+n(t.reportData.server_security.server_security_count?.risk_count?.warning||0),1)])):s("",!0),o("div",p,[o("table",null,[a[0]||(a[0]=o("thead",null,[o("tr",null,[o("th",null,"Name"),o("th",null,"Status"),o("th",null,"Suggestion")])],-1)),o("tbody",null,[(l(!0),r(i,null,c(t.data,e=>(l(),r("tr",{key:e.topic+e.item,item:e},[o("td",null,n(e.name),1),o("td",null,n(2===e.status?"Risk":"Normal"),1),o("td",null,n(e.info),1)],8,v))),128))])]),t.totalPages>1?(l(),r("div",m," Total "+n(t.totalPages)+" pages, current page "+n(t.pageIndex+1)+". ",1)):s("",!0)])]))}}),[["__scopeId","data-v-f322e76a"]]))}}}); +System.register(["./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323"],function(e,t){"use strict";var a,r,l,s,o,n,i,c,u;return{setters:[e=>{a=e.k,r=e.R,l=e.V,s=e.an,o=e.S,n=e.a4,i=e.F,c=e.O},e=>{u=e.p},null,null,null,null],execute:function(){var t=document.createElement("style");t.textContent=".server-sec-summary[data-v-f322e76a]{margin-bottom:30px;padding:20px;border-radius:12px;background-color:#f8f9fa;border:2px solid #e9ecef}.server-sec-summary div[data-v-f322e76a]{font-size:18px;margin-bottom:10px;color:#333}.server-sec-list[data-v-f322e76a]{margin-top:20px}.server-sec-list table[data-v-f322e76a]{width:100%;border-collapse:collapse;font-size:16px;color:#333}.server-sec-list table th[data-v-f322e76a],.server-sec-list table td[data-v-f322e76a]{padding:10px 15px;text-align:left;border-bottom:1px solid #eee}.server-sec-list table th[data-v-f322e76a]{background-color:#f0f0f0;font-weight:700;color:#333}.server-sec-list table tbody tr[data-v-f322e76a]:hover{background-color:#f5f5f5}.pagination-note[data-v-f322e76a]{margin-top:15px;text-align:center;font-style:italic;color:#666;font-size:14px}\n/*$vite$:1*/",document.head.appendChild(t);const d={key:0,class:"server-sec-summary"},p={class:"server-sec-list"},v=["item"],m={key:0,class:"pagination-note"};e("default",u(a({__name:"ServerSecSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const t=e;return(e,a)=>(l(),r("div",null,[t.reportData?.server_security?(l(),r("div",d,[o("div",null,"Check Items Total:"+n(t.reportData.server_security.server_security_count?.security_count||0),1),o("div",null,"Risk Items Number:"+n(t.reportData.server_security.server_security_count?.risk_count?.warning||0),1)])):s("",!0),o("div",p,[o("table",null,[a[0]||(a[0]=o("thead",null,[o("tr",null,[o("th",null,"Name"),o("th",null,"Status"),o("th",null,"Suggestion")])],-1)),o("tbody",null,[(l(!0),r(i,null,c(t.data,e=>(l(),r("tr",{key:e.topic+e.item,item:e},[o("td",null,n(e.name),1),o("td",null,n(2===e.status?"Risk":"Normal"),1),o("td",null,n(e.info),1)],8,v))),128))])]),t.totalPages>1?(l(),r("div",m," Total "+n(t.totalPages)+" pages, current page "+n(t.pageIndex+1)+". ",1)):s("",!0)])]))}}),[["__scopeId","data-v-f322e76a"]]))}}}); diff --git a/BTPanel/static/vite/js/ServerSecSection.js b/BTPanel/static/vite/js/ServerSecSection.js index 1e9c07b9..f4127101 100644 --- a/BTPanel/static/vite/js/ServerSecSection.js +++ b/BTPanel/static/vite/js/ServerSecSection.js @@ -1 +1 @@ -import{k as e,R as t,V as r,an as a,S as s,a4 as l,F as u,O as n}from"./vue.js?v=1760428868419";import{p as o}from"./page_layout.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./public.js?v=1760428868419";const i={key:0,class:"server-sec-summary"},p={class:"server-sec-list"},c=["item"],d={key:0,class:"pagination-note"},m=o(e({__name:"ServerSecSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const o=e;return(e,m)=>{var v,_,y,g;return r(),t("div",null,[(null==(v=o.reportData)?void 0:v.server_security)?(r(),t("div",i,[s("div",null,"Check Items Total:"+l((null==(_=o.reportData.server_security.server_security_count)?void 0:_.security_count)||0),1),s("div",null,"Risk Items Number:"+l((null==(g=null==(y=o.reportData.server_security.server_security_count)?void 0:y.risk_count)?void 0:g.warning)||0),1)])):a("",!0),s("div",p,[s("table",null,[m[0]||(m[0]=s("thead",null,[s("tr",null,[s("th",null,"Name"),s("th",null,"Status"),s("th",null,"Suggestion")])],-1)),s("tbody",null,[(r(!0),t(u,null,n(o.data,e=>(r(),t("tr",{key:e.topic+e.item,item:e},[s("td",null,l(e.name),1),s("td",null,l(2===e.status?"Risk":"Normal"),1),s("td",null,l(e.info),1)],8,c))),128))])]),o.totalPages>1?(r(),t("div",d," Total "+l(o.totalPages)+" pages, current page "+l(o.pageIndex+1)+". ",1)):a("",!0)])])}}}),[["__scopeId","data-v-f322e76a"]]);export{m as default}; +import{k as e,R as t,V as r,an as a,S as s,a4 as l,F as u,O as n}from"./vue.js?v=1762424784323";import{p as o}from"./page_layout.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./public.js?v=1762424784323";const i={key:0,class:"server-sec-summary"},p={class:"server-sec-list"},c=["item"],d={key:0,class:"pagination-note"},m=o(e({__name:"ServerSecSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const o=e;return(e,m)=>{var v,_,y,g;return r(),t("div",null,[(null==(v=o.reportData)?void 0:v.server_security)?(r(),t("div",i,[s("div",null,"Check Items Total:"+l((null==(_=o.reportData.server_security.server_security_count)?void 0:_.security_count)||0),1),s("div",null,"Risk Items Number:"+l((null==(g=null==(y=o.reportData.server_security.server_security_count)?void 0:y.risk_count)?void 0:g.warning)||0),1)])):a("",!0),s("div",p,[s("table",null,[m[0]||(m[0]=s("thead",null,[s("tr",null,[s("th",null,"Name"),s("th",null,"Status"),s("th",null,"Suggestion")])],-1)),s("tbody",null,[(r(!0),t(u,null,n(o.data,e=>(r(),t("tr",{key:e.topic+e.item,item:e},[s("td",null,l(e.name),1),s("td",null,l(2===e.status?"Risk":"Normal"),1),s("td",null,l(e.info),1)],8,c))),128))])]),o.totalPages>1?(r(),t("div",d," Total "+l(o.totalPages)+" pages, current page "+l(o.pageIndex+1)+". ",1)):a("",!0)])])}}}),[["__scopeId","data-v-f322e76a"]]);export{m as default}; diff --git a/BTPanel/static/vite/js/Share-legacy.js b/BTPanel/static/vite/js/Share-legacy.js index 7fe5ab9a..c6160908 100644 --- a/BTPanel/static/vite/js/Share-legacy.js +++ b/BTPanel/static/vite/js/Share-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./index-legacy200.js?v=1760428868419","./index-legacy39.js?v=1760428868419","./ShareDetail.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./soft-legacy2.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./file-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419"],function(e,l){"use strict";var a,t,s,u,n,o,i,r,d,c,f,p,_,v,y,g,h,m,j,x,w,M,b,S,k,U,D,C,R;return{setters:[e=>{a=e._},e=>{t=e._},e=>{s=e.i,u=e.t,n=e.d},e=>{o=e.g},e=>{i=e.g},e=>{r=e._},e=>{d=e.dR,c=e.au,f=e.dT,p=e.dU,_=e.aC},e=>{v=e.k,y=e.i,g=e.av,h=e.r,m=e.c,j=e.R,x=e.V,w=e.W,M=e.a3,b=e.S,S=e.U,k=e.j,U=e.a4,D=e.ak,C=e.F,R=e.N},null,null,null,null,null,null,null,null],execute:function(){const l={class:"p-20px"};e("default",v({__name:"Share",setup(e,{expose:v}){const{t:F}=s.global,L=y("fileStore"),{choosedKeys:N,fileList:W}=L,q=g("shareDetailRef"),H=h(!1),K=m(()=>"dir"==O.value.type?F("file.shareModal.setShareFolder",{name:O.value.nm}):F("file.shareModal.setShareFile",{name:O.value.nm})),O=h({}),T=h({filename:"",ps:"",password:"",expire:24});async function V(){const{message:e}=await u.post("/files?action=create_download_url",R(T.value),{requestOptions:{loading:F("file.shareModal.creatingShareLink")}});n(e)&&(H.value=!1,q.value?.open(e),i(L))}function z(){T.value.password=o(8)}return v({open:function(){H.value=!0;const e=W.value.find(e=>N.value[0]==e.nm);O.value=e,T.value.ps=O.value.nm,T.value.filename=O.value.path},close:function(){H.value=!1}}),(e,s)=>{const u=c,n=d,o=p,i=f,v=_,y=t,g=a;return x(),j(C,null,[w(g,{show:S(H),"onUpdate:show":s[3]||(s[3]=e=>D(H)?H.value=e:null),title:S(K),width:560,footer:!0,"confirm-text":S(F)("file.shareModal.create"),onConfirm:V},{default:M(()=>[b("div",l,[w(y,null,{default:M(()=>[w(n,{label:S(F)("file.shareModal.shareName")},{default:M(()=>[w(u,{value:S(T).ps,"onUpdate:value":s[0]||(s[0]=e=>S(T).ps=e)},null,8,["value"])]),_:1},8,["label"]),w(n,{label:S(F)("file.shareModal.expirationDate")},{default:M(()=>[w(i,{value:S(T).expire,"onUpdate:value":s[1]||(s[1]=e=>S(T).expire=e)},{default:M(()=>[w(o,{value:24},{default:M(()=>[k(U(S(F)("file.shareModal.aDay")),1)]),_:1}),w(o,{value:168},{default:M(()=>[k(U(S(F)("file.shareModal.aWeek")),1)]),_:1}),w(o,{value:1130800},{default:M(()=>[k(U(S(F)("file.shareModal.permanent")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),w(n,{label:S(F)("file.shareModal.extractionCode"),"show-feedback":!1},{default:M(()=>[w(u,{value:S(T).password,"onUpdate:value":s[2]||(s[2]=e=>S(T).password=e)},null,8,["value"]),w(v,{class:"ml-10px",type:"primary",onClick:z},{default:M(()=>[k(U(S(F)("file.shareModal.random")),1)]),_:1})]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title","confirm-text"]),w(r,{ref_key:"shareDetailRef",ref:q},null,512)],64)}}}))}}}); +System.register(["./index-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./index-legacy198.js?v=1762424784323","./index-legacy39.js?v=1762424784323","./ShareDetail.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./file-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323"],function(e,l){"use strict";var a,t,s,u,n,o,i,r,d,c,f,p,_,v,y,g,h,m,j,x,w,M,b,S,k,U,D,C,R;return{setters:[e=>{a=e._},e=>{t=e._},e=>{s=e.i,u=e.t,n=e.d},e=>{o=e.g},e=>{i=e.g},e=>{r=e._},e=>{d=e.dR,c=e.au,f=e.dT,p=e.dU,_=e.aC},e=>{v=e.k,y=e.i,g=e.av,h=e.r,m=e.c,j=e.R,x=e.V,w=e.W,M=e.a3,b=e.S,S=e.U,k=e.j,U=e.a4,D=e.ak,C=e.F,R=e.N},null,null,null,null,null,null,null,null],execute:function(){const l={class:"p-20px"};e("default",v({__name:"Share",setup(e,{expose:v}){const{t:F}=s.global,L=y("fileStore"),{choosedKeys:N,fileList:W}=L,q=g("shareDetailRef"),H=h(!1),K=m(()=>"dir"==O.value.type?F("file.shareModal.setShareFolder",{name:O.value.nm}):F("file.shareModal.setShareFile",{name:O.value.nm})),O=h({}),T=h({filename:"",ps:"",password:"",expire:24});async function V(){const{message:e}=await u.post("/files?action=create_download_url",R(T.value),{requestOptions:{loading:F("file.shareModal.creatingShareLink")}});n(e)&&(H.value=!1,q.value?.open(e),i(L))}function z(){T.value.password=o(8)}return v({open:function(){H.value=!0;const e=W.value.find(e=>N.value[0]==e.nm);O.value=e,T.value.ps=O.value.nm,T.value.filename=O.value.path},close:function(){H.value=!1}}),(e,s)=>{const u=c,n=d,o=p,i=f,v=_,y=t,g=a;return x(),j(C,null,[w(g,{show:S(H),"onUpdate:show":s[3]||(s[3]=e=>D(H)?H.value=e:null),title:S(K),width:560,footer:!0,"confirm-text":S(F)("file.shareModal.create"),onConfirm:V},{default:M(()=>[b("div",l,[w(y,null,{default:M(()=>[w(n,{label:S(F)("file.shareModal.shareName")},{default:M(()=>[w(u,{value:S(T).ps,"onUpdate:value":s[0]||(s[0]=e=>S(T).ps=e)},null,8,["value"])]),_:1},8,["label"]),w(n,{label:S(F)("file.shareModal.expirationDate")},{default:M(()=>[w(i,{value:S(T).expire,"onUpdate:value":s[1]||(s[1]=e=>S(T).expire=e)},{default:M(()=>[w(o,{value:24},{default:M(()=>[k(U(S(F)("file.shareModal.aDay")),1)]),_:1}),w(o,{value:168},{default:M(()=>[k(U(S(F)("file.shareModal.aWeek")),1)]),_:1}),w(o,{value:1130800},{default:M(()=>[k(U(S(F)("file.shareModal.permanent")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),w(n,{label:S(F)("file.shareModal.extractionCode"),"show-feedback":!1},{default:M(()=>[w(u,{value:S(T).password,"onUpdate:value":s[2]||(s[2]=e=>S(T).password=e)},null,8,["value"]),w(v,{class:"ml-10px",type:"primary",onClick:z},{default:M(()=>[k(U(S(F)("file.shareModal.random")),1)]),_:1})]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title","confirm-text"]),w(r,{ref_key:"shareDetailRef",ref:q},null,512)],64)}}}))}}}); diff --git a/BTPanel/static/vite/js/Share.js b/BTPanel/static/vite/js/Share.js index 8bcfd070..b1f1515e 100644 --- a/BTPanel/static/vite/js/Share.js +++ b/BTPanel/static/vite/js/Share.js @@ -1 +1 @@ -import{_ as e}from"./index.js?v=1760428868419";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{i as l,t as s,d as t}from"./page_layout.js?v=1760428868419";import{g as o}from"./index200.js?v=1760428868419";import{g as r}from"./index39.js?v=1760428868419";import{_ as i}from"./ShareDetail.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{dR as u,au as n,dT as p,dU as f,aC as d}from"./naive.js?v=1760428868419";import{k as m,i as _,av as v,r as c,c as h,R as j,V as x,W as w,a3 as y,S as M,U as g,j as b,a4 as k,ak as S,F as U,N as D}from"./vue.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./public.js?v=1760428868419";import"./soft2.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";import"./file2.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";const C={class:"p-20px"},R=m({__name:"Share",setup(m,{expose:R}){const{t:F}=l.global,L=_("fileStore"),{choosedKeys:N,fileList:W}=L,q=v("shareDetailRef"),H=c(!1),K=h(()=>"dir"==O.value.type?F("file.shareModal.setShareFolder",{name:O.value.nm}):F("file.shareModal.setShareFile",{name:O.value.nm})),O=c({}),T=c({filename:"",ps:"",password:"",expire:24});async function V(){var e;const{message:a}=await s.post("/files?action=create_download_url",D(T.value),{requestOptions:{loading:F("file.shareModal.creatingShareLink")}});t(a)&&(H.value=!1,null==(e=q.value)||e.open(a),r(L))}function z(){T.value.password=o(8)}return R({open:function(){H.value=!0;const e=W.value.find(e=>N.value[0]==e.nm);O.value=e,T.value.ps=O.value.nm,T.value.filename=O.value.path},close:function(){H.value=!1}}),(l,s)=>{const t=n,o=u,r=f,m=p,_=d,v=a,c=e;return x(),j(U,null,[w(c,{show:g(H),"onUpdate:show":s[3]||(s[3]=e=>S(H)?H.value=e:null),title:g(K),width:560,footer:!0,"confirm-text":g(F)("file.shareModal.create"),onConfirm:V},{default:y(()=>[M("div",C,[w(v,null,{default:y(()=>[w(o,{label:g(F)("file.shareModal.shareName")},{default:y(()=>[w(t,{value:g(T).ps,"onUpdate:value":s[0]||(s[0]=e=>g(T).ps=e)},null,8,["value"])]),_:1},8,["label"]),w(o,{label:g(F)("file.shareModal.expirationDate")},{default:y(()=>[w(m,{value:g(T).expire,"onUpdate:value":s[1]||(s[1]=e=>g(T).expire=e)},{default:y(()=>[w(r,{value:24},{default:y(()=>[b(k(g(F)("file.shareModal.aDay")),1)]),_:1}),w(r,{value:168},{default:y(()=>[b(k(g(F)("file.shareModal.aWeek")),1)]),_:1}),w(r,{value:1130800},{default:y(()=>[b(k(g(F)("file.shareModal.permanent")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),w(o,{label:g(F)("file.shareModal.extractionCode"),"show-feedback":!1},{default:y(()=>[w(t,{value:g(T).password,"onUpdate:value":s[2]||(s[2]=e=>g(T).password=e)},null,8,["value"]),w(_,{class:"ml-10px",type:"primary",onClick:z},{default:y(()=>[b(k(g(F)("file.shareModal.random")),1)]),_:1})]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title","confirm-text"]),w(i,{ref_key:"shareDetailRef",ref:q},null,512)],64)}}});export{R as default}; +import{_ as e}from"./index.js?v=1762424784323";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{i as l,t as s,d as t}from"./page_layout.js?v=1762424784323";import{g as o}from"./index198.js?v=1762424784323";import{g as r}from"./index39.js?v=1762424784323";import{_ as i}from"./ShareDetail.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{dR as u,au as n,dT as p,dU as f,aC as d}from"./naive.js?v=1762424784323";import{k as m,i as _,av as v,r as c,c as h,R as j,V as x,W as w,a3 as y,S as M,U as g,j as b,a4 as k,ak as S,F as U,N as D}from"./vue.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./public.js?v=1762424784323";import"./soft2.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";import"./file2.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";const C={class:"p-20px"},R=m({__name:"Share",setup(m,{expose:R}){const{t:F}=l.global,L=_("fileStore"),{choosedKeys:N,fileList:W}=L,q=v("shareDetailRef"),H=c(!1),K=h(()=>"dir"==O.value.type?F("file.shareModal.setShareFolder",{name:O.value.nm}):F("file.shareModal.setShareFile",{name:O.value.nm})),O=c({}),T=c({filename:"",ps:"",password:"",expire:24});async function V(){var e;const{message:a}=await s.post("/files?action=create_download_url",D(T.value),{requestOptions:{loading:F("file.shareModal.creatingShareLink")}});t(a)&&(H.value=!1,null==(e=q.value)||e.open(a),r(L))}function z(){T.value.password=o(8)}return R({open:function(){H.value=!0;const e=W.value.find(e=>N.value[0]==e.nm);O.value=e,T.value.ps=O.value.nm,T.value.filename=O.value.path},close:function(){H.value=!1}}),(l,s)=>{const t=n,o=u,r=f,m=p,_=d,v=a,c=e;return x(),j(U,null,[w(c,{show:g(H),"onUpdate:show":s[3]||(s[3]=e=>S(H)?H.value=e:null),title:g(K),width:560,footer:!0,"confirm-text":g(F)("file.shareModal.create"),onConfirm:V},{default:y(()=>[M("div",C,[w(v,null,{default:y(()=>[w(o,{label:g(F)("file.shareModal.shareName")},{default:y(()=>[w(t,{value:g(T).ps,"onUpdate:value":s[0]||(s[0]=e=>g(T).ps=e)},null,8,["value"])]),_:1},8,["label"]),w(o,{label:g(F)("file.shareModal.expirationDate")},{default:y(()=>[w(m,{value:g(T).expire,"onUpdate:value":s[1]||(s[1]=e=>g(T).expire=e)},{default:y(()=>[w(r,{value:24},{default:y(()=>[b(k(g(F)("file.shareModal.aDay")),1)]),_:1}),w(r,{value:168},{default:y(()=>[b(k(g(F)("file.shareModal.aWeek")),1)]),_:1}),w(r,{value:1130800},{default:y(()=>[b(k(g(F)("file.shareModal.permanent")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),w(o,{label:g(F)("file.shareModal.extractionCode"),"show-feedback":!1},{default:y(()=>[w(t,{value:g(T).password,"onUpdate:value":s[2]||(s[2]=e=>g(T).password=e)},null,8,["value"]),w(_,{class:"ml-10px",type:"primary",onClick:z},{default:y(()=>[b(k(g(F)("file.shareModal.random")),1)]),_:1})]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title","confirm-text"]),w(i,{ref_key:"shareDetailRef",ref:q},null,512)],64)}}});export{R as default}; diff --git a/BTPanel/static/vite/js/ShareDetail.vue_vue_type_script_setup_true_lang-legacy.js b/BTPanel/static/vite/js/ShareDetail.vue_vue_type_script_setup_true_lang-legacy.js index 2ba1f106..147ce7c8 100644 --- a/BTPanel/static/vite/js/ShareDetail.vue_vue_type_script_setup_true_lang-legacy.js +++ b/BTPanel/static/vite/js/ShareDetail.vue_vue_type_script_setup_true_lang-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./index-legacy39.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419"],function(e,a){"use strict";var l,o,i,n,t,s,r,d,u,c,p,f,h,m,v,_,y,g,w,x,k,M,b,C,S,j;return{setters:[e=>{l=e._},e=>{o=e._},e=>{i=e.i,n=e.a8,t=e._,s=e.t},e=>{r=e.i,d=e.a},e=>{u=e.g},e=>{c=e.dR,p=e.au,f=e.aC},e=>{h=e.k,m=e.i,v=e.r,_=e.c,y=e.a2,g=e.V,w=e.a3,x=e.S,k=e.W,M=e.an,b=e.U,C=e.j,S=e.a4,j=e.ak}],execute:function(){const a={class:"p-20px"};e("_",h({__name:"ShareDetail",setup(e,{expose:h}){const{t:$}=i.global,D=`${window.location.origin}/down/`,U=m("fileStore"),A=v(!1),q=v({filename:"",ps:"",token:"",expire:"",total:0,password:"",addtime:0,id:0});async function z(){return d({title:$("file.shareModal.cancelSharing"),content:$("file.shareModal.confirmStopSharing",{filename:q.value.filename}),async onConfirm(){await s.post("/files?action=remove_download_url",{id:q.value.id},{requestOptions:{loading:$("file.shareModal.deletingShare"),successMessage:!0}}),A.value=!1,u(U)}}),!1}h({open(e){q.value={filename:e.filename,ps:e.ps,token:e.token,expire:n(e.expire),total:e.total,password:e.password,addtime:e.addtime,id:e.id},A.value=!0},close(){A.value=!1}});const L=_(()=>`${D}${q.value.token}`);function N(){r(L.value)}function O(){r($("file.shareModal.linkAndCode",{link:L.value,code:q.value.password}))}return(e,i)=>{const n=p,s=c,r=t,d=f,u=o,h=l;return g(),y(h,{show:b(A),"onUpdate:show":i[1]||(i[1]=e=>j(A)?A.value=e:null),title:b($)("file.shareModal.shareDetails",{name:b(q).ps}),width:560,footer:!0,"confirm-type":"error","confirm-text":b($)("file.shareModal.closeSharingChain"),onConfirm:z},{default:w(()=>[x("div",a,[k(u,null,{default:w(()=>[k(s,{label:b($)("file.shareModal.shareName")},{default:w(()=>[k(n,{value:b(q).ps,"onUpdate:value":i[0]||(i[0]=e=>b(q).ps=e)},null,8,["value"])]),_:1},8,["label"]),k(s,{label:b($)("file.shareModal.shareChain")},{default:w(()=>[k(n,{class:"mr-10px",readonly:!0,value:b(L)},null,8,["value"]),k(d,{type:"primary",onClick:N},{icon:w(()=>[k(r,{name:"common-copy",size:"16"})]),_:1})]),_:1},8,["label"]),b(q).password?(g(),y(s,{key:0,label:b($)("file.shareModal.extractionCode")},{default:w(()=>[k(n,{class:"mr-10px",value:`${b(q).password}`,readonly:""},null,8,["value"]),k(d,{type:"primary",onClick:O},{default:w(()=>[C(S(b($)("file.shareModal.copyLinkAndCode")),1)]),_:1})]),_:1},8,["label"])):M("",!0),k(s,{label:b($)("file.shareModal.expirationDate"),"show-feedback":!1},{default:w(()=>[C(S(b(q).expire),1)]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title","confirm-text"])}}}))}}}); +System.register(["./index-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./index-legacy39.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323"],function(e,a){"use strict";var l,o,i,n,t,s,r,d,u,c,p,f,h,m,v,_,y,g,w,x,k,M,b,C,S,j;return{setters:[e=>{l=e._},e=>{o=e._},e=>{i=e.i,n=e.a8,t=e._,s=e.t},e=>{r=e.i,d=e.a},e=>{u=e.g},e=>{c=e.dR,p=e.au,f=e.aC},e=>{h=e.k,m=e.i,v=e.r,_=e.c,y=e.a2,g=e.V,w=e.a3,x=e.S,k=e.W,M=e.an,b=e.U,C=e.j,S=e.a4,j=e.ak}],execute:function(){const a={class:"p-20px"};e("_",h({__name:"ShareDetail",setup(e,{expose:h}){const{t:$}=i.global,D=`${window.location.origin}/down/`,U=m("fileStore"),A=v(!1),q=v({filename:"",ps:"",token:"",expire:"",total:0,password:"",addtime:0,id:0});async function z(){return d({title:$("file.shareModal.cancelSharing"),content:$("file.shareModal.confirmStopSharing",{filename:q.value.filename}),async onConfirm(){await s.post("/files?action=remove_download_url",{id:q.value.id},{requestOptions:{loading:$("file.shareModal.deletingShare"),successMessage:!0}}),A.value=!1,u(U)}}),!1}h({open(e){q.value={filename:e.filename,ps:e.ps,token:e.token,expire:n(e.expire),total:e.total,password:e.password,addtime:e.addtime,id:e.id},A.value=!0},close(){A.value=!1}});const L=_(()=>`${D}${q.value.token}`);function N(){r(L.value)}function O(){r($("file.shareModal.linkAndCode",{link:L.value,code:q.value.password}))}return(e,i)=>{const n=p,s=c,r=t,d=f,u=o,h=l;return g(),y(h,{show:b(A),"onUpdate:show":i[1]||(i[1]=e=>j(A)?A.value=e:null),title:b($)("file.shareModal.shareDetails",{name:b(q).ps}),width:560,footer:!0,"confirm-type":"error","confirm-text":b($)("file.shareModal.closeSharingChain"),onConfirm:z},{default:w(()=>[x("div",a,[k(u,null,{default:w(()=>[k(s,{label:b($)("file.shareModal.shareName")},{default:w(()=>[k(n,{value:b(q).ps,"onUpdate:value":i[0]||(i[0]=e=>b(q).ps=e)},null,8,["value"])]),_:1},8,["label"]),k(s,{label:b($)("file.shareModal.shareChain")},{default:w(()=>[k(n,{class:"mr-10px",readonly:!0,value:b(L)},null,8,["value"]),k(d,{type:"primary",onClick:N},{icon:w(()=>[k(r,{name:"common-copy",size:"16"})]),_:1})]),_:1},8,["label"]),b(q).password?(g(),y(s,{key:0,label:b($)("file.shareModal.extractionCode")},{default:w(()=>[k(n,{class:"mr-10px",value:`${b(q).password}`,readonly:""},null,8,["value"]),k(d,{type:"primary",onClick:O},{default:w(()=>[C(S(b($)("file.shareModal.copyLinkAndCode")),1)]),_:1})]),_:1},8,["label"])):M("",!0),k(s,{label:b($)("file.shareModal.expirationDate"),"show-feedback":!1},{default:w(()=>[C(S(b(q).expire),1)]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title","confirm-text"])}}}))}}}); diff --git a/BTPanel/static/vite/js/ShareDetail.vue_vue_type_script_setup_true_lang.js b/BTPanel/static/vite/js/ShareDetail.vue_vue_type_script_setup_true_lang.js index 1a9ee35a..6849c76f 100644 --- a/BTPanel/static/vite/js/ShareDetail.vue_vue_type_script_setup_true_lang.js +++ b/BTPanel/static/vite/js/ShareDetail.vue_vue_type_script_setup_true_lang.js @@ -1 +1 @@ -import{_ as a}from"./index.js?v=1760428868419";import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{i as l,a8 as o,_ as s,t as i}from"./page_layout.js?v=1760428868419";import{i as t,a as n}from"./public.js?v=1760428868419";import{g as r}from"./index39.js?v=1760428868419";import{dR as d,au as p,aC as u}from"./naive.js?v=1760428868419";import{k as c,i as f,r as m,c as h,a2 as v,V as _,a3 as w,S as x,W as y,an as k,U as M,j as b,a4 as g,ak as C}from"./vue.js?v=1760428868419";const j={class:"p-20px"},S=c({__name:"ShareDetail",setup(c,{expose:S}){const{t:D}=l.global,U="".concat(window.location.origin,"/down/"),A=f("fileStore"),q=m(!1),z=m({filename:"",ps:"",token:"",expire:"",total:0,password:"",addtime:0,id:0});async function L(){return n({title:D("file.shareModal.cancelSharing"),content:D("file.shareModal.confirmStopSharing",{filename:z.value.filename}),async onConfirm(){await i.post("/files?action=remove_download_url",{id:z.value.id},{requestOptions:{loading:D("file.shareModal.deletingShare"),successMessage:!0}}),q.value=!1,r(A)}}),!1}S({open(a){z.value={filename:a.filename,ps:a.ps,token:a.token,expire:o(a.expire),total:a.total,password:a.password,addtime:a.addtime,id:a.id},q.value=!0},close(){q.value=!1}});const N=h(()=>"".concat(U).concat(z.value.token));function O(){t(N.value)}function R(){t(D("file.shareModal.linkAndCode",{link:N.value,code:z.value.password}))}return(l,o)=>{const i=p,t=d,n=s,r=u,c=e,f=a;return _(),v(f,{show:M(q),"onUpdate:show":o[1]||(o[1]=a=>C(q)?q.value=a:null),title:M(D)("file.shareModal.shareDetails",{name:M(z).ps}),width:560,footer:!0,"confirm-type":"error","confirm-text":M(D)("file.shareModal.closeSharingChain"),onConfirm:L},{default:w(()=>[x("div",j,[y(c,null,{default:w(()=>[y(t,{label:M(D)("file.shareModal.shareName")},{default:w(()=>[y(i,{value:M(z).ps,"onUpdate:value":o[0]||(o[0]=a=>M(z).ps=a)},null,8,["value"])]),_:1},8,["label"]),y(t,{label:M(D)("file.shareModal.shareChain")},{default:w(()=>[y(i,{class:"mr-10px",readonly:!0,value:M(N)},null,8,["value"]),y(r,{type:"primary",onClick:O},{icon:w(()=>[y(n,{name:"common-copy",size:"16"})]),_:1})]),_:1},8,["label"]),M(z).password?(_(),v(t,{key:0,label:M(D)("file.shareModal.extractionCode")},{default:w(()=>[y(i,{class:"mr-10px",value:"".concat(M(z).password),readonly:""},null,8,["value"]),y(r,{type:"primary",onClick:R},{default:w(()=>[b(g(M(D)("file.shareModal.copyLinkAndCode")),1)]),_:1})]),_:1},8,["label"])):k("",!0),y(t,{label:M(D)("file.shareModal.expirationDate"),"show-feedback":!1},{default:w(()=>[b(g(M(z).expire),1)]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title","confirm-text"])}}});export{S as _}; +import{_ as a}from"./index.js?v=1762424784323";import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{i as l,a8 as o,_ as s,t as i}from"./page_layout.js?v=1762424784323";import{i as t,a as n}from"./public.js?v=1762424784323";import{g as r}from"./index39.js?v=1762424784323";import{dR as d,au as p,aC as u}from"./naive.js?v=1762424784323";import{k as c,i as f,r as m,c as h,a2 as v,V as _,a3 as w,S as x,W as y,an as k,U as M,j as b,a4 as g,ak as C}from"./vue.js?v=1762424784323";const j={class:"p-20px"},S=c({__name:"ShareDetail",setup(c,{expose:S}){const{t:D}=l.global,U="".concat(window.location.origin,"/down/"),A=f("fileStore"),q=m(!1),z=m({filename:"",ps:"",token:"",expire:"",total:0,password:"",addtime:0,id:0});async function L(){return n({title:D("file.shareModal.cancelSharing"),content:D("file.shareModal.confirmStopSharing",{filename:z.value.filename}),async onConfirm(){await i.post("/files?action=remove_download_url",{id:z.value.id},{requestOptions:{loading:D("file.shareModal.deletingShare"),successMessage:!0}}),q.value=!1,r(A)}}),!1}S({open(a){z.value={filename:a.filename,ps:a.ps,token:a.token,expire:o(a.expire),total:a.total,password:a.password,addtime:a.addtime,id:a.id},q.value=!0},close(){q.value=!1}});const N=h(()=>"".concat(U).concat(z.value.token));function O(){t(N.value)}function R(){t(D("file.shareModal.linkAndCode",{link:N.value,code:z.value.password}))}return(l,o)=>{const i=p,t=d,n=s,r=u,c=e,f=a;return _(),v(f,{show:M(q),"onUpdate:show":o[1]||(o[1]=a=>C(q)?q.value=a:null),title:M(D)("file.shareModal.shareDetails",{name:M(z).ps}),width:560,footer:!0,"confirm-type":"error","confirm-text":M(D)("file.shareModal.closeSharingChain"),onConfirm:L},{default:w(()=>[x("div",j,[y(c,null,{default:w(()=>[y(t,{label:M(D)("file.shareModal.shareName")},{default:w(()=>[y(i,{value:M(z).ps,"onUpdate:value":o[0]||(o[0]=a=>M(z).ps=a)},null,8,["value"])]),_:1},8,["label"]),y(t,{label:M(D)("file.shareModal.shareChain")},{default:w(()=>[y(i,{class:"mr-10px",readonly:!0,value:M(N)},null,8,["value"]),y(r,{type:"primary",onClick:O},{icon:w(()=>[y(n,{name:"common-copy",size:"16"})]),_:1})]),_:1},8,["label"]),M(z).password?(_(),v(t,{key:0,label:M(D)("file.shareModal.extractionCode")},{default:w(()=>[y(i,{class:"mr-10px",value:"".concat(M(z).password),readonly:""},null,8,["value"]),y(r,{type:"primary",onClick:R},{default:w(()=>[b(g(M(D)("file.shareModal.copyLinkAndCode")),1)]),_:1})]),_:1},8,["label"])):k("",!0),y(t,{label:M(D)("file.shareModal.expirationDate"),"show-feedback":!1},{default:w(()=>[b(g(M(z).expire),1)]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title","confirm-text"])}}});export{S as _}; diff --git a/BTPanel/static/vite/js/ShareList-legacy.js b/BTPanel/static/vite/js/ShareList-legacy.js index ddeaf0d1..40682d2f 100644 --- a/BTPanel/static/vite/js/ShareList-legacy.js +++ b/BTPanel/static/vite/js/ShareList-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./index-legacy39.js?v=1760428868419","./ShareDetail.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./soft-legacy2.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./file-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419"],function(e,l){"use strict";var a,t,s,i,n,u,c,r,o,p,y,d,_,f,g,h,v,j,m,x,L,k;return{setters:[e=>{a=e._},e=>{t=e.f,s=e.a,i=e.h},e=>{n=e.a8},e=>{u=e.h,c=e.i},e=>{r=e._},e=>{o=e.k,p=e.P,y=e.i,d=e.r,_=e.av,f=e.R,g=e.V,h=e.W,v=e.a3,j=e.S,m=e.U,x=e.ak,L=e.F},e=>{k=e.d$},null,null,null,null,null,null,null,null],execute:function(){const l={class:"p-20px"},w={class:"mt-10px flex justify-end items-center"};e("default",o({__name:"ShareList",setup(e,{expose:o}){const{t:M}=p(),S=y("fileStore"),{shareList:D,shareListPage:b,shareListTotal:P}=S,C=d(!1),R=d(!1),U=_("shareDetailRef"),B=async()=>{try{R.value=!0,await c(S)}finally{R.value=!1}};function T(e){b.value=e,B()}o({open(){C.value=!0,B()},close(){C.value=!1}});const A=d([{key:"ps",title:M("file.shareListModal.shareName")},{key:"filename",title:M("file.shareListModal.shareAddress")},{key:"expire",title:M("file.shareListModal.expirationDate"),render:e=>n(e.expire)},t({width:120,options:e=>[{label:M("Public.Btn.Details"),onClick:()=>{!async function(e){U.value?.open(e)}(e)}},{label:M("Public.Btn.Delete"),onClick:()=>{var l;l=e,s({title:M("file.shareListModal.cancelShareTitle"),content:M("file.shareListModal.cancelShareMessage",{filename:l.filename}),onConfirm:async()=>{await u(S,l.id),B()}})}}]})]);return(e,t)=>{const s=i,n=k,u=a;return g(),f(L,null,[h(u,{show:m(C),"onUpdate:show":t[1]||(t[1]=e=>x(C)?C.value=e:null),title:m(M)("file.shareListModal.title"),width:850},{default:v(()=>[j("div",l,[h(s,{loading:m(R),data:m(D),columns:m(A)},null,8,["loading","data","columns"]),j("div",w,[h(n,{"item-count":m(P),page:m(b),"onUpdate:page":t[0]||(t[0]=e=>x(b)?b.value=e:null),"on-update:page":T},null,8,["item-count","page"])])])]),_:1},8,["show","title"]),h(r,{ref_key:"shareDetailRef",ref:U},null,512)],64)}}}))}}}); +System.register(["./index-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./index-legacy39.js?v=1762424784323","./ShareDetail.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./file-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323"],function(e,l){"use strict";var a,t,s,i,n,u,c,r,o,p,y,d,_,f,g,h,v,j,m,x,L,k;return{setters:[e=>{a=e._},e=>{t=e.f,s=e.a,i=e.h},e=>{n=e.a8},e=>{u=e.h,c=e.i},e=>{r=e._},e=>{o=e.k,p=e.P,y=e.i,d=e.r,_=e.av,f=e.R,g=e.V,h=e.W,v=e.a3,j=e.S,m=e.U,x=e.ak,L=e.F},e=>{k=e.d$},null,null,null,null,null,null,null,null],execute:function(){const l={class:"p-20px"},w={class:"mt-10px flex justify-end items-center"};e("default",o({__name:"ShareList",setup(e,{expose:o}){const{t:M}=p(),S=y("fileStore"),{shareList:D,shareListPage:b,shareListTotal:P}=S,C=d(!1),R=d(!1),U=_("shareDetailRef"),B=async()=>{try{R.value=!0,await c(S)}finally{R.value=!1}};function T(e){b.value=e,B()}o({open(){C.value=!0,B()},close(){C.value=!1}});const A=d([{key:"ps",title:M("file.shareListModal.shareName")},{key:"filename",title:M("file.shareListModal.shareAddress")},{key:"expire",title:M("file.shareListModal.expirationDate"),render:e=>n(e.expire)},t({width:120,options:e=>[{label:M("Public.Btn.Details"),onClick:()=>{!async function(e){U.value?.open(e)}(e)}},{label:M("Public.Btn.Delete"),onClick:()=>{var l;l=e,s({title:M("file.shareListModal.cancelShareTitle"),content:M("file.shareListModal.cancelShareMessage",{filename:l.filename}),onConfirm:async()=>{await u(S,l.id),B()}})}}]})]);return(e,t)=>{const s=i,n=k,u=a;return g(),f(L,null,[h(u,{show:m(C),"onUpdate:show":t[1]||(t[1]=e=>x(C)?C.value=e:null),title:m(M)("file.shareListModal.title"),width:850},{default:v(()=>[j("div",l,[h(s,{loading:m(R),data:m(D),columns:m(A)},null,8,["loading","data","columns"]),j("div",w,[h(n,{"item-count":m(P),page:m(b),"onUpdate:page":t[0]||(t[0]=e=>x(b)?b.value=e:null),"on-update:page":T},null,8,["item-count","page"])])])]),_:1},8,["show","title"]),h(r,{ref_key:"shareDetailRef",ref:U},null,512)],64)}}}))}}}); diff --git a/BTPanel/static/vite/js/ShareList.js b/BTPanel/static/vite/js/ShareList.js index c3e5d7e5..35aadb38 100644 --- a/BTPanel/static/vite/js/ShareList.js +++ b/BTPanel/static/vite/js/ShareList.js @@ -1 +1 @@ -import{_ as e}from"./index.js?v=1760428868419";import{f as a,a as t,h as s}from"./public.js?v=1760428868419";import{a8 as i}from"./page_layout.js?v=1760428868419";import{h as l,i as o}from"./index39.js?v=1760428868419";import{_ as r}from"./ShareDetail.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{k as n,P as p,i as u,r as m,av as f,R as c,V as d,W as _,a3 as h,S as v,U as j,ak as y,F as g}from"./vue.js?v=1760428868419";import{d$ as x}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./soft2.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";import"./file2.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";const L={class:"p-20px"},k={class:"mt-10px flex justify-end items-center"},w=n({__name:"ShareList",setup(n,{expose:w}){const{t:M}=p(),D=u("fileStore"),{shareList:S,shareListPage:b,shareListTotal:P}=D,C=m(!1),R=m(!1),U=f("shareDetailRef"),B=async()=>{try{R.value=!0,await o(D)}finally{R.value=!1}};function T(e){b.value=e,B()}w({open(){C.value=!0,B()},close(){C.value=!1}});const A=m([{key:"ps",title:M("file.shareListModal.shareName")},{key:"filename",title:M("file.shareListModal.shareAddress")},{key:"expire",title:M("file.shareListModal.expirationDate"),render:e=>i(e.expire)},a({width:120,options:e=>[{label:M("Public.Btn.Details"),onClick:()=>{!async function(e){var a;null==(a=U.value)||a.open(e)}(e)}},{label:M("Public.Btn.Delete"),onClick:()=>{var a;a=e,t({title:M("file.shareListModal.cancelShareTitle"),content:M("file.shareListModal.cancelShareMessage",{filename:a.filename}),onConfirm:async()=>{await l(D,a.id),B()}})}}]})]);return(a,t)=>{const i=s,l=x,o=e;return d(),c(g,null,[_(o,{show:j(C),"onUpdate:show":t[1]||(t[1]=e=>y(C)?C.value=e:null),title:j(M)("file.shareListModal.title"),width:850},{default:h(()=>[v("div",L,[_(i,{loading:j(R),data:j(S),columns:j(A)},null,8,["loading","data","columns"]),v("div",k,[_(l,{"item-count":j(P),page:j(b),"onUpdate:page":t[0]||(t[0]=e=>y(b)?b.value=e:null),"on-update:page":T},null,8,["item-count","page"])])])]),_:1},8,["show","title"]),_(r,{ref_key:"shareDetailRef",ref:U},null,512)],64)}}});export{w as default}; +import{_ as e}from"./index.js?v=1762424784323";import{f as a,a as t,h as s}from"./public.js?v=1762424784323";import{a8 as i}from"./page_layout.js?v=1762424784323";import{h as l,i as o}from"./index39.js?v=1762424784323";import{_ as r}from"./ShareDetail.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{k as n,P as p,i as u,r as m,av as f,R as c,V as d,W as _,a3 as h,S as v,U as j,ak as y,F as g}from"./vue.js?v=1762424784323";import{d$ as x}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./soft2.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";import"./file2.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";const L={class:"p-20px"},k={class:"mt-10px flex justify-end items-center"},w=n({__name:"ShareList",setup(n,{expose:w}){const{t:M}=p(),D=u("fileStore"),{shareList:S,shareListPage:b,shareListTotal:P}=D,C=m(!1),R=m(!1),U=f("shareDetailRef"),B=async()=>{try{R.value=!0,await o(D)}finally{R.value=!1}};function T(e){b.value=e,B()}w({open(){C.value=!0,B()},close(){C.value=!1}});const A=m([{key:"ps",title:M("file.shareListModal.shareName")},{key:"filename",title:M("file.shareListModal.shareAddress")},{key:"expire",title:M("file.shareListModal.expirationDate"),render:e=>i(e.expire)},a({width:120,options:e=>[{label:M("Public.Btn.Details"),onClick:()=>{!async function(e){var a;null==(a=U.value)||a.open(e)}(e)}},{label:M("Public.Btn.Delete"),onClick:()=>{var a;a=e,t({title:M("file.shareListModal.cancelShareTitle"),content:M("file.shareListModal.cancelShareMessage",{filename:a.filename}),onConfirm:async()=>{await l(D,a.id),B()}})}}]})]);return(a,t)=>{const i=s,l=x,o=e;return d(),c(g,null,[_(o,{show:j(C),"onUpdate:show":t[1]||(t[1]=e=>y(C)?C.value=e:null),title:j(M)("file.shareListModal.title"),width:850},{default:h(()=>[v("div",L,[_(i,{loading:j(R),data:j(S),columns:j(A)},null,8,["loading","data","columns"]),v("div",k,[_(l,{"item-count":j(P),page:j(b),"onUpdate:page":t[0]||(t[0]=e=>y(b)?b.value=e:null),"on-update:page":T},null,8,["item-count","page"])])])]),_:1},8,["show","title"]),_(r,{ref_key:"shareDetailRef",ref:U},null,512)],64)}}});export{w as default}; diff --git a/BTPanel/static/vite/js/SoftLink-legacy.js b/BTPanel/static/vite/js/SoftLink-legacy.js index 2eaee287..c71e4290 100644 --- a/BTPanel/static/vite/js/SoftLink-legacy.js +++ b/BTPanel/static/vite/js/SoftLink-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./index-legacy39.js?v=1760428868419","./ResourceManagerWindow-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./soft-legacy2.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./file-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419"],function(e,l){"use strict";var a,n,u,t,o,s,i,c,r,f,v,d,_,p,g,y,j,w,h,k,m,x,R,L;return{setters:[e=>{a=e._},e=>{n=e._},e=>{u=e._,t=e.m},e=>{o=e.j,s=e.g},e=>{i=e.R},e=>{c=e.dR,r=e.av,f=e.au,v=e.aC},e=>{d=e.k,_=e.i,p=e.P,g=e.r,y=e.av,j=e.R,w=e.V,h=e.W,k=e.a3,m=e.S,x=e.ak,R=e.U,L=e.F},null,null,null,null,null,null,null,null],execute:function(){const l={class:"p-20px pt-28px"},b={class:"w-320px"},M={class:"w-320px"};e("default",d({__name:"SoftLink",setup(e,{expose:d}){const C=_("fileStore"),{currentPath:S}=C,{t:U}=p(),W=g(!1),$=y("resourceWindowRef"),F=g(""),P=g("");async function q(){if(!P.value||!F.value)return t.warning(U("file.softLinkModal.validation.fillRequired")),!1;await o(F.value,S.value+"/"+P.value),s(C)}function z(){$.value?.open()}function D(e){F.value=e}return d({open:function(){W.value=!0},close:function(){W.value=!1}}),(e,t)=>{const o=f,s=u,d=v,_=r,p=c,g=n,y=a;return w(),j(L,null,[h(y,{show:R(W),"onUpdate:show":t[2]||(t[2]=e=>x(W)?W.value=e:null),title:e.$t("file.softLinkModal.title"),width:520,footer:!0,onConfirm:q},{default:k(()=>[m("div",l,[h(g,null,{default:k(()=>[h(p,{label:e.$t("file.softLinkModal.sourceFile")},{default:k(()=>[m("div",b,[h(_,null,{default:k(()=>[h(o,{value:R(F),"onUpdate:value":t[0]||(t[0]=e=>x(F)?F.value=e:null),placeholder:""},null,8,["value"]),h(d,{onClick:z},{icon:k(()=>[h(s,{name:"file-dir",size:"24"})]),_:1})]),_:1})])]),_:1},8,["label"]),h(p,{label:e.$t("file.softLinkModal.softLinkName")},{default:k(()=>[m("div",M,[h(o,{value:R(P),"onUpdate:value":t[1]||(t[1]=e=>x(P)?P.value=e:null),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title"]),h(i,{ref_key:"resourceWindowRef",ref:$,"current-path":R(S),onChooseDir:D},null,8,["current-path"])],64)}}}))}}}); +System.register(["./index-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./index-legacy39.js?v=1762424784323","./ResourceManagerWindow-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./file-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323"],function(e,l){"use strict";var a,n,u,t,o,s,i,c,r,f,v,d,_,p,g,y,j,w,h,k,m,x,R,L;return{setters:[e=>{a=e._},e=>{n=e._},e=>{u=e._,t=e.m},e=>{o=e.j,s=e.g},e=>{i=e.R},e=>{c=e.dR,r=e.av,f=e.au,v=e.aC},e=>{d=e.k,_=e.i,p=e.P,g=e.r,y=e.av,j=e.R,w=e.V,h=e.W,k=e.a3,m=e.S,x=e.ak,R=e.U,L=e.F},null,null,null,null,null,null,null,null],execute:function(){const l={class:"p-20px pt-28px"},b={class:"w-320px"},M={class:"w-320px"};e("default",d({__name:"SoftLink",setup(e,{expose:d}){const C=_("fileStore"),{currentPath:S}=C,{t:U}=p(),W=g(!1),$=y("resourceWindowRef"),F=g(""),P=g("");async function q(){if(!P.value||!F.value)return t.warning(U("file.softLinkModal.validation.fillRequired")),!1;await o(F.value,S.value+"/"+P.value),s(C)}function z(){$.value?.open()}function D(e){F.value=e}return d({open:function(){W.value=!0},close:function(){W.value=!1}}),(e,t)=>{const o=f,s=u,d=v,_=r,p=c,g=n,y=a;return w(),j(L,null,[h(y,{show:R(W),"onUpdate:show":t[2]||(t[2]=e=>x(W)?W.value=e:null),title:e.$t("file.softLinkModal.title"),width:520,footer:!0,onConfirm:q},{default:k(()=>[m("div",l,[h(g,null,{default:k(()=>[h(p,{label:e.$t("file.softLinkModal.sourceFile")},{default:k(()=>[m("div",b,[h(_,null,{default:k(()=>[h(o,{value:R(F),"onUpdate:value":t[0]||(t[0]=e=>x(F)?F.value=e:null),placeholder:""},null,8,["value"]),h(d,{onClick:z},{icon:k(()=>[h(s,{name:"file-dir",size:"24"})]),_:1})]),_:1})])]),_:1},8,["label"]),h(p,{label:e.$t("file.softLinkModal.softLinkName")},{default:k(()=>[m("div",M,[h(o,{value:R(P),"onUpdate:value":t[1]||(t[1]=e=>x(P)?P.value=e:null),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title"]),h(i,{ref_key:"resourceWindowRef",ref:$,"current-path":R(S),onChooseDir:D},null,8,["current-path"])],64)}}}))}}}); diff --git a/BTPanel/static/vite/js/SoftLink.js b/BTPanel/static/vite/js/SoftLink.js index ec1df572..bbbbd185 100644 --- a/BTPanel/static/vite/js/SoftLink.js +++ b/BTPanel/static/vite/js/SoftLink.js @@ -1 +1 @@ -import{_ as e}from"./index.js?v=1760428868419";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{_ as l,m as o}from"./page_layout.js?v=1760428868419";import{j as t,g as s}from"./index39.js?v=1760428868419";import{R as i}from"./ResourceManagerWindow.js?v=1760428868419";import{dR as n,av as u,au as r,aC as p}from"./naive.js?v=1760428868419";import{k as f,i as m,P as v,r as d,av as c,R as _,V as j,W as w,a3 as h,S as k,ak as x,U as R,F as g}from"./vue.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./public.js?v=1760428868419";import"./soft2.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";import"./file2.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";const L={class:"p-20px pt-28px"},b={class:"w-320px"},y={class:"w-320px"},M=f({__name:"SoftLink",setup(f,{expose:M}){const C=m("fileStore"),{currentPath:U}=C,{t:W}=v(),S=d(!1),$=c("resourceWindowRef"),F=d(""),P=d("");async function q(){if(!P.value||!F.value)return o.warning(W("file.softLinkModal.validation.fillRequired")),!1;await t(F.value,U.value+"/"+P.value),s(C)}function z(){var e;null==(e=$.value)||e.open()}function D(e){F.value=e}return M({open:function(){S.value=!0},close:function(){S.value=!1}}),(o,t)=>{const s=r,f=l,m=p,v=u,d=n,c=a,M=e;return j(),_(g,null,[w(M,{show:R(S),"onUpdate:show":t[2]||(t[2]=e=>x(S)?S.value=e:null),title:o.$t("file.softLinkModal.title"),width:520,footer:!0,onConfirm:q},{default:h(()=>[k("div",L,[w(c,null,{default:h(()=>[w(d,{label:o.$t("file.softLinkModal.sourceFile")},{default:h(()=>[k("div",b,[w(v,null,{default:h(()=>[w(s,{value:R(F),"onUpdate:value":t[0]||(t[0]=e=>x(F)?F.value=e:null),placeholder:""},null,8,["value"]),w(m,{onClick:z},{icon:h(()=>[w(f,{name:"file-dir",size:"24"})]),_:1})]),_:1})])]),_:1},8,["label"]),w(d,{label:o.$t("file.softLinkModal.softLinkName")},{default:h(()=>[k("div",y,[w(s,{value:R(P),"onUpdate:value":t[1]||(t[1]=e=>x(P)?P.value=e:null),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title"]),w(i,{ref_key:"resourceWindowRef",ref:$,"current-path":R(U),onChooseDir:D},null,8,["current-path"])],64)}}});export{M as default}; +import{_ as e}from"./index.js?v=1762424784323";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{_ as l,m as o}from"./page_layout.js?v=1762424784323";import{j as t,g as s}from"./index39.js?v=1762424784323";import{R as i}from"./ResourceManagerWindow.js?v=1762424784323";import{dR as n,av as u,au as r,aC as p}from"./naive.js?v=1762424784323";import{k as f,i as m,P as v,r as d,av as c,R as _,V as j,W as w,a3 as h,S as k,ak as x,U as R,F as g}from"./vue.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./public.js?v=1762424784323";import"./soft2.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";import"./file2.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";const L={class:"p-20px pt-28px"},b={class:"w-320px"},y={class:"w-320px"},M=f({__name:"SoftLink",setup(f,{expose:M}){const C=m("fileStore"),{currentPath:U}=C,{t:W}=v(),S=d(!1),$=c("resourceWindowRef"),F=d(""),P=d("");async function q(){if(!P.value||!F.value)return o.warning(W("file.softLinkModal.validation.fillRequired")),!1;await t(F.value,U.value+"/"+P.value),s(C)}function z(){var e;null==(e=$.value)||e.open()}function D(e){F.value=e}return M({open:function(){S.value=!0},close:function(){S.value=!1}}),(o,t)=>{const s=r,f=l,m=p,v=u,d=n,c=a,M=e;return j(),_(g,null,[w(M,{show:R(S),"onUpdate:show":t[2]||(t[2]=e=>x(S)?S.value=e:null),title:o.$t("file.softLinkModal.title"),width:520,footer:!0,onConfirm:q},{default:h(()=>[k("div",L,[w(c,null,{default:h(()=>[w(d,{label:o.$t("file.softLinkModal.sourceFile")},{default:h(()=>[k("div",b,[w(v,null,{default:h(()=>[w(s,{value:R(F),"onUpdate:value":t[0]||(t[0]=e=>x(F)?F.value=e:null),placeholder:""},null,8,["value"]),w(m,{onClick:z},{icon:h(()=>[w(f,{name:"file-dir",size:"24"})]),_:1})]),_:1})])]),_:1},8,["label"]),w(d,{label:o.$t("file.softLinkModal.softLinkName")},{default:h(()=>[k("div",y,[w(s,{value:R(P),"onUpdate:value":t[1]||(t[1]=e=>x(P)?P.value=e:null),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1})])]),_:1},8,["show","title"]),w(i,{ref_key:"resourceWindowRef",ref:$,"current-path":R(U),onChooseDir:D},null,8,["current-path"])],64)}}});export{M as default}; diff --git a/BTPanel/static/vite/js/UploadFile-legacy.js b/BTPanel/static/vite/js/UploadFile-legacy.js index ccb0180e..feee1187 100644 --- a/BTPanel/static/vite/js/UploadFile-legacy.js +++ b/BTPanel/static/vite/js/UploadFile-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./index-legacy39.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./soft-legacy2.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./file-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419"],function(e,l){"use strict";var t,a,i,s,o,n,d,r,u,p,c,f,v,m,g,x,y,h,w,b,_,k,M,j,C,$,z,S,P,F,U,I,N;return{setters:[e=>{t=e._},e=>{a=e.n,i=e._,s=e.co,o=e.m,n=e.t,d=e.p},e=>{r=e.a},e=>{u=e.u,p=e.g},e=>{c=e.k,f=e.P,v=e.i,m=e.r,g=e.W,x=e.a2,y=e.V,h=e.a3,w=e.S,b=e.a4,_=e.U,k=e.ak,M=e.c,j=e.R,C=e.j,$=e.an,z=e.F,S=e.O,P=e.I,F=e.n},e=>{U=e.dg,I=e.di,N=e.aC},null,null,null,null,null,null,null],execute:function(){var l=document.createElement("style");l.textContent='@charset "UTF-8";.modal-footer-btns[data-v-d4a59164]{display:flex;align-items:center;flex-direction:row;justify-content:end;gap:10px;padding:10px}.single-line-ellipsis[data-v-d4a59164]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.files-list-wrapper .files-tit[data-v-d4a59164],.files-list-wrapper .list-item[data-v-d4a59164]{display:flex;justify-content:flex-start;padding:14px 10px;border-bottom:1px solid var(--color-border);position:relative}.files-list-wrapper .files-tit .progress[data-v-d4a59164],.files-list-wrapper .list-item .progress[data-v-d4a59164]{position:absolute;width:0;height:100%;background:rgba(11,199,43,.1);left:0;top:0;transition:all .25s ease-in-out}.files-list-wrapper .files-tit span[data-v-d4a59164],.files-list-wrapper .list-item span[data-v-d4a59164]{box-sizing:border-box;padding-left:10px}.files-list-wrapper .files-tit .name[data-v-d4a59164],.files-list-wrapper .list-item .name[data-v-d4a59164]{flex:4}.files-list-wrapper .files-tit .size[data-v-d4a59164],.files-list-wrapper .list-item .size[data-v-d4a59164],.files-list-wrapper .files-tit .status[data-v-d4a59164],.files-list-wrapper .list-item .status[data-v-d4a59164]{flex:2;text-align:center}.files-list-wrapper .files-tit .operation[data-v-d4a59164],.files-list-wrapper .list-item .operation[data-v-d4a59164]{flex:2;text-align:right}.status-tools-wrapper[data-v-d4a59164]{box-sizing:border-box}.status-tools-wrapper .status-tools[data-v-d4a59164]{display:flex;align-items:center;flex-direction:row;justify-content:start;padding:0 20px;gap:15px;background:#dff0d8;border-radius:10px}.status-tools-wrapper .status-tools .tools-item[data-v-d4a59164]{display:flex;flex-direction:row;justify-content:start;align-items:center;gap:5px}.status-tools-wrapper .status-tools .tools-item .item-label[data-v-d4a59164],.status-tools-wrapper .status-tools .tools-item .value[data-v-d4a59164]{height:40px;line-height:40px;color:#3c763d}.file-empty[data-v-d4a59164]{display:flex;justify-content:center;align-items:center;height:440px;border:2px dashed var(--color-border);border-radius:10px;font-size:30px;color:var(--color-text-3)}\n/*$vite$:1*/',document.head.appendChild(l);const L={class:"p-20px"},R={class:"flex items-center gap-10px mb-16px"},A={class:"flex-1 w-0 text-14px"},E=c({__name:"FileConflict",props:{fileList:{}},emits:["step","confirm"],setup(e,{emit:l}){const{t:s}=f(),o=l,n=v("fileStore"),{fileConflictShow:d}=n,r=m([{title:s("file.uploadModal.conflictFileName"),key:"filename",ellipsis:{tooltip:!0}},{title:s("file.uploadModal.conflictFileDifference"),key:"difference",width:200,render:e=>g("span",null,[a(e.size)+"--\x3e"+a(e.size)])}]),u=()=>{o("step")},p=()=>{o("confirm")};return(e,l)=>{const a=i,o=U,n=t;return y(),x(n,{show:_(d),"onUpdate:show":l[0]||(l[0]=e=>k(d)?d.value=e:null),title:_(s)("file.uploadModal.conflictTitle"),width:600,footer:!0,"confirm-text":_(s)("file.uploadModal.conflictOverwrite"),"cancel-text":_(s)("file.uploadModal.conflictSkip"),onCancel:u,onConfirm:p},{default:h(()=>[w("div",L,[w("div",R,[g(a,{name:"base-warning",class:"text-warning text-30px"}),w("div",A,b(_(s)("file.uploadModal.conflictMessage")),1)]),g(o,{"max-height":400,columns:_(r),data:e.fileList},null,8,["columns","data"])])]),_:1},8,["show","title","confirm-text","cancel-text"])}}}),T={class:"p-20px"},B={key:0,class:"flex justify-between items-center mb-16px"},H={key:1,class:"status-tools-wrapper mb-16px"},O={class:"status-tools"},D={class:"tools-item"},V={class:"item-label"},W={class:"value"},q={class:"tools-item"},G={class:"item-label"},J={class:"value"},K={class:"tools-item"},Q={class:"item-label"},X={class:"value"},Y={key:0,class:"tools-item"},Z={class:"item-label"},ee={class:"value"},le={key:2,class:"files-list-wrapper"},te={class:"files-tit"},ae={class:"name"},ie={class:"size"},se={class:"status"},oe={class:"operation"},ne={class:"name"},de={class:"size"},re={class:"status"},ue={class:"operation"},pe={key:3,class:"file-empty"},ce={class:"flex justify-end gap-16px mt-20px"};e("default",d(c({__name:"UploadFile",setup(e,{expose:l}){const d=v("fileStore"),{uploadFileList:c,uploadShow:U}=d,{currentPath:L,uploadComplete:R,startUpload:A,fileConflictShow:fe}=d,ve=m([]),{t:me}=f(),ge=m({total:0,done:0,time:0,speed:0,num:0}),xe=m(),ye=m(),he=m([{key:"file",label:M(()=>me("file.uploadFile"))},{key:"dir",label:M(()=>me("file.uploadFolder"))}]);function we(e){"file"==e?be():ye.value.click()}function be(){xe.value.click()}function _e(e){const l=e.target.files;if(l){let e=!1;for(let t=0;te.file.name==l[t].name)?c.value.push({relativePath:"",file:l[t],status:0,name:l[t].name,size:l[t].size,progress:0}):e=!0;e&&o.error(me("file.uploadModal.fileAlreadyExists"),{close:!0})}xe.value.value=""}function ke(e){const l=e.target.files;if(l){let e=!1;for(let t=0;te.file.name==l[t].name)?c.value.push({relativePath:a.join("/"),file:l[t],name:l[t].name,status:0,size:l[t].size,progress:0}):e=!0}e&&o.error(me("file.uploadModal.fileAlreadyExists"),{close:!0})}ye.value.value=""}function Me(){c.value=[]}function je(e){switch(e){case 0:return me("file.uploadModal.statusNotStarted");case 1:return me("file.uploadModal.statusUploading");case 2:return me("file.uploadModal.statusCompleted");case 3:return me("file.uploadModal.statusFailed")}}async function Ce(){const e=c.value.map(e=>e.relativePath?L.value+"/"+e.relativePath+"/"+e.file.name:L.value+"/"+e.file.name),l=await async function(e){return(await n.post("/files?action=upload_files_exists",{files:e.join("\n")})).message.filter(e=>e.exists)}(e);0==l.length?await Se():(console.log(c),ve.value=l,fe.value=!0)}function $e(){fe.value=!1,async function(){c.value=c.value.filter(e=>-1==ve.value.findIndex(l=>l.filename.includes(e.file.name))),c.value.length>0?await Se():Pe()}()}function ze(){fe.value=!1,Se()}async function Se(){ge.value.total=c.value.reduce((e,l)=>e+l.file.size,0),A.value=!0;const e=function(){let e=0;const l=setInterval(()=>{e++,ge.value.time=e,ge.value.speed=ge.value.done/ge.value.time,console.log(ge.value)},1e3);return l}();for(let t=0;t{c.value[t].progress=e},e=>{isNaN(Number(e.message))||(ge.value.done=Number(e.message))}),c.value[t].status=2,ge.value.num+=1}catch(l){c.value[t].status=3,console.warn(l)}}clearInterval(e),R.value=!0,p(d),F(()=>c.value=[]),console.log("上传结束")}function Pe(){R.value=!1,A.value=!1,ge.value={total:0,done:0,speed:0,num:0,time:0},c.value=[]}l({open(){U.value=!0},close(){U.value=!1}});const Fe=()=>{if(!R.value&&c.value.length>0)return r({title:me("file.uploadModal.cancelUpload"),content:me("file.uploadModal.cancelUploadConfirm"),onConfirm(){U.value=!1}}),!1},Ue=()=>{Pe()};return(e,l)=>{const o=i,n=N,d=I,r=s,u=t;return y(),j(z,null,[g(u,{show:_(U),"onUpdate:show":l[0]||(l[0]=e=>k(U)?U.value=e:null),title:e.$t("file.uploadModal.title"),width:720,onPublicClose:Fe,onAfterLeave:Ue},{default:h(()=>[w("div",T,[w("input",{type:"file",style:{display:"none"},ref_key:"fileInputRef",ref:xe,onChange:_e,multiple:""},null,544),w("input",{type:"file",style:{display:"none"},ref_key:"dirInputRef",ref:ye,onChange:ke,webkitdirectory:"",directory:"",multiple:""},null,544),_(A)&&0!=_(c).length?(y(),j("div",H,[w("div",O,[w("div",D,[w("div",V,b(e.$t("file.uploadModal.uploadSize")),1),w("div",W,b(`${_(a)(_(ge).done)}/${_(a)(_(ge).total)}`),1)]),w("div",q,[w("div",G,b(e.$t("file.uploadModal.averageSpeed")),1),w("div",J,b(_(a)(_(ge).speed))+"/s",1)]),w("div",K,[w("div",Q,b(e.$t("file.uploadModal.uploadSuccess")),1),w("div",X,b(_(c).length)+" / "+b(_(ge).num),1)]),_(R)?(y(),j("div",Y,[w("div",Z,b(e.$t("file.uploadModal.totalTime")),1),w("div",ee,b(_(ge).time)+"s",1)])):$("",!0)])])):(y(),j("div",B,[g(d,{options:_(he),trigger:"hover",onSelect:we},{default:h(()=>[g(n,{type:"primary","icon-placement":"right",onClick:be},{icon:h(()=>[g(o,{name:"base-arrow-bottom",size:"14"})]),default:h(()=>[C(b(e.$t("file.uploadFile"))+" ",1)]),_:1})]),_:1},8,["options"]),g(n,{disabled:0==_(c).length,onClick:Me},{default:h(()=>[C(b(e.$t("Public.Btn.Clear")),1)]),_:1},8,["disabled"])])),_(c).length>0?(y(),j("div",le,[w("div",te,[w("span",ae,b(e.$t("file.uploadModal.fileName")),1),w("span",ie,b(e.$t("file.uploadModal.fileSize")),1),w("span",se,b(e.$t("file.uploadModal.uploadStatus")),1),w("span",oe,b(e.$t("file.uploadModal.operation")),1)]),g(r,{style:{height:"350px"}},{default:h(()=>[(y(!0),j(z,null,S(_(c),(l,t)=>(y(),j("div",{class:"list-item",key:t},[w("span",ne,b(l.relativePath?`${l.relativePath}/${l.file.name}`:l.file.name),1),w("span",de,b(_(a)(l.file.size)),1),w("span",re,b(je(l.status)),1),w("span",ue,[2!==l.status?(y(),x(n,{key:0,text:"",type:"primary",onClick:e=>function(e){c.value.splice(e,1)}(t)},{default:h(()=>[C(b(e.$t("Public.Btn.Cancel")),1)]),_:2},1032,["onClick"])):$("",!0)]),w("div",{class:"progress",style:P({width:`${l.progress}%`})},null,4)]))),128))]),_:1})])):(y(),j("div",pe,[w("span",null,b(e.$t("file.uploadModal.dragFilesHere")),1)])),w("div",ce,[_(A)?(y(),x(n,{key:0,type:"primary",disabled:0==_(c).length,onClick:Ce},{default:h(()=>[C(b(e.$t("file.uploadModal.continueUpload")),1)]),_:1},8,["disabled"])):(y(),x(n,{key:1,type:"primary",disabled:0==_(c).length,onClick:Ce},{default:h(()=>[C(b(e.$t("file.uploadModal.confirmUpload")),1)]),_:1},8,["disabled"]))])])]),_:1},8,["show","title"]),g(E,{"file-list":_(ve),onStep:$e,onConfirm:ze},null,8,["file-list"])],64)}}}),[["__scopeId","data-v-d4a59164"]]))}}}); +System.register(["./index-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./index-legacy39.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./file-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323"],function(e,l){"use strict";var t,a,i,s,o,n,d,f,r,u,p,c,v,m,g,x,y,h,w,b,_,k,M,j,C,$,z,S,P,F,U,I,N;return{setters:[e=>{t=e._},e=>{a=e.n,i=e._,s=e.cn,o=e.m,n=e.t,d=e.p},e=>{f=e.a},e=>{r=e.u,u=e.g},e=>{p=e.k,c=e.P,v=e.i,m=e.r,g=e.W,x=e.a2,y=e.V,h=e.a3,w=e.S,b=e.a4,_=e.U,k=e.ak,M=e.c,j=e.R,C=e.j,$=e.an,z=e.F,S=e.O,P=e.I,F=e.n},e=>{U=e.dg,I=e.di,N=e.aC},null,null,null,null,null,null,null],execute:function(){var l=document.createElement("style");l.textContent='@charset "UTF-8";.modal-footer-btns[data-v-ff54d582]{display:flex;align-items:center;flex-direction:row;justify-content:end;gap:10px;padding:10px}.single-line-ellipsis[data-v-ff54d582]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.files-list-wrapper .files-tit[data-v-ff54d582],.files-list-wrapper .list-item[data-v-ff54d582]{display:flex;justify-content:flex-start;padding:14px 10px;border-bottom:1px solid var(--color-border);position:relative}.files-list-wrapper .files-tit .progress[data-v-ff54d582],.files-list-wrapper .list-item .progress[data-v-ff54d582]{position:absolute;width:0;height:100%;background:rgba(11,199,43,.1);left:0;top:0;transition:all .25s ease-in-out}.files-list-wrapper .files-tit span[data-v-ff54d582],.files-list-wrapper .list-item span[data-v-ff54d582]{box-sizing:border-box;padding-left:10px}.files-list-wrapper .files-tit .name[data-v-ff54d582],.files-list-wrapper .list-item .name[data-v-ff54d582]{flex:4}.files-list-wrapper .files-tit .size[data-v-ff54d582],.files-list-wrapper .list-item .size[data-v-ff54d582],.files-list-wrapper .files-tit .status[data-v-ff54d582],.files-list-wrapper .list-item .status[data-v-ff54d582]{flex:2;text-align:center}.files-list-wrapper .files-tit .operation[data-v-ff54d582],.files-list-wrapper .list-item .operation[data-v-ff54d582]{flex:2;text-align:right}.status-tools-wrapper[data-v-ff54d582]{box-sizing:border-box}.status-tools-wrapper .status-tools[data-v-ff54d582]{display:flex;align-items:center;flex-direction:row;justify-content:start;padding:0 20px;gap:15px;background:#dff0d8;border-radius:10px}.status-tools-wrapper .status-tools .tools-item[data-v-ff54d582]{display:flex;flex-direction:row;justify-content:start;align-items:center;gap:5px}.status-tools-wrapper .status-tools .tools-item .item-label[data-v-ff54d582],.status-tools-wrapper .status-tools .tools-item .value[data-v-ff54d582]{height:40px;line-height:40px;color:#3c763d}.file-empty[data-v-ff54d582]{display:flex;justify-content:center;align-items:center;height:440px;border:2px dashed var(--color-border);border-radius:10px;font-size:30px;color:var(--color-text-3)}\n/*$vite$:1*/',document.head.appendChild(l);const L={class:"p-20px"},R={class:"flex items-center gap-10px mb-16px"},A={class:"flex-1 w-0 text-14px"},E=p({__name:"FileConflict",props:{fileList:{}},emits:["step","confirm"],setup(e,{emit:l}){const{t:s}=c(),o=l,n=v("fileStore"),{fileConflictShow:d}=n,f=m([{title:s("file.uploadModal.conflictFileName"),key:"filename",ellipsis:{tooltip:!0}},{title:s("file.uploadModal.conflictFileDifference"),key:"difference",width:200,render:e=>g("span",null,[a(e.size)+"--\x3e"+a(e.size)])}]),r=()=>{o("step")},u=()=>{o("confirm")};return(e,l)=>{const a=i,o=U,n=t;return y(),x(n,{show:_(d),"onUpdate:show":l[0]||(l[0]=e=>k(d)?d.value=e:null),title:_(s)("file.uploadModal.conflictTitle"),width:600,footer:!0,"confirm-text":_(s)("file.uploadModal.conflictOverwrite"),"cancel-text":_(s)("file.uploadModal.conflictSkip"),onCancel:r,onConfirm:u},{default:h(()=>[w("div",L,[w("div",R,[g(a,{name:"base-warning",class:"text-warning text-30px"}),w("div",A,b(_(s)("file.uploadModal.conflictMessage")),1)]),g(o,{"max-height":400,columns:_(f),data:e.fileList},null,8,["columns","data"])])]),_:1},8,["show","title","confirm-text","cancel-text"])}}}),T={class:"p-20px"},B={key:0,class:"flex justify-between items-center mb-16px"},H={key:1,class:"status-tools-wrapper mb-16px"},O={class:"status-tools"},D={class:"tools-item"},V={class:"item-label"},W={class:"value"},q={class:"tools-item"},G={class:"item-label"},J={class:"value"},K={class:"tools-item"},Q={class:"item-label"},X={class:"value"},Y={key:0,class:"tools-item"},Z={class:"item-label"},ee={class:"value"},le={key:2,class:"files-list-wrapper"},te={class:"files-tit"},ae={class:"name"},ie={class:"size"},se={class:"status"},oe={class:"operation"},ne={class:"name"},de={class:"size"},fe={class:"status"},re={class:"operation"},ue={key:3,class:"file-empty"},pe={class:"flex justify-end gap-16px mt-20px"};e("default",d(p({__name:"UploadFile",setup(e,{expose:l}){const d=v("fileStore"),{uploadFileList:p,uploadShow:U}=d,{currentPath:L,uploadComplete:R,startUpload:A,fileConflictShow:ce}=d,ve=m([]),{t:me}=c(),ge=m({total:0,done:0,time:0,speed:0,num:0}),xe=m(),ye=m(),he=m([{key:"file",label:M(()=>me("file.uploadFile"))},{key:"dir",label:M(()=>me("file.uploadFolder"))}]);function we(e){"file"==e?be():ye.value.click()}function be(){xe.value.click()}function _e(e){const l=e.target.files;if(l){let e=!1;for(let t=0;te.file.name==l[t].name)?p.value.push({relativePath:"",file:l[t],status:0,name:l[t].name,size:l[t].size,progress:0}):e=!0;e&&o.error(me("file.uploadModal.fileAlreadyExists"),{close:!0})}xe.value.value=""}function ke(e){const l=e.target.files;if(l){let e=!1;for(let t=0;te.file.name==l[t].name)?p.value.push({relativePath:a.join("/"),file:l[t],name:l[t].name,status:0,size:l[t].size,progress:0}):e=!0}e&&o.error(me("file.uploadModal.fileAlreadyExists"),{close:!0})}ye.value.value=""}function Me(){p.value=[]}function je(e){switch(e){case 0:return me("file.uploadModal.statusNotStarted");case 1:return me("file.uploadModal.statusUploading");case 2:return me("file.uploadModal.statusCompleted");case 3:return me("file.uploadModal.statusFailed")}}async function Ce(){const e=p.value.map(e=>e.relativePath?L.value+"/"+e.relativePath+"/"+e.file.name:L.value+"/"+e.file.name),l=await async function(e){return(await n.post("/files?action=upload_files_exists",{files:e.join("\n")})).message.filter(e=>e.exists)}(e);0==l.length?await Se():(ve.value=l,ce.value=!0)}function $e(){ce.value=!1,async function(){p.value=p.value.filter(e=>-1==ve.value.findIndex(l=>l.filename.includes(e.file.name))),p.value.length>0?await Se():Pe()}()}function ze(){ce.value=!1,Se()}async function Se(){ge.value.total=p.value.reduce((e,l)=>e+l.file.size,0),A.value=!0;const e=function(){let e=0;const l=setInterval(()=>{e++,ge.value.time=e,ge.value.speed=ge.value.done/ge.value.time,console.log(ge.value)},1e3);return l}();for(let t=0;t{p.value[t].progress=e},e=>{isNaN(Number(e.message))||(ge.value.done=Number(e.message))}),p.value[t].status=2,ge.value.num+=1}catch(l){p.value[t].status=3,console.warn(l)}}clearInterval(e),R.value=!0,u(d),F(()=>p.value=[])}function Pe(){R.value=!1,A.value=!1,ge.value={total:0,done:0,speed:0,num:0,time:0},p.value=[]}l({open(){U.value=!0},close(){U.value=!1}});const Fe=()=>{if(!R.value&&p.value.length>0)return f({title:me("file.uploadModal.cancelUpload"),content:me("file.uploadModal.cancelUploadConfirm"),onConfirm(){U.value=!1}}),!1},Ue=()=>{Pe()};return(e,l)=>{const o=i,n=N,d=I,f=s,r=t;return y(),j(z,null,[g(r,{show:_(U),"onUpdate:show":l[0]||(l[0]=e=>k(U)?U.value=e:null),title:e.$t("file.uploadModal.title"),width:720,onPublicClose:Fe,onAfterLeave:Ue},{default:h(()=>[w("div",T,[w("input",{type:"file",style:{display:"none"},ref_key:"fileInputRef",ref:xe,onChange:_e,multiple:""},null,544),w("input",{type:"file",style:{display:"none"},ref_key:"dirInputRef",ref:ye,onChange:ke,webkitdirectory:"",directory:"",multiple:""},null,544),_(A)&&0!=_(p).length?(y(),j("div",H,[w("div",O,[w("div",D,[w("div",V,b(e.$t("file.uploadModal.uploadSize")),1),w("div",W,b(`${_(a)(_(ge).done)}/${_(a)(_(ge).total)}`),1)]),w("div",q,[w("div",G,b(e.$t("file.uploadModal.averageSpeed")),1),w("div",J,b(_(a)(_(ge).speed))+"/s",1)]),w("div",K,[w("div",Q,b(e.$t("file.uploadModal.uploadSuccess")),1),w("div",X,b(_(p).length)+" / "+b(_(ge).num),1)]),_(R)?(y(),j("div",Y,[w("div",Z,b(e.$t("file.uploadModal.totalTime")),1),w("div",ee,b(_(ge).time)+"s",1)])):$("",!0)])])):(y(),j("div",B,[g(d,{options:_(he),trigger:"hover",onSelect:we},{default:h(()=>[g(n,{type:"primary","icon-placement":"right",onClick:be},{icon:h(()=>[g(o,{name:"base-arrow-bottom",size:"14"})]),default:h(()=>[C(b(e.$t("file.uploadFile"))+" ",1)]),_:1})]),_:1},8,["options"]),g(n,{disabled:0==_(p).length,onClick:Me},{default:h(()=>[C(b(e.$t("Public.Btn.Clear")),1)]),_:1},8,["disabled"])])),_(p).length>0?(y(),j("div",le,[w("div",te,[w("span",ae,b(e.$t("file.uploadModal.fileName")),1),w("span",ie,b(e.$t("file.uploadModal.fileSize")),1),w("span",se,b(e.$t("file.uploadModal.uploadStatus")),1),w("span",oe,b(e.$t("file.uploadModal.operation")),1)]),g(f,{style:{height:"350px"}},{default:h(()=>[(y(!0),j(z,null,S(_(p),(l,t)=>(y(),j("div",{class:"list-item",key:t},[w("span",ne,b(l.relativePath?`${l.relativePath}/${l.file.name}`:l.file.name),1),w("span",de,b(_(a)(l.file.size)),1),w("span",fe,b(je(l.status)),1),w("span",re,[2!==l.status?(y(),x(n,{key:0,text:"",type:"primary",onClick:e=>function(e){p.value.splice(e,1)}(t)},{default:h(()=>[C(b(e.$t("Public.Btn.Cancel")),1)]),_:2},1032,["onClick"])):$("",!0)]),w("div",{class:"progress",style:P({width:`${l.progress}%`})},null,4)]))),128))]),_:1})])):(y(),j("div",ue,[w("span",null,b(e.$t("file.uploadModal.dragFilesHere")),1)])),w("div",pe,[_(A)?(y(),x(n,{key:0,type:"primary",disabled:0==_(p).length,onClick:Ce},{default:h(()=>[C(b(e.$t("file.uploadModal.continueUpload")),1)]),_:1},8,["disabled"])):(y(),x(n,{key:1,type:"primary",disabled:0==_(p).length,onClick:Ce},{default:h(()=>[C(b(e.$t("file.uploadModal.confirmUpload")),1)]),_:1},8,["disabled"]))])])]),_:1},8,["show","title"]),g(E,{"file-list":_(ve),onStep:$e,onConfirm:ze},null,8,["file-list"])],64)}}}),[["__scopeId","data-v-ff54d582"]]))}}}); diff --git a/BTPanel/static/vite/js/UploadFile.js b/BTPanel/static/vite/js/UploadFile.js index 3c55960a..b8f280df 100644 --- a/BTPanel/static/vite/js/UploadFile.js +++ b/BTPanel/static/vite/js/UploadFile.js @@ -1 +1 @@ -import{_ as e}from"./index.js?v=1760428868419";import{n as l,_ as a,co as t,m as s,t as i,p as o}from"./page_layout.js?v=1760428868419";import{a as n}from"./public.js?v=1760428868419";import{u,g as d}from"./index39.js?v=1760428868419";import{k as c,P as p,i as f,r,W as m,a2 as v,V as h,a3 as y,S as g,a4 as x,U as _,ak as w,c as k,R as b,j as M,an as C,F as j,O as S,I as $,n as z}from"./vue.js?v=1760428868419";import{dg as P,di as F,aC as U}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./soft2.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";import"./file2.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";const I={class:"p-20px"},N={class:"flex items-center gap-10px mb-16px"},L={class:"flex-1 w-0 text-14px"},R=c({__name:"FileConflict",props:{fileList:{}},emits:["step","confirm"],setup(t,{emit:s}){const{t:i}=p(),o=s,n=f("fileStore"),{fileConflictShow:u}=n,d=r([{title:i("file.uploadModal.conflictFileName"),key:"filename",ellipsis:{tooltip:!0}},{title:i("file.uploadModal.conflictFileDifference"),key:"difference",width:200,render:e=>m("span",null,[l(e.size)+"--\x3e"+l(e.size)])}]),c=()=>{o("step")},k=()=>{o("confirm")};return(l,t)=>{const s=a,o=P,n=e;return h(),v(n,{show:_(u),"onUpdate:show":t[0]||(t[0]=e=>w(u)?u.value=e:null),title:_(i)("file.uploadModal.conflictTitle"),width:600,footer:!0,"confirm-text":_(i)("file.uploadModal.conflictOverwrite"),"cancel-text":_(i)("file.uploadModal.conflictSkip"),onCancel:c,onConfirm:k},{default:y(()=>[g("div",I,[g("div",N,[m(s,{name:"base-warning",class:"text-warning text-30px"}),g("div",L,x(_(i)("file.uploadModal.conflictMessage")),1)]),m(o,{"max-height":400,columns:_(d),data:l.fileList},null,8,["columns","data"])])]),_:1},8,["show","title","confirm-text","cancel-text"])}}}),A={class:"p-20px"},B={key:0,class:"flex justify-between items-center mb-16px"},E={key:1,class:"status-tools-wrapper mb-16px"},H={class:"status-tools"},O={class:"tools-item"},T={class:"item-label"},D={class:"value"},V={class:"tools-item"},W={class:"item-label"},q={class:"value"},G={class:"tools-item"},J={class:"item-label"},K={class:"value"},Q={key:0,class:"tools-item"},X={class:"item-label"},Y={class:"value"},Z={key:2,class:"files-list-wrapper"},ee={class:"files-tit"},le={class:"name"},ae={class:"size"},te={class:"status"},se={class:"operation"},ie={class:"name"},oe={class:"size"},ne={class:"status"},ue={class:"operation"},de={key:3,class:"file-empty"},ce={class:"flex justify-end gap-16px mt-20px"},pe=o(c({__name:"UploadFile",setup(o,{expose:c}){const P=f("fileStore"),{uploadFileList:I,uploadShow:N}=P,{currentPath:L,uploadComplete:pe,startUpload:fe,fileConflictShow:re}=P,me=r([]),{t:ve}=p(),he=r({total:0,done:0,time:0,speed:0,num:0}),ye=r(),ge=r(),xe=r([{key:"file",label:k(()=>ve("file.uploadFile"))},{key:"dir",label:k(()=>ve("file.uploadFolder"))}]);function _e(e){"file"==e?we():ge.value.click()}function we(){ye.value.click()}function ke(e){const l=e.target.files;if(l){let e=!1;for(let a=0;ae.file.name==l[a].name)?I.value.push({relativePath:"",file:l[a],status:0,name:l[a].name,size:l[a].size,progress:0}):e=!0}e&&s.error(ve("file.uploadModal.fileAlreadyExists"),{close:!0})}ye.value.value=""}function be(e){const l=e.target.files;if(l){let e=!1;for(let a=0;ae.file.name==l[a].name)?I.value.push({relativePath:t.join("/"),file:l[a],name:l[a].name,status:0,size:l[a].size,progress:0}):e=!0}e&&s.error(ve("file.uploadModal.fileAlreadyExists"),{close:!0})}ge.value.value=""}function Me(){I.value=[]}function Ce(e){switch(e){case 0:return ve("file.uploadModal.statusNotStarted");case 1:return ve("file.uploadModal.statusUploading");case 2:return ve("file.uploadModal.statusCompleted");case 3:return ve("file.uploadModal.statusFailed")}}async function je(){const e=I.value.map(e=>e.relativePath?L.value+"/"+e.relativePath+"/"+e.file.name:L.value+"/"+e.file.name),l=await async function(e){return(await i.post("/files?action=upload_files_exists",{files:e.join("\n")})).message.filter(e=>e.exists)}(e);0==l.length?await ze():(console.log(I),me.value=l,re.value=!0)}function Se(){re.value=!1,async function(){I.value=I.value.filter(e=>-1==me.value.findIndex(l=>l.filename.includes(e.file.name))),I.value.length>0?await ze():Pe()}()}function $e(){re.value=!1,ze()}async function ze(){he.value.total=I.value.reduce((e,l)=>e+l.file.size,0),fe.value=!0;const e=function(){let e=0;const l=setInterval(()=>{e++,he.value.time=e,he.value.speed=he.value.done/he.value.time,console.log(he.value)},1e3);return l}();for(let a=0;a{I.value[a].progress=e},e=>{isNaN(Number(e.message))||(he.value.done=Number(e.message))}),I.value[a].status=2,he.value.num+=1}catch(l){I.value[a].status=3,console.warn(l)}}clearInterval(e),pe.value=!0,d(P),z(()=>I.value=[]),console.log("上传结束")}function Pe(){pe.value=!1,fe.value=!1,he.value={total:0,done:0,speed:0,num:0,time:0},I.value=[]}c({open(){N.value=!0},close(){N.value=!1}});const Fe=()=>{if(!pe.value&&I.value.length>0)return n({title:ve("file.uploadModal.cancelUpload"),content:ve("file.uploadModal.cancelUploadConfirm"),onConfirm(){N.value=!1}}),!1},Ue=()=>{Pe()};return(s,i)=>{const o=a,n=U,u=F,d=t,c=e;return h(),b(j,null,[m(c,{show:_(N),"onUpdate:show":i[0]||(i[0]=e=>w(N)?N.value=e:null),title:s.$t("file.uploadModal.title"),width:720,onPublicClose:Fe,onAfterLeave:Ue},{default:y(()=>[g("div",A,[g("input",{type:"file",style:{display:"none"},ref_key:"fileInputRef",ref:ye,onChange:ke,multiple:""},null,544),g("input",{type:"file",style:{display:"none"},ref_key:"dirInputRef",ref:ge,onChange:be,webkitdirectory:"",directory:"",multiple:""},null,544),_(fe)&&0!=_(I).length?(h(),b("div",E,[g("div",H,[g("div",O,[g("div",T,x(s.$t("file.uploadModal.uploadSize")),1),g("div",D,x("".concat(_(l)(_(he).done),"/").concat(_(l)(_(he).total))),1)]),g("div",V,[g("div",W,x(s.$t("file.uploadModal.averageSpeed")),1),g("div",q,x(_(l)(_(he).speed))+"/s",1)]),g("div",G,[g("div",J,x(s.$t("file.uploadModal.uploadSuccess")),1),g("div",K,x(_(I).length)+" / "+x(_(he).num),1)]),_(pe)?(h(),b("div",Q,[g("div",X,x(s.$t("file.uploadModal.totalTime")),1),g("div",Y,x(_(he).time)+"s",1)])):C("",!0)])])):(h(),b("div",B,[m(u,{options:_(xe),trigger:"hover",onSelect:_e},{default:y(()=>[m(n,{type:"primary","icon-placement":"right",onClick:we},{icon:y(()=>[m(o,{name:"base-arrow-bottom",size:"14"})]),default:y(()=>[M(x(s.$t("file.uploadFile"))+" ",1)]),_:1})]),_:1},8,["options"]),m(n,{disabled:0==_(I).length,onClick:Me},{default:y(()=>[M(x(s.$t("Public.Btn.Clear")),1)]),_:1},8,["disabled"])])),_(I).length>0?(h(),b("div",Z,[g("div",ee,[g("span",le,x(s.$t("file.uploadModal.fileName")),1),g("span",ae,x(s.$t("file.uploadModal.fileSize")),1),g("span",te,x(s.$t("file.uploadModal.uploadStatus")),1),g("span",se,x(s.$t("file.uploadModal.operation")),1)]),m(d,{style:{height:"350px"}},{default:y(()=>[(h(!0),b(j,null,S(_(I),(e,a)=>(h(),b("div",{class:"list-item",key:a},[g("span",ie,x(e.relativePath?"".concat(e.relativePath,"/").concat(e.file.name):e.file.name),1),g("span",oe,x(_(l)(e.file.size)),1),g("span",ne,x(Ce(e.status)),1),g("span",ue,[2!==e.status?(h(),v(n,{key:0,text:"",type:"primary",onClick:e=>function(e){I.value.splice(e,1)}(a)},{default:y(()=>[M(x(s.$t("Public.Btn.Cancel")),1)]),_:2},1032,["onClick"])):C("",!0)]),g("div",{class:"progress",style:$({width:"".concat(e.progress,"%")})},null,4)]))),128))]),_:1})])):(h(),b("div",de,[g("span",null,x(s.$t("file.uploadModal.dragFilesHere")),1)])),g("div",ce,[_(fe)?(h(),v(n,{key:0,type:"primary",disabled:0==_(I).length,onClick:je},{default:y(()=>[M(x(s.$t("file.uploadModal.continueUpload")),1)]),_:1},8,["disabled"])):(h(),v(n,{key:1,type:"primary",disabled:0==_(I).length,onClick:je},{default:y(()=>[M(x(s.$t("file.uploadModal.confirmUpload")),1)]),_:1},8,["disabled"]))])])]),_:1},8,["show","title"]),m(R,{"file-list":_(me),onStep:Se,onConfirm:$e},null,8,["file-list"])],64)}}}),[["__scopeId","data-v-d4a59164"]]);export{pe as default}; +import{_ as e}from"./index.js?v=1762424784323";import{n as l,_ as a,cn as t,m as i,t as s,p as o}from"./page_layout.js?v=1762424784323";import{a as n}from"./public.js?v=1762424784323";import{u,g as d}from"./index39.js?v=1762424784323";import{k as c,P as p,i as f,r,W as m,a2 as v,V as h,a3 as y,S as g,a4 as x,U as _,ak as w,c as k,R as b,j as M,an as C,F as j,O as S,I as $,n as z}from"./vue.js?v=1762424784323";import{dg as P,di as F,aC as U}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./soft2.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";import"./file2.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";const I={class:"p-20px"},N={class:"flex items-center gap-10px mb-16px"},L={class:"flex-1 w-0 text-14px"},R=c({__name:"FileConflict",props:{fileList:{}},emits:["step","confirm"],setup(t,{emit:i}){const{t:s}=p(),o=i,n=f("fileStore"),{fileConflictShow:u}=n,d=r([{title:s("file.uploadModal.conflictFileName"),key:"filename",ellipsis:{tooltip:!0}},{title:s("file.uploadModal.conflictFileDifference"),key:"difference",width:200,render:e=>m("span",null,[l(e.size)+"--\x3e"+l(e.size)])}]),c=()=>{o("step")},k=()=>{o("confirm")};return(l,t)=>{const i=a,o=P,n=e;return h(),v(n,{show:_(u),"onUpdate:show":t[0]||(t[0]=e=>w(u)?u.value=e:null),title:_(s)("file.uploadModal.conflictTitle"),width:600,footer:!0,"confirm-text":_(s)("file.uploadModal.conflictOverwrite"),"cancel-text":_(s)("file.uploadModal.conflictSkip"),onCancel:c,onConfirm:k},{default:y(()=>[g("div",I,[g("div",N,[m(i,{name:"base-warning",class:"text-warning text-30px"}),g("div",L,x(_(s)("file.uploadModal.conflictMessage")),1)]),m(o,{"max-height":400,columns:_(d),data:l.fileList},null,8,["columns","data"])])]),_:1},8,["show","title","confirm-text","cancel-text"])}}}),A={class:"p-20px"},B={key:0,class:"flex justify-between items-center mb-16px"},E={key:1,class:"status-tools-wrapper mb-16px"},H={class:"status-tools"},O={class:"tools-item"},T={class:"item-label"},D={class:"value"},V={class:"tools-item"},W={class:"item-label"},q={class:"value"},G={class:"tools-item"},J={class:"item-label"},K={class:"value"},Q={key:0,class:"tools-item"},X={class:"item-label"},Y={class:"value"},Z={key:2,class:"files-list-wrapper"},ee={class:"files-tit"},le={class:"name"},ae={class:"size"},te={class:"status"},ie={class:"operation"},se={class:"name"},oe={class:"size"},ne={class:"status"},ue={class:"operation"},de={key:3,class:"file-empty"},ce={class:"flex justify-end gap-16px mt-20px"},pe=o(c({__name:"UploadFile",setup(o,{expose:c}){const P=f("fileStore"),{uploadFileList:I,uploadShow:N}=P,{currentPath:L,uploadComplete:pe,startUpload:fe,fileConflictShow:re}=P,me=r([]),{t:ve}=p(),he=r({total:0,done:0,time:0,speed:0,num:0}),ye=r(),ge=r(),xe=r([{key:"file",label:k(()=>ve("file.uploadFile"))},{key:"dir",label:k(()=>ve("file.uploadFolder"))}]);function _e(e){"file"==e?we():ge.value.click()}function we(){ye.value.click()}function ke(e){const l=e.target.files;if(l){let e=!1;for(let a=0;ae.file.name==l[a].name)?I.value.push({relativePath:"",file:l[a],status:0,name:l[a].name,size:l[a].size,progress:0}):e=!0}e&&i.error(ve("file.uploadModal.fileAlreadyExists"),{close:!0})}ye.value.value=""}function be(e){const l=e.target.files;if(l){let e=!1;for(let a=0;ae.file.name==l[a].name)?I.value.push({relativePath:t.join("/"),file:l[a],name:l[a].name,status:0,size:l[a].size,progress:0}):e=!0}e&&i.error(ve("file.uploadModal.fileAlreadyExists"),{close:!0})}ge.value.value=""}function Me(){I.value=[]}function Ce(e){switch(e){case 0:return ve("file.uploadModal.statusNotStarted");case 1:return ve("file.uploadModal.statusUploading");case 2:return ve("file.uploadModal.statusCompleted");case 3:return ve("file.uploadModal.statusFailed")}}async function je(){const e=I.value.map(e=>e.relativePath?L.value+"/"+e.relativePath+"/"+e.file.name:L.value+"/"+e.file.name),l=await async function(e){return(await s.post("/files?action=upload_files_exists",{files:e.join("\n")})).message.filter(e=>e.exists)}(e);0==l.length?await ze():(me.value=l,re.value=!0)}function Se(){re.value=!1,async function(){I.value=I.value.filter(e=>-1==me.value.findIndex(l=>l.filename.includes(e.file.name))),I.value.length>0?await ze():Pe()}()}function $e(){re.value=!1,ze()}async function ze(){he.value.total=I.value.reduce((e,l)=>e+l.file.size,0),fe.value=!0;const e=function(){let e=0;const l=setInterval(()=>{e++,he.value.time=e,he.value.speed=he.value.done/he.value.time,console.log(he.value)},1e3);return l}();for(let a=0;a{I.value[a].progress=e},e=>{isNaN(Number(e.message))||(he.value.done=Number(e.message))}),I.value[a].status=2,he.value.num+=1}catch(l){I.value[a].status=3,console.warn(l)}}clearInterval(e),pe.value=!0,d(P),z(()=>I.value=[])}function Pe(){pe.value=!1,fe.value=!1,he.value={total:0,done:0,speed:0,num:0,time:0},I.value=[]}c({open(){N.value=!0},close(){N.value=!1}});const Fe=()=>{if(!pe.value&&I.value.length>0)return n({title:ve("file.uploadModal.cancelUpload"),content:ve("file.uploadModal.cancelUploadConfirm"),onConfirm(){N.value=!1}}),!1},Ue=()=>{Pe()};return(i,s)=>{const o=a,n=U,u=F,d=t,c=e;return h(),b(j,null,[m(c,{show:_(N),"onUpdate:show":s[0]||(s[0]=e=>w(N)?N.value=e:null),title:i.$t("file.uploadModal.title"),width:720,onPublicClose:Fe,onAfterLeave:Ue},{default:y(()=>[g("div",A,[g("input",{type:"file",style:{display:"none"},ref_key:"fileInputRef",ref:ye,onChange:ke,multiple:""},null,544),g("input",{type:"file",style:{display:"none"},ref_key:"dirInputRef",ref:ge,onChange:be,webkitdirectory:"",directory:"",multiple:""},null,544),_(fe)&&0!=_(I).length?(h(),b("div",E,[g("div",H,[g("div",O,[g("div",T,x(i.$t("file.uploadModal.uploadSize")),1),g("div",D,x("".concat(_(l)(_(he).done),"/").concat(_(l)(_(he).total))),1)]),g("div",V,[g("div",W,x(i.$t("file.uploadModal.averageSpeed")),1),g("div",q,x(_(l)(_(he).speed))+"/s",1)]),g("div",G,[g("div",J,x(i.$t("file.uploadModal.uploadSuccess")),1),g("div",K,x(_(I).length)+" / "+x(_(he).num),1)]),_(pe)?(h(),b("div",Q,[g("div",X,x(i.$t("file.uploadModal.totalTime")),1),g("div",Y,x(_(he).time)+"s",1)])):C("",!0)])])):(h(),b("div",B,[m(u,{options:_(xe),trigger:"hover",onSelect:_e},{default:y(()=>[m(n,{type:"primary","icon-placement":"right",onClick:we},{icon:y(()=>[m(o,{name:"base-arrow-bottom",size:"14"})]),default:y(()=>[M(x(i.$t("file.uploadFile"))+" ",1)]),_:1})]),_:1},8,["options"]),m(n,{disabled:0==_(I).length,onClick:Me},{default:y(()=>[M(x(i.$t("Public.Btn.Clear")),1)]),_:1},8,["disabled"])])),_(I).length>0?(h(),b("div",Z,[g("div",ee,[g("span",le,x(i.$t("file.uploadModal.fileName")),1),g("span",ae,x(i.$t("file.uploadModal.fileSize")),1),g("span",te,x(i.$t("file.uploadModal.uploadStatus")),1),g("span",ie,x(i.$t("file.uploadModal.operation")),1)]),m(d,{style:{height:"350px"}},{default:y(()=>[(h(!0),b(j,null,S(_(I),(e,a)=>(h(),b("div",{class:"list-item",key:a},[g("span",se,x(e.relativePath?"".concat(e.relativePath,"/").concat(e.file.name):e.file.name),1),g("span",oe,x(_(l)(e.file.size)),1),g("span",ne,x(Ce(e.status)),1),g("span",ue,[2!==e.status?(h(),v(n,{key:0,text:"",type:"primary",onClick:e=>function(e){I.value.splice(e,1)}(a)},{default:y(()=>[M(x(i.$t("Public.Btn.Cancel")),1)]),_:2},1032,["onClick"])):C("",!0)]),g("div",{class:"progress",style:$({width:"".concat(e.progress,"%")})},null,4)]))),128))]),_:1})])):(h(),b("div",de,[g("span",null,x(i.$t("file.uploadModal.dragFilesHere")),1)])),g("div",ce,[_(fe)?(h(),v(n,{key:0,type:"primary",disabled:0==_(I).length,onClick:je},{default:y(()=>[M(x(i.$t("file.uploadModal.continueUpload")),1)]),_:1},8,["disabled"])):(h(),v(n,{key:1,type:"primary",disabled:0==_(I).length,onClick:je},{default:y(()=>[M(x(i.$t("file.uploadModal.confirmUpload")),1)]),_:1},8,["disabled"]))])])]),_:1},8,["show","title"]),m(R,{"file-list":_(me),onStep:Se,onConfirm:$e},null,8,["file-list"])],64)}}}),[["__scopeId","data-v-ff54d582"]]);export{pe as default}; diff --git a/BTPanel/static/vite/js/WebVulnSection-legacy.js b/BTPanel/static/vite/js/WebVulnSection-legacy.js index 176977bb..f8fff244 100644 --- a/BTPanel/static/vite/js/WebVulnSection-legacy.js +++ b/BTPanel/static/vite/js/WebVulnSection-legacy.js @@ -1 +1 @@ -System.register(["./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419"],function(e,a){"use strict";var t,i,l,n,r,d,o,s,u,p;return{setters:[e=>{t=e.k,i=e.R,l=e.V,n=e.an,r=e.S,d=e.a4,o=e.F,s=e.O,u=e.j},e=>{p=e.p},null,null,null,null],execute:function(){var a=document.createElement("style");a.textContent=".web-vuln-summary[data-v-d48867ea]{margin-bottom:30px;padding:20px;border-radius:12px;background-color:#f8f9fa;border:2px solid #e9ecef}.web-vuln-summary div[data-v-d48867ea]{font-size:18px;margin-bottom:10px;color:#333}.web-vuln-list[data-v-d48867ea]{margin-top:20px}.web-vuln-site[data-v-d48867ea]{margin-bottom:25px;padding:15px;border-radius:8px;background-color:#f8f9fa;border:1px solid #e9ecef}.web-vuln-cms[data-v-d48867ea]{margin-top:15px;padding:15px;border-radius:8px;background-color:#fff;border:1px solid #eee}.web-vuln-cms div[data-v-d48867ea]{margin-bottom:8px}.web-vuln-cms div[data-v-d48867ea]:last-child{margin-bottom:0}.pagination-note[data-v-d48867ea]{margin-top:15px;text-align:center;font-style:italic;color:#666;font-size:14px}\n/*$vite$:1*/",document.head.appendChild(a);const c={key:0,class:"web-vuln-summary"},m={class:"web-vuln-list"},v=["item"],b=["item"],g=["href"],y={key:0,class:"pagination-note"};e("default",p(t({__name:"WebVulnSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const a=e,t={1:"Low",2:"Medium",3:"High",4:"Critical",5:"Secure"};return(e,p)=>(l(),i("div",null,[a.reportData?.website_vulnerabilities?(l(),i("div",c,[r("div",null,"Website Number:"+d(a.reportData.website_vulnerabilities.site_num||0),1),r("div",null,"Vulnerability Number:"+d(a.reportData.website_vulnerabilities.loophole_num||0),1)])):n("",!0),r("div",m,[(l(!0),i(o,null,s(a.data,e=>(l(),i("div",{key:e.id,class:"web-vuln-site",item:e},[r("div",null,"Website:"+d(e.name)+"("+d(e.path)+")",1),(l(!0),i(o,null,s(e.cms,e=>{return l(),i("div",{key:e.name,class:"web-vuln-cms",item:e},[r("div",null,"Vulnerability Name:"+d(e.name),1),r("div",null,"Risk Level:"+d((a=e.dangerous,t[a])),1),r("div",null,"Description:"+d(e.ps),1),r("div",null,[p[0]||(p[0]=u("Repair Suggestion:",-1)),r("a",{href:e.repair,target:"_blank"},d(e.repair),9,g)])],8,b);var a}),128))],8,v))),128)),a.totalPages>1?(l(),i("div",y," Total "+d(a.totalPages)+" pages, current page "+d(a.pageIndex+1)+". ",1)):n("",!0)])]))}}),[["__scopeId","data-v-d48867ea"]]))}}}); +System.register(["./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323"],function(e,a){"use strict";var t,i,l,n,r,d,o,s,u,p;return{setters:[e=>{t=e.k,i=e.R,l=e.V,n=e.an,r=e.S,d=e.a4,o=e.F,s=e.O,u=e.j},e=>{p=e.p},null,null,null,null],execute:function(){var a=document.createElement("style");a.textContent=".web-vuln-summary[data-v-d48867ea]{margin-bottom:30px;padding:20px;border-radius:12px;background-color:#f8f9fa;border:2px solid #e9ecef}.web-vuln-summary div[data-v-d48867ea]{font-size:18px;margin-bottom:10px;color:#333}.web-vuln-list[data-v-d48867ea]{margin-top:20px}.web-vuln-site[data-v-d48867ea]{margin-bottom:25px;padding:15px;border-radius:8px;background-color:#f8f9fa;border:1px solid #e9ecef}.web-vuln-cms[data-v-d48867ea]{margin-top:15px;padding:15px;border-radius:8px;background-color:#fff;border:1px solid #eee}.web-vuln-cms div[data-v-d48867ea]{margin-bottom:8px}.web-vuln-cms div[data-v-d48867ea]:last-child{margin-bottom:0}.pagination-note[data-v-d48867ea]{margin-top:15px;text-align:center;font-style:italic;color:#666;font-size:14px}\n/*$vite$:1*/",document.head.appendChild(a);const c={key:0,class:"web-vuln-summary"},m={class:"web-vuln-list"},v=["item"],b=["item"],g=["href"],y={key:0,class:"pagination-note"};e("default",p(t({__name:"WebVulnSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const a=e,t={1:"Low",2:"Medium",3:"High",4:"Critical",5:"Secure"};return(e,p)=>(l(),i("div",null,[a.reportData?.website_vulnerabilities?(l(),i("div",c,[r("div",null,"Website Number:"+d(a.reportData.website_vulnerabilities.site_num||0),1),r("div",null,"Vulnerability Number:"+d(a.reportData.website_vulnerabilities.loophole_num||0),1)])):n("",!0),r("div",m,[(l(!0),i(o,null,s(a.data,e=>(l(),i("div",{key:e.id,class:"web-vuln-site",item:e},[r("div",null,"Website:"+d(e.name)+"("+d(e.path)+")",1),(l(!0),i(o,null,s(e.cms,e=>{return l(),i("div",{key:e.name,class:"web-vuln-cms",item:e},[r("div",null,"Vulnerability Name:"+d(e.name),1),r("div",null,"Risk Level:"+d((a=e.dangerous,t[a])),1),r("div",null,"Description:"+d(e.ps),1),r("div",null,[p[0]||(p[0]=u("Repair Suggestion:",-1)),r("a",{href:e.repair,target:"_blank"},d(e.repair),9,g)])],8,b);var a}),128))],8,v))),128)),a.totalPages>1?(l(),i("div",y," Total "+d(a.totalPages)+" pages, current page "+d(a.pageIndex+1)+". ",1)):n("",!0)])]))}}),[["__scopeId","data-v-d48867ea"]]))}}}); diff --git a/BTPanel/static/vite/js/WebVulnSection.js b/BTPanel/static/vite/js/WebVulnSection.js index 6ab78569..21847805 100644 --- a/BTPanel/static/vite/js/WebVulnSection.js +++ b/BTPanel/static/vite/js/WebVulnSection.js @@ -1 +1 @@ -import{k as e,R as a,V as t,an as i,S as r,a4 as l,F as s,O as n,j as u}from"./vue.js?v=1760428868419";import{p as o}from"./page_layout.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./public.js?v=1760428868419";const p={key:0,class:"web-vuln-summary"},m={class:"web-vuln-list"},d=["item"],v=["item"],b=["href"],c={key:0,class:"pagination-note"},_=o(e({__name:"WebVulnSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const o=e,_={1:"Low",2:"Medium",3:"High",4:"Critical",5:"Secure"};return(e,g)=>{var y;return t(),a("div",null,[(null==(y=o.reportData)?void 0:y.website_vulnerabilities)?(t(),a("div",p,[r("div",null,"Website Number:"+l(o.reportData.website_vulnerabilities.site_num||0),1),r("div",null,"Vulnerability Number:"+l(o.reportData.website_vulnerabilities.loophole_num||0),1)])):i("",!0),r("div",m,[(t(!0),a(s,null,n(o.data,e=>(t(),a("div",{key:e.id,class:"web-vuln-site",item:e},[r("div",null,"Website:"+l(e.name)+"("+l(e.path)+")",1),(t(!0),a(s,null,n(e.cms,e=>{return t(),a("div",{key:e.name,class:"web-vuln-cms",item:e},[r("div",null,"Vulnerability Name:"+l(e.name),1),r("div",null,"Risk Level:"+l((i=e.dangerous,_[i])),1),r("div",null,"Description:"+l(e.ps),1),r("div",null,[g[0]||(g[0]=u("Repair Suggestion:",-1)),r("a",{href:e.repair,target:"_blank"},l(e.repair),9,b)])],8,v);var i}),128))],8,d))),128)),o.totalPages>1?(t(),a("div",c," Total "+l(o.totalPages)+" pages, current page "+l(o.pageIndex+1)+". ",1)):i("",!0)])])}}}),[["__scopeId","data-v-d48867ea"]]);export{_ as default}; +import{k as e,R as a,V as t,an as i,S as r,a4 as l,F as s,O as n,j as u}from"./vue.js?v=1762424784323";import{p as o}from"./page_layout.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./public.js?v=1762424784323";const p={key:0,class:"web-vuln-summary"},m={class:"web-vuln-list"},d=["item"],v=["item"],b=["href"],c={key:0,class:"pagination-note"},_=o(e({__name:"WebVulnSection",props:{data:{type:Array,required:!0},pageIndex:{type:Number,required:!0},totalPages:{type:Number,required:!0},reportData:{type:Object,default:()=>({})}},setup(e){const o=e,_={1:"Low",2:"Medium",3:"High",4:"Critical",5:"Secure"};return(e,g)=>{var y;return t(),a("div",null,[(null==(y=o.reportData)?void 0:y.website_vulnerabilities)?(t(),a("div",p,[r("div",null,"Website Number:"+l(o.reportData.website_vulnerabilities.site_num||0),1),r("div",null,"Vulnerability Number:"+l(o.reportData.website_vulnerabilities.loophole_num||0),1)])):i("",!0),r("div",m,[(t(!0),a(s,null,n(o.data,e=>(t(),a("div",{key:e.id,class:"web-vuln-site",item:e},[r("div",null,"Website:"+l(e.name)+"("+l(e.path)+")",1),(t(!0),a(s,null,n(e.cms,e=>{return t(),a("div",{key:e.name,class:"web-vuln-cms",item:e},[r("div",null,"Vulnerability Name:"+l(e.name),1),r("div",null,"Risk Level:"+l((i=e.dangerous,_[i])),1),r("div",null,"Description:"+l(e.ps),1),r("div",null,[g[0]||(g[0]=u("Repair Suggestion:",-1)),r("a",{href:e.repair,target:"_blank"},l(e.repair),9,b)])],8,v);var i}),128))],8,d))),128)),o.totalPages>1?(t(),a("div",c," Total "+l(o.totalPages)+" pages, current page "+l(o.pageIndex+1)+". ",1)):i("",!0)])])}}}),[["__scopeId","data-v-d48867ea"]]);export{_ as default}; diff --git a/BTPanel/static/vite/js/accountState-legacy.js b/BTPanel/static/vite/js/accountState-legacy.js index 7f1c32d4..9c3e8c97 100644 --- a/BTPanel/static/vite/js/accountState-legacy.js +++ b/BTPanel/static/vite/js/accountState-legacy.js @@ -1 +1 @@ -System.register(["./vue-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./quota-legacy.js?v=1760428868419"],function(e,a){"use strict";var t,o,l,n,i,u,c,s,r,d,m,p,_,b,g,k,v,y,A,h,w,f,x,F,S,D,V,q,H,j,U,P,C,L,N,E,M,$,O,R,B,I,Y,z,T,W,Z,G,J,K,Q,X,ee,ae,te,oe,le,ne,ie,ue;return{setters:[e=>{t=e.Z,o=e.P,l=e.W,n=e.F,i=e.k,u=e.am,c=e.r,s=e.c,r=e.a2,d=e.V,m=e.a3,p=e.R,_=e.an,b=e.U,g=e.S,k=e.j,v=e.e,y=e.a0,A=e.s,h=e.o,w=e.w,f=e.u,x=e.t,F=e.l,S=e.v},e=>{D=e.d,V=e.i,q=e.a,H=e.j,j=e.f},e=>{U=e.af,P=e.d,C=e.ab,L=e.ag,N=e.n,E=e.m,M=e.ah,$=e.ai,O=e.aj,R=e.ak,B=e.i,I=e.a1,Y=e.al,z=e.S,T=e.a5,W=e._},e=>{Z=e.da,G=e.dk,J=e.aC,K=e.dj,Q=e.dW,X=e.df,ee=e.dR,ae=e._,te=e.dV,oe=e.au,le=e.dT,ne=e.dU},e=>{ie=e._},e=>{ue=e.a}],execute:function(){var a=document.createElement("style");a.textContent=".inline-item{width:100%;display:flex;align-items:center;justify-content:space-between}.inline-item .left-item{flex:1;margin-right:20px}\n/*$vite$:1*/",document.head.appendChild(a),e("b",_e);const ce=e("a",t("aapanelsub-account-store",()=>{const e=ge(),{t:a}=o(),t=async()=>{try{u(!0);const{message:a}=await U(e.search);P(a)&&(e.table.data=a.list,e.table.total=a.page.count,e.account_total=a.account_total)}finally{u(!1)}},{loading:i,setLoading:u}=D(),c=async()=>{const{message:a}=await C();P(a)&&(e.packageSourceList=a.list,e.packageList=a.list.map(e=>({label:e.package_name,value:e.package_id})),a.list.length>0&&(e.expendFormState.package_id=a.list[0].package_id,r(e.expendFormState.package_id)))},s=async()=>{const t=await L();if(P(t)){let o={};e.diskMountSourceList=t.message,e.diskMountPointList=t.message.map(e=>(e.is_default&&(o=e),{label:`${e.mountpoint} (${N(e.used)}/${N(e.total)}) ${a("Account.Account.account_533924-7")}:${e.is_group_quota?a("Account.Account.account_533924-5"):a("Account.Account.account_533924-6")}`,value:e.mountpoint})),t.message.length>0&&(e.expendFormState.mountpoint=o.mountpoint||t.message[0].mountpoint,e.currentChangeDisk=0===Object.keys(o).length?t.message[0]:o)}},r=async a=>{const t=e.packageSourceList.find(e=>e.package_id===a);if(t){const{package_name:a,disk_space_quota:o,monthly_bandwidth_limit:l,max_site_limit:n,max_database:i,php_start_children:u,php_max_children:c,remark:s}=t;e.wpForData.package_name=a,e.wpForData.disk_space_quota=0==o?{value:"",unlimited:!0}:{value:o/1024/1024,unlimited:!1},e.wpForData.monthly_bandwidth_limit=0==l?{value:"",unlimited:!0}:{value:l/1024/1024,unlimited:!1},e.wpForData.max_site_limit=0===n?{value:"",unlimited:!0}:{value:n,unlimited:!1},e.wpForData.max_database=0==i?{value:"",unlimited:!0}:{value:i,unlimited:!1},e.wpForData.php_start_children=u,e.wpForData.php_max_children=c,e.wpForData.remark=s}},d=()=>{e.acForData.username="",e.acForData.password="",e.acForData.email="",e.acForData.expire_date="0000-00-00",e.expendFormState.package_id=void 0,e.domainForData.domain="",m()},m=()=>{e.wpForData.package_name="",e.wpForData.disk_space_quota={value:"",unlimited:!1},e.wpForData.monthly_bandwidth_limit={value:"",unlimited:!1},e.wpForData.max_site_limit={value:"",unlimited:!1},e.wpForData.max_database={value:"",unlimited:!1},e.wpForData.php_start_children=1,e.wpForData.php_max_children=1,e.wpForData.remark=""};return{init:t,addHost:async()=>{if(e.table.total>=30)return E.error(a("Account.Account.account_533924-9",[30])),!1;d(),await c(),await s(),e.addVisible=!0,e.isEdit=!1},setLoading:u,loading:i,onLogin:async e=>{const{message:a}=await M({account_id:e});P(a)&&window.open(a.login_url+"?token="+a.token)},modifyStatus:async e=>{const{status:t,username:o}=e;q({title:`${a(0===t?"Site.PHP.index_21_2":"Site.PHP.index_21_3")} ${a("Account.Account.account_533924-0",[o])}`,content:a(0===t?"Account.Account.account_533924-1":"Account.Account.account_533924-2"),onConfirm:async()=>{await $({...e,status:0===t?1:0}),e.status=0===t?1:0}})},removeAccount:async e=>{q({title:a("Account.Account.account_673836-0",[e.username]),content:()=>l(n,null,[l("div",null,[a("Account.Account.account_673836-1")])]),onConfirm:async()=>{await R({account_id:e.account_id,is_del_resources:!0}),t()}})},form_save:async()=>{"yes"!==e.domainForData.website_and_email||e.isEdit||await(e.accountDomainFormRef?.validate()),await(e.accountFormRef?.validate());const{domainForData:o,isSupportAuto:l}=e;if(!l&&"yes"===e.domainForData.website_and_email&&!e.isEdit)return E.error("Your domain name does not support Create a website and email"),!1;const n=function(){const{package_id:a,mountpoint:t}=e.expendFormState,{username:o,password:l,email:n,expire_date:i,remark:u}=e.acForData,{disk_space_quota:c,monthly_bandwidth_limit:s,max_site_limit:r,max_database:d,php_start_children:m,php_max_children:p}=e.wpForData;return Object.assign({},{username:o,password:l,email:n,expire_date:i,package_id:a,mountpoint:t,disk_space_quota:c.unlimited?0:String(1024*Number(c.value)*1024),monthly_bandwidth_limit:s.unlimited?0:String(1024*Number(s.value)*1024),max_site_limit:r.unlimited?0:r.value,max_database:d.unlimited?0:d.value,php_start_children:m,php_max_children:p,remark:u})}();if(n.domain="yes"===o.website_and_email?o.domain:null,n.automatic_dns=2===o.dns_record&&"yes"===o.website_and_email?1:0,Number(n.disk_space_quota)>0&&!e.isEdit){const{is_group_quota:t,free:o}=e.currentChangeDisk;if(!t)return E.error(a("Account.Account.account_533924-3")),!1;if(o{const{url:a,user:t,pass:o}=e;V(`Access address: ${a}\nUsername: ${t}\ninit Password: ${o}`)}}})),se={key:0,class:"color-desc"},re=i({__name:"automatic",props:{domain:{}},setup(e,{expose:a}){const t=u(),o=e,n=c(),i=s(()=>n.value?.support.includes("auto")),v=()=>{t.push("/ssl_domain/domain")};return a({getParseStatus:async()=>{const{message:e}=await H({domain:o.domain});P(e)&&(n.value=e)},parseStatus:n,isSupportAuto:i}),(e,a)=>{const t=J,o=Z,u=G;return d(),r(o,null,{default:m(()=>[b(n)?_("",!0):(d(),p("span",se," *The program will use the APl to automatically add the required DNS records forthe mail server and complete the installation of the SSL certifcate. ")),b(n)?(d(),r(o,{key:1},{default:m(()=>[b(i)?(d(),r(u,{key:1,type:"success"},{default:m(()=>a[2]||(a[2]=[k(" Your domain has been connccted to the domain managementccnter, and you can use this fcature to complcte onc-click deployment. ",-1)])),_:1,__:[2]})):(d(),r(u,{key:0,type:"error"},{default:m(()=>[l(o,{class:"items-center flex-nowrap!"},{default:m(()=>[a[1]||(a[1]=g("span",null,"Your domain has not yet been integrated with the Domain Name Management Center.",-1)),l(t,{type:"primary",size:"small",ghost:"",onClick:v},{default:m(()=>a[0]||(a[0]=[k("Add Now",-1)])),_:1,__:[0]})]),_:1,__:[1]})]),_:1}))]),_:1})):_("",!0)]),_:1})}}}),de=i({props:{options:Array,modelValue:Object,rules:Object,exclude:Array},setup(e,{attrs:a,slots:t,expose:o}){const i=c(null),u=v({});return o(u),h(()=>{Object.assign(u,{validate:i.value?.validate,restoreValidation:i.value?.restoreValidation})}),()=>l(n,null,[l(Q,A(a,{model:e.modelValue,ref:i,rules:e.rules}),{default:()=>l(n,null,[e.options?.filter(a=>!e.exclude?.includes(a.key)).map(o=>function(e,a,t,o){const{label:n,key:i,type:u,options:c,el:s}=e;switch(u){case"input":case"password":return l(ee,A({label:n,path:i},t),{default:()=>[l(oe,A({value:a[i],"onUpdate:value":e=>a[i]=e},s),null)]});case"select":return l(ee,A({label:n,path:e.key},t),{default:()=>[l(te,A({options:c,value:a[i],"onUpdate:value":e=>a[i]=e},s),null)]});case"checkbox":return l(ee,A({label:n,path:e.key},t),{default:()=>[l(ae,A({checked:a[i],"onUpdate:checked":e=>a[i]=e},s),null)]});case"date-picker":return l(ee,A({label:n,path:e.key},t),{default:()=>[l(T,A({"formatted-value":a[i],"onUpdate:formatted-value":e=>a[i]=e,type:"date","value-format":"yyyy-MM-dd"},s),null)]});case"input-number":return l(ee,A({label:n,path:e.key},t),{default:()=>[l(be,A({value:a[i],"onUpdate:value":e=>a[i]=e},s),null)]});case"custom-item":return l(ee,A({label:n,path:e.key},t,{disabled:t.disabled}),{default:()=>[e.slots?.default(t)]});case"custom-slot":return l(ee,A({label:n,path:e.key},t,{disabled:t.disabled}),{default:()=>[o&&o[e.key]?.()]})}}(o,e.modelValue,a,t))])})])}});function me(){const e=[{type:"input",label:B.global.t("Account.Account.FormHooks-122755-1"),key:"username",el:{disabled:!0}},{type:"custom-slot",label:B.global.t("Account.Account.FormHooks-122755-2"),key:"password"},{type:"input",label:B.global.t("Account.Account.FormHooks-122755-4"),key:"email"},{type:"custom-slot",label:B.global.t("Account.Account.FormHooks-122755-5"),key:"expire_date"},{type:"input",label:B.global.t("Account.Account.FormHooks-122755-14"),key:"remark"}],a=v({username:"",password:"",email:"",expire_date:"0000-00-00",remark:""}),t=v({username:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-7"),trigger:"blur"}],password:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-8"),trigger:"blur"}],email:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-10"),trigger:"blur"}]});return[i({props:{isEdit:Boolean},setup(o,{attrs:n,expose:i,slots:u}){const s=c(),r=v({});return i(r),h(()=>{Object.assign(r,{validate:s.value?.validate,restoreValidation:s.value?.restoreValidation})}),o.isEdit?(e[0].el.disabled=!0,t.password[0].required=!1):(e[0].el.disabled=!1,t.password[0].required=!0),()=>{return l(de,A({options:e,modelValue:a,"onUpdate:modelValue":e=>a=e,"label-placement":"left","label-width":"130px"},n,{rules:t,ref:s}),"function"==typeof(o=u)||"[object Object]"===Object.prototype.toString.call(o)&&!f(o)?u:{default:()=>[u]});var o}}}),a]}const pe=i({props:{modelValue:Object},setup(e,{attrs:a}){const t=v({value:e.modelValue?.value?e.modelValue?.value:0,unlimited:!!e.modelValue?.unlimited&&e.modelValue?.unlimited});return w(t,a=>{e.modelValue.value=a.value,e.modelValue.unlimited=a.unlimited}),()=>l("div",{class:"inline-item"},[l("div",{class:"left-item"},[l(be,{value:t.value,"onUpdate:value":e=>t.value=e,disabled:e.modelValue?.unlimited||a.disabled},null)]),l("div",{class:"right-item"},[l(K,{value:t.unlimited,"onUpdate:value":e=>t.unlimited=e,disabled:a.disabled},{checked:()=>B.global.t("Account.Account.FormHooks-122755-12"),unchecked:()=>B.global.t("Account.Account.FormHooks-122755-12")})])])}});function _e(){const e=[{type:"input",label:B.global.t("Account.Account.FormHooks-122755-13"),key:"package_name"},{type:"input",label:B.global.t("Account.Account.FormHooks-122755-14"),key:"remark"},{type:"custom-item",label:B.global.t("Account.Account.FormHooks-122755-15"),key:"disk_space_quota",slots:{default:e=>l(pe,A({modelValue:a.disk_space_quota,"onUpdate:modelValue":e=>a.disk_space_quota=e},e),null)}},{type:"custom-item",label:B.global.t("Account.Account.FormHooks-122755-16"),key:"monthly_bandwidth_limit",slots:{default:e=>l(pe,A({modelValue:a.monthly_bandwidth_limit,"onUpdate:modelValue":e=>a.monthly_bandwidth_limit=e},e),null)}},{type:"custom-item",label:B.global.t("Account.Account.FormHooks-122755-17"),key:"max_site_limit",slots:{default:e=>l(pe,A({modelValue:a.max_site_limit,"onUpdate:modelValue":e=>a.max_site_limit=e},e),null)}},{type:"input-number",label:B.global.t("Account.Account.FormHooks-122755-18"),key:"php_start_children"},{type:"input-number",label:B.global.t("Account.Account.FormHooks-122755-19"),key:"php_max_children"},{type:"custom-item",label:B.global.t("Account.Account.FormHooks-122755-21"),key:"max_database",slots:{default:e=>l(pe,A({modelValue:a.max_database,"onUpdate:modelValue":e=>a.max_database=e},e),null)}}],a=v({package_name:"",remark:"",disk_space_quota:{value:0,unlimited:!0},monthly_bandwidth_limit:{value:0,unlimited:!0},max_site_limit:{value:0,unlimited:!0},php_start_children:1,php_max_children:3,max_email_account:{value:1,unlimited:!1},max_database:{value:0,unlimited:!0}}),t=v({package_name:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-22"),trigger:"blur"}],disk_space_quota:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-24"),trigger:"blur",validator:(e,a)=>!!a.unlimited||!!(a.value&&a.value>0)}],monthly_bandwidth_limit:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-25"),trigger:"blur",validator:(e,a)=>!!a.unlimited||!!(a.value&&a.value>0)}],max_site_limit:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-26"),trigger:"blur",validator:(e,a)=>!!a.unlimited||!!(a.value&&a.value>0)}],php_start_children:[{required:!0,validator:(e,a)=>!!a||new Error(B.global.t("Account.Account.FormHooks-122755-27"))}],php_max_children:[{required:!0,validator:(e,a)=>a>0||new Error(B.global.t("Account.Account.FormHooks-122755-28"))}],max_email_account:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-29"),trigger:"blur",validator:(e,a)=>!!a.unlimited||!!(a.value&&a.value>0)}],max_database:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-30"),trigger:"blur",validator:(e,a)=>!!a.unlimited||!!(a.value&&a.value>0)}]}),o=c();return[i({props:{isDisable:Boolean,exclude:Array},setup(i,{expose:u}){const s=v({}),r=c(!1);return u(s),h(()=>{Object.assign(s,{validate:o.value?.validate,restoreValidation:o.value?.restoreValidation})}),w(i,e=>{"isDisable"in e&&(r.value=e.isDisable)},{immediate:!0}),()=>l(n,null,[l(de,{exclude:i.exclude,options:e,modelValue:a,"onUpdate:modelValue":e=>a=e,"label-placement":"left","label-width":"130px",rules:t,ref:o,disabled:r.value},null)])}}),a]}const be=i({props:{value:Number},emits:["update:value"],setup(e,{emit:a,attrs:t}){const o=x(e,"value"),n=c(e.value);function i(e){isNaN(Number(e))?(n.value=0,a("update:value",1)):(n.value=Math.round(e),a("update:value",Number(Math.floor(e))))}return w(o,e=>{n.value=e}),()=>l(X,A(t,{value:n.value,clearable:!0,"onUpdate:value":i,min:1}),null)}}),ge=e("u",t("account-state-store",()=>{const e=ce(),{t:a}=o(),t=c(!1),n=c(!1),u=c(null),r=c(null),d=c(30),m=v({data:[],total:0,loading:!1}),p=c([{title:a("Account.Account.accountState-721844-0"),key:"username",width:130,render:a=>l("span",{class:"text-primary cursor-pointer",onClick:()=>e.onLogin(a.account_id)},[a.username])},{title:a("Account.Account.accountState-721844-1"),key:"package_name",width:100},{title:a("Account.Account.accountState-721844-2"),key:"email"},{title:a("Account.Account.accountState-721844-20"),key:"login_info",width:80,render:t=>l("span",{class:"text-primary cursor-pointer",onClick:()=>e.copyInfo({url:t.login_url,user:t.username,pass:t.init_password})},[a("Public.Btn.Copy")])},{key:"quota",title:a("Account.Account.accountState-721844-3"),render:e=>l("span",{class:0===e.disk_space_status?"text-error":""},[0===e.disk_space_used&&0===e.disk_space_quota?"-":N(e.disk_space_used,!0,0),k(" /")," ",0===e.disk_space_quota?l("img",{class:"icon",title:"",src:ue},null):N(e.disk_space_quota,!0,0)])},{key:"bandwidth",title:a("Account.Account.accountState-721844-7"),render:e=>l("span",{class:0===e.monthly_bandwidth_status?"text-error":""},[N(e.monthly_bandwidth_used,!0,2),k(" /")," ",0===e.monthly_bandwidth_limit?l("img",{class:"icon",title:"",src:ue},null):N(e.monthly_bandwidth_limit,!0,0)])},{title:a("Account.Account.accountState-721844-8"),key:"status",width:68,render:t=>{const o=new Map([[-1,a("Account.Account.accountState-721844-9")],[0,a("Account.Account.accountState-721844-10")],[1,a("Account.Account.accountState-721844-11")],[2,a("Account.Account.accountState-721844-12")]]);return l("span",{onClick:()=>e.modifyStatus(t),class:"cursor-pointer "+(1===t.status||-1===t.status?"text-primary":"text-error")},[o.get(t.status)])}},{title:a("Account.Account.accountState-721844-13"),key:"expire_date",width:106,render:e=>"0000-00-00"===e.expire_date?a("Account.Account.account_index_10"):e.expire_date},{title:a("Account.Account.accountState-721844-14"),key:"remark",render:e=>e.remark?e.remark:"--"},j({title:a("Public.Table.Action"),align:"right",width:200,options:o=>[{label:a("Account.Account.accountState-721844-15"),onClick:async()=>{e.onLogin(o.account_id)}},{label:a("Account.Account.accountState-721844-16"),onClick:async()=>{await e.getPackageList(),await e.getDiskList(),g.value=Number(o.account_id),n.value=!0,V.username=o.username,V.password="",V.email=o.email,V.expire_date=o.expire_date,V.remark=o.remark,P.value.package_id=Number(o.package_id),P.value.mountpoint=o.mountpoint,e.changePackage(o.package_id),H.domain=o.domain,t.value=!0}},{label:a("Account.Account.accountState-721844-17"),onClick:async()=>{e.removeAccount(o)}}]})]),_=c([]),b=v({p:1,rows:10,type_id:-1,search_value:""}),g=c(null),A=c([]),w=c([]),f=c([]),x=c([]),[D,V]=me(),[q,H,U]=function(){const{isUserAutoMatic:e,isExistWhite:a}=y(I()),t=Y(),o=c(!1),n=v({website_and_email:"yes",domain:"",dns_record:2}),u=c(""),r=v({domain:[{required:!0,message:B.global.t("SSL.index_21"),trigger:"blur"}]}),d=c(),m=()=>{""!==n.domain.trim()?u.value!==n.domain&&(d.value?.getParseStatus(),u.value=n.domain):u.value=""},p=s(()=>d.value?.isSupportAuto);return[i({props:{isEdit:Boolean},setup(i,{expose:u}){const s=c(),p=v({});return u(p),h(()=>{(async()=>{try{o.value=!0,await t.getMailInfo(),t.install&&e.value&&a.value||(n.website_and_email="no")}finally{o.value=!1}})(),Object.assign(p,{validate:s.value?.validate,restoreValidation:s.value?.restoreValidation})}),()=>l(z,{show:o.value},{default:()=>[F(l(ie,{ref:s,model:n,rules:r},{default:()=>[l(ee,{label:"Create a website and email"},{default:()=>[l(le,{class:"w-150px",value:n.website_and_email,onUpdateValue:e=>n.website_and_email=e,"onUpdate:value":m,disabled:!e.value||!t.install||!a.value},{default:()=>[l(ne,{value:"yes"},{default:()=>[k("Yes")]}),l(ne,{value:"no"},{default:()=>[k("No")]})]}),F(l(G,{"show-icon":!1},{default:()=>[l("div",{class:"flex items-center"},[l(W,{name:"base-info",size:17,class:"mr-8px"},null),l("span",{class:"leading-17px"},[t.install&&e.value?"API not enabled or 127.0.0.1 not added to the API whitelist":"Current Mail Server is not installed or sub-panel version is lower than 1.0.9"])])]}),[[S,!t.install||!e.value||!a.value]])]}),F(l(ee,{label:"Domain",path:"domain"},{default:()=>[l(oe,{value:n.domain,onUpdateValue:e=>n.domain=e,onBlur:m},null)]}),[[S,"yes"===n.website_and_email]]),F(l(ee,{label:"DNS record"},{default:()=>[l(le,{value:n.dns_record,onUpdateValue:e=>{n.dns_record=e,m()}},{default:()=>[l(ne,{value:2},{default:()=>[l("div",{class:"flex h-15px items-center mr-16px"},[l("div",null,[k("Automatic")]),l(W,{name:"ssl-stars",size:22},null)])]}),l(ne,{value:1},{default:()=>[k("Manual")]})]})]}),[[S,"yes"===n.website_and_email]]),F(l(ee,{label:" "},{default:()=>[l(re,{ref:d,domain:n.domain},null)]}),[[S,"yes"===n.website_and_email]])]}),[[S,!i.isEdit]]),F(l(ie,null,{default:()=>[F(l(ee,{label:"Domain"},{default:()=>[l(oe,{value:n.domain,disabled:!0},null)]}),[[S,n.domain]])]}),[[S,i.isEdit]])]})}}),n,p]}(),P=c({package_id:-1,mountpoint:""}),C=c(),[L,E]=_e();return{addVisible:t,search:b,table:m,columns:p,keys:_,isEdit:n,accountFormRef:u,accountDomainFormRef:r,account_total:d,acForData:V,domainForData:H,expendFormState:P,wpForData:E,packageList:A,packageSourceList:w,diskMountPointList:f,diskMountSourceList:x,current_account_id:g,currentChangeDisk:C,initAccountForm:()=>D,initPackageForm:()=>L,initDomainForm:()=>q,isSupportAuto:U}}))}}}); +System.register(["./vue-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./quota-legacy.js?v=1762424784323"],function(e,a){"use strict";var t,o,l,n,i,u,c,s,r,d,m,p,_,b,g,k,v,y,A,h,w,f,x,F,S,D,V,q,H,j,U,P,C,L,N,E,M,$,O,R,B,I,Y,z,T,W,Z,G,J,K,Q,X,ee,ae,te,oe,le,ne,ie,ue;return{setters:[e=>{t=e.Z,o=e.P,l=e.W,n=e.F,i=e.k,u=e.am,c=e.r,s=e.c,r=e.a2,d=e.V,m=e.a3,p=e.R,_=e.an,b=e.U,g=e.S,k=e.j,v=e.e,y=e.a0,A=e.s,h=e.o,w=e.w,f=e.u,x=e.t,F=e.l,S=e.v},e=>{D=e.d,V=e.i,q=e.a,H=e.j,j=e.f},e=>{U=e.af,P=e.d,C=e.ab,L=e.ag,N=e.n,E=e.m,M=e.ah,$=e.ai,O=e.aj,R=e.ak,B=e.i,I=e.a1,Y=e.al,z=e.S,T=e.a5,W=e._},e=>{Z=e.da,G=e.dk,J=e.aC,K=e.dj,Q=e.dW,X=e.df,ee=e.dR,ae=e._,te=e.dV,oe=e.au,le=e.dT,ne=e.dU},e=>{ie=e._},e=>{ue=e.a}],execute:function(){var a=document.createElement("style");a.textContent=".inline-item{width:100%;display:flex;align-items:center;justify-content:space-between}.inline-item .left-item{flex:1;margin-right:20px}\n/*$vite$:1*/",document.head.appendChild(a),e("b",_e);const ce=e("a",t("aapanelsub-account-store",()=>{const e=ge(),{t:a}=o(),t=async()=>{try{u(!0);const{message:a}=await U(e.search);P(a)&&(e.table.data=a.list,e.table.total=a.page.count,e.account_total=a.account_total)}finally{u(!1)}},{loading:i,setLoading:u}=D(),c=async()=>{const{message:a}=await C();P(a)&&(e.packageSourceList=a.list,e.packageList=a.list.map(e=>({label:e.package_name,value:e.package_id})),a.list.length>0&&(e.expendFormState.package_id=a.list[0].package_id,r(e.expendFormState.package_id)))},s=async()=>{const t=await L();if(P(t)){let o={};e.diskMountSourceList=t.message,e.diskMountPointList=t.message.map(e=>(e.is_default&&(o=e),{label:`${e.mountpoint} (${N(e.used)}/${N(e.total)}) ${a("Account.Account.account_533924-7")}:${e.is_group_quota?a("Account.Account.account_533924-5"):a("Account.Account.account_533924-6")}`,value:e.mountpoint})),t.message.length>0&&(e.expendFormState.mountpoint=o.mountpoint||t.message[0].mountpoint,e.currentChangeDisk=0===Object.keys(o).length?t.message[0]:o)}},r=async a=>{const t=e.packageSourceList.find(e=>e.package_id===a);if(t){const{package_name:a,disk_space_quota:o,monthly_bandwidth_limit:l,max_site_limit:n,max_database:i,php_start_children:u,php_max_children:c,remark:s}=t;e.wpForData.package_name=a,e.wpForData.disk_space_quota=0==o?{value:"",unlimited:!0}:{value:o/1024/1024,unlimited:!1},e.wpForData.monthly_bandwidth_limit=0==l?{value:"",unlimited:!0}:{value:l/1024/1024,unlimited:!1},e.wpForData.max_site_limit=0===n?{value:"",unlimited:!0}:{value:n,unlimited:!1},e.wpForData.max_database=0==i?{value:"",unlimited:!0}:{value:i,unlimited:!1},e.wpForData.php_start_children=u,e.wpForData.php_max_children=c,e.wpForData.remark=s}},d=()=>{e.acForData.username="",e.acForData.password="",e.acForData.email="",e.acForData.expire_date="0000-00-00",e.expendFormState.package_id=void 0,e.domainForData.domain="",m()},m=()=>{e.wpForData.package_name="",e.wpForData.disk_space_quota={value:"",unlimited:!1},e.wpForData.monthly_bandwidth_limit={value:"",unlimited:!1},e.wpForData.max_site_limit={value:"",unlimited:!1},e.wpForData.max_database={value:"",unlimited:!1},e.wpForData.php_start_children=1,e.wpForData.php_max_children=1,e.wpForData.remark=""};return{init:t,addHost:async()=>{if(e.table.total>=30)return E.error(a("Account.Account.account_533924-9",[30])),!1;d(),await c(),await s(),e.addVisible=!0,e.isEdit=!1},setLoading:u,loading:i,onLogin:async e=>{const{message:a}=await M({account_id:e});P(a)&&window.open(a.login_url+"?token="+a.token)},modifyStatus:async e=>{const{status:t,username:o}=e;q({title:`${a(0===t?"Site.PHP.index_21_2":"Site.PHP.index_21_3")} ${a("Account.Account.account_533924-0",[o])}`,content:a(0===t?"Account.Account.account_533924-1":"Account.Account.account_533924-2"),onConfirm:async()=>{await $({...e,status:0===t?1:0}),e.status=0===t?1:0}})},removeAccount:async e=>{q({title:a("Account.Account.account_673836-0",[e.username]),content:()=>l(n,null,[l("div",null,[a("Account.Account.account_673836-1")])]),onConfirm:async()=>{await R({account_id:e.account_id,is_del_resources:!0}),t()}})},form_save:async()=>{"yes"!==e.domainForData.website_and_email||e.isEdit||await(e.accountDomainFormRef?.validate()),await(e.accountFormRef?.validate());const{domainForData:o,isSupportAuto:l}=e;if(!l&&"yes"===e.domainForData.website_and_email&&!e.isEdit)return E.error("Your domain name does not support Create a website and email"),!1;const n=function(){const{package_id:a,mountpoint:t}=e.expendFormState,{username:o,password:l,email:n,expire_date:i,remark:u}=e.acForData,{disk_space_quota:c,monthly_bandwidth_limit:s,max_site_limit:r,max_database:d,php_start_children:m,php_max_children:p}=e.wpForData;return Object.assign({},{username:o,password:l,email:n,expire_date:i,package_id:a,mountpoint:t,disk_space_quota:c.unlimited?0:String(1024*Number(c.value)*1024),monthly_bandwidth_limit:s.unlimited?0:String(1024*Number(s.value)*1024),max_site_limit:r.unlimited?0:r.value,max_database:d.unlimited?0:d.value,php_start_children:m,php_max_children:p,remark:u})}();if(n.domain="yes"===o.website_and_email?o.domain:null,n.automatic_dns=2===o.dns_record&&"yes"===o.website_and_email?1:0,Number(n.disk_space_quota)>0&&!e.isEdit){const{is_group_quota:t,free:o}=e.currentChangeDisk;if(!t)return E.error(a("Account.Account.account_533924-3")),!1;if(o{const{url:a,user:t,pass:o}=e;V(`Access address: ${a}\nUsername: ${t}\ninit Password: ${o}`)}}})),se={key:0,class:"color-desc"},re=i({__name:"automatic",props:{domain:{}},setup(e,{expose:a}){const t=u(),o=e,n=c(),i=s(()=>n.value?.support.includes("auto")),v=()=>{t.push("/ssl_domain/domain")};return a({getParseStatus:async()=>{const{message:e}=await H({domain:o.domain});P(e)&&(n.value=e)},parseStatus:n,isSupportAuto:i}),(e,a)=>{const t=J,o=Z,u=G;return d(),r(o,null,{default:m(()=>[b(n)?_("",!0):(d(),p("span",se," *The program will use the APl to automatically add the required DNS records forthe mail server and complete the installation of the SSL certifcate. ")),b(n)?(d(),r(o,{key:1},{default:m(()=>[b(i)?(d(),r(u,{key:1,type:"success"},{default:m(()=>a[2]||(a[2]=[k(" Your domain has been connccted to the domain managementccnter, and you can use this fcature to complcte onc-click deployment. ",-1)])),_:1,__:[2]})):(d(),r(u,{key:0,type:"error"},{default:m(()=>[l(o,{class:"items-center flex-nowrap!"},{default:m(()=>[a[1]||(a[1]=g("span",null,"Your domain has not yet been integrated with the Domain Name Management Center.",-1)),l(t,{type:"primary",size:"small",ghost:"",onClick:v},{default:m(()=>a[0]||(a[0]=[k("Add Now",-1)])),_:1,__:[0]})]),_:1,__:[1]})]),_:1}))]),_:1})):_("",!0)]),_:1})}}}),de=i({props:{options:Array,modelValue:Object,rules:Object,exclude:Array},setup(e,{attrs:a,slots:t,expose:o}){const i=c(null),u=v({});return o(u),h(()=>{Object.assign(u,{validate:i.value?.validate,restoreValidation:i.value?.restoreValidation})}),()=>l(n,null,[l(Q,A(a,{model:e.modelValue,ref:i,rules:e.rules}),{default:()=>l(n,null,[e.options?.filter(a=>!e.exclude?.includes(a.key)).map(o=>function(e,a,t,o){const{label:n,key:i,type:u,options:c,el:s}=e;switch(u){case"input":case"password":return l(ee,A({label:n,path:i},t),{default:()=>[l(oe,A({value:a[i],"onUpdate:value":e=>a[i]=e},s),null)]});case"select":return l(ee,A({label:n,path:e.key},t),{default:()=>[l(te,A({options:c,value:a[i],"onUpdate:value":e=>a[i]=e},s),null)]});case"checkbox":return l(ee,A({label:n,path:e.key},t),{default:()=>[l(ae,A({checked:a[i],"onUpdate:checked":e=>a[i]=e},s),null)]});case"date-picker":return l(ee,A({label:n,path:e.key},t),{default:()=>[l(T,A({"formatted-value":a[i],"onUpdate:formatted-value":e=>a[i]=e,type:"date","value-format":"yyyy-MM-dd"},s),null)]});case"input-number":return l(ee,A({label:n,path:e.key},t),{default:()=>[l(be,A({value:a[i],"onUpdate:value":e=>a[i]=e},s),null)]});case"custom-item":return l(ee,A({label:n,path:e.key},t,{disabled:t.disabled}),{default:()=>[e.slots?.default(t)]});case"custom-slot":return l(ee,A({label:n,path:e.key},t,{disabled:t.disabled}),{default:()=>[o&&o[e.key]?.()]})}}(o,e.modelValue,a,t))])})])}});function me(){const e=[{type:"input",label:B.global.t("Account.Account.FormHooks-122755-1"),key:"username",el:{disabled:!0}},{type:"custom-slot",label:B.global.t("Account.Account.FormHooks-122755-2"),key:"password"},{type:"input",label:B.global.t("Account.Account.FormHooks-122755-4"),key:"email"},{type:"custom-slot",label:B.global.t("Account.Account.FormHooks-122755-5"),key:"expire_date"},{type:"input",label:B.global.t("Account.Account.FormHooks-122755-14"),key:"remark"}],a=v({username:"",password:"",email:"",expire_date:"0000-00-00",remark:""}),t=v({username:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-7"),trigger:"blur"}],password:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-8"),trigger:"blur"}],email:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-10"),trigger:"blur"}]});return[i({props:{isEdit:Boolean},setup(o,{attrs:n,expose:i,slots:u}){const s=c(),r=v({});return i(r),h(()=>{Object.assign(r,{validate:s.value?.validate,restoreValidation:s.value?.restoreValidation})}),o.isEdit?(e[0].el.disabled=!0,t.password[0].required=!1):(e[0].el.disabled=!1,t.password[0].required=!0),()=>{return l(de,A({options:e,modelValue:a,"onUpdate:modelValue":e=>a=e,"label-placement":"left","label-width":"130px"},n,{rules:t,ref:s}),"function"==typeof(o=u)||"[object Object]"===Object.prototype.toString.call(o)&&!f(o)?u:{default:()=>[u]});var o}}}),a]}const pe=i({props:{modelValue:Object},setup(e,{attrs:a}){const t=v({value:e.modelValue?.value?e.modelValue?.value:0,unlimited:!!e.modelValue?.unlimited&&e.modelValue?.unlimited});return w(t,a=>{e.modelValue.value=a.value,e.modelValue.unlimited=a.unlimited}),()=>l("div",{class:"inline-item"},[l("div",{class:"left-item"},[l(be,{value:t.value,"onUpdate:value":e=>t.value=e,disabled:e.modelValue?.unlimited||a.disabled},null)]),l("div",{class:"right-item"},[l(K,{value:t.unlimited,"onUpdate:value":e=>t.unlimited=e,disabled:a.disabled},{checked:()=>B.global.t("Account.Account.FormHooks-122755-12"),unchecked:()=>B.global.t("Account.Account.FormHooks-122755-12")})])])}});function _e(){const e=[{type:"input",label:B.global.t("Account.Account.FormHooks-122755-13"),key:"package_name"},{type:"input",label:B.global.t("Account.Account.FormHooks-122755-14"),key:"remark"},{type:"custom-item",label:B.global.t("Account.Account.FormHooks-122755-15"),key:"disk_space_quota",slots:{default:e=>l(pe,A({modelValue:a.disk_space_quota,"onUpdate:modelValue":e=>a.disk_space_quota=e},e),null)}},{type:"custom-item",label:B.global.t("Account.Account.FormHooks-122755-16"),key:"monthly_bandwidth_limit",slots:{default:e=>l(pe,A({modelValue:a.monthly_bandwidth_limit,"onUpdate:modelValue":e=>a.monthly_bandwidth_limit=e},e),null)}},{type:"custom-item",label:B.global.t("Account.Account.FormHooks-122755-17"),key:"max_site_limit",slots:{default:e=>l(pe,A({modelValue:a.max_site_limit,"onUpdate:modelValue":e=>a.max_site_limit=e},e),null)}},{type:"input-number",label:B.global.t("Account.Account.FormHooks-122755-18"),key:"php_start_children"},{type:"input-number",label:B.global.t("Account.Account.FormHooks-122755-19"),key:"php_max_children"},{type:"custom-item",label:B.global.t("Account.Account.FormHooks-122755-21"),key:"max_database",slots:{default:e=>l(pe,A({modelValue:a.max_database,"onUpdate:modelValue":e=>a.max_database=e},e),null)}}],a=v({package_name:"",remark:"",disk_space_quota:{value:0,unlimited:!0},monthly_bandwidth_limit:{value:0,unlimited:!0},max_site_limit:{value:0,unlimited:!0},php_start_children:1,php_max_children:3,max_email_account:{value:1,unlimited:!1},max_database:{value:0,unlimited:!0}}),t=v({package_name:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-22"),trigger:"blur"}],disk_space_quota:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-24"),trigger:"blur",validator:(e,a)=>!!a.unlimited||!!(a.value&&a.value>0)}],monthly_bandwidth_limit:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-25"),trigger:"blur",validator:(e,a)=>!!a.unlimited||!!(a.value&&a.value>0)}],max_site_limit:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-26"),trigger:"blur",validator:(e,a)=>!!a.unlimited||!!(a.value&&a.value>0)}],php_start_children:[{required:!0,validator:(e,a)=>!!a||new Error(B.global.t("Account.Account.FormHooks-122755-27"))}],php_max_children:[{required:!0,validator:(e,a)=>a>0||new Error(B.global.t("Account.Account.FormHooks-122755-28"))}],max_email_account:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-29"),trigger:"blur",validator:(e,a)=>!!a.unlimited||!!(a.value&&a.value>0)}],max_database:[{required:!0,message:B.global.t("Account.Account.FormHooks-122755-30"),trigger:"blur",validator:(e,a)=>!!a.unlimited||!!(a.value&&a.value>0)}]}),o=c();return[i({props:{isDisable:Boolean,exclude:Array},setup(i,{expose:u}){const s=v({}),r=c(!1);return u(s),h(()=>{Object.assign(s,{validate:o.value?.validate,restoreValidation:o.value?.restoreValidation})}),w(i,e=>{"isDisable"in e&&(r.value=e.isDisable)},{immediate:!0}),()=>l(n,null,[l(de,{exclude:i.exclude,options:e,modelValue:a,"onUpdate:modelValue":e=>a=e,"label-placement":"left","label-width":"130px",rules:t,ref:o,disabled:r.value},null)])}}),a]}const be=i({props:{value:Number},emits:["update:value"],setup(e,{emit:a,attrs:t}){const o=x(e,"value"),n=c(e.value);function i(e){isNaN(Number(e))?(n.value=0,a("update:value",1)):(n.value=Math.round(e),a("update:value",Number(Math.floor(e))))}return w(o,e=>{n.value=e}),()=>l(X,A(t,{value:n.value,clearable:!0,"onUpdate:value":i,min:1}),null)}}),ge=e("u",t("account-state-store",()=>{const e=ce(),{t:a}=o(),t=c(!1),n=c(!1),u=c(null),r=c(null),d=c(30),m=v({data:[],total:0,loading:!1}),p=c([{title:a("Account.Account.accountState-721844-0"),key:"username",width:130,render:a=>l("span",{class:"text-primary cursor-pointer",onClick:()=>e.onLogin(a.account_id)},[a.username])},{title:a("Account.Account.accountState-721844-1"),key:"package_name",width:100},{title:a("Account.Account.accountState-721844-2"),key:"email"},{title:a("Account.Account.accountState-721844-20"),key:"login_info",width:80,render:t=>l("span",{class:"text-primary cursor-pointer",onClick:()=>e.copyInfo({url:t.login_url,user:t.username,pass:t.init_password})},[a("Public.Btn.Copy")])},{key:"quota",title:a("Account.Account.accountState-721844-3"),render:e=>l("span",{class:0===e.disk_space_status?"text-error":""},[0===e.disk_space_used&&0===e.disk_space_quota?"-":N(e.disk_space_used,!0,0),k(" /")," ",0===e.disk_space_quota?l("img",{class:"icon",title:"",src:ue},null):N(e.disk_space_quota,!0,0)])},{key:"bandwidth",title:a("Account.Account.accountState-721844-7"),render:e=>l("span",{class:0===e.monthly_bandwidth_status?"text-error":""},[N(e.monthly_bandwidth_used,!0,2),k(" /")," ",0===e.monthly_bandwidth_limit?l("img",{class:"icon",title:"",src:ue},null):N(e.monthly_bandwidth_limit,!0,0)])},{title:a("Account.Account.accountState-721844-8"),key:"status",width:68,render:t=>{const o=new Map([[-1,a("Account.Account.accountState-721844-9")],[0,a("Account.Account.accountState-721844-10")],[1,a("Account.Account.accountState-721844-11")],[2,a("Account.Account.accountState-721844-12")]]);return l("span",{onClick:()=>e.modifyStatus(t),class:"cursor-pointer "+(1===t.status||-1===t.status?"text-primary":"text-error")},[o.get(t.status)])}},{title:a("Account.Account.accountState-721844-13"),key:"expire_date",width:106,render:e=>"0000-00-00"===e.expire_date?a("Account.Account.account_index_10"):e.expire_date},{title:a("Account.Account.accountState-721844-14"),key:"remark",render:e=>e.remark?e.remark:"--"},j({title:a("Public.Table.Action"),align:"right",width:200,options:o=>[{label:a("Account.Account.accountState-721844-15"),onClick:async()=>{e.onLogin(o.account_id)}},{label:a("Account.Account.accountState-721844-16"),onClick:async()=>{await e.getPackageList(),await e.getDiskList(),g.value=Number(o.account_id),n.value=!0,V.username=o.username,V.password="",V.email=o.email,V.expire_date=o.expire_date,V.remark=o.remark,P.value.package_id=Number(o.package_id),P.value.mountpoint=o.mountpoint,e.changePackage(o.package_id),H.domain=o.domain,t.value=!0}},{label:a("Account.Account.accountState-721844-17"),onClick:async()=>{e.removeAccount(o)}}]})]),_=c([]),b=v({p:1,rows:10,type_id:-1,search_value:""}),g=c(null),A=c([]),w=c([]),f=c([]),x=c([]),[D,V]=me(),[q,H,U]=function(){const{isUserAutoMatic:e,isExistWhite:a}=y(I()),t=Y(),o=c(!1),n=v({website_and_email:"yes",domain:"",dns_record:2}),u=c(""),r=v({domain:[{required:!0,message:B.global.t("SSL.index_21"),trigger:"blur"}]}),d=c(),m=()=>{""!==n.domain.trim()?u.value!==n.domain&&(d.value?.getParseStatus(),u.value=n.domain):u.value=""},p=s(()=>d.value?.isSupportAuto);return[i({props:{isEdit:Boolean},setup(i,{expose:u}){const s=c(),p=v({});return u(p),h(()=>{(async()=>{try{o.value=!0,await t.getMailInfo(),t.install&&e.value&&a.value||(n.website_and_email="no")}finally{o.value=!1}})(),Object.assign(p,{validate:s.value?.validate,restoreValidation:s.value?.restoreValidation})}),()=>l(z,{show:o.value},{default:()=>[F(l(ie,{ref:s,model:n,rules:r},{default:()=>[l(ee,{label:"Create a website and email"},{default:()=>[l(le,{class:"w-150px",value:n.website_and_email,onUpdateValue:e=>n.website_and_email=e,"onUpdate:value":m,disabled:!e.value||!t.install||!a.value},{default:()=>[l(ne,{value:"yes"},{default:()=>[k("Yes")]}),l(ne,{value:"no"},{default:()=>[k("No")]})]}),F(l(G,{"show-icon":!1},{default:()=>[l("div",{class:"flex items-center"},[l(W,{name:"base-info",size:17,class:"mr-8px"},null),l("span",{class:"leading-17px"},[t.install&&e.value?"API not enabled or 127.0.0.1 not added to the API whitelist":"Current Mail Server is not installed or sub-panel version is lower than 1.0.9"])])]}),[[S,!t.install||!e.value||!a.value]])]}),F(l(ee,{label:"Domain",path:"domain"},{default:()=>[l(oe,{value:n.domain,onUpdateValue:e=>n.domain=e,onBlur:m},null)]}),[[S,"yes"===n.website_and_email]]),F(l(ee,{label:"DNS record"},{default:()=>[l(le,{value:n.dns_record,onUpdateValue:e=>{n.dns_record=e,m()}},{default:()=>[l(ne,{value:2},{default:()=>[l("div",{class:"flex h-15px items-center mr-16px"},[l("div",null,[k("Automatic")]),l(W,{name:"ssl-stars",size:22},null)])]}),l(ne,{value:1},{default:()=>[k("Manual")]})]})]}),[[S,"yes"===n.website_and_email]]),F(l(ee,{label:" "},{default:()=>[l(re,{ref:d,domain:n.domain},null)]}),[[S,"yes"===n.website_and_email]])]}),[[S,!i.isEdit]]),F(l(ie,null,{default:()=>[F(l(ee,{label:"Domain"},{default:()=>[l(oe,{value:n.domain,disabled:!0},null)]}),[[S,n.domain]])]}),[[S,i.isEdit]])]})}}),n,p]}(),P=c({package_id:-1,mountpoint:""}),C=c(),[L,E]=_e();return{addVisible:t,search:b,table:m,columns:p,keys:_,isEdit:n,accountFormRef:u,accountDomainFormRef:r,account_total:d,acForData:V,domainForData:H,expendFormState:P,wpForData:E,packageList:A,packageSourceList:w,diskMountPointList:f,diskMountSourceList:x,current_account_id:g,currentChangeDisk:C,initAccountForm:()=>D,initPackageForm:()=>L,initDomainForm:()=>q,isSupportAuto:U}}))}}}); diff --git a/BTPanel/static/vite/js/accountState.js b/BTPanel/static/vite/js/accountState.js index 008acc09..6b56d7cf 100644 --- a/BTPanel/static/vite/js/accountState.js +++ b/BTPanel/static/vite/js/accountState.js @@ -1 +1 @@ -import{Z as a,P as e,W as t,F as o,k as l,am as n,r as i,c as u,a2 as s,V as c,a3 as r,R as d,an as m,U as p,S as _,j as v,e as b,a0 as k,s as g,o as A,w as y,u as h,t as f,l as w,v as x}from"./vue.js?v=1760428868419";import{d as F,i as S,a as D,j as V,f as q}from"./public.js?v=1760428868419";import{af as H,d as j,ab as U,ag as P,n as L,m as C,ah as N,ai as E,aj as M,ak as O,i as R,a1 as B,al as I,S as Y,a5 as z,_ as T}from"./page_layout.js?v=1760428868419";import{da as W,dk as Z,aC as G,dj as J,dW as K,df as Q,dR as X,_ as $,dV as aa,au as ea,dT as ta,dU as oa}from"./naive.js?v=1760428868419";import{_ as la}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{a as na}from"./quota.js?v=1760428868419";const ia=a("aapanelsub-account-store",()=>{const a=_a(),{t:l}=e(),n=async()=>{try{u(!0);const{message:e}=await H(a.search);j(e)&&(a.table.data=e.list,a.table.total=e.page.count,a.account_total=e.account_total)}finally{u(!1)}},{loading:i,setLoading:u}=F(),s=async()=>{const{message:e}=await U();j(e)&&(a.packageSourceList=e.list,a.packageList=e.list.map(a=>({label:a.package_name,value:a.package_id})),e.list.length>0&&(a.expendFormState.package_id=e.list[0].package_id,r(a.expendFormState.package_id)))},c=async()=>{const e=await P();if(j(e)){let t={};a.diskMountSourceList=e.message,a.diskMountPointList=e.message.map(a=>(a.is_default&&(t=a),{label:"".concat(a.mountpoint).concat(" ","(").concat(L(a.used),"/").concat(L(a.total),")").concat(" ").concat(l("Account.Account.account_533924-7"),":").concat(a.is_group_quota?l("Account.Account.account_533924-5"):l("Account.Account.account_533924-6")),value:a.mountpoint})),e.message.length>0&&(a.expendFormState.mountpoint=t.mountpoint||e.message[0].mountpoint,a.currentChangeDisk=0===Object.keys(t).length?e.message[0]:t)}},r=async e=>{const t=a.packageSourceList.find(a=>a.package_id===e);if(t){const{package_name:e,disk_space_quota:o,monthly_bandwidth_limit:l,max_site_limit:n,max_database:i,php_start_children:u,php_max_children:s,remark:c}=t;a.wpForData.package_name=e,a.wpForData.disk_space_quota=0==o?{value:"",unlimited:!0}:{value:o/1024/1024,unlimited:!1},a.wpForData.monthly_bandwidth_limit=0==l?{value:"",unlimited:!0}:{value:l/1024/1024,unlimited:!1},a.wpForData.max_site_limit=0===n?{value:"",unlimited:!0}:{value:n,unlimited:!1},a.wpForData.max_database=0==i?{value:"",unlimited:!0}:{value:i,unlimited:!1},a.wpForData.php_start_children=u,a.wpForData.php_max_children=s,a.wpForData.remark=c}};const d=()=>{a.acForData.username="",a.acForData.password="",a.acForData.email="",a.acForData.expire_date="0000-00-00",a.expendFormState.package_id=void 0,a.domainForData.domain="",m()},m=()=>{a.wpForData.package_name="",a.wpForData.disk_space_quota={value:"",unlimited:!1},a.wpForData.monthly_bandwidth_limit={value:"",unlimited:!1},a.wpForData.max_site_limit={value:"",unlimited:!1},a.wpForData.max_database={value:"",unlimited:!1},a.wpForData.php_start_children=1,a.wpForData.php_max_children=1,a.wpForData.remark=""};return{init:n,addHost:async()=>{if(a.table.total>=30)return C.error(l("Account.Account.account_533924-9",[30])),!1;d(),await s(),await c(),a.addVisible=!0,a.isEdit=!1},setLoading:u,loading:i,onLogin:async a=>{const{message:e}=await N({account_id:a});j(e)&&window.open(e.login_url+"?token="+e.token)},modifyStatus:async a=>{const{status:e,username:t}=a;D({title:"".concat(l(0===e?"Site.PHP.index_21_2":"Site.PHP.index_21_3")," ").concat(l("Account.Account.account_533924-0",[t])),content:l(0===e?"Account.Account.account_533924-1":"Account.Account.account_533924-2"),onConfirm:async()=>{await E({...a,status:0===e?1:0}),a.status=0===e?1:0}})},removeAccount:async a=>{D({title:l("Account.Account.account_673836-0",[a.username]),content:()=>t(o,null,[t("div",null,[l("Account.Account.account_673836-1")])]),onConfirm:async()=>{await O({account_id:a.account_id,is_del_resources:!0}),n()}})},form_save:async()=>{var e,t;"yes"!==a.domainForData.website_and_email||a.isEdit||await(null==(e=a.accountDomainFormRef)?void 0:e.validate()),await(null==(t=a.accountFormRef)?void 0:t.validate());const{domainForData:o,isSupportAuto:i}=a;if(!i&&"yes"===a.domainForData.website_and_email&&!a.isEdit)return C.error("Your domain name does not support Create a website and email"),!1;const u=function(){const{package_id:e,mountpoint:t}=a.expendFormState,{username:o,password:l,email:n,expire_date:i,remark:u}=a.acForData,{disk_space_quota:s,monthly_bandwidth_limit:c,max_site_limit:r,max_database:d,php_start_children:m,php_max_children:p}=a.wpForData;return Object.assign({},{username:o,password:l,email:n,expire_date:i,package_id:e,mountpoint:t,disk_space_quota:s.unlimited?0:String(1024*Number(s.value)*1024),monthly_bandwidth_limit:c.unlimited?0:String(1024*Number(c.value)*1024),max_site_limit:r.unlimited?0:r.value,max_database:d.unlimited?0:d.value,php_start_children:m,php_max_children:p,remark:u})}();if(u.domain="yes"===o.website_and_email?o.domain:null,u.automatic_dns=2===o.dns_record&&"yes"===o.website_and_email?1:0,Number(u.disk_space_quota)>0&&!a.isEdit){const{is_group_quota:e,free:t}=a.currentChangeDisk;if(!e)return C.error(l("Account.Account.account_533924-3")),!1;if(t{const{url:e,user:t,pass:o}=a;S("Access address: ".concat(e,"\nUsername: ").concat(t,"\ninit Password: ").concat(o))}}}),ua={key:0,class:"color-desc"},sa=l({__name:"automatic",props:{domain:{}},setup(a,{expose:e}){const o=n(),l=a,b=i(),k=u(()=>{var a;return null==(a=b.value)?void 0:a.support.includes("auto")}),g=()=>{o.push("/ssl_domain/domain")};return e({getParseStatus:async()=>{const{message:a}=await V({domain:l.domain});j(a)&&(b.value=a)},parseStatus:b,isSupportAuto:k}),(a,e)=>{const o=G,l=W,n=Z;return c(),s(l,null,{default:r(()=>[p(b)?m("",!0):(c(),d("span",ua," *The program will use the APl to automatically add the required DNS records forthe mail server and complete the installation of the SSL certifcate. ")),p(b)?(c(),s(l,{key:1},{default:r(()=>[p(k)?(c(),s(n,{key:1,type:"success"},{default:r(()=>e[2]||(e[2]=[v(" Your domain has been connccted to the domain managementccnter, and you can use this fcature to complcte onc-click deployment. ",-1)])),_:1,__:[2]})):(c(),s(n,{key:0,type:"error"},{default:r(()=>[t(l,{class:"items-center flex-nowrap!"},{default:r(()=>[e[1]||(e[1]=_("span",null,"Your domain has not yet been integrated with the Domain Name Management Center.",-1)),t(o,{type:"primary",size:"small",ghost:"",onClick:g},{default:r(()=>e[0]||(e[0]=[v("Add Now",-1)])),_:1,__:[0]})]),_:1,__:[1]})]),_:1}))]),_:1})):m("",!0)]),_:1})}}});const ca=l({props:{options:Array,modelValue:Object,rules:Object,exclude:Array},setup(a,{attrs:e,slots:l,expose:n}){const u=i(null),s=b({});return n(s),A(()=>{var a,e;Object.assign(s,{validate:null==(a=u.value)?void 0:a.validate,restoreValidation:null==(e=u.value)?void 0:e.restoreValidation})}),()=>t(o,null,[t(K,g(e,{model:a.modelValue,ref:u,rules:a.rules}),{default:()=>{var n;return t(o,null,[null==(n=a.options)?void 0:n.filter(e=>{var t;return!(null==(t=a.exclude)?void 0:t.includes(e.key))}).map(o=>function(a,e,o,l){const{label:n,key:i,type:u,options:s,el:c}=a;switch(u){case"input":case"password":return t(X,g({label:n,path:i},o),{default:()=>[t(ea,g({value:e[i],"onUpdate:value":a=>e[i]=a},c),null)]});case"select":return t(X,g({label:n,path:a.key},o),{default:()=>[t(aa,g({options:s,value:e[i],"onUpdate:value":a=>e[i]=a},c),null)]});case"checkbox":return t(X,g({label:n,path:a.key},o),{default:()=>[t($,g({checked:e[i],"onUpdate:checked":a=>e[i]=a},c),null)]});case"date-picker":return t(X,g({label:n,path:a.key},o),{default:()=>[t(z,g({"formatted-value":e[i],"onUpdate:formatted-value":a=>e[i]=a,type:"date","value-format":"yyyy-MM-dd"},c),null)]});case"input-number":return t(X,g({label:n,path:a.key},o),{default:()=>[t(pa,g({value:e[i],"onUpdate:value":a=>e[i]=a},c),null)]});case"custom-item":return t(X,g({label:n,path:a.key},o,{disabled:o.disabled}),{default:()=>{var e;return[null==(e=a.slots)?void 0:e.default(o)]}});case"custom-slot":return t(X,g({label:n,path:a.key},o,{disabled:o.disabled}),{default:()=>{var e;return[l&&(null==(e=l[a.key])?void 0:e.call(l))]}})}}(o,a.modelValue,e,l))])}})])}});function ra(){const a=[{type:"input",label:R.global.t("Account.Account.FormHooks-122755-1"),key:"username",el:{disabled:!0}},{type:"custom-slot",label:R.global.t("Account.Account.FormHooks-122755-2"),key:"password"},{type:"input",label:R.global.t("Account.Account.FormHooks-122755-4"),key:"email"},{type:"custom-slot",label:R.global.t("Account.Account.FormHooks-122755-5"),key:"expire_date"},{type:"input",label:R.global.t("Account.Account.FormHooks-122755-14"),key:"remark"}],e=b({username:"",password:"",email:"",expire_date:"0000-00-00",remark:""}),o=b({username:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-7"),trigger:"blur"}],password:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-8"),trigger:"blur"}],email:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-10"),trigger:"blur"}]});return[l({props:{isEdit:Boolean},setup(l,{attrs:n,expose:u,slots:s}){const c=i(),r=b({});return u(r),A(()=>{var a,e;Object.assign(r,{validate:null==(a=c.value)?void 0:a.validate,restoreValidation:null==(e=c.value)?void 0:e.restoreValidation})}),l.isEdit?(a[0].el.disabled=!0,o.password[0].required=!1):(a[0].el.disabled=!1,o.password[0].required=!0),()=>{return t(ca,g({options:a,modelValue:e,"onUpdate:modelValue":a=>e=a,"label-placement":"left","label-width":"130px"},n,{rules:o,ref:c}),"function"==typeof(l=s)||"[object Object]"===Object.prototype.toString.call(l)&&!h(l)?s:{default:()=>[s]});var l}}}),e]}const da=l({props:{modelValue:Object},setup(a,{attrs:e}){var o,l,n,i;const u=b({value:(null==(o=a.modelValue)?void 0:o.value)?null==(l=a.modelValue)?void 0:l.value:0,unlimited:!!(null==(n=a.modelValue)?void 0:n.unlimited)&&(null==(i=a.modelValue)?void 0:i.unlimited)});return y(u,e=>{a.modelValue.value=e.value,a.modelValue.unlimited=e.unlimited}),()=>{var o;return t("div",{class:"inline-item"},[t("div",{class:"left-item"},[t(pa,{value:u.value,"onUpdate:value":a=>u.value=a,disabled:(null==(o=a.modelValue)?void 0:o.unlimited)||e.disabled},null)]),t("div",{class:"right-item"},[t(J,{value:u.unlimited,"onUpdate:value":a=>u.unlimited=a,disabled:e.disabled},{checked:()=>R.global.t("Account.Account.FormHooks-122755-12"),unchecked:()=>R.global.t("Account.Account.FormHooks-122755-12")})])])}}});function ma(){const a=[{type:"input",label:R.global.t("Account.Account.FormHooks-122755-13"),key:"package_name"},{type:"input",label:R.global.t("Account.Account.FormHooks-122755-14"),key:"remark"},{type:"custom-item",label:R.global.t("Account.Account.FormHooks-122755-15"),key:"disk_space_quota",slots:{default:a=>t(da,g({modelValue:e.disk_space_quota,"onUpdate:modelValue":a=>e.disk_space_quota=a},a),null)}},{type:"custom-item",label:R.global.t("Account.Account.FormHooks-122755-16"),key:"monthly_bandwidth_limit",slots:{default:a=>t(da,g({modelValue:e.monthly_bandwidth_limit,"onUpdate:modelValue":a=>e.monthly_bandwidth_limit=a},a),null)}},{type:"custom-item",label:R.global.t("Account.Account.FormHooks-122755-17"),key:"max_site_limit",slots:{default:a=>t(da,g({modelValue:e.max_site_limit,"onUpdate:modelValue":a=>e.max_site_limit=a},a),null)}},{type:"input-number",label:R.global.t("Account.Account.FormHooks-122755-18"),key:"php_start_children"},{type:"input-number",label:R.global.t("Account.Account.FormHooks-122755-19"),key:"php_max_children"},{type:"custom-item",label:R.global.t("Account.Account.FormHooks-122755-21"),key:"max_database",slots:{default:a=>t(da,g({modelValue:e.max_database,"onUpdate:modelValue":a=>e.max_database=a},a),null)}}],e=b({package_name:"",remark:"",disk_space_quota:{value:0,unlimited:!0},monthly_bandwidth_limit:{value:0,unlimited:!0},max_site_limit:{value:0,unlimited:!0},php_start_children:1,php_max_children:3,max_email_account:{value:1,unlimited:!1},max_database:{value:0,unlimited:!0}}),n=b({package_name:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-22"),trigger:"blur"}],disk_space_quota:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-24"),trigger:"blur",validator:(a,e)=>!!e.unlimited||!!(e.value&&e.value>0)}],monthly_bandwidth_limit:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-25"),trigger:"blur",validator:(a,e)=>!!e.unlimited||!!(e.value&&e.value>0)}],max_site_limit:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-26"),trigger:"blur",validator:(a,e)=>!!e.unlimited||!!(e.value&&e.value>0)}],php_start_children:[{required:!0,validator:(a,e)=>!!e||new Error(R.global.t("Account.Account.FormHooks-122755-27"))}],php_max_children:[{required:!0,validator:(a,e)=>e>0||new Error(R.global.t("Account.Account.FormHooks-122755-28"))}],max_email_account:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-29"),trigger:"blur",validator:(a,e)=>!!e.unlimited||!!(e.value&&e.value>0)}],max_database:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-30"),trigger:"blur",validator:(a,e)=>!!e.unlimited||!!(e.value&&e.value>0)}]}),u=i();return[l({props:{isDisable:Boolean,exclude:Array},setup(l,{expose:s}){const c=b({}),r=i(!1);return s(c),A(()=>{var a,e;Object.assign(c,{validate:null==(a=u.value)?void 0:a.validate,restoreValidation:null==(e=u.value)?void 0:e.restoreValidation})}),y(l,a=>{"isDisable"in a&&(r.value=a.isDisable)},{immediate:!0}),()=>t(o,null,[t(ca,{exclude:l.exclude,options:a,modelValue:e,"onUpdate:modelValue":a=>e=a,"label-placement":"left","label-width":"130px",rules:n,ref:u,disabled:r.value},null)])}}),e]}const pa=l({props:{value:Number},emits:["update:value"],setup(a,{emit:e,attrs:o}){const l=f(a,"value"),n=i(a.value);function u(a){isNaN(Number(a))?(n.value=0,e("update:value",1)):(n.value=Math.round(a),e("update:value",Number(Math.floor(a))))}return y(l,a=>{n.value=a}),()=>t(Q,g(o,{value:n.value,clearable:!0,"onUpdate:value":u,min:1}),null)}}),_a=a("account-state-store",()=>{const a=ia(),{t:o}=e(),n=i(!1),s=i(!1),c=i(null),r=i(null),d=i(30),m=b({data:[],total:0,loading:!1}),p=i([{title:o("Account.Account.accountState-721844-0"),key:"username",width:130,render:e=>t("span",{class:"text-primary cursor-pointer",onClick:()=>a.onLogin(e.account_id)},[e.username])},{title:o("Account.Account.accountState-721844-1"),key:"package_name",width:100},{title:o("Account.Account.accountState-721844-2"),key:"email"},{title:o("Account.Account.accountState-721844-20"),key:"login_info",width:80,render:e=>t("span",{class:"text-primary cursor-pointer",onClick:()=>a.copyInfo({url:e.login_url,user:e.username,pass:e.init_password})},[o("Public.Btn.Copy")])},{key:"quota",title:o("Account.Account.accountState-721844-3"),render:a=>t("span",{class:0===a.disk_space_status?"text-error":""},[0===a.disk_space_used&&0===a.disk_space_quota?"-":L(a.disk_space_used,!0,0),v(" /")," ",0===a.disk_space_quota?t("img",{class:"icon",title:"",src:na},null):L(a.disk_space_quota,!0,0)])},{key:"bandwidth",title:o("Account.Account.accountState-721844-7"),render:a=>t("span",{class:0===a.monthly_bandwidth_status?"text-error":""},[L(a.monthly_bandwidth_used,!0,2),v(" /")," ",0===a.monthly_bandwidth_limit?t("img",{class:"icon",title:"",src:na},null):L(a.monthly_bandwidth_limit,!0,0)])},{title:o("Account.Account.accountState-721844-8"),key:"status",width:68,render:e=>{const l=new Map([[-1,o("Account.Account.accountState-721844-9")],[0,o("Account.Account.accountState-721844-10")],[1,o("Account.Account.accountState-721844-11")],[2,o("Account.Account.accountState-721844-12")]]);return t("span",{onClick:()=>a.modifyStatus(e),class:"cursor-pointer ".concat(1===e.status||-1===e.status?"text-primary":"text-error")},[l.get(e.status)])}},{title:o("Account.Account.accountState-721844-13"),key:"expire_date",width:106,render:a=>"0000-00-00"===a.expire_date?o("Account.Account.account_index_10"):a.expire_date},{title:o("Account.Account.accountState-721844-14"),key:"remark",render:a=>a.remark?a.remark:"--"},q({title:o("Public.Table.Action"),align:"right",width:200,options:e=>[{label:o("Account.Account.accountState-721844-15"),onClick:async()=>{a.onLogin(e.account_id)}},{label:o("Account.Account.accountState-721844-16"),onClick:async()=>{await a.getPackageList(),await a.getDiskList(),y.value=Number(e.account_id),s.value=!0,V.username=e.username,V.password="",V.email=e.email,V.expire_date=e.expire_date,V.remark=e.remark,P.value.package_id=Number(e.package_id),P.value.mountpoint=e.mountpoint,a.changePackage(e.package_id),j.domain=e.domain,n.value=!0}},{label:o("Account.Account.accountState-721844-17"),onClick:async()=>{a.removeAccount(e)}}]})]),_=i([]),g=b({p:1,rows:10,type_id:-1,search_value:""}),y=i(null),h=i([]),f=i([]),F=i([]),S=i([]),[D,V]=ra(),[H,j,U]=function(){const{isUserAutoMatic:a,isExistWhite:e}=k(B()),o=I(),n=i(!1),s=b({website_and_email:"yes",domain:"",dns_record:2}),c=i(""),r=b({domain:[{required:!0,message:R.global.t("SSL.index_21"),trigger:"blur"}]}),d=i(),m=()=>{var a;""!==s.domain.trim()?c.value!==s.domain&&(null==(a=d.value)||a.getParseStatus(),c.value=s.domain):c.value=""},p=u(()=>{var a;return null==(a=d.value)?void 0:a.isSupportAuto});return[l({props:{isEdit:Boolean},setup(l,{expose:u}){const c=i(),p=b({});return u(p),A(()=>{var t,l;(async()=>{try{n.value=!0,await o.getMailInfo(),o.install&&a.value&&e.value||(s.website_and_email="no")}finally{n.value=!1}})(),Object.assign(p,{validate:null==(t=c.value)?void 0:t.validate,restoreValidation:null==(l=c.value)?void 0:l.restoreValidation})}),()=>t(Y,{show:n.value},{default:()=>[w(t(la,{ref:c,model:s,rules:r},{default:()=>[t(X,{label:"Create a website and email"},{default:()=>[t(ta,{class:"w-150px",value:s.website_and_email,onUpdateValue:a=>s.website_and_email=a,"onUpdate:value":m,disabled:!a.value||!o.install||!e.value},{default:()=>[t(oa,{value:"yes"},{default:()=>[v("Yes")]}),t(oa,{value:"no"},{default:()=>[v("No")]})]}),w(t(Z,{"show-icon":!1},{default:()=>[t("div",{class:"flex items-center"},[t(T,{name:"base-info",size:17,class:"mr-8px"},null),t("span",{class:"leading-17px"},[o.install&&a.value?"API not enabled or 127.0.0.1 not added to the API whitelist":"Current Mail Server is not installed or sub-panel version is lower than 1.0.9"])])]}),[[x,!o.install||!a.value||!e.value]])]}),w(t(X,{label:"Domain",path:"domain"},{default:()=>[t(ea,{value:s.domain,onUpdateValue:a=>s.domain=a,onBlur:m},null)]}),[[x,"yes"===s.website_and_email]]),w(t(X,{label:"DNS record"},{default:()=>[t(ta,{value:s.dns_record,onUpdateValue:a=>{s.dns_record=a,m()}},{default:()=>[t(oa,{value:2},{default:()=>[t("div",{class:"flex h-15px items-center mr-16px"},[t("div",null,[v("Automatic")]),t(T,{name:"ssl-stars",size:22},null)])]}),t(oa,{value:1},{default:()=>[v("Manual")]})]})]}),[[x,"yes"===s.website_and_email]]),w(t(X,{label:" "},{default:()=>[t(sa,{ref:d,domain:s.domain},null)]}),[[x,"yes"===s.website_and_email]])]}),[[x,!l.isEdit]]),w(t(la,null,{default:()=>[w(t(X,{label:"Domain"},{default:()=>[t(ea,{value:s.domain,disabled:!0},null)]}),[[x,s.domain]])]}),[[x,l.isEdit]])]})}}),s,p]}(),P=i({package_id:-1,mountpoint:""}),C=i(),[N,E]=ma();return{addVisible:n,search:g,table:m,columns:p,keys:_,isEdit:s,accountFormRef:c,accountDomainFormRef:r,account_total:d,acForData:V,domainForData:j,expendFormState:P,wpForData:E,packageList:h,packageSourceList:f,diskMountPointList:F,diskMountSourceList:S,current_account_id:y,currentChangeDisk:C,initAccountForm:()=>D,initPackageForm:()=>N,initDomainForm:()=>H,isSupportAuto:U}});export{ia as a,ma as b,_a as u}; +import{Z as a,P as e,W as t,F as o,k as l,am as n,r as i,c as u,a2 as s,V as c,a3 as r,R as d,an as m,U as p,S as _,j as v,e as b,a0 as k,s as g,o as A,w as y,u as h,t as f,l as w,v as x}from"./vue.js?v=1762424784323";import{d as F,i as S,a as D,j as V,f as q}from"./public.js?v=1762424784323";import{af as H,d as j,ab as U,ag as P,n as L,m as C,ah as N,ai as E,aj as M,ak as O,i as R,a1 as B,al as I,S as Y,a5 as z,_ as T}from"./page_layout.js?v=1762424784323";import{da as W,dk as Z,aC as G,dj as J,dW as K,df as Q,dR as X,_ as $,dV as aa,au as ea,dT as ta,dU as oa}from"./naive.js?v=1762424784323";import{_ as la}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{a as na}from"./quota.js?v=1762424784323";const ia=a("aapanelsub-account-store",()=>{const a=_a(),{t:l}=e(),n=async()=>{try{u(!0);const{message:e}=await H(a.search);j(e)&&(a.table.data=e.list,a.table.total=e.page.count,a.account_total=e.account_total)}finally{u(!1)}},{loading:i,setLoading:u}=F(),s=async()=>{const{message:e}=await U();j(e)&&(a.packageSourceList=e.list,a.packageList=e.list.map(a=>({label:a.package_name,value:a.package_id})),e.list.length>0&&(a.expendFormState.package_id=e.list[0].package_id,r(a.expendFormState.package_id)))},c=async()=>{const e=await P();if(j(e)){let t={};a.diskMountSourceList=e.message,a.diskMountPointList=e.message.map(a=>(a.is_default&&(t=a),{label:"".concat(a.mountpoint).concat(" ","(").concat(L(a.used),"/").concat(L(a.total),")").concat(" ").concat(l("Account.Account.account_533924-7"),":").concat(a.is_group_quota?l("Account.Account.account_533924-5"):l("Account.Account.account_533924-6")),value:a.mountpoint})),e.message.length>0&&(a.expendFormState.mountpoint=t.mountpoint||e.message[0].mountpoint,a.currentChangeDisk=0===Object.keys(t).length?e.message[0]:t)}},r=async e=>{const t=a.packageSourceList.find(a=>a.package_id===e);if(t){const{package_name:e,disk_space_quota:o,monthly_bandwidth_limit:l,max_site_limit:n,max_database:i,php_start_children:u,php_max_children:s,remark:c}=t;a.wpForData.package_name=e,a.wpForData.disk_space_quota=0==o?{value:"",unlimited:!0}:{value:o/1024/1024,unlimited:!1},a.wpForData.monthly_bandwidth_limit=0==l?{value:"",unlimited:!0}:{value:l/1024/1024,unlimited:!1},a.wpForData.max_site_limit=0===n?{value:"",unlimited:!0}:{value:n,unlimited:!1},a.wpForData.max_database=0==i?{value:"",unlimited:!0}:{value:i,unlimited:!1},a.wpForData.php_start_children=u,a.wpForData.php_max_children=s,a.wpForData.remark=c}};const d=()=>{a.acForData.username="",a.acForData.password="",a.acForData.email="",a.acForData.expire_date="0000-00-00",a.expendFormState.package_id=void 0,a.domainForData.domain="",m()},m=()=>{a.wpForData.package_name="",a.wpForData.disk_space_quota={value:"",unlimited:!1},a.wpForData.monthly_bandwidth_limit={value:"",unlimited:!1},a.wpForData.max_site_limit={value:"",unlimited:!1},a.wpForData.max_database={value:"",unlimited:!1},a.wpForData.php_start_children=1,a.wpForData.php_max_children=1,a.wpForData.remark=""};return{init:n,addHost:async()=>{if(a.table.total>=30)return C.error(l("Account.Account.account_533924-9",[30])),!1;d(),await s(),await c(),a.addVisible=!0,a.isEdit=!1},setLoading:u,loading:i,onLogin:async a=>{const{message:e}=await N({account_id:a});j(e)&&window.open(e.login_url+"?token="+e.token)},modifyStatus:async a=>{const{status:e,username:t}=a;D({title:"".concat(l(0===e?"Site.PHP.index_21_2":"Site.PHP.index_21_3")," ").concat(l("Account.Account.account_533924-0",[t])),content:l(0===e?"Account.Account.account_533924-1":"Account.Account.account_533924-2"),onConfirm:async()=>{await E({...a,status:0===e?1:0}),a.status=0===e?1:0}})},removeAccount:async a=>{D({title:l("Account.Account.account_673836-0",[a.username]),content:()=>t(o,null,[t("div",null,[l("Account.Account.account_673836-1")])]),onConfirm:async()=>{await O({account_id:a.account_id,is_del_resources:!0}),n()}})},form_save:async()=>{var e,t;"yes"!==a.domainForData.website_and_email||a.isEdit||await(null==(e=a.accountDomainFormRef)?void 0:e.validate()),await(null==(t=a.accountFormRef)?void 0:t.validate());const{domainForData:o,isSupportAuto:i}=a;if(!i&&"yes"===a.domainForData.website_and_email&&!a.isEdit)return C.error("Your domain name does not support Create a website and email"),!1;const u=function(){const{package_id:e,mountpoint:t}=a.expendFormState,{username:o,password:l,email:n,expire_date:i,remark:u}=a.acForData,{disk_space_quota:s,monthly_bandwidth_limit:c,max_site_limit:r,max_database:d,php_start_children:m,php_max_children:p}=a.wpForData;return Object.assign({},{username:o,password:l,email:n,expire_date:i,package_id:e,mountpoint:t,disk_space_quota:s.unlimited?0:String(1024*Number(s.value)*1024),monthly_bandwidth_limit:c.unlimited?0:String(1024*Number(c.value)*1024),max_site_limit:r.unlimited?0:r.value,max_database:d.unlimited?0:d.value,php_start_children:m,php_max_children:p,remark:u})}();if(u.domain="yes"===o.website_and_email?o.domain:null,u.automatic_dns=2===o.dns_record&&"yes"===o.website_and_email?1:0,Number(u.disk_space_quota)>0&&!a.isEdit){const{is_group_quota:e,free:t}=a.currentChangeDisk;if(!e)return C.error(l("Account.Account.account_533924-3")),!1;if(t{const{url:e,user:t,pass:o}=a;S("Access address: ".concat(e,"\nUsername: ").concat(t,"\ninit Password: ").concat(o))}}}),ua={key:0,class:"color-desc"},sa=l({__name:"automatic",props:{domain:{}},setup(a,{expose:e}){const o=n(),l=a,b=i(),k=u(()=>{var a;return null==(a=b.value)?void 0:a.support.includes("auto")}),g=()=>{o.push("/ssl_domain/domain")};return e({getParseStatus:async()=>{const{message:a}=await V({domain:l.domain});j(a)&&(b.value=a)},parseStatus:b,isSupportAuto:k}),(a,e)=>{const o=G,l=W,n=Z;return c(),s(l,null,{default:r(()=>[p(b)?m("",!0):(c(),d("span",ua," *The program will use the APl to automatically add the required DNS records forthe mail server and complete the installation of the SSL certifcate. ")),p(b)?(c(),s(l,{key:1},{default:r(()=>[p(k)?(c(),s(n,{key:1,type:"success"},{default:r(()=>e[2]||(e[2]=[v(" Your domain has been connccted to the domain managementccnter, and you can use this fcature to complcte onc-click deployment. ",-1)])),_:1,__:[2]})):(c(),s(n,{key:0,type:"error"},{default:r(()=>[t(l,{class:"items-center flex-nowrap!"},{default:r(()=>[e[1]||(e[1]=_("span",null,"Your domain has not yet been integrated with the Domain Name Management Center.",-1)),t(o,{type:"primary",size:"small",ghost:"",onClick:g},{default:r(()=>e[0]||(e[0]=[v("Add Now",-1)])),_:1,__:[0]})]),_:1,__:[1]})]),_:1}))]),_:1})):m("",!0)]),_:1})}}});const ca=l({props:{options:Array,modelValue:Object,rules:Object,exclude:Array},setup(a,{attrs:e,slots:l,expose:n}){const u=i(null),s=b({});return n(s),A(()=>{var a,e;Object.assign(s,{validate:null==(a=u.value)?void 0:a.validate,restoreValidation:null==(e=u.value)?void 0:e.restoreValidation})}),()=>t(o,null,[t(K,g(e,{model:a.modelValue,ref:u,rules:a.rules}),{default:()=>{var n;return t(o,null,[null==(n=a.options)?void 0:n.filter(e=>{var t;return!(null==(t=a.exclude)?void 0:t.includes(e.key))}).map(o=>function(a,e,o,l){const{label:n,key:i,type:u,options:s,el:c}=a;switch(u){case"input":case"password":return t(X,g({label:n,path:i},o),{default:()=>[t(ea,g({value:e[i],"onUpdate:value":a=>e[i]=a},c),null)]});case"select":return t(X,g({label:n,path:a.key},o),{default:()=>[t(aa,g({options:s,value:e[i],"onUpdate:value":a=>e[i]=a},c),null)]});case"checkbox":return t(X,g({label:n,path:a.key},o),{default:()=>[t($,g({checked:e[i],"onUpdate:checked":a=>e[i]=a},c),null)]});case"date-picker":return t(X,g({label:n,path:a.key},o),{default:()=>[t(z,g({"formatted-value":e[i],"onUpdate:formatted-value":a=>e[i]=a,type:"date","value-format":"yyyy-MM-dd"},c),null)]});case"input-number":return t(X,g({label:n,path:a.key},o),{default:()=>[t(pa,g({value:e[i],"onUpdate:value":a=>e[i]=a},c),null)]});case"custom-item":return t(X,g({label:n,path:a.key},o,{disabled:o.disabled}),{default:()=>{var e;return[null==(e=a.slots)?void 0:e.default(o)]}});case"custom-slot":return t(X,g({label:n,path:a.key},o,{disabled:o.disabled}),{default:()=>{var e;return[l&&(null==(e=l[a.key])?void 0:e.call(l))]}})}}(o,a.modelValue,e,l))])}})])}});function ra(){const a=[{type:"input",label:R.global.t("Account.Account.FormHooks-122755-1"),key:"username",el:{disabled:!0}},{type:"custom-slot",label:R.global.t("Account.Account.FormHooks-122755-2"),key:"password"},{type:"input",label:R.global.t("Account.Account.FormHooks-122755-4"),key:"email"},{type:"custom-slot",label:R.global.t("Account.Account.FormHooks-122755-5"),key:"expire_date"},{type:"input",label:R.global.t("Account.Account.FormHooks-122755-14"),key:"remark"}],e=b({username:"",password:"",email:"",expire_date:"0000-00-00",remark:""}),o=b({username:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-7"),trigger:"blur"}],password:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-8"),trigger:"blur"}],email:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-10"),trigger:"blur"}]});return[l({props:{isEdit:Boolean},setup(l,{attrs:n,expose:u,slots:s}){const c=i(),r=b({});return u(r),A(()=>{var a,e;Object.assign(r,{validate:null==(a=c.value)?void 0:a.validate,restoreValidation:null==(e=c.value)?void 0:e.restoreValidation})}),l.isEdit?(a[0].el.disabled=!0,o.password[0].required=!1):(a[0].el.disabled=!1,o.password[0].required=!0),()=>{return t(ca,g({options:a,modelValue:e,"onUpdate:modelValue":a=>e=a,"label-placement":"left","label-width":"130px"},n,{rules:o,ref:c}),"function"==typeof(l=s)||"[object Object]"===Object.prototype.toString.call(l)&&!h(l)?s:{default:()=>[s]});var l}}}),e]}const da=l({props:{modelValue:Object},setup(a,{attrs:e}){var o,l,n,i;const u=b({value:(null==(o=a.modelValue)?void 0:o.value)?null==(l=a.modelValue)?void 0:l.value:0,unlimited:!!(null==(n=a.modelValue)?void 0:n.unlimited)&&(null==(i=a.modelValue)?void 0:i.unlimited)});return y(u,e=>{a.modelValue.value=e.value,a.modelValue.unlimited=e.unlimited}),()=>{var o;return t("div",{class:"inline-item"},[t("div",{class:"left-item"},[t(pa,{value:u.value,"onUpdate:value":a=>u.value=a,disabled:(null==(o=a.modelValue)?void 0:o.unlimited)||e.disabled},null)]),t("div",{class:"right-item"},[t(J,{value:u.unlimited,"onUpdate:value":a=>u.unlimited=a,disabled:e.disabled},{checked:()=>R.global.t("Account.Account.FormHooks-122755-12"),unchecked:()=>R.global.t("Account.Account.FormHooks-122755-12")})])])}}});function ma(){const a=[{type:"input",label:R.global.t("Account.Account.FormHooks-122755-13"),key:"package_name"},{type:"input",label:R.global.t("Account.Account.FormHooks-122755-14"),key:"remark"},{type:"custom-item",label:R.global.t("Account.Account.FormHooks-122755-15"),key:"disk_space_quota",slots:{default:a=>t(da,g({modelValue:e.disk_space_quota,"onUpdate:modelValue":a=>e.disk_space_quota=a},a),null)}},{type:"custom-item",label:R.global.t("Account.Account.FormHooks-122755-16"),key:"monthly_bandwidth_limit",slots:{default:a=>t(da,g({modelValue:e.monthly_bandwidth_limit,"onUpdate:modelValue":a=>e.monthly_bandwidth_limit=a},a),null)}},{type:"custom-item",label:R.global.t("Account.Account.FormHooks-122755-17"),key:"max_site_limit",slots:{default:a=>t(da,g({modelValue:e.max_site_limit,"onUpdate:modelValue":a=>e.max_site_limit=a},a),null)}},{type:"input-number",label:R.global.t("Account.Account.FormHooks-122755-18"),key:"php_start_children"},{type:"input-number",label:R.global.t("Account.Account.FormHooks-122755-19"),key:"php_max_children"},{type:"custom-item",label:R.global.t("Account.Account.FormHooks-122755-21"),key:"max_database",slots:{default:a=>t(da,g({modelValue:e.max_database,"onUpdate:modelValue":a=>e.max_database=a},a),null)}}],e=b({package_name:"",remark:"",disk_space_quota:{value:0,unlimited:!0},monthly_bandwidth_limit:{value:0,unlimited:!0},max_site_limit:{value:0,unlimited:!0},php_start_children:1,php_max_children:3,max_email_account:{value:1,unlimited:!1},max_database:{value:0,unlimited:!0}}),n=b({package_name:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-22"),trigger:"blur"}],disk_space_quota:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-24"),trigger:"blur",validator:(a,e)=>!!e.unlimited||!!(e.value&&e.value>0)}],monthly_bandwidth_limit:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-25"),trigger:"blur",validator:(a,e)=>!!e.unlimited||!!(e.value&&e.value>0)}],max_site_limit:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-26"),trigger:"blur",validator:(a,e)=>!!e.unlimited||!!(e.value&&e.value>0)}],php_start_children:[{required:!0,validator:(a,e)=>!!e||new Error(R.global.t("Account.Account.FormHooks-122755-27"))}],php_max_children:[{required:!0,validator:(a,e)=>e>0||new Error(R.global.t("Account.Account.FormHooks-122755-28"))}],max_email_account:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-29"),trigger:"blur",validator:(a,e)=>!!e.unlimited||!!(e.value&&e.value>0)}],max_database:[{required:!0,message:R.global.t("Account.Account.FormHooks-122755-30"),trigger:"blur",validator:(a,e)=>!!e.unlimited||!!(e.value&&e.value>0)}]}),u=i();return[l({props:{isDisable:Boolean,exclude:Array},setup(l,{expose:s}){const c=b({}),r=i(!1);return s(c),A(()=>{var a,e;Object.assign(c,{validate:null==(a=u.value)?void 0:a.validate,restoreValidation:null==(e=u.value)?void 0:e.restoreValidation})}),y(l,a=>{"isDisable"in a&&(r.value=a.isDisable)},{immediate:!0}),()=>t(o,null,[t(ca,{exclude:l.exclude,options:a,modelValue:e,"onUpdate:modelValue":a=>e=a,"label-placement":"left","label-width":"130px",rules:n,ref:u,disabled:r.value},null)])}}),e]}const pa=l({props:{value:Number},emits:["update:value"],setup(a,{emit:e,attrs:o}){const l=f(a,"value"),n=i(a.value);function u(a){isNaN(Number(a))?(n.value=0,e("update:value",1)):(n.value=Math.round(a),e("update:value",Number(Math.floor(a))))}return y(l,a=>{n.value=a}),()=>t(Q,g(o,{value:n.value,clearable:!0,"onUpdate:value":u,min:1}),null)}}),_a=a("account-state-store",()=>{const a=ia(),{t:o}=e(),n=i(!1),s=i(!1),c=i(null),r=i(null),d=i(30),m=b({data:[],total:0,loading:!1}),p=i([{title:o("Account.Account.accountState-721844-0"),key:"username",width:130,render:e=>t("span",{class:"text-primary cursor-pointer",onClick:()=>a.onLogin(e.account_id)},[e.username])},{title:o("Account.Account.accountState-721844-1"),key:"package_name",width:100},{title:o("Account.Account.accountState-721844-2"),key:"email"},{title:o("Account.Account.accountState-721844-20"),key:"login_info",width:80,render:e=>t("span",{class:"text-primary cursor-pointer",onClick:()=>a.copyInfo({url:e.login_url,user:e.username,pass:e.init_password})},[o("Public.Btn.Copy")])},{key:"quota",title:o("Account.Account.accountState-721844-3"),render:a=>t("span",{class:0===a.disk_space_status?"text-error":""},[0===a.disk_space_used&&0===a.disk_space_quota?"-":L(a.disk_space_used,!0,0),v(" /")," ",0===a.disk_space_quota?t("img",{class:"icon",title:"",src:na},null):L(a.disk_space_quota,!0,0)])},{key:"bandwidth",title:o("Account.Account.accountState-721844-7"),render:a=>t("span",{class:0===a.monthly_bandwidth_status?"text-error":""},[L(a.monthly_bandwidth_used,!0,2),v(" /")," ",0===a.monthly_bandwidth_limit?t("img",{class:"icon",title:"",src:na},null):L(a.monthly_bandwidth_limit,!0,0)])},{title:o("Account.Account.accountState-721844-8"),key:"status",width:68,render:e=>{const l=new Map([[-1,o("Account.Account.accountState-721844-9")],[0,o("Account.Account.accountState-721844-10")],[1,o("Account.Account.accountState-721844-11")],[2,o("Account.Account.accountState-721844-12")]]);return t("span",{onClick:()=>a.modifyStatus(e),class:"cursor-pointer ".concat(1===e.status||-1===e.status?"text-primary":"text-error")},[l.get(e.status)])}},{title:o("Account.Account.accountState-721844-13"),key:"expire_date",width:106,render:a=>"0000-00-00"===a.expire_date?o("Account.Account.account_index_10"):a.expire_date},{title:o("Account.Account.accountState-721844-14"),key:"remark",render:a=>a.remark?a.remark:"--"},q({title:o("Public.Table.Action"),align:"right",width:200,options:e=>[{label:o("Account.Account.accountState-721844-15"),onClick:async()=>{a.onLogin(e.account_id)}},{label:o("Account.Account.accountState-721844-16"),onClick:async()=>{await a.getPackageList(),await a.getDiskList(),y.value=Number(e.account_id),s.value=!0,V.username=e.username,V.password="",V.email=e.email,V.expire_date=e.expire_date,V.remark=e.remark,P.value.package_id=Number(e.package_id),P.value.mountpoint=e.mountpoint,a.changePackage(e.package_id),j.domain=e.domain,n.value=!0}},{label:o("Account.Account.accountState-721844-17"),onClick:async()=>{a.removeAccount(e)}}]})]),_=i([]),g=b({p:1,rows:10,type_id:-1,search_value:""}),y=i(null),h=i([]),f=i([]),F=i([]),S=i([]),[D,V]=ra(),[H,j,U]=function(){const{isUserAutoMatic:a,isExistWhite:e}=k(B()),o=I(),n=i(!1),s=b({website_and_email:"yes",domain:"",dns_record:2}),c=i(""),r=b({domain:[{required:!0,message:R.global.t("SSL.index_21"),trigger:"blur"}]}),d=i(),m=()=>{var a;""!==s.domain.trim()?c.value!==s.domain&&(null==(a=d.value)||a.getParseStatus(),c.value=s.domain):c.value=""},p=u(()=>{var a;return null==(a=d.value)?void 0:a.isSupportAuto});return[l({props:{isEdit:Boolean},setup(l,{expose:u}){const c=i(),p=b({});return u(p),A(()=>{var t,l;(async()=>{try{n.value=!0,await o.getMailInfo(),o.install&&a.value&&e.value||(s.website_and_email="no")}finally{n.value=!1}})(),Object.assign(p,{validate:null==(t=c.value)?void 0:t.validate,restoreValidation:null==(l=c.value)?void 0:l.restoreValidation})}),()=>t(Y,{show:n.value},{default:()=>[w(t(la,{ref:c,model:s,rules:r},{default:()=>[t(X,{label:"Create a website and email"},{default:()=>[t(ta,{class:"w-150px",value:s.website_and_email,onUpdateValue:a=>s.website_and_email=a,"onUpdate:value":m,disabled:!a.value||!o.install||!e.value},{default:()=>[t(oa,{value:"yes"},{default:()=>[v("Yes")]}),t(oa,{value:"no"},{default:()=>[v("No")]})]}),w(t(Z,{"show-icon":!1},{default:()=>[t("div",{class:"flex items-center"},[t(T,{name:"base-info",size:17,class:"mr-8px"},null),t("span",{class:"leading-17px"},[o.install&&a.value?"API not enabled or 127.0.0.1 not added to the API whitelist":"Current Mail Server is not installed or sub-panel version is lower than 1.0.9"])])]}),[[x,!o.install||!a.value||!e.value]])]}),w(t(X,{label:"Domain",path:"domain"},{default:()=>[t(ea,{value:s.domain,onUpdateValue:a=>s.domain=a,onBlur:m},null)]}),[[x,"yes"===s.website_and_email]]),w(t(X,{label:"DNS record"},{default:()=>[t(ta,{value:s.dns_record,onUpdateValue:a=>{s.dns_record=a,m()}},{default:()=>[t(oa,{value:2},{default:()=>[t("div",{class:"flex h-15px items-center mr-16px"},[t("div",null,[v("Automatic")]),t(T,{name:"ssl-stars",size:22},null)])]}),t(oa,{value:1},{default:()=>[v("Manual")]})]})]}),[[x,"yes"===s.website_and_email]]),w(t(X,{label:" "},{default:()=>[t(sa,{ref:d,domain:s.domain},null)]}),[[x,"yes"===s.website_and_email]])]}),[[x,!l.isEdit]]),w(t(la,null,{default:()=>[w(t(X,{label:"Domain"},{default:()=>[t(ea,{value:s.domain,disabled:!0},null)]}),[[x,s.domain]])]}),[[x,l.isEdit]])]})}}),s,p]}(),P=i({package_id:-1,mountpoint:""}),C=i(),[N,E]=ma();return{addVisible:n,search:g,table:m,columns:p,keys:_,isEdit:s,accountFormRef:c,accountDomainFormRef:r,account_total:d,acForData:V,domainForData:j,expendFormState:P,wpForData:E,packageList:h,packageSourceList:f,diskMountPointList:F,diskMountSourceList:S,current_account_id:y,currentChangeDisk:C,initAccountForm:()=>D,initPackageForm:()=>N,initDomainForm:()=>H,isSupportAuto:U}});export{ia as a,ma as b,_a as u}; diff --git a/BTPanel/static/vite/js/alarm-legacy.js b/BTPanel/static/vite/js/alarm-legacy.js index e0731ef0..ecd42418 100644 --- a/BTPanel/static/vite/js/alarm-legacy.js +++ b/BTPanel/static/vite/js/alarm-legacy.js @@ -1 +1 @@ -System.register(["./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419"],function(s,e){"use strict";var t,o,a,n,g;return{setters:[s=>{t=s.t,o=s.i,a=s.a},s=>{n=s.u},s=>{g=s._}],execute:function(){s("b",s=>t.post("/mod/push/task/get_task_list",s)),s("g",()=>t.post("/mod/push/task/get_task_template_list")),s("a",s=>t.post("/mod/push/task/set_task_conf",{...s,task_data:JSON.stringify(s.task_data)},{requestOptions:{loading:o.global.t("Config.API.alarm_1"),successMessage:!0}})),s("n",s=>t.post("/mod/push/task/set_task_conf",{...s,task_data:JSON.stringify(s.task_data)},{requestOptions:{loading:o.global.t("Config.API.alarm_2"),successMessage:!0}})),s("s",s=>t.post("/mod/push/task/change_task_conf",s,{requestOptions:{loading:o.global.t("Config.API.alarm_3"),successMessage:!0}})),s("h",s=>t.post("/mod/push/task/remove_task_conf",s,{requestOptions:{loading:o.global.t("Config.API.alarm_4"),successMessage:!0}})),s("e",s=>t.post("/mod/push/task/get_task_record",s)),s("d",s=>t.post("/mod/push/task/remove_task_records",{...s,record_ids:JSON.stringify(s.record_ids)},{requestOptions:{loading:o.global.t("Config.API.alarm_5"),successMessage:!0}})),s("f",s=>t.post("/mod/push/task/clear_task_record",{...s,record_ids:JSON.stringify(s.record_ids)},{requestOptions:{loading:o.global.t("Config.API.alarm_5"),successMessage:!0}})),s("c",s=>t.post("/mod/push/msgconf/get_sender_list",s)),s("i",s=>t.post("/push?action=get_push_logs",s)),s("k",s=>t.post("/mod/push/msgconf/set_sender_conf",{...s,sender_data:JSON.stringify(s.sender_data)},{requestOptions:{loading:o.global.t("Config.API.alarm_6"),successMessage:!0}})),s("j",s=>t.post("/mod/push/msgconf/set_sender_conf",{...s,sender_data:JSON.stringify(s.sender_data)},{requestOptions:{loading:o.global.t("Config.API.alarm_7"),successMessage:!0}})),s("m",s=>t.post("/mod/push/msgconf/change_sendr_used",s,{requestOptions:{loading:o.global.t("Config.API.alarm_8"),successMessage:!0}})),s("l",s=>t.post("/mod/push/msgconf/set_default_sender",s,{requestOptions:{loading:o.global.t("Config.API.alarm_9"),successMessage:!0}})),s("t",s=>t.post("/mod/push/msgconf/test_send_msg",s,{requestOptions:{loading:o.global.t("Config.API.alarm_10"),successMessage:!0}})),s("u",s=>t.post("/mod/push/msgconf/remove_sender",s,{requestOptions:{loading:o.global.t("Config.API.alarm_11"),successMessage:!0}})),s("o",s=>{n({title:o.global.t("Config.Alarm.index_85",[s.row.title]),width:500,minHeight:280,data:{row:s.row,refresh:s.onRefresh},component:g(()=>a(()=>e.import("./index-legacy146.js?v=1760428868419"),void 0))})})}}}); +System.register(["./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323"],function(s,e){"use strict";var t,o,a,n,g;return{setters:[s=>{t=s.t,o=s.i,a=s.a},s=>{n=s.u},s=>{g=s._}],execute:function(){s("b",s=>t.post("/mod/push/task/get_task_list",s)),s("g",()=>t.post("/mod/push/task/get_task_template_list")),s("a",s=>t.post("/mod/push/task/set_task_conf",{...s,task_data:JSON.stringify(s.task_data)},{requestOptions:{loading:o.global.t("Config.API.alarm_1"),successMessage:!0}})),s("n",s=>t.post("/mod/push/task/set_task_conf",{...s,task_data:JSON.stringify(s.task_data)},{requestOptions:{loading:o.global.t("Config.API.alarm_2"),successMessage:!0}})),s("s",s=>t.post("/mod/push/task/change_task_conf",s,{requestOptions:{loading:o.global.t("Config.API.alarm_3"),successMessage:!0}})),s("h",s=>t.post("/mod/push/task/remove_task_conf",s,{requestOptions:{loading:o.global.t("Config.API.alarm_4"),successMessage:!0}})),s("e",s=>t.post("/mod/push/task/get_task_record",s)),s("d",s=>t.post("/mod/push/task/remove_task_records",{...s,record_ids:JSON.stringify(s.record_ids)},{requestOptions:{loading:o.global.t("Config.API.alarm_5"),successMessage:!0}})),s("f",s=>t.post("/mod/push/task/clear_task_record",{...s,record_ids:JSON.stringify(s.record_ids)},{requestOptions:{loading:o.global.t("Config.API.alarm_5"),successMessage:!0}})),s("c",s=>t.post("/mod/push/msgconf/get_sender_list",s)),s("i",s=>t.post("/push?action=get_push_logs",s)),s("k",s=>t.post("/mod/push/msgconf/set_sender_conf",{...s,sender_data:JSON.stringify(s.sender_data)},{requestOptions:{loading:o.global.t("Config.API.alarm_6"),successMessage:!0}})),s("j",s=>t.post("/mod/push/msgconf/set_sender_conf",{...s,sender_data:JSON.stringify(s.sender_data)},{requestOptions:{loading:o.global.t("Config.API.alarm_7"),successMessage:!0}})),s("m",s=>t.post("/mod/push/msgconf/change_sendr_used",s,{requestOptions:{loading:o.global.t("Config.API.alarm_8"),successMessage:!0}})),s("l",s=>t.post("/mod/push/msgconf/set_default_sender",s,{requestOptions:{loading:o.global.t("Config.API.alarm_9"),successMessage:!0}})),s("t",s=>t.post("/mod/push/msgconf/test_send_msg",s,{requestOptions:{loading:o.global.t("Config.API.alarm_10"),successMessage:!0}})),s("u",s=>t.post("/mod/push/msgconf/remove_sender",s,{requestOptions:{loading:o.global.t("Config.API.alarm_11"),successMessage:!0}})),s("o",s=>{n({title:o.global.t("Config.Alarm.index_85",[s.row.title]),width:500,minHeight:280,data:{row:s.row,refresh:s.onRefresh},component:g(()=>a(()=>e.import("./index-legacy145.js?v=1762424784323"),void 0))})})}}}); diff --git a/BTPanel/static/vite/js/alarm.js b/BTPanel/static/vite/js/alarm.js index c523e479..52b31a6a 100644 --- a/BTPanel/static/vite/js/alarm.js +++ b/BTPanel/static/vite/js/alarm.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/index146.js?v=1760428868419","js/index.js?v=1760428868419","js/vue.js?v=1760428868419","js/__commonjsHelpers__.js?v=1760428868419","js/common.js?v=1760428868419","js/public.js?v=1760428868419","js/page_layout.js?v=1760428868419","js/naive.js?v=1760428868419","css/page_layout.css?v=1760428868419","css/public.css?v=1760428868419","css/index109.css?v=1760428868419","js/index.vue_vue_type_script_setup_true_lang5.js?v=1760428868419","js/index.vue_vue_type_script_setup_true_lang6.js?v=1760428868419","css/index15.css?v=1760428868419","js/index.vue_vue_type_script_setup_true_lang.js?v=1760428868419","js/index99.js?v=1760428868419","css/index14.css?v=1760428868419"])))=>i.map(i=>d[i]); -import{t as s,i as a,a as t}from"./page_layout.js?v=1760428868419";import{u as e}from"./public.js?v=1760428868419";import{_ as o}from"./vue.js?v=1760428868419";const n=a=>s.post("/mod/push/task/get_task_list",a),g=()=>s.post("/mod/push/task/get_task_template_list"),r=t=>s.post("/mod/push/task/set_task_conf",{...t,task_data:JSON.stringify(t.task_data)},{requestOptions:{loading:a.global.t("Config.API.alarm_1"),successMessage:!0}}),i=t=>s.post("/mod/push/task/set_task_conf",{...t,task_data:JSON.stringify(t.task_data)},{requestOptions:{loading:a.global.t("Config.API.alarm_2"),successMessage:!0}}),_=t=>s.post("/mod/push/task/change_task_conf",t,{requestOptions:{loading:a.global.t("Config.API.alarm_3"),successMessage:!0}}),d=t=>s.post("/mod/push/task/remove_task_conf",t,{requestOptions:{loading:a.global.t("Config.API.alarm_4"),successMessage:!0}}),l=a=>s.post("/mod/push/task/get_task_record",a),p=t=>s.post("/mod/push/task/remove_task_records",{...t,record_ids:JSON.stringify(t.record_ids)},{requestOptions:{loading:a.global.t("Config.API.alarm_5"),successMessage:!0}}),c=t=>s.post("/mod/push/task/clear_task_record",{...t,record_ids:JSON.stringify(t.record_ids)},{requestOptions:{loading:a.global.t("Config.API.alarm_5"),successMessage:!0}}),m=a=>s.post("/mod/push/msgconf/get_sender_list",a),u=a=>s.post("/push?action=get_push_logs",a),f=t=>s.post("/mod/push/msgconf/set_sender_conf",{...t,sender_data:JSON.stringify(t.sender_data)},{requestOptions:{loading:a.global.t("Config.API.alarm_6"),successMessage:!0}}),h=t=>s.post("/mod/push/msgconf/set_sender_conf",{...t,sender_data:JSON.stringify(t.sender_data)},{requestOptions:{loading:a.global.t("Config.API.alarm_7"),successMessage:!0}}),k=t=>s.post("/mod/push/msgconf/change_sendr_used",t,{requestOptions:{loading:a.global.t("Config.API.alarm_8"),successMessage:!0}}),O=t=>s.post("/mod/push/msgconf/set_default_sender",t,{requestOptions:{loading:a.global.t("Config.API.alarm_9"),successMessage:!0}}),b=t=>s.post("/mod/push/msgconf/test_send_msg",t,{requestOptions:{loading:a.global.t("Config.API.alarm_10"),successMessage:!0}}),A=t=>s.post("/mod/push/msgconf/remove_sender",t,{requestOptions:{loading:a.global.t("Config.API.alarm_11"),successMessage:!0}}),C=s=>{e({title:a.global.t("Config.Alarm.index_85",[s.row.title]),width:500,minHeight:280,data:{row:s.row,refresh:s.onRefresh},component:o(()=>t(()=>import("./index146.js?v=1760428868419"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])))})};export{r as a,n as b,m as c,p as d,l as e,c as f,g,d as h,u as i,h as j,f as k,O as l,k as m,i as n,C as o,_ as s,b as t,A as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/index145.js?v=1762424784323","js/index.js?v=1762424784323","js/vue.js?v=1762424784323","js/__commonjsHelpers__.js?v=1762424784323","js/common.js?v=1762424784323","js/public.js?v=1762424784323","js/page_layout.js?v=1762424784323","js/naive.js?v=1762424784323","css/page_layout.css?v=1762424784323","css/public.css?v=1762424784323","css/index109.css?v=1762424784323","js/index.vue_vue_type_script_setup_true_lang5.js?v=1762424784323","js/index.vue_vue_type_script_setup_true_lang6.js?v=1762424784323","css/index15.css?v=1762424784323","js/index.vue_vue_type_script_setup_true_lang.js?v=1762424784323","js/index99.js?v=1762424784323","css/index14.css?v=1762424784323"])))=>i.map(i=>d[i]); +import{t as s,i as a,a as t}from"./page_layout.js?v=1762424784323";import{u as e}from"./public.js?v=1762424784323";import{_ as o}from"./vue.js?v=1762424784323";const n=a=>s.post("/mod/push/task/get_task_list",a),g=()=>s.post("/mod/push/task/get_task_template_list"),r=t=>s.post("/mod/push/task/set_task_conf",{...t,task_data:JSON.stringify(t.task_data)},{requestOptions:{loading:a.global.t("Config.API.alarm_1"),successMessage:!0}}),i=t=>s.post("/mod/push/task/set_task_conf",{...t,task_data:JSON.stringify(t.task_data)},{requestOptions:{loading:a.global.t("Config.API.alarm_2"),successMessage:!0}}),_=t=>s.post("/mod/push/task/change_task_conf",t,{requestOptions:{loading:a.global.t("Config.API.alarm_3"),successMessage:!0}}),d=t=>s.post("/mod/push/task/remove_task_conf",t,{requestOptions:{loading:a.global.t("Config.API.alarm_4"),successMessage:!0}}),l=a=>s.post("/mod/push/task/get_task_record",a),p=t=>s.post("/mod/push/task/remove_task_records",{...t,record_ids:JSON.stringify(t.record_ids)},{requestOptions:{loading:a.global.t("Config.API.alarm_5"),successMessage:!0}}),c=t=>s.post("/mod/push/task/clear_task_record",{...t,record_ids:JSON.stringify(t.record_ids)},{requestOptions:{loading:a.global.t("Config.API.alarm_5"),successMessage:!0}}),m=a=>s.post("/mod/push/msgconf/get_sender_list",a),u=a=>s.post("/push?action=get_push_logs",a),f=t=>s.post("/mod/push/msgconf/set_sender_conf",{...t,sender_data:JSON.stringify(t.sender_data)},{requestOptions:{loading:a.global.t("Config.API.alarm_6"),successMessage:!0}}),h=t=>s.post("/mod/push/msgconf/set_sender_conf",{...t,sender_data:JSON.stringify(t.sender_data)},{requestOptions:{loading:a.global.t("Config.API.alarm_7"),successMessage:!0}}),k=t=>s.post("/mod/push/msgconf/change_sendr_used",t,{requestOptions:{loading:a.global.t("Config.API.alarm_8"),successMessage:!0}}),O=t=>s.post("/mod/push/msgconf/set_default_sender",t,{requestOptions:{loading:a.global.t("Config.API.alarm_9"),successMessage:!0}}),b=t=>s.post("/mod/push/msgconf/test_send_msg",t,{requestOptions:{loading:a.global.t("Config.API.alarm_10"),successMessage:!0}}),A=t=>s.post("/mod/push/msgconf/remove_sender",t,{requestOptions:{loading:a.global.t("Config.API.alarm_11"),successMessage:!0}}),C=s=>{e({title:a.global.t("Config.Alarm.index_85",[s.row.title]),width:500,minHeight:280,data:{row:s.row,refresh:s.onRefresh},component:o(()=>t(()=>import("./index145.js?v=1762424784323"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])))})};export{r as a,n as b,m as c,p as d,l as e,c as f,g,d as h,u as i,h as j,f as k,O as l,k as m,i as n,C as o,_ as s,b as t,A as u}; diff --git a/BTPanel/static/vite/js/app-install-third-legacy.js b/BTPanel/static/vite/js/app-install-third-legacy.js index bfe4f543..f5d530c5 100644 --- a/BTPanel/static/vite/js/app-install-third-legacy.js +++ b/BTPanel/static/vite/js/app-install-third-legacy.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419"],function(e,t){"use strict";var l,a,n,o,i,c,s,r,u,p,d,g,_,m,x;return{setters:[e=>{l=e._},e=>{a=e.n,n=e.o,o=e.p},e=>{i=e.u},e=>{c=e.k,s=e.P,r=e.R,u=e.V,p=e.S,d=e.W,g=e.j,_=e.a4,m=e.U,x=e.a3},null,null,null,null],execute:function(){var t=document.createElement("style");t.textContent=".item[data-v-1264a469]{--un-bg-opacity:1;background-color:rgb(245 246 250 / var(--un-bg-opacity));padding:20px;font-size:14px;color:var(--color-text-2)}.item p[data-v-1264a469]{word-break:break-all;line-height:25px}\n/*$vite$:1*/",document.head.appendChild(t);const b={class:"p-16px"},f={class:"item"};e("default",o(c({__name:"app-install-third",props:{data:{}},setup(e,{expose:t}){const{t:o}=s(),c=e,{data:y,callback:v}=c.data;return t({onConfirm:async()=>{await i({name:y.name,tmp_path:y.tmp_path,title:o("Soft.index_21")},()=>{v?.()})}}),(e,t)=>{const o=n,i=l;return u(),r("div",b,[p("div",f,[p("p",null,[p("b",null,_(e.$t("Docker.App.Install.index_1")),1),g(":"+_(m(y).title),1)]),p("p",null,[p("b",null,_(e.$t("Docker.Container.config.image.index_6")),1),g(":"+_(m(y).versions),1)]),p("p",null,[p("b",null,_(e.$t("Docker.Container.config.image.index_11")),1),g(":"+_(m(y).ps),1)]),p("p",null,[p("b",null,_(e.$t("Database.tools.index_14")),1),g(":"+_(m(a)(m(y).size)),1)]),p("p",null,[p("b",null,_(e.$t("Docker.Container.config.image.index_12")),1),g(":"+_(m(y).author),1)]),p("p",null,[p("b",null,_(e.$t("Docker.CloudImage.index_7")),1),t[0]||(t[0]=g(":",-1)),d(o,{href:m(y).home,target:"_blank"},{default:x(()=>[g(_(m(y).home),1)]),_:1},8,["href"])])]),d(i,{class:"pt-16px"},{default:x(()=>[p("li",null,_(e.$t("Soft.index_19")),1),p("li",null,_(e.$t("Soft.index_20")),1)]),_:1})])}}}),[["__scopeId","data-v-1264a469"]]))}}}); +System.register(["./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323"],function(e,t){"use strict";var l,a,n,o,i,c,s,r,u,p,d,g,_,m,x;return{setters:[e=>{l=e._},e=>{a=e.n,n=e.o,o=e.p},e=>{i=e.u},e=>{c=e.k,s=e.P,r=e.R,u=e.V,p=e.S,d=e.W,g=e.j,_=e.a4,m=e.U,x=e.a3},null,null,null,null],execute:function(){var t=document.createElement("style");t.textContent=".item[data-v-1264a469]{--un-bg-opacity:1;background-color:rgb(245 246 250 / var(--un-bg-opacity));padding:20px;font-size:14px;color:var(--color-text-2)}.item p[data-v-1264a469]{word-break:break-all;line-height:25px}\n/*$vite$:1*/",document.head.appendChild(t);const b={class:"p-16px"},f={class:"item"};e("default",o(c({__name:"app-install-third",props:{data:{}},setup(e,{expose:t}){const{t:o}=s(),c=e,{data:y,callback:v}=c.data;return t({onConfirm:async()=>{await i({name:y.name,tmp_path:y.tmp_path,title:o("Soft.index_21")},()=>{v?.()})}}),(e,t)=>{const o=n,i=l;return u(),r("div",b,[p("div",f,[p("p",null,[p("b",null,_(e.$t("Docker.App.Install.index_1")),1),g(":"+_(m(y).title),1)]),p("p",null,[p("b",null,_(e.$t("Docker.Container.config.image.index_6")),1),g(":"+_(m(y).versions),1)]),p("p",null,[p("b",null,_(e.$t("Docker.Container.config.image.index_11")),1),g(":"+_(m(y).ps),1)]),p("p",null,[p("b",null,_(e.$t("Database.tools.index_14")),1),g(":"+_(m(a)(m(y).size)),1)]),p("p",null,[p("b",null,_(e.$t("Docker.Container.config.image.index_12")),1),g(":"+_(m(y).author),1)]),p("p",null,[p("b",null,_(e.$t("Docker.CloudImage.index_7")),1),t[0]||(t[0]=g(":",-1)),d(o,{href:m(y).home,target:"_blank"},{default:x(()=>[g(_(m(y).home),1)]),_:1},8,["href"])])]),d(i,{class:"pt-16px"},{default:x(()=>[p("li",null,_(e.$t("Soft.index_19")),1),p("li",null,_(e.$t("Soft.index_20")),1)]),_:1})])}}}),[["__scopeId","data-v-1264a469"]]))}}}); diff --git a/BTPanel/static/vite/js/app-install-third.js b/BTPanel/static/vite/js/app-install-third.js index 182498ca..2b32c1e4 100644 --- a/BTPanel/static/vite/js/app-install-third.js +++ b/BTPanel/static/vite/js/app-install-third.js @@ -1 +1 @@ -import{_ as a}from"./public.js?v=1760428868419";import{n as t,o as l,p as n}from"./page_layout.js?v=1760428868419";import{u as e}from"./soft.js?v=1760428868419";import{k as s,P as o,R as i,V as p,S as r,W as m,j as u,a4 as _,U as c,a3 as d}from"./vue.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./site.js?v=1760428868419";const f={class:"p-16px"},x={class:"item"},b=n(s({__name:"app-install-third",props:{data:{}},setup(n,{expose:s}){const{t:b}=o(),j=n,{data:g,callback:h}=j.data;return s({onConfirm:async()=>{await e({name:g.name,tmp_path:g.tmp_path,title:b("Soft.index_21")},()=>{null==h||h()})}}),(n,e)=>{const s=l,o=a;return p(),i("div",f,[r("div",x,[r("p",null,[r("b",null,_(n.$t("Docker.App.Install.index_1")),1),u(":"+_(c(g).title),1)]),r("p",null,[r("b",null,_(n.$t("Docker.Container.config.image.index_6")),1),u(":"+_(c(g).versions),1)]),r("p",null,[r("b",null,_(n.$t("Docker.Container.config.image.index_11")),1),u(":"+_(c(g).ps),1)]),r("p",null,[r("b",null,_(n.$t("Database.tools.index_14")),1),u(":"+_(c(t)(c(g).size)),1)]),r("p",null,[r("b",null,_(n.$t("Docker.Container.config.image.index_12")),1),u(":"+_(c(g).author),1)]),r("p",null,[r("b",null,_(n.$t("Docker.CloudImage.index_7")),1),e[0]||(e[0]=u(":",-1)),m(s,{href:c(g).home,target:"_blank"},{default:d(()=>[u(_(c(g).home),1)]),_:1},8,["href"])])]),m(o,{class:"pt-16px"},{default:d(()=>[r("li",null,_(n.$t("Soft.index_19")),1),r("li",null,_(n.$t("Soft.index_20")),1)]),_:1})])}}}),[["__scopeId","data-v-1264a469"]]);export{b as default}; +import{_ as a}from"./public.js?v=1762424784323";import{n as t,o as l,p as n}from"./page_layout.js?v=1762424784323";import{u as e}from"./soft.js?v=1762424784323";import{k as s,P as o,R as i,V as p,S as r,W as m,j as u,a4 as _,U as c,a3 as d}from"./vue.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./site.js?v=1762424784323";const f={class:"p-16px"},x={class:"item"},b=n(s({__name:"app-install-third",props:{data:{}},setup(n,{expose:s}){const{t:b}=o(),j=n,{data:g,callback:h}=j.data;return s({onConfirm:async()=>{await e({name:g.name,tmp_path:g.tmp_path,title:b("Soft.index_21")},()=>{null==h||h()})}}),(n,e)=>{const s=l,o=a;return p(),i("div",f,[r("div",x,[r("p",null,[r("b",null,_(n.$t("Docker.App.Install.index_1")),1),u(":"+_(c(g).title),1)]),r("p",null,[r("b",null,_(n.$t("Docker.Container.config.image.index_6")),1),u(":"+_(c(g).versions),1)]),r("p",null,[r("b",null,_(n.$t("Docker.Container.config.image.index_11")),1),u(":"+_(c(g).ps),1)]),r("p",null,[r("b",null,_(n.$t("Database.tools.index_14")),1),u(":"+_(c(t)(c(g).size)),1)]),r("p",null,[r("b",null,_(n.$t("Docker.Container.config.image.index_12")),1),u(":"+_(c(g).author),1)]),r("p",null,[r("b",null,_(n.$t("Docker.CloudImage.index_7")),1),e[0]||(e[0]=u(":",-1)),m(s,{href:c(g).home,target:"_blank"},{default:d(()=>[u(_(c(g).home),1)]),_:1},8,["href"])])]),m(o,{class:"pt-16px"},{default:d(()=>[r("li",null,_(n.$t("Soft.index_19")),1),r("li",null,_(n.$t("Soft.index_20")),1)]),_:1})])}}}),[["__scopeId","data-v-1264a469"]]);export{b as default}; diff --git a/BTPanel/static/vite/js/app-update-legacy.js b/BTPanel/static/vite/js/app-update-legacy.js index 7aac4383..978ece07 100644 --- a/BTPanel/static/vite/js/app-update-legacy.js +++ b/BTPanel/static/vite/js/app-update-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./soft-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy4.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./index-legacy100.js?v=1760428868419","./index-legacy101.js?v=1760428868419","./file-legacy.js?v=1760428868419","./theme-monokai-legacy.js?v=1760428868419"],function(e,t){"use strict";var a,l,n,s,i,c,u,o,p,r,d,_,m,g,y,v,x,f,h,j,w,b,k,S,$,H,C,P,W;return{setters:[e=>{a=e._},e=>{l=e.e,n=e._},e=>{s=e.u,i=e.q,c=e.c,u=e.d,o=e.V,p=e.m,r=e.W,d=e.p},e=>{_=e.u},e=>{m=e.g},e=>{g=e._},e=>{y=e.da,v=e.dX,x=e.aC},e=>{f=e.k,h=e.P,j=e.r,w=e.R,b=e.an,k=e.U,S=e.V,$=e.W,H=e.S,C=e.a3,P=e.a4,W=e.j},null,null,null,null,null,null,null,null,null,null],execute:function(){var t=document.createElement("style");t.textContent=".item[data-v-3023c531]{--un-bg-opacity:1;background-color:rgb(245 246 250 / var(--un-bg-opacity));padding:20px;font-size:14px;color:var(--color-text-2)}.item p[data-v-3023c531]{word-break:break-all;line-height:25px}\n/*$vite$:1*/",document.head.appendChild(t);const T={key:0,class:"p-30px"},U=["src"],q=["title"],I={class:"color-#888888"},L={class:"font-600 mt-30px"},M=["innerHTML"];e("default",d(f({__name:"app-update",props:{row:{},callback:{},hide:{}},setup(e){const{t:t}=h(),d=s(),f=e,{row:N}=f,R=["nginx","apache","mysql","php"],V=j(),z=j(),E=j(),O=async(e=1)=>{const{message:a}=await o({sName:N.name,version:5===E.value?N.m_version:z.value,upgrade:5===E.value?N.m_version:z.value,type:e});if(u(a)){if(a.result)return p.success(a.result),d.taskCount+=1,f.callback?.(),f.hide(),void r();await _({name:a.name,tmp_path:a.tmp_path,title:t("Soft.index_21")},()=>{f.callback?.()})}f.hide()},X=()=>{var e;e=N.name,R.includes(e)||e.startsWith("php-")?A.show=!0:O(1)},A=l(t("Home.Install.index_7"),{name:N.name,callback:()=>{O(0)}});return(async()=>{const{message:e}=await c({sName:N.name},!0);u(e)&&(E.value=e.type,z.value=N.m_version+"."+N.version,V.value=e.version)})(),(e,l)=>{const s=v,c=y,u=x,o=i,p=n,r=a;return k(N)?(S(),w("div",T,[$(c,{class:"justify-between! items-center"},{default:C(()=>[$(c,{class:"items-center"},{default:C(()=>[H("img",{class:"w-40px",src:k(m)(k(N).name)},null,8,U),H("div",null,[H("p",{class:"font-600 text-18px max-w-290px truncate",title:`${k(N).title} ${k(V)}`},P(k(N).title)+" "+P(k(N).title.indexOf("PHP-")>-1?"":k(V)),9,q),$(s,{dot:""},{default:C(()=>[H("p",I,P(e.$t("Soft.index_51"))+":"+P(k(z)),1)]),_:1})])]),_:1}),$(c,null,{default:C(()=>[$(u,{type:"primary",onClick:X},{default:C(()=>[W(P(e.$t("Home.Update.index_19")),1)]),_:1})]),_:1}),$(o)]),_:1}),H("div",L,P(k(t)("Soft.index_52"))+":",1),H("span",{class:"py-10px inline-block leading-20px text-font2",innerHTML:k(N).update_msg},null,8,M),$(p,null,{default:C(()=>[H("li",null,P(e.$t("Soft.index_35")),1),H("li",null,P(k(t)("Soft.index_53")),1),H("li",null,P(k(t)("Soft.index_54")),1)]),_:1}),$(r,{show:k(A).show,"onUpdate:show":l[0]||(l[0]=e=>k(A).show=e),title:k(A).title,data:k(A).data,width:480,footer:!0,"confirm-text":e.$t("WP.TableRow.index_13"),component:g},null,8,["show","title","data","confirm-text"])])):b("",!0)}}}),[["__scopeId","data-v-3023c531"]]))}}}); +System.register(["./index-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy4.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./index-legacy100.js?v=1762424784323","./theme-monokai-legacy.js?v=1762424784323","./file-legacy.js?v=1762424784323"],function(e,t){"use strict";var a,l,n,s,i,c,u,o,p,r,d,_,m,g,v,y,x,f,h,j,w,b,k,S,$,H,C,P,W;return{setters:[e=>{a=e._},e=>{l=e.e,n=e._},e=>{s=e.u,i=e.q,c=e.c,u=e.d,o=e.V,p=e.m,r=e.W,d=e.p},e=>{_=e.u},e=>{m=e.g},e=>{g=e._},e=>{v=e.da,y=e.dX,x=e.aC},e=>{f=e.k,h=e.P,j=e.r,w=e.R,b=e.an,k=e.U,S=e.V,$=e.W,H=e.S,C=e.a3,P=e.a4,W=e.j},null,null,null,null,null,null,null,null,null],execute:function(){var t=document.createElement("style");t.textContent=".item[data-v-3023c531]{--un-bg-opacity:1;background-color:rgb(245 246 250 / var(--un-bg-opacity));padding:20px;font-size:14px;color:var(--color-text-2)}.item p[data-v-3023c531]{word-break:break-all;line-height:25px}\n/*$vite$:1*/",document.head.appendChild(t);const T={key:0,class:"p-30px"},U=["src"],q=["title"],I={class:"color-#888888"},L={class:"font-600 mt-30px"},M=["innerHTML"];e("default",d(f({__name:"app-update",props:{row:{},callback:{},hide:{}},setup(e){const{t:t}=h(),d=s(),f=e,{row:N}=f,R=["nginx","apache","mysql","php"],V=j(),z=j(),E=j(),O=async(e=1)=>{const{message:a}=await o({sName:N.name,version:5===E.value?N.m_version:z.value,upgrade:5===E.value?N.m_version:z.value,type:e});if(u(a)){if(a.result)return p.success(a.result),d.taskCount+=1,f.callback?.(),f.hide(),void r();await _({name:a.name,tmp_path:a.tmp_path,title:t("Soft.index_21")},()=>{f.callback?.()})}f.hide()},X=()=>{var e;e=N.name,R.includes(e)||e.startsWith("php-")?A.show=!0:O(1)},A=l(t("Home.Install.index_7"),{name:N.name,callback:()=>{O(0)}});return(async()=>{const{message:e}=await c({sName:N.name},!0);u(e)&&(E.value=e.type,z.value=N.m_version+"."+N.version,V.value=e.version)})(),(e,l)=>{const s=y,c=v,u=x,o=i,p=n,r=a;return k(N)?(S(),w("div",T,[$(c,{class:"justify-between! items-center"},{default:C(()=>[$(c,{class:"items-center"},{default:C(()=>[H("img",{class:"w-40px",src:k(m)(k(N).name)},null,8,U),H("div",null,[H("p",{class:"font-600 text-18px max-w-290px truncate",title:`${k(N).title} ${k(V)}`},P(k(N).title)+" "+P(k(N).title.indexOf("PHP-")>-1?"":k(V)),9,q),$(s,{dot:""},{default:C(()=>[H("p",I,P(e.$t("Soft.index_51"))+":"+P(k(z)),1)]),_:1})])]),_:1}),$(c,null,{default:C(()=>[$(u,{type:"primary",onClick:X},{default:C(()=>[W(P(e.$t("Home.Update.index_19")),1)]),_:1})]),_:1}),$(o)]),_:1}),H("div",L,P(k(t)("Soft.index_52"))+":",1),H("span",{class:"py-10px inline-block leading-20px text-font2",innerHTML:k(N).update_msg},null,8,M),$(p,null,{default:C(()=>[H("li",null,P(e.$t("Soft.index_35")),1),H("li",null,P(k(t)("Soft.index_53")),1),H("li",null,P(k(t)("Soft.index_54")),1)]),_:1}),$(r,{show:k(A).show,"onUpdate:show":l[0]||(l[0]=e=>k(A).show=e),title:k(A).title,data:k(A).data,width:480,footer:!0,"confirm-text":e.$t("WP.TableRow.index_13"),component:g},null,8,["show","title","data","confirm-text"])])):b("",!0)}}}),[["__scopeId","data-v-3023c531"]]))}}}); diff --git a/BTPanel/static/vite/js/app-update.js b/BTPanel/static/vite/js/app-update.js index 2e91c769..a18953f6 100644 --- a/BTPanel/static/vite/js/app-update.js +++ b/BTPanel/static/vite/js/app-update.js @@ -1 +1 @@ -import{_ as e}from"./index.js?v=1760428868419";import{e as t,_ as a}from"./public.js?v=1760428868419";import{u as s,q as i,c as n,d as l,V as o,m as p,W as r,p as m}from"./page_layout.js?v=1760428868419";import{u}from"./soft.js?v=1760428868419";import{g as _}from"./soft2.js?v=1760428868419";import{_ as c}from"./index.vue_vue_type_script_setup_true_lang4.js?v=1760428868419";import{da as d,dX as f,aC as v}from"./naive.js?v=1760428868419";import{k as x,P as j,r as h,R as w,an as y,U as g,V as k,W as b,S,a3 as H,a4 as P,j as W}from"./vue.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./site.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import"./index100.js?v=1760428868419";import"./index101.js?v=1760428868419";import"./file.js?v=1760428868419";import"./theme-monokai.js?v=1760428868419";const $={key:0,class:"p-30px"},C=["src"],T=["title"],U={class:"color-#888888"},q={class:"font-600 mt-30px"},I=["innerHTML"],L=m(x({__name:"app-update",props:{row:{},callback:{},hide:{}},setup(m){const{t:x}=j(),L=s(),M=m,{row:N}=M,R=["nginx","apache","mysql","php"],V=h(),O=h(),X=h(),z=async(e=1)=>{var t;const{message:a}=await o({sName:N.name,version:5===X.value?N.m_version:O.value,upgrade:5===X.value?N.m_version:O.value,type:e});if(l(a)){if(a.result)return p.success(a.result),L.taskCount+=1,null==(t=M.callback)||t.call(M),M.hide(),void r();await u({name:a.name,tmp_path:a.tmp_path,title:x("Soft.index_21")},()=>{var e;null==(e=M.callback)||e.call(M)})}M.hide()},A=()=>{var e;(e=N.name,R.includes(e)||e.startsWith("php-"))?B.show=!0:z(1)},B=t(x("Home.Install.index_7"),{name:N.name,callback:()=>{z(0)}});return(async()=>{const{message:e}=await n({sName:N.name},!0);l(e)&&(X.value=e.type,O.value=N.m_version+"."+N.version,V.value=e.version)})(),(t,s)=>{const n=f,l=d,o=v,p=i,r=a,m=e;return g(N)?(k(),w("div",$,[b(l,{class:"justify-between! items-center"},{default:H(()=>[b(l,{class:"items-center"},{default:H(()=>[S("img",{class:"w-40px",src:g(_)(g(N).name)},null,8,C),S("div",null,[S("p",{class:"font-600 text-18px max-w-290px truncate",title:"".concat(g(N).title," ").concat(g(V))},P(g(N).title)+" "+P(g(N).title.indexOf("PHP-")>-1?"":g(V)),9,T),b(n,{dot:""},{default:H(()=>[S("p",U,P(t.$t("Soft.index_51"))+":"+P(g(O)),1)]),_:1})])]),_:1}),b(l,null,{default:H(()=>[b(o,{type:"primary",onClick:A},{default:H(()=>[W(P(t.$t("Home.Update.index_19")),1)]),_:1})]),_:1}),b(p)]),_:1}),S("div",q,P(g(x)("Soft.index_52"))+":",1),S("span",{class:"py-10px inline-block leading-20px text-font2",innerHTML:g(N).update_msg},null,8,I),b(r,null,{default:H(()=>[S("li",null,P(t.$t("Soft.index_35")),1),S("li",null,P(g(x)("Soft.index_53")),1),S("li",null,P(g(x)("Soft.index_54")),1)]),_:1}),b(m,{show:g(B).show,"onUpdate:show":s[0]||(s[0]=e=>g(B).show=e),title:g(B).title,data:g(B).data,width:480,footer:!0,"confirm-text":t.$t("WP.TableRow.index_13"),component:c},null,8,["show","title","data","confirm-text"])])):y("",!0)}}}),[["__scopeId","data-v-3023c531"]]);export{L as default}; +import{_ as e}from"./index.js?v=1762424784323";import{e as t,_ as a}from"./public.js?v=1762424784323";import{u as s,q as i,c as n,d as l,V as o,m as p,W as r,p as m}from"./page_layout.js?v=1762424784323";import{u}from"./soft.js?v=1762424784323";import{g as _}from"./soft2.js?v=1762424784323";import{_ as c}from"./index.vue_vue_type_script_setup_true_lang4.js?v=1762424784323";import{da as d,dX as f,aC as v}from"./naive.js?v=1762424784323";import{k as x,P as j,r as h,R as w,an as y,U as g,V as k,W as b,S,a3 as H,a4 as P,j as W}from"./vue.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./site.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import"./index100.js?v=1762424784323";import"./theme-monokai.js?v=1762424784323";import"./file.js?v=1762424784323";const $={key:0,class:"p-30px"},C=["src"],T=["title"],U={class:"color-#888888"},q={class:"font-600 mt-30px"},I=["innerHTML"],L=m(x({__name:"app-update",props:{row:{},callback:{},hide:{}},setup(m){const{t:x}=j(),L=s(),M=m,{row:N}=M,R=["nginx","apache","mysql","php"],V=h(),O=h(),X=h(),z=async(e=1)=>{var t;const{message:a}=await o({sName:N.name,version:5===X.value?N.m_version:O.value,upgrade:5===X.value?N.m_version:O.value,type:e});if(l(a)){if(a.result)return p.success(a.result),L.taskCount+=1,null==(t=M.callback)||t.call(M),M.hide(),void r();await u({name:a.name,tmp_path:a.tmp_path,title:x("Soft.index_21")},()=>{var e;null==(e=M.callback)||e.call(M)})}M.hide()},A=()=>{var e;(e=N.name,R.includes(e)||e.startsWith("php-"))?B.show=!0:z(1)},B=t(x("Home.Install.index_7"),{name:N.name,callback:()=>{z(0)}});return(async()=>{const{message:e}=await n({sName:N.name},!0);l(e)&&(X.value=e.type,O.value=N.m_version+"."+N.version,V.value=e.version)})(),(t,s)=>{const n=f,l=d,o=v,p=i,r=a,m=e;return g(N)?(k(),w("div",$,[b(l,{class:"justify-between! items-center"},{default:H(()=>[b(l,{class:"items-center"},{default:H(()=>[S("img",{class:"w-40px",src:g(_)(g(N).name)},null,8,C),S("div",null,[S("p",{class:"font-600 text-18px max-w-290px truncate",title:"".concat(g(N).title," ").concat(g(V))},P(g(N).title)+" "+P(g(N).title.indexOf("PHP-")>-1?"":g(V)),9,T),b(n,{dot:""},{default:H(()=>[S("p",U,P(t.$t("Soft.index_51"))+":"+P(g(O)),1)]),_:1})])]),_:1}),b(l,null,{default:H(()=>[b(o,{type:"primary",onClick:A},{default:H(()=>[W(P(t.$t("Home.Update.index_19")),1)]),_:1})]),_:1}),b(p)]),_:1}),S("div",q,P(g(x)("Soft.index_52"))+":",1),S("span",{class:"py-10px inline-block leading-20px text-font2",innerHTML:g(N).update_msg},null,8,I),b(r,null,{default:H(()=>[S("li",null,P(t.$t("Soft.index_35")),1),S("li",null,P(g(x)("Soft.index_53")),1),S("li",null,P(g(x)("Soft.index_54")),1)]),_:1}),b(m,{show:g(B).show,"onUpdate:show":s[0]||(s[0]=e=>g(B).show=e),title:g(B).title,data:g(B).data,width:480,footer:!0,"confirm-text":t.$t("WP.TableRow.index_13"),component:c},null,8,["show","title","data","confirm-text"])])):y("",!0)}}}),[["__scopeId","data-v-3023c531"]]);export{L as default}; diff --git a/BTPanel/static/vite/js/attack-legacy.js b/BTPanel/static/vite/js/attack-legacy.js index cfd8160c..c7b96387 100644 --- a/BTPanel/static/vite/js/attack-legacy.js +++ b/BTPanel/static/vite/js/attack-legacy.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./setting-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(t,e){"use strict";var n,l,a,i,s,c,u,o,d,r,g,_,f,m,y,p,x;return{setters:[t=>{n=t.c,l=t.f,a=t.h,i=t._},t=>{s=t.w},t=>{c=t.T},t=>{u=t.k,o=t.P,d=t.W,r=t.R,g=t.V,_=t.U,f=t.a3,m=t.S,y=t.a4,p=t.u},t=>{x=t._},null,null],execute:function(){const e={class:"p-20px"};t("default",u({__name:"attack",setup(t){const{t:u}=o(),{table:S,columns:W,setLoading:j}=n([{key:"url",title:u("Waf.Setting.index_27"),minWidth:100,ellipsis:{tooltip:{width:"trigger"}},render:t=>d("a",{class:"bt-link",href:t.url,target:"_blank"},[t.url])},{key:"mode",title:u("Waf.Setting.index_28"),width:"20%",minWidth:100,render:()=>{let t;return d(x,{checked:!0},"function"==typeof(e=t=u("Waf.Setting.index_30"))||"[object Object]"===Object.prototype.toString.call(e)&&!p(e)?t:{default:()=>[t]});var e}},l({width:100,options:t=>[{label:u("Waf.Setting.index_29"),onClick:()=>{window.open(t.url)}}]})]);return(async()=>{try{j(!0);const{message:t}=await c();s(t)&&(S.data=t.map(t=>({url:t})))}finally{j(!1)}})(),(t,n)=>{const l=a,s=i;return g(),r("div",e,[d(l,{"loading-num":6,loading:_(S).loading,data:_(S).data,columns:_(W)},null,8,["loading","data","columns"]),d(s,{class:"mt-16px"},{default:f(()=>[m("li",null,y(t.$t("Waf.Setting.index_22")),1),m("li",null,y(t.$t("Waf.Setting.index_23")),1),m("li",null,y(t.$t("Waf.Setting.index_24")),1),m("li",null,y(t.$t("Waf.Setting.index_25")),1),m("li",null,y(t.$t("Waf.Setting.index_26")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./setting-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(t,e){"use strict";var n,l,a,i,s,c,u,o,d,r,g,_,f,m,y,p,x;return{setters:[t=>{n=t.c,l=t.f,a=t.h,i=t._},t=>{s=t.w},t=>{c=t.T},t=>{u=t.k,o=t.P,d=t.W,r=t.R,g=t.V,_=t.U,f=t.a3,m=t.S,y=t.a4,p=t.u},t=>{x=t._},null,null],execute:function(){const e={class:"p-20px"};t("default",u({__name:"attack",setup(t){const{t:u}=o(),{table:S,columns:W,setLoading:j}=n([{key:"url",title:u("Waf.Setting.index_27"),minWidth:100,ellipsis:{tooltip:{width:"trigger"}},render:t=>d("a",{class:"bt-link",href:t.url,target:"_blank"},[t.url])},{key:"mode",title:u("Waf.Setting.index_28"),width:"20%",minWidth:100,render:()=>{let t;return d(x,{checked:!0},"function"==typeof(e=t=u("Waf.Setting.index_30"))||"[object Object]"===Object.prototype.toString.call(e)&&!p(e)?t:{default:()=>[t]});var e}},l({width:100,options:t=>[{label:u("Waf.Setting.index_29"),onClick:()=>{window.open(t.url)}}]})]);return(async()=>{try{j(!0);const{message:t}=await c();s(t)&&(S.data=t.map(t=>({url:t})))}finally{j(!1)}})(),(t,n)=>{const l=a,s=i;return g(),r("div",e,[d(l,{"loading-num":6,loading:_(S).loading,data:_(S).data,columns:_(W)},null,8,["loading","data","columns"]),d(s,{class:"mt-16px"},{default:f(()=>[m("li",null,y(t.$t("Waf.Setting.index_22")),1),m("li",null,y(t.$t("Waf.Setting.index_23")),1),m("li",null,y(t.$t("Waf.Setting.index_24")),1),m("li",null,y(t.$t("Waf.Setting.index_25")),1),m("li",null,y(t.$t("Waf.Setting.index_26")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/attack.js b/BTPanel/static/vite/js/attack.js index de176f82..135ae8e6 100644 --- a/BTPanel/static/vite/js/attack.js +++ b/BTPanel/static/vite/js/attack.js @@ -1 +1 @@ -import{c as t,f as a,h as n,_ as e}from"./public.js?v=1760428868419";import{w as i}from"./page_layout.js?v=1760428868419";import{T as l}from"./setting.js?v=1760428868419";import{k as s,P as o,W as r,R as d,V as m,U as u,a3 as c,S as p,a4 as f,u as g}from"./vue.js?v=1760428868419";import{_}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const x={class:"p-20px"};const W=s({__name:"attack",setup(s){const{t:W}=o(),{table:j,columns:S,setLoading:b}=t([{key:"url",title:W("Waf.Setting.index_27"),minWidth:100,ellipsis:{tooltip:{width:"trigger"}},render:t=>r("a",{class:"bt-link",href:t.url,target:"_blank"},[t.url])},{key:"mode",title:W("Waf.Setting.index_28"),width:"20%",minWidth:100,render:()=>{let t;return r(_,{checked:!0},"function"==typeof(a=t=W("Waf.Setting.index_30"))||"[object Object]"===Object.prototype.toString.call(a)&&!g(a)?t:{default:()=>[t]});var a}},a({width:100,options:t=>[{label:W("Waf.Setting.index_29"),onClick:()=>{window.open(t.url)}}]})]);return(async()=>{try{b(!0);const{message:t}=await l();i(t)&&(j.data=t.map(t=>({url:t})))}finally{b(!1)}})(),(t,a)=>{const i=n,l=e;return m(),d("div",x,[r(i,{"loading-num":6,loading:u(j).loading,data:u(j).data,columns:u(S)},null,8,["loading","data","columns"]),r(l,{class:"mt-16px"},{default:c(()=>[p("li",null,f(t.$t("Waf.Setting.index_22")),1),p("li",null,f(t.$t("Waf.Setting.index_23")),1),p("li",null,f(t.$t("Waf.Setting.index_24")),1),p("li",null,f(t.$t("Waf.Setting.index_25")),1),p("li",null,f(t.$t("Waf.Setting.index_26")),1)]),_:1})])}}});export{W as default}; +import{c as t,f as a,h as n,_ as e}from"./public.js?v=1762424784323";import{w as i}from"./page_layout.js?v=1762424784323";import{T as l}from"./setting.js?v=1762424784323";import{k as s,P as o,W as r,R as d,V as m,U as u,a3 as c,S as p,a4 as f,u as g}from"./vue.js?v=1762424784323";import{_}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const x={class:"p-20px"};const W=s({__name:"attack",setup(s){const{t:W}=o(),{table:j,columns:S,setLoading:b}=t([{key:"url",title:W("Waf.Setting.index_27"),minWidth:100,ellipsis:{tooltip:{width:"trigger"}},render:t=>r("a",{class:"bt-link",href:t.url,target:"_blank"},[t.url])},{key:"mode",title:W("Waf.Setting.index_28"),width:"20%",minWidth:100,render:()=>{let t;return r(_,{checked:!0},"function"==typeof(a=t=W("Waf.Setting.index_30"))||"[object Object]"===Object.prototype.toString.call(a)&&!g(a)?t:{default:()=>[t]});var a}},a({width:100,options:t=>[{label:W("Waf.Setting.index_29"),onClick:()=>{window.open(t.url)}}]})]);return(async()=>{try{b(!0);const{message:t}=await l();i(t)&&(j.data=t.map(t=>({url:t})))}finally{b(!1)}})(),(t,a)=>{const i=n,l=e;return m(),d("div",x,[r(i,{"loading-num":6,loading:u(j).loading,data:u(j).data,columns:u(S)},null,8,["loading","data","columns"]),r(l,{class:"mt-16px"},{default:c(()=>[p("li",null,f(t.$t("Waf.Setting.index_22")),1),p("li",null,f(t.$t("Waf.Setting.index_23")),1),p("li",null,f(t.$t("Waf.Setting.index_24")),1),p("li",null,f(t.$t("Waf.Setting.index_25")),1),p("li",null,f(t.$t("Waf.Setting.index_26")),1)]),_:1})])}}});export{W as default}; diff --git a/BTPanel/static/vite/js/backup-error-legacy.js b/BTPanel/static/vite/js/backup-error-legacy.js index bb813f5a..ab8b6e23 100644 --- a/BTPanel/static/vite/js/backup-error-legacy.js +++ b/BTPanel/static/vite/js/backup-error-legacy.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,t){"use strict";var a,n,l,s,c,u,r,i,o;return{setters:[e=>{a=e.c,n=e.h},e=>{l=e.k,s=e.P,c=e.W,u=e.j,r=e.a2,i=e.V,o=e.U},null,null,null,null],execute:function(){e("default",l({__name:"backup-error",props:{data:{}},setup(e){const{t:t}=s(),l=e,{table:p,columns:d}=a([{title:t("Config.Backup.index_84"),key:"key",render:(e,t)=>`${t+1}`},{title:t("Config.Backup.index_85"),key:"name"},{title:t("Config.Backup.index_86"),key:"msg",width:140,render:e=>c("span",{class:"text-[#ef0808]"},[u(" "),e.msg,u(" ")])},{title:t("Config.Backup.index_87"),key:"type"}]);return p.data=l.data.err_info,(e,t)=>{const a=n;return i(),r(a,{class:"p-16px",columns:o(d),data:o(p).data},null,8,["columns","data"])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,t){"use strict";var a,n,l,s,c,u,r,i,o;return{setters:[e=>{a=e.c,n=e.h},e=>{l=e.k,s=e.P,c=e.W,u=e.j,r=e.a2,i=e.V,o=e.U},null,null,null,null],execute:function(){e("default",l({__name:"backup-error",props:{data:{}},setup(e){const{t:t}=s(),l=e,{table:p,columns:d}=a([{title:t("Config.Backup.index_84"),key:"key",render:(e,t)=>`${t+1}`},{title:t("Config.Backup.index_85"),key:"name"},{title:t("Config.Backup.index_86"),key:"msg",width:140,render:e=>c("span",{class:"text-[#ef0808]"},[u(" "),e.msg,u(" ")])},{title:t("Config.Backup.index_87"),key:"type"}]);return p.data=l.data.err_info,(e,t)=>{const a=n;return i(),r(a,{class:"p-16px",columns:o(d),data:o(p).data},null,8,["columns","data"])}}}))}}}); diff --git a/BTPanel/static/vite/js/backup-error.js b/BTPanel/static/vite/js/backup-error.js index 8790eaa5..da8bdefb 100644 --- a/BTPanel/static/vite/js/backup-error.js +++ b/BTPanel/static/vite/js/backup-error.js @@ -1 +1 @@ -import{c as a,h as t}from"./public.js?v=1760428868419";import{k as e,P as s,W as o,j as n,a2 as r,V as i,U as p}from"./vue.js?v=1760428868419";import"./page_layout.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const c=e({__name:"backup-error",props:{data:{}},setup(e){const{t:c}=s(),m=e,{table:l,columns:u}=a([{title:c("Config.Backup.index_84"),key:"key",render:(a,t)=>"".concat(t+1)},{title:c("Config.Backup.index_85"),key:"name"},{title:c("Config.Backup.index_86"),key:"msg",width:140,render:a=>o("span",{class:"text-[#ef0808]"},[n(" "),a.msg,n(" ")])},{title:c("Config.Backup.index_87"),key:"type"}]);return l.data=m.data.err_info,(a,e)=>{const s=t;return i(),r(s,{class:"p-16px",columns:p(u),data:p(l).data},null,8,["columns","data"])}}});export{c as default}; +import{c as a,h as t}from"./public.js?v=1762424784323";import{k as e,P as s,W as o,j as n,a2 as r,V as i,U as p}from"./vue.js?v=1762424784323";import"./page_layout.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const c=e({__name:"backup-error",props:{data:{}},setup(e){const{t:c}=s(),m=e,{table:l,columns:u}=a([{title:c("Config.Backup.index_84"),key:"key",render:(a,t)=>"".concat(t+1)},{title:c("Config.Backup.index_85"),key:"name"},{title:c("Config.Backup.index_86"),key:"msg",width:140,render:a=>o("span",{class:"text-[#ef0808]"},[n(" "),a.msg,n(" ")])},{title:c("Config.Backup.index_87"),key:"type"}]);return l.data=m.data.err_info,(a,e)=>{const s=t;return i(),r(s,{class:"p-16px",columns:p(u),data:p(l).data},null,8,["columns","data"])}}});export{c as default}; diff --git a/BTPanel/static/vite/js/backup-info-legacy.js b/BTPanel/static/vite/js/backup-info-legacy.js index 62dfc9ce..032f5b72 100644 --- a/BTPanel/static/vite/js/backup-info-legacy.js +++ b/BTPanel/static/vite/js/backup-info-legacy.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./utils-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419"],function(e,t){"use strict";var a,l,n,s,o,u,i,d,r,c,p,m,b,h,g,_,y,x,f,w,v,S,T,k,j,P,$,z,L,B,F,H,O,q,A,C,D,E;return{setters:[e=>{a=e.h},e=>{l=e.u,n=e.s,s=e.a,o=e.c,u=e.e,i=e.w,d=e.f,r=e.h,c=e.j,p=e.t,m=e.k,b=e.v,h=e.l,g=e.m,_=e.n,y=e.o,x=e.p,f=e.q,w=e.r,v=e.x,S=e.y,e.z,e.A},e=>{T=e._,k=e.i,j=e.n,P=e.bK,$=e.bL,z=e.p},e=>{L=e.k,B=e.c,F=e.W,H=e.R,O=e.V,q=e.a3,A=e.an,C=e.U,e.a2},e=>{D=e.da,E=e.dh},null,null,null,null],execute:function(){var t=document.createElement("style");t.textContent="[data-v-45e92e92] .n-collapse .n-collapse-item .n-collapse-item__header .n-collapse-item__header-main{justify-content:space-between}[data-v-45e92e92] .n-collapse .n-collapse-item .n-collapse-item__content-wrapper .n-collapse-item__content-inner{padding-top:0}[data-v-45e92e92] .n-collapse .n-collapse-item .n-collapse-item__header{padding:0}[data-v-45e92e92] .n-collapse-item__header{background-color:var(--collapse-header-bg)}[data-v-45e92e92] .n-data-table .n-data-table-th{background-color:var(--setting-back-create-table-th-bg)}[data-v-45e92e92] .n-collapse-item__header{border:1px solid var(--setting-back-create-collapse-border)}.n-collapse[data-v-45e92e92]{--n-item-margin: 10px 0 0 0 }\n/*$vite$:1*/",document.head.appendChild(t);const I=L({props:{table:{type:Object,required:!0}},setup(e){const t=B(()=>e.table.data.filter(e=>3===e.status).length);return()=>t.value===e.table.data.length&&t.value>0?F(T,{name:"base-error",class:"text-error",size:"16"},null):t.value>0?F(T,{name:"base-warning",class:"text-warning",size:"16"},null):F(T,{name:"base-success",class:"text-#20a53a",size:"16"},null)}}),N=L({name:"BackupTopic",props:{title:{type:String,default:""},showProblem:{type:Boolean,default:!1},problemText:{type:String,default:""},showTotalSize:{type:Boolean,default:!1},table:{type:Object,default:()=>({data:[]})}},setup:e=>({getDisplayText:()=>`(${k.global.t("Security.Anti.Index_7")} ${e.table.data.length}${e.showTotalSize?`,${j(e.table.data.reduce((e,t)=>e+Number(t.size||0),0))}`:""})`,store:l()}),render(){return F(D,{class:"items-center! p-10px",size:3},{default:()=>[F("span",{class:"website"},null),F("span",{class:"font-bold",style:{color:"var(--setting-back-create-collapse-title)"}},[this.title]),this.showProblem?F(E,{placement:"top-start"},{trigger:()=>F(T,{name:"base-problem",class:"text-16px"},null),default:()=>this.problemText}):"",F("span",null,[this.getDisplayText()]),this.store.showBackupStatus?F(I,{table:this.table},null):""]})}});e("default",z(L({__name:"backup-info",setup:e=>(e,t)=>{const l=a,T=P,k=$;return O(),H("div",null,[F(k,{"arrow-placement":"right",accordion:"",class:"w-full","display-directive":"show"},{default:q(()=>[F(T,null,{header:q(()=>[F(C(N),{title:e.$t("Layout.Sider.site_1"),showProblem:"",table:C(n),problemText:"Backing up a website will automatically back up Nginx configuration, SSL certificate, PHP configuration, redirection and reverse proxy, and other configurations related to the website except plugins.",showTotalSize:!0},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(s),data:C(n).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:e.$t("Layout.Sider.database_1"),table:C(o),showTotalSize:!0},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(u),data:C(o).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:e.$t("Layout.Sider.wp_3"),table:C(i),showTotalSize:!0},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(d),data:C(i).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:"FTP",showProblem:"",table:C(r),problemText:"Only backup FTP account and password, not backup FTP directory"},null,8,["table"])]),default:q(()=>[F(l,{columns:C(c),data:C(r).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:e.$t("Layout.Sider.crontab_1"),table:C(p)},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(m),data:C(p).data,"max-height":150},null,8,["columns","data"])]),_:1}),A("",!0),F(T,null,{header:q(()=>[F(C(N),{title:e.$t("Layout.Sider.mail_1"),table:C(b)},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(h),data:C(b).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:"SSL",table:C(g)},null,8,["table"])]),default:q(()=>[F(l,{columns:C(_),data:C(g).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:e.$t("Layout.Sider.security_2"),table:C(y)},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(x),data:C(y).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:e.$t("WP.TableRow.index_5"),table:C(f)},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(w),data:C(f).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:"Environment",showProblem:"",table:C(v),problemText:"PHP extension does not currently support backup"},null,8,["table"])]),default:q(()=>[F(l,{columns:C(S),data:C(v).data,"max-height":150},null,8,["columns","data"])]),_:1})]),_:1})])}}),[["__scopeId","data-v-45e92e92"]]))}}}); +System.register(["./public-legacy.js?v=1762424784323","./utils-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323"],function(e,t){"use strict";var a,l,n,s,o,u,i,d,r,c,p,m,b,h,g,_,y,x,f,w,v,S,T,k,j,P,$,z,L,B,F,H,O,q,A,C,D,E;return{setters:[e=>{a=e.h},e=>{l=e.u,n=e.s,s=e.a,o=e.c,u=e.e,i=e.w,d=e.f,r=e.h,c=e.j,p=e.t,m=e.k,b=e.v,h=e.l,g=e.m,_=e.n,y=e.o,x=e.p,f=e.q,w=e.r,v=e.x,S=e.y,e.z,e.A},e=>{T=e._,k=e.i,j=e.n,P=e.bK,$=e.bL,z=e.p},e=>{L=e.k,B=e.c,F=e.W,H=e.R,O=e.V,q=e.a3,A=e.an,C=e.U,e.a2},e=>{D=e.da,E=e.dh},null,null,null,null],execute:function(){var t=document.createElement("style");t.textContent="[data-v-45e92e92] .n-collapse .n-collapse-item .n-collapse-item__header .n-collapse-item__header-main{justify-content:space-between}[data-v-45e92e92] .n-collapse .n-collapse-item .n-collapse-item__content-wrapper .n-collapse-item__content-inner{padding-top:0}[data-v-45e92e92] .n-collapse .n-collapse-item .n-collapse-item__header{padding:0}[data-v-45e92e92] .n-collapse-item__header{background-color:var(--collapse-header-bg)}[data-v-45e92e92] .n-data-table .n-data-table-th{background-color:var(--setting-back-create-table-th-bg)}[data-v-45e92e92] .n-collapse-item__header{border:1px solid var(--setting-back-create-collapse-border)}.n-collapse[data-v-45e92e92]{--n-item-margin: 10px 0 0 0 }\n/*$vite$:1*/",document.head.appendChild(t);const I=L({props:{table:{type:Object,required:!0}},setup(e){const t=B(()=>e.table.data.filter(e=>3===e.status).length);return()=>t.value===e.table.data.length&&t.value>0?F(T,{name:"base-error",class:"text-error",size:"16"},null):t.value>0?F(T,{name:"base-warning",class:"text-warning",size:"16"},null):F(T,{name:"base-success",class:"text-#20a53a",size:"16"},null)}}),N=L({name:"BackupTopic",props:{title:{type:String,default:""},showProblem:{type:Boolean,default:!1},problemText:{type:String,default:""},showTotalSize:{type:Boolean,default:!1},table:{type:Object,default:()=>({data:[]})}},setup:e=>({getDisplayText:()=>`(${k.global.t("Security.Anti.Index_7")} ${e.table.data.length}${e.showTotalSize?`,${j(e.table.data.reduce((e,t)=>e+Number(t.size||0),0))}`:""})`,store:l()}),render(){return F(D,{class:"items-center! p-10px",size:3},{default:()=>[F("span",{class:"website"},null),F("span",{class:"font-bold",style:{color:"var(--setting-back-create-collapse-title)"}},[this.title]),this.showProblem?F(E,{placement:"top-start"},{trigger:()=>F(T,{name:"base-problem",class:"text-16px"},null),default:()=>this.problemText}):"",F("span",null,[this.getDisplayText()]),this.store.showBackupStatus?F(I,{table:this.table},null):""]})}});e("default",z(L({__name:"backup-info",setup:e=>(e,t)=>{const l=a,T=P,k=$;return O(),H("div",null,[F(k,{"arrow-placement":"right",accordion:"",class:"w-full","display-directive":"show"},{default:q(()=>[F(T,null,{header:q(()=>[F(C(N),{title:e.$t("Layout.Sider.site_1"),showProblem:"",table:C(n),problemText:"Backing up a website will automatically back up Nginx configuration, SSL certificate, PHP configuration, redirection and reverse proxy, and other configurations related to the website except plugins.",showTotalSize:!0},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(s),data:C(n).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:e.$t("Layout.Sider.database_1"),table:C(o),showTotalSize:!0},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(u),data:C(o).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:e.$t("Layout.Sider.wp_3"),table:C(i),showTotalSize:!0},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(d),data:C(i).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:"FTP",showProblem:"",table:C(r),problemText:"Only backup FTP account and password, not backup FTP directory"},null,8,["table"])]),default:q(()=>[F(l,{columns:C(c),data:C(r).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:e.$t("Layout.Sider.crontab_1"),table:C(p)},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(m),data:C(p).data,"max-height":150},null,8,["columns","data"])]),_:1}),A("",!0),F(T,null,{header:q(()=>[F(C(N),{title:e.$t("Layout.Sider.mail_1"),table:C(b)},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(h),data:C(b).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:"SSL",table:C(g)},null,8,["table"])]),default:q(()=>[F(l,{columns:C(_),data:C(g).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:e.$t("Layout.Sider.security_2"),table:C(y)},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(x),data:C(y).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:e.$t("WP.TableRow.index_5"),table:C(f)},null,8,["title","table"])]),default:q(()=>[F(l,{columns:C(w),data:C(f).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(T,null,{header:q(()=>[F(C(N),{title:"Environment",showProblem:"",table:C(v),problemText:"PHP extension does not currently support backup"},null,8,["table"])]),default:q(()=>[F(l,{columns:C(S),data:C(v).data,"max-height":150},null,8,["columns","data"])]),_:1})]),_:1})])}}),[["__scopeId","data-v-45e92e92"]]))}}}); diff --git a/BTPanel/static/vite/js/backup-info.js b/BTPanel/static/vite/js/backup-info.js index 16269fcb..e0a07ff4 100644 --- a/BTPanel/static/vite/js/backup-info.js +++ b/BTPanel/static/vite/js/backup-info.js @@ -1 +1 @@ -import{h as a}from"./public.js?v=1760428868419";import{u as t,s as e,a as l,c as s,e as n,w as o,f as u,h as i,j as r,t as d,k as c,v as m,l as p,m as b,n as h,o as f,p as g,q as x,r as _,x as y,y as w,z as S,A as T}from"./utils.js?v=1760428868419";import{_ as j,i as P,n as v,bK as k,bL as z,p as L}from"./page_layout.js?v=1760428868419";import{k as $,c as B,W as F,R as H,V as O,a3 as q,an as A,U as D,a2 as I}from"./vue.js?v=1760428868419";import{da as N,dh as R}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";const W=$({props:{table:{type:Object,required:!0}},setup(a){const t=B(()=>a.table.data.filter(a=>3===a.status).length);return()=>t.value===a.table.data.length&&t.value>0?F(j,{name:"base-error",class:"text-error",size:"16"},null):t.value>0?F(j,{name:"base-warning",class:"text-warning",size:"16"},null):F(j,{name:"base-success",class:"text-#20a53a",size:"16"},null)}}),E=$({name:"BackupTopic",props:{title:{type:String,default:""},showProblem:{type:Boolean,default:!1},problemText:{type:String,default:""},showTotalSize:{type:Boolean,default:!1},table:{type:Object,default:()=>({data:[]})}},setup:a=>({getDisplayText:()=>"(".concat(P.global.t("Security.Anti.Index_7")," ").concat(a.table.data.length).concat(a.showTotalSize?",".concat(v(a.table.data.reduce((a,t)=>a+Number(t.size||0),0))):"",")"),store:t()}),render(){return F(N,{class:"items-center! p-10px",size:3},{default:()=>[F("span",{class:"website"},null),F("span",{class:"font-bold",style:{color:"var(--setting-back-create-collapse-title)"}},[this.title]),this.showProblem?F(R,{placement:"top-start"},{trigger:()=>F(j,{name:"base-problem",class:"text-16px"},null),default:()=>this.problemText}):"",F("span",null,[this.getDisplayText()]),this.store.showBackupStatus?F(W,{table:this.table},null):""]})}}),K=L($({__name:"backup-info",setup:t=>(t,S)=>{const T=a,j=k,P=z;return O(),H("div",null,[F(P,{"arrow-placement":"right",accordion:"",class:"w-full","display-directive":"show"},{default:q(()=>[F(j,null,{header:q(()=>[F(D(E),{title:t.$t("Layout.Sider.site_1"),showProblem:"",table:D(e),problemText:"Backing up a website will automatically back up Nginx configuration, SSL certificate, PHP configuration, redirection and reverse proxy, and other configurations related to the website except plugins.",showTotalSize:!0},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(l),data:D(e).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:t.$t("Layout.Sider.database_1"),table:D(s),showTotalSize:!0},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(n),data:D(s).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:t.$t("Layout.Sider.wp_3"),table:D(o),showTotalSize:!0},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(u),data:D(o).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:"FTP",showProblem:"",table:D(i),problemText:"Only backup FTP account and password, not backup FTP directory"},null,8,["table"])]),default:q(()=>[F(T,{columns:D(r),data:D(i).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:t.$t("Layout.Sider.crontab_1"),table:D(d)},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(c),data:D(d).data,"max-height":150},null,8,["columns","data"])]),_:1}),A("",!0),F(j,null,{header:q(()=>[F(D(E),{title:t.$t("Layout.Sider.mail_1"),table:D(m)},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(p),data:D(m).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:"SSL",table:D(b)},null,8,["table"])]),default:q(()=>[F(T,{columns:D(h),data:D(b).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:t.$t("Layout.Sider.security_2"),table:D(f)},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(g),data:D(f).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:t.$t("WP.TableRow.index_5"),table:D(x)},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(_),data:D(x).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:"Environment",showProblem:"",table:D(y),problemText:"PHP extension does not currently support backup"},null,8,["table"])]),default:q(()=>[F(T,{columns:D(w),data:D(y).data,"max-height":150},null,8,["columns","data"])]),_:1})]),_:1})])}}),[["__scopeId","data-v-45e92e92"]]);export{K as default}; +import{h as a}from"./public.js?v=1762424784323";import{u as t,s as e,a as l,c as s,e as n,w as o,f as u,h as i,j as r,t as d,k as c,v as m,l as p,m as b,n as h,o as f,p as g,q as x,r as _,x as y,y as w,z as S,A as T}from"./utils.js?v=1762424784323";import{_ as j,i as P,n as v,bK as k,bL as z,p as L}from"./page_layout.js?v=1762424784323";import{k as $,c as B,W as F,R as H,V as O,a3 as q,an as A,U as D,a2 as I}from"./vue.js?v=1762424784323";import{da as N,dh as R}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";const W=$({props:{table:{type:Object,required:!0}},setup(a){const t=B(()=>a.table.data.filter(a=>3===a.status).length);return()=>t.value===a.table.data.length&&t.value>0?F(j,{name:"base-error",class:"text-error",size:"16"},null):t.value>0?F(j,{name:"base-warning",class:"text-warning",size:"16"},null):F(j,{name:"base-success",class:"text-#20a53a",size:"16"},null)}}),E=$({name:"BackupTopic",props:{title:{type:String,default:""},showProblem:{type:Boolean,default:!1},problemText:{type:String,default:""},showTotalSize:{type:Boolean,default:!1},table:{type:Object,default:()=>({data:[]})}},setup:a=>({getDisplayText:()=>"(".concat(P.global.t("Security.Anti.Index_7")," ").concat(a.table.data.length).concat(a.showTotalSize?",".concat(v(a.table.data.reduce((a,t)=>a+Number(t.size||0),0))):"",")"),store:t()}),render(){return F(N,{class:"items-center! p-10px",size:3},{default:()=>[F("span",{class:"website"},null),F("span",{class:"font-bold",style:{color:"var(--setting-back-create-collapse-title)"}},[this.title]),this.showProblem?F(R,{placement:"top-start"},{trigger:()=>F(j,{name:"base-problem",class:"text-16px"},null),default:()=>this.problemText}):"",F("span",null,[this.getDisplayText()]),this.store.showBackupStatus?F(W,{table:this.table},null):""]})}}),K=L($({__name:"backup-info",setup:t=>(t,S)=>{const T=a,j=k,P=z;return O(),H("div",null,[F(P,{"arrow-placement":"right",accordion:"",class:"w-full","display-directive":"show"},{default:q(()=>[F(j,null,{header:q(()=>[F(D(E),{title:t.$t("Layout.Sider.site_1"),showProblem:"",table:D(e),problemText:"Backing up a website will automatically back up Nginx configuration, SSL certificate, PHP configuration, redirection and reverse proxy, and other configurations related to the website except plugins.",showTotalSize:!0},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(l),data:D(e).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:t.$t("Layout.Sider.database_1"),table:D(s),showTotalSize:!0},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(n),data:D(s).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:t.$t("Layout.Sider.wp_3"),table:D(o),showTotalSize:!0},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(u),data:D(o).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:"FTP",showProblem:"",table:D(i),problemText:"Only backup FTP account and password, not backup FTP directory"},null,8,["table"])]),default:q(()=>[F(T,{columns:D(r),data:D(i).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:t.$t("Layout.Sider.crontab_1"),table:D(d)},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(c),data:D(d).data,"max-height":150},null,8,["columns","data"])]),_:1}),A("",!0),F(j,null,{header:q(()=>[F(D(E),{title:t.$t("Layout.Sider.mail_1"),table:D(m)},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(p),data:D(m).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:"SSL",table:D(b)},null,8,["table"])]),default:q(()=>[F(T,{columns:D(h),data:D(b).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:t.$t("Layout.Sider.security_2"),table:D(f)},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(g),data:D(f).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:t.$t("WP.TableRow.index_5"),table:D(x)},null,8,["title","table"])]),default:q(()=>[F(T,{columns:D(_),data:D(x).data,"max-height":150},null,8,["columns","data"])]),_:1}),F(j,null,{header:q(()=>[F(D(E),{title:"Environment",showProblem:"",table:D(y),problemText:"PHP extension does not currently support backup"},null,8,["table"])]),default:q(()=>[F(T,{columns:D(w),data:D(y).data,"max-height":150},null,8,["columns","data"])]),_:1})]),_:1})])}}),[["__scopeId","data-v-45e92e92"]]);export{K as default}; diff --git a/BTPanel/static/vite/js/backup-success-legacy.js b/BTPanel/static/vite/js/backup-success-legacy.js index 9af84977..f8e54171 100644 --- a/BTPanel/static/vite/js/backup-success-legacy.js +++ b/BTPanel/static/vite/js/backup-success-legacy.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,a){"use strict";var l,t,n,i,s,u,c,_,d,o,p,f,b,r,g,k,x;return{setters:[e=>{l=e._},e=>{t=e.a6,n=e.a7,i=e._},e=>{s=e.k,u=e.P,c=e.R,_=e.V,d=e.W,o=e.a2,p=e.an,f=e.a3,b=e.U,r=e.j,g=e.a4,k=e.S},e=>{x=e.da},null,null],execute:function(){const a={class:"p-16px"};e("default",s({__name:"backup-success",props:{data:{}},setup(e){const{t:s}=u();return(e,u)=>{const m=t,y=n,B=i,C=x,j=l;return _(),c("div",a,[d(y,{column:1,bordered:"","label-placement":"left","label-style":{width:"150px"}},{default:f(()=>[d(m,{label:"backup"===e.data.type?b(s)("Config.Backup.index_3"):b(s)("Config.Backup.index_93")},{default:f(()=>[r(g(e.data.backup_file_info.name),1)]),_:1},8,["label"]),d(m,{label:"backup"===e.data.type?b(s)("Config.Backup.index_70"):b(s)("Config.Backup.index_71")},{default:f(()=>[r(g(e.data.backup_file_info.end_time),1)]),_:1},8,["label"]),d(m,{label:"backup"===e.data.type?b(s)("Config.Backup.index_72"):b(s)("Config.Backup.index_73")},{default:f(()=>[r(g(e.data.backup_file_info.files_size),1)]),_:1},8,["label"]),d(m,{label:b(s)("Config.Backup.index_63")},{default:f(()=>[r(g(e.data.backup_file_info.backup_file_sha256),1)]),_:1},8,["label"]),d(m,{label:"backup"===e.data.type?b(s)("Config.Backup.index_76"):b(s)("Config.Backup.index_77")},{default:f(()=>[r(g(e.data.backup_file_info.time_count)+"s ",1)]),_:1},8,["label"]),d(m,{label:b(s)("Config.Backup.index_22")},{default:f(()=>[r(g(b(s)("Config.Backup.index_26")),1)]),_:1},8,["label"])]),_:1}),"restore"===e.data.type?(_(),o(j,{key:0,class:"my-16px"},{default:f(()=>[k("li",null,[d(C,{class:"flex-nowrap! items-center",size:3},{default:f(()=>[d(B,{name:"base-warning",class:"text-warning mr-4px",size:"16"}),u[0]||(u[0]=k("span",{class:"text-warning font-bold"},"Please check data integrity after the restore is complete",-1))]),_:1,__:[0]})]),u[1]||(u[1]=k("li",null," Restore details: Please view [ Logs ] - [ Restore Log ] ",-1)),u[2]||(u[2]=k("li",null," Some plug-ins, PHP extensions need to be installed manually ",-1))]),_:1,__:[1,2]})):p("",!0)])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,a){"use strict";var l,t,n,i,s,u,c,_,d,o,p,f,b,r,g,k,x;return{setters:[e=>{l=e._},e=>{t=e.a6,n=e.a7,i=e._},e=>{s=e.k,u=e.P,c=e.R,_=e.V,d=e.W,o=e.a2,p=e.an,f=e.a3,b=e.U,r=e.j,g=e.a4,k=e.S},e=>{x=e.da},null,null],execute:function(){const a={class:"p-16px"};e("default",s({__name:"backup-success",props:{data:{}},setup(e){const{t:s}=u();return(e,u)=>{const m=t,y=n,B=i,C=x,j=l;return _(),c("div",a,[d(y,{column:1,bordered:"","label-placement":"left","label-style":{width:"150px"}},{default:f(()=>[d(m,{label:"backup"===e.data.type?b(s)("Config.Backup.index_3"):b(s)("Config.Backup.index_93")},{default:f(()=>[r(g(e.data.backup_file_info.name),1)]),_:1},8,["label"]),d(m,{label:"backup"===e.data.type?b(s)("Config.Backup.index_70"):b(s)("Config.Backup.index_71")},{default:f(()=>[r(g(e.data.backup_file_info.end_time),1)]),_:1},8,["label"]),d(m,{label:"backup"===e.data.type?b(s)("Config.Backup.index_72"):b(s)("Config.Backup.index_73")},{default:f(()=>[r(g(e.data.backup_file_info.files_size),1)]),_:1},8,["label"]),d(m,{label:b(s)("Config.Backup.index_63")},{default:f(()=>[r(g(e.data.backup_file_info.backup_file_sha256),1)]),_:1},8,["label"]),d(m,{label:"backup"===e.data.type?b(s)("Config.Backup.index_76"):b(s)("Config.Backup.index_77")},{default:f(()=>[r(g(e.data.backup_file_info.time_count)+"s ",1)]),_:1},8,["label"]),d(m,{label:b(s)("Config.Backup.index_22")},{default:f(()=>[r(g(b(s)("Config.Backup.index_26")),1)]),_:1},8,["label"])]),_:1}),"restore"===e.data.type?(_(),o(j,{key:0,class:"my-16px"},{default:f(()=>[k("li",null,[d(C,{class:"flex-nowrap! items-center",size:3},{default:f(()=>[d(B,{name:"base-warning",class:"text-warning mr-4px",size:"16"}),u[0]||(u[0]=k("span",{class:"text-warning font-bold"},"Please check data integrity after the restore is complete",-1))]),_:1,__:[0]})]),u[1]||(u[1]=k("li",null," Restore details: Please view [ Logs ] - [ Restore Log ] ",-1)),u[2]||(u[2]=k("li",null," Some plug-ins, PHP extensions need to be installed manually ",-1))]),_:1,__:[1,2]})):p("",!0)])}}}))}}}); diff --git a/BTPanel/static/vite/js/backup-success.js b/BTPanel/static/vite/js/backup-success.js index 238e0ec6..4ffa0231 100644 --- a/BTPanel/static/vite/js/backup-success.js +++ b/BTPanel/static/vite/js/backup-success.js @@ -1 +1 @@ -import{_ as a}from"./public.js?v=1760428868419";import{a6 as e,a7 as l,_ as t}from"./page_layout.js?v=1760428868419";import{k as s,P as i,R as n,V as o,W as p,a2 as _,an as u,a3 as d,U as c,j as f,a4 as r,S as b}from"./vue.js?v=1760428868419";import{da as m}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const k={class:"p-16px"},x=s({__name:"backup-success",props:{data:{}},setup(s){const{t:x}=i();return(s,i)=>{const g=e,y=l,B=t,C=m,j=a;return o(),n("div",k,[p(y,{column:1,bordered:"","label-placement":"left","label-style":{width:"150px"}},{default:d(()=>[p(g,{label:"backup"===s.data.type?c(x)("Config.Backup.index_3"):c(x)("Config.Backup.index_93")},{default:d(()=>[f(r(s.data.backup_file_info.name),1)]),_:1},8,["label"]),p(g,{label:"backup"===s.data.type?c(x)("Config.Backup.index_70"):c(x)("Config.Backup.index_71")},{default:d(()=>[f(r(s.data.backup_file_info.end_time),1)]),_:1},8,["label"]),p(g,{label:"backup"===s.data.type?c(x)("Config.Backup.index_72"):c(x)("Config.Backup.index_73")},{default:d(()=>[f(r(s.data.backup_file_info.files_size),1)]),_:1},8,["label"]),p(g,{label:c(x)("Config.Backup.index_63")},{default:d(()=>[f(r(s.data.backup_file_info.backup_file_sha256),1)]),_:1},8,["label"]),p(g,{label:"backup"===s.data.type?c(x)("Config.Backup.index_76"):c(x)("Config.Backup.index_77")},{default:d(()=>[f(r(s.data.backup_file_info.time_count)+"s ",1)]),_:1},8,["label"]),p(g,{label:c(x)("Config.Backup.index_22")},{default:d(()=>[f(r(c(x)("Config.Backup.index_26")),1)]),_:1},8,["label"])]),_:1}),"restore"===s.data.type?(o(),_(j,{key:0,class:"my-16px"},{default:d(()=>[b("li",null,[p(C,{class:"flex-nowrap! items-center",size:3},{default:d(()=>[p(B,{name:"base-warning",class:"text-warning mr-4px",size:"16"}),i[0]||(i[0]=b("span",{class:"text-warning font-bold"},"Please check data integrity after the restore is complete",-1))]),_:1,__:[0]})]),i[1]||(i[1]=b("li",null," Restore details: Please view [ Logs ] - [ Restore Log ] ",-1)),i[2]||(i[2]=b("li",null," Some plug-ins, PHP extensions need to be installed manually ",-1))]),_:1,__:[1,2]})):u("",!0)])}}});export{x as default}; +import{_ as a}from"./public.js?v=1762424784323";import{a6 as e,a7 as l,_ as t}from"./page_layout.js?v=1762424784323";import{k as s,P as i,R as n,V as o,W as p,a2 as _,an as u,a3 as d,U as c,j as f,a4 as r,S as b}from"./vue.js?v=1762424784323";import{da as m}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const k={class:"p-16px"},x=s({__name:"backup-success",props:{data:{}},setup(s){const{t:x}=i();return(s,i)=>{const g=e,y=l,B=t,C=m,j=a;return o(),n("div",k,[p(y,{column:1,bordered:"","label-placement":"left","label-style":{width:"150px"}},{default:d(()=>[p(g,{label:"backup"===s.data.type?c(x)("Config.Backup.index_3"):c(x)("Config.Backup.index_93")},{default:d(()=>[f(r(s.data.backup_file_info.name),1)]),_:1},8,["label"]),p(g,{label:"backup"===s.data.type?c(x)("Config.Backup.index_70"):c(x)("Config.Backup.index_71")},{default:d(()=>[f(r(s.data.backup_file_info.end_time),1)]),_:1},8,["label"]),p(g,{label:"backup"===s.data.type?c(x)("Config.Backup.index_72"):c(x)("Config.Backup.index_73")},{default:d(()=>[f(r(s.data.backup_file_info.files_size),1)]),_:1},8,["label"]),p(g,{label:c(x)("Config.Backup.index_63")},{default:d(()=>[f(r(s.data.backup_file_info.backup_file_sha256),1)]),_:1},8,["label"]),p(g,{label:"backup"===s.data.type?c(x)("Config.Backup.index_76"):c(x)("Config.Backup.index_77")},{default:d(()=>[f(r(s.data.backup_file_info.time_count)+"s ",1)]),_:1},8,["label"]),p(g,{label:c(x)("Config.Backup.index_22")},{default:d(()=>[f(r(c(x)("Config.Backup.index_26")),1)]),_:1},8,["label"])]),_:1}),"restore"===s.data.type?(o(),_(j,{key:0,class:"my-16px"},{default:d(()=>[b("li",null,[p(C,{class:"flex-nowrap! items-center",size:3},{default:d(()=>[p(B,{name:"base-warning",class:"text-warning mr-4px",size:"16"}),i[0]||(i[0]=b("span",{class:"text-warning font-bold"},"Please check data integrity after the restore is complete",-1))]),_:1,__:[0]})]),i[1]||(i[1]=b("li",null," Restore details: Please view [ Logs ] - [ Restore Log ] ",-1)),i[2]||(i[2]=b("li",null," Some plug-ins, PHP extensions need to be installed manually ",-1))]),_:1,__:[1,2]})):u("",!0)])}}});export{x as default}; diff --git a/BTPanel/static/vite/js/batch-legacy.js b/BTPanel/static/vite/js/batch-legacy.js index 9534e1d2..c1931a73 100644 --- a/BTPanel/static/vite/js/batch-legacy.js +++ b/BTPanel/static/vite/js/batch-legacy.js @@ -1 +1 @@ -System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./planned-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,a){"use strict";var l,n,t,s,u,o,r,i,d,c,_,g,p,v,y,m,b,f,j;return{setters:[e=>{l=e._},e=>{n=e.bi,t=e.w,s=e.m},e=>{u=e.d},e=>{o=e.g,r=e.o},e=>{i=e.k,d=e.P,c=e.r,_=e.R,g=e.V,p=e.W,v=e.a3,y=e.S,m=e.U,b=e.ak},e=>{f=e.dR,j=e.dV},null,null],execute:function(){const a={class:"p-20px"},w={class:"w-150px"};e("default",i({__name:"batch",props:{data:{}},setup(e,{expose:i}){const{t:x}=d(),h=e,{rows:C}=h.data,P=n(),k=c(null),R=c([]),{loading:S,setLoading:U}=u();return(async()=>{try{U(!0);const{message:e}=await o();t(e)&&e.length>0?(R.value=e.map(e=>({label:e.name,value:e.id})),k.value=e[0].id):(k.value=null,R.value=[])}finally{U(!1)}})(),i({onConfirm:async({hide:e})=>{await r((()=>{if(null===k.value)throw s.error(x("Crontab.Planned.index_28")),new Error(x("Crontab.Planned.index_28"));return{id:k.value,crontab_ids:JSON.stringify(C.map(e=>e.id))}})()),P.setRefresh(!0),e()}}),(e,n)=>{const t=j,s=f,u=l;return g(),_("div",a,[p(u,null,{default:v(()=>[p(s,{label:e.$t("Crontab.Planned.index_27"),"show-feedback":!1},{default:v(()=>[y("div",w,[p(t,{value:m(k),"onUpdate:value":n[0]||(n[0]=e=>b(k)?k.value=e:null),loading:m(S),options:m(R)},null,8,["value","loading","options"])])]),_:1},8,["label"])]),_:1})])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./planned-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,a){"use strict";var l,n,t,s,u,o,r,i,d,c,_,g,p,v,y,m,b,f,j;return{setters:[e=>{l=e._},e=>{n=e.bi,t=e.w,s=e.m},e=>{u=e.d},e=>{o=e.g,r=e.o},e=>{i=e.k,d=e.P,c=e.r,_=e.R,g=e.V,p=e.W,v=e.a3,y=e.S,m=e.U,b=e.ak},e=>{f=e.dR,j=e.dV},null,null],execute:function(){const a={class:"p-20px"},w={class:"w-150px"};e("default",i({__name:"batch",props:{data:{}},setup(e,{expose:i}){const{t:x}=d(),h=e,{rows:C}=h.data,P=n(),k=c(null),R=c([]),{loading:S,setLoading:U}=u();return(async()=>{try{U(!0);const{message:e}=await o();t(e)&&e.length>0?(R.value=e.map(e=>({label:e.name,value:e.id})),k.value=e[0].id):(k.value=null,R.value=[])}finally{U(!1)}})(),i({onConfirm:async({hide:e})=>{await r((()=>{if(null===k.value)throw s.error(x("Crontab.Planned.index_28")),new Error(x("Crontab.Planned.index_28"));return{id:k.value,crontab_ids:JSON.stringify(C.map(e=>e.id))}})()),P.setRefresh(!0),e()}}),(e,n)=>{const t=j,s=f,u=l;return g(),_("div",a,[p(u,null,{default:v(()=>[p(s,{label:e.$t("Crontab.Planned.index_27"),"show-feedback":!1},{default:v(()=>[y("div",w,[p(t,{value:m(k),"onUpdate:value":n[0]||(n[0]=e=>b(k)?k.value=e:null),loading:m(S),options:m(R)},null,8,["value","loading","options"])])]),_:1},8,["label"])]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/batch-legacy2.js b/BTPanel/static/vite/js/batch-legacy2.js index f59ddcc0..a21df0c0 100644 --- a/BTPanel/static/vite/js/batch-legacy2.js +++ b/BTPanel/static/vite/js/batch-legacy2.js @@ -1 +1 @@ -System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy16.js?v=1760428868419","./mail-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./index-legacy98.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419"],function(a,e){"use strict";var l,u,t,n,o,s,i,d,r,_,p,m,c,v,x,g,q,y,f,w;return{setters:[a=>{l=a._},a=>{u=a._},a=>{t=a._},a=>{n=a.aj},a=>{o=a.k,s=a.P,i=a.r,d=a.e,r=a.a2,_=a.V,p=a.a3,m=a.W,c=a.an,v=a.U,x=a.S},a=>{g=a.dR,q=a.au,y=a.df,f=a.dj,w=a.dV},null,null,null,null,null],execute:function(){const e={class:"w-100px ml-10px"};a("default",o({__name:"batch",props:{data:{}},setup(a,{expose:o}){const b=a,{getList:h}=b.data,{t:j}=s(),B=i(null),M=d({domain:"",password:"",random_str:"",maxnum:20,quota:5,quota_unit:"GB",quota_limit:1}),U=[{label:"GB",value:"GB"},{label:"MB",value:"MB"}],k={password:{required:!0,trigger:"blur",message:j("Config.Panel.index_67")}};return o({onConfirm:async()=>{await(B.value?.validate()),await n({domain:M.domain,password:M.password,random_str:M.random_str,maxnum:M.maxnum||20,quota:M.quota?M.quota+" "+M.quota_unit:"5 GB",quota_active:M.quota_limit}),h?.()}}),(a,n)=>{const o=g,s=u,i=q,d=y,b=f,h=w,j=l;return _(),r(j,{ref_key:"formRef",ref:B,model:v(M),rules:k,class:"p-20px"},{default:p(()=>[m(o,{label:a.$t("Layout.Sider.mail_3"),"show-require-mark":!0},{default:p(()=>[m(t,{class:"w-280px",value:v(M).domain,"onUpdate:value":n[0]||(n[0]=a=>v(M).domain=a),all:!1},null,8,["value"])]),_:1},8,["label"]),m(o,{label:a.$t("Config.Panel.index_66"),path:"password","show-require-mark":!0},{default:p(()=>[m(s,{class:"w-280px",value:v(M).password,"onUpdate:value":n[1]||(n[1]=a=>v(M).password=a),length:8,placeholder:a.$t("Config.Panel.index_67")},null,8,["value","placeholder"])]),_:1},8,["label"]),m(o,{label:a.$t("Mail.MailBox.index_32")},{default:p(()=>[m(i,{class:"w-280px!",value:v(M).random_str,"onUpdate:value":n[2]||(n[2]=a=>v(M).random_str=a),placeholder:""},null,8,["value"])]),_:1},8,["label"]),m(o,{label:a.$t("Mail.MailBox.index_33")},{default:p(()=>[m(d,{class:"w-280px!",min:1,"show-button":!1,value:v(M).maxnum,"onUpdate:value":n[3]||(n[3]=a=>v(M).maxnum=a)},null,8,["value"])]),_:1},8,["label"]),m(o,{label:"Quota limit"},{default:p(()=>[m(b,{"checked-value":1,"unchecked-value":0,value:v(M).quota_limit,"onUpdate:value":n[4]||(n[4]=a=>v(M).quota_limit=a)},null,8,["value"])]),_:1}),v(M).quota_limit?(_(),r(o,{key:0,label:a.$t("Mail.MailBox.index_3"),path:"quota"},{default:p(()=>[m(d,{value:v(M).quota,"onUpdate:value":n[5]||(n[5]=a=>v(M).quota=a),class:"w-170px",min:1,"show-button":!1,placeholder:""},null,8,["value"]),x("div",e,[m(h,{value:v(M).quota_unit,"onUpdate:value":n[6]||(n[6]=a=>v(M).quota_unit=a),options:U},null,8,["value"])])]),_:1},8,["label"])):c("",!0)]),_:1},8,["model"])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy16.js?v=1762424784323","./mail-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./index-legacy98.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323"],function(a,e){"use strict";var l,u,t,n,o,s,i,d,r,_,p,m,c,v,x,g,q,y,f,w;return{setters:[a=>{l=a._},a=>{u=a._},a=>{t=a._},a=>{n=a.aj},a=>{o=a.k,s=a.P,i=a.r,d=a.e,r=a.a2,_=a.V,p=a.a3,m=a.W,c=a.an,v=a.U,x=a.S},a=>{g=a.dR,q=a.au,y=a.df,f=a.dj,w=a.dV},null,null,null,null,null],execute:function(){const e={class:"w-100px ml-10px"};a("default",o({__name:"batch",props:{data:{}},setup(a,{expose:o}){const b=a,{getList:h}=b.data,{t:j}=s(),B=i(null),M=d({domain:"",password:"",random_str:"",maxnum:20,quota:5,quota_unit:"GB",quota_limit:1}),U=[{label:"GB",value:"GB"},{label:"MB",value:"MB"}],k={password:{required:!0,trigger:"blur",message:j("Config.Panel.index_67")}};return o({onConfirm:async()=>{await(B.value?.validate()),await n({domain:M.domain,password:M.password,random_str:M.random_str,maxnum:M.maxnum||20,quota:M.quota?M.quota+" "+M.quota_unit:"5 GB",quota_active:M.quota_limit}),h?.()}}),(a,n)=>{const o=g,s=u,i=q,d=y,b=f,h=w,j=l;return _(),r(j,{ref_key:"formRef",ref:B,model:v(M),rules:k,class:"p-20px"},{default:p(()=>[m(o,{label:a.$t("Layout.Sider.mail_3"),"show-require-mark":!0},{default:p(()=>[m(t,{class:"w-280px",value:v(M).domain,"onUpdate:value":n[0]||(n[0]=a=>v(M).domain=a),all:!1},null,8,["value"])]),_:1},8,["label"]),m(o,{label:a.$t("Config.Panel.index_66"),path:"password","show-require-mark":!0},{default:p(()=>[m(s,{class:"w-280px",value:v(M).password,"onUpdate:value":n[1]||(n[1]=a=>v(M).password=a),length:8,placeholder:a.$t("Config.Panel.index_67")},null,8,["value","placeholder"])]),_:1},8,["label"]),m(o,{label:a.$t("Mail.MailBox.index_32")},{default:p(()=>[m(i,{class:"w-280px!",value:v(M).random_str,"onUpdate:value":n[2]||(n[2]=a=>v(M).random_str=a),placeholder:""},null,8,["value"])]),_:1},8,["label"]),m(o,{label:a.$t("Mail.MailBox.index_33")},{default:p(()=>[m(d,{class:"w-280px!",min:1,"show-button":!1,value:v(M).maxnum,"onUpdate:value":n[3]||(n[3]=a=>v(M).maxnum=a)},null,8,["value"])]),_:1},8,["label"]),m(o,{label:"Quota limit"},{default:p(()=>[m(b,{"checked-value":1,"unchecked-value":0,value:v(M).quota_limit,"onUpdate:value":n[4]||(n[4]=a=>v(M).quota_limit=a)},null,8,["value"])]),_:1}),v(M).quota_limit?(_(),r(o,{key:0,label:a.$t("Mail.MailBox.index_3"),path:"quota"},{default:p(()=>[m(d,{value:v(M).quota,"onUpdate:value":n[5]||(n[5]=a=>v(M).quota=a),class:"w-170px",min:1,"show-button":!1,placeholder:""},null,8,["value"]),x("div",e,[m(h,{value:v(M).quota_unit,"onUpdate:value":n[6]||(n[6]=a=>v(M).quota_unit=a),options:U},null,8,["value"])])]),_:1},8,["label"])):c("",!0)]),_:1},8,["model"])}}}))}}}); diff --git a/BTPanel/static/vite/js/batch-legacy3.js b/BTPanel/static/vite/js/batch-legacy3.js index a4adafcb..708a3249 100644 --- a/BTPanel/static/vite/js/batch-legacy3.js +++ b/BTPanel/static/vite/js/batch-legacy3.js @@ -1 +1 @@ -System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./index-legacy87.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./index-legacy133.js?v=1760428868419","./index-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy12.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy8.js?v=1760428868419","./index-legacy131.js?v=1760428868419","./php-legacy.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./site-legacy4.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy15.js?v=1760428868419","./index-legacy245.js?v=1760428868419","./index-legacy99.js?v=1760428868419","./index-legacy108.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy10.js?v=1760428868419","./index-legacy98.js?v=1760428868419","./index-legacy100.js?v=1760428868419","./index-legacy101.js?v=1760428868419","./file-legacy.js?v=1760428868419","./theme-monokai-legacy.js?v=1760428868419","./refersh-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy17.js?v=1760428868419","./index-legacy105.js?v=1760428868419","./ssl-legacy.js?v=1760428868419","./cert-legacy.js?v=1760428868419","./ssl-lets-progress-legacy.js?v=1760428868419","./utils-legacy3.js?v=1760428868419","./index-legacy218.js?v=1760428868419","./paypal-js-legacy.js?v=1760428868419","./upload-legacy.js?v=1760428868419"],function(e,l){"use strict";var s,u,a,n,t,_,i,c,g,y,r,d,p,j,o,v,x,f,m;return{setters:[e=>{s=e._},e=>{u=e.u,a=e.G,n=e.H},e=>{t=e.w,_=e.m},e=>{i=e.d},e=>{c=e.k,g=e.P,y=e.r,r=e.R,d=e.V,p=e.W,j=e.a3,o=e.S,v=e.U,x=e.ak},e=>{f=e.dR,m=e.dV},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){const l={class:"p-20px"},h={class:"w-150px"};e("default",c({__name:"batch",props:{data:{}},setup(e,{expose:c}){const w=e,{t:P}=g(),{rows:b}=w.data,S=u(),H=y(null),k=y([]),{loading:R,setLoading:U}=i();return(async()=>{try{U(!0);const{message:e}=await a();t(e)&&e.length>0?(k.value=e.map(e=>({label:e.name,value:e.id})),H.value=e[0].id):(H.value=null,k.value=[])}finally{U(!1)}})(),c({onConfirm:async({hide:e})=>{await n((()=>{if(null===H.value)throw _.error(P("Site.PHP.add_site_46")),new Error(P("Site.PHP.add_site_46"));return{site_type:H.value,site_ids:JSON.stringify(b.map(e=>e.id))}})()),S.setRefresh(!0),e()}}),(e,u)=>{const a=m,n=f,t=s;return d(),r("div",l,[p(t,null,{default:j(()=>[p(n,{label:e.$t("Site.PHP.add_site_22"),"show-feedback":!1},{default:j(()=>[o("div",h,[p(a,{value:v(H),"onUpdate:value":u[0]||(u[0]=e=>x(H)?H.value=e:null),loading:v(R),options:v(k)},null,8,["value","loading","options"])])]),_:1},8,["label"])]),_:1})])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./index-legacy87.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./index-legacy132.js?v=1762424784323","./index-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy12.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy8.js?v=1762424784323","./index-legacy130.js?v=1762424784323","./php-legacy.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./site-legacy4.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy15.js?v=1762424784323","./index-legacy243.js?v=1762424784323","./index-legacy99.js?v=1762424784323","./index-legacy107.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy10.js?v=1762424784323","./index-legacy98.js?v=1762424784323","./index-legacy100.js?v=1762424784323","./theme-monokai-legacy.js?v=1762424784323","./file-legacy.js?v=1762424784323","./refersh-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy17.js?v=1762424784323","./index-legacy104.js?v=1762424784323","./ssl-legacy.js?v=1762424784323","./cert-legacy.js?v=1762424784323","./ssl-lets-progress-legacy.js?v=1762424784323","./utils-legacy3.js?v=1762424784323","./index-legacy216.js?v=1762424784323","./paypal-js-legacy.js?v=1762424784323","./upload-legacy.js?v=1762424784323"],function(e,l){"use strict";var s,u,a,n,t,_,i,c,g,y,r,p,d,j,o,v,x,f,m;return{setters:[e=>{s=e._},e=>{u=e.u,a=e.G,n=e.H},e=>{t=e.w,_=e.m},e=>{i=e.d},e=>{c=e.k,g=e.P,y=e.r,r=e.R,p=e.V,d=e.W,j=e.a3,o=e.S,v=e.U,x=e.ak},e=>{f=e.dR,m=e.dV},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){const l={class:"p-20px"},h={class:"w-150px"};e("default",c({__name:"batch",props:{data:{}},setup(e,{expose:c}){const w=e,{t:P}=g(),{rows:b}=w.data,S=u(),H=y(null),k=y([]),{loading:R,setLoading:U}=i();return(async()=>{try{U(!0);const{message:e}=await a();t(e)&&e.length>0?(k.value=e.map(e=>({label:e.name,value:e.id})),H.value=e[0].id):(H.value=null,k.value=[])}finally{U(!1)}})(),c({onConfirm:async({hide:e})=>{await n((()=>{if(null===H.value)throw _.error(P("Site.PHP.add_site_46")),new Error(P("Site.PHP.add_site_46"));return{site_type:H.value,site_ids:JSON.stringify(b.map(e=>e.id))}})()),S.setRefresh(!0),e()}}),(e,u)=>{const a=m,n=f,t=s;return p(),r("div",l,[d(t,null,{default:j(()=>[d(n,{label:e.$t("Site.PHP.add_site_22"),"show-feedback":!1},{default:j(()=>[o("div",h,[d(a,{value:v(H),"onUpdate:value":u[0]||(u[0]=e=>x(H)?H.value=e:null),loading:v(R),options:v(k)},null,8,["value","loading","options"])])]),_:1},8,["label"])]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/batch.js b/BTPanel/static/vite/js/batch.js index 67b94714..3695b960 100644 --- a/BTPanel/static/vite/js/batch.js +++ b/BTPanel/static/vite/js/batch.js @@ -1 +1 @@ -import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{bi as e,w as s,m as n}from"./page_layout.js?v=1760428868419";import{d as l}from"./public.js?v=1760428868419";import{g as o,o as t}from"./planned.js?v=1760428868419";import{k as r,P as i,r as u,R as d,V as p,W as m,a3 as _,S as v,U as c,ak as f}from"./vue.js?v=1760428868419";import{dR as b,dV as g}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const j={class:"p-20px"},w={class:"w-150px"},x=r({__name:"batch",props:{data:{}},setup(r,{expose:x}){const{t:y}=i(),h=r,{rows:C}=h.data,P=e(),k=u(null),R=u([]),{loading:S,setLoading:U}=l();(async()=>{try{U(!0);const{message:a}=await o();s(a)&&a.length>0?(R.value=a.map(a=>({label:a.name,value:a.id})),k.value=a[0].id):(k.value=null,R.value=[])}finally{U(!1)}})();return x({onConfirm:async({hide:a})=>{await t((()=>{if(null===k.value)throw n.error(y("Crontab.Planned.index_28")),new Error(y("Crontab.Planned.index_28"));return{id:k.value,crontab_ids:JSON.stringify(C.map(a=>a.id))}})()),P.setRefresh(!0),a()}}),(e,s)=>{const n=g,l=b,o=a;return p(),d("div",j,[m(o,null,{default:_(()=>[m(l,{label:e.$t("Crontab.Planned.index_27"),"show-feedback":!1},{default:_(()=>[v("div",w,[m(n,{value:c(k),"onUpdate:value":s[0]||(s[0]=a=>f(k)?k.value=a:null),loading:c(S),options:c(R)},null,8,["value","loading","options"])])]),_:1},8,["label"])]),_:1})])}}});export{x as default}; +import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{bi as e,w as s,m as n}from"./page_layout.js?v=1762424784323";import{d as l}from"./public.js?v=1762424784323";import{g as o,o as t}from"./planned.js?v=1762424784323";import{k as r,P as i,r as u,R as d,V as p,W as m,a3 as _,S as v,U as c,ak as f}from"./vue.js?v=1762424784323";import{dR as b,dV as g}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const j={class:"p-20px"},w={class:"w-150px"},x=r({__name:"batch",props:{data:{}},setup(r,{expose:x}){const{t:y}=i(),h=r,{rows:C}=h.data,P=e(),k=u(null),R=u([]),{loading:S,setLoading:U}=l();(async()=>{try{U(!0);const{message:a}=await o();s(a)&&a.length>0?(R.value=a.map(a=>({label:a.name,value:a.id})),k.value=a[0].id):(k.value=null,R.value=[])}finally{U(!1)}})();return x({onConfirm:async({hide:a})=>{await t((()=>{if(null===k.value)throw n.error(y("Crontab.Planned.index_28")),new Error(y("Crontab.Planned.index_28"));return{id:k.value,crontab_ids:JSON.stringify(C.map(a=>a.id))}})()),P.setRefresh(!0),a()}}),(e,s)=>{const n=g,l=b,o=a;return p(),d("div",j,[m(o,null,{default:_(()=>[m(l,{label:e.$t("Crontab.Planned.index_27"),"show-feedback":!1},{default:_(()=>[v("div",w,[m(n,{value:c(k),"onUpdate:value":s[0]||(s[0]=a=>f(k)?k.value=a:null),loading:c(S),options:c(R)},null,8,["value","loading","options"])])]),_:1},8,["label"])]),_:1})])}}});export{x as default}; diff --git a/BTPanel/static/vite/js/batch2.js b/BTPanel/static/vite/js/batch2.js index e6af402a..6625471f 100644 --- a/BTPanel/static/vite/js/batch2.js +++ b/BTPanel/static/vite/js/batch2.js @@ -1 +1 @@ -import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{_ as e}from"./index.vue_vue_type_script_setup_true_lang2.js?v=1760428868419";import{_ as l}from"./index.vue_vue_type_script_setup_true_lang16.js?v=1760428868419";import{aj as t}from"./mail.js?v=1760428868419";import{k as u,P as o,r as s,e as n,a2 as i,V as r,a3 as d,W as m,an as p,U as _,S as v}from"./vue.js?v=1760428868419";import{dR as x,au as c,df as f,dj as q,dV as w}from"./naive.js?v=1760428868419";import"./index98.js?v=1760428868419";import"./page_layout.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./public.js?v=1760428868419";const b={class:"w-100px ml-10px"},h=u({__name:"batch",props:{data:{}},setup(u,{expose:h}){const j=u,{getList:g}=j.data,{t:B}=o(),y=s(null),M=n({domain:"",password:"",random_str:"",maxnum:20,quota:5,quota_unit:"GB",quota_limit:1}),U=[{label:"GB",value:"GB"},{label:"MB",value:"MB"}],k={password:{required:!0,trigger:"blur",message:B("Config.Panel.index_67")}};return h({onConfirm:async()=>{var a;await(null==(a=y.value)?void 0:a.validate()),await t({domain:M.domain,password:M.password,random_str:M.random_str,maxnum:M.maxnum||20,quota:M.quota?M.quota+" "+M.quota_unit:"5 GB",quota_active:M.quota_limit}),null==g||g()}}),(t,u)=>{const o=x,s=e,n=c,h=f,j=q,g=w,B=a;return r(),i(B,{ref_key:"formRef",ref:y,model:_(M),rules:k,class:"p-20px"},{default:d(()=>[m(o,{label:t.$t("Layout.Sider.mail_3"),"show-require-mark":!0},{default:d(()=>[m(l,{class:"w-280px",value:_(M).domain,"onUpdate:value":u[0]||(u[0]=a=>_(M).domain=a),all:!1},null,8,["value"])]),_:1},8,["label"]),m(o,{label:t.$t("Config.Panel.index_66"),path:"password","show-require-mark":!0},{default:d(()=>[m(s,{class:"w-280px",value:_(M).password,"onUpdate:value":u[1]||(u[1]=a=>_(M).password=a),length:8,placeholder:t.$t("Config.Panel.index_67")},null,8,["value","placeholder"])]),_:1},8,["label"]),m(o,{label:t.$t("Mail.MailBox.index_32")},{default:d(()=>[m(n,{class:"w-280px!",value:_(M).random_str,"onUpdate:value":u[2]||(u[2]=a=>_(M).random_str=a),placeholder:""},null,8,["value"])]),_:1},8,["label"]),m(o,{label:t.$t("Mail.MailBox.index_33")},{default:d(()=>[m(h,{class:"w-280px!",min:1,"show-button":!1,value:_(M).maxnum,"onUpdate:value":u[3]||(u[3]=a=>_(M).maxnum=a)},null,8,["value"])]),_:1},8,["label"]),m(o,{label:"Quota limit"},{default:d(()=>[m(j,{"checked-value":1,"unchecked-value":0,value:_(M).quota_limit,"onUpdate:value":u[4]||(u[4]=a=>_(M).quota_limit=a)},null,8,["value"])]),_:1}),_(M).quota_limit?(r(),i(o,{key:0,label:t.$t("Mail.MailBox.index_3"),path:"quota"},{default:d(()=>[m(h,{value:_(M).quota,"onUpdate:value":u[5]||(u[5]=a=>_(M).quota=a),class:"w-170px",min:1,"show-button":!1,placeholder:""},null,8,["value"]),v("div",b,[m(g,{value:_(M).quota_unit,"onUpdate:value":u[6]||(u[6]=a=>_(M).quota_unit=a),options:U},null,8,["value"])])]),_:1},8,["label"])):p("",!0)]),_:1},8,["model"])}}});export{h as default}; +import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{_ as e}from"./index.vue_vue_type_script_setup_true_lang2.js?v=1762424784323";import{_ as l}from"./index.vue_vue_type_script_setup_true_lang16.js?v=1762424784323";import{aj as t}from"./mail.js?v=1762424784323";import{k as u,P as o,r as s,e as n,a2 as i,V as r,a3 as d,W as m,an as p,U as _,S as v}from"./vue.js?v=1762424784323";import{dR as x,au as c,df as f,dj as q,dV as w}from"./naive.js?v=1762424784323";import"./index98.js?v=1762424784323";import"./page_layout.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./public.js?v=1762424784323";const b={class:"w-100px ml-10px"},h=u({__name:"batch",props:{data:{}},setup(u,{expose:h}){const j=u,{getList:g}=j.data,{t:B}=o(),y=s(null),M=n({domain:"",password:"",random_str:"",maxnum:20,quota:5,quota_unit:"GB",quota_limit:1}),U=[{label:"GB",value:"GB"},{label:"MB",value:"MB"}],k={password:{required:!0,trigger:"blur",message:B("Config.Panel.index_67")}};return h({onConfirm:async()=>{var a;await(null==(a=y.value)?void 0:a.validate()),await t({domain:M.domain,password:M.password,random_str:M.random_str,maxnum:M.maxnum||20,quota:M.quota?M.quota+" "+M.quota_unit:"5 GB",quota_active:M.quota_limit}),null==g||g()}}),(t,u)=>{const o=x,s=e,n=c,h=f,j=q,g=w,B=a;return r(),i(B,{ref_key:"formRef",ref:y,model:_(M),rules:k,class:"p-20px"},{default:d(()=>[m(o,{label:t.$t("Layout.Sider.mail_3"),"show-require-mark":!0},{default:d(()=>[m(l,{class:"w-280px",value:_(M).domain,"onUpdate:value":u[0]||(u[0]=a=>_(M).domain=a),all:!1},null,8,["value"])]),_:1},8,["label"]),m(o,{label:t.$t("Config.Panel.index_66"),path:"password","show-require-mark":!0},{default:d(()=>[m(s,{class:"w-280px",value:_(M).password,"onUpdate:value":u[1]||(u[1]=a=>_(M).password=a),length:8,placeholder:t.$t("Config.Panel.index_67")},null,8,["value","placeholder"])]),_:1},8,["label"]),m(o,{label:t.$t("Mail.MailBox.index_32")},{default:d(()=>[m(n,{class:"w-280px!",value:_(M).random_str,"onUpdate:value":u[2]||(u[2]=a=>_(M).random_str=a),placeholder:""},null,8,["value"])]),_:1},8,["label"]),m(o,{label:t.$t("Mail.MailBox.index_33")},{default:d(()=>[m(h,{class:"w-280px!",min:1,"show-button":!1,value:_(M).maxnum,"onUpdate:value":u[3]||(u[3]=a=>_(M).maxnum=a)},null,8,["value"])]),_:1},8,["label"]),m(o,{label:"Quota limit"},{default:d(()=>[m(j,{"checked-value":1,"unchecked-value":0,value:_(M).quota_limit,"onUpdate:value":u[4]||(u[4]=a=>_(M).quota_limit=a)},null,8,["value"])]),_:1}),_(M).quota_limit?(r(),i(o,{key:0,label:t.$t("Mail.MailBox.index_3"),path:"quota"},{default:d(()=>[m(h,{value:_(M).quota,"onUpdate:value":u[5]||(u[5]=a=>_(M).quota=a),class:"w-170px",min:1,"show-button":!1,placeholder:""},null,8,["value"]),v("div",b,[m(g,{value:_(M).quota_unit,"onUpdate:value":u[6]||(u[6]=a=>_(M).quota_unit=a),options:U},null,8,["value"])])]),_:1},8,["label"])):p("",!0)]),_:1},8,["model"])}}});export{h as default}; diff --git a/BTPanel/static/vite/js/batch3.js b/BTPanel/static/vite/js/batch3.js index f8d20145..e51d0431 100644 --- a/BTPanel/static/vite/js/batch3.js +++ b/BTPanel/static/vite/js/batch3.js @@ -1 +1 @@ -import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{u as s,G as t,H as i}from"./index87.js?v=1760428868419";import{w as r,m as p}from"./page_layout.js?v=1760428868419";import{d as a}from"./public.js?v=1760428868419";import{k as o,P as _,r as u,R as n,V as l,W as m,a3 as d,S as j,U as v,ak as x}from"./vue.js?v=1760428868419";import{dR as c,dV as f}from"./naive.js?v=1760428868419";import"./index133.js?v=1760428868419";import"./index.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang12.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang8.js?v=1760428868419";import"./index131.js?v=1760428868419";import"./php.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./site.js?v=1760428868419";import"./site4.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang15.js?v=1760428868419";import"./index245.js?v=1760428868419";import"./index99.js?v=1760428868419";import"./index108.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang10.js?v=1760428868419";import"./index98.js?v=1760428868419";import"./index100.js?v=1760428868419";import"./index101.js?v=1760428868419";import"./file.js?v=1760428868419";import"./theme-monokai.js?v=1760428868419";import"./refersh.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang17.js?v=1760428868419";import"./index105.js?v=1760428868419";import"./ssl.js?v=1760428868419";import"./cert.js?v=1760428868419";import"./ssl-lets-progress.js?v=1760428868419";import"./utils3.js?v=1760428868419";import"./index218.js?v=1760428868419";import"./paypal-js.js?v=1760428868419";import"./upload.js?v=1760428868419";const g={class:"p-20px"},y={class:"w-150px"},h=o({__name:"batch",props:{data:{}},setup(o,{expose:h}){const w=o,{t:P}=_(),{rows:b}=w.data,H=s(),S=u(null),k=u([]),{loading:R,setLoading:U}=a();(async()=>{try{U(!0);const{message:e}=await t();r(e)&&e.length>0?(k.value=e.map(e=>({label:e.name,value:e.id})),S.value=e[0].id):(S.value=null,k.value=[])}finally{U(!1)}})();return h({onConfirm:async({hide:e})=>{await i((()=>{if(null===S.value)throw p.error(P("Site.PHP.add_site_46")),new Error(P("Site.PHP.add_site_46"));return{site_type:S.value,site_ids:JSON.stringify(b.map(e=>e.id))}})()),H.setRefresh(!0),e()}}),(s,t)=>{const i=f,r=c,p=e;return l(),n("div",g,[m(p,null,{default:d(()=>[m(r,{label:s.$t("Site.PHP.add_site_22"),"show-feedback":!1},{default:d(()=>[j("div",y,[m(i,{value:v(S),"onUpdate:value":t[0]||(t[0]=e=>x(S)?S.value=e:null),loading:v(R),options:v(k)},null,8,["value","loading","options"])])]),_:1},8,["label"])]),_:1})])}}});export{h as default}; +import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{u as s,G as t,H as i}from"./index87.js?v=1762424784323";import{w as r,m as p}from"./page_layout.js?v=1762424784323";import{d as a}from"./public.js?v=1762424784323";import{k as o,P as _,r as u,R as n,V as l,W as m,a3 as d,S as j,U as v,ak as x}from"./vue.js?v=1762424784323";import{dR as c,dV as f}from"./naive.js?v=1762424784323";import"./index132.js?v=1762424784323";import"./index.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang12.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang8.js?v=1762424784323";import"./index130.js?v=1762424784323";import"./php.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./site.js?v=1762424784323";import"./site4.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang15.js?v=1762424784323";import"./index243.js?v=1762424784323";import"./index99.js?v=1762424784323";import"./index107.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang10.js?v=1762424784323";import"./index98.js?v=1762424784323";import"./index100.js?v=1762424784323";import"./theme-monokai.js?v=1762424784323";import"./file.js?v=1762424784323";import"./refersh.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang17.js?v=1762424784323";import"./index104.js?v=1762424784323";import"./ssl.js?v=1762424784323";import"./cert.js?v=1762424784323";import"./ssl-lets-progress.js?v=1762424784323";import"./utils3.js?v=1762424784323";import"./index216.js?v=1762424784323";import"./paypal-js.js?v=1762424784323";import"./upload.js?v=1762424784323";const g={class:"p-20px"},y={class:"w-150px"},h=o({__name:"batch",props:{data:{}},setup(o,{expose:h}){const w=o,{t:P}=_(),{rows:b}=w.data,H=s(),S=u(null),k=u([]),{loading:R,setLoading:U}=a();(async()=>{try{U(!0);const{message:e}=await t();r(e)&&e.length>0?(k.value=e.map(e=>({label:e.name,value:e.id})),S.value=e[0].id):(S.value=null,k.value=[])}finally{U(!1)}})();return h({onConfirm:async({hide:e})=>{await i((()=>{if(null===S.value)throw p.error(P("Site.PHP.add_site_46")),new Error(P("Site.PHP.add_site_46"));return{site_type:S.value,site_ids:JSON.stringify(b.map(e=>e.id))}})()),H.setRefresh(!0),e()}}),(s,t)=>{const i=f,r=c,p=e;return l(),n("div",g,[m(p,null,{default:d(()=>[m(r,{label:s.$t("Site.PHP.add_site_22"),"show-feedback":!1},{default:d(()=>[j("div",y,[m(i,{value:v(S),"onUpdate:value":t[0]||(t[0]=e=>x(S)?S.value=e:null),loading:v(R),options:v(k)},null,8,["value","loading","options"])])]),_:1},8,["label"])]),_:1})])}}});export{h as default}; diff --git a/BTPanel/static/vite/js/campaign-legacy.js b/BTPanel/static/vite/js/campaign-legacy.js index 37a71f96..29f846eb 100644 --- a/BTPanel/static/vite/js/campaign-legacy.js +++ b/BTPanel/static/vite/js/campaign-legacy.js @@ -1 +1 @@ -System.register(["./page_layout-legacy.js?v=1760428868419"],function(s,a){"use strict";var e,t;return{setters:[s=>{e=s.t,t=s.i}],execute:function(){s("d",s=>e.post("/campaign/overview",s)),s("I",s=>e.post("/plugin?action=a&name=mail_sys&s=add_mail_type",s,{requestOptions:{loading:t.global.t("Mail.Api.index_22"),successMessage:!0}})),s("H",s=>e.post("/plugin?action=a&name=mail_sys&s=edit_mail_type",s,{requestOptions:{loading:t.global.t("Mail.Api.index_42"),successMessage:!0}})),s("K",s=>e.post("/plugin?action=a&name=mail_sys&s=get_mail_type_info_list",s)),s("A",(s,a=!0)=>e.post("/plugin?action=a&name=mail_sys&s=update_subscription_state",s,{requestOptions:{loading:"Modifying status, please wait...",successMessage:a}})),s("J",(s,a=!0)=>e.post("/plugin?action=a&name=mail_sys&s=del_mail_type_list",s,{requestOptions:{loading:a?t.global.t("Mail.Api.index_37"):"",successMessage:a}})),s("C",s=>e.post("/plugin?action=a&name=mail_sys&s=get_unsubscribe_list",s)),s("B",(s,a=!0)=>e.post("/plugin?action=a&name=mail_sys&s=del_unsubscribe_list",s,{requestOptions:{loading:a?t.global.t("Mail.Api.index_37"):"",successMessage:a}})),s("y",s=>e.post("/plugin?action=a&name=mail_sys&s=edit_type_unsubscribe_list",s,{requestOptions:{loading:t.global.t("Mail.Api.index_43"),successMessage:!0}})),s("v",s=>e.post("/plugin?action=a&name=mail_sys&s=edit_type_unsubscribe_list",s,{requestOptions:{loading:t.global.t("Mail.Api.index_43"),successMessage:!0}})),s("x",s=>e.post("/plugin?action=a&name=mail_sys&s=import_contacts_etypes",s,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}})),s("w",s=>e.post("/plugin?action=a&name=mail_sys&s=import_contacts_from_content",s,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}})),s("z",s=>e.post("/plugin?action=a&name=mail_sys&s=get_contacts_list",s)),s("N",s=>e.post("/plugin?action=a&name=mail_sys&s=get_abnormal_recipient",s)),s("M",(s,a=!0)=>e.post("/plugin?action=a&name=mail_sys&s=del_abnormal_recipient",s,{requestOptions:{loading:a?t.global.t("Mail.Api.index_37"):"",successMessage:a}})),s("P",()=>e.post("/plugin?action=a&name=mail_sys&s=get_abnormal_status")),s("O",s=>e.post("/plugin?action=a&name=mail_sys&s=clear_abnormal_recipient",s,{requestOptions:{loading:t.global.t("Mail.Api.index_37"),successMessage:!0}})),s("h",s=>e.post("/plugin?action=a&name=mail_sys&s=get_contact_number",s)),s("V",s=>e.post("/plugin?action=a&name=mail_sys&s=get_task_unsubscribe_list",s)),s("b",(s={})=>e.post("/plugin?action=a&name=mail_sys&s=get_task_all",s)),s("q",s=>e.post("/plugin?action=a&name=mail_sys&s=export_email_template",s)),s("u",s=>e.post("/plugin?action=a&name=mail_sys&s=import_email_template",s,{requestOptions:{loading:t.global.t("Mail.Api.index_21"),successMessage:!0}})),s("p",s=>e.post("/plugin?action=a&name=mail_sys&s=copy_template",s,{requestOptions:{loading:"Copying template, please wait...",successMessage:!0}})),s("D",(s={})=>e.post("/plugin?action=a&name=mail_sys&s=get_mail_type_list",s)),s("F",s=>e.post("/plugin?action=a&name=mail_sys&s=export_contact_group",s,{requestOptions:{loading:"Exporting, please wait..."}})),s("E",s=>e.post("/plugin?action=a&name=mail_sys&s=import_contact_group",s,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}})),s("G",s=>e.post("/plugin?action=a&name=mail_sys&s=merge_groups",s,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}})),s("n",s=>e.post("/plugin?action=a&name=mail_sys&s=export_task_errlog_to_csv",s,{requestOptions:{loading:"Exporting, please wait..."}})),s("f",(s={})=>e.post("/plugin?action=a&name=mail_sys&s=get_service_status",s)),s("L",s=>e.post("/plugin?action=a&name=mail_sys&s=check_email_valid",s,{requestOptions:{loading:"Scanning, please wait...",successMessage:!0}})),s("s",s=>e.post("/plugin?action=a&name=mail_sys&s=set_abnormal_mail_check_switch",s,{requestOptions:{loading:"Setting, please wait...",successMessage:!0}})),s("m",s=>e.post("/plugin?action=a&name=mail_sys&s=add_task",s,{requestOptions:{loading:"Adding task, please wait...",successMessage:!0}})),s("l",s=>e.post("/plugin?action=a&name=mail_sys&s=update_task",s,{requestOptions:{loading:"Editing task, please wait...",successMessage:!0}})),s("k",s=>e.post("/plugin?action=a&name=mail_sys&s=send_mail_test",s,{requestOptions:{loading:"Sending test email, please wait...",successMessage:!0}})),s("c",(s={})=>e.post("/plugin?action=a&name=mail_sys&s=get_mail_type_list",s)),s("a",()=>e.post("/plugin?action=a&name=mail_sys&s=get_email_temp")),s("t",s=>e.post("/plugin?action=a&name=mail_sys&s=get_email_temp_list",s)),s("i",s=>e.post("/plugin?action=a&name=mail_sys&s=get_task_email_content",s)),s("o",s=>e.post("/plugin?action=a&name=mail_sys&s=add_email_temp",s,{requestOptions:{loading:"Adding template, please wait...",successMessage:!0}})),s("j",(s,a=!0)=>e.post("/plugin?action=a&name=mail_sys&s=edit_email_temp",s,{requestOptions:{loading:a?"Editing template, please wait...":"",successMessage:a}})),s("r",s=>e.post("/plugin?action=a&name=mail_sys&s=del_email_temp",s,{requestOptions:{loading:"Deleting template, please wait...",successMessage:!0}})),s("Q",(s,a=!0)=>e.post("/campaign/set_automation",s,{headers:{"Content-Type":"application/json"},requestOptions:{loading:a?"Adding, please wait...":""}})),s("e",s=>e.post("/campaign/set_automation",s,{headers:{"Content-Type":"application/json"},requestOptions:{loading:"Setting up, please wait..."}})),s("T",s=>e.post("/campaign/get_automations",s,{headers:{"Content-Type":"application/json"}})),s("S",s=>e.post("/campaign/remove_automation",s,{headers:{"Content-Type":"application/json"}})),s("g",s=>e.post("/campaign/get_automation_workflow",s,{headers:{"Content-Type":"application/json"}})),s("U",s=>e.post("/campaign/set_automation_status",s,{headers:{"Content-Type":"application/json"},requestOptions:{loading:"Setting up, please wait...",successMessage:!0}})),s("R",s=>e.post("/campaign/set_automation_name",s,{headers:{"Content-Type":"application/json"},requestOptions:{loading:"Renaming in progress, please wait...",successMessage:!0}}))}}}); +System.register(["./page_layout-legacy.js?v=1762424784323"],function(s,a){"use strict";var e,t;return{setters:[s=>{e=s.t,t=s.i}],execute:function(){s("d",s=>e.post("/campaign/overview",s)),s("I",s=>e.post("/plugin?action=a&name=mail_sys&s=add_mail_type",s,{requestOptions:{loading:t.global.t("Mail.Api.index_22"),successMessage:!0}})),s("H",s=>e.post("/plugin?action=a&name=mail_sys&s=edit_mail_type",s,{requestOptions:{loading:t.global.t("Mail.Api.index_42"),successMessage:!0}})),s("K",s=>e.post("/plugin?action=a&name=mail_sys&s=get_mail_type_info_list",s)),s("A",(s,a=!0)=>e.post("/plugin?action=a&name=mail_sys&s=update_subscription_state",s,{requestOptions:{loading:"Modifying status, please wait...",successMessage:a}})),s("J",(s,a=!0)=>e.post("/plugin?action=a&name=mail_sys&s=del_mail_type_list",s,{requestOptions:{loading:a?t.global.t("Mail.Api.index_37"):"",successMessage:a}})),s("C",s=>e.post("/plugin?action=a&name=mail_sys&s=get_unsubscribe_list",s)),s("B",(s,a=!0)=>e.post("/plugin?action=a&name=mail_sys&s=del_unsubscribe_list",s,{requestOptions:{loading:a?t.global.t("Mail.Api.index_37"):"",successMessage:a}})),s("y",s=>e.post("/plugin?action=a&name=mail_sys&s=edit_type_unsubscribe_list",s,{requestOptions:{loading:t.global.t("Mail.Api.index_43"),successMessage:!0}})),s("v",s=>e.post("/plugin?action=a&name=mail_sys&s=edit_type_unsubscribe_list",s,{requestOptions:{loading:t.global.t("Mail.Api.index_43"),successMessage:!0}})),s("x",s=>e.post("/plugin?action=a&name=mail_sys&s=import_contacts_etypes",s,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}})),s("w",s=>e.post("/plugin?action=a&name=mail_sys&s=import_contacts_from_content",s,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}})),s("z",s=>e.post("/plugin?action=a&name=mail_sys&s=get_contacts_list",s)),s("N",s=>e.post("/plugin?action=a&name=mail_sys&s=get_abnormal_recipient",s)),s("M",(s,a=!0)=>e.post("/plugin?action=a&name=mail_sys&s=del_abnormal_recipient",s,{requestOptions:{loading:a?t.global.t("Mail.Api.index_37"):"",successMessage:a}})),s("P",()=>e.post("/plugin?action=a&name=mail_sys&s=get_abnormal_status")),s("O",s=>e.post("/plugin?action=a&name=mail_sys&s=clear_abnormal_recipient",s,{requestOptions:{loading:t.global.t("Mail.Api.index_37"),successMessage:!0}})),s("h",s=>e.post("/plugin?action=a&name=mail_sys&s=get_contact_number",s)),s("V",s=>e.post("/plugin?action=a&name=mail_sys&s=get_task_unsubscribe_list",s)),s("b",(s={})=>e.post("/plugin?action=a&name=mail_sys&s=get_task_all",s)),s("q",s=>e.post("/plugin?action=a&name=mail_sys&s=export_email_template",s)),s("u",s=>e.post("/plugin?action=a&name=mail_sys&s=import_email_template",s,{requestOptions:{loading:t.global.t("Mail.Api.index_21"),successMessage:!0}})),s("p",s=>e.post("/plugin?action=a&name=mail_sys&s=copy_template",s,{requestOptions:{loading:"Copying template, please wait...",successMessage:!0}})),s("D",(s={})=>e.post("/plugin?action=a&name=mail_sys&s=get_mail_type_list",s)),s("F",s=>e.post("/plugin?action=a&name=mail_sys&s=export_contact_group",s,{requestOptions:{loading:"Exporting, please wait..."}})),s("E",s=>e.post("/plugin?action=a&name=mail_sys&s=import_contact_group",s,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}})),s("G",s=>e.post("/plugin?action=a&name=mail_sys&s=merge_groups",s,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}})),s("n",s=>e.post("/plugin?action=a&name=mail_sys&s=export_task_errlog_to_csv",s,{requestOptions:{loading:"Exporting, please wait..."}})),s("f",(s={})=>e.post("/plugin?action=a&name=mail_sys&s=get_service_status",s)),s("L",s=>e.post("/plugin?action=a&name=mail_sys&s=check_email_valid",s,{requestOptions:{loading:"Scanning, please wait...",successMessage:!0}})),s("s",s=>e.post("/plugin?action=a&name=mail_sys&s=set_abnormal_mail_check_switch",s,{requestOptions:{loading:"Setting, please wait...",successMessage:!0}})),s("m",s=>e.post("/plugin?action=a&name=mail_sys&s=add_task",s,{requestOptions:{loading:"Adding task, please wait...",successMessage:!0}})),s("l",s=>e.post("/plugin?action=a&name=mail_sys&s=update_task",s,{requestOptions:{loading:"Editing task, please wait...",successMessage:!0}})),s("k",s=>e.post("/plugin?action=a&name=mail_sys&s=send_mail_test",s,{requestOptions:{loading:"Sending test email, please wait...",successMessage:!0}})),s("c",(s={})=>e.post("/plugin?action=a&name=mail_sys&s=get_mail_type_list",s)),s("a",()=>e.post("/plugin?action=a&name=mail_sys&s=get_email_temp")),s("t",s=>e.post("/plugin?action=a&name=mail_sys&s=get_email_temp_list",s)),s("i",s=>e.post("/plugin?action=a&name=mail_sys&s=get_task_email_content",s)),s("o",s=>e.post("/plugin?action=a&name=mail_sys&s=add_email_temp",s,{requestOptions:{loading:"Adding template, please wait...",successMessage:!0}})),s("j",(s,a=!0)=>e.post("/plugin?action=a&name=mail_sys&s=edit_email_temp",s,{requestOptions:{loading:a?"Editing template, please wait...":"",successMessage:a}})),s("r",s=>e.post("/plugin?action=a&name=mail_sys&s=del_email_temp",s,{requestOptions:{loading:"Deleting template, please wait...",successMessage:!0}})),s("Q",(s,a=!0)=>e.post("/campaign/set_automation",s,{headers:{"Content-Type":"application/json"},requestOptions:{loading:a?"Adding, please wait...":""}})),s("e",s=>e.post("/campaign/set_automation",s,{headers:{"Content-Type":"application/json"},requestOptions:{loading:"Setting up, please wait..."}})),s("T",s=>e.post("/campaign/get_automations",s,{headers:{"Content-Type":"application/json"}})),s("S",s=>e.post("/campaign/remove_automation",s,{headers:{"Content-Type":"application/json"}})),s("g",s=>e.post("/campaign/get_automation_workflow",s,{headers:{"Content-Type":"application/json"}})),s("U",s=>e.post("/campaign/set_automation_status",s,{headers:{"Content-Type":"application/json"},requestOptions:{loading:"Setting up, please wait...",successMessage:!0}})),s("R",s=>e.post("/campaign/set_automation_name",s,{headers:{"Content-Type":"application/json"},requestOptions:{loading:"Renaming in progress, please wait...",successMessage:!0}}))}}}); diff --git a/BTPanel/static/vite/js/campaign.js b/BTPanel/static/vite/js/campaign.js index 746ca739..d54e8d4c 100644 --- a/BTPanel/static/vite/js/campaign.js +++ b/BTPanel/static/vite/js/campaign.js @@ -1 +1 @@ -import{t as s,i as a}from"./page_layout.js?v=1760428868419";const e=a=>s.post("/campaign/overview",a),t=e=>s.post("/plugin?action=a&name=mail_sys&s=add_mail_type",e,{requestOptions:{loading:a.global.t("Mail.Api.index_22"),successMessage:!0}}),i=e=>s.post("/plugin?action=a&name=mail_sys&s=edit_mail_type",e,{requestOptions:{loading:a.global.t("Mail.Api.index_42"),successMessage:!0}}),n=a=>s.post("/plugin?action=a&name=mail_sys&s=get_mail_type_info_list",a),o=(a,e=!0)=>s.post("/plugin?action=a&name=mail_sys&s=update_subscription_state",a,{requestOptions:{loading:"Modifying status, please wait...",successMessage:e}}),p=(e,t=!0)=>s.post("/plugin?action=a&name=mail_sys&s=del_mail_type_list",e,{requestOptions:{loading:t?a.global.t("Mail.Api.index_37"):"",successMessage:t}}),l=a=>s.post("/plugin?action=a&name=mail_sys&s=get_unsubscribe_list",a),g=(e,t=!0)=>s.post("/plugin?action=a&name=mail_sys&s=del_unsubscribe_list",e,{requestOptions:{loading:t?a.global.t("Mail.Api.index_37"):"",successMessage:t}}),_=e=>s.post("/plugin?action=a&name=mail_sys&s=edit_type_unsubscribe_list",e,{requestOptions:{loading:a.global.t("Mail.Api.index_43"),successMessage:!0}}),c=e=>s.post("/plugin?action=a&name=mail_sys&s=edit_type_unsubscribe_list",e,{requestOptions:{loading:a.global.t("Mail.Api.index_43"),successMessage:!0}}),m=a=>s.post("/plugin?action=a&name=mail_sys&s=import_contacts_etypes",a,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}}),u=a=>s.post("/plugin?action=a&name=mail_sys&s=import_contacts_from_content",a,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}}),r=a=>s.post("/plugin?action=a&name=mail_sys&s=get_contacts_list",a),d=a=>s.post("/plugin?action=a&name=mail_sys&s=get_abnormal_recipient",a),y=(e,t=!0)=>s.post("/plugin?action=a&name=mail_sys&s=del_abnormal_recipient",e,{requestOptions:{loading:t?a.global.t("Mail.Api.index_37"):"",successMessage:t}}),M=()=>s.post("/plugin?action=a&name=mail_sys&s=get_abnormal_status"),q=e=>s.post("/plugin?action=a&name=mail_sys&s=clear_abnormal_recipient",e,{requestOptions:{loading:a.global.t("Mail.Api.index_37"),successMessage:!0}}),O=a=>s.post("/plugin?action=a&name=mail_sys&s=get_contact_number",a),b=a=>s.post("/plugin?action=a&name=mail_sys&s=get_task_unsubscribe_list",a),w=(a={})=>s.post("/plugin?action=a&name=mail_sys&s=get_task_all",a),x=a=>s.post("/plugin?action=a&name=mail_sys&s=export_email_template",a),A=e=>s.post("/plugin?action=a&name=mail_sys&s=import_email_template",e,{requestOptions:{loading:a.global.t("Mail.Api.index_21"),successMessage:!0}}),k=a=>s.post("/plugin?action=a&name=mail_sys&s=copy_template",a,{requestOptions:{loading:"Copying template, please wait...",successMessage:!0}}),h=(a={})=>s.post("/plugin?action=a&name=mail_sys&s=get_mail_type_list",a),j=a=>s.post("/plugin?action=a&name=mail_sys&s=export_contact_group",a,{requestOptions:{loading:"Exporting, please wait..."}}),C=a=>s.post("/plugin?action=a&name=mail_sys&s=import_contact_group",a,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}}),T=a=>s.post("/plugin?action=a&name=mail_sys&s=merge_groups",a,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}}),v=a=>s.post("/plugin?action=a&name=mail_sys&s=export_task_errlog_to_csv",a,{requestOptions:{loading:"Exporting, please wait..."}}),f=(a={})=>s.post("/plugin?action=a&name=mail_sys&s=get_service_status",a),S=a=>s.post("/plugin?action=a&name=mail_sys&s=check_email_valid",a,{requestOptions:{loading:"Scanning, please wait...",successMessage:!0}}),E=a=>s.post("/plugin?action=a&name=mail_sys&s=set_abnormal_mail_check_switch",a,{requestOptions:{loading:"Setting, please wait...",successMessage:!0}}),P=a=>s.post("/plugin?action=a&name=mail_sys&s=add_task",a,{requestOptions:{loading:"Adding task, please wait...",successMessage:!0}}),D=a=>s.post("/plugin?action=a&name=mail_sys&s=update_task",a,{requestOptions:{loading:"Editing task, please wait...",successMessage:!0}}),R=a=>s.post("/plugin?action=a&name=mail_sys&s=send_mail_test",a,{requestOptions:{loading:"Sending test email, please wait...",successMessage:!0}}),z=(a={})=>s.post("/plugin?action=a&name=mail_sys&s=get_mail_type_list",a),B=()=>s.post("/plugin?action=a&name=mail_sys&s=get_email_temp"),F=a=>s.post("/plugin?action=a&name=mail_sys&s=get_email_temp_list",a),G=a=>s.post("/plugin?action=a&name=mail_sys&s=get_task_email_content",a),H=a=>s.post("/plugin?action=a&name=mail_sys&s=add_email_temp",a,{requestOptions:{loading:"Adding template, please wait...",successMessage:!0}}),I=(a,e=!0)=>s.post("/plugin?action=a&name=mail_sys&s=edit_email_temp",a,{requestOptions:{loading:e?"Editing template, please wait...":"",successMessage:e}}),J=a=>s.post("/plugin?action=a&name=mail_sys&s=del_email_temp",a,{requestOptions:{loading:"Deleting template, please wait...",successMessage:!0}}),K=(a,e=!0)=>s.post("/campaign/set_automation",a,{headers:{"Content-Type":"application/json"},requestOptions:{loading:e?"Adding, please wait...":""}}),L=a=>s.post("/campaign/set_automation",a,{headers:{"Content-Type":"application/json"},requestOptions:{loading:"Setting up, please wait..."}}),N=a=>s.post("/campaign/get_automations",a,{headers:{"Content-Type":"application/json"}}),Q=a=>s.post("/campaign/remove_automation",a,{headers:{"Content-Type":"application/json"}}),U=a=>s.post("/campaign/get_automation_workflow",a,{headers:{"Content-Type":"application/json"}}),V=a=>s.post("/campaign/set_automation_status",a,{headers:{"Content-Type":"application/json"},requestOptions:{loading:"Setting up, please wait...",successMessage:!0}}),W=a=>s.post("/campaign/set_automation_name",a,{headers:{"Content-Type":"application/json"},requestOptions:{loading:"Renaming in progress, please wait...",successMessage:!0}});export{o as A,g as B,l as C,h as D,C as E,j as F,T as G,i as H,t as I,p as J,n as K,S as L,y as M,d as N,q as O,M as P,K as Q,W as R,Q as S,N as T,V as U,b as V,B as a,w as b,z as c,e as d,L as e,f,U as g,O as h,G as i,I as j,R as k,D as l,P as m,v as n,H as o,k as p,x as q,J as r,E as s,F as t,A as u,c as v,u as w,m as x,_ as y,r as z}; +import{t as s,i as a}from"./page_layout.js?v=1762424784323";const e=a=>s.post("/campaign/overview",a),t=e=>s.post("/plugin?action=a&name=mail_sys&s=add_mail_type",e,{requestOptions:{loading:a.global.t("Mail.Api.index_22"),successMessage:!0}}),i=e=>s.post("/plugin?action=a&name=mail_sys&s=edit_mail_type",e,{requestOptions:{loading:a.global.t("Mail.Api.index_42"),successMessage:!0}}),n=a=>s.post("/plugin?action=a&name=mail_sys&s=get_mail_type_info_list",a),o=(a,e=!0)=>s.post("/plugin?action=a&name=mail_sys&s=update_subscription_state",a,{requestOptions:{loading:"Modifying status, please wait...",successMessage:e}}),p=(e,t=!0)=>s.post("/plugin?action=a&name=mail_sys&s=del_mail_type_list",e,{requestOptions:{loading:t?a.global.t("Mail.Api.index_37"):"",successMessage:t}}),l=a=>s.post("/plugin?action=a&name=mail_sys&s=get_unsubscribe_list",a),g=(e,t=!0)=>s.post("/plugin?action=a&name=mail_sys&s=del_unsubscribe_list",e,{requestOptions:{loading:t?a.global.t("Mail.Api.index_37"):"",successMessage:t}}),_=e=>s.post("/plugin?action=a&name=mail_sys&s=edit_type_unsubscribe_list",e,{requestOptions:{loading:a.global.t("Mail.Api.index_43"),successMessage:!0}}),c=e=>s.post("/plugin?action=a&name=mail_sys&s=edit_type_unsubscribe_list",e,{requestOptions:{loading:a.global.t("Mail.Api.index_43"),successMessage:!0}}),m=a=>s.post("/plugin?action=a&name=mail_sys&s=import_contacts_etypes",a,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}}),u=a=>s.post("/plugin?action=a&name=mail_sys&s=import_contacts_from_content",a,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}}),r=a=>s.post("/plugin?action=a&name=mail_sys&s=get_contacts_list",a),d=a=>s.post("/plugin?action=a&name=mail_sys&s=get_abnormal_recipient",a),y=(e,t=!0)=>s.post("/plugin?action=a&name=mail_sys&s=del_abnormal_recipient",e,{requestOptions:{loading:t?a.global.t("Mail.Api.index_37"):"",successMessage:t}}),M=()=>s.post("/plugin?action=a&name=mail_sys&s=get_abnormal_status"),q=e=>s.post("/plugin?action=a&name=mail_sys&s=clear_abnormal_recipient",e,{requestOptions:{loading:a.global.t("Mail.Api.index_37"),successMessage:!0}}),O=a=>s.post("/plugin?action=a&name=mail_sys&s=get_contact_number",a),b=a=>s.post("/plugin?action=a&name=mail_sys&s=get_task_unsubscribe_list",a),w=(a={})=>s.post("/plugin?action=a&name=mail_sys&s=get_task_all",a),x=a=>s.post("/plugin?action=a&name=mail_sys&s=export_email_template",a),A=e=>s.post("/plugin?action=a&name=mail_sys&s=import_email_template",e,{requestOptions:{loading:a.global.t("Mail.Api.index_21"),successMessage:!0}}),k=a=>s.post("/plugin?action=a&name=mail_sys&s=copy_template",a,{requestOptions:{loading:"Copying template, please wait...",successMessage:!0}}),h=(a={})=>s.post("/plugin?action=a&name=mail_sys&s=get_mail_type_list",a),j=a=>s.post("/plugin?action=a&name=mail_sys&s=export_contact_group",a,{requestOptions:{loading:"Exporting, please wait..."}}),C=a=>s.post("/plugin?action=a&name=mail_sys&s=import_contact_group",a,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}}),T=a=>s.post("/plugin?action=a&name=mail_sys&s=merge_groups",a,{requestOptions:{loading:"Processing, please wait...",successMessage:!0}}),v=a=>s.post("/plugin?action=a&name=mail_sys&s=export_task_errlog_to_csv",a,{requestOptions:{loading:"Exporting, please wait..."}}),f=(a={})=>s.post("/plugin?action=a&name=mail_sys&s=get_service_status",a),S=a=>s.post("/plugin?action=a&name=mail_sys&s=check_email_valid",a,{requestOptions:{loading:"Scanning, please wait...",successMessage:!0}}),E=a=>s.post("/plugin?action=a&name=mail_sys&s=set_abnormal_mail_check_switch",a,{requestOptions:{loading:"Setting, please wait...",successMessage:!0}}),P=a=>s.post("/plugin?action=a&name=mail_sys&s=add_task",a,{requestOptions:{loading:"Adding task, please wait...",successMessage:!0}}),D=a=>s.post("/plugin?action=a&name=mail_sys&s=update_task",a,{requestOptions:{loading:"Editing task, please wait...",successMessage:!0}}),R=a=>s.post("/plugin?action=a&name=mail_sys&s=send_mail_test",a,{requestOptions:{loading:"Sending test email, please wait...",successMessage:!0}}),z=(a={})=>s.post("/plugin?action=a&name=mail_sys&s=get_mail_type_list",a),B=()=>s.post("/plugin?action=a&name=mail_sys&s=get_email_temp"),F=a=>s.post("/plugin?action=a&name=mail_sys&s=get_email_temp_list",a),G=a=>s.post("/plugin?action=a&name=mail_sys&s=get_task_email_content",a),H=a=>s.post("/plugin?action=a&name=mail_sys&s=add_email_temp",a,{requestOptions:{loading:"Adding template, please wait...",successMessage:!0}}),I=(a,e=!0)=>s.post("/plugin?action=a&name=mail_sys&s=edit_email_temp",a,{requestOptions:{loading:e?"Editing template, please wait...":"",successMessage:e}}),J=a=>s.post("/plugin?action=a&name=mail_sys&s=del_email_temp",a,{requestOptions:{loading:"Deleting template, please wait...",successMessage:!0}}),K=(a,e=!0)=>s.post("/campaign/set_automation",a,{headers:{"Content-Type":"application/json"},requestOptions:{loading:e?"Adding, please wait...":""}}),L=a=>s.post("/campaign/set_automation",a,{headers:{"Content-Type":"application/json"},requestOptions:{loading:"Setting up, please wait..."}}),N=a=>s.post("/campaign/get_automations",a,{headers:{"Content-Type":"application/json"}}),Q=a=>s.post("/campaign/remove_automation",a,{headers:{"Content-Type":"application/json"}}),U=a=>s.post("/campaign/get_automation_workflow",a,{headers:{"Content-Type":"application/json"}}),V=a=>s.post("/campaign/set_automation_status",a,{headers:{"Content-Type":"application/json"},requestOptions:{loading:"Setting up, please wait...",successMessage:!0}}),W=a=>s.post("/campaign/set_automation_name",a,{headers:{"Content-Type":"application/json"},requestOptions:{loading:"Renaming in progress, please wait...",successMessage:!0}});export{o as A,g as B,l as C,h as D,C as E,j as F,T as G,i as H,t as I,p as J,n as K,S as L,y as M,d as N,q as O,M as P,K as Q,W as R,Q as S,N as T,V as U,b as V,B as a,w as b,z as c,e as d,L as e,f,U as g,O as h,G as i,I as j,R as k,D as l,P as m,v as n,H as o,k as p,x as q,J as r,E as s,F as t,A as u,c as v,u as w,m as x,_ as y,r as z}; diff --git a/BTPanel/static/vite/js/category-legacy.js b/BTPanel/static/vite/js/category-legacy.js index b4ae65a8..8d63b263 100644 --- a/BTPanel/static/vite/js/category-legacy.js +++ b/BTPanel/static/vite/js/category-legacy.js @@ -1 +1 @@ -System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./index-legacy84.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./index-legacy133.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy12.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy8.js?v=1760428868419","./index-legacy131.js?v=1760428868419","./php-legacy.js?v=1760428868419","./soft-legacy.js?v=1760428868419","./soft-legacy2.js?v=1760428868419","./useOperate-legacy.js?v=1760428868419","./useModal-legacy2.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy15.js?v=1760428868419","./index-legacy.js?v=1760428868419"],function(e,l){"use strict";var a,u,s,t,n,_,i,c,r,d,g,p,y,o,v,j,x,f,m;return{setters:[e=>{a=e._},e=>{u=e.w,s=e.m},e=>{t=e.d},e=>{n=e.f,_=e.aN},e=>{i=e.u},e=>{c=e.k,r=e.P,d=e.r,g=e.R,p=e.V,y=e.W,o=e.a3,v=e.S,j=e.U,x=e.ak},e=>{f=e.dR,m=e.dV},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){const l={class:"p-20px"},w={class:"w-150px"};e("default",c({__name:"category",props:{data:{}},setup(e,{expose:c}){const P=e,{t:h}=r(),{rows:b}=P.data,S=i(),H=d(null),k=d([]),{loading:R,setLoading:U}=t();return(async()=>{try{U(!0);const{message:e}=await n();u(e)&&e.length>0?(k.value=e.map(e=>({label:e.name,value:e.id})),H.value=e[0].id):(H.value=null,k.value=[])}finally{U(!1)}})(),c({onConfirm:async({hide:e})=>{await _((()=>{if(null===H.value)throw s.error(h("Site.PHP.add_site_46")),new Error(h("Site.PHP.add_site_46"));return{id:H.value,site_ids:b.map(e=>e.id)}})()),S.setRefresh(!0),e()}}),(e,u)=>{const s=m,t=f,n=a;return p(),g("div",l,[y(n,null,{default:o(()=>[y(t,{label:e.$t("Site.PHP.add_site_22"),"show-feedback":!1},{default:o(()=>[v("div",w,[y(s,{value:j(H),"onUpdate:value":u[0]||(u[0]=e=>x(H)?H.value=e:null),loading:j(R),options:j(k)},null,8,["value","loading","options"])])]),_:1},8,["label"])]),_:1})])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./index-legacy84.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./index-legacy132.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy12.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy8.js?v=1762424784323","./index-legacy130.js?v=1762424784323","./php-legacy.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./useOperate-legacy.js?v=1762424784323","./useModal-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy15.js?v=1762424784323","./index-legacy.js?v=1762424784323"],function(e,l){"use strict";var a,u,s,t,n,_,i,c,r,d,g,p,y,o,v,j,x,f,m;return{setters:[e=>{a=e._},e=>{u=e.w,s=e.m},e=>{t=e.d},e=>{n=e.f,_=e.aN},e=>{i=e.u},e=>{c=e.k,r=e.P,d=e.r,g=e.R,p=e.V,y=e.W,o=e.a3,v=e.S,j=e.U,x=e.ak},e=>{f=e.dR,m=e.dV},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){const l={class:"p-20px"},w={class:"w-150px"};e("default",c({__name:"category",props:{data:{}},setup(e,{expose:c}){const P=e,{t:h}=r(),{rows:b}=P.data,S=i(),H=d(null),k=d([]),{loading:R,setLoading:U}=t();return(async()=>{try{U(!0);const{message:e}=await n();u(e)&&e.length>0?(k.value=e.map(e=>({label:e.name,value:e.id})),H.value=e[0].id):(H.value=null,k.value=[])}finally{U(!1)}})(),c({onConfirm:async({hide:e})=>{await _((()=>{if(null===H.value)throw s.error(h("Site.PHP.add_site_46")),new Error(h("Site.PHP.add_site_46"));return{id:H.value,site_ids:b.map(e=>e.id)}})()),S.setRefresh(!0),e()}}),(e,u)=>{const s=m,t=f,n=a;return p(),g("div",l,[y(n,null,{default:o(()=>[y(t,{label:e.$t("Site.PHP.add_site_22"),"show-feedback":!1},{default:o(()=>[v("div",w,[y(s,{value:j(H),"onUpdate:value":u[0]||(u[0]=e=>x(H)?H.value=e:null),loading:j(R),options:j(k)},null,8,["value","loading","options"])])]),_:1},8,["label"])]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/category.js b/BTPanel/static/vite/js/category.js index 333d1bb0..8b0d43da 100644 --- a/BTPanel/static/vite/js/category.js +++ b/BTPanel/static/vite/js/category.js @@ -1 +1 @@ -import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{w as s,m as t}from"./page_layout.js?v=1760428868419";import{d as a}from"./public.js?v=1760428868419";import{f as i,aN as r}from"./site.js?v=1760428868419";import{u as p}from"./index84.js?v=1760428868419";import{k as o,P as _,r as u,R as l,V as n,W as m,a3 as d,S as v,U as j,ak as c}from"./vue.js?v=1760428868419";import{dR as f,dV as g}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./index133.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang12.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang8.js?v=1760428868419";import"./index131.js?v=1760428868419";import"./php.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./soft2.js?v=1760428868419";import"./useOperate.js?v=1760428868419";import"./useModal2.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang15.js?v=1760428868419";import"./index.js?v=1760428868419";const x={class:"p-20px"},y={class:"w-150px"},w=o({__name:"category",props:{data:{}},setup(o,{expose:w}){const P=o,{t:h}=_(),{rows:b}=P.data,H=p(),S=u(null),k=u([]),{loading:R,setLoading:U}=a();(async()=>{try{U(!0);const{message:e}=await i();s(e)&&e.length>0?(k.value=e.map(e=>({label:e.name,value:e.id})),S.value=e[0].id):(S.value=null,k.value=[])}finally{U(!1)}})();return w({onConfirm:async({hide:e})=>{await r((()=>{if(null===S.value)throw t.error(h("Site.PHP.add_site_46")),new Error(h("Site.PHP.add_site_46"));return{id:S.value,site_ids:b.map(e=>e.id)}})()),H.setRefresh(!0),e()}}),(s,t)=>{const a=g,i=f,r=e;return n(),l("div",x,[m(r,null,{default:d(()=>[m(i,{label:s.$t("Site.PHP.add_site_22"),"show-feedback":!1},{default:d(()=>[v("div",y,[m(a,{value:j(S),"onUpdate:value":t[0]||(t[0]=e=>c(S)?S.value=e:null),loading:j(R),options:j(k)},null,8,["value","loading","options"])])]),_:1},8,["label"])]),_:1})])}}});export{w as default}; +import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{w as s,m as t}from"./page_layout.js?v=1762424784323";import{d as a}from"./public.js?v=1762424784323";import{f as i,aN as r}from"./site.js?v=1762424784323";import{u as p}from"./index84.js?v=1762424784323";import{k as o,P as _,r as u,R as l,V as n,W as m,a3 as d,S as v,U as j,ak as c}from"./vue.js?v=1762424784323";import{dR as f,dV as g}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./index132.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang12.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang8.js?v=1762424784323";import"./index130.js?v=1762424784323";import"./php.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./soft2.js?v=1762424784323";import"./useOperate.js?v=1762424784323";import"./useModal2.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang15.js?v=1762424784323";import"./index.js?v=1762424784323";const x={class:"p-20px"},y={class:"w-150px"},w=o({__name:"category",props:{data:{}},setup(o,{expose:w}){const P=o,{t:h}=_(),{rows:b}=P.data,H=p(),S=u(null),k=u([]),{loading:R,setLoading:U}=a();(async()=>{try{U(!0);const{message:e}=await i();s(e)&&e.length>0?(k.value=e.map(e=>({label:e.name,value:e.id})),S.value=e[0].id):(S.value=null,k.value=[])}finally{U(!1)}})();return w({onConfirm:async({hide:e})=>{await r((()=>{if(null===S.value)throw t.error(h("Site.PHP.add_site_46")),new Error(h("Site.PHP.add_site_46"));return{id:S.value,site_ids:b.map(e=>e.id)}})()),H.setRefresh(!0),e()}}),(s,t)=>{const a=g,i=f,r=e;return n(),l("div",x,[m(r,null,{default:d(()=>[m(i,{label:s.$t("Site.PHP.add_site_22"),"show-feedback":!1},{default:d(()=>[v("div",y,[m(a,{value:j(S),"onUpdate:value":t[0]||(t[0]=e=>c(S)?S.value=e:null),loading:j(R),options:j(k)},null,8,["value","loading","options"])])]),_:1},8,["label"])]),_:1})])}}});export{w as default}; diff --git a/BTPanel/static/vite/js/cc-legacy.js b/BTPanel/static/vite/js/cc-legacy.js index c1794436..cfa44514 100644 --- a/BTPanel/static/vite/js/cc-legacy.js +++ b/BTPanel/static/vite/js/cc-legacy.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,t){"use strict";var a,l,s,n,c,u,o,r;return{setters:[e=>{a=e.c,l=e.h},e=>{s=e.k,n=e.P,c=e.R,u=e.V,o=e.W,r=e.U},null,null,null,null],execute:function(){const t={class:"p-20px"};e("default",s({__name:"cc",props:{list:{}},setup(e){const s=e,{t:i}=n(),{table:m,columns:g}=a([{key:"name",title:i("Waf.Overview.index_20")}]);return m.data=s.list.map(e=>({name:e,status:!1})),(e,a)=>{const s=l;return u(),c("div",t,[o(s,{"max-height":470,data:r(m).data,columns:r(g)},null,8,["data","columns"])])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,t){"use strict";var a,l,s,n,c,u,o,r;return{setters:[e=>{a=e.c,l=e.h},e=>{s=e.k,n=e.P,c=e.R,u=e.V,o=e.W,r=e.U},null,null,null,null],execute:function(){const t={class:"p-20px"};e("default",s({__name:"cc",props:{list:{}},setup(e){const s=e,{t:i}=n(),{table:m,columns:g}=a([{key:"name",title:i("Waf.Overview.index_20")}]);return m.data=s.list.map(e=>({name:e,status:!1})),(e,a)=>{const s=l;return u(),c("div",t,[o(s,{"max-height":470,data:r(m).data,columns:r(g)},null,8,["data","columns"])])}}}))}}}); diff --git a/BTPanel/static/vite/js/cc.js b/BTPanel/static/vite/js/cc.js index 07e78fae..e2da15c8 100644 --- a/BTPanel/static/vite/js/cc.js +++ b/BTPanel/static/vite/js/cc.js @@ -1 +1 @@ -import{c as s,h as a}from"./public.js?v=1760428868419";import{k as t,P as o,R as e,V as m,W as n,U as p}from"./vue.js?v=1760428868419";import"./page_layout.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const r={class:"p-20px"},i=t({__name:"cc",props:{list:{}},setup(t){const i=t,{t:l}=o(),{table:c,columns:u}=s([{key:"name",title:l("Waf.Overview.index_20")}]);return c.data=i.list.map(s=>({name:s,status:!1})),(s,t)=>{const o=a;return m(),e("div",r,[n(o,{"max-height":470,data:p(c).data,columns:p(u)},null,8,["data","columns"])])}}});export{i as default}; +import{c as s,h as a}from"./public.js?v=1762424784323";import{k as t,P as o,R as e,V as m,W as n,U as p}from"./vue.js?v=1762424784323";import"./page_layout.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const r={class:"p-20px"},i=t({__name:"cc",props:{list:{}},setup(t){const i=t,{t:l}=o(),{table:c,columns:u}=s([{key:"name",title:l("Waf.Overview.index_20")}]);return c.data=i.list.map(s=>({name:s,status:!1})),(s,t)=>{const o=a;return m(),e("div",r,[n(o,{"max-height":470,data:p(c).data,columns:p(u)},null,8,["data","columns"])])}}});export{i as default}; diff --git a/BTPanel/static/vite/js/change-verification-legacy.js b/BTPanel/static/vite/js/change-verification-legacy.js index b455dcb5..fce30366 100644 --- a/BTPanel/static/vite/js/change-verification-legacy.js +++ b/BTPanel/static/vite/js/change-verification-legacy.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,t){"use strict";var l,a,n,i,s,c,u,o,_,d,r,S,h,v;return{setters:[e=>{l=e._,a=e.aE},e=>{n=e._},e=>{i=e.k,s=e.P,c=e.e,u=e.R,o=e.V,_=e.W,d=e.a3,r=e.U,S=e.S},e=>{h=e.dR,v=e.dV},null,null,null],execute:function(){const t={class:"p-20px"};e("default",i({__name:"change-verification",props:{uc_id:{},onRefresh:{type:Function}},setup(e,{expose:i}){const{t:p}=s(),y=e,g=[{label:p("SSL.SiteSSL.index_17")+"(http)",value:"HTTP_CSR_HASH"},{label:p("SSL.SiteSSL.index_17")+"(https)",value:"HTTPS_CSR_HASH"},{label:p("SSL.index_12"),value:"CNAME_CSR_HASH"}],m=c({dcvMethod:"HTTP_CSR_HASH"});return i({onConfirm:async()=>{const e={uc_id:y.uc_id,dcv_method:m.dcvMethod};await a(e),y.onRefresh()}}),(e,a)=>{const i=v,s=h,c=n,p=l;return o(),u("div",t,[_(c,null,{default:d(()=>[_(s,{label:e.$t("Term.index_12")},{default:d(()=>[_(i,{value:r(m).dcvMethod,"onUpdate:value":a[0]||(a[0]=e=>r(m).dcvMethod=e),options:g},null,8,["value"])]),_:1},8,["label"])]),_:1}),_(p,null,{default:d(()=>a[1]||(a[1]=[S("li",null,"File verification (HTTP): Ensure that the website can be accessed normally via http",-1),S("li",null,"File verification (HTTPS): Make sure that the website has https enabled and can be accessed normally through https",-1),S("li",null,"DNS verification: DNS record value needs to be manually resolved",-1),S("li",{class:"text-error"},"Note: Only one change is allowed within 20 minutes. Frequent changes will extend the application time.",-1)])),_:1,__:[1]})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,t){"use strict";var l,a,n,i,s,c,u,o,_,d,r,S,h,v;return{setters:[e=>{l=e._,a=e.aE},e=>{n=e._},e=>{i=e.k,s=e.P,c=e.e,u=e.R,o=e.V,_=e.W,d=e.a3,r=e.U,S=e.S},e=>{h=e.dR,v=e.dV},null,null,null],execute:function(){const t={class:"p-20px"};e("default",i({__name:"change-verification",props:{uc_id:{},onRefresh:{type:Function}},setup(e,{expose:i}){const{t:p}=s(),y=e,g=[{label:p("SSL.SiteSSL.index_17")+"(http)",value:"HTTP_CSR_HASH"},{label:p("SSL.SiteSSL.index_17")+"(https)",value:"HTTPS_CSR_HASH"},{label:p("SSL.index_12"),value:"CNAME_CSR_HASH"}],m=c({dcvMethod:"HTTP_CSR_HASH"});return i({onConfirm:async()=>{const e={uc_id:y.uc_id,dcv_method:m.dcvMethod};await a(e),y.onRefresh()}}),(e,a)=>{const i=v,s=h,c=n,p=l;return o(),u("div",t,[_(c,null,{default:d(()=>[_(s,{label:e.$t("Term.index_12")},{default:d(()=>[_(i,{value:r(m).dcvMethod,"onUpdate:value":a[0]||(a[0]=e=>r(m).dcvMethod=e),options:g},null,8,["value"])]),_:1},8,["label"])]),_:1}),_(p,null,{default:d(()=>a[1]||(a[1]=[S("li",null,"File verification (HTTP): Ensure that the website can be accessed normally via http",-1),S("li",null,"File verification (HTTPS): Make sure that the website has https enabled and can be accessed normally through https",-1),S("li",null,"DNS verification: DNS record value needs to be manually resolved",-1),S("li",{class:"text-error"},"Note: Only one change is allowed within 20 minutes. Frequent changes will extend the application time.",-1)])),_:1,__:[1]})])}}}))}}}); diff --git a/BTPanel/static/vite/js/change-verification.js b/BTPanel/static/vite/js/change-verification.js index 0f2d4d21..d9443631 100644 --- a/BTPanel/static/vite/js/change-verification.js +++ b/BTPanel/static/vite/js/change-verification.js @@ -1 +1 @@ -import{_ as e,aE as t}from"./public.js?v=1760428868419";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{k as l,P as s,e as i,R as n,V as o,W as r,a3 as u,U as _,S as c}from"./vue.js?v=1760428868419";import{dR as d,dV as p}from"./naive.js?v=1760428868419";import"./page_layout.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const S={class:"p-20px"},h=l({__name:"change-verification",props:{uc_id:{},onRefresh:{type:Function}},setup(l,{expose:h}){const{t:m}=s(),v=l,f=[{label:m("SSL.SiteSSL.index_17")+"(http)",value:"HTTP_CSR_HASH"},{label:m("SSL.SiteSSL.index_17")+"(https)",value:"HTTPS_CSR_HASH"},{label:m("SSL.index_12"),value:"CNAME_CSR_HASH"}],H=i({dcvMethod:"HTTP_CSR_HASH"});return h({onConfirm:async()=>{const e={uc_id:v.uc_id,dcv_method:H.dcvMethod};await t(e),v.onRefresh()}}),(t,l)=>{const s=p,i=d,h=a,m=e;return o(),n("div",S,[r(h,null,{default:u(()=>[r(i,{label:t.$t("Term.index_12")},{default:u(()=>[r(s,{value:_(H).dcvMethod,"onUpdate:value":l[0]||(l[0]=e=>_(H).dcvMethod=e),options:f},null,8,["value"])]),_:1},8,["label"])]),_:1}),r(m,null,{default:u(()=>l[1]||(l[1]=[c("li",null,"File verification (HTTP): Ensure that the website can be accessed normally via http",-1),c("li",null,"File verification (HTTPS): Make sure that the website has https enabled and can be accessed normally through https",-1),c("li",null,"DNS verification: DNS record value needs to be manually resolved",-1),c("li",{class:"text-error"},"Note: Only one change is allowed within 20 minutes. Frequent changes will extend the application time.",-1)])),_:1,__:[1]})])}}});export{h as default}; +import{_ as e,aE as t}from"./public.js?v=1762424784323";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{k as l,P as s,e as i,R as n,V as o,W as r,a3 as u,U as _,S as c}from"./vue.js?v=1762424784323";import{dR as d,dV as p}from"./naive.js?v=1762424784323";import"./page_layout.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const S={class:"p-20px"},h=l({__name:"change-verification",props:{uc_id:{},onRefresh:{type:Function}},setup(l,{expose:h}){const{t:m}=s(),v=l,f=[{label:m("SSL.SiteSSL.index_17")+"(http)",value:"HTTP_CSR_HASH"},{label:m("SSL.SiteSSL.index_17")+"(https)",value:"HTTPS_CSR_HASH"},{label:m("SSL.index_12"),value:"CNAME_CSR_HASH"}],H=i({dcvMethod:"HTTP_CSR_HASH"});return h({onConfirm:async()=>{const e={uc_id:v.uc_id,dcv_method:H.dcvMethod};await t(e),v.onRefresh()}}),(t,l)=>{const s=p,i=d,h=a,m=e;return o(),n("div",S,[r(h,null,{default:u(()=>[r(i,{label:t.$t("Term.index_12")},{default:u(()=>[r(s,{value:_(H).dcvMethod,"onUpdate:value":l[0]||(l[0]=e=>_(H).dcvMethod=e),options:f},null,8,["value"])]),_:1},8,["label"])]),_:1}),r(m,null,{default:u(()=>l[1]||(l[1]=[c("li",null,"File verification (HTTP): Ensure that the website can be accessed normally via http",-1),c("li",null,"File verification (HTTPS): Make sure that the website has https enabled and can be accessed normally through https",-1),c("li",null,"DNS verification: DNS record value needs to be manually resolved",-1),c("li",{class:"text-error"},"Note: Only one change is allowed within 20 minutes. Frequent changes will extend the application time.",-1)])),_:1,__:[1]})])}}});export{h as default}; diff --git a/BTPanel/static/vite/js/clear-legacy.js b/BTPanel/static/vite/js/clear-legacy.js index 49e04c85..9d07e685 100644 --- a/BTPanel/static/vite/js/clear-legacy.js +++ b/BTPanel/static/vite/js/clear-legacy.js @@ -1 +1 @@ -System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./tools-legacy2.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./rules-legacy.js?v=1760428868419"],function(e,l){"use strict";var a,t,s,n,i,c,o,u,r,_,p,d,f,g,v,m,y,x,j,k,b;return{setters:[e=>{a=e._},e=>{t=e.w},e=>{s=e.a},e=>{n=e.i,i=e.r},e=>{c=e.dR,o=e.dV,u=e.aX,r=e.aC},e=>{_=e.k,p=e.P,d=e.r,f=e.e,g=e.R,v=e.V,m=e.W,y=e.a3,x=e.S,j=e.U,k=e.j,b=e.a4},null,null,null],execute:function(){const l={class:"p-20px pt-24px pb-8px"},h={class:"w-260px"};e("default",_({__name:"clear",setup(e,{expose:_}){const{t:w}=p(),B=d(null),C=f({site:[]}),W={site:{trigger:["change"],validator:()=>0!==C.site.length||new Error(w("Waf.Block.index_27"))}},$=d([]),P=()=>{C.site=$.value.map(e=>e.value)},R=()=>{C.site=[]};return(async()=>{const{message:e}=await n();t(e)&&($.value=e.map(e=>({label:e.siteName,value:e.siteName})))})(),_({onConfirm:async()=>(await(B.value?.validate()),s({title:w("Waf.Block.index_28"),content:w("Waf.Block.index_29"),onConfirm:async()=>{const e=C.site.length===$.value.length;await i({safe_logs:0,site_all:e?1:0,site_logs:C.site})}}),!1)}),(e,t)=>{const s=r,n=u,i=o,_=c,p=a;return v(),g("div",l,[m(p,{ref_key:"formRef",ref:B,model:j(C),rules:W},{default:y(()=>[m(_,{label:e.$t("Waf.Block.index_25"),path:"site"},{default:y(()=>[x("div",h,[m(i,{value:j(C).site,"onUpdate:value":t[0]||(t[0]=e=>j(C).site=e),options:j($),multiple:!0,filterable:!0,"max-tag-count":"responsive",placeholder:e.$t("Waf.Block.index_27")},{header:y(()=>[m(n,{class:"w-full"},{default:y(()=>[m(s,{class:"flex-1",onClick:P},{default:y(()=>[k(b(e.$t("Public.All")),1)]),_:1}),m(s,{class:"flex-1",onClick:R},{default:y(()=>[k(b(e.$t("Public.Btn.Cancel")),1)]),_:1})]),_:1})]),_:1},8,["value","options","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./tools-legacy2.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./rules-legacy.js?v=1762424784323"],function(e,l){"use strict";var a,t,s,n,i,c,o,u,r,_,p,d,f,g,v,m,y,x,j,k,b;return{setters:[e=>{a=e._},e=>{t=e.w},e=>{s=e.a},e=>{n=e.i,i=e.r},e=>{c=e.dR,o=e.dV,u=e.aX,r=e.aC},e=>{_=e.k,p=e.P,d=e.r,f=e.e,g=e.R,v=e.V,m=e.W,y=e.a3,x=e.S,j=e.U,k=e.j,b=e.a4},null,null,null],execute:function(){const l={class:"p-20px pt-24px pb-8px"},h={class:"w-260px"};e("default",_({__name:"clear",setup(e,{expose:_}){const{t:w}=p(),B=d(null),C=f({site:[]}),W={site:{trigger:["change"],validator:()=>0!==C.site.length||new Error(w("Waf.Block.index_27"))}},$=d([]),P=()=>{C.site=$.value.map(e=>e.value)},R=()=>{C.site=[]};return(async()=>{const{message:e}=await n();t(e)&&($.value=e.map(e=>({label:e.siteName,value:e.siteName})))})(),_({onConfirm:async()=>(await(B.value?.validate()),s({title:w("Waf.Block.index_28"),content:w("Waf.Block.index_29"),onConfirm:async()=>{const e=C.site.length===$.value.length;await i({safe_logs:0,site_all:e?1:0,site_logs:C.site})}}),!1)}),(e,t)=>{const s=r,n=u,i=o,_=c,p=a;return v(),g("div",l,[m(p,{ref_key:"formRef",ref:B,model:j(C),rules:W},{default:y(()=>[m(_,{label:e.$t("Waf.Block.index_25"),path:"site"},{default:y(()=>[x("div",h,[m(i,{value:j(C).site,"onUpdate:value":t[0]||(t[0]=e=>j(C).site=e),options:j($),multiple:!0,filterable:!0,"max-tag-count":"responsive",placeholder:e.$t("Waf.Block.index_27")},{header:y(()=>[m(n,{class:"w-full"},{default:y(()=>[m(s,{class:"flex-1",onClick:P},{default:y(()=>[k(b(e.$t("Public.All")),1)]),_:1}),m(s,{class:"flex-1",onClick:R},{default:y(()=>[k(b(e.$t("Public.Btn.Cancel")),1)]),_:1})]),_:1})]),_:1},8,["value","options","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}))}}}); diff --git a/BTPanel/static/vite/js/clear.js b/BTPanel/static/vite/js/clear.js index d10c6c6d..ce1eafc4 100644 --- a/BTPanel/static/vite/js/clear.js +++ b/BTPanel/static/vite/js/clear.js @@ -1 +1 @@ -import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{w as a}from"./page_layout.js?v=1760428868419";import{a as s}from"./public.js?v=1760428868419";import{i as l,r as t}from"./tools2.js?v=1760428868419";import{dR as o,dV as i,aX as r,aC as n}from"./naive.js?v=1760428868419";import{k as p,P as u,r as c,e as m,R as _,V as f,W as d,a3 as v,S as x,U as g,j,a4 as k}from"./vue.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./rules.js?v=1760428868419";const b={class:"p-20px pt-24px pb-8px"},h={class:"w-260px"},w=p({__name:"clear",setup(p,{expose:w}){const{t:y}=u(),B=c(null),C=m({site:[]}),W={site:{trigger:["change"],validator:()=>0!==C.site.length||new Error(y("Waf.Block.index_27"))}},$=c([]),P=()=>{C.site=$.value.map(e=>e.value)},R=()=>{C.site=[]};return(async()=>{const{message:e}=await l();a(e)&&($.value=e.map(e=>({label:e.siteName,value:e.siteName})))})(),w({onConfirm:async()=>{var e;return await(null==(e=B.value)?void 0:e.validate()),s({title:y("Waf.Block.index_28"),content:y("Waf.Block.index_29"),onConfirm:async()=>{const e=C.site.length===$.value.length;await t({safe_logs:0,site_all:e?1:0,site_logs:C.site})}}),!1}}),(a,s)=>{const l=n,t=r,p=i,u=o,c=e;return f(),_("div",b,[d(c,{ref_key:"formRef",ref:B,model:g(C),rules:W},{default:v(()=>[d(u,{label:a.$t("Waf.Block.index_25"),path:"site"},{default:v(()=>[x("div",h,[d(p,{value:g(C).site,"onUpdate:value":s[0]||(s[0]=e=>g(C).site=e),options:g($),multiple:!0,filterable:!0,"max-tag-count":"responsive",placeholder:a.$t("Waf.Block.index_27")},{header:v(()=>[d(t,{class:"w-full"},{default:v(()=>[d(l,{class:"flex-1",onClick:P},{default:v(()=>[j(k(a.$t("Public.All")),1)]),_:1}),d(l,{class:"flex-1",onClick:R},{default:v(()=>[j(k(a.$t("Public.Btn.Cancel")),1)]),_:1})]),_:1})]),_:1},8,["value","options","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}});export{w as default}; +import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{w as a}from"./page_layout.js?v=1762424784323";import{a as s}from"./public.js?v=1762424784323";import{i as l,r as t}from"./tools2.js?v=1762424784323";import{dR as o,dV as i,aX as r,aC as n}from"./naive.js?v=1762424784323";import{k as p,P as u,r as c,e as m,R as _,V as f,W as d,a3 as v,S as x,U as g,j,a4 as k}from"./vue.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./rules.js?v=1762424784323";const b={class:"p-20px pt-24px pb-8px"},h={class:"w-260px"},w=p({__name:"clear",setup(p,{expose:w}){const{t:y}=u(),B=c(null),C=m({site:[]}),W={site:{trigger:["change"],validator:()=>0!==C.site.length||new Error(y("Waf.Block.index_27"))}},$=c([]),P=()=>{C.site=$.value.map(e=>e.value)},R=()=>{C.site=[]};return(async()=>{const{message:e}=await l();a(e)&&($.value=e.map(e=>({label:e.siteName,value:e.siteName})))})(),w({onConfirm:async()=>{var e;return await(null==(e=B.value)?void 0:e.validate()),s({title:y("Waf.Block.index_28"),content:y("Waf.Block.index_29"),onConfirm:async()=>{const e=C.site.length===$.value.length;await t({safe_logs:0,site_all:e?1:0,site_logs:C.site})}}),!1}}),(a,s)=>{const l=n,t=r,p=i,u=o,c=e;return f(),_("div",b,[d(c,{ref_key:"formRef",ref:B,model:g(C),rules:W},{default:v(()=>[d(u,{label:a.$t("Waf.Block.index_25"),path:"site"},{default:v(()=>[x("div",h,[d(p,{value:g(C).site,"onUpdate:value":s[0]||(s[0]=e=>g(C).site=e),options:g($),multiple:!0,filterable:!0,"max-tag-count":"responsive",placeholder:a.$t("Waf.Block.index_27")},{header:v(()=>[d(t,{class:"w-full"},{default:v(()=>[d(l,{class:"flex-1",onClick:P},{default:v(()=>[j(k(a.$t("Public.All")),1)]),_:1}),d(l,{class:"flex-1",onClick:R},{default:v(()=>[j(k(a.$t("Public.Btn.Cancel")),1)]),_:1})]),_:1})]),_:1},8,["value","options","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}});export{w as default}; diff --git a/BTPanel/static/vite/js/common-legacy.js b/BTPanel/static/vite/js/common-legacy.js index dba72bd5..d10b2f32 100644 --- a/BTPanel/static/vite/js/common-legacy.js +++ b/BTPanel/static/vite/js/common-legacy.js @@ -1,4 +1,4 @@ -System.register(["./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,t){"use strict";var n;return{setters:[e=>{n=e.g,e.c}],execute:function(){function t(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(n=>{const a=e[n],r=typeof a;"object"!==r&&"function"!==r||Object.isFrozen(a)||t(a)}),e}e({$:function(e){const t=pe(e);return t.setHours(23,59,59,999),t},A:function(e,t){const n=pe(e),a=pe(t);return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()},B:function(e){return pe(e).getFullYear()},C:function(e,t){const n=pe(e),a=pe(t);return n.getFullYear()===a.getFullYear()},D:function(e,t){const n=un(e),a=un(t);return+n===+a},E:function(e){const t=pe(e);return Math.trunc(t.getMonth()/3)+1},F:function(e){const t=pe(e);return t.getDate()},G:function(e,t){const n=nn(e),a=nn(t);return+n===+a},H:ve,I:Ha,J:function(e,t){let n=pe(e);return isNaN(+n)?Ut(e,NaN):(null!=t.year&&n.setFullYear(t.year),null!=t.month&&(n=Ha(n,t.month)),null!=t.date&&n.setDate(t.date),null!=t.hours&&n.setHours(t.hours),null!=t.minutes&&n.setMinutes(t.minutes),null!=t.seconds&&n.setSeconds(t.seconds),null!=t.milliseconds&&n.setMilliseconds(t.milliseconds),n)},K:function(e,t){const n=pe(e),a=Math.trunc(n.getMonth()/3)+1,r=t-a;return Ha(n,n.getMonth()+3*r)},L:function(e){const t=pe(e);return t.setMilliseconds(0),t},M:un,N:ye,O:nn,P:qn,Q:function(e){const t=pe(e);return t.getHours()},R:function(e,t){const n=pe(e);return n.setHours(t),n},S:function(e){const t=pe(e);return t.setMinutes(0,0,0),t},T:function(e,t){const n=pe(e);return n.setMinutes(t),n},U:function(e){const t=pe(e);return t.setSeconds(0,0),t},V:function(e,t){const n=pe(e);return n.setSeconds(t),n},W:function(e){const t=pe(e);return t.getMilliseconds()},X:function(e){const t=pe(e);return t.getSeconds()},Y:function(e){const t=pe(e);return t.getMinutes()},Z:function(e,t){return function(e,t){const n=+pe(e);return Ut(e,n+t)}(e,t*Vt)},_:function(e,t){const n=pe(e),a=pe(t);return n.getTime()>a.getTime()},a3:function(e){const t=e.regex,n="HTTP/([32]|1\\.[01])",a={className:"attribute",begin:t.concat("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},r=[a,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+n+" \\d{3})",end:/$/,contains:[{className:"meta",begin:n},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:r}},{begin:"(?=^[A-Z]+ (.*?) "+n+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:n},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:r}},e.inherit(a,{relevance:0})]}},a4:function(e){const t=e.regex,n=["GET","POST","HEAD","PUT","DELETE","CONNECT","OPTIONS","PATCH","TRACE"];return{name:"Apache Access Log",contains:[{className:"number",begin:/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?\b/,relevance:5},{className:"number",begin:/\b\d+\b/,relevance:0},{className:"string",begin:t.concat(/"/,t.either(...n)),end:/"/,keywords:n,illegal:/\n/,relevance:5,contains:[{begin:/HTTP\/[12]\.\d'/,relevance:5}]},{className:"string",begin:/\[\d[^\]\n]{8,}\]/,illegal:/\n/,relevance:1},{className:"string",begin:/\[/,end:/\]/,illegal:/\n/,relevance:0},{className:"string",begin:/"Mozilla\/\d\.\d \(/,end:/"/,illegal:/\n/,relevance:3},{className:"string",begin:/"/,end:/"/,illegal:/\n/,relevance:0}]}},a5:function(e,t){const n=pe(e),a=pe(t),r=sn(n,a),i=Math.abs(rn(n,a));n.setDate(n.getDate()-r*i);const o=Number(sn(n,a)===-r),s=r*(i-o);return 0===s?0:s},a6:function(e,t){const n=pe(e),a=pe(t);return+n<+a},a7:function(){return nn(Date.now())},a8:function(e,t,n){const a=function(e,t){return+pe(e)-+pe(t)}(e,t)/Zt;return(r=n?.roundingMethod,e=>{const t=(r?Math[r]:Math.trunc)(e);return 0===t?0:t})(a);var r},c:function(e,t,n,a){const r=qn(),i=a?.locale??r.locale??Ae,o=a?.firstWeekContainsDate??a?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,s=a?.weekStartsOn??a?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0;if(""===t)return""===e?pe(n):Ut(n,NaN);const u={firstWeekContainsDate:o,weekStartsOn:s,locale:i},d=[new Gn],c=t.match(Oa).map(e=>{const t=e[0];return t in En?(0,En[t])(e,i.formatLong):e}).join("").match(Wa),l=[];for(let f of c){!a?.useAdditionalWeekYearTokens&&jn(f)&&An(f,t,e),!a?.useAdditionalDayOfYearTokens&&Cn(f)&&An(f,t,e);const r=f[0],o=Na[r];if(o){const{incompatibleTokens:t}=o;if(Array.isArray(t)){const e=l.find(e=>t.includes(e.token)||e.token===r);if(e)throw new RangeError(`The format string mustn't contain \`${e.fullToken}\` and \`${f}\` at the same time`)}else if("*"===o.incompatibleTokens&&l.length>0)throw new RangeError(`The format string mustn't contain \`${f}\` and any other token at the same time`);l.push({token:r,fullToken:f});const a=o.run(e,f,i.match,u);if(!a)return Ut(n,NaN);d.push(a.setter),e=a.rest}else{if(r.match(Ra))throw new RangeError("Format string contains an unescaped latin alphabet character `"+r+"`");if("''"===f?f="'":"'"===r&&(f=Da(f)),0!==e.indexOf(f))return Ut(n,NaN);e=e.slice(f.length)}}if(e.length>0&&Aa.test(e))return Ut(n,NaN);const h=d.map(e=>e.priority).sort((e,t)=>t-e).filter((e,t,n)=>n.indexOf(e)===t).map(e=>d.filter(t=>t.priority===e).sort((e,t)=>t.subPriority-e.subPriority)).map(e=>e[0]);let m=pe(n);if(isNaN(m.getTime()))return Ut(n,NaN);const g={};for(const f of h){if(!f.validate(m,u))return Ut(n,NaN);const e=f.set(m,g,u);Array.isArray(e)?(m=e[0],Object.assign(g,e[1])):m=e}return Ut(n,m)},g:on,h:function(e,t,n){const a=we(),r=n?.locale??a.locale??Ae,i=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??a.firstWeekContainsDate??a.locale?.options?.firstWeekContainsDate??1,o=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??a.weekStartsOn??a.locale?.options?.weekStartsOn??0,s=pe(e);if(!on(s))throw new RangeError("Invalid time value");let u=t.match(Dn).map(e=>{const t=e[0];return"p"===t||"P"===t?(0,En[t])(e,r.formatLong):e}).join("").match(Rn).map(e=>{if("''"===e)return{isToken:!1,value:"'"};const t=e[0];if("'"===t)return{isToken:!1,value:Ln(e)};if(Mn[t])return{isToken:!0,value:e};if(t.match(_n))throw new RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}});r.localize.preprocessor&&(u=r.localize.preprocessor(s,u));const d={firstWeekContainsDate:i,weekStartsOn:o,locale:r};return u.map(a=>{if(!a.isToken)return a.value;const i=a.value;return(!n?.useAdditionalWeekYearTokens&&jn(i)||!n?.useAdditionalDayOfYearTokens&&Cn(i))&&An(i,t,String(e)),(0,Mn[i[0]])(s,i,r.localize,d)}).join("")},j:function(e){const t=pe(e);return t.getMonth()},l:function(e){const t=pe(e);return t.getTime()},m:Jt,n:function(e){const t=pe(e);return t.getDay()},o:dn,q:Qt,s:function(e){const t=pe(e);return t.setDate(1),t.setHours(0,0,0,0),t},w:function(e,t){const n=pe(e);return isNaN(+n)?Ut(e,NaN):(n.setFullYear(t),n)},x:function(e,t){return Qt(e,12*t)},y:function(e,t){return Qt(e,3*t)}});let a=class{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function r(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function i(e,...t){const n=Object.create(null);for(const a in e)n[a]=e[a];return t.forEach(function(e){for(const t in e)n[t]=e[t]}),n}const o=e=>!!e.scope;class s{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=r(e)}openNode(e){if(!o(e))return;const t=((e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${"_".repeat(t+1)}`)].join(" ")}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){o(e)&&(this.buffer+="")}value(){return this.buffer}span(e){this.buffer+=``}}const u=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class d{constructor(){this.rootNode=u(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t=u({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(e=>"string"==typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{d._collapse(e)}))}}class c extends d{constructor(e){super(),this.options=e}addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){const n=e.root;t&&(n.scope=`language:${t}`),this.add(n)}toHTML(){return new s(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function l(e){return e?"string"==typeof e?e:e.source:null}function h(e){return f("(?=",e,")")}function m(e){return f("(?:",e,")*")}function g(e){return f("(?:",e,")?")}function f(...e){return e.map(e=>l(e)).join("")}function p(...e){const t=function(e){const t=e[e.length-1];return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}(e);return"("+(t.capture?"":"?:")+e.map(e=>l(e)).join("|")+")"}function b(e){return new RegExp(e.toString()+"|").exec("").length-1}const w=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function y(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;const t=n;let a=l(e),r="";for(;a.length>0;){const e=w.exec(a);if(!e){r+=a;break}r+=a.substring(0,e.index),a=a.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+String(Number(e[1])+t):(r+=e[0],"("===e[0]&&n++)}return r}).map(e=>`(${e})`).join(t)}const v="[a-zA-Z]\\w*",M="[a-zA-Z_]\\w*",k="\\b\\d+(\\.\\d+)?",x="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",P="\\b(0b[01]+)",S={begin:"\\\\[\\s\\S]",relevance:0},T={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[S]},E={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[S]},N=function(e,t,n={}){const a=i({scope:"comment",begin:e,end:t,contains:[]},n);a.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const r=p("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return a.contains.push({begin:f(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),a},W=N("//","$"),O=N("/\\*","\\*/"),C=N("#","$"),j={scope:"number",begin:k,relevance:0},A={scope:"number",begin:x,relevance:0},R={scope:"number",begin:P,relevance:0},D={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[S,{begin:/\[/,end:/\]/,relevance:0,contains:[S]}]},H={scope:"title",begin:v,relevance:0},z={scope:"title",begin:M,relevance:0},_={begin:"\\.\\s*"+M,relevance:0};var L=Object.freeze({__proto__:null,APOS_STRING_MODE:T,BACKSLASH_ESCAPE:S,BINARY_NUMBER_MODE:R,BINARY_NUMBER_RE:P,COMMENT:N,C_BLOCK_COMMENT_MODE:O,C_LINE_COMMENT_MODE:W,C_NUMBER_MODE:A,C_NUMBER_RE:x,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},HASH_COMMENT_MODE:C,IDENT_RE:v,MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:_,NUMBER_MODE:j,NUMBER_RE:k,PHRASAL_WORDS_MODE:{begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},QUOTE_STRING_MODE:E,REGEXP_MODE:D,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=f(t,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},TITLE_MODE:H,UNDERSCORE_IDENT_RE:M,UNDERSCORE_TITLE_MODE:z});function q(e,t){"."===e.input[e.index-1]&&t.ignoreMatch()}function F(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function B(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=q,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function G(e,t){Array.isArray(e.illegal)&&(e.illegal=p(...e.illegal))}function I(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function X(e,t){void 0===e.relevance&&(e.relevance=1)}const Y=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=f(n.beforeMatch,h(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},U=["of","and","for","in","not","or","if","then","parent","list","value"];function J(e,t,n="keyword"){const a=Object.create(null);return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach(function(n){Object.assign(a,J(e[n],t,n))}),a;function r(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach(function(t){const n=t.split("|");a[n[0]]=[e,Q(n[0],n[1])]})}}function Q(e,t){return t?Number(t):function(e){return U.includes(e.toLowerCase())}(e)?0:1}const $={},K=e=>{console.error(e)},V=(e,...t)=>{console.log(`WARN: ${e}`,...t)},Z=(e,t)=>{$[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),$[`${e}/${t}`]=!0)},ee=new Error;function te(e,t,{key:n}){let a=0;const r=e[n],i={},o={};for(let s=1;s<=t.length;s++)o[s+a]=r[s],i[s+a]=!0,a+=b(t[s-1]);e[n]=o,e[n]._emit=i,e[n]._multi=!0}function ne(e){!function(e){e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope)}(e),"string"==typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope}),function(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw K("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),ee;if("object"!=typeof e.beginScope||null===e.beginScope)throw K("beginScope must be object"),ee;te(e,e.begin,{key:"beginScope"}),e.begin=y(e.begin,{joinWith:""})}}(e),function(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw K("skip, excludeEnd, returnEnd not compatible with endScope: {}"),ee;if("object"!=typeof e.endScope||null===e.endScope)throw K("endScope must be object"),ee;te(e,e.end,{key:"endScope"}),e.end=y(e.end,{joinWith:""})}}(e)}function ae(e){function t(t,n){return new RegExp(l(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=b(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=t(y(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex((e,t)=>t>0&&void 0!==e),a=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,a)}}class a{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=i(e.classNameAliases||{}),function n(r,o){const s=r;if(r.isCompiled)return s;[F,I,ne,Y].forEach(e=>e(r,o)),e.compilerExtensions.forEach(e=>e(r,o)),r.__beforeBegin=null,[B,G,X].forEach(e=>e(r,o)),r.isCompiled=!0;let u=null;return"object"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),u=r.keywords.$pattern,delete r.keywords.$pattern),u=u||/\w+/,r.keywords&&(r.keywords=J(r.keywords,e.case_insensitive)),s.keywordPatternRe=t(u,!0),o&&(r.begin||(r.begin=/\B|\b/),s.beginRe=t(s.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(s.endRe=t(s.end)),s.terminatorEnd=l(s.end)||"",r.endsWithParent&&o.terminatorEnd&&(s.terminatorEnd+=(r.end?"|":"")+o.terminatorEnd)),r.illegal&&(s.illegalRe=t(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map(function(e){return function(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return i(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:re(e)?i(e,{starts:e.starts?i(e.starts):null}):Object.isFrozen(e)?i(e):e}("self"===e?r:e)})),r.contains.forEach(function(e){n(e,s)}),r.starts&&n(r.starts,o),s.matcher=function(e){const t=new a;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:"begin"})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}(s),s}(e)}function re(e){return!!e&&(e.endsWithParent||re(e.starts))}class ie extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const oe=r,se=i,ue=Symbol("nomatch"),de=function(e){const n=Object.create(null),r=Object.create(null),i=[];let o=!0;const s="Could not find the language '{}', did you forget to load/include a language module?",u={disableAutodetect:!0,name:"Plain text",contains:[]};let d={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:c};function l(e){return d.noHighlightRe.test(e)}function b(e,t,n){let a="",r="";"object"==typeof t?(a=e,n=t.ignoreIllegals,r=t.language):(Z("10.7.0","highlight(lang, code, ...args) has been deprecated."),Z("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),r=e,a=t),void 0===n&&(n=!0);const i={code:a,language:r};T("before:highlight",i);const o=i.result?i.result:w(i.language,i.code,n);return o.code=i.code,T("after:highlight",o),o}function w(e,t,r,i){const u=Object.create(null);function c(e,t){return e.keywords[t]}function l(){if(!E.keywords)return void W.addText(O);let e=0;E.keywordPatternRe.lastIndex=0;let t=E.keywordPatternRe.exec(O),n="";for(;t;){n+=O.substring(e,t.index);const a=P.case_insensitive?t[0].toLowerCase():t[0],r=c(E,a);if(r){const[e,i]=r;if(W.addText(n),n="",u[a]=(u[a]||0)+1,u[a]<=7&&(C+=i),e.startsWith("_"))n+=t[0];else{const n=P.classNameAliases[e]||e;m(t[0],n)}}else n+=t[0];e=E.keywordPatternRe.lastIndex,t=E.keywordPatternRe.exec(O)}n+=O.substring(e),W.addText(n)}function h(){null!=E.subLanguage?function(){if(""===O)return;let e=null;if("string"==typeof E.subLanguage){if(!n[E.subLanguage])return void W.addText(O);e=w(E.subLanguage,O,!0,N[E.subLanguage]),N[E.subLanguage]=e._top}else e=y(O,E.subLanguage.length?E.subLanguage:null);E.relevance>0&&(C+=e.relevance),W.__addSublanguage(e._emitter,e.language)}():l(),O=""}function m(e,t){""!==e&&(W.startScope(t),W.addText(e),W.endScope())}function g(e,t){let n=1;const a=t.length-1;for(;n<=a;){if(!e._emit[n]){n++;continue}const a=P.classNameAliases[e[n]]||e[n],r=t[n];a?m(r,a):(O=r,l(),O=""),n++}}function f(e,t){return e.scope&&"string"==typeof e.scope&&W.openNode(P.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(m(O,P.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),O=""):e.beginScope._multi&&(g(e.beginScope,t),O="")),E=Object.create(e,{parent:{value:E}}),E}function p(e,t,n){let r=function(e,t){const n=e&&e.exec(t);return n&&0===n.index}(e.endRe,n);if(r){if(e["on:end"]){const n=new a(e);e["on:end"](t,n),n.isMatchIgnored&&(r=!1)}if(r){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return p(e.parent,t,n)}function b(e){return 0===E.matcher.regexIndex?(O+=e[0],1):(R=!0,0)}function v(e){const n=e[0],a=t.substring(e.index),r=p(E,e,a);if(!r)return ue;const i=E;E.endScope&&E.endScope._wrap?(h(),m(n,E.endScope._wrap)):E.endScope&&E.endScope._multi?(h(),g(E.endScope,e)):i.skip?O+=n:(i.returnEnd||i.excludeEnd||(O+=n),h(),i.excludeEnd&&(O=n));do{E.scope&&W.closeNode(),E.skip||E.subLanguage||(C+=E.relevance),E=E.parent}while(E!==r.parent);return r.starts&&f(r.starts,e),i.returnEnd?0:n.length}let M={};function k(n,i){const s=i&&i[0];if(O+=n,null==s)return h(),0;if("begin"===M.type&&"end"===i.type&&M.index===i.index&&""===s){if(O+=t.slice(i.index,i.index+1),!o){const t=new Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=M.rule,t}return 1}if(M=i,"begin"===i.type)return function(e){const t=e[0],n=e.rule,r=new a(n),i=[n.__beforeBegin,n["on:begin"]];for(const a of i)if(a&&(a(e,r),r.isMatchIgnored))return b(t);return n.skip?O+=t:(n.excludeBegin&&(O+=t),h(),n.returnBegin||n.excludeBegin||(O=t)),f(n,e),n.returnBegin?0:t.length}(i);if("illegal"===i.type&&!r){const e=new Error('Illegal lexeme "'+s+'" for mode "'+(E.scope||"")+'"');throw e.mode=E,e}if("end"===i.type){const e=v(i);if(e!==ue)return e}if("illegal"===i.type&&""===s)return O+="\n",1;if(A>1e5&&A>3*i.index)throw new Error("potential infinite loop, way more iterations than matches");return O+=s,s.length}const P=x(e);if(!P)throw K(s.replace("{}",e)),new Error('Unknown language: "'+e+'"');const S=ae(P);let T="",E=i||S;const N={},W=new d.__emitter(d);!function(){const e=[];for(let t=E;t!==P;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>W.openNode(e))}();let O="",C=0,j=0,A=0,R=!1;try{if(P.__emitTokens)P.__emitTokens(t,W);else{for(E.matcher.considerAll();;){A++,R?R=!1:E.matcher.considerAll(),E.matcher.lastIndex=j;const e=E.matcher.exec(t);if(!e)break;const n=k(t.substring(j,e.index),e);j=e.index+n}k(t.substring(j))}return W.finalize(),T=W.toHTML(),{language:e,value:T,relevance:C,illegal:!1,_emitter:W,_top:E}}catch(D){if(D.message&&D.message.includes("Illegal"))return{language:e,value:oe(t),illegal:!0,relevance:0,_illegalBy:{message:D.message,index:j,context:t.slice(j-100,j+100),mode:D.mode,resultSoFar:T},_emitter:W};if(o)return{language:e,value:oe(t),illegal:!1,relevance:0,errorRaised:D,_emitter:W,_top:E};throw D}}function y(e,t){t=t||d.languages||Object.keys(n);const a=function(e){const t={value:oe(e),illegal:!1,relevance:0,_top:u,_emitter:new d.__emitter(d)};return t._emitter.addText(e),t}(e),r=t.filter(x).filter(S).map(t=>w(t,e,!1));r.unshift(a);const i=r.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(x(e.language).supersetOf===t.language)return 1;if(x(t.language).supersetOf===e.language)return-1}return 0}),[o,s]=i,c=o;return c.secondBest=s,c}function v(e){let t=null;const n=function(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=d.languageDetectRe.exec(t);if(n){const t=x(n[1]);return t||(V(s.replace("{}",n[1])),V("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find(e=>l(e)||x(e))}(e);if(l(n))return;if(T("before:highlightElement",{el:e,language:n}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);if(e.children.length>0&&(d.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(e)),d.throwUnescapedHTML))throw new ie("One of your code blocks includes unescaped HTML.",e.innerHTML);t=e;const a=t.textContent,i=n?b(a,{language:n,ignoreIllegals:!0}):y(a);e.innerHTML=i.value,e.dataset.highlighted="yes",function(e,t,n){const a=t&&r[t]||n;e.classList.add("hljs"),e.classList.add(`language-${a}`)}(e,n,i.language),e.result={language:i.language,re:i.relevance,relevance:i.relevance},i.secondBest&&(e.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance}),T("after:highlightElement",{el:e,result:i,text:a})}let M=!1;function k(){if("loading"===document.readyState)return M||window.addEventListener("DOMContentLoaded",function(){k()},!1),void(M=!0);document.querySelectorAll(d.cssSelector).forEach(v)}function x(e){return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function P(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach(e=>{r[e.toLowerCase()]=t})}function S(e){const t=x(e);return t&&!t.disableAutodetect}function T(e,t){const n=e;i.forEach(function(e){e[n]&&e[n](t)})}Object.assign(e,{highlight:b,highlightAuto:y,highlightAll:k,highlightElement:v,highlightBlock:function(e){return Z("10.7.0","highlightBlock will be removed entirely in v12.0"),Z("10.7.0","Please use highlightElement now."),v(e)},configure:function(e){d=se(d,e)},initHighlighting:()=>{k(),Z("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:function(){k(),Z("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:function(t,a){let r=null;try{r=a(e)}catch(i){if(K("Language definition for '{}' could not be registered.".replace("{}",t)),!o)throw i;K(i),r=u}r.name||(r.name=t),n[t]=r,r.rawDefinition=a.bind(null,e),r.aliases&&P(r.aliases,{languageName:t})},unregisterLanguage:function(e){delete n[e];for(const t of Object.keys(r))r[t]===e&&delete r[t]},listLanguages:function(){return Object.keys(n)},getLanguage:x,registerAliases:P,autoDetection:S,inherit:se,addPlugin:function(e){!function(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}(e),i.push(e)},removePlugin:function(e){const t=i.indexOf(e);-1!==t&&i.splice(t,1)}}),e.debugMode=function(){o=!1},e.safeMode=function(){o=!0},e.versionString="11.11.1",e.regex={concat:f,lookahead:h,either:p,optional:g,anyNumberOfTimes:m};for(const a in L)"object"==typeof L[a]&&t(L[a]);return Object.assign(e,L),e},ce=de({});ce.newInstance=()=>de({});var le=ce;function he(e){return(t={})=>{const n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}function me(e){return(t,n)=>{let a;if("formatting"===(n?.context?String(n.context):"standalone")&&e.formattingValues){const t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;a=e.formattingValues[r]||e.formattingValues[t]}else{const t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;a=e.values[r]||e.values[t]}return a[e.argumentCallback?e.argumentCallback(t):t]}}function ge(e){return(t,n={})=>{const a=n.width,r=a&&e.matchPatterns[a]||e.matchPatterns[e.defaultMatchWidth],i=t.match(r);if(!i)return null;const o=i[0],s=a&&e.parsePatterns[a]||e.parsePatterns[e.defaultParseWidth],u=Array.isArray(s)?function(e,t){for(let n=0;ne.test(o)):function(e,t){for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}(s,e=>e.test(o));let d;return d=e.valueCallback?e.valueCallback(u):u,d=n.valueCallback?n.valueCallback(d):d,{value:d,rest:t.slice(o.length)}}}function fe(e){return(t,n={})=>{const a=t.match(e.matchPattern);if(!a)return null;const r=a[0],i=t.match(e.parsePattern);if(!i)return null;let o=e.valueCallback?e.valueCallback(i[0]):i[0];return o=n.valueCallback?n.valueCallback(o):o,{value:o,rest:t.slice(r.length)}}}function pe(e){const t=Object.prototype.toString.call(e);return e instanceof Date||"object"==typeof e&&"[object Date]"===t?new e.constructor(+e):"number"==typeof e||"[object Number]"===t||"string"==typeof e||"[object String]"===t?new Date(e):new Date(NaN)}ce.HighlightJS=ce,ce.default=ce,e("a1",n(le));let be={};function we(){return be}function ye(e,t){const n=we(),a=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,r=pe(e),i=r.getDay(),o=(iNumber(e)+".",era:me({values:{narrow:["v.Chr.","n.Chr."],abbreviated:["v.Chr.","n.Chr."],wide:["vor Christus","nach Christus"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:Pe,formattingValues:Se,defaultWidth:"wide"}),day:me({values:{narrow:["S","M","D","M","D","F","S"],short:["So","Mo","Di","Mi","Do","Fr","Sa"],abbreviated:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],wide:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachm.",evening:"Abend",night:"Nacht"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"}},defaultWidth:"wide",formattingValues:{narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachm.",evening:"abends",night:"nachts"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"}},defaultFormattingWidth:"wide"})},Ee={ordinalNumber:fe({matchPattern:/^(\d+)(\.)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e)}),era:ge({matchPatterns:{narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^v/i,/^n/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[aä]/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},defaultParseWidth:"any"})},Ne=(e("d",{code:"de",formatDistance:(e,t,n)=>{let a;const r=n?.addSuffix?Me[e].withPreposition:Me[e].standalone;return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),n?.addSuffix?n.comparison&&n.comparison>0?"in "+a:"vor "+a:a},formatLong:ke,formatRelative:(e,t,n,a)=>xe[e],localize:Te,match:Ee,options:{weekStartsOn:1,firstWeekContainsDate:4}}),{lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}}),We={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Oe={ordinalNumber:(e,t)=>{const n=Number(e),a=n%100;if(a>20||a<10)switch(a%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:me({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:me({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},Ce={ordinalNumber:fe({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},je={date:he({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:he({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Ae=e("e",{code:"en-US",formatDistance:(e,t,n)=>{let a;const r=Ne[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+a:a+" ago":a},formatLong:je,formatRelative:(e,t,n,a)=>We[e],localize:Oe,match:Ce,options:{weekStartsOn:0,firstWeekContainsDate:1}}),Re={lessThanXSeconds:{one:"menos de un segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"medio minuto",lessThanXMinutes:{one:"menos de un minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"alrededor de 1 hora",other:"alrededor de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 día",other:"{{count}} días"},aboutXWeeks:{one:"alrededor de 1 semana",other:"alrededor de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"alrededor de 1 mes",other:"alrededor de {{count}} meses"},xMonths:{one:"1 mes",other:"{{count}} meses"},aboutXYears:{one:"alrededor de 1 año",other:"alrededor de {{count}} años"},xYears:{one:"1 año",other:"{{count}} años"},overXYears:{one:"más de 1 año",other:"más de {{count}} años"},almostXYears:{one:"casi 1 año",other:"casi {{count}} años"}},De={date:he({formats:{full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:he({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'a las' {{time}}",long:"{{date}} 'a las' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},He={lastWeek:"'el' eeee 'pasado a la' p",yesterday:"'ayer a la' p",today:"'hoy a la' p",tomorrow:"'mañana a la' p",nextWeek:"eeee 'a la' p",other:"P"},ze={lastWeek:"'el' eeee 'pasado a las' p",yesterday:"'ayer a las' p",today:"'hoy a las' p",tomorrow:"'mañana a las' p",nextWeek:"eeee 'a las' p",other:"P"},_e={ordinalNumber:(e,t)=>Number(e)+"º",era:me({values:{narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","después de cristo"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},defaultWidth:"wide",argumentCallback:e=>Number(e)-1}),month:me({values:{narrow:["e","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],wide:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]},defaultWidth:"wide"}),day:me({values:{narrow:["d","l","m","m","j","v","s"],short:["do","lu","ma","mi","ju","vi","sá"],abbreviated:["dom","lun","mar","mié","jue","vie","sáb"],wide:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"}},defaultFormattingWidth:"wide"})},Le={ordinalNumber:fe({matchPattern:/^(\d+)(º)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}}),era:ge({matchPatterns:{narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes de la era com[uú]n)/i,/^(despu[eé]s de cristo|era com[uú]n)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[efmajsond]/i,abbreviated:/^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,wide:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^e/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^en/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[dlmjvs]/i,short:/^(do|lu|ma|mi|ju|vi|s[áa])/i,abbreviated:/^(dom|lun|mar|mi[ée]|jue|vie|s[áa]b)/i,wide:/^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^do/i,/^lu/i,/^ma/i,/^mi/i,/^ju/i,/^vi/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,any:/^([ap]\.?\s?m\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mn/i,noon:/^md/i,morning:/mañana/i,afternoon:/tarde/i,evening:/tarde/i,night:/noche/i}},defaultParseWidth:"any"})},qe=(e("a",{code:"es",formatDistance:(e,t,n)=>{let a;const r=Re[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"en "+a:"hace "+a:a},formatLong:De,formatRelative:(e,t,n,a)=>1!==t.getHours()?ze[e]:He[e],localize:_e,match:Le,options:{weekStartsOn:1,firstWeekContainsDate:1}}),{lessThanXSeconds:{one:"moins d’une seconde",other:"moins de {{count}} secondes"},xSeconds:{one:"1 seconde",other:"{{count}} secondes"},halfAMinute:"30 secondes",lessThanXMinutes:{one:"moins d’une minute",other:"moins de {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"environ 1 heure",other:"environ {{count}} heures"},xHours:{one:"1 heure",other:"{{count}} heures"},xDays:{one:"1 jour",other:"{{count}} jours"},aboutXWeeks:{one:"environ 1 semaine",other:"environ {{count}} semaines"},xWeeks:{one:"1 semaine",other:"{{count}} semaines"},aboutXMonths:{one:"environ 1 mois",other:"environ {{count}} mois"},xMonths:{one:"1 mois",other:"{{count}} mois"},aboutXYears:{one:"environ 1 an",other:"environ {{count}} ans"},xYears:{one:"1 an",other:"{{count}} ans"},overXYears:{one:"plus d’un an",other:"plus de {{count}} ans"},almostXYears:{one:"presqu’un an",other:"presque {{count}} ans"}}),Fe={date:he({formats:{full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:he({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'à' {{time}}",long:"{{date}} 'à' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Be={lastWeek:"eeee 'dernier à' p",yesterday:"'hier à' p",today:"'aujourd’hui à' p",tomorrow:"'demain à' p'",nextWeek:"eeee 'prochain à' p",other:"P"},Ge=["MMM","MMMM"],Ie={preprocessor:(e,t)=>1===e.getDate()?t:t.some(e=>e.isToken&&Ge.includes(e.value))?t.map(e=>e.isToken&&"do"===e.value?{isToken:!0,value:"d"}:e):t,ordinalNumber:(e,t)=>{const n=Number(e),a=t?.unit;if(0===n)return"0";let r;return r=1===n?a&&["year","week","hour","minute","second"].includes(a)?"ère":"er":"ème",n+r},era:me({values:{narrow:["av. J.-C","ap. J.-C"],abbreviated:["av. J.-C","ap. J.-C"],wide:["avant Jésus-Christ","après Jésus-Christ"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["T1","T2","T3","T4"],abbreviated:["1er trim.","2ème trim.","3ème trim.","4ème trim."],wide:["1er trimestre","2ème trimestre","3ème trimestre","4ème trimestre"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],wide:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},defaultWidth:"wide"}),day:me({values:{narrow:["D","L","M","M","J","V","S"],short:["di","lu","ma","me","je","ve","sa"],abbreviated:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],wide:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"mat.",afternoon:"ap.m.",evening:"soir",night:"mat."},abbreviated:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"matin",afternoon:"après-midi",evening:"soir",night:"matin"},wide:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"du matin",afternoon:"de l’après-midi",evening:"du soir",night:"du matin"}},defaultWidth:"wide"})},Xe={ordinalNumber:fe({matchPattern:/^(\d+)(ième|ère|ème|er|e)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e)}),era:ge({matchPatterns:{narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant Jésus-Christ|après Jésus-Christ)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^av/i,/^ap/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^T?[1234]/i,abbreviated:/^[1234](er|ème|e)? trim\.?/i,wide:/^[1234](er|ème|e)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,wide:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},defaultParseWidth:"any"})},Ye=(e("f",{code:"fr",formatDistance:(e,t,n)=>{let a;const r=qe[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),n?.addSuffix?n.comparison&&n.comparison>0?"dans "+a:"il y a "+a:a},formatLong:Fe,formatRelative:(e,t,n,a)=>Be[e],localize:Ie,match:Xe,options:{weekStartsOn:1,firstWeekContainsDate:4}}),{lessThanXSeconds:{one:"kurang dari 1 detik",other:"kurang dari {{count}} detik"},xSeconds:{one:"1 detik",other:"{{count}} detik"},halfAMinute:"setengah menit",lessThanXMinutes:{one:"kurang dari 1 menit",other:"kurang dari {{count}} menit"},xMinutes:{one:"1 menit",other:"{{count}} menit"},aboutXHours:{one:"sekitar 1 jam",other:"sekitar {{count}} jam"},xHours:{one:"1 jam",other:"{{count}} jam"},xDays:{one:"1 hari",other:"{{count}} hari"},aboutXWeeks:{one:"sekitar 1 minggu",other:"sekitar {{count}} minggu"},xWeeks:{one:"1 minggu",other:"{{count}} minggu"},aboutXMonths:{one:"sekitar 1 bulan",other:"sekitar {{count}} bulan"},xMonths:{one:"1 bulan",other:"{{count}} bulan"},aboutXYears:{one:"sekitar 1 tahun",other:"sekitar {{count}} tahun"},xYears:{one:"1 tahun",other:"{{count}} tahun"},overXYears:{one:"lebih dari 1 tahun",other:"lebih dari {{count}} tahun"},almostXYears:{one:"hampir 1 tahun",other:"hampir {{count}} tahun"}}),Ue={date:he({formats:{full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"d/M/yyyy"},defaultWidth:"full"}),time:he({formats:{full:"HH.mm.ss",long:"HH.mm.ss",medium:"HH.mm",short:"HH.mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'pukul' {{time}}",long:"{{date}} 'pukul' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Je={lastWeek:"eeee 'lalu pukul' p",yesterday:"'Kemarin pukul' p",today:"'Hari ini pukul' p",tomorrow:"'Besok pukul' p",nextWeek:"eeee 'pukul' p",other:"P"},Qe={ordinalNumber:(e,t)=>"ke-"+Number(e),era:me({values:{narrow:["SM","M"],abbreviated:["SM","M"],wide:["Sebelum Masehi","Masehi"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],wide:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]},defaultWidth:"wide"}),day:me({values:{narrow:["M","S","S","R","K","J","S"],short:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],abbreviated:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],wide:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},defaultWidth:"wide",formattingValues:{narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},defaultFormattingWidth:"wide"})},$e={ordinalNumber:fe({matchPattern:/^ke-(\d+)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(sm|m)/i,abbreviated:/^(s\.?\s?m\.?|s\.?\s?e\.?\s?u\.?|m\.?|e\.?\s?u\.?)/i,wide:/^(sebelum masehi|sebelum era umum|masehi|era umum)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^s/i,/^(m|e)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^K-?\s[1234]/i,wide:/^Kuartal ke-?\s?[1234]/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|mei|jun|jul|agt|sep|okt|nov|des)/i,wide:/^(januari|februari|maret|april|mei|juni|juli|agustus|september|oktober|november|desember)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^ma/i,/^ap/i,/^me/i,/^jun/i,/^jul/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[srkjm]/i,short:/^(min|sen|sel|rab|kam|jum|sab)/i,abbreviated:/^(min|sen|sel|rab|kam|jum|sab)/i,wide:/^(minggu|senin|selasa|rabu|kamis|jumat|sabtu)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^m/i,/^s/i,/^s/i,/^r/i,/^k/i,/^j/i,/^s/i],any:[/^m/i,/^sen/i,/^sel/i,/^r/i,/^k/i,/^j/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|p|tengah m|tengah h|(di(\swaktu)?) (pagi|siang|sore|malam))/i,any:/^([ap]\.?\s?m\.?|tengah malam|tengah hari|(di(\swaktu)?) (pagi|siang|sore|malam))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^pm/i,midnight:/^tengah m/i,noon:/^tengah h/i,morning:/pagi/i,afternoon:/siang/i,evening:/sore/i,night:/malam/i}},defaultParseWidth:"any"})},Ke=(e("i",{code:"id",formatDistance:(e,t,n)=>{let a;const r=Ye[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"dalam waktu "+a:a+" yang lalu":a},formatLong:Ue,formatRelative:(e,t,n,a)=>Je[e],localize:Qe,match:$e,options:{weekStartsOn:1,firstWeekContainsDate:1}}),{lessThanXSeconds:{one:"meno di un secondo",other:"meno di {{count}} secondi"},xSeconds:{one:"un secondo",other:"{{count}} secondi"},halfAMinute:"alcuni secondi",lessThanXMinutes:{one:"meno di un minuto",other:"meno di {{count}} minuti"},xMinutes:{one:"un minuto",other:"{{count}} minuti"},aboutXHours:{one:"circa un'ora",other:"circa {{count}} ore"},xHours:{one:"un'ora",other:"{{count}} ore"},xDays:{one:"un giorno",other:"{{count}} giorni"},aboutXWeeks:{one:"circa una settimana",other:"circa {{count}} settimane"},xWeeks:{one:"una settimana",other:"{{count}} settimane"},aboutXMonths:{one:"circa un mese",other:"circa {{count}} mesi"},xMonths:{one:"un mese",other:"{{count}} mesi"},aboutXYears:{one:"circa un anno",other:"circa {{count}} anni"},xYears:{one:"un anno",other:"{{count}} anni"},overXYears:{one:"più di un anno",other:"più di {{count}} anni"},almostXYears:{one:"quasi un anno",other:"quasi {{count}} anni"}}),Ve={date:he({formats:{full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:he({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},Ze=["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"];function et(e){return"'"+Ze[e]+" alle' p"}const tt={lastWeek:(e,t,n)=>{const a=e.getDay();return ve(e,t,n)?et(a):function(e){return 0===e?"'domenica scorsa alle' p":"'"+Ze[e]+" scorso alle' p"}(a)},yesterday:"'ieri alle' p",today:"'oggi alle' p",tomorrow:"'domani alle' p",nextWeek:(e,t,n)=>{const a=e.getDay();return ve(e,t,n)?et(a):function(e){return 0===e?"'domenica prossima alle' p":"'"+Ze[e]+" prossimo alle' p"}(a)},other:"P"},nt={ordinalNumber:(e,t)=>{const n=Number(e);return String(n)},era:me({values:{narrow:["aC","dC"],abbreviated:["a.C.","d.C."],wide:["avanti Cristo","dopo Cristo"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["G","F","M","A","M","G","L","A","S","O","N","D"],abbreviated:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],wide:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"]},defaultWidth:"wide"}),day:me({values:{narrow:["D","L","M","M","G","V","S"],short:["dom","lun","mar","mer","gio","ven","sab"],abbreviated:["dom","lun","mar","mer","gio","ven","sab"],wide:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"}},defaultWidth:"wide",formattingValues:{narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"}},defaultFormattingWidth:"wide"})},at={ordinalNumber:fe({matchPattern:/^(\d+)(º)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(aC|dC)/i,abbreviated:/^(a\.?\s?C\.?|a\.?\s?e\.?\s?v\.?|d\.?\s?C\.?|e\.?\s?v\.?)/i,wide:/^(avanti Cristo|avanti Era Volgare|dopo Cristo|Era Volgare)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^a/i,/^(d|e)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^t[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[gfmalsond]/i,abbreviated:/^(gen|feb|mar|apr|mag|giu|lug|ago|set|ott|nov|dic)/i,wide:/^(gennaio|febbraio|marzo|aprile|maggio|giugno|luglio|agosto|settembre|ottobre|novembre|dicembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^g/i,/^f/i,/^m/i,/^a/i,/^m/i,/^g/i,/^l/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ge/i,/^f/i,/^mar/i,/^ap/i,/^mag/i,/^gi/i,/^l/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[dlmgvs]/i,short:/^(do|lu|ma|me|gi|ve|sa)/i,abbreviated:/^(dom|lun|mar|mer|gio|ven|sab)/i,wide:/^(domenica|luned[i|ì]|marted[i|ì]|mercoled[i|ì]|gioved[i|ì]|venerd[i|ì]|sabato)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^g/i,/^v/i,/^s/i],any:[/^d/i,/^l/i,/^ma/i,/^me/i,/^g/i,/^v/i,/^s/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|m\.|p|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i,any:/^([ap]\.?\s?m\.?|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mezza/i,noon:/^mezzo/i,morning:/mattina/i,afternoon:/pomeriggio/i,evening:/sera/i,night:/notte/i}},defaultParseWidth:"any"})},rt=(e("b",{code:"it",formatDistance:(e,t,n)=>{let a;const r=Ke[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"tra "+a:a+" fa":a},formatLong:Ve,formatRelative:(e,t,n,a)=>{const r=tt[e];return"function"==typeof r?r(t,n,a):r},localize:nt,match:at,options:{weekStartsOn:1,firstWeekContainsDate:4}}),{lessThanXSeconds:{one:"1초 미만",other:"{{count}}초 미만"},xSeconds:{one:"1초",other:"{{count}}초"},halfAMinute:"30초",lessThanXMinutes:{one:"1분 미만",other:"{{count}}분 미만"},xMinutes:{one:"1분",other:"{{count}}분"},aboutXHours:{one:"약 1시간",other:"약 {{count}}시간"},xHours:{one:"1시간",other:"{{count}}시간"},xDays:{one:"1일",other:"{{count}}일"},aboutXWeeks:{one:"약 1주",other:"약 {{count}}주"},xWeeks:{one:"1주",other:"{{count}}주"},aboutXMonths:{one:"약 1개월",other:"약 {{count}}개월"},xMonths:{one:"1개월",other:"{{count}}개월"},aboutXYears:{one:"약 1년",other:"약 {{count}}년"},xYears:{one:"1년",other:"{{count}}년"},overXYears:{one:"1년 이상",other:"{{count}}년 이상"},almostXYears:{one:"거의 1년",other:"거의 {{count}}년"}}),it={date:he({formats:{full:"y년 M월 d일 EEEE",long:"y년 M월 d일",medium:"y.MM.dd",short:"y.MM.dd"},defaultWidth:"full"}),time:he({formats:{full:"a H시 mm분 ss초 zzzz",long:"a H:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},ot={lastWeek:"'지난' eeee p",yesterday:"'어제' p",today:"'오늘' p",tomorrow:"'내일' p",nextWeek:"'다음' eeee p",other:"P"},st={ordinalNumber:(e,t)=>{const n=Number(e);switch(String(t?.unit)){case"minute":case"second":return String(n);case"date":return n+"일";default:return n+"번째"}},era:me({values:{narrow:["BC","AD"],abbreviated:["BC","AD"],wide:["기원전","서기"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1분기","2분기","3분기","4분기"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],wide:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},defaultWidth:"wide"}),day:me({values:{narrow:["일","월","화","수","목","금","토"],short:["일","월","화","수","목","금","토"],abbreviated:["일","월","화","수","목","금","토"],wide:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},abbreviated:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},wide:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"}},defaultWidth:"wide",formattingValues:{narrow:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},abbreviated:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},wide:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"}},defaultFormattingWidth:"wide"})},ut={ordinalNumber:fe({matchPattern:/^(\d+)(일|번째)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(기원전|서기)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^(bc|기원전)/i,/^(ad|서기)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234]사?분기/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^(1[012]|[123456789])/,abbreviated:/^(1[012]|[123456789])월/i,wide:/^(1[012]|[123456789])월/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^1월?$/,/^2/,/^3/,/^4/,/^5/,/^6/,/^7/,/^8/,/^9/,/^10/,/^11/,/^12/]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[일월화수목금토]/,short:/^[일월화수목금토]/,abbreviated:/^[일월화수목금토]/,wide:/^[일월화수목금토]요일/},defaultMatchWidth:"wide",parsePatterns:{any:[/^일/,/^월/,/^화/,/^수/,/^목/,/^금/,/^토/]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{any:/^(am|pm|오전|오후|자정|정오|아침|저녁|밤)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^(am|오전)/i,pm:/^(pm|오후)/i,midnight:/^자정/i,noon:/^정오/i,morning:/^아침/i,afternoon:/^오후/i,evening:/^저녁/i,night:/^밤/i}},defaultParseWidth:"any"})},dt=(e("k",{code:"ko",formatDistance:(e,t,n)=>{let a;const r=rt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?a+" 후":a+" 전":a},formatLong:it,formatRelative:(e,t,n,a)=>ot[e],localize:st,match:ut,options:{weekStartsOn:0,firstWeekContainsDate:1}}),{lessThanXSeconds:{one:"menos de um segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"meio minuto",lessThanXMinutes:{one:"menos de um minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"cerca de 1 hora",other:"cerca de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 dia",other:"{{count}} dias"},aboutXWeeks:{one:"cerca de 1 semana",other:"cerca de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"cerca de 1 mês",other:"cerca de {{count}} meses"},xMonths:{one:"1 mês",other:"{{count}} meses"},aboutXYears:{one:"cerca de 1 ano",other:"cerca de {{count}} anos"},xYears:{one:"1 ano",other:"{{count}} anos"},overXYears:{one:"mais de 1 ano",other:"mais de {{count}} anos"},almostXYears:{one:"quase 1 ano",other:"quase {{count}} anos"}}),ct={date:he({formats:{full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/yyyy"},defaultWidth:"full"}),time:he({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'às' {{time}}",long:"{{date}} 'às' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},lt={lastWeek:e=>{const t=e.getDay();return"'"+(0===t||6===t?"último":"última")+"' eeee 'às' p"},yesterday:"'ontem às' p",today:"'hoje às' p",tomorrow:"'amanhã às' p",nextWeek:"eeee 'às' p",other:"P"},ht={ordinalNumber:(e,t)=>{const n=Number(e);return"week"===t?.unit?n+"ª":n+"º"},era:me({values:{narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","depois de cristo"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],wide:["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},defaultWidth:"wide"}),day:me({values:{narrow:["D","S","T","Q","Q","S","S"],short:["dom","seg","ter","qua","qui","sex","sab"],abbreviated:["domingo","segunda","terça","quarta","quinta","sexta","sábado"],wide:["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"}},defaultFormattingWidth:"wide"})},mt={ordinalNumber:fe({matchPattern:/^(\d+)[ºªo]?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|d\.?\s?c\.?)/i,wide:/^(antes de cristo|depois de cristo)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^ac/i,/^dc/i],wide:[/^antes de cristo/i,/^depois de cristo/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[jfmajsond]/i,abbreviated:/^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,wide:/^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^fev/i,/^mar/i,/^abr/i,/^mai/i,/^jun/i,/^jul/i,/^ago/i,/^set/i,/^out/i,/^nov/i,/^dez/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^(dom|[23456]ª?|s[aá]b)/i,short:/^(dom|[23456]ª?|s[aá]b)/i,abbreviated:/^(dom|seg|ter|qua|qui|sex|s[aá]b)/i,wide:/^(domingo|(segunda|ter[cç]a|quarta|quinta|sexta)([- ]feira)?|s[aá]bado)/i},defaultMatchWidth:"wide",parsePatterns:{short:[/^d/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^s[aá]/i],narrow:[/^d/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^s[aá]/i],any:[/^d/i,/^seg/i,/^t/i,/^qua/i,/^qui/i,/^sex/i,/^s[aá]b/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|p|mn|md|(da) (manhã|tarde|noite))/i,any:/^([ap]\.?\s?m\.?|meia[-\s]noite|meio[-\s]dia|(da) (manhã|tarde|noite))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mn|^meia[-\s]noite/i,noon:/^md|^meio[-\s]dia/i,morning:/manhã/i,afternoon:/tarde/i,evening:/tarde/i,night:/noite/i}},defaultParseWidth:"any"})};function gt(e,t){if(void 0!==e.one&&1===t)return e.one;const n=t%10,a=t%100;return 1===n&&11!==a?e.singularNominative.replace("{{count}}",String(t)):n>=2&&n<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",String(t)):e.pluralGenitive.replace("{{count}}",String(t))}function ft(e){return(t,n)=>n?.addSuffix?n.comparison&&n.comparison>0?e.future?gt(e.future,t):"через "+gt(e.regular,t):e.past?gt(e.past,t):gt(e.regular,t)+" назад":gt(e.regular,t)}e("p",{code:"pt-BR",formatDistance:(e,t,n)=>{let a;const r=dt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),n?.addSuffix?n.comparison&&n.comparison>0?"em "+a:"há "+a:a},formatLong:ct,formatRelative:(e,t,n,a)=>{const r=lt[e];return"function"==typeof r?r(t):r},localize:ht,match:mt,options:{weekStartsOn:0,firstWeekContainsDate:1}});const pt={lessThanXSeconds:ft({regular:{one:"меньше секунды",singularNominative:"меньше {{count}} секунды",singularGenitive:"меньше {{count}} секунд",pluralGenitive:"меньше {{count}} секунд"},future:{one:"меньше, чем через секунду",singularNominative:"меньше, чем через {{count}} секунду",singularGenitive:"меньше, чем через {{count}} секунды",pluralGenitive:"меньше, чем через {{count}} секунд"}}),xSeconds:ft({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунды",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду назад",singularGenitive:"{{count}} секунды назад",pluralGenitive:"{{count}} секунд назад"},future:{singularNominative:"через {{count}} секунду",singularGenitive:"через {{count}} секунды",pluralGenitive:"через {{count}} секунд"}}),halfAMinute:(e,t)=>t?.addSuffix?t.comparison&&t.comparison>0?"через полминуты":"полминуты назад":"полминуты",lessThanXMinutes:ft({regular:{one:"меньше минуты",singularNominative:"меньше {{count}} минуты",singularGenitive:"меньше {{count}} минут",pluralGenitive:"меньше {{count}} минут"},future:{one:"меньше, чем через минуту",singularNominative:"меньше, чем через {{count}} минуту",singularGenitive:"меньше, чем через {{count}} минуты",pluralGenitive:"меньше, чем через {{count}} минут"}}),xMinutes:ft({regular:{singularNominative:"{{count}} минута",singularGenitive:"{{count}} минуты",pluralGenitive:"{{count}} минут"},past:{singularNominative:"{{count}} минуту назад",singularGenitive:"{{count}} минуты назад",pluralGenitive:"{{count}} минут назад"},future:{singularNominative:"через {{count}} минуту",singularGenitive:"через {{count}} минуты",pluralGenitive:"через {{count}} минут"}}),aboutXHours:ft({regular:{singularNominative:"около {{count}} часа",singularGenitive:"около {{count}} часов",pluralGenitive:"около {{count}} часов"},future:{singularNominative:"приблизительно через {{count}} час",singularGenitive:"приблизительно через {{count}} часа",pluralGenitive:"приблизительно через {{count}} часов"}}),xHours:ft({regular:{singularNominative:"{{count}} час",singularGenitive:"{{count}} часа",pluralGenitive:"{{count}} часов"}}),xDays:ft({regular:{singularNominative:"{{count}} день",singularGenitive:"{{count}} дня",pluralGenitive:"{{count}} дней"}}),aboutXWeeks:ft({regular:{singularNominative:"около {{count}} недели",singularGenitive:"около {{count}} недель",pluralGenitive:"около {{count}} недель"},future:{singularNominative:"приблизительно через {{count}} неделю",singularGenitive:"приблизительно через {{count}} недели",pluralGenitive:"приблизительно через {{count}} недель"}}),xWeeks:ft({regular:{singularNominative:"{{count}} неделя",singularGenitive:"{{count}} недели",pluralGenitive:"{{count}} недель"}}),aboutXMonths:ft({regular:{singularNominative:"около {{count}} месяца",singularGenitive:"около {{count}} месяцев",pluralGenitive:"около {{count}} месяцев"},future:{singularNominative:"приблизительно через {{count}} месяц",singularGenitive:"приблизительно через {{count}} месяца",pluralGenitive:"приблизительно через {{count}} месяцев"}}),xMonths:ft({regular:{singularNominative:"{{count}} месяц",singularGenitive:"{{count}} месяца",pluralGenitive:"{{count}} месяцев"}}),aboutXYears:ft({regular:{singularNominative:"около {{count}} года",singularGenitive:"около {{count}} лет",pluralGenitive:"около {{count}} лет"},future:{singularNominative:"приблизительно через {{count}} год",singularGenitive:"приблизительно через {{count}} года",pluralGenitive:"приблизительно через {{count}} лет"}}),xYears:ft({regular:{singularNominative:"{{count}} год",singularGenitive:"{{count}} года",pluralGenitive:"{{count}} лет"}}),overXYears:ft({regular:{singularNominative:"больше {{count}} года",singularGenitive:"больше {{count}} лет",pluralGenitive:"больше {{count}} лет"},future:{singularNominative:"больше, чем через {{count}} год",singularGenitive:"больше, чем через {{count}} года",pluralGenitive:"больше, чем через {{count}} лет"}}),almostXYears:ft({regular:{singularNominative:"почти {{count}} год",singularGenitive:"почти {{count}} года",pluralGenitive:"почти {{count}} лет"},future:{singularNominative:"почти через {{count}} год",singularGenitive:"почти через {{count}} года",pluralGenitive:"почти через {{count}} лет"}})},bt={date:he({formats:{full:"EEEE, d MMMM y 'г.'",long:"d MMMM y 'г.'",medium:"d MMM y 'г.'",short:"dd.MM.y"},defaultWidth:"full"}),time:he({formats:{full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},defaultWidth:"full"}),dateTime:he({formats:{any:"{{date}}, {{time}}"},defaultWidth:"any"})},wt=["воскресенье","понедельник","вторник","среду","четверг","пятницу","субботу"];function yt(e){const t=wt[e];return 2===e?"'во "+t+" в' p":"'в "+t+" в' p"}const vt={lastWeek:(e,t,n)=>{const a=e.getDay();return ve(e,t,n)?yt(a):function(e){const t=wt[e];switch(e){case 0:return"'в прошлое "+t+" в' p";case 1:case 2:case 4:return"'в прошлый "+t+" в' p";case 3:case 5:case 6:return"'в прошлую "+t+" в' p"}}(a)},yesterday:"'вчера в' p",today:"'сегодня в' p",tomorrow:"'завтра в' p",nextWeek:(e,t,n)=>{const a=e.getDay();return ve(e,t,n)?yt(a):function(e){const t=wt[e];switch(e){case 0:return"'в следующее "+t+" в' p";case 1:case 2:case 4:return"'в следующий "+t+" в' p";case 3:case 5:case 6:return"'в следующую "+t+" в' p"}}(a)},other:"P"},Mt={ordinalNumber:(e,t)=>{const n=Number(e),a=t?.unit;let r;return r="date"===a?"-е":"week"===a||"minute"===a||"second"===a?"-я":"-й",n+r},era:me({values:{narrow:["до н.э.","н.э."],abbreviated:["до н. э.","н. э."],wide:["до нашей эры","нашей эры"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["1-й кв.","2-й кв.","3-й кв.","4-й кв."],wide:["1-й квартал","2-й квартал","3-й квартал","4-й квартал"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],abbreviated:["янв.","фев.","март","апр.","май","июнь","июль","авг.","сент.","окт.","нояб.","дек."],wide:["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]},defaultWidth:"wide",formattingValues:{narrow:["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],abbreviated:["янв.","фев.","мар.","апр.","мая","июн.","июл.","авг.","сент.","окт.","нояб.","дек."],wide:["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]},defaultFormattingWidth:"wide"}),day:me({values:{narrow:["В","П","В","С","Ч","П","С"],short:["вс","пн","вт","ср","чт","пт","сб"],abbreviated:["вск","пнд","втр","срд","чтв","птн","суб"],wide:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утро",afternoon:"день",evening:"веч.",night:"ночь"},abbreviated:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утро",afternoon:"день",evening:"веч.",night:"ночь"},wide:{am:"ДП",pm:"ПП",midnight:"полночь",noon:"полдень",morning:"утро",afternoon:"день",evening:"вечер",night:"ночь"}},defaultWidth:"any",formattingValues:{narrow:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утра",afternoon:"дня",evening:"веч.",night:"ночи"},abbreviated:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утра",afternoon:"дня",evening:"веч.",night:"ночи"},wide:{am:"ДП",pm:"ПП",midnight:"полночь",noon:"полдень",morning:"утра",afternoon:"дня",evening:"вечера",night:"ночи"}},defaultFormattingWidth:"wide"})},kt={ordinalNumber:fe({matchPattern:/^(\d+)(-?(е|я|й|ое|ье|ая|ья|ый|ой|ий|ый))?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^((до )?н\.?\s?э\.?)/i,abbreviated:/^((до )?н\.?\s?э\.?)/i,wide:/^(до нашей эры|нашей эры|наша эра)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^д/i,/^н/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^[1234](-?[ыои]?й?)? кв.?/i,wide:/^[1234](-?[ыои]?й?)? квартал/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[яфмаисонд]/i,abbreviated:/^(янв|фев|март?|апр|ма[йя]|июн[ья]?|июл[ья]?|авг|сент?|окт|нояб?|дек)\.?/i,wide:/^(январ[ья]|феврал[ья]|марта?|апрел[ья]|ма[йя]|июн[ья]|июл[ья]|августа?|сентябр[ья]|октябр[ья]|октябр[ья]|ноябр[ья]|декабр[ья])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^я/i,/^ф/i,/^м/i,/^а/i,/^м/i,/^и/i,/^и/i,/^а/i,/^с/i,/^о/i,/^н/i,/^я/i],any:[/^я/i,/^ф/i,/^мар/i,/^ап/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^ав/i,/^с/i,/^о/i,/^н/i,/^д/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[впсч]/i,short:/^(вс|во|пн|по|вт|ср|чт|че|пт|пя|сб|су)\.?/i,abbreviated:/^(вск|вос|пнд|пон|втр|вто|срд|сре|чтв|чет|птн|пят|суб).?/i,wide:/^(воскресень[ея]|понедельника?|вторника?|сред[аы]|четверга?|пятниц[аы]|суббот[аы])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^в/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^в[ос]/i,/^п[он]/i,/^в/i,/^ср/i,/^ч/i,/^п[ят]/i,/^с[уб]/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,abbreviated:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,wide:/^([дп]п|полночь|полдень|утр[оа]|день|дня|вечера?|ноч[ьи])/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^дп/i,pm:/^пп/i,midnight:/^полн/i,noon:/^полд/i,morning:/^у/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},defaultParseWidth:"any"})},xt=(e("r",{code:"ru",formatDistance:(e,t,n)=>pt[e](t,n),formatLong:bt,formatRelative:(e,t,n,a)=>{const r=vt[e];return"function"==typeof r?r(t,n,a):r},localize:Mt,match:kt,options:{weekStartsOn:1,firstWeekContainsDate:1}}),{lessThanXSeconds:{one:"bir saniyeden az",other:"{{count}} saniyeden az"},xSeconds:{one:"1 saniye",other:"{{count}} saniye"},halfAMinute:"yarım dakika",lessThanXMinutes:{one:"bir dakikadan az",other:"{{count}} dakikadan az"},xMinutes:{one:"1 dakika",other:"{{count}} dakika"},aboutXHours:{one:"yaklaşık 1 saat",other:"yaklaşık {{count}} saat"},xHours:{one:"1 saat",other:"{{count}} saat"},xDays:{one:"1 gün",other:"{{count}} gün"},aboutXWeeks:{one:"yaklaşık 1 hafta",other:"yaklaşık {{count}} hafta"},xWeeks:{one:"1 hafta",other:"{{count}} hafta"},aboutXMonths:{one:"yaklaşık 1 ay",other:"yaklaşık {{count}} ay"},xMonths:{one:"1 ay",other:"{{count}} ay"},aboutXYears:{one:"yaklaşık 1 yıl",other:"yaklaşık {{count}} yıl"},xYears:{one:"1 yıl",other:"{{count}} yıl"},overXYears:{one:"1 yıldan fazla",other:"{{count}} yıldan fazla"},almostXYears:{one:"neredeyse 1 yıl",other:"neredeyse {{count}} yıl"}}),Pt={date:he({formats:{full:"d MMMM y EEEE",long:"d MMMM y",medium:"d MMM y",short:"dd.MM.yyyy"},defaultWidth:"full"}),time:he({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'saat' {{time}}",long:"{{date}} 'saat' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},St={lastWeek:"'geçen hafta' eeee 'saat' p",yesterday:"'dün saat' p",today:"'bugün saat' p",tomorrow:"'yarın saat' p",nextWeek:"eeee 'saat' p",other:"P"},Tt={ordinalNumber:(e,t)=>Number(e)+".",era:me({values:{narrow:["MÖ","MS"],abbreviated:["MÖ","MS"],wide:["Milattan Önce","Milattan Sonra"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["1Ç","2Ç","3Ç","4Ç"],wide:["İlk çeyrek","İkinci Çeyrek","Üçüncü çeyrek","Son çeyrek"]},defaultWidth:"wide",argumentCallback:e=>Number(e)-1}),month:me({values:{narrow:["O","Ş","M","N","M","H","T","A","E","E","K","A"],abbreviated:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],wide:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"]},defaultWidth:"wide"}),day:me({values:{narrow:["P","P","S","Ç","P","C","C"],short:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],abbreviated:["Paz","Pzt","Sal","Çar","Per","Cum","Cts"],wide:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"öö",pm:"ös",midnight:"gy",noon:"ö",morning:"sa",afternoon:"ös",evening:"ak",night:"ge"},abbreviated:{am:"ÖÖ",pm:"ÖS",midnight:"gece yarısı",noon:"öğle",morning:"sabah",afternoon:"öğleden sonra",evening:"akşam",night:"gece"},wide:{am:"Ö.Ö.",pm:"Ö.S.",midnight:"gece yarısı",noon:"öğle",morning:"sabah",afternoon:"öğleden sonra",evening:"akşam",night:"gece"}},defaultWidth:"wide",formattingValues:{narrow:{am:"öö",pm:"ös",midnight:"gy",noon:"ö",morning:"sa",afternoon:"ös",evening:"ak",night:"ge"},abbreviated:{am:"ÖÖ",pm:"ÖS",midnight:"gece yarısı",noon:"öğlen",morning:"sabahleyin",afternoon:"öğleden sonra",evening:"akşamleyin",night:"geceleyin"},wide:{am:"ö.ö.",pm:"ö.s.",midnight:"gece yarısı",noon:"öğlen",morning:"sabahleyin",afternoon:"öğleden sonra",evening:"akşamleyin",night:"geceleyin"}},defaultFormattingWidth:"wide"})},Et={ordinalNumber:fe({matchPattern:/^(\d+)(\.)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}}),era:ge({matchPatterns:{narrow:/^(mö|ms)/i,abbreviated:/^(mö|ms)/i,wide:/^(milattan önce|milattan sonra)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(^mö|^milattan önce)/i,/(^ms|^milattan sonra)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^[1234]ç/i,wide:/^((i|İ)lk|(i|İ)kinci|üçüncü|son) çeyrek/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i],abbreviated:[/1ç/i,/2ç/i,/3ç/i,/4ç/i],wide:[/^(i|İ)lk çeyrek/i,/(i|İ)kinci çeyrek/i,/üçüncü çeyrek/i,/son çeyrek/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[oşmnhtaek]/i,abbreviated:/^(oca|şub|mar|nis|may|haz|tem|ağu|eyl|eki|kas|ara)/i,wide:/^(ocak|şubat|mart|nisan|mayıs|haziran|temmuz|ağustos|eylül|ekim|kasım|aralık)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^o/i,/^ş/i,/^m/i,/^n/i,/^m/i,/^h/i,/^t/i,/^a/i,/^e/i,/^e/i,/^k/i,/^a/i],any:[/^o/i,/^ş/i,/^mar/i,/^n/i,/^may/i,/^h/i,/^t/i,/^ağ/i,/^ey/i,/^ek/i,/^k/i,/^ar/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[psçc]/i,short:/^(pz|pt|sa|ça|pe|cu|ct)/i,abbreviated:/^(paz|pzt|sal|çar|per|cum|cts)/i,wide:/^(pazar(?!tesi)|pazartesi|salı|çarşamba|perşembe|cuma(?!rtesi)|cumartesi)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^p/i,/^p/i,/^s/i,/^ç/i,/^p/i,/^c/i,/^c/i],any:[/^pz/i,/^pt/i,/^sa/i,/^ça/i,/^pe/i,/^cu/i,/^ct/i],wide:[/^pazar(?!tesi)/i,/^pazartesi/i,/^salı/i,/^çarşamba/i,/^perşembe/i,/^cuma(?!rtesi)/i,/^cumartesi/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(öö|ös|gy|ö|sa|ös|ak|ge)/i,any:/^(ö\.?\s?[ös]\.?|öğleden sonra|gece yarısı|öğle|(sabah|öğ|akşam|gece)(leyin))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^ö\.?ö\.?/i,pm:/^ö\.?s\.?/i,midnight:/^(gy|gece yarısı)/i,noon:/^öğ/i,morning:/^sa/i,afternoon:/^öğleden sonra/i,evening:/^ak/i,night:/^ge/i}},defaultParseWidth:"any"})};function Nt(e,t){if(void 0!==e.one&&1===t)return e.one;const n=t%10,a=t%100;return 1===n&&11!==a?e.singularNominative.replace("{{count}}",String(t)):n>=2&&n<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",String(t)):e.pluralGenitive.replace("{{count}}",String(t))}function Wt(e){return(t,n)=>n&&n.addSuffix?n.comparison&&n.comparison>0?e.future?Nt(e.future,t):"за "+Nt(e.regular,t):e.past?Nt(e.past,t):Nt(e.regular,t)+" тому":Nt(e.regular,t)}e("t",{code:"tr",formatDistance:(e,t,n)=>{let a;const r=xt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?a+" sonra":a+" önce":a},formatLong:Pt,formatRelative:(e,t,n,a)=>St[e],localize:Tt,match:Et,options:{weekStartsOn:1,firstWeekContainsDate:1}});const Ot={lessThanXSeconds:Wt({regular:{one:"менше секунди",singularNominative:"менше {{count}} секунди",singularGenitive:"менше {{count}} секунд",pluralGenitive:"менше {{count}} секунд"},future:{one:"менше, ніж за секунду",singularNominative:"менше, ніж за {{count}} секунду",singularGenitive:"менше, ніж за {{count}} секунди",pluralGenitive:"менше, ніж за {{count}} секунд"}}),xSeconds:Wt({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунди",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду тому",singularGenitive:"{{count}} секунди тому",pluralGenitive:"{{count}} секунд тому"},future:{singularNominative:"за {{count}} секунду",singularGenitive:"за {{count}} секунди",pluralGenitive:"за {{count}} секунд"}}),halfAMinute:(e,t)=>t&&t.addSuffix?t.comparison&&t.comparison>0?"за півхвилини":"півхвилини тому":"півхвилини",lessThanXMinutes:Wt({regular:{one:"менше хвилини",singularNominative:"менше {{count}} хвилини",singularGenitive:"менше {{count}} хвилин",pluralGenitive:"менше {{count}} хвилин"},future:{one:"менше, ніж за хвилину",singularNominative:"менше, ніж за {{count}} хвилину",singularGenitive:"менше, ніж за {{count}} хвилини",pluralGenitive:"менше, ніж за {{count}} хвилин"}}),xMinutes:Wt({regular:{singularNominative:"{{count}} хвилина",singularGenitive:"{{count}} хвилини",pluralGenitive:"{{count}} хвилин"},past:{singularNominative:"{{count}} хвилину тому",singularGenitive:"{{count}} хвилини тому",pluralGenitive:"{{count}} хвилин тому"},future:{singularNominative:"за {{count}} хвилину",singularGenitive:"за {{count}} хвилини",pluralGenitive:"за {{count}} хвилин"}}),aboutXHours:Wt({regular:{singularNominative:"близько {{count}} години",singularGenitive:"близько {{count}} годин",pluralGenitive:"близько {{count}} годин"},future:{singularNominative:"приблизно за {{count}} годину",singularGenitive:"приблизно за {{count}} години",pluralGenitive:"приблизно за {{count}} годин"}}),xHours:Wt({regular:{singularNominative:"{{count}} годину",singularGenitive:"{{count}} години",pluralGenitive:"{{count}} годин"}}),xDays:Wt({regular:{singularNominative:"{{count}} день",singularGenitive:"{{count}} днi",pluralGenitive:"{{count}} днів"}}),aboutXWeeks:Wt({regular:{singularNominative:"близько {{count}} тижня",singularGenitive:"близько {{count}} тижнів",pluralGenitive:"близько {{count}} тижнів"},future:{singularNominative:"приблизно за {{count}} тиждень",singularGenitive:"приблизно за {{count}} тижні",pluralGenitive:"приблизно за {{count}} тижнів"}}),xWeeks:Wt({regular:{singularNominative:"{{count}} тиждень",singularGenitive:"{{count}} тижні",pluralGenitive:"{{count}} тижнів"}}),aboutXMonths:Wt({regular:{singularNominative:"близько {{count}} місяця",singularGenitive:"близько {{count}} місяців",pluralGenitive:"близько {{count}} місяців"},future:{singularNominative:"приблизно за {{count}} місяць",singularGenitive:"приблизно за {{count}} місяці",pluralGenitive:"приблизно за {{count}} місяців"}}),xMonths:Wt({regular:{singularNominative:"{{count}} місяць",singularGenitive:"{{count}} місяці",pluralGenitive:"{{count}} місяців"}}),aboutXYears:Wt({regular:{singularNominative:"близько {{count}} року",singularGenitive:"близько {{count}} років",pluralGenitive:"близько {{count}} років"},future:{singularNominative:"приблизно за {{count}} рік",singularGenitive:"приблизно за {{count}} роки",pluralGenitive:"приблизно за {{count}} років"}}),xYears:Wt({regular:{singularNominative:"{{count}} рік",singularGenitive:"{{count}} роки",pluralGenitive:"{{count}} років"}}),overXYears:Wt({regular:{singularNominative:"більше {{count}} року",singularGenitive:"більше {{count}} років",pluralGenitive:"більше {{count}} років"},future:{singularNominative:"більше, ніж за {{count}} рік",singularGenitive:"більше, ніж за {{count}} роки",pluralGenitive:"більше, ніж за {{count}} років"}}),almostXYears:Wt({regular:{singularNominative:"майже {{count}} рік",singularGenitive:"майже {{count}} роки",pluralGenitive:"майже {{count}} років"},future:{singularNominative:"майже за {{count}} рік",singularGenitive:"майже за {{count}} роки",pluralGenitive:"майже за {{count}} років"}})},Ct={date:he({formats:{full:"EEEE, do MMMM y 'р.'",long:"do MMMM y 'р.'",medium:"d MMM y 'р.'",short:"dd.MM.y"},defaultWidth:"full"}),time:he({formats:{full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'о' {{time}}",long:"{{date}} 'о' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},jt=["неділю","понеділок","вівторок","середу","четвер","п’ятницю","суботу"];function At(e){return"'у "+jt[e]+" о' p"}const Rt={lastWeek:(e,t,n)=>{const a=pe(e),r=a.getDay();return ve(a,t,n)?At(r):function(e){const t=jt[e];switch(e){case 0:case 3:case 5:case 6:return"'у минулу "+t+" о' p";case 1:case 2:case 4:return"'у минулий "+t+" о' p"}}(r)},yesterday:"'вчора о' p",today:"'сьогодні о' p",tomorrow:"'завтра о' p",nextWeek:(e,t,n)=>{const a=pe(e),r=a.getDay();return ve(a,t,n)?At(r):function(e){const t=jt[e];switch(e){case 0:case 3:case 5:case 6:return"'у наступну "+t+" о' p";case 1:case 2:case 4:return"'у наступний "+t+" о' p"}}(r)},other:"P"},Dt={ordinalNumber:(e,t)=>{const n=String(t?.unit),a=Number(e);let r;return r="date"===n?3===a||23===a?"-є":"-е":"minute"===n||"second"===n||"hour"===n?"-а":"-й",a+r},era:me({values:{narrow:["до н.е.","н.е."],abbreviated:["до н. е.","н. е."],wide:["до нашої ери","нашої ери"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["1-й кв.","2-й кв.","3-й кв.","4-й кв."],wide:["1-й квартал","2-й квартал","3-й квартал","4-й квартал"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["С","Л","Б","К","Т","Ч","Л","С","В","Ж","Л","Г"],abbreviated:["січ.","лют.","берез.","квіт.","трав.","черв.","лип.","серп.","верес.","жовт.","листоп.","груд."],wide:["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"]},defaultWidth:"wide",formattingValues:{narrow:["С","Л","Б","К","Т","Ч","Л","С","В","Ж","Л","Г"],abbreviated:["січ.","лют.","берез.","квіт.","трав.","черв.","лип.","серп.","верес.","жовт.","листоп.","груд."],wide:["січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"]},defaultFormattingWidth:"wide"}),day:me({values:{narrow:["Н","П","В","С","Ч","П","С"],short:["нд","пн","вт","ср","чт","пт","сб"],abbreviated:["нед","пон","вів","сер","чтв","птн","суб"],wide:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранок",afternoon:"день",evening:"веч.",night:"ніч"},abbreviated:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранок",afternoon:"день",evening:"веч.",night:"ніч"},wide:{am:"ДП",pm:"ПП",midnight:"північ",noon:"полудень",morning:"ранок",afternoon:"день",evening:"вечір",night:"ніч"}},defaultWidth:"any",formattingValues:{narrow:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"},abbreviated:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"},wide:{am:"ДП",pm:"ПП",midnight:"північ",noon:"полудень",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"}},defaultFormattingWidth:"wide"})},Ht={ordinalNumber:fe({matchPattern:/^(\d+)(-?(е|й|є|а|я))?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^((до )?н\.?\s?е\.?)/i,abbreviated:/^((до )?н\.?\s?е\.?)/i,wide:/^(до нашої ери|нашої ери|наша ера)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^д/i,/^н/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^[1234](-?[иі]?й?)? кв.?/i,wide:/^[1234](-?[иі]?й?)? квартал/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[слбктчвжг]/i,abbreviated:/^(січ|лют|бер(ез)?|квіт|трав|черв|лип|серп|вер(ес)?|жовт|лис(топ)?|груд)\.?/i,wide:/^(січень|січня|лютий|лютого|березень|березня|квітень|квітня|травень|травня|червня|червень|липень|липня|серпень|серпня|вересень|вересня|жовтень|жовтня|листопад[а]?|грудень|грудня)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^с/i,/^л/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^л/i,/^с/i,/^в/i,/^ж/i,/^л/i,/^г/i],any:[/^сі/i,/^лю/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^лип/i,/^се/i,/^в/i,/^ж/i,/^лис/i,/^г/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[нпвсч]/i,short:/^(нд|пн|вт|ср|чт|пт|сб)\.?/i,abbreviated:/^(нед|пон|вів|сер|че?тв|птн?|суб)\.?/i,wide:/^(неділ[яі]|понеділ[ок][ка]|вівтор[ок][ка]|серед[аи]|четвер(га)?|п\W*?ятниц[яі]|субот[аи])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^н/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^н/i,/^п[он]/i,/^в/i,/^с[ер]/i,/^ч/i,/^п\W*?[ят]/i,/^с[уб]/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,abbreviated:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,wide:/^([дп]п|північ|полудень|ранок|ранку|день|дня|вечір|вечора|ніч|ночі)/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^дп/i,pm:/^пп/i,midnight:/^півн/i,noon:/^пол/i,morning:/^р/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},defaultParseWidth:"any"})},zt=(e("u",{code:"uk",formatDistance:(e,t,n)=>(n=n||{},Ot[e](t,n)),formatLong:Ct,formatRelative:(e,t,n,a)=>{const r=Rt[e];return"function"==typeof r?r(t,n,a):r},localize:Dt,match:Ht,options:{weekStartsOn:1,firstWeekContainsDate:1}}),{lessThanXSeconds:{one:"dưới 1 giây",other:"dưới {{count}} giây"},xSeconds:{one:"1 giây",other:"{{count}} giây"},halfAMinute:"nửa phút",lessThanXMinutes:{one:"dưới 1 phút",other:"dưới {{count}} phút"},xMinutes:{one:"1 phút",other:"{{count}} phút"},aboutXHours:{one:"khoảng 1 giờ",other:"khoảng {{count}} giờ"},xHours:{one:"1 giờ",other:"{{count}} giờ"},xDays:{one:"1 ngày",other:"{{count}} ngày"},aboutXWeeks:{one:"khoảng 1 tuần",other:"khoảng {{count}} tuần"},xWeeks:{one:"1 tuần",other:"{{count}} tuần"},aboutXMonths:{one:"khoảng 1 tháng",other:"khoảng {{count}} tháng"},xMonths:{one:"1 tháng",other:"{{count}} tháng"},aboutXYears:{one:"khoảng 1 năm",other:"khoảng {{count}} năm"},xYears:{one:"1 năm",other:"{{count}} năm"},overXYears:{one:"hơn 1 năm",other:"hơn {{count}} năm"},almostXYears:{one:"gần 1 năm",other:"gần {{count}} năm"}}),_t={date:he({formats:{full:"EEEE, 'ngày' d MMMM 'năm' y",long:"'ngày' d MMMM 'năm' y",medium:"d MMM 'năm' y",short:"dd/MM/y"},defaultWidth:"full"}),time:he({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},Lt={lastWeek:"eeee 'tuần trước vào lúc' p",yesterday:"'hôm qua vào lúc' p",today:"'hôm nay vào lúc' p",tomorrow:"'ngày mai vào lúc' p",nextWeek:"eeee 'tới vào lúc' p",other:"P"},qt={ordinalNumber:(e,t)=>{const n=Number(e),a=t?.unit;if("quarter"===a)switch(n){case 1:return"I";case 2:return"II";case 3:return"III";case 4:return"IV"}else if("day"===a)switch(n){case 1:return"thứ 2";case 2:return"thứ 3";case 3:return"thứ 4";case 4:return"thứ 5";case 5:return"thứ 6";case 6:return"thứ 7";case 7:return"chủ nhật"}else{if("week"===a)return 1===n?"thứ nhất":"thứ "+n;if("dayOfYear"===a)return 1===n?"đầu tiên":"thứ "+n}return String(n)},era:me({values:{narrow:["TCN","SCN"],abbreviated:["trước CN","sau CN"],wide:["trước Công Nguyên","sau Công Nguyên"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["Quý 1","Quý 2","Quý 3","Quý 4"]},defaultWidth:"wide",formattingValues:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["quý I","quý II","quý III","quý IV"]},defaultFormattingWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["Thg 1","Thg 2","Thg 3","Thg 4","Thg 5","Thg 6","Thg 7","Thg 8","Thg 9","Thg 10","Thg 11","Thg 12"],wide:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"]},defaultWidth:"wide",formattingValues:{narrow:["01","02","03","04","05","06","07","08","09","10","11","12"],abbreviated:["thg 1","thg 2","thg 3","thg 4","thg 5","thg 6","thg 7","thg 8","thg 9","thg 10","thg 11","thg 12"],wide:["tháng 01","tháng 02","tháng 03","tháng 04","tháng 05","tháng 06","tháng 07","tháng 08","tháng 09","tháng 10","tháng 11","tháng 12"]},defaultFormattingWidth:"wide"}),day:me({values:{narrow:["CN","T2","T3","T4","T5","T6","T7"],short:["CN","Th 2","Th 3","Th 4","Th 5","Th 6","Th 7"],abbreviated:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],wide:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"am",pm:"pm",midnight:"nửa đêm",noon:"tr",morning:"sg",afternoon:"ch",evening:"tối",night:"đêm"},abbreviated:{am:"AM",pm:"PM",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"},wide:{am:"SA",pm:"CH",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"}},defaultWidth:"wide",formattingValues:{narrow:{am:"am",pm:"pm",midnight:"nửa đêm",noon:"tr",morning:"sg",afternoon:"ch",evening:"tối",night:"đêm"},abbreviated:{am:"AM",pm:"PM",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"},wide:{am:"SA",pm:"CH",midnight:"nửa đêm",noon:"giữa trưa",morning:"vào buổi sáng",afternoon:"vào buổi chiều",evening:"vào buổi tối",night:"vào ban đêm"}},defaultFormattingWidth:"wide"})},Ft={ordinalNumber:fe({matchPattern:/^(\d+)/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(tcn|scn)/i,abbreviated:/^(trước CN|sau CN)/i,wide:/^(trước Công Nguyên|sau Công Nguyên)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^t/i,/^s/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^([1234]|i{1,3}v?)/i,abbreviated:/^q([1234]|i{1,3}v?)/i,wide:/^quý ([1234]|i{1,3}v?)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(1|i)$/i,/(2|ii)$/i,/(3|iii)$/i,/(4|iv)$/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^(0?[2-9]|10|11|12|0?1)/i,abbreviated:/^thg[ _]?(0?[1-9](?!\d)|10|11|12)/i,wide:/^tháng ?(Một|Hai|Ba|Tư|Năm|Sáu|Bảy|Tám|Chín|Mười|Mười ?Một|Mười ?Hai|0?[1-9](?!\d)|10|11|12)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/0?1$/i,/0?2/i,/3/,/4/,/5/,/6/,/7/,/8/,/9/,/10/,/11/,/12/],abbreviated:[/^thg[ _]?0?1(?!\d)/i,/^thg[ _]?0?2/i,/^thg[ _]?0?3/i,/^thg[ _]?0?4/i,/^thg[ _]?0?5/i,/^thg[ _]?0?6/i,/^thg[ _]?0?7/i,/^thg[ _]?0?8/i,/^thg[ _]?0?9/i,/^thg[ _]?10/i,/^thg[ _]?11/i,/^thg[ _]?12/i],wide:[/^tháng ?(Một|0?1(?!\d))/i,/^tháng ?(Hai|0?2)/i,/^tháng ?(Ba|0?3)/i,/^tháng ?(Tư|0?4)/i,/^tháng ?(Năm|0?5)/i,/^tháng ?(Sáu|0?6)/i,/^tháng ?(Bảy|0?7)/i,/^tháng ?(Tám|0?8)/i,/^tháng ?(Chín|0?9)/i,/^tháng ?(Mười|10)/i,/^tháng ?(Mười ?Một|11)/i,/^tháng ?(Mười ?Hai|12)/i]},defaultParseWidth:"wide"}),day:ge({matchPatterns:{narrow:/^(CN|T2|T3|T4|T5|T6|T7)/i,short:/^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,abbreviated:/^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,wide:/^(Chủ ?Nhật|Chúa ?Nhật|thứ ?Hai|thứ ?Ba|thứ ?Tư|thứ ?Năm|thứ ?Sáu|thứ ?Bảy)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],short:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],abbreviated:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],wide:[/(Chủ|Chúa) ?Nhật/i,/Hai/i,/Ba/i,/Tư/i,/Năm/i,/Sáu/i,/Bảy/i]},defaultParseWidth:"wide"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|p|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,abbreviated:/^(am|pm|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,wide:/^(ch[^i]*|sa|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^(a|sa)/i,pm:/^(p|ch[^i]*)/i,midnight:/nửa đêm/i,noon:/trưa/i,morning:/sáng/i,afternoon:/chiều/i,evening:/tối/i,night:/^đêm/i}},defaultParseWidth:"any"})},Bt=(e("v",{code:"vi",formatDistance:(e,t,n)=>{let a;const r=zt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),n?.addSuffix?n.comparison&&n.comparison>0?a+" nữa":a+" trước":a},formatLong:_t,formatRelative:(e,t,n,a)=>Lt[e],localize:qt,match:Ft,options:{weekStartsOn:1,firstWeekContainsDate:1}}),{lessThanXSeconds:{one:"少於 1 秒",other:"少於 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分鐘",lessThanXMinutes:{one:"少於 1 分鐘",other:"少於 {{count}} 分鐘"},xMinutes:{one:"1 分鐘",other:"{{count}} 分鐘"},xHours:{one:"1 小時",other:"{{count}} 小時"},aboutXHours:{one:"大約 1 小時",other:"大約 {{count}} 小時"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大約 1 個星期",other:"大約 {{count}} 個星期"},xWeeks:{one:"1 個星期",other:"{{count}} 個星期"},aboutXMonths:{one:"大約 1 個月",other:"大約 {{count}} 個月"},xMonths:{one:"1 個月",other:"{{count}} 個月"},aboutXYears:{one:"大約 1 年",other:"大約 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超過 1 年",other:"超過 {{count}} 年"},almostXYears:{one:"將近 1 年",other:"將近 {{count}} 年"}}),Gt={date:he({formats:{full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},defaultWidth:"full"}),time:he({formats:{full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},It={lastWeek:"'上個'eeee p",yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:"'下個'eeee p",other:"P"},Xt={ordinalNumber:(e,t)=>{const n=Number(e);switch(t?.unit){case"date":return n+"日";case"hour":return n+"時";case"minute":return n+"分";case"second":return n+"秒";default:return"第 "+n}},era:me({values:{narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["第一刻","第二刻","第三刻","第四刻"],wide:["第一刻鐘","第二刻鐘","第三刻鐘","第四刻鐘"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},defaultWidth:"wide"}),day:me({values:{narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["週日","週一","週二","週三","週四","週五","週六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"}},defaultWidth:"wide",formattingValues:{narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"}},defaultFormattingWidth:"wide"})},Yt={ordinalNumber:fe({matchPattern:/^(第\s*)?\d+(日|時|分|秒)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^(前)/i,/^(公元)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻鐘/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^週[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},defaultMatchWidth:"wide",parsePatterns:{any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},defaultParseWidth:"any"})};function Ut(e,t){return e instanceof Date?new e.constructor(t):new Date(t)}function Jt(e,t){const n=pe(e);return isNaN(t)?Ut(e,NaN):t?(n.setDate(n.getDate()+t),n):n}function Qt(e,t){const n=pe(e);if(isNaN(t))return Ut(e,NaN);if(!t)return n;const a=n.getDate(),r=Ut(e,n.getTime());return r.setMonth(n.getMonth()+t+1,0),a>=r.getDate()?r:(n.setFullYear(r.getFullYear(),r.getMonth(),a),n)}e("z",{code:"zh-TW",formatDistance:(e,t,n)=>{let a;const r=Bt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),n?.addSuffix?n.comparison&&n.comparison>0?a+"內":a+"前":a},formatLong:Gt,formatRelative:(e,t,n,a)=>It[e],localize:Xt,match:Yt,options:{weekStartsOn:1,firstWeekContainsDate:4}});const $t=6048e5,Kt=864e5,Vt=6e4,Zt=36e5;function en(e){return ye(e,{weekStartsOn:1})}function tn(e){const t=pe(e),n=t.getFullYear(),a=Ut(e,0);a.setFullYear(n+1,0,4),a.setHours(0,0,0,0);const r=en(a),i=Ut(e,0);i.setFullYear(n,0,4),i.setHours(0,0,0,0);const o=en(i);return t.getTime()>=r.getTime()?n+1:t.getTime()>=o.getTime()?n:n-1}function nn(e){const t=pe(e);return t.setHours(0,0,0,0),t}function an(e){const t=pe(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-+n}function rn(e,t){const n=nn(e),a=nn(t),r=+n-an(n),i=+a-an(a);return Math.round((r-i)/Kt)}function on(e){if(!((t=e)instanceof Date||"object"==typeof t&&"[object Date]"===Object.prototype.toString.call(t)||"number"==typeof e))return!1;var t;const n=pe(e);return!isNaN(Number(n))}function sn(e,t){const n=e.getFullYear()-t.getFullYear()||e.getMonth()-t.getMonth()||e.getDate()-t.getDate()||e.getHours()-t.getHours()||e.getMinutes()-t.getMinutes()||e.getSeconds()-t.getSeconds()||e.getMilliseconds()-t.getMilliseconds();return n<0?-1:n>0?1:n}function un(e){const t=pe(e),n=t.getMonth(),a=n-n%3;return t.setMonth(a,1),t.setHours(0,0,0,0),t}function dn(e){const t=pe(e),n=Ut(e,0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}function cn(e){const t=pe(e),n=+en(t)-+function(e){const t=tn(e),n=Ut(e,0);return n.setFullYear(t,0,4),n.setHours(0,0,0,0),en(n)}(t);return Math.round(n/$t)+1}function ln(e,t){const n=pe(e),a=n.getFullYear(),r=we(),i=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,o=Ut(e,0);o.setFullYear(a+1,0,i),o.setHours(0,0,0,0);const s=ye(o,t),u=Ut(e,0);u.setFullYear(a,0,i),u.setHours(0,0,0,0);const d=ye(u,t);return n.getTime()>=s.getTime()?a+1:n.getTime()>=d.getTime()?a:a-1}function hn(e,t){const n=pe(e),a=+ye(n,t)-+function(e,t){const n=we(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,r=ln(e,t),i=Ut(e,0);return i.setFullYear(r,0,a),i.setHours(0,0,0,0),ye(i,t)}(n,t);return Math.round(a/$t)+1}function mn(e,t){return(e<0?"-":"")+Math.abs(e).toString().padStart(t,"0")}const gn={y(e,t){const n=e.getFullYear(),a=n>0?n:1-n;return mn("yy"===t?a%100:a,t.length)},M(e,t){const n=e.getMonth();return"M"===t?String(n+1):mn(n+1,2)},d:(e,t)=>mn(e.getDate(),t.length),a(e,t){const n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];default:return"am"===n?"a.m.":"p.m."}},h:(e,t)=>mn(e.getHours()%12||12,t.length),H:(e,t)=>mn(e.getHours(),t.length),m:(e,t)=>mn(e.getMinutes(),t.length),s:(e,t)=>mn(e.getSeconds(),t.length),S(e,t){const n=t.length,a=e.getMilliseconds();return mn(Math.trunc(a*Math.pow(10,n-3)),t.length)}},fn="midnight",pn="noon",bn="morning",wn="afternoon",yn="evening",vn="night",Mn={G:function(e,t,n){const a=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(a,{width:"abbreviated"});case"GGGGG":return n.era(a,{width:"narrow"});default:return n.era(a,{width:"wide"})}},y:function(e,t,n){if("yo"===t){const t=e.getFullYear(),a=t>0?t:1-t;return n.ordinalNumber(a,{unit:"year"})}return gn.y(e,t)},Y:function(e,t,n,a){const r=ln(e,a),i=r>0?r:1-r;return"YY"===t?mn(i%100,2):"Yo"===t?n.ordinalNumber(i,{unit:"year"}):mn(i,t.length)},R:function(e,t){return mn(tn(e),t.length)},u:function(e,t){return mn(e.getFullYear(),t.length)},Q:function(e,t,n){const a=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(a);case"QQ":return mn(a,2);case"Qo":return n.ordinalNumber(a,{unit:"quarter"});case"QQQ":return n.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(a,{width:"narrow",context:"formatting"});default:return n.quarter(a,{width:"wide",context:"formatting"})}},q:function(e,t,n){const a=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(a);case"qq":return mn(a,2);case"qo":return n.ordinalNumber(a,{unit:"quarter"});case"qqq":return n.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(a,{width:"narrow",context:"standalone"});default:return n.quarter(a,{width:"wide",context:"standalone"})}},M:function(e,t,n){const a=e.getMonth();switch(t){case"M":case"MM":return gn.M(e,t);case"Mo":return n.ordinalNumber(a+1,{unit:"month"});case"MMM":return n.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(a,{width:"narrow",context:"formatting"});default:return n.month(a,{width:"wide",context:"formatting"})}},L:function(e,t,n){const a=e.getMonth();switch(t){case"L":return String(a+1);case"LL":return mn(a+1,2);case"Lo":return n.ordinalNumber(a+1,{unit:"month"});case"LLL":return n.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(a,{width:"narrow",context:"standalone"});default:return n.month(a,{width:"wide",context:"standalone"})}},w:function(e,t,n,a){const r=hn(e,a);return"wo"===t?n.ordinalNumber(r,{unit:"week"}):mn(r,t.length)},I:function(e,t,n){const a=cn(e);return"Io"===t?n.ordinalNumber(a,{unit:"week"}):mn(a,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getDate(),{unit:"date"}):gn.d(e,t)},D:function(e,t,n){const a=function(e){const t=pe(e);return rn(t,dn(t))+1}(e);return"Do"===t?n.ordinalNumber(a,{unit:"dayOfYear"}):mn(a,t.length)},E:function(e,t,n){const a=e.getDay();switch(t){case"E":case"EE":case"EEE":return n.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},e:function(e,t,n,a){const r=e.getDay(),i=(r-a.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return mn(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},c:function(e,t,n,a){const r=e.getDay(),i=(r-a.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return mn(i,t.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(r,{width:"narrow",context:"standalone"});case"cccccc":return n.day(r,{width:"short",context:"standalone"});default:return n.day(r,{width:"wide",context:"standalone"})}},i:function(e,t,n){const a=e.getDay(),r=0===a?7:a;switch(t){case"i":return String(r);case"ii":return mn(r,t.length);case"io":return n.ordinalNumber(r,{unit:"day"});case"iii":return n.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},a:function(e,t,n){const a=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(a,{width:"narrow",context:"formatting"});default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},b:function(e,t,n){const a=e.getHours();let r;switch(r=12===a?pn:0===a?fn:a/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(e,t,n){const a=e.getHours();let r;switch(r=a>=17?yn:a>=12?wn:a>=4?bn:vn,t){case"B":case"BB":case"BBB":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){let t=e.getHours()%12;return 0===t&&(t=12),n.ordinalNumber(t,{unit:"hour"})}return gn.h(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getHours(),{unit:"hour"}):gn.H(e,t)},K:function(e,t,n){const a=e.getHours()%12;return"Ko"===t?n.ordinalNumber(a,{unit:"hour"}):mn(a,t.length)},k:function(e,t,n){let a=e.getHours();return 0===a&&(a=24),"ko"===t?n.ordinalNumber(a,{unit:"hour"}):mn(a,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getMinutes(),{unit:"minute"}):gn.m(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getSeconds(),{unit:"second"}):gn.s(e,t)},S:function(e,t){return gn.S(e,t)},X:function(e,t,n){const a=e.getTimezoneOffset();if(0===a)return"Z";switch(t){case"X":return xn(a);case"XXXX":case"XX":return Pn(a);default:return Pn(a,":")}},x:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"x":return xn(a);case"xxxx":case"xx":return Pn(a);default:return Pn(a,":")}},O:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+kn(a,":");default:return"GMT"+Pn(a,":")}},z:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+kn(a,":");default:return"GMT"+Pn(a,":")}},t:function(e,t,n){return mn(Math.trunc(e.getTime()/1e3),t.length)},T:function(e,t,n){return mn(e.getTime(),t.length)}};function kn(e,t=""){const n=e>0?"-":"+",a=Math.abs(e),r=Math.trunc(a/60),i=a%60;return 0===i?n+String(r):n+String(r)+t+mn(i,2)}function xn(e,t){return e%60==0?(e>0?"-":"+")+mn(Math.abs(e)/60,2):Pn(e,t)}function Pn(e,t=""){const n=e>0?"-":"+",a=Math.abs(e);return n+mn(Math.trunc(a/60),2)+t+mn(a%60,2)}const Sn=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},Tn=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},En={p:Tn,P:(e,t)=>{const n=e.match(/(P+)(p+)?/)||[],a=n[1],r=n[2];if(!r)return Sn(e,t);let i;switch(a){case"P":i=t.dateTime({width:"short"});break;case"PP":i=t.dateTime({width:"medium"});break;case"PPP":i=t.dateTime({width:"long"});break;default:i=t.dateTime({width:"full"})}return i.replace("{{date}}",Sn(a,t)).replace("{{time}}",Tn(r,t))}},Nn=/^D+$/,Wn=/^Y+$/,On=["D","DD","YY","YYYY"];function Cn(e){return Nn.test(e)}function jn(e){return Wn.test(e)}function An(e,t,n){const a=function(e,t,n){const a="Y"===e[0]?"years":"days of the month";return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${a} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}(e,t,n);if(console.warn(a),On.includes(e))throw new RangeError(a)}const Rn=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Dn=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Hn=/^'([^]*?)'?$/,zn=/''/g,_n=/[a-zA-Z]/;function Ln(e){const t=e.match(Hn);return t?t[1].replace(zn,"'"):e}function qn(){return Object.assign({},we())}class Fn{subPriority=0;validate(e,t){return!0}}class Bn extends Fn{constructor(e,t,n,a,r){super(),this.value=e,this.validateValue=t,this.setValue=n,this.priority=a,r&&(this.subPriority=r)}validate(e,t){return this.validateValue(e,this.value,t)}set(e,t,n){return this.setValue(e,t,this.value,n)}}class Gn extends Fn{priority=10;subPriority=-1;set(e,t){return t.timestampIsSet?e:Ut(e,function(e,t){const n=t instanceof Date?Ut(t,0):new t(0);return n.setFullYear(e.getFullYear(),e.getMonth(),e.getDate()),n.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()),n}(e,Date))}}class In{run(e,t,n,a){const r=this.parse(e,t,n,a);return r?{setter:new Bn(r.value,this.validate,this.set,this.priority,this.subPriority),rest:r.rest}:null}validate(e,t,n){return!0}}const Xn=/^(1[0-2]|0?\d)/,Yn=/^(3[0-1]|[0-2]?\d)/,Un=/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,Jn=/^(5[0-3]|[0-4]?\d)/,Qn=/^(2[0-3]|[0-1]?\d)/,$n=/^(2[0-4]|[0-1]?\d)/,Kn=/^(1[0-1]|0?\d)/,Vn=/^(1[0-2]|0?\d)/,Zn=/^[0-5]?\d/,ea=/^[0-5]?\d/,ta=/^\d/,na=/^\d{1,2}/,aa=/^\d{1,3}/,ra=/^\d{1,4}/,ia=/^-?\d+/,oa=/^-?\d/,sa=/^-?\d{1,2}/,ua=/^-?\d{1,3}/,da=/^-?\d{1,4}/,ca=/^([+-])(\d{2})(\d{2})?|Z/,la=/^([+-])(\d{2})(\d{2})|Z/,ha=/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,ma=/^([+-])(\d{2}):(\d{2})|Z/,ga=/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/;function fa(e,t){return e?{value:t(e.value),rest:e.rest}:e}function pa(e,t){const n=t.match(e);return n?{value:parseInt(n[0],10),rest:t.slice(n[0].length)}:null}function ba(e,t){const n=t.match(e);if(!n)return null;if("Z"===n[0])return{value:0,rest:t.slice(1)};const a="+"===n[1]?1:-1,r=n[2]?parseInt(n[2],10):0,i=n[3]?parseInt(n[3],10):0,o=n[5]?parseInt(n[5],10):0;return{value:a*(r*Zt+i*Vt+1e3*o),rest:t.slice(n[0].length)}}function wa(e){return pa(ia,e)}function ya(e,t){switch(e){case 1:return pa(ta,t);case 2:return pa(na,t);case 3:return pa(aa,t);case 4:return pa(ra,t);default:return pa(new RegExp("^\\d{1,"+e+"}"),t)}}function va(e,t){switch(e){case 1:return pa(oa,t);case 2:return pa(sa,t);case 3:return pa(ua,t);case 4:return pa(da,t);default:return pa(new RegExp("^-?\\d{1,"+e+"}"),t)}}function Ma(e){switch(e){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;default:return 0}}function ka(e,t){const n=t>0,a=n?t:1-t;let r;if(a<=50)r=e||100;else{const t=a+50;r=e+100*Math.trunc(t/100)-(e>=t%100?100:0)}return n?r:1-r}function xa(e){return e%400==0||e%4==0&&e%100!=0}const Pa=[31,28,31,30,31,30,31,31,30,31,30,31],Sa=[31,29,31,30,31,30,31,31,30,31,30,31];function Ta(e,t,n){const a=we(),r=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??a.weekStartsOn??a.locale?.options?.weekStartsOn??0,i=pe(e),o=i.getDay(),s=7-r;return Jt(i,t<0||t>6?t-(o+s)%7:((t%7+7)%7+s)%7-(o+s)%7)}function Ea(e,t){const n=pe(e),a=function(e){let t=pe(e).getDay();return 0===t&&(t=7),t}(n);return Jt(n,t-a)}const Na={G:new class extends In{priority=140;parse(e,t,n){switch(t){case"G":case"GG":case"GGG":return n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"});case"GGGGG":return n.era(e,{width:"narrow"});default:return n.era(e,{width:"wide"})||n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"})}}set(e,t,n){return t.era=n,e.setFullYear(n,0,1),e.setHours(0,0,0,0),e}incompatibleTokens=["R","u","t","T"]},y:new class extends In{priority=130;incompatibleTokens=["Y","R","u","w","I","i","e","c","t","T"];parse(e,t,n){const a=e=>({year:e,isTwoDigitYear:"yy"===t});switch(t){case"y":return fa(ya(4,e),a);case"yo":return fa(n.ordinalNumber(e,{unit:"year"}),a);default:return fa(ya(t.length,e),a)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,n){const a=e.getFullYear();if(n.isTwoDigitYear){const t=ka(n.year,a);return e.setFullYear(t,0,1),e.setHours(0,0,0,0),e}const r="era"in t&&1!==t.era?1-n.year:n.year;return e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}},Y:new class extends In{priority=130;parse(e,t,n){const a=e=>({year:e,isTwoDigitYear:"YY"===t});switch(t){case"Y":return fa(ya(4,e),a);case"Yo":return fa(n.ordinalNumber(e,{unit:"year"}),a);default:return fa(ya(t.length,e),a)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,n,a){const r=ln(e,a);if(n.isTwoDigitYear){const t=ka(n.year,r);return e.setFullYear(t,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),ye(e,a)}const i="era"in t&&1!==t.era?1-n.year:n.year;return e.setFullYear(i,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),ye(e,a)}incompatibleTokens=["y","R","u","Q","q","M","L","I","d","D","i","t","T"]},R:new class extends In{priority=130;parse(e,t){return va("R"===t?4:t.length,e)}set(e,t,n){const a=Ut(e,0);return a.setFullYear(n,0,4),a.setHours(0,0,0,0),en(a)}incompatibleTokens=["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"]},u:new class extends In{priority=130;parse(e,t){return va("u"===t?4:t.length,e)}set(e,t,n){return e.setFullYear(n,0,1),e.setHours(0,0,0,0),e}incompatibleTokens=["G","y","Y","R","w","I","i","e","c","t","T"]},Q:new class extends In{priority=120;parse(e,t,n){switch(t){case"Q":case"QQ":return ya(t.length,e);case"Qo":return n.ordinalNumber(e,{unit:"quarter"});case"QQQ":return n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return n.quarter(e,{width:"narrow",context:"formatting"});default:return n.quarter(e,{width:"wide",context:"formatting"})||n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=1&&t<=4}set(e,t,n){return e.setMonth(3*(n-1),1),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"]},q:new class extends In{priority=120;parse(e,t,n){switch(t){case"q":case"qq":return ya(t.length,e);case"qo":return n.ordinalNumber(e,{unit:"quarter"});case"qqq":return n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return n.quarter(e,{width:"narrow",context:"standalone"});default:return n.quarter(e,{width:"wide",context:"standalone"})||n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=1&&t<=4}set(e,t,n){return e.setMonth(3*(n-1),1),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"]},M:new class extends In{incompatibleTokens=["Y","R","q","Q","L","w","I","D","i","e","c","t","T"];priority=110;parse(e,t,n){const a=e=>e-1;switch(t){case"M":return fa(pa(Xn,e),a);case"MM":return fa(ya(2,e),a);case"Mo":return fa(n.ordinalNumber(e,{unit:"month"}),a);case"MMM":return n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return n.month(e,{width:"narrow",context:"formatting"});default:return n.month(e,{width:"wide",context:"formatting"})||n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.setMonth(n,1),e.setHours(0,0,0,0),e}},L:new class extends In{priority=110;parse(e,t,n){const a=e=>e-1;switch(t){case"L":return fa(pa(Xn,e),a);case"LL":return fa(ya(2,e),a);case"Lo":return fa(n.ordinalNumber(e,{unit:"month"}),a);case"LLL":return n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return n.month(e,{width:"narrow",context:"standalone"});default:return n.month(e,{width:"wide",context:"standalone"})||n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.setMonth(n,1),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","q","Q","M","w","I","D","i","e","c","t","T"]},w:new class extends In{priority=100;parse(e,t,n){switch(t){case"w":return pa(Jn,e);case"wo":return n.ordinalNumber(e,{unit:"week"});default:return ya(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,n,a){return ye(function(e,t,n){const a=pe(e),r=hn(a,n)-t;return a.setDate(a.getDate()-7*r),a}(e,n,a),a)}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","i","t","T"]},I:new class extends In{priority=100;parse(e,t,n){switch(t){case"I":return pa(Jn,e);case"Io":return n.ordinalNumber(e,{unit:"week"});default:return ya(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,n){return en(function(e,t){const n=pe(e),a=cn(n)-t;return n.setDate(n.getDate()-7*a),n}(e,n))}incompatibleTokens=["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"]},d:new class extends In{priority=90;subPriority=1;parse(e,t,n){switch(t){case"d":return pa(Yn,e);case"do":return n.ordinalNumber(e,{unit:"date"});default:return ya(t.length,e)}}validate(e,t){const n=xa(e.getFullYear()),a=e.getMonth();return n?t>=1&&t<=Sa[a]:t>=1&&t<=Pa[a]}set(e,t,n){return e.setDate(n),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","q","Q","w","I","D","i","e","c","t","T"]},D:new class extends In{priority=90;subpriority=1;parse(e,t,n){switch(t){case"D":case"DD":return pa(Un,e);case"Do":return n.ordinalNumber(e,{unit:"date"});default:return ya(t.length,e)}}validate(e,t){return xa(e.getFullYear())?t>=1&&t<=366:t>=1&&t<=365}set(e,t,n){return e.setMonth(0,n),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"]},E:new class extends In{priority=90;parse(e,t,n){switch(t){case"E":case"EE":case"EEE":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return n.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,a){return(e=Ta(e,n,a)).setHours(0,0,0,0),e}incompatibleTokens=["D","i","e","c","t","T"]},e:new class extends In{priority=90;parse(e,t,n,a){const r=e=>{const t=7*Math.floor((e-1)/7);return(e+a.weekStartsOn+6)%7+t};switch(t){case"e":case"ee":return fa(ya(t.length,e),r);case"eo":return fa(n.ordinalNumber(e,{unit:"day"}),r);case"eee":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"eeeee":return n.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,a){return(e=Ta(e,n,a)).setHours(0,0,0,0),e}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"]},c:new class extends In{priority=90;parse(e,t,n,a){const r=e=>{const t=7*Math.floor((e-1)/7);return(e+a.weekStartsOn+6)%7+t};switch(t){case"c":case"cc":return fa(ya(t.length,e),r);case"co":return fa(n.ordinalNumber(e,{unit:"day"}),r);case"ccc":return n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});case"ccccc":return n.day(e,{width:"narrow",context:"standalone"});case"cccccc":return n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});default:return n.day(e,{width:"wide",context:"standalone"})||n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,a){return(e=Ta(e,n,a)).setHours(0,0,0,0),e}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"]},i:new class extends In{priority=90;parse(e,t,n){const a=e=>0===e?7:e;switch(t){case"i":case"ii":return ya(t.length,e);case"io":return n.ordinalNumber(e,{unit:"day"});case"iii":return fa(n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),a);case"iiiii":return fa(n.day(e,{width:"narrow",context:"formatting"}),a);case"iiiiii":return fa(n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),a);default:return fa(n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),a)}}validate(e,t){return t>=1&&t<=7}set(e,t,n){return(e=Ea(e,n)).setHours(0,0,0,0),e}incompatibleTokens=["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"]},a:new class extends In{priority=80;parse(e,t,n){switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(Ma(n),0,0,0),e}incompatibleTokens=["b","B","H","k","t","T"]},b:new class extends In{priority=80;parse(e,t,n){switch(t){case"b":case"bb":case"bbb":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(Ma(n),0,0,0),e}incompatibleTokens=["a","B","H","k","t","T"]},B:new class extends In{priority=80;parse(e,t,n){switch(t){case"B":case"BB":case"BBB":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(Ma(n),0,0,0),e}incompatibleTokens=["a","b","t","T"]},h:new class extends In{priority=70;parse(e,t,n){switch(t){case"h":return pa(Vn,e);case"ho":return n.ordinalNumber(e,{unit:"hour"});default:return ya(t.length,e)}}validate(e,t){return t>=1&&t<=12}set(e,t,n){const a=e.getHours()>=12;return a&&n<12?e.setHours(n+12,0,0,0):a||12!==n?e.setHours(n,0,0,0):e.setHours(0,0,0,0),e}incompatibleTokens=["H","K","k","t","T"]},H:new class extends In{priority=70;parse(e,t,n){switch(t){case"H":return pa(Qn,e);case"Ho":return n.ordinalNumber(e,{unit:"hour"});default:return ya(t.length,e)}}validate(e,t){return t>=0&&t<=23}set(e,t,n){return e.setHours(n,0,0,0),e}incompatibleTokens=["a","b","h","K","k","t","T"]},K:new class extends In{priority=70;parse(e,t,n){switch(t){case"K":return pa(Kn,e);case"Ko":return n.ordinalNumber(e,{unit:"hour"});default:return ya(t.length,e)}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.getHours()>=12&&n<12?e.setHours(n+12,0,0,0):e.setHours(n,0,0,0),e}incompatibleTokens=["h","H","k","t","T"]},k:new class extends In{priority=70;parse(e,t,n){switch(t){case"k":return pa($n,e);case"ko":return n.ordinalNumber(e,{unit:"hour"});default:return ya(t.length,e)}}validate(e,t){return t>=1&&t<=24}set(e,t,n){const a=n<=24?n%24:n;return e.setHours(a,0,0,0),e}incompatibleTokens=["a","b","h","H","K","t","T"]},m:new class extends In{priority=60;parse(e,t,n){switch(t){case"m":return pa(Zn,e);case"mo":return n.ordinalNumber(e,{unit:"minute"});default:return ya(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,n){return e.setMinutes(n,0,0),e}incompatibleTokens=["t","T"]},s:new class extends In{priority=50;parse(e,t,n){switch(t){case"s":return pa(ea,e);case"so":return n.ordinalNumber(e,{unit:"second"});default:return ya(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,n){return e.setSeconds(n,0),e}incompatibleTokens=["t","T"]},S:new class extends In{priority=30;parse(e,t){return fa(ya(t.length,e),e=>Math.trunc(e*Math.pow(10,3-t.length)))}set(e,t,n){return e.setMilliseconds(n),e}incompatibleTokens=["t","T"]},X:new class extends In{priority=10;parse(e,t){switch(t){case"X":return ba(ca,e);case"XX":return ba(la,e);case"XXXX":return ba(ha,e);case"XXXXX":return ba(ga,e);default:return ba(ma,e)}}set(e,t,n){return t.timestampIsSet?e:Ut(e,e.getTime()-an(e)-n)}incompatibleTokens=["t","T","x"]},x:new class extends In{priority=10;parse(e,t){switch(t){case"x":return ba(ca,e);case"xx":return ba(la,e);case"xxxx":return ba(ha,e);case"xxxxx":return ba(ga,e);default:return ba(ma,e)}}set(e,t,n){return t.timestampIsSet?e:Ut(e,e.getTime()-an(e)-n)}incompatibleTokens=["t","T","X"]},t:new class extends In{priority=40;parse(e){return wa(e)}set(e,t,n){return[Ut(e,1e3*n),{timestampIsSet:!0}]}incompatibleTokens="*"},T:new class extends In{priority=20;parse(e){return wa(e)}set(e,t,n){return[Ut(e,n),{timestampIsSet:!0}]}incompatibleTokens="*"}},Wa=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Oa=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Ca=/^'([^]*?)'?$/,ja=/''/g,Aa=/\S/,Ra=/[a-zA-Z]/;function Da(e){return e.match(Ca)[1].replace(ja,"'")}function Ha(e,t){const n=pe(e),a=n.getFullYear(),r=n.getDate(),i=Ut(e,0);i.setFullYear(a,t,15),i.setHours(0,0,0,0);const o=function(e){const t=pe(e),n=t.getFullYear(),a=t.getMonth(),r=Ut(e,0);return r.setFullYear(n,a+1,0),r.setHours(0,0,0,0),r.getDate()}(i);return n.setMonth(t,Math.min(r,o)),n}function za(e,t){return function(){return e.apply(t,arguments)}}const{toString:_a}=Object.prototype,{getPrototypeOf:La}=Object,{iterator:qa,toStringTag:Fa}=Symbol,Ba=(Ga=Object.create(null),e=>{const t=_a.call(e);return Ga[t]||(Ga[t]=t.slice(8,-1).toLowerCase())});var Ga;const Ia=e=>(e=e.toLowerCase(),t=>Ba(t)===e),Xa=e=>t=>typeof t===e,{isArray:Ya}=Array,Ua=Xa("undefined");function Ja(e){return null!==e&&!Ua(e)&&null!==e.constructor&&!Ua(e.constructor)&&Ka(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Qa=Ia("ArrayBuffer"),$a=Xa("string"),Ka=Xa("function"),Va=Xa("number"),Za=e=>null!==e&&"object"==typeof e,er=e=>{if("object"!==Ba(e))return!1;const t=La(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Fa in e||qa in e)},tr=Ia("Date"),nr=Ia("File"),ar=Ia("Blob"),rr=Ia("FileList"),ir=Ia("URLSearchParams"),[or,sr,ur,dr]=["ReadableStream","Request","Response","Headers"].map(Ia);function cr(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let a,r;if("object"!=typeof e&&(e=[e]),Ya(e))for(a=0,r=e.length;a0;)if(a=n[r],t===a.toLowerCase())return a;return null}const hr="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,mr=e=>!Ua(e)&&e!==hr,gr=(fr="undefined"!=typeof Uint8Array&&La(Uint8Array),e=>fr&&e instanceof fr);var fr;const pr=Ia("HTMLFormElement"),br=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),wr=Ia("RegExp"),yr=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),a={};cr(n,(n,r)=>{let i;!1!==(i=t(n,r,e))&&(a[r]=i||n)}),Object.defineProperties(e,a)},vr=Ia("AsyncFunction"),Mr=(kr="function"==typeof setImmediate,xr=Ka(hr.postMessage),kr?setImmediate:xr?(Pr=`axios@${Math.random()}`,Sr=[],hr.addEventListener("message",({source:e,data:t})=>{e===hr&&t===Pr&&Sr.length&&Sr.shift()()},!1),e=>{Sr.push(e),hr.postMessage(Pr,"*")}):e=>setTimeout(e));var kr,xr,Pr,Sr;const Tr="undefined"!=typeof queueMicrotask?queueMicrotask.bind(hr):"undefined"!=typeof process&&process.nextTick||Mr,Er={isArray:Ya,isArrayBuffer:Qa,isBuffer:Ja,isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||Ka(e.append)&&("formdata"===(t=Ba(e))||"object"===t&&Ka(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&Qa(e.buffer),t},isString:$a,isNumber:Va,isBoolean:e=>!0===e||!1===e,isObject:Za,isPlainObject:er,isEmptyObject:e=>{if(!Za(e)||Ja(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(t){return!1}},isReadableStream:or,isRequest:sr,isResponse:ur,isHeaders:dr,isUndefined:Ua,isDate:tr,isFile:nr,isBlob:ar,isRegExp:wr,isFunction:Ka,isStream:e=>Za(e)&&Ka(e.pipe),isURLSearchParams:ir,isTypedArray:gr,isFileList:rr,forEach:cr,merge:function e(){const{caseless:t}=mr(this)&&this||{},n={},a=(a,r)=>{const i=t&&lr(n,r)||r;er(n[i])&&er(a)?n[i]=e(n[i],a):er(a)?n[i]=e({},a):Ya(a)?n[i]=a.slice():n[i]=a};for(let r=0,i=arguments.length;r(cr(t,(t,a)=>{n&&Ka(t)?e[a]=za(t,n):e[a]=t},{allOwnKeys:a}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,a)=>{e.prototype=Object.create(t.prototype,a),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,a)=>{let r,i,o;const s={};if(t=t||{},null==e)return t;do{for(r=Object.getOwnPropertyNames(e),i=r.length;i-- >0;)o=r[i],a&&!a(o,e,t)||s[o]||(t[o]=e[o],s[o]=!0);e=!1!==n&&La(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:Ba,kindOfTest:Ia,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const a=e.indexOf(t,n);return-1!==a&&a===n},toArray:e=>{if(!e)return null;if(Ya(e))return e;let t=e.length;if(!Va(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[qa]).call(e);let a;for(;(a=n.next())&&!a.done;){const n=a.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const a=[];for(;null!==(n=e.exec(t));)a.push(n);return a},isHTMLForm:pr,hasOwnProperty:br,hasOwnProp:br,reduceDescriptors:yr,freezeMethods:e=>{yr(e,(t,n)=>{if(Ka(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const a=e[n];Ka(a)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))})},toObjectSet:(e,t)=>{const n={},a=e=>{e.forEach(e=>{n[e]=!0})};return Ya(e)?a(e):a(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n}),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:lr,global:hr,isContextDefined:mr,isSpecCompliantForm:function(e){return!!(e&&Ka(e.append)&&"FormData"===e[Fa]&&e[qa])},toJSONObject:e=>{const t=new Array(10),n=(e,a)=>{if(Za(e)){if(t.indexOf(e)>=0)return;if(Ja(e))return e;if(!("toJSON"in e)){t[a]=e;const r=Ya(e)?[]:{};return cr(e,(e,t)=>{const i=n(e,a+1);!Ua(i)&&(r[t]=i)}),t[a]=void 0,r}}return e};return n(e,0)},isAsyncFn:vr,isThenable:e=>e&&(Za(e)||Ka(e))&&Ka(e.then)&&Ka(e.catch),setImmediate:Mr,asap:Tr,isIterable:e=>null!=e&&Ka(e[qa])};function Nr(e,t,n,a,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),a&&(this.request=a),r&&(this.response=r,this.status=r.status?r.status:null)}Er.inherits(Nr,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Er.toJSONObject(this.config),code:this.code,status:this.status}}});const Wr=Nr.prototype,Or={};function Cr(e){return Er.isPlainObject(e)||Er.isArray(e)}function jr(e){return Er.endsWith(e,"[]")?e.slice(0,-2):e}function Ar(e,t,n){return e?e.concat(t).map(function(e,t){return e=jr(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Or[e]={value:e}}),Object.defineProperties(Nr,Or),Object.defineProperty(Wr,"isAxiosError",{value:!0}),Nr.from=(e,t,n,a,r,i)=>{const o=Object.create(Wr);return Er.toFlatObject(e,o,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e),Nr.call(o,e.message,t,n,a,r),o.cause=e,o.name=e.name,i&&Object.assign(o,i),o};const Rr=Er.toFlatObject(Er,{},null,function(e){return/^is[A-Z]/.test(e)});function Dr(e,t,n){if(!Er.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=Er.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!Er.isUndefined(t[e])});const a=n.metaTokens,r=n.visitor||d,i=n.dots,o=n.indexes,s=(n.Blob||"undefined"!=typeof Blob&&Blob)&&Er.isSpecCompliantForm(t);if(!Er.isFunction(r))throw new TypeError("visitor must be a function");function u(e){if(null===e)return"";if(Er.isDate(e))return e.toISOString();if(Er.isBoolean(e))return e.toString();if(!s&&Er.isBlob(e))throw new Nr("Blob is not supported. Use a Buffer instead.");return Er.isArrayBuffer(e)||Er.isTypedArray(e)?s&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,n,r){let s=e;if(e&&!r&&"object"==typeof e)if(Er.endsWith(n,"{}"))n=a?n:n.slice(0,-2),e=JSON.stringify(e);else if(Er.isArray(e)&&function(e){return Er.isArray(e)&&!e.some(Cr)}(e)||(Er.isFileList(e)||Er.endsWith(n,"[]"))&&(s=Er.toArray(e)))return n=jr(n),s.forEach(function(e,a){!Er.isUndefined(e)&&null!==e&&t.append(!0===o?Ar([n],a,i):null===o?n:n+"[]",u(e))}),!1;return!!Cr(e)||(t.append(Ar(r,n,i),u(e)),!1)}const c=[],l=Object.assign(Rr,{defaultVisitor:d,convertValue:u,isVisitable:Cr});if(!Er.isObject(e))throw new TypeError("data must be an object");return function e(n,a){if(!Er.isUndefined(n)){if(-1!==c.indexOf(n))throw Error("Circular reference detected in "+a.join("."));c.push(n),Er.forEach(n,function(n,i){!0===(!(Er.isUndefined(n)||null===n)&&r.call(t,n,Er.isString(i)?i.trim():i,a,l))&&e(n,a?a.concat(i):[i])}),c.pop()}}(e),t}function Hr(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function zr(e,t){this._pairs=[],e&&Dr(e,this,t)}const _r=zr.prototype;function Lr(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function qr(e,t,n){if(!t)return e;const a=n&&n.encode||Lr;Er.isFunction(n)&&(n={serialize:n});const r=n&&n.serialize;let i;if(i=r?r(t,n):Er.isURLSearchParams(t)?t.toString():new zr(t,n).toString(a),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}_r.append=function(e,t){this._pairs.push([e,t])},_r.toString=function(e){const t=e?function(t){return e.call(this,t,Hr)}:Hr;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};class Fr{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Er.forEach(this.handlers,function(t){null!==t&&e(t)})}}const Br={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Gr={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:zr,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},Ir="undefined"!=typeof window&&"undefined"!=typeof document,Xr="object"==typeof navigator&&navigator||void 0,Yr=Ir&&(!Xr||["ReactNative","NativeScript","NS"].indexOf(Xr.product)<0),Ur="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Jr=Ir&&window.location.href||"http://localhost",Qr={...Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Ir,hasStandardBrowserEnv:Yr,hasStandardBrowserWebWorkerEnv:Ur,navigator:Xr,origin:Jr},Symbol.toStringTag,{value:"Module"})),...Gr};function $r(e){function t(e,n,a,r){let i=e[r++];if("__proto__"===i)return!0;const o=Number.isFinite(+i),s=r>=e.length;return i=!i&&Er.isArray(a)?a.length:i,s?(Er.hasOwnProp(a,i)?a[i]=[a[i],n]:a[i]=n,!o):(a[i]&&Er.isObject(a[i])||(a[i]=[]),t(e,n,a[i],r)&&Er.isArray(a[i])&&(a[i]=function(e){const t={},n=Object.keys(e);let a;const r=n.length;let i;for(a=0;a{t(function(e){return Er.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),a,n,0)}),n}return null}const Kr={transitional:Br,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",a=n.indexOf("application/json")>-1,r=Er.isObject(e);if(r&&Er.isHTMLForm(e)&&(e=new FormData(e)),Er.isFormData(e))return a?JSON.stringify($r(e)):e;if(Er.isArrayBuffer(e)||Er.isBuffer(e)||Er.isStream(e)||Er.isFile(e)||Er.isBlob(e)||Er.isReadableStream(e))return e;if(Er.isArrayBufferView(e))return e.buffer;if(Er.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let i;if(r){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Dr(e,new Qr.classes.URLSearchParams,{visitor:function(e,t,n,a){return Qr.isNode&&Er.isBuffer(e)?(this.append(t,e.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)},...t})}(e,this.formSerializer).toString();if((i=Er.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Dr(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return r||a?(t.setContentType("application/json",!1),function(e,t,n){if(Er.isString(e))try{return(t||JSON.parse)(e),Er.trim(e)}catch(a){if("SyntaxError"!==a.name)throw a}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||Kr.transitional,n=t&&t.forcedJSONParsing,a="json"===this.responseType;if(Er.isResponse(e)||Er.isReadableStream(e))return e;if(e&&Er.isString(e)&&(n&&!this.responseType||a)){const n=!(t&&t.silentJSONParsing)&&a;try{return JSON.parse(e)}catch(r){if(n){if("SyntaxError"===r.name)throw Nr.from(r,Nr.ERR_BAD_RESPONSE,this,null,this.response);throw r}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Qr.classes.FormData,Blob:Qr.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Er.forEach(["delete","get","head","post","put","patch"],e=>{Kr.headers[e]={}});const Vr=Er.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Zr=Symbol("internals");function ei(e){return e&&String(e).trim().toLowerCase()}function ti(e){return!1===e||null==e?e:Er.isArray(e)?e.map(ti):String(e)}function ni(e,t,n,a,r){return Er.isFunction(a)?a.call(this,t,n):(r&&(t=n),Er.isString(t)?Er.isString(a)?-1!==t.indexOf(a):Er.isRegExp(a)?a.test(t):void 0:void 0)}let ai=class{constructor(e){e&&this.set(e)}set(e,t,n){const a=this;function r(e,t,n){const r=ei(t);if(!r)throw new Error("header name must be a non-empty string");const i=Er.findKey(a,r);(!i||void 0===a[i]||!0===n||void 0===n&&!1!==a[i])&&(a[i||t]=ti(e))}const i=(e,t)=>Er.forEach(e,(e,n)=>r(e,n,t));if(Er.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(Er.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i((e=>{const t={};let n,a,r;return e&&e.split("\n").forEach(function(e){r=e.indexOf(":"),n=e.substring(0,r).trim().toLowerCase(),a=e.substring(r+1).trim(),!n||t[n]&&Vr[n]||("set-cookie"===n?t[n]?t[n].push(a):t[n]=[a]:t[n]=t[n]?t[n]+", "+a:a)}),t})(e),t);else if(Er.isObject(e)&&Er.isIterable(e)){let n,a,r={};for(const t of e){if(!Er.isArray(t))throw TypeError("Object iterator must return a key-value pair");r[a=t[0]]=(n=r[a])?Er.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}i(r,t)}else null!=e&&r(t,e,n);return this}get(e,t){if(e=ei(e)){const n=Er.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let a;for(;a=n.exec(e);)t[a[1]]=a[2];return t}(e);if(Er.isFunction(t))return t.call(this,e,n);if(Er.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=ei(e)){const n=Er.findKey(this,e);return!(!n||void 0===this[n]||t&&!ni(0,this[n],n,t))}return!1}delete(e,t){const n=this;let a=!1;function r(e){if(e=ei(e)){const r=Er.findKey(n,e);!r||t&&!ni(0,n[r],r,t)||(delete n[r],a=!0)}}return Er.isArray(e)?e.forEach(r):r(e),a}clear(e){const t=Object.keys(this);let n=t.length,a=!1;for(;n--;){const r=t[n];e&&!ni(0,this[r],r,e,!0)||(delete this[r],a=!0)}return a}normalize(e){const t=this,n={};return Er.forEach(this,(a,r)=>{const i=Er.findKey(n,r);if(i)return t[i]=ti(a),void delete t[r];const o=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}(r):String(r).trim();o!==r&&delete t[r],t[o]=ti(a),n[o]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Er.forEach(this,(n,a)=>{null!=n&&!1!==n&&(t[a]=e&&Er.isArray(n)?n.join(", "):n)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach(e=>n.set(e)),n}static accessor(e){const t=(this[Zr]=this[Zr]={accessors:{}}).accessors,n=this.prototype;function a(e){const a=ei(e);t[a]||(function(e,t){const n=Er.toCamelCase(" "+t);["get","set","has"].forEach(a=>{Object.defineProperty(e,a+n,{value:function(e,n,r){return this[a].call(this,t,e,n,r)},configurable:!0})})}(n,e),t[a]=!0)}return Er.isArray(e)?e.forEach(a):a(e),this}};function ri(e,t){const n=this||Kr,a=t||n,r=ai.from(a.headers);let i=a.data;return Er.forEach(e,function(e){i=e.call(n,i,r.normalize(),t?t.status:void 0)}),r.normalize(),i}function ii(e){return!(!e||!e.__CANCEL__)}function oi(e,t,n){Nr.call(this,null==e?"canceled":e,Nr.ERR_CANCELED,t,n),this.name="CanceledError"}function si(e,t,n){const a=n.config.validateStatus;n.status&&a&&!a(n.status)?t(new Nr("Request failed with status code "+n.status,[Nr.ERR_BAD_REQUEST,Nr.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}ai.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Er.reduceDescriptors(ai.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),Er.freezeMethods(ai),Er.inherits(oi,Nr,{__CANCEL__:!0});const ui=(e,t,n=3)=>{let a=0;const r=function(e,t){e=e||10;const n=new Array(e),a=new Array(e);let r,i=0,o=0;return t=void 0!==t?t:1e3,function(s){const u=Date.now(),d=a[o];r||(r=u),n[i]=s,a[i]=u;let c=o,l=0;for(;c!==i;)l+=n[c++],c%=e;if(i=(i+1)%e,i===o&&(o=(o+1)%e),u-r{r=i,n=null,a&&(clearTimeout(a),a=null),e(...t)};return[(...e)=>{const t=Date.now(),s=t-r;s>=i?o(e,t):(n=e,a||(a=setTimeout(()=>{a=null,o(n)},i-s)))},()=>n&&o(n)]}(n=>{const i=n.loaded,o=n.lengthComputable?n.total:void 0,s=i-a,u=r(s);a=i,e({loaded:i,total:o,progress:o?i/o:void 0,bytes:s,rate:u||void 0,estimated:u&&o&&i<=o?(o-i)/u:void 0,event:n,lengthComputable:null!=o,[t?"download":"upload"]:!0})},n)},di=(e,t)=>{const n=null!=e;return[a=>t[0]({lengthComputable:n,total:e,loaded:a}),t[1]]},ci=e=>(...t)=>Er.asap(()=>e(...t)),li=Qr.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,Qr.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(Qr.origin),Qr.navigator&&/(msie|trident)/i.test(Qr.navigator.userAgent)):()=>!0,hi=Qr.hasStandardBrowserEnv?{write(e,t,n,a,r,i){const o=[e+"="+encodeURIComponent(t)];Er.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),Er.isString(a)&&o.push("path="+a),Er.isString(r)&&o.push("domain="+r),!0===i&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function mi(e,t,n){let a=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e&&(a||0==n)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const gi=e=>e instanceof ai?{...e}:e;function fi(e,t){t=t||{};const n={};function a(e,t,n,a){return Er.isPlainObject(e)&&Er.isPlainObject(t)?Er.merge.call({caseless:a},e,t):Er.isPlainObject(t)?Er.merge({},t):Er.isArray(t)?t.slice():t}function r(e,t,n,r){return Er.isUndefined(t)?Er.isUndefined(e)?void 0:a(void 0,e,0,r):a(e,t,0,r)}function i(e,t){if(!Er.isUndefined(t))return a(void 0,t)}function o(e,t){return Er.isUndefined(t)?Er.isUndefined(e)?void 0:a(void 0,e):a(void 0,t)}function s(n,r,i){return i in t?a(n,r):i in e?a(void 0,n):void 0}const u={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:s,headers:(e,t,n)=>r(gi(e),gi(t),0,!0)};return Er.forEach(Object.keys({...e,...t}),function(a){const i=u[a]||r,o=i(e[a],t[a],a);Er.isUndefined(o)&&i!==s||(n[a]=o)}),n}const pi=e=>{const t=fi({},e);let n,{data:a,withXSRFToken:r,xsrfHeaderName:i,xsrfCookieName:o,headers:s,auth:u}=t;if(t.headers=s=ai.from(s),t.url=qr(mi(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),u&&s.set("Authorization","Basic "+btoa((u.username||"")+":"+(u.password?unescape(encodeURIComponent(u.password)):""))),Er.isFormData(a))if(Qr.hasStandardBrowserEnv||Qr.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(!1!==(n=s.getContentType())){const[e,...t]=n?n.split(";").map(e=>e.trim()).filter(Boolean):[];s.setContentType([e||"multipart/form-data",...t].join("; "))}if(Qr.hasStandardBrowserEnv&&(r&&Er.isFunction(r)&&(r=r(t)),r||!1!==r&&li(t.url))){const e=i&&o&&hi.read(o);e&&s.set(i,e)}return t},bi="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,n){const a=pi(e);let r=a.data;const i=ai.from(a.headers).normalize();let o,s,u,d,c,{responseType:l,onUploadProgress:h,onDownloadProgress:m}=a;function g(){d&&d(),c&&c(),a.cancelToken&&a.cancelToken.unsubscribe(o),a.signal&&a.signal.removeEventListener("abort",o)}let f=new XMLHttpRequest;function p(){if(!f)return;const a=ai.from("getAllResponseHeaders"in f&&f.getAllResponseHeaders());si(function(e){t(e),g()},function(e){n(e),g()},{data:l&&"text"!==l&&"json"!==l?f.response:f.responseText,status:f.status,statusText:f.statusText,headers:a,config:e,request:f}),f=null}f.open(a.method.toUpperCase(),a.url,!0),f.timeout=a.timeout,"onloadend"in f?f.onloadend=p:f.onreadystatechange=function(){f&&4===f.readyState&&(0!==f.status||f.responseURL&&0===f.responseURL.indexOf("file:"))&&setTimeout(p)},f.onabort=function(){f&&(n(new Nr("Request aborted",Nr.ECONNABORTED,e,f)),f=null)},f.onerror=function(){n(new Nr("Network Error",Nr.ERR_NETWORK,e,f)),f=null},f.ontimeout=function(){let t=a.timeout?"timeout of "+a.timeout+"ms exceeded":"timeout exceeded";const r=a.transitional||Br;a.timeoutErrorMessage&&(t=a.timeoutErrorMessage),n(new Nr(t,r.clarifyTimeoutError?Nr.ETIMEDOUT:Nr.ECONNABORTED,e,f)),f=null},void 0===r&&i.setContentType(null),"setRequestHeader"in f&&Er.forEach(i.toJSON(),function(e,t){f.setRequestHeader(t,e)}),Er.isUndefined(a.withCredentials)||(f.withCredentials=!!a.withCredentials),l&&"json"!==l&&(f.responseType=a.responseType),m&&([u,c]=ui(m,!0),f.addEventListener("progress",u)),h&&f.upload&&([s,d]=ui(h),f.upload.addEventListener("progress",s),f.upload.addEventListener("loadend",d)),(a.cancelToken||a.signal)&&(o=t=>{f&&(n(!t||t.type?new oi(null,e,f):t),f.abort(),f=null)},a.cancelToken&&a.cancelToken.subscribe(o),a.signal&&(a.signal.aborted?o():a.signal.addEventListener("abort",o)));const b=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(a.url);b&&-1===Qr.protocols.indexOf(b)?n(new Nr("Unsupported protocol "+b+":",Nr.ERR_BAD_REQUEST,e)):f.send(r||null)})},wi=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,a=new AbortController;const r=function(e){if(!n){n=!0,o();const t=e instanceof Error?e:this.reason;a.abort(t instanceof Nr?t:new oi(t instanceof Error?t.message:t))}};let i=t&&setTimeout(()=>{i=null,r(new Nr(`timeout ${t} of ms exceeded`,Nr.ETIMEDOUT))},t);const o=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(r):e.removeEventListener("abort",r)}),e=null)};e.forEach(e=>e.addEventListener("abort",r));const{signal:s}=a;return s.unsubscribe=()=>Er.asap(o),s}},yi=function*(e,t){let n=e.byteLength;if(n{const r=async function*(e,t){for await(const n of vi(e))yield*yi(n,t)}(e,t);let i,o=0,s=e=>{i||(i=!0,a&&a(e))};return new ReadableStream({async pull(e){try{const{done:t,value:a}=await r.next();if(t)return s(),void e.close();let i=a.byteLength;if(n){let e=o+=i;n(e)}e.enqueue(new Uint8Array(a))}catch(t){throw s(t),t}},cancel:e=>(s(e),r.return())},{highWaterMark:2})},ki="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,xi=ki&&"function"==typeof ReadableStream,Pi=ki&&("function"==typeof TextEncoder?(Si=new TextEncoder,e=>Si.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Si;const Ti=(e,...t)=>{try{return!!e(...t)}catch(n){return!1}},Ei=xi&&Ti(()=>{let e=!1;const t=new Request(Qr.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),Ni=xi&&Ti(()=>Er.isReadableStream(new Response("").body)),Wi={stream:Ni&&(e=>e.body)};var Oi;ki&&(Oi=new Response,["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!Wi[e]&&(Wi[e]=Er.isFunction(Oi[e])?t=>t[e]():(t,n)=>{throw new Nr(`Response type '${e}' is not supported`,Nr.ERR_NOT_SUPPORT,n)})}));const Ci=async(e,t)=>{const n=Er.toFiniteNumber(e.getContentLength());return null==n?(async e=>{if(null==e)return 0;if(Er.isBlob(e))return e.size;if(Er.isSpecCompliantForm(e)){const t=new Request(Qr.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return Er.isArrayBufferView(e)||Er.isArrayBuffer(e)?e.byteLength:(Er.isURLSearchParams(e)&&(e+=""),Er.isString(e)?(await Pi(e)).byteLength:void 0)})(t):n},ji={http:null,xhr:bi,fetch:ki&&(async e=>{let{url:t,method:n,data:a,signal:r,cancelToken:i,timeout:o,onDownloadProgress:s,onUploadProgress:u,responseType:d,headers:c,withCredentials:l="same-origin",fetchOptions:h}=pi(e);d=d?(d+"").toLowerCase():"text";let m,g=wi([r,i&&i.toAbortSignal()],o);const f=g&&g.unsubscribe&&(()=>{g.unsubscribe()});let p;try{if(u&&Ei&&"get"!==n&&"head"!==n&&0!==(p=await Ci(c,a))){let e,n=new Request(t,{method:"POST",body:a,duplex:"half"});if(Er.isFormData(a)&&(e=n.headers.get("content-type"))&&c.setContentType(e),n.body){const[e,t]=di(p,ui(ci(u)));a=Mi(n.body,65536,e,t)}}Er.isString(l)||(l=l?"include":"omit");const r="credentials"in Request.prototype;m=new Request(t,{...h,signal:g,method:n.toUpperCase(),headers:c.normalize().toJSON(),body:a,duplex:"half",credentials:r?l:void 0});let i=await fetch(m,h);const o=Ni&&("stream"===d||"response"===d);if(Ni&&(s||o&&f)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=i[t]});const t=Er.toFiniteNumber(i.headers.get("content-length")),[n,a]=s&&di(t,ui(ci(s),!0))||[];i=new Response(Mi(i.body,65536,n,()=>{a&&a(),f&&f()}),e)}d=d||"text";let b=await Wi[Er.findKey(Wi,d)||"text"](i,e);return!o&&f&&f(),await new Promise((t,n)=>{si(t,n,{data:b,headers:ai.from(i.headers),status:i.status,statusText:i.statusText,config:e,request:m})})}catch(b){if(f&&f(),b&&"TypeError"===b.name&&/Load failed|fetch/i.test(b.message))throw Object.assign(new Nr("Network Error",Nr.ERR_NETWORK,e,m),{cause:b.cause||b});throw Nr.from(b,b&&b.code,e,m)}})};Er.forEach(ji,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(n){}Object.defineProperty(e,"adapterName",{value:t})}});const Ai=e=>`- ${e}`,Ri=e=>Er.isFunction(e)||null===e||!1===e,Di=e=>{e=Er.isArray(e)?e:[e];const{length:t}=e;let n,a;const r={};for(let i=0;i`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));throw new Nr("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Ai).join("\n"):" "+Ai(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return a};function Hi(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new oi(null,e)}function zi(e){return Hi(e),e.headers=ai.from(e.headers),e.data=ri.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Di(e.adapter||Kr.adapter)(e).then(function(t){return Hi(e),t.data=ri.call(e,e.transformResponse,t),t.headers=ai.from(t.headers),t},function(t){return ii(t)||(Hi(e),t&&t.response&&(t.response.data=ri.call(e,e.transformResponse,t.response),t.response.headers=ai.from(t.response.headers))),Promise.reject(t)})}const _i="1.11.0",Li={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Li[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const qi={};Li.transitional=function(e,t,n){function a(e,t){return"[Axios v"+_i+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,r,i)=>{if(!1===e)throw new Nr(a(r," has been removed"+(t?" in "+t:"")),Nr.ERR_DEPRECATED);return t&&!qi[r]&&(qi[r]=!0,console.warn(a(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,i)}},Li.spelling=function(e){return(t,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};const Fi={assertOptions:function(e,t,n){if("object"!=typeof e)throw new Nr("options must be an object",Nr.ERR_BAD_OPTION_VALUE);const a=Object.keys(e);let r=a.length;for(;r-- >0;){const i=a[r],o=t[i];if(o){const t=e[i],n=void 0===t||o(t,i,e);if(!0!==n)throw new Nr("option "+i+" must be "+n,Nr.ERR_BAD_OPTION_VALUE);continue}if(!0!==n)throw new Nr("Unknown option "+i,Nr.ERR_BAD_OPTION)}},validators:Li},Bi=Fi.validators;let Gi=class{constructor(e){this.defaults=e||{},this.interceptors={request:new Fr,response:new Fr}}async request(e,t){try{return await this._request(e,t)}catch(n){if(n instanceof Error){let e={};Error.captureStackTrace?Error.captureStackTrace(e):e=new Error;const t=e.stack?e.stack.replace(/^.+\n/,""):"";try{n.stack?t&&!String(n.stack).endsWith(t.replace(/^.+\n.+\n/,""))&&(n.stack+="\n"+t):n.stack=t}catch(a){}}throw n}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=fi(this.defaults,t);const{transitional:n,paramsSerializer:a,headers:r}=t;void 0!==n&&Fi.assertOptions(n,{silentJSONParsing:Bi.transitional(Bi.boolean),forcedJSONParsing:Bi.transitional(Bi.boolean),clarifyTimeoutError:Bi.transitional(Bi.boolean)},!1),null!=a&&(Er.isFunction(a)?t.paramsSerializer={serialize:a}:Fi.assertOptions(a,{encode:Bi.function,serialize:Bi.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),Fi.assertOptions(t,{baseUrl:Bi.spelling("baseURL"),withXsrfToken:Bi.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let i=r&&Er.merge(r.common,r[t.method]);r&&Er.forEach(["delete","get","head","post","put","patch","common"],e=>{delete r[e]}),t.headers=ai.concat(i,r);const o=[];let s=!0;this.interceptors.request.forEach(function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,o.unshift(e.fulfilled,e.rejected))});const u=[];let d;this.interceptors.response.forEach(function(e){u.push(e.fulfilled,e.rejected)});let c,l=0;if(!s){const e=[zi.bind(this),void 0];for(e.unshift(...o),e.push(...u),c=e.length,d=Promise.resolve(t);l{Ii[t]=e});const Xi=e("a0",function e(t){const n=new Gi(t),a=za(Gi.prototype.request,n);return Er.extend(a,Gi.prototype,n,{allOwnKeys:!0}),Er.extend(a,n,null,{allOwnKeys:!0}),a.create=function(n){return e(fi(t,n))},a}(Kr));Xi.Axios=Gi,Xi.CanceledError=oi,Xi.CancelToken=class e{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise(function(e){t=e});const n=this;this.promise.then(e=>{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t;const a=new Promise(e=>{n.subscribe(e),t=e}).then(e);return a.cancel=function(){n.unsubscribe(t)},a},e(function(e,a,r){n.reason||(n.reason=new oi(e,a,r),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let t;return{token:new e(function(e){t=e}),cancel:t}}},Xi.isCancel=ii,Xi.VERSION=_i,Xi.toFormData=Dr,Xi.AxiosError=Nr,Xi.Cancel=Xi.CanceledError,Xi.all=function(e){return Promise.all(e)},Xi.spread=function(e){return function(t){return e.apply(null,t)}},Xi.isAxiosError=function(e){return Er.isObject(e)&&!0===e.isAxiosError},Xi.mergeConfig=fi,Xi.AxiosHeaders=ai,Xi.formToJSON=e=>$r(Er.isHTMLForm(e)?new FormData(e):e),Xi.getAdapter=Di,Xi.HttpStatusCode=Ii,Xi.default=Xi;const{Axios:Yi,AxiosError:Ui,CanceledError:Ji,isCancel:Qi,CancelToken:$i,VERSION:Ki,all:Vi,Cancel:Zi,isAxiosError:eo,spread:to,toFormData:no,AxiosHeaders:ao,HttpStatusCode:ro,formToJSON:io,getAdapter:oo,mergeConfig:so}=Xi;var uo={exports:{}}; +System.register(["./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,t){"use strict";var n;return{setters:[e=>{n=e.g,e.c}],execute:function(){function t(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(n=>{const a=e[n],r=typeof a;"object"!==r&&"function"!==r||Object.isFrozen(a)||t(a)}),e}e({A:function(e,t){const n=pe(e),a=pe(t);return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()},B:function(e){return pe(e).getFullYear()},C:function(e,t){const n=pe(e),a=pe(t);return n.getFullYear()===a.getFullYear()},D:function(e,t){const n=sn(e),a=sn(t);return+n===+a},E:function(e){const t=pe(e);return Math.trunc(t.getMonth()/3)+1},F:function(e){const t=pe(e);return t.getDate()},G:function(e,t){const n=tn(e),a=tn(t);return+n===+a},H:ve,I:Da,J:function(e,t){let n=pe(e);return isNaN(+n)?Ut(e,NaN):(null!=t.year&&n.setFullYear(t.year),null!=t.month&&(n=Da(n,t.month)),null!=t.date&&n.setDate(t.date),null!=t.hours&&n.setHours(t.hours),null!=t.minutes&&n.setMinutes(t.minutes),null!=t.seconds&&n.setSeconds(t.seconds),null!=t.milliseconds&&n.setMilliseconds(t.milliseconds),n)},K:function(e,t){const n=pe(e),a=Math.trunc(n.getMonth()/3)+1,r=t-a;return Da(n,n.getMonth()+3*r)},L:function(e){const t=pe(e);return t.setMilliseconds(0),t},M:sn,N:ye,O:tn,P:Ln,Q:function(e){const t=pe(e);return t.getHours()},R:function(e,t){const n=pe(e);return n.setHours(t),n},S:function(e){const t=pe(e);return t.setMinutes(0,0,0),t},T:function(e,t){const n=pe(e);return n.setMinutes(t),n},U:function(e){const t=pe(e);return t.setSeconds(0,0),t},V:function(e,t){const n=pe(e);return n.setSeconds(t),n},W:function(e){const t=pe(e);return t.getMilliseconds()},X:function(e){const t=pe(e);return t.getSeconds()},Y:function(e){const t=pe(e);return t.getMinutes()},Z:function(e){const t=pe(e);return t.setHours(23,59,59,999),t},a1:function(e){const t=e.regex,n="HTTP/([32]|1\\.[01])",a={className:"attribute",begin:t.concat("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},r=[a,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+n+" \\d{3})",end:/$/,contains:[{className:"meta",begin:n},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:r}},{begin:"(?=^[A-Z]+ (.*?) "+n+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:n},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:r}},e.inherit(a,{relevance:0})]}},a2:function(e){const t=e.regex,n=["GET","POST","HEAD","PUT","DELETE","CONNECT","OPTIONS","PATCH","TRACE"];return{name:"Apache Access Log",contains:[{className:"number",begin:/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?\b/,relevance:5},{className:"number",begin:/\b\d+\b/,relevance:0},{className:"string",begin:t.concat(/"/,t.either(...n)),end:/"/,keywords:n,illegal:/\n/,relevance:5,contains:[{begin:/HTTP\/[12]\.\d'/,relevance:5}]},{className:"string",begin:/\[\d[^\]\n]{8,}\]/,illegal:/\n/,relevance:1},{className:"string",begin:/\[/,end:/\]/,illegal:/\n/,relevance:0},{className:"string",begin:/"Mozilla\/\d\.\d \(/,end:/"/,illegal:/\n/,relevance:3},{className:"string",begin:/"/,end:/"/,illegal:/\n/,relevance:0}]}},a3:function(e,t){const n=pe(e),a=pe(t),r=on(n,a),i=Math.abs(an(n,a));n.setDate(n.getDate()-r*i);const o=Number(on(n,a)===-r),s=r*(i-o);return 0===s?0:s},a4:function(e,t){const n=pe(e),a=pe(t);return+n<+a},a5:function(){return tn(Date.now())},a6:function(e,t,n){const a=function(e,t){return+pe(e)-+pe(t)}(e,t)/Vt;return(r=n?.roundingMethod,e=>{const t=(r?Math[r]:Math.trunc)(e);return 0===t?0:t})(a);var r},c:function(e,t,n,a){const r=Ln(),i=a?.locale??r.locale??Ae,o=a?.firstWeekContainsDate??a?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,s=a?.weekStartsOn??a?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0;if(""===t)return""===e?pe(n):Ut(n,NaN);const u={firstWeekContainsDate:o,weekStartsOn:s,locale:i},d=[new Bn],c=t.match(Wa).map(e=>{const t=e[0];return t in Tn?(0,Tn[t])(e,i.formatLong):e}).join("").match(Na),l=[];for(let f of c){!a?.useAdditionalWeekYearTokens&&Cn(f)&&jn(f,t,e),!a?.useAdditionalDayOfYearTokens&&On(f)&&jn(f,t,e);const r=f[0],o=Ea[r];if(o){const{incompatibleTokens:t}=o;if(Array.isArray(t)){const e=l.find(e=>t.includes(e.token)||e.token===r);if(e)throw new RangeError(`The format string mustn't contain \`${e.fullToken}\` and \`${f}\` at the same time`)}else if("*"===o.incompatibleTokens&&l.length>0)throw new RangeError(`The format string mustn't contain \`${f}\` and any other token at the same time`);l.push({token:r,fullToken:f});const a=o.run(e,f,i.match,u);if(!a)return Ut(n,NaN);d.push(a.setter),e=a.rest}else{if(r.match(Aa))throw new RangeError("Format string contains an unescaped latin alphabet character `"+r+"`");if("''"===f?f="'":"'"===r&&(f=Ra(f)),0!==e.indexOf(f))return Ut(n,NaN);e=e.slice(f.length)}}if(e.length>0&&ja.test(e))return Ut(n,NaN);const h=d.map(e=>e.priority).sort((e,t)=>t-e).filter((e,t,n)=>n.indexOf(e)===t).map(e=>d.filter(t=>t.priority===e).sort((e,t)=>t.subPriority-e.subPriority)).map(e=>e[0]);let m=pe(n);if(isNaN(m.getTime()))return Ut(n,NaN);const g={};for(const f of h){if(!f.validate(m,u))return Ut(n,NaN);const e=f.set(m,g,u);Array.isArray(e)?(m=e[0],Object.assign(g,e[1])):m=e}return Ut(n,m)},g:rn,h:function(e,t,n){const a=we(),r=n?.locale??a.locale??Ae,i=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??a.firstWeekContainsDate??a.locale?.options?.firstWeekContainsDate??1,o=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??a.weekStartsOn??a.locale?.options?.weekStartsOn??0,s=pe(e);if(!rn(s))throw new RangeError("Invalid time value");let u=t.match(Rn).map(e=>{const t=e[0];return"p"===t||"P"===t?(0,Tn[t])(e,r.formatLong):e}).join("").match(An).map(e=>{if("''"===e)return{isToken:!1,value:"'"};const t=e[0];if("'"===t)return{isToken:!1,value:_n(e)};if(vn[t])return{isToken:!0,value:e};if(t.match(zn))throw new RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}});r.localize.preprocessor&&(u=r.localize.preprocessor(s,u));const d={firstWeekContainsDate:i,weekStartsOn:o,locale:r};return u.map(a=>{if(!a.isToken)return a.value;const i=a.value;return(!n?.useAdditionalWeekYearTokens&&Cn(i)||!n?.useAdditionalDayOfYearTokens&&On(i))&&jn(i,t,String(e)),(0,vn[i[0]])(s,i,r.localize,d)}).join("")},j:function(e){const t=pe(e);return t.getMonth()},l:function(e){const t=pe(e);return t.getTime()},m:Jt,n:function(e){const t=pe(e);return t.getDay()},o:un,q:Qt,s:function(e){const t=pe(e);return t.setDate(1),t.setHours(0,0,0,0),t},w:function(e,t){const n=pe(e);return isNaN(+n)?Ut(e,NaN):(n.setFullYear(t),n)},x:function(e,t){return Qt(e,12*t)},y:function(e,t){return Qt(e,3*t)}});let a=class{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function r(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function i(e,...t){const n=Object.create(null);for(const a in e)n[a]=e[a];return t.forEach(function(e){for(const t in e)n[t]=e[t]}),n}const o=e=>!!e.scope;class s{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=r(e)}openNode(e){if(!o(e))return;const t=((e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${"_".repeat(t+1)}`)].join(" ")}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){o(e)&&(this.buffer+="")}value(){return this.buffer}span(e){this.buffer+=``}}const u=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class d{constructor(){this.rootNode=u(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t=u({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(e=>"string"==typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{d._collapse(e)}))}}class c extends d{constructor(e){super(),this.options=e}addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){const n=e.root;t&&(n.scope=`language:${t}`),this.add(n)}toHTML(){return new s(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function l(e){return e?"string"==typeof e?e:e.source:null}function h(e){return f("(?=",e,")")}function m(e){return f("(?:",e,")*")}function g(e){return f("(?:",e,")?")}function f(...e){return e.map(e=>l(e)).join("")}function p(...e){const t=function(e){const t=e[e.length-1];return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}(e);return"("+(t.capture?"":"?:")+e.map(e=>l(e)).join("|")+")"}function b(e){return new RegExp(e.toString()+"|").exec("").length-1}const w=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function y(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;const t=n;let a=l(e),r="";for(;a.length>0;){const e=w.exec(a);if(!e){r+=a;break}r+=a.substring(0,e.index),a=a.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+String(Number(e[1])+t):(r+=e[0],"("===e[0]&&n++)}return r}).map(e=>`(${e})`).join(t)}const v="[a-zA-Z]\\w*",M="[a-zA-Z_]\\w*",k="\\b\\d+(\\.\\d+)?",x="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",P="\\b(0b[01]+)",S={begin:"\\\\[\\s\\S]",relevance:0},T={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[S]},E={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[S]},N=function(e,t,n={}){const a=i({scope:"comment",begin:e,end:t,contains:[]},n);a.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const r=p("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return a.contains.push({begin:f(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),a},W=N("//","$"),O=N("/\\*","\\*/"),C=N("#","$"),j={scope:"number",begin:k,relevance:0},A={scope:"number",begin:x,relevance:0},R={scope:"number",begin:P,relevance:0},D={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[S,{begin:/\[/,end:/\]/,relevance:0,contains:[S]}]},H={scope:"title",begin:v,relevance:0},z={scope:"title",begin:M,relevance:0},_={begin:"\\.\\s*"+M,relevance:0};var L=Object.freeze({__proto__:null,APOS_STRING_MODE:T,BACKSLASH_ESCAPE:S,BINARY_NUMBER_MODE:R,BINARY_NUMBER_RE:P,COMMENT:N,C_BLOCK_COMMENT_MODE:O,C_LINE_COMMENT_MODE:W,C_NUMBER_MODE:A,C_NUMBER_RE:x,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},HASH_COMMENT_MODE:C,IDENT_RE:v,MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:_,NUMBER_MODE:j,NUMBER_RE:k,PHRASAL_WORDS_MODE:{begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},QUOTE_STRING_MODE:E,REGEXP_MODE:D,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=f(t,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},TITLE_MODE:H,UNDERSCORE_IDENT_RE:M,UNDERSCORE_TITLE_MODE:z});function q(e,t){"."===e.input[e.index-1]&&t.ignoreMatch()}function F(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function B(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=q,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function G(e,t){Array.isArray(e.illegal)&&(e.illegal=p(...e.illegal))}function I(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function X(e,t){void 0===e.relevance&&(e.relevance=1)}const Y=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=f(n.beforeMatch,h(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},U=["of","and","for","in","not","or","if","then","parent","list","value"];function J(e,t,n="keyword"){const a=Object.create(null);return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach(function(n){Object.assign(a,J(e[n],t,n))}),a;function r(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach(function(t){const n=t.split("|");a[n[0]]=[e,Q(n[0],n[1])]})}}function Q(e,t){return t?Number(t):function(e){return U.includes(e.toLowerCase())}(e)?0:1}const $={},K=e=>{console.error(e)},V=(e,...t)=>{console.log(`WARN: ${e}`,...t)},Z=(e,t)=>{$[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),$[`${e}/${t}`]=!0)},ee=new Error;function te(e,t,{key:n}){let a=0;const r=e[n],i={},o={};for(let s=1;s<=t.length;s++)o[s+a]=r[s],i[s+a]=!0,a+=b(t[s-1]);e[n]=o,e[n]._emit=i,e[n]._multi=!0}function ne(e){!function(e){e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope)}(e),"string"==typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope}),function(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw K("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),ee;if("object"!=typeof e.beginScope||null===e.beginScope)throw K("beginScope must be object"),ee;te(e,e.begin,{key:"beginScope"}),e.begin=y(e.begin,{joinWith:""})}}(e),function(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw K("skip, excludeEnd, returnEnd not compatible with endScope: {}"),ee;if("object"!=typeof e.endScope||null===e.endScope)throw K("endScope must be object"),ee;te(e,e.end,{key:"endScope"}),e.end=y(e.end,{joinWith:""})}}(e)}function ae(e){function t(t,n){return new RegExp(l(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=b(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=t(y(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex((e,t)=>t>0&&void 0!==e),a=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,a)}}class a{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=i(e.classNameAliases||{}),function n(r,o){const s=r;if(r.isCompiled)return s;[F,I,ne,Y].forEach(e=>e(r,o)),e.compilerExtensions.forEach(e=>e(r,o)),r.__beforeBegin=null,[B,G,X].forEach(e=>e(r,o)),r.isCompiled=!0;let u=null;return"object"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),u=r.keywords.$pattern,delete r.keywords.$pattern),u=u||/\w+/,r.keywords&&(r.keywords=J(r.keywords,e.case_insensitive)),s.keywordPatternRe=t(u,!0),o&&(r.begin||(r.begin=/\B|\b/),s.beginRe=t(s.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(s.endRe=t(s.end)),s.terminatorEnd=l(s.end)||"",r.endsWithParent&&o.terminatorEnd&&(s.terminatorEnd+=(r.end?"|":"")+o.terminatorEnd)),r.illegal&&(s.illegalRe=t(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map(function(e){return function(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return i(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:re(e)?i(e,{starts:e.starts?i(e.starts):null}):Object.isFrozen(e)?i(e):e}("self"===e?r:e)})),r.contains.forEach(function(e){n(e,s)}),r.starts&&n(r.starts,o),s.matcher=function(e){const t=new a;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:"begin"})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}(s),s}(e)}function re(e){return!!e&&(e.endsWithParent||re(e.starts))}class ie extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const oe=r,se=i,ue=Symbol("nomatch"),de=function(e){const n=Object.create(null),r=Object.create(null),i=[];let o=!0;const s="Could not find the language '{}', did you forget to load/include a language module?",u={disableAutodetect:!0,name:"Plain text",contains:[]};let d={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:c};function l(e){return d.noHighlightRe.test(e)}function b(e,t,n){let a="",r="";"object"==typeof t?(a=e,n=t.ignoreIllegals,r=t.language):(Z("10.7.0","highlight(lang, code, ...args) has been deprecated."),Z("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),r=e,a=t),void 0===n&&(n=!0);const i={code:a,language:r};T("before:highlight",i);const o=i.result?i.result:w(i.language,i.code,n);return o.code=i.code,T("after:highlight",o),o}function w(e,t,r,i){const u=Object.create(null);function c(e,t){return e.keywords[t]}function l(){if(!E.keywords)return void W.addText(O);let e=0;E.keywordPatternRe.lastIndex=0;let t=E.keywordPatternRe.exec(O),n="";for(;t;){n+=O.substring(e,t.index);const a=P.case_insensitive?t[0].toLowerCase():t[0],r=c(E,a);if(r){const[e,i]=r;if(W.addText(n),n="",u[a]=(u[a]||0)+1,u[a]<=7&&(C+=i),e.startsWith("_"))n+=t[0];else{const n=P.classNameAliases[e]||e;m(t[0],n)}}else n+=t[0];e=E.keywordPatternRe.lastIndex,t=E.keywordPatternRe.exec(O)}n+=O.substring(e),W.addText(n)}function h(){null!=E.subLanguage?function(){if(""===O)return;let e=null;if("string"==typeof E.subLanguage){if(!n[E.subLanguage])return void W.addText(O);e=w(E.subLanguage,O,!0,N[E.subLanguage]),N[E.subLanguage]=e._top}else e=y(O,E.subLanguage.length?E.subLanguage:null);E.relevance>0&&(C+=e.relevance),W.__addSublanguage(e._emitter,e.language)}():l(),O=""}function m(e,t){""!==e&&(W.startScope(t),W.addText(e),W.endScope())}function g(e,t){let n=1;const a=t.length-1;for(;n<=a;){if(!e._emit[n]){n++;continue}const a=P.classNameAliases[e[n]]||e[n],r=t[n];a?m(r,a):(O=r,l(),O=""),n++}}function f(e,t){return e.scope&&"string"==typeof e.scope&&W.openNode(P.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(m(O,P.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),O=""):e.beginScope._multi&&(g(e.beginScope,t),O="")),E=Object.create(e,{parent:{value:E}}),E}function p(e,t,n){let r=function(e,t){const n=e&&e.exec(t);return n&&0===n.index}(e.endRe,n);if(r){if(e["on:end"]){const n=new a(e);e["on:end"](t,n),n.isMatchIgnored&&(r=!1)}if(r){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return p(e.parent,t,n)}function b(e){return 0===E.matcher.regexIndex?(O+=e[0],1):(R=!0,0)}function v(e){const n=e[0],a=t.substring(e.index),r=p(E,e,a);if(!r)return ue;const i=E;E.endScope&&E.endScope._wrap?(h(),m(n,E.endScope._wrap)):E.endScope&&E.endScope._multi?(h(),g(E.endScope,e)):i.skip?O+=n:(i.returnEnd||i.excludeEnd||(O+=n),h(),i.excludeEnd&&(O=n));do{E.scope&&W.closeNode(),E.skip||E.subLanguage||(C+=E.relevance),E=E.parent}while(E!==r.parent);return r.starts&&f(r.starts,e),i.returnEnd?0:n.length}let M={};function k(n,i){const s=i&&i[0];if(O+=n,null==s)return h(),0;if("begin"===M.type&&"end"===i.type&&M.index===i.index&&""===s){if(O+=t.slice(i.index,i.index+1),!o){const t=new Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=M.rule,t}return 1}if(M=i,"begin"===i.type)return function(e){const t=e[0],n=e.rule,r=new a(n),i=[n.__beforeBegin,n["on:begin"]];for(const a of i)if(a&&(a(e,r),r.isMatchIgnored))return b(t);return n.skip?O+=t:(n.excludeBegin&&(O+=t),h(),n.returnBegin||n.excludeBegin||(O=t)),f(n,e),n.returnBegin?0:t.length}(i);if("illegal"===i.type&&!r){const e=new Error('Illegal lexeme "'+s+'" for mode "'+(E.scope||"")+'"');throw e.mode=E,e}if("end"===i.type){const e=v(i);if(e!==ue)return e}if("illegal"===i.type&&""===s)return O+="\n",1;if(A>1e5&&A>3*i.index)throw new Error("potential infinite loop, way more iterations than matches");return O+=s,s.length}const P=x(e);if(!P)throw K(s.replace("{}",e)),new Error('Unknown language: "'+e+'"');const S=ae(P);let T="",E=i||S;const N={},W=new d.__emitter(d);!function(){const e=[];for(let t=E;t!==P;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>W.openNode(e))}();let O="",C=0,j=0,A=0,R=!1;try{if(P.__emitTokens)P.__emitTokens(t,W);else{for(E.matcher.considerAll();;){A++,R?R=!1:E.matcher.considerAll(),E.matcher.lastIndex=j;const e=E.matcher.exec(t);if(!e)break;const n=k(t.substring(j,e.index),e);j=e.index+n}k(t.substring(j))}return W.finalize(),T=W.toHTML(),{language:e,value:T,relevance:C,illegal:!1,_emitter:W,_top:E}}catch(D){if(D.message&&D.message.includes("Illegal"))return{language:e,value:oe(t),illegal:!0,relevance:0,_illegalBy:{message:D.message,index:j,context:t.slice(j-100,j+100),mode:D.mode,resultSoFar:T},_emitter:W};if(o)return{language:e,value:oe(t),illegal:!1,relevance:0,errorRaised:D,_emitter:W,_top:E};throw D}}function y(e,t){t=t||d.languages||Object.keys(n);const a=function(e){const t={value:oe(e),illegal:!1,relevance:0,_top:u,_emitter:new d.__emitter(d)};return t._emitter.addText(e),t}(e),r=t.filter(x).filter(S).map(t=>w(t,e,!1));r.unshift(a);const i=r.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(x(e.language).supersetOf===t.language)return 1;if(x(t.language).supersetOf===e.language)return-1}return 0}),[o,s]=i,c=o;return c.secondBest=s,c}function v(e){let t=null;const n=function(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=d.languageDetectRe.exec(t);if(n){const t=x(n[1]);return t||(V(s.replace("{}",n[1])),V("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find(e=>l(e)||x(e))}(e);if(l(n))return;if(T("before:highlightElement",{el:e,language:n}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);if(e.children.length>0&&(d.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(e)),d.throwUnescapedHTML))throw new ie("One of your code blocks includes unescaped HTML.",e.innerHTML);t=e;const a=t.textContent,i=n?b(a,{language:n,ignoreIllegals:!0}):y(a);e.innerHTML=i.value,e.dataset.highlighted="yes",function(e,t,n){const a=t&&r[t]||n;e.classList.add("hljs"),e.classList.add(`language-${a}`)}(e,n,i.language),e.result={language:i.language,re:i.relevance,relevance:i.relevance},i.secondBest&&(e.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance}),T("after:highlightElement",{el:e,result:i,text:a})}let M=!1;function k(){if("loading"===document.readyState)return M||window.addEventListener("DOMContentLoaded",function(){k()},!1),void(M=!0);document.querySelectorAll(d.cssSelector).forEach(v)}function x(e){return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function P(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach(e=>{r[e.toLowerCase()]=t})}function S(e){const t=x(e);return t&&!t.disableAutodetect}function T(e,t){const n=e;i.forEach(function(e){e[n]&&e[n](t)})}Object.assign(e,{highlight:b,highlightAuto:y,highlightAll:k,highlightElement:v,highlightBlock:function(e){return Z("10.7.0","highlightBlock will be removed entirely in v12.0"),Z("10.7.0","Please use highlightElement now."),v(e)},configure:function(e){d=se(d,e)},initHighlighting:()=>{k(),Z("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:function(){k(),Z("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:function(t,a){let r=null;try{r=a(e)}catch(i){if(K("Language definition for '{}' could not be registered.".replace("{}",t)),!o)throw i;K(i),r=u}r.name||(r.name=t),n[t]=r,r.rawDefinition=a.bind(null,e),r.aliases&&P(r.aliases,{languageName:t})},unregisterLanguage:function(e){delete n[e];for(const t of Object.keys(r))r[t]===e&&delete r[t]},listLanguages:function(){return Object.keys(n)},getLanguage:x,registerAliases:P,autoDetection:S,inherit:se,addPlugin:function(e){!function(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}(e),i.push(e)},removePlugin:function(e){const t=i.indexOf(e);-1!==t&&i.splice(t,1)}}),e.debugMode=function(){o=!1},e.safeMode=function(){o=!0},e.versionString="11.11.1",e.regex={concat:f,lookahead:h,either:p,optional:g,anyNumberOfTimes:m};for(const a in L)"object"==typeof L[a]&&t(L[a]);return Object.assign(e,L),e},ce=de({});ce.newInstance=()=>de({});var le=ce;function he(e){return(t={})=>{const n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}function me(e){return(t,n)=>{let a;if("formatting"===(n?.context?String(n.context):"standalone")&&e.formattingValues){const t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;a=e.formattingValues[r]||e.formattingValues[t]}else{const t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;a=e.values[r]||e.values[t]}return a[e.argumentCallback?e.argumentCallback(t):t]}}function ge(e){return(t,n={})=>{const a=n.width,r=a&&e.matchPatterns[a]||e.matchPatterns[e.defaultMatchWidth],i=t.match(r);if(!i)return null;const o=i[0],s=a&&e.parsePatterns[a]||e.parsePatterns[e.defaultParseWidth],u=Array.isArray(s)?function(e,t){for(let n=0;ne.test(o)):function(e,t){for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}(s,e=>e.test(o));let d;return d=e.valueCallback?e.valueCallback(u):u,d=n.valueCallback?n.valueCallback(d):d,{value:d,rest:t.slice(o.length)}}}function fe(e){return(t,n={})=>{const a=t.match(e.matchPattern);if(!a)return null;const r=a[0],i=t.match(e.parsePattern);if(!i)return null;let o=e.valueCallback?e.valueCallback(i[0]):i[0];return o=n.valueCallback?n.valueCallback(o):o,{value:o,rest:t.slice(r.length)}}}function pe(e){const t=Object.prototype.toString.call(e);return e instanceof Date||"object"==typeof e&&"[object Date]"===t?new e.constructor(+e):"number"==typeof e||"[object Number]"===t||"string"==typeof e||"[object String]"===t?new Date(e):new Date(NaN)}ce.HighlightJS=ce,ce.default=ce,e("$",n(le));let be={};function we(){return be}function ye(e,t){const n=we(),a=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,r=pe(e),i=r.getDay(),o=(iNumber(e)+".",era:me({values:{narrow:["v.Chr.","n.Chr."],abbreviated:["v.Chr.","n.Chr."],wide:["vor Christus","nach Christus"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:Pe,formattingValues:Se,defaultWidth:"wide"}),day:me({values:{narrow:["S","M","D","M","D","F","S"],short:["So","Mo","Di","Mi","Do","Fr","Sa"],abbreviated:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],wide:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachm.",evening:"Abend",night:"Nacht"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"}},defaultWidth:"wide",formattingValues:{narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachm.",evening:"abends",night:"nachts"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"}},defaultFormattingWidth:"wide"})},Ee={ordinalNumber:fe({matchPattern:/^(\d+)(\.)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e)}),era:ge({matchPatterns:{narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^v/i,/^n/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[aä]/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},defaultParseWidth:"any"})},Ne=(e("d",{code:"de",formatDistance:(e,t,n)=>{let a;const r=n?.addSuffix?Me[e].withPreposition:Me[e].standalone;return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),n?.addSuffix?n.comparison&&n.comparison>0?"in "+a:"vor "+a:a},formatLong:ke,formatRelative:(e,t,n,a)=>xe[e],localize:Te,match:Ee,options:{weekStartsOn:1,firstWeekContainsDate:4}}),{lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}}),We={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Oe={ordinalNumber:(e,t)=>{const n=Number(e),a=n%100;if(a>20||a<10)switch(a%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:me({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:me({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},Ce={ordinalNumber:fe({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},je={date:he({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:he({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Ae=e("e",{code:"en-US",formatDistance:(e,t,n)=>{let a;const r=Ne[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+a:a+" ago":a},formatLong:je,formatRelative:(e,t,n,a)=>We[e],localize:Oe,match:Ce,options:{weekStartsOn:0,firstWeekContainsDate:1}}),Re={lessThanXSeconds:{one:"menos de un segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"medio minuto",lessThanXMinutes:{one:"menos de un minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"alrededor de 1 hora",other:"alrededor de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 día",other:"{{count}} días"},aboutXWeeks:{one:"alrededor de 1 semana",other:"alrededor de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"alrededor de 1 mes",other:"alrededor de {{count}} meses"},xMonths:{one:"1 mes",other:"{{count}} meses"},aboutXYears:{one:"alrededor de 1 año",other:"alrededor de {{count}} años"},xYears:{one:"1 año",other:"{{count}} años"},overXYears:{one:"más de 1 año",other:"más de {{count}} años"},almostXYears:{one:"casi 1 año",other:"casi {{count}} años"}},De={date:he({formats:{full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:he({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'a las' {{time}}",long:"{{date}} 'a las' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},He={lastWeek:"'el' eeee 'pasado a la' p",yesterday:"'ayer a la' p",today:"'hoy a la' p",tomorrow:"'mañana a la' p",nextWeek:"eeee 'a la' p",other:"P"},ze={lastWeek:"'el' eeee 'pasado a las' p",yesterday:"'ayer a las' p",today:"'hoy a las' p",tomorrow:"'mañana a las' p",nextWeek:"eeee 'a las' p",other:"P"},_e={ordinalNumber:(e,t)=>Number(e)+"º",era:me({values:{narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","después de cristo"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},defaultWidth:"wide",argumentCallback:e=>Number(e)-1}),month:me({values:{narrow:["e","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],wide:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]},defaultWidth:"wide"}),day:me({values:{narrow:["d","l","m","m","j","v","s"],short:["do","lu","ma","mi","ju","vi","sá"],abbreviated:["dom","lun","mar","mié","jue","vie","sáb"],wide:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"}},defaultFormattingWidth:"wide"})},Le={ordinalNumber:fe({matchPattern:/^(\d+)(º)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}}),era:ge({matchPatterns:{narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes de la era com[uú]n)/i,/^(despu[eé]s de cristo|era com[uú]n)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[efmajsond]/i,abbreviated:/^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,wide:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^e/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^en/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[dlmjvs]/i,short:/^(do|lu|ma|mi|ju|vi|s[áa])/i,abbreviated:/^(dom|lun|mar|mi[ée]|jue|vie|s[áa]b)/i,wide:/^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^do/i,/^lu/i,/^ma/i,/^mi/i,/^ju/i,/^vi/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,any:/^([ap]\.?\s?m\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mn/i,noon:/^md/i,morning:/mañana/i,afternoon:/tarde/i,evening:/tarde/i,night:/noche/i}},defaultParseWidth:"any"})},qe=(e("a",{code:"es",formatDistance:(e,t,n)=>{let a;const r=Re[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"en "+a:"hace "+a:a},formatLong:De,formatRelative:(e,t,n,a)=>1!==t.getHours()?ze[e]:He[e],localize:_e,match:Le,options:{weekStartsOn:1,firstWeekContainsDate:1}}),{lessThanXSeconds:{one:"moins d’une seconde",other:"moins de {{count}} secondes"},xSeconds:{one:"1 seconde",other:"{{count}} secondes"},halfAMinute:"30 secondes",lessThanXMinutes:{one:"moins d’une minute",other:"moins de {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"environ 1 heure",other:"environ {{count}} heures"},xHours:{one:"1 heure",other:"{{count}} heures"},xDays:{one:"1 jour",other:"{{count}} jours"},aboutXWeeks:{one:"environ 1 semaine",other:"environ {{count}} semaines"},xWeeks:{one:"1 semaine",other:"{{count}} semaines"},aboutXMonths:{one:"environ 1 mois",other:"environ {{count}} mois"},xMonths:{one:"1 mois",other:"{{count}} mois"},aboutXYears:{one:"environ 1 an",other:"environ {{count}} ans"},xYears:{one:"1 an",other:"{{count}} ans"},overXYears:{one:"plus d’un an",other:"plus de {{count}} ans"},almostXYears:{one:"presqu’un an",other:"presque {{count}} ans"}}),Fe={date:he({formats:{full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:he({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'à' {{time}}",long:"{{date}} 'à' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Be={lastWeek:"eeee 'dernier à' p",yesterday:"'hier à' p",today:"'aujourd’hui à' p",tomorrow:"'demain à' p'",nextWeek:"eeee 'prochain à' p",other:"P"},Ge=["MMM","MMMM"],Ie={preprocessor:(e,t)=>1===e.getDate()?t:t.some(e=>e.isToken&&Ge.includes(e.value))?t.map(e=>e.isToken&&"do"===e.value?{isToken:!0,value:"d"}:e):t,ordinalNumber:(e,t)=>{const n=Number(e),a=t?.unit;if(0===n)return"0";let r;return r=1===n?a&&["year","week","hour","minute","second"].includes(a)?"ère":"er":"ème",n+r},era:me({values:{narrow:["av. J.-C","ap. J.-C"],abbreviated:["av. J.-C","ap. J.-C"],wide:["avant Jésus-Christ","après Jésus-Christ"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["T1","T2","T3","T4"],abbreviated:["1er trim.","2ème trim.","3ème trim.","4ème trim."],wide:["1er trimestre","2ème trimestre","3ème trimestre","4ème trimestre"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],wide:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},defaultWidth:"wide"}),day:me({values:{narrow:["D","L","M","M","J","V","S"],short:["di","lu","ma","me","je","ve","sa"],abbreviated:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],wide:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"mat.",afternoon:"ap.m.",evening:"soir",night:"mat."},abbreviated:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"matin",afternoon:"après-midi",evening:"soir",night:"matin"},wide:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"du matin",afternoon:"de l’après-midi",evening:"du soir",night:"du matin"}},defaultWidth:"wide"})},Xe={ordinalNumber:fe({matchPattern:/^(\d+)(ième|ère|ème|er|e)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e)}),era:ge({matchPatterns:{narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant Jésus-Christ|après Jésus-Christ)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^av/i,/^ap/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^T?[1234]/i,abbreviated:/^[1234](er|ème|e)? trim\.?/i,wide:/^[1234](er|ème|e)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,wide:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},defaultParseWidth:"any"})},Ye=(e("f",{code:"fr",formatDistance:(e,t,n)=>{let a;const r=qe[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),n?.addSuffix?n.comparison&&n.comparison>0?"dans "+a:"il y a "+a:a},formatLong:Fe,formatRelative:(e,t,n,a)=>Be[e],localize:Ie,match:Xe,options:{weekStartsOn:1,firstWeekContainsDate:4}}),{lessThanXSeconds:{one:"kurang dari 1 detik",other:"kurang dari {{count}} detik"},xSeconds:{one:"1 detik",other:"{{count}} detik"},halfAMinute:"setengah menit",lessThanXMinutes:{one:"kurang dari 1 menit",other:"kurang dari {{count}} menit"},xMinutes:{one:"1 menit",other:"{{count}} menit"},aboutXHours:{one:"sekitar 1 jam",other:"sekitar {{count}} jam"},xHours:{one:"1 jam",other:"{{count}} jam"},xDays:{one:"1 hari",other:"{{count}} hari"},aboutXWeeks:{one:"sekitar 1 minggu",other:"sekitar {{count}} minggu"},xWeeks:{one:"1 minggu",other:"{{count}} minggu"},aboutXMonths:{one:"sekitar 1 bulan",other:"sekitar {{count}} bulan"},xMonths:{one:"1 bulan",other:"{{count}} bulan"},aboutXYears:{one:"sekitar 1 tahun",other:"sekitar {{count}} tahun"},xYears:{one:"1 tahun",other:"{{count}} tahun"},overXYears:{one:"lebih dari 1 tahun",other:"lebih dari {{count}} tahun"},almostXYears:{one:"hampir 1 tahun",other:"hampir {{count}} tahun"}}),Ue={date:he({formats:{full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"d/M/yyyy"},defaultWidth:"full"}),time:he({formats:{full:"HH.mm.ss",long:"HH.mm.ss",medium:"HH.mm",short:"HH.mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'pukul' {{time}}",long:"{{date}} 'pukul' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Je={lastWeek:"eeee 'lalu pukul' p",yesterday:"'Kemarin pukul' p",today:"'Hari ini pukul' p",tomorrow:"'Besok pukul' p",nextWeek:"eeee 'pukul' p",other:"P"},Qe={ordinalNumber:(e,t)=>"ke-"+Number(e),era:me({values:{narrow:["SM","M"],abbreviated:["SM","M"],wide:["Sebelum Masehi","Masehi"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],wide:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]},defaultWidth:"wide"}),day:me({values:{narrow:["M","S","S","R","K","J","S"],short:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],abbreviated:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],wide:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},defaultWidth:"wide",formattingValues:{narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},defaultFormattingWidth:"wide"})},$e={ordinalNumber:fe({matchPattern:/^ke-(\d+)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(sm|m)/i,abbreviated:/^(s\.?\s?m\.?|s\.?\s?e\.?\s?u\.?|m\.?|e\.?\s?u\.?)/i,wide:/^(sebelum masehi|sebelum era umum|masehi|era umum)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^s/i,/^(m|e)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^K-?\s[1234]/i,wide:/^Kuartal ke-?\s?[1234]/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|mei|jun|jul|agt|sep|okt|nov|des)/i,wide:/^(januari|februari|maret|april|mei|juni|juli|agustus|september|oktober|november|desember)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^ma/i,/^ap/i,/^me/i,/^jun/i,/^jul/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[srkjm]/i,short:/^(min|sen|sel|rab|kam|jum|sab)/i,abbreviated:/^(min|sen|sel|rab|kam|jum|sab)/i,wide:/^(minggu|senin|selasa|rabu|kamis|jumat|sabtu)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^m/i,/^s/i,/^s/i,/^r/i,/^k/i,/^j/i,/^s/i],any:[/^m/i,/^sen/i,/^sel/i,/^r/i,/^k/i,/^j/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|p|tengah m|tengah h|(di(\swaktu)?) (pagi|siang|sore|malam))/i,any:/^([ap]\.?\s?m\.?|tengah malam|tengah hari|(di(\swaktu)?) (pagi|siang|sore|malam))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^pm/i,midnight:/^tengah m/i,noon:/^tengah h/i,morning:/pagi/i,afternoon:/siang/i,evening:/sore/i,night:/malam/i}},defaultParseWidth:"any"})},Ke=(e("i",{code:"id",formatDistance:(e,t,n)=>{let a;const r=Ye[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"dalam waktu "+a:a+" yang lalu":a},formatLong:Ue,formatRelative:(e,t,n,a)=>Je[e],localize:Qe,match:$e,options:{weekStartsOn:1,firstWeekContainsDate:1}}),{lessThanXSeconds:{one:"meno di un secondo",other:"meno di {{count}} secondi"},xSeconds:{one:"un secondo",other:"{{count}} secondi"},halfAMinute:"alcuni secondi",lessThanXMinutes:{one:"meno di un minuto",other:"meno di {{count}} minuti"},xMinutes:{one:"un minuto",other:"{{count}} minuti"},aboutXHours:{one:"circa un'ora",other:"circa {{count}} ore"},xHours:{one:"un'ora",other:"{{count}} ore"},xDays:{one:"un giorno",other:"{{count}} giorni"},aboutXWeeks:{one:"circa una settimana",other:"circa {{count}} settimane"},xWeeks:{one:"una settimana",other:"{{count}} settimane"},aboutXMonths:{one:"circa un mese",other:"circa {{count}} mesi"},xMonths:{one:"un mese",other:"{{count}} mesi"},aboutXYears:{one:"circa un anno",other:"circa {{count}} anni"},xYears:{one:"un anno",other:"{{count}} anni"},overXYears:{one:"più di un anno",other:"più di {{count}} anni"},almostXYears:{one:"quasi un anno",other:"quasi {{count}} anni"}}),Ve={date:he({formats:{full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:he({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},Ze=["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"];function et(e){return"'"+Ze[e]+" alle' p"}const tt={lastWeek:(e,t,n)=>{const a=e.getDay();return ve(e,t,n)?et(a):function(e){return 0===e?"'domenica scorsa alle' p":"'"+Ze[e]+" scorso alle' p"}(a)},yesterday:"'ieri alle' p",today:"'oggi alle' p",tomorrow:"'domani alle' p",nextWeek:(e,t,n)=>{const a=e.getDay();return ve(e,t,n)?et(a):function(e){return 0===e?"'domenica prossima alle' p":"'"+Ze[e]+" prossimo alle' p"}(a)},other:"P"},nt={ordinalNumber:(e,t)=>{const n=Number(e);return String(n)},era:me({values:{narrow:["aC","dC"],abbreviated:["a.C.","d.C."],wide:["avanti Cristo","dopo Cristo"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["G","F","M","A","M","G","L","A","S","O","N","D"],abbreviated:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],wide:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"]},defaultWidth:"wide"}),day:me({values:{narrow:["D","L","M","M","G","V","S"],short:["dom","lun","mar","mer","gio","ven","sab"],abbreviated:["dom","lun","mar","mer","gio","ven","sab"],wide:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"}},defaultWidth:"wide",formattingValues:{narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"}},defaultFormattingWidth:"wide"})},at={ordinalNumber:fe({matchPattern:/^(\d+)(º)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(aC|dC)/i,abbreviated:/^(a\.?\s?C\.?|a\.?\s?e\.?\s?v\.?|d\.?\s?C\.?|e\.?\s?v\.?)/i,wide:/^(avanti Cristo|avanti Era Volgare|dopo Cristo|Era Volgare)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^a/i,/^(d|e)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^t[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[gfmalsond]/i,abbreviated:/^(gen|feb|mar|apr|mag|giu|lug|ago|set|ott|nov|dic)/i,wide:/^(gennaio|febbraio|marzo|aprile|maggio|giugno|luglio|agosto|settembre|ottobre|novembre|dicembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^g/i,/^f/i,/^m/i,/^a/i,/^m/i,/^g/i,/^l/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ge/i,/^f/i,/^mar/i,/^ap/i,/^mag/i,/^gi/i,/^l/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[dlmgvs]/i,short:/^(do|lu|ma|me|gi|ve|sa)/i,abbreviated:/^(dom|lun|mar|mer|gio|ven|sab)/i,wide:/^(domenica|luned[i|ì]|marted[i|ì]|mercoled[i|ì]|gioved[i|ì]|venerd[i|ì]|sabato)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^g/i,/^v/i,/^s/i],any:[/^d/i,/^l/i,/^ma/i,/^me/i,/^g/i,/^v/i,/^s/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|m\.|p|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i,any:/^([ap]\.?\s?m\.?|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mezza/i,noon:/^mezzo/i,morning:/mattina/i,afternoon:/pomeriggio/i,evening:/sera/i,night:/notte/i}},defaultParseWidth:"any"})},rt=(e("b",{code:"it",formatDistance:(e,t,n)=>{let a;const r=Ke[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"tra "+a:a+" fa":a},formatLong:Ve,formatRelative:(e,t,n,a)=>{const r=tt[e];return"function"==typeof r?r(t,n,a):r},localize:nt,match:at,options:{weekStartsOn:1,firstWeekContainsDate:4}}),{lessThanXSeconds:{one:"1초 미만",other:"{{count}}초 미만"},xSeconds:{one:"1초",other:"{{count}}초"},halfAMinute:"30초",lessThanXMinutes:{one:"1분 미만",other:"{{count}}분 미만"},xMinutes:{one:"1분",other:"{{count}}분"},aboutXHours:{one:"약 1시간",other:"약 {{count}}시간"},xHours:{one:"1시간",other:"{{count}}시간"},xDays:{one:"1일",other:"{{count}}일"},aboutXWeeks:{one:"약 1주",other:"약 {{count}}주"},xWeeks:{one:"1주",other:"{{count}}주"},aboutXMonths:{one:"약 1개월",other:"약 {{count}}개월"},xMonths:{one:"1개월",other:"{{count}}개월"},aboutXYears:{one:"약 1년",other:"약 {{count}}년"},xYears:{one:"1년",other:"{{count}}년"},overXYears:{one:"1년 이상",other:"{{count}}년 이상"},almostXYears:{one:"거의 1년",other:"거의 {{count}}년"}}),it={date:he({formats:{full:"y년 M월 d일 EEEE",long:"y년 M월 d일",medium:"y.MM.dd",short:"y.MM.dd"},defaultWidth:"full"}),time:he({formats:{full:"a H시 mm분 ss초 zzzz",long:"a H:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},ot={lastWeek:"'지난' eeee p",yesterday:"'어제' p",today:"'오늘' p",tomorrow:"'내일' p",nextWeek:"'다음' eeee p",other:"P"},st={ordinalNumber:(e,t)=>{const n=Number(e);switch(String(t?.unit)){case"minute":case"second":return String(n);case"date":return n+"일";default:return n+"번째"}},era:me({values:{narrow:["BC","AD"],abbreviated:["BC","AD"],wide:["기원전","서기"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1분기","2분기","3분기","4분기"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],wide:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},defaultWidth:"wide"}),day:me({values:{narrow:["일","월","화","수","목","금","토"],short:["일","월","화","수","목","금","토"],abbreviated:["일","월","화","수","목","금","토"],wide:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},abbreviated:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},wide:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"}},defaultWidth:"wide",formattingValues:{narrow:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},abbreviated:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},wide:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"}},defaultFormattingWidth:"wide"})},ut={ordinalNumber:fe({matchPattern:/^(\d+)(일|번째)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(기원전|서기)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^(bc|기원전)/i,/^(ad|서기)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234]사?분기/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^(1[012]|[123456789])/,abbreviated:/^(1[012]|[123456789])월/i,wide:/^(1[012]|[123456789])월/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^1월?$/,/^2/,/^3/,/^4/,/^5/,/^6/,/^7/,/^8/,/^9/,/^10/,/^11/,/^12/]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[일월화수목금토]/,short:/^[일월화수목금토]/,abbreviated:/^[일월화수목금토]/,wide:/^[일월화수목금토]요일/},defaultMatchWidth:"wide",parsePatterns:{any:[/^일/,/^월/,/^화/,/^수/,/^목/,/^금/,/^토/]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{any:/^(am|pm|오전|오후|자정|정오|아침|저녁|밤)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^(am|오전)/i,pm:/^(pm|오후)/i,midnight:/^자정/i,noon:/^정오/i,morning:/^아침/i,afternoon:/^오후/i,evening:/^저녁/i,night:/^밤/i}},defaultParseWidth:"any"})},dt=(e("k",{code:"ko",formatDistance:(e,t,n)=>{let a;const r=rt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?a+" 후":a+" 전":a},formatLong:it,formatRelative:(e,t,n,a)=>ot[e],localize:st,match:ut,options:{weekStartsOn:0,firstWeekContainsDate:1}}),{lessThanXSeconds:{one:"menos de um segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"meio minuto",lessThanXMinutes:{one:"menos de um minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"cerca de 1 hora",other:"cerca de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 dia",other:"{{count}} dias"},aboutXWeeks:{one:"cerca de 1 semana",other:"cerca de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"cerca de 1 mês",other:"cerca de {{count}} meses"},xMonths:{one:"1 mês",other:"{{count}} meses"},aboutXYears:{one:"cerca de 1 ano",other:"cerca de {{count}} anos"},xYears:{one:"1 ano",other:"{{count}} anos"},overXYears:{one:"mais de 1 ano",other:"mais de {{count}} anos"},almostXYears:{one:"quase 1 ano",other:"quase {{count}} anos"}}),ct={date:he({formats:{full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/yyyy"},defaultWidth:"full"}),time:he({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'às' {{time}}",long:"{{date}} 'às' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},lt={lastWeek:e=>{const t=e.getDay();return"'"+(0===t||6===t?"último":"última")+"' eeee 'às' p"},yesterday:"'ontem às' p",today:"'hoje às' p",tomorrow:"'amanhã às' p",nextWeek:"eeee 'às' p",other:"P"},ht={ordinalNumber:(e,t)=>{const n=Number(e);return"week"===t?.unit?n+"ª":n+"º"},era:me({values:{narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","depois de cristo"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],wide:["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},defaultWidth:"wide"}),day:me({values:{narrow:["D","S","T","Q","Q","S","S"],short:["dom","seg","ter","qua","qui","sex","sab"],abbreviated:["domingo","segunda","terça","quarta","quinta","sexta","sábado"],wide:["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"}},defaultFormattingWidth:"wide"})},mt={ordinalNumber:fe({matchPattern:/^(\d+)[ºªo]?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|d\.?\s?c\.?)/i,wide:/^(antes de cristo|depois de cristo)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^ac/i,/^dc/i],wide:[/^antes de cristo/i,/^depois de cristo/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[jfmajsond]/i,abbreviated:/^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,wide:/^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^fev/i,/^mar/i,/^abr/i,/^mai/i,/^jun/i,/^jul/i,/^ago/i,/^set/i,/^out/i,/^nov/i,/^dez/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^(dom|[23456]ª?|s[aá]b)/i,short:/^(dom|[23456]ª?|s[aá]b)/i,abbreviated:/^(dom|seg|ter|qua|qui|sex|s[aá]b)/i,wide:/^(domingo|(segunda|ter[cç]a|quarta|quinta|sexta)([- ]feira)?|s[aá]bado)/i},defaultMatchWidth:"wide",parsePatterns:{short:[/^d/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^s[aá]/i],narrow:[/^d/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^s[aá]/i],any:[/^d/i,/^seg/i,/^t/i,/^qua/i,/^qui/i,/^sex/i,/^s[aá]b/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|p|mn|md|(da) (manhã|tarde|noite))/i,any:/^([ap]\.?\s?m\.?|meia[-\s]noite|meio[-\s]dia|(da) (manhã|tarde|noite))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mn|^meia[-\s]noite/i,noon:/^md|^meio[-\s]dia/i,morning:/manhã/i,afternoon:/tarde/i,evening:/tarde/i,night:/noite/i}},defaultParseWidth:"any"})};function gt(e,t){if(void 0!==e.one&&1===t)return e.one;const n=t%10,a=t%100;return 1===n&&11!==a?e.singularNominative.replace("{{count}}",String(t)):n>=2&&n<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",String(t)):e.pluralGenitive.replace("{{count}}",String(t))}function ft(e){return(t,n)=>n?.addSuffix?n.comparison&&n.comparison>0?e.future?gt(e.future,t):"через "+gt(e.regular,t):e.past?gt(e.past,t):gt(e.regular,t)+" назад":gt(e.regular,t)}e("p",{code:"pt-BR",formatDistance:(e,t,n)=>{let a;const r=dt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),n?.addSuffix?n.comparison&&n.comparison>0?"em "+a:"há "+a:a},formatLong:ct,formatRelative:(e,t,n,a)=>{const r=lt[e];return"function"==typeof r?r(t):r},localize:ht,match:mt,options:{weekStartsOn:0,firstWeekContainsDate:1}});const pt={lessThanXSeconds:ft({regular:{one:"меньше секунды",singularNominative:"меньше {{count}} секунды",singularGenitive:"меньше {{count}} секунд",pluralGenitive:"меньше {{count}} секунд"},future:{one:"меньше, чем через секунду",singularNominative:"меньше, чем через {{count}} секунду",singularGenitive:"меньше, чем через {{count}} секунды",pluralGenitive:"меньше, чем через {{count}} секунд"}}),xSeconds:ft({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунды",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду назад",singularGenitive:"{{count}} секунды назад",pluralGenitive:"{{count}} секунд назад"},future:{singularNominative:"через {{count}} секунду",singularGenitive:"через {{count}} секунды",pluralGenitive:"через {{count}} секунд"}}),halfAMinute:(e,t)=>t?.addSuffix?t.comparison&&t.comparison>0?"через полминуты":"полминуты назад":"полминуты",lessThanXMinutes:ft({regular:{one:"меньше минуты",singularNominative:"меньше {{count}} минуты",singularGenitive:"меньше {{count}} минут",pluralGenitive:"меньше {{count}} минут"},future:{one:"меньше, чем через минуту",singularNominative:"меньше, чем через {{count}} минуту",singularGenitive:"меньше, чем через {{count}} минуты",pluralGenitive:"меньше, чем через {{count}} минут"}}),xMinutes:ft({regular:{singularNominative:"{{count}} минута",singularGenitive:"{{count}} минуты",pluralGenitive:"{{count}} минут"},past:{singularNominative:"{{count}} минуту назад",singularGenitive:"{{count}} минуты назад",pluralGenitive:"{{count}} минут назад"},future:{singularNominative:"через {{count}} минуту",singularGenitive:"через {{count}} минуты",pluralGenitive:"через {{count}} минут"}}),aboutXHours:ft({regular:{singularNominative:"около {{count}} часа",singularGenitive:"около {{count}} часов",pluralGenitive:"около {{count}} часов"},future:{singularNominative:"приблизительно через {{count}} час",singularGenitive:"приблизительно через {{count}} часа",pluralGenitive:"приблизительно через {{count}} часов"}}),xHours:ft({regular:{singularNominative:"{{count}} час",singularGenitive:"{{count}} часа",pluralGenitive:"{{count}} часов"}}),xDays:ft({regular:{singularNominative:"{{count}} день",singularGenitive:"{{count}} дня",pluralGenitive:"{{count}} дней"}}),aboutXWeeks:ft({regular:{singularNominative:"около {{count}} недели",singularGenitive:"около {{count}} недель",pluralGenitive:"около {{count}} недель"},future:{singularNominative:"приблизительно через {{count}} неделю",singularGenitive:"приблизительно через {{count}} недели",pluralGenitive:"приблизительно через {{count}} недель"}}),xWeeks:ft({regular:{singularNominative:"{{count}} неделя",singularGenitive:"{{count}} недели",pluralGenitive:"{{count}} недель"}}),aboutXMonths:ft({regular:{singularNominative:"около {{count}} месяца",singularGenitive:"около {{count}} месяцев",pluralGenitive:"около {{count}} месяцев"},future:{singularNominative:"приблизительно через {{count}} месяц",singularGenitive:"приблизительно через {{count}} месяца",pluralGenitive:"приблизительно через {{count}} месяцев"}}),xMonths:ft({regular:{singularNominative:"{{count}} месяц",singularGenitive:"{{count}} месяца",pluralGenitive:"{{count}} месяцев"}}),aboutXYears:ft({regular:{singularNominative:"около {{count}} года",singularGenitive:"около {{count}} лет",pluralGenitive:"около {{count}} лет"},future:{singularNominative:"приблизительно через {{count}} год",singularGenitive:"приблизительно через {{count}} года",pluralGenitive:"приблизительно через {{count}} лет"}}),xYears:ft({regular:{singularNominative:"{{count}} год",singularGenitive:"{{count}} года",pluralGenitive:"{{count}} лет"}}),overXYears:ft({regular:{singularNominative:"больше {{count}} года",singularGenitive:"больше {{count}} лет",pluralGenitive:"больше {{count}} лет"},future:{singularNominative:"больше, чем через {{count}} год",singularGenitive:"больше, чем через {{count}} года",pluralGenitive:"больше, чем через {{count}} лет"}}),almostXYears:ft({regular:{singularNominative:"почти {{count}} год",singularGenitive:"почти {{count}} года",pluralGenitive:"почти {{count}} лет"},future:{singularNominative:"почти через {{count}} год",singularGenitive:"почти через {{count}} года",pluralGenitive:"почти через {{count}} лет"}})},bt={date:he({formats:{full:"EEEE, d MMMM y 'г.'",long:"d MMMM y 'г.'",medium:"d MMM y 'г.'",short:"dd.MM.y"},defaultWidth:"full"}),time:he({formats:{full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},defaultWidth:"full"}),dateTime:he({formats:{any:"{{date}}, {{time}}"},defaultWidth:"any"})},wt=["воскресенье","понедельник","вторник","среду","четверг","пятницу","субботу"];function yt(e){const t=wt[e];return 2===e?"'во "+t+" в' p":"'в "+t+" в' p"}const vt={lastWeek:(e,t,n)=>{const a=e.getDay();return ve(e,t,n)?yt(a):function(e){const t=wt[e];switch(e){case 0:return"'в прошлое "+t+" в' p";case 1:case 2:case 4:return"'в прошлый "+t+" в' p";case 3:case 5:case 6:return"'в прошлую "+t+" в' p"}}(a)},yesterday:"'вчера в' p",today:"'сегодня в' p",tomorrow:"'завтра в' p",nextWeek:(e,t,n)=>{const a=e.getDay();return ve(e,t,n)?yt(a):function(e){const t=wt[e];switch(e){case 0:return"'в следующее "+t+" в' p";case 1:case 2:case 4:return"'в следующий "+t+" в' p";case 3:case 5:case 6:return"'в следующую "+t+" в' p"}}(a)},other:"P"},Mt={ordinalNumber:(e,t)=>{const n=Number(e),a=t?.unit;let r;return r="date"===a?"-е":"week"===a||"minute"===a||"second"===a?"-я":"-й",n+r},era:me({values:{narrow:["до н.э.","н.э."],abbreviated:["до н. э.","н. э."],wide:["до нашей эры","нашей эры"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["1-й кв.","2-й кв.","3-й кв.","4-й кв."],wide:["1-й квартал","2-й квартал","3-й квартал","4-й квартал"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],abbreviated:["янв.","фев.","март","апр.","май","июнь","июль","авг.","сент.","окт.","нояб.","дек."],wide:["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]},defaultWidth:"wide",formattingValues:{narrow:["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],abbreviated:["янв.","фев.","мар.","апр.","мая","июн.","июл.","авг.","сент.","окт.","нояб.","дек."],wide:["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]},defaultFormattingWidth:"wide"}),day:me({values:{narrow:["В","П","В","С","Ч","П","С"],short:["вс","пн","вт","ср","чт","пт","сб"],abbreviated:["вск","пнд","втр","срд","чтв","птн","суб"],wide:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утро",afternoon:"день",evening:"веч.",night:"ночь"},abbreviated:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утро",afternoon:"день",evening:"веч.",night:"ночь"},wide:{am:"ДП",pm:"ПП",midnight:"полночь",noon:"полдень",morning:"утро",afternoon:"день",evening:"вечер",night:"ночь"}},defaultWidth:"any",formattingValues:{narrow:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утра",afternoon:"дня",evening:"веч.",night:"ночи"},abbreviated:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утра",afternoon:"дня",evening:"веч.",night:"ночи"},wide:{am:"ДП",pm:"ПП",midnight:"полночь",noon:"полдень",morning:"утра",afternoon:"дня",evening:"вечера",night:"ночи"}},defaultFormattingWidth:"wide"})},kt={ordinalNumber:fe({matchPattern:/^(\d+)(-?(е|я|й|ое|ье|ая|ья|ый|ой|ий|ый))?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^((до )?н\.?\s?э\.?)/i,abbreviated:/^((до )?н\.?\s?э\.?)/i,wide:/^(до нашей эры|нашей эры|наша эра)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^д/i,/^н/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^[1234](-?[ыои]?й?)? кв.?/i,wide:/^[1234](-?[ыои]?й?)? квартал/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[яфмаисонд]/i,abbreviated:/^(янв|фев|март?|апр|ма[йя]|июн[ья]?|июл[ья]?|авг|сент?|окт|нояб?|дек)\.?/i,wide:/^(январ[ья]|феврал[ья]|марта?|апрел[ья]|ма[йя]|июн[ья]|июл[ья]|августа?|сентябр[ья]|октябр[ья]|октябр[ья]|ноябр[ья]|декабр[ья])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^я/i,/^ф/i,/^м/i,/^а/i,/^м/i,/^и/i,/^и/i,/^а/i,/^с/i,/^о/i,/^н/i,/^я/i],any:[/^я/i,/^ф/i,/^мар/i,/^ап/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^ав/i,/^с/i,/^о/i,/^н/i,/^д/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[впсч]/i,short:/^(вс|во|пн|по|вт|ср|чт|че|пт|пя|сб|су)\.?/i,abbreviated:/^(вск|вос|пнд|пон|втр|вто|срд|сре|чтв|чет|птн|пят|суб).?/i,wide:/^(воскресень[ея]|понедельника?|вторника?|сред[аы]|четверга?|пятниц[аы]|суббот[аы])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^в/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^в[ос]/i,/^п[он]/i,/^в/i,/^ср/i,/^ч/i,/^п[ят]/i,/^с[уб]/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,abbreviated:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,wide:/^([дп]п|полночь|полдень|утр[оа]|день|дня|вечера?|ноч[ьи])/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^дп/i,pm:/^пп/i,midnight:/^полн/i,noon:/^полд/i,morning:/^у/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},defaultParseWidth:"any"})},xt=(e("r",{code:"ru",formatDistance:(e,t,n)=>pt[e](t,n),formatLong:bt,formatRelative:(e,t,n,a)=>{const r=vt[e];return"function"==typeof r?r(t,n,a):r},localize:Mt,match:kt,options:{weekStartsOn:1,firstWeekContainsDate:1}}),{lessThanXSeconds:{one:"bir saniyeden az",other:"{{count}} saniyeden az"},xSeconds:{one:"1 saniye",other:"{{count}} saniye"},halfAMinute:"yarım dakika",lessThanXMinutes:{one:"bir dakikadan az",other:"{{count}} dakikadan az"},xMinutes:{one:"1 dakika",other:"{{count}} dakika"},aboutXHours:{one:"yaklaşık 1 saat",other:"yaklaşık {{count}} saat"},xHours:{one:"1 saat",other:"{{count}} saat"},xDays:{one:"1 gün",other:"{{count}} gün"},aboutXWeeks:{one:"yaklaşık 1 hafta",other:"yaklaşık {{count}} hafta"},xWeeks:{one:"1 hafta",other:"{{count}} hafta"},aboutXMonths:{one:"yaklaşık 1 ay",other:"yaklaşık {{count}} ay"},xMonths:{one:"1 ay",other:"{{count}} ay"},aboutXYears:{one:"yaklaşık 1 yıl",other:"yaklaşık {{count}} yıl"},xYears:{one:"1 yıl",other:"{{count}} yıl"},overXYears:{one:"1 yıldan fazla",other:"{{count}} yıldan fazla"},almostXYears:{one:"neredeyse 1 yıl",other:"neredeyse {{count}} yıl"}}),Pt={date:he({formats:{full:"d MMMM y EEEE",long:"d MMMM y",medium:"d MMM y",short:"dd.MM.yyyy"},defaultWidth:"full"}),time:he({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'saat' {{time}}",long:"{{date}} 'saat' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},St={lastWeek:"'geçen hafta' eeee 'saat' p",yesterday:"'dün saat' p",today:"'bugün saat' p",tomorrow:"'yarın saat' p",nextWeek:"eeee 'saat' p",other:"P"},Tt={ordinalNumber:(e,t)=>Number(e)+".",era:me({values:{narrow:["MÖ","MS"],abbreviated:["MÖ","MS"],wide:["Milattan Önce","Milattan Sonra"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["1Ç","2Ç","3Ç","4Ç"],wide:["İlk çeyrek","İkinci Çeyrek","Üçüncü çeyrek","Son çeyrek"]},defaultWidth:"wide",argumentCallback:e=>Number(e)-1}),month:me({values:{narrow:["O","Ş","M","N","M","H","T","A","E","E","K","A"],abbreviated:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],wide:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"]},defaultWidth:"wide"}),day:me({values:{narrow:["P","P","S","Ç","P","C","C"],short:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],abbreviated:["Paz","Pzt","Sal","Çar","Per","Cum","Cts"],wide:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"öö",pm:"ös",midnight:"gy",noon:"ö",morning:"sa",afternoon:"ös",evening:"ak",night:"ge"},abbreviated:{am:"ÖÖ",pm:"ÖS",midnight:"gece yarısı",noon:"öğle",morning:"sabah",afternoon:"öğleden sonra",evening:"akşam",night:"gece"},wide:{am:"Ö.Ö.",pm:"Ö.S.",midnight:"gece yarısı",noon:"öğle",morning:"sabah",afternoon:"öğleden sonra",evening:"akşam",night:"gece"}},defaultWidth:"wide",formattingValues:{narrow:{am:"öö",pm:"ös",midnight:"gy",noon:"ö",morning:"sa",afternoon:"ös",evening:"ak",night:"ge"},abbreviated:{am:"ÖÖ",pm:"ÖS",midnight:"gece yarısı",noon:"öğlen",morning:"sabahleyin",afternoon:"öğleden sonra",evening:"akşamleyin",night:"geceleyin"},wide:{am:"ö.ö.",pm:"ö.s.",midnight:"gece yarısı",noon:"öğlen",morning:"sabahleyin",afternoon:"öğleden sonra",evening:"akşamleyin",night:"geceleyin"}},defaultFormattingWidth:"wide"})},Et={ordinalNumber:fe({matchPattern:/^(\d+)(\.)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}}),era:ge({matchPatterns:{narrow:/^(mö|ms)/i,abbreviated:/^(mö|ms)/i,wide:/^(milattan önce|milattan sonra)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(^mö|^milattan önce)/i,/(^ms|^milattan sonra)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^[1234]ç/i,wide:/^((i|İ)lk|(i|İ)kinci|üçüncü|son) çeyrek/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i],abbreviated:[/1ç/i,/2ç/i,/3ç/i,/4ç/i],wide:[/^(i|İ)lk çeyrek/i,/(i|İ)kinci çeyrek/i,/üçüncü çeyrek/i,/son çeyrek/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[oşmnhtaek]/i,abbreviated:/^(oca|şub|mar|nis|may|haz|tem|ağu|eyl|eki|kas|ara)/i,wide:/^(ocak|şubat|mart|nisan|mayıs|haziran|temmuz|ağustos|eylül|ekim|kasım|aralık)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^o/i,/^ş/i,/^m/i,/^n/i,/^m/i,/^h/i,/^t/i,/^a/i,/^e/i,/^e/i,/^k/i,/^a/i],any:[/^o/i,/^ş/i,/^mar/i,/^n/i,/^may/i,/^h/i,/^t/i,/^ağ/i,/^ey/i,/^ek/i,/^k/i,/^ar/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[psçc]/i,short:/^(pz|pt|sa|ça|pe|cu|ct)/i,abbreviated:/^(paz|pzt|sal|çar|per|cum|cts)/i,wide:/^(pazar(?!tesi)|pazartesi|salı|çarşamba|perşembe|cuma(?!rtesi)|cumartesi)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^p/i,/^p/i,/^s/i,/^ç/i,/^p/i,/^c/i,/^c/i],any:[/^pz/i,/^pt/i,/^sa/i,/^ça/i,/^pe/i,/^cu/i,/^ct/i],wide:[/^pazar(?!tesi)/i,/^pazartesi/i,/^salı/i,/^çarşamba/i,/^perşembe/i,/^cuma(?!rtesi)/i,/^cumartesi/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^(öö|ös|gy|ö|sa|ös|ak|ge)/i,any:/^(ö\.?\s?[ös]\.?|öğleden sonra|gece yarısı|öğle|(sabah|öğ|akşam|gece)(leyin))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^ö\.?ö\.?/i,pm:/^ö\.?s\.?/i,midnight:/^(gy|gece yarısı)/i,noon:/^öğ/i,morning:/^sa/i,afternoon:/^öğleden sonra/i,evening:/^ak/i,night:/^ge/i}},defaultParseWidth:"any"})};function Nt(e,t){if(void 0!==e.one&&1===t)return e.one;const n=t%10,a=t%100;return 1===n&&11!==a?e.singularNominative.replace("{{count}}",String(t)):n>=2&&n<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",String(t)):e.pluralGenitive.replace("{{count}}",String(t))}function Wt(e){return(t,n)=>n&&n.addSuffix?n.comparison&&n.comparison>0?e.future?Nt(e.future,t):"за "+Nt(e.regular,t):e.past?Nt(e.past,t):Nt(e.regular,t)+" тому":Nt(e.regular,t)}e("t",{code:"tr",formatDistance:(e,t,n)=>{let a;const r=xt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?a+" sonra":a+" önce":a},formatLong:Pt,formatRelative:(e,t,n,a)=>St[e],localize:Tt,match:Et,options:{weekStartsOn:1,firstWeekContainsDate:1}});const Ot={lessThanXSeconds:Wt({regular:{one:"менше секунди",singularNominative:"менше {{count}} секунди",singularGenitive:"менше {{count}} секунд",pluralGenitive:"менше {{count}} секунд"},future:{one:"менше, ніж за секунду",singularNominative:"менше, ніж за {{count}} секунду",singularGenitive:"менше, ніж за {{count}} секунди",pluralGenitive:"менше, ніж за {{count}} секунд"}}),xSeconds:Wt({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунди",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду тому",singularGenitive:"{{count}} секунди тому",pluralGenitive:"{{count}} секунд тому"},future:{singularNominative:"за {{count}} секунду",singularGenitive:"за {{count}} секунди",pluralGenitive:"за {{count}} секунд"}}),halfAMinute:(e,t)=>t&&t.addSuffix?t.comparison&&t.comparison>0?"за півхвилини":"півхвилини тому":"півхвилини",lessThanXMinutes:Wt({regular:{one:"менше хвилини",singularNominative:"менше {{count}} хвилини",singularGenitive:"менше {{count}} хвилин",pluralGenitive:"менше {{count}} хвилин"},future:{one:"менше, ніж за хвилину",singularNominative:"менше, ніж за {{count}} хвилину",singularGenitive:"менше, ніж за {{count}} хвилини",pluralGenitive:"менше, ніж за {{count}} хвилин"}}),xMinutes:Wt({regular:{singularNominative:"{{count}} хвилина",singularGenitive:"{{count}} хвилини",pluralGenitive:"{{count}} хвилин"},past:{singularNominative:"{{count}} хвилину тому",singularGenitive:"{{count}} хвилини тому",pluralGenitive:"{{count}} хвилин тому"},future:{singularNominative:"за {{count}} хвилину",singularGenitive:"за {{count}} хвилини",pluralGenitive:"за {{count}} хвилин"}}),aboutXHours:Wt({regular:{singularNominative:"близько {{count}} години",singularGenitive:"близько {{count}} годин",pluralGenitive:"близько {{count}} годин"},future:{singularNominative:"приблизно за {{count}} годину",singularGenitive:"приблизно за {{count}} години",pluralGenitive:"приблизно за {{count}} годин"}}),xHours:Wt({regular:{singularNominative:"{{count}} годину",singularGenitive:"{{count}} години",pluralGenitive:"{{count}} годин"}}),xDays:Wt({regular:{singularNominative:"{{count}} день",singularGenitive:"{{count}} днi",pluralGenitive:"{{count}} днів"}}),aboutXWeeks:Wt({regular:{singularNominative:"близько {{count}} тижня",singularGenitive:"близько {{count}} тижнів",pluralGenitive:"близько {{count}} тижнів"},future:{singularNominative:"приблизно за {{count}} тиждень",singularGenitive:"приблизно за {{count}} тижні",pluralGenitive:"приблизно за {{count}} тижнів"}}),xWeeks:Wt({regular:{singularNominative:"{{count}} тиждень",singularGenitive:"{{count}} тижні",pluralGenitive:"{{count}} тижнів"}}),aboutXMonths:Wt({regular:{singularNominative:"близько {{count}} місяця",singularGenitive:"близько {{count}} місяців",pluralGenitive:"близько {{count}} місяців"},future:{singularNominative:"приблизно за {{count}} місяць",singularGenitive:"приблизно за {{count}} місяці",pluralGenitive:"приблизно за {{count}} місяців"}}),xMonths:Wt({regular:{singularNominative:"{{count}} місяць",singularGenitive:"{{count}} місяці",pluralGenitive:"{{count}} місяців"}}),aboutXYears:Wt({regular:{singularNominative:"близько {{count}} року",singularGenitive:"близько {{count}} років",pluralGenitive:"близько {{count}} років"},future:{singularNominative:"приблизно за {{count}} рік",singularGenitive:"приблизно за {{count}} роки",pluralGenitive:"приблизно за {{count}} років"}}),xYears:Wt({regular:{singularNominative:"{{count}} рік",singularGenitive:"{{count}} роки",pluralGenitive:"{{count}} років"}}),overXYears:Wt({regular:{singularNominative:"більше {{count}} року",singularGenitive:"більше {{count}} років",pluralGenitive:"більше {{count}} років"},future:{singularNominative:"більше, ніж за {{count}} рік",singularGenitive:"більше, ніж за {{count}} роки",pluralGenitive:"більше, ніж за {{count}} років"}}),almostXYears:Wt({regular:{singularNominative:"майже {{count}} рік",singularGenitive:"майже {{count}} роки",pluralGenitive:"майже {{count}} років"},future:{singularNominative:"майже за {{count}} рік",singularGenitive:"майже за {{count}} роки",pluralGenitive:"майже за {{count}} років"}})},Ct={date:he({formats:{full:"EEEE, do MMMM y 'р.'",long:"do MMMM y 'р.'",medium:"d MMM y 'р.'",short:"dd.MM.y"},defaultWidth:"full"}),time:he({formats:{full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} 'о' {{time}}",long:"{{date}} 'о' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},jt=["неділю","понеділок","вівторок","середу","четвер","п’ятницю","суботу"];function At(e){return"'у "+jt[e]+" о' p"}const Rt={lastWeek:(e,t,n)=>{const a=pe(e),r=a.getDay();return ve(a,t,n)?At(r):function(e){const t=jt[e];switch(e){case 0:case 3:case 5:case 6:return"'у минулу "+t+" о' p";case 1:case 2:case 4:return"'у минулий "+t+" о' p"}}(r)},yesterday:"'вчора о' p",today:"'сьогодні о' p",tomorrow:"'завтра о' p",nextWeek:(e,t,n)=>{const a=pe(e),r=a.getDay();return ve(a,t,n)?At(r):function(e){const t=jt[e];switch(e){case 0:case 3:case 5:case 6:return"'у наступну "+t+" о' p";case 1:case 2:case 4:return"'у наступний "+t+" о' p"}}(r)},other:"P"},Dt={ordinalNumber:(e,t)=>{const n=String(t?.unit),a=Number(e);let r;return r="date"===n?3===a||23===a?"-є":"-е":"minute"===n||"second"===n||"hour"===n?"-а":"-й",a+r},era:me({values:{narrow:["до н.е.","н.е."],abbreviated:["до н. е.","н. е."],wide:["до нашої ери","нашої ери"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["1-й кв.","2-й кв.","3-й кв.","4-й кв."],wide:["1-й квартал","2-й квартал","3-й квартал","4-й квартал"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["С","Л","Б","К","Т","Ч","Л","С","В","Ж","Л","Г"],abbreviated:["січ.","лют.","берез.","квіт.","трав.","черв.","лип.","серп.","верес.","жовт.","листоп.","груд."],wide:["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"]},defaultWidth:"wide",formattingValues:{narrow:["С","Л","Б","К","Т","Ч","Л","С","В","Ж","Л","Г"],abbreviated:["січ.","лют.","берез.","квіт.","трав.","черв.","лип.","серп.","верес.","жовт.","листоп.","груд."],wide:["січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"]},defaultFormattingWidth:"wide"}),day:me({values:{narrow:["Н","П","В","С","Ч","П","С"],short:["нд","пн","вт","ср","чт","пт","сб"],abbreviated:["нед","пон","вів","сер","чтв","птн","суб"],wide:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранок",afternoon:"день",evening:"веч.",night:"ніч"},abbreviated:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранок",afternoon:"день",evening:"веч.",night:"ніч"},wide:{am:"ДП",pm:"ПП",midnight:"північ",noon:"полудень",morning:"ранок",afternoon:"день",evening:"вечір",night:"ніч"}},defaultWidth:"any",formattingValues:{narrow:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"},abbreviated:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"},wide:{am:"ДП",pm:"ПП",midnight:"північ",noon:"полудень",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"}},defaultFormattingWidth:"wide"})},Ht={ordinalNumber:fe({matchPattern:/^(\d+)(-?(е|й|є|а|я))?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^((до )?н\.?\s?е\.?)/i,abbreviated:/^((до )?н\.?\s?е\.?)/i,wide:/^(до нашої ери|нашої ери|наша ера)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^д/i,/^н/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^[1234](-?[иі]?й?)? кв.?/i,wide:/^[1234](-?[иі]?й?)? квартал/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^[слбктчвжг]/i,abbreviated:/^(січ|лют|бер(ез)?|квіт|трав|черв|лип|серп|вер(ес)?|жовт|лис(топ)?|груд)\.?/i,wide:/^(січень|січня|лютий|лютого|березень|березня|квітень|квітня|травень|травня|червня|червень|липень|липня|серпень|серпня|вересень|вересня|жовтень|жовтня|листопад[а]?|грудень|грудня)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^с/i,/^л/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^л/i,/^с/i,/^в/i,/^ж/i,/^л/i,/^г/i],any:[/^сі/i,/^лю/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^лип/i,/^се/i,/^в/i,/^ж/i,/^лис/i,/^г/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[нпвсч]/i,short:/^(нд|пн|вт|ср|чт|пт|сб)\.?/i,abbreviated:/^(нед|пон|вів|сер|че?тв|птн?|суб)\.?/i,wide:/^(неділ[яі]|понеділ[ок][ка]|вівтор[ок][ка]|серед[аи]|четвер(га)?|п\W*?ятниц[яі]|субот[аи])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^н/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^н/i,/^п[он]/i,/^в/i,/^с[ер]/i,/^ч/i,/^п\W*?[ят]/i,/^с[уб]/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{narrow:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,abbreviated:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,wide:/^([дп]п|північ|полудень|ранок|ранку|день|дня|вечір|вечора|ніч|ночі)/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^дп/i,pm:/^пп/i,midnight:/^півн/i,noon:/^пол/i,morning:/^р/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},defaultParseWidth:"any"})},zt=(e("u",{code:"uk",formatDistance:(e,t,n)=>(n=n||{},Ot[e](t,n)),formatLong:Ct,formatRelative:(e,t,n,a)=>{const r=Rt[e];return"function"==typeof r?r(t,n,a):r},localize:Dt,match:Ht,options:{weekStartsOn:1,firstWeekContainsDate:1}}),{lessThanXSeconds:{one:"dưới 1 giây",other:"dưới {{count}} giây"},xSeconds:{one:"1 giây",other:"{{count}} giây"},halfAMinute:"nửa phút",lessThanXMinutes:{one:"dưới 1 phút",other:"dưới {{count}} phút"},xMinutes:{one:"1 phút",other:"{{count}} phút"},aboutXHours:{one:"khoảng 1 giờ",other:"khoảng {{count}} giờ"},xHours:{one:"1 giờ",other:"{{count}} giờ"},xDays:{one:"1 ngày",other:"{{count}} ngày"},aboutXWeeks:{one:"khoảng 1 tuần",other:"khoảng {{count}} tuần"},xWeeks:{one:"1 tuần",other:"{{count}} tuần"},aboutXMonths:{one:"khoảng 1 tháng",other:"khoảng {{count}} tháng"},xMonths:{one:"1 tháng",other:"{{count}} tháng"},aboutXYears:{one:"khoảng 1 năm",other:"khoảng {{count}} năm"},xYears:{one:"1 năm",other:"{{count}} năm"},overXYears:{one:"hơn 1 năm",other:"hơn {{count}} năm"},almostXYears:{one:"gần 1 năm",other:"gần {{count}} năm"}}),_t={date:he({formats:{full:"EEEE, 'ngày' d MMMM 'năm' y",long:"'ngày' d MMMM 'năm' y",medium:"d MMM 'năm' y",short:"dd/MM/y"},defaultWidth:"full"}),time:he({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},Lt={lastWeek:"eeee 'tuần trước vào lúc' p",yesterday:"'hôm qua vào lúc' p",today:"'hôm nay vào lúc' p",tomorrow:"'ngày mai vào lúc' p",nextWeek:"eeee 'tới vào lúc' p",other:"P"},qt={ordinalNumber:(e,t)=>{const n=Number(e),a=t?.unit;if("quarter"===a)switch(n){case 1:return"I";case 2:return"II";case 3:return"III";case 4:return"IV"}else if("day"===a)switch(n){case 1:return"thứ 2";case 2:return"thứ 3";case 3:return"thứ 4";case 4:return"thứ 5";case 5:return"thứ 6";case 6:return"thứ 7";case 7:return"chủ nhật"}else{if("week"===a)return 1===n?"thứ nhất":"thứ "+n;if("dayOfYear"===a)return 1===n?"đầu tiên":"thứ "+n}return String(n)},era:me({values:{narrow:["TCN","SCN"],abbreviated:["trước CN","sau CN"],wide:["trước Công Nguyên","sau Công Nguyên"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["Quý 1","Quý 2","Quý 3","Quý 4"]},defaultWidth:"wide",formattingValues:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["quý I","quý II","quý III","quý IV"]},defaultFormattingWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["Thg 1","Thg 2","Thg 3","Thg 4","Thg 5","Thg 6","Thg 7","Thg 8","Thg 9","Thg 10","Thg 11","Thg 12"],wide:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"]},defaultWidth:"wide",formattingValues:{narrow:["01","02","03","04","05","06","07","08","09","10","11","12"],abbreviated:["thg 1","thg 2","thg 3","thg 4","thg 5","thg 6","thg 7","thg 8","thg 9","thg 10","thg 11","thg 12"],wide:["tháng 01","tháng 02","tháng 03","tháng 04","tháng 05","tháng 06","tháng 07","tháng 08","tháng 09","tháng 10","tháng 11","tháng 12"]},defaultFormattingWidth:"wide"}),day:me({values:{narrow:["CN","T2","T3","T4","T5","T6","T7"],short:["CN","Th 2","Th 3","Th 4","Th 5","Th 6","Th 7"],abbreviated:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],wide:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"am",pm:"pm",midnight:"nửa đêm",noon:"tr",morning:"sg",afternoon:"ch",evening:"tối",night:"đêm"},abbreviated:{am:"AM",pm:"PM",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"},wide:{am:"SA",pm:"CH",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"}},defaultWidth:"wide",formattingValues:{narrow:{am:"am",pm:"pm",midnight:"nửa đêm",noon:"tr",morning:"sg",afternoon:"ch",evening:"tối",night:"đêm"},abbreviated:{am:"AM",pm:"PM",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"},wide:{am:"SA",pm:"CH",midnight:"nửa đêm",noon:"giữa trưa",morning:"vào buổi sáng",afternoon:"vào buổi chiều",evening:"vào buổi tối",night:"vào ban đêm"}},defaultFormattingWidth:"wide"})},Ft={ordinalNumber:fe({matchPattern:/^(\d+)/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(tcn|scn)/i,abbreviated:/^(trước CN|sau CN)/i,wide:/^(trước Công Nguyên|sau Công Nguyên)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^t/i,/^s/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^([1234]|i{1,3}v?)/i,abbreviated:/^q([1234]|i{1,3}v?)/i,wide:/^quý ([1234]|i{1,3}v?)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(1|i)$/i,/(2|ii)$/i,/(3|iii)$/i,/(4|iv)$/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^(0?[2-9]|10|11|12|0?1)/i,abbreviated:/^thg[ _]?(0?[1-9](?!\d)|10|11|12)/i,wide:/^tháng ?(Một|Hai|Ba|Tư|Năm|Sáu|Bảy|Tám|Chín|Mười|Mười ?Một|Mười ?Hai|0?[1-9](?!\d)|10|11|12)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/0?1$/i,/0?2/i,/3/,/4/,/5/,/6/,/7/,/8/,/9/,/10/,/11/,/12/],abbreviated:[/^thg[ _]?0?1(?!\d)/i,/^thg[ _]?0?2/i,/^thg[ _]?0?3/i,/^thg[ _]?0?4/i,/^thg[ _]?0?5/i,/^thg[ _]?0?6/i,/^thg[ _]?0?7/i,/^thg[ _]?0?8/i,/^thg[ _]?0?9/i,/^thg[ _]?10/i,/^thg[ _]?11/i,/^thg[ _]?12/i],wide:[/^tháng ?(Một|0?1(?!\d))/i,/^tháng ?(Hai|0?2)/i,/^tháng ?(Ba|0?3)/i,/^tháng ?(Tư|0?4)/i,/^tháng ?(Năm|0?5)/i,/^tháng ?(Sáu|0?6)/i,/^tháng ?(Bảy|0?7)/i,/^tháng ?(Tám|0?8)/i,/^tháng ?(Chín|0?9)/i,/^tháng ?(Mười|10)/i,/^tháng ?(Mười ?Một|11)/i,/^tháng ?(Mười ?Hai|12)/i]},defaultParseWidth:"wide"}),day:ge({matchPatterns:{narrow:/^(CN|T2|T3|T4|T5|T6|T7)/i,short:/^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,abbreviated:/^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,wide:/^(Chủ ?Nhật|Chúa ?Nhật|thứ ?Hai|thứ ?Ba|thứ ?Tư|thứ ?Năm|thứ ?Sáu|thứ ?Bảy)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],short:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],abbreviated:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],wide:[/(Chủ|Chúa) ?Nhật/i,/Hai/i,/Ba/i,/Tư/i,/Năm/i,/Sáu/i,/Bảy/i]},defaultParseWidth:"wide"}),dayPeriod:ge({matchPatterns:{narrow:/^(a|p|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,abbreviated:/^(am|pm|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,wide:/^(ch[^i]*|sa|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^(a|sa)/i,pm:/^(p|ch[^i]*)/i,midnight:/nửa đêm/i,noon:/trưa/i,morning:/sáng/i,afternoon:/chiều/i,evening:/tối/i,night:/^đêm/i}},defaultParseWidth:"any"})},Bt=(e("v",{code:"vi",formatDistance:(e,t,n)=>{let a;const r=zt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),n?.addSuffix?n.comparison&&n.comparison>0?a+" nữa":a+" trước":a},formatLong:_t,formatRelative:(e,t,n,a)=>Lt[e],localize:qt,match:Ft,options:{weekStartsOn:1,firstWeekContainsDate:1}}),{lessThanXSeconds:{one:"少於 1 秒",other:"少於 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分鐘",lessThanXMinutes:{one:"少於 1 分鐘",other:"少於 {{count}} 分鐘"},xMinutes:{one:"1 分鐘",other:"{{count}} 分鐘"},xHours:{one:"1 小時",other:"{{count}} 小時"},aboutXHours:{one:"大約 1 小時",other:"大約 {{count}} 小時"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大約 1 個星期",other:"大約 {{count}} 個星期"},xWeeks:{one:"1 個星期",other:"{{count}} 個星期"},aboutXMonths:{one:"大約 1 個月",other:"大約 {{count}} 個月"},xMonths:{one:"1 個月",other:"{{count}} 個月"},aboutXYears:{one:"大約 1 年",other:"大約 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超過 1 年",other:"超過 {{count}} 年"},almostXYears:{one:"將近 1 年",other:"將近 {{count}} 年"}}),Gt={date:he({formats:{full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},defaultWidth:"full"}),time:he({formats:{full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},defaultWidth:"full"}),dateTime:he({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},It={lastWeek:"'上個'eeee p",yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:"'下個'eeee p",other:"P"},Xt={ordinalNumber:(e,t)=>{const n=Number(e);switch(t?.unit){case"date":return n+"日";case"hour":return n+"時";case"minute":return n+"分";case"second":return n+"秒";default:return"第 "+n}},era:me({values:{narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},defaultWidth:"wide"}),quarter:me({values:{narrow:["1","2","3","4"],abbreviated:["第一刻","第二刻","第三刻","第四刻"],wide:["第一刻鐘","第二刻鐘","第三刻鐘","第四刻鐘"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:me({values:{narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},defaultWidth:"wide"}),day:me({values:{narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["週日","週一","週二","週三","週四","週五","週六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},defaultWidth:"wide"}),dayPeriod:me({values:{narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"}},defaultWidth:"wide",formattingValues:{narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"}},defaultFormattingWidth:"wide"})},Yt={ordinalNumber:fe({matchPattern:/^(第\s*)?\d+(日|時|分|秒)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:ge({matchPatterns:{narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^(前)/i,/^(公元)/i]},defaultParseWidth:"any"}),quarter:ge({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻鐘/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:ge({matchPatterns:{narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},defaultParseWidth:"any"}),day:ge({matchPatterns:{narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^週[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},defaultMatchWidth:"wide",parsePatterns:{any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},defaultParseWidth:"any"}),dayPeriod:ge({matchPatterns:{any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},defaultParseWidth:"any"})};function Ut(e,t){return e instanceof Date?new e.constructor(t):new Date(t)}function Jt(e,t){const n=pe(e);return isNaN(t)?Ut(e,NaN):t?(n.setDate(n.getDate()+t),n):n}function Qt(e,t){const n=pe(e);if(isNaN(t))return Ut(e,NaN);if(!t)return n;const a=n.getDate(),r=Ut(e,n.getTime());return r.setMonth(n.getMonth()+t+1,0),a>=r.getDate()?r:(n.setFullYear(r.getFullYear(),r.getMonth(),a),n)}e("z",{code:"zh-TW",formatDistance:(e,t,n)=>{let a;const r=Bt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),n?.addSuffix?n.comparison&&n.comparison>0?a+"內":a+"前":a},formatLong:Gt,formatRelative:(e,t,n,a)=>It[e],localize:Xt,match:Yt,options:{weekStartsOn:1,firstWeekContainsDate:4}});const $t=6048e5,Kt=864e5,Vt=36e5;function Zt(e){return ye(e,{weekStartsOn:1})}function en(e){const t=pe(e),n=t.getFullYear(),a=Ut(e,0);a.setFullYear(n+1,0,4),a.setHours(0,0,0,0);const r=Zt(a),i=Ut(e,0);i.setFullYear(n,0,4),i.setHours(0,0,0,0);const o=Zt(i);return t.getTime()>=r.getTime()?n+1:t.getTime()>=o.getTime()?n:n-1}function tn(e){const t=pe(e);return t.setHours(0,0,0,0),t}function nn(e){const t=pe(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-+n}function an(e,t){const n=tn(e),a=tn(t),r=+n-nn(n),i=+a-nn(a);return Math.round((r-i)/Kt)}function rn(e){if(!((t=e)instanceof Date||"object"==typeof t&&"[object Date]"===Object.prototype.toString.call(t)||"number"==typeof e))return!1;var t;const n=pe(e);return!isNaN(Number(n))}function on(e,t){const n=e.getFullYear()-t.getFullYear()||e.getMonth()-t.getMonth()||e.getDate()-t.getDate()||e.getHours()-t.getHours()||e.getMinutes()-t.getMinutes()||e.getSeconds()-t.getSeconds()||e.getMilliseconds()-t.getMilliseconds();return n<0?-1:n>0?1:n}function sn(e){const t=pe(e),n=t.getMonth(),a=n-n%3;return t.setMonth(a,1),t.setHours(0,0,0,0),t}function un(e){const t=pe(e),n=Ut(e,0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}function dn(e){const t=pe(e),n=+Zt(t)-+function(e){const t=en(e),n=Ut(e,0);return n.setFullYear(t,0,4),n.setHours(0,0,0,0),Zt(n)}(t);return Math.round(n/$t)+1}function cn(e,t){const n=pe(e),a=n.getFullYear(),r=we(),i=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,o=Ut(e,0);o.setFullYear(a+1,0,i),o.setHours(0,0,0,0);const s=ye(o,t),u=Ut(e,0);u.setFullYear(a,0,i),u.setHours(0,0,0,0);const d=ye(u,t);return n.getTime()>=s.getTime()?a+1:n.getTime()>=d.getTime()?a:a-1}function ln(e,t){const n=pe(e),a=+ye(n,t)-+function(e,t){const n=we(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,r=cn(e,t),i=Ut(e,0);return i.setFullYear(r,0,a),i.setHours(0,0,0,0),ye(i,t)}(n,t);return Math.round(a/$t)+1}function hn(e,t){return(e<0?"-":"")+Math.abs(e).toString().padStart(t,"0")}const mn={y(e,t){const n=e.getFullYear(),a=n>0?n:1-n;return hn("yy"===t?a%100:a,t.length)},M(e,t){const n=e.getMonth();return"M"===t?String(n+1):hn(n+1,2)},d:(e,t)=>hn(e.getDate(),t.length),a(e,t){const n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];default:return"am"===n?"a.m.":"p.m."}},h:(e,t)=>hn(e.getHours()%12||12,t.length),H:(e,t)=>hn(e.getHours(),t.length),m:(e,t)=>hn(e.getMinutes(),t.length),s:(e,t)=>hn(e.getSeconds(),t.length),S(e,t){const n=t.length,a=e.getMilliseconds();return hn(Math.trunc(a*Math.pow(10,n-3)),t.length)}},gn="midnight",fn="noon",pn="morning",bn="afternoon",wn="evening",yn="night",vn={G:function(e,t,n){const a=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(a,{width:"abbreviated"});case"GGGGG":return n.era(a,{width:"narrow"});default:return n.era(a,{width:"wide"})}},y:function(e,t,n){if("yo"===t){const t=e.getFullYear(),a=t>0?t:1-t;return n.ordinalNumber(a,{unit:"year"})}return mn.y(e,t)},Y:function(e,t,n,a){const r=cn(e,a),i=r>0?r:1-r;return"YY"===t?hn(i%100,2):"Yo"===t?n.ordinalNumber(i,{unit:"year"}):hn(i,t.length)},R:function(e,t){return hn(en(e),t.length)},u:function(e,t){return hn(e.getFullYear(),t.length)},Q:function(e,t,n){const a=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(a);case"QQ":return hn(a,2);case"Qo":return n.ordinalNumber(a,{unit:"quarter"});case"QQQ":return n.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(a,{width:"narrow",context:"formatting"});default:return n.quarter(a,{width:"wide",context:"formatting"})}},q:function(e,t,n){const a=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(a);case"qq":return hn(a,2);case"qo":return n.ordinalNumber(a,{unit:"quarter"});case"qqq":return n.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(a,{width:"narrow",context:"standalone"});default:return n.quarter(a,{width:"wide",context:"standalone"})}},M:function(e,t,n){const a=e.getMonth();switch(t){case"M":case"MM":return mn.M(e,t);case"Mo":return n.ordinalNumber(a+1,{unit:"month"});case"MMM":return n.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(a,{width:"narrow",context:"formatting"});default:return n.month(a,{width:"wide",context:"formatting"})}},L:function(e,t,n){const a=e.getMonth();switch(t){case"L":return String(a+1);case"LL":return hn(a+1,2);case"Lo":return n.ordinalNumber(a+1,{unit:"month"});case"LLL":return n.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(a,{width:"narrow",context:"standalone"});default:return n.month(a,{width:"wide",context:"standalone"})}},w:function(e,t,n,a){const r=ln(e,a);return"wo"===t?n.ordinalNumber(r,{unit:"week"}):hn(r,t.length)},I:function(e,t,n){const a=dn(e);return"Io"===t?n.ordinalNumber(a,{unit:"week"}):hn(a,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getDate(),{unit:"date"}):mn.d(e,t)},D:function(e,t,n){const a=function(e){const t=pe(e);return an(t,un(t))+1}(e);return"Do"===t?n.ordinalNumber(a,{unit:"dayOfYear"}):hn(a,t.length)},E:function(e,t,n){const a=e.getDay();switch(t){case"E":case"EE":case"EEE":return n.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},e:function(e,t,n,a){const r=e.getDay(),i=(r-a.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return hn(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},c:function(e,t,n,a){const r=e.getDay(),i=(r-a.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return hn(i,t.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(r,{width:"narrow",context:"standalone"});case"cccccc":return n.day(r,{width:"short",context:"standalone"});default:return n.day(r,{width:"wide",context:"standalone"})}},i:function(e,t,n){const a=e.getDay(),r=0===a?7:a;switch(t){case"i":return String(r);case"ii":return hn(r,t.length);case"io":return n.ordinalNumber(r,{unit:"day"});case"iii":return n.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},a:function(e,t,n){const a=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(a,{width:"narrow",context:"formatting"});default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},b:function(e,t,n){const a=e.getHours();let r;switch(r=12===a?fn:0===a?gn:a/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(e,t,n){const a=e.getHours();let r;switch(r=a>=17?wn:a>=12?bn:a>=4?pn:yn,t){case"B":case"BB":case"BBB":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){let t=e.getHours()%12;return 0===t&&(t=12),n.ordinalNumber(t,{unit:"hour"})}return mn.h(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getHours(),{unit:"hour"}):mn.H(e,t)},K:function(e,t,n){const a=e.getHours()%12;return"Ko"===t?n.ordinalNumber(a,{unit:"hour"}):hn(a,t.length)},k:function(e,t,n){let a=e.getHours();return 0===a&&(a=24),"ko"===t?n.ordinalNumber(a,{unit:"hour"}):hn(a,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getMinutes(),{unit:"minute"}):mn.m(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getSeconds(),{unit:"second"}):mn.s(e,t)},S:function(e,t){return mn.S(e,t)},X:function(e,t,n){const a=e.getTimezoneOffset();if(0===a)return"Z";switch(t){case"X":return kn(a);case"XXXX":case"XX":return xn(a);default:return xn(a,":")}},x:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"x":return kn(a);case"xxxx":case"xx":return xn(a);default:return xn(a,":")}},O:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+Mn(a,":");default:return"GMT"+xn(a,":")}},z:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+Mn(a,":");default:return"GMT"+xn(a,":")}},t:function(e,t,n){return hn(Math.trunc(e.getTime()/1e3),t.length)},T:function(e,t,n){return hn(e.getTime(),t.length)}};function Mn(e,t=""){const n=e>0?"-":"+",a=Math.abs(e),r=Math.trunc(a/60),i=a%60;return 0===i?n+String(r):n+String(r)+t+hn(i,2)}function kn(e,t){return e%60==0?(e>0?"-":"+")+hn(Math.abs(e)/60,2):xn(e,t)}function xn(e,t=""){const n=e>0?"-":"+",a=Math.abs(e);return n+hn(Math.trunc(a/60),2)+t+hn(a%60,2)}const Pn=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},Sn=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},Tn={p:Sn,P:(e,t)=>{const n=e.match(/(P+)(p+)?/)||[],a=n[1],r=n[2];if(!r)return Pn(e,t);let i;switch(a){case"P":i=t.dateTime({width:"short"});break;case"PP":i=t.dateTime({width:"medium"});break;case"PPP":i=t.dateTime({width:"long"});break;default:i=t.dateTime({width:"full"})}return i.replace("{{date}}",Pn(a,t)).replace("{{time}}",Sn(r,t))}},En=/^D+$/,Nn=/^Y+$/,Wn=["D","DD","YY","YYYY"];function On(e){return En.test(e)}function Cn(e){return Nn.test(e)}function jn(e,t,n){const a=function(e,t,n){const a="Y"===e[0]?"years":"days of the month";return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${a} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}(e,t,n);if(console.warn(a),Wn.includes(e))throw new RangeError(a)}const An=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Rn=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Dn=/^'([^]*?)'?$/,Hn=/''/g,zn=/[a-zA-Z]/;function _n(e){const t=e.match(Dn);return t?t[1].replace(Hn,"'"):e}function Ln(){return Object.assign({},we())}class qn{subPriority=0;validate(e,t){return!0}}class Fn extends qn{constructor(e,t,n,a,r){super(),this.value=e,this.validateValue=t,this.setValue=n,this.priority=a,r&&(this.subPriority=r)}validate(e,t){return this.validateValue(e,this.value,t)}set(e,t,n){return this.setValue(e,t,this.value,n)}}class Bn extends qn{priority=10;subPriority=-1;set(e,t){return t.timestampIsSet?e:Ut(e,function(e,t){const n=t instanceof Date?Ut(t,0):new t(0);return n.setFullYear(e.getFullYear(),e.getMonth(),e.getDate()),n.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()),n}(e,Date))}}class Gn{run(e,t,n,a){const r=this.parse(e,t,n,a);return r?{setter:new Fn(r.value,this.validate,this.set,this.priority,this.subPriority),rest:r.rest}:null}validate(e,t,n){return!0}}const In=/^(1[0-2]|0?\d)/,Xn=/^(3[0-1]|[0-2]?\d)/,Yn=/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,Un=/^(5[0-3]|[0-4]?\d)/,Jn=/^(2[0-3]|[0-1]?\d)/,Qn=/^(2[0-4]|[0-1]?\d)/,$n=/^(1[0-1]|0?\d)/,Kn=/^(1[0-2]|0?\d)/,Vn=/^[0-5]?\d/,Zn=/^[0-5]?\d/,ea=/^\d/,ta=/^\d{1,2}/,na=/^\d{1,3}/,aa=/^\d{1,4}/,ra=/^-?\d+/,ia=/^-?\d/,oa=/^-?\d{1,2}/,sa=/^-?\d{1,3}/,ua=/^-?\d{1,4}/,da=/^([+-])(\d{2})(\d{2})?|Z/,ca=/^([+-])(\d{2})(\d{2})|Z/,la=/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,ha=/^([+-])(\d{2}):(\d{2})|Z/,ma=/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/;function ga(e,t){return e?{value:t(e.value),rest:e.rest}:e}function fa(e,t){const n=t.match(e);return n?{value:parseInt(n[0],10),rest:t.slice(n[0].length)}:null}function pa(e,t){const n=t.match(e);if(!n)return null;if("Z"===n[0])return{value:0,rest:t.slice(1)};const a="+"===n[1]?1:-1,r=n[2]?parseInt(n[2],10):0,i=n[3]?parseInt(n[3],10):0,o=n[5]?parseInt(n[5],10):0;return{value:a*(r*Vt+6e4*i+1e3*o),rest:t.slice(n[0].length)}}function ba(e){return fa(ra,e)}function wa(e,t){switch(e){case 1:return fa(ea,t);case 2:return fa(ta,t);case 3:return fa(na,t);case 4:return fa(aa,t);default:return fa(new RegExp("^\\d{1,"+e+"}"),t)}}function ya(e,t){switch(e){case 1:return fa(ia,t);case 2:return fa(oa,t);case 3:return fa(sa,t);case 4:return fa(ua,t);default:return fa(new RegExp("^-?\\d{1,"+e+"}"),t)}}function va(e){switch(e){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;default:return 0}}function Ma(e,t){const n=t>0,a=n?t:1-t;let r;if(a<=50)r=e||100;else{const t=a+50;r=e+100*Math.trunc(t/100)-(e>=t%100?100:0)}return n?r:1-r}function ka(e){return e%400==0||e%4==0&&e%100!=0}const xa=[31,28,31,30,31,30,31,31,30,31,30,31],Pa=[31,29,31,30,31,30,31,31,30,31,30,31];function Sa(e,t,n){const a=we(),r=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??a.weekStartsOn??a.locale?.options?.weekStartsOn??0,i=pe(e),o=i.getDay(),s=7-r;return Jt(i,t<0||t>6?t-(o+s)%7:((t%7+7)%7+s)%7-(o+s)%7)}function Ta(e,t){const n=pe(e),a=function(e){let t=pe(e).getDay();return 0===t&&(t=7),t}(n);return Jt(n,t-a)}const Ea={G:new class extends Gn{priority=140;parse(e,t,n){switch(t){case"G":case"GG":case"GGG":return n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"});case"GGGGG":return n.era(e,{width:"narrow"});default:return n.era(e,{width:"wide"})||n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"})}}set(e,t,n){return t.era=n,e.setFullYear(n,0,1),e.setHours(0,0,0,0),e}incompatibleTokens=["R","u","t","T"]},y:new class extends Gn{priority=130;incompatibleTokens=["Y","R","u","w","I","i","e","c","t","T"];parse(e,t,n){const a=e=>({year:e,isTwoDigitYear:"yy"===t});switch(t){case"y":return ga(wa(4,e),a);case"yo":return ga(n.ordinalNumber(e,{unit:"year"}),a);default:return ga(wa(t.length,e),a)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,n){const a=e.getFullYear();if(n.isTwoDigitYear){const t=Ma(n.year,a);return e.setFullYear(t,0,1),e.setHours(0,0,0,0),e}const r="era"in t&&1!==t.era?1-n.year:n.year;return e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}},Y:new class extends Gn{priority=130;parse(e,t,n){const a=e=>({year:e,isTwoDigitYear:"YY"===t});switch(t){case"Y":return ga(wa(4,e),a);case"Yo":return ga(n.ordinalNumber(e,{unit:"year"}),a);default:return ga(wa(t.length,e),a)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,n,a){const r=cn(e,a);if(n.isTwoDigitYear){const t=Ma(n.year,r);return e.setFullYear(t,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),ye(e,a)}const i="era"in t&&1!==t.era?1-n.year:n.year;return e.setFullYear(i,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),ye(e,a)}incompatibleTokens=["y","R","u","Q","q","M","L","I","d","D","i","t","T"]},R:new class extends Gn{priority=130;parse(e,t){return ya("R"===t?4:t.length,e)}set(e,t,n){const a=Ut(e,0);return a.setFullYear(n,0,4),a.setHours(0,0,0,0),Zt(a)}incompatibleTokens=["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"]},u:new class extends Gn{priority=130;parse(e,t){return ya("u"===t?4:t.length,e)}set(e,t,n){return e.setFullYear(n,0,1),e.setHours(0,0,0,0),e}incompatibleTokens=["G","y","Y","R","w","I","i","e","c","t","T"]},Q:new class extends Gn{priority=120;parse(e,t,n){switch(t){case"Q":case"QQ":return wa(t.length,e);case"Qo":return n.ordinalNumber(e,{unit:"quarter"});case"QQQ":return n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return n.quarter(e,{width:"narrow",context:"formatting"});default:return n.quarter(e,{width:"wide",context:"formatting"})||n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=1&&t<=4}set(e,t,n){return e.setMonth(3*(n-1),1),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"]},q:new class extends Gn{priority=120;parse(e,t,n){switch(t){case"q":case"qq":return wa(t.length,e);case"qo":return n.ordinalNumber(e,{unit:"quarter"});case"qqq":return n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return n.quarter(e,{width:"narrow",context:"standalone"});default:return n.quarter(e,{width:"wide",context:"standalone"})||n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=1&&t<=4}set(e,t,n){return e.setMonth(3*(n-1),1),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"]},M:new class extends Gn{incompatibleTokens=["Y","R","q","Q","L","w","I","D","i","e","c","t","T"];priority=110;parse(e,t,n){const a=e=>e-1;switch(t){case"M":return ga(fa(In,e),a);case"MM":return ga(wa(2,e),a);case"Mo":return ga(n.ordinalNumber(e,{unit:"month"}),a);case"MMM":return n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return n.month(e,{width:"narrow",context:"formatting"});default:return n.month(e,{width:"wide",context:"formatting"})||n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.setMonth(n,1),e.setHours(0,0,0,0),e}},L:new class extends Gn{priority=110;parse(e,t,n){const a=e=>e-1;switch(t){case"L":return ga(fa(In,e),a);case"LL":return ga(wa(2,e),a);case"Lo":return ga(n.ordinalNumber(e,{unit:"month"}),a);case"LLL":return n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return n.month(e,{width:"narrow",context:"standalone"});default:return n.month(e,{width:"wide",context:"standalone"})||n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.setMonth(n,1),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","q","Q","M","w","I","D","i","e","c","t","T"]},w:new class extends Gn{priority=100;parse(e,t,n){switch(t){case"w":return fa(Un,e);case"wo":return n.ordinalNumber(e,{unit:"week"});default:return wa(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,n,a){return ye(function(e,t,n){const a=pe(e),r=ln(a,n)-t;return a.setDate(a.getDate()-7*r),a}(e,n,a),a)}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","i","t","T"]},I:new class extends Gn{priority=100;parse(e,t,n){switch(t){case"I":return fa(Un,e);case"Io":return n.ordinalNumber(e,{unit:"week"});default:return wa(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,n){return Zt(function(e,t){const n=pe(e),a=dn(n)-t;return n.setDate(n.getDate()-7*a),n}(e,n))}incompatibleTokens=["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"]},d:new class extends Gn{priority=90;subPriority=1;parse(e,t,n){switch(t){case"d":return fa(Xn,e);case"do":return n.ordinalNumber(e,{unit:"date"});default:return wa(t.length,e)}}validate(e,t){const n=ka(e.getFullYear()),a=e.getMonth();return n?t>=1&&t<=Pa[a]:t>=1&&t<=xa[a]}set(e,t,n){return e.setDate(n),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","q","Q","w","I","D","i","e","c","t","T"]},D:new class extends Gn{priority=90;subpriority=1;parse(e,t,n){switch(t){case"D":case"DD":return fa(Yn,e);case"Do":return n.ordinalNumber(e,{unit:"date"});default:return wa(t.length,e)}}validate(e,t){return ka(e.getFullYear())?t>=1&&t<=366:t>=1&&t<=365}set(e,t,n){return e.setMonth(0,n),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"]},E:new class extends Gn{priority=90;parse(e,t,n){switch(t){case"E":case"EE":case"EEE":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return n.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,a){return(e=Sa(e,n,a)).setHours(0,0,0,0),e}incompatibleTokens=["D","i","e","c","t","T"]},e:new class extends Gn{priority=90;parse(e,t,n,a){const r=e=>{const t=7*Math.floor((e-1)/7);return(e+a.weekStartsOn+6)%7+t};switch(t){case"e":case"ee":return ga(wa(t.length,e),r);case"eo":return ga(n.ordinalNumber(e,{unit:"day"}),r);case"eee":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"eeeee":return n.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,a){return(e=Sa(e,n,a)).setHours(0,0,0,0),e}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"]},c:new class extends Gn{priority=90;parse(e,t,n,a){const r=e=>{const t=7*Math.floor((e-1)/7);return(e+a.weekStartsOn+6)%7+t};switch(t){case"c":case"cc":return ga(wa(t.length,e),r);case"co":return ga(n.ordinalNumber(e,{unit:"day"}),r);case"ccc":return n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});case"ccccc":return n.day(e,{width:"narrow",context:"standalone"});case"cccccc":return n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});default:return n.day(e,{width:"wide",context:"standalone"})||n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,a){return(e=Sa(e,n,a)).setHours(0,0,0,0),e}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"]},i:new class extends Gn{priority=90;parse(e,t,n){const a=e=>0===e?7:e;switch(t){case"i":case"ii":return wa(t.length,e);case"io":return n.ordinalNumber(e,{unit:"day"});case"iii":return ga(n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),a);case"iiiii":return ga(n.day(e,{width:"narrow",context:"formatting"}),a);case"iiiiii":return ga(n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),a);default:return ga(n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),a)}}validate(e,t){return t>=1&&t<=7}set(e,t,n){return(e=Ta(e,n)).setHours(0,0,0,0),e}incompatibleTokens=["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"]},a:new class extends Gn{priority=80;parse(e,t,n){switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(va(n),0,0,0),e}incompatibleTokens=["b","B","H","k","t","T"]},b:new class extends Gn{priority=80;parse(e,t,n){switch(t){case"b":case"bb":case"bbb":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(va(n),0,0,0),e}incompatibleTokens=["a","B","H","k","t","T"]},B:new class extends Gn{priority=80;parse(e,t,n){switch(t){case"B":case"BB":case"BBB":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(va(n),0,0,0),e}incompatibleTokens=["a","b","t","T"]},h:new class extends Gn{priority=70;parse(e,t,n){switch(t){case"h":return fa(Kn,e);case"ho":return n.ordinalNumber(e,{unit:"hour"});default:return wa(t.length,e)}}validate(e,t){return t>=1&&t<=12}set(e,t,n){const a=e.getHours()>=12;return a&&n<12?e.setHours(n+12,0,0,0):a||12!==n?e.setHours(n,0,0,0):e.setHours(0,0,0,0),e}incompatibleTokens=["H","K","k","t","T"]},H:new class extends Gn{priority=70;parse(e,t,n){switch(t){case"H":return fa(Jn,e);case"Ho":return n.ordinalNumber(e,{unit:"hour"});default:return wa(t.length,e)}}validate(e,t){return t>=0&&t<=23}set(e,t,n){return e.setHours(n,0,0,0),e}incompatibleTokens=["a","b","h","K","k","t","T"]},K:new class extends Gn{priority=70;parse(e,t,n){switch(t){case"K":return fa($n,e);case"Ko":return n.ordinalNumber(e,{unit:"hour"});default:return wa(t.length,e)}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.getHours()>=12&&n<12?e.setHours(n+12,0,0,0):e.setHours(n,0,0,0),e}incompatibleTokens=["h","H","k","t","T"]},k:new class extends Gn{priority=70;parse(e,t,n){switch(t){case"k":return fa(Qn,e);case"ko":return n.ordinalNumber(e,{unit:"hour"});default:return wa(t.length,e)}}validate(e,t){return t>=1&&t<=24}set(e,t,n){const a=n<=24?n%24:n;return e.setHours(a,0,0,0),e}incompatibleTokens=["a","b","h","H","K","t","T"]},m:new class extends Gn{priority=60;parse(e,t,n){switch(t){case"m":return fa(Vn,e);case"mo":return n.ordinalNumber(e,{unit:"minute"});default:return wa(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,n){return e.setMinutes(n,0,0),e}incompatibleTokens=["t","T"]},s:new class extends Gn{priority=50;parse(e,t,n){switch(t){case"s":return fa(Zn,e);case"so":return n.ordinalNumber(e,{unit:"second"});default:return wa(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,n){return e.setSeconds(n,0),e}incompatibleTokens=["t","T"]},S:new class extends Gn{priority=30;parse(e,t){return ga(wa(t.length,e),e=>Math.trunc(e*Math.pow(10,3-t.length)))}set(e,t,n){return e.setMilliseconds(n),e}incompatibleTokens=["t","T"]},X:new class extends Gn{priority=10;parse(e,t){switch(t){case"X":return pa(da,e);case"XX":return pa(ca,e);case"XXXX":return pa(la,e);case"XXXXX":return pa(ma,e);default:return pa(ha,e)}}set(e,t,n){return t.timestampIsSet?e:Ut(e,e.getTime()-nn(e)-n)}incompatibleTokens=["t","T","x"]},x:new class extends Gn{priority=10;parse(e,t){switch(t){case"x":return pa(da,e);case"xx":return pa(ca,e);case"xxxx":return pa(la,e);case"xxxxx":return pa(ma,e);default:return pa(ha,e)}}set(e,t,n){return t.timestampIsSet?e:Ut(e,e.getTime()-nn(e)-n)}incompatibleTokens=["t","T","X"]},t:new class extends Gn{priority=40;parse(e){return ba(e)}set(e,t,n){return[Ut(e,1e3*n),{timestampIsSet:!0}]}incompatibleTokens="*"},T:new class extends Gn{priority=20;parse(e){return ba(e)}set(e,t,n){return[Ut(e,n),{timestampIsSet:!0}]}incompatibleTokens="*"}},Na=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Wa=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Oa=/^'([^]*?)'?$/,Ca=/''/g,ja=/\S/,Aa=/[a-zA-Z]/;function Ra(e){return e.match(Oa)[1].replace(Ca,"'")}function Da(e,t){const n=pe(e),a=n.getFullYear(),r=n.getDate(),i=Ut(e,0);i.setFullYear(a,t,15),i.setHours(0,0,0,0);const o=function(e){const t=pe(e),n=t.getFullYear(),a=t.getMonth(),r=Ut(e,0);return r.setFullYear(n,a+1,0),r.setHours(0,0,0,0),r.getDate()}(i);return n.setMonth(t,Math.min(r,o)),n}function Ha(e,t){return function(){return e.apply(t,arguments)}}const{toString:za}=Object.prototype,{getPrototypeOf:_a}=Object,{iterator:La,toStringTag:qa}=Symbol,Fa=(Ba=Object.create(null),e=>{const t=za.call(e);return Ba[t]||(Ba[t]=t.slice(8,-1).toLowerCase())});var Ba;const Ga=e=>(e=e.toLowerCase(),t=>Fa(t)===e),Ia=e=>t=>typeof t===e,{isArray:Xa}=Array,Ya=Ia("undefined");function Ua(e){return null!==e&&!Ya(e)&&null!==e.constructor&&!Ya(e.constructor)&&$a(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Ja=Ga("ArrayBuffer"),Qa=Ia("string"),$a=Ia("function"),Ka=Ia("number"),Va=e=>null!==e&&"object"==typeof e,Za=e=>{if("object"!==Fa(e))return!1;const t=_a(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||qa in e||La in e)},er=Ga("Date"),tr=Ga("File"),nr=Ga("Blob"),ar=Ga("FileList"),rr=Ga("URLSearchParams"),[ir,or,sr,ur]=["ReadableStream","Request","Response","Headers"].map(Ga);function dr(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let a,r;if("object"!=typeof e&&(e=[e]),Xa(e))for(a=0,r=e.length;a0;)if(a=n[r],t===a.toLowerCase())return a;return null}const lr="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,hr=e=>!Ya(e)&&e!==lr,mr=(gr="undefined"!=typeof Uint8Array&&_a(Uint8Array),e=>gr&&e instanceof gr);var gr;const fr=Ga("HTMLFormElement"),pr=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),br=Ga("RegExp"),wr=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),a={};dr(n,(n,r)=>{let i;!1!==(i=t(n,r,e))&&(a[r]=i||n)}),Object.defineProperties(e,a)},yr=Ga("AsyncFunction"),vr=(Mr="function"==typeof setImmediate,kr=$a(lr.postMessage),Mr?setImmediate:kr?(xr=`axios@${Math.random()}`,Pr=[],lr.addEventListener("message",({source:e,data:t})=>{e===lr&&t===xr&&Pr.length&&Pr.shift()()},!1),e=>{Pr.push(e),lr.postMessage(xr,"*")}):e=>setTimeout(e));var Mr,kr,xr,Pr;const Sr="undefined"!=typeof queueMicrotask?queueMicrotask.bind(lr):"undefined"!=typeof process&&process.nextTick||vr,Tr={isArray:Xa,isArrayBuffer:Ja,isBuffer:Ua,isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||$a(e.append)&&("formdata"===(t=Fa(e))||"object"===t&&$a(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&Ja(e.buffer),t},isString:Qa,isNumber:Ka,isBoolean:e=>!0===e||!1===e,isObject:Va,isPlainObject:Za,isEmptyObject:e=>{if(!Va(e)||Ua(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(t){return!1}},isReadableStream:ir,isRequest:or,isResponse:sr,isHeaders:ur,isUndefined:Ya,isDate:er,isFile:tr,isBlob:nr,isRegExp:br,isFunction:$a,isStream:e=>Va(e)&&$a(e.pipe),isURLSearchParams:rr,isTypedArray:mr,isFileList:ar,forEach:dr,merge:function e(){const{caseless:t}=hr(this)&&this||{},n={},a=(a,r)=>{const i=t&&cr(n,r)||r;Za(n[i])&&Za(a)?n[i]=e(n[i],a):Za(a)?n[i]=e({},a):Xa(a)?n[i]=a.slice():n[i]=a};for(let r=0,i=arguments.length;r(dr(t,(t,a)=>{n&&$a(t)?e[a]=Ha(t,n):e[a]=t},{allOwnKeys:a}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,a)=>{e.prototype=Object.create(t.prototype,a),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,a)=>{let r,i,o;const s={};if(t=t||{},null==e)return t;do{for(r=Object.getOwnPropertyNames(e),i=r.length;i-- >0;)o=r[i],a&&!a(o,e,t)||s[o]||(t[o]=e[o],s[o]=!0);e=!1!==n&&_a(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:Fa,kindOfTest:Ga,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const a=e.indexOf(t,n);return-1!==a&&a===n},toArray:e=>{if(!e)return null;if(Xa(e))return e;let t=e.length;if(!Ka(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[La]).call(e);let a;for(;(a=n.next())&&!a.done;){const n=a.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const a=[];for(;null!==(n=e.exec(t));)a.push(n);return a},isHTMLForm:fr,hasOwnProperty:pr,hasOwnProp:pr,reduceDescriptors:wr,freezeMethods:e=>{wr(e,(t,n)=>{if($a(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const a=e[n];$a(a)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))})},toObjectSet:(e,t)=>{const n={},a=e=>{e.forEach(e=>{n[e]=!0})};return Xa(e)?a(e):a(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n}),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:cr,global:lr,isContextDefined:hr,isSpecCompliantForm:function(e){return!!(e&&$a(e.append)&&"FormData"===e[qa]&&e[La])},toJSONObject:e=>{const t=new Array(10),n=(e,a)=>{if(Va(e)){if(t.indexOf(e)>=0)return;if(Ua(e))return e;if(!("toJSON"in e)){t[a]=e;const r=Xa(e)?[]:{};return dr(e,(e,t)=>{const i=n(e,a+1);!Ya(i)&&(r[t]=i)}),t[a]=void 0,r}}return e};return n(e,0)},isAsyncFn:yr,isThenable:e=>e&&(Va(e)||$a(e))&&$a(e.then)&&$a(e.catch),setImmediate:vr,asap:Sr,isIterable:e=>null!=e&&$a(e[La])};function Er(e,t,n,a,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),a&&(this.request=a),r&&(this.response=r,this.status=r.status?r.status:null)}Tr.inherits(Er,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Tr.toJSONObject(this.config),code:this.code,status:this.status}}});const Nr=Er.prototype,Wr={};function Or(e){return Tr.isPlainObject(e)||Tr.isArray(e)}function Cr(e){return Tr.endsWith(e,"[]")?e.slice(0,-2):e}function jr(e,t,n){return e?e.concat(t).map(function(e,t){return e=Cr(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Wr[e]={value:e}}),Object.defineProperties(Er,Wr),Object.defineProperty(Nr,"isAxiosError",{value:!0}),Er.from=(e,t,n,a,r,i)=>{const o=Object.create(Nr);return Tr.toFlatObject(e,o,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e),Er.call(o,e.message,t,n,a,r),o.cause=e,o.name=e.name,i&&Object.assign(o,i),o};const Ar=Tr.toFlatObject(Tr,{},null,function(e){return/^is[A-Z]/.test(e)});function Rr(e,t,n){if(!Tr.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=Tr.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!Tr.isUndefined(t[e])});const a=n.metaTokens,r=n.visitor||d,i=n.dots,o=n.indexes,s=(n.Blob||"undefined"!=typeof Blob&&Blob)&&Tr.isSpecCompliantForm(t);if(!Tr.isFunction(r))throw new TypeError("visitor must be a function");function u(e){if(null===e)return"";if(Tr.isDate(e))return e.toISOString();if(Tr.isBoolean(e))return e.toString();if(!s&&Tr.isBlob(e))throw new Er("Blob is not supported. Use a Buffer instead.");return Tr.isArrayBuffer(e)||Tr.isTypedArray(e)?s&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,n,r){let s=e;if(e&&!r&&"object"==typeof e)if(Tr.endsWith(n,"{}"))n=a?n:n.slice(0,-2),e=JSON.stringify(e);else if(Tr.isArray(e)&&function(e){return Tr.isArray(e)&&!e.some(Or)}(e)||(Tr.isFileList(e)||Tr.endsWith(n,"[]"))&&(s=Tr.toArray(e)))return n=Cr(n),s.forEach(function(e,a){!Tr.isUndefined(e)&&null!==e&&t.append(!0===o?jr([n],a,i):null===o?n:n+"[]",u(e))}),!1;return!!Or(e)||(t.append(jr(r,n,i),u(e)),!1)}const c=[],l=Object.assign(Ar,{defaultVisitor:d,convertValue:u,isVisitable:Or});if(!Tr.isObject(e))throw new TypeError("data must be an object");return function e(n,a){if(!Tr.isUndefined(n)){if(-1!==c.indexOf(n))throw Error("Circular reference detected in "+a.join("."));c.push(n),Tr.forEach(n,function(n,i){!0===(!(Tr.isUndefined(n)||null===n)&&r.call(t,n,Tr.isString(i)?i.trim():i,a,l))&&e(n,a?a.concat(i):[i])}),c.pop()}}(e),t}function Dr(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function Hr(e,t){this._pairs=[],e&&Rr(e,this,t)}const zr=Hr.prototype;function _r(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Lr(e,t,n){if(!t)return e;const a=n&&n.encode||_r;Tr.isFunction(n)&&(n={serialize:n});const r=n&&n.serialize;let i;if(i=r?r(t,n):Tr.isURLSearchParams(t)?t.toString():new Hr(t,n).toString(a),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}zr.append=function(e,t){this._pairs.push([e,t])},zr.toString=function(e){const t=e?function(t){return e.call(this,t,Dr)}:Dr;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};class qr{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Tr.forEach(this.handlers,function(t){null!==t&&e(t)})}}const Fr={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Br={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Hr,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},Gr="undefined"!=typeof window&&"undefined"!=typeof document,Ir="object"==typeof navigator&&navigator||void 0,Xr=Gr&&(!Ir||["ReactNative","NativeScript","NS"].indexOf(Ir.product)<0),Yr="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Ur=Gr&&window.location.href||"http://localhost",Jr={...Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Gr,hasStandardBrowserEnv:Xr,hasStandardBrowserWebWorkerEnv:Yr,navigator:Ir,origin:Ur},Symbol.toStringTag,{value:"Module"})),...Br};function Qr(e){function t(e,n,a,r){let i=e[r++];if("__proto__"===i)return!0;const o=Number.isFinite(+i),s=r>=e.length;return i=!i&&Tr.isArray(a)?a.length:i,s?(Tr.hasOwnProp(a,i)?a[i]=[a[i],n]:a[i]=n,!o):(a[i]&&Tr.isObject(a[i])||(a[i]=[]),t(e,n,a[i],r)&&Tr.isArray(a[i])&&(a[i]=function(e){const t={},n=Object.keys(e);let a;const r=n.length;let i;for(a=0;a{t(function(e){return Tr.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),a,n,0)}),n}return null}const $r={transitional:Fr,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",a=n.indexOf("application/json")>-1,r=Tr.isObject(e);if(r&&Tr.isHTMLForm(e)&&(e=new FormData(e)),Tr.isFormData(e))return a?JSON.stringify(Qr(e)):e;if(Tr.isArrayBuffer(e)||Tr.isBuffer(e)||Tr.isStream(e)||Tr.isFile(e)||Tr.isBlob(e)||Tr.isReadableStream(e))return e;if(Tr.isArrayBufferView(e))return e.buffer;if(Tr.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let i;if(r){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Rr(e,new Jr.classes.URLSearchParams,{visitor:function(e,t,n,a){return Jr.isNode&&Tr.isBuffer(e)?(this.append(t,e.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)},...t})}(e,this.formSerializer).toString();if((i=Tr.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Rr(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return r||a?(t.setContentType("application/json",!1),function(e,t,n){if(Tr.isString(e))try{return(t||JSON.parse)(e),Tr.trim(e)}catch(a){if("SyntaxError"!==a.name)throw a}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||$r.transitional,n=t&&t.forcedJSONParsing,a="json"===this.responseType;if(Tr.isResponse(e)||Tr.isReadableStream(e))return e;if(e&&Tr.isString(e)&&(n&&!this.responseType||a)){const n=!(t&&t.silentJSONParsing)&&a;try{return JSON.parse(e)}catch(r){if(n){if("SyntaxError"===r.name)throw Er.from(r,Er.ERR_BAD_RESPONSE,this,null,this.response);throw r}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Jr.classes.FormData,Blob:Jr.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Tr.forEach(["delete","get","head","post","put","patch"],e=>{$r.headers[e]={}});const Kr=Tr.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Vr=Symbol("internals");function Zr(e){return e&&String(e).trim().toLowerCase()}function ei(e){return!1===e||null==e?e:Tr.isArray(e)?e.map(ei):String(e)}function ti(e,t,n,a,r){return Tr.isFunction(a)?a.call(this,t,n):(r&&(t=n),Tr.isString(t)?Tr.isString(a)?-1!==t.indexOf(a):Tr.isRegExp(a)?a.test(t):void 0:void 0)}let ni=class{constructor(e){e&&this.set(e)}set(e,t,n){const a=this;function r(e,t,n){const r=Zr(t);if(!r)throw new Error("header name must be a non-empty string");const i=Tr.findKey(a,r);(!i||void 0===a[i]||!0===n||void 0===n&&!1!==a[i])&&(a[i||t]=ei(e))}const i=(e,t)=>Tr.forEach(e,(e,n)=>r(e,n,t));if(Tr.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(Tr.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i((e=>{const t={};let n,a,r;return e&&e.split("\n").forEach(function(e){r=e.indexOf(":"),n=e.substring(0,r).trim().toLowerCase(),a=e.substring(r+1).trim(),!n||t[n]&&Kr[n]||("set-cookie"===n?t[n]?t[n].push(a):t[n]=[a]:t[n]=t[n]?t[n]+", "+a:a)}),t})(e),t);else if(Tr.isObject(e)&&Tr.isIterable(e)){let n,a,r={};for(const t of e){if(!Tr.isArray(t))throw TypeError("Object iterator must return a key-value pair");r[a=t[0]]=(n=r[a])?Tr.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}i(r,t)}else null!=e&&r(t,e,n);return this}get(e,t){if(e=Zr(e)){const n=Tr.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let a;for(;a=n.exec(e);)t[a[1]]=a[2];return t}(e);if(Tr.isFunction(t))return t.call(this,e,n);if(Tr.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Zr(e)){const n=Tr.findKey(this,e);return!(!n||void 0===this[n]||t&&!ti(0,this[n],n,t))}return!1}delete(e,t){const n=this;let a=!1;function r(e){if(e=Zr(e)){const r=Tr.findKey(n,e);!r||t&&!ti(0,n[r],r,t)||(delete n[r],a=!0)}}return Tr.isArray(e)?e.forEach(r):r(e),a}clear(e){const t=Object.keys(this);let n=t.length,a=!1;for(;n--;){const r=t[n];e&&!ti(0,this[r],r,e,!0)||(delete this[r],a=!0)}return a}normalize(e){const t=this,n={};return Tr.forEach(this,(a,r)=>{const i=Tr.findKey(n,r);if(i)return t[i]=ei(a),void delete t[r];const o=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}(r):String(r).trim();o!==r&&delete t[r],t[o]=ei(a),n[o]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Tr.forEach(this,(n,a)=>{null!=n&&!1!==n&&(t[a]=e&&Tr.isArray(n)?n.join(", "):n)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach(e=>n.set(e)),n}static accessor(e){const t=(this[Vr]=this[Vr]={accessors:{}}).accessors,n=this.prototype;function a(e){const a=Zr(e);t[a]||(function(e,t){const n=Tr.toCamelCase(" "+t);["get","set","has"].forEach(a=>{Object.defineProperty(e,a+n,{value:function(e,n,r){return this[a].call(this,t,e,n,r)},configurable:!0})})}(n,e),t[a]=!0)}return Tr.isArray(e)?e.forEach(a):a(e),this}};function ai(e,t){const n=this||$r,a=t||n,r=ni.from(a.headers);let i=a.data;return Tr.forEach(e,function(e){i=e.call(n,i,r.normalize(),t?t.status:void 0)}),r.normalize(),i}function ri(e){return!(!e||!e.__CANCEL__)}function ii(e,t,n){Er.call(this,null==e?"canceled":e,Er.ERR_CANCELED,t,n),this.name="CanceledError"}function oi(e,t,n){const a=n.config.validateStatus;n.status&&a&&!a(n.status)?t(new Er("Request failed with status code "+n.status,[Er.ERR_BAD_REQUEST,Er.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}ni.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Tr.reduceDescriptors(ni.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),Tr.freezeMethods(ni),Tr.inherits(ii,Er,{__CANCEL__:!0});const si=(e,t,n=3)=>{let a=0;const r=function(e,t){e=e||10;const n=new Array(e),a=new Array(e);let r,i=0,o=0;return t=void 0!==t?t:1e3,function(s){const u=Date.now(),d=a[o];r||(r=u),n[i]=s,a[i]=u;let c=o,l=0;for(;c!==i;)l+=n[c++],c%=e;if(i=(i+1)%e,i===o&&(o=(o+1)%e),u-r{r=i,n=null,a&&(clearTimeout(a),a=null),e(...t)};return[(...e)=>{const t=Date.now(),s=t-r;s>=i?o(e,t):(n=e,a||(a=setTimeout(()=>{a=null,o(n)},i-s)))},()=>n&&o(n)]}(n=>{const i=n.loaded,o=n.lengthComputable?n.total:void 0,s=i-a,u=r(s);a=i,e({loaded:i,total:o,progress:o?i/o:void 0,bytes:s,rate:u||void 0,estimated:u&&o&&i<=o?(o-i)/u:void 0,event:n,lengthComputable:null!=o,[t?"download":"upload"]:!0})},n)},ui=(e,t)=>{const n=null!=e;return[a=>t[0]({lengthComputable:n,total:e,loaded:a}),t[1]]},di=e=>(...t)=>Tr.asap(()=>e(...t)),ci=Jr.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,Jr.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(Jr.origin),Jr.navigator&&/(msie|trident)/i.test(Jr.navigator.userAgent)):()=>!0,li=Jr.hasStandardBrowserEnv?{write(e,t,n,a,r,i){const o=[e+"="+encodeURIComponent(t)];Tr.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),Tr.isString(a)&&o.push("path="+a),Tr.isString(r)&&o.push("domain="+r),!0===i&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function hi(e,t,n){let a=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e&&(a||0==n)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const mi=e=>e instanceof ni?{...e}:e;function gi(e,t){t=t||{};const n={};function a(e,t,n,a){return Tr.isPlainObject(e)&&Tr.isPlainObject(t)?Tr.merge.call({caseless:a},e,t):Tr.isPlainObject(t)?Tr.merge({},t):Tr.isArray(t)?t.slice():t}function r(e,t,n,r){return Tr.isUndefined(t)?Tr.isUndefined(e)?void 0:a(void 0,e,0,r):a(e,t,0,r)}function i(e,t){if(!Tr.isUndefined(t))return a(void 0,t)}function o(e,t){return Tr.isUndefined(t)?Tr.isUndefined(e)?void 0:a(void 0,e):a(void 0,t)}function s(n,r,i){return i in t?a(n,r):i in e?a(void 0,n):void 0}const u={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:s,headers:(e,t,n)=>r(mi(e),mi(t),0,!0)};return Tr.forEach(Object.keys({...e,...t}),function(a){const i=u[a]||r,o=i(e[a],t[a],a);Tr.isUndefined(o)&&i!==s||(n[a]=o)}),n}const fi=e=>{const t=gi({},e);let n,{data:a,withXSRFToken:r,xsrfHeaderName:i,xsrfCookieName:o,headers:s,auth:u}=t;if(t.headers=s=ni.from(s),t.url=Lr(hi(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),u&&s.set("Authorization","Basic "+btoa((u.username||"")+":"+(u.password?unescape(encodeURIComponent(u.password)):""))),Tr.isFormData(a))if(Jr.hasStandardBrowserEnv||Jr.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(!1!==(n=s.getContentType())){const[e,...t]=n?n.split(";").map(e=>e.trim()).filter(Boolean):[];s.setContentType([e||"multipart/form-data",...t].join("; "))}if(Jr.hasStandardBrowserEnv&&(r&&Tr.isFunction(r)&&(r=r(t)),r||!1!==r&&ci(t.url))){const e=i&&o&&li.read(o);e&&s.set(i,e)}return t},pi="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,n){const a=fi(e);let r=a.data;const i=ni.from(a.headers).normalize();let o,s,u,d,c,{responseType:l,onUploadProgress:h,onDownloadProgress:m}=a;function g(){d&&d(),c&&c(),a.cancelToken&&a.cancelToken.unsubscribe(o),a.signal&&a.signal.removeEventListener("abort",o)}let f=new XMLHttpRequest;function p(){if(!f)return;const a=ni.from("getAllResponseHeaders"in f&&f.getAllResponseHeaders());oi(function(e){t(e),g()},function(e){n(e),g()},{data:l&&"text"!==l&&"json"!==l?f.response:f.responseText,status:f.status,statusText:f.statusText,headers:a,config:e,request:f}),f=null}f.open(a.method.toUpperCase(),a.url,!0),f.timeout=a.timeout,"onloadend"in f?f.onloadend=p:f.onreadystatechange=function(){f&&4===f.readyState&&(0!==f.status||f.responseURL&&0===f.responseURL.indexOf("file:"))&&setTimeout(p)},f.onabort=function(){f&&(n(new Er("Request aborted",Er.ECONNABORTED,e,f)),f=null)},f.onerror=function(){n(new Er("Network Error",Er.ERR_NETWORK,e,f)),f=null},f.ontimeout=function(){let t=a.timeout?"timeout of "+a.timeout+"ms exceeded":"timeout exceeded";const r=a.transitional||Fr;a.timeoutErrorMessage&&(t=a.timeoutErrorMessage),n(new Er(t,r.clarifyTimeoutError?Er.ETIMEDOUT:Er.ECONNABORTED,e,f)),f=null},void 0===r&&i.setContentType(null),"setRequestHeader"in f&&Tr.forEach(i.toJSON(),function(e,t){f.setRequestHeader(t,e)}),Tr.isUndefined(a.withCredentials)||(f.withCredentials=!!a.withCredentials),l&&"json"!==l&&(f.responseType=a.responseType),m&&([u,c]=si(m,!0),f.addEventListener("progress",u)),h&&f.upload&&([s,d]=si(h),f.upload.addEventListener("progress",s),f.upload.addEventListener("loadend",d)),(a.cancelToken||a.signal)&&(o=t=>{f&&(n(!t||t.type?new ii(null,e,f):t),f.abort(),f=null)},a.cancelToken&&a.cancelToken.subscribe(o),a.signal&&(a.signal.aborted?o():a.signal.addEventListener("abort",o)));const b=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(a.url);b&&-1===Jr.protocols.indexOf(b)?n(new Er("Unsupported protocol "+b+":",Er.ERR_BAD_REQUEST,e)):f.send(r||null)})},bi=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,a=new AbortController;const r=function(e){if(!n){n=!0,o();const t=e instanceof Error?e:this.reason;a.abort(t instanceof Er?t:new ii(t instanceof Error?t.message:t))}};let i=t&&setTimeout(()=>{i=null,r(new Er(`timeout ${t} of ms exceeded`,Er.ETIMEDOUT))},t);const o=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(r):e.removeEventListener("abort",r)}),e=null)};e.forEach(e=>e.addEventListener("abort",r));const{signal:s}=a;return s.unsubscribe=()=>Tr.asap(o),s}},wi=function*(e,t){let n=e.byteLength;if(n{const r=async function*(e,t){for await(const n of yi(e))yield*wi(n,t)}(e,t);let i,o=0,s=e=>{i||(i=!0,a&&a(e))};return new ReadableStream({async pull(e){try{const{done:t,value:a}=await r.next();if(t)return s(),void e.close();let i=a.byteLength;if(n){let e=o+=i;n(e)}e.enqueue(new Uint8Array(a))}catch(t){throw s(t),t}},cancel:e=>(s(e),r.return())},{highWaterMark:2})},Mi="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,ki=Mi&&"function"==typeof ReadableStream,xi=Mi&&("function"==typeof TextEncoder?(Pi=new TextEncoder,e=>Pi.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Pi;const Si=(e,...t)=>{try{return!!e(...t)}catch(n){return!1}},Ti=ki&&Si(()=>{let e=!1;const t=new Request(Jr.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),Ei=ki&&Si(()=>Tr.isReadableStream(new Response("").body)),Ni={stream:Ei&&(e=>e.body)};var Wi;Mi&&(Wi=new Response,["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!Ni[e]&&(Ni[e]=Tr.isFunction(Wi[e])?t=>t[e]():(t,n)=>{throw new Er(`Response type '${e}' is not supported`,Er.ERR_NOT_SUPPORT,n)})}));const Oi=async(e,t)=>{const n=Tr.toFiniteNumber(e.getContentLength());return null==n?(async e=>{if(null==e)return 0;if(Tr.isBlob(e))return e.size;if(Tr.isSpecCompliantForm(e)){const t=new Request(Jr.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return Tr.isArrayBufferView(e)||Tr.isArrayBuffer(e)?e.byteLength:(Tr.isURLSearchParams(e)&&(e+=""),Tr.isString(e)?(await xi(e)).byteLength:void 0)})(t):n},Ci={http:null,xhr:pi,fetch:Mi&&(async e=>{let{url:t,method:n,data:a,signal:r,cancelToken:i,timeout:o,onDownloadProgress:s,onUploadProgress:u,responseType:d,headers:c,withCredentials:l="same-origin",fetchOptions:h}=fi(e);d=d?(d+"").toLowerCase():"text";let m,g=bi([r,i&&i.toAbortSignal()],o);const f=g&&g.unsubscribe&&(()=>{g.unsubscribe()});let p;try{if(u&&Ti&&"get"!==n&&"head"!==n&&0!==(p=await Oi(c,a))){let e,n=new Request(t,{method:"POST",body:a,duplex:"half"});if(Tr.isFormData(a)&&(e=n.headers.get("content-type"))&&c.setContentType(e),n.body){const[e,t]=ui(p,si(di(u)));a=vi(n.body,65536,e,t)}}Tr.isString(l)||(l=l?"include":"omit");const r="credentials"in Request.prototype;m=new Request(t,{...h,signal:g,method:n.toUpperCase(),headers:c.normalize().toJSON(),body:a,duplex:"half",credentials:r?l:void 0});let i=await fetch(m,h);const o=Ei&&("stream"===d||"response"===d);if(Ei&&(s||o&&f)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=i[t]});const t=Tr.toFiniteNumber(i.headers.get("content-length")),[n,a]=s&&ui(t,si(di(s),!0))||[];i=new Response(vi(i.body,65536,n,()=>{a&&a(),f&&f()}),e)}d=d||"text";let b=await Ni[Tr.findKey(Ni,d)||"text"](i,e);return!o&&f&&f(),await new Promise((t,n)=>{oi(t,n,{data:b,headers:ni.from(i.headers),status:i.status,statusText:i.statusText,config:e,request:m})})}catch(b){if(f&&f(),b&&"TypeError"===b.name&&/Load failed|fetch/i.test(b.message))throw Object.assign(new Er("Network Error",Er.ERR_NETWORK,e,m),{cause:b.cause||b});throw Er.from(b,b&&b.code,e,m)}})};Tr.forEach(Ci,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(n){}Object.defineProperty(e,"adapterName",{value:t})}});const ji=e=>`- ${e}`,Ai=e=>Tr.isFunction(e)||null===e||!1===e,Ri=e=>{e=Tr.isArray(e)?e:[e];const{length:t}=e;let n,a;const r={};for(let i=0;i`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));throw new Er("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(ji).join("\n"):" "+ji(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return a};function Di(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ii(null,e)}function Hi(e){return Di(e),e.headers=ni.from(e.headers),e.data=ai.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Ri(e.adapter||$r.adapter)(e).then(function(t){return Di(e),t.data=ai.call(e,e.transformResponse,t),t.headers=ni.from(t.headers),t},function(t){return ri(t)||(Di(e),t&&t.response&&(t.response.data=ai.call(e,e.transformResponse,t.response),t.response.headers=ni.from(t.response.headers))),Promise.reject(t)})}const zi="1.11.0",_i={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{_i[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const Li={};_i.transitional=function(e,t,n){function a(e,t){return"[Axios v"+zi+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,r,i)=>{if(!1===e)throw new Er(a(r," has been removed"+(t?" in "+t:"")),Er.ERR_DEPRECATED);return t&&!Li[r]&&(Li[r]=!0,console.warn(a(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,i)}},_i.spelling=function(e){return(t,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};const qi={assertOptions:function(e,t,n){if("object"!=typeof e)throw new Er("options must be an object",Er.ERR_BAD_OPTION_VALUE);const a=Object.keys(e);let r=a.length;for(;r-- >0;){const i=a[r],o=t[i];if(o){const t=e[i],n=void 0===t||o(t,i,e);if(!0!==n)throw new Er("option "+i+" must be "+n,Er.ERR_BAD_OPTION_VALUE);continue}if(!0!==n)throw new Er("Unknown option "+i,Er.ERR_BAD_OPTION)}},validators:_i},Fi=qi.validators;let Bi=class{constructor(e){this.defaults=e||{},this.interceptors={request:new qr,response:new qr}}async request(e,t){try{return await this._request(e,t)}catch(n){if(n instanceof Error){let e={};Error.captureStackTrace?Error.captureStackTrace(e):e=new Error;const t=e.stack?e.stack.replace(/^.+\n/,""):"";try{n.stack?t&&!String(n.stack).endsWith(t.replace(/^.+\n.+\n/,""))&&(n.stack+="\n"+t):n.stack=t}catch(a){}}throw n}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=gi(this.defaults,t);const{transitional:n,paramsSerializer:a,headers:r}=t;void 0!==n&&qi.assertOptions(n,{silentJSONParsing:Fi.transitional(Fi.boolean),forcedJSONParsing:Fi.transitional(Fi.boolean),clarifyTimeoutError:Fi.transitional(Fi.boolean)},!1),null!=a&&(Tr.isFunction(a)?t.paramsSerializer={serialize:a}:qi.assertOptions(a,{encode:Fi.function,serialize:Fi.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),qi.assertOptions(t,{baseUrl:Fi.spelling("baseURL"),withXsrfToken:Fi.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let i=r&&Tr.merge(r.common,r[t.method]);r&&Tr.forEach(["delete","get","head","post","put","patch","common"],e=>{delete r[e]}),t.headers=ni.concat(i,r);const o=[];let s=!0;this.interceptors.request.forEach(function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,o.unshift(e.fulfilled,e.rejected))});const u=[];let d;this.interceptors.response.forEach(function(e){u.push(e.fulfilled,e.rejected)});let c,l=0;if(!s){const e=[Hi.bind(this),void 0];for(e.unshift(...o),e.push(...u),c=e.length,d=Promise.resolve(t);l{Gi[t]=e});const Ii=e("_",function e(t){const n=new Bi(t),a=Ha(Bi.prototype.request,n);return Tr.extend(a,Bi.prototype,n,{allOwnKeys:!0}),Tr.extend(a,n,null,{allOwnKeys:!0}),a.create=function(n){return e(gi(t,n))},a}($r));Ii.Axios=Bi,Ii.CanceledError=ii,Ii.CancelToken=class e{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise(function(e){t=e});const n=this;this.promise.then(e=>{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t;const a=new Promise(e=>{n.subscribe(e),t=e}).then(e);return a.cancel=function(){n.unsubscribe(t)},a},e(function(e,a,r){n.reason||(n.reason=new ii(e,a,r),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let t;return{token:new e(function(e){t=e}),cancel:t}}},Ii.isCancel=ri,Ii.VERSION=zi,Ii.toFormData=Rr,Ii.AxiosError=Er,Ii.Cancel=Ii.CanceledError,Ii.all=function(e){return Promise.all(e)},Ii.spread=function(e){return function(t){return e.apply(null,t)}},Ii.isAxiosError=function(e){return Tr.isObject(e)&&!0===e.isAxiosError},Ii.mergeConfig=gi,Ii.AxiosHeaders=ni,Ii.formToJSON=e=>Qr(Tr.isHTMLForm(e)?new FormData(e):e),Ii.getAdapter=Ri,Ii.HttpStatusCode=Gi,Ii.default=Ii;const{Axios:Xi,AxiosError:Yi,CanceledError:Ui,isCancel:Ji,CancelToken:Qi,VERSION:$i,all:Ki,Cancel:Vi,isAxiosError:Zi,spread:eo,toFormData:to,AxiosHeaders:no,HttpStatusCode:ao,formToJSON:ro,getAdapter:io,mergeConfig:oo}=Ii;var so={exports:{}}; /* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress * @license MIT */ -!function(e){e.exports=function(){var e,t,n={version:"0.2.0"},a=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function r(e,t,n){return en?n:e}function i(e){return 100*(-1+e)}function o(e,t,n){var r;return(r="translate3d"===a.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===a.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"}).transition="all "+t+"ms "+n,r}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(a[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=r(e,a.minimum,1),n.status=1===e?null:e;var i=n.render(!t),d=i.querySelector(a.barSelector),c=a.speed,l=a.easing;return i.offsetWidth,s(function(t){""===a.positionUsing&&(a.positionUsing=n.getPositioningCSS()),u(d,o(e,c,l)),1===e?(u(i,{transition:"none",opacity:1}),i.offsetWidth,setTimeout(function(){u(i,{transition:"all "+c+"ms linear",opacity:0}),setTimeout(function(){n.remove(),t()},c)},c)):setTimeout(t,c)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout(function(){n.status&&(n.trickle(),e())},a.trickleSpeed)};return a.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*r(Math.random()*t,.1,.95)),t=r(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*a.trickleRate)},e=0,t=0,n.promise=function(a){return a&&"resolved"!==a.state()?(0===t&&n.start(),e++,t++,a.always(function(){0===--t?(e=0,n.done()):n.set((e-t)/e)}),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=a.template;var r,o=t.querySelector(a.barSelector),s=e?"-100":i(n.status||0),d=document.querySelector(a.parent);return u(o,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),a.showSpinner||(r=t.querySelector(a.spinnerSelector))&&m(r),d!=document.body&&c(d,"nprogress-custom-parent"),d.appendChild(t),t},n.remove=function(){l(document.documentElement,"nprogress-busy"),l(document.querySelector(a.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&m(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),u=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})}function a(t){var n=document.body.style;if(t in n)return t;for(var a,r=e.length,i=t.charAt(0).toUpperCase()+t.slice(1);r--;)if((a=e[r]+i)in n)return a;return t}function r(e){return e=n(e),t[e]||(t[e]=a(e))}function i(e,t,n){t=r(t),e.style[t]=n}return function(e,t){var n,a,r=arguments;if(2==r.length)for(n in t)void 0!==(a=t[n])&&t.hasOwnProperty(n)&&i(e,n,a);else i(e,r[1],r[2])}}();function d(e,t){return("string"==typeof e?e:h(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=h(e),a=n+t;d(n,t)||(e.className=a.substring(1))}function l(e,t){var n,a=h(e);d(e,t)&&(n=a.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function h(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function m(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n}()}(uo),e("a2",n(uo.exports))}}}); +!function(e){e.exports=function(){var e,t,n={version:"0.2.0"},a=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function r(e,t,n){return en?n:e}function i(e){return 100*(-1+e)}function o(e,t,n){var r;return(r="translate3d"===a.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===a.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"}).transition="all "+t+"ms "+n,r}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(a[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=r(e,a.minimum,1),n.status=1===e?null:e;var i=n.render(!t),d=i.querySelector(a.barSelector),c=a.speed,l=a.easing;return i.offsetWidth,s(function(t){""===a.positionUsing&&(a.positionUsing=n.getPositioningCSS()),u(d,o(e,c,l)),1===e?(u(i,{transition:"none",opacity:1}),i.offsetWidth,setTimeout(function(){u(i,{transition:"all "+c+"ms linear",opacity:0}),setTimeout(function(){n.remove(),t()},c)},c)):setTimeout(t,c)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout(function(){n.status&&(n.trickle(),e())},a.trickleSpeed)};return a.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*r(Math.random()*t,.1,.95)),t=r(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*a.trickleRate)},e=0,t=0,n.promise=function(a){return a&&"resolved"!==a.state()?(0===t&&n.start(),e++,t++,a.always(function(){0===--t?(e=0,n.done()):n.set((e-t)/e)}),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=a.template;var r,o=t.querySelector(a.barSelector),s=e?"-100":i(n.status||0),d=document.querySelector(a.parent);return u(o,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),a.showSpinner||(r=t.querySelector(a.spinnerSelector))&&m(r),d!=document.body&&c(d,"nprogress-custom-parent"),d.appendChild(t),t},n.remove=function(){l(document.documentElement,"nprogress-busy"),l(document.querySelector(a.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&m(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),u=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})}function a(t){var n=document.body.style;if(t in n)return t;for(var a,r=e.length,i=t.charAt(0).toUpperCase()+t.slice(1);r--;)if((a=e[r]+i)in n)return a;return t}function r(e){return e=n(e),t[e]||(t[e]=a(e))}function i(e,t,n){t=r(t),e.style[t]=n}return function(e,t){var n,a,r=arguments;if(2==r.length)for(n in t)void 0!==(a=t[n])&&t.hasOwnProperty(n)&&i(e,n,a);else i(e,r[1],r[2])}}();function d(e,t){return("string"==typeof e?e:h(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=h(e),a=n+t;d(n,t)||(e.className=a.substring(1))}function l(e,t){var n,a=h(e);d(e,t)&&(n=a.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function h(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function m(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n}()}(so),e("a0",n(so.exports))}}}); diff --git a/BTPanel/static/vite/js/common.js b/BTPanel/static/vite/js/common.js index 4b36628d..b7b07ea4 100644 --- a/BTPanel/static/vite/js/common.js +++ b/BTPanel/static/vite/js/common.js @@ -1 +1 @@ -var e=Object.defineProperty,t=(t,n,a)=>((t,n,a)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[n]=a)(t,"symbol"!=typeof n?n+"":n,a);import{g as n,c as a}from"./__commonjsHelpers__.js?v=1760428868419";function r(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const n=e[t],a=typeof n;"object"!==a&&"function"!==a||Object.isFrozen(n)||r(n)}),e}let i=class{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function o(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function s(e,...t){const n=Object.create(null);for(const a in e)n[a]=e[a];return t.forEach(function(e){for(const t in e)n[t]=e[t]}),n}const u=e=>!!e.scope;class d{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=o(e)}openNode(e){if(!u(e))return;const t=((e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return["".concat(t).concat(n.shift()),...n.map((e,t)=>"".concat(e).concat("_".repeat(t+1)))].join(" ")}return"".concat(t).concat(e)})(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){u(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){this.buffer+='')}}const c=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class l{constructor(){this.rootNode=c(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t=c({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(e=>"string"==typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{l._collapse(e)}))}}class h extends l{constructor(e){super(),this.options=e}addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){const n=e.root;t&&(n.scope="language:".concat(t)),this.add(n)}toHTML(){return new d(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function m(e){return e?"string"==typeof e?e:e.source:null}function g(e){return b("(?=",e,")")}function f(e){return b("(?:",e,")*")}function p(e){return b("(?:",e,")?")}function b(...e){return e.map(e=>m(e)).join("")}function w(...e){const t=function(e){const t=e[e.length-1];return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}(e);return"("+(t.capture?"":"?:")+e.map(e=>m(e)).join("|")+")"}function y(e){return new RegExp(e.toString()+"|").exec("").length-1}const v=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function M(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;const t=n;let a=m(e),r="";for(;a.length>0;){const e=v.exec(a);if(!e){r+=a;break}r+=a.substring(0,e.index),a=a.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+String(Number(e[1])+t):(r+=e[0],"("===e[0]&&n++)}return r}).map(e=>"(".concat(e,")")).join(t)}const k="[a-zA-Z]\\w*",x="[a-zA-Z_]\\w*",P="\\b\\d+(\\.\\d+)?",S="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",T="\\b(0b[01]+)",E={begin:"\\\\[\\s\\S]",relevance:0},N={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[E]},W={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[E]},O=function(e,t,n={}){const a=s({scope:"comment",begin:e,end:t,contains:[]},n);a.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const r=w("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return a.contains.push({begin:b(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),a},C=O("//","$"),j=O("/\\*","\\*/"),A=O("#","$"),R={scope:"number",begin:P,relevance:0},D={scope:"number",begin:S,relevance:0},H={scope:"number",begin:T,relevance:0},z={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[E,{begin:/\[/,end:/\]/,relevance:0,contains:[E]}]},_={scope:"title",begin:k,relevance:0},L={scope:"title",begin:x,relevance:0},q={begin:"\\.\\s*"+x,relevance:0};var F=Object.freeze({__proto__:null,APOS_STRING_MODE:N,BACKSLASH_ESCAPE:E,BINARY_NUMBER_MODE:H,BINARY_NUMBER_RE:T,COMMENT:O,C_BLOCK_COMMENT_MODE:j,C_LINE_COMMENT_MODE:C,C_NUMBER_MODE:D,C_NUMBER_RE:S,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},HASH_COMMENT_MODE:A,IDENT_RE:k,MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:q,NUMBER_MODE:R,NUMBER_RE:P,PHRASAL_WORDS_MODE:{begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},QUOTE_STRING_MODE:W,REGEXP_MODE:z,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=b(t,/.*\b/,e.binary,/\b.*/)),s({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},TITLE_MODE:_,UNDERSCORE_IDENT_RE:x,UNDERSCORE_TITLE_MODE:L});function B(e,t){"."===e.input[e.index-1]&&t.ignoreMatch()}function G(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function I(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=B,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function X(e,t){Array.isArray(e.illegal)&&(e.illegal=w(...e.illegal))}function Y(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function U(e,t){void 0===e.relevance&&(e.relevance=1)}const J=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=b(n.beforeMatch,g(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Q=["of","and","for","in","not","or","if","then","parent","list","value"];function K(e,t,n="keyword"){const a=Object.create(null);return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach(function(n){Object.assign(a,K(e[n],t,n))}),a;function r(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach(function(t){const n=t.split("|");a[n[0]]=[e,V(n[0],n[1])]})}}function V(e,t){return t?Number(t):function(e){return Q.includes(e.toLowerCase())}(e)?0:1}const $={},Z=e=>{console.error(e)},ee=(e,...t)=>{console.log("WARN: ".concat(e),...t)},te=(e,t)=>{$["".concat(e,"/").concat(t)]||(console.log("Deprecated as of ".concat(e,". ").concat(t)),$["".concat(e,"/").concat(t)]=!0)},ne=new Error;function ae(e,t,{key:n}){let a=0;const r=e[n],i={},o={};for(let s=1;s<=t.length;s++)o[s+a]=r[s],i[s+a]=!0,a+=y(t[s-1]);e[n]=o,e[n]._emit=i,e[n]._multi=!0}function re(e){!function(e){e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope)}(e),"string"==typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope}),function(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw Z("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),ne;if("object"!=typeof e.beginScope||null===e.beginScope)throw Z("beginScope must be object"),ne;ae(e,e.begin,{key:"beginScope"}),e.begin=M(e.begin,{joinWith:""})}}(e),function(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw Z("skip, excludeEnd, returnEnd not compatible with endScope: {}"),ne;if("object"!=typeof e.endScope||null===e.endScope)throw Z("endScope must be object"),ne;ae(e,e.end,{key:"endScope"}),e.end=M(e.end,{joinWith:""})}}(e)}function ie(e){function t(t,n){return new RegExp(m(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=y(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=t(M(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex((e,t)=>t>0&&void 0!==e),a=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,a)}}class a{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=s(e.classNameAliases||{}),function n(r,i){const o=r;if(r.isCompiled)return o;[G,Y,re,J].forEach(e=>e(r,i)),e.compilerExtensions.forEach(e=>e(r,i)),r.__beforeBegin=null,[I,X,U].forEach(e=>e(r,i)),r.isCompiled=!0;let u=null;return"object"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),u=r.keywords.$pattern,delete r.keywords.$pattern),u=u||/\w+/,r.keywords&&(r.keywords=K(r.keywords,e.case_insensitive)),o.keywordPatternRe=t(u,!0),i&&(r.begin||(r.begin=/\B|\b/),o.beginRe=t(o.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(o.endRe=t(o.end)),o.terminatorEnd=m(o.end)||"",r.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(r.end?"|":"")+i.terminatorEnd)),r.illegal&&(o.illegalRe=t(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map(function(e){return function(e){e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return s(e,{variants:null},t)}));if(e.cachedVariants)return e.cachedVariants;if(oe(e))return s(e,{starts:e.starts?s(e.starts):null});if(Object.isFrozen(e))return s(e);return e}("self"===e?r:e)})),r.contains.forEach(function(e){n(e,o)}),r.starts&&n(r.starts,i),o.matcher=function(e){const t=new a;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:"begin"})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}(o),o}(e)}function oe(e){return!!e&&(e.endsWithParent||oe(e.starts))}class se extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const ue=o,de=s,ce=Symbol("nomatch"),le=function(e){const t=Object.create(null),n=Object.create(null),a=[];let o=!0;const s="Could not find the language '{}', did you forget to load/include a language module?",u={disableAutodetect:!0,name:"Plain text",contains:[]};let d={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:h};function c(e){return d.noHighlightRe.test(e)}function l(e,t,n){let a="",r="";"object"==typeof t?(a=e,n=t.ignoreIllegals,r=t.language):(te("10.7.0","highlight(lang, code, ...args) has been deprecated."),te("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),r=e,a=t),void 0===n&&(n=!0);const i={code:a,language:r};T("before:highlight",i);const o=i.result?i.result:m(i.language,i.code,n);return o.code=i.code,T("after:highlight",o),o}function m(e,n,a,r){const u=Object.create(null);function c(e,t){return e.keywords[t]}function l(){if(!E.keywords)return void W.addText(O);let e=0;E.keywordPatternRe.lastIndex=0;let t=E.keywordPatternRe.exec(O),n="";for(;t;){n+=O.substring(e,t.index);const a=P.case_insensitive?t[0].toLowerCase():t[0],r=c(E,a);if(r){const[e,i]=r;if(W.addText(n),n="",u[a]=(u[a]||0)+1,u[a]<=7&&(C+=i),e.startsWith("_"))n+=t[0];else{const n=P.classNameAliases[e]||e;g(t[0],n)}}else n+=t[0];e=E.keywordPatternRe.lastIndex,t=E.keywordPatternRe.exec(O)}n+=O.substring(e),W.addText(n)}function h(){null!=E.subLanguage?function(){if(""===O)return;let e=null;if("string"==typeof E.subLanguage){if(!t[E.subLanguage])return void W.addText(O);e=m(E.subLanguage,O,!0,N[E.subLanguage]),N[E.subLanguage]=e._top}else e=y(O,E.subLanguage.length?E.subLanguage:null);E.relevance>0&&(C+=e.relevance),W.__addSublanguage(e._emitter,e.language)}():l(),O=""}function g(e,t){""!==e&&(W.startScope(t),W.addText(e),W.endScope())}function f(e,t){let n=1;const a=t.length-1;for(;n<=a;){if(!e._emit[n]){n++;continue}const a=P.classNameAliases[e[n]]||e[n],r=t[n];a?g(r,a):(O=r,l(),O=""),n++}}function p(e,t){return e.scope&&"string"==typeof e.scope&&W.openNode(P.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(g(O,P.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),O=""):e.beginScope._multi&&(f(e.beginScope,t),O="")),E=Object.create(e,{parent:{value:E}}),E}function b(e,t,n){let a=function(e,t){const n=e&&e.exec(t);return n&&0===n.index}(e.endRe,n);if(a){if(e["on:end"]){const n=new i(e);e["on:end"](t,n),n.isMatchIgnored&&(a=!1)}if(a){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return b(e.parent,t,n)}function w(e){return 0===E.matcher.regexIndex?(O+=e[0],1):(R=!0,0)}function v(e){const t=e[0],a=n.substring(e.index),r=b(E,e,a);if(!r)return ce;const i=E;E.endScope&&E.endScope._wrap?(h(),g(t,E.endScope._wrap)):E.endScope&&E.endScope._multi?(h(),f(E.endScope,e)):i.skip?O+=t:(i.returnEnd||i.excludeEnd||(O+=t),h(),i.excludeEnd&&(O=t));do{E.scope&&W.closeNode(),E.skip||E.subLanguage||(C+=E.relevance),E=E.parent}while(E!==r.parent);return r.starts&&p(r.starts,e),i.returnEnd?0:t.length}let M={};function k(t,r){const s=r&&r[0];if(O+=t,null==s)return h(),0;if("begin"===M.type&&"end"===r.type&&M.index===r.index&&""===s){if(O+=n.slice(r.index,r.index+1),!o){const t=new Error("0 width match regex (".concat(e,")"));throw t.languageName=e,t.badRule=M.rule,t}return 1}if(M=r,"begin"===r.type)return function(e){const t=e[0],n=e.rule,a=new i(n),r=[n.__beforeBegin,n["on:begin"]];for(const i of r)if(i&&(i(e,a),a.isMatchIgnored))return w(t);return n.skip?O+=t:(n.excludeBegin&&(O+=t),h(),n.returnBegin||n.excludeBegin||(O=t)),p(n,e),n.returnBegin?0:t.length}(r);if("illegal"===r.type&&!a){const e=new Error('Illegal lexeme "'+s+'" for mode "'+(E.scope||"")+'"');throw e.mode=E,e}if("end"===r.type){const e=v(r);if(e!==ce)return e}if("illegal"===r.type&&""===s)return O+="\n",1;if(A>1e5&&A>3*r.index){throw new Error("potential infinite loop, way more iterations than matches")}return O+=s,s.length}const P=x(e);if(!P)throw Z(s.replace("{}",e)),new Error('Unknown language: "'+e+'"');const S=ie(P);let T="",E=r||S;const N={},W=new d.__emitter(d);!function(){const e=[];for(let t=E;t!==P;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>W.openNode(e))}();let O="",C=0,j=0,A=0,R=!1;try{if(P.__emitTokens)P.__emitTokens(n,W);else{for(E.matcher.considerAll();;){A++,R?R=!1:E.matcher.considerAll(),E.matcher.lastIndex=j;const e=E.matcher.exec(n);if(!e)break;const t=k(n.substring(j,e.index),e);j=e.index+t}k(n.substring(j))}return W.finalize(),T=W.toHTML(),{language:e,value:T,relevance:C,illegal:!1,_emitter:W,_top:E}}catch(D){if(D.message&&D.message.includes("Illegal"))return{language:e,value:ue(n),illegal:!0,relevance:0,_illegalBy:{message:D.message,index:j,context:n.slice(j-100,j+100),mode:D.mode,resultSoFar:T},_emitter:W};if(o)return{language:e,value:ue(n),illegal:!1,relevance:0,errorRaised:D,_emitter:W,_top:E};throw D}}function y(e,n){n=n||d.languages||Object.keys(t);const a=function(e){const t={value:ue(e),illegal:!1,relevance:0,_top:u,_emitter:new d.__emitter(d)};return t._emitter.addText(e),t}(e),r=n.filter(x).filter(S).map(t=>m(t,e,!1));r.unshift(a);const i=r.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(x(e.language).supersetOf===t.language)return 1;if(x(t.language).supersetOf===e.language)return-1}return 0}),[o,s]=i,c=o;return c.secondBest=s,c}function v(e){let t=null;const a=function(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=d.languageDetectRe.exec(t);if(n){const t=x(n[1]);return t||(ee(s.replace("{}",n[1])),ee("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find(e=>c(e)||x(e))}(e);if(c(a))return;if(T("before:highlightElement",{el:e,language:a}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);if(e.children.length>0&&(d.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(e)),d.throwUnescapedHTML)){throw new se("One of your code blocks includes unescaped HTML.",e.innerHTML)}t=e;const r=t.textContent,i=a?l(r,{language:a,ignoreIllegals:!0}):y(r);e.innerHTML=i.value,e.dataset.highlighted="yes",function(e,t,a){const r=t&&n[t]||a;e.classList.add("hljs"),e.classList.add("language-".concat(r))}(e,a,i.language),e.result={language:i.language,re:i.relevance,relevance:i.relevance},i.secondBest&&(e.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance}),T("after:highlightElement",{el:e,result:i,text:r})}let M=!1;function k(){if("loading"===document.readyState)return M||window.addEventListener("DOMContentLoaded",function(){k()},!1),void(M=!0);document.querySelectorAll(d.cssSelector).forEach(v)}function x(e){return e=(e||"").toLowerCase(),t[e]||t[n[e]]}function P(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach(e=>{n[e.toLowerCase()]=t})}function S(e){const t=x(e);return t&&!t.disableAutodetect}function T(e,t){const n=e;a.forEach(function(e){e[n]&&e[n](t)})}Object.assign(e,{highlight:l,highlightAuto:y,highlightAll:k,highlightElement:v,highlightBlock:function(e){return te("10.7.0","highlightBlock will be removed entirely in v12.0"),te("10.7.0","Please use highlightElement now."),v(e)},configure:function(e){d=de(d,e)},initHighlighting:()=>{k(),te("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:function(){k(),te("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:function(n,a){let r=null;try{r=a(e)}catch(i){if(Z("Language definition for '{}' could not be registered.".replace("{}",n)),!o)throw i;Z(i),r=u}r.name||(r.name=n),t[n]=r,r.rawDefinition=a.bind(null,e),r.aliases&&P(r.aliases,{languageName:n})},unregisterLanguage:function(e){delete t[e];for(const t of Object.keys(n))n[t]===e&&delete n[t]},listLanguages:function(){return Object.keys(t)},getLanguage:x,registerAliases:P,autoDetection:S,inherit:de,addPlugin:function(e){!function(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}(e),a.push(e)},removePlugin:function(e){const t=a.indexOf(e);-1!==t&&a.splice(t,1)}}),e.debugMode=function(){o=!1},e.safeMode=function(){o=!0},e.versionString="11.11.1",e.regex={concat:b,lookahead:g,either:w,optional:p,anyNumberOfTimes:f};for(const i in F)"object"==typeof F[i]&&r(F[i]);return Object.assign(e,F),e},he=le({});he.newInstance=()=>le({});var me=he;he.HighlightJS=he,he.default=he;const ge=n(me);function fe(e){return(t={})=>{const n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}function pe(e){return(t,n)=>{let a;if("formatting"===((null==n?void 0:n.context)?String(n.context):"standalone")&&e.formattingValues){const t=e.defaultFormattingWidth||e.defaultWidth,r=(null==n?void 0:n.width)?String(n.width):t;a=e.formattingValues[r]||e.formattingValues[t]}else{const t=e.defaultWidth,r=(null==n?void 0:n.width)?String(n.width):e.defaultWidth;a=e.values[r]||e.values[t]}return a[e.argumentCallback?e.argumentCallback(t):t]}}function be(e){return(t,n={})=>{const a=n.width,r=a&&e.matchPatterns[a]||e.matchPatterns[e.defaultMatchWidth],i=t.match(r);if(!i)return null;const o=i[0],s=a&&e.parsePatterns[a]||e.parsePatterns[e.defaultParseWidth],u=Array.isArray(s)?function(e,t){for(let n=0;ne.test(o)):function(e,t){for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n;return}(s,e=>e.test(o));let d;d=e.valueCallback?e.valueCallback(u):u,d=n.valueCallback?n.valueCallback(d):d;return{value:d,rest:t.slice(o.length)}}}function we(e){return(t,n={})=>{const a=t.match(e.matchPattern);if(!a)return null;const r=a[0],i=t.match(e.parsePattern);if(!i)return null;let o=e.valueCallback?e.valueCallback(i[0]):i[0];o=n.valueCallback?n.valueCallback(o):o;return{value:o,rest:t.slice(r.length)}}}function ye(e){const t=Object.prototype.toString.call(e);return e instanceof Date||"object"==typeof e&&"[object Date]"===t?new e.constructor(+e):"number"==typeof e||"[object Number]"===t||"string"==typeof e||"[object String]"===t?new Date(e):new Date(NaN)}let ve={};function Me(){return ve}function ke(e,t){var n,a,r,i,o,s,u,d;const c=Me(),l=null!=(d=null!=(u=null!=(i=null!=(r=null==t?void 0:t.weekStartsOn)?r:null==(a=null==(n=null==t?void 0:t.locale)?void 0:n.options)?void 0:a.weekStartsOn)?i:c.weekStartsOn)?u:null==(s=null==(o=c.locale)?void 0:o.options)?void 0:s.weekStartsOn)?d:0,h=ye(e),m=h.getDay(),g=(m{let a;const r=(null==n?void 0:n.addSuffix)?Pe[e].withPreposition:Pe[e].standalone;return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"in "+a:"vor "+a:a},formatLong:Se,formatRelative:(e,t,n,a)=>Te[e],localize:{ordinalNumber:e=>Number(e)+".",era:pe({values:{narrow:["v.Chr.","n.Chr."],abbreviated:["v.Chr.","n.Chr."],wide:["vor Christus","nach Christus"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:Ee,formattingValues:Ne,defaultWidth:"wide"}),day:pe({values:{narrow:["S","M","D","M","D","F","S"],short:["So","Mo","Di","Mi","Do","Fr","Sa"],abbreviated:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],wide:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachm.",evening:"Abend",night:"Nacht"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"}},defaultWidth:"wide",formattingValues:{narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachm.",evening:"abends",night:"nachts"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(\.)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e)}),era:be({matchPatterns:{narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^v/i,/^n/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[aä]/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}},Oe={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Ce={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},je={ordinalNumber:(e,t)=>{const n=Number(e),a=n%100;if(a>20||a<10)switch(a%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:pe({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:pe({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},Ae={ordinalNumber:we({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},Re={code:"en-US",formatDistance:(e,t,n)=>{let a;const r=Oe[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"in "+a:a+" ago":a},formatLong:{date:fe({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:fe({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},formatRelative:(e,t,n,a)=>Ce[e],localize:je,match:Ae,options:{weekStartsOn:0,firstWeekContainsDate:1}},De={lessThanXSeconds:{one:"menos de un segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"medio minuto",lessThanXMinutes:{one:"menos de un minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"alrededor de 1 hora",other:"alrededor de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 día",other:"{{count}} días"},aboutXWeeks:{one:"alrededor de 1 semana",other:"alrededor de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"alrededor de 1 mes",other:"alrededor de {{count}} meses"},xMonths:{one:"1 mes",other:"{{count}} meses"},aboutXYears:{one:"alrededor de 1 año",other:"alrededor de {{count}} años"},xYears:{one:"1 año",other:"{{count}} años"},overXYears:{one:"más de 1 año",other:"más de {{count}} años"},almostXYears:{one:"casi 1 año",other:"casi {{count}} años"}},He={date:fe({formats:{full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:fe({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'a las' {{time}}",long:"{{date}} 'a las' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},ze={lastWeek:"'el' eeee 'pasado a la' p",yesterday:"'ayer a la' p",today:"'hoy a la' p",tomorrow:"'mañana a la' p",nextWeek:"eeee 'a la' p",other:"P"},_e={lastWeek:"'el' eeee 'pasado a las' p",yesterday:"'ayer a las' p",today:"'hoy a las' p",tomorrow:"'mañana a las' p",nextWeek:"eeee 'a las' p",other:"P"},Le={code:"es",formatDistance:(e,t,n)=>{let a;const r=De[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"en "+a:"hace "+a:a},formatLong:He,formatRelative:(e,t,n,a)=>1!==t.getHours()?_e[e]:ze[e],localize:{ordinalNumber:(e,t)=>Number(e)+"º",era:pe({values:{narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","después de cristo"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},defaultWidth:"wide",argumentCallback:e=>Number(e)-1}),month:pe({values:{narrow:["e","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],wide:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]},defaultWidth:"wide"}),day:pe({values:{narrow:["d","l","m","m","j","v","s"],short:["do","lu","ma","mi","ju","vi","sá"],abbreviated:["dom","lun","mar","mié","jue","vie","sáb"],wide:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(º)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}}),era:be({matchPatterns:{narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes de la era com[uú]n)/i,/^(despu[eé]s de cristo|era com[uú]n)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[efmajsond]/i,abbreviated:/^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,wide:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^e/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^en/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[dlmjvs]/i,short:/^(do|lu|ma|mi|ju|vi|s[áa])/i,abbreviated:/^(dom|lun|mar|mi[ée]|jue|vie|s[áa]b)/i,wide:/^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^do/i,/^lu/i,/^ma/i,/^mi/i,/^ju/i,/^vi/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,any:/^([ap]\.?\s?m\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mn/i,noon:/^md/i,morning:/mañana/i,afternoon:/tarde/i,evening:/tarde/i,night:/noche/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}},qe={lessThanXSeconds:{one:"moins d’une seconde",other:"moins de {{count}} secondes"},xSeconds:{one:"1 seconde",other:"{{count}} secondes"},halfAMinute:"30 secondes",lessThanXMinutes:{one:"moins d’une minute",other:"moins de {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"environ 1 heure",other:"environ {{count}} heures"},xHours:{one:"1 heure",other:"{{count}} heures"},xDays:{one:"1 jour",other:"{{count}} jours"},aboutXWeeks:{one:"environ 1 semaine",other:"environ {{count}} semaines"},xWeeks:{one:"1 semaine",other:"{{count}} semaines"},aboutXMonths:{one:"environ 1 mois",other:"environ {{count}} mois"},xMonths:{one:"1 mois",other:"{{count}} mois"},aboutXYears:{one:"environ 1 an",other:"environ {{count}} ans"},xYears:{one:"1 an",other:"{{count}} ans"},overXYears:{one:"plus d’un an",other:"plus de {{count}} ans"},almostXYears:{one:"presqu’un an",other:"presque {{count}} ans"}},Fe={date:fe({formats:{full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:fe({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'à' {{time}}",long:"{{date}} 'à' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Be={lastWeek:"eeee 'dernier à' p",yesterday:"'hier à' p",today:"'aujourd’hui à' p",tomorrow:"'demain à' p'",nextWeek:"eeee 'prochain à' p",other:"P"},Ge=["MMM","MMMM"],Ie={code:"fr",formatDistance:(e,t,n)=>{let a;const r=qe[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"dans "+a:"il y a "+a:a},formatLong:Fe,formatRelative:(e,t,n,a)=>Be[e],localize:{preprocessor:(e,t)=>{if(1===e.getDate())return t;return t.some(e=>e.isToken&&Ge.includes(e.value))?t.map(e=>e.isToken&&"do"===e.value?{isToken:!0,value:"d"}:e):t},ordinalNumber:(e,t)=>{const n=Number(e),a=null==t?void 0:t.unit;if(0===n)return"0";let r;return r=1===n?a&&["year","week","hour","minute","second"].includes(a)?"ère":"er":"ème",n+r},era:pe({values:{narrow:["av. J.-C","ap. J.-C"],abbreviated:["av. J.-C","ap. J.-C"],wide:["avant Jésus-Christ","après Jésus-Christ"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["T1","T2","T3","T4"],abbreviated:["1er trim.","2ème trim.","3ème trim.","4ème trim."],wide:["1er trimestre","2ème trimestre","3ème trimestre","4ème trimestre"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],wide:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},defaultWidth:"wide"}),day:pe({values:{narrow:["D","L","M","M","J","V","S"],short:["di","lu","ma","me","je","ve","sa"],abbreviated:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],wide:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"mat.",afternoon:"ap.m.",evening:"soir",night:"mat."},abbreviated:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"matin",afternoon:"après-midi",evening:"soir",night:"matin"},wide:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"du matin",afternoon:"de l’après-midi",evening:"du soir",night:"du matin"}},defaultWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(ième|ère|ème|er|e)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e)}),era:be({matchPatterns:{narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant Jésus-Christ|après Jésus-Christ)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^av/i,/^ap/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^T?[1234]/i,abbreviated:/^[1234](er|ème|e)? trim\.?/i,wide:/^[1234](er|ème|e)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,wide:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}},Xe={lessThanXSeconds:{one:"kurang dari 1 detik",other:"kurang dari {{count}} detik"},xSeconds:{one:"1 detik",other:"{{count}} detik"},halfAMinute:"setengah menit",lessThanXMinutes:{one:"kurang dari 1 menit",other:"kurang dari {{count}} menit"},xMinutes:{one:"1 menit",other:"{{count}} menit"},aboutXHours:{one:"sekitar 1 jam",other:"sekitar {{count}} jam"},xHours:{one:"1 jam",other:"{{count}} jam"},xDays:{one:"1 hari",other:"{{count}} hari"},aboutXWeeks:{one:"sekitar 1 minggu",other:"sekitar {{count}} minggu"},xWeeks:{one:"1 minggu",other:"{{count}} minggu"},aboutXMonths:{one:"sekitar 1 bulan",other:"sekitar {{count}} bulan"},xMonths:{one:"1 bulan",other:"{{count}} bulan"},aboutXYears:{one:"sekitar 1 tahun",other:"sekitar {{count}} tahun"},xYears:{one:"1 tahun",other:"{{count}} tahun"},overXYears:{one:"lebih dari 1 tahun",other:"lebih dari {{count}} tahun"},almostXYears:{one:"hampir 1 tahun",other:"hampir {{count}} tahun"}},Ye={date:fe({formats:{full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"d/M/yyyy"},defaultWidth:"full"}),time:fe({formats:{full:"HH.mm.ss",long:"HH.mm.ss",medium:"HH.mm",short:"HH.mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'pukul' {{time}}",long:"{{date}} 'pukul' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Ue={lastWeek:"eeee 'lalu pukul' p",yesterday:"'Kemarin pukul' p",today:"'Hari ini pukul' p",tomorrow:"'Besok pukul' p",nextWeek:"eeee 'pukul' p",other:"P"},Je={code:"id",formatDistance:(e,t,n)=>{let a;const r=Xe[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"dalam waktu "+a:a+" yang lalu":a},formatLong:Ye,formatRelative:(e,t,n,a)=>Ue[e],localize:{ordinalNumber:(e,t)=>"ke-"+Number(e),era:pe({values:{narrow:["SM","M"],abbreviated:["SM","M"],wide:["Sebelum Masehi","Masehi"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],wide:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]},defaultWidth:"wide"}),day:pe({values:{narrow:["M","S","S","R","K","J","S"],short:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],abbreviated:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],wide:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},defaultWidth:"wide",formattingValues:{narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^ke-(\d+)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(sm|m)/i,abbreviated:/^(s\.?\s?m\.?|s\.?\s?e\.?\s?u\.?|m\.?|e\.?\s?u\.?)/i,wide:/^(sebelum masehi|sebelum era umum|masehi|era umum)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^s/i,/^(m|e)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^K-?\s[1234]/i,wide:/^Kuartal ke-?\s?[1234]/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|mei|jun|jul|agt|sep|okt|nov|des)/i,wide:/^(januari|februari|maret|april|mei|juni|juli|agustus|september|oktober|november|desember)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^ma/i,/^ap/i,/^me/i,/^jun/i,/^jul/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[srkjm]/i,short:/^(min|sen|sel|rab|kam|jum|sab)/i,abbreviated:/^(min|sen|sel|rab|kam|jum|sab)/i,wide:/^(minggu|senin|selasa|rabu|kamis|jumat|sabtu)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^m/i,/^s/i,/^s/i,/^r/i,/^k/i,/^j/i,/^s/i],any:[/^m/i,/^sen/i,/^sel/i,/^r/i,/^k/i,/^j/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(a|p|tengah m|tengah h|(di(\swaktu)?) (pagi|siang|sore|malam))/i,any:/^([ap]\.?\s?m\.?|tengah malam|tengah hari|(di(\swaktu)?) (pagi|siang|sore|malam))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^pm/i,midnight:/^tengah m/i,noon:/^tengah h/i,morning:/pagi/i,afternoon:/siang/i,evening:/sore/i,night:/malam/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}},Qe={lessThanXSeconds:{one:"meno di un secondo",other:"meno di {{count}} secondi"},xSeconds:{one:"un secondo",other:"{{count}} secondi"},halfAMinute:"alcuni secondi",lessThanXMinutes:{one:"meno di un minuto",other:"meno di {{count}} minuti"},xMinutes:{one:"un minuto",other:"{{count}} minuti"},aboutXHours:{one:"circa un'ora",other:"circa {{count}} ore"},xHours:{one:"un'ora",other:"{{count}} ore"},xDays:{one:"un giorno",other:"{{count}} giorni"},aboutXWeeks:{one:"circa una settimana",other:"circa {{count}} settimane"},xWeeks:{one:"una settimana",other:"{{count}} settimane"},aboutXMonths:{one:"circa un mese",other:"circa {{count}} mesi"},xMonths:{one:"un mese",other:"{{count}} mesi"},aboutXYears:{one:"circa un anno",other:"circa {{count}} anni"},xYears:{one:"un anno",other:"{{count}} anni"},overXYears:{one:"più di un anno",other:"più di {{count}} anni"},almostXYears:{one:"quasi un anno",other:"quasi {{count}} anni"}},Ke={date:fe({formats:{full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:fe({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},Ve=["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"];function $e(e){return"'"+Ve[e]+" alle' p"}const Ze={lastWeek:(e,t,n)=>{const a=e.getDay();return xe(e,t,n)?$e(a):function(e){return 0===e?"'domenica scorsa alle' p":"'"+Ve[e]+" scorso alle' p"}(a)},yesterday:"'ieri alle' p",today:"'oggi alle' p",tomorrow:"'domani alle' p",nextWeek:(e,t,n)=>{const a=e.getDay();return xe(e,t,n)?$e(a):function(e){return 0===e?"'domenica prossima alle' p":"'"+Ve[e]+" prossimo alle' p"}(a)},other:"P"},et={code:"it",formatDistance:(e,t,n)=>{let a;const r=Qe[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"tra "+a:a+" fa":a},formatLong:Ke,formatRelative:(e,t,n,a)=>{const r=Ze[e];return"function"==typeof r?r(t,n,a):r},localize:{ordinalNumber:(e,t)=>{const n=Number(e);return String(n)},era:pe({values:{narrow:["aC","dC"],abbreviated:["a.C.","d.C."],wide:["avanti Cristo","dopo Cristo"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["G","F","M","A","M","G","L","A","S","O","N","D"],abbreviated:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],wide:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"]},defaultWidth:"wide"}),day:pe({values:{narrow:["D","L","M","M","G","V","S"],short:["dom","lun","mar","mer","gio","ven","sab"],abbreviated:["dom","lun","mar","mer","gio","ven","sab"],wide:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"}},defaultWidth:"wide",formattingValues:{narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(º)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(aC|dC)/i,abbreviated:/^(a\.?\s?C\.?|a\.?\s?e\.?\s?v\.?|d\.?\s?C\.?|e\.?\s?v\.?)/i,wide:/^(avanti Cristo|avanti Era Volgare|dopo Cristo|Era Volgare)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^a/i,/^(d|e)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^t[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[gfmalsond]/i,abbreviated:/^(gen|feb|mar|apr|mag|giu|lug|ago|set|ott|nov|dic)/i,wide:/^(gennaio|febbraio|marzo|aprile|maggio|giugno|luglio|agosto|settembre|ottobre|novembre|dicembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^g/i,/^f/i,/^m/i,/^a/i,/^m/i,/^g/i,/^l/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ge/i,/^f/i,/^mar/i,/^ap/i,/^mag/i,/^gi/i,/^l/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[dlmgvs]/i,short:/^(do|lu|ma|me|gi|ve|sa)/i,abbreviated:/^(dom|lun|mar|mer|gio|ven|sab)/i,wide:/^(domenica|luned[i|ì]|marted[i|ì]|mercoled[i|ì]|gioved[i|ì]|venerd[i|ì]|sabato)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^g/i,/^v/i,/^s/i],any:[/^d/i,/^l/i,/^ma/i,/^me/i,/^g/i,/^v/i,/^s/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(a|m\.|p|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i,any:/^([ap]\.?\s?m\.?|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mezza/i,noon:/^mezzo/i,morning:/mattina/i,afternoon:/pomeriggio/i,evening:/sera/i,night:/notte/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}},tt={lessThanXSeconds:{one:"1초 미만",other:"{{count}}초 미만"},xSeconds:{one:"1초",other:"{{count}}초"},halfAMinute:"30초",lessThanXMinutes:{one:"1분 미만",other:"{{count}}분 미만"},xMinutes:{one:"1분",other:"{{count}}분"},aboutXHours:{one:"약 1시간",other:"약 {{count}}시간"},xHours:{one:"1시간",other:"{{count}}시간"},xDays:{one:"1일",other:"{{count}}일"},aboutXWeeks:{one:"약 1주",other:"약 {{count}}주"},xWeeks:{one:"1주",other:"{{count}}주"},aboutXMonths:{one:"약 1개월",other:"약 {{count}}개월"},xMonths:{one:"1개월",other:"{{count}}개월"},aboutXYears:{one:"약 1년",other:"약 {{count}}년"},xYears:{one:"1년",other:"{{count}}년"},overXYears:{one:"1년 이상",other:"{{count}}년 이상"},almostXYears:{one:"거의 1년",other:"거의 {{count}}년"}},nt={date:fe({formats:{full:"y년 M월 d일 EEEE",long:"y년 M월 d일",medium:"y.MM.dd",short:"y.MM.dd"},defaultWidth:"full"}),time:fe({formats:{full:"a H시 mm분 ss초 zzzz",long:"a H:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},at={lastWeek:"'지난' eeee p",yesterday:"'어제' p",today:"'오늘' p",tomorrow:"'내일' p",nextWeek:"'다음' eeee p",other:"P"},rt={code:"ko",formatDistance:(e,t,n)=>{let a;const r=tt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?a+" 후":a+" 전":a},formatLong:nt,formatRelative:(e,t,n,a)=>at[e],localize:{ordinalNumber:(e,t)=>{const n=Number(e);switch(String(null==t?void 0:t.unit)){case"minute":case"second":return String(n);case"date":return n+"일";default:return n+"번째"}},era:pe({values:{narrow:["BC","AD"],abbreviated:["BC","AD"],wide:["기원전","서기"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1분기","2분기","3분기","4분기"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],wide:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},defaultWidth:"wide"}),day:pe({values:{narrow:["일","월","화","수","목","금","토"],short:["일","월","화","수","목","금","토"],abbreviated:["일","월","화","수","목","금","토"],wide:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},abbreviated:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},wide:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"}},defaultWidth:"wide",formattingValues:{narrow:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},abbreviated:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},wide:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(일|번째)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(기원전|서기)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^(bc|기원전)/i,/^(ad|서기)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234]사?분기/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^(1[012]|[123456789])/,abbreviated:/^(1[012]|[123456789])월/i,wide:/^(1[012]|[123456789])월/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^1월?$/,/^2/,/^3/,/^4/,/^5/,/^6/,/^7/,/^8/,/^9/,/^10/,/^11/,/^12/]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[일월화수목금토]/,short:/^[일월화수목금토]/,abbreviated:/^[일월화수목금토]/,wide:/^[일월화수목금토]요일/},defaultMatchWidth:"wide",parsePatterns:{any:[/^일/,/^월/,/^화/,/^수/,/^목/,/^금/,/^토/]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{any:/^(am|pm|오전|오후|자정|정오|아침|저녁|밤)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^(am|오전)/i,pm:/^(pm|오후)/i,midnight:/^자정/i,noon:/^정오/i,morning:/^아침/i,afternoon:/^오후/i,evening:/^저녁/i,night:/^밤/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}},it={lessThanXSeconds:{one:"menos de um segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"meio minuto",lessThanXMinutes:{one:"menos de um minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"cerca de 1 hora",other:"cerca de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 dia",other:"{{count}} dias"},aboutXWeeks:{one:"cerca de 1 semana",other:"cerca de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"cerca de 1 mês",other:"cerca de {{count}} meses"},xMonths:{one:"1 mês",other:"{{count}} meses"},aboutXYears:{one:"cerca de 1 ano",other:"cerca de {{count}} anos"},xYears:{one:"1 ano",other:"{{count}} anos"},overXYears:{one:"mais de 1 ano",other:"mais de {{count}} anos"},almostXYears:{one:"quase 1 ano",other:"quase {{count}} anos"}},ot={date:fe({formats:{full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/yyyy"},defaultWidth:"full"}),time:fe({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'às' {{time}}",long:"{{date}} 'às' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},st={lastWeek:e=>{const t=e.getDay();return"'"+(0===t||6===t?"último":"última")+"' eeee 'às' p"},yesterday:"'ontem às' p",today:"'hoje às' p",tomorrow:"'amanhã às' p",nextWeek:"eeee 'às' p",other:"P"},ut={code:"pt-BR",formatDistance:(e,t,n)=>{let a;const r=it[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"em "+a:"há "+a:a},formatLong:ot,formatRelative:(e,t,n,a)=>{const r=st[e];return"function"==typeof r?r(t):r},localize:{ordinalNumber:(e,t)=>{const n=Number(e);return"week"===(null==t?void 0:t.unit)?n+"ª":n+"º"},era:pe({values:{narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","depois de cristo"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],wide:["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},defaultWidth:"wide"}),day:pe({values:{narrow:["D","S","T","Q","Q","S","S"],short:["dom","seg","ter","qua","qui","sex","sab"],abbreviated:["domingo","segunda","terça","quarta","quinta","sexta","sábado"],wide:["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)[ºªo]?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|d\.?\s?c\.?)/i,wide:/^(antes de cristo|depois de cristo)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^ac/i,/^dc/i],wide:[/^antes de cristo/i,/^depois de cristo/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[jfmajsond]/i,abbreviated:/^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,wide:/^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^fev/i,/^mar/i,/^abr/i,/^mai/i,/^jun/i,/^jul/i,/^ago/i,/^set/i,/^out/i,/^nov/i,/^dez/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^(dom|[23456]ª?|s[aá]b)/i,short:/^(dom|[23456]ª?|s[aá]b)/i,abbreviated:/^(dom|seg|ter|qua|qui|sex|s[aá]b)/i,wide:/^(domingo|(segunda|ter[cç]a|quarta|quinta|sexta)([- ]feira)?|s[aá]bado)/i},defaultMatchWidth:"wide",parsePatterns:{short:[/^d/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^s[aá]/i],narrow:[/^d/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^s[aá]/i],any:[/^d/i,/^seg/i,/^t/i,/^qua/i,/^qui/i,/^sex/i,/^s[aá]b/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(a|p|mn|md|(da) (manhã|tarde|noite))/i,any:/^([ap]\.?\s?m\.?|meia[-\s]noite|meio[-\s]dia|(da) (manhã|tarde|noite))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mn|^meia[-\s]noite/i,noon:/^md|^meio[-\s]dia/i,morning:/manhã/i,afternoon:/tarde/i,evening:/tarde/i,night:/noite/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function dt(e,t){if(void 0!==e.one&&1===t)return e.one;const n=t%10,a=t%100;return 1===n&&11!==a?e.singularNominative.replace("{{count}}",String(t)):n>=2&&n<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",String(t)):e.pluralGenitive.replace("{{count}}",String(t))}function ct(e){return(t,n)=>(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?e.future?dt(e.future,t):"через "+dt(e.regular,t):e.past?dt(e.past,t):dt(e.regular,t)+" назад":dt(e.regular,t)}const lt={lessThanXSeconds:ct({regular:{one:"меньше секунды",singularNominative:"меньше {{count}} секунды",singularGenitive:"меньше {{count}} секунд",pluralGenitive:"меньше {{count}} секунд"},future:{one:"меньше, чем через секунду",singularNominative:"меньше, чем через {{count}} секунду",singularGenitive:"меньше, чем через {{count}} секунды",pluralGenitive:"меньше, чем через {{count}} секунд"}}),xSeconds:ct({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунды",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду назад",singularGenitive:"{{count}} секунды назад",pluralGenitive:"{{count}} секунд назад"},future:{singularNominative:"через {{count}} секунду",singularGenitive:"через {{count}} секунды",pluralGenitive:"через {{count}} секунд"}}),halfAMinute:(e,t)=>(null==t?void 0:t.addSuffix)?t.comparison&&t.comparison>0?"через полминуты":"полминуты назад":"полминуты",lessThanXMinutes:ct({regular:{one:"меньше минуты",singularNominative:"меньше {{count}} минуты",singularGenitive:"меньше {{count}} минут",pluralGenitive:"меньше {{count}} минут"},future:{one:"меньше, чем через минуту",singularNominative:"меньше, чем через {{count}} минуту",singularGenitive:"меньше, чем через {{count}} минуты",pluralGenitive:"меньше, чем через {{count}} минут"}}),xMinutes:ct({regular:{singularNominative:"{{count}} минута",singularGenitive:"{{count}} минуты",pluralGenitive:"{{count}} минут"},past:{singularNominative:"{{count}} минуту назад",singularGenitive:"{{count}} минуты назад",pluralGenitive:"{{count}} минут назад"},future:{singularNominative:"через {{count}} минуту",singularGenitive:"через {{count}} минуты",pluralGenitive:"через {{count}} минут"}}),aboutXHours:ct({regular:{singularNominative:"около {{count}} часа",singularGenitive:"около {{count}} часов",pluralGenitive:"около {{count}} часов"},future:{singularNominative:"приблизительно через {{count}} час",singularGenitive:"приблизительно через {{count}} часа",pluralGenitive:"приблизительно через {{count}} часов"}}),xHours:ct({regular:{singularNominative:"{{count}} час",singularGenitive:"{{count}} часа",pluralGenitive:"{{count}} часов"}}),xDays:ct({regular:{singularNominative:"{{count}} день",singularGenitive:"{{count}} дня",pluralGenitive:"{{count}} дней"}}),aboutXWeeks:ct({regular:{singularNominative:"около {{count}} недели",singularGenitive:"около {{count}} недель",pluralGenitive:"около {{count}} недель"},future:{singularNominative:"приблизительно через {{count}} неделю",singularGenitive:"приблизительно через {{count}} недели",pluralGenitive:"приблизительно через {{count}} недель"}}),xWeeks:ct({regular:{singularNominative:"{{count}} неделя",singularGenitive:"{{count}} недели",pluralGenitive:"{{count}} недель"}}),aboutXMonths:ct({regular:{singularNominative:"около {{count}} месяца",singularGenitive:"около {{count}} месяцев",pluralGenitive:"около {{count}} месяцев"},future:{singularNominative:"приблизительно через {{count}} месяц",singularGenitive:"приблизительно через {{count}} месяца",pluralGenitive:"приблизительно через {{count}} месяцев"}}),xMonths:ct({regular:{singularNominative:"{{count}} месяц",singularGenitive:"{{count}} месяца",pluralGenitive:"{{count}} месяцев"}}),aboutXYears:ct({regular:{singularNominative:"около {{count}} года",singularGenitive:"около {{count}} лет",pluralGenitive:"около {{count}} лет"},future:{singularNominative:"приблизительно через {{count}} год",singularGenitive:"приблизительно через {{count}} года",pluralGenitive:"приблизительно через {{count}} лет"}}),xYears:ct({regular:{singularNominative:"{{count}} год",singularGenitive:"{{count}} года",pluralGenitive:"{{count}} лет"}}),overXYears:ct({regular:{singularNominative:"больше {{count}} года",singularGenitive:"больше {{count}} лет",pluralGenitive:"больше {{count}} лет"},future:{singularNominative:"больше, чем через {{count}} год",singularGenitive:"больше, чем через {{count}} года",pluralGenitive:"больше, чем через {{count}} лет"}}),almostXYears:ct({regular:{singularNominative:"почти {{count}} год",singularGenitive:"почти {{count}} года",pluralGenitive:"почти {{count}} лет"},future:{singularNominative:"почти через {{count}} год",singularGenitive:"почти через {{count}} года",pluralGenitive:"почти через {{count}} лет"}})},ht={date:fe({formats:{full:"EEEE, d MMMM y 'г.'",long:"d MMMM y 'г.'",medium:"d MMM y 'г.'",short:"dd.MM.y"},defaultWidth:"full"}),time:fe({formats:{full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},defaultWidth:"full"}),dateTime:fe({formats:{any:"{{date}}, {{time}}"},defaultWidth:"any"})},mt=["воскресенье","понедельник","вторник","среду","четверг","пятницу","субботу"];function gt(e){const t=mt[e];return 2===e?"'во "+t+" в' p":"'в "+t+" в' p"}const ft={lastWeek:(e,t,n)=>{const a=e.getDay();return xe(e,t,n)?gt(a):function(e){const t=mt[e];switch(e){case 0:return"'в прошлое "+t+" в' p";case 1:case 2:case 4:return"'в прошлый "+t+" в' p";case 3:case 5:case 6:return"'в прошлую "+t+" в' p"}}(a)},yesterday:"'вчера в' p",today:"'сегодня в' p",tomorrow:"'завтра в' p",nextWeek:(e,t,n)=>{const a=e.getDay();return xe(e,t,n)?gt(a):function(e){const t=mt[e];switch(e){case 0:return"'в следующее "+t+" в' p";case 1:case 2:case 4:return"'в следующий "+t+" в' p";case 3:case 5:case 6:return"'в следующую "+t+" в' p"}}(a)},other:"P"},pt={code:"ru",formatDistance:(e,t,n)=>lt[e](t,n),formatLong:ht,formatRelative:(e,t,n,a)=>{const r=ft[e];return"function"==typeof r?r(t,n,a):r},localize:{ordinalNumber:(e,t)=>{const n=Number(e),a=null==t?void 0:t.unit;let r;return r="date"===a?"-е":"week"===a||"minute"===a||"second"===a?"-я":"-й",n+r},era:pe({values:{narrow:["до н.э.","н.э."],abbreviated:["до н. э.","н. э."],wide:["до нашей эры","нашей эры"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["1-й кв.","2-й кв.","3-й кв.","4-й кв."],wide:["1-й квартал","2-й квартал","3-й квартал","4-й квартал"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],abbreviated:["янв.","фев.","март","апр.","май","июнь","июль","авг.","сент.","окт.","нояб.","дек."],wide:["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]},defaultWidth:"wide",formattingValues:{narrow:["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],abbreviated:["янв.","фев.","мар.","апр.","мая","июн.","июл.","авг.","сент.","окт.","нояб.","дек."],wide:["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]},defaultFormattingWidth:"wide"}),day:pe({values:{narrow:["В","П","В","С","Ч","П","С"],short:["вс","пн","вт","ср","чт","пт","сб"],abbreviated:["вск","пнд","втр","срд","чтв","птн","суб"],wide:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утро",afternoon:"день",evening:"веч.",night:"ночь"},abbreviated:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утро",afternoon:"день",evening:"веч.",night:"ночь"},wide:{am:"ДП",pm:"ПП",midnight:"полночь",noon:"полдень",morning:"утро",afternoon:"день",evening:"вечер",night:"ночь"}},defaultWidth:"any",formattingValues:{narrow:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утра",afternoon:"дня",evening:"веч.",night:"ночи"},abbreviated:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утра",afternoon:"дня",evening:"веч.",night:"ночи"},wide:{am:"ДП",pm:"ПП",midnight:"полночь",noon:"полдень",morning:"утра",afternoon:"дня",evening:"вечера",night:"ночи"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(-?(е|я|й|ое|ье|ая|ья|ый|ой|ий|ый))?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^((до )?н\.?\s?э\.?)/i,abbreviated:/^((до )?н\.?\s?э\.?)/i,wide:/^(до нашей эры|нашей эры|наша эра)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^д/i,/^н/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^[1234](-?[ыои]?й?)? кв.?/i,wide:/^[1234](-?[ыои]?й?)? квартал/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[яфмаисонд]/i,abbreviated:/^(янв|фев|март?|апр|ма[йя]|июн[ья]?|июл[ья]?|авг|сент?|окт|нояб?|дек)\.?/i,wide:/^(январ[ья]|феврал[ья]|марта?|апрел[ья]|ма[йя]|июн[ья]|июл[ья]|августа?|сентябр[ья]|октябр[ья]|октябр[ья]|ноябр[ья]|декабр[ья])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^я/i,/^ф/i,/^м/i,/^а/i,/^м/i,/^и/i,/^и/i,/^а/i,/^с/i,/^о/i,/^н/i,/^я/i],any:[/^я/i,/^ф/i,/^мар/i,/^ап/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^ав/i,/^с/i,/^о/i,/^н/i,/^д/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[впсч]/i,short:/^(вс|во|пн|по|вт|ср|чт|че|пт|пя|сб|су)\.?/i,abbreviated:/^(вск|вос|пнд|пон|втр|вто|срд|сре|чтв|чет|птн|пят|суб).?/i,wide:/^(воскресень[ея]|понедельника?|вторника?|сред[аы]|четверга?|пятниц[аы]|суббот[аы])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^в/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^в[ос]/i,/^п[он]/i,/^в/i,/^ср/i,/^ч/i,/^п[ят]/i,/^с[уб]/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,abbreviated:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,wide:/^([дп]п|полночь|полдень|утр[оа]|день|дня|вечера?|ноч[ьи])/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^дп/i,pm:/^пп/i,midnight:/^полн/i,noon:/^полд/i,morning:/^у/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}},bt={lessThanXSeconds:{one:"bir saniyeden az",other:"{{count}} saniyeden az"},xSeconds:{one:"1 saniye",other:"{{count}} saniye"},halfAMinute:"yarım dakika",lessThanXMinutes:{one:"bir dakikadan az",other:"{{count}} dakikadan az"},xMinutes:{one:"1 dakika",other:"{{count}} dakika"},aboutXHours:{one:"yaklaşık 1 saat",other:"yaklaşık {{count}} saat"},xHours:{one:"1 saat",other:"{{count}} saat"},xDays:{one:"1 gün",other:"{{count}} gün"},aboutXWeeks:{one:"yaklaşık 1 hafta",other:"yaklaşık {{count}} hafta"},xWeeks:{one:"1 hafta",other:"{{count}} hafta"},aboutXMonths:{one:"yaklaşık 1 ay",other:"yaklaşık {{count}} ay"},xMonths:{one:"1 ay",other:"{{count}} ay"},aboutXYears:{one:"yaklaşık 1 yıl",other:"yaklaşık {{count}} yıl"},xYears:{one:"1 yıl",other:"{{count}} yıl"},overXYears:{one:"1 yıldan fazla",other:"{{count}} yıldan fazla"},almostXYears:{one:"neredeyse 1 yıl",other:"neredeyse {{count}} yıl"}},wt={date:fe({formats:{full:"d MMMM y EEEE",long:"d MMMM y",medium:"d MMM y",short:"dd.MM.yyyy"},defaultWidth:"full"}),time:fe({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'saat' {{time}}",long:"{{date}} 'saat' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},yt={lastWeek:"'geçen hafta' eeee 'saat' p",yesterday:"'dün saat' p",today:"'bugün saat' p",tomorrow:"'yarın saat' p",nextWeek:"eeee 'saat' p",other:"P"},vt={code:"tr",formatDistance:(e,t,n)=>{let a;const r=bt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?a+" sonra":a+" önce":a},formatLong:wt,formatRelative:(e,t,n,a)=>yt[e],localize:{ordinalNumber:(e,t)=>Number(e)+".",era:pe({values:{narrow:["MÖ","MS"],abbreviated:["MÖ","MS"],wide:["Milattan Önce","Milattan Sonra"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["1Ç","2Ç","3Ç","4Ç"],wide:["İlk çeyrek","İkinci Çeyrek","Üçüncü çeyrek","Son çeyrek"]},defaultWidth:"wide",argumentCallback:e=>Number(e)-1}),month:pe({values:{narrow:["O","Ş","M","N","M","H","T","A","E","E","K","A"],abbreviated:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],wide:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"]},defaultWidth:"wide"}),day:pe({values:{narrow:["P","P","S","Ç","P","C","C"],short:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],abbreviated:["Paz","Pzt","Sal","Çar","Per","Cum","Cts"],wide:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"öö",pm:"ös",midnight:"gy",noon:"ö",morning:"sa",afternoon:"ös",evening:"ak",night:"ge"},abbreviated:{am:"ÖÖ",pm:"ÖS",midnight:"gece yarısı",noon:"öğle",morning:"sabah",afternoon:"öğleden sonra",evening:"akşam",night:"gece"},wide:{am:"Ö.Ö.",pm:"Ö.S.",midnight:"gece yarısı",noon:"öğle",morning:"sabah",afternoon:"öğleden sonra",evening:"akşam",night:"gece"}},defaultWidth:"wide",formattingValues:{narrow:{am:"öö",pm:"ös",midnight:"gy",noon:"ö",morning:"sa",afternoon:"ös",evening:"ak",night:"ge"},abbreviated:{am:"ÖÖ",pm:"ÖS",midnight:"gece yarısı",noon:"öğlen",morning:"sabahleyin",afternoon:"öğleden sonra",evening:"akşamleyin",night:"geceleyin"},wide:{am:"ö.ö.",pm:"ö.s.",midnight:"gece yarısı",noon:"öğlen",morning:"sabahleyin",afternoon:"öğleden sonra",evening:"akşamleyin",night:"geceleyin"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(\.)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}}),era:be({matchPatterns:{narrow:/^(mö|ms)/i,abbreviated:/^(mö|ms)/i,wide:/^(milattan önce|milattan sonra)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(^mö|^milattan önce)/i,/(^ms|^milattan sonra)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^[1234]ç/i,wide:/^((i|İ)lk|(i|İ)kinci|üçüncü|son) çeyrek/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i],abbreviated:[/1ç/i,/2ç/i,/3ç/i,/4ç/i],wide:[/^(i|İ)lk çeyrek/i,/(i|İ)kinci çeyrek/i,/üçüncü çeyrek/i,/son çeyrek/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[oşmnhtaek]/i,abbreviated:/^(oca|şub|mar|nis|may|haz|tem|ağu|eyl|eki|kas|ara)/i,wide:/^(ocak|şubat|mart|nisan|mayıs|haziran|temmuz|ağustos|eylül|ekim|kasım|aralık)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^o/i,/^ş/i,/^m/i,/^n/i,/^m/i,/^h/i,/^t/i,/^a/i,/^e/i,/^e/i,/^k/i,/^a/i],any:[/^o/i,/^ş/i,/^mar/i,/^n/i,/^may/i,/^h/i,/^t/i,/^ağ/i,/^ey/i,/^ek/i,/^k/i,/^ar/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[psçc]/i,short:/^(pz|pt|sa|ça|pe|cu|ct)/i,abbreviated:/^(paz|pzt|sal|çar|per|cum|cts)/i,wide:/^(pazar(?!tesi)|pazartesi|salı|çarşamba|perşembe|cuma(?!rtesi)|cumartesi)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^p/i,/^p/i,/^s/i,/^ç/i,/^p/i,/^c/i,/^c/i],any:[/^pz/i,/^pt/i,/^sa/i,/^ça/i,/^pe/i,/^cu/i,/^ct/i],wide:[/^pazar(?!tesi)/i,/^pazartesi/i,/^salı/i,/^çarşamba/i,/^perşembe/i,/^cuma(?!rtesi)/i,/^cumartesi/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(öö|ös|gy|ö|sa|ös|ak|ge)/i,any:/^(ö\.?\s?[ös]\.?|öğleden sonra|gece yarısı|öğle|(sabah|öğ|akşam|gece)(leyin))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^ö\.?ö\.?/i,pm:/^ö\.?s\.?/i,midnight:/^(gy|gece yarısı)/i,noon:/^öğ/i,morning:/^sa/i,afternoon:/^öğleden sonra/i,evening:/^ak/i,night:/^ge/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}};function Mt(e,t){if(void 0!==e.one&&1===t)return e.one;const n=t%10,a=t%100;return 1===n&&11!==a?e.singularNominative.replace("{{count}}",String(t)):n>=2&&n<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",String(t)):e.pluralGenitive.replace("{{count}}",String(t))}function kt(e){return(t,n)=>n&&n.addSuffix?n.comparison&&n.comparison>0?e.future?Mt(e.future,t):"за "+Mt(e.regular,t):e.past?Mt(e.past,t):Mt(e.regular,t)+" тому":Mt(e.regular,t)}const xt={lessThanXSeconds:kt({regular:{one:"менше секунди",singularNominative:"менше {{count}} секунди",singularGenitive:"менше {{count}} секунд",pluralGenitive:"менше {{count}} секунд"},future:{one:"менше, ніж за секунду",singularNominative:"менше, ніж за {{count}} секунду",singularGenitive:"менше, ніж за {{count}} секунди",pluralGenitive:"менше, ніж за {{count}} секунд"}}),xSeconds:kt({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунди",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду тому",singularGenitive:"{{count}} секунди тому",pluralGenitive:"{{count}} секунд тому"},future:{singularNominative:"за {{count}} секунду",singularGenitive:"за {{count}} секунди",pluralGenitive:"за {{count}} секунд"}}),halfAMinute:(e,t)=>t&&t.addSuffix?t.comparison&&t.comparison>0?"за півхвилини":"півхвилини тому":"півхвилини",lessThanXMinutes:kt({regular:{one:"менше хвилини",singularNominative:"менше {{count}} хвилини",singularGenitive:"менше {{count}} хвилин",pluralGenitive:"менше {{count}} хвилин"},future:{one:"менше, ніж за хвилину",singularNominative:"менше, ніж за {{count}} хвилину",singularGenitive:"менше, ніж за {{count}} хвилини",pluralGenitive:"менше, ніж за {{count}} хвилин"}}),xMinutes:kt({regular:{singularNominative:"{{count}} хвилина",singularGenitive:"{{count}} хвилини",pluralGenitive:"{{count}} хвилин"},past:{singularNominative:"{{count}} хвилину тому",singularGenitive:"{{count}} хвилини тому",pluralGenitive:"{{count}} хвилин тому"},future:{singularNominative:"за {{count}} хвилину",singularGenitive:"за {{count}} хвилини",pluralGenitive:"за {{count}} хвилин"}}),aboutXHours:kt({regular:{singularNominative:"близько {{count}} години",singularGenitive:"близько {{count}} годин",pluralGenitive:"близько {{count}} годин"},future:{singularNominative:"приблизно за {{count}} годину",singularGenitive:"приблизно за {{count}} години",pluralGenitive:"приблизно за {{count}} годин"}}),xHours:kt({regular:{singularNominative:"{{count}} годину",singularGenitive:"{{count}} години",pluralGenitive:"{{count}} годин"}}),xDays:kt({regular:{singularNominative:"{{count}} день",singularGenitive:"{{count}} днi",pluralGenitive:"{{count}} днів"}}),aboutXWeeks:kt({regular:{singularNominative:"близько {{count}} тижня",singularGenitive:"близько {{count}} тижнів",pluralGenitive:"близько {{count}} тижнів"},future:{singularNominative:"приблизно за {{count}} тиждень",singularGenitive:"приблизно за {{count}} тижні",pluralGenitive:"приблизно за {{count}} тижнів"}}),xWeeks:kt({regular:{singularNominative:"{{count}} тиждень",singularGenitive:"{{count}} тижні",pluralGenitive:"{{count}} тижнів"}}),aboutXMonths:kt({regular:{singularNominative:"близько {{count}} місяця",singularGenitive:"близько {{count}} місяців",pluralGenitive:"близько {{count}} місяців"},future:{singularNominative:"приблизно за {{count}} місяць",singularGenitive:"приблизно за {{count}} місяці",pluralGenitive:"приблизно за {{count}} місяців"}}),xMonths:kt({regular:{singularNominative:"{{count}} місяць",singularGenitive:"{{count}} місяці",pluralGenitive:"{{count}} місяців"}}),aboutXYears:kt({regular:{singularNominative:"близько {{count}} року",singularGenitive:"близько {{count}} років",pluralGenitive:"близько {{count}} років"},future:{singularNominative:"приблизно за {{count}} рік",singularGenitive:"приблизно за {{count}} роки",pluralGenitive:"приблизно за {{count}} років"}}),xYears:kt({regular:{singularNominative:"{{count}} рік",singularGenitive:"{{count}} роки",pluralGenitive:"{{count}} років"}}),overXYears:kt({regular:{singularNominative:"більше {{count}} року",singularGenitive:"більше {{count}} років",pluralGenitive:"більше {{count}} років"},future:{singularNominative:"більше, ніж за {{count}} рік",singularGenitive:"більше, ніж за {{count}} роки",pluralGenitive:"більше, ніж за {{count}} років"}}),almostXYears:kt({regular:{singularNominative:"майже {{count}} рік",singularGenitive:"майже {{count}} роки",pluralGenitive:"майже {{count}} років"},future:{singularNominative:"майже за {{count}} рік",singularGenitive:"майже за {{count}} роки",pluralGenitive:"майже за {{count}} років"}})},Pt={date:fe({formats:{full:"EEEE, do MMMM y 'р.'",long:"do MMMM y 'р.'",medium:"d MMM y 'р.'",short:"dd.MM.y"},defaultWidth:"full"}),time:fe({formats:{full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'о' {{time}}",long:"{{date}} 'о' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},St=["неділю","понеділок","вівторок","середу","четвер","п’ятницю","суботу"];function Tt(e){return"'у "+St[e]+" о' p"}const Et={lastWeek:(e,t,n)=>{const a=ye(e),r=a.getDay();return xe(a,t,n)?Tt(r):function(e){const t=St[e];switch(e){case 0:case 3:case 5:case 6:return"'у минулу "+t+" о' p";case 1:case 2:case 4:return"'у минулий "+t+" о' p"}}(r)},yesterday:"'вчора о' p",today:"'сьогодні о' p",tomorrow:"'завтра о' p",nextWeek:(e,t,n)=>{const a=ye(e),r=a.getDay();return xe(a,t,n)?Tt(r):function(e){const t=St[e];switch(e){case 0:case 3:case 5:case 6:return"'у наступну "+t+" о' p";case 1:case 2:case 4:return"'у наступний "+t+" о' p"}}(r)},other:"P"},Nt={code:"uk",formatDistance:(e,t,n)=>(n=n||{},xt[e](t,n)),formatLong:Pt,formatRelative:(e,t,n,a)=>{const r=Et[e];return"function"==typeof r?r(t,n,a):r},localize:{ordinalNumber:(e,t)=>{const n=String(null==t?void 0:t.unit),a=Number(e);let r;return r="date"===n?3===a||23===a?"-є":"-е":"minute"===n||"second"===n||"hour"===n?"-а":"-й",a+r},era:pe({values:{narrow:["до н.е.","н.е."],abbreviated:["до н. е.","н. е."],wide:["до нашої ери","нашої ери"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["1-й кв.","2-й кв.","3-й кв.","4-й кв."],wide:["1-й квартал","2-й квартал","3-й квартал","4-й квартал"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["С","Л","Б","К","Т","Ч","Л","С","В","Ж","Л","Г"],abbreviated:["січ.","лют.","берез.","квіт.","трав.","черв.","лип.","серп.","верес.","жовт.","листоп.","груд."],wide:["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"]},defaultWidth:"wide",formattingValues:{narrow:["С","Л","Б","К","Т","Ч","Л","С","В","Ж","Л","Г"],abbreviated:["січ.","лют.","берез.","квіт.","трав.","черв.","лип.","серп.","верес.","жовт.","листоп.","груд."],wide:["січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"]},defaultFormattingWidth:"wide"}),day:pe({values:{narrow:["Н","П","В","С","Ч","П","С"],short:["нд","пн","вт","ср","чт","пт","сб"],abbreviated:["нед","пон","вів","сер","чтв","птн","суб"],wide:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранок",afternoon:"день",evening:"веч.",night:"ніч"},abbreviated:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранок",afternoon:"день",evening:"веч.",night:"ніч"},wide:{am:"ДП",pm:"ПП",midnight:"північ",noon:"полудень",morning:"ранок",afternoon:"день",evening:"вечір",night:"ніч"}},defaultWidth:"any",formattingValues:{narrow:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"},abbreviated:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"},wide:{am:"ДП",pm:"ПП",midnight:"північ",noon:"полудень",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(-?(е|й|є|а|я))?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^((до )?н\.?\s?е\.?)/i,abbreviated:/^((до )?н\.?\s?е\.?)/i,wide:/^(до нашої ери|нашої ери|наша ера)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^д/i,/^н/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^[1234](-?[иі]?й?)? кв.?/i,wide:/^[1234](-?[иі]?й?)? квартал/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[слбктчвжг]/i,abbreviated:/^(січ|лют|бер(ез)?|квіт|трав|черв|лип|серп|вер(ес)?|жовт|лис(топ)?|груд)\.?/i,wide:/^(січень|січня|лютий|лютого|березень|березня|квітень|квітня|травень|травня|червня|червень|липень|липня|серпень|серпня|вересень|вересня|жовтень|жовтня|листопад[а]?|грудень|грудня)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^с/i,/^л/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^л/i,/^с/i,/^в/i,/^ж/i,/^л/i,/^г/i],any:[/^сі/i,/^лю/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^лип/i,/^се/i,/^в/i,/^ж/i,/^лис/i,/^г/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[нпвсч]/i,short:/^(нд|пн|вт|ср|чт|пт|сб)\.?/i,abbreviated:/^(нед|пон|вів|сер|че?тв|птн?|суб)\.?/i,wide:/^(неділ[яі]|понеділ[ок][ка]|вівтор[ок][ка]|серед[аи]|четвер(га)?|п\W*?ятниц[яі]|субот[аи])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^н/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^н/i,/^п[он]/i,/^в/i,/^с[ер]/i,/^ч/i,/^п\W*?[ят]/i,/^с[уб]/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,abbreviated:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,wide:/^([дп]п|північ|полудень|ранок|ранку|день|дня|вечір|вечора|ніч|ночі)/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^дп/i,pm:/^пп/i,midnight:/^півн/i,noon:/^пол/i,morning:/^р/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}},Wt={lessThanXSeconds:{one:"dưới 1 giây",other:"dưới {{count}} giây"},xSeconds:{one:"1 giây",other:"{{count}} giây"},halfAMinute:"nửa phút",lessThanXMinutes:{one:"dưới 1 phút",other:"dưới {{count}} phút"},xMinutes:{one:"1 phút",other:"{{count}} phút"},aboutXHours:{one:"khoảng 1 giờ",other:"khoảng {{count}} giờ"},xHours:{one:"1 giờ",other:"{{count}} giờ"},xDays:{one:"1 ngày",other:"{{count}} ngày"},aboutXWeeks:{one:"khoảng 1 tuần",other:"khoảng {{count}} tuần"},xWeeks:{one:"1 tuần",other:"{{count}} tuần"},aboutXMonths:{one:"khoảng 1 tháng",other:"khoảng {{count}} tháng"},xMonths:{one:"1 tháng",other:"{{count}} tháng"},aboutXYears:{one:"khoảng 1 năm",other:"khoảng {{count}} năm"},xYears:{one:"1 năm",other:"{{count}} năm"},overXYears:{one:"hơn 1 năm",other:"hơn {{count}} năm"},almostXYears:{one:"gần 1 năm",other:"gần {{count}} năm"}},Ot={date:fe({formats:{full:"EEEE, 'ngày' d MMMM 'năm' y",long:"'ngày' d MMMM 'năm' y",medium:"d MMM 'năm' y",short:"dd/MM/y"},defaultWidth:"full"}),time:fe({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},Ct={lastWeek:"eeee 'tuần trước vào lúc' p",yesterday:"'hôm qua vào lúc' p",today:"'hôm nay vào lúc' p",tomorrow:"'ngày mai vào lúc' p",nextWeek:"eeee 'tới vào lúc' p",other:"P"},jt={code:"vi",formatDistance:(e,t,n)=>{let a;const r=Wt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?a+" nữa":a+" trước":a},formatLong:Ot,formatRelative:(e,t,n,a)=>Ct[e],localize:{ordinalNumber:(e,t)=>{const n=Number(e),a=null==t?void 0:t.unit;if("quarter"===a)switch(n){case 1:return"I";case 2:return"II";case 3:return"III";case 4:return"IV"}else if("day"===a)switch(n){case 1:return"thứ 2";case 2:return"thứ 3";case 3:return"thứ 4";case 4:return"thứ 5";case 5:return"thứ 6";case 6:return"thứ 7";case 7:return"chủ nhật"}else{if("week"===a)return 1===n?"thứ nhất":"thứ "+n;if("dayOfYear"===a)return 1===n?"đầu tiên":"thứ "+n}return String(n)},era:pe({values:{narrow:["TCN","SCN"],abbreviated:["trước CN","sau CN"],wide:["trước Công Nguyên","sau Công Nguyên"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["Quý 1","Quý 2","Quý 3","Quý 4"]},defaultWidth:"wide",formattingValues:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["quý I","quý II","quý III","quý IV"]},defaultFormattingWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["Thg 1","Thg 2","Thg 3","Thg 4","Thg 5","Thg 6","Thg 7","Thg 8","Thg 9","Thg 10","Thg 11","Thg 12"],wide:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"]},defaultWidth:"wide",formattingValues:{narrow:["01","02","03","04","05","06","07","08","09","10","11","12"],abbreviated:["thg 1","thg 2","thg 3","thg 4","thg 5","thg 6","thg 7","thg 8","thg 9","thg 10","thg 11","thg 12"],wide:["tháng 01","tháng 02","tháng 03","tháng 04","tháng 05","tháng 06","tháng 07","tháng 08","tháng 09","tháng 10","tháng 11","tháng 12"]},defaultFormattingWidth:"wide"}),day:pe({values:{narrow:["CN","T2","T3","T4","T5","T6","T7"],short:["CN","Th 2","Th 3","Th 4","Th 5","Th 6","Th 7"],abbreviated:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],wide:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"am",pm:"pm",midnight:"nửa đêm",noon:"tr",morning:"sg",afternoon:"ch",evening:"tối",night:"đêm"},abbreviated:{am:"AM",pm:"PM",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"},wide:{am:"SA",pm:"CH",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"}},defaultWidth:"wide",formattingValues:{narrow:{am:"am",pm:"pm",midnight:"nửa đêm",noon:"tr",morning:"sg",afternoon:"ch",evening:"tối",night:"đêm"},abbreviated:{am:"AM",pm:"PM",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"},wide:{am:"SA",pm:"CH",midnight:"nửa đêm",noon:"giữa trưa",morning:"vào buổi sáng",afternoon:"vào buổi chiều",evening:"vào buổi tối",night:"vào ban đêm"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(tcn|scn)/i,abbreviated:/^(trước CN|sau CN)/i,wide:/^(trước Công Nguyên|sau Công Nguyên)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^t/i,/^s/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^([1234]|i{1,3}v?)/i,abbreviated:/^q([1234]|i{1,3}v?)/i,wide:/^quý ([1234]|i{1,3}v?)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(1|i)$/i,/(2|ii)$/i,/(3|iii)$/i,/(4|iv)$/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^(0?[2-9]|10|11|12|0?1)/i,abbreviated:/^thg[ _]?(0?[1-9](?!\d)|10|11|12)/i,wide:/^tháng ?(Một|Hai|Ba|Tư|Năm|Sáu|Bảy|Tám|Chín|Mười|Mười ?Một|Mười ?Hai|0?[1-9](?!\d)|10|11|12)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/0?1$/i,/0?2/i,/3/,/4/,/5/,/6/,/7/,/8/,/9/,/10/,/11/,/12/],abbreviated:[/^thg[ _]?0?1(?!\d)/i,/^thg[ _]?0?2/i,/^thg[ _]?0?3/i,/^thg[ _]?0?4/i,/^thg[ _]?0?5/i,/^thg[ _]?0?6/i,/^thg[ _]?0?7/i,/^thg[ _]?0?8/i,/^thg[ _]?0?9/i,/^thg[ _]?10/i,/^thg[ _]?11/i,/^thg[ _]?12/i],wide:[/^tháng ?(Một|0?1(?!\d))/i,/^tháng ?(Hai|0?2)/i,/^tháng ?(Ba|0?3)/i,/^tháng ?(Tư|0?4)/i,/^tháng ?(Năm|0?5)/i,/^tháng ?(Sáu|0?6)/i,/^tháng ?(Bảy|0?7)/i,/^tháng ?(Tám|0?8)/i,/^tháng ?(Chín|0?9)/i,/^tháng ?(Mười|10)/i,/^tháng ?(Mười ?Một|11)/i,/^tháng ?(Mười ?Hai|12)/i]},defaultParseWidth:"wide"}),day:be({matchPatterns:{narrow:/^(CN|T2|T3|T4|T5|T6|T7)/i,short:/^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,abbreviated:/^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,wide:/^(Chủ ?Nhật|Chúa ?Nhật|thứ ?Hai|thứ ?Ba|thứ ?Tư|thứ ?Năm|thứ ?Sáu|thứ ?Bảy)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],short:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],abbreviated:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],wide:[/(Chủ|Chúa) ?Nhật/i,/Hai/i,/Ba/i,/Tư/i,/Năm/i,/Sáu/i,/Bảy/i]},defaultParseWidth:"wide"}),dayPeriod:be({matchPatterns:{narrow:/^(a|p|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,abbreviated:/^(am|pm|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,wide:/^(ch[^i]*|sa|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^(a|sa)/i,pm:/^(p|ch[^i]*)/i,midnight:/nửa đêm/i,noon:/trưa/i,morning:/sáng/i,afternoon:/chiều/i,evening:/tối/i,night:/^đêm/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}},At={lessThanXSeconds:{one:"少於 1 秒",other:"少於 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分鐘",lessThanXMinutes:{one:"少於 1 分鐘",other:"少於 {{count}} 分鐘"},xMinutes:{one:"1 分鐘",other:"{{count}} 分鐘"},xHours:{one:"1 小時",other:"{{count}} 小時"},aboutXHours:{one:"大約 1 小時",other:"大約 {{count}} 小時"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大約 1 個星期",other:"大約 {{count}} 個星期"},xWeeks:{one:"1 個星期",other:"{{count}} 個星期"},aboutXMonths:{one:"大約 1 個月",other:"大約 {{count}} 個月"},xMonths:{one:"1 個月",other:"{{count}} 個月"},aboutXYears:{one:"大約 1 年",other:"大約 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超過 1 年",other:"超過 {{count}} 年"},almostXYears:{one:"將近 1 年",other:"將近 {{count}} 年"}},Rt={date:fe({formats:{full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},defaultWidth:"full"}),time:fe({formats:{full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},Dt={lastWeek:"'上個'eeee p",yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:"'下個'eeee p",other:"P"},Ht={code:"zh-TW",formatDistance:(e,t,n)=>{let a;const r=At[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?a+"內":a+"前":a},formatLong:Rt,formatRelative:(e,t,n,a)=>Dt[e],localize:{ordinalNumber:(e,t)=>{const n=Number(e);switch(null==t?void 0:t.unit){case"date":return n+"日";case"hour":return n+"時";case"minute":return n+"分";case"second":return n+"秒";default:return"第 "+n}},era:pe({values:{narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["第一刻","第二刻","第三刻","第四刻"],wide:["第一刻鐘","第二刻鐘","第三刻鐘","第四刻鐘"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},defaultWidth:"wide"}),day:pe({values:{narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["週日","週一","週二","週三","週四","週五","週六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"}},defaultWidth:"wide",formattingValues:{narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(第\s*)?\d+(日|時|分|秒)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^(前)/i,/^(公元)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻鐘/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^週[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},defaultMatchWidth:"wide",parsePatterns:{any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}};function zt(e,t){return e instanceof Date?new e.constructor(t):new Date(t)}function _t(e,t){const n=ye(e);return isNaN(t)?zt(e,NaN):t?(n.setDate(n.getDate()+t),n):n}function Lt(e,t){const n=ye(e);if(isNaN(t))return zt(e,NaN);if(!t)return n;const a=n.getDate(),r=zt(e,n.getTime());r.setMonth(n.getMonth()+t+1,0);return a>=r.getDate()?r:(n.setFullYear(r.getFullYear(),r.getMonth(),a),n)}const qt=6048e5,Ft=36e5;function Bt(e){return ke(e,{weekStartsOn:1})}function Gt(e){const t=ye(e),n=t.getFullYear(),a=zt(e,0);a.setFullYear(n+1,0,4),a.setHours(0,0,0,0);const r=Bt(a),i=zt(e,0);i.setFullYear(n,0,4),i.setHours(0,0,0,0);const o=Bt(i);return t.getTime()>=r.getTime()?n+1:t.getTime()>=o.getTime()?n:n-1}function It(e){const t=ye(e);return t.setHours(0,0,0,0),t}function Xt(e){const t=ye(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-+n}function Yt(e,t){const n=It(e),a=It(t),r=+n-Xt(n),i=+a-Xt(a);return Math.round((r-i)/864e5)}function Ut(e,t){return function(e,t){return zt(e,+ye(e)+t)}(e,6e4*t)}function Jt(e,t){return Lt(e,3*t)}function Qt(e,t){return Lt(e,12*t)}function Kt(e,t){return+It(e)===+It(t)}function Vt(e){if(!(t=e,t instanceof Date||"object"==typeof t&&"[object Date]"===Object.prototype.toString.call(t)||"number"==typeof e))return!1;var t;const n=ye(e);return!isNaN(Number(n))}function $t(e){const t=ye(e);return Math.trunc(t.getMonth()/3)+1}function Zt(e,t){const n=ye(e),a=ye(t),r=en(n,a),i=Math.abs(Yt(n,a));n.setDate(n.getDate()-r*i);const o=r*(i-Number(en(n,a)===-r));return 0===o?0:o}function en(e,t){const n=e.getFullYear()-t.getFullYear()||e.getMonth()-t.getMonth()||e.getDate()-t.getDate()||e.getHours()-t.getHours()||e.getMinutes()-t.getMinutes()||e.getSeconds()-t.getSeconds()||e.getMilliseconds()-t.getMilliseconds();return n<0?-1:n>0?1:n}function tn(e,t,n){const a=function(e,t){return+ye(e)-+ye(t)}(e,t)/Ft;return(r=null==n?void 0:n.roundingMethod,e=>{const t=(r?Math[r]:Math.trunc)(e);return 0===t?0:t})(a);var r}function nn(e){const t=ye(e);return t.setHours(23,59,59,999),t}function an(e){const t=ye(e);return t.setSeconds(0,0),t}function rn(e){const t=ye(e),n=t.getMonth(),a=n-n%3;return t.setMonth(a,1),t.setHours(0,0,0,0),t}function on(e){const t=ye(e);return t.setDate(1),t.setHours(0,0,0,0),t}function sn(e){const t=ye(e),n=zt(e,0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}function un(e){const t=ye(e),n=+Bt(t)-+function(e){const t=Gt(e),n=zt(e,0);return n.setFullYear(t,0,4),n.setHours(0,0,0,0),Bt(n)}(t);return Math.round(n/qt)+1}function dn(e,t){var n,a,r,i,o,s,u,d;const c=ye(e),l=c.getFullYear(),h=Me(),m=null!=(d=null!=(u=null!=(i=null!=(r=null==t?void 0:t.firstWeekContainsDate)?r:null==(a=null==(n=null==t?void 0:t.locale)?void 0:n.options)?void 0:a.firstWeekContainsDate)?i:h.firstWeekContainsDate)?u:null==(s=null==(o=h.locale)?void 0:o.options)?void 0:s.firstWeekContainsDate)?d:1,g=zt(e,0);g.setFullYear(l+1,0,m),g.setHours(0,0,0,0);const f=ke(g,t),p=zt(e,0);p.setFullYear(l,0,m),p.setHours(0,0,0,0);const b=ke(p,t);return c.getTime()>=f.getTime()?l+1:c.getTime()>=b.getTime()?l:l-1}function cn(e,t){const n=ye(e),a=+ke(n,t)-+function(e,t){var n,a,r,i,o,s,u,d;const c=Me(),l=null!=(d=null!=(u=null!=(i=null!=(r=null==t?void 0:t.firstWeekContainsDate)?r:null==(a=null==(n=null==t?void 0:t.locale)?void 0:n.options)?void 0:a.firstWeekContainsDate)?i:c.firstWeekContainsDate)?u:null==(s=null==(o=c.locale)?void 0:o.options)?void 0:s.firstWeekContainsDate)?d:1,h=dn(e,t),m=zt(e,0);return m.setFullYear(h,0,l),m.setHours(0,0,0,0),ke(m,t)}(n,t);return Math.round(a/qt)+1}function ln(e,t){return(e<0?"-":"")+Math.abs(e).toString().padStart(t,"0")}const hn={y(e,t){const n=e.getFullYear(),a=n>0?n:1-n;return ln("yy"===t?a%100:a,t.length)},M(e,t){const n=e.getMonth();return"M"===t?String(n+1):ln(n+1,2)},d:(e,t)=>ln(e.getDate(),t.length),a(e,t){const n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];default:return"am"===n?"a.m.":"p.m."}},h:(e,t)=>ln(e.getHours()%12||12,t.length),H:(e,t)=>ln(e.getHours(),t.length),m:(e,t)=>ln(e.getMinutes(),t.length),s:(e,t)=>ln(e.getSeconds(),t.length),S(e,t){const n=t.length,a=e.getMilliseconds();return ln(Math.trunc(a*Math.pow(10,n-3)),t.length)}},mn="midnight",gn="noon",fn="morning",pn="afternoon",bn="evening",wn="night",yn={G:function(e,t,n){const a=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(a,{width:"abbreviated"});case"GGGGG":return n.era(a,{width:"narrow"});default:return n.era(a,{width:"wide"})}},y:function(e,t,n){if("yo"===t){const t=e.getFullYear(),a=t>0?t:1-t;return n.ordinalNumber(a,{unit:"year"})}return hn.y(e,t)},Y:function(e,t,n,a){const r=dn(e,a),i=r>0?r:1-r;if("YY"===t){return ln(i%100,2)}return"Yo"===t?n.ordinalNumber(i,{unit:"year"}):ln(i,t.length)},R:function(e,t){return ln(Gt(e),t.length)},u:function(e,t){return ln(e.getFullYear(),t.length)},Q:function(e,t,n){const a=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(a);case"QQ":return ln(a,2);case"Qo":return n.ordinalNumber(a,{unit:"quarter"});case"QQQ":return n.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(a,{width:"narrow",context:"formatting"});default:return n.quarter(a,{width:"wide",context:"formatting"})}},q:function(e,t,n){const a=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(a);case"qq":return ln(a,2);case"qo":return n.ordinalNumber(a,{unit:"quarter"});case"qqq":return n.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(a,{width:"narrow",context:"standalone"});default:return n.quarter(a,{width:"wide",context:"standalone"})}},M:function(e,t,n){const a=e.getMonth();switch(t){case"M":case"MM":return hn.M(e,t);case"Mo":return n.ordinalNumber(a+1,{unit:"month"});case"MMM":return n.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(a,{width:"narrow",context:"formatting"});default:return n.month(a,{width:"wide",context:"formatting"})}},L:function(e,t,n){const a=e.getMonth();switch(t){case"L":return String(a+1);case"LL":return ln(a+1,2);case"Lo":return n.ordinalNumber(a+1,{unit:"month"});case"LLL":return n.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(a,{width:"narrow",context:"standalone"});default:return n.month(a,{width:"wide",context:"standalone"})}},w:function(e,t,n,a){const r=cn(e,a);return"wo"===t?n.ordinalNumber(r,{unit:"week"}):ln(r,t.length)},I:function(e,t,n){const a=un(e);return"Io"===t?n.ordinalNumber(a,{unit:"week"}):ln(a,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getDate(),{unit:"date"}):hn.d(e,t)},D:function(e,t,n){const a=function(e){const t=ye(e);return Yt(t,sn(t))+1}(e);return"Do"===t?n.ordinalNumber(a,{unit:"dayOfYear"}):ln(a,t.length)},E:function(e,t,n){const a=e.getDay();switch(t){case"E":case"EE":case"EEE":return n.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},e:function(e,t,n,a){const r=e.getDay(),i=(r-a.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return ln(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},c:function(e,t,n,a){const r=e.getDay(),i=(r-a.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return ln(i,t.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(r,{width:"narrow",context:"standalone"});case"cccccc":return n.day(r,{width:"short",context:"standalone"});default:return n.day(r,{width:"wide",context:"standalone"})}},i:function(e,t,n){const a=e.getDay(),r=0===a?7:a;switch(t){case"i":return String(r);case"ii":return ln(r,t.length);case"io":return n.ordinalNumber(r,{unit:"day"});case"iii":return n.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},a:function(e,t,n){const a=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(a,{width:"narrow",context:"formatting"});default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},b:function(e,t,n){const a=e.getHours();let r;switch(r=12===a?gn:0===a?mn:a/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(e,t,n){const a=e.getHours();let r;switch(r=a>=17?bn:a>=12?pn:a>=4?fn:wn,t){case"B":case"BB":case"BBB":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){let t=e.getHours()%12;return 0===t&&(t=12),n.ordinalNumber(t,{unit:"hour"})}return hn.h(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getHours(),{unit:"hour"}):hn.H(e,t)},K:function(e,t,n){const a=e.getHours()%12;return"Ko"===t?n.ordinalNumber(a,{unit:"hour"}):ln(a,t.length)},k:function(e,t,n){let a=e.getHours();return 0===a&&(a=24),"ko"===t?n.ordinalNumber(a,{unit:"hour"}):ln(a,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getMinutes(),{unit:"minute"}):hn.m(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getSeconds(),{unit:"second"}):hn.s(e,t)},S:function(e,t){return hn.S(e,t)},X:function(e,t,n){const a=e.getTimezoneOffset();if(0===a)return"Z";switch(t){case"X":return Mn(a);case"XXXX":case"XX":return kn(a);default:return kn(a,":")}},x:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"x":return Mn(a);case"xxxx":case"xx":return kn(a);default:return kn(a,":")}},O:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+vn(a,":");default:return"GMT"+kn(a,":")}},z:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+vn(a,":");default:return"GMT"+kn(a,":")}},t:function(e,t,n){return ln(Math.trunc(e.getTime()/1e3),t.length)},T:function(e,t,n){return ln(e.getTime(),t.length)}};function vn(e,t=""){const n=e>0?"-":"+",a=Math.abs(e),r=Math.trunc(a/60),i=a%60;return 0===i?n+String(r):n+String(r)+t+ln(i,2)}function Mn(e,t){if(e%60==0){return(e>0?"-":"+")+ln(Math.abs(e)/60,2)}return kn(e,t)}function kn(e,t=""){const n=e>0?"-":"+",a=Math.abs(e);return n+ln(Math.trunc(a/60),2)+t+ln(a%60,2)}const xn=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},Pn=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},Sn={p:Pn,P:(e,t)=>{const n=e.match(/(P+)(p+)?/)||[],a=n[1],r=n[2];if(!r)return xn(e,t);let i;switch(a){case"P":i=t.dateTime({width:"short"});break;case"PP":i=t.dateTime({width:"medium"});break;case"PPP":i=t.dateTime({width:"long"});break;default:i=t.dateTime({width:"full"})}return i.replace("{{date}}",xn(a,t)).replace("{{time}}",Pn(r,t))}},Tn=/^D+$/,En=/^Y+$/,Nn=["D","DD","YY","YYYY"];function Wn(e){return Tn.test(e)}function On(e){return En.test(e)}function Cn(e,t,n){const a=function(e,t,n){const a="Y"===e[0]?"years":"days of the month";return"Use `".concat(e.toLowerCase(),"` instead of `").concat(e,"` (in `").concat(t,"`) for formatting ").concat(a," to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")}(e,t,n);if(console.warn(a),Nn.includes(e))throw new RangeError(a)}const jn=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,An=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Rn=/^'([^]*?)'?$/,Dn=/''/g,Hn=/[a-zA-Z]/;function zn(e,t,n){var a,r,i,o,s,u,d,c,l,h,m,g,f,p,b,w,y,v;const M=Me(),k=null!=(r=null!=(a=null==n?void 0:n.locale)?a:M.locale)?r:Re,x=null!=(h=null!=(l=null!=(u=null!=(s=null==n?void 0:n.firstWeekContainsDate)?s:null==(o=null==(i=null==n?void 0:n.locale)?void 0:i.options)?void 0:o.firstWeekContainsDate)?u:M.firstWeekContainsDate)?l:null==(c=null==(d=M.locale)?void 0:d.options)?void 0:c.firstWeekContainsDate)?h:1,P=null!=(v=null!=(y=null!=(p=null!=(f=null==n?void 0:n.weekStartsOn)?f:null==(g=null==(m=null==n?void 0:n.locale)?void 0:m.options)?void 0:g.weekStartsOn)?p:M.weekStartsOn)?y:null==(w=null==(b=M.locale)?void 0:b.options)?void 0:w.weekStartsOn)?v:0,S=ye(e);if(!Vt(S))throw new RangeError("Invalid time value");let T=t.match(An).map(e=>{const t=e[0];if("p"===t||"P"===t){return(0,Sn[t])(e,k.formatLong)}return e}).join("").match(jn).map(e=>{if("''"===e)return{isToken:!1,value:"'"};const t=e[0];if("'"===t)return{isToken:!1,value:_n(e)};if(yn[t])return{isToken:!0,value:e};if(t.match(Hn))throw new RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}});k.localize.preprocessor&&(T=k.localize.preprocessor(S,T));const E={firstWeekContainsDate:x,weekStartsOn:P,locale:k};return T.map(a=>{if(!a.isToken)return a.value;const r=a.value;(!(null==n?void 0:n.useAdditionalWeekYearTokens)&&On(r)||!(null==n?void 0:n.useAdditionalDayOfYearTokens)&&Wn(r))&&Cn(r,t,String(e));return(0,yn[r[0]])(S,r,k.localize,E)}).join("")}function _n(e){const t=e.match(Rn);return t?t[1].replace(Dn,"'"):e}function Ln(e){return ye(e).getDate()}function qn(e){return ye(e).getDay()}function Fn(){return Object.assign({},Me())}function Bn(e){return ye(e).getHours()}function Gn(e){return ye(e).getMilliseconds()}function In(e){return ye(e).getMinutes()}function Xn(e){return ye(e).getMonth()}function Yn(e){return ye(e).getSeconds()}function Un(e){return ye(e).getTime()}function Jn(e){return ye(e).getFullYear()}function Qn(e,t){const n=ye(e),a=ye(t);return n.getTime()>a.getTime()}function Kn(e,t){return+ye(e)<+ye(t)}class Vn{constructor(){t(this,"subPriority",0)}validate(e,t){return!0}}class $n extends Vn{constructor(e,t,n,a,r){super(),this.value=e,this.validateValue=t,this.setValue=n,this.priority=a,r&&(this.subPriority=r)}validate(e,t){return this.validateValue(e,this.value,t)}set(e,t,n){return this.setValue(e,t,this.value,n)}}class Zn extends Vn{constructor(){super(...arguments),t(this,"priority",10),t(this,"subPriority",-1)}set(e,t){return t.timestampIsSet?e:zt(e,function(e,t){const n=t instanceof Date?zt(t,0):new t(0);return n.setFullYear(e.getFullYear(),e.getMonth(),e.getDate()),n.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()),n}(e,Date))}}class ea{run(e,t,n,a){const r=this.parse(e,t,n,a);return r?{setter:new $n(r.value,this.validate,this.set,this.priority,this.subPriority),rest:r.rest}:null}validate(e,t,n){return!0}}const ta=/^(1[0-2]|0?\d)/,na=/^(3[0-1]|[0-2]?\d)/,aa=/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,ra=/^(5[0-3]|[0-4]?\d)/,ia=/^(2[0-3]|[0-1]?\d)/,oa=/^(2[0-4]|[0-1]?\d)/,sa=/^(1[0-1]|0?\d)/,ua=/^(1[0-2]|0?\d)/,da=/^[0-5]?\d/,ca=/^[0-5]?\d/,la=/^\d/,ha=/^\d{1,2}/,ma=/^\d{1,3}/,ga=/^\d{1,4}/,fa=/^-?\d+/,pa=/^-?\d/,ba=/^-?\d{1,2}/,wa=/^-?\d{1,3}/,ya=/^-?\d{1,4}/,va=/^([+-])(\d{2})(\d{2})?|Z/,Ma=/^([+-])(\d{2})(\d{2})|Z/,ka=/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,xa=/^([+-])(\d{2}):(\d{2})|Z/,Pa=/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/;function Sa(e,t){return e?{value:t(e.value),rest:e.rest}:e}function Ta(e,t){const n=t.match(e);return n?{value:parseInt(n[0],10),rest:t.slice(n[0].length)}:null}function Ea(e,t){const n=t.match(e);if(!n)return null;if("Z"===n[0])return{value:0,rest:t.slice(1)};const a="+"===n[1]?1:-1,r=n[2]?parseInt(n[2],10):0,i=n[3]?parseInt(n[3],10):0,o=n[5]?parseInt(n[5],10):0;return{value:a*(r*Ft+6e4*i+1e3*o),rest:t.slice(n[0].length)}}function Na(e){return Ta(fa,e)}function Wa(e,t){switch(e){case 1:return Ta(la,t);case 2:return Ta(ha,t);case 3:return Ta(ma,t);case 4:return Ta(ga,t);default:return Ta(new RegExp("^\\d{1,"+e+"}"),t)}}function Oa(e,t){switch(e){case 1:return Ta(pa,t);case 2:return Ta(ba,t);case 3:return Ta(wa,t);case 4:return Ta(ya,t);default:return Ta(new RegExp("^-?\\d{1,"+e+"}"),t)}}function Ca(e){switch(e){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;default:return 0}}function ja(e,t){const n=t>0,a=n?t:1-t;let r;if(a<=50)r=e||100;else{const t=a+50;r=e+100*Math.trunc(t/100)-(e>=t%100?100:0)}return n?r:1-r}function Aa(e){return e%400==0||e%4==0&&e%100!=0}const Ra=[31,28,31,30,31,30,31,31,30,31,30,31],Da=[31,29,31,30,31,30,31,31,30,31,30,31];function Ha(e,t,n){var a,r,i,o,s,u,d,c;const l=Me(),h=null!=(c=null!=(d=null!=(o=null!=(i=null==n?void 0:n.weekStartsOn)?i:null==(r=null==(a=null==n?void 0:n.locale)?void 0:a.options)?void 0:r.weekStartsOn)?o:l.weekStartsOn)?d:null==(u=null==(s=l.locale)?void 0:s.options)?void 0:u.weekStartsOn)?c:0,m=ye(e),g=m.getDay(),f=7-h;return _t(m,t<0||t>6?t-(g+f)%7:((t%7+7)%7+f)%7-(g+f)%7)}function za(e,t){const n=ye(e),a=function(e){let t=ye(e).getDay();return 0===t&&(t=7),t}(n);return _t(n,t-a)}const _a={G:new class extends ea{constructor(){super(...arguments),t(this,"priority",140),t(this,"incompatibleTokens",["R","u","t","T"])}parse(e,t,n){switch(t){case"G":case"GG":case"GGG":return n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"});case"GGGGG":return n.era(e,{width:"narrow"});default:return n.era(e,{width:"wide"})||n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"})}}set(e,t,n){return t.era=n,e.setFullYear(n,0,1),e.setHours(0,0,0,0),e}},y:new class extends ea{constructor(){super(...arguments),t(this,"priority",130),t(this,"incompatibleTokens",["Y","R","u","w","I","i","e","c","t","T"])}parse(e,t,n){const a=e=>({year:e,isTwoDigitYear:"yy"===t});switch(t){case"y":return Sa(Wa(4,e),a);case"yo":return Sa(n.ordinalNumber(e,{unit:"year"}),a);default:return Sa(Wa(t.length,e),a)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,n){const a=e.getFullYear();if(n.isTwoDigitYear){const t=ja(n.year,a);return e.setFullYear(t,0,1),e.setHours(0,0,0,0),e}const r="era"in t&&1!==t.era?1-n.year:n.year;return e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}},Y:new class extends ea{constructor(){super(...arguments),t(this,"priority",130),t(this,"incompatibleTokens",["y","R","u","Q","q","M","L","I","d","D","i","t","T"])}parse(e,t,n){const a=e=>({year:e,isTwoDigitYear:"YY"===t});switch(t){case"Y":return Sa(Wa(4,e),a);case"Yo":return Sa(n.ordinalNumber(e,{unit:"year"}),a);default:return Sa(Wa(t.length,e),a)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,n,a){const r=dn(e,a);if(n.isTwoDigitYear){const t=ja(n.year,r);return e.setFullYear(t,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),ke(e,a)}const i="era"in t&&1!==t.era?1-n.year:n.year;return e.setFullYear(i,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),ke(e,a)}},R:new class extends ea{constructor(){super(...arguments),t(this,"priority",130),t(this,"incompatibleTokens",["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"])}parse(e,t){return Oa("R"===t?4:t.length,e)}set(e,t,n){const a=zt(e,0);return a.setFullYear(n,0,4),a.setHours(0,0,0,0),Bt(a)}},u:new class extends ea{constructor(){super(...arguments),t(this,"priority",130),t(this,"incompatibleTokens",["G","y","Y","R","w","I","i","e","c","t","T"])}parse(e,t){return Oa("u"===t?4:t.length,e)}set(e,t,n){return e.setFullYear(n,0,1),e.setHours(0,0,0,0),e}},Q:new class extends ea{constructor(){super(...arguments),t(this,"priority",120),t(this,"incompatibleTokens",["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,t,n){switch(t){case"Q":case"QQ":return Wa(t.length,e);case"Qo":return n.ordinalNumber(e,{unit:"quarter"});case"QQQ":return n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return n.quarter(e,{width:"narrow",context:"formatting"});default:return n.quarter(e,{width:"wide",context:"formatting"})||n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=1&&t<=4}set(e,t,n){return e.setMonth(3*(n-1),1),e.setHours(0,0,0,0),e}},q:new class extends ea{constructor(){super(...arguments),t(this,"priority",120),t(this,"incompatibleTokens",["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,t,n){switch(t){case"q":case"qq":return Wa(t.length,e);case"qo":return n.ordinalNumber(e,{unit:"quarter"});case"qqq":return n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return n.quarter(e,{width:"narrow",context:"standalone"});default:return n.quarter(e,{width:"wide",context:"standalone"})||n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=1&&t<=4}set(e,t,n){return e.setMonth(3*(n-1),1),e.setHours(0,0,0,0),e}},M:new class extends ea{constructor(){super(...arguments),t(this,"incompatibleTokens",["Y","R","q","Q","L","w","I","D","i","e","c","t","T"]),t(this,"priority",110)}parse(e,t,n){const a=e=>e-1;switch(t){case"M":return Sa(Ta(ta,e),a);case"MM":return Sa(Wa(2,e),a);case"Mo":return Sa(n.ordinalNumber(e,{unit:"month"}),a);case"MMM":return n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return n.month(e,{width:"narrow",context:"formatting"});default:return n.month(e,{width:"wide",context:"formatting"})||n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.setMonth(n,1),e.setHours(0,0,0,0),e}},L:new class extends ea{constructor(){super(...arguments),t(this,"priority",110),t(this,"incompatibleTokens",["Y","R","q","Q","M","w","I","D","i","e","c","t","T"])}parse(e,t,n){const a=e=>e-1;switch(t){case"L":return Sa(Ta(ta,e),a);case"LL":return Sa(Wa(2,e),a);case"Lo":return Sa(n.ordinalNumber(e,{unit:"month"}),a);case"LLL":return n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return n.month(e,{width:"narrow",context:"standalone"});default:return n.month(e,{width:"wide",context:"standalone"})||n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.setMonth(n,1),e.setHours(0,0,0,0),e}},w:new class extends ea{constructor(){super(...arguments),t(this,"priority",100),t(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","i","t","T"])}parse(e,t,n){switch(t){case"w":return Ta(ra,e);case"wo":return n.ordinalNumber(e,{unit:"week"});default:return Wa(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,n,a){return ke(function(e,t,n){const a=ye(e),r=cn(a,n)-t;return a.setDate(a.getDate()-7*r),a}(e,n,a),a)}},I:new class extends ea{constructor(){super(...arguments),t(this,"priority",100),t(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"])}parse(e,t,n){switch(t){case"I":return Ta(ra,e);case"Io":return n.ordinalNumber(e,{unit:"week"});default:return Wa(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,n){return Bt(function(e,t){const n=ye(e),a=un(n)-t;return n.setDate(n.getDate()-7*a),n}(e,n))}},d:new class extends ea{constructor(){super(...arguments),t(this,"priority",90),t(this,"subPriority",1),t(this,"incompatibleTokens",["Y","R","q","Q","w","I","D","i","e","c","t","T"])}parse(e,t,n){switch(t){case"d":return Ta(na,e);case"do":return n.ordinalNumber(e,{unit:"date"});default:return Wa(t.length,e)}}validate(e,t){const n=Aa(e.getFullYear()),a=e.getMonth();return n?t>=1&&t<=Da[a]:t>=1&&t<=Ra[a]}set(e,t,n){return e.setDate(n),e.setHours(0,0,0,0),e}},D:new class extends ea{constructor(){super(...arguments),t(this,"priority",90),t(this,"subpriority",1),t(this,"incompatibleTokens",["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"])}parse(e,t,n){switch(t){case"D":case"DD":return Ta(aa,e);case"Do":return n.ordinalNumber(e,{unit:"date"});default:return Wa(t.length,e)}}validate(e,t){return Aa(e.getFullYear())?t>=1&&t<=366:t>=1&&t<=365}set(e,t,n){return e.setMonth(0,n),e.setHours(0,0,0,0),e}},E:new class extends ea{constructor(){super(...arguments),t(this,"priority",90),t(this,"incompatibleTokens",["D","i","e","c","t","T"])}parse(e,t,n){switch(t){case"E":case"EE":case"EEE":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return n.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,a){return(e=Ha(e,n,a)).setHours(0,0,0,0),e}},e:new class extends ea{constructor(){super(...arguments),t(this,"priority",90),t(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"])}parse(e,t,n,a){const r=e=>{const t=7*Math.floor((e-1)/7);return(e+a.weekStartsOn+6)%7+t};switch(t){case"e":case"ee":return Sa(Wa(t.length,e),r);case"eo":return Sa(n.ordinalNumber(e,{unit:"day"}),r);case"eee":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"eeeee":return n.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,a){return(e=Ha(e,n,a)).setHours(0,0,0,0),e}},c:new class extends ea{constructor(){super(...arguments),t(this,"priority",90),t(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"])}parse(e,t,n,a){const r=e=>{const t=7*Math.floor((e-1)/7);return(e+a.weekStartsOn+6)%7+t};switch(t){case"c":case"cc":return Sa(Wa(t.length,e),r);case"co":return Sa(n.ordinalNumber(e,{unit:"day"}),r);case"ccc":return n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});case"ccccc":return n.day(e,{width:"narrow",context:"standalone"});case"cccccc":return n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});default:return n.day(e,{width:"wide",context:"standalone"})||n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,a){return(e=Ha(e,n,a)).setHours(0,0,0,0),e}},i:new class extends ea{constructor(){super(...arguments),t(this,"priority",90),t(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"])}parse(e,t,n){const a=e=>0===e?7:e;switch(t){case"i":case"ii":return Wa(t.length,e);case"io":return n.ordinalNumber(e,{unit:"day"});case"iii":return Sa(n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),a);case"iiiii":return Sa(n.day(e,{width:"narrow",context:"formatting"}),a);case"iiiiii":return Sa(n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),a);default:return Sa(n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),a)}}validate(e,t){return t>=1&&t<=7}set(e,t,n){return(e=za(e,n)).setHours(0,0,0,0),e}},a:new class extends ea{constructor(){super(...arguments),t(this,"priority",80),t(this,"incompatibleTokens",["b","B","H","k","t","T"])}parse(e,t,n){switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(Ca(n),0,0,0),e}},b:new class extends ea{constructor(){super(...arguments),t(this,"priority",80),t(this,"incompatibleTokens",["a","B","H","k","t","T"])}parse(e,t,n){switch(t){case"b":case"bb":case"bbb":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(Ca(n),0,0,0),e}},B:new class extends ea{constructor(){super(...arguments),t(this,"priority",80),t(this,"incompatibleTokens",["a","b","t","T"])}parse(e,t,n){switch(t){case"B":case"BB":case"BBB":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(Ca(n),0,0,0),e}},h:new class extends ea{constructor(){super(...arguments),t(this,"priority",70),t(this,"incompatibleTokens",["H","K","k","t","T"])}parse(e,t,n){switch(t){case"h":return Ta(ua,e);case"ho":return n.ordinalNumber(e,{unit:"hour"});default:return Wa(t.length,e)}}validate(e,t){return t>=1&&t<=12}set(e,t,n){const a=e.getHours()>=12;return a&&n<12?e.setHours(n+12,0,0,0):a||12!==n?e.setHours(n,0,0,0):e.setHours(0,0,0,0),e}},H:new class extends ea{constructor(){super(...arguments),t(this,"priority",70),t(this,"incompatibleTokens",["a","b","h","K","k","t","T"])}parse(e,t,n){switch(t){case"H":return Ta(ia,e);case"Ho":return n.ordinalNumber(e,{unit:"hour"});default:return Wa(t.length,e)}}validate(e,t){return t>=0&&t<=23}set(e,t,n){return e.setHours(n,0,0,0),e}},K:new class extends ea{constructor(){super(...arguments),t(this,"priority",70),t(this,"incompatibleTokens",["h","H","k","t","T"])}parse(e,t,n){switch(t){case"K":return Ta(sa,e);case"Ko":return n.ordinalNumber(e,{unit:"hour"});default:return Wa(t.length,e)}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.getHours()>=12&&n<12?e.setHours(n+12,0,0,0):e.setHours(n,0,0,0),e}},k:new class extends ea{constructor(){super(...arguments),t(this,"priority",70),t(this,"incompatibleTokens",["a","b","h","H","K","t","T"])}parse(e,t,n){switch(t){case"k":return Ta(oa,e);case"ko":return n.ordinalNumber(e,{unit:"hour"});default:return Wa(t.length,e)}}validate(e,t){return t>=1&&t<=24}set(e,t,n){const a=n<=24?n%24:n;return e.setHours(a,0,0,0),e}},m:new class extends ea{constructor(){super(...arguments),t(this,"priority",60),t(this,"incompatibleTokens",["t","T"])}parse(e,t,n){switch(t){case"m":return Ta(da,e);case"mo":return n.ordinalNumber(e,{unit:"minute"});default:return Wa(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,n){return e.setMinutes(n,0,0),e}},s:new class extends ea{constructor(){super(...arguments),t(this,"priority",50),t(this,"incompatibleTokens",["t","T"])}parse(e,t,n){switch(t){case"s":return Ta(ca,e);case"so":return n.ordinalNumber(e,{unit:"second"});default:return Wa(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,n){return e.setSeconds(n,0),e}},S:new class extends ea{constructor(){super(...arguments),t(this,"priority",30),t(this,"incompatibleTokens",["t","T"])}parse(e,t){return Sa(Wa(t.length,e),e=>Math.trunc(e*Math.pow(10,3-t.length)))}set(e,t,n){return e.setMilliseconds(n),e}},X:new class extends ea{constructor(){super(...arguments),t(this,"priority",10),t(this,"incompatibleTokens",["t","T","x"])}parse(e,t){switch(t){case"X":return Ea(va,e);case"XX":return Ea(Ma,e);case"XXXX":return Ea(ka,e);case"XXXXX":return Ea(Pa,e);default:return Ea(xa,e)}}set(e,t,n){return t.timestampIsSet?e:zt(e,e.getTime()-Xt(e)-n)}},x:new class extends ea{constructor(){super(...arguments),t(this,"priority",10),t(this,"incompatibleTokens",["t","T","X"])}parse(e,t){switch(t){case"x":return Ea(va,e);case"xx":return Ea(Ma,e);case"xxxx":return Ea(ka,e);case"xxxxx":return Ea(Pa,e);default:return Ea(xa,e)}}set(e,t,n){return t.timestampIsSet?e:zt(e,e.getTime()-Xt(e)-n)}},t:new class extends ea{constructor(){super(...arguments),t(this,"priority",40),t(this,"incompatibleTokens","*")}parse(e){return Na(e)}set(e,t,n){return[zt(e,1e3*n),{timestampIsSet:!0}]}},T:new class extends ea{constructor(){super(...arguments),t(this,"priority",20),t(this,"incompatibleTokens","*")}parse(e){return Na(e)}set(e,t,n){return[zt(e,n),{timestampIsSet:!0}]}}},La=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,qa=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Fa=/^'([^]*?)'?$/,Ba=/''/g,Ga=/\S/,Ia=/[a-zA-Z]/;function Xa(e,t,n,a){var r,i,o,s,u,d,c,l,h,m,g,f,p,b,w,y,v,M;const k=Fn(),x=null!=(i=null!=(r=null==a?void 0:a.locale)?r:k.locale)?i:Re,P=null!=(m=null!=(h=null!=(d=null!=(u=null==a?void 0:a.firstWeekContainsDate)?u:null==(s=null==(o=null==a?void 0:a.locale)?void 0:o.options)?void 0:s.firstWeekContainsDate)?d:k.firstWeekContainsDate)?h:null==(l=null==(c=k.locale)?void 0:c.options)?void 0:l.firstWeekContainsDate)?m:1,S=null!=(M=null!=(v=null!=(b=null!=(p=null==a?void 0:a.weekStartsOn)?p:null==(f=null==(g=null==a?void 0:a.locale)?void 0:g.options)?void 0:f.weekStartsOn)?b:k.weekStartsOn)?v:null==(y=null==(w=k.locale)?void 0:w.options)?void 0:y.weekStartsOn)?M:0;if(""===t)return""===e?ye(n):zt(n,NaN);const T={firstWeekContainsDate:P,weekStartsOn:S,locale:x},E=[new Zn],N=t.match(qa).map(e=>{const t=e[0];if(t in Sn){return(0,Sn[t])(e,x.formatLong)}return e}).join("").match(La),W=[];for(let A of N){!(null==a?void 0:a.useAdditionalWeekYearTokens)&&On(A)&&Cn(A,t,e),!(null==a?void 0:a.useAdditionalDayOfYearTokens)&&Wn(A)&&Cn(A,t,e);const r=A[0],i=_a[r];if(i){const{incompatibleTokens:t}=i;if(Array.isArray(t)){const e=W.find(e=>t.includes(e.token)||e.token===r);if(e)throw new RangeError("The format string mustn't contain `".concat(e.fullToken,"` and `").concat(A,"` at the same time"))}else if("*"===i.incompatibleTokens&&W.length>0)throw new RangeError("The format string mustn't contain `".concat(A,"` and any other token at the same time"));W.push({token:r,fullToken:A});const a=i.run(e,A,x.match,T);if(!a)return zt(n,NaN);E.push(a.setter),e=a.rest}else{if(r.match(Ia))throw new RangeError("Format string contains an unescaped latin alphabet character `"+r+"`");if("''"===A?A="'":"'"===r&&(A=Ya(A)),0!==e.indexOf(A))return zt(n,NaN);e=e.slice(A.length)}}if(e.length>0&&Ga.test(e))return zt(n,NaN);const O=E.map(e=>e.priority).sort((e,t)=>t-e).filter((e,t,n)=>n.indexOf(e)===t).map(e=>E.filter(t=>t.priority===e).sort((e,t)=>t.subPriority-e.subPriority)).map(e=>e[0]);let C=ye(n);if(isNaN(C.getTime()))return zt(n,NaN);const j={};for(const A of O){if(!A.validate(C,T))return zt(n,NaN);const e=A.set(C,j,T);Array.isArray(e)?(C=e[0],Object.assign(j,e[1])):C=e}return zt(n,C)}function Ya(e){return e.match(Fa)[1].replace(Ba,"'")}function Ua(e){const t=ye(e);return t.setMinutes(0,0,0),t}function Ja(e,t){const n=ye(e),a=ye(t);return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()}function Qa(e,t){return+rn(e)===+rn(t)}function Ka(e){const t=ye(e);return t.setMilliseconds(0),t}function Va(e,t){const n=ye(e),a=ye(t);return n.getFullYear()===a.getFullYear()}function $a(e,t){const n=ye(e),a=n.getFullYear(),r=n.getDate(),i=zt(e,0);i.setFullYear(a,t,15),i.setHours(0,0,0,0);const o=function(e){const t=ye(e),n=t.getFullYear(),a=t.getMonth(),r=zt(e,0);return r.setFullYear(n,a+1,0),r.setHours(0,0,0,0),r.getDate()}(i);return n.setMonth(t,Math.min(r,o)),n}function Za(e,t){let n=ye(e);return isNaN(+n)?zt(e,NaN):(null!=t.year&&n.setFullYear(t.year),null!=t.month&&(n=$a(n,t.month)),null!=t.date&&n.setDate(t.date),null!=t.hours&&n.setHours(t.hours),null!=t.minutes&&n.setMinutes(t.minutes),null!=t.seconds&&n.setSeconds(t.seconds),null!=t.milliseconds&&n.setMilliseconds(t.milliseconds),n)}function er(e,t){const n=ye(e);return n.setHours(t),n}function tr(e,t){const n=ye(e);return n.setMinutes(t),n}function nr(e,t){const n=ye(e),a=t-(Math.trunc(n.getMonth()/3)+1);return $a(n,n.getMonth()+3*a)}function ar(e,t){const n=ye(e);return n.setSeconds(t),n}function rr(e,t){const n=ye(e);return isNaN(+n)?zt(e,NaN):(n.setFullYear(t),n)}function ir(){return It(Date.now())}function or(e,t){return function(){return e.apply(t,arguments)}}const{toString:sr}=Object.prototype,{getPrototypeOf:ur}=Object,{iterator:dr,toStringTag:cr}=Symbol,lr=(e=>t=>{const n=sr.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),hr=e=>(e=e.toLowerCase(),t=>lr(t)===e),mr=e=>t=>typeof t===e,{isArray:gr}=Array,fr=mr("undefined");function pr(e){return null!==e&&!fr(e)&&null!==e.constructor&&!fr(e.constructor)&&yr(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const br=hr("ArrayBuffer");const wr=mr("string"),yr=mr("function"),vr=mr("number"),Mr=e=>null!==e&&"object"==typeof e,kr=e=>{if("object"!==lr(e))return!1;const t=ur(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||cr in e||dr in e)},xr=hr("Date"),Pr=hr("File"),Sr=hr("Blob"),Tr=hr("FileList"),Er=hr("URLSearchParams"),[Nr,Wr,Or,Cr]=["ReadableStream","Request","Response","Headers"].map(hr);function jr(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let a,r;if("object"!=typeof e&&(e=[e]),gr(e))for(a=0,r=e.length;a0;)if(a=n[r],t===a.toLowerCase())return a;return null}const Rr="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Dr=e=>!fr(e)&&e!==Rr;const Hr=(e=>t=>e&&t instanceof e)("undefined"!=typeof Uint8Array&&ur(Uint8Array)),zr=hr("HTMLFormElement"),_r=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Lr=hr("RegExp"),qr=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),a={};jr(n,(n,r)=>{let i;!1!==(i=t(n,r,e))&&(a[r]=i||n)}),Object.defineProperties(e,a)};const Fr=hr("AsyncFunction"),Br=(Gr="function"==typeof setImmediate,Ir=yr(Rr.postMessage),Gr?setImmediate:Ir?(Xr="axios@".concat(Math.random()),Yr=[],Rr.addEventListener("message",({source:e,data:t})=>{e===Rr&&t===Xr&&Yr.length&&Yr.shift()()},!1),e=>{Yr.push(e),Rr.postMessage(Xr,"*")}):e=>setTimeout(e));var Gr,Ir,Xr,Yr;const Ur="undefined"!=typeof queueMicrotask?queueMicrotask.bind(Rr):"undefined"!=typeof process&&process.nextTick||Br,Jr={isArray:gr,isArrayBuffer:br,isBuffer:pr,isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||yr(e.append)&&("formdata"===(t=lr(e))||"object"===t&&yr(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&br(e.buffer),t},isString:wr,isNumber:vr,isBoolean:e=>!0===e||!1===e,isObject:Mr,isPlainObject:kr,isEmptyObject:e=>{if(!Mr(e)||pr(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(t){return!1}},isReadableStream:Nr,isRequest:Wr,isResponse:Or,isHeaders:Cr,isUndefined:fr,isDate:xr,isFile:Pr,isBlob:Sr,isRegExp:Lr,isFunction:yr,isStream:e=>Mr(e)&&yr(e.pipe),isURLSearchParams:Er,isTypedArray:Hr,isFileList:Tr,forEach:jr,merge:function e(){const{caseless:t}=Dr(this)&&this||{},n={},a=(a,r)=>{const i=t&&Ar(n,r)||r;kr(n[i])&&kr(a)?n[i]=e(n[i],a):kr(a)?n[i]=e({},a):gr(a)?n[i]=a.slice():n[i]=a};for(let r=0,i=arguments.length;r(jr(t,(t,a)=>{n&&yr(t)?e[a]=or(t,n):e[a]=t},{allOwnKeys:a}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,a)=>{e.prototype=Object.create(t.prototype,a),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,a)=>{let r,i,o;const s={};if(t=t||{},null==e)return t;do{for(r=Object.getOwnPropertyNames(e),i=r.length;i-- >0;)o=r[i],a&&!a(o,e,t)||s[o]||(t[o]=e[o],s[o]=!0);e=!1!==n&&ur(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:lr,kindOfTest:hr,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const a=e.indexOf(t,n);return-1!==a&&a===n},toArray:e=>{if(!e)return null;if(gr(e))return e;let t=e.length;if(!vr(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[dr]).call(e);let a;for(;(a=n.next())&&!a.done;){const n=a.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const a=[];for(;null!==(n=e.exec(t));)a.push(n);return a},isHTMLForm:zr,hasOwnProperty:_r,hasOwnProp:_r,reduceDescriptors:qr,freezeMethods:e=>{qr(e,(t,n)=>{if(yr(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const a=e[n];yr(a)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))})},toObjectSet:(e,t)=>{const n={},a=e=>{e.forEach(e=>{n[e]=!0})};return gr(e)?a(e):a(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n}),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:Ar,global:Rr,isContextDefined:Dr,isSpecCompliantForm:function(e){return!!(e&&yr(e.append)&&"FormData"===e[cr]&&e[dr])},toJSONObject:e=>{const t=new Array(10),n=(e,a)=>{if(Mr(e)){if(t.indexOf(e)>=0)return;if(pr(e))return e;if(!("toJSON"in e)){t[a]=e;const r=gr(e)?[]:{};return jr(e,(e,t)=>{const i=n(e,a+1);!fr(i)&&(r[t]=i)}),t[a]=void 0,r}}return e};return n(e,0)},isAsyncFn:Fr,isThenable:e=>e&&(Mr(e)||yr(e))&&yr(e.then)&&yr(e.catch),setImmediate:Br,asap:Ur,isIterable:e=>null!=e&&yr(e[dr])};function Qr(e,t,n,a,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),a&&(this.request=a),r&&(this.response=r,this.status=r.status?r.status:null)}Jr.inherits(Qr,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Jr.toJSONObject(this.config),code:this.code,status:this.status}}});const Kr=Qr.prototype,Vr={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Vr[e]={value:e}}),Object.defineProperties(Qr,Vr),Object.defineProperty(Kr,"isAxiosError",{value:!0}),Qr.from=(e,t,n,a,r,i)=>{const o=Object.create(Kr);return Jr.toFlatObject(e,o,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e),Qr.call(o,e.message,t,n,a,r),o.cause=e,o.name=e.name,i&&Object.assign(o,i),o};function $r(e){return Jr.isPlainObject(e)||Jr.isArray(e)}function Zr(e){return Jr.endsWith(e,"[]")?e.slice(0,-2):e}function ei(e,t,n){return e?e.concat(t).map(function(e,t){return e=Zr(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}const ti=Jr.toFlatObject(Jr,{},null,function(e){return/^is[A-Z]/.test(e)});function ni(e,t,n){if(!Jr.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const a=(n=Jr.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!Jr.isUndefined(t[e])})).metaTokens,r=n.visitor||d,i=n.dots,o=n.indexes,s=(n.Blob||"undefined"!=typeof Blob&&Blob)&&Jr.isSpecCompliantForm(t);if(!Jr.isFunction(r))throw new TypeError("visitor must be a function");function u(e){if(null===e)return"";if(Jr.isDate(e))return e.toISOString();if(Jr.isBoolean(e))return e.toString();if(!s&&Jr.isBlob(e))throw new Qr("Blob is not supported. Use a Buffer instead.");return Jr.isArrayBuffer(e)||Jr.isTypedArray(e)?s&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,n,r){let s=e;if(e&&!r&&"object"==typeof e)if(Jr.endsWith(n,"{}"))n=a?n:n.slice(0,-2),e=JSON.stringify(e);else if(Jr.isArray(e)&&function(e){return Jr.isArray(e)&&!e.some($r)}(e)||(Jr.isFileList(e)||Jr.endsWith(n,"[]"))&&(s=Jr.toArray(e)))return n=Zr(n),s.forEach(function(e,a){!Jr.isUndefined(e)&&null!==e&&t.append(!0===o?ei([n],a,i):null===o?n:n+"[]",u(e))}),!1;return!!$r(e)||(t.append(ei(r,n,i),u(e)),!1)}const c=[],l=Object.assign(ti,{defaultVisitor:d,convertValue:u,isVisitable:$r});if(!Jr.isObject(e))throw new TypeError("data must be an object");return function e(n,a){if(!Jr.isUndefined(n)){if(-1!==c.indexOf(n))throw Error("Circular reference detected in "+a.join("."));c.push(n),Jr.forEach(n,function(n,i){!0===(!(Jr.isUndefined(n)||null===n)&&r.call(t,n,Jr.isString(i)?i.trim():i,a,l))&&e(n,a?a.concat(i):[i])}),c.pop()}}(e),t}function ai(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function ri(e,t){this._pairs=[],e&&ni(e,this,t)}const ii=ri.prototype;function oi(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function si(e,t,n){if(!t)return e;const a=n&&n.encode||oi;Jr.isFunction(n)&&(n={serialize:n});const r=n&&n.serialize;let i;if(i=r?r(t,n):Jr.isURLSearchParams(t)?t.toString():new ri(t,n).toString(a),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}ii.append=function(e,t){this._pairs.push([e,t])},ii.toString=function(e){const t=e?function(t){return e.call(this,t,ai)}:ai;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};class ui{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Jr.forEach(this.handlers,function(t){null!==t&&e(t)})}}const di={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},ci={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:ri,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},li="undefined"!=typeof window&&"undefined"!=typeof document,hi="object"==typeof navigator&&navigator||void 0,mi=li&&(!hi||["ReactNative","NativeScript","NS"].indexOf(hi.product)<0),gi="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,fi=li&&window.location.href||"http://localhost",pi={...Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:li,hasStandardBrowserEnv:mi,hasStandardBrowserWebWorkerEnv:gi,navigator:hi,origin:fi},Symbol.toStringTag,{value:"Module"})),...ci};function bi(e){function t(e,n,a,r){let i=e[r++];if("__proto__"===i)return!0;const o=Number.isFinite(+i),s=r>=e.length;if(i=!i&&Jr.isArray(a)?a.length:i,s)return Jr.hasOwnProp(a,i)?a[i]=[a[i],n]:a[i]=n,!o;a[i]&&Jr.isObject(a[i])||(a[i]=[]);return t(e,n,a[i],r)&&Jr.isArray(a[i])&&(a[i]=function(e){const t={},n=Object.keys(e);let a;const r=n.length;let i;for(a=0;a{t(function(e){return Jr.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),a,n,0)}),n}return null}const wi={transitional:di,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",a=n.indexOf("application/json")>-1,r=Jr.isObject(e);r&&Jr.isHTMLForm(e)&&(e=new FormData(e));if(Jr.isFormData(e))return a?JSON.stringify(bi(e)):e;if(Jr.isArrayBuffer(e)||Jr.isBuffer(e)||Jr.isStream(e)||Jr.isFile(e)||Jr.isBlob(e)||Jr.isReadableStream(e))return e;if(Jr.isArrayBufferView(e))return e.buffer;if(Jr.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let i;if(r){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return ni(e,new pi.classes.URLSearchParams,{visitor:function(e,t,n,a){return pi.isNode&&Jr.isBuffer(e)?(this.append(t,e.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)},...t})}(e,this.formSerializer).toString();if((i=Jr.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return ni(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return r||a?(t.setContentType("application/json",!1),function(e,t,n){if(Jr.isString(e))try{return(t||JSON.parse)(e),Jr.trim(e)}catch(a){if("SyntaxError"!==a.name)throw a}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||wi.transitional,n=t&&t.forcedJSONParsing,a="json"===this.responseType;if(Jr.isResponse(e)||Jr.isReadableStream(e))return e;if(e&&Jr.isString(e)&&(n&&!this.responseType||a)){const n=!(t&&t.silentJSONParsing)&&a;try{return JSON.parse(e)}catch(r){if(n){if("SyntaxError"===r.name)throw Qr.from(r,Qr.ERR_BAD_RESPONSE,this,null,this.response);throw r}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:pi.classes.FormData,Blob:pi.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Jr.forEach(["delete","get","head","post","put","patch"],e=>{wi.headers[e]={}});const yi=Jr.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),vi=Symbol("internals");function Mi(e){return e&&String(e).trim().toLowerCase()}function ki(e){return!1===e||null==e?e:Jr.isArray(e)?e.map(ki):String(e)}function xi(e,t,n,a,r){return Jr.isFunction(a)?a.call(this,t,n):(r&&(t=n),Jr.isString(t)?Jr.isString(a)?-1!==t.indexOf(a):Jr.isRegExp(a)?a.test(t):void 0:void 0)}let Pi=class{constructor(e){e&&this.set(e)}set(e,t,n){const a=this;function r(e,t,n){const r=Mi(t);if(!r)throw new Error("header name must be a non-empty string");const i=Jr.findKey(a,r);(!i||void 0===a[i]||!0===n||void 0===n&&!1!==a[i])&&(a[i||t]=ki(e))}const i=(e,t)=>Jr.forEach(e,(e,n)=>r(e,n,t));if(Jr.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(Jr.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i((e=>{const t={};let n,a,r;return e&&e.split("\n").forEach(function(e){r=e.indexOf(":"),n=e.substring(0,r).trim().toLowerCase(),a=e.substring(r+1).trim(),!n||t[n]&&yi[n]||("set-cookie"===n?t[n]?t[n].push(a):t[n]=[a]:t[n]=t[n]?t[n]+", "+a:a)}),t})(e),t);else if(Jr.isObject(e)&&Jr.isIterable(e)){let n,a,r={};for(const t of e){if(!Jr.isArray(t))throw TypeError("Object iterator must return a key-value pair");r[a=t[0]]=(n=r[a])?Jr.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}i(r,t)}else null!=e&&r(t,e,n);return this}get(e,t){if(e=Mi(e)){const n=Jr.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let a;for(;a=n.exec(e);)t[a[1]]=a[2];return t}(e);if(Jr.isFunction(t))return t.call(this,e,n);if(Jr.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Mi(e)){const n=Jr.findKey(this,e);return!(!n||void 0===this[n]||t&&!xi(0,this[n],n,t))}return!1}delete(e,t){const n=this;let a=!1;function r(e){if(e=Mi(e)){const r=Jr.findKey(n,e);!r||t&&!xi(0,n[r],r,t)||(delete n[r],a=!0)}}return Jr.isArray(e)?e.forEach(r):r(e),a}clear(e){const t=Object.keys(this);let n=t.length,a=!1;for(;n--;){const r=t[n];e&&!xi(0,this[r],r,e,!0)||(delete this[r],a=!0)}return a}normalize(e){const t=this,n={};return Jr.forEach(this,(a,r)=>{const i=Jr.findKey(n,r);if(i)return t[i]=ki(a),void delete t[r];const o=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}(r):String(r).trim();o!==r&&delete t[r],t[o]=ki(a),n[o]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Jr.forEach(this,(n,a)=>{null!=n&&!1!==n&&(t[a]=e&&Jr.isArray(n)?n.join(", "):n)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach(e=>n.set(e)),n}static accessor(e){const t=(this[vi]=this[vi]={accessors:{}}).accessors,n=this.prototype;function a(e){const a=Mi(e);t[a]||(!function(e,t){const n=Jr.toCamelCase(" "+t);["get","set","has"].forEach(a=>{Object.defineProperty(e,a+n,{value:function(e,n,r){return this[a].call(this,t,e,n,r)},configurable:!0})})}(n,e),t[a]=!0)}return Jr.isArray(e)?e.forEach(a):a(e),this}};function Si(e,t){const n=this||wi,a=t||n,r=Pi.from(a.headers);let i=a.data;return Jr.forEach(e,function(e){i=e.call(n,i,r.normalize(),t?t.status:void 0)}),r.normalize(),i}function Ti(e){return!(!e||!e.__CANCEL__)}function Ei(e,t,n){Qr.call(this,null==e?"canceled":e,Qr.ERR_CANCELED,t,n),this.name="CanceledError"}function Ni(e,t,n){const a=n.config.validateStatus;n.status&&a&&!a(n.status)?t(new Qr("Request failed with status code "+n.status,[Qr.ERR_BAD_REQUEST,Qr.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}Pi.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Jr.reduceDescriptors(Pi.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),Jr.freezeMethods(Pi),Jr.inherits(Ei,Qr,{__CANCEL__:!0});const Wi=(e,t,n=3)=>{let a=0;const r=function(e,t){e=e||10;const n=new Array(e),a=new Array(e);let r,i=0,o=0;return t=void 0!==t?t:1e3,function(s){const u=Date.now(),d=a[o];r||(r=u),n[i]=s,a[i]=u;let c=o,l=0;for(;c!==i;)l+=n[c++],c%=e;if(i=(i+1)%e,i===o&&(o=(o+1)%e),u-r{r=i,n=null,a&&(clearTimeout(a),a=null),e(...t)};return[(...e)=>{const t=Date.now(),s=t-r;s>=i?o(e,t):(n=e,a||(a=setTimeout(()=>{a=null,o(n)},i-s)))},()=>n&&o(n)]}(n=>{const i=n.loaded,o=n.lengthComputable?n.total:void 0,s=i-a,u=r(s);a=i;e({loaded:i,total:o,progress:o?i/o:void 0,bytes:s,rate:u||void 0,estimated:u&&o&&i<=o?(o-i)/u:void 0,event:n,lengthComputable:null!=o,[t?"download":"upload"]:!0})},n)},Oi=(e,t)=>{const n=null!=e;return[a=>t[0]({lengthComputable:n,total:e,loaded:a}),t[1]]},Ci=e=>(...t)=>Jr.asap(()=>e(...t)),ji=pi.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,pi.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(pi.origin),pi.navigator&&/(msie|trident)/i.test(pi.navigator.userAgent)):()=>!0,Ai=pi.hasStandardBrowserEnv?{write(e,t,n,a,r,i){const o=[e+"="+encodeURIComponent(t)];Jr.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),Jr.isString(a)&&o.push("path="+a),Jr.isString(r)&&o.push("domain="+r),!0===i&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Ri(e,t,n){let a=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e&&(a||0==n)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Di=e=>e instanceof Pi?{...e}:e;function Hi(e,t){t=t||{};const n={};function a(e,t,n,a){return Jr.isPlainObject(e)&&Jr.isPlainObject(t)?Jr.merge.call({caseless:a},e,t):Jr.isPlainObject(t)?Jr.merge({},t):Jr.isArray(t)?t.slice():t}function r(e,t,n,r){return Jr.isUndefined(t)?Jr.isUndefined(e)?void 0:a(void 0,e,0,r):a(e,t,0,r)}function i(e,t){if(!Jr.isUndefined(t))return a(void 0,t)}function o(e,t){return Jr.isUndefined(t)?Jr.isUndefined(e)?void 0:a(void 0,e):a(void 0,t)}function s(n,r,i){return i in t?a(n,r):i in e?a(void 0,n):void 0}const u={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:s,headers:(e,t,n)=>r(Di(e),Di(t),0,!0)};return Jr.forEach(Object.keys({...e,...t}),function(a){const i=u[a]||r,o=i(e[a],t[a],a);Jr.isUndefined(o)&&i!==s||(n[a]=o)}),n}const zi=e=>{const t=Hi({},e);let n,{data:a,withXSRFToken:r,xsrfHeaderName:i,xsrfCookieName:o,headers:s,auth:u}=t;if(t.headers=s=Pi.from(s),t.url=si(Ri(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),u&&s.set("Authorization","Basic "+btoa((u.username||"")+":"+(u.password?unescape(encodeURIComponent(u.password)):""))),Jr.isFormData(a))if(pi.hasStandardBrowserEnv||pi.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(!1!==(n=s.getContentType())){const[e,...t]=n?n.split(";").map(e=>e.trim()).filter(Boolean):[];s.setContentType([e||"multipart/form-data",...t].join("; "))}if(pi.hasStandardBrowserEnv&&(r&&Jr.isFunction(r)&&(r=r(t)),r||!1!==r&&ji(t.url))){const e=i&&o&&Ai.read(o);e&&s.set(i,e)}return t},_i="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,n){const a=zi(e);let r=a.data;const i=Pi.from(a.headers).normalize();let o,s,u,d,c,{responseType:l,onUploadProgress:h,onDownloadProgress:m}=a;function g(){d&&d(),c&&c(),a.cancelToken&&a.cancelToken.unsubscribe(o),a.signal&&a.signal.removeEventListener("abort",o)}let f=new XMLHttpRequest;function p(){if(!f)return;const a=Pi.from("getAllResponseHeaders"in f&&f.getAllResponseHeaders());Ni(function(e){t(e),g()},function(e){n(e),g()},{data:l&&"text"!==l&&"json"!==l?f.response:f.responseText,status:f.status,statusText:f.statusText,headers:a,config:e,request:f}),f=null}f.open(a.method.toUpperCase(),a.url,!0),f.timeout=a.timeout,"onloadend"in f?f.onloadend=p:f.onreadystatechange=function(){f&&4===f.readyState&&(0!==f.status||f.responseURL&&0===f.responseURL.indexOf("file:"))&&setTimeout(p)},f.onabort=function(){f&&(n(new Qr("Request aborted",Qr.ECONNABORTED,e,f)),f=null)},f.onerror=function(){n(new Qr("Network Error",Qr.ERR_NETWORK,e,f)),f=null},f.ontimeout=function(){let t=a.timeout?"timeout of "+a.timeout+"ms exceeded":"timeout exceeded";const r=a.transitional||di;a.timeoutErrorMessage&&(t=a.timeoutErrorMessage),n(new Qr(t,r.clarifyTimeoutError?Qr.ETIMEDOUT:Qr.ECONNABORTED,e,f)),f=null},void 0===r&&i.setContentType(null),"setRequestHeader"in f&&Jr.forEach(i.toJSON(),function(e,t){f.setRequestHeader(t,e)}),Jr.isUndefined(a.withCredentials)||(f.withCredentials=!!a.withCredentials),l&&"json"!==l&&(f.responseType=a.responseType),m&&([u,c]=Wi(m,!0),f.addEventListener("progress",u)),h&&f.upload&&([s,d]=Wi(h),f.upload.addEventListener("progress",s),f.upload.addEventListener("loadend",d)),(a.cancelToken||a.signal)&&(o=t=>{f&&(n(!t||t.type?new Ei(null,e,f):t),f.abort(),f=null)},a.cancelToken&&a.cancelToken.subscribe(o),a.signal&&(a.signal.aborted?o():a.signal.addEventListener("abort",o)));const b=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(a.url);b&&-1===pi.protocols.indexOf(b)?n(new Qr("Unsupported protocol "+b+":",Qr.ERR_BAD_REQUEST,e)):f.send(r||null)})},Li=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,a=new AbortController;const r=function(e){if(!n){n=!0,o();const t=e instanceof Error?e:this.reason;a.abort(t instanceof Qr?t:new Ei(t instanceof Error?t.message:t))}};let i=t&&setTimeout(()=>{i=null,r(new Qr("timeout ".concat(t," of ms exceeded"),Qr.ETIMEDOUT))},t);const o=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(r):e.removeEventListener("abort",r)}),e=null)};e.forEach(e=>e.addEventListener("abort",r));const{signal:s}=a;return s.unsubscribe=()=>Jr.asap(o),s}},qi=function*(e,t){let n=e.byteLength;if(n{const r=async function*(e,t){for await(const n of Fi(e))yield*qi(n,t)}(e,t);let i,o=0,s=e=>{i||(i=!0,a&&a(e))};return new ReadableStream({async pull(e){try{const{done:t,value:a}=await r.next();if(t)return s(),void e.close();let i=a.byteLength;if(n){let e=o+=i;n(e)}e.enqueue(new Uint8Array(a))}catch(t){throw s(t),t}},cancel:e=>(s(e),r.return())},{highWaterMark:2})},Gi="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,Ii=Gi&&"function"==typeof ReadableStream,Xi=Gi&&("function"==typeof TextEncoder?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),Yi=(e,...t)=>{try{return!!e(...t)}catch(n){return!1}},Ui=Ii&&Yi(()=>{let e=!1;const t=new Request(pi.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),Ji=Ii&&Yi(()=>Jr.isReadableStream(new Response("").body)),Qi={stream:Ji&&(e=>e.body)};var Ki;Gi&&(Ki=new Response,["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!Qi[e]&&(Qi[e]=Jr.isFunction(Ki[e])?t=>t[e]():(t,n)=>{throw new Qr("Response type '".concat(e,"' is not supported"),Qr.ERR_NOT_SUPPORT,n)})}));const Vi=async(e,t)=>{const n=Jr.toFiniteNumber(e.getContentLength());return null==n?(async e=>{if(null==e)return 0;if(Jr.isBlob(e))return e.size;if(Jr.isSpecCompliantForm(e)){const t=new Request(pi.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return Jr.isArrayBufferView(e)||Jr.isArrayBuffer(e)?e.byteLength:(Jr.isURLSearchParams(e)&&(e+=""),Jr.isString(e)?(await Xi(e)).byteLength:void 0)})(t):n},$i={http:null,xhr:_i,fetch:Gi&&(async e=>{let{url:t,method:n,data:a,signal:r,cancelToken:i,timeout:o,onDownloadProgress:s,onUploadProgress:u,responseType:d,headers:c,withCredentials:l="same-origin",fetchOptions:h}=zi(e);d=d?(d+"").toLowerCase():"text";let m,g=Li([r,i&&i.toAbortSignal()],o);const f=g&&g.unsubscribe&&(()=>{g.unsubscribe()});let p;try{if(u&&Ui&&"get"!==n&&"head"!==n&&0!==(p=await Vi(c,a))){let e,n=new Request(t,{method:"POST",body:a,duplex:"half"});if(Jr.isFormData(a)&&(e=n.headers.get("content-type"))&&c.setContentType(e),n.body){const[e,t]=Oi(p,Wi(Ci(u)));a=Bi(n.body,65536,e,t)}}Jr.isString(l)||(l=l?"include":"omit");const r="credentials"in Request.prototype;m=new Request(t,{...h,signal:g,method:n.toUpperCase(),headers:c.normalize().toJSON(),body:a,duplex:"half",credentials:r?l:void 0});let i=await fetch(m,h);const o=Ji&&("stream"===d||"response"===d);if(Ji&&(s||o&&f)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=i[t]});const t=Jr.toFiniteNumber(i.headers.get("content-length")),[n,a]=s&&Oi(t,Wi(Ci(s),!0))||[];i=new Response(Bi(i.body,65536,n,()=>{a&&a(),f&&f()}),e)}d=d||"text";let b=await Qi[Jr.findKey(Qi,d)||"text"](i,e);return!o&&f&&f(),await new Promise((t,n)=>{Ni(t,n,{data:b,headers:Pi.from(i.headers),status:i.status,statusText:i.statusText,config:e,request:m})})}catch(b){if(f&&f(),b&&"TypeError"===b.name&&/Load failed|fetch/i.test(b.message))throw Object.assign(new Qr("Network Error",Qr.ERR_NETWORK,e,m),{cause:b.cause||b});throw Qr.from(b,b&&b.code,e,m)}})};Jr.forEach($i,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(n){}Object.defineProperty(e,"adapterName",{value:t})}});const Zi=e=>"- ".concat(e),eo=e=>Jr.isFunction(e)||null===e||!1===e,to=e=>{e=Jr.isArray(e)?e:[e];const{length:t}=e;let n,a;const r={};for(let i=0;i"adapter ".concat(e," ")+(!1===t?"is not supported by the environment":"is not available in the build"));throw new Qr("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Zi).join("\n"):" "+Zi(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return a};function no(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ei(null,e)}function ao(e){no(e),e.headers=Pi.from(e.headers),e.data=Si.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return to(e.adapter||wi.adapter)(e).then(function(t){return no(e),t.data=Si.call(e,e.transformResponse,t),t.headers=Pi.from(t.headers),t},function(t){return Ti(t)||(no(e),t&&t.response&&(t.response.data=Si.call(e,e.transformResponse,t.response),t.response.headers=Pi.from(t.response.headers))),Promise.reject(t)})}const ro="1.11.0",io={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{io[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const oo={};io.transitional=function(e,t,n){function a(e,t){return"[Axios v"+ro+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,r,i)=>{if(!1===e)throw new Qr(a(r," has been removed"+(t?" in "+t:"")),Qr.ERR_DEPRECATED);return t&&!oo[r]&&(oo[r]=!0,console.warn(a(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,i)}},io.spelling=function(e){return(t,n)=>(console.warn("".concat(n," is likely a misspelling of ").concat(e)),!0)};const so={assertOptions:function(e,t,n){if("object"!=typeof e)throw new Qr("options must be an object",Qr.ERR_BAD_OPTION_VALUE);const a=Object.keys(e);let r=a.length;for(;r-- >0;){const i=a[r],o=t[i];if(o){const t=e[i],n=void 0===t||o(t,i,e);if(!0!==n)throw new Qr("option "+i+" must be "+n,Qr.ERR_BAD_OPTION_VALUE);continue}if(!0!==n)throw new Qr("Unknown option "+i,Qr.ERR_BAD_OPTION)}},validators:io},uo=so.validators;let co=class{constructor(e){this.defaults=e||{},this.interceptors={request:new ui,response:new ui}}async request(e,t){try{return await this._request(e,t)}catch(n){if(n instanceof Error){let e={};Error.captureStackTrace?Error.captureStackTrace(e):e=new Error;const t=e.stack?e.stack.replace(/^.+\n/,""):"";try{n.stack?t&&!String(n.stack).endsWith(t.replace(/^.+\n.+\n/,""))&&(n.stack+="\n"+t):n.stack=t}catch(a){}}throw n}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Hi(this.defaults,t);const{transitional:n,paramsSerializer:a,headers:r}=t;void 0!==n&&so.assertOptions(n,{silentJSONParsing:uo.transitional(uo.boolean),forcedJSONParsing:uo.transitional(uo.boolean),clarifyTimeoutError:uo.transitional(uo.boolean)},!1),null!=a&&(Jr.isFunction(a)?t.paramsSerializer={serialize:a}:so.assertOptions(a,{encode:uo.function,serialize:uo.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),so.assertOptions(t,{baseUrl:uo.spelling("baseURL"),withXsrfToken:uo.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let i=r&&Jr.merge(r.common,r[t.method]);r&&Jr.forEach(["delete","get","head","post","put","patch","common"],e=>{delete r[e]}),t.headers=Pi.concat(i,r);const o=[];let s=!0;this.interceptors.request.forEach(function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,o.unshift(e.fulfilled,e.rejected))});const u=[];let d;this.interceptors.response.forEach(function(e){u.push(e.fulfilled,e.rejected)});let c,l=0;if(!s){const e=[ao.bind(this),void 0];for(e.unshift(...o),e.push(...u),c=e.length,d=Promise.resolve(t);l{lo[t]=e});const ho=function e(t){const n=new co(t),a=or(co.prototype.request,n);return Jr.extend(a,co.prototype,n,{allOwnKeys:!0}),Jr.extend(a,n,null,{allOwnKeys:!0}),a.create=function(n){return e(Hi(t,n))},a}(wi);ho.Axios=co,ho.CanceledError=Ei,ho.CancelToken=class e{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise(function(e){t=e});const n=this;this.promise.then(e=>{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t;const a=new Promise(e=>{n.subscribe(e),t=e}).then(e);return a.cancel=function(){n.unsubscribe(t)},a},e(function(e,a,r){n.reason||(n.reason=new Ei(e,a,r),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let t;return{token:new e(function(e){t=e}),cancel:t}}},ho.isCancel=Ti,ho.VERSION=ro,ho.toFormData=ni,ho.AxiosError=Qr,ho.Cancel=ho.CanceledError,ho.all=function(e){return Promise.all(e)},ho.spread=function(e){return function(t){return e.apply(null,t)}},ho.isAxiosError=function(e){return Jr.isObject(e)&&!0===e.isAxiosError},ho.mergeConfig=Hi,ho.AxiosHeaders=Pi,ho.formToJSON=e=>bi(Jr.isHTMLForm(e)?new FormData(e):e),ho.getAdapter=to,ho.HttpStatusCode=lo,ho.default=ho;const{Axios:mo,AxiosError:go,CanceledError:fo,isCancel:po,CancelToken:bo,VERSION:wo,all:yo,Cancel:vo,isAxiosError:Mo,spread:ko,toFormData:xo,AxiosHeaders:Po,HttpStatusCode:So,formToJSON:To,getAdapter:Eo,mergeConfig:No}=ho;var Wo={exports:{}};const Oo=n(Wo.exports=function(){var e,t,n={version:"0.2.0"},a=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function r(e,t,n){return en?n:e}function i(e){return 100*(-1+e)}function o(e,t,n){var r;return(r="translate3d"===a.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===a.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"}).transition="all "+t+"ms "+n,r}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(a[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=r(e,a.minimum,1),n.status=1===e?null:e;var i=n.render(!t),d=i.querySelector(a.barSelector),c=a.speed,l=a.easing;return i.offsetWidth,s(function(t){""===a.positionUsing&&(a.positionUsing=n.getPositioningCSS()),u(d,o(e,c,l)),1===e?(u(i,{transition:"none",opacity:1}),i.offsetWidth,setTimeout(function(){u(i,{transition:"all "+c+"ms linear",opacity:0}),setTimeout(function(){n.remove(),t()},c)},c)):setTimeout(t,c)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout(function(){n.status&&(n.trickle(),e())},a.trickleSpeed)};return a.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*r(Math.random()*t,.1,.95)),t=r(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*a.trickleRate)},e=0,t=0,n.promise=function(a){return a&&"resolved"!==a.state()?(0===t&&n.start(),e++,t++,a.always(function(){0===--t?(e=0,n.done()):n.set((e-t)/e)}),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=a.template;var r,o=t.querySelector(a.barSelector),s=e?"-100":i(n.status||0),d=document.querySelector(a.parent);return u(o,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),a.showSpinner||(r=t.querySelector(a.spinnerSelector))&&m(r),d!=document.body&&c(d,"nprogress-custom-parent"),d.appendChild(t),t},n.remove=function(){l(document.documentElement,"nprogress-busy"),l(document.querySelector(a.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&m(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),u=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})}function a(t){var n=document.body.style;if(t in n)return t;for(var a,r=e.length,i=t.charAt(0).toUpperCase()+t.slice(1);r--;)if((a=e[r]+i)in n)return a;return t}function r(e){return e=n(e),t[e]||(t[e]=a(e))}function i(e,t,n){t=r(t),e.style[t]=n}return function(e,t){var n,a,r=arguments;if(2==r.length)for(n in t)void 0!==(a=t[n])&&t.hasOwnProperty(n)&&i(e,n,a);else i(e,r[1],r[2])}}();function d(e,t){return("string"==typeof e?e:h(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=h(e),a=n+t;d(n,t)||(e.className=a.substring(1))}function l(e,t){var n,a=h(e);d(e,t)&&(n=a.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function h(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function m(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n}());function Co(e){const t="HTTP/([32]|1\\.[01])",n={className:"attribute",begin:e.regex.concat("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},a=[n,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+t+" \\d{3})",end:/$/,contains:[{className:"meta",begin:t},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:a}},{begin:"(?=^[A-Z]+ (.*?) "+t+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:t},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:a}},e.inherit(n,{relevance:0})]}}function jo(e){const t=e.regex,n=["GET","POST","HEAD","PUT","DELETE","CONNECT","OPTIONS","PATCH","TRACE"];return{name:"Apache Access Log",contains:[{className:"number",begin:/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?\b/,relevance:5},{className:"number",begin:/\b\d+\b/,relevance:0},{className:"string",begin:t.concat(/"/,t.either(...n)),end:/"/,keywords:n,illegal:/\n/,relevance:5,contains:[{begin:/HTTP\/[12]\.\d'/,relevance:5}]},{className:"string",begin:/\[\d[^\]\n]{8,}\]/,illegal:/\n/,relevance:1},{className:"string",begin:/\[/,end:/\]/,illegal:/\n/,relevance:0},{className:"string",begin:/"Mozilla\/\d\.\d \(/,end:/"/,illegal:/\n/,relevance:3},{className:"string",begin:/"/,end:/"/,illegal:/\n/,relevance:0}]}}export{nn as $,Ja as A,Jn as B,Va as C,Qa as D,$t as E,Ln as F,Kt as G,xe as H,$a as I,Za as J,nr as K,Ka as L,rn as M,ke as N,It as O,Fn as P,Bn as Q,er as R,Ua as S,tr as T,an as U,ar as V,Gn as W,Yn as X,In as Y,Ut as Z,Qn as _,Le as a,ho as a0,ge as a1,Oo as a2,Co as a3,jo as a4,Zt as a5,Kn as a6,ir as a7,tn as a8,et as b,Xa as c,We as d,Re as e,Ie as f,Vt as g,zn as h,Je as i,Xn as j,rt as k,Un as l,_t as m,qn as n,sn as o,ut as p,Lt as q,pt as r,on as s,vt as t,Nt as u,jt as v,rr as w,Qt as x,Jt as y,Ht as z}; +var e=Object.defineProperty,t=(t,n,a)=>((t,n,a)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[n]=a)(t,"symbol"!=typeof n?n+"":n,a);import{g as n,c as a}from"./__commonjsHelpers__.js?v=1762424784323";function r(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const n=e[t],a=typeof n;"object"!==a&&"function"!==a||Object.isFrozen(n)||r(n)}),e}let i=class{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function o(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function s(e,...t){const n=Object.create(null);for(const a in e)n[a]=e[a];return t.forEach(function(e){for(const t in e)n[t]=e[t]}),n}const u=e=>!!e.scope;class d{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=o(e)}openNode(e){if(!u(e))return;const t=((e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return["".concat(t).concat(n.shift()),...n.map((e,t)=>"".concat(e).concat("_".repeat(t+1)))].join(" ")}return"".concat(t).concat(e)})(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){u(e)&&(this.buffer+="
")}value(){return this.buffer}span(e){this.buffer+='')}}const c=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class l{constructor(){this.rootNode=c(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t=c({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(e=>"string"==typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{l._collapse(e)}))}}class h extends l{constructor(e){super(),this.options=e}addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){const n=e.root;t&&(n.scope="language:".concat(t)),this.add(n)}toHTML(){return new d(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function m(e){return e?"string"==typeof e?e:e.source:null}function g(e){return b("(?=",e,")")}function f(e){return b("(?:",e,")*")}function p(e){return b("(?:",e,")?")}function b(...e){return e.map(e=>m(e)).join("")}function w(...e){const t=function(e){const t=e[e.length-1];return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}(e);return"("+(t.capture?"":"?:")+e.map(e=>m(e)).join("|")+")"}function y(e){return new RegExp(e.toString()+"|").exec("").length-1}const v=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function M(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;const t=n;let a=m(e),r="";for(;a.length>0;){const e=v.exec(a);if(!e){r+=a;break}r+=a.substring(0,e.index),a=a.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+String(Number(e[1])+t):(r+=e[0],"("===e[0]&&n++)}return r}).map(e=>"(".concat(e,")")).join(t)}const k="[a-zA-Z]\\w*",x="[a-zA-Z_]\\w*",P="\\b\\d+(\\.\\d+)?",S="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",T="\\b(0b[01]+)",E={begin:"\\\\[\\s\\S]",relevance:0},N={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[E]},W={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[E]},O=function(e,t,n={}){const a=s({scope:"comment",begin:e,end:t,contains:[]},n);a.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const r=w("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return a.contains.push({begin:b(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),a},C=O("//","$"),j=O("/\\*","\\*/"),A=O("#","$"),R={scope:"number",begin:P,relevance:0},D={scope:"number",begin:S,relevance:0},H={scope:"number",begin:T,relevance:0},z={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[E,{begin:/\[/,end:/\]/,relevance:0,contains:[E]}]},_={scope:"title",begin:k,relevance:0},L={scope:"title",begin:x,relevance:0},q={begin:"\\.\\s*"+x,relevance:0};var F=Object.freeze({__proto__:null,APOS_STRING_MODE:N,BACKSLASH_ESCAPE:E,BINARY_NUMBER_MODE:H,BINARY_NUMBER_RE:T,COMMENT:O,C_BLOCK_COMMENT_MODE:j,C_LINE_COMMENT_MODE:C,C_NUMBER_MODE:D,C_NUMBER_RE:S,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},HASH_COMMENT_MODE:A,IDENT_RE:k,MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:q,NUMBER_MODE:R,NUMBER_RE:P,PHRASAL_WORDS_MODE:{begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},QUOTE_STRING_MODE:W,REGEXP_MODE:z,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=b(t,/.*\b/,e.binary,/\b.*/)),s({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},TITLE_MODE:_,UNDERSCORE_IDENT_RE:x,UNDERSCORE_TITLE_MODE:L});function B(e,t){"."===e.input[e.index-1]&&t.ignoreMatch()}function G(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function I(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=B,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function X(e,t){Array.isArray(e.illegal)&&(e.illegal=w(...e.illegal))}function Y(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function U(e,t){void 0===e.relevance&&(e.relevance=1)}const J=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=b(n.beforeMatch,g(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Q=["of","and","for","in","not","or","if","then","parent","list","value"];function K(e,t,n="keyword"){const a=Object.create(null);return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach(function(n){Object.assign(a,K(e[n],t,n))}),a;function r(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach(function(t){const n=t.split("|");a[n[0]]=[e,V(n[0],n[1])]})}}function V(e,t){return t?Number(t):function(e){return Q.includes(e.toLowerCase())}(e)?0:1}const $={},Z=e=>{console.error(e)},ee=(e,...t)=>{console.log("WARN: ".concat(e),...t)},te=(e,t)=>{$["".concat(e,"/").concat(t)]||(console.log("Deprecated as of ".concat(e,". ").concat(t)),$["".concat(e,"/").concat(t)]=!0)},ne=new Error;function ae(e,t,{key:n}){let a=0;const r=e[n],i={},o={};for(let s=1;s<=t.length;s++)o[s+a]=r[s],i[s+a]=!0,a+=y(t[s-1]);e[n]=o,e[n]._emit=i,e[n]._multi=!0}function re(e){!function(e){e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope)}(e),"string"==typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope}),function(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw Z("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),ne;if("object"!=typeof e.beginScope||null===e.beginScope)throw Z("beginScope must be object"),ne;ae(e,e.begin,{key:"beginScope"}),e.begin=M(e.begin,{joinWith:""})}}(e),function(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw Z("skip, excludeEnd, returnEnd not compatible with endScope: {}"),ne;if("object"!=typeof e.endScope||null===e.endScope)throw Z("endScope must be object"),ne;ae(e,e.end,{key:"endScope"}),e.end=M(e.end,{joinWith:""})}}(e)}function ie(e){function t(t,n){return new RegExp(m(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=y(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=t(M(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex((e,t)=>t>0&&void 0!==e),a=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,a)}}class a{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=s(e.classNameAliases||{}),function n(r,i){const o=r;if(r.isCompiled)return o;[G,Y,re,J].forEach(e=>e(r,i)),e.compilerExtensions.forEach(e=>e(r,i)),r.__beforeBegin=null,[I,X,U].forEach(e=>e(r,i)),r.isCompiled=!0;let u=null;return"object"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),u=r.keywords.$pattern,delete r.keywords.$pattern),u=u||/\w+/,r.keywords&&(r.keywords=K(r.keywords,e.case_insensitive)),o.keywordPatternRe=t(u,!0),i&&(r.begin||(r.begin=/\B|\b/),o.beginRe=t(o.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(o.endRe=t(o.end)),o.terminatorEnd=m(o.end)||"",r.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(r.end?"|":"")+i.terminatorEnd)),r.illegal&&(o.illegalRe=t(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map(function(e){return function(e){e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return s(e,{variants:null},t)}));if(e.cachedVariants)return e.cachedVariants;if(oe(e))return s(e,{starts:e.starts?s(e.starts):null});if(Object.isFrozen(e))return s(e);return e}("self"===e?r:e)})),r.contains.forEach(function(e){n(e,o)}),r.starts&&n(r.starts,i),o.matcher=function(e){const t=new a;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:"begin"})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}(o),o}(e)}function oe(e){return!!e&&(e.endsWithParent||oe(e.starts))}class se extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const ue=o,de=s,ce=Symbol("nomatch"),le=function(e){const t=Object.create(null),n=Object.create(null),a=[];let o=!0;const s="Could not find the language '{}', did you forget to load/include a language module?",u={disableAutodetect:!0,name:"Plain text",contains:[]};let d={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:h};function c(e){return d.noHighlightRe.test(e)}function l(e,t,n){let a="",r="";"object"==typeof t?(a=e,n=t.ignoreIllegals,r=t.language):(te("10.7.0","highlight(lang, code, ...args) has been deprecated."),te("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),r=e,a=t),void 0===n&&(n=!0);const i={code:a,language:r};T("before:highlight",i);const o=i.result?i.result:m(i.language,i.code,n);return o.code=i.code,T("after:highlight",o),o}function m(e,n,a,r){const u=Object.create(null);function c(e,t){return e.keywords[t]}function l(){if(!E.keywords)return void W.addText(O);let e=0;E.keywordPatternRe.lastIndex=0;let t=E.keywordPatternRe.exec(O),n="";for(;t;){n+=O.substring(e,t.index);const a=P.case_insensitive?t[0].toLowerCase():t[0],r=c(E,a);if(r){const[e,i]=r;if(W.addText(n),n="",u[a]=(u[a]||0)+1,u[a]<=7&&(C+=i),e.startsWith("_"))n+=t[0];else{const n=P.classNameAliases[e]||e;g(t[0],n)}}else n+=t[0];e=E.keywordPatternRe.lastIndex,t=E.keywordPatternRe.exec(O)}n+=O.substring(e),W.addText(n)}function h(){null!=E.subLanguage?function(){if(""===O)return;let e=null;if("string"==typeof E.subLanguage){if(!t[E.subLanguage])return void W.addText(O);e=m(E.subLanguage,O,!0,N[E.subLanguage]),N[E.subLanguage]=e._top}else e=y(O,E.subLanguage.length?E.subLanguage:null);E.relevance>0&&(C+=e.relevance),W.__addSublanguage(e._emitter,e.language)}():l(),O=""}function g(e,t){""!==e&&(W.startScope(t),W.addText(e),W.endScope())}function f(e,t){let n=1;const a=t.length-1;for(;n<=a;){if(!e._emit[n]){n++;continue}const a=P.classNameAliases[e[n]]||e[n],r=t[n];a?g(r,a):(O=r,l(),O=""),n++}}function p(e,t){return e.scope&&"string"==typeof e.scope&&W.openNode(P.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(g(O,P.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),O=""):e.beginScope._multi&&(f(e.beginScope,t),O="")),E=Object.create(e,{parent:{value:E}}),E}function b(e,t,n){let a=function(e,t){const n=e&&e.exec(t);return n&&0===n.index}(e.endRe,n);if(a){if(e["on:end"]){const n=new i(e);e["on:end"](t,n),n.isMatchIgnored&&(a=!1)}if(a){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return b(e.parent,t,n)}function w(e){return 0===E.matcher.regexIndex?(O+=e[0],1):(R=!0,0)}function v(e){const t=e[0],a=n.substring(e.index),r=b(E,e,a);if(!r)return ce;const i=E;E.endScope&&E.endScope._wrap?(h(),g(t,E.endScope._wrap)):E.endScope&&E.endScope._multi?(h(),f(E.endScope,e)):i.skip?O+=t:(i.returnEnd||i.excludeEnd||(O+=t),h(),i.excludeEnd&&(O=t));do{E.scope&&W.closeNode(),E.skip||E.subLanguage||(C+=E.relevance),E=E.parent}while(E!==r.parent);return r.starts&&p(r.starts,e),i.returnEnd?0:t.length}let M={};function k(t,r){const s=r&&r[0];if(O+=t,null==s)return h(),0;if("begin"===M.type&&"end"===r.type&&M.index===r.index&&""===s){if(O+=n.slice(r.index,r.index+1),!o){const t=new Error("0 width match regex (".concat(e,")"));throw t.languageName=e,t.badRule=M.rule,t}return 1}if(M=r,"begin"===r.type)return function(e){const t=e[0],n=e.rule,a=new i(n),r=[n.__beforeBegin,n["on:begin"]];for(const i of r)if(i&&(i(e,a),a.isMatchIgnored))return w(t);return n.skip?O+=t:(n.excludeBegin&&(O+=t),h(),n.returnBegin||n.excludeBegin||(O=t)),p(n,e),n.returnBegin?0:t.length}(r);if("illegal"===r.type&&!a){const e=new Error('Illegal lexeme "'+s+'" for mode "'+(E.scope||"")+'"');throw e.mode=E,e}if("end"===r.type){const e=v(r);if(e!==ce)return e}if("illegal"===r.type&&""===s)return O+="\n",1;if(A>1e5&&A>3*r.index){throw new Error("potential infinite loop, way more iterations than matches")}return O+=s,s.length}const P=x(e);if(!P)throw Z(s.replace("{}",e)),new Error('Unknown language: "'+e+'"');const S=ie(P);let T="",E=r||S;const N={},W=new d.__emitter(d);!function(){const e=[];for(let t=E;t!==P;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>W.openNode(e))}();let O="",C=0,j=0,A=0,R=!1;try{if(P.__emitTokens)P.__emitTokens(n,W);else{for(E.matcher.considerAll();;){A++,R?R=!1:E.matcher.considerAll(),E.matcher.lastIndex=j;const e=E.matcher.exec(n);if(!e)break;const t=k(n.substring(j,e.index),e);j=e.index+t}k(n.substring(j))}return W.finalize(),T=W.toHTML(),{language:e,value:T,relevance:C,illegal:!1,_emitter:W,_top:E}}catch(D){if(D.message&&D.message.includes("Illegal"))return{language:e,value:ue(n),illegal:!0,relevance:0,_illegalBy:{message:D.message,index:j,context:n.slice(j-100,j+100),mode:D.mode,resultSoFar:T},_emitter:W};if(o)return{language:e,value:ue(n),illegal:!1,relevance:0,errorRaised:D,_emitter:W,_top:E};throw D}}function y(e,n){n=n||d.languages||Object.keys(t);const a=function(e){const t={value:ue(e),illegal:!1,relevance:0,_top:u,_emitter:new d.__emitter(d)};return t._emitter.addText(e),t}(e),r=n.filter(x).filter(S).map(t=>m(t,e,!1));r.unshift(a);const i=r.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(x(e.language).supersetOf===t.language)return 1;if(x(t.language).supersetOf===e.language)return-1}return 0}),[o,s]=i,c=o;return c.secondBest=s,c}function v(e){let t=null;const a=function(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=d.languageDetectRe.exec(t);if(n){const t=x(n[1]);return t||(ee(s.replace("{}",n[1])),ee("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find(e=>c(e)||x(e))}(e);if(c(a))return;if(T("before:highlightElement",{el:e,language:a}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);if(e.children.length>0&&(d.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(e)),d.throwUnescapedHTML)){throw new se("One of your code blocks includes unescaped HTML.",e.innerHTML)}t=e;const r=t.textContent,i=a?l(r,{language:a,ignoreIllegals:!0}):y(r);e.innerHTML=i.value,e.dataset.highlighted="yes",function(e,t,a){const r=t&&n[t]||a;e.classList.add("hljs"),e.classList.add("language-".concat(r))}(e,a,i.language),e.result={language:i.language,re:i.relevance,relevance:i.relevance},i.secondBest&&(e.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance}),T("after:highlightElement",{el:e,result:i,text:r})}let M=!1;function k(){if("loading"===document.readyState)return M||window.addEventListener("DOMContentLoaded",function(){k()},!1),void(M=!0);document.querySelectorAll(d.cssSelector).forEach(v)}function x(e){return e=(e||"").toLowerCase(),t[e]||t[n[e]]}function P(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach(e=>{n[e.toLowerCase()]=t})}function S(e){const t=x(e);return t&&!t.disableAutodetect}function T(e,t){const n=e;a.forEach(function(e){e[n]&&e[n](t)})}Object.assign(e,{highlight:l,highlightAuto:y,highlightAll:k,highlightElement:v,highlightBlock:function(e){return te("10.7.0","highlightBlock will be removed entirely in v12.0"),te("10.7.0","Please use highlightElement now."),v(e)},configure:function(e){d=de(d,e)},initHighlighting:()=>{k(),te("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:function(){k(),te("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:function(n,a){let r=null;try{r=a(e)}catch(i){if(Z("Language definition for '{}' could not be registered.".replace("{}",n)),!o)throw i;Z(i),r=u}r.name||(r.name=n),t[n]=r,r.rawDefinition=a.bind(null,e),r.aliases&&P(r.aliases,{languageName:n})},unregisterLanguage:function(e){delete t[e];for(const t of Object.keys(n))n[t]===e&&delete n[t]},listLanguages:function(){return Object.keys(t)},getLanguage:x,registerAliases:P,autoDetection:S,inherit:de,addPlugin:function(e){!function(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}(e),a.push(e)},removePlugin:function(e){const t=a.indexOf(e);-1!==t&&a.splice(t,1)}}),e.debugMode=function(){o=!1},e.safeMode=function(){o=!0},e.versionString="11.11.1",e.regex={concat:b,lookahead:g,either:w,optional:p,anyNumberOfTimes:f};for(const i in F)"object"==typeof F[i]&&r(F[i]);return Object.assign(e,F),e},he=le({});he.newInstance=()=>le({});var me=he;he.HighlightJS=he,he.default=he;const ge=n(me);function fe(e){return(t={})=>{const n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}function pe(e){return(t,n)=>{let a;if("formatting"===((null==n?void 0:n.context)?String(n.context):"standalone")&&e.formattingValues){const t=e.defaultFormattingWidth||e.defaultWidth,r=(null==n?void 0:n.width)?String(n.width):t;a=e.formattingValues[r]||e.formattingValues[t]}else{const t=e.defaultWidth,r=(null==n?void 0:n.width)?String(n.width):e.defaultWidth;a=e.values[r]||e.values[t]}return a[e.argumentCallback?e.argumentCallback(t):t]}}function be(e){return(t,n={})=>{const a=n.width,r=a&&e.matchPatterns[a]||e.matchPatterns[e.defaultMatchWidth],i=t.match(r);if(!i)return null;const o=i[0],s=a&&e.parsePatterns[a]||e.parsePatterns[e.defaultParseWidth],u=Array.isArray(s)?function(e,t){for(let n=0;ne.test(o)):function(e,t){for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n;return}(s,e=>e.test(o));let d;d=e.valueCallback?e.valueCallback(u):u,d=n.valueCallback?n.valueCallback(d):d;return{value:d,rest:t.slice(o.length)}}}function we(e){return(t,n={})=>{const a=t.match(e.matchPattern);if(!a)return null;const r=a[0],i=t.match(e.parsePattern);if(!i)return null;let o=e.valueCallback?e.valueCallback(i[0]):i[0];o=n.valueCallback?n.valueCallback(o):o;return{value:o,rest:t.slice(r.length)}}}function ye(e){const t=Object.prototype.toString.call(e);return e instanceof Date||"object"==typeof e&&"[object Date]"===t?new e.constructor(+e):"number"==typeof e||"[object Number]"===t||"string"==typeof e||"[object String]"===t?new Date(e):new Date(NaN)}let ve={};function Me(){return ve}function ke(e,t){var n,a,r,i,o,s,u,d;const c=Me(),l=null!=(d=null!=(u=null!=(i=null!=(r=null==t?void 0:t.weekStartsOn)?r:null==(a=null==(n=null==t?void 0:t.locale)?void 0:n.options)?void 0:a.weekStartsOn)?i:c.weekStartsOn)?u:null==(s=null==(o=c.locale)?void 0:o.options)?void 0:s.weekStartsOn)?d:0,h=ye(e),m=h.getDay(),g=(m{let a;const r=(null==n?void 0:n.addSuffix)?Pe[e].withPreposition:Pe[e].standalone;return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"in "+a:"vor "+a:a},formatLong:Se,formatRelative:(e,t,n,a)=>Te[e],localize:{ordinalNumber:e=>Number(e)+".",era:pe({values:{narrow:["v.Chr.","n.Chr."],abbreviated:["v.Chr.","n.Chr."],wide:["vor Christus","nach Christus"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:Ee,formattingValues:Ne,defaultWidth:"wide"}),day:pe({values:{narrow:["S","M","D","M","D","F","S"],short:["So","Mo","Di","Mi","Do","Fr","Sa"],abbreviated:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],wide:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachm.",evening:"Abend",night:"Nacht"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"}},defaultWidth:"wide",formattingValues:{narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachm.",evening:"abends",night:"nachts"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(\.)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e)}),era:be({matchPatterns:{narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^v/i,/^n/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[aä]/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}},Oe={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Ce={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},je={ordinalNumber:(e,t)=>{const n=Number(e),a=n%100;if(a>20||a<10)switch(a%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:pe({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:pe({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},Ae={ordinalNumber:we({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},Re={code:"en-US",formatDistance:(e,t,n)=>{let a;const r=Oe[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"in "+a:a+" ago":a},formatLong:{date:fe({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:fe({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},formatRelative:(e,t,n,a)=>Ce[e],localize:je,match:Ae,options:{weekStartsOn:0,firstWeekContainsDate:1}},De={lessThanXSeconds:{one:"menos de un segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"medio minuto",lessThanXMinutes:{one:"menos de un minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"alrededor de 1 hora",other:"alrededor de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 día",other:"{{count}} días"},aboutXWeeks:{one:"alrededor de 1 semana",other:"alrededor de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"alrededor de 1 mes",other:"alrededor de {{count}} meses"},xMonths:{one:"1 mes",other:"{{count}} meses"},aboutXYears:{one:"alrededor de 1 año",other:"alrededor de {{count}} años"},xYears:{one:"1 año",other:"{{count}} años"},overXYears:{one:"más de 1 año",other:"más de {{count}} años"},almostXYears:{one:"casi 1 año",other:"casi {{count}} años"}},He={date:fe({formats:{full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:fe({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'a las' {{time}}",long:"{{date}} 'a las' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},ze={lastWeek:"'el' eeee 'pasado a la' p",yesterday:"'ayer a la' p",today:"'hoy a la' p",tomorrow:"'mañana a la' p",nextWeek:"eeee 'a la' p",other:"P"},_e={lastWeek:"'el' eeee 'pasado a las' p",yesterday:"'ayer a las' p",today:"'hoy a las' p",tomorrow:"'mañana a las' p",nextWeek:"eeee 'a las' p",other:"P"},Le={code:"es",formatDistance:(e,t,n)=>{let a;const r=De[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"en "+a:"hace "+a:a},formatLong:He,formatRelative:(e,t,n,a)=>1!==t.getHours()?_e[e]:ze[e],localize:{ordinalNumber:(e,t)=>Number(e)+"º",era:pe({values:{narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","después de cristo"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},defaultWidth:"wide",argumentCallback:e=>Number(e)-1}),month:pe({values:{narrow:["e","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],wide:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]},defaultWidth:"wide"}),day:pe({values:{narrow:["d","l","m","m","j","v","s"],short:["do","lu","ma","mi","ju","vi","sá"],abbreviated:["dom","lun","mar","mié","jue","vie","sáb"],wide:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(º)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}}),era:be({matchPatterns:{narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes de la era com[uú]n)/i,/^(despu[eé]s de cristo|era com[uú]n)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[efmajsond]/i,abbreviated:/^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,wide:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^e/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^en/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[dlmjvs]/i,short:/^(do|lu|ma|mi|ju|vi|s[áa])/i,abbreviated:/^(dom|lun|mar|mi[ée]|jue|vie|s[áa]b)/i,wide:/^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^do/i,/^lu/i,/^ma/i,/^mi/i,/^ju/i,/^vi/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,any:/^([ap]\.?\s?m\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mn/i,noon:/^md/i,morning:/mañana/i,afternoon:/tarde/i,evening:/tarde/i,night:/noche/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}},qe={lessThanXSeconds:{one:"moins d’une seconde",other:"moins de {{count}} secondes"},xSeconds:{one:"1 seconde",other:"{{count}} secondes"},halfAMinute:"30 secondes",lessThanXMinutes:{one:"moins d’une minute",other:"moins de {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"environ 1 heure",other:"environ {{count}} heures"},xHours:{one:"1 heure",other:"{{count}} heures"},xDays:{one:"1 jour",other:"{{count}} jours"},aboutXWeeks:{one:"environ 1 semaine",other:"environ {{count}} semaines"},xWeeks:{one:"1 semaine",other:"{{count}} semaines"},aboutXMonths:{one:"environ 1 mois",other:"environ {{count}} mois"},xMonths:{one:"1 mois",other:"{{count}} mois"},aboutXYears:{one:"environ 1 an",other:"environ {{count}} ans"},xYears:{one:"1 an",other:"{{count}} ans"},overXYears:{one:"plus d’un an",other:"plus de {{count}} ans"},almostXYears:{one:"presqu’un an",other:"presque {{count}} ans"}},Fe={date:fe({formats:{full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:fe({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'à' {{time}}",long:"{{date}} 'à' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Be={lastWeek:"eeee 'dernier à' p",yesterday:"'hier à' p",today:"'aujourd’hui à' p",tomorrow:"'demain à' p'",nextWeek:"eeee 'prochain à' p",other:"P"},Ge=["MMM","MMMM"],Ie={code:"fr",formatDistance:(e,t,n)=>{let a;const r=qe[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"dans "+a:"il y a "+a:a},formatLong:Fe,formatRelative:(e,t,n,a)=>Be[e],localize:{preprocessor:(e,t)=>{if(1===e.getDate())return t;return t.some(e=>e.isToken&&Ge.includes(e.value))?t.map(e=>e.isToken&&"do"===e.value?{isToken:!0,value:"d"}:e):t},ordinalNumber:(e,t)=>{const n=Number(e),a=null==t?void 0:t.unit;if(0===n)return"0";let r;return r=1===n?a&&["year","week","hour","minute","second"].includes(a)?"ère":"er":"ème",n+r},era:pe({values:{narrow:["av. J.-C","ap. J.-C"],abbreviated:["av. J.-C","ap. J.-C"],wide:["avant Jésus-Christ","après Jésus-Christ"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["T1","T2","T3","T4"],abbreviated:["1er trim.","2ème trim.","3ème trim.","4ème trim."],wide:["1er trimestre","2ème trimestre","3ème trimestre","4ème trimestre"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],wide:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},defaultWidth:"wide"}),day:pe({values:{narrow:["D","L","M","M","J","V","S"],short:["di","lu","ma","me","je","ve","sa"],abbreviated:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],wide:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"mat.",afternoon:"ap.m.",evening:"soir",night:"mat."},abbreviated:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"matin",afternoon:"après-midi",evening:"soir",night:"matin"},wide:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"du matin",afternoon:"de l’après-midi",evening:"du soir",night:"du matin"}},defaultWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(ième|ère|ème|er|e)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e)}),era:be({matchPatterns:{narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant Jésus-Christ|après Jésus-Christ)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^av/i,/^ap/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^T?[1234]/i,abbreviated:/^[1234](er|ème|e)? trim\.?/i,wide:/^[1234](er|ème|e)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,wide:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}},Xe={lessThanXSeconds:{one:"kurang dari 1 detik",other:"kurang dari {{count}} detik"},xSeconds:{one:"1 detik",other:"{{count}} detik"},halfAMinute:"setengah menit",lessThanXMinutes:{one:"kurang dari 1 menit",other:"kurang dari {{count}} menit"},xMinutes:{one:"1 menit",other:"{{count}} menit"},aboutXHours:{one:"sekitar 1 jam",other:"sekitar {{count}} jam"},xHours:{one:"1 jam",other:"{{count}} jam"},xDays:{one:"1 hari",other:"{{count}} hari"},aboutXWeeks:{one:"sekitar 1 minggu",other:"sekitar {{count}} minggu"},xWeeks:{one:"1 minggu",other:"{{count}} minggu"},aboutXMonths:{one:"sekitar 1 bulan",other:"sekitar {{count}} bulan"},xMonths:{one:"1 bulan",other:"{{count}} bulan"},aboutXYears:{one:"sekitar 1 tahun",other:"sekitar {{count}} tahun"},xYears:{one:"1 tahun",other:"{{count}} tahun"},overXYears:{one:"lebih dari 1 tahun",other:"lebih dari {{count}} tahun"},almostXYears:{one:"hampir 1 tahun",other:"hampir {{count}} tahun"}},Ye={date:fe({formats:{full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"d/M/yyyy"},defaultWidth:"full"}),time:fe({formats:{full:"HH.mm.ss",long:"HH.mm.ss",medium:"HH.mm",short:"HH.mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'pukul' {{time}}",long:"{{date}} 'pukul' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Ue={lastWeek:"eeee 'lalu pukul' p",yesterday:"'Kemarin pukul' p",today:"'Hari ini pukul' p",tomorrow:"'Besok pukul' p",nextWeek:"eeee 'pukul' p",other:"P"},Je={code:"id",formatDistance:(e,t,n)=>{let a;const r=Xe[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"dalam waktu "+a:a+" yang lalu":a},formatLong:Ye,formatRelative:(e,t,n,a)=>Ue[e],localize:{ordinalNumber:(e,t)=>"ke-"+Number(e),era:pe({values:{narrow:["SM","M"],abbreviated:["SM","M"],wide:["Sebelum Masehi","Masehi"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],wide:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]},defaultWidth:"wide"}),day:pe({values:{narrow:["M","S","S","R","K","J","S"],short:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],abbreviated:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],wide:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},defaultWidth:"wide",formattingValues:{narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^ke-(\d+)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(sm|m)/i,abbreviated:/^(s\.?\s?m\.?|s\.?\s?e\.?\s?u\.?|m\.?|e\.?\s?u\.?)/i,wide:/^(sebelum masehi|sebelum era umum|masehi|era umum)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^s/i,/^(m|e)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^K-?\s[1234]/i,wide:/^Kuartal ke-?\s?[1234]/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|mei|jun|jul|agt|sep|okt|nov|des)/i,wide:/^(januari|februari|maret|april|mei|juni|juli|agustus|september|oktober|november|desember)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^ma/i,/^ap/i,/^me/i,/^jun/i,/^jul/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[srkjm]/i,short:/^(min|sen|sel|rab|kam|jum|sab)/i,abbreviated:/^(min|sen|sel|rab|kam|jum|sab)/i,wide:/^(minggu|senin|selasa|rabu|kamis|jumat|sabtu)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^m/i,/^s/i,/^s/i,/^r/i,/^k/i,/^j/i,/^s/i],any:[/^m/i,/^sen/i,/^sel/i,/^r/i,/^k/i,/^j/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(a|p|tengah m|tengah h|(di(\swaktu)?) (pagi|siang|sore|malam))/i,any:/^([ap]\.?\s?m\.?|tengah malam|tengah hari|(di(\swaktu)?) (pagi|siang|sore|malam))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^pm/i,midnight:/^tengah m/i,noon:/^tengah h/i,morning:/pagi/i,afternoon:/siang/i,evening:/sore/i,night:/malam/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}},Qe={lessThanXSeconds:{one:"meno di un secondo",other:"meno di {{count}} secondi"},xSeconds:{one:"un secondo",other:"{{count}} secondi"},halfAMinute:"alcuni secondi",lessThanXMinutes:{one:"meno di un minuto",other:"meno di {{count}} minuti"},xMinutes:{one:"un minuto",other:"{{count}} minuti"},aboutXHours:{one:"circa un'ora",other:"circa {{count}} ore"},xHours:{one:"un'ora",other:"{{count}} ore"},xDays:{one:"un giorno",other:"{{count}} giorni"},aboutXWeeks:{one:"circa una settimana",other:"circa {{count}} settimane"},xWeeks:{one:"una settimana",other:"{{count}} settimane"},aboutXMonths:{one:"circa un mese",other:"circa {{count}} mesi"},xMonths:{one:"un mese",other:"{{count}} mesi"},aboutXYears:{one:"circa un anno",other:"circa {{count}} anni"},xYears:{one:"un anno",other:"{{count}} anni"},overXYears:{one:"più di un anno",other:"più di {{count}} anni"},almostXYears:{one:"quasi un anno",other:"quasi {{count}} anni"}},Ke={date:fe({formats:{full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:fe({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},Ve=["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"];function $e(e){return"'"+Ve[e]+" alle' p"}const Ze={lastWeek:(e,t,n)=>{const a=e.getDay();return xe(e,t,n)?$e(a):function(e){return 0===e?"'domenica scorsa alle' p":"'"+Ve[e]+" scorso alle' p"}(a)},yesterday:"'ieri alle' p",today:"'oggi alle' p",tomorrow:"'domani alle' p",nextWeek:(e,t,n)=>{const a=e.getDay();return xe(e,t,n)?$e(a):function(e){return 0===e?"'domenica prossima alle' p":"'"+Ve[e]+" prossimo alle' p"}(a)},other:"P"},et={code:"it",formatDistance:(e,t,n)=>{let a;const r=Qe[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"tra "+a:a+" fa":a},formatLong:Ke,formatRelative:(e,t,n,a)=>{const r=Ze[e];return"function"==typeof r?r(t,n,a):r},localize:{ordinalNumber:(e,t)=>{const n=Number(e);return String(n)},era:pe({values:{narrow:["aC","dC"],abbreviated:["a.C.","d.C."],wide:["avanti Cristo","dopo Cristo"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["G","F","M","A","M","G","L","A","S","O","N","D"],abbreviated:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],wide:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"]},defaultWidth:"wide"}),day:pe({values:{narrow:["D","L","M","M","G","V","S"],short:["dom","lun","mar","mer","gio","ven","sab"],abbreviated:["dom","lun","mar","mer","gio","ven","sab"],wide:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"}},defaultWidth:"wide",formattingValues:{narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(º)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(aC|dC)/i,abbreviated:/^(a\.?\s?C\.?|a\.?\s?e\.?\s?v\.?|d\.?\s?C\.?|e\.?\s?v\.?)/i,wide:/^(avanti Cristo|avanti Era Volgare|dopo Cristo|Era Volgare)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^a/i,/^(d|e)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^t[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[gfmalsond]/i,abbreviated:/^(gen|feb|mar|apr|mag|giu|lug|ago|set|ott|nov|dic)/i,wide:/^(gennaio|febbraio|marzo|aprile|maggio|giugno|luglio|agosto|settembre|ottobre|novembre|dicembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^g/i,/^f/i,/^m/i,/^a/i,/^m/i,/^g/i,/^l/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ge/i,/^f/i,/^mar/i,/^ap/i,/^mag/i,/^gi/i,/^l/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[dlmgvs]/i,short:/^(do|lu|ma|me|gi|ve|sa)/i,abbreviated:/^(dom|lun|mar|mer|gio|ven|sab)/i,wide:/^(domenica|luned[i|ì]|marted[i|ì]|mercoled[i|ì]|gioved[i|ì]|venerd[i|ì]|sabato)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^g/i,/^v/i,/^s/i],any:[/^d/i,/^l/i,/^ma/i,/^me/i,/^g/i,/^v/i,/^s/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(a|m\.|p|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i,any:/^([ap]\.?\s?m\.?|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mezza/i,noon:/^mezzo/i,morning:/mattina/i,afternoon:/pomeriggio/i,evening:/sera/i,night:/notte/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}},tt={lessThanXSeconds:{one:"1초 미만",other:"{{count}}초 미만"},xSeconds:{one:"1초",other:"{{count}}초"},halfAMinute:"30초",lessThanXMinutes:{one:"1분 미만",other:"{{count}}분 미만"},xMinutes:{one:"1분",other:"{{count}}분"},aboutXHours:{one:"약 1시간",other:"약 {{count}}시간"},xHours:{one:"1시간",other:"{{count}}시간"},xDays:{one:"1일",other:"{{count}}일"},aboutXWeeks:{one:"약 1주",other:"약 {{count}}주"},xWeeks:{one:"1주",other:"{{count}}주"},aboutXMonths:{one:"약 1개월",other:"약 {{count}}개월"},xMonths:{one:"1개월",other:"{{count}}개월"},aboutXYears:{one:"약 1년",other:"약 {{count}}년"},xYears:{one:"1년",other:"{{count}}년"},overXYears:{one:"1년 이상",other:"{{count}}년 이상"},almostXYears:{one:"거의 1년",other:"거의 {{count}}년"}},nt={date:fe({formats:{full:"y년 M월 d일 EEEE",long:"y년 M월 d일",medium:"y.MM.dd",short:"y.MM.dd"},defaultWidth:"full"}),time:fe({formats:{full:"a H시 mm분 ss초 zzzz",long:"a H:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},at={lastWeek:"'지난' eeee p",yesterday:"'어제' p",today:"'오늘' p",tomorrow:"'내일' p",nextWeek:"'다음' eeee p",other:"P"},rt={code:"ko",formatDistance:(e,t,n)=>{let a;const r=tt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?a+" 후":a+" 전":a},formatLong:nt,formatRelative:(e,t,n,a)=>at[e],localize:{ordinalNumber:(e,t)=>{const n=Number(e);switch(String(null==t?void 0:t.unit)){case"minute":case"second":return String(n);case"date":return n+"일";default:return n+"번째"}},era:pe({values:{narrow:["BC","AD"],abbreviated:["BC","AD"],wide:["기원전","서기"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1분기","2분기","3분기","4분기"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],wide:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},defaultWidth:"wide"}),day:pe({values:{narrow:["일","월","화","수","목","금","토"],short:["일","월","화","수","목","금","토"],abbreviated:["일","월","화","수","목","금","토"],wide:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},abbreviated:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},wide:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"}},defaultWidth:"wide",formattingValues:{narrow:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},abbreviated:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},wide:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(일|번째)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(기원전|서기)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^(bc|기원전)/i,/^(ad|서기)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234]사?분기/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^(1[012]|[123456789])/,abbreviated:/^(1[012]|[123456789])월/i,wide:/^(1[012]|[123456789])월/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^1월?$/,/^2/,/^3/,/^4/,/^5/,/^6/,/^7/,/^8/,/^9/,/^10/,/^11/,/^12/]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[일월화수목금토]/,short:/^[일월화수목금토]/,abbreviated:/^[일월화수목금토]/,wide:/^[일월화수목금토]요일/},defaultMatchWidth:"wide",parsePatterns:{any:[/^일/,/^월/,/^화/,/^수/,/^목/,/^금/,/^토/]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{any:/^(am|pm|오전|오후|자정|정오|아침|저녁|밤)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^(am|오전)/i,pm:/^(pm|오후)/i,midnight:/^자정/i,noon:/^정오/i,morning:/^아침/i,afternoon:/^오후/i,evening:/^저녁/i,night:/^밤/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}},it={lessThanXSeconds:{one:"menos de um segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"meio minuto",lessThanXMinutes:{one:"menos de um minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"cerca de 1 hora",other:"cerca de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 dia",other:"{{count}} dias"},aboutXWeeks:{one:"cerca de 1 semana",other:"cerca de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"cerca de 1 mês",other:"cerca de {{count}} meses"},xMonths:{one:"1 mês",other:"{{count}} meses"},aboutXYears:{one:"cerca de 1 ano",other:"cerca de {{count}} anos"},xYears:{one:"1 ano",other:"{{count}} anos"},overXYears:{one:"mais de 1 ano",other:"mais de {{count}} anos"},almostXYears:{one:"quase 1 ano",other:"quase {{count}} anos"}},ot={date:fe({formats:{full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/yyyy"},defaultWidth:"full"}),time:fe({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'às' {{time}}",long:"{{date}} 'às' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},st={lastWeek:e=>{const t=e.getDay();return"'"+(0===t||6===t?"último":"última")+"' eeee 'às' p"},yesterday:"'ontem às' p",today:"'hoje às' p",tomorrow:"'amanhã às' p",nextWeek:"eeee 'às' p",other:"P"},ut={code:"pt-BR",formatDistance:(e,t,n)=>{let a;const r=it[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?"em "+a:"há "+a:a},formatLong:ot,formatRelative:(e,t,n,a)=>{const r=st[e];return"function"==typeof r?r(t):r},localize:{ordinalNumber:(e,t)=>{const n=Number(e);return"week"===(null==t?void 0:t.unit)?n+"ª":n+"º"},era:pe({values:{narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","depois de cristo"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],wide:["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},defaultWidth:"wide"}),day:pe({values:{narrow:["D","S","T","Q","Q","S","S"],short:["dom","seg","ter","qua","qui","sex","sab"],abbreviated:["domingo","segunda","terça","quarta","quinta","sexta","sábado"],wide:["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)[ºªo]?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|d\.?\s?c\.?)/i,wide:/^(antes de cristo|depois de cristo)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^ac/i,/^dc/i],wide:[/^antes de cristo/i,/^depois de cristo/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[jfmajsond]/i,abbreviated:/^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,wide:/^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^fev/i,/^mar/i,/^abr/i,/^mai/i,/^jun/i,/^jul/i,/^ago/i,/^set/i,/^out/i,/^nov/i,/^dez/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^(dom|[23456]ª?|s[aá]b)/i,short:/^(dom|[23456]ª?|s[aá]b)/i,abbreviated:/^(dom|seg|ter|qua|qui|sex|s[aá]b)/i,wide:/^(domingo|(segunda|ter[cç]a|quarta|quinta|sexta)([- ]feira)?|s[aá]bado)/i},defaultMatchWidth:"wide",parsePatterns:{short:[/^d/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^s[aá]/i],narrow:[/^d/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^s[aá]/i],any:[/^d/i,/^seg/i,/^t/i,/^qua/i,/^qui/i,/^sex/i,/^s[aá]b/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(a|p|mn|md|(da) (manhã|tarde|noite))/i,any:/^([ap]\.?\s?m\.?|meia[-\s]noite|meio[-\s]dia|(da) (manhã|tarde|noite))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mn|^meia[-\s]noite/i,noon:/^md|^meio[-\s]dia/i,morning:/manhã/i,afternoon:/tarde/i,evening:/tarde/i,night:/noite/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function dt(e,t){if(void 0!==e.one&&1===t)return e.one;const n=t%10,a=t%100;return 1===n&&11!==a?e.singularNominative.replace("{{count}}",String(t)):n>=2&&n<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",String(t)):e.pluralGenitive.replace("{{count}}",String(t))}function ct(e){return(t,n)=>(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?e.future?dt(e.future,t):"через "+dt(e.regular,t):e.past?dt(e.past,t):dt(e.regular,t)+" назад":dt(e.regular,t)}const lt={lessThanXSeconds:ct({regular:{one:"меньше секунды",singularNominative:"меньше {{count}} секунды",singularGenitive:"меньше {{count}} секунд",pluralGenitive:"меньше {{count}} секунд"},future:{one:"меньше, чем через секунду",singularNominative:"меньше, чем через {{count}} секунду",singularGenitive:"меньше, чем через {{count}} секунды",pluralGenitive:"меньше, чем через {{count}} секунд"}}),xSeconds:ct({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунды",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду назад",singularGenitive:"{{count}} секунды назад",pluralGenitive:"{{count}} секунд назад"},future:{singularNominative:"через {{count}} секунду",singularGenitive:"через {{count}} секунды",pluralGenitive:"через {{count}} секунд"}}),halfAMinute:(e,t)=>(null==t?void 0:t.addSuffix)?t.comparison&&t.comparison>0?"через полминуты":"полминуты назад":"полминуты",lessThanXMinutes:ct({regular:{one:"меньше минуты",singularNominative:"меньше {{count}} минуты",singularGenitive:"меньше {{count}} минут",pluralGenitive:"меньше {{count}} минут"},future:{one:"меньше, чем через минуту",singularNominative:"меньше, чем через {{count}} минуту",singularGenitive:"меньше, чем через {{count}} минуты",pluralGenitive:"меньше, чем через {{count}} минут"}}),xMinutes:ct({regular:{singularNominative:"{{count}} минута",singularGenitive:"{{count}} минуты",pluralGenitive:"{{count}} минут"},past:{singularNominative:"{{count}} минуту назад",singularGenitive:"{{count}} минуты назад",pluralGenitive:"{{count}} минут назад"},future:{singularNominative:"через {{count}} минуту",singularGenitive:"через {{count}} минуты",pluralGenitive:"через {{count}} минут"}}),aboutXHours:ct({regular:{singularNominative:"около {{count}} часа",singularGenitive:"около {{count}} часов",pluralGenitive:"около {{count}} часов"},future:{singularNominative:"приблизительно через {{count}} час",singularGenitive:"приблизительно через {{count}} часа",pluralGenitive:"приблизительно через {{count}} часов"}}),xHours:ct({regular:{singularNominative:"{{count}} час",singularGenitive:"{{count}} часа",pluralGenitive:"{{count}} часов"}}),xDays:ct({regular:{singularNominative:"{{count}} день",singularGenitive:"{{count}} дня",pluralGenitive:"{{count}} дней"}}),aboutXWeeks:ct({regular:{singularNominative:"около {{count}} недели",singularGenitive:"около {{count}} недель",pluralGenitive:"около {{count}} недель"},future:{singularNominative:"приблизительно через {{count}} неделю",singularGenitive:"приблизительно через {{count}} недели",pluralGenitive:"приблизительно через {{count}} недель"}}),xWeeks:ct({regular:{singularNominative:"{{count}} неделя",singularGenitive:"{{count}} недели",pluralGenitive:"{{count}} недель"}}),aboutXMonths:ct({regular:{singularNominative:"около {{count}} месяца",singularGenitive:"около {{count}} месяцев",pluralGenitive:"около {{count}} месяцев"},future:{singularNominative:"приблизительно через {{count}} месяц",singularGenitive:"приблизительно через {{count}} месяца",pluralGenitive:"приблизительно через {{count}} месяцев"}}),xMonths:ct({regular:{singularNominative:"{{count}} месяц",singularGenitive:"{{count}} месяца",pluralGenitive:"{{count}} месяцев"}}),aboutXYears:ct({regular:{singularNominative:"около {{count}} года",singularGenitive:"около {{count}} лет",pluralGenitive:"около {{count}} лет"},future:{singularNominative:"приблизительно через {{count}} год",singularGenitive:"приблизительно через {{count}} года",pluralGenitive:"приблизительно через {{count}} лет"}}),xYears:ct({regular:{singularNominative:"{{count}} год",singularGenitive:"{{count}} года",pluralGenitive:"{{count}} лет"}}),overXYears:ct({regular:{singularNominative:"больше {{count}} года",singularGenitive:"больше {{count}} лет",pluralGenitive:"больше {{count}} лет"},future:{singularNominative:"больше, чем через {{count}} год",singularGenitive:"больше, чем через {{count}} года",pluralGenitive:"больше, чем через {{count}} лет"}}),almostXYears:ct({regular:{singularNominative:"почти {{count}} год",singularGenitive:"почти {{count}} года",pluralGenitive:"почти {{count}} лет"},future:{singularNominative:"почти через {{count}} год",singularGenitive:"почти через {{count}} года",pluralGenitive:"почти через {{count}} лет"}})},ht={date:fe({formats:{full:"EEEE, d MMMM y 'г.'",long:"d MMMM y 'г.'",medium:"d MMM y 'г.'",short:"dd.MM.y"},defaultWidth:"full"}),time:fe({formats:{full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},defaultWidth:"full"}),dateTime:fe({formats:{any:"{{date}}, {{time}}"},defaultWidth:"any"})},mt=["воскресенье","понедельник","вторник","среду","четверг","пятницу","субботу"];function gt(e){const t=mt[e];return 2===e?"'во "+t+" в' p":"'в "+t+" в' p"}const ft={lastWeek:(e,t,n)=>{const a=e.getDay();return xe(e,t,n)?gt(a):function(e){const t=mt[e];switch(e){case 0:return"'в прошлое "+t+" в' p";case 1:case 2:case 4:return"'в прошлый "+t+" в' p";case 3:case 5:case 6:return"'в прошлую "+t+" в' p"}}(a)},yesterday:"'вчера в' p",today:"'сегодня в' p",tomorrow:"'завтра в' p",nextWeek:(e,t,n)=>{const a=e.getDay();return xe(e,t,n)?gt(a):function(e){const t=mt[e];switch(e){case 0:return"'в следующее "+t+" в' p";case 1:case 2:case 4:return"'в следующий "+t+" в' p";case 3:case 5:case 6:return"'в следующую "+t+" в' p"}}(a)},other:"P"},pt={code:"ru",formatDistance:(e,t,n)=>lt[e](t,n),formatLong:ht,formatRelative:(e,t,n,a)=>{const r=ft[e];return"function"==typeof r?r(t,n,a):r},localize:{ordinalNumber:(e,t)=>{const n=Number(e),a=null==t?void 0:t.unit;let r;return r="date"===a?"-е":"week"===a||"minute"===a||"second"===a?"-я":"-й",n+r},era:pe({values:{narrow:["до н.э.","н.э."],abbreviated:["до н. э.","н. э."],wide:["до нашей эры","нашей эры"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["1-й кв.","2-й кв.","3-й кв.","4-й кв."],wide:["1-й квартал","2-й квартал","3-й квартал","4-й квартал"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],abbreviated:["янв.","фев.","март","апр.","май","июнь","июль","авг.","сент.","окт.","нояб.","дек."],wide:["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]},defaultWidth:"wide",formattingValues:{narrow:["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],abbreviated:["янв.","фев.","мар.","апр.","мая","июн.","июл.","авг.","сент.","окт.","нояб.","дек."],wide:["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]},defaultFormattingWidth:"wide"}),day:pe({values:{narrow:["В","П","В","С","Ч","П","С"],short:["вс","пн","вт","ср","чт","пт","сб"],abbreviated:["вск","пнд","втр","срд","чтв","птн","суб"],wide:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утро",afternoon:"день",evening:"веч.",night:"ночь"},abbreviated:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утро",afternoon:"день",evening:"веч.",night:"ночь"},wide:{am:"ДП",pm:"ПП",midnight:"полночь",noon:"полдень",morning:"утро",afternoon:"день",evening:"вечер",night:"ночь"}},defaultWidth:"any",formattingValues:{narrow:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утра",afternoon:"дня",evening:"веч.",night:"ночи"},abbreviated:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утра",afternoon:"дня",evening:"веч.",night:"ночи"},wide:{am:"ДП",pm:"ПП",midnight:"полночь",noon:"полдень",morning:"утра",afternoon:"дня",evening:"вечера",night:"ночи"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(-?(е|я|й|ое|ье|ая|ья|ый|ой|ий|ый))?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^((до )?н\.?\s?э\.?)/i,abbreviated:/^((до )?н\.?\s?э\.?)/i,wide:/^(до нашей эры|нашей эры|наша эра)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^д/i,/^н/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^[1234](-?[ыои]?й?)? кв.?/i,wide:/^[1234](-?[ыои]?й?)? квартал/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[яфмаисонд]/i,abbreviated:/^(янв|фев|март?|апр|ма[йя]|июн[ья]?|июл[ья]?|авг|сент?|окт|нояб?|дек)\.?/i,wide:/^(январ[ья]|феврал[ья]|марта?|апрел[ья]|ма[йя]|июн[ья]|июл[ья]|августа?|сентябр[ья]|октябр[ья]|октябр[ья]|ноябр[ья]|декабр[ья])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^я/i,/^ф/i,/^м/i,/^а/i,/^м/i,/^и/i,/^и/i,/^а/i,/^с/i,/^о/i,/^н/i,/^я/i],any:[/^я/i,/^ф/i,/^мар/i,/^ап/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^ав/i,/^с/i,/^о/i,/^н/i,/^д/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[впсч]/i,short:/^(вс|во|пн|по|вт|ср|чт|че|пт|пя|сб|су)\.?/i,abbreviated:/^(вск|вос|пнд|пон|втр|вто|срд|сре|чтв|чет|птн|пят|суб).?/i,wide:/^(воскресень[ея]|понедельника?|вторника?|сред[аы]|четверга?|пятниц[аы]|суббот[аы])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^в/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^в[ос]/i,/^п[он]/i,/^в/i,/^ср/i,/^ч/i,/^п[ят]/i,/^с[уб]/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,abbreviated:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,wide:/^([дп]п|полночь|полдень|утр[оа]|день|дня|вечера?|ноч[ьи])/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^дп/i,pm:/^пп/i,midnight:/^полн/i,noon:/^полд/i,morning:/^у/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}},bt={lessThanXSeconds:{one:"bir saniyeden az",other:"{{count}} saniyeden az"},xSeconds:{one:"1 saniye",other:"{{count}} saniye"},halfAMinute:"yarım dakika",lessThanXMinutes:{one:"bir dakikadan az",other:"{{count}} dakikadan az"},xMinutes:{one:"1 dakika",other:"{{count}} dakika"},aboutXHours:{one:"yaklaşık 1 saat",other:"yaklaşık {{count}} saat"},xHours:{one:"1 saat",other:"{{count}} saat"},xDays:{one:"1 gün",other:"{{count}} gün"},aboutXWeeks:{one:"yaklaşık 1 hafta",other:"yaklaşık {{count}} hafta"},xWeeks:{one:"1 hafta",other:"{{count}} hafta"},aboutXMonths:{one:"yaklaşık 1 ay",other:"yaklaşık {{count}} ay"},xMonths:{one:"1 ay",other:"{{count}} ay"},aboutXYears:{one:"yaklaşık 1 yıl",other:"yaklaşık {{count}} yıl"},xYears:{one:"1 yıl",other:"{{count}} yıl"},overXYears:{one:"1 yıldan fazla",other:"{{count}} yıldan fazla"},almostXYears:{one:"neredeyse 1 yıl",other:"neredeyse {{count}} yıl"}},wt={date:fe({formats:{full:"d MMMM y EEEE",long:"d MMMM y",medium:"d MMM y",short:"dd.MM.yyyy"},defaultWidth:"full"}),time:fe({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'saat' {{time}}",long:"{{date}} 'saat' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},yt={lastWeek:"'geçen hafta' eeee 'saat' p",yesterday:"'dün saat' p",today:"'bugün saat' p",tomorrow:"'yarın saat' p",nextWeek:"eeee 'saat' p",other:"P"},vt={code:"tr",formatDistance:(e,t,n)=>{let a;const r=bt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?a+" sonra":a+" önce":a},formatLong:wt,formatRelative:(e,t,n,a)=>yt[e],localize:{ordinalNumber:(e,t)=>Number(e)+".",era:pe({values:{narrow:["MÖ","MS"],abbreviated:["MÖ","MS"],wide:["Milattan Önce","Milattan Sonra"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["1Ç","2Ç","3Ç","4Ç"],wide:["İlk çeyrek","İkinci Çeyrek","Üçüncü çeyrek","Son çeyrek"]},defaultWidth:"wide",argumentCallback:e=>Number(e)-1}),month:pe({values:{narrow:["O","Ş","M","N","M","H","T","A","E","E","K","A"],abbreviated:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],wide:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"]},defaultWidth:"wide"}),day:pe({values:{narrow:["P","P","S","Ç","P","C","C"],short:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],abbreviated:["Paz","Pzt","Sal","Çar","Per","Cum","Cts"],wide:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"öö",pm:"ös",midnight:"gy",noon:"ö",morning:"sa",afternoon:"ös",evening:"ak",night:"ge"},abbreviated:{am:"ÖÖ",pm:"ÖS",midnight:"gece yarısı",noon:"öğle",morning:"sabah",afternoon:"öğleden sonra",evening:"akşam",night:"gece"},wide:{am:"Ö.Ö.",pm:"Ö.S.",midnight:"gece yarısı",noon:"öğle",morning:"sabah",afternoon:"öğleden sonra",evening:"akşam",night:"gece"}},defaultWidth:"wide",formattingValues:{narrow:{am:"öö",pm:"ös",midnight:"gy",noon:"ö",morning:"sa",afternoon:"ös",evening:"ak",night:"ge"},abbreviated:{am:"ÖÖ",pm:"ÖS",midnight:"gece yarısı",noon:"öğlen",morning:"sabahleyin",afternoon:"öğleden sonra",evening:"akşamleyin",night:"geceleyin"},wide:{am:"ö.ö.",pm:"ö.s.",midnight:"gece yarısı",noon:"öğlen",morning:"sabahleyin",afternoon:"öğleden sonra",evening:"akşamleyin",night:"geceleyin"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(\.)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}}),era:be({matchPatterns:{narrow:/^(mö|ms)/i,abbreviated:/^(mö|ms)/i,wide:/^(milattan önce|milattan sonra)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(^mö|^milattan önce)/i,/(^ms|^milattan sonra)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^[1234]ç/i,wide:/^((i|İ)lk|(i|İ)kinci|üçüncü|son) çeyrek/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i],abbreviated:[/1ç/i,/2ç/i,/3ç/i,/4ç/i],wide:[/^(i|İ)lk çeyrek/i,/(i|İ)kinci çeyrek/i,/üçüncü çeyrek/i,/son çeyrek/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[oşmnhtaek]/i,abbreviated:/^(oca|şub|mar|nis|may|haz|tem|ağu|eyl|eki|kas|ara)/i,wide:/^(ocak|şubat|mart|nisan|mayıs|haziran|temmuz|ağustos|eylül|ekim|kasım|aralık)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^o/i,/^ş/i,/^m/i,/^n/i,/^m/i,/^h/i,/^t/i,/^a/i,/^e/i,/^e/i,/^k/i,/^a/i],any:[/^o/i,/^ş/i,/^mar/i,/^n/i,/^may/i,/^h/i,/^t/i,/^ağ/i,/^ey/i,/^ek/i,/^k/i,/^ar/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[psçc]/i,short:/^(pz|pt|sa|ça|pe|cu|ct)/i,abbreviated:/^(paz|pzt|sal|çar|per|cum|cts)/i,wide:/^(pazar(?!tesi)|pazartesi|salı|çarşamba|perşembe|cuma(?!rtesi)|cumartesi)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^p/i,/^p/i,/^s/i,/^ç/i,/^p/i,/^c/i,/^c/i],any:[/^pz/i,/^pt/i,/^sa/i,/^ça/i,/^pe/i,/^cu/i,/^ct/i],wide:[/^pazar(?!tesi)/i,/^pazartesi/i,/^salı/i,/^çarşamba/i,/^perşembe/i,/^cuma(?!rtesi)/i,/^cumartesi/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^(öö|ös|gy|ö|sa|ös|ak|ge)/i,any:/^(ö\.?\s?[ös]\.?|öğleden sonra|gece yarısı|öğle|(sabah|öğ|akşam|gece)(leyin))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^ö\.?ö\.?/i,pm:/^ö\.?s\.?/i,midnight:/^(gy|gece yarısı)/i,noon:/^öğ/i,morning:/^sa/i,afternoon:/^öğleden sonra/i,evening:/^ak/i,night:/^ge/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}};function Mt(e,t){if(void 0!==e.one&&1===t)return e.one;const n=t%10,a=t%100;return 1===n&&11!==a?e.singularNominative.replace("{{count}}",String(t)):n>=2&&n<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",String(t)):e.pluralGenitive.replace("{{count}}",String(t))}function kt(e){return(t,n)=>n&&n.addSuffix?n.comparison&&n.comparison>0?e.future?Mt(e.future,t):"за "+Mt(e.regular,t):e.past?Mt(e.past,t):Mt(e.regular,t)+" тому":Mt(e.regular,t)}const xt={lessThanXSeconds:kt({regular:{one:"менше секунди",singularNominative:"менше {{count}} секунди",singularGenitive:"менше {{count}} секунд",pluralGenitive:"менше {{count}} секунд"},future:{one:"менше, ніж за секунду",singularNominative:"менше, ніж за {{count}} секунду",singularGenitive:"менше, ніж за {{count}} секунди",pluralGenitive:"менше, ніж за {{count}} секунд"}}),xSeconds:kt({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунди",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду тому",singularGenitive:"{{count}} секунди тому",pluralGenitive:"{{count}} секунд тому"},future:{singularNominative:"за {{count}} секунду",singularGenitive:"за {{count}} секунди",pluralGenitive:"за {{count}} секунд"}}),halfAMinute:(e,t)=>t&&t.addSuffix?t.comparison&&t.comparison>0?"за півхвилини":"півхвилини тому":"півхвилини",lessThanXMinutes:kt({regular:{one:"менше хвилини",singularNominative:"менше {{count}} хвилини",singularGenitive:"менше {{count}} хвилин",pluralGenitive:"менше {{count}} хвилин"},future:{one:"менше, ніж за хвилину",singularNominative:"менше, ніж за {{count}} хвилину",singularGenitive:"менше, ніж за {{count}} хвилини",pluralGenitive:"менше, ніж за {{count}} хвилин"}}),xMinutes:kt({regular:{singularNominative:"{{count}} хвилина",singularGenitive:"{{count}} хвилини",pluralGenitive:"{{count}} хвилин"},past:{singularNominative:"{{count}} хвилину тому",singularGenitive:"{{count}} хвилини тому",pluralGenitive:"{{count}} хвилин тому"},future:{singularNominative:"за {{count}} хвилину",singularGenitive:"за {{count}} хвилини",pluralGenitive:"за {{count}} хвилин"}}),aboutXHours:kt({regular:{singularNominative:"близько {{count}} години",singularGenitive:"близько {{count}} годин",pluralGenitive:"близько {{count}} годин"},future:{singularNominative:"приблизно за {{count}} годину",singularGenitive:"приблизно за {{count}} години",pluralGenitive:"приблизно за {{count}} годин"}}),xHours:kt({regular:{singularNominative:"{{count}} годину",singularGenitive:"{{count}} години",pluralGenitive:"{{count}} годин"}}),xDays:kt({regular:{singularNominative:"{{count}} день",singularGenitive:"{{count}} днi",pluralGenitive:"{{count}} днів"}}),aboutXWeeks:kt({regular:{singularNominative:"близько {{count}} тижня",singularGenitive:"близько {{count}} тижнів",pluralGenitive:"близько {{count}} тижнів"},future:{singularNominative:"приблизно за {{count}} тиждень",singularGenitive:"приблизно за {{count}} тижні",pluralGenitive:"приблизно за {{count}} тижнів"}}),xWeeks:kt({regular:{singularNominative:"{{count}} тиждень",singularGenitive:"{{count}} тижні",pluralGenitive:"{{count}} тижнів"}}),aboutXMonths:kt({regular:{singularNominative:"близько {{count}} місяця",singularGenitive:"близько {{count}} місяців",pluralGenitive:"близько {{count}} місяців"},future:{singularNominative:"приблизно за {{count}} місяць",singularGenitive:"приблизно за {{count}} місяці",pluralGenitive:"приблизно за {{count}} місяців"}}),xMonths:kt({regular:{singularNominative:"{{count}} місяць",singularGenitive:"{{count}} місяці",pluralGenitive:"{{count}} місяців"}}),aboutXYears:kt({regular:{singularNominative:"близько {{count}} року",singularGenitive:"близько {{count}} років",pluralGenitive:"близько {{count}} років"},future:{singularNominative:"приблизно за {{count}} рік",singularGenitive:"приблизно за {{count}} роки",pluralGenitive:"приблизно за {{count}} років"}}),xYears:kt({regular:{singularNominative:"{{count}} рік",singularGenitive:"{{count}} роки",pluralGenitive:"{{count}} років"}}),overXYears:kt({regular:{singularNominative:"більше {{count}} року",singularGenitive:"більше {{count}} років",pluralGenitive:"більше {{count}} років"},future:{singularNominative:"більше, ніж за {{count}} рік",singularGenitive:"більше, ніж за {{count}} роки",pluralGenitive:"більше, ніж за {{count}} років"}}),almostXYears:kt({regular:{singularNominative:"майже {{count}} рік",singularGenitive:"майже {{count}} роки",pluralGenitive:"майже {{count}} років"},future:{singularNominative:"майже за {{count}} рік",singularGenitive:"майже за {{count}} роки",pluralGenitive:"майже за {{count}} років"}})},Pt={date:fe({formats:{full:"EEEE, do MMMM y 'р.'",long:"do MMMM y 'р.'",medium:"d MMM y 'р.'",short:"dd.MM.y"},defaultWidth:"full"}),time:fe({formats:{full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} 'о' {{time}}",long:"{{date}} 'о' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},St=["неділю","понеділок","вівторок","середу","четвер","п’ятницю","суботу"];function Tt(e){return"'у "+St[e]+" о' p"}const Et={lastWeek:(e,t,n)=>{const a=ye(e),r=a.getDay();return xe(a,t,n)?Tt(r):function(e){const t=St[e];switch(e){case 0:case 3:case 5:case 6:return"'у минулу "+t+" о' p";case 1:case 2:case 4:return"'у минулий "+t+" о' p"}}(r)},yesterday:"'вчора о' p",today:"'сьогодні о' p",tomorrow:"'завтра о' p",nextWeek:(e,t,n)=>{const a=ye(e),r=a.getDay();return xe(a,t,n)?Tt(r):function(e){const t=St[e];switch(e){case 0:case 3:case 5:case 6:return"'у наступну "+t+" о' p";case 1:case 2:case 4:return"'у наступний "+t+" о' p"}}(r)},other:"P"},Nt={code:"uk",formatDistance:(e,t,n)=>(n=n||{},xt[e](t,n)),formatLong:Pt,formatRelative:(e,t,n,a)=>{const r=Et[e];return"function"==typeof r?r(t,n,a):r},localize:{ordinalNumber:(e,t)=>{const n=String(null==t?void 0:t.unit),a=Number(e);let r;return r="date"===n?3===a||23===a?"-є":"-е":"minute"===n||"second"===n||"hour"===n?"-а":"-й",a+r},era:pe({values:{narrow:["до н.е.","н.е."],abbreviated:["до н. е.","н. е."],wide:["до нашої ери","нашої ери"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["1-й кв.","2-й кв.","3-й кв.","4-й кв."],wide:["1-й квартал","2-й квартал","3-й квартал","4-й квартал"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["С","Л","Б","К","Т","Ч","Л","С","В","Ж","Л","Г"],abbreviated:["січ.","лют.","берез.","квіт.","трав.","черв.","лип.","серп.","верес.","жовт.","листоп.","груд."],wide:["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"]},defaultWidth:"wide",formattingValues:{narrow:["С","Л","Б","К","Т","Ч","Л","С","В","Ж","Л","Г"],abbreviated:["січ.","лют.","берез.","квіт.","трав.","черв.","лип.","серп.","верес.","жовт.","листоп.","груд."],wide:["січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"]},defaultFormattingWidth:"wide"}),day:pe({values:{narrow:["Н","П","В","С","Ч","П","С"],short:["нд","пн","вт","ср","чт","пт","сб"],abbreviated:["нед","пон","вів","сер","чтв","птн","суб"],wide:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранок",afternoon:"день",evening:"веч.",night:"ніч"},abbreviated:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранок",afternoon:"день",evening:"веч.",night:"ніч"},wide:{am:"ДП",pm:"ПП",midnight:"північ",noon:"полудень",morning:"ранок",afternoon:"день",evening:"вечір",night:"ніч"}},defaultWidth:"any",formattingValues:{narrow:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"},abbreviated:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"},wide:{am:"ДП",pm:"ПП",midnight:"північ",noon:"полудень",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)(-?(е|й|є|а|я))?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^((до )?н\.?\s?е\.?)/i,abbreviated:/^((до )?н\.?\s?е\.?)/i,wide:/^(до нашої ери|нашої ери|наша ера)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^д/i,/^н/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^[1234](-?[иі]?й?)? кв.?/i,wide:/^[1234](-?[иі]?й?)? квартал/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^[слбктчвжг]/i,abbreviated:/^(січ|лют|бер(ез)?|квіт|трав|черв|лип|серп|вер(ес)?|жовт|лис(топ)?|груд)\.?/i,wide:/^(січень|січня|лютий|лютого|березень|березня|квітень|квітня|травень|травня|червня|червень|липень|липня|серпень|серпня|вересень|вересня|жовтень|жовтня|листопад[а]?|грудень|грудня)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^с/i,/^л/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^л/i,/^с/i,/^в/i,/^ж/i,/^л/i,/^г/i],any:[/^сі/i,/^лю/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^лип/i,/^се/i,/^в/i,/^ж/i,/^лис/i,/^г/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[нпвсч]/i,short:/^(нд|пн|вт|ср|чт|пт|сб)\.?/i,abbreviated:/^(нед|пон|вів|сер|че?тв|птн?|суб)\.?/i,wide:/^(неділ[яі]|понеділ[ок][ка]|вівтор[ок][ка]|серед[аи]|четвер(га)?|п\W*?ятниц[яі]|субот[аи])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^н/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^н/i,/^п[он]/i,/^в/i,/^с[ер]/i,/^ч/i,/^п\W*?[ят]/i,/^с[уб]/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{narrow:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,abbreviated:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,wide:/^([дп]п|північ|полудень|ранок|ранку|день|дня|вечір|вечора|ніч|ночі)/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^дп/i,pm:/^пп/i,midnight:/^півн/i,noon:/^пол/i,morning:/^р/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}},Wt={lessThanXSeconds:{one:"dưới 1 giây",other:"dưới {{count}} giây"},xSeconds:{one:"1 giây",other:"{{count}} giây"},halfAMinute:"nửa phút",lessThanXMinutes:{one:"dưới 1 phút",other:"dưới {{count}} phút"},xMinutes:{one:"1 phút",other:"{{count}} phút"},aboutXHours:{one:"khoảng 1 giờ",other:"khoảng {{count}} giờ"},xHours:{one:"1 giờ",other:"{{count}} giờ"},xDays:{one:"1 ngày",other:"{{count}} ngày"},aboutXWeeks:{one:"khoảng 1 tuần",other:"khoảng {{count}} tuần"},xWeeks:{one:"1 tuần",other:"{{count}} tuần"},aboutXMonths:{one:"khoảng 1 tháng",other:"khoảng {{count}} tháng"},xMonths:{one:"1 tháng",other:"{{count}} tháng"},aboutXYears:{one:"khoảng 1 năm",other:"khoảng {{count}} năm"},xYears:{one:"1 năm",other:"{{count}} năm"},overXYears:{one:"hơn 1 năm",other:"hơn {{count}} năm"},almostXYears:{one:"gần 1 năm",other:"gần {{count}} năm"}},Ot={date:fe({formats:{full:"EEEE, 'ngày' d MMMM 'năm' y",long:"'ngày' d MMMM 'năm' y",medium:"d MMM 'năm' y",short:"dd/MM/y"},defaultWidth:"full"}),time:fe({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},Ct={lastWeek:"eeee 'tuần trước vào lúc' p",yesterday:"'hôm qua vào lúc' p",today:"'hôm nay vào lúc' p",tomorrow:"'ngày mai vào lúc' p",nextWeek:"eeee 'tới vào lúc' p",other:"P"},jt={code:"vi",formatDistance:(e,t,n)=>{let a;const r=Wt[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?a+" nữa":a+" trước":a},formatLong:Ot,formatRelative:(e,t,n,a)=>Ct[e],localize:{ordinalNumber:(e,t)=>{const n=Number(e),a=null==t?void 0:t.unit;if("quarter"===a)switch(n){case 1:return"I";case 2:return"II";case 3:return"III";case 4:return"IV"}else if("day"===a)switch(n){case 1:return"thứ 2";case 2:return"thứ 3";case 3:return"thứ 4";case 4:return"thứ 5";case 5:return"thứ 6";case 6:return"thứ 7";case 7:return"chủ nhật"}else{if("week"===a)return 1===n?"thứ nhất":"thứ "+n;if("dayOfYear"===a)return 1===n?"đầu tiên":"thứ "+n}return String(n)},era:pe({values:{narrow:["TCN","SCN"],abbreviated:["trước CN","sau CN"],wide:["trước Công Nguyên","sau Công Nguyên"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["Quý 1","Quý 2","Quý 3","Quý 4"]},defaultWidth:"wide",formattingValues:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["quý I","quý II","quý III","quý IV"]},defaultFormattingWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["Thg 1","Thg 2","Thg 3","Thg 4","Thg 5","Thg 6","Thg 7","Thg 8","Thg 9","Thg 10","Thg 11","Thg 12"],wide:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"]},defaultWidth:"wide",formattingValues:{narrow:["01","02","03","04","05","06","07","08","09","10","11","12"],abbreviated:["thg 1","thg 2","thg 3","thg 4","thg 5","thg 6","thg 7","thg 8","thg 9","thg 10","thg 11","thg 12"],wide:["tháng 01","tháng 02","tháng 03","tháng 04","tháng 05","tháng 06","tháng 07","tháng 08","tháng 09","tháng 10","tháng 11","tháng 12"]},defaultFormattingWidth:"wide"}),day:pe({values:{narrow:["CN","T2","T3","T4","T5","T6","T7"],short:["CN","Th 2","Th 3","Th 4","Th 5","Th 6","Th 7"],abbreviated:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],wide:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"am",pm:"pm",midnight:"nửa đêm",noon:"tr",morning:"sg",afternoon:"ch",evening:"tối",night:"đêm"},abbreviated:{am:"AM",pm:"PM",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"},wide:{am:"SA",pm:"CH",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"}},defaultWidth:"wide",formattingValues:{narrow:{am:"am",pm:"pm",midnight:"nửa đêm",noon:"tr",morning:"sg",afternoon:"ch",evening:"tối",night:"đêm"},abbreviated:{am:"AM",pm:"PM",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"},wide:{am:"SA",pm:"CH",midnight:"nửa đêm",noon:"giữa trưa",morning:"vào buổi sáng",afternoon:"vào buổi chiều",evening:"vào buổi tối",night:"vào ban đêm"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(\d+)/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(tcn|scn)/i,abbreviated:/^(trước CN|sau CN)/i,wide:/^(trước Công Nguyên|sau Công Nguyên)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^t/i,/^s/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^([1234]|i{1,3}v?)/i,abbreviated:/^q([1234]|i{1,3}v?)/i,wide:/^quý ([1234]|i{1,3}v?)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(1|i)$/i,/(2|ii)$/i,/(3|iii)$/i,/(4|iv)$/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^(0?[2-9]|10|11|12|0?1)/i,abbreviated:/^thg[ _]?(0?[1-9](?!\d)|10|11|12)/i,wide:/^tháng ?(Một|Hai|Ba|Tư|Năm|Sáu|Bảy|Tám|Chín|Mười|Mười ?Một|Mười ?Hai|0?[1-9](?!\d)|10|11|12)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/0?1$/i,/0?2/i,/3/,/4/,/5/,/6/,/7/,/8/,/9/,/10/,/11/,/12/],abbreviated:[/^thg[ _]?0?1(?!\d)/i,/^thg[ _]?0?2/i,/^thg[ _]?0?3/i,/^thg[ _]?0?4/i,/^thg[ _]?0?5/i,/^thg[ _]?0?6/i,/^thg[ _]?0?7/i,/^thg[ _]?0?8/i,/^thg[ _]?0?9/i,/^thg[ _]?10/i,/^thg[ _]?11/i,/^thg[ _]?12/i],wide:[/^tháng ?(Một|0?1(?!\d))/i,/^tháng ?(Hai|0?2)/i,/^tháng ?(Ba|0?3)/i,/^tháng ?(Tư|0?4)/i,/^tháng ?(Năm|0?5)/i,/^tháng ?(Sáu|0?6)/i,/^tháng ?(Bảy|0?7)/i,/^tháng ?(Tám|0?8)/i,/^tháng ?(Chín|0?9)/i,/^tháng ?(Mười|10)/i,/^tháng ?(Mười ?Một|11)/i,/^tháng ?(Mười ?Hai|12)/i]},defaultParseWidth:"wide"}),day:be({matchPatterns:{narrow:/^(CN|T2|T3|T4|T5|T6|T7)/i,short:/^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,abbreviated:/^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,wide:/^(Chủ ?Nhật|Chúa ?Nhật|thứ ?Hai|thứ ?Ba|thứ ?Tư|thứ ?Năm|thứ ?Sáu|thứ ?Bảy)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],short:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],abbreviated:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],wide:[/(Chủ|Chúa) ?Nhật/i,/Hai/i,/Ba/i,/Tư/i,/Năm/i,/Sáu/i,/Bảy/i]},defaultParseWidth:"wide"}),dayPeriod:be({matchPatterns:{narrow:/^(a|p|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,abbreviated:/^(am|pm|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,wide:/^(ch[^i]*|sa|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^(a|sa)/i,pm:/^(p|ch[^i]*)/i,midnight:/nửa đêm/i,noon:/trưa/i,morning:/sáng/i,afternoon:/chiều/i,evening:/tối/i,night:/^đêm/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}},At={lessThanXSeconds:{one:"少於 1 秒",other:"少於 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分鐘",lessThanXMinutes:{one:"少於 1 分鐘",other:"少於 {{count}} 分鐘"},xMinutes:{one:"1 分鐘",other:"{{count}} 分鐘"},xHours:{one:"1 小時",other:"{{count}} 小時"},aboutXHours:{one:"大約 1 小時",other:"大約 {{count}} 小時"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大約 1 個星期",other:"大約 {{count}} 個星期"},xWeeks:{one:"1 個星期",other:"{{count}} 個星期"},aboutXMonths:{one:"大約 1 個月",other:"大約 {{count}} 個月"},xMonths:{one:"1 個月",other:"{{count}} 個月"},aboutXYears:{one:"大約 1 年",other:"大約 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超過 1 年",other:"超過 {{count}} 年"},almostXYears:{one:"將近 1 年",other:"將近 {{count}} 年"}},Rt={date:fe({formats:{full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},defaultWidth:"full"}),time:fe({formats:{full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},defaultWidth:"full"}),dateTime:fe({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},Dt={lastWeek:"'上個'eeee p",yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:"'下個'eeee p",other:"P"},Ht={code:"zh-TW",formatDistance:(e,t,n)=>{let a;const r=At[e];return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",String(t)),(null==n?void 0:n.addSuffix)?n.comparison&&n.comparison>0?a+"內":a+"前":a},formatLong:Rt,formatRelative:(e,t,n,a)=>Dt[e],localize:{ordinalNumber:(e,t)=>{const n=Number(e);switch(null==t?void 0:t.unit){case"date":return n+"日";case"hour":return n+"時";case"minute":return n+"分";case"second":return n+"秒";default:return"第 "+n}},era:pe({values:{narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},defaultWidth:"wide"}),quarter:pe({values:{narrow:["1","2","3","4"],abbreviated:["第一刻","第二刻","第三刻","第四刻"],wide:["第一刻鐘","第二刻鐘","第三刻鐘","第四刻鐘"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:pe({values:{narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},defaultWidth:"wide"}),day:pe({values:{narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["週日","週一","週二","週三","週四","週五","週六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},defaultWidth:"wide"}),dayPeriod:pe({values:{narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"}},defaultWidth:"wide",formattingValues:{narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:we({matchPattern:/^(第\s*)?\d+(日|時|分|秒)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:be({matchPatterns:{narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^(前)/i,/^(公元)/i]},defaultParseWidth:"any"}),quarter:be({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻鐘/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:be({matchPatterns:{narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},defaultParseWidth:"any"}),day:be({matchPatterns:{narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^週[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},defaultMatchWidth:"wide",parsePatterns:{any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},defaultParseWidth:"any"}),dayPeriod:be({matchPatterns:{any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}};function zt(e,t){return e instanceof Date?new e.constructor(t):new Date(t)}function _t(e,t){const n=ye(e);return isNaN(t)?zt(e,NaN):t?(n.setDate(n.getDate()+t),n):n}function Lt(e,t){const n=ye(e);if(isNaN(t))return zt(e,NaN);if(!t)return n;const a=n.getDate(),r=zt(e,n.getTime());r.setMonth(n.getMonth()+t+1,0);return a>=r.getDate()?r:(n.setFullYear(r.getFullYear(),r.getMonth(),a),n)}const qt=6048e5,Ft=36e5;function Bt(e){return ke(e,{weekStartsOn:1})}function Gt(e){const t=ye(e),n=t.getFullYear(),a=zt(e,0);a.setFullYear(n+1,0,4),a.setHours(0,0,0,0);const r=Bt(a),i=zt(e,0);i.setFullYear(n,0,4),i.setHours(0,0,0,0);const o=Bt(i);return t.getTime()>=r.getTime()?n+1:t.getTime()>=o.getTime()?n:n-1}function It(e){const t=ye(e);return t.setHours(0,0,0,0),t}function Xt(e){const t=ye(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-+n}function Yt(e,t){const n=It(e),a=It(t),r=+n-Xt(n),i=+a-Xt(a);return Math.round((r-i)/864e5)}function Ut(e,t){return Lt(e,3*t)}function Jt(e,t){return Lt(e,12*t)}function Qt(e,t){return+It(e)===+It(t)}function Kt(e){if(!(t=e,t instanceof Date||"object"==typeof t&&"[object Date]"===Object.prototype.toString.call(t)||"number"==typeof e))return!1;var t;const n=ye(e);return!isNaN(Number(n))}function Vt(e){const t=ye(e);return Math.trunc(t.getMonth()/3)+1}function $t(e,t){const n=ye(e),a=ye(t),r=Zt(n,a),i=Math.abs(Yt(n,a));n.setDate(n.getDate()-r*i);const o=r*(i-Number(Zt(n,a)===-r));return 0===o?0:o}function Zt(e,t){const n=e.getFullYear()-t.getFullYear()||e.getMonth()-t.getMonth()||e.getDate()-t.getDate()||e.getHours()-t.getHours()||e.getMinutes()-t.getMinutes()||e.getSeconds()-t.getSeconds()||e.getMilliseconds()-t.getMilliseconds();return n<0?-1:n>0?1:n}function en(e,t,n){const a=function(e,t){return+ye(e)-+ye(t)}(e,t)/Ft;return(r=null==n?void 0:n.roundingMethod,e=>{const t=(r?Math[r]:Math.trunc)(e);return 0===t?0:t})(a);var r}function tn(e){const t=ye(e);return t.setHours(23,59,59,999),t}function nn(e){const t=ye(e);return t.setSeconds(0,0),t}function an(e){const t=ye(e),n=t.getMonth(),a=n-n%3;return t.setMonth(a,1),t.setHours(0,0,0,0),t}function rn(e){const t=ye(e);return t.setDate(1),t.setHours(0,0,0,0),t}function on(e){const t=ye(e),n=zt(e,0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}function sn(e){const t=ye(e),n=+Bt(t)-+function(e){const t=Gt(e),n=zt(e,0);return n.setFullYear(t,0,4),n.setHours(0,0,0,0),Bt(n)}(t);return Math.round(n/qt)+1}function un(e,t){var n,a,r,i,o,s,u,d;const c=ye(e),l=c.getFullYear(),h=Me(),m=null!=(d=null!=(u=null!=(i=null!=(r=null==t?void 0:t.firstWeekContainsDate)?r:null==(a=null==(n=null==t?void 0:t.locale)?void 0:n.options)?void 0:a.firstWeekContainsDate)?i:h.firstWeekContainsDate)?u:null==(s=null==(o=h.locale)?void 0:o.options)?void 0:s.firstWeekContainsDate)?d:1,g=zt(e,0);g.setFullYear(l+1,0,m),g.setHours(0,0,0,0);const f=ke(g,t),p=zt(e,0);p.setFullYear(l,0,m),p.setHours(0,0,0,0);const b=ke(p,t);return c.getTime()>=f.getTime()?l+1:c.getTime()>=b.getTime()?l:l-1}function dn(e,t){const n=ye(e),a=+ke(n,t)-+function(e,t){var n,a,r,i,o,s,u,d;const c=Me(),l=null!=(d=null!=(u=null!=(i=null!=(r=null==t?void 0:t.firstWeekContainsDate)?r:null==(a=null==(n=null==t?void 0:t.locale)?void 0:n.options)?void 0:a.firstWeekContainsDate)?i:c.firstWeekContainsDate)?u:null==(s=null==(o=c.locale)?void 0:o.options)?void 0:s.firstWeekContainsDate)?d:1,h=un(e,t),m=zt(e,0);return m.setFullYear(h,0,l),m.setHours(0,0,0,0),ke(m,t)}(n,t);return Math.round(a/qt)+1}function cn(e,t){return(e<0?"-":"")+Math.abs(e).toString().padStart(t,"0")}const ln={y(e,t){const n=e.getFullYear(),a=n>0?n:1-n;return cn("yy"===t?a%100:a,t.length)},M(e,t){const n=e.getMonth();return"M"===t?String(n+1):cn(n+1,2)},d:(e,t)=>cn(e.getDate(),t.length),a(e,t){const n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];default:return"am"===n?"a.m.":"p.m."}},h:(e,t)=>cn(e.getHours()%12||12,t.length),H:(e,t)=>cn(e.getHours(),t.length),m:(e,t)=>cn(e.getMinutes(),t.length),s:(e,t)=>cn(e.getSeconds(),t.length),S(e,t){const n=t.length,a=e.getMilliseconds();return cn(Math.trunc(a*Math.pow(10,n-3)),t.length)}},hn="midnight",mn="noon",gn="morning",fn="afternoon",pn="evening",bn="night",wn={G:function(e,t,n){const a=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(a,{width:"abbreviated"});case"GGGGG":return n.era(a,{width:"narrow"});default:return n.era(a,{width:"wide"})}},y:function(e,t,n){if("yo"===t){const t=e.getFullYear(),a=t>0?t:1-t;return n.ordinalNumber(a,{unit:"year"})}return ln.y(e,t)},Y:function(e,t,n,a){const r=un(e,a),i=r>0?r:1-r;if("YY"===t){return cn(i%100,2)}return"Yo"===t?n.ordinalNumber(i,{unit:"year"}):cn(i,t.length)},R:function(e,t){return cn(Gt(e),t.length)},u:function(e,t){return cn(e.getFullYear(),t.length)},Q:function(e,t,n){const a=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(a);case"QQ":return cn(a,2);case"Qo":return n.ordinalNumber(a,{unit:"quarter"});case"QQQ":return n.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(a,{width:"narrow",context:"formatting"});default:return n.quarter(a,{width:"wide",context:"formatting"})}},q:function(e,t,n){const a=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(a);case"qq":return cn(a,2);case"qo":return n.ordinalNumber(a,{unit:"quarter"});case"qqq":return n.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(a,{width:"narrow",context:"standalone"});default:return n.quarter(a,{width:"wide",context:"standalone"})}},M:function(e,t,n){const a=e.getMonth();switch(t){case"M":case"MM":return ln.M(e,t);case"Mo":return n.ordinalNumber(a+1,{unit:"month"});case"MMM":return n.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(a,{width:"narrow",context:"formatting"});default:return n.month(a,{width:"wide",context:"formatting"})}},L:function(e,t,n){const a=e.getMonth();switch(t){case"L":return String(a+1);case"LL":return cn(a+1,2);case"Lo":return n.ordinalNumber(a+1,{unit:"month"});case"LLL":return n.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(a,{width:"narrow",context:"standalone"});default:return n.month(a,{width:"wide",context:"standalone"})}},w:function(e,t,n,a){const r=dn(e,a);return"wo"===t?n.ordinalNumber(r,{unit:"week"}):cn(r,t.length)},I:function(e,t,n){const a=sn(e);return"Io"===t?n.ordinalNumber(a,{unit:"week"}):cn(a,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getDate(),{unit:"date"}):ln.d(e,t)},D:function(e,t,n){const a=function(e){const t=ye(e);return Yt(t,on(t))+1}(e);return"Do"===t?n.ordinalNumber(a,{unit:"dayOfYear"}):cn(a,t.length)},E:function(e,t,n){const a=e.getDay();switch(t){case"E":case"EE":case"EEE":return n.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},e:function(e,t,n,a){const r=e.getDay(),i=(r-a.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return cn(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},c:function(e,t,n,a){const r=e.getDay(),i=(r-a.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return cn(i,t.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(r,{width:"narrow",context:"standalone"});case"cccccc":return n.day(r,{width:"short",context:"standalone"});default:return n.day(r,{width:"wide",context:"standalone"})}},i:function(e,t,n){const a=e.getDay(),r=0===a?7:a;switch(t){case"i":return String(r);case"ii":return cn(r,t.length);case"io":return n.ordinalNumber(r,{unit:"day"});case"iii":return n.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},a:function(e,t,n){const a=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(a,{width:"narrow",context:"formatting"});default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},b:function(e,t,n){const a=e.getHours();let r;switch(r=12===a?mn:0===a?hn:a/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(e,t,n){const a=e.getHours();let r;switch(r=a>=17?pn:a>=12?fn:a>=4?gn:bn,t){case"B":case"BB":case"BBB":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){let t=e.getHours()%12;return 0===t&&(t=12),n.ordinalNumber(t,{unit:"hour"})}return ln.h(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getHours(),{unit:"hour"}):ln.H(e,t)},K:function(e,t,n){const a=e.getHours()%12;return"Ko"===t?n.ordinalNumber(a,{unit:"hour"}):cn(a,t.length)},k:function(e,t,n){let a=e.getHours();return 0===a&&(a=24),"ko"===t?n.ordinalNumber(a,{unit:"hour"}):cn(a,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getMinutes(),{unit:"minute"}):ln.m(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getSeconds(),{unit:"second"}):ln.s(e,t)},S:function(e,t){return ln.S(e,t)},X:function(e,t,n){const a=e.getTimezoneOffset();if(0===a)return"Z";switch(t){case"X":return vn(a);case"XXXX":case"XX":return Mn(a);default:return Mn(a,":")}},x:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"x":return vn(a);case"xxxx":case"xx":return Mn(a);default:return Mn(a,":")}},O:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+yn(a,":");default:return"GMT"+Mn(a,":")}},z:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+yn(a,":");default:return"GMT"+Mn(a,":")}},t:function(e,t,n){return cn(Math.trunc(e.getTime()/1e3),t.length)},T:function(e,t,n){return cn(e.getTime(),t.length)}};function yn(e,t=""){const n=e>0?"-":"+",a=Math.abs(e),r=Math.trunc(a/60),i=a%60;return 0===i?n+String(r):n+String(r)+t+cn(i,2)}function vn(e,t){if(e%60==0){return(e>0?"-":"+")+cn(Math.abs(e)/60,2)}return Mn(e,t)}function Mn(e,t=""){const n=e>0?"-":"+",a=Math.abs(e);return n+cn(Math.trunc(a/60),2)+t+cn(a%60,2)}const kn=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},xn=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},Pn={p:xn,P:(e,t)=>{const n=e.match(/(P+)(p+)?/)||[],a=n[1],r=n[2];if(!r)return kn(e,t);let i;switch(a){case"P":i=t.dateTime({width:"short"});break;case"PP":i=t.dateTime({width:"medium"});break;case"PPP":i=t.dateTime({width:"long"});break;default:i=t.dateTime({width:"full"})}return i.replace("{{date}}",kn(a,t)).replace("{{time}}",xn(r,t))}},Sn=/^D+$/,Tn=/^Y+$/,En=["D","DD","YY","YYYY"];function Nn(e){return Sn.test(e)}function Wn(e){return Tn.test(e)}function On(e,t,n){const a=function(e,t,n){const a="Y"===e[0]?"years":"days of the month";return"Use `".concat(e.toLowerCase(),"` instead of `").concat(e,"` (in `").concat(t,"`) for formatting ").concat(a," to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")}(e,t,n);if(console.warn(a),En.includes(e))throw new RangeError(a)}const Cn=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,jn=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,An=/^'([^]*?)'?$/,Rn=/''/g,Dn=/[a-zA-Z]/;function Hn(e,t,n){var a,r,i,o,s,u,d,c,l,h,m,g,f,p,b,w,y,v;const M=Me(),k=null!=(r=null!=(a=null==n?void 0:n.locale)?a:M.locale)?r:Re,x=null!=(h=null!=(l=null!=(u=null!=(s=null==n?void 0:n.firstWeekContainsDate)?s:null==(o=null==(i=null==n?void 0:n.locale)?void 0:i.options)?void 0:o.firstWeekContainsDate)?u:M.firstWeekContainsDate)?l:null==(c=null==(d=M.locale)?void 0:d.options)?void 0:c.firstWeekContainsDate)?h:1,P=null!=(v=null!=(y=null!=(p=null!=(f=null==n?void 0:n.weekStartsOn)?f:null==(g=null==(m=null==n?void 0:n.locale)?void 0:m.options)?void 0:g.weekStartsOn)?p:M.weekStartsOn)?y:null==(w=null==(b=M.locale)?void 0:b.options)?void 0:w.weekStartsOn)?v:0,S=ye(e);if(!Kt(S))throw new RangeError("Invalid time value");let T=t.match(jn).map(e=>{const t=e[0];if("p"===t||"P"===t){return(0,Pn[t])(e,k.formatLong)}return e}).join("").match(Cn).map(e=>{if("''"===e)return{isToken:!1,value:"'"};const t=e[0];if("'"===t)return{isToken:!1,value:zn(e)};if(wn[t])return{isToken:!0,value:e};if(t.match(Dn))throw new RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}});k.localize.preprocessor&&(T=k.localize.preprocessor(S,T));const E={firstWeekContainsDate:x,weekStartsOn:P,locale:k};return T.map(a=>{if(!a.isToken)return a.value;const r=a.value;(!(null==n?void 0:n.useAdditionalWeekYearTokens)&&Wn(r)||!(null==n?void 0:n.useAdditionalDayOfYearTokens)&&Nn(r))&&On(r,t,String(e));return(0,wn[r[0]])(S,r,k.localize,E)}).join("")}function zn(e){const t=e.match(An);return t?t[1].replace(Rn,"'"):e}function _n(e){return ye(e).getDate()}function Ln(e){return ye(e).getDay()}function qn(){return Object.assign({},Me())}function Fn(e){return ye(e).getHours()}function Bn(e){return ye(e).getMilliseconds()}function Gn(e){return ye(e).getMinutes()}function In(e){return ye(e).getMonth()}function Xn(e){return ye(e).getSeconds()}function Yn(e){return ye(e).getTime()}function Un(e){return ye(e).getFullYear()}function Jn(e,t){return+ye(e)<+ye(t)}class Qn{constructor(){t(this,"subPriority",0)}validate(e,t){return!0}}class Kn extends Qn{constructor(e,t,n,a,r){super(),this.value=e,this.validateValue=t,this.setValue=n,this.priority=a,r&&(this.subPriority=r)}validate(e,t){return this.validateValue(e,this.value,t)}set(e,t,n){return this.setValue(e,t,this.value,n)}}class Vn extends Qn{constructor(){super(...arguments),t(this,"priority",10),t(this,"subPriority",-1)}set(e,t){return t.timestampIsSet?e:zt(e,function(e,t){const n=t instanceof Date?zt(t,0):new t(0);return n.setFullYear(e.getFullYear(),e.getMonth(),e.getDate()),n.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()),n}(e,Date))}}class $n{run(e,t,n,a){const r=this.parse(e,t,n,a);return r?{setter:new Kn(r.value,this.validate,this.set,this.priority,this.subPriority),rest:r.rest}:null}validate(e,t,n){return!0}}const Zn=/^(1[0-2]|0?\d)/,ea=/^(3[0-1]|[0-2]?\d)/,ta=/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,na=/^(5[0-3]|[0-4]?\d)/,aa=/^(2[0-3]|[0-1]?\d)/,ra=/^(2[0-4]|[0-1]?\d)/,ia=/^(1[0-1]|0?\d)/,oa=/^(1[0-2]|0?\d)/,sa=/^[0-5]?\d/,ua=/^[0-5]?\d/,da=/^\d/,ca=/^\d{1,2}/,la=/^\d{1,3}/,ha=/^\d{1,4}/,ma=/^-?\d+/,ga=/^-?\d/,fa=/^-?\d{1,2}/,pa=/^-?\d{1,3}/,ba=/^-?\d{1,4}/,wa=/^([+-])(\d{2})(\d{2})?|Z/,ya=/^([+-])(\d{2})(\d{2})|Z/,va=/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,Ma=/^([+-])(\d{2}):(\d{2})|Z/,ka=/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/;function xa(e,t){return e?{value:t(e.value),rest:e.rest}:e}function Pa(e,t){const n=t.match(e);return n?{value:parseInt(n[0],10),rest:t.slice(n[0].length)}:null}function Sa(e,t){const n=t.match(e);if(!n)return null;if("Z"===n[0])return{value:0,rest:t.slice(1)};const a="+"===n[1]?1:-1,r=n[2]?parseInt(n[2],10):0,i=n[3]?parseInt(n[3],10):0,o=n[5]?parseInt(n[5],10):0;return{value:a*(r*Ft+6e4*i+1e3*o),rest:t.slice(n[0].length)}}function Ta(e){return Pa(ma,e)}function Ea(e,t){switch(e){case 1:return Pa(da,t);case 2:return Pa(ca,t);case 3:return Pa(la,t);case 4:return Pa(ha,t);default:return Pa(new RegExp("^\\d{1,"+e+"}"),t)}}function Na(e,t){switch(e){case 1:return Pa(ga,t);case 2:return Pa(fa,t);case 3:return Pa(pa,t);case 4:return Pa(ba,t);default:return Pa(new RegExp("^-?\\d{1,"+e+"}"),t)}}function Wa(e){switch(e){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;default:return 0}}function Oa(e,t){const n=t>0,a=n?t:1-t;let r;if(a<=50)r=e||100;else{const t=a+50;r=e+100*Math.trunc(t/100)-(e>=t%100?100:0)}return n?r:1-r}function Ca(e){return e%400==0||e%4==0&&e%100!=0}const ja=[31,28,31,30,31,30,31,31,30,31,30,31],Aa=[31,29,31,30,31,30,31,31,30,31,30,31];function Ra(e,t,n){var a,r,i,o,s,u,d,c;const l=Me(),h=null!=(c=null!=(d=null!=(o=null!=(i=null==n?void 0:n.weekStartsOn)?i:null==(r=null==(a=null==n?void 0:n.locale)?void 0:a.options)?void 0:r.weekStartsOn)?o:l.weekStartsOn)?d:null==(u=null==(s=l.locale)?void 0:s.options)?void 0:u.weekStartsOn)?c:0,m=ye(e),g=m.getDay(),f=7-h;return _t(m,t<0||t>6?t-(g+f)%7:((t%7+7)%7+f)%7-(g+f)%7)}function Da(e,t){const n=ye(e),a=function(e){let t=ye(e).getDay();return 0===t&&(t=7),t}(n);return _t(n,t-a)}const Ha={G:new class extends $n{constructor(){super(...arguments),t(this,"priority",140),t(this,"incompatibleTokens",["R","u","t","T"])}parse(e,t,n){switch(t){case"G":case"GG":case"GGG":return n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"});case"GGGGG":return n.era(e,{width:"narrow"});default:return n.era(e,{width:"wide"})||n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"})}}set(e,t,n){return t.era=n,e.setFullYear(n,0,1),e.setHours(0,0,0,0),e}},y:new class extends $n{constructor(){super(...arguments),t(this,"priority",130),t(this,"incompatibleTokens",["Y","R","u","w","I","i","e","c","t","T"])}parse(e,t,n){const a=e=>({year:e,isTwoDigitYear:"yy"===t});switch(t){case"y":return xa(Ea(4,e),a);case"yo":return xa(n.ordinalNumber(e,{unit:"year"}),a);default:return xa(Ea(t.length,e),a)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,n){const a=e.getFullYear();if(n.isTwoDigitYear){const t=Oa(n.year,a);return e.setFullYear(t,0,1),e.setHours(0,0,0,0),e}const r="era"in t&&1!==t.era?1-n.year:n.year;return e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}},Y:new class extends $n{constructor(){super(...arguments),t(this,"priority",130),t(this,"incompatibleTokens",["y","R","u","Q","q","M","L","I","d","D","i","t","T"])}parse(e,t,n){const a=e=>({year:e,isTwoDigitYear:"YY"===t});switch(t){case"Y":return xa(Ea(4,e),a);case"Yo":return xa(n.ordinalNumber(e,{unit:"year"}),a);default:return xa(Ea(t.length,e),a)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,n,a){const r=un(e,a);if(n.isTwoDigitYear){const t=Oa(n.year,r);return e.setFullYear(t,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),ke(e,a)}const i="era"in t&&1!==t.era?1-n.year:n.year;return e.setFullYear(i,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),ke(e,a)}},R:new class extends $n{constructor(){super(...arguments),t(this,"priority",130),t(this,"incompatibleTokens",["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"])}parse(e,t){return Na("R"===t?4:t.length,e)}set(e,t,n){const a=zt(e,0);return a.setFullYear(n,0,4),a.setHours(0,0,0,0),Bt(a)}},u:new class extends $n{constructor(){super(...arguments),t(this,"priority",130),t(this,"incompatibleTokens",["G","y","Y","R","w","I","i","e","c","t","T"])}parse(e,t){return Na("u"===t?4:t.length,e)}set(e,t,n){return e.setFullYear(n,0,1),e.setHours(0,0,0,0),e}},Q:new class extends $n{constructor(){super(...arguments),t(this,"priority",120),t(this,"incompatibleTokens",["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,t,n){switch(t){case"Q":case"QQ":return Ea(t.length,e);case"Qo":return n.ordinalNumber(e,{unit:"quarter"});case"QQQ":return n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return n.quarter(e,{width:"narrow",context:"formatting"});default:return n.quarter(e,{width:"wide",context:"formatting"})||n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=1&&t<=4}set(e,t,n){return e.setMonth(3*(n-1),1),e.setHours(0,0,0,0),e}},q:new class extends $n{constructor(){super(...arguments),t(this,"priority",120),t(this,"incompatibleTokens",["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,t,n){switch(t){case"q":case"qq":return Ea(t.length,e);case"qo":return n.ordinalNumber(e,{unit:"quarter"});case"qqq":return n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return n.quarter(e,{width:"narrow",context:"standalone"});default:return n.quarter(e,{width:"wide",context:"standalone"})||n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=1&&t<=4}set(e,t,n){return e.setMonth(3*(n-1),1),e.setHours(0,0,0,0),e}},M:new class extends $n{constructor(){super(...arguments),t(this,"incompatibleTokens",["Y","R","q","Q","L","w","I","D","i","e","c","t","T"]),t(this,"priority",110)}parse(e,t,n){const a=e=>e-1;switch(t){case"M":return xa(Pa(Zn,e),a);case"MM":return xa(Ea(2,e),a);case"Mo":return xa(n.ordinalNumber(e,{unit:"month"}),a);case"MMM":return n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return n.month(e,{width:"narrow",context:"formatting"});default:return n.month(e,{width:"wide",context:"formatting"})||n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.setMonth(n,1),e.setHours(0,0,0,0),e}},L:new class extends $n{constructor(){super(...arguments),t(this,"priority",110),t(this,"incompatibleTokens",["Y","R","q","Q","M","w","I","D","i","e","c","t","T"])}parse(e,t,n){const a=e=>e-1;switch(t){case"L":return xa(Pa(Zn,e),a);case"LL":return xa(Ea(2,e),a);case"Lo":return xa(n.ordinalNumber(e,{unit:"month"}),a);case"LLL":return n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return n.month(e,{width:"narrow",context:"standalone"});default:return n.month(e,{width:"wide",context:"standalone"})||n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.setMonth(n,1),e.setHours(0,0,0,0),e}},w:new class extends $n{constructor(){super(...arguments),t(this,"priority",100),t(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","i","t","T"])}parse(e,t,n){switch(t){case"w":return Pa(na,e);case"wo":return n.ordinalNumber(e,{unit:"week"});default:return Ea(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,n,a){return ke(function(e,t,n){const a=ye(e),r=dn(a,n)-t;return a.setDate(a.getDate()-7*r),a}(e,n,a),a)}},I:new class extends $n{constructor(){super(...arguments),t(this,"priority",100),t(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"])}parse(e,t,n){switch(t){case"I":return Pa(na,e);case"Io":return n.ordinalNumber(e,{unit:"week"});default:return Ea(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,n){return Bt(function(e,t){const n=ye(e),a=sn(n)-t;return n.setDate(n.getDate()-7*a),n}(e,n))}},d:new class extends $n{constructor(){super(...arguments),t(this,"priority",90),t(this,"subPriority",1),t(this,"incompatibleTokens",["Y","R","q","Q","w","I","D","i","e","c","t","T"])}parse(e,t,n){switch(t){case"d":return Pa(ea,e);case"do":return n.ordinalNumber(e,{unit:"date"});default:return Ea(t.length,e)}}validate(e,t){const n=Ca(e.getFullYear()),a=e.getMonth();return n?t>=1&&t<=Aa[a]:t>=1&&t<=ja[a]}set(e,t,n){return e.setDate(n),e.setHours(0,0,0,0),e}},D:new class extends $n{constructor(){super(...arguments),t(this,"priority",90),t(this,"subpriority",1),t(this,"incompatibleTokens",["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"])}parse(e,t,n){switch(t){case"D":case"DD":return Pa(ta,e);case"Do":return n.ordinalNumber(e,{unit:"date"});default:return Ea(t.length,e)}}validate(e,t){return Ca(e.getFullYear())?t>=1&&t<=366:t>=1&&t<=365}set(e,t,n){return e.setMonth(0,n),e.setHours(0,0,0,0),e}},E:new class extends $n{constructor(){super(...arguments),t(this,"priority",90),t(this,"incompatibleTokens",["D","i","e","c","t","T"])}parse(e,t,n){switch(t){case"E":case"EE":case"EEE":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return n.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,a){return(e=Ra(e,n,a)).setHours(0,0,0,0),e}},e:new class extends $n{constructor(){super(...arguments),t(this,"priority",90),t(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"])}parse(e,t,n,a){const r=e=>{const t=7*Math.floor((e-1)/7);return(e+a.weekStartsOn+6)%7+t};switch(t){case"e":case"ee":return xa(Ea(t.length,e),r);case"eo":return xa(n.ordinalNumber(e,{unit:"day"}),r);case"eee":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"eeeee":return n.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,a){return(e=Ra(e,n,a)).setHours(0,0,0,0),e}},c:new class extends $n{constructor(){super(...arguments),t(this,"priority",90),t(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"])}parse(e,t,n,a){const r=e=>{const t=7*Math.floor((e-1)/7);return(e+a.weekStartsOn+6)%7+t};switch(t){case"c":case"cc":return xa(Ea(t.length,e),r);case"co":return xa(n.ordinalNumber(e,{unit:"day"}),r);case"ccc":return n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});case"ccccc":return n.day(e,{width:"narrow",context:"standalone"});case"cccccc":return n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});default:return n.day(e,{width:"wide",context:"standalone"})||n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,a){return(e=Ra(e,n,a)).setHours(0,0,0,0),e}},i:new class extends $n{constructor(){super(...arguments),t(this,"priority",90),t(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"])}parse(e,t,n){const a=e=>0===e?7:e;switch(t){case"i":case"ii":return Ea(t.length,e);case"io":return n.ordinalNumber(e,{unit:"day"});case"iii":return xa(n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),a);case"iiiii":return xa(n.day(e,{width:"narrow",context:"formatting"}),a);case"iiiiii":return xa(n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),a);default:return xa(n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),a)}}validate(e,t){return t>=1&&t<=7}set(e,t,n){return(e=Da(e,n)).setHours(0,0,0,0),e}},a:new class extends $n{constructor(){super(...arguments),t(this,"priority",80),t(this,"incompatibleTokens",["b","B","H","k","t","T"])}parse(e,t,n){switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(Wa(n),0,0,0),e}},b:new class extends $n{constructor(){super(...arguments),t(this,"priority",80),t(this,"incompatibleTokens",["a","B","H","k","t","T"])}parse(e,t,n){switch(t){case"b":case"bb":case"bbb":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(Wa(n),0,0,0),e}},B:new class extends $n{constructor(){super(...arguments),t(this,"priority",80),t(this,"incompatibleTokens",["a","b","t","T"])}parse(e,t,n){switch(t){case"B":case"BB":case"BBB":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(Wa(n),0,0,0),e}},h:new class extends $n{constructor(){super(...arguments),t(this,"priority",70),t(this,"incompatibleTokens",["H","K","k","t","T"])}parse(e,t,n){switch(t){case"h":return Pa(oa,e);case"ho":return n.ordinalNumber(e,{unit:"hour"});default:return Ea(t.length,e)}}validate(e,t){return t>=1&&t<=12}set(e,t,n){const a=e.getHours()>=12;return a&&n<12?e.setHours(n+12,0,0,0):a||12!==n?e.setHours(n,0,0,0):e.setHours(0,0,0,0),e}},H:new class extends $n{constructor(){super(...arguments),t(this,"priority",70),t(this,"incompatibleTokens",["a","b","h","K","k","t","T"])}parse(e,t,n){switch(t){case"H":return Pa(aa,e);case"Ho":return n.ordinalNumber(e,{unit:"hour"});default:return Ea(t.length,e)}}validate(e,t){return t>=0&&t<=23}set(e,t,n){return e.setHours(n,0,0,0),e}},K:new class extends $n{constructor(){super(...arguments),t(this,"priority",70),t(this,"incompatibleTokens",["h","H","k","t","T"])}parse(e,t,n){switch(t){case"K":return Pa(ia,e);case"Ko":return n.ordinalNumber(e,{unit:"hour"});default:return Ea(t.length,e)}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.getHours()>=12&&n<12?e.setHours(n+12,0,0,0):e.setHours(n,0,0,0),e}},k:new class extends $n{constructor(){super(...arguments),t(this,"priority",70),t(this,"incompatibleTokens",["a","b","h","H","K","t","T"])}parse(e,t,n){switch(t){case"k":return Pa(ra,e);case"ko":return n.ordinalNumber(e,{unit:"hour"});default:return Ea(t.length,e)}}validate(e,t){return t>=1&&t<=24}set(e,t,n){const a=n<=24?n%24:n;return e.setHours(a,0,0,0),e}},m:new class extends $n{constructor(){super(...arguments),t(this,"priority",60),t(this,"incompatibleTokens",["t","T"])}parse(e,t,n){switch(t){case"m":return Pa(sa,e);case"mo":return n.ordinalNumber(e,{unit:"minute"});default:return Ea(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,n){return e.setMinutes(n,0,0),e}},s:new class extends $n{constructor(){super(...arguments),t(this,"priority",50),t(this,"incompatibleTokens",["t","T"])}parse(e,t,n){switch(t){case"s":return Pa(ua,e);case"so":return n.ordinalNumber(e,{unit:"second"});default:return Ea(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,n){return e.setSeconds(n,0),e}},S:new class extends $n{constructor(){super(...arguments),t(this,"priority",30),t(this,"incompatibleTokens",["t","T"])}parse(e,t){return xa(Ea(t.length,e),e=>Math.trunc(e*Math.pow(10,3-t.length)))}set(e,t,n){return e.setMilliseconds(n),e}},X:new class extends $n{constructor(){super(...arguments),t(this,"priority",10),t(this,"incompatibleTokens",["t","T","x"])}parse(e,t){switch(t){case"X":return Sa(wa,e);case"XX":return Sa(ya,e);case"XXXX":return Sa(va,e);case"XXXXX":return Sa(ka,e);default:return Sa(Ma,e)}}set(e,t,n){return t.timestampIsSet?e:zt(e,e.getTime()-Xt(e)-n)}},x:new class extends $n{constructor(){super(...arguments),t(this,"priority",10),t(this,"incompatibleTokens",["t","T","X"])}parse(e,t){switch(t){case"x":return Sa(wa,e);case"xx":return Sa(ya,e);case"xxxx":return Sa(va,e);case"xxxxx":return Sa(ka,e);default:return Sa(Ma,e)}}set(e,t,n){return t.timestampIsSet?e:zt(e,e.getTime()-Xt(e)-n)}},t:new class extends $n{constructor(){super(...arguments),t(this,"priority",40),t(this,"incompatibleTokens","*")}parse(e){return Ta(e)}set(e,t,n){return[zt(e,1e3*n),{timestampIsSet:!0}]}},T:new class extends $n{constructor(){super(...arguments),t(this,"priority",20),t(this,"incompatibleTokens","*")}parse(e){return Ta(e)}set(e,t,n){return[zt(e,n),{timestampIsSet:!0}]}}},za=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,_a=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,La=/^'([^]*?)'?$/,qa=/''/g,Fa=/\S/,Ba=/[a-zA-Z]/;function Ga(e,t,n,a){var r,i,o,s,u,d,c,l,h,m,g,f,p,b,w,y,v,M;const k=qn(),x=null!=(i=null!=(r=null==a?void 0:a.locale)?r:k.locale)?i:Re,P=null!=(m=null!=(h=null!=(d=null!=(u=null==a?void 0:a.firstWeekContainsDate)?u:null==(s=null==(o=null==a?void 0:a.locale)?void 0:o.options)?void 0:s.firstWeekContainsDate)?d:k.firstWeekContainsDate)?h:null==(l=null==(c=k.locale)?void 0:c.options)?void 0:l.firstWeekContainsDate)?m:1,S=null!=(M=null!=(v=null!=(b=null!=(p=null==a?void 0:a.weekStartsOn)?p:null==(f=null==(g=null==a?void 0:a.locale)?void 0:g.options)?void 0:f.weekStartsOn)?b:k.weekStartsOn)?v:null==(y=null==(w=k.locale)?void 0:w.options)?void 0:y.weekStartsOn)?M:0;if(""===t)return""===e?ye(n):zt(n,NaN);const T={firstWeekContainsDate:P,weekStartsOn:S,locale:x},E=[new Vn],N=t.match(_a).map(e=>{const t=e[0];if(t in Pn){return(0,Pn[t])(e,x.formatLong)}return e}).join("").match(za),W=[];for(let A of N){!(null==a?void 0:a.useAdditionalWeekYearTokens)&&Wn(A)&&On(A,t,e),!(null==a?void 0:a.useAdditionalDayOfYearTokens)&&Nn(A)&&On(A,t,e);const r=A[0],i=Ha[r];if(i){const{incompatibleTokens:t}=i;if(Array.isArray(t)){const e=W.find(e=>t.includes(e.token)||e.token===r);if(e)throw new RangeError("The format string mustn't contain `".concat(e.fullToken,"` and `").concat(A,"` at the same time"))}else if("*"===i.incompatibleTokens&&W.length>0)throw new RangeError("The format string mustn't contain `".concat(A,"` and any other token at the same time"));W.push({token:r,fullToken:A});const a=i.run(e,A,x.match,T);if(!a)return zt(n,NaN);E.push(a.setter),e=a.rest}else{if(r.match(Ba))throw new RangeError("Format string contains an unescaped latin alphabet character `"+r+"`");if("''"===A?A="'":"'"===r&&(A=Ia(A)),0!==e.indexOf(A))return zt(n,NaN);e=e.slice(A.length)}}if(e.length>0&&Fa.test(e))return zt(n,NaN);const O=E.map(e=>e.priority).sort((e,t)=>t-e).filter((e,t,n)=>n.indexOf(e)===t).map(e=>E.filter(t=>t.priority===e).sort((e,t)=>t.subPriority-e.subPriority)).map(e=>e[0]);let C=ye(n);if(isNaN(C.getTime()))return zt(n,NaN);const j={};for(const A of O){if(!A.validate(C,T))return zt(n,NaN);const e=A.set(C,j,T);Array.isArray(e)?(C=e[0],Object.assign(j,e[1])):C=e}return zt(n,C)}function Ia(e){return e.match(La)[1].replace(qa,"'")}function Xa(e){const t=ye(e);return t.setMinutes(0,0,0),t}function Ya(e,t){const n=ye(e),a=ye(t);return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()}function Ua(e,t){return+an(e)===+an(t)}function Ja(e){const t=ye(e);return t.setMilliseconds(0),t}function Qa(e,t){const n=ye(e),a=ye(t);return n.getFullYear()===a.getFullYear()}function Ka(e,t){const n=ye(e),a=n.getFullYear(),r=n.getDate(),i=zt(e,0);i.setFullYear(a,t,15),i.setHours(0,0,0,0);const o=function(e){const t=ye(e),n=t.getFullYear(),a=t.getMonth(),r=zt(e,0);return r.setFullYear(n,a+1,0),r.setHours(0,0,0,0),r.getDate()}(i);return n.setMonth(t,Math.min(r,o)),n}function Va(e,t){let n=ye(e);return isNaN(+n)?zt(e,NaN):(null!=t.year&&n.setFullYear(t.year),null!=t.month&&(n=Ka(n,t.month)),null!=t.date&&n.setDate(t.date),null!=t.hours&&n.setHours(t.hours),null!=t.minutes&&n.setMinutes(t.minutes),null!=t.seconds&&n.setSeconds(t.seconds),null!=t.milliseconds&&n.setMilliseconds(t.milliseconds),n)}function $a(e,t){const n=ye(e);return n.setHours(t),n}function Za(e,t){const n=ye(e);return n.setMinutes(t),n}function er(e,t){const n=ye(e),a=t-(Math.trunc(n.getMonth()/3)+1);return Ka(n,n.getMonth()+3*a)}function tr(e,t){const n=ye(e);return n.setSeconds(t),n}function nr(e,t){const n=ye(e);return isNaN(+n)?zt(e,NaN):(n.setFullYear(t),n)}function ar(){return It(Date.now())}function rr(e,t){return function(){return e.apply(t,arguments)}}const{toString:ir}=Object.prototype,{getPrototypeOf:or}=Object,{iterator:sr,toStringTag:ur}=Symbol,dr=(e=>t=>{const n=ir.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),cr=e=>(e=e.toLowerCase(),t=>dr(t)===e),lr=e=>t=>typeof t===e,{isArray:hr}=Array,mr=lr("undefined");function gr(e){return null!==e&&!mr(e)&&null!==e.constructor&&!mr(e.constructor)&&br(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const fr=cr("ArrayBuffer");const pr=lr("string"),br=lr("function"),wr=lr("number"),yr=e=>null!==e&&"object"==typeof e,vr=e=>{if("object"!==dr(e))return!1;const t=or(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||ur in e||sr in e)},Mr=cr("Date"),kr=cr("File"),xr=cr("Blob"),Pr=cr("FileList"),Sr=cr("URLSearchParams"),[Tr,Er,Nr,Wr]=["ReadableStream","Request","Response","Headers"].map(cr);function Or(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let a,r;if("object"!=typeof e&&(e=[e]),hr(e))for(a=0,r=e.length;a0;)if(a=n[r],t===a.toLowerCase())return a;return null}const jr="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Ar=e=>!mr(e)&&e!==jr;const Rr=(e=>t=>e&&t instanceof e)("undefined"!=typeof Uint8Array&&or(Uint8Array)),Dr=cr("HTMLFormElement"),Hr=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),zr=cr("RegExp"),_r=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),a={};Or(n,(n,r)=>{let i;!1!==(i=t(n,r,e))&&(a[r]=i||n)}),Object.defineProperties(e,a)};const Lr=cr("AsyncFunction"),qr=(Fr="function"==typeof setImmediate,Br=br(jr.postMessage),Fr?setImmediate:Br?(Gr="axios@".concat(Math.random()),Ir=[],jr.addEventListener("message",({source:e,data:t})=>{e===jr&&t===Gr&&Ir.length&&Ir.shift()()},!1),e=>{Ir.push(e),jr.postMessage(Gr,"*")}):e=>setTimeout(e));var Fr,Br,Gr,Ir;const Xr="undefined"!=typeof queueMicrotask?queueMicrotask.bind(jr):"undefined"!=typeof process&&process.nextTick||qr,Yr={isArray:hr,isArrayBuffer:fr,isBuffer:gr,isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||br(e.append)&&("formdata"===(t=dr(e))||"object"===t&&br(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&fr(e.buffer),t},isString:pr,isNumber:wr,isBoolean:e=>!0===e||!1===e,isObject:yr,isPlainObject:vr,isEmptyObject:e=>{if(!yr(e)||gr(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(t){return!1}},isReadableStream:Tr,isRequest:Er,isResponse:Nr,isHeaders:Wr,isUndefined:mr,isDate:Mr,isFile:kr,isBlob:xr,isRegExp:zr,isFunction:br,isStream:e=>yr(e)&&br(e.pipe),isURLSearchParams:Sr,isTypedArray:Rr,isFileList:Pr,forEach:Or,merge:function e(){const{caseless:t}=Ar(this)&&this||{},n={},a=(a,r)=>{const i=t&&Cr(n,r)||r;vr(n[i])&&vr(a)?n[i]=e(n[i],a):vr(a)?n[i]=e({},a):hr(a)?n[i]=a.slice():n[i]=a};for(let r=0,i=arguments.length;r(Or(t,(t,a)=>{n&&br(t)?e[a]=rr(t,n):e[a]=t},{allOwnKeys:a}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,a)=>{e.prototype=Object.create(t.prototype,a),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,a)=>{let r,i,o;const s={};if(t=t||{},null==e)return t;do{for(r=Object.getOwnPropertyNames(e),i=r.length;i-- >0;)o=r[i],a&&!a(o,e,t)||s[o]||(t[o]=e[o],s[o]=!0);e=!1!==n&&or(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:dr,kindOfTest:cr,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const a=e.indexOf(t,n);return-1!==a&&a===n},toArray:e=>{if(!e)return null;if(hr(e))return e;let t=e.length;if(!wr(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[sr]).call(e);let a;for(;(a=n.next())&&!a.done;){const n=a.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const a=[];for(;null!==(n=e.exec(t));)a.push(n);return a},isHTMLForm:Dr,hasOwnProperty:Hr,hasOwnProp:Hr,reduceDescriptors:_r,freezeMethods:e=>{_r(e,(t,n)=>{if(br(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const a=e[n];br(a)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))})},toObjectSet:(e,t)=>{const n={},a=e=>{e.forEach(e=>{n[e]=!0})};return hr(e)?a(e):a(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n}),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:Cr,global:jr,isContextDefined:Ar,isSpecCompliantForm:function(e){return!!(e&&br(e.append)&&"FormData"===e[ur]&&e[sr])},toJSONObject:e=>{const t=new Array(10),n=(e,a)=>{if(yr(e)){if(t.indexOf(e)>=0)return;if(gr(e))return e;if(!("toJSON"in e)){t[a]=e;const r=hr(e)?[]:{};return Or(e,(e,t)=>{const i=n(e,a+1);!mr(i)&&(r[t]=i)}),t[a]=void 0,r}}return e};return n(e,0)},isAsyncFn:Lr,isThenable:e=>e&&(yr(e)||br(e))&&br(e.then)&&br(e.catch),setImmediate:qr,asap:Xr,isIterable:e=>null!=e&&br(e[sr])};function Ur(e,t,n,a,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),a&&(this.request=a),r&&(this.response=r,this.status=r.status?r.status:null)}Yr.inherits(Ur,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Yr.toJSONObject(this.config),code:this.code,status:this.status}}});const Jr=Ur.prototype,Qr={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Qr[e]={value:e}}),Object.defineProperties(Ur,Qr),Object.defineProperty(Jr,"isAxiosError",{value:!0}),Ur.from=(e,t,n,a,r,i)=>{const o=Object.create(Jr);return Yr.toFlatObject(e,o,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e),Ur.call(o,e.message,t,n,a,r),o.cause=e,o.name=e.name,i&&Object.assign(o,i),o};function Kr(e){return Yr.isPlainObject(e)||Yr.isArray(e)}function Vr(e){return Yr.endsWith(e,"[]")?e.slice(0,-2):e}function $r(e,t,n){return e?e.concat(t).map(function(e,t){return e=Vr(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}const Zr=Yr.toFlatObject(Yr,{},null,function(e){return/^is[A-Z]/.test(e)});function ei(e,t,n){if(!Yr.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const a=(n=Yr.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!Yr.isUndefined(t[e])})).metaTokens,r=n.visitor||d,i=n.dots,o=n.indexes,s=(n.Blob||"undefined"!=typeof Blob&&Blob)&&Yr.isSpecCompliantForm(t);if(!Yr.isFunction(r))throw new TypeError("visitor must be a function");function u(e){if(null===e)return"";if(Yr.isDate(e))return e.toISOString();if(Yr.isBoolean(e))return e.toString();if(!s&&Yr.isBlob(e))throw new Ur("Blob is not supported. Use a Buffer instead.");return Yr.isArrayBuffer(e)||Yr.isTypedArray(e)?s&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,n,r){let s=e;if(e&&!r&&"object"==typeof e)if(Yr.endsWith(n,"{}"))n=a?n:n.slice(0,-2),e=JSON.stringify(e);else if(Yr.isArray(e)&&function(e){return Yr.isArray(e)&&!e.some(Kr)}(e)||(Yr.isFileList(e)||Yr.endsWith(n,"[]"))&&(s=Yr.toArray(e)))return n=Vr(n),s.forEach(function(e,a){!Yr.isUndefined(e)&&null!==e&&t.append(!0===o?$r([n],a,i):null===o?n:n+"[]",u(e))}),!1;return!!Kr(e)||(t.append($r(r,n,i),u(e)),!1)}const c=[],l=Object.assign(Zr,{defaultVisitor:d,convertValue:u,isVisitable:Kr});if(!Yr.isObject(e))throw new TypeError("data must be an object");return function e(n,a){if(!Yr.isUndefined(n)){if(-1!==c.indexOf(n))throw Error("Circular reference detected in "+a.join("."));c.push(n),Yr.forEach(n,function(n,i){!0===(!(Yr.isUndefined(n)||null===n)&&r.call(t,n,Yr.isString(i)?i.trim():i,a,l))&&e(n,a?a.concat(i):[i])}),c.pop()}}(e),t}function ti(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function ni(e,t){this._pairs=[],e&&ei(e,this,t)}const ai=ni.prototype;function ri(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ii(e,t,n){if(!t)return e;const a=n&&n.encode||ri;Yr.isFunction(n)&&(n={serialize:n});const r=n&&n.serialize;let i;if(i=r?r(t,n):Yr.isURLSearchParams(t)?t.toString():new ni(t,n).toString(a),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}ai.append=function(e,t){this._pairs.push([e,t])},ai.toString=function(e){const t=e?function(t){return e.call(this,t,ti)}:ti;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};class oi{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Yr.forEach(this.handlers,function(t){null!==t&&e(t)})}}const si={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},ui={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:ni,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},di="undefined"!=typeof window&&"undefined"!=typeof document,ci="object"==typeof navigator&&navigator||void 0,li=di&&(!ci||["ReactNative","NativeScript","NS"].indexOf(ci.product)<0),hi="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,mi=di&&window.location.href||"http://localhost",gi={...Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:di,hasStandardBrowserEnv:li,hasStandardBrowserWebWorkerEnv:hi,navigator:ci,origin:mi},Symbol.toStringTag,{value:"Module"})),...ui};function fi(e){function t(e,n,a,r){let i=e[r++];if("__proto__"===i)return!0;const o=Number.isFinite(+i),s=r>=e.length;if(i=!i&&Yr.isArray(a)?a.length:i,s)return Yr.hasOwnProp(a,i)?a[i]=[a[i],n]:a[i]=n,!o;a[i]&&Yr.isObject(a[i])||(a[i]=[]);return t(e,n,a[i],r)&&Yr.isArray(a[i])&&(a[i]=function(e){const t={},n=Object.keys(e);let a;const r=n.length;let i;for(a=0;a{t(function(e){return Yr.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),a,n,0)}),n}return null}const pi={transitional:si,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",a=n.indexOf("application/json")>-1,r=Yr.isObject(e);r&&Yr.isHTMLForm(e)&&(e=new FormData(e));if(Yr.isFormData(e))return a?JSON.stringify(fi(e)):e;if(Yr.isArrayBuffer(e)||Yr.isBuffer(e)||Yr.isStream(e)||Yr.isFile(e)||Yr.isBlob(e)||Yr.isReadableStream(e))return e;if(Yr.isArrayBufferView(e))return e.buffer;if(Yr.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let i;if(r){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return ei(e,new gi.classes.URLSearchParams,{visitor:function(e,t,n,a){return gi.isNode&&Yr.isBuffer(e)?(this.append(t,e.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)},...t})}(e,this.formSerializer).toString();if((i=Yr.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return ei(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return r||a?(t.setContentType("application/json",!1),function(e,t,n){if(Yr.isString(e))try{return(t||JSON.parse)(e),Yr.trim(e)}catch(a){if("SyntaxError"!==a.name)throw a}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||pi.transitional,n=t&&t.forcedJSONParsing,a="json"===this.responseType;if(Yr.isResponse(e)||Yr.isReadableStream(e))return e;if(e&&Yr.isString(e)&&(n&&!this.responseType||a)){const n=!(t&&t.silentJSONParsing)&&a;try{return JSON.parse(e)}catch(r){if(n){if("SyntaxError"===r.name)throw Ur.from(r,Ur.ERR_BAD_RESPONSE,this,null,this.response);throw r}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:gi.classes.FormData,Blob:gi.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Yr.forEach(["delete","get","head","post","put","patch"],e=>{pi.headers[e]={}});const bi=Yr.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),wi=Symbol("internals");function yi(e){return e&&String(e).trim().toLowerCase()}function vi(e){return!1===e||null==e?e:Yr.isArray(e)?e.map(vi):String(e)}function Mi(e,t,n,a,r){return Yr.isFunction(a)?a.call(this,t,n):(r&&(t=n),Yr.isString(t)?Yr.isString(a)?-1!==t.indexOf(a):Yr.isRegExp(a)?a.test(t):void 0:void 0)}let ki=class{constructor(e){e&&this.set(e)}set(e,t,n){const a=this;function r(e,t,n){const r=yi(t);if(!r)throw new Error("header name must be a non-empty string");const i=Yr.findKey(a,r);(!i||void 0===a[i]||!0===n||void 0===n&&!1!==a[i])&&(a[i||t]=vi(e))}const i=(e,t)=>Yr.forEach(e,(e,n)=>r(e,n,t));if(Yr.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(Yr.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i((e=>{const t={};let n,a,r;return e&&e.split("\n").forEach(function(e){r=e.indexOf(":"),n=e.substring(0,r).trim().toLowerCase(),a=e.substring(r+1).trim(),!n||t[n]&&bi[n]||("set-cookie"===n?t[n]?t[n].push(a):t[n]=[a]:t[n]=t[n]?t[n]+", "+a:a)}),t})(e),t);else if(Yr.isObject(e)&&Yr.isIterable(e)){let n,a,r={};for(const t of e){if(!Yr.isArray(t))throw TypeError("Object iterator must return a key-value pair");r[a=t[0]]=(n=r[a])?Yr.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}i(r,t)}else null!=e&&r(t,e,n);return this}get(e,t){if(e=yi(e)){const n=Yr.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let a;for(;a=n.exec(e);)t[a[1]]=a[2];return t}(e);if(Yr.isFunction(t))return t.call(this,e,n);if(Yr.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=yi(e)){const n=Yr.findKey(this,e);return!(!n||void 0===this[n]||t&&!Mi(0,this[n],n,t))}return!1}delete(e,t){const n=this;let a=!1;function r(e){if(e=yi(e)){const r=Yr.findKey(n,e);!r||t&&!Mi(0,n[r],r,t)||(delete n[r],a=!0)}}return Yr.isArray(e)?e.forEach(r):r(e),a}clear(e){const t=Object.keys(this);let n=t.length,a=!1;for(;n--;){const r=t[n];e&&!Mi(0,this[r],r,e,!0)||(delete this[r],a=!0)}return a}normalize(e){const t=this,n={};return Yr.forEach(this,(a,r)=>{const i=Yr.findKey(n,r);if(i)return t[i]=vi(a),void delete t[r];const o=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}(r):String(r).trim();o!==r&&delete t[r],t[o]=vi(a),n[o]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Yr.forEach(this,(n,a)=>{null!=n&&!1!==n&&(t[a]=e&&Yr.isArray(n)?n.join(", "):n)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach(e=>n.set(e)),n}static accessor(e){const t=(this[wi]=this[wi]={accessors:{}}).accessors,n=this.prototype;function a(e){const a=yi(e);t[a]||(!function(e,t){const n=Yr.toCamelCase(" "+t);["get","set","has"].forEach(a=>{Object.defineProperty(e,a+n,{value:function(e,n,r){return this[a].call(this,t,e,n,r)},configurable:!0})})}(n,e),t[a]=!0)}return Yr.isArray(e)?e.forEach(a):a(e),this}};function xi(e,t){const n=this||pi,a=t||n,r=ki.from(a.headers);let i=a.data;return Yr.forEach(e,function(e){i=e.call(n,i,r.normalize(),t?t.status:void 0)}),r.normalize(),i}function Pi(e){return!(!e||!e.__CANCEL__)}function Si(e,t,n){Ur.call(this,null==e?"canceled":e,Ur.ERR_CANCELED,t,n),this.name="CanceledError"}function Ti(e,t,n){const a=n.config.validateStatus;n.status&&a&&!a(n.status)?t(new Ur("Request failed with status code "+n.status,[Ur.ERR_BAD_REQUEST,Ur.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}ki.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Yr.reduceDescriptors(ki.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),Yr.freezeMethods(ki),Yr.inherits(Si,Ur,{__CANCEL__:!0});const Ei=(e,t,n=3)=>{let a=0;const r=function(e,t){e=e||10;const n=new Array(e),a=new Array(e);let r,i=0,o=0;return t=void 0!==t?t:1e3,function(s){const u=Date.now(),d=a[o];r||(r=u),n[i]=s,a[i]=u;let c=o,l=0;for(;c!==i;)l+=n[c++],c%=e;if(i=(i+1)%e,i===o&&(o=(o+1)%e),u-r{r=i,n=null,a&&(clearTimeout(a),a=null),e(...t)};return[(...e)=>{const t=Date.now(),s=t-r;s>=i?o(e,t):(n=e,a||(a=setTimeout(()=>{a=null,o(n)},i-s)))},()=>n&&o(n)]}(n=>{const i=n.loaded,o=n.lengthComputable?n.total:void 0,s=i-a,u=r(s);a=i;e({loaded:i,total:o,progress:o?i/o:void 0,bytes:s,rate:u||void 0,estimated:u&&o&&i<=o?(o-i)/u:void 0,event:n,lengthComputable:null!=o,[t?"download":"upload"]:!0})},n)},Ni=(e,t)=>{const n=null!=e;return[a=>t[0]({lengthComputable:n,total:e,loaded:a}),t[1]]},Wi=e=>(...t)=>Yr.asap(()=>e(...t)),Oi=gi.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,gi.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(gi.origin),gi.navigator&&/(msie|trident)/i.test(gi.navigator.userAgent)):()=>!0,Ci=gi.hasStandardBrowserEnv?{write(e,t,n,a,r,i){const o=[e+"="+encodeURIComponent(t)];Yr.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),Yr.isString(a)&&o.push("path="+a),Yr.isString(r)&&o.push("domain="+r),!0===i&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function ji(e,t,n){let a=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e&&(a||0==n)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Ai=e=>e instanceof ki?{...e}:e;function Ri(e,t){t=t||{};const n={};function a(e,t,n,a){return Yr.isPlainObject(e)&&Yr.isPlainObject(t)?Yr.merge.call({caseless:a},e,t):Yr.isPlainObject(t)?Yr.merge({},t):Yr.isArray(t)?t.slice():t}function r(e,t,n,r){return Yr.isUndefined(t)?Yr.isUndefined(e)?void 0:a(void 0,e,0,r):a(e,t,0,r)}function i(e,t){if(!Yr.isUndefined(t))return a(void 0,t)}function o(e,t){return Yr.isUndefined(t)?Yr.isUndefined(e)?void 0:a(void 0,e):a(void 0,t)}function s(n,r,i){return i in t?a(n,r):i in e?a(void 0,n):void 0}const u={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:s,headers:(e,t,n)=>r(Ai(e),Ai(t),0,!0)};return Yr.forEach(Object.keys({...e,...t}),function(a){const i=u[a]||r,o=i(e[a],t[a],a);Yr.isUndefined(o)&&i!==s||(n[a]=o)}),n}const Di=e=>{const t=Ri({},e);let n,{data:a,withXSRFToken:r,xsrfHeaderName:i,xsrfCookieName:o,headers:s,auth:u}=t;if(t.headers=s=ki.from(s),t.url=ii(ji(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),u&&s.set("Authorization","Basic "+btoa((u.username||"")+":"+(u.password?unescape(encodeURIComponent(u.password)):""))),Yr.isFormData(a))if(gi.hasStandardBrowserEnv||gi.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(!1!==(n=s.getContentType())){const[e,...t]=n?n.split(";").map(e=>e.trim()).filter(Boolean):[];s.setContentType([e||"multipart/form-data",...t].join("; "))}if(gi.hasStandardBrowserEnv&&(r&&Yr.isFunction(r)&&(r=r(t)),r||!1!==r&&Oi(t.url))){const e=i&&o&&Ci.read(o);e&&s.set(i,e)}return t},Hi="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,n){const a=Di(e);let r=a.data;const i=ki.from(a.headers).normalize();let o,s,u,d,c,{responseType:l,onUploadProgress:h,onDownloadProgress:m}=a;function g(){d&&d(),c&&c(),a.cancelToken&&a.cancelToken.unsubscribe(o),a.signal&&a.signal.removeEventListener("abort",o)}let f=new XMLHttpRequest;function p(){if(!f)return;const a=ki.from("getAllResponseHeaders"in f&&f.getAllResponseHeaders());Ti(function(e){t(e),g()},function(e){n(e),g()},{data:l&&"text"!==l&&"json"!==l?f.response:f.responseText,status:f.status,statusText:f.statusText,headers:a,config:e,request:f}),f=null}f.open(a.method.toUpperCase(),a.url,!0),f.timeout=a.timeout,"onloadend"in f?f.onloadend=p:f.onreadystatechange=function(){f&&4===f.readyState&&(0!==f.status||f.responseURL&&0===f.responseURL.indexOf("file:"))&&setTimeout(p)},f.onabort=function(){f&&(n(new Ur("Request aborted",Ur.ECONNABORTED,e,f)),f=null)},f.onerror=function(){n(new Ur("Network Error",Ur.ERR_NETWORK,e,f)),f=null},f.ontimeout=function(){let t=a.timeout?"timeout of "+a.timeout+"ms exceeded":"timeout exceeded";const r=a.transitional||si;a.timeoutErrorMessage&&(t=a.timeoutErrorMessage),n(new Ur(t,r.clarifyTimeoutError?Ur.ETIMEDOUT:Ur.ECONNABORTED,e,f)),f=null},void 0===r&&i.setContentType(null),"setRequestHeader"in f&&Yr.forEach(i.toJSON(),function(e,t){f.setRequestHeader(t,e)}),Yr.isUndefined(a.withCredentials)||(f.withCredentials=!!a.withCredentials),l&&"json"!==l&&(f.responseType=a.responseType),m&&([u,c]=Ei(m,!0),f.addEventListener("progress",u)),h&&f.upload&&([s,d]=Ei(h),f.upload.addEventListener("progress",s),f.upload.addEventListener("loadend",d)),(a.cancelToken||a.signal)&&(o=t=>{f&&(n(!t||t.type?new Si(null,e,f):t),f.abort(),f=null)},a.cancelToken&&a.cancelToken.subscribe(o),a.signal&&(a.signal.aborted?o():a.signal.addEventListener("abort",o)));const b=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(a.url);b&&-1===gi.protocols.indexOf(b)?n(new Ur("Unsupported protocol "+b+":",Ur.ERR_BAD_REQUEST,e)):f.send(r||null)})},zi=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,a=new AbortController;const r=function(e){if(!n){n=!0,o();const t=e instanceof Error?e:this.reason;a.abort(t instanceof Ur?t:new Si(t instanceof Error?t.message:t))}};let i=t&&setTimeout(()=>{i=null,r(new Ur("timeout ".concat(t," of ms exceeded"),Ur.ETIMEDOUT))},t);const o=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(r):e.removeEventListener("abort",r)}),e=null)};e.forEach(e=>e.addEventListener("abort",r));const{signal:s}=a;return s.unsubscribe=()=>Yr.asap(o),s}},_i=function*(e,t){let n=e.byteLength;if(n{const r=async function*(e,t){for await(const n of Li(e))yield*_i(n,t)}(e,t);let i,o=0,s=e=>{i||(i=!0,a&&a(e))};return new ReadableStream({async pull(e){try{const{done:t,value:a}=await r.next();if(t)return s(),void e.close();let i=a.byteLength;if(n){let e=o+=i;n(e)}e.enqueue(new Uint8Array(a))}catch(t){throw s(t),t}},cancel:e=>(s(e),r.return())},{highWaterMark:2})},Fi="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,Bi=Fi&&"function"==typeof ReadableStream,Gi=Fi&&("function"==typeof TextEncoder?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),Ii=(e,...t)=>{try{return!!e(...t)}catch(n){return!1}},Xi=Bi&&Ii(()=>{let e=!1;const t=new Request(gi.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),Yi=Bi&&Ii(()=>Yr.isReadableStream(new Response("").body)),Ui={stream:Yi&&(e=>e.body)};var Ji;Fi&&(Ji=new Response,["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!Ui[e]&&(Ui[e]=Yr.isFunction(Ji[e])?t=>t[e]():(t,n)=>{throw new Ur("Response type '".concat(e,"' is not supported"),Ur.ERR_NOT_SUPPORT,n)})}));const Qi=async(e,t)=>{const n=Yr.toFiniteNumber(e.getContentLength());return null==n?(async e=>{if(null==e)return 0;if(Yr.isBlob(e))return e.size;if(Yr.isSpecCompliantForm(e)){const t=new Request(gi.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return Yr.isArrayBufferView(e)||Yr.isArrayBuffer(e)?e.byteLength:(Yr.isURLSearchParams(e)&&(e+=""),Yr.isString(e)?(await Gi(e)).byteLength:void 0)})(t):n},Ki={http:null,xhr:Hi,fetch:Fi&&(async e=>{let{url:t,method:n,data:a,signal:r,cancelToken:i,timeout:o,onDownloadProgress:s,onUploadProgress:u,responseType:d,headers:c,withCredentials:l="same-origin",fetchOptions:h}=Di(e);d=d?(d+"").toLowerCase():"text";let m,g=zi([r,i&&i.toAbortSignal()],o);const f=g&&g.unsubscribe&&(()=>{g.unsubscribe()});let p;try{if(u&&Xi&&"get"!==n&&"head"!==n&&0!==(p=await Qi(c,a))){let e,n=new Request(t,{method:"POST",body:a,duplex:"half"});if(Yr.isFormData(a)&&(e=n.headers.get("content-type"))&&c.setContentType(e),n.body){const[e,t]=Ni(p,Ei(Wi(u)));a=qi(n.body,65536,e,t)}}Yr.isString(l)||(l=l?"include":"omit");const r="credentials"in Request.prototype;m=new Request(t,{...h,signal:g,method:n.toUpperCase(),headers:c.normalize().toJSON(),body:a,duplex:"half",credentials:r?l:void 0});let i=await fetch(m,h);const o=Yi&&("stream"===d||"response"===d);if(Yi&&(s||o&&f)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=i[t]});const t=Yr.toFiniteNumber(i.headers.get("content-length")),[n,a]=s&&Ni(t,Ei(Wi(s),!0))||[];i=new Response(qi(i.body,65536,n,()=>{a&&a(),f&&f()}),e)}d=d||"text";let b=await Ui[Yr.findKey(Ui,d)||"text"](i,e);return!o&&f&&f(),await new Promise((t,n)=>{Ti(t,n,{data:b,headers:ki.from(i.headers),status:i.status,statusText:i.statusText,config:e,request:m})})}catch(b){if(f&&f(),b&&"TypeError"===b.name&&/Load failed|fetch/i.test(b.message))throw Object.assign(new Ur("Network Error",Ur.ERR_NETWORK,e,m),{cause:b.cause||b});throw Ur.from(b,b&&b.code,e,m)}})};Yr.forEach(Ki,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(n){}Object.defineProperty(e,"adapterName",{value:t})}});const Vi=e=>"- ".concat(e),$i=e=>Yr.isFunction(e)||null===e||!1===e,Zi=e=>{e=Yr.isArray(e)?e:[e];const{length:t}=e;let n,a;const r={};for(let i=0;i"adapter ".concat(e," ")+(!1===t?"is not supported by the environment":"is not available in the build"));throw new Ur("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Vi).join("\n"):" "+Vi(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return a};function eo(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Si(null,e)}function to(e){eo(e),e.headers=ki.from(e.headers),e.data=xi.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return Zi(e.adapter||pi.adapter)(e).then(function(t){return eo(e),t.data=xi.call(e,e.transformResponse,t),t.headers=ki.from(t.headers),t},function(t){return Pi(t)||(eo(e),t&&t.response&&(t.response.data=xi.call(e,e.transformResponse,t.response),t.response.headers=ki.from(t.response.headers))),Promise.reject(t)})}const no="1.11.0",ao={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{ao[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const ro={};ao.transitional=function(e,t,n){function a(e,t){return"[Axios v"+no+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,r,i)=>{if(!1===e)throw new Ur(a(r," has been removed"+(t?" in "+t:"")),Ur.ERR_DEPRECATED);return t&&!ro[r]&&(ro[r]=!0,console.warn(a(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,i)}},ao.spelling=function(e){return(t,n)=>(console.warn("".concat(n," is likely a misspelling of ").concat(e)),!0)};const io={assertOptions:function(e,t,n){if("object"!=typeof e)throw new Ur("options must be an object",Ur.ERR_BAD_OPTION_VALUE);const a=Object.keys(e);let r=a.length;for(;r-- >0;){const i=a[r],o=t[i];if(o){const t=e[i],n=void 0===t||o(t,i,e);if(!0!==n)throw new Ur("option "+i+" must be "+n,Ur.ERR_BAD_OPTION_VALUE);continue}if(!0!==n)throw new Ur("Unknown option "+i,Ur.ERR_BAD_OPTION)}},validators:ao},oo=io.validators;let so=class{constructor(e){this.defaults=e||{},this.interceptors={request:new oi,response:new oi}}async request(e,t){try{return await this._request(e,t)}catch(n){if(n instanceof Error){let e={};Error.captureStackTrace?Error.captureStackTrace(e):e=new Error;const t=e.stack?e.stack.replace(/^.+\n/,""):"";try{n.stack?t&&!String(n.stack).endsWith(t.replace(/^.+\n.+\n/,""))&&(n.stack+="\n"+t):n.stack=t}catch(a){}}throw n}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Ri(this.defaults,t);const{transitional:n,paramsSerializer:a,headers:r}=t;void 0!==n&&io.assertOptions(n,{silentJSONParsing:oo.transitional(oo.boolean),forcedJSONParsing:oo.transitional(oo.boolean),clarifyTimeoutError:oo.transitional(oo.boolean)},!1),null!=a&&(Yr.isFunction(a)?t.paramsSerializer={serialize:a}:io.assertOptions(a,{encode:oo.function,serialize:oo.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),io.assertOptions(t,{baseUrl:oo.spelling("baseURL"),withXsrfToken:oo.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let i=r&&Yr.merge(r.common,r[t.method]);r&&Yr.forEach(["delete","get","head","post","put","patch","common"],e=>{delete r[e]}),t.headers=ki.concat(i,r);const o=[];let s=!0;this.interceptors.request.forEach(function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,o.unshift(e.fulfilled,e.rejected))});const u=[];let d;this.interceptors.response.forEach(function(e){u.push(e.fulfilled,e.rejected)});let c,l=0;if(!s){const e=[to.bind(this),void 0];for(e.unshift(...o),e.push(...u),c=e.length,d=Promise.resolve(t);l{uo[t]=e});const co=function e(t){const n=new so(t),a=rr(so.prototype.request,n);return Yr.extend(a,so.prototype,n,{allOwnKeys:!0}),Yr.extend(a,n,null,{allOwnKeys:!0}),a.create=function(n){return e(Ri(t,n))},a}(pi);co.Axios=so,co.CanceledError=Si,co.CancelToken=class e{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise(function(e){t=e});const n=this;this.promise.then(e=>{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t;const a=new Promise(e=>{n.subscribe(e),t=e}).then(e);return a.cancel=function(){n.unsubscribe(t)},a},e(function(e,a,r){n.reason||(n.reason=new Si(e,a,r),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let t;return{token:new e(function(e){t=e}),cancel:t}}},co.isCancel=Pi,co.VERSION=no,co.toFormData=ei,co.AxiosError=Ur,co.Cancel=co.CanceledError,co.all=function(e){return Promise.all(e)},co.spread=function(e){return function(t){return e.apply(null,t)}},co.isAxiosError=function(e){return Yr.isObject(e)&&!0===e.isAxiosError},co.mergeConfig=Ri,co.AxiosHeaders=ki,co.formToJSON=e=>fi(Yr.isHTMLForm(e)?new FormData(e):e),co.getAdapter=Zi,co.HttpStatusCode=uo,co.default=co;const{Axios:lo,AxiosError:ho,CanceledError:mo,isCancel:go,CancelToken:fo,VERSION:po,all:bo,Cancel:wo,isAxiosError:yo,spread:vo,toFormData:Mo,AxiosHeaders:ko,HttpStatusCode:xo,formToJSON:Po,getAdapter:So,mergeConfig:To}=co;var Eo={exports:{}};const No=n(Eo.exports=function(){var e,t,n={version:"0.2.0"},a=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function r(e,t,n){return en?n:e}function i(e){return 100*(-1+e)}function o(e,t,n){var r;return(r="translate3d"===a.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===a.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"}).transition="all "+t+"ms "+n,r}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(a[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=r(e,a.minimum,1),n.status=1===e?null:e;var i=n.render(!t),d=i.querySelector(a.barSelector),c=a.speed,l=a.easing;return i.offsetWidth,s(function(t){""===a.positionUsing&&(a.positionUsing=n.getPositioningCSS()),u(d,o(e,c,l)),1===e?(u(i,{transition:"none",opacity:1}),i.offsetWidth,setTimeout(function(){u(i,{transition:"all "+c+"ms linear",opacity:0}),setTimeout(function(){n.remove(),t()},c)},c)):setTimeout(t,c)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout(function(){n.status&&(n.trickle(),e())},a.trickleSpeed)};return a.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*r(Math.random()*t,.1,.95)),t=r(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*a.trickleRate)},e=0,t=0,n.promise=function(a){return a&&"resolved"!==a.state()?(0===t&&n.start(),e++,t++,a.always(function(){0===--t?(e=0,n.done()):n.set((e-t)/e)}),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=a.template;var r,o=t.querySelector(a.barSelector),s=e?"-100":i(n.status||0),d=document.querySelector(a.parent);return u(o,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),a.showSpinner||(r=t.querySelector(a.spinnerSelector))&&m(r),d!=document.body&&c(d,"nprogress-custom-parent"),d.appendChild(t),t},n.remove=function(){l(document.documentElement,"nprogress-busy"),l(document.querySelector(a.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&m(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),u=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})}function a(t){var n=document.body.style;if(t in n)return t;for(var a,r=e.length,i=t.charAt(0).toUpperCase()+t.slice(1);r--;)if((a=e[r]+i)in n)return a;return t}function r(e){return e=n(e),t[e]||(t[e]=a(e))}function i(e,t,n){t=r(t),e.style[t]=n}return function(e,t){var n,a,r=arguments;if(2==r.length)for(n in t)void 0!==(a=t[n])&&t.hasOwnProperty(n)&&i(e,n,a);else i(e,r[1],r[2])}}();function d(e,t){return("string"==typeof e?e:h(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=h(e),a=n+t;d(n,t)||(e.className=a.substring(1))}function l(e,t){var n,a=h(e);d(e,t)&&(n=a.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function h(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function m(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n}());function Wo(e){const t="HTTP/([32]|1\\.[01])",n={className:"attribute",begin:e.regex.concat("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},a=[n,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+t+" \\d{3})",end:/$/,contains:[{className:"meta",begin:t},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:a}},{begin:"(?=^[A-Z]+ (.*?) "+t+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:t},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:a}},e.inherit(n,{relevance:0})]}}function Oo(e){const t=e.regex,n=["GET","POST","HEAD","PUT","DELETE","CONNECT","OPTIONS","PATCH","TRACE"];return{name:"Apache Access Log",contains:[{className:"number",begin:/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?\b/,relevance:5},{className:"number",begin:/\b\d+\b/,relevance:0},{className:"string",begin:t.concat(/"/,t.either(...n)),end:/"/,keywords:n,illegal:/\n/,relevance:5,contains:[{begin:/HTTP\/[12]\.\d'/,relevance:5}]},{className:"string",begin:/\[\d[^\]\n]{8,}\]/,illegal:/\n/,relevance:1},{className:"string",begin:/\[/,end:/\]/,illegal:/\n/,relevance:0},{className:"string",begin:/"Mozilla\/\d\.\d \(/,end:/"/,illegal:/\n/,relevance:3},{className:"string",begin:/"/,end:/"/,illegal:/\n/,relevance:0}]}}export{ge as $,Ya as A,Un as B,Qa as C,Ua as D,Vt as E,_n as F,Qt as G,xe as H,Ka as I,Va as J,er as K,Ja as L,an as M,ke as N,It as O,qn as P,Fn as Q,$a as R,Xa as S,Za as T,nn as U,tr as V,Bn as W,Xn as X,Gn as Y,tn as Z,co as _,Le as a,No as a0,Wo as a1,Oo as a2,$t as a3,Jn as a4,ar as a5,en as a6,et as b,Ga as c,We as d,Re as e,Ie as f,Kt as g,Hn as h,Je as i,In as j,rt as k,Yn as l,_t as m,Ln as n,on as o,ut as p,Lt as q,pt as r,rn as s,vt as t,Nt as u,jt as v,nr as w,Jt as x,Ut as y,Ht as z}; diff --git a/BTPanel/static/vite/js/compiler-legacy.js b/BTPanel/static/vite/js/compiler-legacy.js index 56b58fcb..fc47297d 100644 --- a/BTPanel/static/vite/js/compiler-legacy.js +++ b/BTPanel/static/vite/js/compiler-legacy.js @@ -1 +1 @@ -System.register(["./page_layout-legacy.js?v=1760428868419"],function(e,t){"use strict";var s,i;return{setters:[e=>{s=e.t,i=e.i}],execute:function(){const{t:t}=i.global;e("s",(e,i=!0)=>s.post("/breaking_through?action=set_compiler_status",e,{requestOptions:{loading:i?t("Security.Api.Index_5"):"",successMessage:!!i}})),e("b",e=>s.post("/breaking_through?action=get_compiler_info",e)),e("g",()=>s.post("/breaking_through?action=get_linux_users",{limit:999})),e("a",e=>s.post("/breaking_through?action=add_user_to_compiler",e,{requestOptions:{loading:t("Security.Api.Index_4"),successMessage:!0}})),e("d",e=>s.post("/breaking_through?action=del_user_to_compiler",e,{requestOptions:{loading:t("Security.Api.Index_3"),successMessage:!0}}))}}}); +System.register(["./page_layout-legacy.js?v=1762424784323"],function(e,t){"use strict";var s,i;return{setters:[e=>{s=e.t,i=e.i}],execute:function(){const{t:t}=i.global;e("s",(e,i=!0)=>s.post("/breaking_through?action=set_compiler_status",e,{requestOptions:{loading:i?t("Security.Api.Index_5"):"",successMessage:!!i}})),e("b",e=>s.post("/breaking_through?action=get_compiler_info",e)),e("g",()=>s.post("/breaking_through?action=get_linux_users",{limit:999})),e("a",e=>s.post("/breaking_through?action=add_user_to_compiler",e,{requestOptions:{loading:t("Security.Api.Index_4"),successMessage:!0}})),e("d",e=>s.post("/breaking_through?action=del_user_to_compiler",e,{requestOptions:{loading:t("Security.Api.Index_3"),successMessage:!0}}))}}}); diff --git a/BTPanel/static/vite/js/compiler.js b/BTPanel/static/vite/js/compiler.js index f3ec0685..e529be49 100644 --- a/BTPanel/static/vite/js/compiler.js +++ b/BTPanel/static/vite/js/compiler.js @@ -1 +1 @@ -import{t as s,i as e}from"./page_layout.js?v=1760428868419";const{t:t}=e.global,o=(e,o=!0)=>s.post("/breaking_through?action=set_compiler_status",e,{requestOptions:{loading:o?t("Security.Api.Index_5"):"",successMessage:!!o}}),i=e=>s.post("/breaking_through?action=get_compiler_info",e),a=()=>s.post("/breaking_through?action=get_linux_users",{limit:999}),r=e=>s.post("/breaking_through?action=add_user_to_compiler",e,{requestOptions:{loading:t("Security.Api.Index_4"),successMessage:!0}}),n=e=>s.post("/breaking_through?action=del_user_to_compiler",e,{requestOptions:{loading:t("Security.Api.Index_3"),successMessage:!0}});export{r as a,i as b,n as d,a as g,o as s}; +import{t as s,i as e}from"./page_layout.js?v=1762424784323";const{t:t}=e.global,o=(e,o=!0)=>s.post("/breaking_through?action=set_compiler_status",e,{requestOptions:{loading:o?t("Security.Api.Index_5"):"",successMessage:!!o}}),i=e=>s.post("/breaking_through?action=get_compiler_info",e),a=()=>s.post("/breaking_through?action=get_linux_users",{limit:999}),r=e=>s.post("/breaking_through?action=add_user_to_compiler",e,{requestOptions:{loading:t("Security.Api.Index_4"),successMessage:!0}}),n=e=>s.post("/breaking_through?action=del_user_to_compiler",e,{requestOptions:{loading:t("Security.Api.Index_3"),successMessage:!0}});export{r as a,i as b,n as d,a as g,o as s}; diff --git a/BTPanel/static/vite/js/config-legacy.js b/BTPanel/static/vite/js/config-legacy.js index 74a92780..6e78eac0 100644 --- a/BTPanel/static/vite/js/config-legacy.js +++ b/BTPanel/static/vite/js/config-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy107.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./index-legacy106.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy9.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./index-legacy99.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy10.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy2.js?v=1760428868419"],function(e,n){"use strict";var a,l,t,i,s,u,o,r,d,c,p,_,f,x,m,v,g,b,C,P,w,y,$,h,k,U,S,j,B,M,I,q,E,z,D,H,R,A,F,O,N,T,V,L,G,J,K,Q,W,Y,X,Z,ee,ne,ae,le,te,ie,se,ue,oe,re,de,ce,pe,_e,fe,xe,me,ve,ge,be,Ce,Pe,we,ye,$e,he;return{setters:[e=>{a=e._,l=e.a},e=>{t=e.ax,i=e.O,s=e.ay,u=e.az,o=e.aA,r=e.aB,d=e.a3,c=e.m,p=e.d,_=e.aC,f=e.aD,x=e.n,m=e.aE,v=e.u,g=e.aF,b=e._,C=e.aG,P=e.aH,w=e.aI,y=e.aJ,$=e.aK,h=e.aL,k=e.aM,U=e.aN,S=e.N,j=e.M,B=e.aO,M=e.aP,I=e.aQ,q=e.p},e=>{E=e.a,z=e.u,D=e._,H=e.n,R=e.c,A=e.h},e=>{F=e.k,O=e.P,N=e.r,T=e.a2,V=e.V,L=e.a3,G=e.S,J=e.a4,K=e.W,Q=e.U,W=e.R,Y=e.j,X=e.e,Z=e.F,ee=e.an,ne=e.a0,ae=e.l,le=e.v,te=e.a5,ie=e.c},e=>{se=e.dj,ue=e.dR,oe=e.au,re=e.aC,de=e.df,ce=e.dV,pe=e.av,_e=e.dY},e=>{fe=e.p,xe=e._,me=e.f,ve=e.h,ge=e.g,be=e.m},e=>{Ce=e._},e=>{Pe=e._},e=>{we=e._},e=>{ye=e._},e=>{$e=e._},e=>{he=e._}],execute:function(){var n=document.createElement("style");n.textContent="[data-v-f0af7604] .n-input,[data-v-f0af7604] .n-button,[data-v-f0af7604] .n-select .n-base-selection{--n-height: 30px}[data-v-f0af7604] .n-button.n-button--medium-type{min-width:52px}[data-v-f0af7604] .n-switch{--n-height: max(20px, 16px)}\n/*$vite$:1*/",document.head.appendChild(n);const ke=F({__name:"index",setup(e){const{t:n}=O(),l=N(!1),s=()=>{E({title:n("Config.Panel.index_2"),content:n("Config.Panel.index_4"),onConfirm:async()=>{await t(),i()}})};return(e,n)=>{const t=se,i=a;return V(),T(i,{label:e.$t("Config.Panel.index_2")},{content:L(()=>[K(t,{value:Q(l),"onUpdate:value":s},null,8,["value"])]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_3")),1)]),_:1},8,["label"])}}}),Ue=F({__name:"index",setup(e){const n=async e=>{await s(),fe.value.listenIpv6=e};return(e,l)=>{const t=se,i=a;return V(),T(i,{label:e.$t("Config.Panel.index_5")},{content:L(()=>[K(t,{value:Q(fe).listenIpv6,"onUpdate:value":n},null,8,["value"])]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_6")),1)]),_:1},8,["label"])}}}),Se=F({__name:"index",setup(e){const n=async e=>{await u({cdn_switch:e?1:0}),fe.value.cdn_status=e};return(e,l)=>{const t=se,i=a;return V(),T(i,{label:e.$t("Config.Panel.index_98")},{content:L(()=>[K(t,{value:Q(fe).cdn_status,"onUpdate:value":n},null,8,["value"])]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_99"))+"(Only valid for panel)",1)]),_:1},8,["label"])}}}),je=F({__name:"index",setup(e){const{t:n}=O(),l=e=>{E({width:e?480:380,title:n("Config.Panel.index_83",[n(e?"Config.Panel.index_83_1":"Config.Panel.index_83_2")]),content:n(e?"Config.Panel.index_85":"Config.Panel.index_84"),onConfirm:async()=>{await o(),fe.value.offlineMode=e}})};return(e,n)=>{const t=se,i=a;return V(),T(i,{label:e.$t("Config.Panel.index_7")},{content:L(()=>[K(t,{value:Q(fe).offlineMode,"onUpdate:value":l},null,8,["value"])]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_8")),1)]),_:1},8,["label"])}}}),Be={class:"p-20px"},Me={class:"text-error"},Ie=F({__name:"confirm",setup(e,{expose:n}){const a=N();return n({onConfirm:async()=>{await a.value.validate(),await r(),fe.value.debugMode=!0}}),(e,n)=>{const l=Ce,t=xe,i=me;return V(),W("div",Be,[K(l,{class:"mb-20px"},{default:L(()=>[Y(J(e.$t("Config.Panel.index_14")),1)]),_:1}),K(t,{class:"mb-20px"},{default:L(()=>[G("li",Me,J(e.$t("Config.Panel.index_15")),1),G("li",null,J(e.$t("Config.Panel.index_16")),1),G("li",null,J(e.$t("Config.Panel.index_17")),1)]),_:1}),K(i,{ref_key:"riskRef",ref:a},{default:L(()=>[Y(J(e.$t("Config.Panel.index_18")),1)]),_:1},512)])}}}),qe=F({__name:"index",setup(e){const{t:n}=O(),l=e=>{e?z({title:n("Config.Panel.index_11"),width:440,footer:!0,component:Ie}):E({title:n("Config.Panel.index_12"),content:n("Config.Panel.index_13"),onConfirm:async()=>{await r(),fe.value.debugMode=e}})};return(e,n)=>{const t=se,i=a;return V(),T(i,{label:e.$t("Config.Panel.index_9")},{content:L(()=>[K(t,{value:Q(fe).debugMode,"onUpdate:value":l},null,8,["value"])]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_10")),1)]),_:1},8,["label"])}}}),Ee={class:"p-20px"},ze={class:"w-320px"},De={class:"inline-block text-center leading-[1.4]"},He={class:"w-320px"},Re=F({__name:"config",setup(e){const{t:n}=O(),a=X({token:"",limit_addr:""}),l=async e=>{await d({t_type:2}),fe.value.apiInterface=e},t=()=>{E({title:n("Config.Panel.index_33"),content:()=>K(Z,null,[K("div",{class:"mb-8px"},[n("Config.Panel.index_86")]),K("div",{class:"text-error"},[n("Config.Panel.index_87")])]),onConfirm:async()=>{const{message:e}=await d({t_type:1},!1);c.success({content:n("Config.Panel.index_34"),close:!0}),p(e)&&(a.token=e.result)}})},i=async()=>{await d({t_type:3,limit_addr:a.limit_addr})};return(async()=>{const{message:e}=await _();p(e)&&(a.token=e.token,a.limit_addr=e.limit_addr)})(),(e,n)=>{const s=se,u=ue,o=re,r=oe,d=we,c=Pe,p=D;return V(),W("div",Ee,[K(c,{model:Q(a)},{default:L(()=>[K(u,{label:e.$t("Config.Panel.index_19")},{default:L(()=>[K(s,{value:Q(fe).apiInterface,"onUpdate:value":l},null,8,["value"])]),_:1},8,["label"]),K(u,{label:e.$t("Config.Panel.index_26")},{default:L(()=>[G("div",ze,[K(r,{value:Q(a).token,"onUpdate:value":n[0]||(n[0]=e=>Q(a).token=e),readonly:!0},{suffix:L(()=>[K(o,{class:"h-22px px-5px",type:"primary",size:"small",onClick:t},{default:L(()=>[Y(J(e.$t("Public.Btn.Reset")),1)]),_:1})]),_:1},8,["value"])])]),_:1},8,["label"]),K(u,{class:"form-item"},{label:L(()=>[G("div",De,[Y(J(e.$t("Config.Panel.index_27")),1),n[2]||(n[2]=G("br",null,null,-1)),Y(" "+J(e.$t("Config.Panel.index_28")),1)])]),default:L(()=>[G("div",He,[K(d,{value:Q(a).limit_addr,"onUpdate:value":n[1]||(n[1]=e=>Q(a).limit_addr=e),rows:4},null,8,["value"])])]),_:1}),K(u,{label:" ","show-feedback":!1},{default:L(()=>[K(o,{type:"primary",onClick:i},{default:L(()=>[Y(J(e.$t("Public.Btn.Save")),1)]),_:1})]),_:1})]),_:1},8,["model"]),K(p,{class:"mt-20px"},{default:L(()=>[G("li",null,J(e.$t("Config.Panel.index_29")),1),G("li",null,J(e.$t("Config.Panel.index_30")),1),G("li",null,J(e.$t("Config.Panel.index_31")),1),G("li",null,[Y(J(e.$t("Config.Panel.index_32"))+" ",1),n[3]||(n[3]=G("a",{class:"bt-link",href:"https://www.aapanel.com/forum/d/482-api-interface-tutorial",target:"_blank"}," https://www.aapanel.com/forum/d/482-api-interface-tutorial ",-1))])]),_:1})])}}}),Ae={class:"bt-link",href:"https://www.aapanel.com/forum/d/482-api-interface-tutorial",target:"_blank"},Fe=F({__name:"index",setup(e){const{t:n}=O(),l=async e=>{await d({t_type:2}),fe.value.apiInterface=e,e&&t()},t=()=>{z({title:n("Config.Panel.index_25"),width:540,component:Re})};return(e,n)=>{const i=se,s=re,u=a;return V(),T(u,{label:e.$t("Config.Panel.index_19")},{content:L(()=>[K(i,{value:Q(fe).apiInterface,"onUpdate:value":l},null,8,["value"]),K(s,{class:"ml-12px h-24px px-8px",size:"small",onClick:t},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_21")),1),G("a",Ae,J(e.$t("Config.Panel.index_24")),1)]),_:1},8,["label"])}}}),Oe={class:"px-20px pt-28px pb-8px"},Ne={class:"w-200px"},Te=F({__name:"set",setup(e,{expose:n}){const a=N(null),{t:l}=O(),t=X({backup_number:fe.value.backup_info.backup_number}),i={backup_number:{required:!0,type:"number",trigger:["blur","input"],message:l("Config.Panel.index_94")}};return n({onConfirm:async()=>{await(a.value?.validate()),fe.value.backup_info.backup_number=t.backup_number,await f(ve())}}),(e,n)=>{const l=de,s=ue,u=Pe;return V(),W("div",Oe,[K(u,{ref_key:"formRef",ref:a,model:Q(t),rules:i,"require-mark-placement":"left"},{default:L(()=>[K(s,{label:e.$t("Mail.Mass.index_46"),path:"backup_number","show-require-mark":!0},{default:L(()=>[G("div",Ne,[K(l,{value:Q(t).backup_number,"onUpdate:value":n[0]||(n[0]=e=>Q(t).backup_number=e),min:1,"show-button":!1},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),Ve={class:"text-default"},Le={key:0},Ge={class:"mx-12px"},Je={class:"text-error"},Ke=F({__name:"index",setup(e){const{t:n}=O(),l=async e=>{const a=async()=>{fe.value.backup_info.auto_backup=e,await f(ve()),ge()};e?await a():E({title:n("Config.Panel.index_96"),content:n("Config.Panel.index_95"),onConfirm:a})},t=()=>{z({title:n("Config.Panel.index_90"),width:420,footer:!0,component:Te})},i=async()=>{E({title:n("Config.Panel.index_92"),content:n("Config.Panel.index_93"),onConfirm:async()=>{await m(),fe.value.backup_info.total_size=0}})};return(e,n)=>{const s=se,u=re,o=a;return V(),T(o,{label:e.$t("Config.Panel.index_88")},{content:L(()=>[K(s,{value:Q(fe).backup_info.auto_backup,"onUpdate:value":l,"checked-value":1,"unchecked-value":0},null,8,["value"]),K(u,{class:"mx-12px",type:"primary",onClick:t},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1}),K(u,{onClick:i},{default:L(()=>[Y(J(e.$t("Config.Panel.index_89")),1)]),_:1})]),desc:L(()=>[G("div",Ve,[Q(fe).backup_info.auto_backup?(V(),W("span",Le,J(e.$t("Config.Panel.index_90"))+":"+J(Q(fe).backup_info.backup_number),1)):ee("",!0),G("span",Ge,J(e.$t("Config.Panel.index_91"))+":"+J(Q(x)(Q(fe).backup_info.total_size)),1),G("span",Je,J(e.$t("Config.Panel.index_97")),1)])]),_:1},8,["label"])}}}),Qe={class:"w-160px"},We=F({__name:"index",setup(e){const n=v(),{theme:l}=ne(n),t=[{label:"Fresh",value:"fresh"},{label:"Classic",value:"classic"}],i=async e=>{await g({name:e}),l.value=e};return(e,n)=>{const s=ce,u=a;return V(),T(u,{label:"Theme"},{content:L(()=>[G("div",Qe,[K(s,{value:Q(l),options:t,"onUpdate:value":i},null,8,["value"])])]),_:1})}}}),Ye={class:"inline-flex items-center"},Xe={class:"mr-5px"},Ze={class:"w-160px mr-16px"},en=F({__name:"index",setup(e){const n=async e=>{await C({name:e}),i()};return(e,l)=>{const t=b,i=ce,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_35")},{label:L(()=>[G("div",Ye,[G("span",Xe,J(e.$t("Config.Panel.index_35")),1),K(t,{name:"base-lang",size:"18",color:"#666"})])]),content:L(()=>[G("div",Ze,[K(i,{value:Q(fe).lang,"onUpdate:value":[l[0]||(l[0]=e=>Q(fe).lang=e),n],options:Q(fe).langList},null,8,["value","options"])]),K(ye)]),_:1},8,["label"])}}}),nn={class:"w-260px"},an=F({__name:"index",setup(e){const{t:n}=O(),l=async()=>{fe.value.webname.includes("/")||fe.value.webname.includes("\\")?c.error(n("Config.Panel.index_38")):(await P(ve()),i())};return(e,n)=>{const t=oe,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_36")},{content:L(()=>[G("div",nn,[K(t,{value:Q(fe).webname,"onUpdate:value":n[0]||(n[0]=e=>Q(fe).webname=e),placeholder:""},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:l},{default:L(()=>[Y(J(e.$t("Public.Btn.Save")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_37")),1)]),_:1},8,["label"])}}}),ln={class:"p-20px"},tn={class:"w-140px"},sn={class:"text-error"},un=F({__name:"set",setup(e,{expose:n}){const{t:a}=O(),l=X({type:null,time:5}),t=[{label:a("Public.Unit.Hours",[12]),value:a("Public.Unit.Hour",[12]),time:43200},{label:a("Public.Unit.Hours",[24]),value:a("Public.Unit.Hours",[24]),time:86400},{label:a("Public.Unit.Hours",[72]),value:a("Public.Unit.Hours",[72]),time:259200},{label:a("Public.Unit.Days",[7]),value:a("Public.Unit.Days",[7]),time:604800},{label:a("Public.Unit.Days",[30]),value:a("Public.Unit.Days",[30]),time:2592e3},{label:a("Config.Panel.index_43"),value:a("Config.Panel.index_43"),time:0}],s=()=>{l.type===a("Config.Panel.index_43")&&(l.time=5)};var u;return u=fe.value.session_timeout,t.filter(e=>e.label!==a("Config.Panel.index_43")).map(e=>e.label).includes(u)?l.type=fe.value.session_timeout:(l.type=a("Config.Panel.index_43"),l.time=fe.value.session_timeout_source/60),n({onConfirm:async()=>{let e=0;e=l.type===a("Config.Panel.index_43")?60*l.time:t.find(e=>e.label===l.type)?.time||0;const n=ve();return n.session_timeout=e,await w(n),i(),!1}}),(e,n)=>{const a=ce,i=de,u=_e,o=pe,r=ue,d=Pe;return V(),W("div",ln,[K(d,null,{default:L(()=>[K(r,{label:e.$t("Config.Panel.index_39")},{default:L(()=>[G("div",tn,[K(a,{value:Q(l).type,"onUpdate:value":[n[0]||(n[0]=e=>Q(l).type=e),s],options:t},null,8,["value"])]),ae(K(o,{class:"w-auto ml-10px"},{default:L(()=>[K(i,{value:Q(l).time,"onUpdate:value":n[1]||(n[1]=e=>Q(l).time=e),class:"w-80px","show-button":!1},null,8,["value"]),K(u,null,{default:L(()=>[Y(J(e.$t("Public.Unit.Minute",Q(l).time)),1)]),_:1})]),_:1},512),[[le,Q(l).type===e.$t("Config.Panel.index_43")]])]),_:1},8,["label"])]),_:1}),G("div",sn,J(e.$t("Config.Panel.index_44")),1)])}}}),on={class:"w-260px"},rn={class:"text-error"},dn=F({__name:"index",setup(e){const{t:n}=O(),l=async()=>{z({title:n("Config.Panel.index_42"),width:500,footer:!0,component:un})};return(e,n)=>{const t=oe,i=re,s=te("i18n-t"),u=a;return V(),T(u,{label:e.$t("Config.Panel.index_39")},{content:L(()=>[G("div",on,[K(t,{value:Q(fe).session_timeout,"onUpdate:value":n[0]||(n[0]=e=>Q(fe).session_timeout=e),disabled:!0,placeholder:""},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:l},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:L(()=>[K(s,{keypath:"Config.Panel.index_40",scope:"global"},{time_1:L(()=>[G("span",rn,J(Q(fe).session_timeout),1)]),_:1})]),_:1},8,["label"])}}}),cn={class:"w-260px"},pn=F({__name:"index",setup(e){const n=async()=>{await y(ve()),i()};return(e,l)=>{const t=$e,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_45")},{content:L(()=>[G("div",cn,[K(t,{value:Q(fe).sites_path,"onUpdate:value":l[0]||(l[0]=e=>Q(fe).sites_path=e)},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:n},{default:L(()=>[Y(J(e.$t("Public.Btn.Save")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_46")),1)]),_:1},8,["label"])}}}),_n={class:"w-260px"},fn=F({__name:"index",setup(e){const n=async()=>{await $(ve()),i()};return(e,l)=>{const t=$e,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_47")},{content:L(()=>[G("div",_n,[K(t,{value:Q(fe).backup_path,"onUpdate:value":l[0]||(l[0]=e=>Q(fe).backup_path=e)},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:n},{default:L(()=>[Y(J(e.$t("Public.Btn.Save")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_48")),1)]),_:1},8,["label"])}}}),xn={class:"w-260px"},mn=F({__name:"index",setup(e){const{t:n}=O(),l=async()=>{E({width:460,title:n("Config.Panel.index_51"),content:n("Config.Panel.index_52"),onConfirm:async()=>{await h(ve()),i(`${location.protocol}//${fe.value.serverIp}:${location.port}${location.pathname}`,2e3)}})};return(e,n)=>{const t=oe,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_49")},{content:L(()=>[G("div",xn,[K(t,{value:Q(fe).serverIp,"onUpdate:value":n[0]||(n[0]=e=>Q(fe).serverIp=e),placeholder:""},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:l},{default:L(()=>[Y(J(e.$t("Public.Btn.Save")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_50")),1)]),_:1},8,["label"])}}}),vn={class:"w-260px"},gn=F({__name:"index",setup(e){const n=async()=>{await k(),ge()};return(e,l)=>{const t=oe,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_53")},{content:L(()=>[G("div",vn,[K(t,{value:Q(fe).systemDate,"onUpdate:value":l[0]||(l[0]=e=>Q(fe).systemDate=e),readonly:!0,placeholder:""},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:n},{default:L(()=>[Y(J(e.$t("Public.Btn.Sync")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_54")),1)]),_:1},8,["label"])}}}),bn={class:"px-20px pt-28px pb-8px"},Cn={class:"w-210px"},Pn={class:"w-210px"},wn=F({__name:"set",setup(e,{expose:n}){const a=N(null),{t:l}=O(),t=X({username1:fe.value.username,username2:""}),s={username1:{trigger:["blur","input"],validator:()=>""!==t.username1.trim()||new Error(l("Config.Panel.index_60"))},username2:{trigger:["blur","input"],validator:()=>""===t.username2.trim()?new Error(l("Config.Panel.index_61")):t.username2===t.username1||new Error(l("Config.Panel.index_62"))}};return n({onConfirm:async()=>{await(a.value?.validate()),await U({username1:S(t.username1),username2:S(t.username2)}),i("/login?dologin=True",1500)}}),(e,n)=>{const l=oe,i=ue,u=Pe;return V(),W("div",bn,[K(u,{ref_key:"formRef",ref:a,model:Q(t),rules:s,"require-mark-placement":"left"},{default:L(()=>[K(i,{label:e.$t("Config.Panel.index_58"),path:"username1","show-require-mark":!0},{default:L(()=>[G("div",Cn,[K(l,{value:Q(t).username1,"onUpdate:value":n[0]||(n[0]=e=>Q(t).username1=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"]),K(i,{label:e.$t("Config.Panel.index_59"),path:"username2","show-require-mark":!0},{default:L(()=>[G("div",Pn,[K(l,{value:Q(t).username2,"onUpdate:value":n[1]||(n[1]=e=>Q(t).username2=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),yn={class:"w-260px"},$n=F({__name:"index",setup(e){const{t:n}=O(),l=async()=>{z({title:n("Config.Panel.index_57"),width:420,footer:!0,component:wn})};return(e,n)=>{const t=oe,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_55")},{content:L(()=>[G("div",yn,[K(t,{value:Q(fe).username,disabled:!0,placeholder:""},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:l},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_56")),1)]),_:1},8,["label"])}}}),hn={class:"px-20px pt-28px pb-8px"},kn={class:"w-210px"},Un={class:"w-210px"},Sn=F({__name:"set",setup(e,{expose:n}){const{t:a}=O(),l=N(null),t=X({password1:"",password2:""}),s={password1:{trigger:["blur","input"],validator:()=>""===t.password1.trim()?new Error(a("Config.Panel.index_67")):!(t.password1.trim().length<6)||new Error(a("Config.Panel.index_68"))},password2:{trigger:["blur","input"],validator:()=>""===t.password2.trim()?new Error(a("Config.Panel.index_69")):t.password2===t.password1||new Error(a("Config.Panel.index_70"))}};return n({onConfirm:async()=>{await(l.value?.validate()),await j({password1:S(t.password1),password2:S(t.password2)}),i("/login?dologin=True",1500)}}),(e,n)=>{const a=he,i=ue,u=oe,o=Pe;return V(),W("div",hn,[K(o,{ref_key:"formRef",ref:l,model:Q(t),rules:s,"require-mark-placement":"left"},{default:L(()=>[K(i,{label:e.$t("Config.Panel.index_66"),path:"password1","show-require-mark":!0},{default:L(()=>[G("div",kn,[K(a,{value:Q(t).password1,"onUpdate:value":n[0]||(n[0]=e=>Q(t).password1=e),length:10,placeholder:""},null,8,["value"])])]),_:1},8,["label"]),K(i,{label:e.$t("Config.Panel.index_59"),path:"password2","show-require-mark":!0},{default:L(()=>[G("div",Un,[K(u,{value:Q(t).password2,"onUpdate:value":n[1]||(n[1]=e=>Q(t).password2=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),jn={class:"w-260px"},Bn=F({__name:"index",setup(e){const{t:n}=O(),l=async()=>{z({title:n("Config.Panel.index_65"),width:420,footer:!0,component:Sn})};return(e,n)=>{const t=oe,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_63")},{content:L(()=>[G("div",jn,[K(t,{value:"********",type:"password",disabled:!0,placeholder:""})]),K(i,{class:"ml-12px",type:"primary",onClick:l},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_64")),1)]),_:1},8,["label"])}}}),Mn={class:"w-260px"},In=F({__name:"index",setup(e){const{t:n}=O(),l=()=>{H()},t=()=>{E({title:n("Config.Panel.index_74"),content:n("Config.Panel.index_75"),onConfirm:async()=>{await B(),i()}})};return(e,n)=>{const i=oe,s=re,u=a;return V(),T(u,{label:e.$t("Config.Panel.index_71")},{content:L(()=>[G("div",Mn,[K(i,{value:Q(fe).account,disabled:!0,placeholder:""},null,8,["value"])]),K(s,{class:"ml-12px",type:"primary",onClick:l},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1}),K(s,{class:"ml-12px",onClick:t},{default:L(()=>[Y(J(e.$t("Config.Panel.index_72")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_73")),1)]),_:1},8,["label"])}}}),qn={class:"p-20px"},En=F({__name:"set",setup(e){const{t:n}=O(),a=["memuA","memuAsoft","memuAconfig","dologin"],{columns:l}=R([{key:"title",title:n("Config.Panel.index_80")},{key:"show",title:n("Config.Panel.index_81"),align:"right",width:100,render:e=>a.includes(e.id)?n("Config.Panel.index_82"):K(se,{value:e.show,size:"small",onUpdateValue:n=>{t(n,e)}},null)}]),t=async(e,n)=>{const a=be.value.filter(e=>!e.show).map(e=>e.id);e?a.splice(a.indexOf(n.id),1):a.push(n.id),await M({hide_list:a}),n.show=e};return(e,n)=>{const a=A;return V(),W("div",qn,[K(a,{data:Q(be),columns:Q(l)},null,8,["data","columns"])])}}}),zn={class:"w-260px"},Dn=F({__name:"index",setup(e){const{t:n}=O(),l=ie(()=>be.value.filter(e=>!e.show).map(e=>e.title).join(", ")),t=()=>{z({title:n("Config.Panel.index_79"),width:360,component:En})};return(e,n)=>{const i=oe,s=re,u=a;return V(),T(u,{label:e.$t("Config.Panel.index_76")},{content:L(()=>[G("div",zn,[K(i,{value:Q(l)||e.$t("Config.Panel.index_77"),disabled:!0,placeholder:""},null,8,["value"])]),K(s,{class:"ml-12px",type:"primary",onClick:t},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_78")),1)]),_:1},8,["label"])}}}),Hn=F({__name:"index",setup(e){const n=v(),l=async e=>{await I({is_install:Number(e)}),n.siteMonitorStatus=e};return(e,t)=>{const i=se,s=a;return V(),T(s,{label:"Site Monitor"},{content:L(()=>[K(i,{value:Q(n).siteMonitorStatus,"onUpdate:value":l},null,8,["value"])]),desc:L(()=>t[0]||(t[0]=[G("span",null,"Free website monitor",-1)])),_:1})}}});e("P",q(F({__name:"config",setup:e=>(e,n)=>(V(),W("div",null,[K(l,null,{default:L(()=>[Y(J(e.$t("Config.Panel.index_1")),1)]),_:1}),K(ke),K(Ue),K(je),K(qe),K(Se),K(Hn),K(Fe),K(Ke),K(We),K(en),K(an),K(dn),K(pn),K(fn),K(mn),K(gn),K($n),K(Bn),K(In),K(Dn)]))}),[["__scopeId","data-v-f0af7604"]]))}}}); +System.register(["./index-legacy106.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./index-legacy105.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy9.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./index-legacy99.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy10.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy2.js?v=1762424784323"],function(e,n){"use strict";var a,l,t,i,s,u,o,r,d,c,p,_,f,x,m,v,g,b,C,P,w,y,$,h,k,U,S,j,B,M,I,q,E,z,D,H,R,A,F,O,N,T,V,L,G,J,K,Q,W,Y,X,Z,ee,ne,ae,le,te,ie,se,ue,oe,re,de,ce,pe,_e,fe,xe,me,ve,ge,be,Ce,Pe,we,ye,$e,he;return{setters:[e=>{a=e._,l=e.a},e=>{t=e.ax,i=e.O,s=e.ay,u=e.az,o=e.aA,r=e.aB,d=e.a3,c=e.m,p=e.d,_=e.aC,f=e.aD,x=e.n,m=e.aE,v=e.u,g=e.aF,b=e._,C=e.aG,P=e.aH,w=e.aI,y=e.aJ,$=e.aK,h=e.aL,k=e.aM,U=e.aN,S=e.N,j=e.M,B=e.aO,M=e.aP,I=e.aQ,q=e.p},e=>{E=e.a,z=e.u,D=e._,H=e.m,R=e.c,A=e.h},e=>{F=e.k,O=e.P,N=e.r,T=e.a2,V=e.V,L=e.a3,G=e.S,J=e.a4,K=e.W,Q=e.U,W=e.R,Y=e.j,X=e.e,Z=e.F,ee=e.an,ne=e.a0,ae=e.l,le=e.v,te=e.a5,ie=e.c},e=>{se=e.dj,ue=e.dR,oe=e.au,re=e.aC,de=e.df,ce=e.dV,pe=e.av,_e=e.dY},e=>{fe=e.p,xe=e._,me=e.f,ve=e.h,ge=e.g,be=e.m},e=>{Ce=e._},e=>{Pe=e._},e=>{we=e._},e=>{ye=e._},e=>{$e=e._},e=>{he=e._}],execute:function(){var n=document.createElement("style");n.textContent="[data-v-f0af7604] .n-input,[data-v-f0af7604] .n-button,[data-v-f0af7604] .n-select .n-base-selection{--n-height: 30px}[data-v-f0af7604] .n-button.n-button--medium-type{min-width:52px}[data-v-f0af7604] .n-switch{--n-height: max(20px, 16px)}\n/*$vite$:1*/",document.head.appendChild(n);const ke=F({__name:"index",setup(e){const{t:n}=O(),l=N(!1),s=()=>{E({title:n("Config.Panel.index_2"),content:n("Config.Panel.index_4"),onConfirm:async()=>{await t(),i()}})};return(e,n)=>{const t=se,i=a;return V(),T(i,{label:e.$t("Config.Panel.index_2")},{content:L(()=>[K(t,{value:Q(l),"onUpdate:value":s},null,8,["value"])]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_3")),1)]),_:1},8,["label"])}}}),Ue=F({__name:"index",setup(e){const n=async e=>{await s(),fe.value.listenIpv6=e};return(e,l)=>{const t=se,i=a;return V(),T(i,{label:e.$t("Config.Panel.index_5")},{content:L(()=>[K(t,{value:Q(fe).listenIpv6,"onUpdate:value":n},null,8,["value"])]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_6")),1)]),_:1},8,["label"])}}}),Se=F({__name:"index",setup(e){const n=async e=>{await u({cdn_switch:e?1:0}),fe.value.cdn_status=e};return(e,l)=>{const t=se,i=a;return V(),T(i,{label:e.$t("Config.Panel.index_98")},{content:L(()=>[K(t,{value:Q(fe).cdn_status,"onUpdate:value":n},null,8,["value"])]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_99"))+"(Only valid for panel)",1)]),_:1},8,["label"])}}}),je=F({__name:"index",setup(e){const{t:n}=O(),l=e=>{E({width:e?480:380,title:n("Config.Panel.index_83",[n(e?"Config.Panel.index_83_1":"Config.Panel.index_83_2")]),content:n(e?"Config.Panel.index_85":"Config.Panel.index_84"),onConfirm:async()=>{await o(),fe.value.offlineMode=e}})};return(e,n)=>{const t=se,i=a;return V(),T(i,{label:e.$t("Config.Panel.index_7")},{content:L(()=>[K(t,{value:Q(fe).offlineMode,"onUpdate:value":l},null,8,["value"])]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_8")),1)]),_:1},8,["label"])}}}),Be={class:"p-20px"},Me={class:"text-error"},Ie=F({__name:"confirm",setup(e,{expose:n}){const a=N();return n({onConfirm:async()=>{await a.value.validate(),await r(),fe.value.debugMode=!0}}),(e,n)=>{const l=Ce,t=xe,i=me;return V(),W("div",Be,[K(l,{class:"mb-20px"},{default:L(()=>[Y(J(e.$t("Config.Panel.index_14")),1)]),_:1}),K(t,{class:"mb-20px"},{default:L(()=>[G("li",Me,J(e.$t("Config.Panel.index_15")),1),G("li",null,J(e.$t("Config.Panel.index_16")),1),G("li",null,J(e.$t("Config.Panel.index_17")),1)]),_:1}),K(i,{ref_key:"riskRef",ref:a},{default:L(()=>[Y(J(e.$t("Config.Panel.index_18")),1)]),_:1},512)])}}}),qe=F({__name:"index",setup(e){const{t:n}=O(),l=e=>{e?z({title:n("Config.Panel.index_11"),width:440,footer:!0,component:Ie}):E({title:n("Config.Panel.index_12"),content:n("Config.Panel.index_13"),onConfirm:async()=>{await r(),fe.value.debugMode=e}})};return(e,n)=>{const t=se,i=a;return V(),T(i,{label:e.$t("Config.Panel.index_9")},{content:L(()=>[K(t,{value:Q(fe).debugMode,"onUpdate:value":l},null,8,["value"])]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_10")),1)]),_:1},8,["label"])}}}),Ee={class:"p-20px"},ze={class:"w-320px"},De={class:"inline-block text-center leading-[1.4]"},He={class:"w-320px"},Re=F({__name:"config",setup(e){const{t:n}=O(),a=X({token:"",limit_addr:""}),l=async e=>{await d({t_type:2}),fe.value.apiInterface=e},t=()=>{E({title:n("Config.Panel.index_33"),content:()=>K(Z,null,[K("div",{class:"mb-8px"},[n("Config.Panel.index_86")]),K("div",{class:"text-error"},[n("Config.Panel.index_87")])]),onConfirm:async()=>{const{message:e}=await d({t_type:1},!1);c.success({content:n("Config.Panel.index_34"),close:!0}),p(e)&&(a.token=e.result)}})},i=async()=>{await d({t_type:3,limit_addr:a.limit_addr})};return(async()=>{const{message:e}=await _();p(e)&&(a.token=e.token,a.limit_addr=e.limit_addr)})(),(e,n)=>{const s=se,u=ue,o=re,r=oe,d=we,c=Pe,p=D;return V(),W("div",Ee,[K(c,{model:Q(a)},{default:L(()=>[K(u,{label:e.$t("Config.Panel.index_19")},{default:L(()=>[K(s,{value:Q(fe).apiInterface,"onUpdate:value":l},null,8,["value"])]),_:1},8,["label"]),K(u,{label:e.$t("Config.Panel.index_26")},{default:L(()=>[G("div",ze,[K(r,{value:Q(a).token,"onUpdate:value":n[0]||(n[0]=e=>Q(a).token=e),readonly:!0},{suffix:L(()=>[K(o,{class:"h-22px px-5px",type:"primary",size:"small",onClick:t},{default:L(()=>[Y(J(e.$t("Public.Btn.Reset")),1)]),_:1})]),_:1},8,["value"])])]),_:1},8,["label"]),K(u,{class:"form-item"},{label:L(()=>[G("div",De,[Y(J(e.$t("Config.Panel.index_27")),1),n[2]||(n[2]=G("br",null,null,-1)),Y(" "+J(e.$t("Config.Panel.index_28")),1)])]),default:L(()=>[G("div",He,[K(d,{value:Q(a).limit_addr,"onUpdate:value":n[1]||(n[1]=e=>Q(a).limit_addr=e),rows:4},null,8,["value"])])]),_:1}),K(u,{label:" ","show-feedback":!1},{default:L(()=>[K(o,{type:"primary",onClick:i},{default:L(()=>[Y(J(e.$t("Public.Btn.Save")),1)]),_:1})]),_:1})]),_:1},8,["model"]),K(p,{class:"mt-20px"},{default:L(()=>[G("li",null,J(e.$t("Config.Panel.index_29")),1),G("li",null,J(e.$t("Config.Panel.index_30")),1),G("li",null,J(e.$t("Config.Panel.index_31")),1),G("li",null,[Y(J(e.$t("Config.Panel.index_32"))+" ",1),n[3]||(n[3]=G("a",{class:"bt-link",href:"https://www.aapanel.com/forum/d/482-api-interface-tutorial",target:"_blank"}," https://www.aapanel.com/forum/d/482-api-interface-tutorial ",-1))])]),_:1})])}}}),Ae={class:"bt-link",href:"https://www.aapanel.com/forum/d/482-api-interface-tutorial",target:"_blank"},Fe=F({__name:"index",setup(e){const{t:n}=O(),l=async e=>{await d({t_type:2}),fe.value.apiInterface=e,e&&t()},t=()=>{z({title:n("Config.Panel.index_25"),width:540,component:Re})};return(e,n)=>{const i=se,s=re,u=a;return V(),T(u,{label:e.$t("Config.Panel.index_19")},{content:L(()=>[K(i,{value:Q(fe).apiInterface,"onUpdate:value":l},null,8,["value"]),K(s,{class:"ml-12px h-24px px-8px",size:"small",onClick:t},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_21")),1),G("a",Ae,J(e.$t("Config.Panel.index_24")),1)]),_:1},8,["label"])}}}),Oe={class:"px-20px pt-28px pb-8px"},Ne={class:"w-200px"},Te=F({__name:"set",setup(e,{expose:n}){const a=N(null),{t:l}=O(),t=X({backup_number:fe.value.backup_info.backup_number}),i={backup_number:{required:!0,type:"number",trigger:["blur","input"],message:l("Config.Panel.index_94")}};return n({onConfirm:async()=>{await(a.value?.validate()),fe.value.backup_info.backup_number=t.backup_number,await f(ve())}}),(e,n)=>{const l=de,s=ue,u=Pe;return V(),W("div",Oe,[K(u,{ref_key:"formRef",ref:a,model:Q(t),rules:i,"require-mark-placement":"left"},{default:L(()=>[K(s,{label:e.$t("Mail.Mass.index_46"),path:"backup_number","show-require-mark":!0},{default:L(()=>[G("div",Ne,[K(l,{value:Q(t).backup_number,"onUpdate:value":n[0]||(n[0]=e=>Q(t).backup_number=e),min:1,"show-button":!1},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),Ve={class:"text-default"},Le={key:0},Ge={class:"mx-12px"},Je={class:"text-error"},Ke=F({__name:"index",setup(e){const{t:n}=O(),l=async e=>{const a=async()=>{fe.value.backup_info.auto_backup=e,await f(ve()),ge()};e?await a():E({title:n("Config.Panel.index_96"),content:n("Config.Panel.index_95"),onConfirm:a})},t=()=>{z({title:n("Config.Panel.index_90"),width:420,footer:!0,component:Te})},i=async()=>{E({title:n("Config.Panel.index_92"),content:n("Config.Panel.index_93"),onConfirm:async()=>{await m(),fe.value.backup_info.total_size=0}})};return(e,n)=>{const s=se,u=re,o=a;return V(),T(o,{label:e.$t("Config.Panel.index_88")},{content:L(()=>[K(s,{value:Q(fe).backup_info.auto_backup,"onUpdate:value":l,"checked-value":1,"unchecked-value":0},null,8,["value"]),K(u,{class:"mx-12px",type:"primary",onClick:t},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1}),K(u,{onClick:i},{default:L(()=>[Y(J(e.$t("Config.Panel.index_89")),1)]),_:1})]),desc:L(()=>[G("div",Ve,[Q(fe).backup_info.auto_backup?(V(),W("span",Le,J(e.$t("Config.Panel.index_90"))+":"+J(Q(fe).backup_info.backup_number),1)):ee("",!0),G("span",Ge,J(e.$t("Config.Panel.index_91"))+":"+J(Q(x)(Q(fe).backup_info.total_size)),1),G("span",Je,J(e.$t("Config.Panel.index_97")),1)])]),_:1},8,["label"])}}}),Qe={class:"w-160px"},We=F({__name:"index",setup(e){const n=v(),{theme:l}=ne(n),t=[{label:"Fresh",value:"fresh"},{label:"Classic",value:"classic"}],i=async e=>{await g({name:e}),l.value=e};return(e,n)=>{const s=ce,u=a;return V(),T(u,{label:"Theme"},{content:L(()=>[G("div",Qe,[K(s,{value:Q(l),options:t,"onUpdate:value":i},null,8,["value"])])]),_:1})}}}),Ye={class:"inline-flex items-center"},Xe={class:"mr-5px"},Ze={class:"w-160px mr-16px"},en=F({__name:"index",setup(e){const n=async e=>{await C({name:e}),i()};return(e,l)=>{const t=b,i=ce,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_35")},{label:L(()=>[G("div",Ye,[G("span",Xe,J(e.$t("Config.Panel.index_35")),1),K(t,{name:"base-lang",size:"18",color:"#666"})])]),content:L(()=>[G("div",Ze,[K(i,{value:Q(fe).lang,"onUpdate:value":[l[0]||(l[0]=e=>Q(fe).lang=e),n],options:Q(fe).langList},null,8,["value","options"])]),K(ye)]),_:1},8,["label"])}}}),nn={class:"w-260px"},an=F({__name:"index",setup(e){const{t:n}=O(),l=async()=>{fe.value.webname.includes("/")||fe.value.webname.includes("\\")?c.error(n("Config.Panel.index_38")):(await P(ve()),i())};return(e,n)=>{const t=oe,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_36")},{content:L(()=>[G("div",nn,[K(t,{value:Q(fe).webname,"onUpdate:value":n[0]||(n[0]=e=>Q(fe).webname=e),placeholder:""},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:l},{default:L(()=>[Y(J(e.$t("Public.Btn.Save")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_37")),1)]),_:1},8,["label"])}}}),ln={class:"p-20px"},tn={class:"w-140px"},sn={class:"text-error"},un=F({__name:"set",setup(e,{expose:n}){const{t:a}=O(),l=X({type:null,time:5}),t=[{label:a("Public.Unit.Hours",[12]),value:a("Public.Unit.Hour",[12]),time:43200},{label:a("Public.Unit.Hours",[24]),value:a("Public.Unit.Hours",[24]),time:86400},{label:a("Public.Unit.Hours",[72]),value:a("Public.Unit.Hours",[72]),time:259200},{label:a("Public.Unit.Days",[7]),value:a("Public.Unit.Days",[7]),time:604800},{label:a("Public.Unit.Days",[30]),value:a("Public.Unit.Days",[30]),time:2592e3},{label:a("Config.Panel.index_43"),value:a("Config.Panel.index_43"),time:0}],s=()=>{l.type===a("Config.Panel.index_43")&&(l.time=5)};var u;return u=fe.value.session_timeout,t.filter(e=>e.label!==a("Config.Panel.index_43")).map(e=>e.label).includes(u)?l.type=fe.value.session_timeout:(l.type=a("Config.Panel.index_43"),l.time=fe.value.session_timeout_source/60),n({onConfirm:async()=>{let e=0;e=l.type===a("Config.Panel.index_43")?60*l.time:t.find(e=>e.label===l.type)?.time||0;const n=ve();return n.session_timeout=e,await w(n),i(),!1}}),(e,n)=>{const a=ce,i=de,u=_e,o=pe,r=ue,d=Pe;return V(),W("div",ln,[K(d,null,{default:L(()=>[K(r,{label:e.$t("Config.Panel.index_39")},{default:L(()=>[G("div",tn,[K(a,{value:Q(l).type,"onUpdate:value":[n[0]||(n[0]=e=>Q(l).type=e),s],options:t},null,8,["value"])]),ae(K(o,{class:"w-auto ml-10px"},{default:L(()=>[K(i,{value:Q(l).time,"onUpdate:value":n[1]||(n[1]=e=>Q(l).time=e),class:"w-80px","show-button":!1},null,8,["value"]),K(u,null,{default:L(()=>[Y(J(e.$t("Public.Unit.Minute",Q(l).time)),1)]),_:1})]),_:1},512),[[le,Q(l).type===e.$t("Config.Panel.index_43")]])]),_:1},8,["label"])]),_:1}),G("div",sn,J(e.$t("Config.Panel.index_44")),1)])}}}),on={class:"w-260px"},rn={class:"text-error"},dn=F({__name:"index",setup(e){const{t:n}=O(),l=async()=>{z({title:n("Config.Panel.index_42"),width:500,footer:!0,component:un})};return(e,n)=>{const t=oe,i=re,s=te("i18n-t"),u=a;return V(),T(u,{label:e.$t("Config.Panel.index_39")},{content:L(()=>[G("div",on,[K(t,{value:Q(fe).session_timeout,"onUpdate:value":n[0]||(n[0]=e=>Q(fe).session_timeout=e),disabled:!0,placeholder:""},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:l},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:L(()=>[K(s,{keypath:"Config.Panel.index_40",scope:"global"},{time_1:L(()=>[G("span",rn,J(Q(fe).session_timeout),1)]),_:1})]),_:1},8,["label"])}}}),cn={class:"w-260px"},pn=F({__name:"index",setup(e){const n=async()=>{await y(ve()),i()};return(e,l)=>{const t=$e,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_45")},{content:L(()=>[G("div",cn,[K(t,{value:Q(fe).sites_path,"onUpdate:value":l[0]||(l[0]=e=>Q(fe).sites_path=e)},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:n},{default:L(()=>[Y(J(e.$t("Public.Btn.Save")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_46")),1)]),_:1},8,["label"])}}}),_n={class:"w-260px"},fn=F({__name:"index",setup(e){const n=async()=>{await $(ve()),i()};return(e,l)=>{const t=$e,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_47")},{content:L(()=>[G("div",_n,[K(t,{value:Q(fe).backup_path,"onUpdate:value":l[0]||(l[0]=e=>Q(fe).backup_path=e)},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:n},{default:L(()=>[Y(J(e.$t("Public.Btn.Save")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_48")),1)]),_:1},8,["label"])}}}),xn={class:"w-260px"},mn=F({__name:"index",setup(e){const{t:n}=O(),l=async()=>{E({width:460,title:n("Config.Panel.index_51"),content:n("Config.Panel.index_52"),onConfirm:async()=>{await h(ve()),i(`${location.protocol}//${fe.value.serverIp}:${location.port}${location.pathname}`,2e3)}})};return(e,n)=>{const t=oe,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_49")},{content:L(()=>[G("div",xn,[K(t,{value:Q(fe).serverIp,"onUpdate:value":n[0]||(n[0]=e=>Q(fe).serverIp=e),placeholder:""},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:l},{default:L(()=>[Y(J(e.$t("Public.Btn.Save")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_50")),1)]),_:1},8,["label"])}}}),vn={class:"w-260px"},gn=F({__name:"index",setup(e){const n=async()=>{await k(),ge()};return(e,l)=>{const t=oe,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_53")},{content:L(()=>[G("div",vn,[K(t,{value:Q(fe).systemDate,"onUpdate:value":l[0]||(l[0]=e=>Q(fe).systemDate=e),readonly:!0,placeholder:""},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:n},{default:L(()=>[Y(J(e.$t("Public.Btn.Sync")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_54")),1)]),_:1},8,["label"])}}}),bn={class:"px-20px pt-28px pb-8px"},Cn={class:"w-210px"},Pn={class:"w-210px"},wn=F({__name:"set",setup(e,{expose:n}){const a=N(null),{t:l}=O(),t=X({username1:fe.value.username,username2:""}),s={username1:{trigger:["blur","input"],validator:()=>""!==t.username1.trim()||new Error(l("Config.Panel.index_60"))},username2:{trigger:["blur","input"],validator:()=>""===t.username2.trim()?new Error(l("Config.Panel.index_61")):t.username2===t.username1||new Error(l("Config.Panel.index_62"))}};return n({onConfirm:async()=>{await(a.value?.validate()),await U({username1:S(t.username1),username2:S(t.username2)}),i("/login?dologin=True",1500)}}),(e,n)=>{const l=oe,i=ue,u=Pe;return V(),W("div",bn,[K(u,{ref_key:"formRef",ref:a,model:Q(t),rules:s,"require-mark-placement":"left"},{default:L(()=>[K(i,{label:e.$t("Config.Panel.index_58"),path:"username1","show-require-mark":!0},{default:L(()=>[G("div",Cn,[K(l,{value:Q(t).username1,"onUpdate:value":n[0]||(n[0]=e=>Q(t).username1=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"]),K(i,{label:e.$t("Config.Panel.index_59"),path:"username2","show-require-mark":!0},{default:L(()=>[G("div",Pn,[K(l,{value:Q(t).username2,"onUpdate:value":n[1]||(n[1]=e=>Q(t).username2=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),yn={class:"w-260px"},$n=F({__name:"index",setup(e){const{t:n}=O(),l=async()=>{z({title:n("Config.Panel.index_57"),width:420,footer:!0,component:wn})};return(e,n)=>{const t=oe,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_55")},{content:L(()=>[G("div",yn,[K(t,{value:Q(fe).username,disabled:!0,placeholder:""},null,8,["value"])]),K(i,{class:"ml-12px",type:"primary",onClick:l},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_56")),1)]),_:1},8,["label"])}}}),hn={class:"px-20px pt-28px pb-8px"},kn={class:"w-210px"},Un={class:"w-210px"},Sn=F({__name:"set",setup(e,{expose:n}){const{t:a}=O(),l=N(null),t=X({password1:"",password2:""}),s={password1:{trigger:["blur","input"],validator:()=>""===t.password1.trim()?new Error(a("Config.Panel.index_67")):!(t.password1.trim().length<6)||new Error(a("Config.Panel.index_68"))},password2:{trigger:["blur","input"],validator:()=>""===t.password2.trim()?new Error(a("Config.Panel.index_69")):t.password2===t.password1||new Error(a("Config.Panel.index_70"))}};return n({onConfirm:async()=>{await(l.value?.validate()),await j({password1:S(t.password1),password2:S(t.password2)}),i("/login?dologin=True",1500)}}),(e,n)=>{const a=he,i=ue,u=oe,o=Pe;return V(),W("div",hn,[K(o,{ref_key:"formRef",ref:l,model:Q(t),rules:s,"require-mark-placement":"left"},{default:L(()=>[K(i,{label:e.$t("Config.Panel.index_66"),path:"password1","show-require-mark":!0},{default:L(()=>[G("div",kn,[K(a,{value:Q(t).password1,"onUpdate:value":n[0]||(n[0]=e=>Q(t).password1=e),length:10,placeholder:""},null,8,["value"])])]),_:1},8,["label"]),K(i,{label:e.$t("Config.Panel.index_59"),path:"password2","show-require-mark":!0},{default:L(()=>[G("div",Un,[K(u,{value:Q(t).password2,"onUpdate:value":n[1]||(n[1]=e=>Q(t).password2=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),jn={class:"w-260px"},Bn=F({__name:"index",setup(e){const{t:n}=O(),l=async()=>{z({title:n("Config.Panel.index_65"),width:420,footer:!0,component:Sn})};return(e,n)=>{const t=oe,i=re,s=a;return V(),T(s,{label:e.$t("Config.Panel.index_63")},{content:L(()=>[G("div",jn,[K(t,{value:"********",type:"password",disabled:!0,placeholder:""})]),K(i,{class:"ml-12px",type:"primary",onClick:l},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_64")),1)]),_:1},8,["label"])}}}),Mn={class:"w-260px"},In=F({__name:"index",setup(e){const{t:n}=O(),l=()=>{H()},t=()=>{E({title:n("Config.Panel.index_74"),content:n("Config.Panel.index_75"),onConfirm:async()=>{await B(),i()}})};return(e,n)=>{const i=oe,s=re,u=a;return V(),T(u,{label:e.$t("Config.Panel.index_71")},{content:L(()=>[G("div",Mn,[K(i,{value:Q(fe).account,disabled:!0,placeholder:""},null,8,["value"])]),K(s,{class:"ml-12px",type:"primary",onClick:l},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1}),K(s,{class:"ml-12px",onClick:t},{default:L(()=>[Y(J(e.$t("Config.Panel.index_72")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_73")),1)]),_:1},8,["label"])}}}),qn={class:"p-20px"},En=F({__name:"set",setup(e){const{t:n}=O(),a=["memuA","memuAsoft","memuAconfig","dologin"],{columns:l}=R([{key:"title",title:n("Config.Panel.index_80")},{key:"show",title:n("Config.Panel.index_81"),align:"right",width:100,render:e=>a.includes(e.id)?n("Config.Panel.index_82"):K(se,{value:e.show,size:"small",onUpdateValue:n=>{t(n,e)}},null)}]),t=async(e,n)=>{const a=be.value.filter(e=>!e.show).map(e=>e.id);e?a.splice(a.indexOf(n.id),1):a.push(n.id),await M({hide_list:a}),n.show=e};return(e,n)=>{const a=A;return V(),W("div",qn,[K(a,{data:Q(be),columns:Q(l)},null,8,["data","columns"])])}}}),zn={class:"w-260px"},Dn=F({__name:"index",setup(e){const{t:n}=O(),l=ie(()=>be.value.filter(e=>!e.show).map(e=>e.title).join(", ")),t=()=>{z({title:n("Config.Panel.index_79"),width:360,component:En})};return(e,n)=>{const i=oe,s=re,u=a;return V(),T(u,{label:e.$t("Config.Panel.index_76")},{content:L(()=>[G("div",zn,[K(i,{value:Q(l)||e.$t("Config.Panel.index_77"),disabled:!0,placeholder:""},null,8,["value"])]),K(s,{class:"ml-12px",type:"primary",onClick:t},{default:L(()=>[Y(J(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:L(()=>[G("span",null,J(e.$t("Config.Panel.index_78")),1)]),_:1},8,["label"])}}}),Hn=F({__name:"index",setup(e){const n=v(),l=async e=>{await I({is_install:Number(e)}),n.siteMonitorStatus=e};return(e,t)=>{const i=se,s=a;return V(),T(s,{label:"Site Monitor"},{content:L(()=>[K(i,{value:Q(n).siteMonitorStatus,"onUpdate:value":l},null,8,["value"])]),desc:L(()=>t[0]||(t[0]=[G("span",null,"Free website monitor",-1)])),_:1})}}});e("P",q(F({__name:"config",setup:e=>(e,n)=>(V(),W("div",null,[K(l,null,{default:L(()=>[Y(J(e.$t("Config.Panel.index_1")),1)]),_:1}),K(ke),K(Ue),K(je),K(qe),K(Se),K(Hn),K(Fe),K(Ke),K(We),K(en),K(an),K(dn),K(pn),K(fn),K(mn),K(gn),K($n),K(Bn),K(In),K(Dn)]))}),[["__scopeId","data-v-f0af7604"]]))}}}); diff --git a/BTPanel/static/vite/js/config-legacy10.js b/BTPanel/static/vite/js/config-legacy10.js index 2c8f4a78..704d7057 100644 --- a/BTPanel/static/vite/js/config-legacy10.js +++ b/BTPanel/static/vite/js/config-legacy10.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./setting-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(t,e){"use strict";var a,s,n,l,i,c,u,o,g,r,f;return{setters:[t=>{a=t.c,s=t.h,n=t.a},t=>{l=t.a},t=>{i=t.k,c=t.P,u=t.W,o=t.R,g=t.V,r=t.U},t=>{f=t.dj},null,null,null],execute:function(){const e={class:"p-20px"};t("default",i({__name:"config",props:{status:{type:Boolean}},emits:["refresh"],setup(t,{emit:i}){const m=t,y=i,{t:_}=c(),{table:d,columns:p}=a([{key:"title",title:_("Waf.Setting.config_129"),width:120},{key:"ps",title:_("Waf.Setting.config_130")},{key:"status",title:_("Public.Table.Status"),width:60,render:t=>u(f,{value:t.status,onUpdateValue:async e=>{e?(await l({obj:"from_data"}),t.status=e,y("refresh",e)):n({title:_("Waf.Setting.config_131"),content:_("Waf.Setting.config_132"),onConfirm:async()=>{await l({obj:"from_data"}),t.status=e,y("refresh",e)}})}},null)}]);return d.data.push({title:_("Waf.Setting.config_133"),ps:_("Waf.Setting.config_134"),status:m.status}),(t,a)=>{const n=s;return g(),o("div",e,[u(n,{"max-height":340,data:r(d).data,columns:r(p)},null,8,["data","columns"])])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./setting-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(t,e){"use strict";var a,s,n,l,i,c,u,o,g,r,f;return{setters:[t=>{a=t.c,s=t.h,n=t.a},t=>{l=t.a},t=>{i=t.k,c=t.P,u=t.W,o=t.R,g=t.V,r=t.U},t=>{f=t.dj},null,null,null],execute:function(){const e={class:"p-20px"};t("default",i({__name:"config",props:{status:{type:Boolean}},emits:["refresh"],setup(t,{emit:i}){const m=t,y=i,{t:_}=c(),{table:d,columns:p}=a([{key:"title",title:_("Waf.Setting.config_129"),width:120},{key:"ps",title:_("Waf.Setting.config_130")},{key:"status",title:_("Public.Table.Status"),width:60,render:t=>u(f,{value:t.status,onUpdateValue:async e=>{e?(await l({obj:"from_data"}),t.status=e,y("refresh",e)):n({title:_("Waf.Setting.config_131"),content:_("Waf.Setting.config_132"),onConfirm:async()=>{await l({obj:"from_data"}),t.status=e,y("refresh",e)}})}},null)}]);return d.data.push({title:_("Waf.Setting.config_133"),ps:_("Waf.Setting.config_134"),status:m.status}),(t,a)=>{const n=s;return g(),o("div",e,[u(n,{"max-height":340,data:r(d).data,columns:r(p)},null,8,["data","columns"])])}}}))}}}); diff --git a/BTPanel/static/vite/js/config-legacy11.js b/BTPanel/static/vite/js/config-legacy11.js index e0754bdb..6c9bc2df 100644 --- a/BTPanel/static/vite/js/config-legacy11.js +++ b/BTPanel/static/vite/js/config-legacy11.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./setting-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,l){"use strict";var t,n,a,i,c,o,u,s,f,g,r,_,p,m,d,v,y,S;return{setters:[e=>{t=e._},e=>{n=e._},e=>{a=e.H},e=>{i=e.k,c=e.P,o=e.r,u=e.e,s=e.R,f=e.V,g=e.W,r=e.a3,_=e.U,p=e.S,m=e.a4,d=e.N},e=>{v=e.dR,y=e.dj,S=e.df},null,null,null],execute:function(){const l={class:"p-20px"},W={class:"w-150px"},j={class:"w-150px"};e("default",i({__name:"config",props:{config:{}},emits:["refresh"],setup(e,{expose:i,emit:b}){const x=e,w=b,{t:$}=c(),h=o(null),U=u({open:!0,cycle:60,limit:240}),R={cycle:{validator:()=>!!U.cycle||new Error($("Waf.Setting.config_154"))},limit:{validator:()=>!!U.limit||new Error($("Waf.Setting.config_155"))}};return(()=>{const{config:e}=x;U.open=e.open,U.limit=e.limit,U.cycle=e.cycle})(),i({onConfirm:async()=>{await(h.value?.validate()),await a({...d(U),open:U.open?1:0}),w("refresh")}}),(e,a)=>{const i=y,c=v,o=S,u=n,d=t;return f(),s("div",l,[g(u,{ref_key:"formRef",ref:h,model:_(U),rules:R},{default:r(()=>[g(c,{label:e.$t("Waf.Setting.config_148"),path:"open"},{default:r(()=>[g(i,{value:_(U).open,"onUpdate:value":a[0]||(a[0]=e=>_(U).open=e)},null,8,["value"])]),_:1},8,["label"]),g(c,{label:e.$t("Waf.Setting.config_149"),path:"cycle"},{default:r(()=>[p("div",W,[g(o,{value:_(U).cycle,"onUpdate:value":a[1]||(a[1]=e=>_(U).cycle=e),min:1,"show-button":!1},{suffix:r(()=>[p("span",null,m(e.$t("Waf.Setting.config_53")),1)]),_:1},8,["value"])])]),_:1},8,["label"]),g(c,{label:e.$t("Waf.Setting.config_150"),path:"limit"},{default:r(()=>[p("div",j,[g(o,{value:_(U).limit,"onUpdate:value":a[2]||(a[2]=e=>_(U).limit=e),min:1,"show-button":!1},{suffix:r(()=>[p("span",null,m(e.$t("Waf.Setting.config_52")),1)]),_:1},8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),g(d,{class:"mt-12px"},{default:r(()=>[p("li",null,m(e.$t("Waf.Setting.config_151")),1),p("li",null,m(e.$t("Waf.Setting.config_152")),1),p("li",null,m(e.$t("Waf.Setting.config_153")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./setting-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,l){"use strict";var t,n,a,i,c,o,u,s,f,g,r,_,p,m,d,v,y,S;return{setters:[e=>{t=e._},e=>{n=e._},e=>{a=e.H},e=>{i=e.k,c=e.P,o=e.r,u=e.e,s=e.R,f=e.V,g=e.W,r=e.a3,_=e.U,p=e.S,m=e.a4,d=e.N},e=>{v=e.dR,y=e.dj,S=e.df},null,null,null],execute:function(){const l={class:"p-20px"},W={class:"w-150px"},j={class:"w-150px"};e("default",i({__name:"config",props:{config:{}},emits:["refresh"],setup(e,{expose:i,emit:b}){const x=e,w=b,{t:$}=c(),h=o(null),U=u({open:!0,cycle:60,limit:240}),R={cycle:{validator:()=>!!U.cycle||new Error($("Waf.Setting.config_154"))},limit:{validator:()=>!!U.limit||new Error($("Waf.Setting.config_155"))}};return(()=>{const{config:e}=x;U.open=e.open,U.limit=e.limit,U.cycle=e.cycle})(),i({onConfirm:async()=>{await(h.value?.validate()),await a({...d(U),open:U.open?1:0}),w("refresh")}}),(e,a)=>{const i=y,c=v,o=S,u=n,d=t;return f(),s("div",l,[g(u,{ref_key:"formRef",ref:h,model:_(U),rules:R},{default:r(()=>[g(c,{label:e.$t("Waf.Setting.config_148"),path:"open"},{default:r(()=>[g(i,{value:_(U).open,"onUpdate:value":a[0]||(a[0]=e=>_(U).open=e)},null,8,["value"])]),_:1},8,["label"]),g(c,{label:e.$t("Waf.Setting.config_149"),path:"cycle"},{default:r(()=>[p("div",W,[g(o,{value:_(U).cycle,"onUpdate:value":a[1]||(a[1]=e=>_(U).cycle=e),min:1,"show-button":!1},{suffix:r(()=>[p("span",null,m(e.$t("Waf.Setting.config_53")),1)]),_:1},8,["value"])])]),_:1},8,["label"]),g(c,{label:e.$t("Waf.Setting.config_150"),path:"limit"},{default:r(()=>[p("div",j,[g(o,{value:_(U).limit,"onUpdate:value":a[2]||(a[2]=e=>_(U).limit=e),min:1,"show-button":!1},{suffix:r(()=>[p("span",null,m(e.$t("Waf.Setting.config_52")),1)]),_:1},8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),g(d,{class:"mt-12px"},{default:r(()=>[p("li",null,m(e.$t("Waf.Setting.config_151")),1),p("li",null,m(e.$t("Waf.Setting.config_152")),1),p("li",null,m(e.$t("Waf.Setting.config_153")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/config-legacy12.js b/BTPanel/static/vite/js/config-legacy12.js index e602424c..1d1ecd9a 100644 --- a/BTPanel/static/vite/js/config-legacy12.js +++ b/BTPanel/static/vite/js/config-legacy12.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./setting-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(t,e){"use strict";var l,a,n,i,c,s,o,g,u,r,f,d,x,p,y,_,m,v,S,j,W,b,h;return{setters:[t=>{l=t.c,a=t.f,n=t.h,i=t._},t=>{c=t.d,s=t.m},t=>{o=t.I,g=t.g,u=t.J},t=>{r=t.au,f=t.aC},t=>{d=t.k,x=t.P,p=t.e,y=t.R,_=t.V,m=t.S,v=t.W,S=t.U,j=t.a3,W=t.j,b=t.a4,h=t.N},null,null],execute:function(){const e={class:"p-20px"},$={class:"flex mb-16px"},k={class:"flex-1 mr-16px"},w={class:"w-230px mr-16px"};t("default",d({__name:"config",setup(t){const{t:d}=x(),C=p({text:"",text2:""}),P=async()=>{""!==C.text.trim()&&""!==C.text2.trim()?(await u(h(C)),C.text="",C.text2="",D()):s.error(d("Waf.Setting.config_170"))},{table:U,columns:B,setLoading:A}=l([{key:"text",title:d("Waf.Setting.config_164"),ellipsis:{tooltip:!0}},{key:"text2",title:d("Waf.Setting.config_165"),ellipsis:{tooltip:!0}},a({width:80,options:t=>[{label:d("Public.Btn.Del"),onClick:async()=>{await o({body:{[t.text]:t.text2}}),D()}}]})]),D=async()=>{try{A(!0);const{message:t}=await g();c(t)&&(U.data=t.body_character_string.map(t=>{const e=Object.keys(t);return{text:e[0],text2:t[e[0]]}}))}finally{A(!1)}};return D(),(t,l)=>{const a=r,c=f,s=n,o=i;return _(),y("div",e,[m("div",$,[m("div",k,[v(a,{value:S(C).text,"onUpdate:value":l[0]||(l[0]=t=>S(C).text=t),placeholder:t.$t("Waf.Setting.config_164")},null,8,["value","placeholder"])]),m("div",w,[v(a,{value:S(C).text2,"onUpdate:value":l[1]||(l[1]=t=>S(C).text2=t),placeholder:t.$t("Waf.Setting.config_165")},null,8,["value","placeholder"])]),v(c,{type:"primary",onClick:P},{default:j(()=>[W(b(t.$t("Public.Btn.Add")),1)]),_:1})]),v(s,{"max-height":230,loading:S(U).loading,data:S(U).data,columns:S(B)},null,8,["loading","data","columns"]),v(o,{class:"mt-16px"},{default:j(()=>[m("li",null,b(t.$t("Waf.Setting.config_166")),1),m("li",null,b(t.$t("Waf.Setting.config_167")),1),m("li",null,b(t.$t("Waf.Setting.config_168")),1),m("li",null,b(t.$t("Waf.Setting.config_169")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./setting-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(t,e){"use strict";var l,a,n,i,c,s,o,g,u,r,f,d,x,p,y,_,m,v,S,j,W,b,h;return{setters:[t=>{l=t.c,a=t.f,n=t.h,i=t._},t=>{c=t.d,s=t.m},t=>{o=t.I,g=t.g,u=t.J},t=>{r=t.au,f=t.aC},t=>{d=t.k,x=t.P,p=t.e,y=t.R,_=t.V,m=t.S,v=t.W,S=t.U,j=t.a3,W=t.j,b=t.a4,h=t.N},null,null],execute:function(){const e={class:"p-20px"},$={class:"flex mb-16px"},k={class:"flex-1 mr-16px"},w={class:"w-230px mr-16px"};t("default",d({__name:"config",setup(t){const{t:d}=x(),C=p({text:"",text2:""}),P=async()=>{""!==C.text.trim()&&""!==C.text2.trim()?(await u(h(C)),C.text="",C.text2="",D()):s.error(d("Waf.Setting.config_170"))},{table:U,columns:B,setLoading:A}=l([{key:"text",title:d("Waf.Setting.config_164"),ellipsis:{tooltip:!0}},{key:"text2",title:d("Waf.Setting.config_165"),ellipsis:{tooltip:!0}},a({width:80,options:t=>[{label:d("Public.Btn.Del"),onClick:async()=>{await o({body:{[t.text]:t.text2}}),D()}}]})]),D=async()=>{try{A(!0);const{message:t}=await g();c(t)&&(U.data=t.body_character_string.map(t=>{const e=Object.keys(t);return{text:e[0],text2:t[e[0]]}}))}finally{A(!1)}};return D(),(t,l)=>{const a=r,c=f,s=n,o=i;return _(),y("div",e,[m("div",$,[m("div",k,[v(a,{value:S(C).text,"onUpdate:value":l[0]||(l[0]=t=>S(C).text=t),placeholder:t.$t("Waf.Setting.config_164")},null,8,["value","placeholder"])]),m("div",w,[v(a,{value:S(C).text2,"onUpdate:value":l[1]||(l[1]=t=>S(C).text2=t),placeholder:t.$t("Waf.Setting.config_165")},null,8,["value","placeholder"])]),v(c,{type:"primary",onClick:P},{default:j(()=>[W(b(t.$t("Public.Btn.Add")),1)]),_:1})]),v(s,{"max-height":230,loading:S(U).loading,data:S(U).data,columns:S(B)},null,8,["loading","data","columns"]),v(o,{class:"mt-16px"},{default:j(()=>[m("li",null,b(t.$t("Waf.Setting.config_166")),1),m("li",null,b(t.$t("Waf.Setting.config_167")),1),m("li",null,b(t.$t("Waf.Setting.config_168")),1),m("li",null,b(t.$t("Waf.Setting.config_169")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/config-legacy13.js b/BTPanel/static/vite/js/config-legacy13.js index 5f53ce8c..da788ace 100644 --- a/BTPanel/static/vite/js/config-legacy13.js +++ b/BTPanel/static/vite/js/config-legacy13.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./setting-legacy.js?v=1760428868419","./index-legacy99.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(t,a){"use strict";var l,e,n,i,o,c,u,s,r,f,d,g,p,_,m,v,y,j,x,S,w,W,b,h,C,k,$,P,B,U,L;return{setters:[t=>{l=t.c,e=t.f,n=t.h,i=t._,o=t.u,c=t.a},t=>{u=t.k,s=t.P,r=t.r,f=t.R,d=t.V,g=t.S,p=t.W,_=t.aj,m=t.ak,v=t.U,y=t.a3,j=t.j,x=t.a4},t=>{S=t.w,w=t.m,W=t.go},t=>{b=t.K,h=t.L,C=t.M,k=t.N,$=t.O},t=>{P=t._},t=>{B=t.au,U=t.aC,L=t.da},null,null],execute:function(){const a={class:"p-20px"},E={class:"flex mb-16px"},K={class:"flex-1 mr-16px"},R="uri_find";t("default",u({__name:"config",setup(t){const{t:u}=s(),A=r(""),D=async()=>{""!==A.value.trim()?(await C({url_find:A.value}),A.value="",q()):w.error(u("Waf.Setting.config_176"))},H=()=>{const t=r("");o({title:u("Waf.Setting.config_177"),width:440,footer:!0,content:()=>p("div",{class:"p-20px"},[p(P,{value:t.value,"onUpdate:value":a=>t.value=a,rows:14,placeholder:u("Waf.Setting.config_178")},null)]),onConfirm:async()=>{if(""===t.value.trim())return w.error(u("Waf.Setting.config_179")),!1;await k({pdata:t.value,json:1}),q()}})},I=()=>{const t=r(N.data.map(t=>t.url).join("\n"));o({title:u("Waf.Setting.config_177"),width:440,footer:!0,content:()=>p("div",{class:"p-20px"},[p(P,{value:t.value,"onUpdate:value":a=>t.value=a,rows:14,readonly:!0},null)]),onConfirm:()=>(W(t.value,`${R}.json`),!1)})},M=()=>{c({title:u("Waf.Setting.config_180"),content:u("Waf.Setting.config_181"),onConfirm:async()=>{await $({type:R}),q()}})},{table:N,columns:O,setLoading:V}=l([{key:"url",title:"URL"},e({width:80,options:t=>[{label:u("Public.Btn.Del"),onClick:async()=>{await b({url_find:t.url}),q()}}]})]),q=async()=>{try{V(!0);const{message:t}=await h();S(t)&&(N.data=t.map(t=>({url:t})))}finally{V(!1)}};return q(),(t,l)=>{const e=B,o=U,c=n,u=L,s=i;return d(),f("div",a,[g("div",E,[g("div",K,[p(e,{value:v(A),"onUpdate:value":l[0]||(l[0]=t=>m(A)?A.value=t:null),placeholder:t.$t("Waf.Setting.config_173"),onKeyup:_(D,["enter"])},null,8,["value","placeholder"])]),p(o,{type:"primary",onClick:D},{default:y(()=>[j(x(t.$t("Public.Btn.Add")),1)]),_:1})]),p(c,{"max-height":258,loading:v(N).loading,data:v(N).data,columns:v(O)},null,8,["loading","data","columns"]),p(u,{class:"mt-16px"},{default:y(()=>[p(o,{onClick:H},{default:y(()=>[j(x(t.$t("Public.Btn.Import")),1)]),_:1}),p(o,{onClick:I},{default:y(()=>[j(x(t.$t("Public.Btn.Export")),1)]),_:1}),p(o,{onClick:M},{default:y(()=>[j(x(t.$t("Public.Btn.Empty")),1)]),_:1})]),_:1}),p(s,{class:"mt-16px"},{default:y(()=>[g("li",null,x(t.$t("Waf.Setting.config_174")),1),g("li",null,x(t.$t("Waf.Setting.config_175")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./setting-legacy.js?v=1762424784323","./index-legacy99.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(t,a){"use strict";var l,e,n,i,o,c,u,s,r,f,d,g,p,_,m,v,y,j,x,S,w,W,b,h,k,C,$,P,B,U,L;return{setters:[t=>{l=t.c,e=t.f,n=t.h,i=t._,o=t.u,c=t.a},t=>{u=t.k,s=t.P,r=t.r,f=t.R,d=t.V,g=t.S,p=t.W,_=t.aj,m=t.ak,v=t.U,y=t.a3,j=t.j,x=t.a4},t=>{S=t.w,w=t.m,W=t.gk},t=>{b=t.K,h=t.L,k=t.M,C=t.N,$=t.O},t=>{P=t._},t=>{B=t.au,U=t.aC,L=t.da},null,null],execute:function(){const a={class:"p-20px"},E={class:"flex mb-16px"},K={class:"flex-1 mr-16px"},R="uri_find";t("default",u({__name:"config",setup(t){const{t:u}=s(),A=r(""),D=async()=>{""!==A.value.trim()?(await k({url_find:A.value}),A.value="",q()):w.error(u("Waf.Setting.config_176"))},H=()=>{const t=r("");o({title:u("Waf.Setting.config_177"),width:440,footer:!0,content:()=>p("div",{class:"p-20px"},[p(P,{value:t.value,"onUpdate:value":a=>t.value=a,rows:14,placeholder:u("Waf.Setting.config_178")},null)]),onConfirm:async()=>{if(""===t.value.trim())return w.error(u("Waf.Setting.config_179")),!1;await C({pdata:t.value,json:1}),q()}})},I=()=>{const t=r(N.data.map(t=>t.url).join("\n"));o({title:u("Waf.Setting.config_177"),width:440,footer:!0,content:()=>p("div",{class:"p-20px"},[p(P,{value:t.value,"onUpdate:value":a=>t.value=a,rows:14,readonly:!0},null)]),onConfirm:()=>(W(t.value,`${R}.json`),!1)})},M=()=>{c({title:u("Waf.Setting.config_180"),content:u("Waf.Setting.config_181"),onConfirm:async()=>{await $({type:R}),q()}})},{table:N,columns:O,setLoading:V}=l([{key:"url",title:"URL"},e({width:80,options:t=>[{label:u("Public.Btn.Del"),onClick:async()=>{await b({url_find:t.url}),q()}}]})]),q=async()=>{try{V(!0);const{message:t}=await h();S(t)&&(N.data=t.map(t=>({url:t})))}finally{V(!1)}};return q(),(t,l)=>{const e=B,o=U,c=n,u=L,s=i;return d(),f("div",a,[g("div",E,[g("div",K,[p(e,{value:v(A),"onUpdate:value":l[0]||(l[0]=t=>m(A)?A.value=t:null),placeholder:t.$t("Waf.Setting.config_173"),onKeyup:_(D,["enter"])},null,8,["value","placeholder"])]),p(o,{type:"primary",onClick:D},{default:y(()=>[j(x(t.$t("Public.Btn.Add")),1)]),_:1})]),p(c,{"max-height":258,loading:v(N).loading,data:v(N).data,columns:v(O)},null,8,["loading","data","columns"]),p(u,{class:"mt-16px"},{default:y(()=>[p(o,{onClick:H},{default:y(()=>[j(x(t.$t("Public.Btn.Import")),1)]),_:1}),p(o,{onClick:I},{default:y(()=>[j(x(t.$t("Public.Btn.Export")),1)]),_:1}),p(o,{onClick:M},{default:y(()=>[j(x(t.$t("Public.Btn.Empty")),1)]),_:1})]),_:1}),p(s,{class:"mt-16px"},{default:y(()=>[g("li",null,x(t.$t("Waf.Setting.config_174")),1),g("li",null,x(t.$t("Waf.Setting.config_175")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/config-legacy14.js b/BTPanel/static/vite/js/config-legacy14.js index e4b55fdb..235e1963 100644 --- a/BTPanel/static/vite/js/config-legacy14.js +++ b/BTPanel/static/vite/js/config-legacy14.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./setting-legacy.js?v=1760428868419","./index-legacy99.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(t,a){"use strict";var e,n,l,i,o,c,u,s,r,d,f,g,p,_,m,v,y,x,w,S,j,W,b,h,C,k,P,$,B,U,E;return{setters:[t=>{e=t.c,n=t.f,l=t.h,i=t._,o=t.u,c=t.a},t=>{u=t.k,s=t.P,r=t.r,d=t.R,f=t.V,g=t.S,p=t.W,_=t.aj,m=t.ak,v=t.U,y=t.a3,x=t.j,w=t.a4},t=>{S=t.d,j=t.m,W=t.go},t=>{b=t.P,h=t.g,C=t.Q,k=t.R,P=t.S},t=>{$=t._},t=>{B=t.au,U=t.aC,E=t.da},null,null],execute:function(){const a={class:"p-20px"},R={class:"flex mb-16px"},A={class:"flex-1 mr-16px"};t("default",u({__name:"config",setup(t){const{t:u}=s(),D=r(""),H=async()=>{""!==D.value.trim()?(await C({text:D.value}),D.value="",z()):j.error(u("Waf.Setting.config_176"))},I=()=>{const t=r("");o({title:u("Waf.Setting.config_187"),width:440,footer:!0,content:()=>p("div",{class:"p-20px"},[p($,{value:t.value,"onUpdate:value":a=>t.value=a,rows:14,placeholder:u("Waf.Setting.config_188")},null)]),onConfirm:async()=>{if(""===t.value.trim())return j.error(u("Waf.Setting.config_179")),!1;await k({text:t.value}),z()}})},K=()=>{const t=r(Q.data.map(t=>t.word).join("\n"));o({title:u("Waf.Setting.config_177"),width:440,footer:!0,content:()=>p("div",{class:"p-20px"},[p($,{value:t.value,"onUpdate:value":a=>t.value=a,rows:14,readonly:!0},null)]),onConfirm:()=>(W(t.value,"body_intercept.json"),!1)})},L=()=>{c({title:u("Waf.Setting.config_180"),content:u("Waf.Setting.config_181"),onConfirm:async()=>{await P(),z()}})},{table:Q,columns:V,setLoading:q}=e([{key:"word",title:u("Waf.Setting.config_184")},n({width:80,options:t=>[{label:u("Public.Btn.Del"),onClick:async()=>{await b({text:t.word}),z()}}]})]),z=async()=>{try{q(!0);const{message:t}=await h();S(t)&&(Q.data=t.body_intercept.map(t=>({word:t})))}finally{q(!1)}};return z(),(t,e)=>{const n=B,o=U,c=l,u=E,s=i;return f(),d("div",a,[g("div",R,[g("div",A,[p(n,{value:v(D),"onUpdate:value":e[0]||(e[0]=t=>m(D)?D.value=t:null),placeholder:t.$t("Waf.Setting.config_184"),onKeyup:_(H,["enter"])},null,8,["value","placeholder"])]),p(o,{type:"primary",onClick:H},{default:y(()=>[x(w(t.$t("Public.Btn.Add")),1)]),_:1})]),p(c,{"max-height":258,loading:v(Q).loading,data:v(Q).data,columns:v(V)},null,8,["loading","data","columns"]),p(u,{class:"mt-16px"},{default:y(()=>[p(o,{onClick:I},{default:y(()=>[x(w(t.$t("Public.Btn.Import")),1)]),_:1}),p(o,{onClick:K},{default:y(()=>[x(w(t.$t("Public.Btn.Export")),1)]),_:1}),p(o,{onClick:L},{default:y(()=>[x(w(t.$t("Public.Btn.Empty")),1)]),_:1})]),_:1}),p(s,{class:"mt-16px"},{default:y(()=>[g("li",null,w(t.$t("Waf.Setting.config_185")),1),g("li",null,w(t.$t("Waf.Setting.config_186")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./setting-legacy.js?v=1762424784323","./index-legacy99.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(t,a){"use strict";var e,n,l,i,o,c,u,s,r,d,f,g,p,_,m,v,y,x,w,S,j,W,b,h,k,C,P,$,B,U,E;return{setters:[t=>{e=t.c,n=t.f,l=t.h,i=t._,o=t.u,c=t.a},t=>{u=t.k,s=t.P,r=t.r,d=t.R,f=t.V,g=t.S,p=t.W,_=t.aj,m=t.ak,v=t.U,y=t.a3,x=t.j,w=t.a4},t=>{S=t.d,j=t.m,W=t.gk},t=>{b=t.P,h=t.g,k=t.Q,C=t.R,P=t.S},t=>{$=t._},t=>{B=t.au,U=t.aC,E=t.da},null,null],execute:function(){const a={class:"p-20px"},R={class:"flex mb-16px"},A={class:"flex-1 mr-16px"};t("default",u({__name:"config",setup(t){const{t:u}=s(),D=r(""),H=async()=>{""!==D.value.trim()?(await k({text:D.value}),D.value="",z()):j.error(u("Waf.Setting.config_176"))},I=()=>{const t=r("");o({title:u("Waf.Setting.config_187"),width:440,footer:!0,content:()=>p("div",{class:"p-20px"},[p($,{value:t.value,"onUpdate:value":a=>t.value=a,rows:14,placeholder:u("Waf.Setting.config_188")},null)]),onConfirm:async()=>{if(""===t.value.trim())return j.error(u("Waf.Setting.config_179")),!1;await C({text:t.value}),z()}})},K=()=>{const t=r(Q.data.map(t=>t.word).join("\n"));o({title:u("Waf.Setting.config_177"),width:440,footer:!0,content:()=>p("div",{class:"p-20px"},[p($,{value:t.value,"onUpdate:value":a=>t.value=a,rows:14,readonly:!0},null)]),onConfirm:()=>(W(t.value,"body_intercept.json"),!1)})},L=()=>{c({title:u("Waf.Setting.config_180"),content:u("Waf.Setting.config_181"),onConfirm:async()=>{await P(),z()}})},{table:Q,columns:V,setLoading:q}=e([{key:"word",title:u("Waf.Setting.config_184")},n({width:80,options:t=>[{label:u("Public.Btn.Del"),onClick:async()=>{await b({text:t.word}),z()}}]})]),z=async()=>{try{q(!0);const{message:t}=await h();S(t)&&(Q.data=t.body_intercept.map(t=>({word:t})))}finally{q(!1)}};return z(),(t,e)=>{const n=B,o=U,c=l,u=E,s=i;return f(),d("div",a,[g("div",R,[g("div",A,[p(n,{value:v(D),"onUpdate:value":e[0]||(e[0]=t=>m(D)?D.value=t:null),placeholder:t.$t("Waf.Setting.config_184"),onKeyup:_(H,["enter"])},null,8,["value","placeholder"])]),p(o,{type:"primary",onClick:H},{default:y(()=>[x(w(t.$t("Public.Btn.Add")),1)]),_:1})]),p(c,{"max-height":258,loading:v(Q).loading,data:v(Q).data,columns:v(V)},null,8,["loading","data","columns"]),p(u,{class:"mt-16px"},{default:y(()=>[p(o,{onClick:I},{default:y(()=>[x(w(t.$t("Public.Btn.Import")),1)]),_:1}),p(o,{onClick:K},{default:y(()=>[x(w(t.$t("Public.Btn.Export")),1)]),_:1}),p(o,{onClick:L},{default:y(()=>[x(w(t.$t("Public.Btn.Empty")),1)]),_:1})]),_:1}),p(s,{class:"mt-16px"},{default:y(()=>[g("li",null,w(t.$t("Waf.Setting.config_185")),1),g("li",null,w(t.$t("Waf.Setting.config_186")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/config-legacy2.js b/BTPanel/static/vite/js/config-legacy2.js index 4bdcb359..46c39c1d 100644 --- a/BTPanel/static/vite/js/config-legacy2.js +++ b/BTPanel/static/vite/js/config-legacy2.js @@ -1 +1 @@ -System.register(["./index-legacy107.js?v=1760428868419","./public-legacy.js?v=1760428868419","./alarm-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy11.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./index-legacy106.js?v=1760428868419","./open-legacy.js?v=1760428868419","./index-legacy108.js?v=1760428868419","./index-legacy99.js?v=1760428868419","./ssl-lets-progress-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy9.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419"],function(e,a){"use strict";var t,n,l,i,s,o,d,u,r,f,p,c,_,x,g,m,v,b,C,S,y,h,w,$,k,P,U,j,B,L,R,z,E,T,I,H,D,A,F,V,K,M,N,W,Z,q,O,X,Y,G,J,Q,ee,ae,te,ne,le,ie,se,oe,de,ue,re,fe,pe,ce,_e,xe,ge,me,ve,be,Ce,Se,ye,he,we,$e,ke,Pe,Ue,je,Be,Le,Re,ze,Ee,Te,Ie,He,De,Ae,Fe,Ve,Ke,Me,Ne,We,Ze,qe,Oe;return{setters:[e=>{t=e._,n=e.a},e=>{l=e.d,i=e.u,s=e._,o=e.j,d=e.a,u=e.i,r=e.c,f=e.h,p=e.f},e=>{c=e.a,_=e.g,x=e.s,g=e.b},e=>{m=e._},e=>{v=e._},e=>{b=e.S,C=e.w,S=e.am,y=e._,h=e.aR,w=e.aS,$=e.aT,k=e.aU,P=e.d,U=e.aV,j=e.m,B=e.aW,L=e.O,R=e.aX,z=e.aY,E=e.aZ,T=e.p,I=e.a_,H=e.a$,D=e.b0,A=e.b1,F=e.k,V=e.b2,K=e.b3,M=e.b4,N=e.N,W=e.b5,Z=e.b6,q=e.a8,O=e.b7,X=e.b8,Y=e.b9,G=e.ba,J=e.bb,Q=e.x},e=>{ee=e.k,ae=e.P,te=e.r,ne=e.e,le=e.x,ie=e.R,se=e.V,oe=e.W,de=e.a3,ue=e.U,re=e.S,fe=e.a2,pe=e.a4,ce=e.j,_e=e.ak,xe=e.an,ge=e.N,me=e.l,ve=e.v,be=e.ab,Ce=e.F,Se=e.au,ye=e.c},e=>{he=e.dR,we=e.dj,$e=e.aC,ke=e._,Pe=e.dk,Ue=e.dT,je=e.dU,Be=e.au,Le=e.da,Re=e.df,ze=e.dV,Ee=e.dZ},e=>{Te=e.s,Ie=e._,He=e.f,De=e.h,Ae=e.c},e=>{Fe=e.P},e=>{Ve=e._},e=>{Ke=e._},e=>{Me=e.s,Ne=e.a,We=e.g},e=>{Ze=e._},e=>{qe=e._},e=>{Oe=e._}],execute:function(){var a=document.createElement("style");a.textContent=".bt-tips-ul[data-v-86cab381]{margin-top:24px;padding:24px 0;border-top:1px solid #ececec;font-size:14px}[data-v-919bcd3c] .n-input,[data-v-919bcd3c] .n-button,[data-v-919bcd3c] .n-select .n-base-selection{--n-height: 30px}[data-v-919bcd3c] .n-button.n-button--medium-type{min-width:52px}[data-v-919bcd3c] .n-switch{--n-height: max(20px, 16px)}\n/*$vite$:1*/",document.head.appendChild(a);const Xe={class:"p-20px pt-28px pb-8px"},Ye={class:"w-300px"},Ge=ee({__name:"set",props:{open:{type:Boolean,default:!1},taskList:{default:()=>[]}},emits:["refresh"],setup(e,{expose:a,emit:t}){const n=e,i=t,{t:s}=ae(),o=te(null),d=ne({status:!0,method:[]}),u={method:{trigger:["change"],validator:()=>0!==d.method.length||new Error(s("Config.Safe.index_7"))}},r=le([]),{loading:f,setLoading:p}=l();return(()=>{const{open:e,taskList:a}=n;a.length>0&&(d.status=e||a[0].status,d.method=a[0].sender)})(),(async()=>{try{p(!0);const{message:e}=await _();r.value=C(e)?e:[]}finally{p(!1)}})(),a({onConfirm:async()=>{await(o.value?.validate()),await c((()=>{const e=r.value.filter(e=>"panel_safe_push"===e.source)[0];return{template_id:e.id,task_data:{task_data:{tid:e.id,type:e.source,title:e.title,status:d.status,count:0,interval:600,project:"",help:600},sender:d.method,number_rule:{day_num:0,total:0},time_rule:{send_interval:0,time_range:[0,86399]}}}})()),i("refresh")}}),(e,a)=>{const t=we,n=he,l=v,i=m,s=b;return se(),ie("div",Xe,[oe(s,{show:ue(f)},{default:de(()=>[oe(i,{ref_key:"formRef",ref:o,model:ue(d),rules:u},{default:de(()=>[oe(n,{label:e.$t("Config.Safe.index_5")},{default:de(()=>[oe(t,{value:ue(d).status,"onUpdate:value":a[0]||(a[0]=e=>ue(d).status=e)},null,8,["value"])]),_:1},8,["label"]),oe(n,{label:e.$t("Config.Safe.index_6"),path:"method"},{default:de(()=>[re("div",Ye,[oe(l,{value:ue(d).method,"onUpdate:value":a[1]||(a[1]=e=>ue(d).method=e)},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])]),_:1},8,["show"])])}}}),Je=ee({__name:"index",setup(e){const{t:a}=ae(),n=te(!1),s=te([]),o=async e=>{e?d(!0):(await x({task_id:s.value[0].id,status:0}),n.value=!1,s.value[0].status=!1)},d=(e=!1)=>{i({title:a("Config.Safe.index_4"),width:480,footer:!0,confirmText:a("Public.Btn.Save"),data:{open:e,taskList:s.value,onRefresh:f},component:Ge})},{loading:u,setLoading:r}=l(),f=async()=>{try{r(!0);const{message:e}=await g();if(C(e)){const a=e.filter(e=>"panel_safe_push"===e.keyword);a&&a.length>0?(n.value=a[0].status,s.value=a):(n.value=!1,s.value=[])}}finally{r(!1)}};return f(),(e,a)=>{const l=we,i=$e,s=t;return se(),fe(s,{label:e.$t("Config.Safe.index_2")},{content:de(()=>[oe(l,{loading:ue(u),value:ue(n),"onUpdate:value":o},null,8,["loading","value"]),oe(i,{class:"ml-12px h-22px px-5px",size:"small",onClick:a[0]||(a[0]=e=>d())},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_3")),1)]),_:1},8,["label"])}}}),Qe={class:"flex p-20px"},ea={class:"min-w-32px"},aa={class:"flex-1 ml-10px text-14px leading-22px"},ta={class:"flex items-center min-h-30px mb-12px text-error"},na=ee({__name:"close",emits:["setConfirm"],setup(e,{expose:a,emit:t}){const n=t,{t:l}=ae(),i=S(),s=te(!1),o=()=>{d>0||n("setConfirm",{disabled:!s.value})};let d=5;return(()=>{n("setConfirm",{text:l("Config.Safe.index_16",[d]),disabled:!0});const e=setInterval(()=>{d--,n("setConfirm",{text:l("Config.Safe.index_16",[d])}),d<=0&&(clearInterval(e),n("setConfirm",{text:l("Config.Safe.index_17"),disabled:!s.value}))},1e3)})(),a({onConfirm:async()=>(await h(),await w(),setTimeout(()=>{{const e="http:"===location.protocol?"https":"http";window.location.href=`${e}://${window.location.host}${Te.value.adminPath}`}},1500),!1)}),(e,a)=>{const t=y,n=ke;return se(),ie("div",Qe,[re("div",ea,[oe(t,{name:"base-warning",color:ue(i).warningColor,size:"32"},null,8,["color"])]),re("div",aa,[re("div",ta,pe(e.$t("Config.Safe.index_14")),1),oe(n,{checked:ue(s),"onUpdate:checked":[a[0]||(a[0]=e=>_e(s)?s.value=e:null),o]},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_15")),1)]),_:1},8,["checked"])])])}}}),la={class:"flex flex-wrap py-2px text-primary text-12px"},ia={class:"mr-24px"},sa={class:"mr-24px"},oa={class:"flex gap-20px mt-16px"},da={class:"flex-1"},ua={class:"mb-8px"},ra={class:"flex-1"},fa={class:"mb-8px"},pa={class:"mt-10px"},ca={class:"bt-link",href:"http://www.bt.cn/bbs/thread-704-1-1.html",target:"_blank"},_a=ee({__name:"ssl-custom",setup(e){const a=te(""),t=te(""),n=ne({dns:[""],issuer:"--",notBefore:"--",notAfter:"--"}),i=async()=>{await $({privateKey:a.value,certPem:t.value},!0),u()},{loading:o,setLoading:d}=l(),u=async()=>{try{d(!0);const{message:e}=await k();P(e)&&(a.value=e.privateKey||"",t.value=e.certPem||"",n.dns=e.info.dns||[],n.issuer=e.info.issuer||"",n.notBefore=e.info.notBefore||"",n.notAfter=e.info.notAfter||"")}finally{d(!1)}};return u(),(e,l)=>{const d=Pe,u=Ke,r=$e,f=s,p=b;return se(),fe(p,{show:ue(o)},{default:de(()=>[oe(d,{type:"success","show-icon":!1},{default:de(()=>[re("div",la,[re("div",ia,[ce(pe(e.$t("Config.Safe.index_37")),1),re("b",null,pe(ue(n).dns.join(",")||"--"),1)]),re("div",sa,[ce(pe(e.$t("Config.Safe.index_38")),1),re("b",null,pe(ue(n).issuer),1)]),re("div",null,[ce(pe(e.$t("Config.Safe.index_39")),1),re("b",null,pe(ue(n).notAfter),1)])])]),_:1}),re("div",oa,[re("div",da,[re("div",ua,pe(e.$t("Config.Safe.index_27")),1),oe(u,{value:ue(a),"onUpdate:value":l[0]||(l[0]=e=>_e(a)?a.value=e:null),rows:14,placeholder:""},null,8,["value"])]),re("div",ra,[re("div",fa,pe(e.$t("Config.Safe.index_28")),1),oe(u,{value:ue(t),"onUpdate:value":l[1]||(l[1]=e=>_e(t)?t.value=e:null),rows:14,placeholder:""},null,8,["value"])])]),re("div",pa,[oe(r,{type:"primary",onClick:i},{default:de(()=>[ce(pe(e.$t("Public.Btn.Save")),1)]),_:1})]),oe(f,{class:"mt-12px"},{default:de(()=>[re("li",null,[ce(pe(e.$t("Config.Safe.index_40"))+" ",1),re("a",ca," ["+pe(e.$t("Public.Btn.Help"))+"] ",1)]),re("li",null,pe(e.$t("Config.Safe.index_42")),1),re("li",null,pe(e.$t("Config.Safe.index_43")),1)]),_:1})]),_:1},8,["show"])}}}),xa={class:"h-400px"},ga={class:"flex items-center"},ma={class:"min-w-18px mr-8px"},va={class:"leading-18px"},ba={class:"w-400px mr-10px"},Ca={class:"text-primary font-bold"},Sa={class:"text-warning font-bold"},ya={class:"text-error"},ha=ee({__name:"ssl-lets",setup(e){const{t:a}=ae(),t=te(null),n=ne({domain:"",hash:"",auth_type:"http",support:[]}),l={domain:{required:!0,trigger:"blur",message:a("Config.Safe.Ssl.index_10")}},d=te(!1),u=te(!1),r=te(!1),f=()=>{g()},p=()=>{r.value=!1,u.value=!1,n.hash="",n.support=[]},c=()=>{window.open("/ssl_domain/domain")},_=async()=>{await(t.value?.validate());const{message:e}=await Me({domain:ge(n)});P(e)&&(e.task_id?x(e.task_id):j.success(e.result))},x=e=>{i({hideClose:!0,data:{task_id:e},component:Ne})},g=async()=>{if(n.domain)try{d.value=!0;const{message:e}=await o({domain:n.domain});P(e)&&(u.value=!0,r.value=!!e.hash,n.hash=e.hash,n.support=e.support)}finally{d.value=!1}};return(async()=>{const{message:e}=await We();P(e)&&(n.domain=e.domain)})(),(e,a)=>{const i=y,o=Pe,x=je,v=U,b=Ue,C=he,S=Be,h=$e,w=Le,$=m,k=s;return se(),ie("div",xa,[oe(o,{"show-icon":!1,class:"mb-20px"},{default:de(()=>[re("div",ga,[re("div",ma,[oe(i,{name:"base-info",size:17})]),re("span",va,pe(e.$t("Config.Safe.Ssl.index_1")),1)])]),_:1}),oe($,{ref_key:"formRef",ref:t,model:ue(n),rules:l,"label-width":"140"},{default:de(()=>[oe(C,{label:e.$t("Config.Safe.Ssl.index_2")},{default:de(()=>[oe(b,{value:ue(n).auth_type,"onUpdate:value":a[0]||(a[0]=e=>ue(n).auth_type=e)},{default:de(()=>[oe(v,null,{default:de(()=>[oe(x,{value:"http"},{default:de(()=>[ce(pe(e.$t("SSL.SiteSSL.index_17")),1)]),_:1}),oe(x,{value:"dns"},{default:de(()=>[ce(pe(e.$t("SSL.index_12")),1)]),_:1})]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),"dns"===ue(n).auth_type?(se(),fe(C,{key:0,label:e.$t("Config.Safe.Ssl.index_4"),prop:"domain"},{default:de(()=>[re("div",ba,[oe(S,{value:ue(n).domain,"onUpdate:value":a[1]||(a[1]=e=>ue(n).domain=e),loading:ue(d),"input-props":{spellcheck:!1},placeholder:e.$t("Config.Safe.Ssl.index_5"),clearable:"",onBlur:f,onInput:p},null,8,["value","loading","placeholder"])]),oe(h,{onClick:g},{default:de(()=>[ce(pe(e.$t("Config.Safe.Ssl.index_12")),1)]),_:1})]),_:1},8,["label"])):xe("",!0),"http"===ue(n).auth_type?(se(),fe(C,{key:1,label:e.$t("Config.Safe.Ssl.index_4")},{default:de(()=>[oe(S,{class:"w-400px!",value:ue(n).domain,"onUpdate:value":a[2]||(a[2]=e=>ue(n).domain=e),placeholder:e.$t("Config.Safe.Ssl.index_5")},null,8,["value","placeholder"])]),_:1},8,["label"])):xe("",!0),ue(u)&&"dns"===ue(n).auth_type?(se(),fe(C,{key:2,label:" "},{default:de(()=>[ue(r)?(se(),fe(o,{key:0,type:"success",class:"min-w-500px"},{default:de(()=>[re("span",Ca,pe(e.$t("Config.Safe.Ssl.index_6",[ue(n).domain])),1)]),_:1})):(se(),fe(o,{key:1,type:"warning",class:"min-w-500px"},{default:de(()=>[oe(w,{class:"items-center"},{default:de(()=>[re("span",Sa,pe(e.$t("Config.Safe.Ssl.index_7",[ue(n).domain])),1),oe(h,{type:"primary",ghost:"",size:"small",onClick:c},{default:de(()=>[ce(pe(e.$t("Config.Safe.Ssl.index_8")),1)]),_:1})]),_:1})]),_:1}))]),_:1})):xe("",!0),oe(C,{label:" "},{default:de(()=>[oe(h,{type:"primary",disabled:!ue(r)&&"dns"===ue(n).auth_type,onClick:_},{default:de(()=>[ce(pe(e.$t("Config.Safe.Ssl.index_9")),1)]),_:1},8,["disabled"])]),_:1})]),_:1},8,["model"]),"http"===ue(n).auth_type?(se(),fe(k,{key:0},{default:de(()=>[re("li",ya,pe(e.$t("SSL.SiteSSL.index_15")),1),re("li",null,pe(e.$t("Site.Cert.index_21")),1),re("li",null,pe(e.$t("Site.Cert.index_23")),1),re("li",null,pe(e.$t("Site.Cert.index_24")),1)]),_:1})):xe("",!0)])}}}),wa={class:"p-16px"},$a=ee({__name:"ssl",setup(e){const a=te("custom"),t=[{key:"custom",label:"Custom SSL",component:_a},{key:"lets",label:"Lets Encrypt",component:ha}];return(e,n)=>{const l=Ve;return se(),ie("div",wa,[oe(l,{value:ue(a),"onUpdate:value":n[0]||(n[0]=e=>_e(a)?a.value=e:null),options:t},null,8,["value"])])}}}),ka={class:"bt-link",href:"https://forum.aapanel.com/d/15210-aapanel-enable-panel-ssl-use-self-signed-certificate-browser-add-secure",target:"_blank"},Pa=ee({__name:"index",setup(e){const{t:a}=ae(),n=e=>{e?l():s()},l=()=>{i({title:a("Config.Safe.index_11"),width:600,footer:!0,component:Fe})},s=()=>{i({title:a("Config.Safe.index_12"),width:400,footer:!0,confirmType:"error",component:na})},o=()=>{i({title:a("Config.Safe.index_13"),width:740,component:$a})};return(e,a)=>{const l=we,i=$e,s=t;return se(),fe(s,{label:e.$t("Config.Safe.index_8")},{content:de(()=>[oe(l,{value:ue(Te).panelSSL,"onUpdate:value":n},null,8,["value"]),oe(i,{class:"ml-12px h-22px px-5px",size:"small",onClick:o},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_9")),1),re("a",ka,pe(e.$t("Public.Btn.Help")),1)]),_:1},8,["label"])}}}),Ua={class:"p-20px"},ja={class:"w-280px"},Ba={class:"w-280px"},La={class:"text-error"},Ra=ee({__name:"config",setup(e){const{t:a}=ae(),t=te(null),n=ne({open:"True",basic_user:"",basic_pwd:""}),l={basic_user:{trigger:["blur","input"],validator:()=>"True"!==n.open||""!==n.basic_user.trim()||new Error(a("Config.Safe.index_56"))},basic_pwd:{trigger:["blur","input"],validator:()=>"True"!==n.open||""!==n.basic_pwd.trim()||new Error(a("Config.Safe.index_58"))}},i=async()=>{await(t.value?.validate()),await B(ge(n)),L()};return(e,a)=>{const o=we,d=he,u=Be,r=$e,f=m,p=s;return se(),ie("div",Ua,[oe(f,{ref_key:"formRef",ref:t,model:ue(n),rules:l},{default:de(()=>[oe(d,{label:e.$t("Config.Safe.index_54")},{default:de(()=>[oe(o,{value:ue(n).open,"onUpdate:value":a[0]||(a[0]=e=>ue(n).open=e),"checked-value":"True","unchecked-value":"False"},null,8,["value"])]),_:1},8,["label"]),oe(d,{label:e.$t("Config.Safe.index_55"),path:"basic_user"},{default:de(()=>[re("div",ja,[oe(u,{value:ue(n).basic_user,"onUpdate:value":a[1]||(a[1]=e=>ue(n).basic_user=e),placeholder:e.$t("Config.Safe.index_56")},null,8,["value","placeholder"])])]),_:1},8,["label"]),oe(d,{label:e.$t("Config.Safe.index_57"),path:"basic_pwd"},{default:de(()=>[re("div",Ba,[oe(u,{value:ue(n).basic_pwd,"onUpdate:value":a[2]||(a[2]=e=>ue(n).basic_pwd=e),placeholder:e.$t("Config.Safe.index_58")},null,8,["value","placeholder"])])]),_:1},8,["label"]),oe(d,{label:" ","show-feedback":!1},{default:de(()=>[oe(r,{type:"primary",onClick:i},{default:de(()=>[ce(pe(e.$t("Public.Btn.Save")),1)]),_:1})]),_:1})]),_:1},8,["model"]),oe(p,{class:"mt-20px pl-12px"},{default:de(()=>[re("li",La,pe(e.$t("Config.Safe.index_59")),1),re("li",null,pe(e.$t("Config.Safe.index_48")),1),re("li",null,pe(e.$t("Config.Safe.index_49")),1),re("li",null,pe(e.$t("Config.Safe.index_50")),1),re("li",null,pe(e.$t("Config.Safe.index_51")),1)]),_:1})])}}}),za={class:"p-20px"},Ea={class:"text-error"},Ta={class:"flex items-center justify-between"},Ia={class:"bt-link",href:"https://www.bt.cn/bbs/thread-34374-1-1.html",target:"_blank"},Ha=ee({__name:"confirm",setup(e,{expose:a}){const{t:t}=ae(),n=te();return a({onConfirm:async()=>{await n.value.validate(),i({title:t("Config.Safe.index_53"),width:500,component:Ra})}}),(e,a)=>{const t=Ze,l=Ie,i=He;return se(),ie("div",za,[oe(t,{class:"mb-20px"},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_47")),1)]),_:1}),oe(l,{class:"mb-20px"},{default:de(()=>[re("li",Ea,pe(e.$t("Config.Safe.index_19")),1),re("li",null,pe(e.$t("Config.Safe.index_48")),1),re("li",null,pe(e.$t("Config.Safe.index_49")),1),re("li",null,pe(e.$t("Config.Safe.index_50")),1),re("li",null,pe(e.$t("Config.Safe.index_51")),1)]),_:1}),re("div",Ta,[oe(i,{ref_key:"riskRef",ref:n},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_29")),1)]),_:1},512),re("a",Ia,pe(e.$t("Config.Safe.index_52")),1)])])}}}),Da={class:"bt-link",href:"https://www.bt.cn/bbs/thread-34374-1-1.html",target:"_blank"},Aa=ee({__name:"index",setup(e){const{t:a}=ae(),n=async e=>{e?i({title:a("Config.Safe.index_46"),width:650,footer:!0,component:Ha}):(await B({open:"False",basic_user:"",basic_pwd:""}),L())};return(e,a)=>{const l=we,i=t;return se(),fe(i,{label:e.$t("Config.Safe.index_44")},{content:de(()=>[oe(l,{value:ue(Te).basicAuth,"onUpdate:value":n},null,8,["value"])]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_45")),1),re("a",Da,pe(e.$t("Public.Btn.Help")),1)]),_:1},8,["label"])}}}),Fa={class:"p-20px"},Va={class:"mb-20px text-20px text-center text-[var(--setting-security-google-login-bind-title)]"},Ka={class:"px-36px"},Ma={class:"mb-10px text-16px text-[var(--setting-security-google-login-bind-text)]"},Na={class:"mb-20px px-24px py-16px bg-[var(--setting-security-google-login-key-bg)] rounded-4px leading-24px text-14px text-[var(--setting-security-google-login-key-text)] font-500"},Wa={class:"text-[var(--setting-security-google-login-bind-text)]"},Za={class:"text-[var(--setting-security-google-login-bind-text)]"},qa={class:"mb-20px text-16px text-[var(--setting-security-google-login-bind-text)]"},Oa={class:"bt-link",href:"",target:"_blank"},Xa={class:"text-error"},Ya=ee({__name:"config",setup(e){const a=ne({key:"--",username:"--"}),t=te(""),{loading:n,setLoading:i}=l();return(async()=>{const{message:e}=await z();P(e)&&(a.key=e.key,a.username=e.username)})(),(async()=>{try{i(!0);const{message:e}=await E({act:1});P(e)&&(t.value=e.result)}finally{i(!1)}})(),(e,l)=>{const i=R,o=b,d=s;return se(),ie("div",Fa,[re("div",Va,pe(e.$t("Config.Safe.index_70")),1),re("div",Ka,[re("div",Ma,pe(e.$t("Config.Safe.index_71")),1),re("div",Na,[re("div",null,[ce(pe(e.$t("Config.Safe.index_72"))+" ",1),re("span",Wa,pe(ue(a).username),1)]),re("div",null,[ce(pe(e.$t("Config.Safe.index_73"))+" ",1),re("span",Za,pe(ue(a).key),1)]),re("div",null,[ce(pe(e.$t("Config.Safe.index_74"))+" ",1),l[0]||(l[0]=re("span",{class:"text-[var(--setting-security-google-login-bind-text)]"},"Time based",-1))])]),re("div",qa,pe(e.$t("Config.Safe.index_75")),1),oe(o,{class:"flex justify-center h-150px",show:ue(n)},{default:de(()=>[me(oe(i,{value:ue(t),size:150,padding:0},null,8,["value"]),[[ve,ue(t)]])]),_:1},8,["show"]),oe(d,null,{default:de(()=>[re("li",null,[ce(pe(e.$t("Config.Safe.index_76"))+" ",1),re("a",Oa,pe(e.$t("Config.Safe.index_77")),1)]),re("li",Xa,pe(e.$t("Config.Safe.index_78")),1)]),_:1})])])}}}),Ga=T(Ya,[["__scopeId","data-v-86cab381"]]),Ja={class:"p-20px"},Qa={class:"text-error"},et={class:"text-error"},at={class:"flex items-center justify-between"},tt={class:"bt-link",href:"https://www.aapanel.com/forum/d/357-how-to-use-google-authenticator-in-the-aapanel",target:"_blank"},nt=ee({__name:"confirm",setup(e,{expose:a}){const{t:t}=ae(),n=te();return a({onConfirm:async()=>{await n.value.validate();const{message:e}=await I({act:1});Te.value.dynamicPwd=!0,i({title:t("Config.Safe.index_62"),width:600,component:Ga}),P(e)&&j.success(e.result)}}),(e,a)=>{const t=Ze,l=Ie,i=He;return se(),ie("div",Ja,[oe(t,{class:"mb-20px"},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_47")),1)]),_:1}),oe(l,{class:"mb-20px"},{default:de(()=>[re("li",Qa,pe(e.$t("Config.Safe.index_19")),1),re("li",et,pe(e.$t("Config.Safe.index_69")),1),re("li",null,pe(e.$t("Config.Safe.index_66")),1),re("li",null,pe(e.$t("Config.Safe.index_67")),1)]),_:1}),re("div",at,[oe(i,{ref_key:"riskRef",ref:n},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_68")),1)]),_:1},512),re("a",tt,pe(e.$t("Config.Safe.index_168")),1)])])}}}),lt={class:"bt-link",href:"https://www.aapanel.com/forum/d/357-how-to-use-google-authenticator-in-the-aapanel",target:"_blank"},it=ee({__name:"index",setup(e){const{t:a}=ae(),n=async e=>{e?l():(await I({act:0},!0),Te.value.dynamicPwd=!1)},l=()=>{Te.value.dynamicPwd?i({title:a("Config.Safe.index_62"),width:600,component:Ga}):i({title:a("Config.Safe.index_63"),width:670,footer:!0,component:nt})};return(e,a)=>{const i=we,s=$e,o=t;return se(),fe(o,{label:e.$t("Config.Safe.index_60")},{content:de(()=>[oe(i,{value:ue(Te).dynamicPwd,"onUpdate:value":n},null,8,["value"]),oe(s,{class:"ml-12px h-22px px-5px",size:"small",onClick:l},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_61")),1),re("a",lt,pe(e.$t("Public.Btn.Help")),1)]),_:1},8,["label"])}}}),st={class:"text-error"},ot=ee({__name:"index",setup(e){const{t:a}=ae(),n=async e=>{d({title:a("Config.Safe.index_82",[a(e?"Config.Safe.index_83":"Config.Safe.index_84")]),content:()=>e?oe(be,{tag:"div",scope:"global",keypath:"Config.Safe.index_85"},{tips_:()=>oe("span",{class:"text-error"},[a("Config.Safe.index_86")])}):oe(Ce,null,[a("Config.Safe.index_87")]),onConfirm:async()=>{await H(),Te.value.pwdComplexity=e}})};return(e,a)=>{const l=we,i=t;return se(),fe(i,{label:e.$t("Config.Safe.index_79")},{content:de(()=>[oe(l,{value:ue(Te).pwdComplexity,"onUpdate:value":n},null,8,["value"])]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_80")),1),re("span",st,pe(e.$t("Config.Safe.index_81")),1)]),_:1},8,["label"])}}}),dt={class:"w-260px"},ut={class:"text-error"},rt=ee({__name:"index",setup(e){const a=async()=>{await D(De()),L()};return(e,n)=>{const l=Be,i=$e,s=t;return se(),fe(s,{label:e.$t("Config.Safe.index_88")},{content:de(()=>[re("div",dt,[oe(l,{value:ue(Te).domain,"onUpdate:value":n[0]||(n[0]=e=>ue(Te).domain=e),placeholder:""},null,8,["value"])]),oe(i,{class:"ml-12px",type:"primary",onClick:a},{default:de(()=>[ce(pe(e.$t("Public.Btn.Save")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_89")),1),re("span",ut,pe(e.$t("Config.Safe.index_90")),1)]),_:1},8,["label"])}}}),ft={class:"w-260px"},pt={class:"text-error"},ct=ee({__name:"index",setup(e){const{t:a}=ae(),n=async()=>{let e=/^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$/,t=Te.value.limitIp.split(",").join("-").split("-"),n=!0;if(t.length)for(let a=0;a0)return j.error(a("Config.Safe.index_95"));await A(De()),L()};return(e,a)=>{const l=Be,i=$e,s=t;return se(),fe(s,{label:e.$t("Config.Safe.index_91")},{content:de(()=>[re("div",ft,[oe(l,{value:ue(Te).limitIp,"onUpdate:value":a[0]||(a[0]=e=>ue(Te).limitIp=e),placeholder:e.$t("Config.Safe.index_92")},null,8,["value","placeholder"])]),oe(i,{class:"ml-12px",type:"primary",onClick:n},{default:de(()=>[ce(pe(e.$t("Public.Btn.Save")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_93")),1),re("span",pt,pe(e.$t("Config.Safe.index_94")),1)]),_:1},8,["label"])}}}),_t={class:"p-20px"},xt={class:"text-error"},gt={class:"text-error"},mt={class:"w-210px"},vt=ee({__name:"set",setup(e,{expose:a}){const{t:t}=ae(),n=te(),l=te(null),i=ne({port:F(Te.value.port)}),s={port:{trigger:["blur","input"],validator:()=>!!K(i.port)||new Error(t("Config.Safe.index_104"))}};return a({onConfirm:async()=>{await n.value.validate(),await(l.value?.validate());const e=De();e.port=`${i.port}`,await V(e),L(`${location.protocol}//${location.hostname}:${i.port}${location.pathname}`)}}),(e,a)=>{const t=Ie,o=Re,d=he,u=m,r=He;return se(),ie("div",_t,[oe(t,{class:"mb-20px"},{default:de(()=>[re("li",xt,pe(e.$t("Config.Safe.index_100")),1),re("li",gt,pe(e.$t("Config.Safe.index_101")),1)]),_:1}),oe(u,{ref_key:"formRef",ref:l,model:ue(i),rules:s},{default:de(()=>[oe(d,{label:e.$t("Config.Safe.index_96"),path:"port","label-width":"auto","label-style":{paddingLeft:"24px"}},{default:de(()=>[re("div",mt,[oe(o,{value:ue(i).port,"onUpdate:value":a[0]||(a[0]=e=>ue(i).port=e),min:1,max:65535,"show-button":!1,placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),oe(r,{ref_key:"riskRef",ref:n},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_102"))+" ",1),re("a",{class:"bt-link",href:"https://www.aapanel.com/forum/d/599-how-to-release-the-aapanel-port",target:"_blank",onClick:Se(()=>!1,["stop"])},pe(e.$t("Config.Safe.index_103")),1)]),_:1},512)])}}}),bt={class:"w-260px"},Ct={class:"text-error"},St=ee({__name:"index",setup(e){const{t:a}=ae(),n=async()=>{i({title:a("Config.Safe.index_99"),width:400,footer:!0,component:vt})};return(e,a)=>{const l=Be,i=$e,s=t;return se(),fe(s,{label:e.$t("Config.Safe.index_96")},{content:de(()=>[re("div",bt,[oe(l,{value:ue(Te).port,disabled:!0,placeholder:""},null,8,["value"])]),oe(i,{class:"ml-12px",type:"primary",onClick:n},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_97")),1),re("span",Ct,pe(e.$t("Config.Safe.index_98")),1)]),_:1},8,["label"])}}}),yt={class:"px-20px pt-28px pb-8px"},ht={class:"w-240px"},wt=ee({__name:"set",setup(e,{expose:a}){const{t:t}=ae(),n=te(null),l=ne({adminPath:Te.value.adminPath}),i={adminPath:{trigger:["blur","input"],validator:()=>""!==l.adminPath.trim()||new Error(t("Config.Safe.index_108"))}};return a({onConfirm:async()=>{await(n.value?.validate()),await M({admin_path:N(l.adminPath)}),Te.value.adminPath=l.adminPath}}),(e,a)=>{const t=Be,s=he,o=m;return se(),ie("div",yt,[oe(o,{ref_key:"formRef",ref:n,model:ue(l),rules:i},{default:de(()=>[oe(s,{label:e.$t("Config.Safe.index_105"),path:"adminPath"},{default:de(()=>[re("div",ht,[oe(t,{value:ue(l).adminPath,"onUpdate:value":a[0]||(a[0]=e=>ue(l).adminPath=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),$t={class:"w-260px"},kt=ee({__name:"index",setup(e){const{t:a}=ae(),n=async()=>{i({title:a("Config.Safe.index_107"),width:440,footer:!0,component:wt})};return(e,a)=>{const l=Be,i=$e,s=t;return se(),fe(s,{label:e.$t("Config.Safe.index_105")},{content:de(()=>[re("div",$t,[oe(l,{value:ue(Te).adminPath,disabled:!0,placeholder:""},null,8,["value"])]),oe(i,{class:"ml-12px",type:"primary",onClick:n},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_106")),1)]),_:1},8,["label"])}}}),Pt={class:"px-20px py-24px"},Ut={class:"w-200px"},jt={class:"text-error"},Bt=ee({__name:"set",setup(e,{expose:a}){const{t:t}=ae(),n=te(null),l=ne({status_code:Te.value.statusCode}),i={},o=[{value:403,label:t("Config.Safe.index_111")},{value:404,label:t("Config.Safe.index_112")},{value:416,label:t("Config.Safe.index_113")},{value:408,label:t("Config.Safe.index_114")},{value:400,label:t("Config.Safe.index_115")},{value:401,label:t("Config.Safe.index_116")}];return a({onConfirm:async()=>{await(n.value?.validate()),await W({status_code:l.status_code}),Te.value.statusCode=l.status_code}}),(e,a)=>{const t=ze,d=he,u=m,r=s;return se(),ie("div",Pt,[oe(u,{ref_key:"formRef",ref:n,model:ue(l),rules:i},{default:de(()=>[oe(d,{label:e.$t("Config.Safe.index_118"),path:"adminPath"},{default:de(()=>[re("div",Ut,[oe(t,{value:ue(l).status_code,"onUpdate:value":a[0]||(a[0]=e=>ue(l).status_code=e),options:o},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),oe(r,null,{default:de(()=>[re("li",jt,pe(e.$t("Config.Safe.index_119")),1)]),_:1})])}}}),Lt={class:"w-260px"},Rt=ee({__name:"index",setup(e){const{t:a}=ae(),n=new Map([[403,a("Config.Safe.index_111")],[404,a("Config.Safe.index_112")],[416,a("Config.Safe.index_113")],[408,a("Config.Safe.index_114")],[400,a("Config.Safe.index_115")],[401,a("Config.Safe.index_116")]]),l=ye(()=>n.get(Te.value.statusCode)||"--"),s=async()=>{i({title:a("Config.Safe.index_117"),width:420,footer:!0,component:Bt})};return(e,a)=>{const n=Be,i=$e,o=t;return se(),fe(o,{label:e.$t("Config.Safe.index_109")},{content:de(()=>[re("div",Lt,[oe(n,{value:ue(l),disabled:!0,placeholder:""},null,8,["value"])]),oe(i,{class:"ml-12px",type:"primary",onClick:s},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_110")),1)]),_:1},8,["label"])}}}),zt={class:"px-20px py-24px"},Et={class:"w-120px"},Tt={class:"text-error"},It=ee({__name:"set",setup(e,{expose:a}){const{t:t}=ae(),n=te(null),l=ne({day:Te.value.pwdSetDay}),i={day:{trigger:["blur","input"],validator:()=>l.day<0?new Error(t("Config.Safe.index_128")):!(!l.day&&0!==l.day)||new Error(t("Config.Safe.index_129"))}};return a({onConfirm:async()=>{await(n.value?.validate()),await Z({expire:l.day}),Ae()}}),(e,a)=>{const t=Re,o=he,d=m,u=s;return se(),ie("div",zt,[oe(d,{ref_key:"formRef",ref:n,model:ue(l),rules:i},{default:de(()=>[oe(o,{label:e.$t("Config.Safe.index_120"),path:"day"},{default:de(()=>[re("div",Et,[oe(t,{value:ue(l).day,"onUpdate:value":a[0]||(a[0]=e=>ue(l).day=e),min:0,"show-button":!1,placeholder:""},{suffix:de(()=>[ce(pe(e.$t("Public.Unit.Day",ue(l).day)),1)]),_:1},8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),oe(u,{class:"mt-4px"},{default:de(()=>[re("li",Tt,pe(e.$t("Config.Safe.index_126")),1),re("li",null,pe(e.$t("Config.Safe.index_127")),1)]),_:1})])}}}),Ht={class:"w-260px"},Dt=ee({__name:"index",setup(e){const{t:a}=ae(),n=ye(()=>{const{pwdSetDay:e,pwdExpireDay:t,pwdExpireTime:n}=Te.value;return 0===e?a("Config.Safe.index_122"):a("Config.Safe.index_123",[q(n),t])}),l=async()=>{i({title:a("Config.Safe.index_124"),width:360,footer:!0,component:It})};return(e,a)=>{const i=Be,s=$e,o=t;return se(),fe(o,{label:e.$t("Config.Safe.index_120")},{content:de(()=>[re("div",Ht,[oe(i,{value:ue(n),disabled:!0,placeholder:""},null,8,["value"])]),oe(s,{class:"ml-12px",type:"primary",onClick:l},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_121")),1)]),_:1},8,["label"])}}}),At={class:"p-20px"},Ft={class:"mb-12px"},Vt={class:"mb-12px"},Kt={class:"mb-20px"},Mt=ee({__name:"set-add-result",props:{address:{default:""}},setup(e){const a=e,t=()=>{u(a.address)};return(e,a)=>{const n=Ke,l=$e,i=s;return se(),ie("div",At,[re("div",Ft,pe(e.$t("Config.Safe.index_147")),1),re("div",Vt,[oe(n,{value:e.address,readonly:"",rows:2},null,8,["value"])]),re("div",Kt,[oe(l,{type:"primary",onClick:t},{default:de(()=>[ce(pe(e.$t("Public.Btn.Copy")),1)]),_:1})]),oe(i,null,{default:de(()=>[re("li",null,pe(e.$t("Config.Safe.index_148")),1),re("li",null,pe(e.$t("Config.Safe.index_149")),1),re("li",null,pe(e.$t("Config.Safe.index_150")),1)]),_:1})])}}}),Nt={class:"p-20px pt-28px pb-8px"},Wt={class:"flex mb-24px"},Zt={class:"min-w-32px"},qt={class:"flex-1 ml-16px"},Ot={class:"leading-24px text-error text-14px"},Xt={class:"w-160px"},Yt=ee({__name:"set-add",emits:["refresh"],setup(e,{expose:a,emit:t}){const n=t,{t:l}=ae(),s=S(),o=te(null),d=ne({type:3,day:1}),u={day:{trigger:["blur","input"],validator:()=>0!==d.type||!(d.day<=0||d.day%1!=0)||new Error(l("Config.Safe.index_145"))}},r=e=>e%1==0,f=(e="")=>{const a=`${window.location.protocol}//${window.location.host}/login?tmp_token=${e}`;i({title:l("Config.Safe.index_146"),width:580,data:{address:a},component:Mt})};return a({onConfirm:async()=>{await(o.value?.validate());const{message:e}=await O({expire_time:60*(0===d.type?24*d.day:d.type)*60+Math.floor(Date.now()/1e3)});P(e)&&(f(e.token),j.success(e.msg),n("refresh"))}}),(e,a)=>{const t=y,n=Ee,l=Ue,i=he,f=Re,p=m;return se(),ie("div",Nt,[re("div",Wt,[re("div",Zt,[oe(t,{name:"base-warning",size:"32",color:ue(s).warningColor},null,8,["color"])]),re("div",qt,[re("div",Ot,[re("div",null,pe(e.$t("Config.Safe.index_140")),1),re("div",null,pe(e.$t("Config.Safe.index_141")),1)])])]),oe(p,{ref_key:"formRef",ref:o,model:ue(d),rules:u,"label-width":"140"},{default:de(()=>[oe(i,{label:e.$t("Config.Safe.index_142")},{default:de(()=>[oe(l,{value:ue(d).type,"onUpdate:value":a[0]||(a[0]=e=>ue(d).type=e)},{default:de(()=>[oe(n,{value:3},{default:de(()=>[ce("3 "+pe(e.$t("Public.Unit.Hour",3)),1)]),_:1}),oe(n,{value:6},{default:de(()=>[ce("6 "+pe(e.$t("Public.Unit.Hour",6)),1)]),_:1}),oe(n,{value:9},{default:de(()=>[ce("9 "+pe(e.$t("Public.Unit.Hour",9)),1)]),_:1}),oe(n,{value:12},{default:de(()=>[ce("12 "+pe(e.$t("Public.Unit.Hour",12)),1)]),_:1}),oe(n,{value:0},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_143")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),me(oe(i,{label:e.$t("Config.Safe.index_144"),path:"day"},{default:de(()=>[re("div",Xt,[oe(f,{value:ue(d).day,"onUpdate:value":a[1]||(a[1]=e=>ue(d).day=e),min:1,"show-button":!1,validator:r},{suffix:de(()=>[ce(pe(e.$t("Public.Unit.Day",ue(d).day)),1)]),_:1},8,["value"])])]),_:1},8,["label"]),[[ve,0===ue(d).type]])]),_:1},8,["model"])])}}}),Gt={class:"p-20px h-500px"},Jt=ee({__name:"set-log",props:{id:{default:0}},setup(e){const a=e,{t:t}=ae(),{table:n,columns:l,setLoading:i}=r([{key:"type",title:t("Config.Safe.index_151"),width:120,ellipsis:{tooltip:!0}},{key:"addtime",title:t("Config.Safe.index_152"),width:140},{key:"log",title:t("Config.Safe.index_153"),ellipsis:{tooltip:!0}}]),s=async()=>{try{i(!0);const{message:e}=await X({id:a.id});n.data=C(e)?e:[]}finally{i(!1)}};return s(),(e,a)=>{const t=$e,i=f,o=qe;return se(),ie("div",Gt,[oe(o,null,{toolsLeft:de(()=>[oe(t,{onClick:s},{default:de(()=>[ce(pe(e.$t("Public.Btn.Refresh")),1)]),_:1})]),table:de(()=>[oe(i,{"max-height":360,loading:ue(n).loading,data:ue(n).data,columns:ue(l)},null,8,["loading","data","columns"])]),_:1})])}}}),Qt={class:"h-500px p-20px"},en=ee({__name:"set",setup(e){const{t:a}=ae(),t=()=>{i({title:a("Config.Safe.index_146"),width:580,footer:!0,component:Yt,data:{onRefresh:()=>{x()}}})},{table:n,columns:l,setLoading:s}=r([{key:"login_addr",title:a("Config.Safe.index_154"),ellipsis:{tooltip:!0},render:e=>e.login_addr||a("Config.Safe.index_155")},{key:"state",title:a("Config.Safe.index_156"),width:100,render:e=>-1===e.state?oe("span",{class:"text-error"},[a("Config.Safe.index_166")]):1===e.state?a("Config.Safe.index_157"):oe("span",{class:"text-primary"},[a("Config.Safe.index_155")])},{key:"login_time",title:a("Config.Safe.index_158"),width:140,render:e=>0===e.login_time?a("Config.Safe.index_155"):q(e.login_time)},{key:"expire",title:a("Config.Safe.index_159"),width:140,render:e=>q(e.expire)},p({width:160,options:e=>[{label:a("Config.Safe.index_160"),type:"error",show:e.online_state,onClick:()=>{u(e)}},{label:a("Config.Safe.index_161"),show:1===e.state||-1===e.state,onClick:()=>{o(e)}},{label:a("Public.Btn.Del"),onClick:()=>{c(e)}}]})]),o=e=>{i({title:a("Config.Safe.index_161"),width:700,data:{id:e.id},component:Jt})},u=e=>{d({title:a("Config.Safe.index_162",[e.login_addr]),content:a("Config.Safe.index_163",[e.login_addr]),onConfirm:async()=>{await Y({id:e.id}),x()}})},c=e=>{d({title:a("Config.Safe.index_164"),content:a("Config.Safe.index_165"),onConfirm:async()=>{await G({id:e.id}),x()}})},_=ne({p:1,rows:10}),x=async()=>{try{s(!0);const{message:e}=await J(ge(_));P(e)&&(n.data=C(e.data)?e.data:[],n.total=Q(e.page))}finally{s(!1)}};return x(),(e,a)=>{const i=$e,s=f,o=Oe,d=qe;return se(),ie("div",Qt,[oe(d,null,{toolsLeft:de(()=>[oe(i,{type:"primary",onClick:t},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_146")),1)]),_:1})]),table:de(()=>[oe(s,{"max-height":340,loading:ue(n).loading,data:ue(n).data,columns:ue(l)},null,8,["loading","data","columns"])]),pageRight:de(()=>[oe(o,{page:ue(_).p,"onUpdate:page":a[0]||(a[0]=e=>ue(_).p=e),"page-size":ue(_).rows,"onUpdate:pageSize":a[1]||(a[1]=e=>ue(_).rows=e),"item-count":ue(n).total,onRefresh:x},null,8,["page","page-size","item-count"])]),_:1})])}}}),an=ee({__name:"index",setup(e){const{t:a}=ae(),n=()=>{i({title:a("Config.Safe.index_139"),width:740,component:en})};return(e,a)=>{const l=$e,i=t;return se(),fe(i,{label:e.$t("Config.Safe.index_137")},{content:de(()=>[oe(l,{type:"primary",onClick:n},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_138")),1)]),_:1},8,["label"])}}});e("S",T(ee({__name:"config",setup:e=>(e,a)=>(se(),ie("div",null,[oe(n,null,{default:de(()=>[ce(pe(e.$t("Config.Safe.index_1")),1)]),_:1}),oe(Je),oe(Pa),oe(Aa),oe(it),oe(ot),oe(rt),oe(ct),oe(St),oe(kt),oe(Rt),oe(Dt),oe(an)]))}),[["__scopeId","data-v-919bcd3c"]]))}}}); +System.register(["./index-legacy106.js?v=1762424784323","./public-legacy.js?v=1762424784323","./alarm-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy11.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./index-legacy105.js?v=1762424784323","./open-legacy.js?v=1762424784323","./index-legacy107.js?v=1762424784323","./index-legacy99.js?v=1762424784323","./ssl-lets-progress-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy9.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323"],function(e,a){"use strict";var t,n,l,i,s,o,d,u,r,f,p,c,_,x,g,m,v,b,C,S,y,h,w,$,k,P,U,j,B,L,R,z,E,T,I,H,D,A,F,V,K,M,N,W,Z,q,O,X,Y,G,J,Q,ee,ae,te,ne,le,ie,se,oe,de,ue,re,fe,pe,ce,_e,xe,ge,me,ve,be,Ce,Se,ye,he,we,$e,ke,Pe,Ue,je,Be,Le,Re,ze,Ee,Te,Ie,He,De,Ae,Fe,Ve,Ke,Me,Ne,We,Ze,qe,Oe;return{setters:[e=>{t=e._,n=e.a},e=>{l=e.d,i=e.u,s=e._,o=e.j,d=e.a,u=e.i,r=e.c,f=e.h,p=e.f},e=>{c=e.a,_=e.g,x=e.s,g=e.b},e=>{m=e._},e=>{v=e._},e=>{b=e.S,C=e.w,S=e.am,y=e._,h=e.aR,w=e.aS,$=e.aT,k=e.aU,P=e.d,U=e.aV,j=e.m,B=e.aW,L=e.O,R=e.aX,z=e.aY,E=e.aZ,T=e.p,I=e.a_,H=e.a$,D=e.b0,A=e.b1,F=e.k,V=e.b2,K=e.b3,M=e.b4,N=e.N,W=e.b5,Z=e.b6,q=e.a8,O=e.b7,X=e.b8,Y=e.b9,G=e.ba,J=e.bb,Q=e.x},e=>{ee=e.k,ae=e.P,te=e.r,ne=e.e,le=e.x,ie=e.R,se=e.V,oe=e.W,de=e.a3,ue=e.U,re=e.S,fe=e.a2,pe=e.a4,ce=e.j,_e=e.ak,xe=e.an,ge=e.N,me=e.l,ve=e.v,be=e.ab,Ce=e.F,Se=e.au,ye=e.c},e=>{he=e.dR,we=e.dj,$e=e.aC,ke=e._,Pe=e.dk,Ue=e.dT,je=e.dU,Be=e.au,Le=e.da,Re=e.df,ze=e.dV,Ee=e.dZ},e=>{Te=e.s,Ie=e._,He=e.f,De=e.h,Ae=e.c},e=>{Fe=e.P},e=>{Ve=e._},e=>{Ke=e._},e=>{Me=e.s,Ne=e.a,We=e.g},e=>{Ze=e._},e=>{qe=e._},e=>{Oe=e._}],execute:function(){var a=document.createElement("style");a.textContent=".bt-tips-ul[data-v-86cab381]{margin-top:24px;padding:24px 0;border-top:1px solid #ececec;font-size:14px}[data-v-919bcd3c] .n-input,[data-v-919bcd3c] .n-button,[data-v-919bcd3c] .n-select .n-base-selection{--n-height: 30px}[data-v-919bcd3c] .n-button.n-button--medium-type{min-width:52px}[data-v-919bcd3c] .n-switch{--n-height: max(20px, 16px)}\n/*$vite$:1*/",document.head.appendChild(a);const Xe={class:"p-20px pt-28px pb-8px"},Ye={class:"w-300px"},Ge=ee({__name:"set",props:{open:{type:Boolean,default:!1},taskList:{default:()=>[]}},emits:["refresh"],setup(e,{expose:a,emit:t}){const n=e,i=t,{t:s}=ae(),o=te(null),d=ne({status:!0,method:[]}),u={method:{trigger:["change"],validator:()=>0!==d.method.length||new Error(s("Config.Safe.index_7"))}},r=le([]),{loading:f,setLoading:p}=l();return(()=>{const{open:e,taskList:a}=n;a.length>0&&(d.status=e||a[0].status,d.method=a[0].sender)})(),(async()=>{try{p(!0);const{message:e}=await _();r.value=C(e)?e:[]}finally{p(!1)}})(),a({onConfirm:async()=>{await(o.value?.validate()),await c((()=>{const e=r.value.filter(e=>"panel_safe_push"===e.source)[0];return{template_id:e.id,task_data:{task_data:{tid:e.id,type:e.source,title:e.title,status:d.status,count:0,interval:600,project:"",help:600},sender:d.method,number_rule:{day_num:0,total:0},time_rule:{send_interval:0,time_range:[0,86399]}}}})()),i("refresh")}}),(e,a)=>{const t=we,n=he,l=v,i=m,s=b;return se(),ie("div",Xe,[oe(s,{show:ue(f)},{default:de(()=>[oe(i,{ref_key:"formRef",ref:o,model:ue(d),rules:u},{default:de(()=>[oe(n,{label:e.$t("Config.Safe.index_5")},{default:de(()=>[oe(t,{value:ue(d).status,"onUpdate:value":a[0]||(a[0]=e=>ue(d).status=e)},null,8,["value"])]),_:1},8,["label"]),oe(n,{label:e.$t("Config.Safe.index_6"),path:"method"},{default:de(()=>[re("div",Ye,[oe(l,{value:ue(d).method,"onUpdate:value":a[1]||(a[1]=e=>ue(d).method=e)},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])]),_:1},8,["show"])])}}}),Je=ee({__name:"index",setup(e){const{t:a}=ae(),n=te(!1),s=te([]),o=async e=>{e?d(!0):(await x({task_id:s.value[0].id,status:0}),n.value=!1,s.value[0].status=!1)},d=(e=!1)=>{i({title:a("Config.Safe.index_4"),width:480,footer:!0,confirmText:a("Public.Btn.Save"),data:{open:e,taskList:s.value,onRefresh:f},component:Ge})},{loading:u,setLoading:r}=l(),f=async()=>{try{r(!0);const{message:e}=await g();if(C(e)){const a=e.filter(e=>"panel_safe_push"===e.keyword);a&&a.length>0?(n.value=a[0].status,s.value=a):(n.value=!1,s.value=[])}}finally{r(!1)}};return f(),(e,a)=>{const l=we,i=$e,s=t;return se(),fe(s,{label:e.$t("Config.Safe.index_2")},{content:de(()=>[oe(l,{loading:ue(u),value:ue(n),"onUpdate:value":o},null,8,["loading","value"]),oe(i,{class:"ml-12px h-22px px-5px",size:"small",onClick:a[0]||(a[0]=e=>d())},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_3")),1)]),_:1},8,["label"])}}}),Qe={class:"flex p-20px"},ea={class:"min-w-32px"},aa={class:"flex-1 ml-10px text-14px leading-22px"},ta={class:"flex items-center min-h-30px mb-12px text-error"},na=ee({__name:"close",emits:["setConfirm"],setup(e,{expose:a,emit:t}){const n=t,{t:l}=ae(),i=S(),s=te(!1),o=()=>{d>0||n("setConfirm",{disabled:!s.value})};let d=5;return(()=>{n("setConfirm",{text:l("Config.Safe.index_16",[d]),disabled:!0});const e=setInterval(()=>{d--,n("setConfirm",{text:l("Config.Safe.index_16",[d])}),d<=0&&(clearInterval(e),n("setConfirm",{text:l("Config.Safe.index_17"),disabled:!s.value}))},1e3)})(),a({onConfirm:async()=>(await h(),await w(),setTimeout(()=>{{const e="http:"===location.protocol?"https":"http";window.location.href=`${e}://${window.location.host}${Te.value.adminPath}`}},1500),!1)}),(e,a)=>{const t=y,n=ke;return se(),ie("div",Qe,[re("div",ea,[oe(t,{name:"base-warning",color:ue(i).warningColor,size:"32"},null,8,["color"])]),re("div",aa,[re("div",ta,pe(e.$t("Config.Safe.index_14")),1),oe(n,{checked:ue(s),"onUpdate:checked":[a[0]||(a[0]=e=>_e(s)?s.value=e:null),o]},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_15")),1)]),_:1},8,["checked"])])])}}}),la={class:"flex flex-wrap py-2px text-primary text-12px"},ia={class:"mr-24px"},sa={class:"mr-24px"},oa={class:"flex gap-20px mt-16px"},da={class:"flex-1"},ua={class:"mb-8px"},ra={class:"flex-1"},fa={class:"mb-8px"},pa={class:"mt-10px"},ca={class:"bt-link",href:"http://www.bt.cn/bbs/thread-704-1-1.html",target:"_blank"},_a=ee({__name:"ssl-custom",setup(e){const a=te(""),t=te(""),n=ne({dns:[""],issuer:"--",notBefore:"--",notAfter:"--"}),i=async()=>{await $({privateKey:a.value,certPem:t.value},!0),u()},{loading:o,setLoading:d}=l(),u=async()=>{try{d(!0);const{message:e}=await k();P(e)&&(a.value=e.privateKey||"",t.value=e.certPem||"",n.dns=e.info.dns||[],n.issuer=e.info.issuer||"",n.notBefore=e.info.notBefore||"",n.notAfter=e.info.notAfter||"")}finally{d(!1)}};return u(),(e,l)=>{const d=Pe,u=Ke,r=$e,f=s,p=b;return se(),fe(p,{show:ue(o)},{default:de(()=>[oe(d,{type:"success","show-icon":!1},{default:de(()=>[re("div",la,[re("div",ia,[ce(pe(e.$t("Config.Safe.index_37")),1),re("b",null,pe(ue(n).dns.join(",")||"--"),1)]),re("div",sa,[ce(pe(e.$t("Config.Safe.index_38")),1),re("b",null,pe(ue(n).issuer),1)]),re("div",null,[ce(pe(e.$t("Config.Safe.index_39")),1),re("b",null,pe(ue(n).notAfter),1)])])]),_:1}),re("div",oa,[re("div",da,[re("div",ua,pe(e.$t("Config.Safe.index_27")),1),oe(u,{value:ue(a),"onUpdate:value":l[0]||(l[0]=e=>_e(a)?a.value=e:null),rows:14,placeholder:""},null,8,["value"])]),re("div",ra,[re("div",fa,pe(e.$t("Config.Safe.index_28")),1),oe(u,{value:ue(t),"onUpdate:value":l[1]||(l[1]=e=>_e(t)?t.value=e:null),rows:14,placeholder:""},null,8,["value"])])]),re("div",pa,[oe(r,{type:"primary",onClick:i},{default:de(()=>[ce(pe(e.$t("Public.Btn.Save")),1)]),_:1})]),oe(f,{class:"mt-12px"},{default:de(()=>[re("li",null,[ce(pe(e.$t("Config.Safe.index_40"))+" ",1),re("a",ca," ["+pe(e.$t("Public.Btn.Help"))+"] ",1)]),re("li",null,pe(e.$t("Config.Safe.index_42")),1),re("li",null,pe(e.$t("Config.Safe.index_43")),1)]),_:1})]),_:1},8,["show"])}}}),xa={class:"h-400px"},ga={class:"flex items-center"},ma={class:"min-w-18px mr-8px"},va={class:"leading-18px"},ba={class:"w-400px mr-10px"},Ca={class:"text-primary font-bold"},Sa={class:"text-warning font-bold"},ya={class:"text-error"},ha=ee({__name:"ssl-lets",setup(e){const{t:a}=ae(),t=te(null),n=ne({domain:"",hash:"",auth_type:"http",support:[]}),l={domain:{required:!0,trigger:"blur",message:a("Config.Safe.Ssl.index_10")}},d=te(!1),u=te(!1),r=te(!1),f=()=>{g()},p=()=>{r.value=!1,u.value=!1,n.hash="",n.support=[]},c=()=>{window.open("/ssl_domain/domain")},_=async()=>{await(t.value?.validate());const{message:e}=await Me({domain:ge(n)});P(e)&&(e.task_id?x(e.task_id):j.success(e.result))},x=e=>{i({hideClose:!0,data:{task_id:e},component:Ne})},g=async()=>{if(n.domain)try{d.value=!0;const{message:e}=await o({domain:n.domain});P(e)&&(u.value=!0,r.value=!!e.hash,n.hash=e.hash,n.support=e.support)}finally{d.value=!1}};return(async()=>{const{message:e}=await We();P(e)&&(n.domain=e.domain)})(),(e,a)=>{const i=y,o=Pe,x=je,v=U,b=Ue,C=he,S=Be,h=$e,w=Le,$=m,k=s;return se(),ie("div",xa,[oe(o,{"show-icon":!1,class:"mb-20px"},{default:de(()=>[re("div",ga,[re("div",ma,[oe(i,{name:"base-info",size:17})]),re("span",va,pe(e.$t("Config.Safe.Ssl.index_1")),1)])]),_:1}),oe($,{ref_key:"formRef",ref:t,model:ue(n),rules:l,"label-width":"140"},{default:de(()=>[oe(C,{label:e.$t("Config.Safe.Ssl.index_2")},{default:de(()=>[oe(b,{value:ue(n).auth_type,"onUpdate:value":a[0]||(a[0]=e=>ue(n).auth_type=e)},{default:de(()=>[oe(v,null,{default:de(()=>[oe(x,{value:"http"},{default:de(()=>[ce(pe(e.$t("SSL.SiteSSL.index_17")),1)]),_:1}),oe(x,{value:"dns"},{default:de(()=>[ce(pe(e.$t("SSL.index_12")),1)]),_:1})]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),"dns"===ue(n).auth_type?(se(),fe(C,{key:0,label:e.$t("Config.Safe.Ssl.index_4"),prop:"domain"},{default:de(()=>[re("div",ba,[oe(S,{value:ue(n).domain,"onUpdate:value":a[1]||(a[1]=e=>ue(n).domain=e),loading:ue(d),"input-props":{spellcheck:!1},placeholder:e.$t("Config.Safe.Ssl.index_5"),clearable:"",onBlur:f,onInput:p},null,8,["value","loading","placeholder"])]),oe(h,{onClick:g},{default:de(()=>[ce(pe(e.$t("Config.Safe.Ssl.index_12")),1)]),_:1})]),_:1},8,["label"])):xe("",!0),"http"===ue(n).auth_type?(se(),fe(C,{key:1,label:e.$t("Config.Safe.Ssl.index_4")},{default:de(()=>[oe(S,{class:"w-400px!",value:ue(n).domain,"onUpdate:value":a[2]||(a[2]=e=>ue(n).domain=e),placeholder:e.$t("Config.Safe.Ssl.index_5")},null,8,["value","placeholder"])]),_:1},8,["label"])):xe("",!0),ue(u)&&"dns"===ue(n).auth_type?(se(),fe(C,{key:2,label:" "},{default:de(()=>[ue(r)?(se(),fe(o,{key:0,type:"success",class:"min-w-500px"},{default:de(()=>[re("span",Ca,pe(e.$t("Config.Safe.Ssl.index_6",[ue(n).domain])),1)]),_:1})):(se(),fe(o,{key:1,type:"warning",class:"min-w-500px"},{default:de(()=>[oe(w,{class:"items-center"},{default:de(()=>[re("span",Sa,pe(e.$t("Config.Safe.Ssl.index_7",[ue(n).domain])),1),oe(h,{type:"primary",ghost:"",size:"small",onClick:c},{default:de(()=>[ce(pe(e.$t("Config.Safe.Ssl.index_8")),1)]),_:1})]),_:1})]),_:1}))]),_:1})):xe("",!0),oe(C,{label:" "},{default:de(()=>[oe(h,{type:"primary",disabled:!ue(r)&&"dns"===ue(n).auth_type,onClick:_},{default:de(()=>[ce(pe(e.$t("Config.Safe.Ssl.index_9")),1)]),_:1},8,["disabled"])]),_:1})]),_:1},8,["model"]),"http"===ue(n).auth_type?(se(),fe(k,{key:0},{default:de(()=>[re("li",ya,pe(e.$t("SSL.SiteSSL.index_15")),1),re("li",null,pe(e.$t("Site.Cert.index_21")),1),re("li",null,pe(e.$t("Site.Cert.index_23")),1),re("li",null,pe(e.$t("Site.Cert.index_24")),1)]),_:1})):xe("",!0)])}}}),wa={class:"p-16px"},$a=ee({__name:"ssl",setup(e){const a=te("custom"),t=[{key:"custom",label:"Custom SSL",component:_a},{key:"lets",label:"Lets Encrypt",component:ha}];return(e,n)=>{const l=Ve;return se(),ie("div",wa,[oe(l,{value:ue(a),"onUpdate:value":n[0]||(n[0]=e=>_e(a)?a.value=e:null),options:t},null,8,["value"])])}}}),ka={class:"bt-link",href:"https://forum.aapanel.com/d/15210-aapanel-enable-panel-ssl-use-self-signed-certificate-browser-add-secure",target:"_blank"},Pa=ee({__name:"index",setup(e){const{t:a}=ae(),n=e=>{e?l():s()},l=()=>{i({title:a("Config.Safe.index_11"),width:600,footer:!0,component:Fe})},s=()=>{i({title:a("Config.Safe.index_12"),width:400,footer:!0,confirmType:"error",component:na})},o=()=>{i({title:a("Config.Safe.index_13"),width:740,component:$a})};return(e,a)=>{const l=we,i=$e,s=t;return se(),fe(s,{label:e.$t("Config.Safe.index_8")},{content:de(()=>[oe(l,{value:ue(Te).panelSSL,"onUpdate:value":n},null,8,["value"]),oe(i,{class:"ml-12px h-22px px-5px",size:"small",onClick:o},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_9")),1),re("a",ka,pe(e.$t("Public.Btn.Help")),1)]),_:1},8,["label"])}}}),Ua={class:"p-20px"},ja={class:"w-280px"},Ba={class:"w-280px"},La={class:"text-error"},Ra=ee({__name:"config",setup(e){const{t:a}=ae(),t=te(null),n=ne({open:"True",basic_user:"",basic_pwd:""}),l={basic_user:{trigger:["blur","input"],validator:()=>"True"!==n.open||""!==n.basic_user.trim()||new Error(a("Config.Safe.index_56"))},basic_pwd:{trigger:["blur","input"],validator:()=>"True"!==n.open||""!==n.basic_pwd.trim()||new Error(a("Config.Safe.index_58"))}},i=async()=>{await(t.value?.validate()),await B(ge(n)),L()};return(e,a)=>{const o=we,d=he,u=Be,r=$e,f=m,p=s;return se(),ie("div",Ua,[oe(f,{ref_key:"formRef",ref:t,model:ue(n),rules:l},{default:de(()=>[oe(d,{label:e.$t("Config.Safe.index_54")},{default:de(()=>[oe(o,{value:ue(n).open,"onUpdate:value":a[0]||(a[0]=e=>ue(n).open=e),"checked-value":"True","unchecked-value":"False"},null,8,["value"])]),_:1},8,["label"]),oe(d,{label:e.$t("Config.Safe.index_55"),path:"basic_user"},{default:de(()=>[re("div",ja,[oe(u,{value:ue(n).basic_user,"onUpdate:value":a[1]||(a[1]=e=>ue(n).basic_user=e),placeholder:e.$t("Config.Safe.index_56")},null,8,["value","placeholder"])])]),_:1},8,["label"]),oe(d,{label:e.$t("Config.Safe.index_57"),path:"basic_pwd"},{default:de(()=>[re("div",Ba,[oe(u,{value:ue(n).basic_pwd,"onUpdate:value":a[2]||(a[2]=e=>ue(n).basic_pwd=e),placeholder:e.$t("Config.Safe.index_58")},null,8,["value","placeholder"])])]),_:1},8,["label"]),oe(d,{label:" ","show-feedback":!1},{default:de(()=>[oe(r,{type:"primary",onClick:i},{default:de(()=>[ce(pe(e.$t("Public.Btn.Save")),1)]),_:1})]),_:1})]),_:1},8,["model"]),oe(p,{class:"mt-20px pl-12px"},{default:de(()=>[re("li",La,pe(e.$t("Config.Safe.index_59")),1),re("li",null,pe(e.$t("Config.Safe.index_48")),1),re("li",null,pe(e.$t("Config.Safe.index_49")),1),re("li",null,pe(e.$t("Config.Safe.index_50")),1),re("li",null,pe(e.$t("Config.Safe.index_51")),1)]),_:1})])}}}),za={class:"p-20px"},Ea={class:"text-error"},Ta={class:"flex items-center justify-between"},Ia={class:"bt-link",href:"https://www.bt.cn/bbs/thread-34374-1-1.html",target:"_blank"},Ha=ee({__name:"confirm",setup(e,{expose:a}){const{t:t}=ae(),n=te();return a({onConfirm:async()=>{await n.value.validate(),i({title:t("Config.Safe.index_53"),width:500,component:Ra})}}),(e,a)=>{const t=Ze,l=Ie,i=He;return se(),ie("div",za,[oe(t,{class:"mb-20px"},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_47")),1)]),_:1}),oe(l,{class:"mb-20px"},{default:de(()=>[re("li",Ea,pe(e.$t("Config.Safe.index_19")),1),re("li",null,pe(e.$t("Config.Safe.index_48")),1),re("li",null,pe(e.$t("Config.Safe.index_49")),1),re("li",null,pe(e.$t("Config.Safe.index_50")),1),re("li",null,pe(e.$t("Config.Safe.index_51")),1)]),_:1}),re("div",Ta,[oe(i,{ref_key:"riskRef",ref:n},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_29")),1)]),_:1},512),re("a",Ia,pe(e.$t("Config.Safe.index_52")),1)])])}}}),Da={class:"bt-link",href:"https://www.bt.cn/bbs/thread-34374-1-1.html",target:"_blank"},Aa=ee({__name:"index",setup(e){const{t:a}=ae(),n=async e=>{e?i({title:a("Config.Safe.index_46"),width:650,footer:!0,component:Ha}):(await B({open:"False",basic_user:"",basic_pwd:""}),L())};return(e,a)=>{const l=we,i=t;return se(),fe(i,{label:e.$t("Config.Safe.index_44")},{content:de(()=>[oe(l,{value:ue(Te).basicAuth,"onUpdate:value":n},null,8,["value"])]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_45")),1),re("a",Da,pe(e.$t("Public.Btn.Help")),1)]),_:1},8,["label"])}}}),Fa={class:"p-20px"},Va={class:"mb-20px text-20px text-center text-[var(--setting-security-google-login-bind-title)]"},Ka={class:"px-36px"},Ma={class:"mb-10px text-16px text-[var(--setting-security-google-login-bind-text)]"},Na={class:"mb-20px px-24px py-16px bg-[var(--setting-security-google-login-key-bg)] rounded-4px leading-24px text-14px text-[var(--setting-security-google-login-key-text)] font-500"},Wa={class:"text-[var(--setting-security-google-login-bind-text)]"},Za={class:"text-[var(--setting-security-google-login-bind-text)]"},qa={class:"mb-20px text-16px text-[var(--setting-security-google-login-bind-text)]"},Oa={class:"bt-link",href:"",target:"_blank"},Xa={class:"text-error"},Ya=ee({__name:"config",setup(e){const a=ne({key:"--",username:"--"}),t=te(""),{loading:n,setLoading:i}=l();return(async()=>{const{message:e}=await z();P(e)&&(a.key=e.key,a.username=e.username)})(),(async()=>{try{i(!0);const{message:e}=await E({act:1});P(e)&&(t.value=e.result)}finally{i(!1)}})(),(e,l)=>{const i=R,o=b,d=s;return se(),ie("div",Fa,[re("div",Va,pe(e.$t("Config.Safe.index_70")),1),re("div",Ka,[re("div",Ma,pe(e.$t("Config.Safe.index_71")),1),re("div",Na,[re("div",null,[ce(pe(e.$t("Config.Safe.index_72"))+" ",1),re("span",Wa,pe(ue(a).username),1)]),re("div",null,[ce(pe(e.$t("Config.Safe.index_73"))+" ",1),re("span",Za,pe(ue(a).key),1)]),re("div",null,[ce(pe(e.$t("Config.Safe.index_74"))+" ",1),l[0]||(l[0]=re("span",{class:"text-[var(--setting-security-google-login-bind-text)]"},"Time based",-1))])]),re("div",qa,pe(e.$t("Config.Safe.index_75")),1),oe(o,{class:"flex justify-center h-150px",show:ue(n)},{default:de(()=>[me(oe(i,{value:ue(t),size:150,padding:0},null,8,["value"]),[[ve,ue(t)]])]),_:1},8,["show"]),oe(d,null,{default:de(()=>[re("li",null,[ce(pe(e.$t("Config.Safe.index_76"))+" ",1),re("a",Oa,pe(e.$t("Config.Safe.index_77")),1)]),re("li",Xa,pe(e.$t("Config.Safe.index_78")),1)]),_:1})])])}}}),Ga=T(Ya,[["__scopeId","data-v-86cab381"]]),Ja={class:"p-20px"},Qa={class:"text-error"},et={class:"text-error"},at={class:"flex items-center justify-between"},tt={class:"bt-link",href:"https://www.aapanel.com/forum/d/357-how-to-use-google-authenticator-in-the-aapanel",target:"_blank"},nt=ee({__name:"confirm",setup(e,{expose:a}){const{t:t}=ae(),n=te();return a({onConfirm:async()=>{await n.value.validate();const{message:e}=await I({act:1});Te.value.dynamicPwd=!0,i({title:t("Config.Safe.index_62"),width:600,component:Ga}),P(e)&&j.success(e.result)}}),(e,a)=>{const t=Ze,l=Ie,i=He;return se(),ie("div",Ja,[oe(t,{class:"mb-20px"},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_47")),1)]),_:1}),oe(l,{class:"mb-20px"},{default:de(()=>[re("li",Qa,pe(e.$t("Config.Safe.index_19")),1),re("li",et,pe(e.$t("Config.Safe.index_69")),1),re("li",null,pe(e.$t("Config.Safe.index_66")),1),re("li",null,pe(e.$t("Config.Safe.index_67")),1)]),_:1}),re("div",at,[oe(i,{ref_key:"riskRef",ref:n},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_68")),1)]),_:1},512),re("a",tt,pe(e.$t("Config.Safe.index_168")),1)])])}}}),lt={class:"bt-link",href:"https://www.aapanel.com/forum/d/357-how-to-use-google-authenticator-in-the-aapanel",target:"_blank"},it=ee({__name:"index",setup(e){const{t:a}=ae(),n=async e=>{e?l():(await I({act:0},!0),Te.value.dynamicPwd=!1)},l=()=>{Te.value.dynamicPwd?i({title:a("Config.Safe.index_62"),width:600,component:Ga}):i({title:a("Config.Safe.index_63"),width:670,footer:!0,component:nt})};return(e,a)=>{const i=we,s=$e,o=t;return se(),fe(o,{label:e.$t("Config.Safe.index_60")},{content:de(()=>[oe(i,{value:ue(Te).dynamicPwd,"onUpdate:value":n},null,8,["value"]),oe(s,{class:"ml-12px h-22px px-5px",size:"small",onClick:l},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_61")),1),re("a",lt,pe(e.$t("Public.Btn.Help")),1)]),_:1},8,["label"])}}}),st={class:"text-error"},ot=ee({__name:"index",setup(e){const{t:a}=ae(),n=async e=>{d({title:a("Config.Safe.index_82",[a(e?"Config.Safe.index_83":"Config.Safe.index_84")]),content:()=>e?oe(be,{tag:"div",scope:"global",keypath:"Config.Safe.index_85"},{tips_:()=>oe("span",{class:"text-error"},[a("Config.Safe.index_86")])}):oe(Ce,null,[a("Config.Safe.index_87")]),onConfirm:async()=>{await H(),Te.value.pwdComplexity=e}})};return(e,a)=>{const l=we,i=t;return se(),fe(i,{label:e.$t("Config.Safe.index_79")},{content:de(()=>[oe(l,{value:ue(Te).pwdComplexity,"onUpdate:value":n},null,8,["value"])]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_80")),1),re("span",st,pe(e.$t("Config.Safe.index_81")),1)]),_:1},8,["label"])}}}),dt={class:"w-260px"},ut={class:"text-error"},rt=ee({__name:"index",setup(e){const a=async()=>{await D(De()),L()};return(e,n)=>{const l=Be,i=$e,s=t;return se(),fe(s,{label:e.$t("Config.Safe.index_88")},{content:de(()=>[re("div",dt,[oe(l,{value:ue(Te).domain,"onUpdate:value":n[0]||(n[0]=e=>ue(Te).domain=e),placeholder:""},null,8,["value"])]),oe(i,{class:"ml-12px",type:"primary",onClick:a},{default:de(()=>[ce(pe(e.$t("Public.Btn.Save")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_89")),1),re("span",ut,pe(e.$t("Config.Safe.index_90")),1)]),_:1},8,["label"])}}}),ft={class:"w-260px"},pt={class:"text-error"},ct=ee({__name:"index",setup(e){const{t:a}=ae(),n=async()=>{let e=/^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$/,t=Te.value.limitIp.split(",").join("-").split("-"),n=!0;if(t.length)for(let a=0;a0)return j.error(a("Config.Safe.index_95"));await A(De()),L()};return(e,a)=>{const l=Be,i=$e,s=t;return se(),fe(s,{label:e.$t("Config.Safe.index_91")},{content:de(()=>[re("div",ft,[oe(l,{value:ue(Te).limitIp,"onUpdate:value":a[0]||(a[0]=e=>ue(Te).limitIp=e),placeholder:e.$t("Config.Safe.index_92")},null,8,["value","placeholder"])]),oe(i,{class:"ml-12px",type:"primary",onClick:n},{default:de(()=>[ce(pe(e.$t("Public.Btn.Save")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_93")),1),re("span",pt,pe(e.$t("Config.Safe.index_94")),1)]),_:1},8,["label"])}}}),_t={class:"p-20px"},xt={class:"text-error"},gt={class:"text-error"},mt={class:"w-210px"},vt=ee({__name:"set",setup(e,{expose:a}){const{t:t}=ae(),n=te(),l=te(null),i=ne({port:F(Te.value.port)}),s={port:{trigger:["blur","input"],validator:()=>!!K(i.port)||new Error(t("Config.Safe.index_104"))}};return a({onConfirm:async()=>{await n.value.validate(),await(l.value?.validate());const e=De();e.port=`${i.port}`,await V(e),L(`${location.protocol}//${location.hostname}:${i.port}${location.pathname}`)}}),(e,a)=>{const t=Ie,o=Re,d=he,u=m,r=He;return se(),ie("div",_t,[oe(t,{class:"mb-20px"},{default:de(()=>[re("li",xt,pe(e.$t("Config.Safe.index_100")),1),re("li",gt,pe(e.$t("Config.Safe.index_101")),1)]),_:1}),oe(u,{ref_key:"formRef",ref:l,model:ue(i),rules:s},{default:de(()=>[oe(d,{label:e.$t("Config.Safe.index_96"),path:"port","label-width":"auto","label-style":{paddingLeft:"24px"}},{default:de(()=>[re("div",mt,[oe(o,{value:ue(i).port,"onUpdate:value":a[0]||(a[0]=e=>ue(i).port=e),min:1,max:65535,"show-button":!1,placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),oe(r,{ref_key:"riskRef",ref:n},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_102"))+" ",1),re("a",{class:"bt-link",href:"https://www.aapanel.com/forum/d/599-how-to-release-the-aapanel-port",target:"_blank",onClick:Se(()=>!1,["stop"])},pe(e.$t("Config.Safe.index_103")),1)]),_:1},512)])}}}),bt={class:"w-260px"},Ct={class:"text-error"},St=ee({__name:"index",setup(e){const{t:a}=ae(),n=async()=>{i({title:a("Config.Safe.index_99"),width:400,footer:!0,component:vt})};return(e,a)=>{const l=Be,i=$e,s=t;return se(),fe(s,{label:e.$t("Config.Safe.index_96")},{content:de(()=>[re("div",bt,[oe(l,{value:ue(Te).port,disabled:!0,placeholder:""},null,8,["value"])]),oe(i,{class:"ml-12px",type:"primary",onClick:n},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_97")),1),re("span",Ct,pe(e.$t("Config.Safe.index_98")),1)]),_:1},8,["label"])}}}),yt={class:"px-20px pt-28px pb-8px"},ht={class:"w-240px"},wt=ee({__name:"set",setup(e,{expose:a}){const{t:t}=ae(),n=te(null),l=ne({adminPath:Te.value.adminPath}),i={adminPath:{trigger:["blur","input"],validator:()=>""!==l.adminPath.trim()||new Error(t("Config.Safe.index_108"))}};return a({onConfirm:async()=>{await(n.value?.validate()),await M({admin_path:N(l.adminPath)}),Te.value.adminPath=l.adminPath}}),(e,a)=>{const t=Be,s=he,o=m;return se(),ie("div",yt,[oe(o,{ref_key:"formRef",ref:n,model:ue(l),rules:i},{default:de(()=>[oe(s,{label:e.$t("Config.Safe.index_105"),path:"adminPath"},{default:de(()=>[re("div",ht,[oe(t,{value:ue(l).adminPath,"onUpdate:value":a[0]||(a[0]=e=>ue(l).adminPath=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),$t={class:"w-260px"},kt=ee({__name:"index",setup(e){const{t:a}=ae(),n=async()=>{i({title:a("Config.Safe.index_107"),width:440,footer:!0,component:wt})};return(e,a)=>{const l=Be,i=$e,s=t;return se(),fe(s,{label:e.$t("Config.Safe.index_105")},{content:de(()=>[re("div",$t,[oe(l,{value:ue(Te).adminPath,disabled:!0,placeholder:""},null,8,["value"])]),oe(i,{class:"ml-12px",type:"primary",onClick:n},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_106")),1)]),_:1},8,["label"])}}}),Pt={class:"px-20px py-24px"},Ut={class:"w-200px"},jt={class:"text-error"},Bt=ee({__name:"set",setup(e,{expose:a}){const{t:t}=ae(),n=te(null),l=ne({status_code:Te.value.statusCode}),i={},o=[{value:403,label:t("Config.Safe.index_111")},{value:404,label:t("Config.Safe.index_112")},{value:416,label:t("Config.Safe.index_113")},{value:408,label:t("Config.Safe.index_114")},{value:400,label:t("Config.Safe.index_115")},{value:401,label:t("Config.Safe.index_116")}];return a({onConfirm:async()=>{await(n.value?.validate()),await W({status_code:l.status_code}),Te.value.statusCode=l.status_code}}),(e,a)=>{const t=ze,d=he,u=m,r=s;return se(),ie("div",Pt,[oe(u,{ref_key:"formRef",ref:n,model:ue(l),rules:i},{default:de(()=>[oe(d,{label:e.$t("Config.Safe.index_118"),path:"adminPath"},{default:de(()=>[re("div",Ut,[oe(t,{value:ue(l).status_code,"onUpdate:value":a[0]||(a[0]=e=>ue(l).status_code=e),options:o},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),oe(r,null,{default:de(()=>[re("li",jt,pe(e.$t("Config.Safe.index_119")),1)]),_:1})])}}}),Lt={class:"w-260px"},Rt=ee({__name:"index",setup(e){const{t:a}=ae(),n=new Map([[403,a("Config.Safe.index_111")],[404,a("Config.Safe.index_112")],[416,a("Config.Safe.index_113")],[408,a("Config.Safe.index_114")],[400,a("Config.Safe.index_115")],[401,a("Config.Safe.index_116")]]),l=ye(()=>n.get(Te.value.statusCode)||"--"),s=async()=>{i({title:a("Config.Safe.index_117"),width:420,footer:!0,component:Bt})};return(e,a)=>{const n=Be,i=$e,o=t;return se(),fe(o,{label:e.$t("Config.Safe.index_109")},{content:de(()=>[re("div",Lt,[oe(n,{value:ue(l),disabled:!0,placeholder:""},null,8,["value"])]),oe(i,{class:"ml-12px",type:"primary",onClick:s},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_110")),1)]),_:1},8,["label"])}}}),zt={class:"px-20px py-24px"},Et={class:"w-120px"},Tt={class:"text-error"},It=ee({__name:"set",setup(e,{expose:a}){const{t:t}=ae(),n=te(null),l=ne({day:Te.value.pwdSetDay}),i={day:{trigger:["blur","input"],validator:()=>l.day<0?new Error(t("Config.Safe.index_128")):!(!l.day&&0!==l.day)||new Error(t("Config.Safe.index_129"))}};return a({onConfirm:async()=>{await(n.value?.validate()),await Z({expire:l.day}),Ae()}}),(e,a)=>{const t=Re,o=he,d=m,u=s;return se(),ie("div",zt,[oe(d,{ref_key:"formRef",ref:n,model:ue(l),rules:i},{default:de(()=>[oe(o,{label:e.$t("Config.Safe.index_120"),path:"day"},{default:de(()=>[re("div",Et,[oe(t,{value:ue(l).day,"onUpdate:value":a[0]||(a[0]=e=>ue(l).day=e),min:0,"show-button":!1,placeholder:""},{suffix:de(()=>[ce(pe(e.$t("Public.Unit.Day",ue(l).day)),1)]),_:1},8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),oe(u,{class:"mt-4px"},{default:de(()=>[re("li",Tt,pe(e.$t("Config.Safe.index_126")),1),re("li",null,pe(e.$t("Config.Safe.index_127")),1)]),_:1})])}}}),Ht={class:"w-260px"},Dt=ee({__name:"index",setup(e){const{t:a}=ae(),n=ye(()=>{const{pwdSetDay:e,pwdExpireDay:t,pwdExpireTime:n}=Te.value;return 0===e?a("Config.Safe.index_122"):a("Config.Safe.index_123",[q(n),t])}),l=async()=>{i({title:a("Config.Safe.index_124"),width:360,footer:!0,component:It})};return(e,a)=>{const i=Be,s=$e,o=t;return se(),fe(o,{label:e.$t("Config.Safe.index_120")},{content:de(()=>[re("div",Ht,[oe(i,{value:ue(n),disabled:!0,placeholder:""},null,8,["value"])]),oe(s,{class:"ml-12px",type:"primary",onClick:l},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_121")),1)]),_:1},8,["label"])}}}),At={class:"p-20px"},Ft={class:"mb-12px"},Vt={class:"mb-12px"},Kt={class:"mb-20px"},Mt=ee({__name:"set-add-result",props:{address:{default:""}},setup(e){const a=e,t=()=>{u(a.address)};return(e,a)=>{const n=Ke,l=$e,i=s;return se(),ie("div",At,[re("div",Ft,pe(e.$t("Config.Safe.index_147")),1),re("div",Vt,[oe(n,{value:e.address,readonly:"",rows:2},null,8,["value"])]),re("div",Kt,[oe(l,{type:"primary",onClick:t},{default:de(()=>[ce(pe(e.$t("Public.Btn.Copy")),1)]),_:1})]),oe(i,null,{default:de(()=>[re("li",null,pe(e.$t("Config.Safe.index_148")),1),re("li",null,pe(e.$t("Config.Safe.index_149")),1),re("li",null,pe(e.$t("Config.Safe.index_150")),1)]),_:1})])}}}),Nt={class:"p-20px pt-28px pb-8px"},Wt={class:"flex mb-24px"},Zt={class:"min-w-32px"},qt={class:"flex-1 ml-16px"},Ot={class:"leading-24px text-error text-14px"},Xt={class:"w-160px"},Yt=ee({__name:"set-add",emits:["refresh"],setup(e,{expose:a,emit:t}){const n=t,{t:l}=ae(),s=S(),o=te(null),d=ne({type:3,day:1}),u={day:{trigger:["blur","input"],validator:()=>0!==d.type||!(d.day<=0||d.day%1!=0)||new Error(l("Config.Safe.index_145"))}},r=e=>e%1==0,f=(e="")=>{const a=`${window.location.protocol}//${window.location.host}/login?tmp_token=${e}`;i({title:l("Config.Safe.index_146"),width:580,data:{address:a},component:Mt})};return a({onConfirm:async()=>{await(o.value?.validate());const{message:e}=await O({expire_time:60*(0===d.type?24*d.day:d.type)*60+Math.floor(Date.now()/1e3)});P(e)&&(f(e.token),j.success(e.msg),n("refresh"))}}),(e,a)=>{const t=y,n=Ee,l=Ue,i=he,f=Re,p=m;return se(),ie("div",Nt,[re("div",Wt,[re("div",Zt,[oe(t,{name:"base-warning",size:"32",color:ue(s).warningColor},null,8,["color"])]),re("div",qt,[re("div",Ot,[re("div",null,pe(e.$t("Config.Safe.index_140")),1),re("div",null,pe(e.$t("Config.Safe.index_141")),1)])])]),oe(p,{ref_key:"formRef",ref:o,model:ue(d),rules:u,"label-width":"140"},{default:de(()=>[oe(i,{label:e.$t("Config.Safe.index_142")},{default:de(()=>[oe(l,{value:ue(d).type,"onUpdate:value":a[0]||(a[0]=e=>ue(d).type=e)},{default:de(()=>[oe(n,{value:3},{default:de(()=>[ce("3 "+pe(e.$t("Public.Unit.Hour",3)),1)]),_:1}),oe(n,{value:6},{default:de(()=>[ce("6 "+pe(e.$t("Public.Unit.Hour",6)),1)]),_:1}),oe(n,{value:9},{default:de(()=>[ce("9 "+pe(e.$t("Public.Unit.Hour",9)),1)]),_:1}),oe(n,{value:12},{default:de(()=>[ce("12 "+pe(e.$t("Public.Unit.Hour",12)),1)]),_:1}),oe(n,{value:0},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_143")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),me(oe(i,{label:e.$t("Config.Safe.index_144"),path:"day"},{default:de(()=>[re("div",Xt,[oe(f,{value:ue(d).day,"onUpdate:value":a[1]||(a[1]=e=>ue(d).day=e),min:1,"show-button":!1,validator:r},{suffix:de(()=>[ce(pe(e.$t("Public.Unit.Day",ue(d).day)),1)]),_:1},8,["value"])])]),_:1},8,["label"]),[[ve,0===ue(d).type]])]),_:1},8,["model"])])}}}),Gt={class:"p-20px h-500px"},Jt=ee({__name:"set-log",props:{id:{default:0}},setup(e){const a=e,{t:t}=ae(),{table:n,columns:l,setLoading:i}=r([{key:"type",title:t("Config.Safe.index_151"),width:120,ellipsis:{tooltip:!0}},{key:"addtime",title:t("Config.Safe.index_152"),width:140},{key:"log",title:t("Config.Safe.index_153"),ellipsis:{tooltip:!0}}]),s=async()=>{try{i(!0);const{message:e}=await X({id:a.id});n.data=C(e)?e:[]}finally{i(!1)}};return s(),(e,a)=>{const t=$e,i=f,o=qe;return se(),ie("div",Gt,[oe(o,null,{toolsLeft:de(()=>[oe(t,{onClick:s},{default:de(()=>[ce(pe(e.$t("Public.Btn.Refresh")),1)]),_:1})]),table:de(()=>[oe(i,{"max-height":360,loading:ue(n).loading,data:ue(n).data,columns:ue(l)},null,8,["loading","data","columns"])]),_:1})])}}}),Qt={class:"h-500px p-20px"},en=ee({__name:"set",setup(e){const{t:a}=ae(),t=()=>{i({title:a("Config.Safe.index_146"),width:580,footer:!0,component:Yt,data:{onRefresh:()=>{x()}}})},{table:n,columns:l,setLoading:s}=r([{key:"login_addr",title:a("Config.Safe.index_154"),ellipsis:{tooltip:!0},render:e=>e.login_addr||a("Config.Safe.index_155")},{key:"state",title:a("Config.Safe.index_156"),width:100,render:e=>-1===e.state?oe("span",{class:"text-error"},[a("Config.Safe.index_166")]):1===e.state?a("Config.Safe.index_157"):oe("span",{class:"text-primary"},[a("Config.Safe.index_155")])},{key:"login_time",title:a("Config.Safe.index_158"),width:140,render:e=>0===e.login_time?a("Config.Safe.index_155"):q(e.login_time)},{key:"expire",title:a("Config.Safe.index_159"),width:140,render:e=>q(e.expire)},p({width:160,options:e=>[{label:a("Config.Safe.index_160"),type:"error",show:e.online_state,onClick:()=>{u(e)}},{label:a("Config.Safe.index_161"),show:1===e.state||-1===e.state,onClick:()=>{o(e)}},{label:a("Public.Btn.Del"),onClick:()=>{c(e)}}]})]),o=e=>{i({title:a("Config.Safe.index_161"),width:700,data:{id:e.id},component:Jt})},u=e=>{d({title:a("Config.Safe.index_162",[e.login_addr]),content:a("Config.Safe.index_163",[e.login_addr]),onConfirm:async()=>{await Y({id:e.id}),x()}})},c=e=>{d({title:a("Config.Safe.index_164"),content:a("Config.Safe.index_165"),onConfirm:async()=>{await G({id:e.id}),x()}})},_=ne({p:1,rows:10}),x=async()=>{try{s(!0);const{message:e}=await J(ge(_));P(e)&&(n.data=C(e.data)?e.data:[],n.total=Q(e.page))}finally{s(!1)}};return x(),(e,a)=>{const i=$e,s=f,o=Oe,d=qe;return se(),ie("div",Qt,[oe(d,null,{toolsLeft:de(()=>[oe(i,{type:"primary",onClick:t},{default:de(()=>[ce(pe(e.$t("Config.Safe.index_146")),1)]),_:1})]),table:de(()=>[oe(s,{"max-height":340,loading:ue(n).loading,data:ue(n).data,columns:ue(l)},null,8,["loading","data","columns"])]),pageRight:de(()=>[oe(o,{page:ue(_).p,"onUpdate:page":a[0]||(a[0]=e=>ue(_).p=e),"page-size":ue(_).rows,"onUpdate:pageSize":a[1]||(a[1]=e=>ue(_).rows=e),"item-count":ue(n).total,onRefresh:x},null,8,["page","page-size","item-count"])]),_:1})])}}}),an=ee({__name:"index",setup(e){const{t:a}=ae(),n=()=>{i({title:a("Config.Safe.index_139"),width:740,component:en})};return(e,a)=>{const l=$e,i=t;return se(),fe(i,{label:e.$t("Config.Safe.index_137")},{content:de(()=>[oe(l,{type:"primary",onClick:n},{default:de(()=>[ce(pe(e.$t("Public.Btn.Set")),1)]),_:1})]),desc:de(()=>[re("span",null,pe(e.$t("Config.Safe.index_138")),1)]),_:1},8,["label"])}}});e("S",T(ee({__name:"config",setup:e=>(e,a)=>(se(),ie("div",null,[oe(n,null,{default:de(()=>[ce(pe(e.$t("Config.Safe.index_1")),1)]),_:1}),oe(Je),oe(Pa),oe(Aa),oe(it),oe(ot),oe(rt),oe(ct),oe(St),oe(kt),oe(Rt),oe(Dt),oe(an)]))}),[["__scopeId","data-v-919bcd3c"]]))}}}); diff --git a/BTPanel/static/vite/js/config-legacy3.js b/BTPanel/static/vite/js/config-legacy3.js index 778fa066..4b63c965 100644 --- a/BTPanel/static/vite/js/config-legacy3.js +++ b/BTPanel/static/vite/js/config-legacy3.js @@ -1 +1 @@ -System.register(["./page_layout-legacy.js?v=1760428868419"],function(t,s){"use strict";var e,a;return{setters:[t=>{e=t.t,a=t.i}],execute:function(){const{t:s}=a.global;t("m",t=>e.post("/project/quota/modify_path_quota",{data:JSON.stringify({path:t.path,quota_type:t.quota_type,quota_push:{module:"",status:!1,size:0,push_count:0},quota_storage:{size:t.size}})},{requestOptions:{loading:s("WP.api.tamper_8"),successMessage:!0,errorMessage:{close:!0}}})),t("a",t=>e.post("/project/quota/modify_database_quota",{data:JSON.stringify({db_name:t.db_name,quota_push:{module:"",status:!1,size:0,push_count:0},quota_storage:{size:t.size}})},{requestOptions:{loading:s("WP.api.tamper_8"),successMessage:!0,errorMessage:{close:!0}}})),t("g",()=>e.post("/config?action=get_msg_configs"))}}}); +System.register(["./page_layout-legacy.js?v=1762424784323"],function(t,s){"use strict";var e,a;return{setters:[t=>{e=t.t,a=t.i}],execute:function(){const{t:s}=a.global;t("m",t=>e.post("/project/quota/modify_path_quota",{data:JSON.stringify({path:t.path,quota_type:t.quota_type,quota_push:{module:"",status:!1,size:0,push_count:0},quota_storage:{size:t.size}})},{requestOptions:{loading:s("WP.api.tamper_8"),successMessage:!0,errorMessage:{close:!0}}})),t("a",t=>e.post("/project/quota/modify_database_quota",{data:JSON.stringify({db_name:t.db_name,quota_push:{module:"",status:!1,size:0,push_count:0},quota_storage:{size:t.size}})},{requestOptions:{loading:s("WP.api.tamper_8"),successMessage:!0,errorMessage:{close:!0}}})),t("g",()=>e.post("/config?action=get_msg_configs"))}}}); diff --git a/BTPanel/static/vite/js/config-legacy4.js b/BTPanel/static/vite/js/config-legacy4.js index 9ee8b1b8..4606d643 100644 --- a/BTPanel/static/vite/js/config-legacy4.js +++ b/BTPanel/static/vite/js/config-legacy4.js @@ -1 +1 @@ -System.register(["./page_layout-legacy.js?v=1760428868419","./tools-legacy2.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./rules-legacy.js?v=1760428868419"],function(e,a){"use strict";var t,l,n,s,c,u,o,r,i,d,p,v,y,g;return{setters:[e=>{t=e.fl,l=e.d,n=e.p},e=>{s=e.j,c=e.k},e=>{u=e.k,o=e.r,r=e.R,i=e.V,d=e.S,p=e.W,v=e.a4,y=e.U,g=e.ak},null,null,null,null,null],execute:function(){var a=document.createElement("style");a.textContent=".n-transfer[data-v-4f75b301] .n-transfer-list--target{display:none}\n/*$vite$:1*/",document.head.appendChild(a);const m={class:"p-20px"},f={class:"mb-16px text-desc"},j=u({__name:"config",setup(e,{expose:a}){const n=o([]),u=o([]);return(async()=>{const{message:e}=await s();l(e)&&(n.value=Object.keys(e).filter(a=>e[a]),u.value=Object.keys(e).map(e=>({label:e,value:e})))})(),a({onConfirm:async()=>{await c({data:n.value.reduce((e,a)=>(e[a]=!0,e),{})})}}),(e,a)=>{const l=t;return i(),r("div",m,[d("div",f,v(e.$t("Waf.Block.index_73")),1),p(l,{value:y(n),"onUpdate:value":a[0]||(a[0]=e=>g(n)?n.value=e:null),options:y(u)},null,8,["value","options"])])}}});e("default",n(j,[["__scopeId","data-v-4f75b301"]]))}}}); +System.register(["./page_layout-legacy.js?v=1762424784323","./tools-legacy2.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./rules-legacy.js?v=1762424784323"],function(e,a){"use strict";var t,l,n,s,c,u,o,r,i,d,p,v,y,g;return{setters:[e=>{t=e.fk,l=e.d,n=e.p},e=>{s=e.j,c=e.k},e=>{u=e.k,o=e.r,r=e.R,i=e.V,d=e.S,p=e.W,v=e.a4,y=e.U,g=e.ak},null,null,null,null,null],execute:function(){var a=document.createElement("style");a.textContent=".n-transfer[data-v-4f75b301] .n-transfer-list--target{display:none}\n/*$vite$:1*/",document.head.appendChild(a);const m={class:"p-20px"},f={class:"mb-16px text-desc"},j=u({__name:"config",setup(e,{expose:a}){const n=o([]),u=o([]);return(async()=>{const{message:e}=await s();l(e)&&(n.value=Object.keys(e).filter(a=>e[a]),u.value=Object.keys(e).map(e=>({label:e,value:e})))})(),a({onConfirm:async()=>{await c({data:n.value.reduce((e,a)=>(e[a]=!0,e),{})})}}),(e,a)=>{const l=t;return i(),r("div",m,[d("div",f,v(e.$t("Waf.Block.index_73")),1),p(l,{value:y(n),"onUpdate:value":a[0]||(a[0]=e=>g(n)?n.value=e:null),options:y(u)},null,8,["value","options"])])}}});e("default",n(j,[["__scopeId","data-v-4f75b301"]]))}}}); diff --git a/BTPanel/static/vite/js/config-legacy5.js b/BTPanel/static/vite/js/config-legacy5.js index fbce3493..dc59f240 100644 --- a/BTPanel/static/vite/js/config-legacy5.js +++ b/BTPanel/static/vite/js/config-legacy5.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./setting-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,t){"use strict";var l,a,n,i,c,r,u,s,o,f,d,y,g,p,_,m,v,b,w,x,h,S,q,W,j,k,E,U,$;return{setters:[e=>{l=e._,a=e.c,n=e.f,i=e.h,c=e.u},e=>{r=e.d,u=e.k},e=>{s=e.k,o=e.l,f=e.n,d=e.g},e=>{y=e._},e=>{g=e.k,p=e.P,_=e.r,m=e.e,v=e.R,b=e.V,w=e.W,x=e.a3,h=e.S,S=e.U,q=e.a4,W=e.N,j=e.j},e=>{k=e.dR,E=e.au,U=e.df,$=e.aC},null,null],execute:function(){const t={class:"p-20px"},P={class:"w-220px"},R={class:"ml-8px text-desc"},C={class:"w-220px mr-8px"},B={class:"text-desc"},L={class:"w-220px mr-8px"},A={class:"text-desc"},D=g({__name:"form",props:{isEdit:{type:Boolean,default:!1},row:{}},emits:["refresh"],setup(e,{expose:a,emit:n}){const i=e,c=n,{t:r}=p(),u=_(null),f=m({url:"",frequency:30,cycle:60}),d={url:{trigger:["blur","input"],validator:()=>""!==f.url.trim()||new Error(r("Waf.Setting.config_55"))},frequency:{trigger:["blur","input"],validator:()=>!!f.frequency||new Error(r("Waf.Setting.config_56"))},cycle:{trigger:["blur","input"],validator:()=>!!f.cycle||new Error(r("Waf.Setting.config_57"))}};return(()=>{const{row:e,isEdit:t}=i;t&&e&&(f.url=e.url,f.frequency=e.frequency,f.cycle=e.cycle)})(),a({onConfirm:async()=>{await(u.value?.validate()),i.isEdit?await s(W(f)):await o(W(f)),c("refresh")}}),(e,a)=>{const n=E,i=k,c=U,r=y,s=l;return b(),v("div",t,[w(r,{ref_key:"formRef",ref:u,model:S(f),rules:d},{default:x(()=>[w(i,{label:"URL",path:"url"},{default:x(()=>[h("div",P,[w(n,{value:S(f).url,"onUpdate:value":a[0]||(a[0]=e=>S(f).url=e),placeholder:"/index.php"},null,8,["value"])]),h("span",R,q(e.$t("Waf.Setting.config_51")),1)]),_:1}),w(i,{label:e.$t("Waf.Setting.config_48"),path:"frequency"},{default:x(()=>[h("div",C,[w(c,{value:S(f).frequency,"onUpdate:value":a[1]||(a[1]=e=>S(f).frequency=e),min:1,"show-button":!1},null,8,["value"])]),h("span",B,q(e.$t("Public.Unit.Time",S(f).frequency)),1)]),_:1},8,["label"]),w(i,{label:e.$t("Waf.Setting.config_49"),path:"cycle"},{default:x(()=>[h("div",L,[w(c,{value:S(f).cycle,"onUpdate:value":a[2]||(a[2]=e=>S(f).cycle=e),min:1,"show-button":!1},null,8,["value"])]),h("span",A,q(e.$t("Public.Unit.Second",S(f).cycle)),1)]),_:1},8,["label"])]),_:1},8,["model"]),w(s,{class:"mt-12px"},{default:x(()=>[h("li",null,q(e.$t("Waf.Setting.config_54")),1)]),_:1})])}}}),H={class:"p-20px"},N={class:"flex mb-16px"};e("default",g({__name:"config",setup(e){const{t:t}=p(),l=e=>{c({title:e.title,width:570,footer:!0,data:{...e.data,onRefresh:()=>{_()}},component:D})},s=async()=>{l({title:t("Waf.Setting.config_46"),data:{isEdit:!1}})},{table:o,columns:y,setLoading:g}=a([{key:"url",title:"URL",ellipsis:{tooltip:!0}},{key:"frequency",title:t("Waf.Setting.config_48"),width:100,ellipsis:{tooltip:!0}},{key:"cycle",title:t("Waf.Setting.config_49"),width:120,ellipsis:{tooltip:!0},render:e=>t("Waf.Setting.config_50",[e.cycle])},n({width:100,options:e=>[{label:t("Public.Btn.Edit"),onClick:async()=>{(async e=>{l({title:t("Waf.Setting.config_47"),data:{row:e,isEdit:!0}})})(e)}},{label:t("Public.Btn.Del"),onClick:async()=>{await f({url:e.url}),_()}}]})]),_=async()=>{try{g(!0);const{message:e}=await d();r(e)&&(o.data=Object.entries(e.cc_uri_frequency).map(([e,t])=>({url:e,frequency:u(t.frequency),cycle:u(t.cycle)})))}finally{g(!1)}};return _(),(e,t)=>{const l=$,a=i;return b(),v("div",H,[h("div",N,[w(l,{type:"primary",onClick:s},{default:x(()=>[j(q(e.$t("Public.Btn.Add")),1)]),_:1})]),w(a,{"max-height":368,loading:S(o).loading,data:S(o).data,columns:S(y)},null,8,["loading","data","columns"])])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./setting-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,t){"use strict";var l,a,n,i,c,r,u,s,o,f,d,y,g,p,_,m,v,b,w,x,h,S,q,W,j,k,E,U,$;return{setters:[e=>{l=e._,a=e.c,n=e.f,i=e.h,c=e.u},e=>{r=e.d,u=e.k},e=>{s=e.k,o=e.l,f=e.n,d=e.g},e=>{y=e._},e=>{g=e.k,p=e.P,_=e.r,m=e.e,v=e.R,b=e.V,w=e.W,x=e.a3,h=e.S,S=e.U,q=e.a4,W=e.N,j=e.j},e=>{k=e.dR,E=e.au,U=e.df,$=e.aC},null,null],execute:function(){const t={class:"p-20px"},P={class:"w-220px"},R={class:"ml-8px text-desc"},C={class:"w-220px mr-8px"},B={class:"text-desc"},L={class:"w-220px mr-8px"},A={class:"text-desc"},D=g({__name:"form",props:{isEdit:{type:Boolean,default:!1},row:{}},emits:["refresh"],setup(e,{expose:a,emit:n}){const i=e,c=n,{t:r}=p(),u=_(null),f=m({url:"",frequency:30,cycle:60}),d={url:{trigger:["blur","input"],validator:()=>""!==f.url.trim()||new Error(r("Waf.Setting.config_55"))},frequency:{trigger:["blur","input"],validator:()=>!!f.frequency||new Error(r("Waf.Setting.config_56"))},cycle:{trigger:["blur","input"],validator:()=>!!f.cycle||new Error(r("Waf.Setting.config_57"))}};return(()=>{const{row:e,isEdit:t}=i;t&&e&&(f.url=e.url,f.frequency=e.frequency,f.cycle=e.cycle)})(),a({onConfirm:async()=>{await(u.value?.validate()),i.isEdit?await s(W(f)):await o(W(f)),c("refresh")}}),(e,a)=>{const n=E,i=k,c=U,r=y,s=l;return b(),v("div",t,[w(r,{ref_key:"formRef",ref:u,model:S(f),rules:d},{default:x(()=>[w(i,{label:"URL",path:"url"},{default:x(()=>[h("div",P,[w(n,{value:S(f).url,"onUpdate:value":a[0]||(a[0]=e=>S(f).url=e),placeholder:"/index.php"},null,8,["value"])]),h("span",R,q(e.$t("Waf.Setting.config_51")),1)]),_:1}),w(i,{label:e.$t("Waf.Setting.config_48"),path:"frequency"},{default:x(()=>[h("div",C,[w(c,{value:S(f).frequency,"onUpdate:value":a[1]||(a[1]=e=>S(f).frequency=e),min:1,"show-button":!1},null,8,["value"])]),h("span",B,q(e.$t("Public.Unit.Time",S(f).frequency)),1)]),_:1},8,["label"]),w(i,{label:e.$t("Waf.Setting.config_49"),path:"cycle"},{default:x(()=>[h("div",L,[w(c,{value:S(f).cycle,"onUpdate:value":a[2]||(a[2]=e=>S(f).cycle=e),min:1,"show-button":!1},null,8,["value"])]),h("span",A,q(e.$t("Public.Unit.Second",S(f).cycle)),1)]),_:1},8,["label"])]),_:1},8,["model"]),w(s,{class:"mt-12px"},{default:x(()=>[h("li",null,q(e.$t("Waf.Setting.config_54")),1)]),_:1})])}}}),H={class:"p-20px"},N={class:"flex mb-16px"};e("default",g({__name:"config",setup(e){const{t:t}=p(),l=e=>{c({title:e.title,width:570,footer:!0,data:{...e.data,onRefresh:()=>{_()}},component:D})},s=async()=>{l({title:t("Waf.Setting.config_46"),data:{isEdit:!1}})},{table:o,columns:y,setLoading:g}=a([{key:"url",title:"URL",ellipsis:{tooltip:!0}},{key:"frequency",title:t("Waf.Setting.config_48"),width:100,ellipsis:{tooltip:!0}},{key:"cycle",title:t("Waf.Setting.config_49"),width:120,ellipsis:{tooltip:!0},render:e=>t("Waf.Setting.config_50",[e.cycle])},n({width:100,options:e=>[{label:t("Public.Btn.Edit"),onClick:async()=>{(async e=>{l({title:t("Waf.Setting.config_47"),data:{row:e,isEdit:!0}})})(e)}},{label:t("Public.Btn.Del"),onClick:async()=>{await f({url:e.url}),_()}}]})]),_=async()=>{try{g(!0);const{message:e}=await d();r(e)&&(o.data=Object.entries(e.cc_uri_frequency).map(([e,t])=>({url:e,frequency:u(t.frequency),cycle:u(t.cycle)})))}finally{g(!1)}};return _(),(e,t)=>{const l=$,a=i;return b(),v("div",H,[h("div",N,[w(l,{type:"primary",onClick:s},{default:x(()=>[j(q(e.$t("Public.Btn.Add")),1)]),_:1})]),w(a,{"max-height":368,loading:S(o).loading,data:S(o).data,columns:S(y)},null,8,["loading","data","columns"])])}}}))}}}); diff --git a/BTPanel/static/vite/js/config-legacy6.js b/BTPanel/static/vite/js/config-legacy6.js index dc21a065..70779bc4 100644 --- a/BTPanel/static/vite/js/config-legacy6.js +++ b/BTPanel/static/vite/js/config-legacy6.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./setting-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./index-legacy99.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,a){"use strict";var t,l,i,n,r,s,o,u,c,p,g,f,d,_,y,m,v,S,W,b,h,w,x,j,k,$,U;return{setters:[e=>{t=e.c,l=e.f,i=e.h,n=e._,r=e.u},e=>{s=e.d},e=>{o=e.o,u=e.p,c=e.g},e=>{p=e._},e=>{g=e._},e=>{f=e.k,d=e.P,_=e.r,y=e.e,m=e.R,v=e.V,S=e.W,W=e.a3,b=e.S,h=e.U,w=e.j,x=e.a4},e=>{j=e.dR,k=e.dV,$=e.au,U=e.aC},null,null],execute:function(){const a={class:"p-20px"},R={class:"w-100px mr-8px"},T={class:"w-220px"},C={class:"w-328px"},L={class:"w-100px"},B=f({__name:"form",props:{isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(e,{expose:t,emit:l}){const i=l,{t:n}=d(),r=_(null),s=y({sType:"url",uri:"",param:"",type:1}),u=[{label:n("Waf.Setting.config_75"),value:"url"},{label:n("Waf.Setting.config_76"),value:"regular"}],c=[{label:n("Waf.Setting.config_68"),value:1},{label:n("Waf.Setting.config_69"),value:2},{label:n("Waf.Setting.config_70"),value:3},{label:n("Waf.Setting.config_71"),value:4}],f={uri:{trigger:["blur","input"],validator:()=>""!==s.uri.trim()||new Error(n("Waf.Setting.config_55"))}};return t({onConfirm:async()=>{await(r.value?.validate()),await o({stype:s.sType,uri:s.uri,param:s.param.replace(/\n/g,",").split(","),type:s.type}),i("refresh")}}),(e,t)=>{const l=k,i=$,n=j,o=g,d=p;return v(),m("div",a,[S(d,{ref_key:"formRef",ref:r,model:h(s),rules:f},{default:W(()=>[S(n,{label:e.$t("Waf.Setting.config_73"),path:"uri"},{default:W(()=>[b("div",R,[S(l,{value:h(s).sType,"onUpdate:value":t[0]||(t[0]=e=>h(s).sType=e),options:u},null,8,["value"])]),b("div",T,[S(i,{value:h(s).uri,"onUpdate:value":t[1]||(t[1]=e=>h(s).uri=e),placeholder:"URL"},null,8,["value"])])]),_:1},8,["label"]),S(n,{label:e.$t("Waf.Setting.config_65"),path:"param"},{default:W(()=>[b("div",C,[S(o,{value:h(s).param,"onUpdate:value":t[2]||(t[2]=e=>h(s).param=e),rows:4,placeholder:e.$t("Waf.Setting.config_74")},null,8,["value","placeholder"])])]),_:1},8,["label"]),S(n,{label:e.$t("Waf.Setting.config_67"),path:"type","show-feedback":!1},{default:W(()=>[b("div",L,[S(l,{value:h(s).type,"onUpdate:value":t[3]||(t[3]=e=>h(s).type=e),"consistent-menu-width":!1,options:c},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),E={class:"p-20px"},P={class:"flex mb-16px"};e("default",f({__name:"config",setup(e){const{t:a}=d(),o=async()=>{var e;e={title:a("Waf.Setting.config_64"),data:{isEdit:!1}},r({title:e.title,width:550,footer:!0,data:{...e.data,onRefresh:()=>{_()}},component:B})},{table:p,columns:g,setLoading:f}=t([{key:"url",title:"URL",ellipsis:{tooltip:!0}},{key:"param",title:a("Waf.Setting.config_65"),width:120,ellipsis:{tooltip:!0},render:e=>e.param?e.param.join(", "):"--"},{key:"sType",title:a("Waf.Setting.config_66"),width:80,render:e=>"regular"==e.sType?a("Waf.Setting.config_72"):"URL"},{key:"type",title:a("Waf.Setting.config_67"),width:90,render:e=>{var t="";switch(e.type){case 1:t=a("Waf.Setting.config_68");break;case 2:t=a("Waf.Setting.config_69");break;case 3:t=a("Waf.Setting.config_70");break;case 4:t=a("Waf.Setting.config_71")}return t}},l({width:60,options:e=>[{label:a("Public.Btn.Del"),onClick:async()=>{await u({uri:e.url}),_()}}]})]),_=async()=>{try{f(!0);const{message:e}=await c();s(e)&&(p.data=Object.entries(e.url_cc_param).map(([e,a])=>({url:e,type:a.type,param:a.param,sType:a.stype})))}finally{f(!1)}};return _(),(e,a)=>{const t=U,l=i,r=n;return v(),m("div",E,[b("div",P,[S(t,{type:"primary",onClick:o},{default:W(()=>[w(x(e.$t("Public.Btn.Add")),1)]),_:1})]),S(l,{"max-height":368,loading:h(p).loading,data:h(p).data,columns:h(g)},null,8,["loading","data","columns"]),S(r,{class:"mt-12px"},{default:W(()=>[b("li",null,x(e.$t("Waf.Setting.config_60")),1),b("li",null,x(e.$t("Waf.Setting.config_61")),1),b("li",null,x(e.$t("Waf.Setting.config_62")),1),b("li",null,x(e.$t("Waf.Setting.config_63")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./setting-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./index-legacy99.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,a){"use strict";var t,l,i,n,r,s,o,u,c,p,g,f,d,_,y,m,v,S,W,b,h,w,x,j,k,$,U;return{setters:[e=>{t=e.c,l=e.f,i=e.h,n=e._,r=e.u},e=>{s=e.d},e=>{o=e.o,u=e.p,c=e.g},e=>{p=e._},e=>{g=e._},e=>{f=e.k,d=e.P,_=e.r,y=e.e,m=e.R,v=e.V,S=e.W,W=e.a3,b=e.S,h=e.U,w=e.j,x=e.a4},e=>{j=e.dR,k=e.dV,$=e.au,U=e.aC},null,null],execute:function(){const a={class:"p-20px"},R={class:"w-100px mr-8px"},T={class:"w-220px"},C={class:"w-328px"},L={class:"w-100px"},B=f({__name:"form",props:{isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(e,{expose:t,emit:l}){const i=l,{t:n}=d(),r=_(null),s=y({sType:"url",uri:"",param:"",type:1}),u=[{label:n("Waf.Setting.config_75"),value:"url"},{label:n("Waf.Setting.config_76"),value:"regular"}],c=[{label:n("Waf.Setting.config_68"),value:1},{label:n("Waf.Setting.config_69"),value:2},{label:n("Waf.Setting.config_70"),value:3},{label:n("Waf.Setting.config_71"),value:4}],f={uri:{trigger:["blur","input"],validator:()=>""!==s.uri.trim()||new Error(n("Waf.Setting.config_55"))}};return t({onConfirm:async()=>{await(r.value?.validate()),await o({stype:s.sType,uri:s.uri,param:s.param.replace(/\n/g,",").split(","),type:s.type}),i("refresh")}}),(e,t)=>{const l=k,i=$,n=j,o=g,d=p;return v(),m("div",a,[S(d,{ref_key:"formRef",ref:r,model:h(s),rules:f},{default:W(()=>[S(n,{label:e.$t("Waf.Setting.config_73"),path:"uri"},{default:W(()=>[b("div",R,[S(l,{value:h(s).sType,"onUpdate:value":t[0]||(t[0]=e=>h(s).sType=e),options:u},null,8,["value"])]),b("div",T,[S(i,{value:h(s).uri,"onUpdate:value":t[1]||(t[1]=e=>h(s).uri=e),placeholder:"URL"},null,8,["value"])])]),_:1},8,["label"]),S(n,{label:e.$t("Waf.Setting.config_65"),path:"param"},{default:W(()=>[b("div",C,[S(o,{value:h(s).param,"onUpdate:value":t[2]||(t[2]=e=>h(s).param=e),rows:4,placeholder:e.$t("Waf.Setting.config_74")},null,8,["value","placeholder"])])]),_:1},8,["label"]),S(n,{label:e.$t("Waf.Setting.config_67"),path:"type","show-feedback":!1},{default:W(()=>[b("div",L,[S(l,{value:h(s).type,"onUpdate:value":t[3]||(t[3]=e=>h(s).type=e),"consistent-menu-width":!1,options:c},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),E={class:"p-20px"},P={class:"flex mb-16px"};e("default",f({__name:"config",setup(e){const{t:a}=d(),o=async()=>{var e;e={title:a("Waf.Setting.config_64"),data:{isEdit:!1}},r({title:e.title,width:550,footer:!0,data:{...e.data,onRefresh:()=>{_()}},component:B})},{table:p,columns:g,setLoading:f}=t([{key:"url",title:"URL",ellipsis:{tooltip:!0}},{key:"param",title:a("Waf.Setting.config_65"),width:120,ellipsis:{tooltip:!0},render:e=>e.param?e.param.join(", "):"--"},{key:"sType",title:a("Waf.Setting.config_66"),width:80,render:e=>"regular"==e.sType?a("Waf.Setting.config_72"):"URL"},{key:"type",title:a("Waf.Setting.config_67"),width:90,render:e=>{var t="";switch(e.type){case 1:t=a("Waf.Setting.config_68");break;case 2:t=a("Waf.Setting.config_69");break;case 3:t=a("Waf.Setting.config_70");break;case 4:t=a("Waf.Setting.config_71")}return t}},l({width:60,options:e=>[{label:a("Public.Btn.Del"),onClick:async()=>{await u({uri:e.url}),_()}}]})]),_=async()=>{try{f(!0);const{message:e}=await c();s(e)&&(p.data=Object.entries(e.url_cc_param).map(([e,a])=>({url:e,type:a.type,param:a.param,sType:a.stype})))}finally{f(!1)}};return _(),(e,a)=>{const t=U,l=i,r=n;return v(),m("div",E,[b("div",P,[S(t,{type:"primary",onClick:o},{default:W(()=>[w(x(e.$t("Public.Btn.Add")),1)]),_:1})]),S(l,{"max-height":368,loading:h(p).loading,data:h(p).data,columns:h(g)},null,8,["loading","data","columns"]),S(r,{class:"mt-12px"},{default:W(()=>[b("li",null,x(e.$t("Waf.Setting.config_60")),1),b("li",null,x(e.$t("Waf.Setting.config_61")),1),b("li",null,x(e.$t("Waf.Setting.config_62")),1),b("li",null,x(e.$t("Waf.Setting.config_63")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/config-legacy7.js b/BTPanel/static/vite/js/config-legacy7.js index 47d140d3..5aa9feff 100644 --- a/BTPanel/static/vite/js/config-legacy7.js +++ b/BTPanel/static/vite/js/config-legacy7.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./setting-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(l,a){"use strict";var e,t,n,i,c,s,u,o,g,r,d,f,m,y,p,_,v,j,x,S,b,h,W,k;return{setters:[l=>{e=l.c,t=l.f,n=l.h,i=l._},l=>{c=l.k,s=l.P,u=l.r,o=l.R,g=l.V,r=l.S,d=l.W,f=l.aj,m=l.ak,y=l.U,p=l.a3,_=l.j,v=l.a4},l=>{j=l.w,x=l.m},l=>{S=l.q,b=l.t,h=l.v},l=>{W=l.au,k=l.aC},null,null],execute:function(){const a={class:"p-20px"},w={class:"flex mb-16px"},$={class:"flex-1 mr-16px"};l("default",c({__name:"config",setup(l){const{t:c}=s(),C=u(""),P=async()=>{""!==C.value.trim()?(await h({text:C.value}),C.value="",R()):x.error(c("Waf.Setting.config_81"))},{table:U,columns:B,setLoading:L}=e([{key:"rule",title:"URL"},t({width:80,options:l=>[{label:c("Public.Btn.Del"),onClick:async()=>{await S({text:l.rule}),R()}}]})]),R=async()=>{try{L(!0);const{message:l}=await b();j(l)&&(U.data=l.map(l=>({rule:l})))}finally{L(!1)}};return R(),(l,e)=>{const t=W,c=k,s=n,u=i;return g(),o("div",a,[r("div",w,[r("div",$,[d(t,{value:y(C),"onUpdate:value":e[0]||(e[0]=l=>m(C)?C.value=l:null),placeholder:l.$t("Waf.Setting.config_78"),onKeyup:f(P,["enter"])},null,8,["value","placeholder"])]),d(c,{type:"primary",onClick:P},{default:p(()=>[_(v(l.$t("Public.Btn.Add")),1)]),_:1})]),d(s,{"max-height":368,loading:y(U).loading,data:y(U).data,columns:y(B)},null,8,["loading","data","columns"]),d(u,{class:"mt-16px"},{default:p(()=>[r("li",null,v(l.$t("Waf.Setting.config_77")),1),r("li",null,v(l.$t("Waf.Setting.config_79")),1),r("li",null,v(l.$t("Waf.Setting.config_80")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./setting-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(l,a){"use strict";var e,t,n,i,c,s,u,o,g,r,d,f,m,y,p,_,v,j,x,S,b,h,W,k;return{setters:[l=>{e=l.c,t=l.f,n=l.h,i=l._},l=>{c=l.k,s=l.P,u=l.r,o=l.R,g=l.V,r=l.S,d=l.W,f=l.aj,m=l.ak,y=l.U,p=l.a3,_=l.j,v=l.a4},l=>{j=l.w,x=l.m},l=>{S=l.q,b=l.t,h=l.v},l=>{W=l.au,k=l.aC},null,null],execute:function(){const a={class:"p-20px"},w={class:"flex mb-16px"},$={class:"flex-1 mr-16px"};l("default",c({__name:"config",setup(l){const{t:c}=s(),C=u(""),P=async()=>{""!==C.value.trim()?(await h({text:C.value}),C.value="",R()):x.error(c("Waf.Setting.config_81"))},{table:U,columns:B,setLoading:L}=e([{key:"rule",title:"URL"},t({width:80,options:l=>[{label:c("Public.Btn.Del"),onClick:async()=>{await S({text:l.rule}),R()}}]})]),R=async()=>{try{L(!0);const{message:l}=await b();j(l)&&(U.data=l.map(l=>({rule:l})))}finally{L(!1)}};return R(),(l,e)=>{const t=W,c=k,s=n,u=i;return g(),o("div",a,[r("div",w,[r("div",$,[d(t,{value:y(C),"onUpdate:value":e[0]||(e[0]=l=>m(C)?C.value=l:null),placeholder:l.$t("Waf.Setting.config_78"),onKeyup:f(P,["enter"])},null,8,["value","placeholder"])]),d(c,{type:"primary",onClick:P},{default:p(()=>[_(v(l.$t("Public.Btn.Add")),1)]),_:1})]),d(s,{"max-height":368,loading:y(U).loading,data:y(U).data,columns:y(B)},null,8,["loading","data","columns"]),d(u,{class:"mt-16px"},{default:p(()=>[r("li",null,v(l.$t("Waf.Setting.config_77")),1),r("li",null,v(l.$t("Waf.Setting.config_79")),1),r("li",null,v(l.$t("Waf.Setting.config_80")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/config-legacy8.js b/BTPanel/static/vite/js/config-legacy8.js index b2629a83..37de4596 100644 --- a/BTPanel/static/vite/js/config-legacy8.js +++ b/BTPanel/static/vite/js/config-legacy8.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./setting-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,a){"use strict";var t,l,i,n,c,u,r,o,p,d,s,m,g,v,A,b,f,y,I,h,S,k,R,w,M,D,O,W,j,x,C,Z,G;return{setters:[e=>{t=e.c,l=e.f,i=e.h,n=e._,c=e.u},e=>{u=e.p,r=e.w},e=>{o=e.B,p=e.C,d=e.D},e=>{s=e._},e=>{m=e.k,g=e.ad,v=e.ae,A=e.c,b=e.R,f=e.V,y=e.S,I=e.a4,h=e.H,S=e.U,k=e.F,R=e.O,w=e.P,M=e.r,D=e.e,O=e.W,W=e.a3,j=e.j},e=>{x=e.dR,C=e.dV,Z=e.au,G=e.aC},null,null],execute:function(){var a=document.createElement("style");a.textContent=".param-list[data-v-d6f769f3]{display:flex;flex-wrap:wrap;gap:10px;border:1px solid #ccc;padding:16px;border-radius:4px}.param-list .param-item[data-v-d6f769f3]{display:flex;align-items:center;justify-content:center;width:90px;height:30px;border-radius:4px;border:1px solid #ddd;cursor:pointer}.param-list .param-item.active[data-v-d6f769f3]{border:1px solid #20a53a;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDAgNzkuMTYwNDUxLCAyMDE3LzA1LzA2LTAxOjA4OjIxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCkiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTA5LTI5VDEyOjIzOjI5KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0wOS0yOVQxMjoyNTo1MSswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wOS0yOVQxMjoyNTo1MSswODowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMDkwMWRiNS04NTMxLTRkYmUtOGVlNy0wZDU2ODhjNzI1YjEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDA5MDFkYjUtODUzMS00ZGJlLThlZTctMGQ1Njg4YzcyNWIxIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MDA5MDFkYjUtODUzMS00ZGJlLThlZTctMGQ1Njg4YzcyNWIxIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowMDkwMWRiNS04NTMxLTRkYmUtOGVlNy0wZDU2ODhjNzI1YjEiIHN0RXZ0OndoZW49IjIwMTktMDktMjlUMTI6MjM6MjkrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKSIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7zCy1OAAAB+0lEQVRIib3UPWgUQRjG8f/uHkkUm5yViYiEubM8VLSwCjtiJ4JYCEpEsD7P+JlCSRMvxnyYOq2FYmUlSMzggYWF2p4uiCgBwSKiJkrO7Fhsgrlk73Zvbm+fbmbf9/3NDuxCyhHKHdVaY6eLylmwikB6cIDq4sY6FVgo+WAzmgq8jl7eut9ROK/kTBjaUTiv5IyPLjV63hFYKDndDO0ILJScBn0lqi5ROC6aKCyUOxUXTQwOUIZb6WkbFkpOtoq2DQeovmrSawwLJe+bosbwOnrNFDWChXIn4qKH/W68gRKH/K724ADlepzarNXNo0IZ9p3k8f4L5rBQ8l5c1MHhtRiG3QX4XuXYl4dmcIDqG1uH3151ttVaWFT3DkH/cVj5SvFNiW/6d+twGApQ7TvLkPsUb623bv9DrwRxHmq/eFk5xzOnFjq3KSyUHA9DbWzQa5DZAe4TvF1HAfC6DkBhBPy/sHCGSz2NZ1sR6M1mB/N2HoQjE2DZsPgc9kiwHahcJOd/bkQueYPz2dA3zitZjkIBcivv4MVpqC1D/4kAfXunCfo/2+C8kmUffSuycwPP/KSycAqWF+H9HLkfr2L11V21UPIu6JG46OYM0MMnVvHxo8glb3A+m0kCBfjIn5bq7QB1x9pBTZIRyh0l+COFf3DJpwZgaa1T8urzD5CgrJIeM8AQAAAAAElFTkSuQmCC);background-size:15px;background-repeat:no-repeat;background-position:right -1px bottom -1px}\n/*$vite$:1*/",document.head.appendChild(a);const T={class:"param-list"},N=["onClick"],L=u(m({__name:"param",props:{value:{default:()=>[]},valueModifiers:{}},emits:g(["change"],["update:value"]),setup(e,{emit:a}){const t=a,l=v(e,"value"),i=["POST","GET","PUT","OPTIONS","HEAD","DELETE","TRACE","PATCH","MOVE","COPY","LINK","UNLINK","WRAPPED","PROPFIND","PROPPATCH","MKCOL","CONNECT","SRARCH"],n=A(()=>i.length===l.value.length),c=()=>{l.value=[],n.value||(l.value=i.map(e=>e)),t("change")};return(e,a)=>(f(),b("div",T,[y("div",{class:h(["param-item",{active:S(n)}]),onClick:c},I(e.$t("Public.SelectAll")),3),(f(),b(k,null,R(i,e=>{return y("div",{key:e,class:h(["param-item",{active:(a=e,l.value.includes(a))}]),onClick:a=>(e=>{const a=l.value.indexOf(e);-1===a?l.value.push(e):l.value.splice(a,1),t("change")})(e)},I(e),11,N);var a}),64))]))}}),[["__scopeId","data-v-d6f769f3"]]),Y={class:"p-20px"},H={class:"w-100px mr-8px"},P={class:"w-220px"},U={class:"w-328px"},z=m({__name:"form",props:{isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(e,{expose:a,emit:t}){const l=t,{t:i}=w(),n=M(null),c=M(null),u=D({type:"refuse",url:"",param:[]}),r=[{label:i("Waf.Setting.config_111"),value:"refuse"},{label:i("Waf.Setting.config_110"),value:"accept"}],p={url:{trigger:["blur","input"],validator:()=>""!==u.url.trim()||new Error(i("Waf.Setting.config_55"))},param:{validator:()=>0!==u.param.length||new Error(i("Waf.Setting.config_112"))}},d=()=>{c.value?.restoreValidation()};return a({onConfirm:async()=>{await(n.value?.validate()),await o({type:u.type,url:u.url,param:u.param.join(",")}),l("refresh")}}),(e,a)=>{const t=C,l=Z,i=x,o=s;return f(),b("div",Y,[O(o,{ref_key:"formRef",ref:n,model:S(u),rules:p},{default:W(()=>[O(i,{label:e.$t("Waf.Setting.config_73"),path:"url"},{default:W(()=>[y("div",H,[O(t,{value:S(u).type,"onUpdate:value":a[0]||(a[0]=e=>S(u).type=e),options:r},null,8,["value"])]),y("div",P,[O(l,{value:S(u).url,"onUpdate:value":a[1]||(a[1]=e=>S(u).url=e),placeholder:"URL"},null,8,["value"])])]),_:1},8,["label"]),O(i,{ref_key:"paramItemRef",ref:c,label:e.$t("Waf.Setting.config_65"),path:"param"},{default:W(()=>[y("div",U,[O(L,{value:S(u).param,"onUpdate:value":a[2]||(a[2]=e=>S(u).param=e),onChange:d},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),E={class:"p-20px"},F={class:"flex mb-16px"};e("default",m({__name:"config",setup(e){const{t:a}=w(),u=async()=>{var e;e={title:a("Waf.Setting.config_64"),data:{isEdit:!1}},c({title:e.title,width:550,footer:!0,data:{...e.data,onRefresh:()=>{g()}},component:z})},{table:o,columns:s,setLoading:m}=t([{key:"url",title:"URL",ellipsis:{tooltip:!0}},{key:"type",title:a("Waf.Setting.config_73"),width:80,ellipsis:{tooltip:!0},render:e=>"refuse"===e.type?a("Waf.Setting.config_111"):a("Waf.Setting.config_110")},{key:"mode",title:a("Waf.Setting.config_93"),width:216,ellipsis:{tooltip:!0},render:e=>Object.entries(e.mode).map(([,e])=>e).join(", ")},l({width:60,options:e=>[{label:a("Public.Btn.Del"),onClick:async()=>{await p({url:e.url}),g()}}]})]),g=async()=>{try{m(!0);const{message:e}=await d();o.data=r(e)?e:[]}finally{m(!1)}};return g(),(e,a)=>{const t=G,l=i,c=n;return f(),b("div",E,[y("div",F,[O(t,{type:"primary",onClick:u},{default:W(()=>[j(I(e.$t("Public.Btn.Add")),1)]),_:1})]),O(l,{"max-height":270,loading:S(o).loading,data:S(o).data,columns:S(s)},null,8,["loading","data","columns"]),O(c,{class:"mt-12px"},{default:W(()=>[y("li",null,I(e.$t("Waf.Setting.config_108")),1),y("li",null,I(e.$t("Waf.Setting.config_109")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./setting-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,a){"use strict";var t,l,i,n,c,u,r,o,p,d,s,m,g,v,A,b,f,y,I,h,S,k,R,w,M,D,O,W,j,x,C,Z,G;return{setters:[e=>{t=e.c,l=e.f,i=e.h,n=e._,c=e.u},e=>{u=e.p,r=e.w},e=>{o=e.B,p=e.C,d=e.D},e=>{s=e._},e=>{m=e.k,g=e.ad,v=e.ae,A=e.c,b=e.R,f=e.V,y=e.S,I=e.a4,h=e.H,S=e.U,k=e.F,R=e.O,w=e.P,M=e.r,D=e.e,O=e.W,W=e.a3,j=e.j},e=>{x=e.dR,C=e.dV,Z=e.au,G=e.aC},null,null],execute:function(){var a=document.createElement("style");a.textContent=".param-list[data-v-d6f769f3]{display:flex;flex-wrap:wrap;gap:10px;border:1px solid #ccc;padding:16px;border-radius:4px}.param-list .param-item[data-v-d6f769f3]{display:flex;align-items:center;justify-content:center;width:90px;height:30px;border-radius:4px;border:1px solid #ddd;cursor:pointer}.param-list .param-item.active[data-v-d6f769f3]{border:1px solid #20a53a;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDAgNzkuMTYwNDUxLCAyMDE3LzA1LzA2LTAxOjA4OjIxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCkiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTA5LTI5VDEyOjIzOjI5KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0wOS0yOVQxMjoyNTo1MSswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wOS0yOVQxMjoyNTo1MSswODowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMDkwMWRiNS04NTMxLTRkYmUtOGVlNy0wZDU2ODhjNzI1YjEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDA5MDFkYjUtODUzMS00ZGJlLThlZTctMGQ1Njg4YzcyNWIxIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MDA5MDFkYjUtODUzMS00ZGJlLThlZTctMGQ1Njg4YzcyNWIxIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowMDkwMWRiNS04NTMxLTRkYmUtOGVlNy0wZDU2ODhjNzI1YjEiIHN0RXZ0OndoZW49IjIwMTktMDktMjlUMTI6MjM6MjkrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKSIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7zCy1OAAAB+0lEQVRIib3UPWgUQRjG8f/uHkkUm5yViYiEubM8VLSwCjtiJ4JYCEpEsD7P+JlCSRMvxnyYOq2FYmUlSMzggYWF2p4uiCgBwSKiJkrO7Fhsgrlk73Zvbm+fbmbf9/3NDuxCyhHKHdVaY6eLylmwikB6cIDq4sY6FVgo+WAzmgq8jl7eut9ROK/kTBjaUTiv5IyPLjV63hFYKDndDO0ILJScBn0lqi5ROC6aKCyUOxUXTQwOUIZb6WkbFkpOtoq2DQeovmrSawwLJe+bosbwOnrNFDWChXIn4qKH/W68gRKH/K724ADlepzarNXNo0IZ9p3k8f4L5rBQ8l5c1MHhtRiG3QX4XuXYl4dmcIDqG1uH3151ttVaWFT3DkH/cVj5SvFNiW/6d+twGApQ7TvLkPsUb623bv9DrwRxHmq/eFk5xzOnFjq3KSyUHA9DbWzQa5DZAe4TvF1HAfC6DkBhBPy/sHCGSz2NZ1sR6M1mB/N2HoQjE2DZsPgc9kiwHahcJOd/bkQueYPz2dA3zitZjkIBcivv4MVpqC1D/4kAfXunCfo/2+C8kmUffSuycwPP/KSycAqWF+H9HLkfr2L11V21UPIu6JG46OYM0MMnVvHxo8glb3A+m0kCBfjIn5bq7QB1x9pBTZIRyh0l+COFf3DJpwZgaa1T8urzD5CgrJIeM8AQAAAAAElFTkSuQmCC);background-size:15px;background-repeat:no-repeat;background-position:right -1px bottom -1px}\n/*$vite$:1*/",document.head.appendChild(a);const T={class:"param-list"},N=["onClick"],L=u(m({__name:"param",props:{value:{default:()=>[]},valueModifiers:{}},emits:g(["change"],["update:value"]),setup(e,{emit:a}){const t=a,l=v(e,"value"),i=["POST","GET","PUT","OPTIONS","HEAD","DELETE","TRACE","PATCH","MOVE","COPY","LINK","UNLINK","WRAPPED","PROPFIND","PROPPATCH","MKCOL","CONNECT","SRARCH"],n=A(()=>i.length===l.value.length),c=()=>{l.value=[],n.value||(l.value=i.map(e=>e)),t("change")};return(e,a)=>(f(),b("div",T,[y("div",{class:h(["param-item",{active:S(n)}]),onClick:c},I(e.$t("Public.SelectAll")),3),(f(),b(k,null,R(i,e=>{return y("div",{key:e,class:h(["param-item",{active:(a=e,l.value.includes(a))}]),onClick:a=>(e=>{const a=l.value.indexOf(e);-1===a?l.value.push(e):l.value.splice(a,1),t("change")})(e)},I(e),11,N);var a}),64))]))}}),[["__scopeId","data-v-d6f769f3"]]),Y={class:"p-20px"},H={class:"w-100px mr-8px"},P={class:"w-220px"},U={class:"w-328px"},z=m({__name:"form",props:{isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(e,{expose:a,emit:t}){const l=t,{t:i}=w(),n=M(null),c=M(null),u=D({type:"refuse",url:"",param:[]}),r=[{label:i("Waf.Setting.config_111"),value:"refuse"},{label:i("Waf.Setting.config_110"),value:"accept"}],p={url:{trigger:["blur","input"],validator:()=>""!==u.url.trim()||new Error(i("Waf.Setting.config_55"))},param:{validator:()=>0!==u.param.length||new Error(i("Waf.Setting.config_112"))}},d=()=>{c.value?.restoreValidation()};return a({onConfirm:async()=>{await(n.value?.validate()),await o({type:u.type,url:u.url,param:u.param.join(",")}),l("refresh")}}),(e,a)=>{const t=C,l=Z,i=x,o=s;return f(),b("div",Y,[O(o,{ref_key:"formRef",ref:n,model:S(u),rules:p},{default:W(()=>[O(i,{label:e.$t("Waf.Setting.config_73"),path:"url"},{default:W(()=>[y("div",H,[O(t,{value:S(u).type,"onUpdate:value":a[0]||(a[0]=e=>S(u).type=e),options:r},null,8,["value"])]),y("div",P,[O(l,{value:S(u).url,"onUpdate:value":a[1]||(a[1]=e=>S(u).url=e),placeholder:"URL"},null,8,["value"])])]),_:1},8,["label"]),O(i,{ref_key:"paramItemRef",ref:c,label:e.$t("Waf.Setting.config_65"),path:"param"},{default:W(()=>[y("div",U,[O(L,{value:S(u).param,"onUpdate:value":a[2]||(a[2]=e=>S(u).param=e),onChange:d},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),E={class:"p-20px"},F={class:"flex mb-16px"};e("default",m({__name:"config",setup(e){const{t:a}=w(),u=async()=>{var e;e={title:a("Waf.Setting.config_64"),data:{isEdit:!1}},c({title:e.title,width:550,footer:!0,data:{...e.data,onRefresh:()=>{g()}},component:z})},{table:o,columns:s,setLoading:m}=t([{key:"url",title:"URL",ellipsis:{tooltip:!0}},{key:"type",title:a("Waf.Setting.config_73"),width:80,ellipsis:{tooltip:!0},render:e=>"refuse"===e.type?a("Waf.Setting.config_111"):a("Waf.Setting.config_110")},{key:"mode",title:a("Waf.Setting.config_93"),width:216,ellipsis:{tooltip:!0},render:e=>Object.entries(e.mode).map(([,e])=>e).join(", ")},l({width:60,options:e=>[{label:a("Public.Btn.Del"),onClick:async()=>{await p({url:e.url}),g()}}]})]),g=async()=>{try{m(!0);const{message:e}=await d();o.data=r(e)?e:[]}finally{m(!1)}};return g(),(e,a)=>{const t=G,l=i,c=n;return f(),b("div",E,[y("div",F,[O(t,{type:"primary",onClick:u},{default:W(()=>[j(I(e.$t("Public.Btn.Add")),1)]),_:1})]),O(l,{"max-height":270,loading:S(o).loading,data:S(o).data,columns:S(s)},null,8,["loading","data","columns"]),O(c,{class:"mt-12px"},{default:W(()=>[y("li",null,I(e.$t("Waf.Setting.config_108")),1),y("li",null,I(e.$t("Waf.Setting.config_109")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/config-legacy9.js b/BTPanel/static/vite/js/config-legacy9.js index a6586368..77fb7bab 100644 --- a/BTPanel/static/vite/js/config-legacy9.js +++ b/BTPanel/static/vite/js/config-legacy9.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./setting-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(l,a){"use strict";var e,t,n,i,c,u,s,o,r,g,d,f,m,y,p,_,v,j,x,S,b,h,W,k;return{setters:[l=>{e=l.c,t=l.f,n=l.h,i=l._},l=>{c=l.k,u=l.P,s=l.r,o=l.R,r=l.V,g=l.S,d=l.W,f=l.aj,m=l.ak,y=l.U,p=l.a3,_=l.j,v=l.a4},l=>{j=l.w,x=l.m},l=>{S=l.E,b=l.F,h=l.G},l=>{W=l.au,k=l.aC},null,null],execute:function(){const a={class:"p-20px"},w={class:"flex mb-16px"},$={class:"flex-1 mr-16px"};l("default",c({__name:"config",setup(l){const{t:c}=u(),C=s(""),P=async()=>{""!==C.value.trim()?(await h({url_find:C.value}),C.value="",R()):x.error(c("Waf.Setting.config_81"))},{table:U,columns:B,setLoading:L}=e([{key:"url",title:"URL"},t({width:80,options:l=>[{label:c("Public.Btn.Del"),onClick:async()=>{await S({url_find:l.url}),R()}}]})]),R=async()=>{try{L(!0);const{message:l}=await b();j(l)&&(U.data=l.map(l=>({url:l})))}finally{L(!1)}};return R(),(l,e)=>{const t=W,c=k,u=n,s=i;return r(),o("div",a,[g("div",w,[g("div",$,[d(t,{value:y(C),"onUpdate:value":e[0]||(e[0]=l=>m(C)?C.value=l:null),placeholder:l.$t("Waf.Setting.config_116"),onKeyup:f(P,["enter"])},null,8,["value","placeholder"])]),d(c,{type:"primary",onClick:P},{default:p(()=>[_(v(l.$t("Public.Btn.Add")),1)]),_:1})]),d(u,{"max-height":368,loading:y(U).loading,data:y(U).data,columns:y(B)},null,8,["loading","data","columns"]),d(s,{class:"mt-16px"},{default:p(()=>[g("li",null,v(l.$t("Waf.Setting.config_117")),1),g("li",null,v(l.$t("Waf.Setting.config_118")),1),g("li",null,v(l.$t("Waf.Setting.config_119")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./setting-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(l,a){"use strict";var e,t,n,i,c,u,s,o,r,g,d,f,m,y,p,_,v,j,x,S,b,h,W,k;return{setters:[l=>{e=l.c,t=l.f,n=l.h,i=l._},l=>{c=l.k,u=l.P,s=l.r,o=l.R,r=l.V,g=l.S,d=l.W,f=l.aj,m=l.ak,y=l.U,p=l.a3,_=l.j,v=l.a4},l=>{j=l.w,x=l.m},l=>{S=l.E,b=l.F,h=l.G},l=>{W=l.au,k=l.aC},null,null],execute:function(){const a={class:"p-20px"},w={class:"flex mb-16px"},$={class:"flex-1 mr-16px"};l("default",c({__name:"config",setup(l){const{t:c}=u(),C=s(""),P=async()=>{""!==C.value.trim()?(await h({url_find:C.value}),C.value="",R()):x.error(c("Waf.Setting.config_81"))},{table:U,columns:B,setLoading:L}=e([{key:"url",title:"URL"},t({width:80,options:l=>[{label:c("Public.Btn.Del"),onClick:async()=>{await S({url_find:l.url}),R()}}]})]),R=async()=>{try{L(!0);const{message:l}=await b();j(l)&&(U.data=l.map(l=>({url:l})))}finally{L(!1)}};return R(),(l,e)=>{const t=W,c=k,u=n,s=i;return r(),o("div",a,[g("div",w,[g("div",$,[d(t,{value:y(C),"onUpdate:value":e[0]||(e[0]=l=>m(C)?C.value=l:null),placeholder:l.$t("Waf.Setting.config_116"),onKeyup:f(P,["enter"])},null,8,["value","placeholder"])]),d(c,{type:"primary",onClick:P},{default:p(()=>[_(v(l.$t("Public.Btn.Add")),1)]),_:1})]),d(u,{"max-height":368,loading:y(U).loading,data:y(U).data,columns:y(B)},null,8,["loading","data","columns"]),d(s,{class:"mt-16px"},{default:p(()=>[g("li",null,v(l.$t("Waf.Setting.config_117")),1),g("li",null,v(l.$t("Waf.Setting.config_118")),1),g("li",null,v(l.$t("Waf.Setting.config_119")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/config.js b/BTPanel/static/vite/js/config.js index 05e91886..10f75a55 100644 --- a/BTPanel/static/vite/js/config.js +++ b/BTPanel/static/vite/js/config.js @@ -1 +1 @@ -import{_ as e,a as n}from"./index107.js?v=1760428868419";import{ax as a,O as l,ay as t,az as i,aA as s,aB as o,a3 as u,m as r,d,aC as c,aD as p,n as _,aE as f,u as m,aF as x,_ as v,aG as b,aH as g,aI as C,aJ as P,aK as w,aL as y,aM as $,aN as k,N as h,M as U,aO as S,aP as j,aQ as B,p as M}from"./page_layout.js?v=1760428868419";import{a as I,u as q,_ as E,n as z,c as D,h as H}from"./public.js?v=1760428868419";import{k as R,P as A,r as F,a2 as O,V as N,a3 as T,S as V,a4 as L,W as G,U as J,R as K,j as Q,e as W,F as Y,an as X,a0 as Z,l as ee,v as ne,a5 as ae,c as le}from"./vue.js?v=1760428868419";import{dj as te,dR as ie,au as se,aC as oe,df as ue,dV as re,av as de,dY as ce}from"./naive.js?v=1760428868419";import{p as pe,_ as _e,f as fe,h as me,g as xe,m as ve}from"./index106.js?v=1760428868419";import{_ as be}from"./index.vue_vue_type_script_setup_true_lang9.js?v=1760428868419";import{_ as ge}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{_ as Ce}from"./index99.js?v=1760428868419";import{_ as Pe}from"./index.vue_vue_type_script_setup_true_lang6.js?v=1760428868419";import{_ as we}from"./index.vue_vue_type_script_setup_true_lang10.js?v=1760428868419";import{_ as ye}from"./index.vue_vue_type_script_setup_true_lang2.js?v=1760428868419";const $e=R({__name:"index",setup(n){const{t:t}=A(),i=F(!1),s=()=>{I({title:t("Config.Panel.index_2"),content:t("Config.Panel.index_4"),onConfirm:async()=>{await a(),l()}})};return(n,a)=>{const l=te,t=e;return N(),O(t,{label:n.$t("Config.Panel.index_2")},{content:T(()=>[G(l,{value:J(i),"onUpdate:value":s},null,8,["value"])]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_3")),1)]),_:1},8,["label"])}}}),ke=R({__name:"index",setup(n){const a=async e=>{await t(),pe.value.listenIpv6=e};return(n,l)=>{const t=te,i=e;return N(),O(i,{label:n.$t("Config.Panel.index_5")},{content:T(()=>[G(t,{value:J(pe).listenIpv6,"onUpdate:value":a},null,8,["value"])]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_6")),1)]),_:1},8,["label"])}}}),he=R({__name:"index",setup(n){const a=async e=>{await i({cdn_switch:e?1:0}),pe.value.cdn_status=e};return(n,l)=>{const t=te,i=e;return N(),O(i,{label:n.$t("Config.Panel.index_98")},{content:T(()=>[G(t,{value:J(pe).cdn_status,"onUpdate:value":a},null,8,["value"])]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_99"))+"(Only valid for panel)",1)]),_:1},8,["label"])}}}),Ue=R({__name:"index",setup(n){const{t:a}=A(),l=e=>{I({width:e?480:380,title:a("Config.Panel.index_83",[a(e?"Config.Panel.index_83_1":"Config.Panel.index_83_2")]),content:a(e?"Config.Panel.index_85":"Config.Panel.index_84"),onConfirm:async()=>{await s(),pe.value.offlineMode=e}})};return(n,a)=>{const t=te,i=e;return N(),O(i,{label:n.$t("Config.Panel.index_7")},{content:T(()=>[G(t,{value:J(pe).offlineMode,"onUpdate:value":l},null,8,["value"])]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_8")),1)]),_:1},8,["label"])}}}),Se={class:"p-20px"},je={class:"text-error"},Be=R({__name:"confirm",setup(e,{expose:n}){const a=F();return n({onConfirm:async()=>{await a.value.validate(),await o(),pe.value.debugMode=!0}}),(e,n)=>{const l=be,t=_e,i=fe;return N(),K("div",Se,[G(l,{class:"mb-20px"},{default:T(()=>[Q(L(e.$t("Config.Panel.index_14")),1)]),_:1}),G(t,{class:"mb-20px"},{default:T(()=>[V("li",je,L(e.$t("Config.Panel.index_15")),1),V("li",null,L(e.$t("Config.Panel.index_16")),1),V("li",null,L(e.$t("Config.Panel.index_17")),1)]),_:1}),G(i,{ref_key:"riskRef",ref:a},{default:T(()=>[Q(L(e.$t("Config.Panel.index_18")),1)]),_:1},512)])}}}),Me=R({__name:"index",setup(n){const{t:a}=A(),l=e=>{e?q({title:a("Config.Panel.index_11"),width:440,footer:!0,component:Be}):I({title:a("Config.Panel.index_12"),content:a("Config.Panel.index_13"),onConfirm:async()=>{await o(),pe.value.debugMode=e}})};return(n,a)=>{const t=te,i=e;return N(),O(i,{label:n.$t("Config.Panel.index_9")},{content:T(()=>[G(t,{value:J(pe).debugMode,"onUpdate:value":l},null,8,["value"])]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_10")),1)]),_:1},8,["label"])}}}),Ie={class:"p-20px"},qe={class:"w-320px"},Ee={class:"inline-block text-center leading-[1.4]"},ze={class:"w-320px"},De=R({__name:"config",setup(e){const{t:n}=A(),a=W({token:"",limit_addr:""}),l=async e=>{await u({t_type:2}),pe.value.apiInterface=e},t=()=>{I({title:n("Config.Panel.index_33"),content:()=>G(Y,null,[G("div",{class:"mb-8px"},[n("Config.Panel.index_86")]),G("div",{class:"text-error"},[n("Config.Panel.index_87")])]),onConfirm:async()=>{const{message:e}=await u({t_type:1},!1);r.success({content:n("Config.Panel.index_34"),close:!0}),d(e)&&(a.token=e.result)}})},i=async()=>{await u({t_type:3,limit_addr:a.limit_addr})};return(async()=>{const{message:e}=await c();d(e)&&(a.token=e.token,a.limit_addr=e.limit_addr)})(),(e,n)=>{const s=te,o=ie,u=oe,r=se,d=Ce,c=ge,p=E;return N(),K("div",Ie,[G(c,{model:J(a)},{default:T(()=>[G(o,{label:e.$t("Config.Panel.index_19")},{default:T(()=>[G(s,{value:J(pe).apiInterface,"onUpdate:value":l},null,8,["value"])]),_:1},8,["label"]),G(o,{label:e.$t("Config.Panel.index_26")},{default:T(()=>[V("div",qe,[G(r,{value:J(a).token,"onUpdate:value":n[0]||(n[0]=e=>J(a).token=e),readonly:!0},{suffix:T(()=>[G(u,{class:"h-22px px-5px",type:"primary",size:"small",onClick:t},{default:T(()=>[Q(L(e.$t("Public.Btn.Reset")),1)]),_:1})]),_:1},8,["value"])])]),_:1},8,["label"]),G(o,{class:"form-item"},{label:T(()=>[V("div",Ee,[Q(L(e.$t("Config.Panel.index_27")),1),n[2]||(n[2]=V("br",null,null,-1)),Q(" "+L(e.$t("Config.Panel.index_28")),1)])]),default:T(()=>[V("div",ze,[G(d,{value:J(a).limit_addr,"onUpdate:value":n[1]||(n[1]=e=>J(a).limit_addr=e),rows:4},null,8,["value"])])]),_:1}),G(o,{label:" ","show-feedback":!1},{default:T(()=>[G(u,{type:"primary",onClick:i},{default:T(()=>[Q(L(e.$t("Public.Btn.Save")),1)]),_:1})]),_:1})]),_:1},8,["model"]),G(p,{class:"mt-20px"},{default:T(()=>[V("li",null,L(e.$t("Config.Panel.index_29")),1),V("li",null,L(e.$t("Config.Panel.index_30")),1),V("li",null,L(e.$t("Config.Panel.index_31")),1),V("li",null,[Q(L(e.$t("Config.Panel.index_32"))+" ",1),n[3]||(n[3]=V("a",{class:"bt-link",href:"https://www.aapanel.com/forum/d/482-api-interface-tutorial",target:"_blank"}," https://www.aapanel.com/forum/d/482-api-interface-tutorial ",-1))])]),_:1})])}}}),He={class:"bt-link",href:"https://www.aapanel.com/forum/d/482-api-interface-tutorial",target:"_blank"},Re=R({__name:"index",setup(n){const{t:a}=A(),l=async e=>{await u({t_type:2}),pe.value.apiInterface=e,e&&t()},t=()=>{q({title:a("Config.Panel.index_25"),width:540,component:De})};return(n,a)=>{const i=te,s=oe,o=e;return N(),O(o,{label:n.$t("Config.Panel.index_19")},{content:T(()=>[G(i,{value:J(pe).apiInterface,"onUpdate:value":l},null,8,["value"]),G(s,{class:"ml-12px h-24px px-8px",size:"small",onClick:t},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_21")),1),V("a",He,L(n.$t("Config.Panel.index_24")),1)]),_:1},8,["label"])}}}),Ae={class:"px-20px pt-28px pb-8px"},Fe={class:"w-200px"},Oe=R({__name:"set",setup(e,{expose:n}){const a=F(null),{t:l}=A(),t=W({backup_number:pe.value.backup_info.backup_number}),i={backup_number:{required:!0,type:"number",trigger:["blur","input"],message:l("Config.Panel.index_94")}};return n({onConfirm:async()=>{var e;await(null==(e=a.value)?void 0:e.validate()),pe.value.backup_info.backup_number=t.backup_number,await p(me())}}),(e,n)=>{const l=ue,s=ie,o=ge;return N(),K("div",Ae,[G(o,{ref_key:"formRef",ref:a,model:J(t),rules:i,"require-mark-placement":"left"},{default:T(()=>[G(s,{label:e.$t("Mail.Mass.index_46"),path:"backup_number","show-require-mark":!0},{default:T(()=>[V("div",Fe,[G(l,{value:J(t).backup_number,"onUpdate:value":n[0]||(n[0]=e=>J(t).backup_number=e),min:1,"show-button":!1},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),Ne={class:"text-default"},Te={key:0},Ve={class:"mx-12px"},Le={class:"text-error"},Ge=R({__name:"index",setup(n){const{t:a}=A(),l=async e=>{const n=async()=>{pe.value.backup_info.auto_backup=e,await p(me()),xe()};e?await n():I({title:a("Config.Panel.index_96"),content:a("Config.Panel.index_95"),onConfirm:n})},t=()=>{q({title:a("Config.Panel.index_90"),width:420,footer:!0,component:Oe})},i=async()=>{I({title:a("Config.Panel.index_92"),content:a("Config.Panel.index_93"),onConfirm:async()=>{await f(),pe.value.backup_info.total_size=0}})};return(n,a)=>{const s=te,o=oe,u=e;return N(),O(u,{label:n.$t("Config.Panel.index_88")},{content:T(()=>[G(s,{value:J(pe).backup_info.auto_backup,"onUpdate:value":l,"checked-value":1,"unchecked-value":0},null,8,["value"]),G(o,{class:"mx-12px",type:"primary",onClick:t},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1}),G(o,{onClick:i},{default:T(()=>[Q(L(n.$t("Config.Panel.index_89")),1)]),_:1})]),desc:T(()=>[V("div",Ne,[J(pe).backup_info.auto_backup?(N(),K("span",Te,L(n.$t("Config.Panel.index_90"))+":"+L(J(pe).backup_info.backup_number),1)):X("",!0),V("span",Ve,L(n.$t("Config.Panel.index_91"))+":"+L(J(_)(J(pe).backup_info.total_size)),1),V("span",Le,L(n.$t("Config.Panel.index_97")),1)])]),_:1},8,["label"])}}}),Je={class:"w-160px"},Ke=R({__name:"index",setup(n){const a=m(),{theme:l}=Z(a),t=[{label:"Fresh",value:"fresh"},{label:"Classic",value:"classic"}],i=async e=>{await x({name:e}),l.value=e};return(n,a)=>{const s=re,o=e;return N(),O(o,{label:"Theme"},{content:T(()=>[V("div",Je,[G(s,{value:J(l),options:t,"onUpdate:value":i},null,8,["value"])])]),_:1})}}}),Qe={class:"inline-flex items-center"},We={class:"mr-5px"},Ye={class:"w-160px mr-16px"},Xe=R({__name:"index",setup(n){const a=async e=>{await b({name:e}),l()};return(n,l)=>{const t=v,i=re,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_35")},{label:T(()=>[V("div",Qe,[V("span",We,L(n.$t("Config.Panel.index_35")),1),G(t,{name:"base-lang",size:"18",color:"#666"})])]),content:T(()=>[V("div",Ye,[G(i,{value:J(pe).lang,"onUpdate:value":[l[0]||(l[0]=e=>J(pe).lang=e),a],options:J(pe).langList},null,8,["value","options"])]),G(Pe)]),_:1},8,["label"])}}}),Ze={class:"w-260px"},en=R({__name:"index",setup(n){const{t:a}=A(),t=async()=>{pe.value.webname.includes("/")||pe.value.webname.includes("\\")?r.error(a("Config.Panel.index_38")):(await g(me()),l())};return(n,a)=>{const l=se,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_36")},{content:T(()=>[V("div",Ze,[G(l,{value:J(pe).webname,"onUpdate:value":a[0]||(a[0]=e=>J(pe).webname=e),placeholder:""},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:t},{default:T(()=>[Q(L(n.$t("Public.Btn.Save")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_37")),1)]),_:1},8,["label"])}}}),nn={class:"p-20px"},an={class:"w-140px"},ln={class:"text-error"},tn=R({__name:"set",setup(e,{expose:n}){const{t:a}=A(),t=W({type:null,time:5}),i=[{label:a("Public.Unit.Hours",[12]),value:a("Public.Unit.Hour",[12]),time:43200},{label:a("Public.Unit.Hours",[24]),value:a("Public.Unit.Hours",[24]),time:86400},{label:a("Public.Unit.Hours",[72]),value:a("Public.Unit.Hours",[72]),time:259200},{label:a("Public.Unit.Days",[7]),value:a("Public.Unit.Days",[7]),time:604800},{label:a("Public.Unit.Days",[30]),value:a("Public.Unit.Days",[30]),time:2592e3},{label:a("Config.Panel.index_43"),value:a("Config.Panel.index_43"),time:0}],s=()=>{t.type===a("Config.Panel.index_43")&&(t.time=5)};var o;return o=pe.value.session_timeout,i.filter(e=>e.label!==a("Config.Panel.index_43")).map(e=>e.label).includes(o)?t.type=pe.value.session_timeout:(t.type=a("Config.Panel.index_43"),t.time=pe.value.session_timeout_source/60),n({onConfirm:async()=>{var e;let n=0;n=t.type===a("Config.Panel.index_43")?60*t.time:(null==(e=i.find(e=>e.label===t.type))?void 0:e.time)||0;const s=me();return s.session_timeout=n,await C(s),l(),!1}}),(e,n)=>{const a=re,l=ue,o=ce,u=de,r=ie,d=ge;return N(),K("div",nn,[G(d,null,{default:T(()=>[G(r,{label:e.$t("Config.Panel.index_39")},{default:T(()=>[V("div",an,[G(a,{value:J(t).type,"onUpdate:value":[n[0]||(n[0]=e=>J(t).type=e),s],options:i},null,8,["value"])]),ee(G(u,{class:"w-auto ml-10px"},{default:T(()=>[G(l,{value:J(t).time,"onUpdate:value":n[1]||(n[1]=e=>J(t).time=e),class:"w-80px","show-button":!1},null,8,["value"]),G(o,null,{default:T(()=>[Q(L(e.$t("Public.Unit.Minute",J(t).time)),1)]),_:1})]),_:1},512),[[ne,J(t).type===e.$t("Config.Panel.index_43")]])]),_:1},8,["label"])]),_:1}),V("div",ln,L(e.$t("Config.Panel.index_44")),1)])}}}),sn={class:"w-260px"},on={class:"text-error"},un=R({__name:"index",setup(n){const{t:a}=A(),l=async()=>{q({title:a("Config.Panel.index_42"),width:500,footer:!0,component:tn})};return(n,a)=>{const t=se,i=oe,s=ae("i18n-t"),o=e;return N(),O(o,{label:n.$t("Config.Panel.index_39")},{content:T(()=>[V("div",sn,[G(t,{value:J(pe).session_timeout,"onUpdate:value":a[0]||(a[0]=e=>J(pe).session_timeout=e),disabled:!0,placeholder:""},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:l},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1})]),desc:T(()=>[G(s,{keypath:"Config.Panel.index_40",scope:"global"},{time_1:T(()=>[V("span",on,L(J(pe).session_timeout),1)]),_:1})]),_:1},8,["label"])}}}),rn={class:"w-260px"},dn=R({__name:"index",setup(n){const a=async()=>{await P(me()),l()};return(n,l)=>{const t=we,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_45")},{content:T(()=>[V("div",rn,[G(t,{value:J(pe).sites_path,"onUpdate:value":l[0]||(l[0]=e=>J(pe).sites_path=e)},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:a},{default:T(()=>[Q(L(n.$t("Public.Btn.Save")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_46")),1)]),_:1},8,["label"])}}}),cn={class:"w-260px"},pn=R({__name:"index",setup(n){const a=async()=>{await w(me()),l()};return(n,l)=>{const t=we,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_47")},{content:T(()=>[V("div",cn,[G(t,{value:J(pe).backup_path,"onUpdate:value":l[0]||(l[0]=e=>J(pe).backup_path=e)},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:a},{default:T(()=>[Q(L(n.$t("Public.Btn.Save")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_48")),1)]),_:1},8,["label"])}}}),_n={class:"w-260px"},fn=R({__name:"index",setup(n){const{t:a}=A(),t=async()=>{I({width:460,title:a("Config.Panel.index_51"),content:a("Config.Panel.index_52"),onConfirm:async()=>{await y(me()),l("".concat(location.protocol,"//").concat(pe.value.serverIp,":").concat(location.port).concat(location.pathname),2e3)}})};return(n,a)=>{const l=se,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_49")},{content:T(()=>[V("div",_n,[G(l,{value:J(pe).serverIp,"onUpdate:value":a[0]||(a[0]=e=>J(pe).serverIp=e),placeholder:""},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:t},{default:T(()=>[Q(L(n.$t("Public.Btn.Save")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_50")),1)]),_:1},8,["label"])}}}),mn={class:"w-260px"},xn=R({__name:"index",setup(n){const a=async()=>{await $(),xe()};return(n,l)=>{const t=se,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_53")},{content:T(()=>[V("div",mn,[G(t,{value:J(pe).systemDate,"onUpdate:value":l[0]||(l[0]=e=>J(pe).systemDate=e),readonly:!0,placeholder:""},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:a},{default:T(()=>[Q(L(n.$t("Public.Btn.Sync")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_54")),1)]),_:1},8,["label"])}}}),vn={class:"px-20px pt-28px pb-8px"},bn={class:"w-210px"},gn={class:"w-210px"},Cn=R({__name:"set",setup(e,{expose:n}){const a=F(null),{t:t}=A(),i=W({username1:pe.value.username,username2:""}),s={username1:{trigger:["blur","input"],validator:()=>""!==i.username1.trim()||new Error(t("Config.Panel.index_60"))},username2:{trigger:["blur","input"],validator:()=>""===i.username2.trim()?new Error(t("Config.Panel.index_61")):i.username2===i.username1||new Error(t("Config.Panel.index_62"))}};return n({onConfirm:async()=>{var e;await(null==(e=a.value)?void 0:e.validate()),await k({username1:h(i.username1),username2:h(i.username2)}),l("/login?dologin=True",1500)}}),(e,n)=>{const l=se,t=ie,o=ge;return N(),K("div",vn,[G(o,{ref_key:"formRef",ref:a,model:J(i),rules:s,"require-mark-placement":"left"},{default:T(()=>[G(t,{label:e.$t("Config.Panel.index_58"),path:"username1","show-require-mark":!0},{default:T(()=>[V("div",bn,[G(l,{value:J(i).username1,"onUpdate:value":n[0]||(n[0]=e=>J(i).username1=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"]),G(t,{label:e.$t("Config.Panel.index_59"),path:"username2","show-require-mark":!0},{default:T(()=>[V("div",gn,[G(l,{value:J(i).username2,"onUpdate:value":n[1]||(n[1]=e=>J(i).username2=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),Pn={class:"w-260px"},wn=R({__name:"index",setup(n){const{t:a}=A(),l=async()=>{q({title:a("Config.Panel.index_57"),width:420,footer:!0,component:Cn})};return(n,a)=>{const t=se,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_55")},{content:T(()=>[V("div",Pn,[G(t,{value:J(pe).username,disabled:!0,placeholder:""},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:l},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_56")),1)]),_:1},8,["label"])}}}),yn={class:"px-20px pt-28px pb-8px"},$n={class:"w-210px"},kn={class:"w-210px"},hn=R({__name:"set",setup(e,{expose:n}){const{t:a}=A(),t=F(null),i=W({password1:"",password2:""}),s={password1:{trigger:["blur","input"],validator:()=>""===i.password1.trim()?new Error(a("Config.Panel.index_67")):!(i.password1.trim().length<6)||new Error(a("Config.Panel.index_68"))},password2:{trigger:["blur","input"],validator:()=>""===i.password2.trim()?new Error(a("Config.Panel.index_69")):i.password2===i.password1||new Error(a("Config.Panel.index_70"))}};return n({onConfirm:async()=>{var e;await(null==(e=t.value)?void 0:e.validate()),await U({password1:h(i.password1),password2:h(i.password2)}),l("/login?dologin=True",1500)}}),(e,n)=>{const a=ye,l=ie,o=se,u=ge;return N(),K("div",yn,[G(u,{ref_key:"formRef",ref:t,model:J(i),rules:s,"require-mark-placement":"left"},{default:T(()=>[G(l,{label:e.$t("Config.Panel.index_66"),path:"password1","show-require-mark":!0},{default:T(()=>[V("div",$n,[G(a,{value:J(i).password1,"onUpdate:value":n[0]||(n[0]=e=>J(i).password1=e),length:10,placeholder:""},null,8,["value"])])]),_:1},8,["label"]),G(l,{label:e.$t("Config.Panel.index_59"),path:"password2","show-require-mark":!0},{default:T(()=>[V("div",kn,[G(o,{value:J(i).password2,"onUpdate:value":n[1]||(n[1]=e=>J(i).password2=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),Un={class:"w-260px"},Sn=R({__name:"index",setup(n){const{t:a}=A(),l=async()=>{q({title:a("Config.Panel.index_65"),width:420,footer:!0,component:hn})};return(n,a)=>{const t=se,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_63")},{content:T(()=>[V("div",Un,[G(t,{value:"********",type:"password",disabled:!0,placeholder:""})]),G(i,{class:"ml-12px",type:"primary",onClick:l},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_64")),1)]),_:1},8,["label"])}}}),jn={class:"w-260px"},Bn=R({__name:"index",setup(n){const{t:a}=A(),t=()=>{z()},i=()=>{I({title:a("Config.Panel.index_74"),content:a("Config.Panel.index_75"),onConfirm:async()=>{await S(),l()}})};return(n,a)=>{const l=se,s=oe,o=e;return N(),O(o,{label:n.$t("Config.Panel.index_71")},{content:T(()=>[V("div",jn,[G(l,{value:J(pe).account,disabled:!0,placeholder:""},null,8,["value"])]),G(s,{class:"ml-12px",type:"primary",onClick:t},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1}),G(s,{class:"ml-12px",onClick:i},{default:T(()=>[Q(L(n.$t("Config.Panel.index_72")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_73")),1)]),_:1},8,["label"])}}}),Mn={class:"p-20px"},In=R({__name:"set",setup(e){const{t:n}=A(),a=["memuA","memuAsoft","memuAconfig","dologin"],{columns:l}=D([{key:"title",title:n("Config.Panel.index_80")},{key:"show",title:n("Config.Panel.index_81"),align:"right",width:100,render:e=>a.includes(e.id)?n("Config.Panel.index_82"):G(te,{value:e.show,size:"small",onUpdateValue:n=>{t(n,e)}},null)}]),t=async(e,n)=>{const a=ve.value.filter(e=>!e.show).map(e=>e.id);e?a.splice(a.indexOf(n.id),1):a.push(n.id),await j({hide_list:a}),n.show=e};return(e,n)=>{const a=H;return N(),K("div",Mn,[G(a,{data:J(ve),columns:J(l)},null,8,["data","columns"])])}}}),qn={class:"w-260px"},En=R({__name:"index",setup(n){const{t:a}=A(),l=le(()=>ve.value.filter(e=>!e.show).map(e=>e.title).join(", ")),t=()=>{q({title:a("Config.Panel.index_79"),width:360,component:In})};return(n,a)=>{const i=se,s=oe,o=e;return N(),O(o,{label:n.$t("Config.Panel.index_76")},{content:T(()=>[V("div",qn,[G(i,{value:J(l)||n.$t("Config.Panel.index_77"),disabled:!0,placeholder:""},null,8,["value"])]),G(s,{class:"ml-12px",type:"primary",onClick:t},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_78")),1)]),_:1},8,["label"])}}}),zn=R({__name:"index",setup(n){const a=m(),l=async e=>{await B({is_install:Number(e)}),a.siteMonitorStatus=e};return(n,t)=>{const i=te,s=e;return N(),O(s,{label:"Site Monitor"},{content:T(()=>[G(i,{value:J(a).siteMonitorStatus,"onUpdate:value":l},null,8,["value"])]),desc:T(()=>t[0]||(t[0]=[V("span",null,"Free website monitor",-1)])),_:1})}}}),Dn=M(R({__name:"config",setup:e=>(e,a)=>(N(),K("div",null,[G(n,null,{default:T(()=>[Q(L(e.$t("Config.Panel.index_1")),1)]),_:1}),G($e),G(ke),G(Ue),G(Me),G(he),G(zn),G(Re),G(Ge),G(Ke),G(Xe),G(en),G(un),G(dn),G(pn),G(fn),G(xn),G(wn),G(Sn),G(Bn),G(En)]))}),[["__scopeId","data-v-f0af7604"]]);export{Dn as P}; +import{_ as e,a as n}from"./index106.js?v=1762424784323";import{ax as a,O as l,ay as t,az as i,aA as s,aB as o,a3 as u,m as r,d,aC as c,aD as p,n as _,aE as f,u as m,aF as x,_ as v,aG as b,aH as g,aI as C,aJ as P,aK as w,aL as y,aM as $,aN as k,N as h,M as U,aO as S,aP as j,aQ as B,p as M}from"./page_layout.js?v=1762424784323";import{a as I,u as q,_ as E,m as z,c as D,h as H}from"./public.js?v=1762424784323";import{k as R,P as A,r as F,a2 as O,V as N,a3 as T,S as V,a4 as L,W as G,U as J,R as K,j as Q,e as W,F as Y,an as X,a0 as Z,l as ee,v as ne,a5 as ae,c as le}from"./vue.js?v=1762424784323";import{dj as te,dR as ie,au as se,aC as oe,df as ue,dV as re,av as de,dY as ce}from"./naive.js?v=1762424784323";import{p as pe,_ as _e,f as fe,h as me,g as xe,m as ve}from"./index105.js?v=1762424784323";import{_ as be}from"./index.vue_vue_type_script_setup_true_lang9.js?v=1762424784323";import{_ as ge}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{_ as Ce}from"./index99.js?v=1762424784323";import{_ as Pe}from"./index.vue_vue_type_script_setup_true_lang6.js?v=1762424784323";import{_ as we}from"./index.vue_vue_type_script_setup_true_lang10.js?v=1762424784323";import{_ as ye}from"./index.vue_vue_type_script_setup_true_lang2.js?v=1762424784323";const $e=R({__name:"index",setup(n){const{t:t}=A(),i=F(!1),s=()=>{I({title:t("Config.Panel.index_2"),content:t("Config.Panel.index_4"),onConfirm:async()=>{await a(),l()}})};return(n,a)=>{const l=te,t=e;return N(),O(t,{label:n.$t("Config.Panel.index_2")},{content:T(()=>[G(l,{value:J(i),"onUpdate:value":s},null,8,["value"])]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_3")),1)]),_:1},8,["label"])}}}),ke=R({__name:"index",setup(n){const a=async e=>{await t(),pe.value.listenIpv6=e};return(n,l)=>{const t=te,i=e;return N(),O(i,{label:n.$t("Config.Panel.index_5")},{content:T(()=>[G(t,{value:J(pe).listenIpv6,"onUpdate:value":a},null,8,["value"])]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_6")),1)]),_:1},8,["label"])}}}),he=R({__name:"index",setup(n){const a=async e=>{await i({cdn_switch:e?1:0}),pe.value.cdn_status=e};return(n,l)=>{const t=te,i=e;return N(),O(i,{label:n.$t("Config.Panel.index_98")},{content:T(()=>[G(t,{value:J(pe).cdn_status,"onUpdate:value":a},null,8,["value"])]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_99"))+"(Only valid for panel)",1)]),_:1},8,["label"])}}}),Ue=R({__name:"index",setup(n){const{t:a}=A(),l=e=>{I({width:e?480:380,title:a("Config.Panel.index_83",[a(e?"Config.Panel.index_83_1":"Config.Panel.index_83_2")]),content:a(e?"Config.Panel.index_85":"Config.Panel.index_84"),onConfirm:async()=>{await s(),pe.value.offlineMode=e}})};return(n,a)=>{const t=te,i=e;return N(),O(i,{label:n.$t("Config.Panel.index_7")},{content:T(()=>[G(t,{value:J(pe).offlineMode,"onUpdate:value":l},null,8,["value"])]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_8")),1)]),_:1},8,["label"])}}}),Se={class:"p-20px"},je={class:"text-error"},Be=R({__name:"confirm",setup(e,{expose:n}){const a=F();return n({onConfirm:async()=>{await a.value.validate(),await o(),pe.value.debugMode=!0}}),(e,n)=>{const l=be,t=_e,i=fe;return N(),K("div",Se,[G(l,{class:"mb-20px"},{default:T(()=>[Q(L(e.$t("Config.Panel.index_14")),1)]),_:1}),G(t,{class:"mb-20px"},{default:T(()=>[V("li",je,L(e.$t("Config.Panel.index_15")),1),V("li",null,L(e.$t("Config.Panel.index_16")),1),V("li",null,L(e.$t("Config.Panel.index_17")),1)]),_:1}),G(i,{ref_key:"riskRef",ref:a},{default:T(()=>[Q(L(e.$t("Config.Panel.index_18")),1)]),_:1},512)])}}}),Me=R({__name:"index",setup(n){const{t:a}=A(),l=e=>{e?q({title:a("Config.Panel.index_11"),width:440,footer:!0,component:Be}):I({title:a("Config.Panel.index_12"),content:a("Config.Panel.index_13"),onConfirm:async()=>{await o(),pe.value.debugMode=e}})};return(n,a)=>{const t=te,i=e;return N(),O(i,{label:n.$t("Config.Panel.index_9")},{content:T(()=>[G(t,{value:J(pe).debugMode,"onUpdate:value":l},null,8,["value"])]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_10")),1)]),_:1},8,["label"])}}}),Ie={class:"p-20px"},qe={class:"w-320px"},Ee={class:"inline-block text-center leading-[1.4]"},ze={class:"w-320px"},De=R({__name:"config",setup(e){const{t:n}=A(),a=W({token:"",limit_addr:""}),l=async e=>{await u({t_type:2}),pe.value.apiInterface=e},t=()=>{I({title:n("Config.Panel.index_33"),content:()=>G(Y,null,[G("div",{class:"mb-8px"},[n("Config.Panel.index_86")]),G("div",{class:"text-error"},[n("Config.Panel.index_87")])]),onConfirm:async()=>{const{message:e}=await u({t_type:1},!1);r.success({content:n("Config.Panel.index_34"),close:!0}),d(e)&&(a.token=e.result)}})},i=async()=>{await u({t_type:3,limit_addr:a.limit_addr})};return(async()=>{const{message:e}=await c();d(e)&&(a.token=e.token,a.limit_addr=e.limit_addr)})(),(e,n)=>{const s=te,o=ie,u=oe,r=se,d=Ce,c=ge,p=E;return N(),K("div",Ie,[G(c,{model:J(a)},{default:T(()=>[G(o,{label:e.$t("Config.Panel.index_19")},{default:T(()=>[G(s,{value:J(pe).apiInterface,"onUpdate:value":l},null,8,["value"])]),_:1},8,["label"]),G(o,{label:e.$t("Config.Panel.index_26")},{default:T(()=>[V("div",qe,[G(r,{value:J(a).token,"onUpdate:value":n[0]||(n[0]=e=>J(a).token=e),readonly:!0},{suffix:T(()=>[G(u,{class:"h-22px px-5px",type:"primary",size:"small",onClick:t},{default:T(()=>[Q(L(e.$t("Public.Btn.Reset")),1)]),_:1})]),_:1},8,["value"])])]),_:1},8,["label"]),G(o,{class:"form-item"},{label:T(()=>[V("div",Ee,[Q(L(e.$t("Config.Panel.index_27")),1),n[2]||(n[2]=V("br",null,null,-1)),Q(" "+L(e.$t("Config.Panel.index_28")),1)])]),default:T(()=>[V("div",ze,[G(d,{value:J(a).limit_addr,"onUpdate:value":n[1]||(n[1]=e=>J(a).limit_addr=e),rows:4},null,8,["value"])])]),_:1}),G(o,{label:" ","show-feedback":!1},{default:T(()=>[G(u,{type:"primary",onClick:i},{default:T(()=>[Q(L(e.$t("Public.Btn.Save")),1)]),_:1})]),_:1})]),_:1},8,["model"]),G(p,{class:"mt-20px"},{default:T(()=>[V("li",null,L(e.$t("Config.Panel.index_29")),1),V("li",null,L(e.$t("Config.Panel.index_30")),1),V("li",null,L(e.$t("Config.Panel.index_31")),1),V("li",null,[Q(L(e.$t("Config.Panel.index_32"))+" ",1),n[3]||(n[3]=V("a",{class:"bt-link",href:"https://www.aapanel.com/forum/d/482-api-interface-tutorial",target:"_blank"}," https://www.aapanel.com/forum/d/482-api-interface-tutorial ",-1))])]),_:1})])}}}),He={class:"bt-link",href:"https://www.aapanel.com/forum/d/482-api-interface-tutorial",target:"_blank"},Re=R({__name:"index",setup(n){const{t:a}=A(),l=async e=>{await u({t_type:2}),pe.value.apiInterface=e,e&&t()},t=()=>{q({title:a("Config.Panel.index_25"),width:540,component:De})};return(n,a)=>{const i=te,s=oe,o=e;return N(),O(o,{label:n.$t("Config.Panel.index_19")},{content:T(()=>[G(i,{value:J(pe).apiInterface,"onUpdate:value":l},null,8,["value"]),G(s,{class:"ml-12px h-24px px-8px",size:"small",onClick:t},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_21")),1),V("a",He,L(n.$t("Config.Panel.index_24")),1)]),_:1},8,["label"])}}}),Ae={class:"px-20px pt-28px pb-8px"},Fe={class:"w-200px"},Oe=R({__name:"set",setup(e,{expose:n}){const a=F(null),{t:l}=A(),t=W({backup_number:pe.value.backup_info.backup_number}),i={backup_number:{required:!0,type:"number",trigger:["blur","input"],message:l("Config.Panel.index_94")}};return n({onConfirm:async()=>{var e;await(null==(e=a.value)?void 0:e.validate()),pe.value.backup_info.backup_number=t.backup_number,await p(me())}}),(e,n)=>{const l=ue,s=ie,o=ge;return N(),K("div",Ae,[G(o,{ref_key:"formRef",ref:a,model:J(t),rules:i,"require-mark-placement":"left"},{default:T(()=>[G(s,{label:e.$t("Mail.Mass.index_46"),path:"backup_number","show-require-mark":!0},{default:T(()=>[V("div",Fe,[G(l,{value:J(t).backup_number,"onUpdate:value":n[0]||(n[0]=e=>J(t).backup_number=e),min:1,"show-button":!1},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),Ne={class:"text-default"},Te={key:0},Ve={class:"mx-12px"},Le={class:"text-error"},Ge=R({__name:"index",setup(n){const{t:a}=A(),l=async e=>{const n=async()=>{pe.value.backup_info.auto_backup=e,await p(me()),xe()};e?await n():I({title:a("Config.Panel.index_96"),content:a("Config.Panel.index_95"),onConfirm:n})},t=()=>{q({title:a("Config.Panel.index_90"),width:420,footer:!0,component:Oe})},i=async()=>{I({title:a("Config.Panel.index_92"),content:a("Config.Panel.index_93"),onConfirm:async()=>{await f(),pe.value.backup_info.total_size=0}})};return(n,a)=>{const s=te,o=oe,u=e;return N(),O(u,{label:n.$t("Config.Panel.index_88")},{content:T(()=>[G(s,{value:J(pe).backup_info.auto_backup,"onUpdate:value":l,"checked-value":1,"unchecked-value":0},null,8,["value"]),G(o,{class:"mx-12px",type:"primary",onClick:t},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1}),G(o,{onClick:i},{default:T(()=>[Q(L(n.$t("Config.Panel.index_89")),1)]),_:1})]),desc:T(()=>[V("div",Ne,[J(pe).backup_info.auto_backup?(N(),K("span",Te,L(n.$t("Config.Panel.index_90"))+":"+L(J(pe).backup_info.backup_number),1)):X("",!0),V("span",Ve,L(n.$t("Config.Panel.index_91"))+":"+L(J(_)(J(pe).backup_info.total_size)),1),V("span",Le,L(n.$t("Config.Panel.index_97")),1)])]),_:1},8,["label"])}}}),Je={class:"w-160px"},Ke=R({__name:"index",setup(n){const a=m(),{theme:l}=Z(a),t=[{label:"Fresh",value:"fresh"},{label:"Classic",value:"classic"}],i=async e=>{await x({name:e}),l.value=e};return(n,a)=>{const s=re,o=e;return N(),O(o,{label:"Theme"},{content:T(()=>[V("div",Je,[G(s,{value:J(l),options:t,"onUpdate:value":i},null,8,["value"])])]),_:1})}}}),Qe={class:"inline-flex items-center"},We={class:"mr-5px"},Ye={class:"w-160px mr-16px"},Xe=R({__name:"index",setup(n){const a=async e=>{await b({name:e}),l()};return(n,l)=>{const t=v,i=re,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_35")},{label:T(()=>[V("div",Qe,[V("span",We,L(n.$t("Config.Panel.index_35")),1),G(t,{name:"base-lang",size:"18",color:"#666"})])]),content:T(()=>[V("div",Ye,[G(i,{value:J(pe).lang,"onUpdate:value":[l[0]||(l[0]=e=>J(pe).lang=e),a],options:J(pe).langList},null,8,["value","options"])]),G(Pe)]),_:1},8,["label"])}}}),Ze={class:"w-260px"},en=R({__name:"index",setup(n){const{t:a}=A(),t=async()=>{pe.value.webname.includes("/")||pe.value.webname.includes("\\")?r.error(a("Config.Panel.index_38")):(await g(me()),l())};return(n,a)=>{const l=se,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_36")},{content:T(()=>[V("div",Ze,[G(l,{value:J(pe).webname,"onUpdate:value":a[0]||(a[0]=e=>J(pe).webname=e),placeholder:""},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:t},{default:T(()=>[Q(L(n.$t("Public.Btn.Save")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_37")),1)]),_:1},8,["label"])}}}),nn={class:"p-20px"},an={class:"w-140px"},ln={class:"text-error"},tn=R({__name:"set",setup(e,{expose:n}){const{t:a}=A(),t=W({type:null,time:5}),i=[{label:a("Public.Unit.Hours",[12]),value:a("Public.Unit.Hour",[12]),time:43200},{label:a("Public.Unit.Hours",[24]),value:a("Public.Unit.Hours",[24]),time:86400},{label:a("Public.Unit.Hours",[72]),value:a("Public.Unit.Hours",[72]),time:259200},{label:a("Public.Unit.Days",[7]),value:a("Public.Unit.Days",[7]),time:604800},{label:a("Public.Unit.Days",[30]),value:a("Public.Unit.Days",[30]),time:2592e3},{label:a("Config.Panel.index_43"),value:a("Config.Panel.index_43"),time:0}],s=()=>{t.type===a("Config.Panel.index_43")&&(t.time=5)};var o;return o=pe.value.session_timeout,i.filter(e=>e.label!==a("Config.Panel.index_43")).map(e=>e.label).includes(o)?t.type=pe.value.session_timeout:(t.type=a("Config.Panel.index_43"),t.time=pe.value.session_timeout_source/60),n({onConfirm:async()=>{var e;let n=0;n=t.type===a("Config.Panel.index_43")?60*t.time:(null==(e=i.find(e=>e.label===t.type))?void 0:e.time)||0;const s=me();return s.session_timeout=n,await C(s),l(),!1}}),(e,n)=>{const a=re,l=ue,o=ce,u=de,r=ie,d=ge;return N(),K("div",nn,[G(d,null,{default:T(()=>[G(r,{label:e.$t("Config.Panel.index_39")},{default:T(()=>[V("div",an,[G(a,{value:J(t).type,"onUpdate:value":[n[0]||(n[0]=e=>J(t).type=e),s],options:i},null,8,["value"])]),ee(G(u,{class:"w-auto ml-10px"},{default:T(()=>[G(l,{value:J(t).time,"onUpdate:value":n[1]||(n[1]=e=>J(t).time=e),class:"w-80px","show-button":!1},null,8,["value"]),G(o,null,{default:T(()=>[Q(L(e.$t("Public.Unit.Minute",J(t).time)),1)]),_:1})]),_:1},512),[[ne,J(t).type===e.$t("Config.Panel.index_43")]])]),_:1},8,["label"])]),_:1}),V("div",ln,L(e.$t("Config.Panel.index_44")),1)])}}}),sn={class:"w-260px"},on={class:"text-error"},un=R({__name:"index",setup(n){const{t:a}=A(),l=async()=>{q({title:a("Config.Panel.index_42"),width:500,footer:!0,component:tn})};return(n,a)=>{const t=se,i=oe,s=ae("i18n-t"),o=e;return N(),O(o,{label:n.$t("Config.Panel.index_39")},{content:T(()=>[V("div",sn,[G(t,{value:J(pe).session_timeout,"onUpdate:value":a[0]||(a[0]=e=>J(pe).session_timeout=e),disabled:!0,placeholder:""},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:l},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1})]),desc:T(()=>[G(s,{keypath:"Config.Panel.index_40",scope:"global"},{time_1:T(()=>[V("span",on,L(J(pe).session_timeout),1)]),_:1})]),_:1},8,["label"])}}}),rn={class:"w-260px"},dn=R({__name:"index",setup(n){const a=async()=>{await P(me()),l()};return(n,l)=>{const t=we,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_45")},{content:T(()=>[V("div",rn,[G(t,{value:J(pe).sites_path,"onUpdate:value":l[0]||(l[0]=e=>J(pe).sites_path=e)},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:a},{default:T(()=>[Q(L(n.$t("Public.Btn.Save")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_46")),1)]),_:1},8,["label"])}}}),cn={class:"w-260px"},pn=R({__name:"index",setup(n){const a=async()=>{await w(me()),l()};return(n,l)=>{const t=we,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_47")},{content:T(()=>[V("div",cn,[G(t,{value:J(pe).backup_path,"onUpdate:value":l[0]||(l[0]=e=>J(pe).backup_path=e)},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:a},{default:T(()=>[Q(L(n.$t("Public.Btn.Save")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_48")),1)]),_:1},8,["label"])}}}),_n={class:"w-260px"},fn=R({__name:"index",setup(n){const{t:a}=A(),t=async()=>{I({width:460,title:a("Config.Panel.index_51"),content:a("Config.Panel.index_52"),onConfirm:async()=>{await y(me()),l("".concat(location.protocol,"//").concat(pe.value.serverIp,":").concat(location.port).concat(location.pathname),2e3)}})};return(n,a)=>{const l=se,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_49")},{content:T(()=>[V("div",_n,[G(l,{value:J(pe).serverIp,"onUpdate:value":a[0]||(a[0]=e=>J(pe).serverIp=e),placeholder:""},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:t},{default:T(()=>[Q(L(n.$t("Public.Btn.Save")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_50")),1)]),_:1},8,["label"])}}}),mn={class:"w-260px"},xn=R({__name:"index",setup(n){const a=async()=>{await $(),xe()};return(n,l)=>{const t=se,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_53")},{content:T(()=>[V("div",mn,[G(t,{value:J(pe).systemDate,"onUpdate:value":l[0]||(l[0]=e=>J(pe).systemDate=e),readonly:!0,placeholder:""},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:a},{default:T(()=>[Q(L(n.$t("Public.Btn.Sync")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_54")),1)]),_:1},8,["label"])}}}),vn={class:"px-20px pt-28px pb-8px"},bn={class:"w-210px"},gn={class:"w-210px"},Cn=R({__name:"set",setup(e,{expose:n}){const a=F(null),{t:t}=A(),i=W({username1:pe.value.username,username2:""}),s={username1:{trigger:["blur","input"],validator:()=>""!==i.username1.trim()||new Error(t("Config.Panel.index_60"))},username2:{trigger:["blur","input"],validator:()=>""===i.username2.trim()?new Error(t("Config.Panel.index_61")):i.username2===i.username1||new Error(t("Config.Panel.index_62"))}};return n({onConfirm:async()=>{var e;await(null==(e=a.value)?void 0:e.validate()),await k({username1:h(i.username1),username2:h(i.username2)}),l("/login?dologin=True",1500)}}),(e,n)=>{const l=se,t=ie,o=ge;return N(),K("div",vn,[G(o,{ref_key:"formRef",ref:a,model:J(i),rules:s,"require-mark-placement":"left"},{default:T(()=>[G(t,{label:e.$t("Config.Panel.index_58"),path:"username1","show-require-mark":!0},{default:T(()=>[V("div",bn,[G(l,{value:J(i).username1,"onUpdate:value":n[0]||(n[0]=e=>J(i).username1=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"]),G(t,{label:e.$t("Config.Panel.index_59"),path:"username2","show-require-mark":!0},{default:T(()=>[V("div",gn,[G(l,{value:J(i).username2,"onUpdate:value":n[1]||(n[1]=e=>J(i).username2=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),Pn={class:"w-260px"},wn=R({__name:"index",setup(n){const{t:a}=A(),l=async()=>{q({title:a("Config.Panel.index_57"),width:420,footer:!0,component:Cn})};return(n,a)=>{const t=se,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_55")},{content:T(()=>[V("div",Pn,[G(t,{value:J(pe).username,disabled:!0,placeholder:""},null,8,["value"])]),G(i,{class:"ml-12px",type:"primary",onClick:l},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_56")),1)]),_:1},8,["label"])}}}),yn={class:"px-20px pt-28px pb-8px"},$n={class:"w-210px"},kn={class:"w-210px"},hn=R({__name:"set",setup(e,{expose:n}){const{t:a}=A(),t=F(null),i=W({password1:"",password2:""}),s={password1:{trigger:["blur","input"],validator:()=>""===i.password1.trim()?new Error(a("Config.Panel.index_67")):!(i.password1.trim().length<6)||new Error(a("Config.Panel.index_68"))},password2:{trigger:["blur","input"],validator:()=>""===i.password2.trim()?new Error(a("Config.Panel.index_69")):i.password2===i.password1||new Error(a("Config.Panel.index_70"))}};return n({onConfirm:async()=>{var e;await(null==(e=t.value)?void 0:e.validate()),await U({password1:h(i.password1),password2:h(i.password2)}),l("/login?dologin=True",1500)}}),(e,n)=>{const a=ye,l=ie,o=se,u=ge;return N(),K("div",yn,[G(u,{ref_key:"formRef",ref:t,model:J(i),rules:s,"require-mark-placement":"left"},{default:T(()=>[G(l,{label:e.$t("Config.Panel.index_66"),path:"password1","show-require-mark":!0},{default:T(()=>[V("div",$n,[G(a,{value:J(i).password1,"onUpdate:value":n[0]||(n[0]=e=>J(i).password1=e),length:10,placeholder:""},null,8,["value"])])]),_:1},8,["label"]),G(l,{label:e.$t("Config.Panel.index_59"),path:"password2","show-require-mark":!0},{default:T(()=>[V("div",kn,[G(o,{value:J(i).password2,"onUpdate:value":n[1]||(n[1]=e=>J(i).password2=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),Un={class:"w-260px"},Sn=R({__name:"index",setup(n){const{t:a}=A(),l=async()=>{q({title:a("Config.Panel.index_65"),width:420,footer:!0,component:hn})};return(n,a)=>{const t=se,i=oe,s=e;return N(),O(s,{label:n.$t("Config.Panel.index_63")},{content:T(()=>[V("div",Un,[G(t,{value:"********",type:"password",disabled:!0,placeholder:""})]),G(i,{class:"ml-12px",type:"primary",onClick:l},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_64")),1)]),_:1},8,["label"])}}}),jn={class:"w-260px"},Bn=R({__name:"index",setup(n){const{t:a}=A(),t=()=>{z()},i=()=>{I({title:a("Config.Panel.index_74"),content:a("Config.Panel.index_75"),onConfirm:async()=>{await S(),l()}})};return(n,a)=>{const l=se,s=oe,o=e;return N(),O(o,{label:n.$t("Config.Panel.index_71")},{content:T(()=>[V("div",jn,[G(l,{value:J(pe).account,disabled:!0,placeholder:""},null,8,["value"])]),G(s,{class:"ml-12px",type:"primary",onClick:t},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1}),G(s,{class:"ml-12px",onClick:i},{default:T(()=>[Q(L(n.$t("Config.Panel.index_72")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_73")),1)]),_:1},8,["label"])}}}),Mn={class:"p-20px"},In=R({__name:"set",setup(e){const{t:n}=A(),a=["memuA","memuAsoft","memuAconfig","dologin"],{columns:l}=D([{key:"title",title:n("Config.Panel.index_80")},{key:"show",title:n("Config.Panel.index_81"),align:"right",width:100,render:e=>a.includes(e.id)?n("Config.Panel.index_82"):G(te,{value:e.show,size:"small",onUpdateValue:n=>{t(n,e)}},null)}]),t=async(e,n)=>{const a=ve.value.filter(e=>!e.show).map(e=>e.id);e?a.splice(a.indexOf(n.id),1):a.push(n.id),await j({hide_list:a}),n.show=e};return(e,n)=>{const a=H;return N(),K("div",Mn,[G(a,{data:J(ve),columns:J(l)},null,8,["data","columns"])])}}}),qn={class:"w-260px"},En=R({__name:"index",setup(n){const{t:a}=A(),l=le(()=>ve.value.filter(e=>!e.show).map(e=>e.title).join(", ")),t=()=>{q({title:a("Config.Panel.index_79"),width:360,component:In})};return(n,a)=>{const i=se,s=oe,o=e;return N(),O(o,{label:n.$t("Config.Panel.index_76")},{content:T(()=>[V("div",qn,[G(i,{value:J(l)||n.$t("Config.Panel.index_77"),disabled:!0,placeholder:""},null,8,["value"])]),G(s,{class:"ml-12px",type:"primary",onClick:t},{default:T(()=>[Q(L(n.$t("Public.Btn.Set")),1)]),_:1})]),desc:T(()=>[V("span",null,L(n.$t("Config.Panel.index_78")),1)]),_:1},8,["label"])}}}),zn=R({__name:"index",setup(n){const a=m(),l=async e=>{await B({is_install:Number(e)}),a.siteMonitorStatus=e};return(n,t)=>{const i=te,s=e;return N(),O(s,{label:"Site Monitor"},{content:T(()=>[G(i,{value:J(a).siteMonitorStatus,"onUpdate:value":l},null,8,["value"])]),desc:T(()=>t[0]||(t[0]=[V("span",null,"Free website monitor",-1)])),_:1})}}}),Dn=M(R({__name:"config",setup:e=>(e,a)=>(N(),K("div",null,[G(n,null,{default:T(()=>[Q(L(e.$t("Config.Panel.index_1")),1)]),_:1}),G($e),G(ke),G(Ue),G(Me),G(he),G(zn),G(Re),G(Ge),G(Ke),G(Xe),G(en),G(un),G(dn),G(pn),G(fn),G(xn),G(wn),G(Sn),G(Bn),G(En)]))}),[["__scopeId","data-v-f0af7604"]]);export{Dn as P}; diff --git a/BTPanel/static/vite/js/config10.js b/BTPanel/static/vite/js/config10.js index e9eb0d39..30b2c34c 100644 --- a/BTPanel/static/vite/js/config10.js +++ b/BTPanel/static/vite/js/config10.js @@ -1 +1 @@ -import{c as t,h as a,a as s}from"./public.js?v=1760428868419";import{a as e}from"./setting.js?v=1760428868419";import{k as o,P as i,W as n,R as r,V as m,U as f}from"./vue.js?v=1760428868419";import{dj as l}from"./naive.js?v=1760428868419";import"./page_layout.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const u={class:"p-20px"},c=o({__name:"config",props:{status:{type:Boolean}},emits:["refresh"],setup(o,{emit:c}){const p=o,g=c,{t:_}=i(),{table:d,columns:j}=t([{key:"title",title:_("Waf.Setting.config_129"),width:120},{key:"ps",title:_("Waf.Setting.config_130")},{key:"status",title:_("Public.Table.Status"),width:60,render:t=>n(l,{value:t.status,onUpdateValue:async a=>{a?(await e({obj:"from_data"}),t.status=a,g("refresh",a)):s({title:_("Waf.Setting.config_131"),content:_("Waf.Setting.config_132"),onConfirm:async()=>{await e({obj:"from_data"}),t.status=a,g("refresh",a)}})}},null)}]);return d.data.push({title:_("Waf.Setting.config_133"),ps:_("Waf.Setting.config_134"),status:p.status}),(t,s)=>{const e=a;return m(),r("div",u,[n(e,{"max-height":340,data:f(d).data,columns:f(j)},null,8,["data","columns"])])}}});export{c as default}; +import{c as t,h as a,a as s}from"./public.js?v=1762424784323";import{a as e}from"./setting.js?v=1762424784323";import{k as o,P as i,W as n,R as r,V as m,U as f}from"./vue.js?v=1762424784323";import{dj as l}from"./naive.js?v=1762424784323";import"./page_layout.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const u={class:"p-20px"},c=o({__name:"config",props:{status:{type:Boolean}},emits:["refresh"],setup(o,{emit:c}){const p=o,g=c,{t:_}=i(),{table:d,columns:j}=t([{key:"title",title:_("Waf.Setting.config_129"),width:120},{key:"ps",title:_("Waf.Setting.config_130")},{key:"status",title:_("Public.Table.Status"),width:60,render:t=>n(l,{value:t.status,onUpdateValue:async a=>{a?(await e({obj:"from_data"}),t.status=a,g("refresh",a)):s({title:_("Waf.Setting.config_131"),content:_("Waf.Setting.config_132"),onConfirm:async()=>{await e({obj:"from_data"}),t.status=a,g("refresh",a)}})}},null)}]);return d.data.push({title:_("Waf.Setting.config_133"),ps:_("Waf.Setting.config_134"),status:p.status}),(t,s)=>{const e=a;return m(),r("div",u,[n(e,{"max-height":340,data:f(d).data,columns:f(j)},null,8,["data","columns"])])}}});export{c as default}; diff --git a/BTPanel/static/vite/js/config11.js b/BTPanel/static/vite/js/config11.js index 2d5c8c94..83dfabae 100644 --- a/BTPanel/static/vite/js/config11.js +++ b/BTPanel/static/vite/js/config11.js @@ -1 +1 @@ -import{_ as e}from"./public.js?v=1760428868419";import{_ as t}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{H as a}from"./setting.js?v=1760428868419";import{k as l,P as i,r as n,e as o,R as s,V as f,W as c,a3 as r,U as p,S as u,a4 as m,N as _}from"./vue.js?v=1760428868419";import{dR as g,dj as d,df as v}from"./naive.js?v=1760428868419";import"./page_layout.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const y={class:"p-20px"},S={class:"w-150px"},W={class:"w-150px"},j=l({__name:"config",props:{config:{}},emits:["refresh"],setup(l,{expose:j,emit:b}){const x=l,w=b,{t:$}=i(),h=n(null),U=o({open:!0,cycle:60,limit:240}),R={cycle:{validator:()=>!!U.cycle||new Error($("Waf.Setting.config_154"))},limit:{validator:()=>!!U.limit||new Error($("Waf.Setting.config_155"))}};return(()=>{const{config:e}=x;U.open=e.open,U.limit=e.limit,U.cycle=e.cycle})(),j({onConfirm:async()=>{var e;await(null==(e=h.value)?void 0:e.validate()),await a({..._(U),open:U.open?1:0}),w("refresh")}}),(a,l)=>{const i=d,n=g,o=v,_=t,j=e;return f(),s("div",y,[c(_,{ref_key:"formRef",ref:h,model:p(U),rules:R},{default:r(()=>[c(n,{label:a.$t("Waf.Setting.config_148"),path:"open"},{default:r(()=>[c(i,{value:p(U).open,"onUpdate:value":l[0]||(l[0]=e=>p(U).open=e)},null,8,["value"])]),_:1},8,["label"]),c(n,{label:a.$t("Waf.Setting.config_149"),path:"cycle"},{default:r(()=>[u("div",S,[c(o,{value:p(U).cycle,"onUpdate:value":l[1]||(l[1]=e=>p(U).cycle=e),min:1,"show-button":!1},{suffix:r(()=>[u("span",null,m(a.$t("Waf.Setting.config_53")),1)]),_:1},8,["value"])])]),_:1},8,["label"]),c(n,{label:a.$t("Waf.Setting.config_150"),path:"limit"},{default:r(()=>[u("div",W,[c(o,{value:p(U).limit,"onUpdate:value":l[2]||(l[2]=e=>p(U).limit=e),min:1,"show-button":!1},{suffix:r(()=>[u("span",null,m(a.$t("Waf.Setting.config_52")),1)]),_:1},8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),c(j,{class:"mt-12px"},{default:r(()=>[u("li",null,m(a.$t("Waf.Setting.config_151")),1),u("li",null,m(a.$t("Waf.Setting.config_152")),1),u("li",null,m(a.$t("Waf.Setting.config_153")),1)]),_:1})])}}});export{j as default}; +import{_ as e}from"./public.js?v=1762424784323";import{_ as t}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{H as a}from"./setting.js?v=1762424784323";import{k as l,P as i,r as n,e as o,R as s,V as f,W as c,a3 as r,U as p,S as u,a4 as m,N as _}from"./vue.js?v=1762424784323";import{dR as g,dj as d,df as v}from"./naive.js?v=1762424784323";import"./page_layout.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const y={class:"p-20px"},S={class:"w-150px"},W={class:"w-150px"},j=l({__name:"config",props:{config:{}},emits:["refresh"],setup(l,{expose:j,emit:b}){const x=l,w=b,{t:$}=i(),h=n(null),U=o({open:!0,cycle:60,limit:240}),R={cycle:{validator:()=>!!U.cycle||new Error($("Waf.Setting.config_154"))},limit:{validator:()=>!!U.limit||new Error($("Waf.Setting.config_155"))}};return(()=>{const{config:e}=x;U.open=e.open,U.limit=e.limit,U.cycle=e.cycle})(),j({onConfirm:async()=>{var e;await(null==(e=h.value)?void 0:e.validate()),await a({..._(U),open:U.open?1:0}),w("refresh")}}),(a,l)=>{const i=d,n=g,o=v,_=t,j=e;return f(),s("div",y,[c(_,{ref_key:"formRef",ref:h,model:p(U),rules:R},{default:r(()=>[c(n,{label:a.$t("Waf.Setting.config_148"),path:"open"},{default:r(()=>[c(i,{value:p(U).open,"onUpdate:value":l[0]||(l[0]=e=>p(U).open=e)},null,8,["value"])]),_:1},8,["label"]),c(n,{label:a.$t("Waf.Setting.config_149"),path:"cycle"},{default:r(()=>[u("div",S,[c(o,{value:p(U).cycle,"onUpdate:value":l[1]||(l[1]=e=>p(U).cycle=e),min:1,"show-button":!1},{suffix:r(()=>[u("span",null,m(a.$t("Waf.Setting.config_53")),1)]),_:1},8,["value"])])]),_:1},8,["label"]),c(n,{label:a.$t("Waf.Setting.config_150"),path:"limit"},{default:r(()=>[u("div",W,[c(o,{value:p(U).limit,"onUpdate:value":l[2]||(l[2]=e=>p(U).limit=e),min:1,"show-button":!1},{suffix:r(()=>[u("span",null,m(a.$t("Waf.Setting.config_52")),1)]),_:1},8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),c(j,{class:"mt-12px"},{default:r(()=>[u("li",null,m(a.$t("Waf.Setting.config_151")),1),u("li",null,m(a.$t("Waf.Setting.config_152")),1),u("li",null,m(a.$t("Waf.Setting.config_153")),1)]),_:1})])}}});export{j as default}; diff --git a/BTPanel/static/vite/js/config12.js b/BTPanel/static/vite/js/config12.js index 0a5d4409..b74d974b 100644 --- a/BTPanel/static/vite/js/config12.js +++ b/BTPanel/static/vite/js/config12.js @@ -1 +1 @@ -import{c as t,f as a,h as e,_ as l}from"./public.js?v=1760428868419";import{d as s,m as i}from"./page_layout.js?v=1760428868419";import{I as n,g as o,J as c}from"./setting.js?v=1760428868419";import{au as r,aC as p}from"./naive.js?v=1760428868419";import{k as f,P as m,e as g,R as u,V as d,S as x,W as _,U as y,a3 as v,j,a4 as S,N as W}from"./vue.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const b={class:"p-20px"},h={class:"flex mb-16px"},$={class:"flex-1 mr-16px"},k={class:"w-230px mr-16px"},w=f({__name:"config",setup(f){const{t:w}=m(),C=g({text:"",text2:""}),P=async()=>{""!==C.text.trim()&&""!==C.text2.trim()?(await c(W(C)),C.text="",C.text2="",D()):i.error(w("Waf.Setting.config_170"))},{table:U,columns:B,setLoading:A}=t([{key:"text",title:w("Waf.Setting.config_164"),ellipsis:{tooltip:!0}},{key:"text2",title:w("Waf.Setting.config_165"),ellipsis:{tooltip:!0}},a({width:80,options:t=>[{label:w("Public.Btn.Del"),onClick:async()=>{await n({body:{[t.text]:t.text2}}),D()}}]})]),D=async()=>{try{A(!0);const{message:t}=await o();s(t)&&(U.data=t.body_character_string.map(t=>{const a=Object.keys(t);return{text:a[0],text2:t[a[0]]}}))}finally{A(!1)}};return D(),(t,a)=>{const s=r,i=p,n=e,o=l;return d(),u("div",b,[x("div",h,[x("div",$,[_(s,{value:y(C).text,"onUpdate:value":a[0]||(a[0]=t=>y(C).text=t),placeholder:t.$t("Waf.Setting.config_164")},null,8,["value","placeholder"])]),x("div",k,[_(s,{value:y(C).text2,"onUpdate:value":a[1]||(a[1]=t=>y(C).text2=t),placeholder:t.$t("Waf.Setting.config_165")},null,8,["value","placeholder"])]),_(i,{type:"primary",onClick:P},{default:v(()=>[j(S(t.$t("Public.Btn.Add")),1)]),_:1})]),_(n,{"max-height":230,loading:y(U).loading,data:y(U).data,columns:y(B)},null,8,["loading","data","columns"]),_(o,{class:"mt-16px"},{default:v(()=>[x("li",null,S(t.$t("Waf.Setting.config_166")),1),x("li",null,S(t.$t("Waf.Setting.config_167")),1),x("li",null,S(t.$t("Waf.Setting.config_168")),1),x("li",null,S(t.$t("Waf.Setting.config_169")),1)]),_:1})])}}});export{w as default}; +import{c as t,f as a,h as e,_ as l}from"./public.js?v=1762424784323";import{d as s,m as i}from"./page_layout.js?v=1762424784323";import{I as n,g as o,J as c}from"./setting.js?v=1762424784323";import{au as r,aC as p}from"./naive.js?v=1762424784323";import{k as f,P as m,e as g,R as u,V as d,S as x,W as _,U as y,a3 as v,j,a4 as S,N as W}from"./vue.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const b={class:"p-20px"},h={class:"flex mb-16px"},$={class:"flex-1 mr-16px"},k={class:"w-230px mr-16px"},w=f({__name:"config",setup(f){const{t:w}=m(),C=g({text:"",text2:""}),P=async()=>{""!==C.text.trim()&&""!==C.text2.trim()?(await c(W(C)),C.text="",C.text2="",D()):i.error(w("Waf.Setting.config_170"))},{table:U,columns:B,setLoading:A}=t([{key:"text",title:w("Waf.Setting.config_164"),ellipsis:{tooltip:!0}},{key:"text2",title:w("Waf.Setting.config_165"),ellipsis:{tooltip:!0}},a({width:80,options:t=>[{label:w("Public.Btn.Del"),onClick:async()=>{await n({body:{[t.text]:t.text2}}),D()}}]})]),D=async()=>{try{A(!0);const{message:t}=await o();s(t)&&(U.data=t.body_character_string.map(t=>{const a=Object.keys(t);return{text:a[0],text2:t[a[0]]}}))}finally{A(!1)}};return D(),(t,a)=>{const s=r,i=p,n=e,o=l;return d(),u("div",b,[x("div",h,[x("div",$,[_(s,{value:y(C).text,"onUpdate:value":a[0]||(a[0]=t=>y(C).text=t),placeholder:t.$t("Waf.Setting.config_164")},null,8,["value","placeholder"])]),x("div",k,[_(s,{value:y(C).text2,"onUpdate:value":a[1]||(a[1]=t=>y(C).text2=t),placeholder:t.$t("Waf.Setting.config_165")},null,8,["value","placeholder"])]),_(i,{type:"primary",onClick:P},{default:v(()=>[j(S(t.$t("Public.Btn.Add")),1)]),_:1})]),_(n,{"max-height":230,loading:y(U).loading,data:y(U).data,columns:y(B)},null,8,["loading","data","columns"]),_(o,{class:"mt-16px"},{default:v(()=>[x("li",null,S(t.$t("Waf.Setting.config_166")),1),x("li",null,S(t.$t("Waf.Setting.config_167")),1),x("li",null,S(t.$t("Waf.Setting.config_168")),1),x("li",null,S(t.$t("Waf.Setting.config_169")),1)]),_:1})])}}});export{w as default}; diff --git a/BTPanel/static/vite/js/config13.js b/BTPanel/static/vite/js/config13.js index 1bf55cda..2c74e4b8 100644 --- a/BTPanel/static/vite/js/config13.js +++ b/BTPanel/static/vite/js/config13.js @@ -1 +1 @@ -import{c as a,f as t,h as n,_ as l,u as e,a as o}from"./public.js?v=1760428868419";import{k as i,P as s,r as u,R as r,V as c,S as f,W as p,aj as d,ak as m,U as g,a3 as _,j as v,a4 as y}from"./vue.js?v=1760428868419";import{w as j,m as x,go as w}from"./page_layout.js?v=1760428868419";import{K as S,L as W,M as b,N as h,O as C}from"./setting.js?v=1760428868419";import{_ as k}from"./index99.js?v=1760428868419";import{au as $,aC as P,da as B}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const U={class:"p-20px"},L={class:"flex mb-16px"},E={class:"flex-1 mr-16px"},K="uri_find",R=i({__name:"config",setup(i){const{t:R}=s(),A=u(""),D=async()=>{""!==A.value.trim()?(await b({url_find:A.value}),A.value="",q()):x.error(R("Waf.Setting.config_176"))},H=()=>{const a=u("");e({title:R("Waf.Setting.config_177"),width:440,footer:!0,content:()=>p("div",{class:"p-20px"},[p(k,{value:a.value,"onUpdate:value":t=>a.value=t,rows:14,placeholder:R("Waf.Setting.config_178")},null)]),onConfirm:async()=>{if(""===a.value.trim())return x.error(R("Waf.Setting.config_179")),!1;await h({pdata:a.value,json:1}),q()}})},I=()=>{const a=u(N.data.map(a=>a.url).join("\n"));e({title:R("Waf.Setting.config_177"),width:440,footer:!0,content:()=>p("div",{class:"p-20px"},[p(k,{value:a.value,"onUpdate:value":t=>a.value=t,rows:14,readonly:!0},null)]),onConfirm:()=>(w(a.value,"".concat(K,".json")),!1)})},M=()=>{o({title:R("Waf.Setting.config_180"),content:R("Waf.Setting.config_181"),onConfirm:async()=>{await C({type:K}),q()}})},{table:N,columns:O,setLoading:V}=a([{key:"url",title:"URL"},t({width:80,options:a=>[{label:R("Public.Btn.Del"),onClick:async()=>{await S({url_find:a.url}),q()}}]})]),q=async()=>{try{V(!0);const{message:a}=await W();j(a)&&(N.data=a.map(a=>({url:a})))}finally{V(!1)}};return q(),(a,t)=>{const e=$,o=P,i=n,s=B,u=l;return c(),r("div",U,[f("div",L,[f("div",E,[p(e,{value:g(A),"onUpdate:value":t[0]||(t[0]=a=>m(A)?A.value=a:null),placeholder:a.$t("Waf.Setting.config_173"),onKeyup:d(D,["enter"])},null,8,["value","placeholder"])]),p(o,{type:"primary",onClick:D},{default:_(()=>[v(y(a.$t("Public.Btn.Add")),1)]),_:1})]),p(i,{"max-height":258,loading:g(N).loading,data:g(N).data,columns:g(O)},null,8,["loading","data","columns"]),p(s,{class:"mt-16px"},{default:_(()=>[p(o,{onClick:H},{default:_(()=>[v(y(a.$t("Public.Btn.Import")),1)]),_:1}),p(o,{onClick:I},{default:_(()=>[v(y(a.$t("Public.Btn.Export")),1)]),_:1}),p(o,{onClick:M},{default:_(()=>[v(y(a.$t("Public.Btn.Empty")),1)]),_:1})]),_:1}),p(u,{class:"mt-16px"},{default:_(()=>[f("li",null,y(a.$t("Waf.Setting.config_174")),1),f("li",null,y(a.$t("Waf.Setting.config_175")),1)]),_:1})])}}});export{R as default}; +import{c as a,f as t,h as n,_ as l,u as e,a as o}from"./public.js?v=1762424784323";import{k as i,P as s,r as u,R as r,V as c,S as f,W as p,aj as d,ak as m,U as g,a3 as _,j as v,a4 as y}from"./vue.js?v=1762424784323";import{w as j,m as x,gk as w}from"./page_layout.js?v=1762424784323";import{K as S,L as W,M as b,N as h,O as k}from"./setting.js?v=1762424784323";import{_ as C}from"./index99.js?v=1762424784323";import{au as $,aC as P,da as B}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const U={class:"p-20px"},L={class:"flex mb-16px"},E={class:"flex-1 mr-16px"},K="uri_find",R=i({__name:"config",setup(i){const{t:R}=s(),A=u(""),D=async()=>{""!==A.value.trim()?(await b({url_find:A.value}),A.value="",q()):x.error(R("Waf.Setting.config_176"))},H=()=>{const a=u("");e({title:R("Waf.Setting.config_177"),width:440,footer:!0,content:()=>p("div",{class:"p-20px"},[p(C,{value:a.value,"onUpdate:value":t=>a.value=t,rows:14,placeholder:R("Waf.Setting.config_178")},null)]),onConfirm:async()=>{if(""===a.value.trim())return x.error(R("Waf.Setting.config_179")),!1;await h({pdata:a.value,json:1}),q()}})},I=()=>{const a=u(N.data.map(a=>a.url).join("\n"));e({title:R("Waf.Setting.config_177"),width:440,footer:!0,content:()=>p("div",{class:"p-20px"},[p(C,{value:a.value,"onUpdate:value":t=>a.value=t,rows:14,readonly:!0},null)]),onConfirm:()=>(w(a.value,"".concat(K,".json")),!1)})},M=()=>{o({title:R("Waf.Setting.config_180"),content:R("Waf.Setting.config_181"),onConfirm:async()=>{await k({type:K}),q()}})},{table:N,columns:O,setLoading:V}=a([{key:"url",title:"URL"},t({width:80,options:a=>[{label:R("Public.Btn.Del"),onClick:async()=>{await S({url_find:a.url}),q()}}]})]),q=async()=>{try{V(!0);const{message:a}=await W();j(a)&&(N.data=a.map(a=>({url:a})))}finally{V(!1)}};return q(),(a,t)=>{const e=$,o=P,i=n,s=B,u=l;return c(),r("div",U,[f("div",L,[f("div",E,[p(e,{value:g(A),"onUpdate:value":t[0]||(t[0]=a=>m(A)?A.value=a:null),placeholder:a.$t("Waf.Setting.config_173"),onKeyup:d(D,["enter"])},null,8,["value","placeholder"])]),p(o,{type:"primary",onClick:D},{default:_(()=>[v(y(a.$t("Public.Btn.Add")),1)]),_:1})]),p(i,{"max-height":258,loading:g(N).loading,data:g(N).data,columns:g(O)},null,8,["loading","data","columns"]),p(s,{class:"mt-16px"},{default:_(()=>[p(o,{onClick:H},{default:_(()=>[v(y(a.$t("Public.Btn.Import")),1)]),_:1}),p(o,{onClick:I},{default:_(()=>[v(y(a.$t("Public.Btn.Export")),1)]),_:1}),p(o,{onClick:M},{default:_(()=>[v(y(a.$t("Public.Btn.Empty")),1)]),_:1})]),_:1}),p(u,{class:"mt-16px"},{default:_(()=>[f("li",null,y(a.$t("Waf.Setting.config_174")),1),f("li",null,y(a.$t("Waf.Setting.config_175")),1)]),_:1})])}}});export{R as default}; diff --git a/BTPanel/static/vite/js/config14.js b/BTPanel/static/vite/js/config14.js index f68a6f57..1599616e 100644 --- a/BTPanel/static/vite/js/config14.js +++ b/BTPanel/static/vite/js/config14.js @@ -1 +1 @@ -import{c as a,f as t,h as n,_ as e,u as o,a as l}from"./public.js?v=1760428868419";import{k as i,P as s,r as c,R as r,V as u,S as f,W as d,aj as p,ak as m,U as g,a3 as _,j as v,a4 as x}from"./vue.js?v=1760428868419";import{d as y,m as w,go as j}from"./page_layout.js?v=1760428868419";import{P as S,g as W,Q as b,R as h,S as C}from"./setting.js?v=1760428868419";import{_ as k}from"./index99.js?v=1760428868419";import{au as P,aC as $,da as B}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const U={class:"p-20px"},E={class:"flex mb-16px"},R={class:"flex-1 mr-16px"},A=i({__name:"config",setup(i){const{t:A}=s(),D=c(""),H=async()=>{""!==D.value.trim()?(await b({text:D.value}),D.value="",z()):w.error(A("Waf.Setting.config_176"))},I=()=>{const a=c("");o({title:A("Waf.Setting.config_187"),width:440,footer:!0,content:()=>d("div",{class:"p-20px"},[d(k,{value:a.value,"onUpdate:value":t=>a.value=t,rows:14,placeholder:A("Waf.Setting.config_188")},null)]),onConfirm:async()=>{if(""===a.value.trim())return w.error(A("Waf.Setting.config_179")),!1;await h({text:a.value}),z()}})},K=()=>{const a=c(Q.data.map(a=>a.word).join("\n"));o({title:A("Waf.Setting.config_177"),width:440,footer:!0,content:()=>d("div",{class:"p-20px"},[d(k,{value:a.value,"onUpdate:value":t=>a.value=t,rows:14,readonly:!0},null)]),onConfirm:()=>(j(a.value,"".concat("body_intercept",".json")),!1)})},L=()=>{l({title:A("Waf.Setting.config_180"),content:A("Waf.Setting.config_181"),onConfirm:async()=>{await C(),z()}})},{table:Q,columns:V,setLoading:q}=a([{key:"word",title:A("Waf.Setting.config_184")},t({width:80,options:a=>[{label:A("Public.Btn.Del"),onClick:async()=>{await S({text:a.word}),z()}}]})]),z=async()=>{try{q(!0);const{message:a}=await W();y(a)&&(Q.data=a.body_intercept.map(a=>({word:a})))}finally{q(!1)}};return z(),(a,t)=>{const o=P,l=$,i=n,s=B,c=e;return u(),r("div",U,[f("div",E,[f("div",R,[d(o,{value:g(D),"onUpdate:value":t[0]||(t[0]=a=>m(D)?D.value=a:null),placeholder:a.$t("Waf.Setting.config_184"),onKeyup:p(H,["enter"])},null,8,["value","placeholder"])]),d(l,{type:"primary",onClick:H},{default:_(()=>[v(x(a.$t("Public.Btn.Add")),1)]),_:1})]),d(i,{"max-height":258,loading:g(Q).loading,data:g(Q).data,columns:g(V)},null,8,["loading","data","columns"]),d(s,{class:"mt-16px"},{default:_(()=>[d(l,{onClick:I},{default:_(()=>[v(x(a.$t("Public.Btn.Import")),1)]),_:1}),d(l,{onClick:K},{default:_(()=>[v(x(a.$t("Public.Btn.Export")),1)]),_:1}),d(l,{onClick:L},{default:_(()=>[v(x(a.$t("Public.Btn.Empty")),1)]),_:1})]),_:1}),d(c,{class:"mt-16px"},{default:_(()=>[f("li",null,x(a.$t("Waf.Setting.config_185")),1),f("li",null,x(a.$t("Waf.Setting.config_186")),1)]),_:1})])}}});export{A as default}; +import{c as a,f as t,h as n,_ as e,u as o,a as l}from"./public.js?v=1762424784323";import{k as i,P as s,r as c,R as r,V as u,S as f,W as d,aj as p,ak as m,U as g,a3 as _,j as v,a4 as x}from"./vue.js?v=1762424784323";import{d as y,m as w,gk as j}from"./page_layout.js?v=1762424784323";import{P as S,g as W,Q as b,R as h,S as k}from"./setting.js?v=1762424784323";import{_ as C}from"./index99.js?v=1762424784323";import{au as P,aC as $,da as B}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const U={class:"p-20px"},E={class:"flex mb-16px"},R={class:"flex-1 mr-16px"},A=i({__name:"config",setup(i){const{t:A}=s(),D=c(""),H=async()=>{""!==D.value.trim()?(await b({text:D.value}),D.value="",z()):w.error(A("Waf.Setting.config_176"))},I=()=>{const a=c("");o({title:A("Waf.Setting.config_187"),width:440,footer:!0,content:()=>d("div",{class:"p-20px"},[d(C,{value:a.value,"onUpdate:value":t=>a.value=t,rows:14,placeholder:A("Waf.Setting.config_188")},null)]),onConfirm:async()=>{if(""===a.value.trim())return w.error(A("Waf.Setting.config_179")),!1;await h({text:a.value}),z()}})},K=()=>{const a=c(Q.data.map(a=>a.word).join("\n"));o({title:A("Waf.Setting.config_177"),width:440,footer:!0,content:()=>d("div",{class:"p-20px"},[d(C,{value:a.value,"onUpdate:value":t=>a.value=t,rows:14,readonly:!0},null)]),onConfirm:()=>(j(a.value,"".concat("body_intercept",".json")),!1)})},L=()=>{l({title:A("Waf.Setting.config_180"),content:A("Waf.Setting.config_181"),onConfirm:async()=>{await k(),z()}})},{table:Q,columns:V,setLoading:q}=a([{key:"word",title:A("Waf.Setting.config_184")},t({width:80,options:a=>[{label:A("Public.Btn.Del"),onClick:async()=>{await S({text:a.word}),z()}}]})]),z=async()=>{try{q(!0);const{message:a}=await W();y(a)&&(Q.data=a.body_intercept.map(a=>({word:a})))}finally{q(!1)}};return z(),(a,t)=>{const o=P,l=$,i=n,s=B,c=e;return u(),r("div",U,[f("div",E,[f("div",R,[d(o,{value:g(D),"onUpdate:value":t[0]||(t[0]=a=>m(D)?D.value=a:null),placeholder:a.$t("Waf.Setting.config_184"),onKeyup:p(H,["enter"])},null,8,["value","placeholder"])]),d(l,{type:"primary",onClick:H},{default:_(()=>[v(x(a.$t("Public.Btn.Add")),1)]),_:1})]),d(i,{"max-height":258,loading:g(Q).loading,data:g(Q).data,columns:g(V)},null,8,["loading","data","columns"]),d(s,{class:"mt-16px"},{default:_(()=>[d(l,{onClick:I},{default:_(()=>[v(x(a.$t("Public.Btn.Import")),1)]),_:1}),d(l,{onClick:K},{default:_(()=>[v(x(a.$t("Public.Btn.Export")),1)]),_:1}),d(l,{onClick:L},{default:_(()=>[v(x(a.$t("Public.Btn.Empty")),1)]),_:1})]),_:1}),d(c,{class:"mt-16px"},{default:_(()=>[f("li",null,x(a.$t("Waf.Setting.config_185")),1),f("li",null,x(a.$t("Waf.Setting.config_186")),1)]),_:1})])}}});export{A as default}; diff --git a/BTPanel/static/vite/js/config2.js b/BTPanel/static/vite/js/config2.js index 558049c6..7e1104ca 100644 --- a/BTPanel/static/vite/js/config2.js +++ b/BTPanel/static/vite/js/config2.js @@ -1 +1 @@ -import{_ as e,a}from"./index107.js?v=1760428868419";import{d as t,u as n,_ as l,j as i,a as s,i as o,c as d,h as r,f as u}from"./public.js?v=1760428868419";import{a as f,g as p,s as c,b as _}from"./alarm.js?v=1760428868419";import{_ as x}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{_ as g}from"./index.vue_vue_type_script_setup_true_lang11.js?v=1760428868419";import{S as m,w as v,am as C,_ as S,aR as b,aS as h,aT as y,aU as w,d as $,aV as k,m as P,aW as U,O as j,aX as B,aY as L,aZ as R,p as z,a_ as E,a$ as T,b0 as I,b1 as H,k as D,b2 as A,b3 as F,b4 as V,N as K,b5 as M,b6 as N,a8 as W,b7 as Z,b8 as q,b9 as O,ba as X,bb as Y,x as G}from"./page_layout.js?v=1760428868419";import{k as J,P as Q,r as ee,e as ae,x as te,R as ne,V as le,W as ie,a3 as se,U as oe,S as de,a2 as re,a4 as ue,j as fe,ak as pe,an as ce,N as _e,l as xe,v as ge,ab as me,F as ve,au as Ce,c as Se}from"./vue.js?v=1760428868419";import{dR as be,dj as he,aC as ye,_ as we,dk as $e,dT as ke,dU as Pe,au as Ue,da as je,df as Be,dV as Le,dZ as Re}from"./naive.js?v=1760428868419";import{s as ze,_ as Ee,f as Te,h as Ie,c as He}from"./index106.js?v=1760428868419";import{P as De}from"./open.js?v=1760428868419";import{_ as Ae}from"./index108.js?v=1760428868419";import{_ as Fe}from"./index99.js?v=1760428868419";import{s as Ve,a as Ke,g as Me}from"./ssl-lets-progress.js?v=1760428868419";import{_ as Ne}from"./index.vue_vue_type_script_setup_true_lang9.js?v=1760428868419";import{_ as We}from"./index.vue_vue_type_script_setup_true_lang5.js?v=1760428868419";import{_ as Ze}from"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";const qe={class:"p-20px pt-28px pb-8px"},Oe={class:"w-300px"},Xe=J({__name:"set",props:{open:{type:Boolean,default:!1},taskList:{default:()=>[]}},emits:["refresh"],setup(e,{expose:a,emit:n}){const l=e,i=n,{t:s}=Q(),o=ee(null),d=ae({status:!0,method:[]}),r={method:{trigger:["change"],validator:()=>0!==d.method.length||new Error(s("Config.Safe.index_7"))}},u=te([]),{loading:c,setLoading:_}=t();return(()=>{const{open:e,taskList:a}=l;a.length>0&&(d.status=e||a[0].status,d.method=a[0].sender)})(),(async()=>{try{_(!0);const{message:e}=await p();u.value=v(e)?e:[]}finally{_(!1)}})(),a({onConfirm:async()=>{var e;await(null==(e=o.value)?void 0:e.validate()),await f((()=>{const e=u.value.filter(e=>"panel_safe_push"===e.source)[0];return{template_id:e.id,task_data:{task_data:{tid:e.id,type:e.source,title:e.title,status:d.status,count:0,interval:600,project:"",help:600},sender:d.method,number_rule:{day_num:0,total:0},time_rule:{send_interval:0,time_range:[0,86399]}}}})()),i("refresh")}}),(e,a)=>{const t=he,n=be,l=g,i=x,s=m;return le(),ne("div",qe,[ie(s,{show:oe(c)},{default:se(()=>[ie(i,{ref_key:"formRef",ref:o,model:oe(d),rules:r},{default:se(()=>[ie(n,{label:e.$t("Config.Safe.index_5")},{default:se(()=>[ie(t,{value:oe(d).status,"onUpdate:value":a[0]||(a[0]=e=>oe(d).status=e)},null,8,["value"])]),_:1},8,["label"]),ie(n,{label:e.$t("Config.Safe.index_6"),path:"method"},{default:se(()=>[de("div",Oe,[ie(l,{value:oe(d).method,"onUpdate:value":a[1]||(a[1]=e=>oe(d).method=e)},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])]),_:1},8,["show"])])}}}),Ye=J({__name:"index",setup(a){const{t:l}=Q(),i=ee(!1),s=ee([]),o=async e=>{e?d(!0):(await c({task_id:s.value[0].id,status:0}),i.value=!1,s.value[0].status=!1)},d=(e=!1)=>{n({title:l("Config.Safe.index_4"),width:480,footer:!0,confirmText:l("Public.Btn.Save"),data:{open:e,taskList:s.value,onRefresh:f},component:Xe})},{loading:r,setLoading:u}=t(),f=async()=>{try{u(!0);const{message:e}=await _();if(v(e)){const a=e.filter(e=>"panel_safe_push"===e.keyword);a&&a.length>0?(i.value=a[0].status,s.value=a):(i.value=!1,s.value=[])}}finally{u(!1)}};return f(),(a,t)=>{const n=he,l=ye,s=e;return le(),re(s,{label:a.$t("Config.Safe.index_2")},{content:se(()=>[ie(n,{loading:oe(r),value:oe(i),"onUpdate:value":o},null,8,["loading","value"]),ie(l,{class:"ml-12px h-22px px-5px",size:"small",onClick:t[0]||(t[0]=e=>d())},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_3")),1)]),_:1},8,["label"])}}}),Ge={class:"flex p-20px"},Je={class:"min-w-32px"},Qe={class:"flex-1 ml-10px text-14px leading-22px"},ea={class:"flex items-center min-h-30px mb-12px text-error"},aa=J({__name:"close",emits:["setConfirm"],setup(e,{expose:a,emit:t}){const n=t,{t:l}=Q(),i=C(),s=ee(!1),o=()=>{d>0||n("setConfirm",{disabled:!s.value})};let d=5;return(()=>{n("setConfirm",{text:l("Config.Safe.index_16",[d]),disabled:!0});const e=setInterval(()=>{d--,n("setConfirm",{text:l("Config.Safe.index_16",[d])}),d<=0&&(clearInterval(e),n("setConfirm",{text:l("Config.Safe.index_17"),disabled:!s.value}))},1e3)})(),a({onConfirm:async()=>(await b(),await h(),setTimeout(()=>{{const e="http:"===location.protocol?"https":"http";window.location.href="".concat(e,"://").concat(window.location.host).concat(ze.value.adminPath)}},1500),!1)}),(e,a)=>{const t=S,n=we;return le(),ne("div",Ge,[de("div",Je,[ie(t,{name:"base-warning",color:oe(i).warningColor,size:"32"},null,8,["color"])]),de("div",Qe,[de("div",ea,ue(e.$t("Config.Safe.index_14")),1),ie(n,{checked:oe(s),"onUpdate:checked":[a[0]||(a[0]=e=>pe(s)?s.value=e:null),o]},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_15")),1)]),_:1},8,["checked"])])])}}}),ta={class:"flex flex-wrap py-2px text-primary text-12px"},na={class:"mr-24px"},la={class:"mr-24px"},ia={class:"flex gap-20px mt-16px"},sa={class:"flex-1"},oa={class:"mb-8px"},da={class:"flex-1"},ra={class:"mb-8px"},ua={class:"mt-10px"},fa={class:"bt-link",href:"http://www.bt.cn/bbs/thread-704-1-1.html",target:"_blank"},pa=J({__name:"ssl-custom",setup(e){const a=ee(""),n=ee(""),i=ae({dns:[""],issuer:"--",notBefore:"--",notAfter:"--"}),s=async()=>{await y({privateKey:a.value,certPem:n.value},!0),r()},{loading:o,setLoading:d}=t(),r=async()=>{try{d(!0);const{message:e}=await w();$(e)&&(a.value=e.privateKey||"",n.value=e.certPem||"",i.dns=e.info.dns||[],i.issuer=e.info.issuer||"",i.notBefore=e.info.notBefore||"",i.notAfter=e.info.notAfter||"")}finally{d(!1)}};return r(),(e,t)=>{const d=$e,r=Fe,u=ye,f=l,p=m;return le(),re(p,{show:oe(o)},{default:se(()=>[ie(d,{type:"success","show-icon":!1},{default:se(()=>[de("div",ta,[de("div",na,[fe(ue(e.$t("Config.Safe.index_37")),1),de("b",null,ue(oe(i).dns.join(",")||"--"),1)]),de("div",la,[fe(ue(e.$t("Config.Safe.index_38")),1),de("b",null,ue(oe(i).issuer),1)]),de("div",null,[fe(ue(e.$t("Config.Safe.index_39")),1),de("b",null,ue(oe(i).notAfter),1)])])]),_:1}),de("div",ia,[de("div",sa,[de("div",oa,ue(e.$t("Config.Safe.index_27")),1),ie(r,{value:oe(a),"onUpdate:value":t[0]||(t[0]=e=>pe(a)?a.value=e:null),rows:14,placeholder:""},null,8,["value"])]),de("div",da,[de("div",ra,ue(e.$t("Config.Safe.index_28")),1),ie(r,{value:oe(n),"onUpdate:value":t[1]||(t[1]=e=>pe(n)?n.value=e:null),rows:14,placeholder:""},null,8,["value"])])]),de("div",ua,[ie(u,{type:"primary",onClick:s},{default:se(()=>[fe(ue(e.$t("Public.Btn.Save")),1)]),_:1})]),ie(f,{class:"mt-12px"},{default:se(()=>[de("li",null,[fe(ue(e.$t("Config.Safe.index_40"))+" ",1),de("a",fa," ["+ue(e.$t("Public.Btn.Help"))+"] ",1)]),de("li",null,ue(e.$t("Config.Safe.index_42")),1),de("li",null,ue(e.$t("Config.Safe.index_43")),1)]),_:1})]),_:1},8,["show"])}}}),ca={class:"h-400px"},_a={class:"flex items-center"},xa={class:"min-w-18px mr-8px"},ga={class:"leading-18px"},ma={class:"w-400px mr-10px"},va={class:"text-primary font-bold"},Ca={class:"text-warning font-bold"},Sa={class:"text-error"},ba=J({__name:"ssl-lets",setup(e){const{t:a}=Q(),t=ee(null),s=ae({domain:"",hash:"",auth_type:"http",support:[]}),o={domain:{required:!0,trigger:"blur",message:a("Config.Safe.Ssl.index_10")}},d=ee(!1),r=ee(!1),u=ee(!1),f=()=>{m()},p=()=>{u.value=!1,r.value=!1,s.hash="",s.support=[]},c=()=>{window.open("/ssl_domain/domain")},_=async()=>{var e;await(null==(e=t.value)?void 0:e.validate());const{message:a}=await Ve({domain:_e(s)});$(a)&&(a.task_id?g(a.task_id):P.success(a.result))},g=e=>{n({hideClose:!0,data:{task_id:e},component:Ke})},m=async()=>{if(s.domain)try{d.value=!0;const{message:e}=await i({domain:s.domain});$(e)&&(r.value=!0,u.value=!!e.hash,s.hash=e.hash,s.support=e.support)}finally{d.value=!1}};return(async()=>{const{message:e}=await Me();$(e)&&(s.domain=e.domain)})(),(e,a)=>{const n=S,i=$e,g=Pe,v=k,C=ke,b=be,h=Ue,y=ye,w=je,$=x,P=l;return le(),ne("div",ca,[ie(i,{"show-icon":!1,class:"mb-20px"},{default:se(()=>[de("div",_a,[de("div",xa,[ie(n,{name:"base-info",size:17})]),de("span",ga,ue(e.$t("Config.Safe.Ssl.index_1")),1)])]),_:1}),ie($,{ref_key:"formRef",ref:t,model:oe(s),rules:o,"label-width":"140"},{default:se(()=>[ie(b,{label:e.$t("Config.Safe.Ssl.index_2")},{default:se(()=>[ie(C,{value:oe(s).auth_type,"onUpdate:value":a[0]||(a[0]=e=>oe(s).auth_type=e)},{default:se(()=>[ie(v,null,{default:se(()=>[ie(g,{value:"http"},{default:se(()=>[fe(ue(e.$t("SSL.SiteSSL.index_17")),1)]),_:1}),ie(g,{value:"dns"},{default:se(()=>[fe(ue(e.$t("SSL.index_12")),1)]),_:1})]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),"dns"===oe(s).auth_type?(le(),re(b,{key:0,label:e.$t("Config.Safe.Ssl.index_4"),prop:"domain"},{default:se(()=>[de("div",ma,[ie(h,{value:oe(s).domain,"onUpdate:value":a[1]||(a[1]=e=>oe(s).domain=e),loading:oe(d),"input-props":{spellcheck:!1},placeholder:e.$t("Config.Safe.Ssl.index_5"),clearable:"",onBlur:f,onInput:p},null,8,["value","loading","placeholder"])]),ie(y,{onClick:m},{default:se(()=>[fe(ue(e.$t("Config.Safe.Ssl.index_12")),1)]),_:1})]),_:1},8,["label"])):ce("",!0),"http"===oe(s).auth_type?(le(),re(b,{key:1,label:e.$t("Config.Safe.Ssl.index_4")},{default:se(()=>[ie(h,{class:"w-400px!",value:oe(s).domain,"onUpdate:value":a[2]||(a[2]=e=>oe(s).domain=e),placeholder:e.$t("Config.Safe.Ssl.index_5")},null,8,["value","placeholder"])]),_:1},8,["label"])):ce("",!0),oe(r)&&"dns"===oe(s).auth_type?(le(),re(b,{key:2,label:" "},{default:se(()=>[oe(u)?(le(),re(i,{key:0,type:"success",class:"min-w-500px"},{default:se(()=>[de("span",va,ue(e.$t("Config.Safe.Ssl.index_6",[oe(s).domain])),1)]),_:1})):(le(),re(i,{key:1,type:"warning",class:"min-w-500px"},{default:se(()=>[ie(w,{class:"items-center"},{default:se(()=>[de("span",Ca,ue(e.$t("Config.Safe.Ssl.index_7",[oe(s).domain])),1),ie(y,{type:"primary",ghost:"",size:"small",onClick:c},{default:se(()=>[fe(ue(e.$t("Config.Safe.Ssl.index_8")),1)]),_:1})]),_:1})]),_:1}))]),_:1})):ce("",!0),ie(b,{label:" "},{default:se(()=>[ie(y,{type:"primary",disabled:!oe(u)&&"dns"===oe(s).auth_type,onClick:_},{default:se(()=>[fe(ue(e.$t("Config.Safe.Ssl.index_9")),1)]),_:1},8,["disabled"])]),_:1})]),_:1},8,["model"]),"http"===oe(s).auth_type?(le(),re(P,{key:0},{default:se(()=>[de("li",Sa,ue(e.$t("SSL.SiteSSL.index_15")),1),de("li",null,ue(e.$t("Site.Cert.index_21")),1),de("li",null,ue(e.$t("Site.Cert.index_23")),1),de("li",null,ue(e.$t("Site.Cert.index_24")),1)]),_:1})):ce("",!0)])}}}),ha={class:"p-16px"},ya=J({__name:"ssl",setup(e){const a=ee("custom"),t=[{key:"custom",label:"Custom SSL",component:pa},{key:"lets",label:"Lets Encrypt",component:ba}];return(e,n)=>{const l=Ae;return le(),ne("div",ha,[ie(l,{value:oe(a),"onUpdate:value":n[0]||(n[0]=e=>pe(a)?a.value=e:null),options:t},null,8,["value"])])}}}),wa={class:"bt-link",href:"https://forum.aapanel.com/d/15210-aapanel-enable-panel-ssl-use-self-signed-certificate-browser-add-secure",target:"_blank"},$a=J({__name:"index",setup(a){const{t:t}=Q(),l=e=>{e?i():s()},i=()=>{n({title:t("Config.Safe.index_11"),width:600,footer:!0,component:De})},s=()=>{n({title:t("Config.Safe.index_12"),width:400,footer:!0,confirmType:"error",component:aa})},o=()=>{n({title:t("Config.Safe.index_13"),width:740,component:ya})};return(a,t)=>{const n=he,i=ye,s=e;return le(),re(s,{label:a.$t("Config.Safe.index_8")},{content:se(()=>[ie(n,{value:oe(ze).panelSSL,"onUpdate:value":l},null,8,["value"]),ie(i,{class:"ml-12px h-22px px-5px",size:"small",onClick:o},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_9")),1),de("a",wa,ue(a.$t("Public.Btn.Help")),1)]),_:1},8,["label"])}}}),ka={class:"p-20px"},Pa={class:"w-280px"},Ua={class:"w-280px"},ja={class:"text-error"},Ba=J({__name:"config",setup(e){const{t:a}=Q(),t=ee(null),n=ae({open:"True",basic_user:"",basic_pwd:""}),i={basic_user:{trigger:["blur","input"],validator:()=>"True"!==n.open||""!==n.basic_user.trim()||new Error(a("Config.Safe.index_56"))},basic_pwd:{trigger:["blur","input"],validator:()=>"True"!==n.open||""!==n.basic_pwd.trim()||new Error(a("Config.Safe.index_58"))}},s=async()=>{var e;await(null==(e=t.value)?void 0:e.validate()),await U(_e(n)),j()};return(e,a)=>{const o=he,d=be,r=Ue,u=ye,f=x,p=l;return le(),ne("div",ka,[ie(f,{ref_key:"formRef",ref:t,model:oe(n),rules:i},{default:se(()=>[ie(d,{label:e.$t("Config.Safe.index_54")},{default:se(()=>[ie(o,{value:oe(n).open,"onUpdate:value":a[0]||(a[0]=e=>oe(n).open=e),"checked-value":"True","unchecked-value":"False"},null,8,["value"])]),_:1},8,["label"]),ie(d,{label:e.$t("Config.Safe.index_55"),path:"basic_user"},{default:se(()=>[de("div",Pa,[ie(r,{value:oe(n).basic_user,"onUpdate:value":a[1]||(a[1]=e=>oe(n).basic_user=e),placeholder:e.$t("Config.Safe.index_56")},null,8,["value","placeholder"])])]),_:1},8,["label"]),ie(d,{label:e.$t("Config.Safe.index_57"),path:"basic_pwd"},{default:se(()=>[de("div",Ua,[ie(r,{value:oe(n).basic_pwd,"onUpdate:value":a[2]||(a[2]=e=>oe(n).basic_pwd=e),placeholder:e.$t("Config.Safe.index_58")},null,8,["value","placeholder"])])]),_:1},8,["label"]),ie(d,{label:" ","show-feedback":!1},{default:se(()=>[ie(u,{type:"primary",onClick:s},{default:se(()=>[fe(ue(e.$t("Public.Btn.Save")),1)]),_:1})]),_:1})]),_:1},8,["model"]),ie(p,{class:"mt-20px pl-12px"},{default:se(()=>[de("li",ja,ue(e.$t("Config.Safe.index_59")),1),de("li",null,ue(e.$t("Config.Safe.index_48")),1),de("li",null,ue(e.$t("Config.Safe.index_49")),1),de("li",null,ue(e.$t("Config.Safe.index_50")),1),de("li",null,ue(e.$t("Config.Safe.index_51")),1)]),_:1})])}}}),La={class:"p-20px"},Ra={class:"text-error"},za={class:"flex items-center justify-between"},Ea={class:"bt-link",href:"https://www.bt.cn/bbs/thread-34374-1-1.html",target:"_blank"},Ta=J({__name:"confirm",setup(e,{expose:a}){const{t:t}=Q(),l=ee();return a({onConfirm:async()=>{await l.value.validate(),n({title:t("Config.Safe.index_53"),width:500,component:Ba})}}),(e,a)=>{const t=Ne,n=Ee,i=Te;return le(),ne("div",La,[ie(t,{class:"mb-20px"},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_47")),1)]),_:1}),ie(n,{class:"mb-20px"},{default:se(()=>[de("li",Ra,ue(e.$t("Config.Safe.index_19")),1),de("li",null,ue(e.$t("Config.Safe.index_48")),1),de("li",null,ue(e.$t("Config.Safe.index_49")),1),de("li",null,ue(e.$t("Config.Safe.index_50")),1),de("li",null,ue(e.$t("Config.Safe.index_51")),1)]),_:1}),de("div",za,[ie(i,{ref_key:"riskRef",ref:l},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_29")),1)]),_:1},512),de("a",Ea,ue(e.$t("Config.Safe.index_52")),1)])])}}}),Ia={class:"bt-link",href:"https://www.bt.cn/bbs/thread-34374-1-1.html",target:"_blank"},Ha=J({__name:"index",setup(a){const{t:t}=Q(),l=async e=>{e?n({title:t("Config.Safe.index_46"),width:650,footer:!0,component:Ta}):(await U({open:"False",basic_user:"",basic_pwd:""}),j())};return(a,t)=>{const n=he,i=e;return le(),re(i,{label:a.$t("Config.Safe.index_44")},{content:se(()=>[ie(n,{value:oe(ze).basicAuth,"onUpdate:value":l},null,8,["value"])]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_45")),1),de("a",Ia,ue(a.$t("Public.Btn.Help")),1)]),_:1},8,["label"])}}}),Da={class:"p-20px"},Aa={class:"mb-20px text-20px text-center text-[var(--setting-security-google-login-bind-title)]"},Fa={class:"px-36px"},Va={class:"mb-10px text-16px text-[var(--setting-security-google-login-bind-text)]"},Ka={class:"mb-20px px-24px py-16px bg-[var(--setting-security-google-login-key-bg)] rounded-4px leading-24px text-14px text-[var(--setting-security-google-login-key-text)] font-500"},Ma={class:"text-[var(--setting-security-google-login-bind-text)]"},Na={class:"text-[var(--setting-security-google-login-bind-text)]"},Wa={class:"mb-20px text-16px text-[var(--setting-security-google-login-bind-text)]"},Za={class:"bt-link",href:"",target:"_blank"},qa={class:"text-error"},Oa=z(J({__name:"config",setup(e){const a=ae({key:"--",username:"--"}),n=ee(""),{loading:i,setLoading:s}=t();return(async()=>{const{message:e}=await L();$(e)&&(a.key=e.key,a.username=e.username)})(),(async()=>{try{s(!0);const{message:e}=await R({act:1});$(e)&&(n.value=e.result)}finally{s(!1)}})(),(e,t)=>{const s=B,o=m,d=l;return le(),ne("div",Da,[de("div",Aa,ue(e.$t("Config.Safe.index_70")),1),de("div",Fa,[de("div",Va,ue(e.$t("Config.Safe.index_71")),1),de("div",Ka,[de("div",null,[fe(ue(e.$t("Config.Safe.index_72"))+" ",1),de("span",Ma,ue(oe(a).username),1)]),de("div",null,[fe(ue(e.$t("Config.Safe.index_73"))+" ",1),de("span",Na,ue(oe(a).key),1)]),de("div",null,[fe(ue(e.$t("Config.Safe.index_74"))+" ",1),t[0]||(t[0]=de("span",{class:"text-[var(--setting-security-google-login-bind-text)]"},"Time based",-1))])]),de("div",Wa,ue(e.$t("Config.Safe.index_75")),1),ie(o,{class:"flex justify-center h-150px",show:oe(i)},{default:se(()=>[xe(ie(s,{value:oe(n),size:150,padding:0},null,8,["value"]),[[ge,oe(n)]])]),_:1},8,["show"]),ie(d,null,{default:se(()=>[de("li",null,[fe(ue(e.$t("Config.Safe.index_76"))+" ",1),de("a",Za,ue(e.$t("Config.Safe.index_77")),1)]),de("li",qa,ue(e.$t("Config.Safe.index_78")),1)]),_:1})])])}}}),[["__scopeId","data-v-86cab381"]]),Xa={class:"p-20px"},Ya={class:"text-error"},Ga={class:"text-error"},Ja={class:"flex items-center justify-between"},Qa={class:"bt-link",href:"https://www.aapanel.com/forum/d/357-how-to-use-google-authenticator-in-the-aapanel",target:"_blank"},et=J({__name:"confirm",setup(e,{expose:a}){const{t:t}=Q(),l=ee();return a({onConfirm:async()=>{await l.value.validate();const{message:e}=await E({act:1});ze.value.dynamicPwd=!0,n({title:t("Config.Safe.index_62"),width:600,component:Oa}),$(e)&&P.success(e.result)}}),(e,a)=>{const t=Ne,n=Ee,i=Te;return le(),ne("div",Xa,[ie(t,{class:"mb-20px"},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_47")),1)]),_:1}),ie(n,{class:"mb-20px"},{default:se(()=>[de("li",Ya,ue(e.$t("Config.Safe.index_19")),1),de("li",Ga,ue(e.$t("Config.Safe.index_69")),1),de("li",null,ue(e.$t("Config.Safe.index_66")),1),de("li",null,ue(e.$t("Config.Safe.index_67")),1)]),_:1}),de("div",Ja,[ie(i,{ref_key:"riskRef",ref:l},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_68")),1)]),_:1},512),de("a",Qa,ue(e.$t("Config.Safe.index_168")),1)])])}}}),at={class:"bt-link",href:"https://www.aapanel.com/forum/d/357-how-to-use-google-authenticator-in-the-aapanel",target:"_blank"},tt=J({__name:"index",setup(a){const{t:t}=Q(),l=async e=>{e?i():(await E({act:0},!0),ze.value.dynamicPwd=!1)},i=()=>{ze.value.dynamicPwd?n({title:t("Config.Safe.index_62"),width:600,component:Oa}):n({title:t("Config.Safe.index_63"),width:670,footer:!0,component:et})};return(a,t)=>{const n=he,s=ye,o=e;return le(),re(o,{label:a.$t("Config.Safe.index_60")},{content:se(()=>[ie(n,{value:oe(ze).dynamicPwd,"onUpdate:value":l},null,8,["value"]),ie(s,{class:"ml-12px h-22px px-5px",size:"small",onClick:i},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_61")),1),de("a",at,ue(a.$t("Public.Btn.Help")),1)]),_:1},8,["label"])}}}),nt={class:"text-error"},lt=J({__name:"index",setup(a){const{t:t}=Q(),n=async e=>{s({title:t("Config.Safe.index_82",[t(e?"Config.Safe.index_83":"Config.Safe.index_84")]),content:()=>e?ie(me,{tag:"div",scope:"global",keypath:"Config.Safe.index_85"},{tips_:()=>ie("span",{class:"text-error"},[t("Config.Safe.index_86")])}):ie(ve,null,[t("Config.Safe.index_87")]),onConfirm:async()=>{await T(),ze.value.pwdComplexity=e}})};return(a,t)=>{const l=he,i=e;return le(),re(i,{label:a.$t("Config.Safe.index_79")},{content:se(()=>[ie(l,{value:oe(ze).pwdComplexity,"onUpdate:value":n},null,8,["value"])]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_80")),1),de("span",nt,ue(a.$t("Config.Safe.index_81")),1)]),_:1},8,["label"])}}}),it={class:"w-260px"},st={class:"text-error"},ot=J({__name:"index",setup(a){const t=async()=>{await I(Ie()),j()};return(a,n)=>{const l=Ue,i=ye,s=e;return le(),re(s,{label:a.$t("Config.Safe.index_88")},{content:se(()=>[de("div",it,[ie(l,{value:oe(ze).domain,"onUpdate:value":n[0]||(n[0]=e=>oe(ze).domain=e),placeholder:""},null,8,["value"])]),ie(i,{class:"ml-12px",type:"primary",onClick:t},{default:se(()=>[fe(ue(a.$t("Public.Btn.Save")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_89")),1),de("span",st,ue(a.$t("Config.Safe.index_90")),1)]),_:1},8,["label"])}}}),dt={class:"w-260px"},rt={class:"text-error"},ut=J({__name:"index",setup(a){const{t:t}=Q(),n=async()=>{let e=/^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$/,a=ze.value.limitIp.split(",").join("-").split("-"),n=!0;if(a.length)for(let t=0;t0)return P.error(t("Config.Safe.index_95"));await H(Ie()),j()};return(a,t)=>{const l=Ue,i=ye,s=e;return le(),re(s,{label:a.$t("Config.Safe.index_91")},{content:se(()=>[de("div",dt,[ie(l,{value:oe(ze).limitIp,"onUpdate:value":t[0]||(t[0]=e=>oe(ze).limitIp=e),placeholder:a.$t("Config.Safe.index_92")},null,8,["value","placeholder"])]),ie(i,{class:"ml-12px",type:"primary",onClick:n},{default:se(()=>[fe(ue(a.$t("Public.Btn.Save")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_93")),1),de("span",rt,ue(a.$t("Config.Safe.index_94")),1)]),_:1},8,["label"])}}}),ft={class:"p-20px"},pt={class:"text-error"},ct={class:"text-error"},_t={class:"w-210px"},xt=J({__name:"set",setup(e,{expose:a}){const{t:t}=Q(),n=ee(),l=ee(null),i=ae({port:D(ze.value.port)}),s={port:{trigger:["blur","input"],validator:()=>!!F(i.port)||new Error(t("Config.Safe.index_104"))}};return a({onConfirm:async()=>{var e;await n.value.validate(),await(null==(e=l.value)?void 0:e.validate());const a=Ie();a.port="".concat(i.port),await A(a),j("".concat(location.protocol,"//").concat(location.hostname,":").concat(i.port).concat(location.pathname))}}),(e,a)=>{const t=Ee,o=Be,d=be,r=x,u=Te;return le(),ne("div",ft,[ie(t,{class:"mb-20px"},{default:se(()=>[de("li",pt,ue(e.$t("Config.Safe.index_100")),1),de("li",ct,ue(e.$t("Config.Safe.index_101")),1)]),_:1}),ie(r,{ref_key:"formRef",ref:l,model:oe(i),rules:s},{default:se(()=>[ie(d,{label:e.$t("Config.Safe.index_96"),path:"port","label-width":"auto","label-style":{paddingLeft:"24px"}},{default:se(()=>[de("div",_t,[ie(o,{value:oe(i).port,"onUpdate:value":a[0]||(a[0]=e=>oe(i).port=e),min:1,max:65535,"show-button":!1,placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),ie(u,{ref_key:"riskRef",ref:n},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_102"))+" ",1),de("a",{class:"bt-link",href:"https://www.aapanel.com/forum/d/599-how-to-release-the-aapanel-port",target:"_blank",onClick:Ce(()=>!1,["stop"])},ue(e.$t("Config.Safe.index_103")),1)]),_:1},512)])}}}),gt={class:"w-260px"},mt={class:"text-error"},vt=J({__name:"index",setup(a){const{t:t}=Q(),l=async()=>{n({title:t("Config.Safe.index_99"),width:400,footer:!0,component:xt})};return(a,t)=>{const n=Ue,i=ye,s=e;return le(),re(s,{label:a.$t("Config.Safe.index_96")},{content:se(()=>[de("div",gt,[ie(n,{value:oe(ze).port,disabled:!0,placeholder:""},null,8,["value"])]),ie(i,{class:"ml-12px",type:"primary",onClick:l},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_97")),1),de("span",mt,ue(a.$t("Config.Safe.index_98")),1)]),_:1},8,["label"])}}}),Ct={class:"px-20px pt-28px pb-8px"},St={class:"w-240px"},bt=J({__name:"set",setup(e,{expose:a}){const{t:t}=Q(),n=ee(null),l=ae({adminPath:ze.value.adminPath}),i={adminPath:{trigger:["blur","input"],validator:()=>""!==l.adminPath.trim()||new Error(t("Config.Safe.index_108"))}};return a({onConfirm:async()=>{var e;await(null==(e=n.value)?void 0:e.validate()),await V({admin_path:K(l.adminPath)}),ze.value.adminPath=l.adminPath}}),(e,a)=>{const t=Ue,s=be,o=x;return le(),ne("div",Ct,[ie(o,{ref_key:"formRef",ref:n,model:oe(l),rules:i},{default:se(()=>[ie(s,{label:e.$t("Config.Safe.index_105"),path:"adminPath"},{default:se(()=>[de("div",St,[ie(t,{value:oe(l).adminPath,"onUpdate:value":a[0]||(a[0]=e=>oe(l).adminPath=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),ht={class:"w-260px"},yt=J({__name:"index",setup(a){const{t:t}=Q(),l=async()=>{n({title:t("Config.Safe.index_107"),width:440,footer:!0,component:bt})};return(a,t)=>{const n=Ue,i=ye,s=e;return le(),re(s,{label:a.$t("Config.Safe.index_105")},{content:se(()=>[de("div",ht,[ie(n,{value:oe(ze).adminPath,disabled:!0,placeholder:""},null,8,["value"])]),ie(i,{class:"ml-12px",type:"primary",onClick:l},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_106")),1)]),_:1},8,["label"])}}}),wt={class:"px-20px py-24px"},$t={class:"w-200px"},kt={class:"text-error"},Pt=J({__name:"set",setup(e,{expose:a}){const{t:t}=Q(),n=ee(null),i=ae({status_code:ze.value.statusCode}),s={},o=[{value:403,label:t("Config.Safe.index_111")},{value:404,label:t("Config.Safe.index_112")},{value:416,label:t("Config.Safe.index_113")},{value:408,label:t("Config.Safe.index_114")},{value:400,label:t("Config.Safe.index_115")},{value:401,label:t("Config.Safe.index_116")}];return a({onConfirm:async()=>{var e;await(null==(e=n.value)?void 0:e.validate()),await M({status_code:i.status_code}),ze.value.statusCode=i.status_code}}),(e,a)=>{const t=Le,d=be,r=x,u=l;return le(),ne("div",wt,[ie(r,{ref_key:"formRef",ref:n,model:oe(i),rules:s},{default:se(()=>[ie(d,{label:e.$t("Config.Safe.index_118"),path:"adminPath"},{default:se(()=>[de("div",$t,[ie(t,{value:oe(i).status_code,"onUpdate:value":a[0]||(a[0]=e=>oe(i).status_code=e),options:o},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),ie(u,null,{default:se(()=>[de("li",kt,ue(e.$t("Config.Safe.index_119")),1)]),_:1})])}}}),Ut={class:"w-260px"},jt=J({__name:"index",setup(a){const{t:t}=Q(),l=new Map([[403,t("Config.Safe.index_111")],[404,t("Config.Safe.index_112")],[416,t("Config.Safe.index_113")],[408,t("Config.Safe.index_114")],[400,t("Config.Safe.index_115")],[401,t("Config.Safe.index_116")]]),i=Se(()=>l.get(ze.value.statusCode)||"--"),s=async()=>{n({title:t("Config.Safe.index_117"),width:420,footer:!0,component:Pt})};return(a,t)=>{const n=Ue,l=ye,o=e;return le(),re(o,{label:a.$t("Config.Safe.index_109")},{content:se(()=>[de("div",Ut,[ie(n,{value:oe(i),disabled:!0,placeholder:""},null,8,["value"])]),ie(l,{class:"ml-12px",type:"primary",onClick:s},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_110")),1)]),_:1},8,["label"])}}}),Bt={class:"px-20px py-24px"},Lt={class:"w-120px"},Rt={class:"text-error"},zt=J({__name:"set",setup(e,{expose:a}){const{t:t}=Q(),n=ee(null),i=ae({day:ze.value.pwdSetDay}),s={day:{trigger:["blur","input"],validator:()=>i.day<0?new Error(t("Config.Safe.index_128")):!(!i.day&&0!==i.day)||new Error(t("Config.Safe.index_129"))}};return a({onConfirm:async()=>{var e;await(null==(e=n.value)?void 0:e.validate()),await N({expire:i.day}),He()}}),(e,a)=>{const t=Be,o=be,d=x,r=l;return le(),ne("div",Bt,[ie(d,{ref_key:"formRef",ref:n,model:oe(i),rules:s},{default:se(()=>[ie(o,{label:e.$t("Config.Safe.index_120"),path:"day"},{default:se(()=>[de("div",Lt,[ie(t,{value:oe(i).day,"onUpdate:value":a[0]||(a[0]=e=>oe(i).day=e),min:0,"show-button":!1,placeholder:""},{suffix:se(()=>[fe(ue(e.$t("Public.Unit.Day",oe(i).day)),1)]),_:1},8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),ie(r,{class:"mt-4px"},{default:se(()=>[de("li",Rt,ue(e.$t("Config.Safe.index_126")),1),de("li",null,ue(e.$t("Config.Safe.index_127")),1)]),_:1})])}}}),Et={class:"w-260px"},Tt=J({__name:"index",setup(a){const{t:t}=Q(),l=Se(()=>{const{pwdSetDay:e,pwdExpireDay:a,pwdExpireTime:n}=ze.value;return 0===e?t("Config.Safe.index_122"):t("Config.Safe.index_123",[W(n),a])}),i=async()=>{n({title:t("Config.Safe.index_124"),width:360,footer:!0,component:zt})};return(a,t)=>{const n=Ue,s=ye,o=e;return le(),re(o,{label:a.$t("Config.Safe.index_120")},{content:se(()=>[de("div",Et,[ie(n,{value:oe(l),disabled:!0,placeholder:""},null,8,["value"])]),ie(s,{class:"ml-12px",type:"primary",onClick:i},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_121")),1)]),_:1},8,["label"])}}}),It={class:"p-20px"},Ht={class:"mb-12px"},Dt={class:"mb-12px"},At={class:"mb-20px"},Ft=J({__name:"set-add-result",props:{address:{default:""}},setup(e){const a=e,t=()=>{o(a.address)};return(e,a)=>{const n=Fe,i=ye,s=l;return le(),ne("div",It,[de("div",Ht,ue(e.$t("Config.Safe.index_147")),1),de("div",Dt,[ie(n,{value:e.address,readonly:"",rows:2},null,8,["value"])]),de("div",At,[ie(i,{type:"primary",onClick:t},{default:se(()=>[fe(ue(e.$t("Public.Btn.Copy")),1)]),_:1})]),ie(s,null,{default:se(()=>[de("li",null,ue(e.$t("Config.Safe.index_148")),1),de("li",null,ue(e.$t("Config.Safe.index_149")),1),de("li",null,ue(e.$t("Config.Safe.index_150")),1)]),_:1})])}}}),Vt={class:"p-20px pt-28px pb-8px"},Kt={class:"flex mb-24px"},Mt={class:"min-w-32px"},Nt={class:"flex-1 ml-16px"},Wt={class:"leading-24px text-error text-14px"},Zt={class:"w-160px"},qt=J({__name:"set-add",emits:["refresh"],setup(e,{expose:a,emit:t}){const l=t,{t:i}=Q(),s=C(),o=ee(null),d=ae({type:3,day:1}),r={day:{trigger:["blur","input"],validator:()=>0!==d.type||!(d.day<=0||d.day%1!=0)||new Error(i("Config.Safe.index_145"))}},u=e=>e%1==0,f=(e="")=>{const a="".concat(window.location.protocol,"//").concat(window.location.host),t="".concat(a,"/login?tmp_token=").concat(e);n({title:i("Config.Safe.index_146"),width:580,data:{address:t},component:Ft})};return a({onConfirm:async()=>{var e;await(null==(e=o.value)?void 0:e.validate());const{message:a}=await Z({expire_time:60*(0===d.type?24*d.day:d.type)*60+Math.floor(Date.now()/1e3)});$(a)&&(f(a.token),P.success(a.msg),l("refresh"))}}),(e,a)=>{const t=S,n=Re,l=ke,i=be,f=Be,p=x;return le(),ne("div",Vt,[de("div",Kt,[de("div",Mt,[ie(t,{name:"base-warning",size:"32",color:oe(s).warningColor},null,8,["color"])]),de("div",Nt,[de("div",Wt,[de("div",null,ue(e.$t("Config.Safe.index_140")),1),de("div",null,ue(e.$t("Config.Safe.index_141")),1)])])]),ie(p,{ref_key:"formRef",ref:o,model:oe(d),rules:r,"label-width":"140"},{default:se(()=>[ie(i,{label:e.$t("Config.Safe.index_142")},{default:se(()=>[ie(l,{value:oe(d).type,"onUpdate:value":a[0]||(a[0]=e=>oe(d).type=e)},{default:se(()=>[ie(n,{value:3},{default:se(()=>[fe("3 "+ue(e.$t("Public.Unit.Hour",3)),1)]),_:1}),ie(n,{value:6},{default:se(()=>[fe("6 "+ue(e.$t("Public.Unit.Hour",6)),1)]),_:1}),ie(n,{value:9},{default:se(()=>[fe("9 "+ue(e.$t("Public.Unit.Hour",9)),1)]),_:1}),ie(n,{value:12},{default:se(()=>[fe("12 "+ue(e.$t("Public.Unit.Hour",12)),1)]),_:1}),ie(n,{value:0},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_143")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),xe(ie(i,{label:e.$t("Config.Safe.index_144"),path:"day"},{default:se(()=>[de("div",Zt,[ie(f,{value:oe(d).day,"onUpdate:value":a[1]||(a[1]=e=>oe(d).day=e),min:1,"show-button":!1,validator:u},{suffix:se(()=>[fe(ue(e.$t("Public.Unit.Day",oe(d).day)),1)]),_:1},8,["value"])])]),_:1},8,["label"]),[[ge,0===oe(d).type]])]),_:1},8,["model"])])}}}),Ot={class:"p-20px h-500px"},Xt=J({__name:"set-log",props:{id:{default:0}},setup(e){const a=e,{t:t}=Q(),{table:n,columns:l,setLoading:i}=d([{key:"type",title:t("Config.Safe.index_151"),width:120,ellipsis:{tooltip:!0}},{key:"addtime",title:t("Config.Safe.index_152"),width:140},{key:"log",title:t("Config.Safe.index_153"),ellipsis:{tooltip:!0}}]),s=async()=>{try{i(!0);const{message:e}=await q({id:a.id});n.data=v(e)?e:[]}finally{i(!1)}};return s(),(e,a)=>{const t=ye,i=r,o=We;return le(),ne("div",Ot,[ie(o,null,{toolsLeft:se(()=>[ie(t,{onClick:s},{default:se(()=>[fe(ue(e.$t("Public.Btn.Refresh")),1)]),_:1})]),table:se(()=>[ie(i,{"max-height":360,loading:oe(n).loading,data:oe(n).data,columns:oe(l)},null,8,["loading","data","columns"])]),_:1})])}}}),Yt={class:"h-500px p-20px"},Gt=J({__name:"set",setup(e){const{t:a}=Q(),t=()=>{n({title:a("Config.Safe.index_146"),width:580,footer:!0,component:qt,data:{onRefresh:()=>{x()}}})},{table:l,columns:i,setLoading:o}=d([{key:"login_addr",title:a("Config.Safe.index_154"),ellipsis:{tooltip:!0},render:e=>e.login_addr||a("Config.Safe.index_155")},{key:"state",title:a("Config.Safe.index_156"),width:100,render:e=>-1===e.state?ie("span",{class:"text-error"},[a("Config.Safe.index_166")]):1===e.state?a("Config.Safe.index_157"):ie("span",{class:"text-primary"},[a("Config.Safe.index_155")])},{key:"login_time",title:a("Config.Safe.index_158"),width:140,render:e=>0===e.login_time?a("Config.Safe.index_155"):W(e.login_time)},{key:"expire",title:a("Config.Safe.index_159"),width:140,render:e=>W(e.expire)},u({width:160,options:e=>[{label:a("Config.Safe.index_160"),type:"error",show:e.online_state,onClick:()=>{p(e)}},{label:a("Config.Safe.index_161"),show:1===e.state||-1===e.state,onClick:()=>{f(e)}},{label:a("Public.Btn.Del"),onClick:()=>{c(e)}}]})]),f=e=>{n({title:a("Config.Safe.index_161"),width:700,data:{id:e.id},component:Xt})},p=e=>{s({title:a("Config.Safe.index_162",[e.login_addr]),content:a("Config.Safe.index_163",[e.login_addr]),onConfirm:async()=>{await O({id:e.id}),x()}})},c=e=>{s({title:a("Config.Safe.index_164"),content:a("Config.Safe.index_165"),onConfirm:async()=>{await X({id:e.id}),x()}})},_=ae({p:1,rows:10}),x=async()=>{try{o(!0);const{message:e}=await Y(_e(_));$(e)&&(l.data=v(e.data)?e.data:[],l.total=G(e.page))}finally{o(!1)}};return x(),(e,a)=>{const n=ye,s=r,o=Ze,d=We;return le(),ne("div",Yt,[ie(d,null,{toolsLeft:se(()=>[ie(n,{type:"primary",onClick:t},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_146")),1)]),_:1})]),table:se(()=>[ie(s,{"max-height":340,loading:oe(l).loading,data:oe(l).data,columns:oe(i)},null,8,["loading","data","columns"])]),pageRight:se(()=>[ie(o,{page:oe(_).p,"onUpdate:page":a[0]||(a[0]=e=>oe(_).p=e),"page-size":oe(_).rows,"onUpdate:pageSize":a[1]||(a[1]=e=>oe(_).rows=e),"item-count":oe(l).total,onRefresh:x},null,8,["page","page-size","item-count"])]),_:1})])}}}),Jt=J({__name:"index",setup(a){const{t:t}=Q(),l=()=>{n({title:t("Config.Safe.index_139"),width:740,component:Gt})};return(a,t)=>{const n=ye,i=e;return le(),re(i,{label:a.$t("Config.Safe.index_137")},{content:se(()=>[ie(n,{type:"primary",onClick:l},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_138")),1)]),_:1},8,["label"])}}}),Qt=z(J({__name:"config",setup:e=>(e,t)=>(le(),ne("div",null,[ie(a,null,{default:se(()=>[fe(ue(e.$t("Config.Safe.index_1")),1)]),_:1}),ie(Ye),ie($a),ie(Ha),ie(tt),ie(lt),ie(ot),ie(ut),ie(vt),ie(yt),ie(jt),ie(Tt),ie(Jt)]))}),[["__scopeId","data-v-919bcd3c"]]);export{Qt as S}; +import{_ as e,a}from"./index106.js?v=1762424784323";import{d as t,u as n,_ as l,j as i,a as s,i as o,c as d,h as r,f as u}from"./public.js?v=1762424784323";import{a as f,g as p,s as c,b as _}from"./alarm.js?v=1762424784323";import{_ as x}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{_ as g}from"./index.vue_vue_type_script_setup_true_lang11.js?v=1762424784323";import{S as m,w as v,am as C,_ as S,aR as b,aS as h,aT as y,aU as w,d as $,aV as k,m as P,aW as U,O as j,aX as B,aY as L,aZ as R,p as z,a_ as E,a$ as T,b0 as I,b1 as H,k as D,b2 as A,b3 as F,b4 as V,N as K,b5 as M,b6 as N,a8 as W,b7 as Z,b8 as q,b9 as O,ba as X,bb as Y,x as G}from"./page_layout.js?v=1762424784323";import{k as J,P as Q,r as ee,e as ae,x as te,R as ne,V as le,W as ie,a3 as se,U as oe,S as de,a2 as re,a4 as ue,j as fe,ak as pe,an as ce,N as _e,l as xe,v as ge,ab as me,F as ve,au as Ce,c as Se}from"./vue.js?v=1762424784323";import{dR as be,dj as he,aC as ye,_ as we,dk as $e,dT as ke,dU as Pe,au as Ue,da as je,df as Be,dV as Le,dZ as Re}from"./naive.js?v=1762424784323";import{s as ze,_ as Ee,f as Te,h as Ie,c as He}from"./index105.js?v=1762424784323";import{P as De}from"./open.js?v=1762424784323";import{_ as Ae}from"./index107.js?v=1762424784323";import{_ as Fe}from"./index99.js?v=1762424784323";import{s as Ve,a as Ke,g as Me}from"./ssl-lets-progress.js?v=1762424784323";import{_ as Ne}from"./index.vue_vue_type_script_setup_true_lang9.js?v=1762424784323";import{_ as We}from"./index.vue_vue_type_script_setup_true_lang5.js?v=1762424784323";import{_ as Ze}from"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";const qe={class:"p-20px pt-28px pb-8px"},Oe={class:"w-300px"},Xe=J({__name:"set",props:{open:{type:Boolean,default:!1},taskList:{default:()=>[]}},emits:["refresh"],setup(e,{expose:a,emit:n}){const l=e,i=n,{t:s}=Q(),o=ee(null),d=ae({status:!0,method:[]}),r={method:{trigger:["change"],validator:()=>0!==d.method.length||new Error(s("Config.Safe.index_7"))}},u=te([]),{loading:c,setLoading:_}=t();return(()=>{const{open:e,taskList:a}=l;a.length>0&&(d.status=e||a[0].status,d.method=a[0].sender)})(),(async()=>{try{_(!0);const{message:e}=await p();u.value=v(e)?e:[]}finally{_(!1)}})(),a({onConfirm:async()=>{var e;await(null==(e=o.value)?void 0:e.validate()),await f((()=>{const e=u.value.filter(e=>"panel_safe_push"===e.source)[0];return{template_id:e.id,task_data:{task_data:{tid:e.id,type:e.source,title:e.title,status:d.status,count:0,interval:600,project:"",help:600},sender:d.method,number_rule:{day_num:0,total:0},time_rule:{send_interval:0,time_range:[0,86399]}}}})()),i("refresh")}}),(e,a)=>{const t=he,n=be,l=g,i=x,s=m;return le(),ne("div",qe,[ie(s,{show:oe(c)},{default:se(()=>[ie(i,{ref_key:"formRef",ref:o,model:oe(d),rules:r},{default:se(()=>[ie(n,{label:e.$t("Config.Safe.index_5")},{default:se(()=>[ie(t,{value:oe(d).status,"onUpdate:value":a[0]||(a[0]=e=>oe(d).status=e)},null,8,["value"])]),_:1},8,["label"]),ie(n,{label:e.$t("Config.Safe.index_6"),path:"method"},{default:se(()=>[de("div",Oe,[ie(l,{value:oe(d).method,"onUpdate:value":a[1]||(a[1]=e=>oe(d).method=e)},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])]),_:1},8,["show"])])}}}),Ye=J({__name:"index",setup(a){const{t:l}=Q(),i=ee(!1),s=ee([]),o=async e=>{e?d(!0):(await c({task_id:s.value[0].id,status:0}),i.value=!1,s.value[0].status=!1)},d=(e=!1)=>{n({title:l("Config.Safe.index_4"),width:480,footer:!0,confirmText:l("Public.Btn.Save"),data:{open:e,taskList:s.value,onRefresh:f},component:Xe})},{loading:r,setLoading:u}=t(),f=async()=>{try{u(!0);const{message:e}=await _();if(v(e)){const a=e.filter(e=>"panel_safe_push"===e.keyword);a&&a.length>0?(i.value=a[0].status,s.value=a):(i.value=!1,s.value=[])}}finally{u(!1)}};return f(),(a,t)=>{const n=he,l=ye,s=e;return le(),re(s,{label:a.$t("Config.Safe.index_2")},{content:se(()=>[ie(n,{loading:oe(r),value:oe(i),"onUpdate:value":o},null,8,["loading","value"]),ie(l,{class:"ml-12px h-22px px-5px",size:"small",onClick:t[0]||(t[0]=e=>d())},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_3")),1)]),_:1},8,["label"])}}}),Ge={class:"flex p-20px"},Je={class:"min-w-32px"},Qe={class:"flex-1 ml-10px text-14px leading-22px"},ea={class:"flex items-center min-h-30px mb-12px text-error"},aa=J({__name:"close",emits:["setConfirm"],setup(e,{expose:a,emit:t}){const n=t,{t:l}=Q(),i=C(),s=ee(!1),o=()=>{d>0||n("setConfirm",{disabled:!s.value})};let d=5;return(()=>{n("setConfirm",{text:l("Config.Safe.index_16",[d]),disabled:!0});const e=setInterval(()=>{d--,n("setConfirm",{text:l("Config.Safe.index_16",[d])}),d<=0&&(clearInterval(e),n("setConfirm",{text:l("Config.Safe.index_17"),disabled:!s.value}))},1e3)})(),a({onConfirm:async()=>(await b(),await h(),setTimeout(()=>{{const e="http:"===location.protocol?"https":"http";window.location.href="".concat(e,"://").concat(window.location.host).concat(ze.value.adminPath)}},1500),!1)}),(e,a)=>{const t=S,n=we;return le(),ne("div",Ge,[de("div",Je,[ie(t,{name:"base-warning",color:oe(i).warningColor,size:"32"},null,8,["color"])]),de("div",Qe,[de("div",ea,ue(e.$t("Config.Safe.index_14")),1),ie(n,{checked:oe(s),"onUpdate:checked":[a[0]||(a[0]=e=>pe(s)?s.value=e:null),o]},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_15")),1)]),_:1},8,["checked"])])])}}}),ta={class:"flex flex-wrap py-2px text-primary text-12px"},na={class:"mr-24px"},la={class:"mr-24px"},ia={class:"flex gap-20px mt-16px"},sa={class:"flex-1"},oa={class:"mb-8px"},da={class:"flex-1"},ra={class:"mb-8px"},ua={class:"mt-10px"},fa={class:"bt-link",href:"http://www.bt.cn/bbs/thread-704-1-1.html",target:"_blank"},pa=J({__name:"ssl-custom",setup(e){const a=ee(""),n=ee(""),i=ae({dns:[""],issuer:"--",notBefore:"--",notAfter:"--"}),s=async()=>{await y({privateKey:a.value,certPem:n.value},!0),r()},{loading:o,setLoading:d}=t(),r=async()=>{try{d(!0);const{message:e}=await w();$(e)&&(a.value=e.privateKey||"",n.value=e.certPem||"",i.dns=e.info.dns||[],i.issuer=e.info.issuer||"",i.notBefore=e.info.notBefore||"",i.notAfter=e.info.notAfter||"")}finally{d(!1)}};return r(),(e,t)=>{const d=$e,r=Fe,u=ye,f=l,p=m;return le(),re(p,{show:oe(o)},{default:se(()=>[ie(d,{type:"success","show-icon":!1},{default:se(()=>[de("div",ta,[de("div",na,[fe(ue(e.$t("Config.Safe.index_37")),1),de("b",null,ue(oe(i).dns.join(",")||"--"),1)]),de("div",la,[fe(ue(e.$t("Config.Safe.index_38")),1),de("b",null,ue(oe(i).issuer),1)]),de("div",null,[fe(ue(e.$t("Config.Safe.index_39")),1),de("b",null,ue(oe(i).notAfter),1)])])]),_:1}),de("div",ia,[de("div",sa,[de("div",oa,ue(e.$t("Config.Safe.index_27")),1),ie(r,{value:oe(a),"onUpdate:value":t[0]||(t[0]=e=>pe(a)?a.value=e:null),rows:14,placeholder:""},null,8,["value"])]),de("div",da,[de("div",ra,ue(e.$t("Config.Safe.index_28")),1),ie(r,{value:oe(n),"onUpdate:value":t[1]||(t[1]=e=>pe(n)?n.value=e:null),rows:14,placeholder:""},null,8,["value"])])]),de("div",ua,[ie(u,{type:"primary",onClick:s},{default:se(()=>[fe(ue(e.$t("Public.Btn.Save")),1)]),_:1})]),ie(f,{class:"mt-12px"},{default:se(()=>[de("li",null,[fe(ue(e.$t("Config.Safe.index_40"))+" ",1),de("a",fa," ["+ue(e.$t("Public.Btn.Help"))+"] ",1)]),de("li",null,ue(e.$t("Config.Safe.index_42")),1),de("li",null,ue(e.$t("Config.Safe.index_43")),1)]),_:1})]),_:1},8,["show"])}}}),ca={class:"h-400px"},_a={class:"flex items-center"},xa={class:"min-w-18px mr-8px"},ga={class:"leading-18px"},ma={class:"w-400px mr-10px"},va={class:"text-primary font-bold"},Ca={class:"text-warning font-bold"},Sa={class:"text-error"},ba=J({__name:"ssl-lets",setup(e){const{t:a}=Q(),t=ee(null),s=ae({domain:"",hash:"",auth_type:"http",support:[]}),o={domain:{required:!0,trigger:"blur",message:a("Config.Safe.Ssl.index_10")}},d=ee(!1),r=ee(!1),u=ee(!1),f=()=>{m()},p=()=>{u.value=!1,r.value=!1,s.hash="",s.support=[]},c=()=>{window.open("/ssl_domain/domain")},_=async()=>{var e;await(null==(e=t.value)?void 0:e.validate());const{message:a}=await Ve({domain:_e(s)});$(a)&&(a.task_id?g(a.task_id):P.success(a.result))},g=e=>{n({hideClose:!0,data:{task_id:e},component:Ke})},m=async()=>{if(s.domain)try{d.value=!0;const{message:e}=await i({domain:s.domain});$(e)&&(r.value=!0,u.value=!!e.hash,s.hash=e.hash,s.support=e.support)}finally{d.value=!1}};return(async()=>{const{message:e}=await Me();$(e)&&(s.domain=e.domain)})(),(e,a)=>{const n=S,i=$e,g=Pe,v=k,C=ke,b=be,h=Ue,y=ye,w=je,$=x,P=l;return le(),ne("div",ca,[ie(i,{"show-icon":!1,class:"mb-20px"},{default:se(()=>[de("div",_a,[de("div",xa,[ie(n,{name:"base-info",size:17})]),de("span",ga,ue(e.$t("Config.Safe.Ssl.index_1")),1)])]),_:1}),ie($,{ref_key:"formRef",ref:t,model:oe(s),rules:o,"label-width":"140"},{default:se(()=>[ie(b,{label:e.$t("Config.Safe.Ssl.index_2")},{default:se(()=>[ie(C,{value:oe(s).auth_type,"onUpdate:value":a[0]||(a[0]=e=>oe(s).auth_type=e)},{default:se(()=>[ie(v,null,{default:se(()=>[ie(g,{value:"http"},{default:se(()=>[fe(ue(e.$t("SSL.SiteSSL.index_17")),1)]),_:1}),ie(g,{value:"dns"},{default:se(()=>[fe(ue(e.$t("SSL.index_12")),1)]),_:1})]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),"dns"===oe(s).auth_type?(le(),re(b,{key:0,label:e.$t("Config.Safe.Ssl.index_4"),prop:"domain"},{default:se(()=>[de("div",ma,[ie(h,{value:oe(s).domain,"onUpdate:value":a[1]||(a[1]=e=>oe(s).domain=e),loading:oe(d),"input-props":{spellcheck:!1},placeholder:e.$t("Config.Safe.Ssl.index_5"),clearable:"",onBlur:f,onInput:p},null,8,["value","loading","placeholder"])]),ie(y,{onClick:m},{default:se(()=>[fe(ue(e.$t("Config.Safe.Ssl.index_12")),1)]),_:1})]),_:1},8,["label"])):ce("",!0),"http"===oe(s).auth_type?(le(),re(b,{key:1,label:e.$t("Config.Safe.Ssl.index_4")},{default:se(()=>[ie(h,{class:"w-400px!",value:oe(s).domain,"onUpdate:value":a[2]||(a[2]=e=>oe(s).domain=e),placeholder:e.$t("Config.Safe.Ssl.index_5")},null,8,["value","placeholder"])]),_:1},8,["label"])):ce("",!0),oe(r)&&"dns"===oe(s).auth_type?(le(),re(b,{key:2,label:" "},{default:se(()=>[oe(u)?(le(),re(i,{key:0,type:"success",class:"min-w-500px"},{default:se(()=>[de("span",va,ue(e.$t("Config.Safe.Ssl.index_6",[oe(s).domain])),1)]),_:1})):(le(),re(i,{key:1,type:"warning",class:"min-w-500px"},{default:se(()=>[ie(w,{class:"items-center"},{default:se(()=>[de("span",Ca,ue(e.$t("Config.Safe.Ssl.index_7",[oe(s).domain])),1),ie(y,{type:"primary",ghost:"",size:"small",onClick:c},{default:se(()=>[fe(ue(e.$t("Config.Safe.Ssl.index_8")),1)]),_:1})]),_:1})]),_:1}))]),_:1})):ce("",!0),ie(b,{label:" "},{default:se(()=>[ie(y,{type:"primary",disabled:!oe(u)&&"dns"===oe(s).auth_type,onClick:_},{default:se(()=>[fe(ue(e.$t("Config.Safe.Ssl.index_9")),1)]),_:1},8,["disabled"])]),_:1})]),_:1},8,["model"]),"http"===oe(s).auth_type?(le(),re(P,{key:0},{default:se(()=>[de("li",Sa,ue(e.$t("SSL.SiteSSL.index_15")),1),de("li",null,ue(e.$t("Site.Cert.index_21")),1),de("li",null,ue(e.$t("Site.Cert.index_23")),1),de("li",null,ue(e.$t("Site.Cert.index_24")),1)]),_:1})):ce("",!0)])}}}),ha={class:"p-16px"},ya=J({__name:"ssl",setup(e){const a=ee("custom"),t=[{key:"custom",label:"Custom SSL",component:pa},{key:"lets",label:"Lets Encrypt",component:ba}];return(e,n)=>{const l=Ae;return le(),ne("div",ha,[ie(l,{value:oe(a),"onUpdate:value":n[0]||(n[0]=e=>pe(a)?a.value=e:null),options:t},null,8,["value"])])}}}),wa={class:"bt-link",href:"https://forum.aapanel.com/d/15210-aapanel-enable-panel-ssl-use-self-signed-certificate-browser-add-secure",target:"_blank"},$a=J({__name:"index",setup(a){const{t:t}=Q(),l=e=>{e?i():s()},i=()=>{n({title:t("Config.Safe.index_11"),width:600,footer:!0,component:De})},s=()=>{n({title:t("Config.Safe.index_12"),width:400,footer:!0,confirmType:"error",component:aa})},o=()=>{n({title:t("Config.Safe.index_13"),width:740,component:ya})};return(a,t)=>{const n=he,i=ye,s=e;return le(),re(s,{label:a.$t("Config.Safe.index_8")},{content:se(()=>[ie(n,{value:oe(ze).panelSSL,"onUpdate:value":l},null,8,["value"]),ie(i,{class:"ml-12px h-22px px-5px",size:"small",onClick:o},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_9")),1),de("a",wa,ue(a.$t("Public.Btn.Help")),1)]),_:1},8,["label"])}}}),ka={class:"p-20px"},Pa={class:"w-280px"},Ua={class:"w-280px"},ja={class:"text-error"},Ba=J({__name:"config",setup(e){const{t:a}=Q(),t=ee(null),n=ae({open:"True",basic_user:"",basic_pwd:""}),i={basic_user:{trigger:["blur","input"],validator:()=>"True"!==n.open||""!==n.basic_user.trim()||new Error(a("Config.Safe.index_56"))},basic_pwd:{trigger:["blur","input"],validator:()=>"True"!==n.open||""!==n.basic_pwd.trim()||new Error(a("Config.Safe.index_58"))}},s=async()=>{var e;await(null==(e=t.value)?void 0:e.validate()),await U(_e(n)),j()};return(e,a)=>{const o=he,d=be,r=Ue,u=ye,f=x,p=l;return le(),ne("div",ka,[ie(f,{ref_key:"formRef",ref:t,model:oe(n),rules:i},{default:se(()=>[ie(d,{label:e.$t("Config.Safe.index_54")},{default:se(()=>[ie(o,{value:oe(n).open,"onUpdate:value":a[0]||(a[0]=e=>oe(n).open=e),"checked-value":"True","unchecked-value":"False"},null,8,["value"])]),_:1},8,["label"]),ie(d,{label:e.$t("Config.Safe.index_55"),path:"basic_user"},{default:se(()=>[de("div",Pa,[ie(r,{value:oe(n).basic_user,"onUpdate:value":a[1]||(a[1]=e=>oe(n).basic_user=e),placeholder:e.$t("Config.Safe.index_56")},null,8,["value","placeholder"])])]),_:1},8,["label"]),ie(d,{label:e.$t("Config.Safe.index_57"),path:"basic_pwd"},{default:se(()=>[de("div",Ua,[ie(r,{value:oe(n).basic_pwd,"onUpdate:value":a[2]||(a[2]=e=>oe(n).basic_pwd=e),placeholder:e.$t("Config.Safe.index_58")},null,8,["value","placeholder"])])]),_:1},8,["label"]),ie(d,{label:" ","show-feedback":!1},{default:se(()=>[ie(u,{type:"primary",onClick:s},{default:se(()=>[fe(ue(e.$t("Public.Btn.Save")),1)]),_:1})]),_:1})]),_:1},8,["model"]),ie(p,{class:"mt-20px pl-12px"},{default:se(()=>[de("li",ja,ue(e.$t("Config.Safe.index_59")),1),de("li",null,ue(e.$t("Config.Safe.index_48")),1),de("li",null,ue(e.$t("Config.Safe.index_49")),1),de("li",null,ue(e.$t("Config.Safe.index_50")),1),de("li",null,ue(e.$t("Config.Safe.index_51")),1)]),_:1})])}}}),La={class:"p-20px"},Ra={class:"text-error"},za={class:"flex items-center justify-between"},Ea={class:"bt-link",href:"https://www.bt.cn/bbs/thread-34374-1-1.html",target:"_blank"},Ta=J({__name:"confirm",setup(e,{expose:a}){const{t:t}=Q(),l=ee();return a({onConfirm:async()=>{await l.value.validate(),n({title:t("Config.Safe.index_53"),width:500,component:Ba})}}),(e,a)=>{const t=Ne,n=Ee,i=Te;return le(),ne("div",La,[ie(t,{class:"mb-20px"},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_47")),1)]),_:1}),ie(n,{class:"mb-20px"},{default:se(()=>[de("li",Ra,ue(e.$t("Config.Safe.index_19")),1),de("li",null,ue(e.$t("Config.Safe.index_48")),1),de("li",null,ue(e.$t("Config.Safe.index_49")),1),de("li",null,ue(e.$t("Config.Safe.index_50")),1),de("li",null,ue(e.$t("Config.Safe.index_51")),1)]),_:1}),de("div",za,[ie(i,{ref_key:"riskRef",ref:l},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_29")),1)]),_:1},512),de("a",Ea,ue(e.$t("Config.Safe.index_52")),1)])])}}}),Ia={class:"bt-link",href:"https://www.bt.cn/bbs/thread-34374-1-1.html",target:"_blank"},Ha=J({__name:"index",setup(a){const{t:t}=Q(),l=async e=>{e?n({title:t("Config.Safe.index_46"),width:650,footer:!0,component:Ta}):(await U({open:"False",basic_user:"",basic_pwd:""}),j())};return(a,t)=>{const n=he,i=e;return le(),re(i,{label:a.$t("Config.Safe.index_44")},{content:se(()=>[ie(n,{value:oe(ze).basicAuth,"onUpdate:value":l},null,8,["value"])]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_45")),1),de("a",Ia,ue(a.$t("Public.Btn.Help")),1)]),_:1},8,["label"])}}}),Da={class:"p-20px"},Aa={class:"mb-20px text-20px text-center text-[var(--setting-security-google-login-bind-title)]"},Fa={class:"px-36px"},Va={class:"mb-10px text-16px text-[var(--setting-security-google-login-bind-text)]"},Ka={class:"mb-20px px-24px py-16px bg-[var(--setting-security-google-login-key-bg)] rounded-4px leading-24px text-14px text-[var(--setting-security-google-login-key-text)] font-500"},Ma={class:"text-[var(--setting-security-google-login-bind-text)]"},Na={class:"text-[var(--setting-security-google-login-bind-text)]"},Wa={class:"mb-20px text-16px text-[var(--setting-security-google-login-bind-text)]"},Za={class:"bt-link",href:"",target:"_blank"},qa={class:"text-error"},Oa=z(J({__name:"config",setup(e){const a=ae({key:"--",username:"--"}),n=ee(""),{loading:i,setLoading:s}=t();return(async()=>{const{message:e}=await L();$(e)&&(a.key=e.key,a.username=e.username)})(),(async()=>{try{s(!0);const{message:e}=await R({act:1});$(e)&&(n.value=e.result)}finally{s(!1)}})(),(e,t)=>{const s=B,o=m,d=l;return le(),ne("div",Da,[de("div",Aa,ue(e.$t("Config.Safe.index_70")),1),de("div",Fa,[de("div",Va,ue(e.$t("Config.Safe.index_71")),1),de("div",Ka,[de("div",null,[fe(ue(e.$t("Config.Safe.index_72"))+" ",1),de("span",Ma,ue(oe(a).username),1)]),de("div",null,[fe(ue(e.$t("Config.Safe.index_73"))+" ",1),de("span",Na,ue(oe(a).key),1)]),de("div",null,[fe(ue(e.$t("Config.Safe.index_74"))+" ",1),t[0]||(t[0]=de("span",{class:"text-[var(--setting-security-google-login-bind-text)]"},"Time based",-1))])]),de("div",Wa,ue(e.$t("Config.Safe.index_75")),1),ie(o,{class:"flex justify-center h-150px",show:oe(i)},{default:se(()=>[xe(ie(s,{value:oe(n),size:150,padding:0},null,8,["value"]),[[ge,oe(n)]])]),_:1},8,["show"]),ie(d,null,{default:se(()=>[de("li",null,[fe(ue(e.$t("Config.Safe.index_76"))+" ",1),de("a",Za,ue(e.$t("Config.Safe.index_77")),1)]),de("li",qa,ue(e.$t("Config.Safe.index_78")),1)]),_:1})])])}}}),[["__scopeId","data-v-86cab381"]]),Xa={class:"p-20px"},Ya={class:"text-error"},Ga={class:"text-error"},Ja={class:"flex items-center justify-between"},Qa={class:"bt-link",href:"https://www.aapanel.com/forum/d/357-how-to-use-google-authenticator-in-the-aapanel",target:"_blank"},et=J({__name:"confirm",setup(e,{expose:a}){const{t:t}=Q(),l=ee();return a({onConfirm:async()=>{await l.value.validate();const{message:e}=await E({act:1});ze.value.dynamicPwd=!0,n({title:t("Config.Safe.index_62"),width:600,component:Oa}),$(e)&&P.success(e.result)}}),(e,a)=>{const t=Ne,n=Ee,i=Te;return le(),ne("div",Xa,[ie(t,{class:"mb-20px"},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_47")),1)]),_:1}),ie(n,{class:"mb-20px"},{default:se(()=>[de("li",Ya,ue(e.$t("Config.Safe.index_19")),1),de("li",Ga,ue(e.$t("Config.Safe.index_69")),1),de("li",null,ue(e.$t("Config.Safe.index_66")),1),de("li",null,ue(e.$t("Config.Safe.index_67")),1)]),_:1}),de("div",Ja,[ie(i,{ref_key:"riskRef",ref:l},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_68")),1)]),_:1},512),de("a",Qa,ue(e.$t("Config.Safe.index_168")),1)])])}}}),at={class:"bt-link",href:"https://www.aapanel.com/forum/d/357-how-to-use-google-authenticator-in-the-aapanel",target:"_blank"},tt=J({__name:"index",setup(a){const{t:t}=Q(),l=async e=>{e?i():(await E({act:0},!0),ze.value.dynamicPwd=!1)},i=()=>{ze.value.dynamicPwd?n({title:t("Config.Safe.index_62"),width:600,component:Oa}):n({title:t("Config.Safe.index_63"),width:670,footer:!0,component:et})};return(a,t)=>{const n=he,s=ye,o=e;return le(),re(o,{label:a.$t("Config.Safe.index_60")},{content:se(()=>[ie(n,{value:oe(ze).dynamicPwd,"onUpdate:value":l},null,8,["value"]),ie(s,{class:"ml-12px h-22px px-5px",size:"small",onClick:i},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_61")),1),de("a",at,ue(a.$t("Public.Btn.Help")),1)]),_:1},8,["label"])}}}),nt={class:"text-error"},lt=J({__name:"index",setup(a){const{t:t}=Q(),n=async e=>{s({title:t("Config.Safe.index_82",[t(e?"Config.Safe.index_83":"Config.Safe.index_84")]),content:()=>e?ie(me,{tag:"div",scope:"global",keypath:"Config.Safe.index_85"},{tips_:()=>ie("span",{class:"text-error"},[t("Config.Safe.index_86")])}):ie(ve,null,[t("Config.Safe.index_87")]),onConfirm:async()=>{await T(),ze.value.pwdComplexity=e}})};return(a,t)=>{const l=he,i=e;return le(),re(i,{label:a.$t("Config.Safe.index_79")},{content:se(()=>[ie(l,{value:oe(ze).pwdComplexity,"onUpdate:value":n},null,8,["value"])]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_80")),1),de("span",nt,ue(a.$t("Config.Safe.index_81")),1)]),_:1},8,["label"])}}}),it={class:"w-260px"},st={class:"text-error"},ot=J({__name:"index",setup(a){const t=async()=>{await I(Ie()),j()};return(a,n)=>{const l=Ue,i=ye,s=e;return le(),re(s,{label:a.$t("Config.Safe.index_88")},{content:se(()=>[de("div",it,[ie(l,{value:oe(ze).domain,"onUpdate:value":n[0]||(n[0]=e=>oe(ze).domain=e),placeholder:""},null,8,["value"])]),ie(i,{class:"ml-12px",type:"primary",onClick:t},{default:se(()=>[fe(ue(a.$t("Public.Btn.Save")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_89")),1),de("span",st,ue(a.$t("Config.Safe.index_90")),1)]),_:1},8,["label"])}}}),dt={class:"w-260px"},rt={class:"text-error"},ut=J({__name:"index",setup(a){const{t:t}=Q(),n=async()=>{let e=/^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$/,a=ze.value.limitIp.split(",").join("-").split("-"),n=!0;if(a.length)for(let t=0;t0)return P.error(t("Config.Safe.index_95"));await H(Ie()),j()};return(a,t)=>{const l=Ue,i=ye,s=e;return le(),re(s,{label:a.$t("Config.Safe.index_91")},{content:se(()=>[de("div",dt,[ie(l,{value:oe(ze).limitIp,"onUpdate:value":t[0]||(t[0]=e=>oe(ze).limitIp=e),placeholder:a.$t("Config.Safe.index_92")},null,8,["value","placeholder"])]),ie(i,{class:"ml-12px",type:"primary",onClick:n},{default:se(()=>[fe(ue(a.$t("Public.Btn.Save")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_93")),1),de("span",rt,ue(a.$t("Config.Safe.index_94")),1)]),_:1},8,["label"])}}}),ft={class:"p-20px"},pt={class:"text-error"},ct={class:"text-error"},_t={class:"w-210px"},xt=J({__name:"set",setup(e,{expose:a}){const{t:t}=Q(),n=ee(),l=ee(null),i=ae({port:D(ze.value.port)}),s={port:{trigger:["blur","input"],validator:()=>!!F(i.port)||new Error(t("Config.Safe.index_104"))}};return a({onConfirm:async()=>{var e;await n.value.validate(),await(null==(e=l.value)?void 0:e.validate());const a=Ie();a.port="".concat(i.port),await A(a),j("".concat(location.protocol,"//").concat(location.hostname,":").concat(i.port).concat(location.pathname))}}),(e,a)=>{const t=Ee,o=Be,d=be,r=x,u=Te;return le(),ne("div",ft,[ie(t,{class:"mb-20px"},{default:se(()=>[de("li",pt,ue(e.$t("Config.Safe.index_100")),1),de("li",ct,ue(e.$t("Config.Safe.index_101")),1)]),_:1}),ie(r,{ref_key:"formRef",ref:l,model:oe(i),rules:s},{default:se(()=>[ie(d,{label:e.$t("Config.Safe.index_96"),path:"port","label-width":"auto","label-style":{paddingLeft:"24px"}},{default:se(()=>[de("div",_t,[ie(o,{value:oe(i).port,"onUpdate:value":a[0]||(a[0]=e=>oe(i).port=e),min:1,max:65535,"show-button":!1,placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),ie(u,{ref_key:"riskRef",ref:n},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_102"))+" ",1),de("a",{class:"bt-link",href:"https://www.aapanel.com/forum/d/599-how-to-release-the-aapanel-port",target:"_blank",onClick:Ce(()=>!1,["stop"])},ue(e.$t("Config.Safe.index_103")),1)]),_:1},512)])}}}),gt={class:"w-260px"},mt={class:"text-error"},vt=J({__name:"index",setup(a){const{t:t}=Q(),l=async()=>{n({title:t("Config.Safe.index_99"),width:400,footer:!0,component:xt})};return(a,t)=>{const n=Ue,i=ye,s=e;return le(),re(s,{label:a.$t("Config.Safe.index_96")},{content:se(()=>[de("div",gt,[ie(n,{value:oe(ze).port,disabled:!0,placeholder:""},null,8,["value"])]),ie(i,{class:"ml-12px",type:"primary",onClick:l},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_97")),1),de("span",mt,ue(a.$t("Config.Safe.index_98")),1)]),_:1},8,["label"])}}}),Ct={class:"px-20px pt-28px pb-8px"},St={class:"w-240px"},bt=J({__name:"set",setup(e,{expose:a}){const{t:t}=Q(),n=ee(null),l=ae({adminPath:ze.value.adminPath}),i={adminPath:{trigger:["blur","input"],validator:()=>""!==l.adminPath.trim()||new Error(t("Config.Safe.index_108"))}};return a({onConfirm:async()=>{var e;await(null==(e=n.value)?void 0:e.validate()),await V({admin_path:K(l.adminPath)}),ze.value.adminPath=l.adminPath}}),(e,a)=>{const t=Ue,s=be,o=x;return le(),ne("div",Ct,[ie(o,{ref_key:"formRef",ref:n,model:oe(l),rules:i},{default:se(()=>[ie(s,{label:e.$t("Config.Safe.index_105"),path:"adminPath"},{default:se(()=>[de("div",St,[ie(t,{value:oe(l).adminPath,"onUpdate:value":a[0]||(a[0]=e=>oe(l).adminPath=e),placeholder:""},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),ht={class:"w-260px"},yt=J({__name:"index",setup(a){const{t:t}=Q(),l=async()=>{n({title:t("Config.Safe.index_107"),width:440,footer:!0,component:bt})};return(a,t)=>{const n=Ue,i=ye,s=e;return le(),re(s,{label:a.$t("Config.Safe.index_105")},{content:se(()=>[de("div",ht,[ie(n,{value:oe(ze).adminPath,disabled:!0,placeholder:""},null,8,["value"])]),ie(i,{class:"ml-12px",type:"primary",onClick:l},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_106")),1)]),_:1},8,["label"])}}}),wt={class:"px-20px py-24px"},$t={class:"w-200px"},kt={class:"text-error"},Pt=J({__name:"set",setup(e,{expose:a}){const{t:t}=Q(),n=ee(null),i=ae({status_code:ze.value.statusCode}),s={},o=[{value:403,label:t("Config.Safe.index_111")},{value:404,label:t("Config.Safe.index_112")},{value:416,label:t("Config.Safe.index_113")},{value:408,label:t("Config.Safe.index_114")},{value:400,label:t("Config.Safe.index_115")},{value:401,label:t("Config.Safe.index_116")}];return a({onConfirm:async()=>{var e;await(null==(e=n.value)?void 0:e.validate()),await M({status_code:i.status_code}),ze.value.statusCode=i.status_code}}),(e,a)=>{const t=Le,d=be,r=x,u=l;return le(),ne("div",wt,[ie(r,{ref_key:"formRef",ref:n,model:oe(i),rules:s},{default:se(()=>[ie(d,{label:e.$t("Config.Safe.index_118"),path:"adminPath"},{default:se(()=>[de("div",$t,[ie(t,{value:oe(i).status_code,"onUpdate:value":a[0]||(a[0]=e=>oe(i).status_code=e),options:o},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),ie(u,null,{default:se(()=>[de("li",kt,ue(e.$t("Config.Safe.index_119")),1)]),_:1})])}}}),Ut={class:"w-260px"},jt=J({__name:"index",setup(a){const{t:t}=Q(),l=new Map([[403,t("Config.Safe.index_111")],[404,t("Config.Safe.index_112")],[416,t("Config.Safe.index_113")],[408,t("Config.Safe.index_114")],[400,t("Config.Safe.index_115")],[401,t("Config.Safe.index_116")]]),i=Se(()=>l.get(ze.value.statusCode)||"--"),s=async()=>{n({title:t("Config.Safe.index_117"),width:420,footer:!0,component:Pt})};return(a,t)=>{const n=Ue,l=ye,o=e;return le(),re(o,{label:a.$t("Config.Safe.index_109")},{content:se(()=>[de("div",Ut,[ie(n,{value:oe(i),disabled:!0,placeholder:""},null,8,["value"])]),ie(l,{class:"ml-12px",type:"primary",onClick:s},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_110")),1)]),_:1},8,["label"])}}}),Bt={class:"px-20px py-24px"},Lt={class:"w-120px"},Rt={class:"text-error"},zt=J({__name:"set",setup(e,{expose:a}){const{t:t}=Q(),n=ee(null),i=ae({day:ze.value.pwdSetDay}),s={day:{trigger:["blur","input"],validator:()=>i.day<0?new Error(t("Config.Safe.index_128")):!(!i.day&&0!==i.day)||new Error(t("Config.Safe.index_129"))}};return a({onConfirm:async()=>{var e;await(null==(e=n.value)?void 0:e.validate()),await N({expire:i.day}),He()}}),(e,a)=>{const t=Be,o=be,d=x,r=l;return le(),ne("div",Bt,[ie(d,{ref_key:"formRef",ref:n,model:oe(i),rules:s},{default:se(()=>[ie(o,{label:e.$t("Config.Safe.index_120"),path:"day"},{default:se(()=>[de("div",Lt,[ie(t,{value:oe(i).day,"onUpdate:value":a[0]||(a[0]=e=>oe(i).day=e),min:0,"show-button":!1,placeholder:""},{suffix:se(()=>[fe(ue(e.$t("Public.Unit.Day",oe(i).day)),1)]),_:1},8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"]),ie(r,{class:"mt-4px"},{default:se(()=>[de("li",Rt,ue(e.$t("Config.Safe.index_126")),1),de("li",null,ue(e.$t("Config.Safe.index_127")),1)]),_:1})])}}}),Et={class:"w-260px"},Tt=J({__name:"index",setup(a){const{t:t}=Q(),l=Se(()=>{const{pwdSetDay:e,pwdExpireDay:a,pwdExpireTime:n}=ze.value;return 0===e?t("Config.Safe.index_122"):t("Config.Safe.index_123",[W(n),a])}),i=async()=>{n({title:t("Config.Safe.index_124"),width:360,footer:!0,component:zt})};return(a,t)=>{const n=Ue,s=ye,o=e;return le(),re(o,{label:a.$t("Config.Safe.index_120")},{content:se(()=>[de("div",Et,[ie(n,{value:oe(l),disabled:!0,placeholder:""},null,8,["value"])]),ie(s,{class:"ml-12px",type:"primary",onClick:i},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_121")),1)]),_:1},8,["label"])}}}),It={class:"p-20px"},Ht={class:"mb-12px"},Dt={class:"mb-12px"},At={class:"mb-20px"},Ft=J({__name:"set-add-result",props:{address:{default:""}},setup(e){const a=e,t=()=>{o(a.address)};return(e,a)=>{const n=Fe,i=ye,s=l;return le(),ne("div",It,[de("div",Ht,ue(e.$t("Config.Safe.index_147")),1),de("div",Dt,[ie(n,{value:e.address,readonly:"",rows:2},null,8,["value"])]),de("div",At,[ie(i,{type:"primary",onClick:t},{default:se(()=>[fe(ue(e.$t("Public.Btn.Copy")),1)]),_:1})]),ie(s,null,{default:se(()=>[de("li",null,ue(e.$t("Config.Safe.index_148")),1),de("li",null,ue(e.$t("Config.Safe.index_149")),1),de("li",null,ue(e.$t("Config.Safe.index_150")),1)]),_:1})])}}}),Vt={class:"p-20px pt-28px pb-8px"},Kt={class:"flex mb-24px"},Mt={class:"min-w-32px"},Nt={class:"flex-1 ml-16px"},Wt={class:"leading-24px text-error text-14px"},Zt={class:"w-160px"},qt=J({__name:"set-add",emits:["refresh"],setup(e,{expose:a,emit:t}){const l=t,{t:i}=Q(),s=C(),o=ee(null),d=ae({type:3,day:1}),r={day:{trigger:["blur","input"],validator:()=>0!==d.type||!(d.day<=0||d.day%1!=0)||new Error(i("Config.Safe.index_145"))}},u=e=>e%1==0,f=(e="")=>{const a="".concat(window.location.protocol,"//").concat(window.location.host),t="".concat(a,"/login?tmp_token=").concat(e);n({title:i("Config.Safe.index_146"),width:580,data:{address:t},component:Ft})};return a({onConfirm:async()=>{var e;await(null==(e=o.value)?void 0:e.validate());const{message:a}=await Z({expire_time:60*(0===d.type?24*d.day:d.type)*60+Math.floor(Date.now()/1e3)});$(a)&&(f(a.token),P.success(a.msg),l("refresh"))}}),(e,a)=>{const t=S,n=Re,l=ke,i=be,f=Be,p=x;return le(),ne("div",Vt,[de("div",Kt,[de("div",Mt,[ie(t,{name:"base-warning",size:"32",color:oe(s).warningColor},null,8,["color"])]),de("div",Nt,[de("div",Wt,[de("div",null,ue(e.$t("Config.Safe.index_140")),1),de("div",null,ue(e.$t("Config.Safe.index_141")),1)])])]),ie(p,{ref_key:"formRef",ref:o,model:oe(d),rules:r,"label-width":"140"},{default:se(()=>[ie(i,{label:e.$t("Config.Safe.index_142")},{default:se(()=>[ie(l,{value:oe(d).type,"onUpdate:value":a[0]||(a[0]=e=>oe(d).type=e)},{default:se(()=>[ie(n,{value:3},{default:se(()=>[fe("3 "+ue(e.$t("Public.Unit.Hour",3)),1)]),_:1}),ie(n,{value:6},{default:se(()=>[fe("6 "+ue(e.$t("Public.Unit.Hour",6)),1)]),_:1}),ie(n,{value:9},{default:se(()=>[fe("9 "+ue(e.$t("Public.Unit.Hour",9)),1)]),_:1}),ie(n,{value:12},{default:se(()=>[fe("12 "+ue(e.$t("Public.Unit.Hour",12)),1)]),_:1}),ie(n,{value:0},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_143")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),xe(ie(i,{label:e.$t("Config.Safe.index_144"),path:"day"},{default:se(()=>[de("div",Zt,[ie(f,{value:oe(d).day,"onUpdate:value":a[1]||(a[1]=e=>oe(d).day=e),min:1,"show-button":!1,validator:u},{suffix:se(()=>[fe(ue(e.$t("Public.Unit.Day",oe(d).day)),1)]),_:1},8,["value"])])]),_:1},8,["label"]),[[ge,0===oe(d).type]])]),_:1},8,["model"])])}}}),Ot={class:"p-20px h-500px"},Xt=J({__name:"set-log",props:{id:{default:0}},setup(e){const a=e,{t:t}=Q(),{table:n,columns:l,setLoading:i}=d([{key:"type",title:t("Config.Safe.index_151"),width:120,ellipsis:{tooltip:!0}},{key:"addtime",title:t("Config.Safe.index_152"),width:140},{key:"log",title:t("Config.Safe.index_153"),ellipsis:{tooltip:!0}}]),s=async()=>{try{i(!0);const{message:e}=await q({id:a.id});n.data=v(e)?e:[]}finally{i(!1)}};return s(),(e,a)=>{const t=ye,i=r,o=We;return le(),ne("div",Ot,[ie(o,null,{toolsLeft:se(()=>[ie(t,{onClick:s},{default:se(()=>[fe(ue(e.$t("Public.Btn.Refresh")),1)]),_:1})]),table:se(()=>[ie(i,{"max-height":360,loading:oe(n).loading,data:oe(n).data,columns:oe(l)},null,8,["loading","data","columns"])]),_:1})])}}}),Yt={class:"h-500px p-20px"},Gt=J({__name:"set",setup(e){const{t:a}=Q(),t=()=>{n({title:a("Config.Safe.index_146"),width:580,footer:!0,component:qt,data:{onRefresh:()=>{x()}}})},{table:l,columns:i,setLoading:o}=d([{key:"login_addr",title:a("Config.Safe.index_154"),ellipsis:{tooltip:!0},render:e=>e.login_addr||a("Config.Safe.index_155")},{key:"state",title:a("Config.Safe.index_156"),width:100,render:e=>-1===e.state?ie("span",{class:"text-error"},[a("Config.Safe.index_166")]):1===e.state?a("Config.Safe.index_157"):ie("span",{class:"text-primary"},[a("Config.Safe.index_155")])},{key:"login_time",title:a("Config.Safe.index_158"),width:140,render:e=>0===e.login_time?a("Config.Safe.index_155"):W(e.login_time)},{key:"expire",title:a("Config.Safe.index_159"),width:140,render:e=>W(e.expire)},u({width:160,options:e=>[{label:a("Config.Safe.index_160"),type:"error",show:e.online_state,onClick:()=>{p(e)}},{label:a("Config.Safe.index_161"),show:1===e.state||-1===e.state,onClick:()=>{f(e)}},{label:a("Public.Btn.Del"),onClick:()=>{c(e)}}]})]),f=e=>{n({title:a("Config.Safe.index_161"),width:700,data:{id:e.id},component:Xt})},p=e=>{s({title:a("Config.Safe.index_162",[e.login_addr]),content:a("Config.Safe.index_163",[e.login_addr]),onConfirm:async()=>{await O({id:e.id}),x()}})},c=e=>{s({title:a("Config.Safe.index_164"),content:a("Config.Safe.index_165"),onConfirm:async()=>{await X({id:e.id}),x()}})},_=ae({p:1,rows:10}),x=async()=>{try{o(!0);const{message:e}=await Y(_e(_));$(e)&&(l.data=v(e.data)?e.data:[],l.total=G(e.page))}finally{o(!1)}};return x(),(e,a)=>{const n=ye,s=r,o=Ze,d=We;return le(),ne("div",Yt,[ie(d,null,{toolsLeft:se(()=>[ie(n,{type:"primary",onClick:t},{default:se(()=>[fe(ue(e.$t("Config.Safe.index_146")),1)]),_:1})]),table:se(()=>[ie(s,{"max-height":340,loading:oe(l).loading,data:oe(l).data,columns:oe(i)},null,8,["loading","data","columns"])]),pageRight:se(()=>[ie(o,{page:oe(_).p,"onUpdate:page":a[0]||(a[0]=e=>oe(_).p=e),"page-size":oe(_).rows,"onUpdate:pageSize":a[1]||(a[1]=e=>oe(_).rows=e),"item-count":oe(l).total,onRefresh:x},null,8,["page","page-size","item-count"])]),_:1})])}}}),Jt=J({__name:"index",setup(a){const{t:t}=Q(),l=()=>{n({title:t("Config.Safe.index_139"),width:740,component:Gt})};return(a,t)=>{const n=ye,i=e;return le(),re(i,{label:a.$t("Config.Safe.index_137")},{content:se(()=>[ie(n,{type:"primary",onClick:l},{default:se(()=>[fe(ue(a.$t("Public.Btn.Set")),1)]),_:1})]),desc:se(()=>[de("span",null,ue(a.$t("Config.Safe.index_138")),1)]),_:1},8,["label"])}}}),Qt=z(J({__name:"config",setup:e=>(e,t)=>(le(),ne("div",null,[ie(a,null,{default:se(()=>[fe(ue(e.$t("Config.Safe.index_1")),1)]),_:1}),ie(Ye),ie($a),ie(Ha),ie(tt),ie(lt),ie(ot),ie(ut),ie(vt),ie(yt),ie(jt),ie(Tt),ie(Jt)]))}),[["__scopeId","data-v-919bcd3c"]]);export{Qt as S}; diff --git a/BTPanel/static/vite/js/config3.js b/BTPanel/static/vite/js/config3.js index f6ca405d..479746cf 100644 --- a/BTPanel/static/vite/js/config3.js +++ b/BTPanel/static/vite/js/config3.js @@ -1 +1 @@ -import{t as s,i as t}from"./page_layout.js?v=1760428868419";const{t:a}=t.global,e=t=>s.post("/project/quota/modify_path_quota",{data:JSON.stringify({path:t.path,quota_type:t.quota_type,quota_push:{module:"",status:!1,size:0,push_count:0},quota_storage:{size:t.size}})},{requestOptions:{loading:a("WP.api.tamper_8"),successMessage:!0,errorMessage:{close:!0}}}),o=t=>s.post("/project/quota/modify_database_quota",{data:JSON.stringify({db_name:t.db_name,quota_push:{module:"",status:!1,size:0,push_count:0},quota_storage:{size:t.size}})},{requestOptions:{loading:a("WP.api.tamper_8"),successMessage:!0,errorMessage:{close:!0}}}),u=()=>s.post("/config?action=get_msg_configs");export{o as a,u as g,e as m}; +import{t as s,i as t}from"./page_layout.js?v=1762424784323";const{t:a}=t.global,e=t=>s.post("/project/quota/modify_path_quota",{data:JSON.stringify({path:t.path,quota_type:t.quota_type,quota_push:{module:"",status:!1,size:0,push_count:0},quota_storage:{size:t.size}})},{requestOptions:{loading:a("WP.api.tamper_8"),successMessage:!0,errorMessage:{close:!0}}}),o=t=>s.post("/project/quota/modify_database_quota",{data:JSON.stringify({db_name:t.db_name,quota_push:{module:"",status:!1,size:0,push_count:0},quota_storage:{size:t.size}})},{requestOptions:{loading:a("WP.api.tamper_8"),successMessage:!0,errorMessage:{close:!0}}}),u=()=>s.post("/config?action=get_msg_configs");export{o as a,u as g,e as m}; diff --git a/BTPanel/static/vite/js/config4.js b/BTPanel/static/vite/js/config4.js index 0e0cc65d..d20dc477 100644 --- a/BTPanel/static/vite/js/config4.js +++ b/BTPanel/static/vite/js/config4.js @@ -1 +1 @@ -import{fl as a,d as s,p as e}from"./page_layout.js?v=1760428868419";import{j as o,k as t}from"./tools2.js?v=1760428868419";import{k as l,r as p,R as r,V as n,S as i,W as m,a4 as u,U as c,ak as v}from"./vue.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./public.js?v=1760428868419";import"./rules.js?v=1760428868419";const j={class:"p-20px"},d={class:"mb-16px text-desc"},f=e(l({__name:"config",setup(e,{expose:l}){const f=p([]),_=p([]);return(async()=>{const{message:a}=await o();s(a)&&(f.value=Object.keys(a).filter(s=>a[s]),_.value=Object.keys(a).map(a=>({label:a,value:a})))})(),l({onConfirm:async()=>{await t({data:f.value.reduce((a,s)=>(a[s]=!0,a),{})})}}),(s,e)=>{const o=a;return n(),r("div",j,[i("div",d,u(s.$t("Waf.Block.index_73")),1),m(o,{value:c(f),"onUpdate:value":e[0]||(e[0]=a=>v(f)?f.value=a:null),options:c(_)},null,8,["value","options"])])}}}),[["__scopeId","data-v-4f75b301"]]);export{f as default}; +import{fk as a,d as s,p as e}from"./page_layout.js?v=1762424784323";import{j as o,k as t}from"./tools2.js?v=1762424784323";import{k as l,r as p,R as r,V as n,S as i,W as m,a4 as u,U as c,ak as v}from"./vue.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./public.js?v=1762424784323";import"./rules.js?v=1762424784323";const j={class:"p-20px"},d={class:"mb-16px text-desc"},f=e(l({__name:"config",setup(e,{expose:l}){const f=p([]),_=p([]);return(async()=>{const{message:a}=await o();s(a)&&(f.value=Object.keys(a).filter(s=>a[s]),_.value=Object.keys(a).map(a=>({label:a,value:a})))})(),l({onConfirm:async()=>{await t({data:f.value.reduce((a,s)=>(a[s]=!0,a),{})})}}),(s,e)=>{const o=a;return n(),r("div",j,[i("div",d,u(s.$t("Waf.Block.index_73")),1),m(o,{value:c(f),"onUpdate:value":e[0]||(e[0]=a=>v(f)?f.value=a:null),options:c(_)},null,8,["value","options"])])}}}),[["__scopeId","data-v-4f75b301"]]);export{f as default}; diff --git a/BTPanel/static/vite/js/config5.js b/BTPanel/static/vite/js/config5.js index 3b4da459..cb17c797 100644 --- a/BTPanel/static/vite/js/config5.js +++ b/BTPanel/static/vite/js/config5.js @@ -1 +1 @@ -import{_ as e,c as t,f as a,h as l,u as i}from"./public.js?v=1760428868419";import{d as n,k as s}from"./page_layout.js?v=1760428868419";import{k as r,l as c,n as o,g as u}from"./setting.js?v=1760428868419";import{_ as f}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{k as d,P as p,r as m,e as y,R as g,V as _,W as v,a3 as b,S as w,U as x,a4 as h,N as S,j as q}from"./vue.js?v=1760428868419";import{dR as W,au as j,df as k,aC as E}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const U={class:"p-20px"},$={class:"w-220px"},P={class:"ml-8px text-desc"},R={class:"w-220px mr-8px"},C={class:"text-desc"},B={class:"w-220px mr-8px"},L={class:"text-desc"},A=d({__name:"form",props:{isEdit:{type:Boolean,default:!1},row:{}},emits:["refresh"],setup(t,{expose:a,emit:l}){const i=t,n=l,{t:s}=p(),o=m(null),u=y({url:"",frequency:30,cycle:60}),d={url:{trigger:["blur","input"],validator:()=>""!==u.url.trim()||new Error(s("Waf.Setting.config_55"))},frequency:{trigger:["blur","input"],validator:()=>!!u.frequency||new Error(s("Waf.Setting.config_56"))},cycle:{trigger:["blur","input"],validator:()=>!!u.cycle||new Error(s("Waf.Setting.config_57"))}};return(()=>{const{row:e,isEdit:t}=i;t&&e&&(u.url=e.url,u.frequency=e.frequency,u.cycle=e.cycle)})(),a({onConfirm:async()=>{var e;await(null==(e=o.value)?void 0:e.validate()),i.isEdit?await r(S(u)):await c(S(u)),n("refresh")}}),(t,a)=>{const l=j,i=W,n=k,s=f,r=e;return _(),g("div",U,[v(s,{ref_key:"formRef",ref:o,model:x(u),rules:d},{default:b(()=>[v(i,{label:"URL",path:"url"},{default:b(()=>[w("div",$,[v(l,{value:x(u).url,"onUpdate:value":a[0]||(a[0]=e=>x(u).url=e),placeholder:"/index.php"},null,8,["value"])]),w("span",P,h(t.$t("Waf.Setting.config_51")),1)]),_:1}),v(i,{label:t.$t("Waf.Setting.config_48"),path:"frequency"},{default:b(()=>[w("div",R,[v(n,{value:x(u).frequency,"onUpdate:value":a[1]||(a[1]=e=>x(u).frequency=e),min:1,"show-button":!1},null,8,["value"])]),w("span",C,h(t.$t("Public.Unit.Time",x(u).frequency)),1)]),_:1},8,["label"]),v(i,{label:t.$t("Waf.Setting.config_49"),path:"cycle"},{default:b(()=>[w("div",B,[v(n,{value:x(u).cycle,"onUpdate:value":a[2]||(a[2]=e=>x(u).cycle=e),min:1,"show-button":!1},null,8,["value"])]),w("span",L,h(t.$t("Public.Unit.Second",x(u).cycle)),1)]),_:1},8,["label"])]),_:1},8,["model"]),v(r,{class:"mt-12px"},{default:b(()=>[w("li",null,h(t.$t("Waf.Setting.config_54")),1)]),_:1})])}}}),D={class:"p-20px"},H={class:"flex mb-16px"},N=d({__name:"config",setup(e){const{t:r}=p(),c=e=>{i({title:e.title,width:570,footer:!0,data:{...e.data,onRefresh:()=>{S()}},component:A})},f=async()=>{c({title:r("Waf.Setting.config_46"),data:{isEdit:!1}})},{table:d,columns:m,setLoading:y}=t([{key:"url",title:"URL",ellipsis:{tooltip:!0}},{key:"frequency",title:r("Waf.Setting.config_48"),width:100,ellipsis:{tooltip:!0}},{key:"cycle",title:r("Waf.Setting.config_49"),width:120,ellipsis:{tooltip:!0},render:e=>r("Waf.Setting.config_50",[e.cycle])},a({width:100,options:e=>[{label:r("Public.Btn.Edit"),onClick:async()=>{(async e=>{c({title:r("Waf.Setting.config_47"),data:{row:e,isEdit:!0}})})(e)}},{label:r("Public.Btn.Del"),onClick:async()=>{await o({url:e.url}),S()}}]})]),S=async()=>{try{y(!0);const{message:e}=await u();n(e)&&(d.data=Object.entries(e.cc_uri_frequency).map(([e,t])=>({url:e,frequency:s(t.frequency),cycle:s(t.cycle)})))}finally{y(!1)}};return S(),(e,t)=>{const a=E,i=l;return _(),g("div",D,[w("div",H,[v(a,{type:"primary",onClick:f},{default:b(()=>[q(h(e.$t("Public.Btn.Add")),1)]),_:1})]),v(i,{"max-height":368,loading:x(d).loading,data:x(d).data,columns:x(m)},null,8,["loading","data","columns"])])}}});export{N as default}; +import{_ as e,c as t,f as a,h as l,u as i}from"./public.js?v=1762424784323";import{d as n,k as s}from"./page_layout.js?v=1762424784323";import{k as r,l as c,n as o,g as u}from"./setting.js?v=1762424784323";import{_ as f}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{k as d,P as p,r as m,e as y,R as g,V as _,W as v,a3 as b,S as w,U as x,a4 as h,N as S,j as q}from"./vue.js?v=1762424784323";import{dR as W,au as j,df as k,aC as E}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const U={class:"p-20px"},$={class:"w-220px"},P={class:"ml-8px text-desc"},R={class:"w-220px mr-8px"},C={class:"text-desc"},B={class:"w-220px mr-8px"},L={class:"text-desc"},A=d({__name:"form",props:{isEdit:{type:Boolean,default:!1},row:{}},emits:["refresh"],setup(t,{expose:a,emit:l}){const i=t,n=l,{t:s}=p(),o=m(null),u=y({url:"",frequency:30,cycle:60}),d={url:{trigger:["blur","input"],validator:()=>""!==u.url.trim()||new Error(s("Waf.Setting.config_55"))},frequency:{trigger:["blur","input"],validator:()=>!!u.frequency||new Error(s("Waf.Setting.config_56"))},cycle:{trigger:["blur","input"],validator:()=>!!u.cycle||new Error(s("Waf.Setting.config_57"))}};return(()=>{const{row:e,isEdit:t}=i;t&&e&&(u.url=e.url,u.frequency=e.frequency,u.cycle=e.cycle)})(),a({onConfirm:async()=>{var e;await(null==(e=o.value)?void 0:e.validate()),i.isEdit?await r(S(u)):await c(S(u)),n("refresh")}}),(t,a)=>{const l=j,i=W,n=k,s=f,r=e;return _(),g("div",U,[v(s,{ref_key:"formRef",ref:o,model:x(u),rules:d},{default:b(()=>[v(i,{label:"URL",path:"url"},{default:b(()=>[w("div",$,[v(l,{value:x(u).url,"onUpdate:value":a[0]||(a[0]=e=>x(u).url=e),placeholder:"/index.php"},null,8,["value"])]),w("span",P,h(t.$t("Waf.Setting.config_51")),1)]),_:1}),v(i,{label:t.$t("Waf.Setting.config_48"),path:"frequency"},{default:b(()=>[w("div",R,[v(n,{value:x(u).frequency,"onUpdate:value":a[1]||(a[1]=e=>x(u).frequency=e),min:1,"show-button":!1},null,8,["value"])]),w("span",C,h(t.$t("Public.Unit.Time",x(u).frequency)),1)]),_:1},8,["label"]),v(i,{label:t.$t("Waf.Setting.config_49"),path:"cycle"},{default:b(()=>[w("div",B,[v(n,{value:x(u).cycle,"onUpdate:value":a[2]||(a[2]=e=>x(u).cycle=e),min:1,"show-button":!1},null,8,["value"])]),w("span",L,h(t.$t("Public.Unit.Second",x(u).cycle)),1)]),_:1},8,["label"])]),_:1},8,["model"]),v(r,{class:"mt-12px"},{default:b(()=>[w("li",null,h(t.$t("Waf.Setting.config_54")),1)]),_:1})])}}}),D={class:"p-20px"},H={class:"flex mb-16px"},N=d({__name:"config",setup(e){const{t:r}=p(),c=e=>{i({title:e.title,width:570,footer:!0,data:{...e.data,onRefresh:()=>{S()}},component:A})},f=async()=>{c({title:r("Waf.Setting.config_46"),data:{isEdit:!1}})},{table:d,columns:m,setLoading:y}=t([{key:"url",title:"URL",ellipsis:{tooltip:!0}},{key:"frequency",title:r("Waf.Setting.config_48"),width:100,ellipsis:{tooltip:!0}},{key:"cycle",title:r("Waf.Setting.config_49"),width:120,ellipsis:{tooltip:!0},render:e=>r("Waf.Setting.config_50",[e.cycle])},a({width:100,options:e=>[{label:r("Public.Btn.Edit"),onClick:async()=>{(async e=>{c({title:r("Waf.Setting.config_47"),data:{row:e,isEdit:!0}})})(e)}},{label:r("Public.Btn.Del"),onClick:async()=>{await o({url:e.url}),S()}}]})]),S=async()=>{try{y(!0);const{message:e}=await u();n(e)&&(d.data=Object.entries(e.cc_uri_frequency).map(([e,t])=>({url:e,frequency:s(t.frequency),cycle:s(t.cycle)})))}finally{y(!1)}};return S(),(e,t)=>{const a=E,i=l;return _(),g("div",D,[w("div",H,[v(a,{type:"primary",onClick:f},{default:b(()=>[q(h(e.$t("Public.Btn.Add")),1)]),_:1})]),v(i,{"max-height":368,loading:x(d).loading,data:x(d).data,columns:x(m)},null,8,["loading","data","columns"])])}}});export{N as default}; diff --git a/BTPanel/static/vite/js/config6.js b/BTPanel/static/vite/js/config6.js index 4cc41fa2..71d483cc 100644 --- a/BTPanel/static/vite/js/config6.js +++ b/BTPanel/static/vite/js/config6.js @@ -1 +1 @@ -import{c as a,f as e,h as t,_ as l,u as i}from"./public.js?v=1760428868419";import{d as n}from"./page_layout.js?v=1760428868419";import{o as s,p as r,g as o}from"./setting.js?v=1760428868419";import{_ as p}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{_ as u}from"./index99.js?v=1760428868419";import{k as f,P as c,r as g,e as d,R as m,V as _,W as v,a3 as y,S,U as W,j as b,a4 as h}from"./vue.js?v=1760428868419";import{dR as w,dV as x,au as j,aC as k}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const $={class:"p-20px"},U={class:"w-100px mr-8px"},R={class:"w-220px"},T={class:"w-328px"},C={class:"w-100px"},L=f({__name:"form",props:{isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(a,{expose:e,emit:t}){const l=t,{t:i}=c(),n=g(null),r=d({sType:"url",uri:"",param:"",type:1}),o=[{label:i("Waf.Setting.config_75"),value:"url"},{label:i("Waf.Setting.config_76"),value:"regular"}],f=[{label:i("Waf.Setting.config_68"),value:1},{label:i("Waf.Setting.config_69"),value:2},{label:i("Waf.Setting.config_70"),value:3},{label:i("Waf.Setting.config_71"),value:4}],b={uri:{trigger:["blur","input"],validator:()=>""!==r.uri.trim()||new Error(i("Waf.Setting.config_55"))}};return e({onConfirm:async()=>{var a;await(null==(a=n.value)?void 0:a.validate()),await s({stype:r.sType,uri:r.uri,param:r.param.replace(/\n/g,",").split(","),type:r.type}),l("refresh")}}),(a,e)=>{const t=x,l=j,i=w,s=u,c=p;return _(),m("div",$,[v(c,{ref_key:"formRef",ref:n,model:W(r),rules:b},{default:y(()=>[v(i,{label:a.$t("Waf.Setting.config_73"),path:"uri"},{default:y(()=>[S("div",U,[v(t,{value:W(r).sType,"onUpdate:value":e[0]||(e[0]=a=>W(r).sType=a),options:o},null,8,["value"])]),S("div",R,[v(l,{value:W(r).uri,"onUpdate:value":e[1]||(e[1]=a=>W(r).uri=a),placeholder:"URL"},null,8,["value"])])]),_:1},8,["label"]),v(i,{label:a.$t("Waf.Setting.config_65"),path:"param"},{default:y(()=>[S("div",T,[v(s,{value:W(r).param,"onUpdate:value":e[2]||(e[2]=a=>W(r).param=a),rows:4,placeholder:a.$t("Waf.Setting.config_74")},null,8,["value","placeholder"])])]),_:1},8,["label"]),v(i,{label:a.$t("Waf.Setting.config_67"),path:"type","show-feedback":!1},{default:y(()=>[S("div",C,[v(t,{value:W(r).type,"onUpdate:value":e[3]||(e[3]=a=>W(r).type=a),"consistent-menu-width":!1,options:f},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),B={class:"p-20px"},E={class:"flex mb-16px"},P=f({__name:"config",setup(s){const{t:p}=c(),u=async()=>{var a;a={title:p("Waf.Setting.config_64"),data:{isEdit:!1}},i({title:a.title,width:550,footer:!0,data:{...a.data,onRefresh:()=>{w()}},component:L})},{table:f,columns:g,setLoading:d}=a([{key:"url",title:"URL",ellipsis:{tooltip:!0}},{key:"param",title:p("Waf.Setting.config_65"),width:120,ellipsis:{tooltip:!0},render:a=>a.param?a.param.join(", "):"--"},{key:"sType",title:p("Waf.Setting.config_66"),width:80,render:a=>"regular"==a.sType?p("Waf.Setting.config_72"):"URL"},{key:"type",title:p("Waf.Setting.config_67"),width:90,render:a=>{var e="";switch(a.type){case 1:e=p("Waf.Setting.config_68");break;case 2:e=p("Waf.Setting.config_69");break;case 3:e=p("Waf.Setting.config_70");break;case 4:e=p("Waf.Setting.config_71")}return e}},e({width:60,options:a=>[{label:p("Public.Btn.Del"),onClick:async()=>{await r({uri:a.url}),w()}}]})]),w=async()=>{try{d(!0);const{message:a}=await o();n(a)&&(f.data=Object.entries(a.url_cc_param).map(([a,e])=>({url:a,type:e.type,param:e.param,sType:e.stype})))}finally{d(!1)}};return w(),(a,e)=>{const i=k,n=t,s=l;return _(),m("div",B,[S("div",E,[v(i,{type:"primary",onClick:u},{default:y(()=>[b(h(a.$t("Public.Btn.Add")),1)]),_:1})]),v(n,{"max-height":368,loading:W(f).loading,data:W(f).data,columns:W(g)},null,8,["loading","data","columns"]),v(s,{class:"mt-12px"},{default:y(()=>[S("li",null,h(a.$t("Waf.Setting.config_60")),1),S("li",null,h(a.$t("Waf.Setting.config_61")),1),S("li",null,h(a.$t("Waf.Setting.config_62")),1),S("li",null,h(a.$t("Waf.Setting.config_63")),1)]),_:1})])}}});export{P as default}; +import{c as a,f as e,h as t,_ as l,u as i}from"./public.js?v=1762424784323";import{d as n}from"./page_layout.js?v=1762424784323";import{o as s,p as r,g as o}from"./setting.js?v=1762424784323";import{_ as p}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{_ as u}from"./index99.js?v=1762424784323";import{k as f,P as c,r as g,e as d,R as m,V as _,W as v,a3 as y,S,U as W,j as b,a4 as h}from"./vue.js?v=1762424784323";import{dR as w,dV as x,au as j,aC as k}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const $={class:"p-20px"},U={class:"w-100px mr-8px"},R={class:"w-220px"},T={class:"w-328px"},C={class:"w-100px"},L=f({__name:"form",props:{isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(a,{expose:e,emit:t}){const l=t,{t:i}=c(),n=g(null),r=d({sType:"url",uri:"",param:"",type:1}),o=[{label:i("Waf.Setting.config_75"),value:"url"},{label:i("Waf.Setting.config_76"),value:"regular"}],f=[{label:i("Waf.Setting.config_68"),value:1},{label:i("Waf.Setting.config_69"),value:2},{label:i("Waf.Setting.config_70"),value:3},{label:i("Waf.Setting.config_71"),value:4}],b={uri:{trigger:["blur","input"],validator:()=>""!==r.uri.trim()||new Error(i("Waf.Setting.config_55"))}};return e({onConfirm:async()=>{var a;await(null==(a=n.value)?void 0:a.validate()),await s({stype:r.sType,uri:r.uri,param:r.param.replace(/\n/g,",").split(","),type:r.type}),l("refresh")}}),(a,e)=>{const t=x,l=j,i=w,s=u,c=p;return _(),m("div",$,[v(c,{ref_key:"formRef",ref:n,model:W(r),rules:b},{default:y(()=>[v(i,{label:a.$t("Waf.Setting.config_73"),path:"uri"},{default:y(()=>[S("div",U,[v(t,{value:W(r).sType,"onUpdate:value":e[0]||(e[0]=a=>W(r).sType=a),options:o},null,8,["value"])]),S("div",R,[v(l,{value:W(r).uri,"onUpdate:value":e[1]||(e[1]=a=>W(r).uri=a),placeholder:"URL"},null,8,["value"])])]),_:1},8,["label"]),v(i,{label:a.$t("Waf.Setting.config_65"),path:"param"},{default:y(()=>[S("div",T,[v(s,{value:W(r).param,"onUpdate:value":e[2]||(e[2]=a=>W(r).param=a),rows:4,placeholder:a.$t("Waf.Setting.config_74")},null,8,["value","placeholder"])])]),_:1},8,["label"]),v(i,{label:a.$t("Waf.Setting.config_67"),path:"type","show-feedback":!1},{default:y(()=>[S("div",C,[v(t,{value:W(r).type,"onUpdate:value":e[3]||(e[3]=a=>W(r).type=a),"consistent-menu-width":!1,options:f},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),B={class:"p-20px"},E={class:"flex mb-16px"},P=f({__name:"config",setup(s){const{t:p}=c(),u=async()=>{var a;a={title:p("Waf.Setting.config_64"),data:{isEdit:!1}},i({title:a.title,width:550,footer:!0,data:{...a.data,onRefresh:()=>{w()}},component:L})},{table:f,columns:g,setLoading:d}=a([{key:"url",title:"URL",ellipsis:{tooltip:!0}},{key:"param",title:p("Waf.Setting.config_65"),width:120,ellipsis:{tooltip:!0},render:a=>a.param?a.param.join(", "):"--"},{key:"sType",title:p("Waf.Setting.config_66"),width:80,render:a=>"regular"==a.sType?p("Waf.Setting.config_72"):"URL"},{key:"type",title:p("Waf.Setting.config_67"),width:90,render:a=>{var e="";switch(a.type){case 1:e=p("Waf.Setting.config_68");break;case 2:e=p("Waf.Setting.config_69");break;case 3:e=p("Waf.Setting.config_70");break;case 4:e=p("Waf.Setting.config_71")}return e}},e({width:60,options:a=>[{label:p("Public.Btn.Del"),onClick:async()=>{await r({uri:a.url}),w()}}]})]),w=async()=>{try{d(!0);const{message:a}=await o();n(a)&&(f.data=Object.entries(a.url_cc_param).map(([a,e])=>({url:a,type:e.type,param:e.param,sType:e.stype})))}finally{d(!1)}};return w(),(a,e)=>{const i=k,n=t,s=l;return _(),m("div",B,[S("div",E,[v(i,{type:"primary",onClick:u},{default:y(()=>[b(h(a.$t("Public.Btn.Add")),1)]),_:1})]),v(n,{"max-height":368,loading:W(f).loading,data:W(f).data,columns:W(g)},null,8,["loading","data","columns"]),v(s,{class:"mt-12px"},{default:y(()=>[S("li",null,h(a.$t("Waf.Setting.config_60")),1),S("li",null,h(a.$t("Waf.Setting.config_61")),1),S("li",null,h(a.$t("Waf.Setting.config_62")),1),S("li",null,h(a.$t("Waf.Setting.config_63")),1)]),_:1})])}}});export{P as default}; diff --git a/BTPanel/static/vite/js/config7.js b/BTPanel/static/vite/js/config7.js index 3c09152f..25d0b0c7 100644 --- a/BTPanel/static/vite/js/config7.js +++ b/BTPanel/static/vite/js/config7.js @@ -1 +1 @@ -import{c as a,f as t,h as l,_ as s}from"./public.js?v=1760428868419";import{k as e,P as n,r as i,R as o,V as r,S as u,W as c,aj as m,ak as p,U as f,a3 as d,j as g,a4 as _}from"./vue.js?v=1760428868419";import{w as v,m as j}from"./page_layout.js?v=1760428868419";import{q as x,t as y,v as b}from"./setting.js?v=1760428868419";import{au as h,aC as S}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const W={class:"p-20px"},k={class:"flex mb-16px"},w={class:"flex-1 mr-16px"},$=e({__name:"config",setup(e){const{t:$}=n(),C=i(""),P=async()=>{""!==C.value.trim()?(await b({text:C.value}),C.value="",R()):j.error($("Waf.Setting.config_81"))},{table:U,columns:B,setLoading:L}=a([{key:"rule",title:"URL"},t({width:80,options:a=>[{label:$("Public.Btn.Del"),onClick:async()=>{await x({text:a.rule}),R()}}]})]),R=async()=>{try{L(!0);const{message:a}=await y();v(a)&&(U.data=a.map(a=>({rule:a})))}finally{L(!1)}};return R(),(a,t)=>{const e=h,n=S,i=l,v=s;return r(),o("div",W,[u("div",k,[u("div",w,[c(e,{value:f(C),"onUpdate:value":t[0]||(t[0]=a=>p(C)?C.value=a:null),placeholder:a.$t("Waf.Setting.config_78"),onKeyup:m(P,["enter"])},null,8,["value","placeholder"])]),c(n,{type:"primary",onClick:P},{default:d(()=>[g(_(a.$t("Public.Btn.Add")),1)]),_:1})]),c(i,{"max-height":368,loading:f(U).loading,data:f(U).data,columns:f(B)},null,8,["loading","data","columns"]),c(v,{class:"mt-16px"},{default:d(()=>[u("li",null,_(a.$t("Waf.Setting.config_77")),1),u("li",null,_(a.$t("Waf.Setting.config_79")),1),u("li",null,_(a.$t("Waf.Setting.config_80")),1)]),_:1})])}}});export{$ as default}; +import{c as a,f as t,h as l,_ as s}from"./public.js?v=1762424784323";import{k as e,P as n,r as i,R as o,V as r,S as u,W as c,aj as m,ak as p,U as f,a3 as d,j as g,a4 as _}from"./vue.js?v=1762424784323";import{w as v,m as j}from"./page_layout.js?v=1762424784323";import{q as x,t as y,v as b}from"./setting.js?v=1762424784323";import{au as h,aC as S}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const W={class:"p-20px"},k={class:"flex mb-16px"},w={class:"flex-1 mr-16px"},$=e({__name:"config",setup(e){const{t:$}=n(),C=i(""),P=async()=>{""!==C.value.trim()?(await b({text:C.value}),C.value="",R()):j.error($("Waf.Setting.config_81"))},{table:U,columns:B,setLoading:L}=a([{key:"rule",title:"URL"},t({width:80,options:a=>[{label:$("Public.Btn.Del"),onClick:async()=>{await x({text:a.rule}),R()}}]})]),R=async()=>{try{L(!0);const{message:a}=await y();v(a)&&(U.data=a.map(a=>({rule:a})))}finally{L(!1)}};return R(),(a,t)=>{const e=h,n=S,i=l,v=s;return r(),o("div",W,[u("div",k,[u("div",w,[c(e,{value:f(C),"onUpdate:value":t[0]||(t[0]=a=>p(C)?C.value=a:null),placeholder:a.$t("Waf.Setting.config_78"),onKeyup:m(P,["enter"])},null,8,["value","placeholder"])]),c(n,{type:"primary",onClick:P},{default:d(()=>[g(_(a.$t("Public.Btn.Add")),1)]),_:1})]),c(i,{"max-height":368,loading:f(U).loading,data:f(U).data,columns:f(B)},null,8,["loading","data","columns"]),c(v,{class:"mt-16px"},{default:d(()=>[u("li",null,_(a.$t("Waf.Setting.config_77")),1),u("li",null,_(a.$t("Waf.Setting.config_79")),1),u("li",null,_(a.$t("Waf.Setting.config_80")),1)]),_:1})])}}});export{$ as default}; diff --git a/BTPanel/static/vite/js/config8.js b/BTPanel/static/vite/js/config8.js index bf355186..93e21204 100644 --- a/BTPanel/static/vite/js/config8.js +++ b/BTPanel/static/vite/js/config8.js @@ -1 +1 @@ -import{c as a,f as e,h as t,_ as l,u as i}from"./public.js?v=1760428868419";import{p as s,w as n}from"./page_layout.js?v=1760428868419";import{B as r,C as o,D as u}from"./setting.js?v=1760428868419";import{_ as p}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{k as c,ad as f,ae as d,c as m,R as v,V as g,S as _,a4 as y,H as h,U as S,F as C,O as P,P as b,r as W,e as w,W as x,a3 as j,j as E}from"./vue.js?v=1760428868419";import{dR as R,dV as k,au as O,aC as T}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const A={class:"param-list"},U=["onClick"],L=s(c({__name:"param",props:{value:{default:()=>[]},valueModifiers:{}},emits:f(["change"],["update:value"]),setup(a,{emit:e}){const t=e,l=d(a,"value"),i=["POST","GET","PUT","OPTIONS","HEAD","DELETE","TRACE","PATCH","MOVE","COPY","LINK","UNLINK","WRAPPED","PROPFIND","PROPPATCH","MKCOL","CONNECT","SRARCH"],s=m(()=>i.length===l.value.length),n=()=>{l.value=[],s.value||(l.value=i.map(a=>a)),t("change")};return(a,e)=>(g(),v("div",A,[_("div",{class:h(["param-item",{active:S(s)}]),onClick:n},y(a.$t("Public.SelectAll")),3),(g(),v(C,null,P(i,a=>{return _("div",{key:a,class:h(["param-item",{active:(e=a,l.value.includes(e))}]),onClick:e=>(a=>{const e=l.value.indexOf(a);-1===e?l.value.push(a):l.value.splice(e,1),t("change")})(a)},y(a),11,U);var e}),64))]))}}),[["__scopeId","data-v-d6f769f3"]]),N={class:"p-20px"},D={class:"w-100px mr-8px"},H={class:"w-220px"},I={class:"w-328px"},$=c({__name:"form",props:{isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(a,{expose:e,emit:t}){const l=t,{t:i}=b(),s=W(null),n=W(null),o=w({type:"refuse",url:"",param:[]}),u=[{label:i("Waf.Setting.config_111"),value:"refuse"},{label:i("Waf.Setting.config_110"),value:"accept"}],c={url:{trigger:["blur","input"],validator:()=>""!==o.url.trim()||new Error(i("Waf.Setting.config_55"))},param:{validator:()=>0!==o.param.length||new Error(i("Waf.Setting.config_112"))}},f=()=>{var a;null==(a=n.value)||a.restoreValidation()};return e({onConfirm:async()=>{var a;await(null==(a=s.value)?void 0:a.validate()),await r({type:o.type,url:o.url,param:o.param.join(",")}),l("refresh")}}),(a,e)=>{const t=k,l=O,i=R,r=p;return g(),v("div",N,[x(r,{ref_key:"formRef",ref:s,model:S(o),rules:c},{default:j(()=>[x(i,{label:a.$t("Waf.Setting.config_73"),path:"url"},{default:j(()=>[_("div",D,[x(t,{value:S(o).type,"onUpdate:value":e[0]||(e[0]=a=>S(o).type=a),options:u},null,8,["value"])]),_("div",H,[x(l,{value:S(o).url,"onUpdate:value":e[1]||(e[1]=a=>S(o).url=a),placeholder:"URL"},null,8,["value"])])]),_:1},8,["label"]),x(i,{ref_key:"paramItemRef",ref:n,label:a.$t("Waf.Setting.config_65"),path:"param"},{default:j(()=>[_("div",I,[x(L,{value:S(o).param,"onUpdate:value":e[2]||(e[2]=a=>S(o).param=a),onChange:f},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),B={class:"p-20px"},V={class:"flex mb-16px"},K=c({__name:"config",setup(s){const{t:r}=b(),p=async()=>{var a;a={title:r("Waf.Setting.config_64"),data:{isEdit:!1}},i({title:a.title,width:550,footer:!0,data:{...a.data,onRefresh:()=>{m()}},component:$})},{table:c,columns:f,setLoading:d}=a([{key:"url",title:"URL",ellipsis:{tooltip:!0}},{key:"type",title:r("Waf.Setting.config_73"),width:80,ellipsis:{tooltip:!0},render:a=>"refuse"===a.type?r("Waf.Setting.config_111"):r("Waf.Setting.config_110")},{key:"mode",title:r("Waf.Setting.config_93"),width:216,ellipsis:{tooltip:!0},render:a=>Object.entries(a.mode).map(([,a])=>a).join(", ")},e({width:60,options:a=>[{label:r("Public.Btn.Del"),onClick:async()=>{await o({url:a.url}),m()}}]})]),m=async()=>{try{d(!0);const{message:a}=await u();c.data=n(a)?a:[]}finally{d(!1)}};return m(),(a,e)=>{const i=T,s=t,n=l;return g(),v("div",B,[_("div",V,[x(i,{type:"primary",onClick:p},{default:j(()=>[E(y(a.$t("Public.Btn.Add")),1)]),_:1})]),x(s,{"max-height":270,loading:S(c).loading,data:S(c).data,columns:S(f)},null,8,["loading","data","columns"]),x(n,{class:"mt-12px"},{default:j(()=>[_("li",null,y(a.$t("Waf.Setting.config_108")),1),_("li",null,y(a.$t("Waf.Setting.config_109")),1)]),_:1})])}}});export{K as default}; +import{c as a,f as e,h as t,_ as l,u as i}from"./public.js?v=1762424784323";import{p as s,w as n}from"./page_layout.js?v=1762424784323";import{B as r,C as o,D as u}from"./setting.js?v=1762424784323";import{_ as p}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{k as c,ad as f,ae as d,c as m,R as v,V as g,S as _,a4 as y,H as h,U as S,F as C,O as P,P as b,r as W,e as w,W as x,a3 as j,j as E}from"./vue.js?v=1762424784323";import{dR as R,dV as k,au as O,aC as T}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const A={class:"param-list"},U=["onClick"],L=s(c({__name:"param",props:{value:{default:()=>[]},valueModifiers:{}},emits:f(["change"],["update:value"]),setup(a,{emit:e}){const t=e,l=d(a,"value"),i=["POST","GET","PUT","OPTIONS","HEAD","DELETE","TRACE","PATCH","MOVE","COPY","LINK","UNLINK","WRAPPED","PROPFIND","PROPPATCH","MKCOL","CONNECT","SRARCH"],s=m(()=>i.length===l.value.length),n=()=>{l.value=[],s.value||(l.value=i.map(a=>a)),t("change")};return(a,e)=>(g(),v("div",A,[_("div",{class:h(["param-item",{active:S(s)}]),onClick:n},y(a.$t("Public.SelectAll")),3),(g(),v(C,null,P(i,a=>{return _("div",{key:a,class:h(["param-item",{active:(e=a,l.value.includes(e))}]),onClick:e=>(a=>{const e=l.value.indexOf(a);-1===e?l.value.push(a):l.value.splice(e,1),t("change")})(a)},y(a),11,U);var e}),64))]))}}),[["__scopeId","data-v-d6f769f3"]]),N={class:"p-20px"},D={class:"w-100px mr-8px"},H={class:"w-220px"},I={class:"w-328px"},$=c({__name:"form",props:{isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(a,{expose:e,emit:t}){const l=t,{t:i}=b(),s=W(null),n=W(null),o=w({type:"refuse",url:"",param:[]}),u=[{label:i("Waf.Setting.config_111"),value:"refuse"},{label:i("Waf.Setting.config_110"),value:"accept"}],c={url:{trigger:["blur","input"],validator:()=>""!==o.url.trim()||new Error(i("Waf.Setting.config_55"))},param:{validator:()=>0!==o.param.length||new Error(i("Waf.Setting.config_112"))}},f=()=>{var a;null==(a=n.value)||a.restoreValidation()};return e({onConfirm:async()=>{var a;await(null==(a=s.value)?void 0:a.validate()),await r({type:o.type,url:o.url,param:o.param.join(",")}),l("refresh")}}),(a,e)=>{const t=k,l=O,i=R,r=p;return g(),v("div",N,[x(r,{ref_key:"formRef",ref:s,model:S(o),rules:c},{default:j(()=>[x(i,{label:a.$t("Waf.Setting.config_73"),path:"url"},{default:j(()=>[_("div",D,[x(t,{value:S(o).type,"onUpdate:value":e[0]||(e[0]=a=>S(o).type=a),options:u},null,8,["value"])]),_("div",H,[x(l,{value:S(o).url,"onUpdate:value":e[1]||(e[1]=a=>S(o).url=a),placeholder:"URL"},null,8,["value"])])]),_:1},8,["label"]),x(i,{ref_key:"paramItemRef",ref:n,label:a.$t("Waf.Setting.config_65"),path:"param"},{default:j(()=>[_("div",I,[x(L,{value:S(o).param,"onUpdate:value":e[2]||(e[2]=a=>S(o).param=a),onChange:f},null,8,["value"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}),B={class:"p-20px"},V={class:"flex mb-16px"},K=c({__name:"config",setup(s){const{t:r}=b(),p=async()=>{var a;a={title:r("Waf.Setting.config_64"),data:{isEdit:!1}},i({title:a.title,width:550,footer:!0,data:{...a.data,onRefresh:()=>{m()}},component:$})},{table:c,columns:f,setLoading:d}=a([{key:"url",title:"URL",ellipsis:{tooltip:!0}},{key:"type",title:r("Waf.Setting.config_73"),width:80,ellipsis:{tooltip:!0},render:a=>"refuse"===a.type?r("Waf.Setting.config_111"):r("Waf.Setting.config_110")},{key:"mode",title:r("Waf.Setting.config_93"),width:216,ellipsis:{tooltip:!0},render:a=>Object.entries(a.mode).map(([,a])=>a).join(", ")},e({width:60,options:a=>[{label:r("Public.Btn.Del"),onClick:async()=>{await o({url:a.url}),m()}}]})]),m=async()=>{try{d(!0);const{message:a}=await u();c.data=n(a)?a:[]}finally{d(!1)}};return m(),(a,e)=>{const i=T,s=t,n=l;return g(),v("div",B,[_("div",V,[x(i,{type:"primary",onClick:p},{default:j(()=>[E(y(a.$t("Public.Btn.Add")),1)]),_:1})]),x(s,{"max-height":270,loading:S(c).loading,data:S(c).data,columns:S(f)},null,8,["loading","data","columns"]),x(n,{class:"mt-12px"},{default:j(()=>[_("li",null,y(a.$t("Waf.Setting.config_108")),1),_("li",null,y(a.$t("Waf.Setting.config_109")),1)]),_:1})])}}});export{K as default}; diff --git a/BTPanel/static/vite/js/config9.js b/BTPanel/static/vite/js/config9.js index 7defb7d2..56ae058f 100644 --- a/BTPanel/static/vite/js/config9.js +++ b/BTPanel/static/vite/js/config9.js @@ -1 +1 @@ -import{c as a,f as l,h as t,_ as s}from"./public.js?v=1760428868419";import{k as n,P as e,r as i,R as o,V as r,S as u,W as c,aj as m,ak as f,U as p,a3 as d,j as g,a4 as _}from"./vue.js?v=1760428868419";import{w as v,m as j}from"./page_layout.js?v=1760428868419";import{E as y,F as x,G as b}from"./setting.js?v=1760428868419";import{au as h,aC as S}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const W={class:"p-20px"},k={class:"flex mb-16px"},w={class:"flex-1 mr-16px"},$=n({__name:"config",setup(n){const{t:$}=e(),C=i(""),P=async()=>{""!==C.value.trim()?(await b({url_find:C.value}),C.value="",R()):j.error($("Waf.Setting.config_81"))},{table:U,columns:B,setLoading:L}=a([{key:"url",title:"URL"},l({width:80,options:a=>[{label:$("Public.Btn.Del"),onClick:async()=>{await y({url_find:a.url}),R()}}]})]),R=async()=>{try{L(!0);const{message:a}=await x();v(a)&&(U.data=a.map(a=>({url:a})))}finally{L(!1)}};return R(),(a,l)=>{const n=h,e=S,i=t,v=s;return r(),o("div",W,[u("div",k,[u("div",w,[c(n,{value:p(C),"onUpdate:value":l[0]||(l[0]=a=>f(C)?C.value=a:null),placeholder:a.$t("Waf.Setting.config_116"),onKeyup:m(P,["enter"])},null,8,["value","placeholder"])]),c(e,{type:"primary",onClick:P},{default:d(()=>[g(_(a.$t("Public.Btn.Add")),1)]),_:1})]),c(i,{"max-height":368,loading:p(U).loading,data:p(U).data,columns:p(B)},null,8,["loading","data","columns"]),c(v,{class:"mt-16px"},{default:d(()=>[u("li",null,_(a.$t("Waf.Setting.config_117")),1),u("li",null,_(a.$t("Waf.Setting.config_118")),1),u("li",null,_(a.$t("Waf.Setting.config_119")),1)]),_:1})])}}});export{$ as default}; +import{c as a,f as l,h as t,_ as s}from"./public.js?v=1762424784323";import{k as n,P as e,r as i,R as o,V as r,S as u,W as c,aj as m,ak as f,U as p,a3 as d,j as g,a4 as _}from"./vue.js?v=1762424784323";import{w as v,m as j}from"./page_layout.js?v=1762424784323";import{E as y,F as x,G as b}from"./setting.js?v=1762424784323";import{au as h,aC as S}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const W={class:"p-20px"},k={class:"flex mb-16px"},w={class:"flex-1 mr-16px"},$=n({__name:"config",setup(n){const{t:$}=e(),C=i(""),P=async()=>{""!==C.value.trim()?(await b({url_find:C.value}),C.value="",R()):j.error($("Waf.Setting.config_81"))},{table:U,columns:B,setLoading:L}=a([{key:"url",title:"URL"},l({width:80,options:a=>[{label:$("Public.Btn.Del"),onClick:async()=>{await y({url_find:a.url}),R()}}]})]),R=async()=>{try{L(!0);const{message:a}=await x();v(a)&&(U.data=a.map(a=>({url:a})))}finally{L(!1)}};return R(),(a,l)=>{const n=h,e=S,i=t,v=s;return r(),o("div",W,[u("div",k,[u("div",w,[c(n,{value:p(C),"onUpdate:value":l[0]||(l[0]=a=>f(C)?C.value=a:null),placeholder:a.$t("Waf.Setting.config_116"),onKeyup:m(P,["enter"])},null,8,["value","placeholder"])]),c(e,{type:"primary",onClick:P},{default:d(()=>[g(_(a.$t("Public.Btn.Add")),1)]),_:1})]),c(i,{"max-height":368,loading:p(U).loading,data:p(U).data,columns:p(B)},null,8,["loading","data","columns"]),c(v,{class:"mt-16px"},{default:d(()=>[u("li",null,_(a.$t("Waf.Setting.config_117")),1),u("li",null,_(a.$t("Waf.Setting.config_118")),1),u("li",null,_(a.$t("Waf.Setting.config_119")),1)]),_:1})])}}});export{$ as default}; diff --git a/BTPanel/static/vite/js/count-legacy.js b/BTPanel/static/vite/js/count-legacy.js index c9d1ae46..4e8aec61 100644 --- a/BTPanel/static/vite/js/count-legacy.js +++ b/BTPanel/static/vite/js/count-legacy.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,t){"use strict";var l,a,n,s,u,c,r,i,o,d;return{setters:[e=>{l=e.c,a=e.h},e=>{n=e.k,s=e.P,u=e.W,c=e.R,r=e.V,i=e.U,o=e.F},e=>{d=e.dh},null,null,null],execute:function(){const t={class:"p-20px"};e("default",n({__name:"count",props:{list:{default:()=>[]}},setup(e){const{t:n}=s(),{columns:m}=l([{key:"name",title:n("Waf.Site.index_15")},{key:"value",title:n("Waf.Site.index_16"),render:e=>u(d,{placement:"bottom-start","arrow-point-to-center":!0},{trigger:()=>u(o,null,[e.value>0?u("a",{class:"bt-link error",href:"javascript:;"},[e.value]):e.value]),default:()=>u("div",{class:"leading-18px"},[n("Waf.Site.index_42",[e.value])])})}]);return(e,l)=>{const n=a;return r(),c("div",t,[u(n,{data:e.list,columns:i(m)},null,8,["data","columns"])])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,t){"use strict";var l,a,n,s,u,c,r,i,o,d;return{setters:[e=>{l=e.c,a=e.h},e=>{n=e.k,s=e.P,u=e.W,c=e.R,r=e.V,i=e.U,o=e.F},e=>{d=e.dh},null,null,null],execute:function(){const t={class:"p-20px"};e("default",n({__name:"count",props:{list:{default:()=>[]}},setup(e){const{t:n}=s(),{columns:m}=l([{key:"name",title:n("Waf.Site.index_15")},{key:"value",title:n("Waf.Site.index_16"),render:e=>u(d,{placement:"bottom-start","arrow-point-to-center":!0},{trigger:()=>u(o,null,[e.value>0?u("a",{class:"bt-link error",href:"javascript:;"},[e.value]):e.value]),default:()=>u("div",{class:"leading-18px"},[n("Waf.Site.index_42",[e.value])])})}]);return(e,l)=>{const n=a;return r(),c("div",t,[u(n,{data:e.list,columns:i(m)},null,8,["data","columns"])])}}}))}}}); diff --git a/BTPanel/static/vite/js/count.js b/BTPanel/static/vite/js/count.js index c68fea97..6791cbe9 100644 --- a/BTPanel/static/vite/js/count.js +++ b/BTPanel/static/vite/js/count.js @@ -1 +1 @@ -import{c as a,h as t}from"./public.js?v=1760428868419";import{k as e,P as s,W as o,R as r,V as l,U as i,F as n}from"./vue.js?v=1760428868419";import{dh as m}from"./naive.js?v=1760428868419";import"./page_layout.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const u={class:"p-20px"},p=e({__name:"count",props:{list:{default:()=>[]}},setup(e){const{t:p}=s(),{columns:c}=a([{key:"name",title:p("Waf.Site.index_15")},{key:"value",title:p("Waf.Site.index_16"),render:a=>o(m,{placement:"bottom-start","arrow-point-to-center":!0},{trigger:()=>o(n,null,[a.value>0?o("a",{class:"bt-link error",href:"javascript:;"},[a.value]):a.value]),default:()=>o("div",{class:"leading-18px"},[p("Waf.Site.index_42",[a.value])])})}]);return(a,e)=>{const s=t;return l(),r("div",u,[o(s,{data:a.list,columns:i(c)},null,8,["data","columns"])])}}});export{p as default}; +import{c as a,h as t}from"./public.js?v=1762424784323";import{k as e,P as s,W as o,R as r,V as l,U as i,F as n}from"./vue.js?v=1762424784323";import{dh as m}from"./naive.js?v=1762424784323";import"./page_layout.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const u={class:"p-20px"},p=e({__name:"count",props:{list:{default:()=>[]}},setup(e){const{t:p}=s(),{columns:c}=a([{key:"name",title:p("Waf.Site.index_15")},{key:"value",title:p("Waf.Site.index_16"),render:a=>o(m,{placement:"bottom-start","arrow-point-to-center":!0},{trigger:()=>o(n,null,[a.value>0?o("a",{class:"bt-link error",href:"javascript:;"},[a.value]):a.value]),default:()=>o("div",{class:"leading-18px"},[p("Waf.Site.index_42",[a.value])])})}]);return(a,e)=>{const s=t;return l(),r("div",u,[o(s,{data:a.list,columns:i(c)},null,8,["data","columns"])])}}});export{p as default}; diff --git a/BTPanel/static/vite/js/custom-legacy.js b/BTPanel/static/vite/js/custom-legacy.js index de1c7552..027f362c 100644 --- a/BTPanel/static/vite/js/custom-legacy.js +++ b/BTPanel/static/vite/js/custom-legacy.js @@ -1 +1 @@ -System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419"],function(e,a){"use strict";var l,r,s,t,u,n,c,o,_,g,i,p;return{setters:[e=>{l=e._},e=>{r=e.k,s=e.P,t=e.r,u=e.e,n=e.R,c=e.V,o=e.W,_=e.a3,g=e.U},e=>{i=e.dR,p=e.au},null,null],execute:function(){const a={class:"pt-20px"};e("default",r({__name:"custom",props:{data:{}},setup(e,{expose:r}){const{t:d}=s(),m=e,{row:v,callback:f}=m.data,y=t(null),j=u({args:""}),x={args:{required:!0,message:d("Crontab.Script.index_43"),trigger:["blur","input"]}};return r({onConfirm:async({hide:e})=>{await(y.value?.validate()),f?.(j.args,v),e()}}),(e,r)=>{const s=p,t=i,u=l;return c(),n("div",a,[o(u,{ref_key:"formRef",ref:y,model:g(j),rules:x},{default:_(()=>[o(t,{label:g(v).args_title,path:"args"},{default:_(()=>[o(s,{class:"w-250px!",value:g(j).args,"onUpdate:value":r[0]||(r[0]=e=>g(j).args=e),placeholder:g(v).args_ps},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1},8,["model"])])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323"],function(e,a){"use strict";var l,r,s,t,u,n,c,o,_,g,i,p;return{setters:[e=>{l=e._},e=>{r=e.k,s=e.P,t=e.r,u=e.e,n=e.R,c=e.V,o=e.W,_=e.a3,g=e.U},e=>{i=e.dR,p=e.au},null,null],execute:function(){const a={class:"pt-20px"};e("default",r({__name:"custom",props:{data:{}},setup(e,{expose:r}){const{t:d}=s(),m=e,{row:v,callback:f}=m.data,y=t(null),j=u({args:""}),x={args:{required:!0,message:d("Crontab.Script.index_43"),trigger:["blur","input"]}};return r({onConfirm:async({hide:e})=>{await(y.value?.validate()),f?.(j.args,v),e()}}),(e,r)=>{const s=p,t=i,u=l;return c(),n("div",a,[o(u,{ref_key:"formRef",ref:y,model:g(j),rules:x},{default:_(()=>[o(t,{label:g(v).args_title,path:"args"},{default:_(()=>[o(s,{class:"w-250px!",value:g(j).args,"onUpdate:value":r[0]||(r[0]=e=>g(j).args=e),placeholder:g(v).args_ps},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1},8,["model"])])}}}))}}}); diff --git a/BTPanel/static/vite/js/custom.js b/BTPanel/static/vite/js/custom.js index 3c6d1b6f..8c9014b8 100644 --- a/BTPanel/static/vite/js/custom.js +++ b/BTPanel/static/vite/js/custom.js @@ -1 +1 @@ -import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{k as e,P as s,r,e as l,R as t,V as o,W as u,a3 as p,U as n}from"./vue.js?v=1760428868419";import{dR as i,au as m}from"./naive.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./common.js?v=1760428868419";const _={class:"pt-20px"},d=e({__name:"custom",props:{data:{}},setup(e,{expose:d}){const{t:c}=s(),g=e,{row:v,callback:f}=g.data,j=r(null),x=l({args:""}),b={args:{required:!0,message:c("Crontab.Script.index_43"),trigger:["blur","input"]}};return d({onConfirm:async({hide:a})=>{var e;await(null==(e=j.value)?void 0:e.validate()),null==f||f(x.args,v),a()}}),(e,s)=>{const r=m,l=i,d=a;return o(),t("div",_,[u(d,{ref_key:"formRef",ref:j,model:n(x),rules:b},{default:p(()=>[u(l,{label:n(v).args_title,path:"args"},{default:p(()=>[u(r,{class:"w-250px!",value:n(x).args,"onUpdate:value":s[0]||(s[0]=a=>n(x).args=a),placeholder:n(v).args_ps},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1},8,["model"])])}}});export{d as default}; +import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{k as e,P as s,r,e as l,R as t,V as o,W as u,a3 as p,U as n}from"./vue.js?v=1762424784323";import{dR as i,au as m}from"./naive.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./common.js?v=1762424784323";const _={class:"pt-20px"},d=e({__name:"custom",props:{data:{}},setup(e,{expose:d}){const{t:c}=s(),g=e,{row:v,callback:f}=g.data,j=r(null),x=l({args:""}),b={args:{required:!0,message:c("Crontab.Script.index_43"),trigger:["blur","input"]}};return d({onConfirm:async({hide:a})=>{var e;await(null==(e=j.value)?void 0:e.validate()),null==f||f(x.args,v),a()}}),(e,s)=>{const r=m,l=i,d=a;return o(),t("div",_,[u(d,{ref_key:"formRef",ref:j,model:n(x),rules:b},{default:p(()=>[u(l,{label:n(v).args_title,path:"args"},{default:p(()=>[u(r,{class:"w-250px!",value:n(x).args,"onUpdate:value":s[0]||(s[0]=a=>n(x).args=a),placeholder:n(v).args_ps},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1},8,["model"])])}}});export{d as default}; diff --git a/BTPanel/static/vite/js/details-legacy.js b/BTPanel/static/vite/js/details-legacy.js index 20d22bd8..ccacbf87 100644 --- a/BTPanel/static/vite/js/details-legacy.js +++ b/BTPanel/static/vite/js/details-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy179.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./tools-legacy2.js?v=1760428868419","./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./rules-legacy.js?v=1760428868419"],function(e,l){"use strict";var a,t,n,s,c,i,d,o,u,f,_,p,r,b,v,x,g,m,y,h,j,k,w;return{setters:[e=>{a=e._},e=>{t=e.a6,n=e.dd,s=e.a7,c=e.p},e=>{i=e.a,d=e.b,o=e.h},e=>{u=e.d},e=>{f=e.k,_=e.t,p=e.P,r=e.c,b=e.r,v=e.R,x=e.V,g=e.W,m=e.S,y=e.a3,h=e.j,j=e.a4,k=e.U},e=>{w=e.dc},null,null,null],execute:function(){var l=document.createElement("style");l.textContent=".bt-code[data-v-f3ca0370]{font-size:15px;border-radius:4px;overflow:hidden}.bt-code[data-v-f3ca0370] .hljs{min-height:258px}.title[data-v-f3ca0370]{width:10%}.content[data-v-f3ca0370]{font-weight:700;width:40%}\n/*$vite$:1*/",document.head.appendChild(l);const W={class:"p-20px"},B={class:"flex justify-between"},$={class:"flex justify-between"},C={class:"mt-20px"},H={class:"mt-10px"};e("default",c(f({__name:"details",props:{row:{}},setup(e){const l=_(e,"row"),{t:c}=p(),f=r(()=>l.value.incoming_value.indexOf('b"')>-1?l.value.incoming_value.substring(2,l.value.incoming_value.length-1).split(" >> "):l.value.incoming_value.split(" >> ")),P=r(()=>f.value[1]||c("Waf.Block.index_72")),S=r(()=>f.value[2]||c("Waf.Block.index_72")),T=()=>{i(l.value)},U=()=>{d(l.value,!1)},z=b(""),{loading:A,setLoading:E}=u();return(async()=>{try{E(!0);const{message:e}=await o({path:l.value.http_log});z.value=e.result}finally{E(!1)}})(),(e,c)=>{const i=t,d=w,o=s,u=a;return x(),v("div",W,[g(o,{column:2,bordered:!0,"label-placement":"left","label-style":{width:"160px"},"content-style":{fontWeight:"bold"}},{default:y(()=>[g(i,{label:e.$t("Waf.Block.index_66")},{default:y(()=>[h(j(k(n)(k(l).time_localtime)),1)]),_:1},8,["label"]),g(i,{label:e.$t("Waf.Block.index_67")},{default:y(()=>[m("a",{class:"bt-link",href:"javascript:;",onClick:T},j(k(n)(k(l).ip)),1)]),_:1},8,["label"]),g(i,{label:e.$t("Waf.Block.index_15")},{default:y(()=>[h(j(k(n)(k(l).type)),1)]),_:1},8,["label"]),g(i,{label:e.$t("Waf.Block.index_21")},{default:y(()=>[h(j(k(n)(k(l).filter_rule)),1)]),_:1},8,["label"]),g(i,{label:e.$t("Waf.Block.index_68"),span:2},{default:y(()=>[m("div",B,[g(d,{class:"w-480px"},{default:y(()=>[h(j(k(n)(k(l).uri)),1)]),_:1}),m("a",{class:"bt-link",href:"javascript:;",onClick:U},j(e.$t("Waf.Block.index_23")),1)])]),_:1},8,["label"]),g(i,{label:"User-Agent",span:2},{default:y(()=>[g(d,{class:"w-570px"},{default:y(()=>[h(j(k(n)(k(l).user_agent)),1)]),_:1})]),_:1}),g(i,{label:e.$t("Waf.Block.index_69"),span:2},{default:y(()=>[m("div",$,[g(d,{class:"w-480px"},{default:y(()=>[h(j(k(n)(k(f)[0])),1)]),_:1})])]),_:1},8,["label"]),g(i,{label:e.$t("Waf.Block.index_70"),span:2},{default:y(()=>[g(d,{class:"w-570px"},{default:y(()=>[h(j(k(n)(k(P))),1)]),_:1})]),_:1},8,["label"]),g(i,{label:e.$t("Waf.Block.index_71"),span:2},{default:y(()=>[g(d,{class:"w-570px"},{default:y(()=>[h(j(k(n)(k(S))),1)]),_:1})]),_:1},8,["label"])]),_:1}),m("div",C,[c[0]||(c[0]=m("div",{class:"text-14px font-bold"},"HTTP",-1)),m("div",H,[g(u,{class:"h-260px",lang:"http",loading:k(A),content:k(z)},null,8,["loading","content"])])])])}}}),[["__scopeId","data-v-f3ca0370"]]))}}}); +System.register(["./index-legacy177.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./tools-legacy2.js?v=1762424784323","./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./rules-legacy.js?v=1762424784323"],function(e,l){"use strict";var a,t,n,s,c,i,d,o,u,f,_,p,r,b,v,x,g,m,y,h,j,k,w;return{setters:[e=>{a=e._},e=>{t=e.a6,n=e.dd,s=e.a7,c=e.p},e=>{i=e.a,d=e.b,o=e.h},e=>{u=e.d},e=>{f=e.k,_=e.t,p=e.P,r=e.c,b=e.r,v=e.R,x=e.V,g=e.W,m=e.S,y=e.a3,h=e.j,j=e.a4,k=e.U},e=>{w=e.dc},null,null,null],execute:function(){var l=document.createElement("style");l.textContent=".bt-code[data-v-f3ca0370]{font-size:15px;border-radius:4px;overflow:hidden}.bt-code[data-v-f3ca0370] .hljs{min-height:258px}.title[data-v-f3ca0370]{width:10%}.content[data-v-f3ca0370]{font-weight:700;width:40%}\n/*$vite$:1*/",document.head.appendChild(l);const W={class:"p-20px"},B={class:"flex justify-between"},$={class:"flex justify-between"},C={class:"mt-20px"},H={class:"mt-10px"};e("default",c(f({__name:"details",props:{row:{}},setup(e){const l=_(e,"row"),{t:c}=p(),f=r(()=>l.value.incoming_value.indexOf('b"')>-1?l.value.incoming_value.substring(2,l.value.incoming_value.length-1).split(" >> "):l.value.incoming_value.split(" >> ")),P=r(()=>f.value[1]||c("Waf.Block.index_72")),S=r(()=>f.value[2]||c("Waf.Block.index_72")),T=()=>{i(l.value)},U=()=>{d(l.value,!1)},z=b(""),{loading:A,setLoading:E}=u();return(async()=>{try{E(!0);const{message:e}=await o({path:l.value.http_log});z.value=e.result}finally{E(!1)}})(),(e,c)=>{const i=t,d=w,o=s,u=a;return x(),v("div",W,[g(o,{column:2,bordered:!0,"label-placement":"left","label-style":{width:"160px"},"content-style":{fontWeight:"bold"}},{default:y(()=>[g(i,{label:e.$t("Waf.Block.index_66")},{default:y(()=>[h(j(k(n)(k(l).time_localtime)),1)]),_:1},8,["label"]),g(i,{label:e.$t("Waf.Block.index_67")},{default:y(()=>[m("a",{class:"bt-link",href:"javascript:;",onClick:T},j(k(n)(k(l).ip)),1)]),_:1},8,["label"]),g(i,{label:e.$t("Waf.Block.index_15")},{default:y(()=>[h(j(k(n)(k(l).type)),1)]),_:1},8,["label"]),g(i,{label:e.$t("Waf.Block.index_21")},{default:y(()=>[h(j(k(n)(k(l).filter_rule)),1)]),_:1},8,["label"]),g(i,{label:e.$t("Waf.Block.index_68"),span:2},{default:y(()=>[m("div",B,[g(d,{class:"w-480px"},{default:y(()=>[h(j(k(n)(k(l).uri)),1)]),_:1}),m("a",{class:"bt-link",href:"javascript:;",onClick:U},j(e.$t("Waf.Block.index_23")),1)])]),_:1},8,["label"]),g(i,{label:"User-Agent",span:2},{default:y(()=>[g(d,{class:"w-570px"},{default:y(()=>[h(j(k(n)(k(l).user_agent)),1)]),_:1})]),_:1}),g(i,{label:e.$t("Waf.Block.index_69"),span:2},{default:y(()=>[m("div",$,[g(d,{class:"w-480px"},{default:y(()=>[h(j(k(n)(k(f)[0])),1)]),_:1})])]),_:1},8,["label"]),g(i,{label:e.$t("Waf.Block.index_70"),span:2},{default:y(()=>[g(d,{class:"w-570px"},{default:y(()=>[h(j(k(n)(k(P))),1)]),_:1})]),_:1},8,["label"]),g(i,{label:e.$t("Waf.Block.index_71"),span:2},{default:y(()=>[g(d,{class:"w-570px"},{default:y(()=>[h(j(k(n)(k(S))),1)]),_:1})]),_:1},8,["label"])]),_:1}),m("div",C,[c[0]||(c[0]=m("div",{class:"text-14px font-bold"},"HTTP",-1)),m("div",H,[g(u,{class:"h-260px",lang:"http",loading:k(A),content:k(z)},null,8,["loading","content"])])])])}}}),[["__scopeId","data-v-f3ca0370"]]))}}}); diff --git a/BTPanel/static/vite/js/details-legacy2.js b/BTPanel/static/vite/js/details-legacy2.js index d666288f..ac660f31 100644 --- a/BTPanel/static/vite/js/details-legacy2.js +++ b/BTPanel/static/vite/js/details-legacy2.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./index-legacy80.js?v=1760428868419","./tools-legacy2.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy15.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./rules-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./index-legacy99.js?v=1760428868419"],function(e,t){"use strict";var l,a,o,r,i,n,s,c,u,d,p,_,v,y,g,f,x,m;return{setters:[e=>{l=e.c,a=e.f,o=e.h},e=>{r=e.dd,i=e.w},e=>{n=e.g},e=>{s=e.s},e=>{c=e.k,u=e.t,d=e.P,p=e.X,_=e.aG,v=e.R,y=e.V,g=e.W,f=e.U,x=e.S},e=>{m=e._},null,null,null,null,null,null,null,null,null],execute:function(){const t={class:"h-full"},b=c({__name:"details-count",props:{data:{default:()=>({})}},setup(e){const l=u(e,"data"),{t:a}=d(),o=p("--color-bg-2"),r=p("--chart-tooltip-bg-color"),i=p("--color-text-1"),n=p("--color-text-2"),s=p("--color-text-3"),c=p("--color-border"),x=_({backgroundColor:o.value,title:h(),tooltip:{trigger:"item",confine:!0,backgroundColor:r.value,borderColor:"transparent",textStyle:{color:"#c7c7c7"},formatter(e){const t=e;return`${t.marker} ${t.name}: ${t.value} (${t.percent}%)`}},series:w()}),b=["#6ec71e","#4885FF","#fc8b40","#818af8","#31c9d7","#f35e7a","#ab7aee","#14d68b","#cde5ff"];function h(e=0){return{text:a("Waf.Report.index_17"),textStyle:{color:i.value,fontSize:17},subtext:`${e}`,subtextStyle:{color:n.value,fontSize:15},itemGap:20,left:"center",top:"42%"}}function w(e=[]){return[{type:"pie",data:e,radius:["50%","60%"],center:["50%","50%"],clockwise:!0,avoidLabelOverlap:!0,label:{show:!0,position:"outside",color:s.value,lineHeight:18,formatter:e=>""!==e.name?0===e.percent?"":a("Waf.Overview.index_33",[e.name,e.value,e.percent]):""},labelLine:{length:30,length2:30,lineStyle:{width:1,color:c.value}},itemStyle:{labelLine:{length:30,length2:30,lineStyle:{width:1,color:c.value}},color:e=>b[e.dataIndex]},emphasis:{scaleSize:15}}]}return(()=>{let e=0;const t=[];Object.entries(l.value).forEach(([l,a])=>{e+=a,t.push({name:l,value:a})}),x.title=h(e),x.series=w(t)})(),(e,l)=>(y(),v("div",t,[g(m,{type:"pie",height:"100%",option:f(x)},null,8,["option"])]))}}),h={class:"h-full"},w=c({__name:"details-uri",props:{data:{default:()=>[]}},setup(e){const t=u(e,"data"),{t:l}=d(),a=p("--color-bg-2"),o=p("--chart-tooltip-bg-color"),i=p("--color-text-1"),n=p("--color-text-2"),s=p("--color-border"),c=_({backgroundColor:a.value,tooltip:{trigger:"item",axisPointer:{type:"shadow",label:{color:"#fff",fontSize:"26"}},backgroundColor:o.value,borderColor:"transparent",textStyle:{color:"#c7c7c7"},formatter(e){const t=e;return`
${t.marker} ${r(t.seriesName||"")}
\n\t\t\t
${l("Waf.Report.index_16",[t.data])}
`}},legend:{top:"0%",data:t.value.slice(0,4).map(e=>e.name),textStyle:{fontSize:12,color:n.value},icon:"rect"},grid:{top:60,left:60,right:0,bottom:50},xAxis:[{type:"category",axisLabel:{color:i.value,fontSize:14,fontWeight:"bold"},data:[l("Waf.Report.index_15")]}],yAxis:[{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitNumber:4,axisLabel:{color:n.value},splitLine:{lineStyle:{type:"dashed",color:s.value}}}],color:["#4fa8f9","#6ec71e","#f56e6a","#fc8b40","#818af8","#31c9d7","#f35e7a","#ab7aee","#14d68b","#cde5ff"],series:t.value.slice(0,4).map(e=>({name:e.name,type:"bar",label:{show:!0,position:"top"},barMaxWidth:60,data:[e.value]}))});return(e,t)=>(y(),v("div",h,[g(m,{type:"bar",height:"100%",option:f(c)},null,8,["option"])]))}}),j={class:"p-20px"},S={class:"flex h-280px mb-16px"},k={class:"w-410px"},W={class:"w-500px"};e("default",c({__name:"details",props:{row:{}},setup(e){const t=u(e,"row"),{t:c}=d(),{table:p,columns:_}=l([{key:"time_localtime",title:c("Waf.Report.index_13"),width:140},{key:"server_name",title:c("Waf.Report.index_14"),ellipsis:{tooltip:!0}},{key:"ip_country",title:c("Waf.Report.index_8"),render:e=>e.ip_country||"--"},{key:"URI",title:"URI",ellipsis:{tooltip:!0},render:e=>r(e.uri)||"--"},{key:"filter_rule",title:c("Waf.Report.index_34"),width:140},a({width:80,options:e=>[{label:c("Public.Btn.Details"),onClick:async()=>{const{message:t}=await n({id:e.id});i(t)&&t.length>0&&s(t[0])}}]})]);p.data=t.value.data.list;const m=t.value.data.uri.map(e=>({name:e[0],value:e[1]}));return(e,l)=>{const a=o;return y(),v("div",j,[x("div",S,[x("div",k,[g(b,{data:f(t).data.type},null,8,["data"])]),x("div",W,[g(w,{data:f(m)},null,8,["data"])])]),g(a,{"max-height":300,data:f(p).data,columns:f(_)},null,8,["data","columns"])])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./index-legacy80.js?v=1762424784323","./tools-legacy2.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy15.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./rules-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./index-legacy99.js?v=1762424784323"],function(e,t){"use strict";var l,a,o,r,i,n,s,c,u,d,p,_,v,y,g,f,x,m;return{setters:[e=>{l=e.c,a=e.f,o=e.h},e=>{r=e.dd,i=e.w},e=>{n=e.g},e=>{s=e.s},e=>{c=e.k,u=e.t,d=e.P,p=e.X,_=e.aG,v=e.R,y=e.V,g=e.W,f=e.U,x=e.S},e=>{m=e._},null,null,null,null,null,null,null,null,null],execute:function(){const t={class:"h-full"},b=c({__name:"details-count",props:{data:{default:()=>({})}},setup(e){const l=u(e,"data"),{t:a}=d(),o=p("--color-bg-2"),r=p("--chart-tooltip-bg-color"),i=p("--color-text-1"),n=p("--color-text-2"),s=p("--color-text-3"),c=p("--color-border"),x=_({backgroundColor:o.value,title:h(),tooltip:{trigger:"item",confine:!0,backgroundColor:r.value,borderColor:"transparent",textStyle:{color:"#c7c7c7"},formatter(e){const t=e;return`${t.marker} ${t.name}: ${t.value} (${t.percent}%)`}},series:w()}),b=["#6ec71e","#4885FF","#fc8b40","#818af8","#31c9d7","#f35e7a","#ab7aee","#14d68b","#cde5ff"];function h(e=0){return{text:a("Waf.Report.index_17"),textStyle:{color:i.value,fontSize:17},subtext:`${e}`,subtextStyle:{color:n.value,fontSize:15},itemGap:20,left:"center",top:"42%"}}function w(e=[]){return[{type:"pie",data:e,radius:["50%","60%"],center:["50%","50%"],clockwise:!0,avoidLabelOverlap:!0,label:{show:!0,position:"outside",color:s.value,lineHeight:18,formatter:e=>""!==e.name?0===e.percent?"":a("Waf.Overview.index_33",[e.name,e.value,e.percent]):""},labelLine:{length:30,length2:30,lineStyle:{width:1,color:c.value}},itemStyle:{labelLine:{length:30,length2:30,lineStyle:{width:1,color:c.value}},color:e=>b[e.dataIndex]},emphasis:{scaleSize:15}}]}return(()=>{let e=0;const t=[];Object.entries(l.value).forEach(([l,a])=>{e+=a,t.push({name:l,value:a})}),x.title=h(e),x.series=w(t)})(),(e,l)=>(y(),v("div",t,[g(m,{type:"pie",height:"100%",option:f(x)},null,8,["option"])]))}}),h={class:"h-full"},w=c({__name:"details-uri",props:{data:{default:()=>[]}},setup(e){const t=u(e,"data"),{t:l}=d(),a=p("--color-bg-2"),o=p("--chart-tooltip-bg-color"),i=p("--color-text-1"),n=p("--color-text-2"),s=p("--color-border"),c=_({backgroundColor:a.value,tooltip:{trigger:"item",axisPointer:{type:"shadow",label:{color:"#fff",fontSize:"26"}},backgroundColor:o.value,borderColor:"transparent",textStyle:{color:"#c7c7c7"},formatter(e){const t=e;return`
${t.marker} ${r(t.seriesName||"")}
\n\t\t\t
${l("Waf.Report.index_16",[t.data])}
`}},legend:{top:"0%",data:t.value.slice(0,4).map(e=>e.name),textStyle:{fontSize:12,color:n.value},icon:"rect"},grid:{top:60,left:60,right:0,bottom:50},xAxis:[{type:"category",axisLabel:{color:i.value,fontSize:14,fontWeight:"bold"},data:[l("Waf.Report.index_15")]}],yAxis:[{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitNumber:4,axisLabel:{color:n.value},splitLine:{lineStyle:{type:"dashed",color:s.value}}}],color:["#4fa8f9","#6ec71e","#f56e6a","#fc8b40","#818af8","#31c9d7","#f35e7a","#ab7aee","#14d68b","#cde5ff"],series:t.value.slice(0,4).map(e=>({name:e.name,type:"bar",label:{show:!0,position:"top"},barMaxWidth:60,data:[e.value]}))});return(e,t)=>(y(),v("div",h,[g(m,{type:"bar",height:"100%",option:f(c)},null,8,["option"])]))}}),j={class:"p-20px"},S={class:"flex h-280px mb-16px"},k={class:"w-410px"},W={class:"w-500px"};e("default",c({__name:"details",props:{row:{}},setup(e){const t=u(e,"row"),{t:c}=d(),{table:p,columns:_}=l([{key:"time_localtime",title:c("Waf.Report.index_13"),width:140},{key:"server_name",title:c("Waf.Report.index_14"),ellipsis:{tooltip:!0}},{key:"ip_country",title:c("Waf.Report.index_8"),render:e=>e.ip_country||"--"},{key:"URI",title:"URI",ellipsis:{tooltip:!0},render:e=>r(e.uri)||"--"},{key:"filter_rule",title:c("Waf.Report.index_34"),width:140},a({width:80,options:e=>[{label:c("Public.Btn.Details"),onClick:async()=>{const{message:t}=await n({id:e.id});i(t)&&t.length>0&&s(t[0])}}]})]);p.data=t.value.data.list;const m=t.value.data.uri.map(e=>({name:e[0],value:e[1]}));return(e,l)=>{const a=o;return y(),v("div",j,[x("div",S,[x("div",k,[g(b,{data:f(t).data.type},null,8,["data"])]),x("div",W,[g(w,{data:f(m)},null,8,["data"])])]),g(a,{"max-height":300,data:f(p).data,columns:f(_)},null,8,["data","columns"])])}}}))}}}); diff --git a/BTPanel/static/vite/js/details-legacy3.js b/BTPanel/static/vite/js/details-legacy3.js index e1dd057e..2baf6110 100644 --- a/BTPanel/static/vite/js/details-legacy3.js +++ b/BTPanel/static/vite/js/details-legacy3.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./index-legacy80.js?v=1760428868419","./tools-legacy2.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./rules-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./index-legacy99.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy15.js?v=1760428868419"],function(e,t){"use strict";var l,i,s,n,u,a,_,c,r,p,d,y,o;return{setters:[e=>{l=e.c,i=e.f,s=e.h},e=>{n=e.dd,u=e.w},e=>{a=e.g},e=>{_=e.s},e=>{c=e.k,r=e.P,p=e.R,d=e.V,y=e.W,o=e.U},null,null,null,null,null,null,null,null,null,null],execute:function(){const t={class:"p-20px"};e("default",c({__name:"details",props:{list:{}},setup(e){const c=e,{t:g}=r(),{table:j,columns:v}=l([{key:"time_localtime",title:g("Waf.Report.index_13"),width:140},{key:"ip",title:g("Waf.Report.index_7"),width:120},{key:"server_name",title:g("Waf.Report.index_14"),width:120},{key:"ip_country",title:g("Waf.Report.index_8"),width:140,render:e=>e.ip_country||"--"},{key:"uri",title:"URI",ellipsis:{tooltip:!0},render:e=>n(e.uri)},{key:"filter_rule",title:g("Waf.Report.index_1"),width:140},i({width:80,options:e=>[{label:g("Public.Btn.Details"),onClick:async()=>{const{message:t}=await a({id:e.id});u(t)&&t.length>0&&_(t[0])}}]})]);return j.data=c.list,(e,l)=>{const i=s;return d(),p("div",t,[y(i,{"max-height":550,data:o(j).data,columns:o(v)},null,8,["data","columns"])])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./index-legacy80.js?v=1762424784323","./tools-legacy2.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./rules-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./index-legacy99.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy15.js?v=1762424784323"],function(e,t){"use strict";var l,i,s,n,u,a,_,c,r,p,d,y,o;return{setters:[e=>{l=e.c,i=e.f,s=e.h},e=>{n=e.dd,u=e.w},e=>{a=e.g},e=>{_=e.s},e=>{c=e.k,r=e.P,p=e.R,d=e.V,y=e.W,o=e.U},null,null,null,null,null,null,null,null,null,null],execute:function(){const t={class:"p-20px"};e("default",c({__name:"details",props:{list:{}},setup(e){const c=e,{t:g}=r(),{table:j,columns:v}=l([{key:"time_localtime",title:g("Waf.Report.index_13"),width:140},{key:"ip",title:g("Waf.Report.index_7"),width:120},{key:"server_name",title:g("Waf.Report.index_14"),width:120},{key:"ip_country",title:g("Waf.Report.index_8"),width:140,render:e=>e.ip_country||"--"},{key:"uri",title:"URI",ellipsis:{tooltip:!0},render:e=>n(e.uri)},{key:"filter_rule",title:g("Waf.Report.index_1"),width:140},i({width:80,options:e=>[{label:g("Public.Btn.Details"),onClick:async()=>{const{message:t}=await a({id:e.id});u(t)&&t.length>0&&_(t[0])}}]})]);return j.data=c.list,(e,l)=>{const i=s;return d(),p("div",t,[y(i,{"max-height":550,data:o(j).data,columns:o(v)},null,8,["data","columns"])])}}}))}}}); diff --git a/BTPanel/static/vite/js/details-legacy4.js b/BTPanel/static/vite/js/details-legacy4.js index 64b90c7f..371471c1 100644 --- a/BTPanel/static/vite/js/details-legacy4.js +++ b/BTPanel/static/vite/js/details-legacy4.js @@ -1 +1 @@ -System.register(["./index-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419"],function(e,t){"use strict";var a,i,l,n,d,o,s,p,c,r,x,v,u,m,g,b,f,h,y,_,k,H,U,w,$,C,j,z,I,M,q;return{setters:[e=>{a=e.a},e=>{i=e.k,l=e.P,n=e.r,d=e.c,o=e.aq,s=e.a5,p=e.R,c=e.V,r=e.S,x=e.W,v=e.a4,u=e.F,m=e.O,g=e.H,b=e.U,f=e.ak,h=e.a3,y=e.ay,_=e.I,k=e.j},e=>{H=e.a8,U=e.ga,w=e.d,$=e.gb,C=e.g9,j=e.O,z=e.p},e=>{I=e.q},e=>{M=e._,q=e.aC}],execute:function(){var t=document.createElement("style");t.textContent='.card[data-v-76523929]{background:var(--home-update-detail-bg);margin-bottom:20px;border-radius:4px;padding:20px 24px}.version[data-v-76523929]{position:relative;margin-left:95px;padding:5px 0 0 2px;border-left:5px solid #e1e1e1}.version .active[data-v-76523929]{position:absolute;left:-10px;top:21px;display:block;width:15px;height:15px;margin-bottom:10px;background-color:#20a53a;border-radius:50%}.version .active[data-v-76523929]:after{content:"";position:relative;top:5px;left:5px;display:block;height:5px;width:5px;border-radius:50%;background-color:#fff}.version .date[data-v-76523929]{position:absolute;left:-90px;top:13px;line-height:30px;font-size:13px;color:var(--home-update-detail-date)}.version .text[data-v-76523929]{margin-top:7px;margin-left:5px;margin-bottom:5px;padding-left:15px;line-height:32px;border-bottom:1px solid #ececec;font-size:15px;color:#20a53a}.version .content[data-v-76523929]{line-height:24px;font-size:12px;min-height:40px;padding-left:20px;color:#888}\n/*$vite$:1*/',document.head.appendChild(t);const B={class:"w-650px"},L={class:"card"},O={class:"mb-12px font-bold text-18px text-center"},P={class:"min-h-172px text-13px"},S={class:"card"},T={class:"mb-10px text-16px text-center"},E={class:"h-180px overflow-auto"},F={class:"date"},R={class:"text"},V=["innerHTML"],W={class:"font-bold"},A={class:"text-error"};e("B",z(i({__name:"details",emits:["close"],setup(e,{emit:t}){const i=t,{t:z}=l(),D=n(!1),G=n(5),J=d(()=>G.value>0),K=d(()=>!D.value),N=n([]),Q=n([]),{height:X}=o(),Y=d(()=>X.value?.9*X.value+"px":"auto"),Z=()=>{const e=setInterval(()=>{G.value--,G.value<=0&&clearInterval(e)},1e3)},ee=()=>{i("close")},te=()=>{I({title:z("Home.Update.index_24"),content:z("Home.Update.index_25"),onConfirm:async()=>{await $(),await C(),j()}})};return(async()=>{const{message:e}=await U();w(e)&&(N.value=e.beta_ps.split("
").map(e=>e.trim()),Q.value=e.list,Z())})(),(e,t)=>{const i=s("i18n-t"),l=M,n=q,d=a;return c(),p("div",B,[r("div",{class:"p-20px overflow-auto",style:_({maxHeight:b(Y)})},[r("div",L,[r("div",O,v(e.$t("Home.Update.index_20")),1),r("ul",P,[(c(!0),p(u,null,m(b(N),(e,t)=>(c(),p("li",{key:e,class:g(["indent--15px pl-15px leading-20px",{"mt-8px":0!==t}])},v(e),3))),128))])]),r("div",S,[r("div",T,v(e.$t("Home.Update.index_21")),1),r("div",E,[(c(!0),p(u,null,m(b(Q),e=>(c(),p("div",{key:e.version,class:"version"},[t[1]||(t[1]=r("div",{class:"active"},null,-1)),r("div",F,v(b(H)(e.uptime,"yyyy-MM-dd")),1),r("div",R,v(e.version),1),r("div",{class:"content",innerHTML:e.upmsg},null,8,V)]))),128))])]),r("div",null,[x(l,{checked:b(D),"onUpdate:checked":t[0]||(t[0]=e=>f(D)?D.value=e:null),disabled:b(J)},{default:h(()=>[x(i,{tag:"div",class:"text-14px",keypath:"Home.Update.index_23_1"},y({title:h(()=>[r("span",W,v(e.$t("Home.Update.index_23_2")),1)]),_:2},[b(G)>0?{name:"wait",fn:h(()=>[r("span",A,v(e.$t("Home.Update.index_23_3",[b(G)])),1)]),key:"0"}:void 0]),1024)]),_:1},8,["checked","disabled"])])],4),x(d,null,{default:h(()=>[x(n,{class:"cancel-btn",size:"small",color:"#cbcbcb",onClick:ee},{default:h(()=>[k(v(e.$t("Public.Btn.Cancel")),1)]),_:1}),x(n,{type:"primary",size:"small",disabled:b(K),onClick:te},{default:h(()=>[k(v(e.$t("Home.Update.index_19")),1)]),_:1},8,["disabled"])]),_:1})])}}}),[["__scopeId","data-v-76523929"]]))}}}); +System.register(["./index-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323"],function(e,t){"use strict";var a,i,l,n,d,o,s,p,c,r,x,v,u,m,g,b,f,h,y,_,k,H,U,w,$,C,j,z,I,M,q;return{setters:[e=>{a=e.a},e=>{i=e.k,l=e.P,n=e.r,d=e.c,o=e.aq,s=e.a5,p=e.R,c=e.V,r=e.S,x=e.W,v=e.a4,u=e.F,m=e.O,g=e.H,b=e.U,f=e.ak,h=e.a3,y=e.ay,_=e.I,k=e.j},e=>{H=e.a8,U=e.g6,w=e.d,$=e.g7,C=e.g5,j=e.O,z=e.p},e=>{I=e.q},e=>{M=e._,q=e.aC}],execute:function(){var t=document.createElement("style");t.textContent='.card[data-v-76523929]{background:var(--home-update-detail-bg);margin-bottom:20px;border-radius:4px;padding:20px 24px}.version[data-v-76523929]{position:relative;margin-left:95px;padding:5px 0 0 2px;border-left:5px solid #e1e1e1}.version .active[data-v-76523929]{position:absolute;left:-10px;top:21px;display:block;width:15px;height:15px;margin-bottom:10px;background-color:#20a53a;border-radius:50%}.version .active[data-v-76523929]:after{content:"";position:relative;top:5px;left:5px;display:block;height:5px;width:5px;border-radius:50%;background-color:#fff}.version .date[data-v-76523929]{position:absolute;left:-90px;top:13px;line-height:30px;font-size:13px;color:var(--home-update-detail-date)}.version .text[data-v-76523929]{margin-top:7px;margin-left:5px;margin-bottom:5px;padding-left:15px;line-height:32px;border-bottom:1px solid #ececec;font-size:15px;color:#20a53a}.version .content[data-v-76523929]{line-height:24px;font-size:12px;min-height:40px;padding-left:20px;color:#888}\n/*$vite$:1*/',document.head.appendChild(t);const B={class:"w-650px"},L={class:"card"},O={class:"mb-12px font-bold text-18px text-center"},P={class:"min-h-172px text-13px"},S={class:"card"},T={class:"mb-10px text-16px text-center"},E={class:"h-180px overflow-auto"},F={class:"date"},R={class:"text"},V=["innerHTML"],W={class:"font-bold"},A={class:"text-error"};e("B",z(i({__name:"details",emits:["close"],setup(e,{emit:t}){const i=t,{t:z}=l(),D=n(!1),G=n(5),J=d(()=>G.value>0),K=d(()=>!D.value),N=n([]),Q=n([]),{height:X}=o(),Y=d(()=>X.value?.9*X.value+"px":"auto"),Z=()=>{const e=setInterval(()=>{G.value--,G.value<=0&&clearInterval(e)},1e3)},ee=()=>{i("close")},te=()=>{I({title:z("Home.Update.index_24"),content:z("Home.Update.index_25"),onConfirm:async()=>{await $(),await C(),j()}})};return(async()=>{const{message:e}=await U();w(e)&&(N.value=e.beta_ps.split("
").map(e=>e.trim()),Q.value=e.list,Z())})(),(e,t)=>{const i=s("i18n-t"),l=M,n=q,d=a;return c(),p("div",B,[r("div",{class:"p-20px overflow-auto",style:_({maxHeight:b(Y)})},[r("div",L,[r("div",O,v(e.$t("Home.Update.index_20")),1),r("ul",P,[(c(!0),p(u,null,m(b(N),(e,t)=>(c(),p("li",{key:e,class:g(["indent--15px pl-15px leading-20px",{"mt-8px":0!==t}])},v(e),3))),128))])]),r("div",S,[r("div",T,v(e.$t("Home.Update.index_21")),1),r("div",E,[(c(!0),p(u,null,m(b(Q),e=>(c(),p("div",{key:e.version,class:"version"},[t[1]||(t[1]=r("div",{class:"active"},null,-1)),r("div",F,v(b(H)(e.uptime,"yyyy-MM-dd")),1),r("div",R,v(e.version),1),r("div",{class:"content",innerHTML:e.upmsg},null,8,V)]))),128))])]),r("div",null,[x(l,{checked:b(D),"onUpdate:checked":t[0]||(t[0]=e=>f(D)?D.value=e:null),disabled:b(J)},{default:h(()=>[x(i,{tag:"div",class:"text-14px",keypath:"Home.Update.index_23_1"},y({title:h(()=>[r("span",W,v(e.$t("Home.Update.index_23_2")),1)]),_:2},[b(G)>0?{name:"wait",fn:h(()=>[r("span",A,v(e.$t("Home.Update.index_23_3",[b(G)])),1)]),key:"0"}:void 0]),1024)]),_:1},8,["checked","disabled"])])],4),x(d,null,{default:h(()=>[x(n,{class:"cancel-btn",size:"small",color:"#cbcbcb",onClick:ee},{default:h(()=>[k(v(e.$t("Public.Btn.Cancel")),1)]),_:1}),x(n,{type:"primary",size:"small",disabled:b(K),onClick:te},{default:h(()=>[k(v(e.$t("Home.Update.index_19")),1)]),_:1},8,["disabled"])]),_:1})])}}}),[["__scopeId","data-v-76523929"]]))}}}); diff --git a/BTPanel/static/vite/js/details.js b/BTPanel/static/vite/js/details.js index 08243f10..0a5aae98 100644 --- a/BTPanel/static/vite/js/details.js +++ b/BTPanel/static/vite/js/details.js @@ -1 +1 @@ -import{_ as a}from"./index179.js?v=1760428868419";import{a6 as l,dd as e,a7 as s,p as t}from"./page_layout.js?v=1760428868419";import{a as n,b as i,h as o}from"./tools2.js?v=1760428868419";import{d as c}from"./public.js?v=1760428868419";import{k as d,t as f,P as u,c as p,r as _,R as r,V as m,W as b,S as x,a3 as v,j as g,a4 as k,U as j}from"./vue.js?v=1760428868419";import{dc as W}from"./naive.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./common.js?v=1760428868419";import"./rules.js?v=1760428868419";const w={class:"p-20px"},B={class:"flex justify-between"},h={class:"flex justify-between"},y={class:"mt-20px"},$={class:"mt-10px"},C=t(d({__name:"details",props:{row:{}},setup(t){const d=f(t,"row"),{t:C}=u(),H=p(()=>d.value.incoming_value.indexOf('b"')>-1?d.value.incoming_value.substring(2,d.value.incoming_value.length-1).split(" >> "):d.value.incoming_value.split(" >> ")),P=p(()=>H.value[1]||C("Waf.Block.index_72")),T=p(()=>H.value[2]||C("Waf.Block.index_72")),U=()=>{n(d.value)},A=()=>{i(d.value,!1)},I=_(""),{loading:L,setLoading:O}=c();return(async()=>{try{O(!0);const{message:a}=await o({path:d.value.http_log});I.value=a.result}finally{O(!1)}})(),(t,n)=>{const i=l,o=W,c=s,f=a;return m(),r("div",w,[b(c,{column:2,bordered:!0,"label-placement":"left","label-style":{width:"160px"},"content-style":{fontWeight:"bold"}},{default:v(()=>[b(i,{label:t.$t("Waf.Block.index_66")},{default:v(()=>[g(k(j(e)(j(d).time_localtime)),1)]),_:1},8,["label"]),b(i,{label:t.$t("Waf.Block.index_67")},{default:v(()=>[x("a",{class:"bt-link",href:"javascript:;",onClick:U},k(j(e)(j(d).ip)),1)]),_:1},8,["label"]),b(i,{label:t.$t("Waf.Block.index_15")},{default:v(()=>[g(k(j(e)(j(d).type)),1)]),_:1},8,["label"]),b(i,{label:t.$t("Waf.Block.index_21")},{default:v(()=>[g(k(j(e)(j(d).filter_rule)),1)]),_:1},8,["label"]),b(i,{label:t.$t("Waf.Block.index_68"),span:2},{default:v(()=>[x("div",B,[b(o,{class:"w-480px"},{default:v(()=>[g(k(j(e)(j(d).uri)),1)]),_:1}),x("a",{class:"bt-link",href:"javascript:;",onClick:A},k(t.$t("Waf.Block.index_23")),1)])]),_:1},8,["label"]),b(i,{label:"User-Agent",span:2},{default:v(()=>[b(o,{class:"w-570px"},{default:v(()=>[g(k(j(e)(j(d).user_agent)),1)]),_:1})]),_:1}),b(i,{label:t.$t("Waf.Block.index_69"),span:2},{default:v(()=>[x("div",h,[b(o,{class:"w-480px"},{default:v(()=>[g(k(j(e)(j(H)[0])),1)]),_:1})])]),_:1},8,["label"]),b(i,{label:t.$t("Waf.Block.index_70"),span:2},{default:v(()=>[b(o,{class:"w-570px"},{default:v(()=>[g(k(j(e)(j(P))),1)]),_:1})]),_:1},8,["label"]),b(i,{label:t.$t("Waf.Block.index_71"),span:2},{default:v(()=>[b(o,{class:"w-570px"},{default:v(()=>[g(k(j(e)(j(T))),1)]),_:1})]),_:1},8,["label"])]),_:1}),x("div",y,[n[0]||(n[0]=x("div",{class:"text-14px font-bold"},"HTTP",-1)),x("div",$,[b(f,{class:"h-260px",lang:"http",loading:j(L),content:j(I)},null,8,["loading","content"])])])])}}}),[["__scopeId","data-v-f3ca0370"]]);export{C as default}; +import{_ as a}from"./index177.js?v=1762424784323";import{a6 as l,dd as e,a7 as s,p as t}from"./page_layout.js?v=1762424784323";import{a as n,b as i,h as o}from"./tools2.js?v=1762424784323";import{d as c}from"./public.js?v=1762424784323";import{k as d,t as f,P as u,c as p,r as _,R as r,V as m,W as b,S as x,a3 as v,j as g,a4 as k,U as j}from"./vue.js?v=1762424784323";import{dc as W}from"./naive.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./common.js?v=1762424784323";import"./rules.js?v=1762424784323";const w={class:"p-20px"},B={class:"flex justify-between"},h={class:"flex justify-between"},y={class:"mt-20px"},$={class:"mt-10px"},C=t(d({__name:"details",props:{row:{}},setup(t){const d=f(t,"row"),{t:C}=u(),H=p(()=>d.value.incoming_value.indexOf('b"')>-1?d.value.incoming_value.substring(2,d.value.incoming_value.length-1).split(" >> "):d.value.incoming_value.split(" >> ")),P=p(()=>H.value[1]||C("Waf.Block.index_72")),T=p(()=>H.value[2]||C("Waf.Block.index_72")),U=()=>{n(d.value)},A=()=>{i(d.value,!1)},I=_(""),{loading:L,setLoading:O}=c();return(async()=>{try{O(!0);const{message:a}=await o({path:d.value.http_log});I.value=a.result}finally{O(!1)}})(),(t,n)=>{const i=l,o=W,c=s,f=a;return m(),r("div",w,[b(c,{column:2,bordered:!0,"label-placement":"left","label-style":{width:"160px"},"content-style":{fontWeight:"bold"}},{default:v(()=>[b(i,{label:t.$t("Waf.Block.index_66")},{default:v(()=>[g(k(j(e)(j(d).time_localtime)),1)]),_:1},8,["label"]),b(i,{label:t.$t("Waf.Block.index_67")},{default:v(()=>[x("a",{class:"bt-link",href:"javascript:;",onClick:U},k(j(e)(j(d).ip)),1)]),_:1},8,["label"]),b(i,{label:t.$t("Waf.Block.index_15")},{default:v(()=>[g(k(j(e)(j(d).type)),1)]),_:1},8,["label"]),b(i,{label:t.$t("Waf.Block.index_21")},{default:v(()=>[g(k(j(e)(j(d).filter_rule)),1)]),_:1},8,["label"]),b(i,{label:t.$t("Waf.Block.index_68"),span:2},{default:v(()=>[x("div",B,[b(o,{class:"w-480px"},{default:v(()=>[g(k(j(e)(j(d).uri)),1)]),_:1}),x("a",{class:"bt-link",href:"javascript:;",onClick:A},k(t.$t("Waf.Block.index_23")),1)])]),_:1},8,["label"]),b(i,{label:"User-Agent",span:2},{default:v(()=>[b(o,{class:"w-570px"},{default:v(()=>[g(k(j(e)(j(d).user_agent)),1)]),_:1})]),_:1}),b(i,{label:t.$t("Waf.Block.index_69"),span:2},{default:v(()=>[x("div",h,[b(o,{class:"w-480px"},{default:v(()=>[g(k(j(e)(j(H)[0])),1)]),_:1})])]),_:1},8,["label"]),b(i,{label:t.$t("Waf.Block.index_70"),span:2},{default:v(()=>[b(o,{class:"w-570px"},{default:v(()=>[g(k(j(e)(j(P))),1)]),_:1})]),_:1},8,["label"]),b(i,{label:t.$t("Waf.Block.index_71"),span:2},{default:v(()=>[b(o,{class:"w-570px"},{default:v(()=>[g(k(j(e)(j(T))),1)]),_:1})]),_:1},8,["label"])]),_:1}),x("div",y,[n[0]||(n[0]=x("div",{class:"text-14px font-bold"},"HTTP",-1)),x("div",$,[b(f,{class:"h-260px",lang:"http",loading:j(L),content:j(I)},null,8,["loading","content"])])])])}}}),[["__scopeId","data-v-f3ca0370"]]);export{C as default}; diff --git a/BTPanel/static/vite/js/details2.js b/BTPanel/static/vite/js/details2.js index b0a976fc..99ae977d 100644 --- a/BTPanel/static/vite/js/details2.js +++ b/BTPanel/static/vite/js/details2.js @@ -1 +1 @@ -import{c as e,f as t,h as a}from"./public.js?v=1760428868419";import{dd as o,w as l}from"./page_layout.js?v=1760428868419";import{g as r}from"./index80.js?v=1760428868419";import{s as i}from"./tools2.js?v=1760428868419";import{k as s,t as n,P as c,X as p,aG as u,R as d,V as m,W as _,U as f,S as v}from"./vue.js?v=1760428868419";import{_ as x}from"./index.vue_vue_type_script_setup_true_lang15.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./rules.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import"./index99.js?v=1760428868419";const b={class:"h-full"},h=s({__name:"details-count",props:{data:{default:()=>({})}},setup(e){const t=n(e,"data"),{t:a}=c(),o=p("--color-bg-2"),l=p("--chart-tooltip-bg-color"),r=p("--color-text-1"),i=p("--color-text-2"),s=p("--color-text-3"),v=p("--color-border"),h=u({backgroundColor:o.value,title:g(),tooltip:{trigger:"item",confine:!0,backgroundColor:l.value,borderColor:"transparent",textStyle:{color:"#c7c7c7"},formatter(e){const t=e;return"".concat(t.marker," ").concat(t.name,": ").concat(t.value," (").concat(t.percent,"%)")}},series:w()}),y=["#6ec71e","#4885FF","#fc8b40","#818af8","#31c9d7","#f35e7a","#ab7aee","#14d68b","#cde5ff"];function g(e=0){return{text:a("Waf.Report.index_17"),textStyle:{color:r.value,fontSize:17},subtext:"".concat(e),subtextStyle:{color:i.value,fontSize:15},itemGap:20,left:"center",top:"42%"}}function w(e=[]){return[{type:"pie",data:e,radius:["50%","60%"],center:["50%","50%"],clockwise:!0,avoidLabelOverlap:!0,label:{show:!0,position:"outside",color:s.value,lineHeight:18,formatter:e=>""!==e.name?0===e.percent?"":a("Waf.Overview.index_33",[e.name,e.value,e.percent]):""},labelLine:{length:30,length2:30,lineStyle:{width:1,color:v.value}},itemStyle:{labelLine:{length:30,length2:30,lineStyle:{width:1,color:v.value}},color:e=>y[e.dataIndex]},emphasis:{scaleSize:15}}]}return(()=>{let e=0;const a=[];Object.entries(t.value).forEach(([t,o])=>{e+=o,a.push({name:t,value:o})}),h.title=g(e),h.series=w(a)})(),(e,t)=>(m(),d("div",b,[_(x,{type:"pie",height:"100%",option:f(h)},null,8,["option"])]))}}),y={class:"h-full"},g=s({__name:"details-uri",props:{data:{default:()=>[]}},setup(e){const t=n(e,"data"),{t:a}=c(),l=p("--color-bg-2"),r=p("--chart-tooltip-bg-color"),i=p("--color-text-1"),s=p("--color-text-2"),v=p("--color-border"),b=u({backgroundColor:l.value,tooltip:{trigger:"item",axisPointer:{type:"shadow",label:{color:"#fff",fontSize:"26"}},backgroundColor:r.value,borderColor:"transparent",textStyle:{color:"#c7c7c7"},formatter(e){const t=e;return'
'.concat(t.marker," ").concat(o(t.seriesName||""),"
\n\t\t\t
").concat(a("Waf.Report.index_16",[t.data]),"
")}},legend:{top:"0%",data:t.value.slice(0,4).map(e=>e.name),textStyle:{fontSize:12,color:s.value},icon:"rect"},grid:{top:60,left:60,right:0,bottom:50},xAxis:[{type:"category",axisLabel:{color:i.value,fontSize:14,fontWeight:"bold"},data:[a("Waf.Report.index_15")]}],yAxis:[{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitNumber:4,axisLabel:{color:s.value},splitLine:{lineStyle:{type:"dashed",color:v.value}}}],color:["#4fa8f9","#6ec71e","#f56e6a","#fc8b40","#818af8","#31c9d7","#f35e7a","#ab7aee","#14d68b","#cde5ff"],series:t.value.slice(0,4).map(e=>({name:e.name,type:"bar",label:{show:!0,position:"top"},barMaxWidth:60,data:[e.value]}))});return(e,t)=>(m(),d("div",y,[_(x,{type:"bar",height:"100%",option:f(b)},null,8,["option"])]))}}),w={class:"p-20px"},j={class:"flex h-280px mb-16px"},S={class:"w-410px"},k={class:"w-500px"},W=s({__name:"details",props:{row:{}},setup(s){const p=n(s,"row"),{t:u}=c(),{table:x,columns:b}=e([{key:"time_localtime",title:u("Waf.Report.index_13"),width:140},{key:"server_name",title:u("Waf.Report.index_14"),ellipsis:{tooltip:!0}},{key:"ip_country",title:u("Waf.Report.index_8"),render:e=>e.ip_country||"--"},{key:"URI",title:"URI",ellipsis:{tooltip:!0},render:e=>o(e.uri)||"--"},{key:"filter_rule",title:u("Waf.Report.index_34"),width:140},t({width:80,options:e=>[{label:u("Public.Btn.Details"),onClick:async()=>{const{message:t}=await r({id:e.id});l(t)&&t.length>0&&i(t[0])}}]})]);x.data=p.value.data.list;const y=p.value.data.uri.map(e=>({name:e[0],value:e[1]}));return(e,t)=>{const o=a;return m(),d("div",w,[v("div",j,[v("div",S,[_(h,{data:f(p).data.type},null,8,["data"])]),v("div",k,[_(g,{data:f(y)},null,8,["data"])])]),_(o,{"max-height":300,data:f(x).data,columns:f(b)},null,8,["data","columns"])])}}});export{W as default}; +import{c as e,f as t,h as a}from"./public.js?v=1762424784323";import{dd as o,w as l}from"./page_layout.js?v=1762424784323";import{g as r}from"./index80.js?v=1762424784323";import{s as i}from"./tools2.js?v=1762424784323";import{k as s,t as n,P as c,X as p,aG as u,R as d,V as m,W as _,U as f,S as v}from"./vue.js?v=1762424784323";import{_ as x}from"./index.vue_vue_type_script_setup_true_lang15.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./rules.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import"./index99.js?v=1762424784323";const b={class:"h-full"},h=s({__name:"details-count",props:{data:{default:()=>({})}},setup(e){const t=n(e,"data"),{t:a}=c(),o=p("--color-bg-2"),l=p("--chart-tooltip-bg-color"),r=p("--color-text-1"),i=p("--color-text-2"),s=p("--color-text-3"),v=p("--color-border"),h=u({backgroundColor:o.value,title:g(),tooltip:{trigger:"item",confine:!0,backgroundColor:l.value,borderColor:"transparent",textStyle:{color:"#c7c7c7"},formatter(e){const t=e;return"".concat(t.marker," ").concat(t.name,": ").concat(t.value," (").concat(t.percent,"%)")}},series:w()}),y=["#6ec71e","#4885FF","#fc8b40","#818af8","#31c9d7","#f35e7a","#ab7aee","#14d68b","#cde5ff"];function g(e=0){return{text:a("Waf.Report.index_17"),textStyle:{color:r.value,fontSize:17},subtext:"".concat(e),subtextStyle:{color:i.value,fontSize:15},itemGap:20,left:"center",top:"42%"}}function w(e=[]){return[{type:"pie",data:e,radius:["50%","60%"],center:["50%","50%"],clockwise:!0,avoidLabelOverlap:!0,label:{show:!0,position:"outside",color:s.value,lineHeight:18,formatter:e=>""!==e.name?0===e.percent?"":a("Waf.Overview.index_33",[e.name,e.value,e.percent]):""},labelLine:{length:30,length2:30,lineStyle:{width:1,color:v.value}},itemStyle:{labelLine:{length:30,length2:30,lineStyle:{width:1,color:v.value}},color:e=>y[e.dataIndex]},emphasis:{scaleSize:15}}]}return(()=>{let e=0;const a=[];Object.entries(t.value).forEach(([t,o])=>{e+=o,a.push({name:t,value:o})}),h.title=g(e),h.series=w(a)})(),(e,t)=>(m(),d("div",b,[_(x,{type:"pie",height:"100%",option:f(h)},null,8,["option"])]))}}),y={class:"h-full"},g=s({__name:"details-uri",props:{data:{default:()=>[]}},setup(e){const t=n(e,"data"),{t:a}=c(),l=p("--color-bg-2"),r=p("--chart-tooltip-bg-color"),i=p("--color-text-1"),s=p("--color-text-2"),v=p("--color-border"),b=u({backgroundColor:l.value,tooltip:{trigger:"item",axisPointer:{type:"shadow",label:{color:"#fff",fontSize:"26"}},backgroundColor:r.value,borderColor:"transparent",textStyle:{color:"#c7c7c7"},formatter(e){const t=e;return'
'.concat(t.marker," ").concat(o(t.seriesName||""),"
\n\t\t\t
").concat(a("Waf.Report.index_16",[t.data]),"
")}},legend:{top:"0%",data:t.value.slice(0,4).map(e=>e.name),textStyle:{fontSize:12,color:s.value},icon:"rect"},grid:{top:60,left:60,right:0,bottom:50},xAxis:[{type:"category",axisLabel:{color:i.value,fontSize:14,fontWeight:"bold"},data:[a("Waf.Report.index_15")]}],yAxis:[{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitNumber:4,axisLabel:{color:s.value},splitLine:{lineStyle:{type:"dashed",color:v.value}}}],color:["#4fa8f9","#6ec71e","#f56e6a","#fc8b40","#818af8","#31c9d7","#f35e7a","#ab7aee","#14d68b","#cde5ff"],series:t.value.slice(0,4).map(e=>({name:e.name,type:"bar",label:{show:!0,position:"top"},barMaxWidth:60,data:[e.value]}))});return(e,t)=>(m(),d("div",y,[_(x,{type:"bar",height:"100%",option:f(b)},null,8,["option"])]))}}),w={class:"p-20px"},j={class:"flex h-280px mb-16px"},S={class:"w-410px"},k={class:"w-500px"},W=s({__name:"details",props:{row:{}},setup(s){const p=n(s,"row"),{t:u}=c(),{table:x,columns:b}=e([{key:"time_localtime",title:u("Waf.Report.index_13"),width:140},{key:"server_name",title:u("Waf.Report.index_14"),ellipsis:{tooltip:!0}},{key:"ip_country",title:u("Waf.Report.index_8"),render:e=>e.ip_country||"--"},{key:"URI",title:"URI",ellipsis:{tooltip:!0},render:e=>o(e.uri)||"--"},{key:"filter_rule",title:u("Waf.Report.index_34"),width:140},t({width:80,options:e=>[{label:u("Public.Btn.Details"),onClick:async()=>{const{message:t}=await r({id:e.id});l(t)&&t.length>0&&i(t[0])}}]})]);x.data=p.value.data.list;const y=p.value.data.uri.map(e=>({name:e[0],value:e[1]}));return(e,t)=>{const o=a;return m(),d("div",w,[v("div",j,[v("div",S,[_(h,{data:f(p).data.type},null,8,["data"])]),v("div",k,[_(g,{data:f(y)},null,8,["data"])])]),_(o,{"max-height":300,data:f(x).data,columns:f(b)},null,8,["data","columns"])])}}});export{W as default}; diff --git a/BTPanel/static/vite/js/details3.js b/BTPanel/static/vite/js/details3.js index 61204092..cde7950b 100644 --- a/BTPanel/static/vite/js/details3.js +++ b/BTPanel/static/vite/js/details3.js @@ -1 +1 @@ -import{c as t,f as e,h as i}from"./public.js?v=1760428868419";import{dd as s,w as r}from"./page_layout.js?v=1760428868419";import{g as p}from"./index80.js?v=1760428868419";import{s as a}from"./tools2.js?v=1760428868419";import{k as o,P as _,R as n,V as l,W as u,U as m}from"./vue.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./rules.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import"./index99.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang15.js?v=1760428868419";const d={class:"p-20px"},c=o({__name:"details",props:{list:{}},setup(o){const c=o,{t:j}=_(),{table:x,columns:y}=t([{key:"time_localtime",title:j("Waf.Report.index_13"),width:140},{key:"ip",title:j("Waf.Report.index_7"),width:120},{key:"server_name",title:j("Waf.Report.index_14"),width:120},{key:"ip_country",title:j("Waf.Report.index_8"),width:140,render:t=>t.ip_country||"--"},{key:"uri",title:"URI",ellipsis:{tooltip:!0},render:t=>s(t.uri)},{key:"filter_rule",title:j("Waf.Report.index_1"),width:140},e({width:80,options:t=>[{label:j("Public.Btn.Details"),onClick:async()=>{const{message:e}=await p({id:t.id});r(e)&&e.length>0&&a(e[0])}}]})]);return x.data=c.list,(t,e)=>{const s=i;return l(),n("div",d,[u(s,{"max-height":550,data:m(x).data,columns:m(y)},null,8,["data","columns"])])}}});export{c as default}; +import{c as t,f as e,h as i}from"./public.js?v=1762424784323";import{dd as s,w as r}from"./page_layout.js?v=1762424784323";import{g as p}from"./index80.js?v=1762424784323";import{s as a}from"./tools2.js?v=1762424784323";import{k as o,P as _,R as n,V as l,W as u,U as m}from"./vue.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./rules.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import"./index99.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang15.js?v=1762424784323";const d={class:"p-20px"},c=o({__name:"details",props:{list:{}},setup(o){const c=o,{t:j}=_(),{table:x,columns:y}=t([{key:"time_localtime",title:j("Waf.Report.index_13"),width:140},{key:"ip",title:j("Waf.Report.index_7"),width:120},{key:"server_name",title:j("Waf.Report.index_14"),width:120},{key:"ip_country",title:j("Waf.Report.index_8"),width:140,render:t=>t.ip_country||"--"},{key:"uri",title:"URI",ellipsis:{tooltip:!0},render:t=>s(t.uri)},{key:"filter_rule",title:j("Waf.Report.index_1"),width:140},e({width:80,options:t=>[{label:j("Public.Btn.Details"),onClick:async()=>{const{message:e}=await p({id:t.id});r(e)&&e.length>0&&a(e[0])}}]})]);return x.data=c.list,(t,e)=>{const s=i;return l(),n("div",d,[u(s,{"max-height":550,data:m(x).data,columns:m(y)},null,8,["data","columns"])])}}});export{c as default}; diff --git a/BTPanel/static/vite/js/details4.js b/BTPanel/static/vite/js/details4.js index 8d7c93b9..d09b485e 100644 --- a/BTPanel/static/vite/js/details4.js +++ b/BTPanel/static/vite/js/details4.js @@ -1 +1 @@ -import{a}from"./index.js?v=1760428868419";import{k as e,P as s,r as t,c as l,aq as i,a5 as n,R as d,V as c,S as o,W as p,a4 as r,F as m,O as v,H as x,U as u,ak as _,a3 as b,ay as f,I as y,j as H}from"./vue.js?v=1760428868419";import{a8 as k,ga as g,d as U,gb as h,g9 as w,O as j,p as $}from"./page_layout.js?v=1760428868419";import{q as C}from"./public.js?v=1760428868419";import{_ as I,aC as M}from"./naive.js?v=1760428868419";const q={class:"w-650px"},z={class:"card"},B={class:"mb-12px font-bold text-18px text-center"},L={class:"min-h-172px text-13px"},O={class:"card"},P={class:"mb-10px text-16px text-center"},T={class:"h-180px overflow-auto"},F={class:"date"},R={class:"text"},S=["innerHTML"],V={class:"font-bold"},W={class:"text-error"},A=$(e({__name:"details",emits:["close"],setup(e,{emit:$}){const A=$,{t:D}=s(),E=t(!1),G=t(5),J=l(()=>G.value>0),K=l(()=>!E.value),N=t([]),Q=t([]),{height:X}=i(),Y=l(()=>X.value?"".concat(.9*X.value,"px"):"auto"),Z=()=>{const a=setInterval(()=>{G.value--,G.value<=0&&clearInterval(a)},1e3)},aa=()=>{A("close")},ea=()=>{C({title:D("Home.Update.index_24"),content:D("Home.Update.index_25"),onConfirm:async()=>{await h(),await w(),j()}})};return(async()=>{const{message:a}=await g();U(a)&&(N.value=a.beta_ps.split("
").map(a=>a.trim()),Q.value=a.list,Z())})(),(e,s)=>{const t=n("i18n-t"),l=I,i=M,g=a;return c(),d("div",q,[o("div",{class:"p-20px overflow-auto",style:y({maxHeight:u(Y)})},[o("div",z,[o("div",B,r(e.$t("Home.Update.index_20")),1),o("ul",L,[(c(!0),d(m,null,v(u(N),(a,e)=>(c(),d("li",{key:a,class:x(["indent--15px pl-15px leading-20px",{"mt-8px":0!==e}])},r(a),3))),128))])]),o("div",O,[o("div",P,r(e.$t("Home.Update.index_21")),1),o("div",T,[(c(!0),d(m,null,v(u(Q),a=>(c(),d("div",{key:a.version,class:"version"},[s[1]||(s[1]=o("div",{class:"active"},null,-1)),o("div",F,r(u(k)(a.uptime,"yyyy-MM-dd")),1),o("div",R,r(a.version),1),o("div",{class:"content",innerHTML:a.upmsg},null,8,S)]))),128))])]),o("div",null,[p(l,{checked:u(E),"onUpdate:checked":s[0]||(s[0]=a=>_(E)?E.value=a:null),disabled:u(J)},{default:b(()=>[p(t,{tag:"div",class:"text-14px",keypath:"Home.Update.index_23_1"},f({title:b(()=>[o("span",V,r(e.$t("Home.Update.index_23_2")),1)]),_:2},[u(G)>0?{name:"wait",fn:b(()=>[o("span",W,r(e.$t("Home.Update.index_23_3",[u(G)])),1)]),key:"0"}:void 0]),1024)]),_:1},8,["checked","disabled"])])],4),p(g,null,{default:b(()=>[p(i,{class:"cancel-btn",size:"small",color:"#cbcbcb",onClick:aa},{default:b(()=>[H(r(e.$t("Public.Btn.Cancel")),1)]),_:1}),p(i,{type:"primary",size:"small",disabled:u(K),onClick:ea},{default:b(()=>[H(r(e.$t("Home.Update.index_19")),1)]),_:1},8,["disabled"])]),_:1})])}}}),[["__scopeId","data-v-76523929"]]);export{A as B}; +import{a}from"./index.js?v=1762424784323";import{k as e,P as s,r as t,c as l,aq as i,a5 as n,R as d,V as c,S as o,W as p,a4 as r,F as m,O as v,H as x,U as u,ak as _,a3 as b,ay as f,I as y,j as H}from"./vue.js?v=1762424784323";import{a8 as k,g6 as g,d as U,g7 as h,g5 as w,O as j,p as $}from"./page_layout.js?v=1762424784323";import{q as C}from"./public.js?v=1762424784323";import{_ as I,aC as M}from"./naive.js?v=1762424784323";const q={class:"w-650px"},z={class:"card"},B={class:"mb-12px font-bold text-18px text-center"},L={class:"min-h-172px text-13px"},O={class:"card"},P={class:"mb-10px text-16px text-center"},T={class:"h-180px overflow-auto"},F={class:"date"},R={class:"text"},S=["innerHTML"],V={class:"font-bold"},W={class:"text-error"},A=$(e({__name:"details",emits:["close"],setup(e,{emit:$}){const A=$,{t:D}=s(),E=t(!1),G=t(5),J=l(()=>G.value>0),K=l(()=>!E.value),N=t([]),Q=t([]),{height:X}=i(),Y=l(()=>X.value?"".concat(.9*X.value,"px"):"auto"),Z=()=>{const a=setInterval(()=>{G.value--,G.value<=0&&clearInterval(a)},1e3)},aa=()=>{A("close")},ea=()=>{C({title:D("Home.Update.index_24"),content:D("Home.Update.index_25"),onConfirm:async()=>{await h(),await w(),j()}})};return(async()=>{const{message:a}=await g();U(a)&&(N.value=a.beta_ps.split("
").map(a=>a.trim()),Q.value=a.list,Z())})(),(e,s)=>{const t=n("i18n-t"),l=I,i=M,g=a;return c(),d("div",q,[o("div",{class:"p-20px overflow-auto",style:y({maxHeight:u(Y)})},[o("div",z,[o("div",B,r(e.$t("Home.Update.index_20")),1),o("ul",L,[(c(!0),d(m,null,v(u(N),(a,e)=>(c(),d("li",{key:a,class:x(["indent--15px pl-15px leading-20px",{"mt-8px":0!==e}])},r(a),3))),128))])]),o("div",O,[o("div",P,r(e.$t("Home.Update.index_21")),1),o("div",T,[(c(!0),d(m,null,v(u(Q),a=>(c(),d("div",{key:a.version,class:"version"},[s[1]||(s[1]=o("div",{class:"active"},null,-1)),o("div",F,r(u(k)(a.uptime,"yyyy-MM-dd")),1),o("div",R,r(a.version),1),o("div",{class:"content",innerHTML:a.upmsg},null,8,S)]))),128))])]),o("div",null,[p(l,{checked:u(E),"onUpdate:checked":s[0]||(s[0]=a=>_(E)?E.value=a:null),disabled:u(J)},{default:b(()=>[p(t,{tag:"div",class:"text-14px",keypath:"Home.Update.index_23_1"},f({title:b(()=>[o("span",V,r(e.$t("Home.Update.index_23_2")),1)]),_:2},[u(G)>0?{name:"wait",fn:b(()=>[o("span",W,r(e.$t("Home.Update.index_23_3",[u(G)])),1)]),key:"0"}:void 0]),1024)]),_:1},8,["checked","disabled"])])],4),p(g,null,{default:b(()=>[p(i,{class:"cancel-btn",size:"small",color:"#cbcbcb",onClick:aa},{default:b(()=>[H(r(e.$t("Public.Btn.Cancel")),1)]),_:1}),p(i,{type:"primary",size:"small",disabled:u(K),onClick:ea},{default:b(()=>[H(r(e.$t("Home.Update.index_19")),1)]),_:1},8,["disabled"])]),_:1})])}}}),[["__scopeId","data-v-76523929"]]);export{A as B}; diff --git a/BTPanel/static/vite/js/disable-legacy.js b/BTPanel/static/vite/js/disable-legacy.js index f89fd971..f062c66a 100644 --- a/BTPanel/static/vite/js/disable-legacy.js +++ b/BTPanel/static/vite/js/disable-legacy.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./site-legacy3.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,a){"use strict";var l,t,i,n,s,u,c,o,r,d,m,f,g,p,y,_,x,v,j,N,b,C,h,S;return{setters:[e=>{l=e.c,t=e.f,i=e.h,n=e._},e=>{s=e.k,u=e.P,c=e.r,o=e.R,r=e.V,d=e.S,m=e.W,f=e.aj,g=e.ak,p=e.U,y=e.a3,_=e.j,x=e.a4},e=>{v=e.w,j=e.m},e=>{N=e.w,b=e.x,C=e.y},e=>{h=e.au,S=e.aC},null,null],execute:function(){const a={class:"p-20px"},w={class:"flex mb-16px"},W={class:"flex-1 mr-16px"},k="disable_path";e("default",s({__name:"disable",props:{siteName:{default:""}},setup(e){const s=e,{t:$}=u(),P=c(""),B=async()=>{""!==P.value.trim()?(await C({siteName:s.siteName,ruleName:k,ruleValue:P.value}),P.value="",D()):j.error($("Waf.Site.Config.index_70"))},{table:U,columns:V,setLoading:A}=l([{key:"rule",title:$("Waf.Site.Config.index_66")},t({width:80,options:(e,a)=>[{label:$("Public.Btn.Del"),onClick:async()=>{await N({index:a,siteName:s.siteName,ruleName:k}),D()}}]})]),D=async()=>{try{A(!0);const{siteName:e}=s,{message:a}=await b({siteName:e,ruleName:k});v(a)&&(U.data=a.map(e=>({rule:e})))}finally{A(!1)}};return D(),(e,l)=>{const t=h,s=S,u=i,c=n;return r(),o("div",a,[d("div",w,[d("div",W,[m(t,{value:p(P),"onUpdate:value":l[0]||(l[0]=e=>g(P)?P.value=e:null),placeholder:e.$t("Waf.Site.Config.index_67"),onKeyup:f(B,["enter"])},null,8,["value","placeholder"])]),m(s,{type:"primary",onClick:B},{default:y(()=>[_(x(e.$t("Public.Btn.Add")),1)]),_:1})]),m(u,{"max-height":368,loading:p(U).loading,data:p(U).data,columns:p(V)},null,8,["loading","data","columns"]),m(c,{class:"mt-16px"},{default:y(()=>[d("li",null,x(e.$t("Waf.Site.Config.index_68")),1),d("li",null,x(e.$t("Waf.Site.Config.index_69")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./site-legacy3.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,a){"use strict";var l,t,i,n,s,u,c,o,r,d,m,f,g,p,y,_,x,v,j,N,b,C,h,S;return{setters:[e=>{l=e.c,t=e.f,i=e.h,n=e._},e=>{s=e.k,u=e.P,c=e.r,o=e.R,r=e.V,d=e.S,m=e.W,f=e.aj,g=e.ak,p=e.U,y=e.a3,_=e.j,x=e.a4},e=>{v=e.w,j=e.m},e=>{N=e.w,b=e.x,C=e.y},e=>{h=e.au,S=e.aC},null,null],execute:function(){const a={class:"p-20px"},w={class:"flex mb-16px"},W={class:"flex-1 mr-16px"},k="disable_path";e("default",s({__name:"disable",props:{siteName:{default:""}},setup(e){const s=e,{t:$}=u(),P=c(""),B=async()=>{""!==P.value.trim()?(await C({siteName:s.siteName,ruleName:k,ruleValue:P.value}),P.value="",D()):j.error($("Waf.Site.Config.index_70"))},{table:U,columns:V,setLoading:A}=l([{key:"rule",title:$("Waf.Site.Config.index_66")},t({width:80,options:(e,a)=>[{label:$("Public.Btn.Del"),onClick:async()=>{await N({index:a,siteName:s.siteName,ruleName:k}),D()}}]})]),D=async()=>{try{A(!0);const{siteName:e}=s,{message:a}=await b({siteName:e,ruleName:k});v(a)&&(U.data=a.map(e=>({rule:e})))}finally{A(!1)}};return D(),(e,l)=>{const t=h,s=S,u=i,c=n;return r(),o("div",a,[d("div",w,[d("div",W,[m(t,{value:p(P),"onUpdate:value":l[0]||(l[0]=e=>g(P)?P.value=e:null),placeholder:e.$t("Waf.Site.Config.index_67"),onKeyup:f(B,["enter"])},null,8,["value","placeholder"])]),m(s,{type:"primary",onClick:B},{default:y(()=>[_(x(e.$t("Public.Btn.Add")),1)]),_:1})]),m(u,{"max-height":368,loading:p(U).loading,data:p(U).data,columns:p(V)},null,8,["loading","data","columns"]),m(c,{class:"mt-16px"},{default:y(()=>[d("li",null,x(e.$t("Waf.Site.Config.index_68")),1),d("li",null,x(e.$t("Waf.Site.Config.index_69")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/disable.js b/BTPanel/static/vite/js/disable.js index fbd6687d..b5c9f670 100644 --- a/BTPanel/static/vite/js/disable.js +++ b/BTPanel/static/vite/js/disable.js @@ -1 +1 @@ -import{c as a,f as e,h as s,_ as l}from"./public.js?v=1760428868419";import{k as t,P as i,r as n,R as o,V as m,S as r,W as u,aj as d,ak as p,U as c,a3 as f,j as _,a4 as x}from"./vue.js?v=1760428868419";import{w as g,m as v}from"./page_layout.js?v=1760428868419";import{w as y,x as j,y as N}from"./site3.js?v=1760428868419";import{au as b,aC as C}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const h={class:"p-20px"},w={class:"flex mb-16px"},S={class:"flex-1 mr-16px"},W="disable_path",k=t({__name:"disable",props:{siteName:{default:""}},setup(t){const k=t,{t:$}=i(),P=n(""),B=async()=>{""!==P.value.trim()?(await N({siteName:k.siteName,ruleName:W,ruleValue:P.value}),P.value="",D()):v.error($("Waf.Site.Config.index_70"))},{table:U,columns:V,setLoading:A}=a([{key:"rule",title:$("Waf.Site.Config.index_66")},e({width:80,options:(a,e)=>[{label:$("Public.Btn.Del"),onClick:async()=>{await y({index:e,siteName:k.siteName,ruleName:W}),D()}}]})]),D=async()=>{try{A(!0);const{siteName:a}=k,{message:e}=await j({siteName:a,ruleName:W});g(e)&&(U.data=e.map(a=>({rule:a})))}finally{A(!1)}};return D(),(a,e)=>{const t=b,i=C,n=s,g=l;return m(),o("div",h,[r("div",w,[r("div",S,[u(t,{value:c(P),"onUpdate:value":e[0]||(e[0]=a=>p(P)?P.value=a:null),placeholder:a.$t("Waf.Site.Config.index_67"),onKeyup:d(B,["enter"])},null,8,["value","placeholder"])]),u(i,{type:"primary",onClick:B},{default:f(()=>[_(x(a.$t("Public.Btn.Add")),1)]),_:1})]),u(n,{"max-height":368,loading:c(U).loading,data:c(U).data,columns:c(V)},null,8,["loading","data","columns"]),u(g,{class:"mt-16px"},{default:f(()=>[r("li",null,x(a.$t("Waf.Site.Config.index_68")),1),r("li",null,x(a.$t("Waf.Site.Config.index_69")),1)]),_:1})])}}});export{k as default}; +import{c as a,f as e,h as s,_ as l}from"./public.js?v=1762424784323";import{k as t,P as i,r as n,R as o,V as m,S as r,W as u,aj as d,ak as p,U as c,a3 as f,j as _,a4 as x}from"./vue.js?v=1762424784323";import{w as g,m as v}from"./page_layout.js?v=1762424784323";import{w as y,x as j,y as N}from"./site3.js?v=1762424784323";import{au as b,aC as C}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const h={class:"p-20px"},w={class:"flex mb-16px"},S={class:"flex-1 mr-16px"},W="disable_path",k=t({__name:"disable",props:{siteName:{default:""}},setup(t){const k=t,{t:$}=i(),P=n(""),B=async()=>{""!==P.value.trim()?(await N({siteName:k.siteName,ruleName:W,ruleValue:P.value}),P.value="",D()):v.error($("Waf.Site.Config.index_70"))},{table:U,columns:V,setLoading:A}=a([{key:"rule",title:$("Waf.Site.Config.index_66")},e({width:80,options:(a,e)=>[{label:$("Public.Btn.Del"),onClick:async()=>{await y({index:e,siteName:k.siteName,ruleName:W}),D()}}]})]),D=async()=>{try{A(!0);const{siteName:a}=k,{message:e}=await j({siteName:a,ruleName:W});g(e)&&(U.data=e.map(a=>({rule:a})))}finally{A(!1)}};return D(),(a,e)=>{const t=b,i=C,n=s,g=l;return m(),o("div",h,[r("div",w,[r("div",S,[u(t,{value:c(P),"onUpdate:value":e[0]||(e[0]=a=>p(P)?P.value=a:null),placeholder:a.$t("Waf.Site.Config.index_67"),onKeyup:d(B,["enter"])},null,8,["value","placeholder"])]),u(i,{type:"primary",onClick:B},{default:f(()=>[_(x(a.$t("Public.Btn.Add")),1)]),_:1})]),u(n,{"max-height":368,loading:c(U).loading,data:c(U).data,columns:c(V)},null,8,["loading","data","columns"]),u(g,{class:"mt-16px"},{default:f(()=>[r("li",null,x(a.$t("Waf.Site.Config.index_68")),1),r("li",null,x(a.$t("Waf.Site.Config.index_69")),1)]),_:1})])}}});export{k as default}; diff --git a/BTPanel/static/vite/js/disk-legacy.js b/BTPanel/static/vite/js/disk-legacy.js index 1419ad69..d5d128d5 100644 --- a/BTPanel/static/vite/js/disk-legacy.js +++ b/BTPanel/static/vite/js/disk-legacy.js @@ -1 +1 @@ -System.register(["./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419"],function(t,e){"use strict";var n,i,s,o,a,c,u,l,r,d,_,k,p,y,g,f,m,v;return{setters:[t=>{n=t.Z,i=t.P,s=t.r,o=t.e,a=t.W,c=t.j,u=t.F},t=>{l=t.n,r=t.am,d=t.an,_=t.ag,k=t.d,p=t.ao},t=>{y=t.d,g=t.f,f=t.k,m=t.a},t=>{v=t.bH}],execute:function(){t("u",n("diskStore",()=>{const{t:t}=i(),{loading:e,setLoading:n}=y(),D=s({device:"",mountpoint:"",fstype:"",total:0,used:0,free:0,used_percent:0,inodes_total:0,inodes_used:0,inodes_free:0,inodes_used_percent:0,is_group_quota:!1,is_user_quota:!1,is_default:!1,account_allocate:0,account_percent:0}),A=o({data:[]}),h=s(!1),w=s([{title:t("Account.Disk.disk_810348-0"),key:"mountpoint"},{title:t("Account.Disk.disk_810348-1"),key:"device"},{title:t("Account.Disk.disk_810348-9"),key:"is_group_quota",render:e=>e.is_user_quota?a("span",null,[t("Account.Disk.disk_810348-10")]):a("div",null,[a("span",{class:"text-warning"},[t("Account.Disk.disk_810348-11")]),c(" | "),a("span",{class:"text-primary cursor-pointer",onClick:()=>async function(t){await d(t),j()}(e.mountpoint)},[t("Account.Disk.disk_810348-12")])])},{title:t("Account.Disk.disk_810348-2"),key:"total",width:120,render:t=>l(t.total)},{title:t("Account.Disk.disk_810348-3"),key:"used",render:t=>{const e=Math.round(t.used_percent);return a(u,null,[a("div",{class:"mb-[.2rem]"},[e,c("% / "),l(t.used)]),a(v,{height:10,color:C(e),percentage:e,showIndicator:!1},null)])}},g({title:t("Public.Table.Action"),align:"right",width:200,options:e=>[{label:t("Account.Disk.disk_810348-4"),show:e.is_default&&!h.value,disabled:!0},{label:"重启服务",show:e.is_default&&h.value,type:"warning",onClick:async()=>f()},{label:t("Account.Disk.disk_810348-5"),show:!e.is_default,onClick:async()=>{m({title:t("Account.Disk.disk_810348-6"),content:t("Account.Disk.disk_810348-7",[e.mountpoint]),onConfirm:async()=>{await p({mountpoint:e.mountpoint}),h.value=!0,j()}})}}]})]),b=r(),C=t=>{const e=Math.round(t);return e>80?b.value.errorColor:e>60?b.value.warningColor:b.value.primaryColor},j=async()=>{try{n(!0);const t=await _();if(k(t)){A.data=t.message;const e=t.message.find(t=>t.is_default);if(e){const t={...e};t.account_percent=Math.round(t.account_allocate/t.total*100),D.value=t}}}finally{n(!1)}};return{loading:e,DefaultDisk:D,init:j,columns:w,table:A,diskColor:C}}))}}}); +System.register(["./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323"],function(t,e){"use strict";var n,i,s,o,a,c,u,l,r,d,_,k,p,y,g,f,m,v;return{setters:[t=>{n=t.Z,i=t.P,s=t.r,o=t.e,a=t.W,c=t.j,u=t.F},t=>{l=t.n,r=t.am,d=t.an,_=t.ag,k=t.d,p=t.ao},t=>{y=t.d,g=t.f,f=t.k,m=t.a},t=>{v=t.bH}],execute:function(){t("u",n("diskStore",()=>{const{t:t}=i(),{loading:e,setLoading:n}=y(),D=s({device:"",mountpoint:"",fstype:"",total:0,used:0,free:0,used_percent:0,inodes_total:0,inodes_used:0,inodes_free:0,inodes_used_percent:0,is_group_quota:!1,is_user_quota:!1,is_default:!1,account_allocate:0,account_percent:0}),A=o({data:[]}),h=s(!1),w=s([{title:t("Account.Disk.disk_810348-0"),key:"mountpoint"},{title:t("Account.Disk.disk_810348-1"),key:"device"},{title:t("Account.Disk.disk_810348-9"),key:"is_group_quota",render:e=>e.is_user_quota?a("span",null,[t("Account.Disk.disk_810348-10")]):a("div",null,[a("span",{class:"text-warning"},[t("Account.Disk.disk_810348-11")]),c(" | "),a("span",{class:"text-primary cursor-pointer",onClick:()=>async function(t){await d(t),j()}(e.mountpoint)},[t("Account.Disk.disk_810348-12")])])},{title:t("Account.Disk.disk_810348-2"),key:"total",width:120,render:t=>l(t.total)},{title:t("Account.Disk.disk_810348-3"),key:"used",render:t=>{const e=Math.round(t.used_percent);return a(u,null,[a("div",{class:"mb-[.2rem]"},[e,c("% / "),l(t.used)]),a(v,{height:10,color:C(e),percentage:e,showIndicator:!1},null)])}},g({title:t("Public.Table.Action"),align:"right",width:200,options:e=>[{label:t("Account.Disk.disk_810348-4"),show:e.is_default&&!h.value,disabled:!0},{label:"重启服务",show:e.is_default&&h.value,type:"warning",onClick:async()=>f()},{label:t("Account.Disk.disk_810348-5"),show:!e.is_default,onClick:async()=>{m({title:t("Account.Disk.disk_810348-6"),content:t("Account.Disk.disk_810348-7",[e.mountpoint]),onConfirm:async()=>{await p({mountpoint:e.mountpoint}),h.value=!0,j()}})}}]})]),b=r(),C=t=>{const e=Math.round(t);return e>80?b.value.errorColor:e>60?b.value.warningColor:b.value.primaryColor},j=async()=>{try{n(!0);const t=await _();if(k(t)){A.data=t.message;const e=t.message.find(t=>t.is_default);if(e){const t={...e};t.account_percent=Math.round(t.account_allocate/t.total*100),D.value=t}}}finally{n(!1)}};return{loading:e,DefaultDisk:D,init:j,columns:w,table:A,diskColor:C}}))}}}); diff --git a/BTPanel/static/vite/js/disk.js b/BTPanel/static/vite/js/disk.js index 083f11fb..ac1e9c9c 100644 --- a/BTPanel/static/vite/js/disk.js +++ b/BTPanel/static/vite/js/disk.js @@ -1 +1 @@ -import{Z as t,P as s,r as a,e as o,W as n,j as e,F as i}from"./vue.js?v=1760428868419";import{n as c,am as u,an as l,ag as r,d,ao as _}from"./page_layout.js?v=1760428868419";import{d as k,f as p,k as m,a as f}from"./public.js?v=1760428868419";import{bH as y}from"./naive.js?v=1760428868419";const g=t("diskStore",()=>{const{t:t}=s(),{loading:g,setLoading:D}=k(),v=a({device:"",mountpoint:"",fstype:"",total:0,used:0,free:0,used_percent:0,inodes_total:0,inodes_used:0,inodes_free:0,inodes_used_percent:0,is_group_quota:!1,is_user_quota:!1,is_default:!1,account_allocate:0,account_percent:0}),A=o({data:[]}),h=a(!1),w=a([{title:t("Account.Disk.disk_810348-0"),key:"mountpoint"},{title:t("Account.Disk.disk_810348-1"),key:"device"},{title:t("Account.Disk.disk_810348-9"),key:"is_group_quota",render:s=>s.is_user_quota?n("span",null,[t("Account.Disk.disk_810348-10")]):n("div",null,[n("span",{class:"text-warning"},[t("Account.Disk.disk_810348-11")]),e(" | "),n("span",{class:"text-primary cursor-pointer",onClick:()=>async function(t){await l(t),j()}(s.mountpoint)},[t("Account.Disk.disk_810348-12")])])},{title:t("Account.Disk.disk_810348-2"),key:"total",width:120,render:t=>c(t.total)},{title:t("Account.Disk.disk_810348-3"),key:"used",render:t=>{const s=Math.round(t.used_percent);return n(i,null,[n("div",{class:"mb-[.2rem]"},[s,e("% / "),c(t.used)]),n(y,{height:10,color:C(s),percentage:s,showIndicator:!1},null)])}},p({title:t("Public.Table.Action"),align:"right",width:200,options:s=>[{label:t("Account.Disk.disk_810348-4"),show:s.is_default&&!h.value,disabled:!0},{label:"重启服务",show:s.is_default&&h.value,type:"warning",onClick:async()=>m()},{label:t("Account.Disk.disk_810348-5"),show:!s.is_default,onClick:async()=>{f({title:t("Account.Disk.disk_810348-6"),content:t("Account.Disk.disk_810348-7",[s.mountpoint]),onConfirm:async()=>{await _({mountpoint:s.mountpoint}),h.value=!0,j()}})}}]})]),b=u();const C=t=>{const s=Math.round(t);return s>80?b.value.errorColor:s>60?b.value.warningColor:b.value.primaryColor},j=async()=>{try{D(!0);const t=await r();if(d(t)){A.data=t.message;const s=t.message.find(t=>t.is_default);if(s){const t={...s};t.account_percent=Math.round(t.account_allocate/t.total*100),v.value=t}}}finally{D(!1)}};return{loading:g,DefaultDisk:v,init:j,columns:w,table:A,diskColor:C}});export{g as u}; +import{Z as t,P as s,r as a,e as o,W as n,j as e,F as i}from"./vue.js?v=1762424784323";import{n as c,am as u,an as l,ag as r,d,ao as _}from"./page_layout.js?v=1762424784323";import{d as k,f as p,k as m,a as f}from"./public.js?v=1762424784323";import{bH as y}from"./naive.js?v=1762424784323";const g=t("diskStore",()=>{const{t:t}=s(),{loading:g,setLoading:D}=k(),v=a({device:"",mountpoint:"",fstype:"",total:0,used:0,free:0,used_percent:0,inodes_total:0,inodes_used:0,inodes_free:0,inodes_used_percent:0,is_group_quota:!1,is_user_quota:!1,is_default:!1,account_allocate:0,account_percent:0}),A=o({data:[]}),h=a(!1),w=a([{title:t("Account.Disk.disk_810348-0"),key:"mountpoint"},{title:t("Account.Disk.disk_810348-1"),key:"device"},{title:t("Account.Disk.disk_810348-9"),key:"is_group_quota",render:s=>s.is_user_quota?n("span",null,[t("Account.Disk.disk_810348-10")]):n("div",null,[n("span",{class:"text-warning"},[t("Account.Disk.disk_810348-11")]),e(" | "),n("span",{class:"text-primary cursor-pointer",onClick:()=>async function(t){await l(t),j()}(s.mountpoint)},[t("Account.Disk.disk_810348-12")])])},{title:t("Account.Disk.disk_810348-2"),key:"total",width:120,render:t=>c(t.total)},{title:t("Account.Disk.disk_810348-3"),key:"used",render:t=>{const s=Math.round(t.used_percent);return n(i,null,[n("div",{class:"mb-[.2rem]"},[s,e("% / "),c(t.used)]),n(y,{height:10,color:C(s),percentage:s,showIndicator:!1},null)])}},p({title:t("Public.Table.Action"),align:"right",width:200,options:s=>[{label:t("Account.Disk.disk_810348-4"),show:s.is_default&&!h.value,disabled:!0},{label:"重启服务",show:s.is_default&&h.value,type:"warning",onClick:async()=>m()},{label:t("Account.Disk.disk_810348-5"),show:!s.is_default,onClick:async()=>{f({title:t("Account.Disk.disk_810348-6"),content:t("Account.Disk.disk_810348-7",[s.mountpoint]),onConfirm:async()=>{await _({mountpoint:s.mountpoint}),h.value=!0,j()}})}}]})]),b=u();const C=t=>{const s=Math.round(t);return s>80?b.value.errorColor:s>60?b.value.warningColor:b.value.primaryColor},j=async()=>{try{D(!0);const t=await r();if(d(t)){A.data=t.message;const s=t.message.find(t=>t.is_default);if(s){const t={...s};t.account_percent=Math.round(t.account_allocate/t.total*100),v.value=t}}}finally{D(!1)}};return{loading:g,DefaultDisk:v,init:j,columns:w,table:A,diskColor:C}});export{g as u}; diff --git a/BTPanel/static/vite/js/domain-form-legacy.js b/BTPanel/static/vite/js/domain-form-legacy.js index 36c31323..b3a1c52c 100644 --- a/BTPanel/static/vite/js/domain-form-legacy.js +++ b/BTPanel/static/vite/js/domain-form-legacy.js @@ -1 +1 @@ -System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./utils-legacy3.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,l){"use strict";var r,a,t,o,d,u,i,p,n,c,s,_,y,v,m,x,h,b,g,f,S,w,j,L,D,U,$,k;return{setters:[e=>{r=e._},e=>{a=e.X,t=e.at},e=>{o=e.a,d=e.t,u=e.c,i=e.h},e=>{p=e.u},e=>{n=e.dR,c=e.au,s=e.dV,_=e.da,y=e.aC,v=e.df,m=e.dj},e=>{x=e.k,h=e.c,b=e.P,g=e.r,f=e.e,S=e.a2,w=e.V,j=e.a3,L=e.W,D=e.an,U=e.S,$=e.U,k=e.j},null,null],execute:function(){const l={class:"w-300px"};e("default",x({__name:"domain-form",props:{row:{},isEdit:{type:Boolean},onRefresh:{}},setup(e,{expose:x}){const P=p(),C=e,{isEdit:X,row:M,onRefresh:q}=C,E=h(()=>X&&M?M.provider_name.includes("CloudFlare"):o.value.includes("CloudFlare")),{t:R}=b(),T=g(null),F=f({record_type:"A",record_value:"",ttl:1,ps:"",proxy:0,priority:10,record:""}),V={record:{required:!0,trigger:"change",message:R("SSL.Domain.index_12")},record_value:{required:!0,trigger:["blur","change"],message:R("SSL.Domain.index_14")},ttl:{required:!0,trigger:"blur",type:"number",message:R("SSL.Domain.index_15")},priority:{required:!0,trigger:"blur",type:"number",message:"Please enter the priority"}},z=()=>{F.record_value=P.address},A=()=>({id:X&&M?M.id:null,pid:i.value,domain:u.value,record:F.record,record_type:F.record_type,record_value:F.record_value,ttl:F.ttl,ps:F.ps,proxy:E.value&&"MX"!==F.record_type?F.proxy:-1,priority:"MX"===F.record_type?F.priority:-1});return(()=>{const{row:e,isEdit:l}=C;l&&e&&(F.record=e.record,F.record_type=e.record_type,F.record_value=e.record_value,F.ttl=e.ttl,F.ps=e.ps,F.proxy=e.proxy,F.priority="MX"===F.record_type?e.priority:-1)})(),x({onConfirm:async()=>{await(T.value?.validate()),X&&M?await a(A()):await t(A()),q()}}),(e,a)=>{const t=c,o=n,u=s,i=y,p=_,x=v,h=m,b=r;return w(),S(b,{class:"p-20px",ref_key:"formRef",ref:T,model:$(F),rules:V},{default:j(()=>[L(o,{label:e.$t("SSL.Domain.index_11"),path:"record"},{default:j(()=>[U("div",l,[L(t,{value:$(F).record,"onUpdate:value":a[0]||(a[0]=e=>$(F).record=e),placeholder:e.$t("SSL.Domain.index_12")},null,8,["value","placeholder"])])]),_:1},8,["label"]),L(o,{label:e.$t("Ftp.Table.index_3"),path:"record_type"},{default:j(()=>[L(u,{class:"w-300px",value:$(F).record_type,"onUpdate:value":a[1]||(a[1]=e=>$(F).record_type=e),options:$(d),disabled:$(X)},null,8,["value","options","disabled"])]),_:1},8,["label"]),L(o,{label:e.$t("SSL.Domain.index_13"),path:"record_value"},{default:j(()=>[L(p,{class:"flex-nowrap!",size:5},{default:j(()=>[L(t,{class:"w-300px!",value:$(F).record_value,"onUpdate:value":a[2]||(a[2]=e=>$(F).record_value=e),placeholder:e.$t("SSL.Domain.index_14")},null,8,["value","placeholder"]),L(i,{onClick:z},{default:j(()=>a[7]||(a[7]=[k(" USE IP ",-1)])),_:1,__:[7]})]),_:1})]),_:1},8,["label"]),L(o,{label:"TTL",path:"ttl"},{default:j(()=>[L(x,{min:1,max:1800,"show-button":!1,class:"w-300px!",value:$(F).ttl,"onUpdate:value":a[3]||(a[3]=e=>$(F).ttl=e),placeholder:e.$t("SSL.Domain.index_15")},null,8,["value","placeholder"])]),_:1}),"MX"===$(F).record_type?(w(),S(o,{key:0,label:"Priority",path:"priority"},{default:j(()=>[L(x,{"show-button":!1,class:"w-300px!",value:$(F).priority,"onUpdate:value":a[4]||(a[4]=e=>$(F).priority=e),placeholder:"Please enter the priority",min:1,max:65535},null,8,["value"])]),_:1})):D("",!0),L(o,{label:e.$t("Public.Table.Ps"),path:"ps"},{default:j(()=>[L(t,{class:"w-300px!",value:$(F).ps,"onUpdate:value":a[5]||(a[5]=e=>$(F).ps=e),placeholder:e.$t("Crontab.arrange.index_27")},null,8,["value","placeholder"])]),_:1},8,["label"]),$(E)&&"MX"!==$(F).record_type?(w(),S(o,{key:1,label:e.$t("SSL.Domain.index_16"),path:"proxy"},{default:j(()=>[L(h,{value:$(F).proxy,"onUpdate:value":a[6]||(a[6]=e=>$(F).proxy=e),"checked-value":1,"unchecked-value":0},null,8,["value"])]),_:1},8,["label"])):D("",!0)]),_:1},8,["model"])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./utils-legacy3.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,l){"use strict";var r,a,t,o,d,u,i,p,n,c,s,_,y,v,m,x,h,b,g,f,S,w,j,L,D,U,$,k;return{setters:[e=>{r=e._},e=>{a=e.X,t=e.at},e=>{o=e.a,d=e.t,u=e.c,i=e.h},e=>{p=e.u},e=>{n=e.dR,c=e.au,s=e.dV,_=e.da,y=e.aC,v=e.df,m=e.dj},e=>{x=e.k,h=e.c,b=e.P,g=e.r,f=e.e,S=e.a2,w=e.V,j=e.a3,L=e.W,D=e.an,U=e.S,$=e.U,k=e.j},null,null],execute:function(){const l={class:"w-300px"};e("default",x({__name:"domain-form",props:{row:{},isEdit:{type:Boolean},onRefresh:{}},setup(e,{expose:x}){const P=p(),C=e,{isEdit:X,row:M,onRefresh:q}=C,E=h(()=>X&&M?M.provider_name.includes("CloudFlare"):o.value.includes("CloudFlare")),{t:R}=b(),T=g(null),F=f({record_type:"A",record_value:"",ttl:1,ps:"",proxy:0,priority:10,record:""}),V={record:{required:!0,trigger:"change",message:R("SSL.Domain.index_12")},record_value:{required:!0,trigger:["blur","change"],message:R("SSL.Domain.index_14")},ttl:{required:!0,trigger:"blur",type:"number",message:R("SSL.Domain.index_15")},priority:{required:!0,trigger:"blur",type:"number",message:"Please enter the priority"}},z=()=>{F.record_value=P.address},A=()=>({id:X&&M?M.id:null,pid:i.value,domain:u.value,record:F.record,record_type:F.record_type,record_value:F.record_value,ttl:F.ttl,ps:F.ps,proxy:E.value&&"MX"!==F.record_type?F.proxy:-1,priority:"MX"===F.record_type?F.priority:-1});return(()=>{const{row:e,isEdit:l}=C;l&&e&&(F.record=e.record,F.record_type=e.record_type,F.record_value=e.record_value,F.ttl=e.ttl,F.ps=e.ps,F.proxy=e.proxy,F.priority="MX"===F.record_type?e.priority:-1)})(),x({onConfirm:async()=>{await(T.value?.validate()),X&&M?await a(A()):await t(A()),q()}}),(e,a)=>{const t=c,o=n,u=s,i=y,p=_,x=v,h=m,b=r;return w(),S(b,{class:"p-20px",ref_key:"formRef",ref:T,model:$(F),rules:V},{default:j(()=>[L(o,{label:e.$t("SSL.Domain.index_11"),path:"record"},{default:j(()=>[U("div",l,[L(t,{value:$(F).record,"onUpdate:value":a[0]||(a[0]=e=>$(F).record=e),placeholder:e.$t("SSL.Domain.index_12")},null,8,["value","placeholder"])])]),_:1},8,["label"]),L(o,{label:e.$t("Ftp.Table.index_3"),path:"record_type"},{default:j(()=>[L(u,{class:"w-300px",value:$(F).record_type,"onUpdate:value":a[1]||(a[1]=e=>$(F).record_type=e),options:$(d),disabled:$(X)},null,8,["value","options","disabled"])]),_:1},8,["label"]),L(o,{label:e.$t("SSL.Domain.index_13"),path:"record_value"},{default:j(()=>[L(p,{class:"flex-nowrap!",size:5},{default:j(()=>[L(t,{class:"w-300px!",value:$(F).record_value,"onUpdate:value":a[2]||(a[2]=e=>$(F).record_value=e),placeholder:e.$t("SSL.Domain.index_14")},null,8,["value","placeholder"]),L(i,{onClick:z},{default:j(()=>a[7]||(a[7]=[k(" USE IP ",-1)])),_:1,__:[7]})]),_:1})]),_:1},8,["label"]),L(o,{label:"TTL",path:"ttl"},{default:j(()=>[L(x,{min:1,max:1800,"show-button":!1,class:"w-300px!",value:$(F).ttl,"onUpdate:value":a[3]||(a[3]=e=>$(F).ttl=e),placeholder:e.$t("SSL.Domain.index_15")},null,8,["value","placeholder"])]),_:1}),"MX"===$(F).record_type?(w(),S(o,{key:0,label:"Priority",path:"priority"},{default:j(()=>[L(x,{"show-button":!1,class:"w-300px!",value:$(F).priority,"onUpdate:value":a[4]||(a[4]=e=>$(F).priority=e),placeholder:"Please enter the priority",min:1,max:65535},null,8,["value"])]),_:1})):D("",!0),L(o,{label:e.$t("Public.Table.Ps"),path:"ps"},{default:j(()=>[L(t,{class:"w-300px!",value:$(F).ps,"onUpdate:value":a[5]||(a[5]=e=>$(F).ps=e),placeholder:e.$t("Crontab.arrange.index_27")},null,8,["value","placeholder"])]),_:1},8,["label"]),$(E)&&"MX"!==$(F).record_type?(w(),S(o,{key:1,label:e.$t("SSL.Domain.index_16"),path:"proxy"},{default:j(()=>[L(h,{value:$(F).proxy,"onUpdate:value":a[6]||(a[6]=e=>$(F).proxy=e),"checked-value":1,"unchecked-value":0},null,8,["value"])]),_:1},8,["label"])):D("",!0)]),_:1},8,["model"])}}}))}}}); diff --git a/BTPanel/static/vite/js/domain-form.js b/BTPanel/static/vite/js/domain-form.js index ac3af5f2..4f3e0a11 100644 --- a/BTPanel/static/vite/js/domain-form.js +++ b/BTPanel/static/vite/js/domain-form.js @@ -1 +1 @@ -import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{X as a,at as r}from"./public.js?v=1760428868419";import{a as l,t as o,c as t,h as d}from"./utils3.js?v=1760428868419";import{u as s}from"./page_layout.js?v=1760428868419";import{dR as p,au as i,dV as u,da as n,aC as c,df as _,dj as v}from"./naive.js?v=1760428868419";import{k as m,c as y,P as x,r as f,e as h,a2 as b,V as S,a3 as g,W as w,an as j,S as L,U as D,j as U}from"./vue.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const $={class:"w-300px"},k=m({__name:"domain-form",props:{row:{},isEdit:{type:Boolean},onRefresh:{}},setup(m,{expose:k}){const P=s(),C=m,{isEdit:X,row:M,onRefresh:q}=C,E=y(()=>X&&M?M.provider_name.includes("CloudFlare"):l.value.includes("CloudFlare")),{t:R}=x(),T=f(null),F=h({record_type:"A",record_value:"",ttl:1,ps:"",proxy:0,priority:10,record:""}),V={record:{required:!0,trigger:"change",message:R("SSL.Domain.index_12")},record_value:{required:!0,trigger:["blur","change"],message:R("SSL.Domain.index_14")},ttl:{required:!0,trigger:"blur",type:"number",message:R("SSL.Domain.index_15")},priority:{required:!0,trigger:"blur",type:"number",message:"Please enter the priority"}},z=()=>{F.record_value=P.address},A=()=>({id:X&&M?M.id:null,pid:d.value,domain:t.value,record:F.record,record_type:F.record_type,record_value:F.record_value,ttl:F.ttl,ps:F.ps,proxy:E.value&&"MX"!==F.record_type?F.proxy:-1,priority:"MX"===F.record_type?F.priority:-1});return(()=>{const{row:e,isEdit:a}=C;a&&e&&(F.record=e.record,F.record_type=e.record_type,F.record_value=e.record_value,F.ttl=e.ttl,F.ps=e.ps,F.proxy=e.proxy,F.priority="MX"===F.record_type?e.priority:-1)})(),k({onConfirm:async()=>{var e;await(null==(e=T.value)?void 0:e.validate()),X&&M?await a(A()):await r(A()),q()}}),(a,r)=>{const l=i,t=p,d=u,s=c,m=n,y=_,x=v,f=e;return S(),b(f,{class:"p-20px",ref_key:"formRef",ref:T,model:D(F),rules:V},{default:g(()=>[w(t,{label:a.$t("SSL.Domain.index_11"),path:"record"},{default:g(()=>[L("div",$,[w(l,{value:D(F).record,"onUpdate:value":r[0]||(r[0]=e=>D(F).record=e),placeholder:a.$t("SSL.Domain.index_12")},null,8,["value","placeholder"])])]),_:1},8,["label"]),w(t,{label:a.$t("Ftp.Table.index_3"),path:"record_type"},{default:g(()=>[w(d,{class:"w-300px",value:D(F).record_type,"onUpdate:value":r[1]||(r[1]=e=>D(F).record_type=e),options:D(o),disabled:D(X)},null,8,["value","options","disabled"])]),_:1},8,["label"]),w(t,{label:a.$t("SSL.Domain.index_13"),path:"record_value"},{default:g(()=>[w(m,{class:"flex-nowrap!",size:5},{default:g(()=>[w(l,{class:"w-300px!",value:D(F).record_value,"onUpdate:value":r[2]||(r[2]=e=>D(F).record_value=e),placeholder:a.$t("SSL.Domain.index_14")},null,8,["value","placeholder"]),w(s,{onClick:z},{default:g(()=>r[7]||(r[7]=[U(" USE IP ",-1)])),_:1,__:[7]})]),_:1})]),_:1},8,["label"]),w(t,{label:"TTL",path:"ttl"},{default:g(()=>[w(y,{min:1,max:1800,"show-button":!1,class:"w-300px!",value:D(F).ttl,"onUpdate:value":r[3]||(r[3]=e=>D(F).ttl=e),placeholder:a.$t("SSL.Domain.index_15")},null,8,["value","placeholder"])]),_:1}),"MX"===D(F).record_type?(S(),b(t,{key:0,label:"Priority",path:"priority"},{default:g(()=>[w(y,{"show-button":!1,class:"w-300px!",value:D(F).priority,"onUpdate:value":r[4]||(r[4]=e=>D(F).priority=e),placeholder:"Please enter the priority",min:1,max:65535},null,8,["value"])]),_:1})):j("",!0),w(t,{label:a.$t("Public.Table.Ps"),path:"ps"},{default:g(()=>[w(l,{class:"w-300px!",value:D(F).ps,"onUpdate:value":r[5]||(r[5]=e=>D(F).ps=e),placeholder:a.$t("Crontab.arrange.index_27")},null,8,["value","placeholder"])]),_:1},8,["label"]),D(E)&&"MX"!==D(F).record_type?(S(),b(t,{key:1,label:a.$t("SSL.Domain.index_16"),path:"proxy"},{default:g(()=>[w(x,{value:D(F).proxy,"onUpdate:value":r[6]||(r[6]=e=>D(F).proxy=e),"checked-value":1,"unchecked-value":0},null,8,["value"])]),_:1},8,["label"])):j("",!0)]),_:1},8,["model"])}}});export{k as default}; +import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{X as a,at as r}from"./public.js?v=1762424784323";import{a as l,t as o,c as t,h as d}from"./utils3.js?v=1762424784323";import{u as s}from"./page_layout.js?v=1762424784323";import{dR as p,au as i,dV as u,da as n,aC as c,df as _,dj as v}from"./naive.js?v=1762424784323";import{k as m,c as y,P as x,r as f,e as h,a2 as b,V as S,a3 as g,W as w,an as j,S as L,U as D,j as U}from"./vue.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const $={class:"w-300px"},k=m({__name:"domain-form",props:{row:{},isEdit:{type:Boolean},onRefresh:{}},setup(m,{expose:k}){const P=s(),C=m,{isEdit:X,row:M,onRefresh:q}=C,E=y(()=>X&&M?M.provider_name.includes("CloudFlare"):l.value.includes("CloudFlare")),{t:R}=x(),T=f(null),F=h({record_type:"A",record_value:"",ttl:1,ps:"",proxy:0,priority:10,record:""}),V={record:{required:!0,trigger:"change",message:R("SSL.Domain.index_12")},record_value:{required:!0,trigger:["blur","change"],message:R("SSL.Domain.index_14")},ttl:{required:!0,trigger:"blur",type:"number",message:R("SSL.Domain.index_15")},priority:{required:!0,trigger:"blur",type:"number",message:"Please enter the priority"}},z=()=>{F.record_value=P.address},A=()=>({id:X&&M?M.id:null,pid:d.value,domain:t.value,record:F.record,record_type:F.record_type,record_value:F.record_value,ttl:F.ttl,ps:F.ps,proxy:E.value&&"MX"!==F.record_type?F.proxy:-1,priority:"MX"===F.record_type?F.priority:-1});return(()=>{const{row:e,isEdit:a}=C;a&&e&&(F.record=e.record,F.record_type=e.record_type,F.record_value=e.record_value,F.ttl=e.ttl,F.ps=e.ps,F.proxy=e.proxy,F.priority="MX"===F.record_type?e.priority:-1)})(),k({onConfirm:async()=>{var e;await(null==(e=T.value)?void 0:e.validate()),X&&M?await a(A()):await r(A()),q()}}),(a,r)=>{const l=i,t=p,d=u,s=c,m=n,y=_,x=v,f=e;return S(),b(f,{class:"p-20px",ref_key:"formRef",ref:T,model:D(F),rules:V},{default:g(()=>[w(t,{label:a.$t("SSL.Domain.index_11"),path:"record"},{default:g(()=>[L("div",$,[w(l,{value:D(F).record,"onUpdate:value":r[0]||(r[0]=e=>D(F).record=e),placeholder:a.$t("SSL.Domain.index_12")},null,8,["value","placeholder"])])]),_:1},8,["label"]),w(t,{label:a.$t("Ftp.Table.index_3"),path:"record_type"},{default:g(()=>[w(d,{class:"w-300px",value:D(F).record_type,"onUpdate:value":r[1]||(r[1]=e=>D(F).record_type=e),options:D(o),disabled:D(X)},null,8,["value","options","disabled"])]),_:1},8,["label"]),w(t,{label:a.$t("SSL.Domain.index_13"),path:"record_value"},{default:g(()=>[w(m,{class:"flex-nowrap!",size:5},{default:g(()=>[w(l,{class:"w-300px!",value:D(F).record_value,"onUpdate:value":r[2]||(r[2]=e=>D(F).record_value=e),placeholder:a.$t("SSL.Domain.index_14")},null,8,["value","placeholder"]),w(s,{onClick:z},{default:g(()=>r[7]||(r[7]=[U(" USE IP ",-1)])),_:1,__:[7]})]),_:1})]),_:1},8,["label"]),w(t,{label:"TTL",path:"ttl"},{default:g(()=>[w(y,{min:1,max:1800,"show-button":!1,class:"w-300px!",value:D(F).ttl,"onUpdate:value":r[3]||(r[3]=e=>D(F).ttl=e),placeholder:a.$t("SSL.Domain.index_15")},null,8,["value","placeholder"])]),_:1}),"MX"===D(F).record_type?(S(),b(t,{key:0,label:"Priority",path:"priority"},{default:g(()=>[w(y,{"show-button":!1,class:"w-300px!",value:D(F).priority,"onUpdate:value":r[4]||(r[4]=e=>D(F).priority=e),placeholder:"Please enter the priority",min:1,max:65535},null,8,["value"])]),_:1})):j("",!0),w(t,{label:a.$t("Public.Table.Ps"),path:"ps"},{default:g(()=>[w(l,{class:"w-300px!",value:D(F).ps,"onUpdate:value":r[5]||(r[5]=e=>D(F).ps=e),placeholder:a.$t("Crontab.arrange.index_27")},null,8,["value","placeholder"])]),_:1},8,["label"]),D(E)&&"MX"!==D(F).record_type?(S(),b(t,{key:1,label:a.$t("SSL.Domain.index_16"),path:"proxy"},{default:g(()=>[w(x,{value:D(F).proxy,"onUpdate:value":r[6]||(r[6]=e=>D(F).proxy=e),"checked-value":1,"unchecked-value":0},null,8,["value"])]),_:1},8,["label"])):j("",!0)]),_:1},8,["model"])}}});export{k as default}; diff --git a/BTPanel/static/vite/js/domain-input-legacy.js b/BTPanel/static/vite/js/domain-input-legacy.js index b6f7bed4..832ff00c 100644 --- a/BTPanel/static/vite/js/domain-input-legacy.js +++ b/BTPanel/static/vite/js/domain-input-legacy.js @@ -1 +1 @@ -System.register(["./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419"],function(e,a){"use strict";var l,d,u,t,s,n,i,c,o,p,r,v,_,f,x,b,k,m,h,g,y,S,L,$,C,U;return{setters:[e=>{l=e.aV,d=e.o,u=e.dt,t=e.d,s=e.p},e=>{n=e.j},e=>{i=e.k,c=e.ad,o=e.am,p=e.ae,r=e.a2,v=e.V,_=e.a3,f=e.W,x=e.an,b=e.R,k=e.S,m=e.j,h=e.a4,g=e.H},e=>{y=e.da,S=e.aX,L=e.aC,$=e.dh,C=e._,U=e.au}],execute:function(){var a=document.createElement("style");a.textContent=".n-button[data-v-4f4b9d13]{--n-padding: 0 12px}\n/*$vite$:1*/",document.head.appendChild(a);const j={key:1,class:"text-desc"},w=i({__name:"domain-input",props:c({is_wp:{type:Boolean,default:!1}},{value:{required:!0},valueModifiers:{},parseList:{required:!0},parseListModifiers:{}}),emits:c(["update:domain"],["update:value","update:parseList"]),setup(e,{expose:a,emit:s}){const i=e,c=o(),w=p(e,"value"),B=p(e,"parseList"),D=s,M=async(e,a)=>{if(0===a&&D("update:domain",e),!e?.trim())return void(B.value[a]&&B.value.splice(a,1));const{message:l}=await n({domain:e});t(l)&&w.value[a]&&(B.value[a]={...l,auto:l.support.includes("auto"),ssl_cert:l.support.includes("ssl_cert"),cf_proxy:l.support.includes("cf_proxy")})},q=()=>{c.push("/ssl_domain/domain")};return a({onDomainItemBlur:M}),(e,a)=>{const t=U,s=L,n=S,c=C,o=d,p=$,I=l,V=y,E=u;return v(),r(E,{value:w.value,"onUpdate:value":a[0]||(a[0]=e=>w.value=e)},{default:_(({index:a})=>[f(t,{class:g(i.is_wp?"w-200px!":"w-140px!"),value:w.value[a],"onUpdate:value":e=>w.value[a]=e,placeholder:e.$t("Mail.Setting.index_20"),onBlur:e=>M(w.value[a],a)},null,8,["class","value","onUpdate:value","placeholder","onBlur"])]),action:_(({index:l})=>[f(V,{class:"items-center ml-5px"},{default:_(()=>[i.is_wp?x("",!0):(v(),r(n,{key:0},{default:_(()=>[f(s,{onClick:e=>(e=>{w.value.splice(e,1),B.value.splice(e,1),0===e&&D("update:domain",w.value[0]?w.value[0]:"")})(l),disabled:1===w.value.length,round:""},{default:_(()=>a[1]||(a[1]=[k("span",null,"-",-1)])),_:2,__:[1]},1032,["onClick","disabled"]),f(s,{onClick:e=>(e=>{w.value.splice(e+1,0,""),B.value.splice(e+1,0,{})})(l),round:""},{default:_(()=>a[2]||(a[2]=[k("span",null,"+",-1)])),_:2,__:[2]},1032,["onClick"])]),_:2},1024)),B.value[l]?.support?(v(),b("span",j,[f(I,null,{default:_(()=>[f(p,{trigger:"hover",disabled:B.value[l].support.includes("auto")},{trigger:_(()=>[f(c,{checked:B.value[l].auto,"onUpdate:checked":e=>B.value[l].auto=e,disabled:!B.value[l].support.includes("auto"),label:e.$t("SSL.Domain.index_34")},null,8,["checked","onUpdate:checked","disabled","label"])]),default:_(()=>[k("div",null,[m(h(e.$t("SSL.index_5"))+" ",1),f(o,{onClick:q},{default:_(()=>[m(h(e.$t("SSL.index_4")),1)]),_:1})])]),_:2},1032,["disabled"]),f(p,{trigger:"hover",disabled:B.value[l].support.includes("ssl_cert")},{trigger:_(()=>[f(c,{checked:B.value[l].ssl_cert,"onUpdate:checked":e=>B.value[l].ssl_cert=e,disabled:!B.value[l].support.includes("ssl_cert"),label:e.$t("SSL.index_7")},null,8,["checked","onUpdate:checked","disabled","label"])]),default:_(()=>[k("div",null,[m(h(e.$t("SSL.index_6"))+" ",1),f(o,{onClick:q},{default:_(()=>[m(h(e.$t("SSL.index_4")),1)]),_:1})])]),_:2},1032,["disabled"]),B.value[l].support.includes("cf_proxy")?(v(),r(c,{key:0,checked:B.value[l].cf_proxy,"onUpdate:checked":e=>B.value[l].cf_proxy=e,disabled:!B.value[l].support.includes("cf_proxy"),label:e.$t("SSL.index_8")},null,8,["checked","onUpdate:checked","disabled","label"])):x("",!0)]),_:2},1024)])):x("",!0)]),_:2},1024)]),_:1},8,["value"])}}});e("D",s(w,[["__scopeId","data-v-4f4b9d13"]]))}}}); +System.register(["./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323"],function(e,a){"use strict";var l,d,u,t,s,n,i,c,o,p,r,v,_,f,x,b,k,m,h,g,y,S,L,$,C,U;return{setters:[e=>{l=e.aV,d=e.o,u=e.dt,t=e.d,s=e.p},e=>{n=e.j},e=>{i=e.k,c=e.ad,o=e.am,p=e.ae,r=e.a2,v=e.V,_=e.a3,f=e.W,x=e.an,b=e.R,k=e.S,m=e.j,h=e.a4,g=e.H},e=>{y=e.da,S=e.aX,L=e.aC,$=e.dh,C=e._,U=e.au}],execute:function(){var a=document.createElement("style");a.textContent=".n-button[data-v-4f4b9d13]{--n-padding: 0 12px}\n/*$vite$:1*/",document.head.appendChild(a);const j={key:1,class:"text-desc"},w=i({__name:"domain-input",props:c({is_wp:{type:Boolean,default:!1}},{value:{required:!0},valueModifiers:{},parseList:{required:!0},parseListModifiers:{}}),emits:c(["update:domain"],["update:value","update:parseList"]),setup(e,{expose:a,emit:s}){const i=e,c=o(),w=p(e,"value"),B=p(e,"parseList"),D=s,M=async(e,a)=>{if(0===a&&D("update:domain",e),!e?.trim())return void(B.value[a]&&B.value.splice(a,1));const{message:l}=await n({domain:e});t(l)&&w.value[a]&&(B.value[a]={...l,auto:l.support.includes("auto"),ssl_cert:l.support.includes("ssl_cert"),cf_proxy:l.support.includes("cf_proxy")})},q=()=>{c.push("/ssl_domain/domain")};return a({onDomainItemBlur:M}),(e,a)=>{const t=U,s=L,n=S,c=C,o=d,p=$,I=l,V=y,E=u;return v(),r(E,{value:w.value,"onUpdate:value":a[0]||(a[0]=e=>w.value=e)},{default:_(({index:a})=>[f(t,{class:g(i.is_wp?"w-200px!":"w-140px!"),value:w.value[a],"onUpdate:value":e=>w.value[a]=e,placeholder:e.$t("Mail.Setting.index_20"),onBlur:e=>M(w.value[a],a)},null,8,["class","value","onUpdate:value","placeholder","onBlur"])]),action:_(({index:l})=>[f(V,{class:"items-center ml-5px"},{default:_(()=>[i.is_wp?x("",!0):(v(),r(n,{key:0},{default:_(()=>[f(s,{onClick:e=>(e=>{w.value.splice(e,1),B.value.splice(e,1),0===e&&D("update:domain",w.value[0]?w.value[0]:"")})(l),disabled:1===w.value.length,round:""},{default:_(()=>a[1]||(a[1]=[k("span",null,"-",-1)])),_:2,__:[1]},1032,["onClick","disabled"]),f(s,{onClick:e=>(e=>{w.value.splice(e+1,0,""),B.value.splice(e+1,0,{})})(l),round:""},{default:_(()=>a[2]||(a[2]=[k("span",null,"+",-1)])),_:2,__:[2]},1032,["onClick"])]),_:2},1024)),B.value[l]?.support?(v(),b("span",j,[f(I,null,{default:_(()=>[f(p,{trigger:"hover",disabled:B.value[l].support.includes("auto")},{trigger:_(()=>[f(c,{checked:B.value[l].auto,"onUpdate:checked":e=>B.value[l].auto=e,disabled:!B.value[l].support.includes("auto"),label:e.$t("SSL.Domain.index_34")},null,8,["checked","onUpdate:checked","disabled","label"])]),default:_(()=>[k("div",null,[m(h(e.$t("SSL.index_5"))+" ",1),f(o,{onClick:q},{default:_(()=>[m(h(e.$t("SSL.index_4")),1)]),_:1})])]),_:2},1032,["disabled"]),f(p,{trigger:"hover",disabled:B.value[l].support.includes("ssl_cert")},{trigger:_(()=>[f(c,{checked:B.value[l].ssl_cert,"onUpdate:checked":e=>B.value[l].ssl_cert=e,disabled:!B.value[l].support.includes("ssl_cert"),label:e.$t("SSL.index_7")},null,8,["checked","onUpdate:checked","disabled","label"])]),default:_(()=>[k("div",null,[m(h(e.$t("SSL.index_6"))+" ",1),f(o,{onClick:q},{default:_(()=>[m(h(e.$t("SSL.index_4")),1)]),_:1})])]),_:2},1032,["disabled"]),B.value[l].support.includes("cf_proxy")?(v(),r(c,{key:0,checked:B.value[l].cf_proxy,"onUpdate:checked":e=>B.value[l].cf_proxy=e,disabled:!B.value[l].support.includes("cf_proxy"),label:e.$t("SSL.index_8")},null,8,["checked","onUpdate:checked","disabled","label"])):x("",!0)]),_:2},1024)])):x("",!0)]),_:2},1024)]),_:1},8,["value"])}}});e("D",s(w,[["__scopeId","data-v-4f4b9d13"]]))}}}); diff --git a/BTPanel/static/vite/js/domain-input.js b/BTPanel/static/vite/js/domain-input.js index e8e8757c..8c6c6422 100644 --- a/BTPanel/static/vite/js/domain-input.js +++ b/BTPanel/static/vite/js/domain-input.js @@ -1 +1 @@ -import{aV as e,o as a,dt as l,d as s,p as u}from"./page_layout.js?v=1760428868419";import{j as d}from"./public.js?v=1760428868419";import{k as t,ad as i,am as o,ae as n,a2 as p,V as c,a3 as r,W as v,an as _,R as m,S as f,j as k,a4 as x,H as b}from"./vue.js?v=1760428868419";import{da as h,aX as S,aC as g,dh as y,_ as L,au as U}from"./naive.js?v=1760428868419";const $={key:1,class:"text-desc"},C=u(t({__name:"domain-input",props:i({is_wp:{type:Boolean,default:!1}},{value:{required:!0},valueModifiers:{},parseList:{required:!0},parseListModifiers:{}}),emits:i(["update:domain"],["update:value","update:parseList"]),setup(u,{expose:t,emit:i}){const C=u,j=o(),w=n(u,"value"),B=n(u,"parseList"),D=i,M=async(e,a)=>{if(0===a&&D("update:domain",e),!(null==e?void 0:e.trim()))return void(B.value[a]&&B.value.splice(a,1));const{message:l}=await d({domain:e});s(l)&&w.value[a]&&(B.value[a]={...l,auto:l.support.includes("auto"),ssl_cert:l.support.includes("ssl_cert"),cf_proxy:l.support.includes("cf_proxy")})},q=()=>{j.push("/ssl_domain/domain")};return t({onDomainItemBlur:M}),(s,u)=>{const d=U,t=g,i=S,o=L,n=a,j=y,I=e,V=h,H=l;return c(),p(H,{value:w.value,"onUpdate:value":u[0]||(u[0]=e=>w.value=e)},{default:r(({index:e})=>[v(d,{class:b(C.is_wp?"w-200px!":"w-140px!"),value:w.value[e],"onUpdate:value":a=>w.value[e]=a,placeholder:s.$t("Mail.Setting.index_20"),onBlur:a=>M(w.value[e],e)},null,8,["class","value","onUpdate:value","placeholder","onBlur"])]),action:r(({index:e})=>[v(V,{class:"items-center ml-5px"},{default:r(()=>{var a;return[C.is_wp?_("",!0):(c(),p(i,{key:0},{default:r(()=>[v(t,{onClick:a=>(e=>{w.value.splice(e,1),B.value.splice(e,1),0===e&&D("update:domain",w.value[0]?w.value[0]:"")})(e),disabled:1===w.value.length,round:""},{default:r(()=>u[1]||(u[1]=[f("span",null,"-",-1)])),_:2,__:[1]},1032,["onClick","disabled"]),v(t,{onClick:a=>(e=>{w.value.splice(e+1,0,""),B.value.splice(e+1,0,{})})(e),round:""},{default:r(()=>u[2]||(u[2]=[f("span",null,"+",-1)])),_:2,__:[2]},1032,["onClick"])]),_:2},1024)),(null==(a=B.value[e])?void 0:a.support)?(c(),m("span",$,[v(I,null,{default:r(()=>[v(j,{trigger:"hover",disabled:B.value[e].support.includes("auto")},{trigger:r(()=>[v(o,{checked:B.value[e].auto,"onUpdate:checked":a=>B.value[e].auto=a,disabled:!B.value[e].support.includes("auto"),label:s.$t("SSL.Domain.index_34")},null,8,["checked","onUpdate:checked","disabled","label"])]),default:r(()=>[f("div",null,[k(x(s.$t("SSL.index_5"))+" ",1),v(n,{onClick:q},{default:r(()=>[k(x(s.$t("SSL.index_4")),1)]),_:1})])]),_:2},1032,["disabled"]),v(j,{trigger:"hover",disabled:B.value[e].support.includes("ssl_cert")},{trigger:r(()=>[v(o,{checked:B.value[e].ssl_cert,"onUpdate:checked":a=>B.value[e].ssl_cert=a,disabled:!B.value[e].support.includes("ssl_cert"),label:s.$t("SSL.index_7")},null,8,["checked","onUpdate:checked","disabled","label"])]),default:r(()=>[f("div",null,[k(x(s.$t("SSL.index_6"))+" ",1),v(n,{onClick:q},{default:r(()=>[k(x(s.$t("SSL.index_4")),1)]),_:1})])]),_:2},1032,["disabled"]),B.value[e].support.includes("cf_proxy")?(c(),p(o,{key:0,checked:B.value[e].cf_proxy,"onUpdate:checked":a=>B.value[e].cf_proxy=a,disabled:!B.value[e].support.includes("cf_proxy"),label:s.$t("SSL.index_8")},null,8,["checked","onUpdate:checked","disabled","label"])):_("",!0)]),_:2},1024)])):_("",!0)]}),_:2},1024)]),_:1},8,["value"])}}}),[["__scopeId","data-v-4f4b9d13"]]);export{C as D}; +import{aV as e,o as a,dt as l,d as s,p as u}from"./page_layout.js?v=1762424784323";import{j as d}from"./public.js?v=1762424784323";import{k as t,ad as i,am as o,ae as n,a2 as p,V as c,a3 as r,W as v,an as _,R as m,S as f,j as k,a4 as x,H as b}from"./vue.js?v=1762424784323";import{da as h,aX as S,aC as g,dh as y,_ as L,au as U}from"./naive.js?v=1762424784323";const $={key:1,class:"text-desc"},C=u(t({__name:"domain-input",props:i({is_wp:{type:Boolean,default:!1}},{value:{required:!0},valueModifiers:{},parseList:{required:!0},parseListModifiers:{}}),emits:i(["update:domain"],["update:value","update:parseList"]),setup(u,{expose:t,emit:i}){const C=u,j=o(),w=n(u,"value"),B=n(u,"parseList"),D=i,M=async(e,a)=>{if(0===a&&D("update:domain",e),!(null==e?void 0:e.trim()))return void(B.value[a]&&B.value.splice(a,1));const{message:l}=await d({domain:e});s(l)&&w.value[a]&&(B.value[a]={...l,auto:l.support.includes("auto"),ssl_cert:l.support.includes("ssl_cert"),cf_proxy:l.support.includes("cf_proxy")})},q=()=>{j.push("/ssl_domain/domain")};return t({onDomainItemBlur:M}),(s,u)=>{const d=U,t=g,i=S,o=L,n=a,j=y,I=e,V=h,H=l;return c(),p(H,{value:w.value,"onUpdate:value":u[0]||(u[0]=e=>w.value=e)},{default:r(({index:e})=>[v(d,{class:b(C.is_wp?"w-200px!":"w-140px!"),value:w.value[e],"onUpdate:value":a=>w.value[e]=a,placeholder:s.$t("Mail.Setting.index_20"),onBlur:a=>M(w.value[e],e)},null,8,["class","value","onUpdate:value","placeholder","onBlur"])]),action:r(({index:e})=>[v(V,{class:"items-center ml-5px"},{default:r(()=>{var a;return[C.is_wp?_("",!0):(c(),p(i,{key:0},{default:r(()=>[v(t,{onClick:a=>(e=>{w.value.splice(e,1),B.value.splice(e,1),0===e&&D("update:domain",w.value[0]?w.value[0]:"")})(e),disabled:1===w.value.length,round:""},{default:r(()=>u[1]||(u[1]=[f("span",null,"-",-1)])),_:2,__:[1]},1032,["onClick","disabled"]),v(t,{onClick:a=>(e=>{w.value.splice(e+1,0,""),B.value.splice(e+1,0,{})})(e),round:""},{default:r(()=>u[2]||(u[2]=[f("span",null,"+",-1)])),_:2,__:[2]},1032,["onClick"])]),_:2},1024)),(null==(a=B.value[e])?void 0:a.support)?(c(),m("span",$,[v(I,null,{default:r(()=>[v(j,{trigger:"hover",disabled:B.value[e].support.includes("auto")},{trigger:r(()=>[v(o,{checked:B.value[e].auto,"onUpdate:checked":a=>B.value[e].auto=a,disabled:!B.value[e].support.includes("auto"),label:s.$t("SSL.Domain.index_34")},null,8,["checked","onUpdate:checked","disabled","label"])]),default:r(()=>[f("div",null,[k(x(s.$t("SSL.index_5"))+" ",1),v(n,{onClick:q},{default:r(()=>[k(x(s.$t("SSL.index_4")),1)]),_:1})])]),_:2},1032,["disabled"]),v(j,{trigger:"hover",disabled:B.value[e].support.includes("ssl_cert")},{trigger:r(()=>[v(o,{checked:B.value[e].ssl_cert,"onUpdate:checked":a=>B.value[e].ssl_cert=a,disabled:!B.value[e].support.includes("ssl_cert"),label:s.$t("SSL.index_7")},null,8,["checked","onUpdate:checked","disabled","label"])]),default:r(()=>[f("div",null,[k(x(s.$t("SSL.index_6"))+" ",1),v(n,{onClick:q},{default:r(()=>[k(x(s.$t("SSL.index_4")),1)]),_:1})])]),_:2},1032,["disabled"]),B.value[e].support.includes("cf_proxy")?(c(),p(o,{key:0,checked:B.value[e].cf_proxy,"onUpdate:checked":a=>B.value[e].cf_proxy=a,disabled:!B.value[e].support.includes("cf_proxy"),label:s.$t("SSL.index_8")},null,8,["checked","onUpdate:checked","disabled","label"])):_("",!0)]),_:2},1024)])):_("",!0)]}),_:2},1024)]),_:1},8,["value"])}}}),[["__scopeId","data-v-4f4b9d13"]]);export{C as D}; diff --git a/BTPanel/static/vite/js/domain-verification-legacy.js b/BTPanel/static/vite/js/domain-verification-legacy.js index 5eac5551..313bf56f 100644 --- a/BTPanel/static/vite/js/domain-verification-legacy.js +++ b/BTPanel/static/vite/js/domain-verification-legacy.js @@ -1 +1 @@ -System.register(["./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,l){"use strict";var a,t,n,i,o,s,u,r,d,c,_,p,m,f,v,y,h,x,C,b,w,S,k,g,B,$,L,D,V,j,P,R,M,N,U,A,H;return{setters:[e=>{a=e.o,t=e._,n=e.d,i=e.m,o=e.a},e=>{s=e.i,u=e.c,r=e.f,d=e.aB,c=e.h,_=e._,p=e.a0,m=e.u},e=>{f=e._},e=>{v=e.dR,y=e.au,h=e.aC,x=e.da,C=e.d5},e=>{b=e.k,w=e.a5,S=e.R,k=e.V,g=e.S,B=e.W,$=e.a3,L=e.j,D=e.a4,V=e.U,j=e.P,P=e.af,R=e.e,M=e.r,N=e.c,U=e.n,A=e.a2,H=e._},null,null],execute:function(){const F={class:"text-14px mb-20px!"},q=b({__name:"dns-verification",props:{form:{}},setup:e=>(e,l)=>{const t=a,n=w("i18n-t"),i=y,o=h,u=v,r=x,d=f;return k(),S("div",null,[g("div",F,[B(n,{keypath:"SSL.Business.index_15",scope:"global"},{a:$(()=>[B(t,null,{default:$(()=>[L(D(e.form.domain_name),1)]),_:1})]),b:$(()=>[L(D(e.form.record_type),1)]),_:1})]),B(d,{model:e.form,"label-width":"100px"},{default:$(()=>[B(u,{label:e.$t("Mail.Domain.index_37")},{default:$(()=>[B(i,{class:"w-380px!",value:e.form.host_record,"onUpdate:value":l[0]||(l[0]=l=>e.form.host_record=l),readonly:""},null,8,["value"]),B(o,{class:"ml-10px!",type:"primary",onClick:l[1]||(l[1]=l=>V(s)(e.form.host_record))},{default:$(()=>[L(D(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1},8,["label"]),B(u,{label:e.$t("Mail.Domain.index_36")},{default:$(()=>[B(i,{class:"w-380px!",value:e.form.record_type,"onUpdate:value":l[2]||(l[2]=l=>e.form.record_type=l),readonly:""},null,8,["value"])]),_:1},8,["label"]),B(u,{label:e.$t("Mail.Domain.index_38")},{default:$(()=>[B(r,null,{default:$(()=>[B(i,{type:"textarea",class:"w-380px!",value:e.form.record_value,"onUpdate:value":l[3]||(l[3]=l=>e.form.record_value=l),readonly:""},null,8,["value"]),B(o,{type:"primary",onClick:l[4]||(l[4]=l=>V(s)(e.form.record_value))},{default:$(()=>[L(D(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1})]),_:1},8,["label"])]),_:1},8,["model"])])}}),E={class:"text-14px mb-20px!"},T={class:"text-primary"},G=b({__name:"http-verification",props:{form:{},paths:{}},setup(e){const{t:l}=j(),a=e,{form:i,paths:o}=P(a),{columns:_}=u([{title:"URL",key:"url",width:"50%",ellipsis:{tooltip:!0}},{title:"Verification Result",key:"status",render:e=>-1===e.status?B("span",{class:"color-error"},[L("Failed("),e.status,L(")"),B(t,{class:"ml-5px! cursor-pointer",name:"base-problem",onClick:()=>{window.open("https://www.aapanel.com/docs/Function/BusinessCertificate.html#http-and-https-file-verification-methods","_blank")}},null)]):B("span",{class:"text-primary"},[L("Success")])},r({width:150,options:e=>[{label:l("Public.Btn.Copy"),onClick:()=>{s(e.url)}},{label:l("Config.Panel.index_83_1"),onClick:()=>{window.open(e.url,"_blank")}},{label:"Re-verify",onClick:async()=>{try{const{message:l}=await d({url:e.url,content:a.form.file_content});n(l)&&(e.status=l.status)}catch(l){e.status=C(l,"message.status",-1)}}}]})]);return(e,l)=>{const a=y,t=h,n=v,u=x,r=f,d=c;return k(),S("div",null,[g("div",E,[l[6]||(l[6]=L(" Please add a verification file to the following domain name [ ",-1)),g("span",T,D(V(i).domain_name),1),l[7]||(l[7]=L(" ], the verification information is as follows: ",-1))]),B(r,{model:V(i),"label-width":"100px"},{default:$(()=>[B(n,{label:"File Location"},{default:$(()=>[B(a,{class:"w-380px!",value:V(i).file_path,"onUpdate:value":l[0]||(l[0]=e=>V(i).file_path=e),readonly:""},null,8,["value"]),B(t,{class:"ml-10px!",type:"primary",onClick:l[1]||(l[1]=e=>V(s)(V(i).file_path))},{default:$(()=>[L(D(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1}),B(n,{label:e.$t("form.fileName")},{default:$(()=>[B(a,{class:"w-380px!",value:V(i).file_name,"onUpdate:value":l[2]||(l[2]=e=>V(i).file_name=e),readonly:""},null,8,["value"]),B(t,{class:"ml-10px!",type:"primary",onClick:l[3]||(l[3]=e=>V(s)(V(i).file_name))},{default:$(()=>[L(D(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1},8,["label"]),B(n,{label:e.$t("SSL.Domain.index_13")},{default:$(()=>[B(u,null,{default:$(()=>[B(a,{type:"textarea",class:"w-380px!",value:V(i).file_content,"onUpdate:value":l[4]||(l[4]=e=>V(i).file_content=e),readonly:""},null,8,["value"]),B(t,{type:"primary",onClick:l[5]||(l[5]=e=>V(s)(V(i).file_content))},{default:$(()=>[L(D(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1})]),_:1},8,["label"])]),_:1},8,["model"]),B(d,{columns:V(_),data:V(o)},null,8,["columns","data"])])}}}),I={class:"p-40px",show:!1};e("default",b({__name:"domain-verification",props:{uc_id:{},verify:{},paths:{},request:{type:Boolean},onRefresh:{type:Function}},emits:["close"],setup(e,{emit:t}){const{t:s}=j(),u=e,{uc_id:r,verify:d,request:c,paths:f}=P(u),v=t,y=R({host_record:"",record_type:"",record_value:"",domain_name:"",file_path:"/.well-known/pki-validation/",file_name:"",file_content:""}),C=M([]),b=M(""),w=N(()=>"CNAME_CSR_HASH"==b.value),F=async()=>{const{message:e}=await p({uc_id:r.value});n(e)&&("PENDING"===e.certStatus?i.success(s("SSL.Business.index_23")):(u.onRefresh(),v("close")),y.host_record=e.data.DCVdnsHost,y.record_type=e.data.DCVdnsType,y.record_value=e.data.DCVdnsValue,y.domain_name=e.data.dcvList.map(e=>e.domainName).join(","),b.value=e.data.dcvList[0].dcvMethod,y.file_name=e.data.DCVfileName,y.file_content=e.data.DCVfileContent,C.value=e.paths)},E=()=>{v("close")};U(()=>{c.value?F():T()});const T=()=>{y.host_record=d.value.DCVdnsHost,y.record_type=d.value.DCVdnsType,y.record_value=d.value.DCVdnsValue,y.domain_name=d.value.dcvList.map(e=>e.domainName).join(","),b.value=d.value.dcvList[0].dcvMethod,y.file_name=d.value.DCVfileName,y.file_content=d.value.DCVfileContent,C.value=f?.value||[]},W=()=>{m({title:"Modify the verification method",width:500,minHeight:200,data:{uc_id:r.value,onRefresh:F},footer:!0,component:H(()=>o(()=>l.import("./change-verification-legacy.js?v=1760428868419"),void 0))})};return(e,l)=>{const t=a,n=_,i=h,o=x;return k(),S("div",I,[V(w)?(k(),A(q,{key:0,form:V(y)},null,8,["form"])):(k(),A(G,{key:1,form:V(y),paths:V(C)},null,8,["form","paths"])),B(n,{class:"my-20px"},{default:$(()=>[l[0]||(l[0]=g("li",null,"Check for the existence of CAA records, and if they exist, please remove the relevant CAA records.",-1)),g("li",null,D(e.$t("SSL.Business.index_16")),1),g("li",null,D(e.$t("SSL.Business.index_17")),1),g("li",null,D(e.$t("SSL.Business.index_18")),1),g("li",null,D(e.$t("SSL.Business.index_19")),1),g("li",null,[B(t,{href:"https://www.aapanel.com/docs/Function/BusinessCertificate.html",target:"_blank"},{default:$(()=>[L(D(e.$t("SSL.Business.index_20")),1)]),_:1})])]),_:1,__:[0]}),B(o,null,{default:$(()=>[B(i,{type:"primary",onClick:F},{default:$(()=>[L(D(e.$t("SSL.Business.index_21")),1)]),_:1}),B(i,{onClick:W},{default:$(()=>l[1]||(l[1]=[L("Modifiy verify",-1)])),_:1,__:[1]}),B(i,{onClick:E},{default:$(()=>[L(D(e.$t("SSL.Business.index_22")),1)]),_:1})]),_:1})])}}}))}}}); +System.register(["./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,l){"use strict";var a,t,n,i,o,s,u,r,d,c,_,p,f,m,v,y,h,x,C,b,w,S,k,g,B,$,L,D,V,j,P,R,M,N,U,A,H;return{setters:[e=>{a=e.o,t=e._,n=e.d,i=e.m,o=e.a},e=>{s=e.i,u=e.c,r=e.f,d=e.aB,c=e.h,_=e._,p=e.a0,f=e.u},e=>{m=e._},e=>{v=e.dR,y=e.au,h=e.aC,x=e.da,C=e.d5},e=>{b=e.k,w=e.a5,S=e.R,k=e.V,g=e.S,B=e.W,$=e.a3,L=e.j,D=e.a4,V=e.U,j=e.P,P=e.af,R=e.e,M=e.r,N=e.c,U=e.n,A=e.a2,H=e._},null,null],execute:function(){const F={class:"text-14px mb-20px!"},q=b({__name:"dns-verification",props:{form:{}},setup:e=>(e,l)=>{const t=a,n=w("i18n-t"),i=y,o=h,u=v,r=x,d=m;return k(),S("div",null,[g("div",F,[B(n,{keypath:"SSL.Business.index_15",scope:"global"},{a:$(()=>[B(t,null,{default:$(()=>[L(D(e.form.domain_name),1)]),_:1})]),b:$(()=>[L(D(e.form.record_type),1)]),_:1})]),B(d,{model:e.form,"label-width":"100px"},{default:$(()=>[B(u,{label:e.$t("Mail.Domain.index_37")},{default:$(()=>[B(i,{class:"w-380px!",value:e.form.host_record,"onUpdate:value":l[0]||(l[0]=l=>e.form.host_record=l),readonly:""},null,8,["value"]),B(o,{class:"ml-10px!",type:"primary",onClick:l[1]||(l[1]=l=>V(s)(e.form.host_record))},{default:$(()=>[L(D(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1},8,["label"]),B(u,{label:e.$t("Mail.Domain.index_36")},{default:$(()=>[B(i,{class:"w-380px!",value:e.form.record_type,"onUpdate:value":l[2]||(l[2]=l=>e.form.record_type=l),readonly:""},null,8,["value"])]),_:1},8,["label"]),B(u,{label:e.$t("Mail.Domain.index_38")},{default:$(()=>[B(r,null,{default:$(()=>[B(i,{type:"textarea",class:"w-380px!",value:e.form.record_value,"onUpdate:value":l[3]||(l[3]=l=>e.form.record_value=l),readonly:""},null,8,["value"]),B(o,{type:"primary",onClick:l[4]||(l[4]=l=>V(s)(e.form.record_value))},{default:$(()=>[L(D(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1})]),_:1},8,["label"])]),_:1},8,["model"])])}}),E={class:"text-14px mb-20px!"},T={class:"text-primary"},G=b({__name:"http-verification",props:{form:{},paths:{}},setup(e){const{t:l}=j(),a=e,{form:i,paths:o}=P(a),{columns:_}=u([{title:"URL",key:"url",width:"50%",ellipsis:{tooltip:!0}},{title:"Verification Result",key:"status",render:e=>-1===e.status?B("span",{class:"color-error"},[L("Failed("),e.status,L(")"),B(t,{class:"ml-5px! cursor-pointer",name:"base-problem",onClick:()=>{window.open("https://www.aapanel.com/docs/Function/BusinessCertificate.html#http-and-https-file-verification-methods","_blank")}},null)]):B("span",{class:"text-primary"},[L("Success")])},r({width:150,options:e=>[{label:l("Public.Btn.Copy"),onClick:()=>{s(e.url)}},{label:l("Config.Panel.index_83_1"),onClick:()=>{window.open(e.url,"_blank")}},{label:"Re-verify",onClick:async()=>{try{const{message:l}=await d({url:e.url,content:a.form.file_content});n(l)&&(e.status=l.status)}catch(l){e.status=C(l,"message.status",-1)}}}]})]);return(e,l)=>{const a=y,t=h,n=v,u=x,r=m,d=c;return k(),S("div",null,[g("div",E,[l[6]||(l[6]=L(" Please add a verification file to the following domain name [ ",-1)),g("span",T,D(V(i).domain_name),1),l[7]||(l[7]=L(" ], the verification information is as follows: ",-1))]),B(r,{model:V(i),"label-width":"100px"},{default:$(()=>[B(n,{label:"File Location"},{default:$(()=>[B(a,{class:"w-380px!",value:V(i).file_path,"onUpdate:value":l[0]||(l[0]=e=>V(i).file_path=e),readonly:""},null,8,["value"]),B(t,{class:"ml-10px!",type:"primary",onClick:l[1]||(l[1]=e=>V(s)(V(i).file_path))},{default:$(()=>[L(D(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1}),B(n,{label:e.$t("file.fileName")},{default:$(()=>[B(a,{class:"w-380px!",value:V(i).file_name,"onUpdate:value":l[2]||(l[2]=e=>V(i).file_name=e),readonly:""},null,8,["value"]),B(t,{class:"ml-10px!",type:"primary",onClick:l[3]||(l[3]=e=>V(s)(V(i).file_name))},{default:$(()=>[L(D(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1},8,["label"]),B(n,{label:e.$t("SSL.Domain.index_13")},{default:$(()=>[B(u,null,{default:$(()=>[B(a,{type:"textarea",class:"w-380px!",value:V(i).file_content,"onUpdate:value":l[4]||(l[4]=e=>V(i).file_content=e),readonly:""},null,8,["value"]),B(t,{type:"primary",onClick:l[5]||(l[5]=e=>V(s)(V(i).file_content))},{default:$(()=>[L(D(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1})]),_:1},8,["label"])]),_:1},8,["model"]),B(d,{columns:V(_),data:V(o)},null,8,["columns","data"])])}}}),I={class:"p-40px",show:!1};e("default",b({__name:"domain-verification",props:{uc_id:{},verify:{},paths:{},request:{type:Boolean},onRefresh:{type:Function}},emits:["close"],setup(e,{emit:t}){const{t:s}=j(),u=e,{uc_id:r,verify:d,request:c,paths:m}=P(u),v=t,y=R({host_record:"",record_type:"",record_value:"",domain_name:"",file_path:"/.well-known/pki-validation/",file_name:"",file_content:""}),C=M([]),b=M(""),w=N(()=>"CNAME_CSR_HASH"==b.value),F=async()=>{const{message:e}=await p({uc_id:r.value});n(e)&&("PENDING"===e.certStatus?i.success(s("SSL.Business.index_23")):(u.onRefresh(),v("close")),y.host_record=e.data.DCVdnsHost,y.record_type=e.data.DCVdnsType,y.record_value=e.data.DCVdnsValue,y.domain_name=e.data.dcvList.map(e=>e.domainName).join(","),b.value=e.data.dcvList[0].dcvMethod,y.file_name=e.data.DCVfileName,y.file_content=e.data.DCVfileContent,C.value=e.paths)},E=()=>{v("close")};U(()=>{c.value?F():T()});const T=()=>{y.host_record=d.value.DCVdnsHost,y.record_type=d.value.DCVdnsType,y.record_value=d.value.DCVdnsValue,y.domain_name=d.value.dcvList.map(e=>e.domainName).join(","),b.value=d.value.dcvList[0].dcvMethod,y.file_name=d.value.DCVfileName,y.file_content=d.value.DCVfileContent,C.value=m?.value||[]},W=()=>{f({title:"Modify the verification method",width:500,minHeight:200,data:{uc_id:r.value,onRefresh:F},footer:!0,component:H(()=>o(()=>l.import("./change-verification-legacy.js?v=1762424784323"),void 0))})};return(e,l)=>{const t=a,n=_,i=h,o=x;return k(),S("div",I,[V(w)?(k(),A(q,{key:0,form:V(y)},null,8,["form"])):(k(),A(G,{key:1,form:V(y),paths:V(C)},null,8,["form","paths"])),B(n,{class:"my-20px"},{default:$(()=>[l[0]||(l[0]=g("li",null,"Check for the existence of CAA records, and if they exist, please remove the relevant CAA records.",-1)),g("li",null,D(e.$t("SSL.Business.index_16")),1),g("li",null,D(e.$t("SSL.Business.index_17")),1),g("li",null,D(e.$t("SSL.Business.index_18")),1),g("li",null,D(e.$t("SSL.Business.index_19")),1),g("li",null,[B(t,{href:"https://www.aapanel.com/docs/Function/BusinessCertificate.html",target:"_blank"},{default:$(()=>[L(D(e.$t("SSL.Business.index_20")),1)]),_:1})])]),_:1,__:[0]}),B(o,null,{default:$(()=>[B(i,{type:"primary",onClick:F},{default:$(()=>[L(D(e.$t("SSL.Business.index_21")),1)]),_:1}),B(i,{onClick:W},{default:$(()=>l[1]||(l[1]=[L("Modifiy verify",-1)])),_:1,__:[1]}),B(i,{onClick:E},{default:$(()=>[L(D(e.$t("SSL.Business.index_22")),1)]),_:1})]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/domain-verification.js b/BTPanel/static/vite/js/domain-verification.js index 9030b2c3..0dd3f28e 100644 --- a/BTPanel/static/vite/js/domain-verification.js +++ b/BTPanel/static/vite/js/domain-verification.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/change-verification.js?v=1760428868419","js/public.js?v=1760428868419","js/page_layout.js?v=1760428868419","js/vue.js?v=1760428868419","js/__commonjsHelpers__.js?v=1760428868419","js/naive.js?v=1760428868419","js/common.js?v=1760428868419","css/page_layout.css?v=1760428868419","css/public.css?v=1760428868419","js/index.vue_vue_type_script_setup_true_lang.js?v=1760428868419"])))=>i.map(i=>d[i]); -import{o as e,_ as a,d as l,m as t,a as s}from"./page_layout.js?v=1760428868419";import{i as n,c as o,f as i,aB as r,h as u,_ as d,a0 as c,u as _}from"./public.js?v=1760428868419";import{_ as p}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{dR as m,au as f,aC as v,da as y,d5 as h}from"./naive.js?v=1760428868419";import{k as x,a5 as C,R as b,V as w,S,W as k,a3 as B,j as L,a4 as $,U as D,P as V,af as j,e as g,r as P,c as R,n as M,a2 as N,_ as U}from"./vue.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const A={class:"text-14px mb-20px!"},H=x({__name:"dns-verification",props:{form:{}},setup:a=>(a,l)=>{const t=e,s=C("i18n-t"),o=f,i=v,r=m,u=y,d=p;return w(),b("div",null,[S("div",A,[k(s,{keypath:"SSL.Business.index_15",scope:"global"},{a:B(()=>[k(t,null,{default:B(()=>[L($(a.form.domain_name),1)]),_:1})]),b:B(()=>[L($(a.form.record_type),1)]),_:1})]),k(d,{model:a.form,"label-width":"100px"},{default:B(()=>[k(r,{label:a.$t("Mail.Domain.index_37")},{default:B(()=>[k(o,{class:"w-380px!",value:a.form.host_record,"onUpdate:value":l[0]||(l[0]=e=>a.form.host_record=e),readonly:""},null,8,["value"]),k(i,{class:"ml-10px!",type:"primary",onClick:l[1]||(l[1]=e=>D(n)(a.form.host_record))},{default:B(()=>[L($(a.$t("Public.Btn.Copy")),1)]),_:1})]),_:1},8,["label"]),k(r,{label:a.$t("Mail.Domain.index_36")},{default:B(()=>[k(o,{class:"w-380px!",value:a.form.record_type,"onUpdate:value":l[2]||(l[2]=e=>a.form.record_type=e),readonly:""},null,8,["value"])]),_:1},8,["label"]),k(r,{label:a.$t("Mail.Domain.index_38")},{default:B(()=>[k(u,null,{default:B(()=>[k(o,{type:"textarea",class:"w-380px!",value:a.form.record_value,"onUpdate:value":l[3]||(l[3]=e=>a.form.record_value=e),readonly:""},null,8,["value"]),k(i,{type:"primary",onClick:l[4]||(l[4]=e=>D(n)(a.form.record_value))},{default:B(()=>[L($(a.$t("Public.Btn.Copy")),1)]),_:1})]),_:1})]),_:1},8,["label"])]),_:1},8,["model"])])}}),F={class:"text-14px mb-20px!"},E={class:"text-primary"},T=x({__name:"http-verification",props:{form:{},paths:{}},setup(e){const{t:t}=V(),s=e,{form:d,paths:c}=j(s),{columns:_}=o([{title:"URL",key:"url",width:"50%",ellipsis:{tooltip:!0}},{title:"Verification Result",key:"status",render:e=>-1===e.status?k("span",{class:"color-error"},[L("Failed("),e.status,L(")"),k(a,{class:"ml-5px! cursor-pointer",name:"base-problem",onClick:()=>{window.open("https://www.aapanel.com/docs/Function/BusinessCertificate.html#http-and-https-file-verification-methods","_blank")}},null)]):k("span",{class:"text-primary"},[L("Success")])},i({width:150,options:e=>[{label:t("Public.Btn.Copy"),onClick:()=>{n(e.url)}},{label:t("Config.Panel.index_83_1"),onClick:()=>{window.open(e.url,"_blank")}},{label:"Re-verify",onClick:async()=>{try{const{message:a}=await r({url:e.url,content:s.form.file_content});l(a)&&(e.status=a.status)}catch(a){e.status=h(a,"message.status",-1)}}}]})]);return(e,a)=>{const l=f,t=v,s=m,o=y,i=p,r=u;return w(),b("div",null,[S("div",F,[a[6]||(a[6]=L(" Please add a verification file to the following domain name [ ",-1)),S("span",E,$(D(d).domain_name),1),a[7]||(a[7]=L(" ], the verification information is as follows: ",-1))]),k(i,{model:D(d),"label-width":"100px"},{default:B(()=>[k(s,{label:"File Location"},{default:B(()=>[k(l,{class:"w-380px!",value:D(d).file_path,"onUpdate:value":a[0]||(a[0]=e=>D(d).file_path=e),readonly:""},null,8,["value"]),k(t,{class:"ml-10px!",type:"primary",onClick:a[1]||(a[1]=e=>D(n)(D(d).file_path))},{default:B(()=>[L($(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1}),k(s,{label:e.$t("form.fileName")},{default:B(()=>[k(l,{class:"w-380px!",value:D(d).file_name,"onUpdate:value":a[2]||(a[2]=e=>D(d).file_name=e),readonly:""},null,8,["value"]),k(t,{class:"ml-10px!",type:"primary",onClick:a[3]||(a[3]=e=>D(n)(D(d).file_name))},{default:B(()=>[L($(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1},8,["label"]),k(s,{label:e.$t("SSL.Domain.index_13")},{default:B(()=>[k(o,null,{default:B(()=>[k(l,{type:"textarea",class:"w-380px!",value:D(d).file_content,"onUpdate:value":a[4]||(a[4]=e=>D(d).file_content=e),readonly:""},null,8,["value"]),k(t,{type:"primary",onClick:a[5]||(a[5]=e=>D(n)(D(d).file_content))},{default:B(()=>[L($(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1})]),_:1},8,["label"])]),_:1},8,["model"]),k(r,{columns:D(_),data:D(c)},null,8,["columns","data"])])}}}),q={class:"p-40px",show:!1},I=x({__name:"domain-verification",props:{uc_id:{},verify:{},paths:{},request:{type:Boolean},onRefresh:{type:Function}},emits:["close"],setup(a,{emit:n}){const{t:o}=V(),i=a,{uc_id:r,verify:u,request:p,paths:m}=j(i),f=n,h=g({host_record:"",record_type:"",record_value:"",domain_name:"",file_path:"/.well-known/pki-validation/",file_name:"",file_content:""}),x=P([]),C=P(""),A=R(()=>"CNAME_CSR_HASH"==C.value),F=async()=>{const{message:e}=await c({uc_id:r.value});l(e)&&("PENDING"===e.certStatus?t.success(o("SSL.Business.index_23")):(i.onRefresh(),f("close")),h.host_record=e.data.DCVdnsHost,h.record_type=e.data.DCVdnsType,h.record_value=e.data.DCVdnsValue,h.domain_name=e.data.dcvList.map(e=>e.domainName).join(","),C.value=e.data.dcvList[0].dcvMethod,h.file_name=e.data.DCVfileName,h.file_content=e.data.DCVfileContent,x.value=e.paths)},E=()=>{f("close")};M(()=>{p.value?F():I()});const I=()=>{h.host_record=u.value.DCVdnsHost,h.record_type=u.value.DCVdnsType,h.record_value=u.value.DCVdnsValue,h.domain_name=u.value.dcvList.map(e=>e.domainName).join(","),C.value=u.value.dcvList[0].dcvMethod,h.file_name=u.value.DCVfileName,h.file_content=u.value.DCVfileContent,x.value=(null==m?void 0:m.value)||[]},G=()=>{_({title:"Modify the verification method",width:500,minHeight:200,data:{uc_id:r.value,onRefresh:F},footer:!0,component:U(()=>s(()=>import("./change-verification.js?v=1760428868419"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])))})};return(a,l)=>{const t=e,s=d,n=v,o=y;return w(),b("div",q,[D(A)?(w(),N(H,{key:0,form:D(h)},null,8,["form"])):(w(),N(T,{key:1,form:D(h),paths:D(x)},null,8,["form","paths"])),k(s,{class:"my-20px"},{default:B(()=>[l[0]||(l[0]=S("li",null,"Check for the existence of CAA records, and if they exist, please remove the relevant CAA records.",-1)),S("li",null,$(a.$t("SSL.Business.index_16")),1),S("li",null,$(a.$t("SSL.Business.index_17")),1),S("li",null,$(a.$t("SSL.Business.index_18")),1),S("li",null,$(a.$t("SSL.Business.index_19")),1),S("li",null,[k(t,{href:"https://www.aapanel.com/docs/Function/BusinessCertificate.html",target:"_blank"},{default:B(()=>[L($(a.$t("SSL.Business.index_20")),1)]),_:1})])]),_:1,__:[0]}),k(o,null,{default:B(()=>[k(n,{type:"primary",onClick:F},{default:B(()=>[L($(a.$t("SSL.Business.index_21")),1)]),_:1}),k(n,{onClick:G},{default:B(()=>l[1]||(l[1]=[L("Modifiy verify",-1)])),_:1,__:[1]}),k(n,{onClick:E},{default:B(()=>[L($(a.$t("SSL.Business.index_22")),1)]),_:1})]),_:1})])}}});export{I as default}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/change-verification.js?v=1762424784323","js/public.js?v=1762424784323","js/page_layout.js?v=1762424784323","js/vue.js?v=1762424784323","js/__commonjsHelpers__.js?v=1762424784323","js/naive.js?v=1762424784323","js/common.js?v=1762424784323","css/page_layout.css?v=1762424784323","css/public.css?v=1762424784323","js/index.vue_vue_type_script_setup_true_lang.js?v=1762424784323"])))=>i.map(i=>d[i]); +import{o as e,_ as a,d as l,m as t,a as s}from"./page_layout.js?v=1762424784323";import{i as n,c as o,f as i,aB as r,h as u,_ as d,a0 as c,u as _}from"./public.js?v=1762424784323";import{_ as p}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{dR as m,au as f,aC as v,da as y,d5 as h}from"./naive.js?v=1762424784323";import{k as x,a5 as C,R as b,V as w,S,W as k,a3 as B,j as L,a4 as $,U as D,P as V,af as j,e as g,r as P,c as R,n as M,a2 as N,_ as U}from"./vue.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const A={class:"text-14px mb-20px!"},H=x({__name:"dns-verification",props:{form:{}},setup:a=>(a,l)=>{const t=e,s=C("i18n-t"),o=f,i=v,r=m,u=y,d=p;return w(),b("div",null,[S("div",A,[k(s,{keypath:"SSL.Business.index_15",scope:"global"},{a:B(()=>[k(t,null,{default:B(()=>[L($(a.form.domain_name),1)]),_:1})]),b:B(()=>[L($(a.form.record_type),1)]),_:1})]),k(d,{model:a.form,"label-width":"100px"},{default:B(()=>[k(r,{label:a.$t("Mail.Domain.index_37")},{default:B(()=>[k(o,{class:"w-380px!",value:a.form.host_record,"onUpdate:value":l[0]||(l[0]=e=>a.form.host_record=e),readonly:""},null,8,["value"]),k(i,{class:"ml-10px!",type:"primary",onClick:l[1]||(l[1]=e=>D(n)(a.form.host_record))},{default:B(()=>[L($(a.$t("Public.Btn.Copy")),1)]),_:1})]),_:1},8,["label"]),k(r,{label:a.$t("Mail.Domain.index_36")},{default:B(()=>[k(o,{class:"w-380px!",value:a.form.record_type,"onUpdate:value":l[2]||(l[2]=e=>a.form.record_type=e),readonly:""},null,8,["value"])]),_:1},8,["label"]),k(r,{label:a.$t("Mail.Domain.index_38")},{default:B(()=>[k(u,null,{default:B(()=>[k(o,{type:"textarea",class:"w-380px!",value:a.form.record_value,"onUpdate:value":l[3]||(l[3]=e=>a.form.record_value=e),readonly:""},null,8,["value"]),k(i,{type:"primary",onClick:l[4]||(l[4]=e=>D(n)(a.form.record_value))},{default:B(()=>[L($(a.$t("Public.Btn.Copy")),1)]),_:1})]),_:1})]),_:1},8,["label"])]),_:1},8,["model"])])}}),F={class:"text-14px mb-20px!"},E={class:"text-primary"},T=x({__name:"http-verification",props:{form:{},paths:{}},setup(e){const{t:t}=V(),s=e,{form:d,paths:c}=j(s),{columns:_}=o([{title:"URL",key:"url",width:"50%",ellipsis:{tooltip:!0}},{title:"Verification Result",key:"status",render:e=>-1===e.status?k("span",{class:"color-error"},[L("Failed("),e.status,L(")"),k(a,{class:"ml-5px! cursor-pointer",name:"base-problem",onClick:()=>{window.open("https://www.aapanel.com/docs/Function/BusinessCertificate.html#http-and-https-file-verification-methods","_blank")}},null)]):k("span",{class:"text-primary"},[L("Success")])},i({width:150,options:e=>[{label:t("Public.Btn.Copy"),onClick:()=>{n(e.url)}},{label:t("Config.Panel.index_83_1"),onClick:()=>{window.open(e.url,"_blank")}},{label:"Re-verify",onClick:async()=>{try{const{message:a}=await r({url:e.url,content:s.form.file_content});l(a)&&(e.status=a.status)}catch(a){e.status=h(a,"message.status",-1)}}}]})]);return(e,a)=>{const l=f,t=v,s=m,o=y,i=p,r=u;return w(),b("div",null,[S("div",F,[a[6]||(a[6]=L(" Please add a verification file to the following domain name [ ",-1)),S("span",E,$(D(d).domain_name),1),a[7]||(a[7]=L(" ], the verification information is as follows: ",-1))]),k(i,{model:D(d),"label-width":"100px"},{default:B(()=>[k(s,{label:"File Location"},{default:B(()=>[k(l,{class:"w-380px!",value:D(d).file_path,"onUpdate:value":a[0]||(a[0]=e=>D(d).file_path=e),readonly:""},null,8,["value"]),k(t,{class:"ml-10px!",type:"primary",onClick:a[1]||(a[1]=e=>D(n)(D(d).file_path))},{default:B(()=>[L($(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1}),k(s,{label:e.$t("file.fileName")},{default:B(()=>[k(l,{class:"w-380px!",value:D(d).file_name,"onUpdate:value":a[2]||(a[2]=e=>D(d).file_name=e),readonly:""},null,8,["value"]),k(t,{class:"ml-10px!",type:"primary",onClick:a[3]||(a[3]=e=>D(n)(D(d).file_name))},{default:B(()=>[L($(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1},8,["label"]),k(s,{label:e.$t("SSL.Domain.index_13")},{default:B(()=>[k(o,null,{default:B(()=>[k(l,{type:"textarea",class:"w-380px!",value:D(d).file_content,"onUpdate:value":a[4]||(a[4]=e=>D(d).file_content=e),readonly:""},null,8,["value"]),k(t,{type:"primary",onClick:a[5]||(a[5]=e=>D(n)(D(d).file_content))},{default:B(()=>[L($(e.$t("Public.Btn.Copy")),1)]),_:1})]),_:1})]),_:1},8,["label"])]),_:1},8,["model"]),k(r,{columns:D(_),data:D(c)},null,8,["columns","data"])])}}}),q={class:"p-40px",show:!1},I=x({__name:"domain-verification",props:{uc_id:{},verify:{},paths:{},request:{type:Boolean},onRefresh:{type:Function}},emits:["close"],setup(a,{emit:n}){const{t:o}=V(),i=a,{uc_id:r,verify:u,request:p,paths:m}=j(i),f=n,h=g({host_record:"",record_type:"",record_value:"",domain_name:"",file_path:"/.well-known/pki-validation/",file_name:"",file_content:""}),x=P([]),C=P(""),A=R(()=>"CNAME_CSR_HASH"==C.value),F=async()=>{const{message:e}=await c({uc_id:r.value});l(e)&&("PENDING"===e.certStatus?t.success(o("SSL.Business.index_23")):(i.onRefresh(),f("close")),h.host_record=e.data.DCVdnsHost,h.record_type=e.data.DCVdnsType,h.record_value=e.data.DCVdnsValue,h.domain_name=e.data.dcvList.map(e=>e.domainName).join(","),C.value=e.data.dcvList[0].dcvMethod,h.file_name=e.data.DCVfileName,h.file_content=e.data.DCVfileContent,x.value=e.paths)},E=()=>{f("close")};M(()=>{p.value?F():I()});const I=()=>{h.host_record=u.value.DCVdnsHost,h.record_type=u.value.DCVdnsType,h.record_value=u.value.DCVdnsValue,h.domain_name=u.value.dcvList.map(e=>e.domainName).join(","),C.value=u.value.dcvList[0].dcvMethod,h.file_name=u.value.DCVfileName,h.file_content=u.value.DCVfileContent,x.value=(null==m?void 0:m.value)||[]},G=()=>{_({title:"Modify the verification method",width:500,minHeight:200,data:{uc_id:r.value,onRefresh:F},footer:!0,component:U(()=>s(()=>import("./change-verification.js?v=1762424784323"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])))})};return(a,l)=>{const t=e,s=d,n=v,o=y;return w(),b("div",q,[D(A)?(w(),N(H,{key:0,form:D(h)},null,8,["form"])):(w(),N(T,{key:1,form:D(h),paths:D(x)},null,8,["form","paths"])),k(s,{class:"my-20px"},{default:B(()=>[l[0]||(l[0]=S("li",null,"Check for the existence of CAA records, and if they exist, please remove the relevant CAA records.",-1)),S("li",null,$(a.$t("SSL.Business.index_16")),1),S("li",null,$(a.$t("SSL.Business.index_17")),1),S("li",null,$(a.$t("SSL.Business.index_18")),1),S("li",null,$(a.$t("SSL.Business.index_19")),1),S("li",null,[k(t,{href:"https://www.aapanel.com/docs/Function/BusinessCertificate.html",target:"_blank"},{default:B(()=>[L($(a.$t("SSL.Business.index_20")),1)]),_:1})])]),_:1,__:[0]}),k(o,null,{default:B(()=>[k(n,{type:"primary",onClick:F},{default:B(()=>[L($(a.$t("SSL.Business.index_21")),1)]),_:1}),k(n,{onClick:G},{default:B(()=>l[1]||(l[1]=[L("Modifiy verify",-1)])),_:1,__:[1]}),k(n,{onClick:E},{default:B(()=>[L($(a.$t("SSL.Business.index_22")),1)]),_:1})]),_:1})])}}});export{I as default}; diff --git a/BTPanel/static/vite/js/echarts-legacy.js b/BTPanel/static/vite/js/echarts-legacy.js index adf0febf..40a7bfeb 100644 --- a/BTPanel/static/vite/js/echarts-legacy.js +++ b/BTPanel/static/vite/js/echarts-legacy.js @@ -1,4 +1,4 @@ -System.register(["./__commonjsHelpers__-legacy.js?v=1760428868419"],function(t,e){"use strict";var n;return{setters:[t=>{n=t.c}],execute:function(){t({B:Z_,D:Zy,E:bx,F:ei,H:ob,I:bw,J:function(t,e){if("world"===t){var n=ww[e.name];if(n){var i=[n[0],n[1]];e.setCenter(i)}}},K:B,N:go,Q:Td,T:oe,U:_d,V:K,W:Cd,X:Ad,Y:By,a:O,a0:gs,a1:$v,a2:io,a3:B_,a4:_e,a5:Ce,a6:Wt,a8:Dw,a9:eo,aa:L,ab:yt,ad:vV,ae:Uz,af:nN,ag:KB,ah:vE,ai:yw,aj:eF,ak:DB,al:EG,am:QT,an:lw,ao:JF,ap:gw,aq:function(){return Nnt||(Nnt=1,function(t){var e=c$();!function(){for(var n in e){if(null==e||!e.hasOwnProperty(n)||"default"===n||"__esModule"===n)return;t[n]=e[n]}}();var n=h$();!function(){for(var e in n){if(null==n||!n.hasOwnProperty(e)||"default"===e||"__esModule"===e)return;t[e]=n[e]}}(),kq(),function(){if(OJ)return x$;OJ=1;var t=c$();(function(){if(p$)return d$;p$=1,gW().__DEV__;var t=fK(),e=rq(),n=e.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(e,n){return t(this.getSource(),this,{useEncodeDefaulter:!0})},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clip:!0,label:{position:"top"},lineStyle:{width:2,type:"solid"},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}});d$=n})(),function(){if(N$)return R$;N$=1,gW().__DEV__;var t=IW(),e=JY().fromPoints,n=S$(),i=w$(),r=D$(),o=FX(),a=PY(),s=P$(),l=s.Polyline,u=s.Polygon,h=sq(),c=A$(),d=c.prepareDataCoordInfo,p=c.getStackedOnPoint,f=W$(),g=f.createGridClipPath,v=f.createPolarClipPath;function m(t,e){if(t.length===e.length){for(var n=0;n=0;s--){var l=i[s].dimension,u=e.dimensions[l],h=e.getDimensionInfo(u);if("x"===(r=h&&h.coordDim)||"y"===r){a=i[s];break}}if(a){var c=n.getAxis(r),d=t.map(a.stops,function(t){return{coord:c.toGlobalCoord(c.dataToCoord(t.value)),color:t.color}}),p=d.length,f=a.outerColors.slice();p&&d[0].coord>d[p-1].coord&&(d.reverse(),f.reverse());var g=10,v=d[0].coord-g,m=d[p-1].coord+g,y=m-v;if(y<.001)return"transparent";t.each(d,function(t){t.offset=(t.coord-v)/y}),d.push({offset:p?d[p-1].offset:.5,color:f[1]||"transparent"}),d.unshift({offset:p?d[0].offset:.5,color:f[0]||"transparent"});var x=new o.LinearGradient(0,0,0,0,d,!0);return x[r]=v,x[r+"2"]=m,x}}}function S(e,n,i){var r=e.get("showAllSymbol"),o="auto"===r;if(!r||o){var a=i.getAxesByScale("ordinal")[0];if(a&&(!o||!M(a,n))){var s=n.mapDimension(a.dim),l={};return t.each(a.getViewLabels(),function(t){l[t.tickValue]=1}),function(t){return!l.hasOwnProperty(n.get(s,t))}}}}function M(t,e){var n=t.getExtent(),r=Math.abs(n[1]-n[0])/t.scale.count();isNaN(r)&&(r=0);for(var o=e.count(),a=Math.max(1,Math.round(o/5)),s=0;sr)return!1;return!0}function I(t,e,n){if("cartesian2d"===t.type){var i=t.getBaseAxis().isHorizontal(),r=g(t,e,n);if(!n.get("clip",!0)){var o=r.shape,a=Math.max(o.width,o.height);i?(o.y-=a,o.height+=2*a):(o.x-=a,o.width+=2*a)}return r}return v(t,e,n)}var T=h.extend({type:"line",init:function(){var t=new o.Group,e=new n;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(e,n,i){var r=e.coordinateSystem,o=this.group,a=e.getData(),s=e.getModel("lineStyle"),l=e.getModel("areaStyle"),u=a.mapArray(a.getItemLayout),h="polar"===r.type,c=this._coordSys,p=this._symbolDraw,f=this._polyline,g=this._polygon,v=this._lineGroup,y=e.get("animation"),M=!l.isEmpty(),T=l.get("origin"),C=_(r,a,d(r,a,T)),A=e.get("showSymbol"),D=A&&!h&&S(e,a,r),L=this._data;L&&L.eachItemGraphicEl(function(t,e){t.__temp&&(o.remove(t),L.setItemGraphicEl(e,null))}),A||p.remove(),o.add(v);var k,P=!h&&e.get("step");r&&r.getArea&&e.get("clip",!0)&&(null!=(k=r.getArea()).width?(k.x-=.1,k.y-=.1,k.width+=.2,k.height+=.2):k.r0&&(k.r0-=.5,k.r1+=.5)),this._clipShapeForSymbol=k,f&&c.type===r.type&&P===this._step?(M&&!g?g=this._newPolygon(u,C,r,y):g&&!M&&(v.remove(g),g=this._polygon=null),v.setClipPath(I(r,!1,e)),A&&p.updateData(a,{isIgnore:D,clipShape:k}),a.eachItemGraphicEl(function(t){t.stopAnimation(!0)}),m(this._stackedOnPoints,C)&&m(this._points,u)||(y?this._updateAnimation(a,C,r,i,P,T):(P&&(u=b(u,r,P),C=b(C,r,P)),f.setShape({points:u}),g&&g.setShape({points:u,stackedOnPoints:C})))):(A&&p.updateData(a,{isIgnore:D,clipShape:k}),P&&(u=b(u,r,P),C=b(C,r,P)),f=this._newPolyline(u,r,y),M&&(g=this._newPolygon(u,C,r,y)),v.setClipPath(I(r,!0,e)));var O=w(a,r)||a.getVisual("color");f.useStyle(t.defaults(s.getLineStyle(),{fill:"none",stroke:O,lineJoin:"bevel"}));var R=e.get("smooth");if(R=x(e.get("smooth")),f.setShape({smooth:R,smoothMonotone:e.get("smoothMonotone"),connectNulls:e.get("connectNulls")}),g){var N=a.getCalculationInfo("stackedOnSeries"),E=0;g.useStyle(t.defaults(l.getAreaStyle(),{fill:O,opacity:.7,lineJoin:"bevel"})),N&&(E=x(N.get("smooth"))),g.setShape({smooth:R,stackedOnSmooth:E,smoothMonotone:e.get("smoothMonotone"),connectNulls:e.get("connectNulls")})}this._data=a,this._coordSys=r,this._stackedOnPoints=C,this._points=u,this._step=P,this._valueOrigin=T},dispose:function(){},highlight:function(t,e,n,r){var o=t.getData(),s=a.queryDataIndex(o,r);if(!(s instanceof Array)&&null!=s&&s>=0){var l=o.getItemGraphicEl(s);if(!l){var u=o.getItemLayout(s);if(!u)return;if(this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(u[0],u[1]))return;(l=new i(o,s)).position=u,l.setZ(t.get("zlevel"),t.get("z")),l.ignore=isNaN(u[0])||isNaN(u[1]),l.__temp=!0,o.setItemGraphicEl(s,l),l.stopSymbolAnimation(!0),this.group.add(l)}l.highlight()}else h.prototype.highlight.call(this,t,e,n,r)},downplay:function(t,e,n,i){var r=t.getData(),o=a.queryDataIndex(r,i);if(null!=o&&o>=0){var s=r.getItemGraphicEl(o);s&&(s.__temp?(r.setItemGraphicEl(o,null),this.group.remove(s)):s.downplay())}else h.prototype.downplay.call(this,t,e,n,i)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new l({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new u({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(n),this._polygon=n,n},_updateAnimation:function(t,e,n,i,a,s){var l=this._polyline,u=this._polygon,h=t.hostModel,c=r(this._data,t,this._stackedOnPoints,e,this._coordSys,n,this._valueOrigin,s),d=c.current,p=c.stackedOnCurrent,f=c.next,g=c.stackedOnNext;if(a&&(d=b(c.current,n,a),p=b(c.stackedOnCurrent,n,a),f=b(c.next,n,a),g=b(c.stackedOnNext,n,a)),y(d,f)>3e3||u&&y(p,g)>3e3)return l.setShape({points:f}),void(u&&u.setShape({points:f,stackedOnPoints:g}));l.shape.__points=c.current,l.shape.points=d,o.updateProps(l,{shape:{points:f}},h),u&&(u.setShape({points:d,stackedOnPoints:p}),o.updateProps(u,{shape:{points:f,stackedOnPoints:g}},h));for(var v=[],m=c.status,x=0;xt&&(t=e),t},defaultOption:{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1}}});GJ=e}(),function(){if(KJ)return qJ;KJ=1,gW().__DEV__;var t=c$(),e=IW(),n=FX(),i=QJ().setLabel,r=HX(),o=tQ(),a=EZ(),s=EU(),l=Mq().throttle,u=W$().createClipPath,h=function(){if(jJ)return XJ;jJ=1;var t=FX().extendShape,e=t({type:"sausage",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},buildPath:function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r0||0,0),o=Math.max(e.r,0),a=.5*(o-r),s=r+a,l=e.startAngle,u=e.endAngle,h=e.clockwise,c=Math.cos(l),d=Math.sin(l),p=Math.cos(u),f=Math.sin(u);(h?u-l<2*Math.PI:l-u<2*Math.PI)&&(t.moveTo(c*r+n,d*r+i),t.arc(c*s+n,d*s+i,a,-Math.PI+l,l,!h)),t.arc(n,i,o,l,u,!h),t.moveTo(p*o+n,f*o+i),t.arc(p*s+n,f*s+i,a,u-2*Math.PI,u-Math.PI,!h),0!==r&&(t.arc(n,i,r,u,l,h),t.moveTo(c*r+n,f*r+i)),t.closePath()}});return XJ=e}(),c=["itemStyle","barBorderWidth"],d=[0,0];function p(t,e){var n=t.getArea&&t.getArea();if("cartesian2d"===t.type){var i=t.getBaseAxis();if("category"!==i.type||!i.onBand){var r=e.getLayout("bandWidth");i.isHorizontal()?(n.x-=r,n.width+=2*r):(n.y-=r,n.height+=2*r)}}return n}e.extend(r.prototype,o);var f=t.extendChartView({type:"bar",render:function(t,e,n){this._updateDrawMode(t);var i=t.get("coordinateSystem");return"cartesian2d"!==i&&"polar"!==i||(this._isLargeDraw?this._renderLarge(t,e,n):this._renderNormal(t,e,n)),this.group},incrementalPrepareRender:function(t,e,n){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,n,i){this._incrementalRenderLarge(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(t,e,i){var r,o=this.group,a=t.getData(),l=this._data,u=t.coordinateSystem,h=u.getBaseAxis();"cartesian2d"===u.type?r=h.isHorizontal():"polar"===u.type&&(r="angle"===h.dim);var c=t.isAnimationEnabled()?t:null,d=t.get("clip",!0),f=p(u,a);o.removeClipPath();var g=t.get("roundCap",!0),v=t.get("showBackground",!0),w=t.getModel("backgroundStyle"),M=w.get("barBorderRadius")||0,I=[],T=this._backgroundEls||[],C=function(t){var e=b[u.type](a,t),n=P(u,r,e);return n.useStyle(w.getBarItemStyle()),"cartesian2d"===u.type&&n.setShape("r",M),I[t]=n,n};a.diff(l).add(function(e){var n=a.getItemModel(e),i=b[u.type](a,e,n);if(v&&C(e),a.hasValue(e)){if(d&&m[u.type](f,i))return void o.remove(s);var s=y[u.type](e,i,r,c,!1,g);a.setItemGraphicEl(e,s),o.add(s),S(s,a,e,n,i,t,r,"polar"===u.type)}}).update(function(e,i){var s=a.getItemModel(e),h=b[u.type](a,e,s);if(v){var p;0===T.length?p=C(i):((p=T[i]).useStyle(w.getBarItemStyle()),"cartesian2d"===u.type&&p.setShape("r",M),I[e]=p);var x=b[u.type](a,e),_=k(r,x,u);n.updateProps(p,{shape:_},c,e)}var A=l.getItemGraphicEl(i);if(a.hasValue(e)){if(d&&m[u.type](f,h))return void o.remove(A);A?n.updateProps(A,{shape:h},c,e):A=y[u.type](e,h,r,c,!0,g),a.setItemGraphicEl(e,A),o.add(A),S(A,a,e,s,h,t,r,"polar"===u.type)}else o.remove(A)}).remove(function(t){var e=l.getItemGraphicEl(t);"cartesian2d"===u.type?e&&x(t,c,e):e&&_(t,c,e)}).execute();var A=this._backgroundGroup||(this._backgroundGroup=new s);A.removeAll();for(var D=0;D0?1:-1,a=i.height>0?1:-1;return{x:i.x+o*r/2,y:i.y+a*r/2,width:i.width-o*r,height:i.height-a*r}},polar:function(t,e,n){var i=t.getItemLayout(e);return{cx:i.cx,cy:i.cy,r0:i.r0,r:i.r,startAngle:i.startAngle,endAngle:i.endAngle}}};function w(t){return null!=t.startAngle&&null!=t.endAngle&&t.startAngle===t.endAngle}function S(t,r,o,a,s,l,u,h){var c=r.getItemVisual(o,"color"),d=r.getItemVisual(o,"opacity"),p=r.getVisual("borderColor"),f=a.getModel("itemStyle"),g=a.getModel("emphasis.itemStyle").getBarItemStyle();h||t.setShape("r",f.get("barBorderRadius")||0),t.useStyle(e.defaults({stroke:w(s)?"none":p,fill:w(s)?"none":c,opacity:d},f.getBarItemStyle()));var v=a.getShallow("cursor");v&&t.attr("cursor",v);var m=u?s.height>0?"bottom":"top":s.width>0?"left":"right";h||i(t.style,g,a,c,l,o,m),w(s)&&(g.fill=g.stroke="none"),n.setHoverStyle(t,g)}function M(t,e){var n=t.get(c)||0,i=isNaN(e.width)?Number.MAX_VALUE:Math.abs(e.width),r=isNaN(e.height)?Number.MAX_VALUE:Math.abs(e.height);return Math.min(n,i,r)}var I=a.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var n=e.points,i=this.__startPoint,r=this.__baseDimIdx,o=0;o=0?n:null},30,!1);function A(t,e,n){var i=t.__baseDimIdx,r=1-i,o=t.shape.points,a=t.__largeDataIndices,s=Math.abs(t.__barWidth/2),l=t.__startPoint[r];d[0]=e,d[1]=n;for(var u=d[i],h=d[1-i],c=u-s,p=u+s,f=0,g=o.length/2;f=c&&m<=p&&(l<=y?h>=l&&h<=y:h>=y&&h<=l))return a[f]}return-1}function D(t,e,n){var i=n.getVisual("borderColor")||n.getVisual("color"),r=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(r),t.style.fill=null,t.style.stroke=i,t.style.lineWidth=n.getLayout("barWidth")}function L(t,e,n){var i=e.get("borderColor")||e.get("color"),r=e.getItemStyle(["color","borderColor"]);t.useStyle(r),t.style.fill=null,t.style.stroke=i,t.style.lineWidth=n.getLayout("barWidth")}function k(t,e,n){var i,r="polar"===n.type;return i=r?n.getArea():n.grid.getRect(),r?{cx:i.cx,cy:i.cy,r0:t?i.r0:e.r0,r:t?i.r:e.r,startAngle:t?e.startAngle:0,endAngle:t?e.endAngle:2*Math.PI}:{x:t?e.x:i.x,y:t?i.y:e.y,width:t?e.width:i.width,height:t?i.height:e.height}}function P(t,e,i){return new("polar"===t.type?n.Sector:n.Rect)({shape:k(e,i,t),silent:!0,z2:0})}qJ=f}(),zJ(),t.registerLayout(t.PRIORITY.VISUAL.LAYOUT,e.curry(i,"bar")),t.registerLayout(t.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,r),t.registerVisual({seriesType:"bar",reset:function(t){t.getData().setVisual("legendSymbol","roundRect")}})}(),function(){if(bQ)return wQ;bQ=1;var t=c$(),e=IW();(function(){if(lQ)return sQ;lQ=1;var t=c$(),e=SQ(),n=IW(),i=PY(),r=qX().getPercentWithPrecision,o=MQ(),a=Yj().retrieveRawAttr,s=Rj().makeSeriesEncodeForNameBased,l=IQ(),u=t.extendSeriesModel({type:"series.pie",init:function(t){u.superApply(this,"init",arguments),this.legendVisualProvider=new l(n.bind(this.getData,this),n.bind(this.getRawData,this)),this.updateSelectedMap(this._createSelectableList()),this._defaultLabelLine(t)},mergeOption:function(t){u.superCall(this,"mergeOption",t),this.updateSelectedMap(this._createSelectableList())},getInitialData:function(t,i){return e(this,{coordDimensions:["value"],encodeDefaulter:n.curry(s,this)})},_createSelectableList:function(){for(var t=this.getRawData(),e=t.mapDimension("value"),n=[],i=0,r=t.count();i0&&(c?"scale"!==d:"transition"!==p)){for(var v=s.getItemLayout(0),m=1;isNaN(v.startAngle)&&m=n.r0}}}),l=s;uQ=l}();var n=TQ(),i=CQ(),r=DQ(),o=LQ();n("pie",[{type:"pieToggleSelect",event:"pieselectchanged",method:"toggleSelected"},{type:"pieSelect",event:"pieselected",method:"select"},{type:"pieUnSelect",event:"pieunselected",method:"unSelect"}]),t.registerVisual(i("pie")),t.registerLayout(e.curry(r,"pie")),t.registerProcessor(o("pie"))}(),function(){if(EQ)return e0;EQ=1;var t=c$();(function(){if(PQ)return kQ;PQ=1;var t=fK(),e=rq(),n=e.extend({type:"series.scatter",dependencies:["grid","polar","geo","singleAxis","calendar"],getInitialData:function(e,n){return t(this.getSource(),this,{useEncodeDefaulter:!0})},brushSelector:"point",getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?5e3:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?1e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},clip:!0}});kQ=n})(),function(){if(NQ)return n0;NQ=1;var t=c$(),e=S$(),n=function(){if(RQ)return OQ;RQ=1;var t=FX(),e=ZK().createSymbol,n=GX(),i=4,r=t.extendShape({shape:{points:null},symbolProxy:null,softClipShape:null,buildPath:function(t,e){var n=e.points,r=e.size,o=this.symbolProxy,a=o.shape;if(!((t.getContext?t.getContext():t)&&r[0]=0;s--){var l=2*s,u=i[l]-o/2,h=i[l+1]-a/2;if(t>=u&&e>=h&&t<=u+o&&e<=h+a)return s}return-1}});function o(){this.group=new t.Group}var a=o.prototype;a.isPersistent=function(){return!this._incremental},a.updateData=function(t,e){this.group.removeAll();var n=new r({rectHover:!0,cursor:"default"});n.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(n,t,!1,e),this.group.add(n),this._incremental=null},a.updateLayout=function(t){if(!this._incremental){var e=t.getLayout("symbolPoints");this.group.eachChild(function(t){if(null!=t.startIndex){var n=2*(t.endIndex-t.startIndex),i=4*t.startIndex*2;e=new Float32Array(e.buffer,i,n)}t.setShape("points",e)})}},a.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new n({silent:!0})),this.group.add(this._incremental)):this._incremental=null},a.incrementalUpdate=function(t,e,n){var i;this._incremental?(i=new r,this._incremental.addDisplayable(i,!0)):((i=new r({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(i)),i.setShape({points:e.getLayout("symbolPoints")}),this._setCommon(i,e,!!this._incremental,n)},a._setCommon=function(t,n,r,o){var a=n.hostModel;o=o||{};var s=n.getVisual("symbolSize");t.setShape("size",s instanceof Array?s:[s,s]),t.softClipShape=o.clipShape||null,t.symbolProxy=e(n.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var l=t.shape.size[0]=0&&(t.dataIndex=n+(t.startIndex||0))}))},a.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},a._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var s=o;return OQ=s}(),i=Y$();t.extendChartView({type:"scatter",render:function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).updateData(i,{clipShape:this._getClipShape(t)}),this._finished=!0},incrementalPrepareRender:function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).incrementalPrepareUpdate(i),this._finished=!1},incrementalRender:function(t,e,n){this._symbolDraw.incrementalUpdate(t,e.getData(),{clipShape:this._getClipShape(e)}),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,n){var r=t.getData();if(this.group.dirty(),!this._finished||r.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var o=i().reset(t);o.progress&&o.progress({start:0,end:r.count()},r),this._symbolDraw.updateLayout(r)},_getClipShape:function(t){var e=t.coordinateSystem,n=e&&e.getArea&&e.getArea();return t.get("clip",!0)?n:null},_updateSymbolDraw:function(t,i){var r=this._symbolDraw,o=i.pipelineContext.large;return r&&o===this._isLargeDraw||(r&&r.remove(),r=this._symbolDraw=o?new n:new e,this._isLargeDraw=o,this.group.removeAll()),this.group.add(r.group),r},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},dispose:function(){}})}();var e=U$(),n=Y$();zJ(),t.registerVisual(e("scatter","circle")),t.registerLayout(n("scatter"))}(),function(){if(t0)return i0;t0=1;var t=c$();YQ||(YQ=1,function(){if(GQ)return BQ;GQ=1;var t=IW(),e=function(){if(VQ)return zQ;VQ=1;var t=IW(),e=u$();function n(t,n,i){e.call(this,t,n,i),this.type="value",this.angle=0,this.name="",this.model}t.inherits(n,e);var i=n;return zQ=i}(),n=DK(),i=qX(),r=FK(),o=r.getScaleExtent,a=r.niceScaleExtent,s=zj(),l=GK();function u(i,r,o){this._model=i,this.dimensions=[],this._indicatorAxes=t.map(i.getIndicatorModels(),function(t,i){var r="indicator_"+i,o=new e(r,"log"===t.get("axisType")?new l:new n);return o.name=t.get("name"),o.model=t,t.axis=o,this.dimensions.push(r),o},this),this.resize(i,o),this.cx,this.cy,this.r,this.r0,this.startAngle}u.prototype.getIndicatorAxes=function(){return this._indicatorAxes},u.prototype.dataToPoint=function(t,e){var n=this._indicatorAxes[e];return this.coordToPoint(n.dataToCoord(t),e)},u.prototype.coordToPoint=function(t,e){var n=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(n),this.cy-t*Math.sin(n)]},u.prototype.pointToData=function(t){var e=t[0]-this.cx,n=t[1]-this.cy,i=Math.sqrt(e*e+n*n);e/=i,n/=i;for(var r,o=Math.atan2(-n,e),a=1/0,s=-1,l=0;ln[0]&&isFinite(f)&&isFinite(n[0]));else{s.getTicks().length-1>l&&(d=u(d));var p=Math.ceil(n[1]/d)*d,f=i.round(p-d*l);s.setExtent(f,p),s.setInterval(d)}})},u.dimensions=[],u.create=function(t,e){var n=[];return t.eachComponent("radar",function(i){var r=new u(i,t,e);n.push(r),i.coordinateSystem=r}),t.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=n[t.get("radarIndex")||0])}),n},s.register("radar",u);var h=u;BQ=h}(),function(){if(HQ)return FQ;HQ=1;var t=c$(),e=IW(),n=cJ(),i=HX(),r=HK(),o=n.valueAxis;function a(t,n){return e.defaults({show:n},t)}var s=t.extendComponentModel({type:"radar",optionUpdated:function(){var t=this.get("boundaryGap"),n=this.get("splitNumber"),o=this.get("scale"),a=this.get("axisLine"),s=this.get("axisTick"),l=this.get("axisType"),u=this.get("axisLabel"),h=this.get("name"),c=this.get("name.show"),d=this.get("name.formatter"),p=this.get("nameGap"),f=this.get("triggerEvent"),g=e.map(this.get("indicator")||[],function(g){null!=g.max&&g.max>0&&!g.min?g.min=0:null!=g.min&&g.min<0&&!g.max&&(g.max=0);var v=h;if(null!=g.color&&(v=e.defaults({color:g.color},h)),g=e.merge(e.clone(g),{boundaryGap:t,splitNumber:n,scale:o,axisLine:a,axisTick:s,axisType:l,axisLabel:u,name:g.text,nameLocation:"end",nameGap:p,nameTextStyle:v,triggerEvent:f},!1),c||(g.name=""),"string"==typeof d){var m=g.name;g.name=d.replace("{value}",null!=m?m:"")}else"function"==typeof d&&(g.name=d(g.name,g));var y=e.extend(new i(g,null,this.ecModel),r);return y.mainType="radar",y.componentIndex=this.componentIndex,y},this);this.getIndicatorModels=function(){return g}},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"75%",startAngle:90,name:{show:!0},boundaryGap:[0,0],splitNumber:5,nameGap:15,scale:!1,shape:"polygon",axisLine:e.merge({lineStyle:{color:"#bbb"}},o.axisLine),axisLabel:a(o.axisLabel,!1),axisTick:a(o.axisTick,!1),axisType:"interval",splitLine:a(o.splitLine,!0),splitArea:a(o.splitArea,!0),indicator:[]}}),l=s;FQ=l}(),function(){if(UQ)return WQ;UQ=1,gW().__DEV__;var t=c$(),e=IW(),n=xJ(),i=FX(),r=["axisLine","axisTickLabel","axisName"],o=t.extendComponentView({type:"radar",render:function(t,e,n){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var i=t.coordinateSystem,o=i.getIndicatorAxes(),a=e.map(o,function(t){return new n(t.model,{position:[i.cx,i.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})});e.each(a,function(t){e.each(r,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){var n=t.coordinateSystem,r=n.getIndicatorAxes();if(r.length){var o=t.get("shape"),a=t.getModel("splitLine"),s=t.getModel("splitArea"),l=a.getModel("lineStyle"),u=s.getModel("areaStyle"),h=a.get("show"),c=s.get("show"),d=l.get("color"),p=u.get("color");d=e.isArray(d)?d:[d],p=e.isArray(p)?p:[p];var f=[],g=[];if("circle"===o)for(var v=r[0].getTicksCoords(),m=n.cx,y=n.cy,x=0;x":"\n";return i(""===l?this.name:l)+u+n.map(s,function(e,n){var r=a.get(a.mapDimension(e.dim),t);return i(e.name+" : "+r)}).join(u)},getTooltipPosition:function(t){if(null!=t)for(var e=this.getData(),i=this.coordinateSystem,r=e.getValues(n.map(i.dimensions,function(t){return e.mapDimension(t)}),t,!0),o=0,a=r.length;o":"\n";return h.join(", ")+f+r(l+" : "+s)},getTooltipPosition:function(t){if(null!=t){var e=this.getData().getName(t),n=this.coordinateSystem,i=n.getRegion(e);return i&&n.dataToPoint(i.center)}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},defaultOption:{zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:.75,showLegendSymbol:!0,dataRangeHoverLink:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}},nameProperty:"name"}});t.mixin(h,a);var c=h;x0=c})(),function(){if(V0)return z0;V0=1;var t=c$(),e=IW(),n=FX(),i=F0(),r="__seriesMapHighDown",o="__seriesMapCallKey",a=t.extendChartView({type:"map",render:function(t,e,n,r){if(!r||"mapToggleSelect"!==r.type||r.from!==this.uid){var o=this.group;if(o.removeAll(),!t.getHostGeoModel()){if(r&&"geoRoam"===r.type&&"series"===r.componentType&&r.seriesId===t.id)(a=this._mapDraw)&&o.add(a.group);else if(t.needsDrawMap){var a=this._mapDraw||new i(n,!0);o.add(a.group),a.draw(t,e,n,this,r),this._mapDraw=a}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,n)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(t,i,a){var u=t.originalData,h=this.group;u.each(u.mapDimension("value"),function(i,a){if(!isNaN(i)){var c=u.getItemLayout(a);if(c&&c.point){var d=c.point,p=c.offset,f=new n.Circle({style:{fill:t.getData().getVisual("color")},shape:{cx:d[0]+9*p,cy:d[1],r:3},silent:!0,z2:8+(p?0:n.Z2_EMPHASIS_LIFT+1)});if(!p){var g=t.mainSeries.getData(),v=u.getName(a),m=g.indexOfName(v),y=u.getItemModel(a),x=y.getModel("label"),_=y.getModel("emphasis.label"),b=g.getItemGraphicEl(m),w=e.retrieve2(t.getFormattedLabel(m,"normal"),v),S=e.retrieve2(t.getFormattedLabel(m,"emphasis"),w),M=b[r],I=Math.random();if(!M){M=b[r]={};var T=e.curry(s,!0),C=e.curry(s,!1);b.on("mouseover",T).on("mouseout",C).on("emphasis",T).on("normal",C)}b[o]=I,e.extend(M,{recordVersion:I,circle:f,labelModel:x,hoverLabelModel:_,emphasisText:S,normalText:w}),l(M,!1)}h.add(f)}}})}});function s(t){var e=this[r];e&&e.recordVersion===this[o]&&l(e,t)}function l(t,e){var i=t.circle,r=t.labelModel,o=t.hoverLabelModel,a=t.emphasisText,s=t.normalText;e?(i.style.extendFrom(n.setTextStyle({},o,{text:o.get("show")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=n.Z2_EMPHASIS_LIFT):(n.setTextStyle(i.style,r,{text:r.get("show")?s:null,textPosition:r.getShallow("position")||"bottom"},{isRectText:!0,useInsideStyle:!1}),i.dirty(!1),null!=i.__mapOriginalZ2&&(i.z2=i.__mapOriginalZ2,i.__mapOriginalZ2=null))}z0=a}(),l1(),h1();var e=c1(),n=d1(),i=p1(),r=f1(),o=TQ();t.registerLayout(e),t.registerVisual(n),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,i),t.registerPreprocessor(r),o("map",[{type:"mapToggleSelect",event:"mapselectchanged",method:"toggleSelected"},{type:"mapSelect",event:"mapselected",method:"select"},{type:"mapUnSelect",event:"mapunselected",method:"unSelect"}])}(),function(){if(O1)return b1;O1=1;var t=c$();(function(){if(_1)return x1;_1=1;var t=rq(),e=S1(),n=sj().encodeHTML,i=HX(),r=t.extend({type:"series.tree",layoutInfo:null,layoutMode:"box",getInitialData:function(t){var n={name:t.name,children:t.data},r=t.leaves||{},o=new i(r,this,this.ecModel),a=e.createTree(n,this,s);function s(t){t.wrapMethod("getItemModel",function(t,e){var n=a.getNodeByDataIndex(e);return n.children.length&&n.isExpand||(t.parentModel=o),t})}var l=0;a.eachNode("preorder",function(t){t.depth>l&&(l=t.depth)});var u=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:l;return a.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=u}),a.data},getOrient:function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},formatTooltip:function(t){for(var e=this.getData().tree,i=e.root.children[0],r=e.getNodeByDataIndex(t),o=r.getValue(),a=r.name;r&&r!==i;)a=r.parentNode.name+"."+a,r=r.parentNode;return n(a+(isNaN(o)||null==o?"":" : "+o))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderColor:"#c23531",borderWidth:1.5},label:{show:!0,color:"#555"},leaves:{label:{show:!0}},animationEasing:"linear",animationDuration:700,animationDurationUpdate:1e3}});x1=r})(),function(){if(T1)return I1;T1=1;var t=IW(),e=FX(),n=w$(),i=A1().radialCoordinate,r=c$(),o=JY(),a=u1(),s=O0(),l=L0(),u=G0().onIrrelevantElement;gW().__DEV__;var h=qX().parsePercent,c=e.extendShape({shape:{parentPoint:[],childPoints:[],orient:"",forkPosition:""},style:{stroke:"#000",fill:null},buildPath:function(t,e){var n=e.childPoints,i=n.length,r=e.parentPoint,o=n[0],a=n[i-1];if(1===i)return t.moveTo(r[0],r[1]),void t.lineTo(o[0],o[1]);var s=e.orient,l="TB"===s||"BT"===s?0:1,u=1-l,c=h(e.forkPosition,1),d=[];d[l]=r[l],d[u]=r[u]+(a[u]-r[u])*c,t.moveTo(r[0],r[1]),t.lineTo(d[0],d[1]),t.moveTo(o[0],o[1]),d[l]=o[l],t.lineTo(d[0],d[1]),d[l]=a[l],t.lineTo(d[0],d[1]),t.lineTo(a[0],a[1]);for(var p=1;pS.x)||(_-=Math.PI);var T=b?"left":"right",C=s.labelModel.get("rotate"),A=C*(Math.PI/180);x.setStyle({textPosition:s.labelModel.get("position")||T,textRotation:null==C?-_:A,textOrigin:"center",verticalAlign:"middle"})}v(a,u,c,r,m,g,y,o,s)}function v(n,i,r,o,a,s,l,u,h){var d=h.edgeShape,p=o.__edge;if("curve"===d)i.parentNode&&i.parentNode!==r&&(p||(p=o.__edge=new e.BezierCurve({shape:y(h,a,a),style:t.defaults({opacity:0,strokeNoScale:!0},h.lineStyle)})),e.updateProps(p,{shape:y(h,s,l),style:t.defaults({opacity:1},h.lineStyle)},n));else if("polyline"===d&&"orthogonal"===h.layout&&i!==r&&i.children&&0!==i.children.length&&!0===i.isExpand){for(var f=i.children,g=[],v=0;v=0;m--){var y=v[m],x=y.node,_=y.width,b=y.text;g>f.width&&(g-=_-d,_=d,b=null);var w=new t.Polygon({shape:{points:l(c,0,_,p,m===v.length-1,0===m)},style:n.defaults(a.getItemStyle(),{lineJoin:"bevel",text:b,textFill:s.getTextColor(),textFont:s.getFont()}),z:10,onclick:n.curry(h,x)});this.group.add(w),u(w,i,x),c+=_+o}},remove:function(){this.group.removeAll()}};var h=s;return G1=h}(),a=L0(),s=NU(),l=eU(),u=function(){if(Y1)return n2;Y1=1;var t=IW();function e(){var e,n=[],i={};return{add:function(e,r,o,a,s){return t.isString(a)&&(s=a,a=0),!i[e.id]&&(i[e.id]=1,n.push({el:e,target:r,time:o,delay:a,easing:s}),!0)},done:function(t){return e=t,this},start:function(){for(var t=n.length,r=0,o=n.length;rv||Math.abs(t.dy)>v)){var e=this.seriesModel.getData().tree.root;if(!e)return;var n=e.getLayout();if(!n)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+t.dx,y:n.y+t.dy,width:n.width,height:n.height}})}},_onZoom:function(t){var e=t.originX,n=t.originY;if("animating"!==this._state){var i=this.seriesModel.getData().tree.root;if(!i)return;var r=i.getLayout();if(!r)return;var o=new s(r.x,r.y,r.width,r.height),a=this.seriesModel.layoutInfo;e-=a.x,n-=a.y;var u=l.create();l.translate(u,u,[-e,-n]),l.scale(u,u,[t.scale,t.scale]),l.translate(u,u,[e,n]),o.applyTransform(u),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:o.x,y:o.y,width:o.width,height:o.height}})}},_initEvents:function(t){t.on("click",function(t){if("ready"===this._state){var e=this.seriesModel.get("nodeClick",!0);if(e){var n=this.findTarget(t.offsetX,t.offsetY);if(n){var i=n.node;if(i.getLayout().isLeafRoot)this._rootToNode(n);else if("zoomToNode"===e)this._zoomToNode(n);else if("link"===e){var r=i.hostTree.data.getItemModel(i.dataIndex),o=r.get("link",!0),a=r.get("target",!0)||"blank";o&&c(o,a)}}}}},this)},_renderBreadcrumb:function(t,e,n){function i(e){"animating"!==this._state&&(r.aboveViewRoot(t.getViewRoot(),e)?this._rootToNode({node:e}):this._zoomToNode({node:e}))}n||(n=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(n={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new o(this.group))).render(t,e,n.node,d(i,this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage=C(),this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},dispose:function(){this._clearController()},_zoomToNode:function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},_rootToNode:function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},findTarget:function(t,e){var n;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(i){var r=this._storage.background[i.getRawIndex()];if(r){var o=r.transformCoordToLocal(t,e),a=r.shape;if(!(a.x<=o[0]&&o[0]<=a.x+a.width&&a.y<=o[1]&&o[1]<=a.y+a.height))return!1;n={node:i,offsetX:o[0],offsetY:o[1]}}},this),n}});function C(){return{nodeGroup:[],background:[],content:[]}}function A(t,i,r,o,a,s,l,u,h,c){if(l){var d=l.getLayout(),g=t.getData();if(g.setItemGraphicEl(l.dataIndex,null),d&&d.isInView){var v=d.width,b=d.height,T=d.borderWidth,C=d.invisible,A=l.getRawIndex(),L=u&&u.getRawIndex(),k=l.viewChildren,P=d.upperHeight,O=k&&k.length,R=l.getModel("itemStyle"),N=l.getModel("emphasis.itemStyle"),E=Y("nodeGroup",p);if(E){if(h.add(E),E.attr("position",[d.x||0,d.y||0]),E.__tmNodeWidth=v,E.__tmNodeHeight=b,d.isAboveViewRoot)return E;var z=l.getModel(),V=Y("background",f,c,w);if(V&&G(E,V,O&&d.upperLabelHeight),O)n.isHighDownDispatcher(E)&&n.setAsHighDownDispatcher(E,!1),V&&(n.setAsHighDownDispatcher(V,!0),g.setItemGraphicEl(l.dataIndex,V));else{var B=Y("content",f,c,S);B&&F(E,B),V&&n.isHighDownDispatcher(V)&&n.setAsHighDownDispatcher(V,!1),n.setAsHighDownDispatcher(E,!0),g.setItemGraphicEl(l.dataIndex,E)}return E}}}function G(e,i,r){if(i.dataIndex=l.dataIndex,i.seriesIndex=t.seriesIndex,i.setShape({x:0,y:0,width:v,height:b}),C)H(i);else{i.invisible=!1;var o=l.getVisual("borderColor",!0),a=N.get("borderColor"),s=I(R);s.fill=o;var u=M(N);if(u.fill=a,r){var h=v-2*T;W(s,u,o,h,P,{x:T,y:0,width:h,height:P})}else s.text=u.text=null;i.setStyle(s),n.setElementHoverStyle(i,u)}e.add(i)}function F(e,i){i.dataIndex=l.dataIndex,i.seriesIndex=t.seriesIndex;var r=Math.max(v-2*T,0),o=Math.max(b-2*T,0);if(i.culling=!0,i.setShape({x:T,y:T,width:r,height:o}),C)H(i);else{i.invisible=!1;var a=l.getVisual("color",!0),s=I(R);s.fill=a;var u=M(N);W(s,u,a,r,o),i.setStyle(s),n.setElementHoverStyle(i,u)}e.add(i)}function H(t){!t.invisible&&s.push(t)}function W(i,r,o,a,s,u){var h=z.get("name"),c=z.getModel(u?x:m),p=z.getModel(u?_:y),f=c.getShallow("show");n.setLabelStyle(i,r,c,p,{defaultText:f?h:null,autoColor:o,isRectText:!0,labelFetcher:t,labelDataIndex:l.dataIndex,labelProp:u?"upperLabel":"label"}),U(i,u,d),U(r,u,d),u&&(i.textRect=e.clone(u)),i.truncate=f&&c.get("ellipsis")?{outerWidth:a,outerHeight:s,minChar:2}:null}function U(e,n,i){var r=e.text;if(!n&&i.isLeafRoot&&null!=r){var o=t.get("drillDownIcon",!0);e.text=o?o+" "+r:r}}function Y(t,e,n,o){var s=null!=L&&r[t][L],l=a[t];return s?(r[t][L]=null,Z(l,s,t)):C||((s=new e({z:D(n,o)})).__tmDepth=n,s.__tmStorageName=t,X(l,s,t)),i[t][A]=s}function Z(t,n,i){(t[A]={}).old="nodeGroup"===i?n.position.slice():e.extend({},n.shape)}function X(t,e,n){var i=t[A]={},r=l.parentNode;if(r&&(!o||"drillDown"===o.direction)){var s=0,u=0,h=a.background[r.getRawIndex()];!o&&h&&h.old&&(s=h.old.width,u=h.old.height),i.old="nodeGroup"===n?[0,u]:{x:s,y:u,width:0,height:0}}i.fadein="nodeGroup"!==n}}function D(t,e){var n=t*b+e;return(n-1)/n}Z1=T}(),function(){if(j1)return i2;j1=1;for(var t=c$(),e=U1(),n=function(){},i=["treemapZoomToNode","treemapRender","treemapMove"],r=0;r ")),r.value&&(u+=" : "+o(r.value)),u}return c.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var t=n.map(this.option.categories||[],function(t){return null!=t.value?t:n.extend({value:0},t)}),i=new e(["value"],this);i.initData(t),this._categoriesData=i,this._categoriesModels=i.mapArray(function(t){return i.getItemModel(t,!0)})},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},isAnimationEnabled:function(){return c.superCall(this,"isAnimationEnabled")&&!("force"===this.get("layout")&&this.get("force.layoutAnimation"))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,hoverAnimation:!0,layout:null,focusNodeAdjacency:!1,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,opacity:.5},emphasis:{label:{show:!0}}}});f2=c})(),function(){if(k2)return L2;k2=1;var t=c$(),e=IW(),n=S$(),i=T2(),r=L0(),o=O0(),a=G0().onIrrelevantElement,s=FX(),l=R2(),u=O2().getNodeGlobalScale,h="__focusNodeAdjacency",c="__unfocusNodeAdjacency",d=["itemStyle","opacity"],p=["lineStyle","opacity"];function f(t,e){var n=t.getVisual("opacity");return null!=n?n:t.getModel().get(e)}function g(t,e,n){var i=t.getGraphicEl(),r=f(t,e);null!=n&&(null==r&&(r=1),r*=n),i.downplay&&i.downplay(),i.traverse(function(t){if(!t.isGroup){var e=t.lineLabelOriginalOpacity;null!=e&&null==n||(e=r),t.setStyle("opacity",e)}})}function v(t,e){var n=f(t,e),i=t.getGraphicEl();i.traverse(function(t){!t.isGroup&&t.setStyle("opacity",n)}),i.highlight&&i.highlight()}var m=t.extendChartView({type:"graph",init:function(t,e){var o=new n,a=new i,s=this.group;this._controller=new r(e.getZr()),this._controllerHost={target:s},s.add(o.group),s.add(a.group),this._symbolDraw=o,this._lineDraw=a,this._firstRender=!0},render:function(t,e,n){var i=this,r=t.coordinateSystem;this._model=t;var o=this._symbolDraw,a=this._lineDraw,d=this.group;if("view"===r.type){var p={position:r.position,scale:r.scale};this._firstRender?d.attr(p):s.updateProps(d,p,t)}l(t.getGraph(),u(t));var f=t.getData();o.updateData(f);var g=t.getEdgeData();a.updateData(g),this._updateNodeAndLinkScale(),this._updateController(t,e,n),clearTimeout(this._layoutTimeout);var v=t.forceLayout,m=t.get("force.layoutAnimation");v&&this._startForceLayoutIteration(v,m),f.eachItemGraphicEl(function(e,r){var o=f.getItemModel(r);e.off("drag").off("dragend");var a=o.get("draggable");a&&e.on("drag",function(){v&&(v.warmUp(),!this._layouting&&this._startForceLayoutIteration(v,m),v.setFixed(r),f.setItemLayout(r,e.position))},this).on("dragend",function(){v&&v.setUnfixed(r)},this),e.setDraggable(a&&v),e[h]&&e.off("mouseover",e[h]),e[c]&&e.off("mouseout",e[c]),o.get("focusNodeAdjacency")&&(e.on("mouseover",e[h]=function(){i._clearTimer(),n.dispatchAction({type:"focusNodeAdjacency",seriesId:t.id,dataIndex:e.dataIndex})}),e.on("mouseout",e[c]=function(){i._dispatchUnfocus(n)}))},this),f.graph.eachEdge(function(e){var r=e.getGraphicEl();r[h]&&r.off("mouseover",r[h]),r[c]&&r.off("mouseout",r[c]),e.getModel().get("focusNodeAdjacency")&&(r.on("mouseover",r[h]=function(){i._clearTimer(),n.dispatchAction({type:"focusNodeAdjacency",seriesId:t.id,edgeDataIndex:e.dataIndex})}),r.on("mouseout",r[c]=function(){i._dispatchUnfocus(n)}))});var y="circular"===t.get("layout")&&t.get("circular.rotateLabel"),x=f.getLayout("cx"),_=f.getLayout("cy");f.eachItemGraphicEl(function(t,e){var n=f.getItemModel(e).get("label.rotate")||0,i=t.getSymbolPath();if(y){var r=f.getItemLayout(e),o=Math.atan2(r[1]-_,r[0]-x);o<0&&(o=2*Math.PI+o);var a=r[0]=t&&(0===e?0:r[e-1][0]).4?"bottom":"middle",textAlign:k<-.4?"left":k>.4?"right":"center"},{autoColor:E}),silent:!0}))}if(x.get("show")&&L!==b){for(var z=0;z<=w;z++){k=Math.cos(I),P=Math.sin(I);var V=new e.Line({shape:{x1:k*g+p,y1:P*g+f,x2:k*(g-M)+p,y2:P*(g-M)+f},silent:!0,style:D});"auto"===D.stroke&&V.setStyle({stroke:a((L+z/w)/b)}),d.add(V),I+=C}I-=C}else I+=T}},_renderPointer:function(n,i,o,s,l,u,h,c){var d=this.group,p=this._data;if(n.get("pointer.show")){var f=[+n.get("min"),+n.get("max")],g=[u,h],v=n.getData(),m=v.mapDimension("value");v.diff(p).add(function(i){var r=new t({shape:{angle:u}});e.initProps(r,{shape:{angle:a(v.get(m,i),f,g,!0)}},n),d.add(r),v.setItemGraphicEl(i,r)}).update(function(t,i){var r=p.getItemGraphicEl(i);e.updateProps(r,{shape:{angle:a(v.get(m,t),f,g,!0)}},n),d.add(r),v.setItemGraphicEl(t,r)}).remove(function(t){var e=p.getItemGraphicEl(t);d.remove(e)}).execute(),v.eachItemGraphicEl(function(t,n){var i=v.getItemModel(n),o=i.getModel("pointer");t.setShape({x:l.cx,y:l.cy,width:r(o.get("width"),l.r),r:r(o.get("length"),l.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",s(a(v.get(m,n),f,[0,1],!0))),e.setHoverStyle(t,i.getModel("emphasis.itemStyle").getItemStyle())}),this._data=v}else p&&p.eachItemGraphicEl(function(t){d.remove(t)})},_renderTitle:function(t,n,i,o,s){var l=t.getData(),u=l.mapDimension("value"),h=t.getModel("title");if(h.get("show")){var c=h.get("offsetCenter"),d=s.cx+r(c[0],s.r),p=s.cy+r(c[1],s.r),f=+t.get("min"),g=+t.get("max"),v=t.getData().get(u,0),m=o(a(v,[f,g],[0,1],!0));this.group.add(new e.Text({silent:!0,style:e.setTextStyle({},h,{x:d,y:p,text:l.getName(0),textAlign:"center",textVerticalAlign:"middle"},{autoColor:m,forceRich:!0})}))}},_renderDetail:function(t,n,i,o,s){var u=t.getModel("detail"),h=+t.get("min"),c=+t.get("max");if(u.get("show")){var d=u.get("offsetCenter"),p=s.cx+r(d[0],s.r),f=s.cy+r(d[1],s.r),g=r(u.get("width"),s.r),v=r(u.get("height"),s.r),m=t.getData(),y=m.get(m.mapDimension("value"),0),x=o(a(y,[h,c],[0,1],!0));this.group.add(new e.Text({silent:!0,style:e.setTextStyle({},u,{x:p,y:f,text:l(y,u.get("formatter")),textWidth:isNaN(g)?null:g,textHeight:isNaN(v)?null:v,textAlign:"center",textVerticalAlign:"middle"},{autoColor:x,forceRich:!0})}))}}}),c=h;g5=c}()),function(){if(C5)return A5;C5=1;var t=c$();(function(){if(w5)return b5;w5=1;var t=c$(),e=IW(),n=SQ(),i=PY().defaultEmphasis,r=Rj().makeSeriesEncodeForNameBased,o=IQ(),a=t.extendSeriesModel({type:"series.funnel",init:function(t){a.superApply(this,"init",arguments),this.legendVisualProvider=new o(e.bind(this.getData,this),e.bind(this.getRawData,this)),this._defaultLabelLine(t)},getInitialData:function(t,i){return n(this,{coordDimensions:["value"],encodeDefaulter:e.curry(r,this)})},_defaultLabelLine:function(t){i(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},getDataParams:function(t){var e=this.getData(),n=a.superCall(this,"getDataParams",t),i=e.mapDimension("value"),r=e.getSum(i);return n.percent=r?+(e.get(i,t)/r*100).toFixed(2):0,n.$vars.push("percent"),n},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",orient:"vertical",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}}}});b5=a})(),function(){if(M5)return S5;M5=1;var t=FX(),e=IW(),n=sq();function i(e,n){t.Group.call(this);var i=new t.Polygon,r=new t.Polyline,o=new t.Text;this.add(i),this.add(r),this.add(o),this.highDownOnUpdate=function(t,e){"emphasis"===e?(r.ignore=r.hoverIgnore,o.ignore=o.hoverIgnore):(r.ignore=r.normalIgnore,o.ignore=o.normalIgnore)},this.updateData(e,n,!0)}var r=i.prototype,o=["itemStyle","opacity"];r.updateData=function(n,i,r){var a=this.childAt(0),s=n.hostModel,l=n.getItemModel(i),u=n.getItemLayout(i),h=n.getItemModel(i).get(o);h=null==h?1:h,a.useStyle({}),r?(a.setShape({points:u.points}),a.setStyle({opacity:0}),t.initProps(a,{style:{opacity:h}},s,i)):t.updateProps(a,{style:{opacity:h},shape:{points:u.points}},s,i);var c=l.getModel("itemStyle"),d=n.getItemVisual(i,"color");a.setStyle(e.defaults({lineJoin:"round",fill:d},c.getItemStyle(["opacity"]))),a.hoverStyle=c.getModel("emphasis").getItemStyle(),this._updateLabel(n,i),t.setHoverStyle(this)},r._updateLabel=function(e,n){var i=this.childAt(1),r=this.childAt(2),o=e.hostModel,a=e.getItemModel(n),s=e.getItemLayout(n).label,l=e.getItemVisual(n,"color");t.updateProps(i,{shape:{points:s.linePoints||s.linePoints}},o,n),t.updateProps(r,{style:{x:s.x,y:s.y}},o,n),r.attr({rotation:s.rotation,origin:[s.x,s.y],z2:10});var u=a.getModel("label"),h=a.getModel("emphasis.label"),c=a.getModel("labelLine"),d=a.getModel("emphasis.labelLine");l=e.getItemVisual(n,"color"),t.setLabelStyle(r.style,r.hoverStyle={},u,h,{labelFetcher:e.hostModel,labelDataIndex:n,defaultText:e.getName(n),autoColor:l,useInsideStyle:!!s.inside},{textAlign:s.textAlign,textVerticalAlign:s.verticalAlign}),r.ignore=r.normalIgnore=!u.get("show"),r.hoverIgnore=!h.get("show"),i.ignore=i.normalIgnore=!c.get("show"),i.hoverIgnore=!d.get("show"),i.setStyle({stroke:l}),i.setStyle(c.getModel("lineStyle").getLineStyle()),i.hoverStyle=d.getModel("lineStyle").getLineStyle()},e.inherits(i,t.Group);var a=n.extend({type:"funnel",render:function(t,e,n){var r=t.getData(),o=this._data,a=this.group;r.diff(o).add(function(t){var e=new i(r,t);r.setItemGraphicEl(t,e),a.add(e)}).update(function(t,e){var n=o.getItemGraphicEl(e);n.updateData(r,t),a.add(n),r.setItemGraphicEl(t,n)}).remove(function(t){var e=o.getItemGraphicEl(t);a.remove(e)}).execute(),this._data=r},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}}),s=a;S5=s}();var e=CQ(),n=D5(),i=LQ();t.registerVisual(e("funnel")),t.registerLayout(n),t.registerProcessor(i("funnel"))}(),function(){if(f3)return P5;f3=1;var t=c$();x3(),function(){if(u3)return l3;u3=1;var t=IW(),e=t.each,n=t.createHashMap,i=rq(),r=fK(),o=i.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var n=this.getSource();return a(n,this),r(n,this)},getRawIndicesByActiveState:function(t){var e=this.coordinateSystem,n=this.getData(),i=[];return e.eachActiveState(n,function(e,r){t===e&&i.push(n.getRawIndex(r))}),i},defaultOption:{zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{show:!1},inactiveOpacity:.05,activeOpacity:1,lineStyle:{width:1,opacity:.45,type:"solid"},emphasis:{label:{show:!1}},progressive:500,smooth:!1,animationEasing:"linear"}});function a(t,i){if(!t.encodeDefine){var r=i.ecModel.getComponent("parallel",i.get("parallelIndex"));if(r){var o=t.encodeDefine=n();e(r.dimensions,function(t){var e=s(t);o.set(t,e)})}}}function s(t){return+t.replace("dim","")}l3=o}(),function(){if(c3)return h3;c3=1;var t=FX(),e=sq(),n=.3,i=e.extend({type:"parallel",init:function(){this._dataGroup=new t.Group,this.group.add(this._dataGroup),this._data,this._initialized},render:function(e,n,i,u){var h=this._dataGroup,c=e.getData(),d=this._data,p=e.coordinateSystem,f=p.dimensions,g=s(e);function v(t){l(a(c,h,t,f,p),c,t,g)}function m(n,i){var r=d.getItemGraphicEl(i),a=o(c,n,f,p);c.setItemGraphicEl(n,r);var s=u&&!1===u.animation?null:e;t.updateProps(r,{shape:{points:a}},s,n),l(r,c,n,g)}function y(t){var e=d.getItemGraphicEl(t);h.remove(e)}if(c.diff(d).add(v).update(m).remove(y).execute(),!this._initialized){this._initialized=!0;var x=r(p,e,function(){setTimeout(function(){h.removeClipPath()})});h.setClipPath(x)}this._data=c},incrementalPrepareRender:function(t,e,n){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},incrementalRender:function(t,e,n){for(var i=e.getData(),r=e.coordinateSystem,o=r.dimensions,u=s(e),h=t.start;h=0&&(s[a[l].depth]=new i(a[l],this,n));if(o&&r)return e(o,r,this,!0,u).data;function u(t,e){t.wrapMethod("getItemModel",function(t,e){return t.customizeGetParent(function(t){var n=this.parentModel,i=n.getData().getItemLayout(e).depth;return n.levelModels[i]||this.parentModel}),t}),e.wrapMethod("getItemModel",function(t,e){return t.customizeGetParent(function(t){var n=this.parentModel,i=n.getGraph().getEdgeByIndex(e).node1.getLayout().depth;return n.levelModels[i]||this.parentModel}),t})}},setNodePosition:function(t,e){var n=this.option.data[t];n.localX=e[0],n.localY=e[1]},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},formatTooltip:function(t,e,i){if("edge"===i){var o=this.getDataParams(t,i),a=o.data,s=a.source+" -- "+a.target;return o.value&&(s+=" : "+o.value),n(s)}if("node"===i){var l=this.getGraph().getNodeByIndex(t).getLayout().value,u=this.getDataParams(t,i).data.name;return l&&(s=u+" : "+l),n(s)}return r.superCall(this,"formatTooltip",t,e)},optionUpdated:function(){var t=this.option;!0===t.focusNodeAdjacency&&(t.focusNodeAdjacency="allEdges")},getDataParams:function(t,e){var n=r.superCall(this,"getDataParams",t,e);if(null==n.value&&"node"===e){var i=this.getGraph().getNodeByIndex(t).getLayout().value;n.value=i}return n},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",layout:null,left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,focusNodeAdjacency:!1,layoutIterations:32,label:{show:!0,position:"right",color:"#000",fontSize:12},levels:[],nodeAlign:"justify",itemStyle:{borderWidth:1,borderColor:"#333"},lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},animationEasing:"linear",animationDuration:1e3}});b3=r})(),function(){if(M3)return S3;M3=1;var t=FX(),e=c$(),n=IW(),i=["itemStyle","opacity"],r=["emphasis","itemStyle","opacity"],o=["lineStyle","opacity"],a=["emphasis","lineStyle","opacity"];function s(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function l(t,e,n){var i=t.getGraphicEl(),r=s(t,e);null!=n&&(null==r&&(r=1),r*=n),i.downplay&&i.downplay(),i.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",r)})}function u(t,e){var n=s(t,e),i=t.getGraphicEl();i.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",n)}),i.highlight&&i.highlight()}var h=t.extendShape({shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,cpx2:0,cpy2:0,extent:0,orient:""},buildPath:function(t,e){var n=e.extent;t.moveTo(e.x1,e.y1),t.bezierCurveTo(e.cpx1,e.cpy1,e.cpx2,e.cpy2,e.x2,e.y2),"vertical"===e.orient?(t.lineTo(e.x2+n,e.y2),t.bezierCurveTo(e.cpx2+n,e.cpy2,e.cpx1+n,e.cpy1,e.x1+n,e.y1)):(t.lineTo(e.x2,e.y2+n),t.bezierCurveTo(e.cpx2,e.cpy2+n,e.cpx1,e.cpy1+n,e.x1,e.y1+n)),t.closePath()},highlight:function(){this.trigger("emphasis")},downplay:function(){this.trigger("normal")}}),c=e.extendChartView({type:"sankey",_model:null,_focusAdjacencyDisabled:!1,render:function(e,n,i){var r=this,o=e.getGraph(),a=this.group,s=e.layoutInfo,l=s.width,u=s.height,c=e.getData(),p=e.getData("edge"),f=e.get("orient");this._model=e,a.removeAll(),a.attr("position",[s.x,s.y]),o.eachEdge(function(n){var i=new h;i.dataIndex=n.dataIndex,i.seriesIndex=e.seriesIndex,i.dataType="edge";var r,o,s,c,d,g,v,m,y=n.getModel("lineStyle"),x=y.get("curveness"),_=n.node1.getLayout(),b=n.node1.getModel(),w=b.get("localX"),S=b.get("localY"),M=n.node2.getLayout(),I=n.node2.getModel(),T=I.get("localX"),C=I.get("localY"),A=n.getLayout();switch(i.shape.extent=Math.max(1,A.dy),i.shape.orient=f,"vertical"===f?(r=(null!=w?w*l:_.x)+A.sy,o=(null!=S?S*u:_.y)+_.dy,s=(null!=T?T*l:M.x)+A.ty,d=r,g=o*(1-x)+(c=null!=C?C*u:M.y)*x,v=s,m=o*x+c*(1-x)):(r=(null!=w?w*l:_.x)+_.dx,o=(null!=S?S*u:_.y)+A.sy,d=r*(1-x)+(s=null!=T?T*l:M.x)*x,g=o,v=r*x+s*(1-x),m=c=(null!=C?C*u:M.y)+A.ty),i.setShape({x1:r,y1:o,x2:s,y2:c,cpx1:d,cpy1:g,cpx2:v,cpy2:m}),i.setStyle(y.getItemStyle()),i.style.fill){case"source":i.style.fill=n.node1.getVisual("color");break;case"target":i.style.fill=n.node2.getVisual("color")}t.setHoverStyle(i,n.getModel("emphasis.lineStyle").getItemStyle()),a.add(i),p.setItemGraphicEl(n.dataIndex,i)}),o.eachNode(function(n){var i=n.getLayout(),r=n.getModel(),o=r.get("localX"),s=r.get("localY"),h=r.getModel("label"),d=r.getModel("emphasis.label"),p=new t.Rect({shape:{x:null!=o?o*l:i.x,y:null!=s?s*u:i.y,width:i.dx,height:i.dy},style:r.getModel("itemStyle").getItemStyle()}),f=n.getModel("emphasis.itemStyle").getItemStyle();t.setLabelStyle(p.style,f,h,d,{labelFetcher:e,labelDataIndex:n.dataIndex,defaultText:n.id,isRectText:!0}),p.setStyle("fill",n.getVisual("color")),t.setHoverStyle(p,f),a.add(p),c.setItemGraphicEl(n.dataIndex,p),p.dataType="node"}),c.eachItemGraphicEl(function(t,n){var o=c.getItemModel(n);o.get("draggable")&&(t.drift=function(t,o){r._focusAdjacencyDisabled=!0,this.shape.x+=t,this.shape.y+=o,this.dirty(),i.dispatchAction({type:"dragNode",seriesId:e.id,dataIndex:c.getRawIndex(n),localX:this.shape.x/l,localY:this.shape.y/u})},t.ondragend=function(){r._focusAdjacencyDisabled=!1},t.draggable=!0,t.cursor="move"),t.highlight=function(){this.trigger("emphasis")},t.downplay=function(){this.trigger("normal")},t.focusNodeAdjHandler&&t.off("mouseover",t.focusNodeAdjHandler),t.unfocusNodeAdjHandler&&t.off("mouseout",t.unfocusNodeAdjHandler),o.get("focusNodeAdjacency")&&(t.on("mouseover",t.focusNodeAdjHandler=function(){r._focusAdjacencyDisabled||(r._clearTimer(),i.dispatchAction({type:"focusNodeAdjacency",seriesId:e.id,dataIndex:t.dataIndex}))}),t.on("mouseout",t.unfocusNodeAdjHandler=function(){r._focusAdjacencyDisabled||r._dispatchUnfocus(i)}))}),p.eachItemGraphicEl(function(t,n){var o=p.getItemModel(n);t.focusNodeAdjHandler&&t.off("mouseover",t.focusNodeAdjHandler),t.unfocusNodeAdjHandler&&t.off("mouseout",t.unfocusNodeAdjHandler),o.get("focusNodeAdjacency")&&(t.on("mouseover",t.focusNodeAdjHandler=function(){r._focusAdjacencyDisabled||(r._clearTimer(),i.dispatchAction({type:"focusNodeAdjacency",seriesId:e.id,edgeDataIndex:t.dataIndex}))}),t.on("mouseout",t.unfocusNodeAdjHandler=function(){r._focusAdjacencyDisabled||r._dispatchUnfocus(i)}))}),!this._data&&e.get("animation")&&a.setClipPath(d(a.getBoundingRect(),e,function(){a.removeClipPath()})),this._data=e.getData()},dispose:function(){this._clearTimer()},_dispatchUnfocus:function(t){var e=this;this._clearTimer(),this._unfocusDelayTimer=setTimeout(function(){e._unfocusDelayTimer=null,t.dispatchAction({type:"unfocusNodeAdjacency",seriesId:e._model.id})},500)},_clearTimer:function(){this._unfocusDelayTimer&&(clearTimeout(this._unfocusDelayTimer),this._unfocusDelayTimer=null)},focusNodeAdjacency:function(t,e,s,h){var c=t.getData(),d=c.graph,p=h.dataIndex,f=c.getItemModel(p),g=h.edgeDataIndex;if(null!=p||null!=g){var v=d.getNodeByIndex(p),m=d.getEdgeByIndex(g);if(d.eachNode(function(t){l(t,i,.1)}),d.eachEdge(function(t){l(t,o,.1)}),v){u(v,r);var y=f.get("focusNodeAdjacency");"outEdges"===y?n.each(v.outEdges,function(t){t.dataIndex<0||(u(t,a),u(t.node2,r))}):"inEdges"===y?n.each(v.inEdges,function(t){t.dataIndex<0||(u(t,a),u(t.node1,r))}):"allEdges"===y&&n.each(v.edges,function(t){t.dataIndex<0||(u(t,a),t.node1!==v&&u(t.node1,r),t.node2!==v&&u(t.node2,r))})}m&&(u(m,a),u(m.node1,r),u(m.node2,r))}},unfocusNodeAdjacency:function(t,e,n,r){var a=t.getGraph();a.eachNode(function(t){l(t,i)}),a.eachEdge(function(t){l(t,o)})}});function d(e,n,i){var r=new t.Rect({shape:{x:e.x-10,y:e.y-10,width:0,height:e.height+20}});return t.initProps(r,{shape:{width:e.width+20}},n,i),r}S3=c}(),function(){if(I3)return P3;I3=1;var t=c$();Y2(),t.registerAction({type:"dragNode",event:"dragnode",update:"update"},function(t,e){e.eachComponent({mainType:"series",subType:"sankey",query:t},function(e){e.setNodePosition(t.dataIndex,[t.localX,t.localY])})})}();var e=O3(),n=R3();t.registerLayout(e),t.registerVisual(n)}(),function(){if(U3)return Y3;U3=1;var t=c$();(function(){if(z3)return E3;z3=1;var t=IW(),e=rq(),n=X3().seriesModelMixin,i=e.extend({type:"series.boxplot",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"rgba(0,0,0,0.4)"}},animationEasing:"elasticOut",animationDuration:800}});t.mixin(i,n,!0),E3=i})(),function(){if(B3)return V3;B3=1;var t=IW(),e=sq(),n=FX(),i=EZ(),r=["itemStyle"],o=["emphasis","itemStyle"],a=e.extend({type:"boxplot",render:function(t,e,n){var i=t.getData(),r=this.group,o=this._data;this._data||r.removeAll();var a="horizontal"===t.get("layout")?1:0;i.diff(o).add(function(t){if(i.hasValue(t)){var e=l(i.getItemLayout(t),i,t,a,!0);i.setItemGraphicEl(t,e),r.add(e)}}).update(function(t,e){var n=o.getItemGraphicEl(e);if(i.hasValue(t)){var s=i.getItemLayout(t);n?u(s,n,i,t):n=l(s,i,t,a),r.add(n),i.setItemGraphicEl(t,n)}else r.remove(n)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)}).execute(),this._data=i},remove:function(t){var e=this.group,n=this._data;this._data=null,n&&n.eachItemGraphicEl(function(t){t&&e.remove(t)})},dispose:t.noop}),s=i.extend({type:"boxplotBoxPath",shape:{},buildPath:function(t,e){var n=e.points,i=0;for(t.moveTo(n[i][0],n[i][1]),i++;i<4;i++)t.lineTo(n[i][0],n[i][1]);for(t.closePath();i0?"P":"N",a=i.getVisual("borderColor"+r)||i.getVisual("color"+r),l=n.getModel(o).getItemStyle(s);e.useStyle(l),e.style.fill=null,e.style.stroke=a}var m=l;J3=m}();var e=function(){if(e4)return t4;e4=1;var t=IW();function e(e){e&&t.isArray(e.series)&&t.each(e.series,function(e){t.isObject(e)&&"k"===e.type&&(e.type="candlestick")})}return t4=e}(),n=l4(),i=u4();t.registerPreprocessor(e),t.registerVisual(n),t.registerLayout(i)}(),function(){if(v4)return F4;v4=1;var t=c$();(function(){if(c4)return h4;c4=1;var t=fK(),e=rq(),n=e.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(e,n){return t(this.getSource(),this,{useEncodeDefaulter:!0})},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,effectType:"ripple",progressive:0,showEffectOn:"render",rippleEffect:{period:4,scale:2.5,brushType:"fill"},symbolSize:10}});h4=n})(),function(){if(g4)return f4;g4=1;var t=c$(),e=S$(),n=function(){if(p4)return d4;p4=1;var t=IW(),e=ZK().createSymbol,n=FX().Group,i=qX().parsePercent,r=w$(),o=3;function a(e){return t.isArray(e)||(e=[+e,+e]),e}function s(t,e){var n=e.rippleEffectColor||e.color;t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?n:null,fill:"fill"===e.brushType?n:null}})})}function l(t,e){n.call(this);var i=new r(t,e),o=new n;this.add(i),this.add(o),o.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}var u=l.prototype;u.stopEffectAnimation=function(){this.childAt(1).removeAll()},u.startEffectAnimation=function(t){for(var n=t.symbolType,i=t.color,r=this.childAt(1),a=0;a "))},preventIncremental:function(){return!!this.get("effect.show")},getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}}});m4=h})(),function(){if(L4)return D4;L4=1,gW().__DEV__;var t=c$(),e=T2(),n=W4(),i=I2(),r=U4(),o=function(){if(M4)return S4;M4=1;var t=U4(),e=IW(),n=W4(),i=PW();function r(t,e,i){n.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}var o=r.prototype;o.createLine=function(e,n,i){return new t(e,n,i)},o.updateAnimationPoints=function(t,e){this._points=e;for(var n=[0],r=0,o=1;o=0&&!(r[s]<=e);s--);s=Math.min(s,o-2)}else{for(var s=a;se);s++);s=Math.min(s-1,o-2)}i.lerp(t.position,n[s],n[s+1],(e-r[s])/(r[s+1]-r[s]));var l=n[s+1][0]-n[s][0],u=n[s+1][1]-n[s][1];t.rotation=-Math.atan2(u,l)-Math.PI/2,this._lastFrame=s,this._lastFramePercent=e,t.ignore=!1}},e.inherits(r,n);var a=r;return S4=a}(),a=function(){if(T4)return I4;T4=1;var t=FX(),e=GX(),n=iZ(),i=uZ(),r=t.extendShape({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(t,e){var n=e.segs,i=e.curveness;if(e.polyline)for(var r=0;r0){t.moveTo(n[r++],n[r++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*i,d=(l+h)/2-(u-s)*i;t.quadraticCurveTo(c,d,u,h)}else t.lineTo(u,h)}},findDataIndex:function(t,e){var r=this.shape,o=r.segs,a=r.curveness;if(r.polyline)for(var s=0,l=0;l0)for(var h=o[l++],c=o[l++],d=1;d0){var g=(h+p)/2-(c-f)*a,v=(c+f)/2-(p-h)*a;if(i.containStroke(h,c,g,v,p,f))return s}else if(n.containStroke(h,c,p,f))return s;s++}return-1}});function o(){this.group=new t.Group}var a=o.prototype;a.isPersistent=function(){return!this._incremental},a.updateData=function(t){this.group.removeAll();var e=new r({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},a.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new e({silent:!0})),this.group.add(this._incremental)):this._incremental=null},a.incrementalUpdate=function(t,e){var n=new r;n.setShape({segs:e.getLayout("linesPoints")}),this._setCommon(n,e,!!this._incremental),this._incremental?this._incremental.addDisplayable(n,!0):(n.rectHover=!0,n.cursor="default",n.__startIndex=t.start,this.group.add(n))},a.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},a._setCommon=function(t,e,n){var i=e.hostModel;t.setShape({polyline:i.get("polyline"),curveness:i.get("lineStyle.curveness")}),t.useStyle(i.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var r=e.getVisual("color");r&&t.setStyle("stroke",r),t.setStyle("fill"),n||(t.seriesIndex=i.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var n=t.findDataIndex(e.offsetX,e.offsetY);n>0&&(t.dataIndex=n+t.__startIndex)}))},a._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var s=o;return I4=s}(),s=Y4(),l=W$().createClipPath,u=t.extendChartView({type:"lines",init:function(){},render:function(t,e,n){var i=t.getData(),r=this._updateLineDraw(i,t),o=t.get("zlevel"),a=t.get("effect.trailLength"),s=n.getZr(),u="svg"===s.painter.getType();u||s.painter.getLayer(o).clear(!0),null==this._lastZlevel||u||s.configLayer(this._lastZlevel,{motionBlur:!1}),this._showEffect(t)&&a&&(u||s.configLayer(o,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(a/10+.9,1),0)})),r.updateData(i);var h=t.get("clip",!0)&&l(t.coordinateSystem,!1,t);h?this.group.setClipPath(h):this.group.removeClipPath(),this._lastZlevel=o,this._finished=!0},incrementalPrepareRender:function(t,e,n){var i=t.getData();this._updateLineDraw(i,t).incrementalPrepareUpdate(i),this._clearLayer(n),this._finished=!1},incrementalRender:function(t,e,n){this._lineDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,n){var i=t.getData(),r=t.pipelineContext;if(!this._finished||r.large||r.progressiveRender)return{update:!0};var o=s.reset(t);o.progress&&o.progress({start:0,end:i.count()},i),this._lineDraw.updateLayout(),this._clearLayer(n)},_updateLineDraw:function(t,s){var l=this._lineDraw,u=this._showEffect(s),h=!!s.get("polyline"),c=s.pipelineContext.large;return l&&u===this._hasEffet&&h===this._isPolyline&&c===this._isLargeDraw||(l&&l.remove(),l=this._lineDraw=c?new a:new e(h?u?o:r:u?n:i),this._hasEffet=u,this._isPolyline=h,this._isLargeDraw=c,this.group.removeAll()),this.group.add(l.group),l},_showEffect:function(t){return!!t.get("effect.show")},_clearLayer:function(t){var e=t.getZr();"svg"===e.painter.getType()||null==this._lastZlevel||e.painter.getLayer(this._lastZlevel).clear(!0)},remove:function(t,e){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(e)},dispose:function(){}});D4=u}();var e=Y4(),n=Z4();t.registerLayout(e),t.registerVisual(n)}(),G4||(G4=1,function(){if(N4)return R4;N4=1;var t=rq(),e=fK(),n=zj(),i=t.extend({type:"series.heatmap",getInitialData:function(t,n){return e(this.getSource(),this,{generateCoord:"value"})},preventIncremental:function(){var t=n.get(this.get("coordinateSystem"));if(t&&t.dimensions)return"lng"===t.dimensions[0]&&"lat"===t.dimensions[1]},defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,geoIndex:0,blurSize:30,pointSize:20,maxOpacity:1,minOpacity:0}});R4=i}(),function(){if(B4)return V4;B4=1,gW().__DEV__;var t=c$(),e=FX(),n=X4(),i=IW();function r(t,e,n){var r=t[1]-t[0],o=(e=i.map(e,function(e){return{interval:[(e.interval[0]-t[0])/r,(e.interval[1]-t[0])/r]}})).length,a=0;return function(t){for(var i=a;i=0;i--){var r;if((r=e[i].interval)[0]<=t&&t<=r[1]){a=i;break}}return i>=0&&i=e[0]&&t<=e[1]}}function a(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}var s=t.extendChartView({type:"heatmap",render:function(t,e,n){var i;e.eachComponent("visualMap",function(e){e.eachTargetSeries(function(n){n===t&&(i=e)})}),this.group.removeAll(),this._incrementalDisplayable=null;var r=t.coordinateSystem;"cartesian2d"===r.type||"calendar"===r.type?this._renderOnCartesianAndCalendar(t,n,0,t.getData().count()):a(r)&&this._renderOnGeo(r,t,i,n)},incrementalPrepareRender:function(t,e,n){this.group.removeAll()},incrementalRender:function(t,e,n,i){e.coordinateSystem&&this._renderOnCartesianAndCalendar(e,i,t.start,t.end,!0)},_renderOnCartesianAndCalendar:function(t,n,r,o,a){var s,l,u=t.coordinateSystem;if("cartesian2d"===u.type){var h=u.getAxis("x"),c=u.getAxis("y");s=h.getBandWidth(),l=c.getBandWidth()}for(var d=this.group,p=t.getData(),f="itemStyle",g="emphasis.itemStyle",v="label",m="emphasis.label",y=t.getModel(f).getItemStyle(["color"]),x=t.getModel(g).getItemStyle(),_=t.getModel(v),b=t.getModel(m),w=u.type,S="cartesian2d"===w?[p.mapDimension("x"),p.mapDimension("y"),p.mapDimension("value")]:[p.mapDimension("time"),p.mapDimension("value")],M=r;M0?1:a<0?-1:0}function f(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function g(t,n,i,r,a,s,l,u,h,c){var d=h.valueDim,p=h.categoryDim,f=Math.abs(i[p.wh]),g=t.getItemVisual(n,"symbolSize");e.isArray(g)?g=g.slice():(null==g&&(g="100%"),g=[g,g]),g[p.index]=o(g[p.index],f),g[d.index]=o(g[d.index],r?f:Math.abs(s)),c.symbolSize=g,(c.symbolScale=[g[0]/u,g[1]/u])[d.index]*=(h.isHorizontal?-1:1)*l}function v(t,e,n,i,r){var o=t.get(l)||0;o&&(h.attr({scale:e.slice(),rotation:n}),h.updateTransform(),o/=h.getLineScale(),o*=e[i.valueDim.index]),r.valueLineWidth=o}function m(t,n,i,r,s,l,u,h,c,d,p,f){var g=p.categoryDim,v=p.valueDim,m=f.pxSign,y=Math.max(n[v.index]+h,0),x=y;if(r){var _=Math.abs(c),b=e.retrieve(t.get("symbolMargin"),"15%")+"",w=!1;b.lastIndexOf("!")===b.length-1&&(w=!0,b=b.slice(0,b.length-1)),b=o(b,n[v.index]);var S=Math.max(y+2*b,0),M=w?0:2*b,I=a(r),T=I?r:R((_+M)/S);S=y+2*(b=(_-T*y)/2/(w?T:T-1)),M=w?0:2*b,I||"fixed"===r||(T=d?R((Math.abs(d)+M)/S):0),x=T*S-M,f.repeatTimes=T,f.symbolMargin=b}var C=m*(x/2),A=f.pathPosition=[];A[g.index]=i[g.wh]/2,A[v.index]="start"===u?C:"end"===u?c-C:c/2,l&&(A[0]+=l[0],A[1]+=l[1]);var D=f.bundlePosition=[];D[g.index]=i[g.xy],D[v.index]=i[v.xy];var L=f.barRectShape=e.extend({},i);L[v.wh]=m*Math.max(Math.abs(i[v.wh]),Math.abs(A[v.index]+C)),L[g.wh]=i[g.wh];var k=f.clipShape={};k[g.xy]=-i[g.xy],k[g.wh]=p.ecSize[g.wh],k[v.xy]=0,k[v.wh]=i[v.wh]}function y(t){var e=t.symbolPatternSize,n=i(t.symbolType,-e/2,-e/2,e,e,t.color);return n.attr({culling:!0}),"image"!==n.type&&n.setStyle({strokeNoScale:!0}),n}function x(t,e,n,i){var r=t.__pictorialBundle,o=n.symbolSize,a=n.valueLineWidth,s=n.pathPosition,l=e.valueDim,u=n.repeatTimes||0,h=0,c=o[e.valueDim.index]+a+2*n.symbolMargin;for(k(t,function(t){t.__pictorialAnimationIndex=h,t.__pictorialRepeatTimes=u,h0:i<0)&&(r=u-1-t),e[l.index]=c*(r-u/2+.5)+s[l.index],{position:e,scale:n.symbolScale.slice(),rotation:n.rotation}}function g(){k(t,function(t){t.trigger("emphasis")})}function v(){k(t,function(t){t.trigger("normal")})}}function _(t,e,n,i){var r=t.__pictorialBundle,o=t.__pictorialMainPath;function a(){this.trigger("emphasis")}function s(){this.trigger("normal")}o?P(o,null,{position:n.pathPosition.slice(),scale:n.symbolScale.slice(),rotation:n.rotation},n,i):(o=t.__pictorialMainPath=y(n),r.add(o),P(o,{position:n.pathPosition.slice(),scale:[0,0],rotation:n.rotation},{scale:n.symbolScale.slice()},n,i),o.on("mouseover",a).on("mouseout",s)),T(o,n)}function b(t,i,r){var o=e.extend({},i.barRectShape),a=t.__pictorialBarRect;a?P(a,null,{shape:o},i,r):(a=t.__pictorialBarRect=new n.Rect({z2:2,shape:o,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}}),t.add(a))}function w(t,i,r,o){if(r.symbolClip){var a=t.__pictorialClipPath,s=e.extend({},r.clipShape),l=i.valueDim,u=r.animationModel,h=r.dataIndex;if(a)n.updateProps(a,{shape:s},u,h);else{s[l.wh]=0,a=new n.Rect({shape:s}),t.__pictorialBundle.setClipPath(a),t.__pictorialClipPath=a;var c={};c[l.wh]=r.clipShape[l.wh],n[o?"updateProps":"initProps"](a,{shape:c},u,h)}}}function S(t,e){var n=t.getItemModel(e);return n.getAnimationDelayParams=M,n.isAnimationEnabled=I,n}function M(t){return{index:t.__pictorialAnimationIndex,count:t.__pictorialRepeatTimes}}function I(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function T(t,e){t.off("emphasis").off("normal");var n=e.symbolScale.slice();e.hoverAnimation&&t.on("emphasis",function(){this.animateTo({scale:[1.1*n[0],1.1*n[1]]},400,"elasticOut")}).on("normal",function(){this.animateTo({scale:n.slice()},400,"elasticOut")})}function C(t,e,i,r){var o=new n.Group,a=new n.Group;return o.add(a),o.__pictorialBundle=a,a.attr("position",i.bundlePosition.slice()),i.symbolRepeat?x(o,e,i):_(o,e,i),b(o,i,r),w(o,e,i,r),o.__pictorialShapeStr=L(t,i),o.__pictorialSymbolMeta=i,o}function A(t,e,i){var r=i.animationModel,o=i.dataIndex,a=t.__pictorialBundle;n.updateProps(a,{position:i.bundlePosition.slice()},r,o),i.symbolRepeat?x(t,e,i,!0):_(t,e,i,!0),b(t,i,!0),w(t,e,i,!0)}function D(t,i,r,o){var a=o.__pictorialBarRect;a&&(a.style.text=null);var s=[];k(o,function(t){s.push(t)}),o.__pictorialMainPath&&s.push(o.__pictorialMainPath),o.__pictorialClipPath&&(r=null),e.each(s,function(t){n.updateProps(t,{scale:[0,0]},r,i,function(){o.parent&&o.parent.remove(o)})}),t.setItemGraphicEl(i,null)}function L(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function k(t,n,i){e.each(t.__pictorialBundle.children(),function(e){e!==t.__pictorialBarRect&&n.call(i,e)})}function P(t,e,i,r,o,a){e&&t.attr(e),r.symbolClip&&!o?i&&t.attr(i):i&&n[o?"updateProps":"initProps"](t,i,r.animationModel,r.dataIndex,a)}function O(t,i,r){var o=r.color,a=r.dataIndex,l=r.itemModel,u=l.getModel("itemStyle").getItemStyle(["color"]),h=l.getModel("emphasis.itemStyle").getItemStyle(),c=l.getShallow("cursor");k(t,function(t){t.setColor(o),t.setStyle(e.defaults({fill:o,opacity:r.opacity},u)),n.setHoverStyle(t,h),c&&(t.cursor=c),t.z2=r.z2});var d={},p=i.valueDim.posDesc[+(r.boundingLength>0)],f=t.__pictorialBarRect;s(f.style,d,l,o,i.seriesModel,a,p),n.setHoverStyle(f,d)}function R(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}var N=c;K4=N}();var n=BK().layout,i=U$();zJ(),t.registerLayout(e.curry(n,"pictorialBar")),t.registerVisual(i("pictorialBar","roundRect"))}(),function(){if(j6)return o6;j6=1;var t=c$();Q6(),function(){if(F6)return G6;F6=1;var t=rq(),e=aK(),n=nK().getDimensionTypeByAxis,i=rK(),r=IW(),o=PY().groupData,a=sj().encodeHTML,s=IQ(),l=2,u=t.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){u.superApply(this,"init",arguments),this.legendVisualProvider=new s(r.bind(this.getData,this),r.bind(this.getRawData,this))},fixData:function(t){var e=t.length,n={},i=o(t,function(t){return n.hasOwnProperty(t[0])||(n[t[0]]=-1),t[2]}),r=[];i.buckets.each(function(t,e){r.push({name:e,dataList:t})});for(var a=r.length,s=0;so&&(o=u),i.push(u)}for(var h=0;ho&&(o=d)}return a.y0=r,a.max=o,a}return U6=n}(),n=t8(),i=LQ();t.registerLayout(e),t.registerVisual(n),t.registerProcessor(i("themeRiver"))}(),function(){if(h8)return c8;h8=1;var t=c$(),e=IW();(function(){if(n8)return e8;n8=1;var t=IW(),e=rq(),n=S1(),i=HX(),r=U1().wrapTreePathInfo,o=e.extend({type:"series.sunburst",_viewRoot:null,getInitialData:function(e,r){var o={name:e.name,children:e.data};a(o);var s=t.map(e.levels||[],function(t){return new i(t,this,r)},this),l=n.createTree(o,this,u);function u(t){t.wrapMethod("getItemModel",function(t,e){var n=l.getNodeByDataIndex(e),i=s[n.depth];return i&&(t.parentModel=i),t})}return l.data},optionUpdated:function(){this.resetViewRoot()},getDataParams:function(t){var n=e.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return n.treePathInfo=r(i,this),n},defaultOption:{zlevel:0,z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,percentPrecision:2,stillShowZeroSum:!0,highlightPolicy:"descendant",nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},highlight:{itemStyle:{opacity:1}},downplay:{itemStyle:{opacity:.5},label:{opacity:.6}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicOut",data:[],levels:[],sort:"desc"},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}});function a(e){var n=0;t.each(e.children,function(e){a(e);var i=e.value;t.isArray(i)&&(i=i[0]),n+=i});var i=e.value;t.isArray(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=n),i<0&&(i=0),t.isArray(e.value)?e.value[0]=i:e.value=i}e8=o})(),function(){if(a8)return o8;a8=1;var t=IW(),e=sq(),n=function(){if(r8)return i8;r8=1;var t=IW(),e=FX(),n={NONE:"none",ANCESTOR:"ancestor",SELF:"self"},i=2,r=4;function o(t,n,o){e.Group.call(this);var a=new e.Sector({z2:i});a.seriesIndex=n.seriesIndex;var s=new e.Text({z2:r,silent:t.getModel("label").get("silent")});function l(){s.ignore=s.hoverIgnore}function u(){s.ignore=s.normalIgnore}this.add(a),this.add(s),this.updateData(!0,t,"normal",n,o),this.on("emphasis",l).on("normal",u).on("mouseover",l).on("mouseout",u)}var a=o.prototype;a.updateData=function(n,i,r,o,a){this.node=i,i.piece=this,o=o||this._seriesModel,a=a||this._ecModel;var s=this.childAt(0);s.dataIndex=i.dataIndex;var u=i.getModel(),h=i.getLayout(),d=t.extend({},h);d.label=null;var p=l(i,o,a);c(i,o,p);var f,g=u.getModel("itemStyle").getItemStyle();if("normal"===r)f=g;else{var v=u.getModel(r+".itemStyle").getItemStyle();f=t.merge(v,g)}f=t.defaults({lineJoin:"bevel",fill:f.fill||p},f),n?(s.setShape(d),s.shape.r=h.r0,e.updateProps(s,{shape:{r:h.r}},o,i.dataIndex),s.useStyle(f)):"object"==typeof f.fill&&f.fill.type||"object"==typeof s.style.fill&&s.style.fill.type?(e.updateProps(s,{shape:d},o),s.useStyle(f)):e.updateProps(s,{shape:d,style:f},o),this._updateLabel(o,p,r);var m=u.getShallow("cursor");if(m&&s.attr("cursor",m),n){var y=o.getShallow("highlightPolicy");this._initEvents(s,i,o,y)}this._seriesModel=o||this._seriesModel,this._ecModel=a||this._ecModel,e.setHoverStyle(this)},a.onEmphasis=function(t){var e=this;this.node.hostTree.root.eachNode(function(i){i.piece&&(e.node===i?i.piece.updateData(!1,i,"emphasis"):h(i,e.node,t)?i.piece.childAt(0).trigger("highlight"):t!==n.NONE&&i.piece.childAt(0).trigger("downplay"))})},a.onNormal=function(){this.node.hostTree.root.eachNode(function(t){t.piece&&t.piece.updateData(!1,t,"normal")})},a.onHighlight=function(){this.updateData(!1,this.node,"highlight")},a.onDownplay=function(){this.updateData(!1,this.node,"downplay")},a._updateLabel=function(n,i,r){var o=this.node.getModel(),a=o.getModel("label"),s="normal"===r||"emphasis"===r?a:o.getModel(r+".label"),l=o.getModel("emphasis.label"),u=s.get("formatter")?r:"normal",h=t.retrieve(n.getFormattedLabel(this.node.dataIndex,u,null,null,"label"),this.node.name);!1===T("show")&&(h="");var c=this.node.getLayout(),d=s.get("minAngle");null==d&&(d=a.get("minAngle")),d=d/180*Math.PI;var p=c.endAngle-c.startAngle;null!=d&&Math.abs(p)Math.PI/2?"right":"left"):b&&"center"!==b?"left"===b?(g=c.r0+_,v>Math.PI/2&&(b="right")):"right"===b&&(g=c.r-_,v>Math.PI/2&&(b="left")):(g=(c.r+c.r0)/2,b="center"),f.attr("style",{text:h,textAlign:b,textVerticalAlign:T("verticalAlign")||"middle",opacity:T("opacity")});var w=g*m+c.cx,S=g*y+c.cy;f.attr("position",[w,S]);var M=T("rotate"),I=0;function T(t){var e=s.get(t);return null==e?a.get(t):e}"radial"===M?(I=-v)<-Math.PI/2&&(I+=Math.PI):"tangential"===M?(I=Math.PI/2-v)>Math.PI/2?I-=Math.PI:I<-Math.PI/2&&(I+=Math.PI):"number"==typeof M&&(I=M*Math.PI/180),f.attr("rotation",I)},a._initEvents=function(t,e,n,i){t.off("mouseover").off("mouseout").off("emphasis").off("normal");var r=this,o=function(){r.onEmphasis(i)},a=function(){r.onNormal()},s=function(){r.onDownplay()},l=function(){r.onHighlight()};n.isAnimationEnabled()&&t.on("mouseover",o).on("mouseout",a).on("emphasis",o).on("normal",a).on("downplay",s).on("highlight",l)},t.inherits(o,e.Group);var s=o;function l(t,e,n){var i=t.getVisual("color"),r=t.getVisual("visualMeta");r&&0!==r.length||(i=null);var o=t.getModel("itemStyle").get("color");if(o)return o;if(i)return i;if(0===t.depth)return n.option.color[0];var a=n.option.color.length;return o=n.option.color[u(t)%a]}function u(e){for(var n=e;n.depth>1;)n=n.parentNode;var i=e.getAncestors()[0];return t.indexOf(i.children,n)}function h(t,e,i){return i!==n.NONE&&(i===n.SELF?t===e:i===n.ANCESTOR?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}function c(t,e,n){e.getData().setItemVisual(t.dataIndex,"color",n)}return i8=s}(),i=Yq(),r=sj().windowOpen,o="sunburstRootToNode",a=e.extend({type:"sunburst",init:function(){},render:function(e,r,o,a){var s=this;this.seriesModel=e,this.api=o,this.ecModel=r;var l=e.getData(),u=l.tree.root,h=e.getViewRoot(),c=this.group,d=e.get("renderLabelForZeroData"),p=[];h.eachNode(function(t){p.push(t)});var f=this._oldChildren||[];if(m(p,f),_(u,h),a&&a.highlight&&a.highlight.piece){var g=e.getShallow("highlightPolicy");a.highlight.piece.onEmphasis(g)}else if(a&&a.unhighlight){var v=this.virtualPiece;!v&&u.children.length&&(v=u.children[0].piece),v&&v.onNormal()}function m(e,n){function r(t){return t.getId()}function o(t,i){y(null==t?null:e[t],null==i?null:n[i])}0===e.length&&0===n.length||new i(n,e,r,r).add(o).update(o).remove(t.curry(o,null)).execute()}function y(t,i){if(d||!t||t.getValue()||(t=null),t!==u&&i!==u)if(i&&i.piece)t?(i.piece.updateData(!1,t,"normal",e,r),l.setItemGraphicEl(t.dataIndex,i.piece)):x(i);else if(t){var o=new n(t,e,r);c.add(o),l.setItemGraphicEl(t.dataIndex,o)}}function x(t){t&&t.piece&&(c.remove(t.piece),t.piece=null)}function _(t,i){if(i.depth>0){s.virtualPiece?s.virtualPiece.updateData(!1,t,"normal",e,r):(s.virtualPiece=new n(t,e,r),c.add(s.virtualPiece)),i.piece._onclickEvent&&i.piece.off("click",i.piece._onclickEvent);var o=function(t){s._rootToNode(i.parentNode)};i.piece._onclickEvent=o,s.virtualPiece.on("click",o)}else s.virtualPiece&&(c.remove(s.virtualPiece),s.virtualPiece=null)}this._initEvents(),this._oldChildren=p},dispose:function(){},_initEvents:function(){var t=this,e=function(e){var n=!1;t.seriesModel.getViewRoot().eachNode(function(i){if(!n&&i.piece&&i.piece.childAt(0)===e.target){var o=i.getModel().get("nodeClick");if("rootToNode"===o)t._rootToNode(i);else if("link"===o){var a=i.getModel(),s=a.get("link");if(s){var l=a.get("target",!0)||"_blank";r(s,l)}}n=!0}})};this.group._onclickEvent&&this.group.off("click",this.group._onclickEvent),this.group.on("click",e),this.group._onclickEvent=e},_rootToNode:function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:o,from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},containPoint:function(t,e){var n=e.getData().getItemLayout(0);if(n){var i=t[0]-n.cx,r=t[1]-n.cy,o=Math.sqrt(i*i+r*r);return o<=n.r&&o>=n.r0}}}),s=a;o8=s}(),function(){if(s8)return d8;s8=1;var t=c$(),e=U1(),n="sunburstRootToNode";t.registerAction({type:n,update:"updateView"},function(t,i){function r(i,r){var o=e.retrieveTargetInfo(t,[n],i);if(o){var a=i.getViewRoot();a&&(t.direction=e.aboveViewRoot(a,o.node)?"rollUp":"drillDown"),i.resetViewRoot(o.node)}}i.eachComponent({mainType:"series",subType:"sunburst",query:t},r)});var i="sunburstHighlight";t.registerAction({type:i,update:"updateView"},function(t,n){function r(n,r){var o=e.retrieveTargetInfo(t,[i],n);o&&(t.highlight=o.node)}n.eachComponent({mainType:"series",subType:"sunburst",query:t},r)});var r="sunburstUnhighlight";t.registerAction({type:r,update:"updateView"},function(t,e){function n(e,n){t.unhighlight=!0}e.eachComponent({mainType:"series",subType:"sunburst",query:t},n)})}();var n=CQ(),i=p8(),r=LQ();t.registerVisual(e.curry(n,"sunburst")),t.registerLayout(e.curry(i,"sunburst")),t.registerProcessor(e.curry(r,"sunburst"))}(),function(){if(M8)return A8;M8=1,gW().__DEV__;var t=IW(),e=FX(),n=b$().getDefaultLabel,i=fK(),r=BK().getLayoutOnAxis,o=Yq(),a=rq(),s=HX(),l=sq(),u=W$().createClipPath,h=function(){if(g8)return f8;g8=1;var t=IW();function e(e,n){return n=n||[0,0],t.map(["x","y"],function(t,i){var r=this.getAxis(t),o=n[i],a=e[i]/2;return"category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a))},this)}function n(n){var i=n.grid.getRect();return{coordSys:{type:"cartesian2d",x:i.x,y:i.y,width:i.width,height:i.height},api:{coord:function(t){return n.dataToPoint(t)},size:t.bind(e,n)}}}return f8=n}(),c=function(){if(m8)return v8;m8=1;var t=IW();function e(e,n){return n=n||[0,0],t.map([0,1],function(t){var i=n[t],r=e[t]/2,o=[],a=[];return o[t]=i-r,a[t]=i+r,o[1-t]=a[1-t]=n[1-t],Math.abs(this.dataToPoint(o)[t]-this.dataToPoint(a)[t])},this)}function n(n){var i=n.getBoundingRect();return{coordSys:{type:"geo",x:i.x,y:i.y,width:i.width,height:i.height,zoom:n.getZoom()},api:{coord:function(t){return n.dataToPoint(t)},size:t.bind(e,n)}}}return v8=n}(),d=function(){if(x8)return y8;x8=1;var t=IW();function e(t,e){var n=this.getAxis(),i=e instanceof Array?e[0]:e,r=(t instanceof Array?t[0]:t)/2;return"category"===n.type?n.getBandWidth():Math.abs(n.dataToCoord(i-r)-n.dataToCoord(i+r))}function n(n){var i=n.getRect();return{coordSys:{type:"singleAxis",x:i.x,y:i.y,width:i.width,height:i.height},api:{coord:function(t){return n.dataToPoint(t)},size:t.bind(e,n)}}}return y8=n}(),p=function(){if(b8)return _8;b8=1;var t=IW();function e(e,n){return t.map(["Radius","Angle"],function(t,i){var r=this["get"+t+"Axis"](),o=n[i],a=e[i]/2,s="dataTo"+t,l="category"===r.type?r.getBandWidth():Math.abs(r[s](o-a)-r[s](o+a));return"Angle"===t&&(l=l*Math.PI/180),l},this)}function n(n){var i=n.getRadiusAxis(),r=n.getAngleAxis(),o=i.getExtent();return o[0]>o[1]&&o.reverse(),{coordSys:{type:"polar",cx:n.cx,cy:n.cy,r:o[1],r0:o[0]},api:{coord:t.bind(function(t){var e=i.dataToRadius(t[0]),o=r.dataToAngle(t[1]),a=n.coordToPoint([e,o]);return a.push(e,o*Math.PI/180),a}),size:t.bind(e,n)}}}return _8=n}(),f=function(){if(S8)return w8;function t(t){var e=t.getRect(),n=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:n.start,end:n.end,weeks:n.weeks,dayCount:n.allDay}},api:{coord:function(e,n){return t.dataToPoint(e,n)}}}}return S8=1,w8=t}(),g=e.CACHED_LABEL_STYLE_PROPERTIES,v=["itemStyle"],m=["emphasis","itemStyle"],y=["label"],x=["emphasis","label"],_="e\0\0",b={cartesian2d:h,geo:c,singleAxis:d,polar:p,calendar:f};function w(t){var n,i=t.type;if("path"===i){var r=t.shape,o=null!=r.width&&null!=r.height?{x:r.x||0,y:r.y||0,width:r.width,height:r.height}:null,a=E(r);(n=e.makePath(a,null,o,r.layout||"center")).__customPathData=a}else if("image"===i)(n=new e.Image({})).__customImagePath=t.style.image;else if("text"===i)(n=new e.Text({})).__customText=t.style.text;else if("group"===i)n=new e.Group;else{if("compoundPath"===i)throw new Error('"compoundPath" is not supported yet.');n=new(e.getShapeClass(i))}return n.__customGraphicType=i,n.name=t.name,n}function S(n,i,r,o,a,s,l){var u={},h=r.style||{};if(r.shape&&(u.shape=t.clone(r.shape)),r.position&&(u.position=r.position.slice()),r.scale&&(u.scale=r.scale.slice()),r.origin&&(u.origin=r.origin.slice()),r.rotation&&(u.rotation=r.rotation),"image"===n.type&&r.style){var c=u.style={};t.each(["x","y","width","height"],function(t){M(t,c,h,n.style,s)})}if("text"===n.type&&r.style&&(c=u.style={},t.each(["x","y"],function(t){M(t,c,h,n.style,s)}),!h.hasOwnProperty("textFill")&&h.fill&&(h.textFill=h.fill),!h.hasOwnProperty("textStroke")&&h.stroke&&(h.textStroke=h.stroke)),"group"!==n.type&&(n.useStyle(h),s)){n.style.opacity=0;var d=h.opacity;null==d&&(d=1),e.initProps(n,{style:{opacity:d}},o,i)}s?n.attr(u):e.updateProps(n,u,o,i),r.hasOwnProperty("z2")&&n.attr("z2",r.z2||0),r.hasOwnProperty("silent")&&n.attr("silent",r.silent),r.hasOwnProperty("invisible")&&n.attr("invisible",r.invisible),r.hasOwnProperty("ignore")&&n.attr("ignore",r.ignore),r.hasOwnProperty("info")&&n.attr("info",r.info);var p=r.styleEmphasis;e.setElementHoverStyle(n,p),l&&e.setAsHighDownDispatcher(n,!1!==p)}function M(t,e,n,i,r){null==n[t]||r||(e[t]=n[t],n[t]=i[t])}function I(i,o,a,s){var l=i.get("renderItem"),u=i.coordinateSystem,h={};u&&(h=u.prepareCustoms?u.prepareCustoms():b[u.type](u));var c,d,p,f,g,_=t.defaults({getWidth:s.getWidth,getHeight:s.getHeight,getZr:s.getZr,getDevicePixelRatio:s.getDevicePixelRatio,value:I,style:C,styleEmphasis:A,visual:D,barLayout:L,currentSeriesIndices:k,font:P},h.api||{}),w={context:{},seriesId:i.id,seriesName:i.name,seriesIndex:i.seriesIndex,coordSys:h.coordSys,dataInsideLength:o.count(),encode:T(i.getData())},S=!0;return function(e,n){return c=e,S=!0,l&&l(t.defaults({dataIndexInside:e,dataIndex:o.getRawIndex(e),actionType:n?n.type:null},w),_)};function M(t){null==t&&(t=c),S&&(d=o.getItemModel(t),p=d.getModel(y),f=d.getModel(x),g=o.getItemVisual(t,"color"),S=!1)}function I(t,e){return null==e&&(e=c),o.get(o.getDimension(t||0),e)}function C(r,a){null==a&&(a=c),M(a);var s=d.getModel(v).getItemStyle();null!=g&&(s.fill=g);var l=o.getItemVisual(a,"opacity");null!=l&&(s.opacity=l);var u=r?O(r,p):p;return e.setTextStyle(s,u,null,{autoColor:g,isRectText:!0}),s.text=u.getShallow("show")?t.retrieve2(i.getFormattedLabel(a,"normal"),n(o,a)):null,r&&R(s,r),s}function A(r,a){null==a&&(a=c),M(a);var s=d.getModel(m).getItemStyle(),l=r?O(r,f):f;return e.setTextStyle(s,l,null,{isRectText:!0},!0),s.text=l.getShallow("show")?t.retrieve3(i.getFormattedLabel(a,"emphasis"),i.getFormattedLabel(a,"normal"),n(o,a)):null,r&&R(s,r),s}function D(t,e){return null==e&&(e=c),o.getItemVisual(e,t)}function L(e){if(u.getBaseAxis){var n=u.getBaseAxis();return r(t.defaults({axis:n},e),s)}}function k(){return a.getCurrentSeriesIndices()}function P(t){return e.getFont(t,a)}}function T(e){var n={};return t.each(e.dimensions,function(t,i){var r=e.getDimensionInfo(t);if(!r.isExtraCoord){var o=r.coordDim;(n[o]=n[o]||[])[r.coordDimIndex]=i}}),n}function C(t,e,n,i,r,o){return(t=A(t,e,n,i,r,o,!0))&&o.setItemGraphicEl(e,t),t}function A(t,e,n,i,r,o,a){var s=!n,l=(n=n||{}).type,u=n.shape,h=n.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&z(u)&&E(u)!==t.__customPathData||"image"===l&&V(h,"image")&&h.image!==t.__customImagePath||"text"===l&&V(u,"text")&&h.text!==t.__customText)&&(r.remove(t),t=null),!s){var c=!t;return!t&&(t=w(n)),S(t,e,n,i,o,c,a),"group"===l&&D(t,e,n,i,o),r.add(t),t}}function D(t,e,n,i,r){var o=n.children,a=o?o.length:0,s=n.$mergeChildren,l="byName"===s||n.diffChildrenByName,u=!1===s;if(a||l||u)if(l)L({oldChildren:t.children()||[],newChildren:o||[],dataIndex:e,animatableModel:i,group:t,data:r});else{u&&t.removeAll();for(var h=0;he[0]&&(e=e.slice().reverse());var i=t.coordToPoint([e[0],n]),r=t.coordToPoint([e[1],n]);return{x1:i[0],y1:i[1],x2:r[0],y2:r[1]}}function s(t){return t.getRadiusAxis().inverse?0:1}function l(t){var e=t[0],n=t[t.length-1];e&&n&&Math.abs(Math.abs(e.coord-n.coord)-360)<1e-4&&t.pop()}var u=i.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(e,n){if(this.group.removeAll(),e.get("show")){var i=e.axis,r=i.polar,a=r.getRadiusAxis().getExtent(),s=i.getTicksCoords(),u=i.getMinorTicksCoords(),h=t.map(i.getViewLabels(),function(e){return(e=t.clone(e)).coord=i.dataToCoord(e.tickValue),e});l(h),l(s),t.each(o,function(t){!e.get(t+".show")||i.scale.isBlank()&&"axisLine"!==t||this["_"+t](e,r,s,u,a,h)},this)}},_axisLine:function(t,n,i,r,o){var a,l=t.getModel("axisLine.lineStyle"),u=s(n),h=u?0:1;(a=0===o[h]?new e.Circle({shape:{cx:n.cx,cy:n.cy,r:o[u]},style:l.getLineStyle(),z2:1,silent:!0}):new e.Ring({shape:{cx:n.cx,cy:n.cy,r:o[u],r0:o[h]},style:l.getLineStyle(),z2:1,silent:!0})).style.fill=null,this.group.add(a)},_axisTick:function(n,i,r,o,l){var u=n.getModel("axisTick"),h=(u.get("inside")?-1:1)*u.get("length"),c=l[s(i)],d=t.map(r,function(t){return new e.Line({shape:a(i,[c,c+h],t.coord)})});this.group.add(e.mergePath(d,{style:t.defaults(u.getModel("lineStyle").getLineStyle(),{stroke:n.get("axisLine.lineStyle.color")})}))},_minorTick:function(n,i,r,o,l){if(o.length){for(var u=n.getModel("axisTick"),h=n.getModel("minorTick"),c=(u.get("inside")?-1:1)*h.get("length"),d=l[s(i)],p=[],f=0;fm?"left":"right",_=Math.abs(v[1]-y)/g<.3?"middle":v[1]>y?"top":"bottom";c&&c[h]&&c[h].textStyle&&(l=new n(c[h].textStyle,d,d.ecModel));var b=new e.Text({silent:r.isLabelSilent(i)});this.group.add(b),e.setTextStyle(b.style,l,{x:v[0],y:v[1],textFill:l.getTextColor()||i.get("axisLine.lineStyle.color"),text:t.formattedLabel,textAlign:x,textVerticalAlign:_}),f&&(b.eventData=r.makeAxisEventDataBase(i),b.eventData.targetType="axisLabel",b.eventData.value=t.rawLabel)},this)},_splitLine:function(n,i,r,o,s){var l=n.getModel("splitLine").getModel("lineStyle"),u=l.get("color"),h=0;u=u instanceof Array?u:[u];for(var c=[],d=0;dx?"left":"right",p=Math.abs(c[1]-_)/y<.3?"middle":c[1]>_?"top":"bottom"}return{position:c,align:d,verticalAlign:p}}var u={line:function(t,e,n,r,o){return"angle"===t.dim?{type:"Line",shape:i.makeLineShape(e.coordToPoint([r[0],n]),e.coordToPoint([r[1],n]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:n}}},shadow:function(t,e,n,r,o){var a=Math.max(1,t.getBandWidth()),s=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:i.makeSectorShape(e.cx,e.cy,r[0],r[1],(-n-a/2)*s,(a/2-n)*s)}:{type:"Sector",shape:i.makeSectorShape(e.cx,e.cy,n-a/2,n+a/2,0,2*Math.PI)}}};a.registerAxisPointerClass("PolarAxisPointer",s);var h=s;q8=h}(),t.registerLayout(e.curry(n,"bar")),t.extendComponentView({type:"polar"})}(),function(){if(o7)return m7;o7=1;var t=c$(),e=IW();function n(n,i){i.update="updateView",t.registerAction(i,function(t,i){var r={};return i.eachComponent({mainType:"geo",query:t},function(i){i[n](t.name);var o=i.coordinateSystem;e.each(o.regions,function(t){r[t.name]=i.isSelected(t.name)||!1})}),{selected:r,name:t.name}})}(function(){if(n7)return e7;n7=1;var t=IW(),e=PY(),n=uj(),i=HX(),r=MQ(),o=h1(),a=n.extend({type:"geo",coordinateSystem:null,layoutMode:"box",init:function(t){n.prototype.init.apply(this,arguments),e.defaultEmphasis(t,"label",["show"])},optionUpdated:function(){var e=this.option,n=this;e.regions=o.getFilledRegions(e.regions,e.map,e.nameMap),this._optionModelMap=t.reduce(e.regions||[],function(t,e){return e.name&&t.set(e.name,new i(e,n)),t},t.createHashMap()),this.updateSelectedMap(e.regions)},defaultOption:{zlevel:0,z:0,show:!0,left:"center",top:"center",aspectScale:null,silent:!1,map:"",boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",color:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},regions:[]},getRegionModel:function(t){return this._optionModelMap.get(t)||new i(null,this,this.ecModel)},getFormattedLabel:function(t,e){e=e||"normal";var n=this.getRegionModel(t).get(("normal"===e?"":e+".")+"label.formatter"),i={name:t};return"function"==typeof n?(i.status=e,n(i)):"string"==typeof n?n.replace("{a}",null!=t?t:""):void 0},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t}});t.mixin(a,r);var s=a;e7=s})(),h1(),function(){if(r7)return i7;r7=1;var t=F0(),e=c$(),n=e.extendComponentView({type:"geo",init:function(e,n){var i=new t(n,!0);this._mapDraw=i,this.group.add(i.group)},render:function(t,e,n,i){if(!i||"geoToggleSelect"!==i.type||i.from!==this.uid){var r=this._mapDraw;t.get("show")?r.draw(t,e,n,this,i):this._mapDraw.group.removeAll(),this.group.silent=t.get("silent")}},dispose:function(){this._mapDraw&&this._mapDraw.remove()}});i7=n}(),l1(),n("toggleSelected",{type:"geoToggleSelect",event:"geoselectchanged"}),n("select",{type:"geoSelect",event:"geoselected"}),n("unSelect",{type:"geoUnSelect",event:"geounselected"})}(),Q6(),x3(),d7||(d7=1,function(){if(s7)return a7;s7=1;var t=IW(),e=lj(),n=qX(),i=zj(),r=864e5;function o(t,e,n){this._model=t}function a(t,e,n,i){var r=n.calendarModel,o=n.seriesModel,a=r?r.coordinateSystem:o?o.coordinateSystem:null;return a===this?a[t](i):null}o.prototype={constructor:o,type:"calendar",dimensions:["time","value"],getDimensionsInfo:function(){return[{name:"time",type:"time"},"value"]},getRangeInfo:function(){return this._rangeInfo},getModel:function(){return this._model},getRect:function(){return this._rect},getCellWidth:function(){return this._sw},getCellHeight:function(){return this._sh},getOrient:function(){return this._orient},getFirstDayOfWeek:function(){return this._firstDayOfWeek},getDateInfo:function(t){var e=(t=n.parseDate(t)).getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var r=t.getDate();r=r<10?"0"+r:r;var o=t.getDay();return{y:e,m:i,d:r,day:o=Math.abs((o+7-this.getFirstDayOfWeek())%7),time:t.getTime(),formatedDate:e+"-"+i+"-"+r,date:t}},getNextNDay:function(t,e){return 0===(e=e||0)||(t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t)},update:function(n,i){this._firstDayOfWeek=+this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var r=this._rangeInfo.weeks||1,o=["width","height"],a=this._model.get("cellSize").slice(),s=this._model.getBoxLayoutParams(),l="horizontal"===this._orient?[r,7]:[7,r];t.each([0,1],function(t){c(a,t)&&(s[o[t]]=a[t]*l[t])});var u={width:i.getWidth(),height:i.getHeight()},h=this._rect=e.getLayoutRect(s,u);function c(t,e){return null!=t[e]&&"auto"!==t[e]}t.each([0,1],function(t){c(a,t)||(a[t]=h[o[t]]/l[t])}),this._sw=a[0],this._sh=a[1]},dataToPoint:function(e,n){t.isArray(e)&&(e=e[0]),null==n&&(n=!0);var i=this.getDateInfo(e),o=this._rangeInfo,a=i.formatedDate;if(n&&!(i.time>=o.start.time&&i.timea.end.time&&e.reverse(),e},_getRangeInfo:function(t){var e;(t=[this.getDateInfo(t[0]),this.getDateInfo(t[1])])[0].time>t[1].time&&(e=!0,t.reverse());var n=Math.floor(t[1].time/r)-Math.floor(t[0].time/r)+1,i=new Date(t[0].time),o=i.getDate(),a=t[1].date.getDate();i.setDate(o+n-1);var s=i.getDate();if(s!==a)for(var l=i.getTime()-t[1].time>0?1:-1;(s=i.getDate())!==a&&(i.getTime()-t[1].time)*l>0;)n-=l,i.setDate(s-l);var u=Math.floor((n+t[0].day+6)/7),h=e?1-u:u-1;return e&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:n,weeks:u,nthWeek:h,fweek:t[0].day,lweek:t[1].day}},_getDateByWeeksAndDay:function(t,e,n){var i=this._getRangeInfo(n);if(t>i.weeks||0===t&&ei.lweek)return!1;var r=7*(t-1)-i.fweek+e,o=new Date(i.start.time);return o.setDate(i.start.d+r),this.getDateInfo(o)}},o.dimensions=o.prototype.dimensions,o.getDimensionsInfo=o.prototype.getDimensionsInfo,o.create=function(t,e){var n=[];return t.eachComponent("calendar",function(t){var e=new o(t);n.push(e),t.coordinateSystem=e}),t.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=n[t.get("calendarIndex")||0])}),n},i.register("calendar",o);var s=o;a7=s}(),function(){if(u7)return l7;u7=1;var t=IW(),e=uj(),n=lj(),i=n.getLayoutParams,r=n.sizeCalculable,o=n.mergeLayoutParam,a=e.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},init:function(t,e,n,r){var o=i(t);a.superApply(this,"init",arguments),s(t,o)},mergeOption:function(t,e){a.superApply(this,"mergeOption",arguments),s(this.option,t)}});function s(e,n){var i=e.cellSize;t.isArray(i)?1===i.length&&(i[1]=i[0]):i=e.cellSize=[i,i];var a=t.map([0,1],function(t){return r(n,t)&&(i[t]="auto"),null!=i[t]&&"auto"!==i[t]});o(e,n,{type:"box",ignoreSize:a})}var l=a;l7=l}(),function(){if(c7)return h7;c7=1;var t=c$(),e=IW(),n=FX(),i=sj(),r=qX(),o={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},a={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]},s=t.extendComponentView({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,n){var i=this.group;i.removeAll();var r=t.coordinateSystem,o=r.getRangeInfo(),a=r.getOrient();this._renderDayRect(t,o,i),this._renderLines(t,o,a,i),this._renderYearText(t,o,a,i),this._renderMonthText(t,a,i),this._renderWeekText(t,o,a,i)},_renderDayRect:function(t,e,i){for(var r=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),a=r.getCellWidth(),s=r.getCellHeight(),l=e.start.time;l<=e.end.time;l=r.getNextNDay(l,1).time){var u=r.dataToRect([l],!1).tl,h=new n.Rect({shape:{x:u[0],y:u[1],width:a,height:s},cursor:"default",style:o});i.add(h)}},_renderLines:function(t,e,n,i){var r=this,o=t.coordinateSystem,a=t.getModel("splitLine.lineStyle").getLineStyle(),s=t.get("splitLine.show"),l=a.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var u=e.start,h=0;u.time<=e.end.time;h++){d(u.formatedDate),0===h&&(u=o.getDateInfo(e.start.y+"-"+e.start.m));var c=u.date;c.setMonth(c.getMonth()+1),u=o.getDateInfo(c)}function d(e){r._firstDayOfMonth.push(o.getDateInfo(e)),r._firstDayPoints.push(o.dataToRect([e],!1).tl);var l=r._getLinePointsOfOneWeek(t,e,n);r._tlpoints.push(l[0]),r._blpoints.push(l[l.length-1]),s&&r._drawSplitline(l,a,i)}d(o.getNextNDay(e.end.time,1).formatedDate),s&&this._drawSplitline(r._getEdgesPoints(r._tlpoints,l,n),a,i),s&&this._drawSplitline(r._getEdgesPoints(r._blpoints,l,n),a,i)},_getEdgesPoints:function(t,e,n){var i=[t[0].slice(),t[t.length-1].slice()],r="horizontal"===n?0:1;return i[0][r]=i[0][r]-e/2,i[1][r]=i[1][r]+e/2,i},_drawSplitline:function(t,e,i){var r=new n.Polyline({z2:20,shape:{points:t},style:e});i.add(r)},_getLinePointsOfOneWeek:function(t,e,n){var i=t.coordinateSystem;e=i.getDateInfo(e);for(var r=[],o=0;o<7;o++){var a=i.getNextNDay(e.time,o),s=i.dataToRect([a.time],!1);r[2*a.day]=s.tl,r[2*a.day+1]=s["horizontal"===n?"bl":"tr"]}return r},_formatterLabel:function(t,e){return"string"==typeof t&&t?i.formatTplSimple(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,n,i,r){e=e.slice();var o=["center","bottom"];"bottom"===i?(e[1]+=r,o=["center","top"]):"left"===i?e[0]-=r:"right"===i?(e[0]+=r,o=["center","top"]):e[1]-=r;var a=0;return"left"!==i&&"right"!==i||(a=Math.PI/2),{rotation:a,position:e,style:{textAlign:o[0],textVerticalAlign:o[1]}}},_renderYearText:function(t,e,i,r){var o=t.getModel("yearLabel");if(o.get("show")){var a=o.get("margin"),s=o.get("position");s||(s="horizontal"!==i?"top":"left");var l=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],u=(l[0][0]+l[1][0])/2,h=(l[0][1]+l[1][1])/2,c="horizontal"===i?0:1,d={top:[u,l[c][1]],bottom:[u,l[1-c][1]],left:[l[1-c][0],h],right:[l[c][0],h]},p=e.start.y;+e.end.y>+e.start.y&&(p=p+"-"+e.end.y);var f=o.get("formatter"),g={start:e.start.y,end:e.end.y,nameMap:p},v=this._formatterLabel(f,g),m=new n.Text({z2:30});n.setTextStyle(m.style,o,{text:v}),m.attr(this._yearTextPositionControl(m,d[s],i,s,a)),r.add(m)}},_monthTextPositionControl:function(t,e,n,i,r){var o="left",a="top",s=t[0],l=t[1];return"horizontal"===n?(l+=r,e&&(o="center"),"start"===i&&(a="bottom")):(s+=r,e&&(a="middle"),"start"===i&&(o="right")),{x:s,y:l,textAlign:o,textVerticalAlign:a}},_renderMonthText:function(t,i,r){var a=t.getModel("monthLabel");if(a.get("show")){var s=a.get("nameMap"),l=a.get("margin"),u=a.get("position"),h=a.get("align"),c=[this._tlpoints,this._blpoints];e.isString(s)&&(s=o[s.toUpperCase()]||[]);var d="start"===u?0:1,p="horizontal"===i?0:1;l="start"===u?-l:l;for(var f="center"===h,g=0;g=0;h--)null==a[h]?a.splice(h,1):delete a[h].$action},_flatten:function(t,n,i){e.each(t,function(t){if(t){i&&(t.parentOption=i),n.push(t);var e=t.children;"group"===t.type&&e&&this._flatten(e,n,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});function l(t,e,n,r){var o=n.type,s=new(a.hasOwnProperty(o)?a[o]:i.getShapeClass(o))(n);e.add(s),r.set(t,s),s.__ecGraphicId=t}function u(t,e){var n=t&&t.parent;n&&("group"===t.type&&t.traverse(function(t){u(t,e)}),e.removeKey(t.__ecGraphicId),n.remove(t))}function h(t){return t=e.extend({},t),e.each(["id","parentId","$action","hv","bounding"].concat(r.LOCATION_PARAMS),function(e){delete t[e]}),t}function c(t,n){var i;return e.each(n,function(e){null!=t[e]&&"auto"!==t[e]&&(i=!0)}),i}function d(t,e){var n=t.exist;if(e.id=t.keyInfo.id,!e.type&&n&&(e.type=n.type),null==e.parentId){var i=e.parentOption;i?e.parentId=i.id:n&&(e.parentId=n.parentId)}e.parentOption=null}function p(t,n,i){var o=e.extend({},i),a=t[n],s=i.$action||"merge";"merge"===s?a?(e.merge(a,o,!0),r.mergeLayoutParam(a,o,{ignoreSize:!0}),r.copyLayoutParams(i,a)):t[n]=o:"replace"===s?t[n]=o:"remove"===s&&a&&(t[n]=null)}function f(t,e){t&&(t.hv=e.hv=[c(e,["left","right"]),c(e,["top","bottom"])],"group"===t.type&&(null==t.width&&(t.width=e.width=0),null==t.height&&(t.height=e.height=0)))}function g(t,e,n){var i=t.eventData;t.silent||t.ignore||i||(i=t.eventData={componentType:"graphic",componentIndex:e.componentIndex,name:t.name}),i&&(i.info=t.info)}t.extendComponentView({type:"graphic",init:function(t,n){this._elMap=e.createHashMap(),this._lastGraphicModel},render:function(t,e,n){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,n)},_updateElements:function(t){var n=t.useElOptionsToUpdate();if(n){var i=this._elMap,r=this.group;e.each(n,function(e){var n=e.$action,o=e.id,a=i.get(o),s=e.parentId,c=null!=s?i.get(s):r,d=e.style;"text"===e.type&&d&&(e.hv&&e.hv[1]&&(d.textVerticalAlign=d.textBaseline=null),!d.hasOwnProperty("textFill")&&d.fill&&(d.textFill=d.fill),!d.hasOwnProperty("textStroke")&&d.stroke&&(d.textStroke=d.stroke));var p=h(e);n&&"merge"!==n?"replace"===n?(u(a,i),l(o,c,p,i)):"remove"===n&&u(a,i):a?a.attr(p):l(o,c,p,i);var f=i.get(o);f&&(f.__ecGraphicWidthOption=e.width,f.__ecGraphicHeightOption=e.height,g(f,t))})}},_relocate:function(t,e){for(var n=t.option.elements,i=this.group,a=this._elMap,s=e.getWidth(),l=e.getHeight(),u=0;u=0;u--){var d;if(h=n[u],d=a.get(h.id)){var p,f=(p=d.parent)===i?{width:s,height:l}:{width:p.__ecGraphicWidth,height:p.__ecGraphicHeight};r.positionElement(d,h,f,null,{hv:h.hv,boundingMode:h.bounding})}}},_clear:function(){var t=this._elMap;t.each(function(e){u(e,t)}),this._elMap=e.createHashMap()},dispose:function(){this._clear()}})}(),d9||(d9=1,function(){if(v7)return g7;v7=1;var t=c$(),e=IW(),n=_7(),i=t.extendComponentModel({type:"toolbox",layoutMode:{type:"box",ignoreSize:!0},optionUpdated:function(){i.superApply(this,"optionUpdated",arguments),e.each(this.option.feature,function(t,i){var r=n.get(i);r&&e.merge(t,r.defaultOption)})},defaultOption:{show:!0,z:6,zlevel:0,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1}}}),r=i;g7=r}(),function(){if(S7)return w7;S7=1;var t=c$(),e=IW(),n=oY(),i=_7(),r=FX(),o=HX(),a=Yq(),s=O7(),l=t.extendComponentView({type:"toolbox",render:function(t,l,h,c){var d=this.group;if(d.removeAll(),t.get("show")){var p=+t.get("itemSize"),f=t.get("feature")||{},g=this._features||(this._features={}),v=[];e.each(f,function(t,e){v.push(e)}),new a(this._featureNames||[],v).add(m).update(m).remove(e.curry(m,null)).execute(),this._featureNames=v,s.layout(d,t,h),d.add(s.makeBackground(d.getBoundingRect(),t)),d.eachChild(function(t){var e=t.__title,i=t.hoverStyle;if(i&&e){var r=n.getBoundingRect(e,n.makeFont(i)),o=t.position[0]+d.position[0],a=!1;t.position[1]+d.position[1]+p+r.height>h.getHeight()&&(i.textPosition="top",a=!0);var s=a?-5-r.height:p+8;o+r.width/2>h.getWidth()?(i.textPosition=["100%",s],i.textAlign="right"):o-r.width/2<0&&(i.textPosition=[0,s],i.textAlign="left")}})}function m(e,n){var r,a=v[e],s=v[n],d=f[a],p=new o(d,t,t.ecModel);if(c&&null!=c.newTitle&&c.featureName===a&&(d.title=c.newTitle),a&&!s){if(u(a))r={model:p,onclick:p.option.onclick,featureName:a};else{var m=i.get(a);if(!m)return;r=new m(p,l,h)}g[a]=r}else{if(!(r=g[s]))return;r.model=p,r.ecModel=l,r.api=h}a||!s?p.get("show")&&!r.unusable?(y(p,r,a),p.setIconStatus=function(t,e){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[t]=e,i[t]&&i[t].trigger(e)},r.render&&r.render(p,l,h,c)):r.remove&&r.remove(l,h):r.dispose&&r.dispose(l,h)}function y(n,i,o){var a=n.getModel("iconStyle"),s=n.getModel("emphasis.iconStyle"),u=i.getIcons?i.getIcons():n.get("icon"),c=n.get("title")||{};if("string"==typeof u){var f=u,g=c;c={},(u={})[o]=f,c[o]=g}var v=n.iconPaths={};e.each(u,function(o,u){var f=r.createIcon(o,{},{x:-p/2,y:-p/2,width:p,height:p});f.setStyle(a.getItemStyle()),f.hoverStyle=s.getItemStyle(),f.setStyle({text:c[u],textAlign:s.get("textAlign"),textBorderRadius:s.get("textBorderRadius"),textPadding:s.get("textPadding"),textFill:null});var g=t.getModel("tooltip");g&&g.get("show")&&f.attr("tooltip",e.extend({content:c[u],formatter:g.get("formatter",!0)||function(){return c[u]},formatterParams:{componentType:"toolbox",name:u,title:c[u],$vars:["name","title"]},position:g.get("position",!0)||"bottom"},g.option)),r.setHoverStyle(f),t.get("showTitle")&&(f.__title=c[u],f.on("mouseover",function(){var e=s.getItemStyle(),n="vertical"===t.get("orient")?null==t.get("right")?"right":"left":null==t.get("bottom")?"bottom":"top";f.setStyle({textFill:s.get("textFill")||e.fill||e.stroke||"#000",textBackgroundColor:s.get("textBackgroundColor"),textPosition:s.get("textPosition")||n})}).on("mouseout",function(){f.setStyle({textFill:null,textBackgroundColor:null})})),f.trigger(n.get("iconStatus."+u)||"normal"),d.add(f),f.on("click",e.bind(i.onclick,i,l,h,u)),v[u]=f})}},updateView:function(t,n,i,r){e.each(this._features,function(t){t.updateView&&t.updateView(t.model,n,i,r)})},remove:function(t,n){e.each(this._features,function(e){e.remove&&e.remove(t,n)}),this.group.removeAll()},dispose:function(t,n){e.each(this._features,function(e){e.dispose&&e.dispose(t,n)})}});function u(t){return 0===t.indexOf("my")}w7=l}(),function(){if(I7)return M7;I7=1;var t=wW(),e=Tq(),n=_7(),i=e.toolbox.saveAsImage;function r(t){this.model=t}r.defaultOption={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:i.title,type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:i.lang.slice()},r.prototype.unusable=!t.canvasSupported;var o=r.prototype;o.onclick=function(e,n){var i=this.model,r=i.get("name")||e.get("title.0.text")||"echarts",o="svg"===n.getZr().painter.getType()?"svg":i.get("type",!0)||"png",a=n.getConnectedDataURL({type:o,backgroundColor:i.get("backgroundColor",!0)||e.get("backgroundColor")||"#fff",connectedBackgroundColor:i.get("connectedBackgroundColor"),excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if("function"!=typeof MouseEvent||t.browser.ie||t.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var s=atob(a.split(",")[1]),l=s.length,u=new Uint8Array(l);l--;)u[l]=s.charCodeAt(l);var h=new Blob([u]);window.navigator.msSaveOrOpenBlob(h,r+"."+o)}else{var c=i.get("lang"),d='';window.open().document.write(d)}else{var p=document.createElement("a");p.download=r+"."+o,p.target="_blank",p.href=a;var f=new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1});p.dispatchEvent(f)}},n.register("saveAsImage",r);var a=r;M7=a}(),function(){if(C7)return T7;C7=1;var t=c$(),e=IW(),n=Tq(),i=_7(),r=n.toolbox.magicType,o="__ec_magicType_stack__";function a(t){this.model=t}a.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:e.clone(r.title),option:{},seriesIndex:{}};var s=a.prototype;s.getIcons=function(){var t=this.model,n=t.get("icon"),i={};return e.each(t.get("type"),function(t){n[t]&&(i[t]=n[t])}),i};var l={line:function(t,n,i,r){if("bar"===t)return e.merge({id:n,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},r.get("option.line")||{},!0)},bar:function(t,n,i,r){if("line"===t)return e.merge({id:n,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},r.get("option.bar")||{},!0)},stack:function(t,n,i,r){var a=i.get("stack")===o;if("line"===t||"bar"===t)return r.setIconStatus("stack",a?"normal":"emphasis"),e.merge({id:n,stack:a?"":o},r.get("option.stack")||{},!0)}},u=[["line","bar"],["stack"]];s.onclick=function(t,n,i){var a=this.model,s=a.get("seriesIndex."+i);if(l[i]){var h,c={series:[]},d=function(n){var r=n.subType,o=n.id,s=l[i](r,o,n,a);s&&(e.defaults(s,n.option),c.series.push(s));var u=n.coordinateSystem;if(u&&"cartesian2d"===u.type&&("line"===i||"bar"===i)){var h=u.getAxesByScale("ordinal")[0];if(h){var d=h.dim+"Axis",p=t.queryComponents({mainType:d,index:n.get(name+"Index"),id:n.get(name+"Id")})[0].componentIndex;c[d]=c[d]||[];for(var f=0;f<=p;f++)c[d][p]=c[d][p]||{};c[d][p].boundaryGap="bar"===i}}};e.each(u,function(t){e.indexOf(t,i)>=0&&e.each(t,function(t){a.setIconStatus(t,"normal")})}),a.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==s?null:{seriesIndex:s}},d),"stack"===i&&(h=c.series&&c.series[0]&&c.series[0].stack===o?e.merge({stack:r.title.tiled},r.title):e.clone(r.title)),n.dispatchAction({type:"changeMagicType",currentType:i,newOption:c,newTitle:h,featureName:"magicType"})}},t.registerAction({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),i.register("magicType",a);var h=a;T7=h}(),function(){if(D7)return A7;D7=1;var t=c$(),e=IW(),n=YW(),i=Tq(),r=_7(),o=i.toolbox.dataView,a=new Array(60).join("-"),s="\t";function l(t){var e={},n=[],i=[];return t.eachRawSeries(function(t){var r=t.coordinateSystem;if(!r||"cartesian2d"!==r.type&&"polar"!==r.type)n.push(t);else{var o=r.getBaseAxis();if("category"===o.type){var a=o.dim+"_"+o.index;e[a]||(e[a]={categoryAxis:o,valueAxis:r.getOtherAxis(o),series:[]},i.push({axisDim:o.dim,axisIndex:o.index})),e[a].series.push(t)}else n.push(t)}}),{seriesGroupByCategoryAxis:e,other:n,meta:i}}function u(t){var n=[];return e.each(t,function(t,i){var r=t.categoryAxis,o=t.valueAxis.dim,a=[" "].concat(e.map(t.series,function(t){return t.name})),l=[r.model.getCategories()];e.each(t.series,function(t){var e=t.getRawData();l.push(t.getRawData().mapArray(e.mapDimension(o),function(t){return t}))});for(var u=[a.join(s)],h=0;h=0)return!0}var f=new RegExp("["+s+"]+","g");function g(t){for(var n=t.split(/\n+/g),i=d(n.shift()).split(f),r=[],o=e.map(i,function(t){return{name:t,data:[]}}),a=0;a1?"emphasis":"normal")}function v(t,e,n,r,o){var a=n._isZoomActive;r&&"takeGlobalCursor"===r.type&&(a="dataZoomSelect"===r.key&&r.dataZoomSelectActive),n._isZoomActive=a,t.setIconStatus("zoom",a?"emphasis":"normal");var s=new i(f(t.option),e,{include:["grid"]});n._brushController.setPanels(s.makePanelOpts(o,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!a&&{brushType:"auto",brushStyle:t.getModel("brushStyle").getItemStyle()})}d._onBrush=function(t,e){if(e.isEnd&&t.length){var n={},a=this.ecModel;this._brushController.updateCovers([]),new i(f(this.model.option),a,{include:["grid"]}).matchOutputRanges(t,a,function(t,e,n){if("cartesian2d"===n.type){var i=t.brushType;"rect"===i?(s("x",n,e[0]),s("y",n,e[1])):s({lineX:"x",lineY:"y"}[i],n,e)}}),r.push(a,n),this._dispatchZoomAction(n)}function s(t,e,i){var r=e.getAxis(t),s=r.model,u=l(t,s,a),h=u.findRepresentativeAxisProxy(s).getMinMaxSpan();null==h.minValueSpan&&null==h.maxValueSpan||(i=o(0,i.slice(),r.scale.getExtent(),0,h.minValueSpan,h.maxValueSpan)),u&&(n[u.id]={dataZoomId:u.id,startValue:i[0],endValue:i[1]})}function l(t,e,n){var i;return n.eachComponent({mainType:"dataZoom",subType:"select"},function(n){n.getAxisModel(t,e.componentIndex)&&(i=n)}),i}},d._dispatchZoomAction=function(t){var n=[];u(t,function(t,i){n.push(e.clone(t))}),n.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:n})},s.register("dataZoom",c),t.registerPreprocessor(function(t){if(t){var n=t.dataZoom||(t.dataZoom=[]);e.isArray(n)||(t.dataZoom=n=[n]);var i=t.toolbox;if(i&&(e.isArray(i)&&(i=i[0]),i&&i.feature)){var r=i.feature.dataZoom;o("xAxis",r),o("yAxis",r)}}function o(t,i){if(i){var r=t+"Index",o=i[r];null==o||"all"===o||e.isArray(o)||(o=!1===o||"none"===o?[]:[o]),a(t,function(a,s){if(null==o||"all"===o||-1!==e.indexOf(o,s)){var l={type:"select",$fromToolbox:!0,filterMode:i.filterMode||"filter",id:h+t+s};l[r]=s,n.push(l)}})}}function a(n,i){var r=t[n];e.isArray(r)||(r=r?[r]:[]),u(r,i)}}),l9=c}(),function(){if(c9)return h9;c9=1;var t=c$(),e=z7(),n=Tq(),i=_7(),r=n.toolbox.restore;function o(t){this.model=t}o.defaultOption={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:r.title};var a=o.prototype;a.onclick=function(t,n,i){e.clear(t),n.dispatchAction({type:"restore",from:this.uid})},i.register("restore",o),t.registerAction({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")}),h9=o}()),function(){if(S9)return R9;S9=1;var t=c$();J6(),function(){if(v9)return g9;v9=1;var t=c$(),e=t.extendComponentModel({type:"tooltip",dependencies:["axisPointer"],defaultOption:{zlevel:0,z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:!1,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"rgba(50,50,50,0.7)",borderColor:"#333",borderRadius:4,borderWidth:0,padding:5,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#fff",fontSize:14}}});g9=e}(),function(){if(w9)return b9;w9=1;var t=c$(),e=IW(),n=wW(),i=function(){if(y9)return m9;y9=1;var t=IW(),e=cU(),n=YW(),i=UW(),r=wW(),o=sj(),a=t.each,s=o.toCamelCase,l=["","-webkit-","-moz-","-o-"],u="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;";function h(e){var n="cubic-bezier(0.23, 1, 0.32, 1)",i="left "+e+"s "+n+",top "+e+"s "+n;return t.map(l,function(t){return t+"transition:"+i}).join(";")}function c(t){var e=[],n=t.get("fontSize"),i=t.getTextColor();i&&e.push("color:"+i),e.push("font:"+t.getFont());var r=t.get("lineHeight");null==r&&(r=Math.round(3*n/2)),n&&e.push("line-height:"+r+"px");var o=t.get("textShadowColor"),s=t.get("textShadowBlur")||0,l=t.get("textShadowOffsetX")||0,u=t.get("textShadowOffsetY")||0;return s&&e.push("text-shadow:"+l+"px "+u+"px "+s+"px "+o),a(["decoration","align"],function(n){var i=t.get(n);i&&e.push("text-"+n+":"+i)}),e.join(";")}function d(t){var n=[],i=t.get("transitionDuration"),l=t.get("backgroundColor"),u=t.getModel("textStyle"),d=t.get("padding");return i&&n.push(h(i)),l&&(r.canvasSupported?n.push("background-Color:"+l):(n.push("background-Color:#"+e.toHex(l)),n.push("filter:alpha(opacity=70)"))),a(["width","color","radius"],function(e){var i="border-"+e,r=s(i),o=t.get(r);null!=o&&n.push(i+":"+o+("color"===e?"":"px"))}),n.push(c(u)),null!=d&&n.push("padding:"+o.normalizeCssArray(d).join("px ")+"px"),n.join(";")+";"}function p(t,e,n,r,o){var a=e&&e.painter;if(n){var s=a&&a.getViewportRoot();s&&i.transformLocalCoord(t,s,document.body,r,o)}else{t[0]=r,t[1]=o;var l=a&&a.getViewportRootOffset();l&&(t[0]+=l.offsetLeft,t[1]+=l.offsetTop)}t[2]=t[0]/e.getWidth(),t[3]=t[1]/e.getHeight()}function f(t,e,i){if(r.wxa)return null;var o=document.createElement("div");o.domBelongToZr=!0,this.el=o;var a=this._zr=e.getZr(),s=this._appendToBody=i&&i.appendToBody;this._styleCoord=[0,0,0,0],p(this._styleCoord,a,s,e.getWidth()/2,e.getHeight()/2),s?document.body.appendChild(o):t.appendChild(o),this._container=t,this._show=!1,this._hideTimeout;var l=this;o.onmouseenter=function(){l._enterable&&(clearTimeout(l._hideTimeout),l._show=!0),l._inContent=!0},o.onmousemove=function(t){if(t=t||window.event,!l._enterable){var e=a.handler,i=a.painter.getViewportRoot();n.normalizeEvent(i,t,!0),e.dispatch("mousemove",t)}},o.onmouseleave=function(){l._enterable&&l._show&&l.hideLater(l._hideDelay),l._inContent=!1}}f.prototype={constructor:f,_enterable:!0,update:function(t){var e=this._container,n=e.currentStyle||document.defaultView.getComputedStyle(e),i=e.style;"absolute"!==i.position&&"absolute"!==n.position&&(i.position="relative"),t.get("alwaysShowContent")&&this._moveTooltipIfResized()},_moveTooltipIfResized:function(){var t=this._styleCoord[2],e=this._styleCoord[3],n=t*this._zr.getWidth(),i=e*this._zr.getHeight();this.moveTo(n,i)},show:function(t){clearTimeout(this._hideTimeout);var e=this.el,n=this._styleCoord;e.style.cssText=u+d(t)+";left:"+n[0]+"px;top:"+n[1]+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",e.style.pointerEvents=this._enterable?"auto":"none",this._show=!0},setContent:function(t){this.el.innerHTML=null==t?"":t},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el;return[t.clientWidth,t.clientHeight]},moveTo:function(t,e){var n=this._styleCoord;p(n,this._zr,this._appendToBody,t,e);var i=this.el.style;i.left=n[0]+"px",i.top=n[1]+"px"},hide:function(){this.el.style.display="none",this._show=!1},hideLater:function(e){!this._show||this._inContent&&this._enterable||(e?(this._hideDelay=e,this._show=!1,this._hideTimeout=setTimeout(t.bind(this.hide,this),e)):this.hide())},isShow:function(){return this._show},dispose:function(){this.el.parentNode.removeChild(this.el)},getOuterSize:function(){var t=this.el.clientWidth,e=this.el.clientHeight;if(document.defaultView&&document.defaultView.getComputedStyle){var n=document.defaultView.getComputedStyle(this.el);n&&(t+=parseInt(n.borderLeftWidth,10)+parseInt(n.borderRightWidth,10),e+=parseInt(n.borderTopWidth,10)+parseInt(n.borderBottomWidth,10))}return{width:t,height:e}}};var g=f;return m9=g}(),r=function(){if(_9)return x9;_9=1;var t=IW(),e=BZ(),n=FX();function i(t,e,n,i){t[0]=n,t[1]=i,t[2]=t[0]/e.getWidth(),t[3]=t[1]/e.getHeight()}function r(t){var e=this._zr=t.getZr();this._styleCoord=[0,0,0,0],i(this._styleCoord,e,t.getWidth()/2,t.getHeight()/2),this._show=!1,this._hideTimeout}r.prototype={constructor:r,_enterable:!0,update:function(t){t.get("alwaysShowContent")&&this._moveTooltipIfResized()},_moveTooltipIfResized:function(){var t=this._styleCoord[2],e=this._styleCoord[3],n=t*this._zr.getWidth(),i=e*this._zr.getHeight();this.moveTo(n,i)},show:function(t){this._hideTimeout&&clearTimeout(this._hideTimeout),this.el.attr("show",!0),this._show=!0},setContent:function(t,i,r){this.el&&this._zr.remove(this.el);for(var o={},a=t,s="{marker",l="|}",u=a.indexOf(s);u>=0;){var h=a.indexOf(l),c=a.substr(u+s.length,h-u-s.length);c.indexOf("sub")>-1?o["marker"+c]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:i[c],textOffset:[3,0]}:o["marker"+c]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:i[c]},u=(a=a.substr(h+1)).indexOf("{marker")}var d=r.getModel("textStyle"),p=d.get("fontSize"),f=r.get("textLineHeight");null==f&&(f=Math.round(3*p/2)),this.el=new e({style:n.setTextStyle({},d,{rich:o,text:t,textBackgroundColor:r.get("backgroundColor"),textBorderRadius:r.get("borderRadius"),textFill:r.get("textStyle.color"),textPadding:r.get("padding"),textLineHeight:f}),z:r.get("z")}),this._zr.add(this.el);var g=this;this.el.on("mouseover",function(){g._enterable&&(clearTimeout(g._hideTimeout),g._show=!0),g._inContent=!0}),this.el.on("mouseout",function(){g._enterable&&g._show&&g.hideLater(g._hideDelay),g._inContent=!1})},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el.getBoundingRect();return[t.width,t.height]},moveTo:function(t,e){if(this.el){var n=this._styleCoord;i(n,this._zr,t,e),this.el.attr("position",[n[0],n[1]])}},hide:function(){this.el&&this.el.hide(),this._show=!1},hideLater:function(e){!this._show||this._inContent&&this._enterable||(e?(this._hideDelay=e,this._show=!1,this._hideTimeout=setTimeout(t.bind(this.hide,this),e)):this.hide())},isShow:function(){return this._show},dispose:function(){clearTimeout(this._hideTimeout),this.el&&this._zr.remove(this.el)},getOuterSize:function(){var t=this.getSize();return{width:t[0],height:t[1]}}};var o=r;return x9=o}(),o=sj(),a=qX(),s=FX(),l=S6(),u=lj(),h=HX(),c=k6(),d=FK(),p=K6(),f=PY().getTooltipRenderMode,g=e.bind,v=e.each,m=a.parsePercent,y=new s.Rect({shape:{x:-1,y:-1,width:2,height:2}}),x=t.extendComponentView({type:"tooltip",init:function(t,e){if(!n.node){var o,a=t.getComponent("tooltip"),s=a.get("renderMode");this._renderMode=f(s),"html"===this._renderMode?(o=new i(e.getDom(),e,{appendToBody:a.get("appendToBody",!0)}),this._newLine="
"):(o=new r(e),this._newLine="\n"),this._tooltipContent=o}},render:function(t,e,i){if(!n.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var r=this._tooltipContent;r.update(t),r.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel.get("triggerOn");c.register("itemTooltip",this._api,g(function(e,n,i){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(n,i):"leave"===e&&this._hide(i))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,n=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var i=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){!n.isDisposed()&&i.manuallyShowTip(t,e,n,{x:i._lastX,y:i._lastY})})}},manuallyShowTip:function(t,e,i,r){if(r.from!==this.uid&&!n.node){var o=b(r,i);this._ticket="";var a=r.dataByCoordSys;if(r.tooltip&&null!=r.x&&null!=r.y){var s=y;s.position=[r.x,r.y],s.update(),s.tooltip=r.tooltip,this._tryShow({offsetX:r.x,offsetY:r.y,target:s},o)}else if(a)this._tryShow({offsetX:r.x,offsetY:r.y,position:r.position,dataByCoordSys:r.dataByCoordSys,tooltipOption:r.tooltipOption},o);else if(null!=r.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,r))return;var u=l(r,e),h=u.point[0],c=u.point[1];null!=h&&null!=c&&this._tryShow({offsetX:h,offsetY:c,position:r.position,target:u.el},o)}else null!=r.x&&null!=r.y&&(i.dispatchAction({type:"updateAxisPointer",x:r.x,y:r.y}),this._tryShow({offsetX:r.x,offsetY:r.y,position:r.position,target:i.getZr().findHover(r.x,r.y).target},o))}},manuallyHideTip:function(t,e,n,i){var r=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&r.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,i.from!==this.uid&&this._hide(b(i,n))},_manuallyAxisShowTip:function(t,e,n,i){var r=i.seriesIndex,o=i.dataIndex,a=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=r&&null!=o&&null!=a){var s=e.getSeriesByIndex(r);if(s&&"axis"===(t=_([s.getData().getItemModel(o),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return n.dispatchAction({type:"updateAxisPointer",seriesIndex:r,dataIndex:o,position:i.position}),!0}},_tryShow:function(t,e){var n=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var i=t.dataByCoordSys;i&&i.length?this._showAxisTooltip(i,t):n&&null!=n.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,n,e)):n&&n.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,n,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,n){var i=t.get("showDelay");n=e.bind(n,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(n,i):n()},_showAxisTooltip:function(t,n){var i=this._ecModel,r=this._tooltipModel,a=[n.offsetX,n.offsetY],s=[],l=[],u=_([n.tooltipOption,r]),h=this._renderMode,c=this._newLine,f={};v(t,function(t){v(t.dataByAxis,function(t){var n=i.getComponent(t.axisDim+"Axis",t.axisIndex),r=t.value,a=[];if(n&&null!=r){var u=p.getValueLabel(r,n.axis,i,t.seriesDataIndices,t.valueLabelOpt);e.each(t.seriesDataIndices,function(o){var s=i.getSeriesByIndex(o.seriesIndex),c=o.dataIndexInside,p=s&&s.getDataParams(c);if(p.axisDim=t.axisDim,p.axisIndex=t.axisIndex,p.axisType=t.axisType,p.axisId=t.axisId,p.axisValue=d.getAxisRawValue(n.axis,r),p.axisValueLabel=u,p){l.push(p);var g,v=s.formatTooltip(c,!0,null,h);if(e.isObject(v)){g=v.html;var m=v.markers;e.merge(f,m)}else g=v;a.push(g)}});var g=u;"html"!==h?s.push(a.join(c)):s.push((g?o.encodeHTML(g)+c:"")+a.join(c))}})},this),s.reverse(),s=s.join(this._newLine+this._newLine);var g=n.position;this._showOrMove(u,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(u,g,a[0],a[1],this._tooltipContent,l):this._showTooltipContent(u,s,l,Math.random(),a[0],a[1],g,void 0,f)})},_showSeriesItemTooltip:function(t,n,i){var r=this._ecModel,o=n.seriesIndex,a=r.getSeriesByIndex(o),s=n.dataModel||a,l=n.dataIndex,u=n.dataType,h=s.getData(u),c=_([h.getItemModel(l),s,a&&(a.coordinateSystem||{}).model,this._tooltipModel]),d=c.get("trigger");if(null==d||"item"===d){var p,f,g=s.getDataParams(l,u),v=s.formatTooltip(l,!1,u,this._renderMode);e.isObject(v)?(p=v.html,f=v.markers):(p=v,f=null);var m="item_"+s.name+"_"+l;this._showOrMove(c,function(){this._showTooltipContent(c,p,g,m,t.offsetX,t.offsetY,t.position,t.target,f)}),i({type:"showTip",dataIndexInside:l,dataIndex:h.getRawIndex(l),seriesIndex:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,n){var i=e.tooltip;"string"==typeof i&&(i={content:i,formatter:i});var r=new h(i,this._tooltipModel,this._ecModel),o=r.get("content"),a=Math.random();this._showOrMove(r,function(){this._showTooltipContent(r,o,r.get("formatterParams")||{},a,t.offsetX,t.offsetY,t.position,e)}),n({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,n,i,r,a,s,l,u){if(this._ticket="",t.get("showContent")&&t.get("show")){var h=this._tooltipContent,c=t.get("formatter");s=s||t.get("position");var d=e;if(c&&"string"==typeof c)d=o.formatTpl(c,n,!0);else if("function"==typeof c){var p=g(function(e,i){e===this._ticket&&(h.setContent(i,u,t),this._updatePosition(t,s,r,a,h,n,l))},this);this._ticket=i,d=c(n,i,p)}h.setContent(d,u,t),h.show(t),this._updatePosition(t,s,r,a,h,n,l)}},_updatePosition:function(t,n,i,r,o,a,s){var l=this._api.getWidth(),h=this._api.getHeight();n=n||t.get("position");var c=o.getSize(),d=t.get("align"),p=t.get("verticalAlign"),f=s&&s.getBoundingRect().clone();if(s&&f.applyTransform(s.transform),"function"==typeof n&&(n=n([i,r],a,o.el,f,{viewSize:[l,h],contentSize:c.slice()})),e.isArray(n))i=m(n[0],l),r=m(n[1],h);else if(e.isObject(n)){n.width=c[0],n.height=c[1];var g=u.getLayoutRect(n,{width:l,height:h});i=g.x,r=g.y,d=null,p=null}else if("string"==typeof n&&s)i=(v=M(n,f,c))[0],r=v[1];else{var v;i=(v=w(i,r,o,l,h,d?null:20,p?null:20))[0],r=v[1]}d&&(i-=I(d)?c[0]/2:"right"===d?c[0]:0),p&&(r-=I(p)?c[1]/2:"bottom"===p?c[1]:0),t.get("confine")&&(i=(v=S(i,r,o,l,h))[0],r=v[1]),o.moveTo(i,r)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,n=!!e&&e.length===t.length;return n&&v(e,function(e,i){var r=e.dataByAxis||{},o=(t[i]||{}).dataByAxis||[];(n&=r.length===o.length)&&v(r,function(t,e){var i=o[e]||{},r=t.seriesDataIndices||[],a=i.seriesDataIndices||[];(n&=t.value===i.value&&t.axisType===i.axisType&&t.axisId===i.axisId&&r.length===a.length)&&v(r,function(t,e){var i=a[e];n&=t.seriesIndex===i.seriesIndex&&t.dataIndex===i.dataIndex})})}),this._lastDataByCoordSys=t,!!n},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){n.node||(this._tooltipContent.dispose(),c.unregister("itemTooltip",e))}});function _(t){for(var e=t.pop();t.length;){var n=t.pop();n&&(h.isInstance(n)&&(n=n.get("tooltip",!0)),"string"==typeof n&&(n={formatter:n}),e=new h(n,e,e.ecModel))}return e}function b(t,n){return t.dispatchAction||e.bind(n.dispatchAction,n)}function w(t,e,n,i,r,o,a){var s=n.getOuterSize(),l=s.width,u=s.height;return null!=o&&(t+l+o>i?t-=l+o:t+=o),null!=a&&(e+u+a>r?e-=u+a:e+=a),[t,e]}function S(t,e,n,i,r){var o=n.getOuterSize(),a=o.width,s=o.height;return t=Math.min(t+a,i)-a,e=Math.min(e+s,r)-s,[t=Math.max(t,0),e=Math.max(e,0)]}function M(t,e,n){var i=n[0],r=n[1],o=5,a=0,s=0,l=e.width,u=e.height;switch(t){case"inside":a=e.x+l/2-i/2,s=e.y+u/2-r/2;break;case"top":a=e.x+l/2-i/2,s=e.y-r-o;break;case"bottom":a=e.x+l/2-i/2,s=e.y+u+o;break;case"left":a=e.x-i-o,s=e.y+u/2-r/2;break;case"right":a=e.x+l+o,s=e.y+u/2-r/2}return[a,s]}function I(t){return"center"===t||"middle"===t}b9=x}(),t.registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),t.registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){})}(),J6(),function(){if(W9)return N9;W9=1;var t=c$(),e=function(){if(I9)return M9;I9=1;var t=IW(),e=["rect","polygon","keep","clear"];function n(n,r){var o=n&&n.brush;if(t.isArray(o)||(o=o?[o]:[]),o.length){var a=[];t.each(o,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(a=a.concat(e))});var s=n&&n.toolbox;t.isArray(s)&&(s=s[0]),s||(s={feature:{}},n.toolbox=[s]);var l=s.feature||(s.feature={}),u=l.brush||(l.brush={}),h=u.type||(u.type=[]);h.push.apply(h,a),i(h),r&&!h.length&&h.push.apply(h,e)}}function i(e){var n={};t.each(e,function(t){n[t]=1}),e.length=0,t.each(n,function(t,n){e.push(n)})}return M9=n}();B9(),function(){if(k9)return L9;k9=1,gW().__DEV__;var t=c$(),e=IW(),n=V9(),i=HX(),r=["#ddd"],o=t.extendComponentModel({type:"brush",dependencies:["geo","grid","xAxis","yAxis","parallel","series"],defaultOption:{toolbox:null,brushLink:null,seriesIndex:"all",geoIndex:null,xAxisIndex:null,yAxisIndex:null,brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(120,140,180,0.3)",borderColor:"rgba(120,140,180,0.8)"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;!e&&n.replaceVisualOption(i,t,["inBrush","outOfBrush"]);var o=i.inBrush=i.inBrush||{};i.outOfBrush=i.outOfBrush||{color:r},o.hasOwnProperty("liftZ")||(o.liftZ=5)},setAreas:function(t){t&&(this.areas=e.map(t,function(t){return a(this.option,t)},this))},setBrushOption:function(t){this.brushOption=a(this.option,t),this.brushType=this.brushOption.brushType}});function a(t,n){return e.merge({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new i(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},n,!0)}var s=o;L9=s}(),function(){if(O9)return P9;O9=1;var t=c$(),e=IW(),n=n3(),i=B9().layoutCovers,r=t.extendComponentView({type:"brush",init:function(t,i){this.ecModel=t,this.api=i,this.model,(this._brushController=new n(i.getZr())).on("brush",e.bind(this._onBrush,this)).mount()},render:function(t){return this.model=t,o.apply(this,arguments)},updateTransform:function(t,e){return i(e),o.apply(this,arguments)},updateView:o,dispose:function(){this._brushController.dispose()},_onBrush:function(t,n){var i=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),(!n.isEnd||n.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:i,areas:e.clone(t),$from:i}),n.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:i,areas:e.clone(t),$from:i})}});function o(t,e,n,i){(!i||i.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts(n)).enableBrush(t.brushOption).updateCovers(t.areas.slice())}P9=r}(),function(){if(G9)return att;G9=1;var t=c$();t.registerAction({type:"brush",event:"brush"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),t.registerAction({type:"brushSelect",event:"brushSelected",update:"none"},function(){}),t.registerAction({type:"brushEnd",event:"brushEnd",update:"none"},function(){})}(),function(){if(H9)return F9;H9=1;var t=IW(),e=_7(),n=Tq(),i=n.toolbox.brush;function r(t,e,n){this.model=t,this.ecModel=e,this.api=n,this._brushType,this._brushMode}r.defaultOption={show:!0,type:["rect","polygon","lineX","lineY","keep","clear"],icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:t.clone(i.title)};var o=r.prototype;o.render=o.updateView=function(e,n,i){var r,o,a;n.eachComponent({mainType:"brush"},function(t){r=t.brushType,o=t.brushOption.brushMode||"single",a|=t.areas.length}),this._brushType=r,this._brushMode=o,t.each(e.get("type",!0),function(t){e.setIconStatus(t,("keep"===t?"multiple"===o:"clear"===t?a:t===r)?"emphasis":"normal")})},o.getIcons=function(){var e=this.model,n=e.get("icon",!0),i={};return t.each(e.get("type",!0),function(t){n[t]&&(i[t]=n[t])}),i},o.onclick=function(t,e,n){var i=this._brushType,r=this._brushMode;"clear"===n?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===n?i:i!==n&&n,brushMode:"keep"===n?"multiple"===r?"single":"multiple":r}})},e.register("brush",r),F9=r}(),t.registerPreprocessor(e)}(),function(){if(U9)return stt;U9=1;var t=IW(),e=c$(),n=FX(),i=lj().getLayoutRect,r=sj().windowOpen;e.extendComponentModel({type:"title",layoutMode:{type:"box",ignoreSize:!0},defaultOption:{zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bolder",color:"#333"},subtextStyle:{color:"#aaa"}}}),e.extendComponentView({type:"title",render:function(e,o,a){if(this.group.removeAll(),e.get("show")){var s=this.group,l=e.getModel("textStyle"),u=e.getModel("subtextStyle"),h=e.get("textAlign"),c=t.retrieve2(e.get("textBaseline"),e.get("textVerticalAlign")),d=new n.Text({style:n.setTextStyle({},l,{text:e.get("text"),textFill:l.getTextColor()},{disableBox:!0}),z2:10}),p=d.getBoundingRect(),f=e.get("subtext"),g=new n.Text({style:n.setTextStyle({},u,{text:f,textFill:u.getTextColor(),y:p.height+e.get("itemGap"),textVerticalAlign:"top"},{disableBox:!0}),z2:10}),v=e.get("link"),m=e.get("sublink"),y=e.get("triggerEvent",!0);d.silent=!v&&!y,g.silent=!m&&!y,v&&d.on("click",function(){r(v,"_"+e.get("target"))}),m&&g.on("click",function(){r(m,"_"+e.get("subtarget"))}),d.eventData=g.eventData=y?{componentType:"title",componentIndex:e.componentIndex}:null,s.add(d),f&&s.add(g);var x=s.getBoundingRect(),_=e.getBoxLayoutParams();_.width=x.width,_.height=x.height;var b=i(_,{width:a.getWidth(),height:a.getHeight()},e.get("padding"));h||("middle"===(h=e.get("left")||e.get("right"))&&(h="center"),"right"===h?b.x+=b.width:"center"===h&&(b.x+=b.width/2)),c||("center"===(c=e.get("top")||e.get("bottom"))&&(c="middle"),"bottom"===c?b.y+=b.height:"middle"===c&&(b.y+=b.height/2),c=c||"top"),s.attr("position",[b.x,b.y]);var w={textAlign:h,textVerticalAlign:c};d.setStyle(w),g.setStyle(w),x=s.getBoundingRect();var S=b.margin,M=e.getItemStyle(["color","opacity"]);M.fill=e.get("backgroundColor");var I=new n.Rect({shape:{x:x.x-S[3],y:x.y-S[0],width:x.width+S[1]+S[3],height:x.height+S[0]+S[2],r:e.get("borderRadius")},style:M,subPixelOptimize:!0,silent:!0});s.add(I)}}})}(),function(){if(ott)return ltt;ott=1;var t=c$(),e=function(){if(Z9)return Y9;Z9=1;var t=IW();function e(e){var i=e&&e.timeline;t.isArray(i)||(i=i?[i]:[]),t.each(i,function(t){t&&n(t)})}function n(e){var n=e.type,o={number:"value",time:"time"};if(o[n]&&(e.axisType=o[n],delete e.type),i(e),r(e,"controlPosition")){var a=e.controlStyle||(e.controlStyle={});r(a,"position")||(a.position=e.controlPosition),"none"!==a.position||r(a,"show")||(a.show=!1,delete a.position),delete e.controlPosition}t.each(e.data||[],function(e){t.isObject(e)&&!t.isArray(e)&&(!r(e,"value")&&r(e,"name")&&(e.value=e.name),i(e))})}function i(e){var n=e.itemStyle||(e.itemStyle={}),i=n.emphasis||(n.emphasis={}),o=e.label||e.label||{},a=o.normal||(o.normal={}),s={normal:1,emphasis:1};t.each(o,function(t,e){s[e]||r(a,e)||(a[e]=t)}),i.label&&!r(o,"emphasis")&&(o.emphasis=i.label,delete i.label)}function r(t,e){return t.hasOwnProperty(e)}return Y9=e}();(function(){if(X9)return utt;X9=1;var t=uj();t.registerSubTypeDefaulter("timeline",function(){return"slider"})})(),function(){if(j9)return htt;j9=1;var t=c$(),e=IW();t.registerAction({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,n){var i=n.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),n.resetOption("timeline"),e.defaults({currentIndex:i.option.currentIndex},t)}),t.registerAction({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var n=e.getComponent("timeline");n&&null!=t.playState&&n.setPlayState(t.playState)})}(),function(){if(J9)return $9;J9=1;var t=IW(),e=function(){if(K9)return q9;K9=1;var t=IW(),e=uj(),n=rK(),i=PY(),r=e.extend({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},init:function(t,e,n){this._data,this._names,this.mergeDefaultAndTheme(t,n),this._initData()},mergeOption:function(t){r.superApply(this,"mergeOption",arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var e=this.option,r=e.data||[],o=e.axisType,a=this._names=[];if("category"===o){var s=[];t.each(r,function(e,n){var r,o=i.getDataItemValue(e);t.isObject(e)?(r=t.clone(e)).value=n:r=n,s.push(r),t.isString(o)||null!=o&&!isNaN(o)||(o=""),a.push(o+"")}),r=s}var l={category:"ordinal",time:"time"}[o]||"number";(this._data=new n([{name:"value",type:l}],this)).initData(r,a)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}}),o=r;return q9=o}(),n=Zj(),i=e.extend({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#304654"},itemStyle:{color:"#304654",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{label:{show:!0,color:"#c23531"},itemStyle:{color:"#c23531"},controlStyle:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}});t.mixin(i,n);var r=i;$9=r}(),function(){if(rtt)return itt;rtt=1;var t=IW(),e=NU(),n=eU(),i=FX(),r=lj(),o=ctt(),a=function(){if(ntt)return ett;ntt=1;var t=IW(),e=u$(),n=function(t,n,i,r){e.call(this,t,n,i),this.type=r||"value",this.model=null};n.prototype={constructor:n,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},t.inherits(n,e);var i=n;return ett=i}(),s=ZK().createSymbol,l=FK(),u=qX(),h=sj().encodeHTML,c=t.bind,d=t.each,p=Math.PI,f=o.extend({type:"timeline.slider",init:function(t,e){this.api=e,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(t,e,n,i){if(this.model=t,this.api=n,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var r=this._layout(t,n),o=this._createGroup("mainGroup"),a=this._createGroup("labelGroup"),s=this._axis=this._createAxis(r,t);t.formatTooltip=function(t){return h(s.scale.getLabel(t))},d(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](r,o,s,t)},this),this._renderAxisLabel(r,a,s,t),this._position(r,t)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var n=t.get("label.position"),i=t.get("orient"),r=g(t,e);null==n||"auto"===n?n="horizontal"===i?r.y+r.height/2=0||"+"===n?"left":"right"},h={horizontal:n>=0||"+"===n?"top":"bottom",vertical:"middle"},c={horizontal:0,vertical:p/2},d="vertical"===i?r.height:r.width,f=t.getModel("controlStyle"),v=f.get("show",!0),m=v?f.get("itemSize"):0,y=v?f.get("itemGap"):0,x=m+y,_=t.get("label.rotate")||0;_=_*p/180;var b=f.get("position",!0),w=v&&f.get("showPlayBtn",!0),S=v&&f.get("showPrevBtn",!0),M=v&&f.get("showNextBtn",!0),I=0,T=d;return"left"===b||"bottom"===b?(w&&(o=[0,0],I+=x),S&&(a=[I,0],I+=x),M&&(s=[T-m,0],T-=x)):(w&&(o=[T-m,0],T-=x),S&&(a=[0,0],I+=x),M&&(s=[T-m,0],T-=x)),l=[I,T],t.get("inverse")&&l.reverse(),{viewRect:r,mainLength:d,orient:i,rotation:c[i],labelRotation:_,labelPosOpt:n,labelAlign:t.get("label.align")||u[i],labelBaseline:t.get("label.verticalAlign")||t.get("label.baseline")||h[i],playPosition:o,prevBtnPosition:a,nextBtnPosition:s,axisExtent:l,controlSize:m,controlGap:y}},_position:function(t,e){var i=this._mainGroup,r=this._labelGroup,o=t.viewRect;if("vertical"===t.orient){var a=n.create(),s=o.x,l=o.y+o.height;n.translate(a,a,[-s,-l]),n.rotate(a,a,-p/2),n.translate(a,a,[s,l]),(o=o.clone()).applyTransform(a)}var u=y(o),h=y(i.getBoundingRect()),c=y(r.getBoundingRect()),d=i.position,f=r.position;f[0]=d[0]=u[0][0];var g,v=t.labelPosOpt;function m(t){var e=t.position;t.origin=[u[0][0]-e[0],u[1][0]-e[1]]}function y(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function x(t,e,n,i,r){t[i]+=n[i][r]-e[i][r]}isNaN(v)?(x(d,h,u,1,g="+"===v?0:1),x(f,c,u,1,1-g)):(x(d,h,u,1,g=v>=0?0:1),f[1]=d[1]+v),i.attr("position",d),r.attr("position",f),i.rotation=r.rotation=t.rotation,m(i),m(r)},_createAxis:function(t,e){var n=e.getData(),i=e.get("axisType"),r=l.createScaleByModel(e,i);r.getTicks=function(){return n.mapArray(["value"],function(t){return t})};var o=n.getDataExtent("value");r.setExtent(o[0],o[1]),r.niceTicks();var s=new a("value",r,t.axisExtent,i);return s.model=e,s},_createGroup:function(t){var e=this["_"+t]=new i.Group;return this.group.add(e),e},_renderAxisLine:function(e,n,r,o){var a=r.getExtent();o.get("lineStyle.show")&&n.add(new i.Line({shape:{x1:a[0],y1:0,x2:a[1],y2:0},style:t.extend({lineCap:"round"},o.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,n,r){var o=r.getData(),a=n.scale.getTicks();d(a,function(t){var a=n.dataToCoord(t),s=o.getItemModel(t),l=s.getModel("itemStyle"),u=s.getModel("emphasis.itemStyle"),h={position:[a,0],onclick:c(this._changeTimeline,this,t)},d=m(s,l,e,h);i.setHoverStyle(d,u.getItemStyle()),s.get("tooltip")?(d.dataIndex=t,d.dataModel=r):d.dataIndex=d.dataModel=null},this)},_renderAxisLabel:function(t,e,n,r){if(n.getLabelModel().get("show")){var o=r.getData(),a=n.getViewLabels();d(a,function(r){var a=r.tickValue,s=o.getItemModel(a),l=s.getModel("label"),u=s.getModel("emphasis.label"),h=n.dataToCoord(r.tickValue),d=new i.Text({position:[h,0],rotation:t.labelRotation-t.rotation,onclick:c(this._changeTimeline,this,a),silent:!1});i.setTextStyle(d.style,l,{text:r.formattedLabel,textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline}),e.add(d),i.setHoverStyle(d,i.setTextStyle({},u))},this)}},_renderControl:function(t,e,n,r){var o=t.controlSize,a=t.rotation,s=r.getModel("controlStyle").getItemStyle(),l=r.getModel("emphasis.controlStyle").getItemStyle(),u=[0,-o/2,o,o],h=r.getPlayState(),d=r.get("inverse",!0);function p(t,n,h,c){if(t){var d=v(r,n,u,{position:t,origin:[o/2,0],rotation:c?-a:0,rectHover:!0,style:s,onclick:h});e.add(d),i.setHoverStyle(d,l)}}p(t.nextBtnPosition,"controlStyle.nextIcon",c(this._changeTimeline,this,d?"-":"+")),p(t.prevBtnPosition,"controlStyle.prevIcon",c(this._changeTimeline,this,d?"+":"-")),p(t.playPosition,"controlStyle."+(h?"stopIcon":"playIcon"),c(this._handlePlayClick,this,!h),!0)},_renderCurrentPointer:function(t,e,n,i){var r=i.getData(),o=i.getCurrentIndex(),a=r.getItemModel(o).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=c(s._handlePointerDrag,s),t.ondragend=c(s._handlePointerDragend,s),y(t,o,n,i,!0)},onUpdate:function(t){y(t,o,n,i)}};this._currentPointer=m(a,a,this._mainGroup,{},this._currentPointer,l)},_handlePlayClick:function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},_handlePointerDrag:function(t,e,n){this._clearTimer(),this._pointerChangeTimeline([n.offsetX,n.offsetY])},_handlePointerDragend:function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},_pointerChangeTimeline:function(t,e){var n=this._toAxisCoord(t)[0],i=this._axis,r=u.asc(i.getExtent().slice());n>r[1]&&(n=r[1]),n=0&&"number"==typeof h&&(h=+h.toFixed(Math.min(m,20))),g.coord[p]=v.coord[p]=h,o=[g,v,{type:l,valueIndex:o.valueIndex,value:h}]}return(o=[i.dataTransform(e,o[0]),i.dataTransform(e,o[1]),t.extend({},o[2])])[2].type=o[2].type||"",t.merge(o[2],o[0]),t.merge(o[2],o[1]),o};function l(t){return!isNaN(t)&&!isFinite(t)}function u(t,e,n,i){var r=1-t,o=i.dimensions[t];return l(e[r])&&l(n[r])&&e[t]===n[t]&&i.getAxis(o).containData(e[t])}function h(t,e){if("cartesian2d"===t.type){var n=e[0].coord,r=e[1].coord;if(n&&r&&(u(1,n,r,t)||u(0,n,r,t)))return!0}return i.dataFilter(t,e[0])&&i.dataFilter(t,e[1])}function c(t,e,i,r,o){var a,s=r.coordinateSystem,u=t.getItemModel(e),h=n.parsePercent(u.get("x"),o.getWidth()),c=n.parsePercent(u.get("y"),o.getHeight());if(isNaN(h)||isNaN(c)){if(r.getMarkerPosition)a=r.getMarkerPosition(t.getValues(t.dimensions,e));else{var d=s.dimensions,p=t.get(d[0],e),f=t.get(d[1],e);a=s.dataToPoint([p,f])}if("cartesian2d"===s.type){var g=s.getAxis("x"),v=s.getAxis("y");d=s.dimensions,l(t.get(d[0],e))?a[0]=g.toGlobalCoord(g.getExtent()[i?0:1]):l(t.get(d[1],e))&&(a[1]=v.toGlobalCoord(v.getExtent()[i?0:1]))}isNaN(h)||(a[0]=h),isNaN(c)||(a[1]=c)}else a=[h,c];t.setItemLayout(e,a)}var d=o.extend({type:"markLine",updateTransform:function(t,e,n){e.eachSeries(function(t){var e=t.markLineModel;if(e){var i=e.getData(),r=e.__from,o=e.__to;r.each(function(e){c(r,e,!0,t,n),c(o,e,!1,t,n)}),i.each(function(t){i.setItemLayout(t,[r.getItemLayout(t),o.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(e,n,i,o){var a=e.coordinateSystem,s=e.id,l=e.getData(),u=this.markerGroupMap,h=u.get(s)||u.set(s,new r);this.group.add(h.group);var d=p(a,e,n),f=d.from,g=d.to,v=d.line;n.__from=f,n.__to=g,n.setData(v);var m=n.get("symbol"),y=n.get("symbolSize");function x(t,n,i){var r=t.getItemModel(n);c(t,n,i,e,o),t.setItemVisual(n,{symbolRotate:r.get("symbolRotate"),symbolSize:r.get("symbolSize")||y[i?0:1],symbol:r.get("symbol",!0)||m[i?0:1],color:r.get("itemStyle.color")||l.getVisual("color")})}t.isArray(m)||(m=[m,m]),"number"==typeof y&&(y=[y,y]),d.from.each(function(t){x(f,t,!0),x(g,t,!1)}),v.each(function(t){var e=v.getItemModel(t).get("lineStyle.color");v.setItemVisual(t,{color:e||f.getItemVisual(t,"color")}),v.setItemLayout(t,[f.getItemLayout(t),g.getItemLayout(t)]),v.setItemVisual(t,{fromSymbolRotate:f.getItemVisual(t,"symbolRotate"),fromSymbolSize:f.getItemVisual(t,"symbolSize"),fromSymbol:f.getItemVisual(t,"symbol"),toSymbolRotate:g.getItemVisual(t,"symbolRotate"),toSymbolSize:g.getItemVisual(t,"symbolSize"),toSymbol:g.getItemVisual(t,"symbol")})}),h.updateData(v),d.line.eachItemGraphicEl(function(t,e){t.traverse(function(t){t.dataModel=n})}),h.__keep=!0,h.group.silent=n.get("silent")||e.get("silent")}});function p(n,r,o){var a;a=n?t.map(n&&n.dimensions,function(e){var n=r.getData().getDimensionInfo(r.getData().mapDimension(e))||{};return t.defaults({name:e},n)}):[{name:"value",type:"float"}];var l=new e(a,o),u=new e(a,o),c=new e([],o),d=t.map(o.get("data"),t.curry(s,r,n,o));n&&(d=t.filter(d,t.curry(h,n)));var p=n?i.dimValueGetter:function(t){return t.value};return l.initData(t.map(d,function(t){return t[0]}),null,p),u.initData(t.map(d,function(t){return t[1]}),null,p),c.initData(t.map(d,function(t){return t[2]})),c.hasItemOption=!0,{from:l,to:u,line:c}}Dtt=d}(),t.registerPreprocessor(function(t){t.markLine=t.markLine||{}})}(),function(){if(Ntt)return Btt;Ntt=1;var t=c$();(function(){if(Ott)return Ptt;Ott=1;var t=mtt(),e=t.extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}}});Ptt=e})(),function(){if(Rtt)return Gtt;Rtt=1;var t=IW(),e=cU(),n=rK(),i=qX(),r=FX(),o=Itt(),a=Ttt(),s=function(e,n,i,r){var a=o.dataTransform(e,r[0]),s=o.dataTransform(e,r[1]),l=t.retrieve,u=a.coord,h=s.coord;u[0]=l(u[0],-1/0),u[1]=l(u[1],-1/0),h[0]=l(h[0],1/0),h[1]=l(h[1],1/0);var c=t.mergeAll([{},a,s]);return c.coord=[a.coord,s.coord],c.x0=a.x,c.y0=a.y,c.x1=s.x,c.y1=s.y,c};function l(t){return!isNaN(t)&&!isFinite(t)}function u(t,e,n,i){var r=1-t;return l(e[r])&&l(n[r])}function h(t,e){var n=e.coord[0],i=e.coord[1];return!("cartesian2d"!==t.type||!n||!i||!u(1,n,i)&&!u(0,n,i))||o.dataFilter(t,{coord:n,x:e.x0,y:e.y0})||o.dataFilter(t,{coord:i,x:e.x1,y:e.y1})}function c(t,e,n,r,o){var a,s=r.coordinateSystem,u=t.getItemModel(e),h=i.parsePercent(u.get(n[0]),o.getWidth()),c=i.parsePercent(u.get(n[1]),o.getHeight());if(isNaN(h)||isNaN(c)){if(r.getMarkerPosition)a=r.getMarkerPosition(t.getValues(n,e));else{var d=[g=t.get(n[0],e),v=t.get(n[1],e)];s.clampData&&s.clampData(d,d),a=s.dataToPoint(d,!0)}if("cartesian2d"===s.type){var p=s.getAxis("x"),f=s.getAxis("y"),g=t.get(n[0],e),v=t.get(n[1],e);l(g)?a[0]=p.toGlobalCoord(p.getExtent()["x0"===n[0]?0:1]):l(v)&&(a[1]=f.toGlobalCoord(f.getExtent()["y0"===n[1]?0:1]))}isNaN(h)||(a[0]=h),isNaN(c)||(a[1]=c)}else a=[h,c];return a}var d=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];function p(e,i,r){var o,a,l=["x0","y0","x1","y1"];e?(o=t.map(e&&e.dimensions,function(e){var n=i.getData(),r=n.getDimensionInfo(n.mapDimension(e))||{};return t.defaults({name:e},r)}),a=new n(t.map(l,function(t,e){return{name:t,type:o[e%2].type}}),r)):a=new n(o=[{name:"value",type:"float"}],r);var u=t.map(r.get("data"),t.curry(s,i,e,r));e&&(u=t.filter(u,t.curry(h,e)));var c=e?function(t,e,n,i){return t.coord[Math.floor(i/2)][i%2]}:function(t){return t.value};return a.initData(u,null,c),a.hasItemOption=!0,a}a.extend({type:"markArea",updateTransform:function(e,n,i){n.eachSeries(function(e){var n=e.markAreaModel;if(n){var r=n.getData();r.each(function(n){var o=t.map(d,function(t){return c(r,n,t,e,i)});r.setItemLayout(n,o),r.getItemGraphicEl(n).setShape("points",o)})}},this)},renderSeries:function(n,i,o,a){var s=n.coordinateSystem,u=n.id,h=n.getData(),f=this.markerGroupMap,g=f.get(u)||f.set(u,{group:new r.Group});this.group.add(g.group),g.__keep=!0;var v=p(s,n,i);i.setData(v),v.each(function(e){var i=t.map(d,function(t){return c(v,e,t,n,a)}),r=!0;t.each(d,function(t){if(r){var n=v.get(t[0],e),i=v.get(t[1],e);(l(n)||s.getAxis("x").containData(n))&&(l(i)||s.getAxis("y").containData(i))&&(r=!1)}}),v.setItemLayout(e,{points:i,allClipped:r}),v.setItemVisual(e,{color:h.getVisual("color")})}),v.diff(g.__data).add(function(t){var e=v.getItemLayout(t);if(!e.allClipped){var n=new r.Polygon({shape:{points:e.points}});v.setItemGraphicEl(t,n),g.group.add(n)}}).update(function(t,e){var n=g.__data.getItemGraphicEl(e),o=v.getItemLayout(t);o.allClipped?n&&g.group.remove(n):(n?r.updateProps(n,{shape:{points:o.points}},i,t):n=new r.Polygon({shape:{points:o.points}}),v.setItemGraphicEl(t,n),g.group.add(n))}).remove(function(t){var e=g.__data.getItemGraphicEl(t);g.group.remove(e)}).execute(),v.eachItemGraphicEl(function(n,o){var a=v.getItemModel(o),s=a.getModel("label"),l=a.getModel("emphasis.label"),u=v.getItemVisual(o,"color");n.useStyle(t.defaults(a.getModel("itemStyle").getItemStyle(),{fill:e.modifyAlpha(u,.4),stroke:u})),n.hoverStyle=a.getModel("emphasis.itemStyle").getItemStyle(),r.setLabelStyle(n.style,n.hoverStyle,s,l,{labelFetcher:i,labelDataIndex:o,defaultText:v.getName(o)||"",isRectText:!0,autoColor:u}),r.setHoverStyle(n,{}),n.dataModel=i}),g.__data=v,g.group.silent=i.get("silent")||n.get("silent")}})}(),t.registerPreprocessor(function(t){t.markArea=t.markArea||{}})}(),ret||(ret=1,net(),function(){if(Ktt)return qtt;Ktt=1;var t=Htt(),e=lj(),n=e.mergeLayoutParam,i=e.getLayoutParams,r=t.extend({type:"legend.scroll",setScrollDataIndex:function(t){this.option.scrollDataIndex=t},defaultOption:{scrollDataIndex:0,pageButtonItemGap:5,pageButtonGap:null,pageButtonPosition:"end",pageFormatter:"{current}/{total}",pageIcons:{horizontal:["M0,0L12,-10L12,10z","M0,0L-12,-10L-12,10z"],vertical:["M0,0L20,0L10,-20z","M0,0L20,0L10,20z"]},pageIconColor:"#2f4554",pageIconInactiveColor:"#aaa",pageIconSize:15,pageTextStyle:{color:"#333"},animationDurationUpdate:800},init:function(t,e,n,a){var s=i(t);r.superCall(this,"init",t,e,n,a),o(this,t,s)},mergeOption:function(t,e){r.superCall(this,"mergeOption",t,e),o(this,this.option,t)}});function o(t,e,i){var r=[1,1];r[t.getOrient().index]=0,n(e,i,{type:"box",ignoreSize:r})}var a=r;qtt=a}(),function(){if(Jtt)return $tt;Jtt=1;var t=IW(),e=FX(),n=lj(),i=tet(),r=e.Group,o=["width","height"],a=["x","y"],s=i.extend({type:"legend.scroll",newlineDisabled:!0,init:function(){s.superCall(this,"init"),this._currentIndex=0,this.group.add(this._containerGroup=new r),this._containerGroup.add(this.getContentGroup()),this.group.add(this._controllerGroup=new r),this._showController},resetInner:function(){s.superCall(this,"resetInner"),this._controllerGroup.removeAll(),this._containerGroup.removeClipPath(),this._containerGroup.__rectSize=null},renderInner:function(n,i,r,o,a,l,u){var h=this;s.superCall(this,"renderInner",n,i,r,o,a,l,u);var c=this._controllerGroup,d=i.get("pageIconSize",!0);t.isArray(d)||(d=[d,d]),f("pagePrev",0);var p=i.getModel("pageTextStyle");function f(n,r){var a=n+"DataIndex",s=e.createIcon(i.get("pageIcons",!0)[i.getOrient().name][r],{onclick:t.bind(h._pageGo,h,a,i,o)},{x:-d[0]/2,y:-d[1]/2,width:d[0],height:d[1]});s.name=n,c.add(s)}c.add(new e.Text({name:"pageText",style:{textFill:p.getTextColor(),font:p.getFont(),textVerticalAlign:"middle",textAlign:"center"},silent:!0})),f("pageNext",1)},layoutInner:function(e,i,r,s,l,u){var h=this.getSelectorGroup(),c=e.getOrient().index,d=o[c],p=a[c],f=o[1-c],g=a[1-c];l&&n.box("horizontal",h,e.get("selectorItemGap",!0));var v=e.get("selectorButtonGap",!0),m=h.getBoundingRect(),y=[-m.x,-m.y],x=t.clone(r);l&&(x[d]=r[d]-m[d]-v);var _=this._layoutContentAndController(e,s,x,c,d,f,g);if(l){if("end"===u)y[c]+=_[d]+v;else{var b=m[d]+v;y[c]-=b,_[p]-=b}_[d]+=m[d]+v,y[1-c]+=_[g]+_[f]/2-m[f]/2,_[f]=Math.max(_[f],m[f]),_[g]=Math.min(_[g],m[g]+y[1-c]),h.attr("position",y)}return _},_layoutContentAndController:function(i,r,o,a,s,l,u){var h=this.getContentGroup(),c=this._containerGroup,d=this._controllerGroup;n.box(i.get("orient"),h,i.get("itemGap"),a?o.width:null,a?null:o.height),n.box("horizontal",d,i.get("pageButtonItemGap",!0));var p=h.getBoundingRect(),f=d.getBoundingRect(),g=this._showController=p[s]>o[s],v=[-p.x,-p.y];r||(v[a]=h.position[a]);var m=[0,0],y=[-f.x,-f.y],x=t.retrieve2(i.get("pageButtonGap",!0),i.get("itemGap",!0));g&&("end"===i.get("pageButtonPosition",!0)?y[a]+=o[s]-f[s]:m[a]+=f[s]+x),y[1-a]+=p[l]/2-f[l]/2,h.attr("position",v),c.attr("position",m),d.attr("position",y);var _={x:0,y:0};if(_[s]=g?o[s]:p[s],_[l]=Math.max(p[l],f[l]),_[u]=Math.min(0,f[u]+y[1-a]),c.__rectSize=o[s],g){var b={x:0,y:0};b[s]=Math.max(o[s]-f[s]-x,0),b[l]=_[l],c.setClipPath(new e.Rect({shape:b})),c.__rectSize=b[s]}else d.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var w=this._getPageInfo(i);return null!=w.pageIndex&&e.updateProps(h,{position:w.contentPosition},!!g&&i),this._updatePageInfoView(i,w),_},_pageGo:function(t,e,n){var i=this._getPageInfo(e)[t];null!=i&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:e.id})},_updatePageInfoView:function(e,n){var i=this._controllerGroup;t.each(["pagePrev","pageNext"],function(t){var r=null!=n[t+"DataIndex"],o=i.childOfName(t);o&&(o.setStyle("fill",r?e.get("pageIconColor",!0):e.get("pageIconInactiveColor",!0)),o.cursor=r?"pointer":"default")});var r=i.childOfName("pageText"),o=e.get("pageFormatter"),a=n.pageIndex,s=null!=a?a+1:0,l=n.pageCount;r&&o&&r.setStyle("text",t.isString(o)?o.replace("{current}",s).replace("{total}",l):o({current:s,total:l}))},_getPageInfo:function(t){var e=t.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,r=t.getOrient().index,s=o[r],l=a[r],u=this._findTargetItemIndex(e),h=n.children(),c=h[u],d=h.length,p=d?1:0,f={contentPosition:n.position.slice(),pageCount:p,pageIndex:p-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!c)return f;var g=_(c);f.contentPosition[r]=-g.s;for(var v=u+1,m=g,y=g,x=null;v<=d;++v)(!(x=_(h[v]))&&y.e>m.s+i||x&&!b(x,m.s))&&(m=y.i>m.i?y:x)&&(null==f.pageNextDataIndex&&(f.pageNextDataIndex=m.i),++f.pageCount),y=x;for(v=u-1,m=g,y=g,x=null;v>=-1;--v)(x=_(h[v]))&&b(y,x.s)||!(m.i=e&&t.s<=e+i}},_findTargetItemIndex:function(t){return this._showController?(this.getContentGroup().eachChild(function(i,r){var o=i.__legendDataIndex;null==n&&null!=o&&(n=r),o===t&&(e=r)}),null!=e?e:n):0;var e,n}}),l=s;$tt=l}(),function(){if(iet)return cet;iet=1;var t=c$();t.registerAction("legendScroll","legendscroll",function(t,e){var n=t.scrollDataIndex;null!=n&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},function(t){t.setScrollDataIndex(n)})})}()),net(),_et||(_et=1,pet(),Met()),Met(),pet(),lnt||(lnt=1,nnt(),hnt()),nnt(),hnt(),function(){if(gnt)return vnt;gnt=1,function(){if(dnt)return mnt;dnt=1;var t=wW(),e=PW().applyTransform,n=NU(),i=cU(),r=oY(),o=SY(),a=MY(),s=IY(),l=TY(),u=BZ(),h=EZ(),c=QY(),d=VX(),p=xnt(),f=c.CMD,g=Math.round,v=Math.sqrt,m=Math.abs,y=Math.cos,x=Math.sin,_=Math.max;if(!t.canvasSupported){var b=",",w="progid:DXImageTransform.Microsoft",S=21600,M=S/2,I=1e5,T=1e3,C=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=S+","+S,t.coordorigin="0,0"},A=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},D=function(t,e,n){return"rgb("+[t,e,n].join(",")+")"},L=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},k=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},P=function(t,e,n){return(parseFloat(t)||0)*I+(parseFloat(e)||0)*T+n},O=o.parsePercent,R=function(t,e,n){var r=i.parse(e);n=+n,isNaN(n)&&(n=1),r&&(t.color=D(r[0],r[1],r[2]),t.opacity=n*r[3])},N=function(t){var e=i.parse(t);return[D(e[0],e[1],e[2]),e[3]]},E=function(t,n,i){var r=n.fill;if(null!=r)if(r instanceof d){var o,a=0,s=[0,0],l=0,u=1,h=i.getBoundingRect(),c=h.width,p=h.height;if("linear"===r.type){o="gradient";var f=i.transform,g=[r.x*c,r.y*p],v=[r.x2*c,r.y2*p];f&&(e(g,g,f),e(v,v,f));var m=v[0]-g[0],y=v[1]-g[1];(a=180*Math.atan2(m,y)/Math.PI)<0&&(a+=360),a<1e-6&&(a=0)}else{o="gradientradial",g=[r.x*c,r.y*p],f=i.transform;var x=i.scale,b=c,w=p;s=[(g[0]-h.x)/b,(g[1]-h.y)/w],f&&e(g,g,f),b/=x[0]*S,w/=x[1]*S;var M=_(b,w);l=0/M,u=2*r.r/M-l}var I=r.colorStops.slice();I.sort(function(t,e){return t.offset-e.offset});for(var T=I.length,C=[],A=[],D=0;D=2){var P=C[0][0],O=C[1][0],E=C[0][1]*n.opacity,z=C[1][1]*n.opacity;t.type=o,t.method="none",t.focus="100%",t.angle=a,t.color=P,t.color2=O,t.colors=A.join(","),t.opacity=z,t.opacity2=E}"radial"===o&&(t.focusposition=s.join(","))}else R(t,r,n.opacity)},z=function(t,e){e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof d||R(t,e.stroke,e.opacity)},V=function(t,e,n,i){var r="fill"===e,o=t.getElementsByTagName(e)[0];null!=n[e]&&"none"!==n[e]&&(r||!r&&n.lineWidth)?(t[r?"filled":"stroked"]="true",n[e]instanceof d&&k(t,o),o||(o=p.createNode(e)),r?E(o,n,i):z(o,n),L(t,o)):(t[r?"filled":"stroked"]="false",k(t,o))},B=[[],[],[]],G=function(t,n){var i,r,o,a,s,l,u=f.M,h=f.C,c=f.L,d=f.A,p=f.Q,m=[],_=t.data,w=t.len();for(a=0;a.01?W&&(U+=270/S):Math.abs(Y-z)<1e-4?W&&UE?A-=270/S:A+=270/S:W&&Yz?C+=270/S:C-=270/S),m.push(Z,g(((E-V)*O+k)*S-M),b,g(((z-G)*R+P)*S-M),b,g(((E+V)*O+k)*S-M),b,g(((z+G)*R+P)*S-M),b,g((U*O+k)*S-M),b,g((Y*R+P)*S-M),b,g((C*O+k)*S-M),b,g((A*R+P)*S-M)),s=C,l=A;break;case f.R:var X=B[0],j=B[1];X[0]=_[a++],X[1]=_[a++],j[0]=X[0]+_[a++],j[1]=X[1]+_[a++],n&&(e(X,X,n),e(j,j,n)),X[0]=g(X[0]*S-M),j[0]=g(j[0]*S-M),X[1]=g(X[1]*S-M),j[1]=g(j[1]*S-M),m.push(" m ",X[0],b,X[1]," l ",j[0],b,X[1]," l ",j[0],b,j[1]," l ",X[0],b,j[1]);break;case f.Z:m.push(" x ")}if(i>0){m.push(r);for(var q=0;qZ&&(Y=0,U={});var n,i=X.style;try{i.font=t,n=i.fontFamily.split(",")[0]}catch(Fu){}e={style:i.fontStyle||W,variant:i.fontVariant||W,weight:i.fontWeight||W,size:0|parseFloat(i.fontSize||12),family:n||"Microsoft YaHei"},U[t]=e,Y++}return e};r.$override("measureText",function(t,e){var n=p.doc;H||((H=n.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",p.doc.body.appendChild(H));try{H.style.font=e}catch(i){}return H.innerHTML="",H.appendChild(n.createTextNode(t)),{width:H.offsetWidth}});for(var q=new n,K=function(t,n,i,a){var s=this.style;this.__dirty&&o.normalizeTextStyle(s,!0);var l=s.text;if(null!=l&&(l+=""),l){if(s.rich){var u=r.parseRichText(l,s);l=[];for(var h=0;h{n=t.c}],execute:function(){t({B:Z_,D:Zy,E:bx,F:ei,H:ob,I:bw,J:function(t,e){if("world"===t){var n=ww[e.name];if(n){var i=[n[0],n[1]];e.setCenter(i)}}},K:B,N:go,Q:Td,T:oe,U:_d,V:K,W:Cd,X:Ad,Y:By,a:O,a0:gs,a1:$v,a2:io,a3:B_,a4:_e,a5:Ce,a6:Wt,a8:Dw,a9:eo,aa:L,ab:yt,ad:vV,ae:Uz,af:nN,ag:KB,ah:vE,ai:yw,aj:eF,ak:DB,al:EG,am:QT,an:lw,ao:JF,ap:gw,aq:function(){return Nnt||(Nnt=1,function(t){var e=c$();!function(){for(var n in e){if(null==e||!e.hasOwnProperty(n)||"default"===n||"__esModule"===n)return;t[n]=e[n]}}();var n=h$();!function(){for(var e in n){if(null==n||!n.hasOwnProperty(e)||"default"===e||"__esModule"===e)return;t[e]=n[e]}}(),kq(),function(){if(OJ)return x$;OJ=1;var t=c$();(function(){if(p$)return d$;p$=1,gW().__DEV__;var t=fK(),e=rq(),n=e.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(e,n){return t(this.getSource(),this,{useEncodeDefaulter:!0})},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clip:!0,label:{position:"top"},lineStyle:{width:2,type:"solid"},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}});d$=n})(),function(){if(N$)return R$;N$=1,gW().__DEV__;var t=IW(),e=JY().fromPoints,n=S$(),i=w$(),r=D$(),o=FX(),a=PY(),s=P$(),l=s.Polyline,u=s.Polygon,h=sq(),c=A$(),d=c.prepareDataCoordInfo,p=c.getStackedOnPoint,f=W$(),g=f.createGridClipPath,v=f.createPolarClipPath;function m(t,e){if(t.length===e.length){for(var n=0;n=0;s--){var l=i[s].dimension,u=e.dimensions[l],h=e.getDimensionInfo(u);if("x"===(r=h&&h.coordDim)||"y"===r){a=i[s];break}}if(a){var c=n.getAxis(r),d=t.map(a.stops,function(t){return{coord:c.toGlobalCoord(c.dataToCoord(t.value)),color:t.color}}),p=d.length,f=a.outerColors.slice();p&&d[0].coord>d[p-1].coord&&(d.reverse(),f.reverse());var g=10,v=d[0].coord-g,m=d[p-1].coord+g,y=m-v;if(y<.001)return"transparent";t.each(d,function(t){t.offset=(t.coord-v)/y}),d.push({offset:p?d[p-1].offset:.5,color:f[1]||"transparent"}),d.unshift({offset:p?d[0].offset:.5,color:f[0]||"transparent"});var x=new o.LinearGradient(0,0,0,0,d,!0);return x[r]=v,x[r+"2"]=m,x}}}function S(e,n,i){var r=e.get("showAllSymbol"),o="auto"===r;if(!r||o){var a=i.getAxesByScale("ordinal")[0];if(a&&(!o||!M(a,n))){var s=n.mapDimension(a.dim),l={};return t.each(a.getViewLabels(),function(t){l[t.tickValue]=1}),function(t){return!l.hasOwnProperty(n.get(s,t))}}}}function M(t,e){var n=t.getExtent(),r=Math.abs(n[1]-n[0])/t.scale.count();isNaN(r)&&(r=0);for(var o=e.count(),a=Math.max(1,Math.round(o/5)),s=0;sr)return!1;return!0}function I(t,e,n){if("cartesian2d"===t.type){var i=t.getBaseAxis().isHorizontal(),r=g(t,e,n);if(!n.get("clip",!0)){var o=r.shape,a=Math.max(o.width,o.height);i?(o.y-=a,o.height+=2*a):(o.x-=a,o.width+=2*a)}return r}return v(t,e,n)}var T=h.extend({type:"line",init:function(){var t=new o.Group,e=new n;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(e,n,i){var r=e.coordinateSystem,o=this.group,a=e.getData(),s=e.getModel("lineStyle"),l=e.getModel("areaStyle"),u=a.mapArray(a.getItemLayout),h="polar"===r.type,c=this._coordSys,p=this._symbolDraw,f=this._polyline,g=this._polygon,v=this._lineGroup,y=e.get("animation"),M=!l.isEmpty(),T=l.get("origin"),C=_(r,a,d(r,a,T)),A=e.get("showSymbol"),D=A&&!h&&S(e,a,r),L=this._data;L&&L.eachItemGraphicEl(function(t,e){t.__temp&&(o.remove(t),L.setItemGraphicEl(e,null))}),A||p.remove(),o.add(v);var k,P=!h&&e.get("step");r&&r.getArea&&e.get("clip",!0)&&(null!=(k=r.getArea()).width?(k.x-=.1,k.y-=.1,k.width+=.2,k.height+=.2):k.r0&&(k.r0-=.5,k.r1+=.5)),this._clipShapeForSymbol=k,f&&c.type===r.type&&P===this._step?(M&&!g?g=this._newPolygon(u,C,r,y):g&&!M&&(v.remove(g),g=this._polygon=null),v.setClipPath(I(r,!1,e)),A&&p.updateData(a,{isIgnore:D,clipShape:k}),a.eachItemGraphicEl(function(t){t.stopAnimation(!0)}),m(this._stackedOnPoints,C)&&m(this._points,u)||(y?this._updateAnimation(a,C,r,i,P,T):(P&&(u=b(u,r,P),C=b(C,r,P)),f.setShape({points:u}),g&&g.setShape({points:u,stackedOnPoints:C})))):(A&&p.updateData(a,{isIgnore:D,clipShape:k}),P&&(u=b(u,r,P),C=b(C,r,P)),f=this._newPolyline(u,r,y),M&&(g=this._newPolygon(u,C,r,y)),v.setClipPath(I(r,!0,e)));var O=w(a,r)||a.getVisual("color");f.useStyle(t.defaults(s.getLineStyle(),{fill:"none",stroke:O,lineJoin:"bevel"}));var R=e.get("smooth");if(R=x(e.get("smooth")),f.setShape({smooth:R,smoothMonotone:e.get("smoothMonotone"),connectNulls:e.get("connectNulls")}),g){var N=a.getCalculationInfo("stackedOnSeries"),E=0;g.useStyle(t.defaults(l.getAreaStyle(),{fill:O,opacity:.7,lineJoin:"bevel"})),N&&(E=x(N.get("smooth"))),g.setShape({smooth:R,stackedOnSmooth:E,smoothMonotone:e.get("smoothMonotone"),connectNulls:e.get("connectNulls")})}this._data=a,this._coordSys=r,this._stackedOnPoints=C,this._points=u,this._step=P,this._valueOrigin=T},dispose:function(){},highlight:function(t,e,n,r){var o=t.getData(),s=a.queryDataIndex(o,r);if(!(s instanceof Array)&&null!=s&&s>=0){var l=o.getItemGraphicEl(s);if(!l){var u=o.getItemLayout(s);if(!u)return;if(this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(u[0],u[1]))return;(l=new i(o,s)).position=u,l.setZ(t.get("zlevel"),t.get("z")),l.ignore=isNaN(u[0])||isNaN(u[1]),l.__temp=!0,o.setItemGraphicEl(s,l),l.stopSymbolAnimation(!0),this.group.add(l)}l.highlight()}else h.prototype.highlight.call(this,t,e,n,r)},downplay:function(t,e,n,i){var r=t.getData(),o=a.queryDataIndex(r,i);if(null!=o&&o>=0){var s=r.getItemGraphicEl(o);s&&(s.__temp?(r.setItemGraphicEl(o,null),this.group.remove(s)):s.downplay())}else h.prototype.downplay.call(this,t,e,n,i)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new l({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new u({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(n),this._polygon=n,n},_updateAnimation:function(t,e,n,i,a,s){var l=this._polyline,u=this._polygon,h=t.hostModel,c=r(this._data,t,this._stackedOnPoints,e,this._coordSys,n,this._valueOrigin,s),d=c.current,p=c.stackedOnCurrent,f=c.next,g=c.stackedOnNext;if(a&&(d=b(c.current,n,a),p=b(c.stackedOnCurrent,n,a),f=b(c.next,n,a),g=b(c.stackedOnNext,n,a)),y(d,f)>3e3||u&&y(p,g)>3e3)return l.setShape({points:f}),void(u&&u.setShape({points:f,stackedOnPoints:g}));l.shape.__points=c.current,l.shape.points=d,o.updateProps(l,{shape:{points:f}},h),u&&(u.setShape({points:d,stackedOnPoints:p}),o.updateProps(u,{shape:{points:f,stackedOnPoints:g}},h));for(var v=[],m=c.status,x=0;xt&&(t=e),t},defaultOption:{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1}}});GJ=e}(),function(){if(KJ)return qJ;KJ=1,gW().__DEV__;var t=c$(),e=IW(),n=FX(),i=QJ().setLabel,r=HX(),o=tQ(),a=EZ(),s=EU(),l=Mq().throttle,u=W$().createClipPath,h=function(){if(jJ)return XJ;jJ=1;var t=FX().extendShape,e=t({type:"sausage",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},buildPath:function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r0||0,0),o=Math.max(e.r,0),a=.5*(o-r),s=r+a,l=e.startAngle,u=e.endAngle,h=e.clockwise,c=Math.cos(l),d=Math.sin(l),p=Math.cos(u),f=Math.sin(u);(h?u-l<2*Math.PI:l-u<2*Math.PI)&&(t.moveTo(c*r+n,d*r+i),t.arc(c*s+n,d*s+i,a,-Math.PI+l,l,!h)),t.arc(n,i,o,l,u,!h),t.moveTo(p*o+n,f*o+i),t.arc(p*s+n,f*s+i,a,u-2*Math.PI,u-Math.PI,!h),0!==r&&(t.arc(n,i,r,u,l,h),t.moveTo(c*r+n,f*r+i)),t.closePath()}});return XJ=e}(),c=["itemStyle","barBorderWidth"],d=[0,0];function p(t,e){var n=t.getArea&&t.getArea();if("cartesian2d"===t.type){var i=t.getBaseAxis();if("category"!==i.type||!i.onBand){var r=e.getLayout("bandWidth");i.isHorizontal()?(n.x-=r,n.width+=2*r):(n.y-=r,n.height+=2*r)}}return n}e.extend(r.prototype,o);var f=t.extendChartView({type:"bar",render:function(t,e,n){this._updateDrawMode(t);var i=t.get("coordinateSystem");return"cartesian2d"!==i&&"polar"!==i||(this._isLargeDraw?this._renderLarge(t,e,n):this._renderNormal(t,e,n)),this.group},incrementalPrepareRender:function(t,e,n){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,n,i){this._incrementalRenderLarge(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(t,e,i){var r,o=this.group,a=t.getData(),l=this._data,u=t.coordinateSystem,h=u.getBaseAxis();"cartesian2d"===u.type?r=h.isHorizontal():"polar"===u.type&&(r="angle"===h.dim);var c=t.isAnimationEnabled()?t:null,d=t.get("clip",!0),f=p(u,a);o.removeClipPath();var g=t.get("roundCap",!0),v=t.get("showBackground",!0),w=t.getModel("backgroundStyle"),M=w.get("barBorderRadius")||0,I=[],T=this._backgroundEls||[],C=function(t){var e=b[u.type](a,t),n=P(u,r,e);return n.useStyle(w.getBarItemStyle()),"cartesian2d"===u.type&&n.setShape("r",M),I[t]=n,n};a.diff(l).add(function(e){var n=a.getItemModel(e),i=b[u.type](a,e,n);if(v&&C(e),a.hasValue(e)){if(d&&m[u.type](f,i))return void o.remove(s);var s=y[u.type](e,i,r,c,!1,g);a.setItemGraphicEl(e,s),o.add(s),S(s,a,e,n,i,t,r,"polar"===u.type)}}).update(function(e,i){var s=a.getItemModel(e),h=b[u.type](a,e,s);if(v){var p;0===T.length?p=C(i):((p=T[i]).useStyle(w.getBarItemStyle()),"cartesian2d"===u.type&&p.setShape("r",M),I[e]=p);var x=b[u.type](a,e),_=k(r,x,u);n.updateProps(p,{shape:_},c,e)}var A=l.getItemGraphicEl(i);if(a.hasValue(e)){if(d&&m[u.type](f,h))return void o.remove(A);A?n.updateProps(A,{shape:h},c,e):A=y[u.type](e,h,r,c,!0,g),a.setItemGraphicEl(e,A),o.add(A),S(A,a,e,s,h,t,r,"polar"===u.type)}else o.remove(A)}).remove(function(t){var e=l.getItemGraphicEl(t);"cartesian2d"===u.type?e&&x(t,c,e):e&&_(t,c,e)}).execute();var A=this._backgroundGroup||(this._backgroundGroup=new s);A.removeAll();for(var D=0;D0?1:-1,a=i.height>0?1:-1;return{x:i.x+o*r/2,y:i.y+a*r/2,width:i.width-o*r,height:i.height-a*r}},polar:function(t,e,n){var i=t.getItemLayout(e);return{cx:i.cx,cy:i.cy,r0:i.r0,r:i.r,startAngle:i.startAngle,endAngle:i.endAngle}}};function w(t){return null!=t.startAngle&&null!=t.endAngle&&t.startAngle===t.endAngle}function S(t,r,o,a,s,l,u,h){var c=r.getItemVisual(o,"color"),d=r.getItemVisual(o,"opacity"),p=r.getVisual("borderColor"),f=a.getModel("itemStyle"),g=a.getModel("emphasis.itemStyle").getBarItemStyle();h||t.setShape("r",f.get("barBorderRadius")||0),t.useStyle(e.defaults({stroke:w(s)?"none":p,fill:w(s)?"none":c,opacity:d},f.getBarItemStyle()));var v=a.getShallow("cursor");v&&t.attr("cursor",v);var m=u?s.height>0?"bottom":"top":s.width>0?"left":"right";h||i(t.style,g,a,c,l,o,m),w(s)&&(g.fill=g.stroke="none"),n.setHoverStyle(t,g)}function M(t,e){var n=t.get(c)||0,i=isNaN(e.width)?Number.MAX_VALUE:Math.abs(e.width),r=isNaN(e.height)?Number.MAX_VALUE:Math.abs(e.height);return Math.min(n,i,r)}var I=a.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var n=e.points,i=this.__startPoint,r=this.__baseDimIdx,o=0;o=0?n:null},30,!1);function A(t,e,n){var i=t.__baseDimIdx,r=1-i,o=t.shape.points,a=t.__largeDataIndices,s=Math.abs(t.__barWidth/2),l=t.__startPoint[r];d[0]=e,d[1]=n;for(var u=d[i],h=d[1-i],c=u-s,p=u+s,f=0,g=o.length/2;f=c&&m<=p&&(l<=y?h>=l&&h<=y:h>=y&&h<=l))return a[f]}return-1}function D(t,e,n){var i=n.getVisual("borderColor")||n.getVisual("color"),r=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(r),t.style.fill=null,t.style.stroke=i,t.style.lineWidth=n.getLayout("barWidth")}function L(t,e,n){var i=e.get("borderColor")||e.get("color"),r=e.getItemStyle(["color","borderColor"]);t.useStyle(r),t.style.fill=null,t.style.stroke=i,t.style.lineWidth=n.getLayout("barWidth")}function k(t,e,n){var i,r="polar"===n.type;return i=r?n.getArea():n.grid.getRect(),r?{cx:i.cx,cy:i.cy,r0:t?i.r0:e.r0,r:t?i.r:e.r,startAngle:t?e.startAngle:0,endAngle:t?e.endAngle:2*Math.PI}:{x:t?e.x:i.x,y:t?i.y:e.y,width:t?e.width:i.width,height:t?i.height:e.height}}function P(t,e,i){return new("polar"===t.type?n.Sector:n.Rect)({shape:k(e,i,t),silent:!0,z2:0})}qJ=f}(),zJ(),t.registerLayout(t.PRIORITY.VISUAL.LAYOUT,e.curry(i,"bar")),t.registerLayout(t.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,r),t.registerVisual({seriesType:"bar",reset:function(t){t.getData().setVisual("legendSymbol","roundRect")}})}(),function(){if(bQ)return wQ;bQ=1;var t=c$(),e=IW();(function(){if(lQ)return sQ;lQ=1;var t=c$(),e=SQ(),n=IW(),i=PY(),r=qX().getPercentWithPrecision,o=MQ(),a=Yj().retrieveRawAttr,s=Rj().makeSeriesEncodeForNameBased,l=IQ(),u=t.extendSeriesModel({type:"series.pie",init:function(t){u.superApply(this,"init",arguments),this.legendVisualProvider=new l(n.bind(this.getData,this),n.bind(this.getRawData,this)),this.updateSelectedMap(this._createSelectableList()),this._defaultLabelLine(t)},mergeOption:function(t){u.superCall(this,"mergeOption",t),this.updateSelectedMap(this._createSelectableList())},getInitialData:function(t,i){return e(this,{coordDimensions:["value"],encodeDefaulter:n.curry(s,this)})},_createSelectableList:function(){for(var t=this.getRawData(),e=t.mapDimension("value"),n=[],i=0,r=t.count();i0&&(c?"scale"!==d:"transition"!==p)){for(var v=s.getItemLayout(0),m=1;isNaN(v.startAngle)&&m=n.r0}}}),l=s;uQ=l}();var n=TQ(),i=CQ(),r=DQ(),o=LQ();n("pie",[{type:"pieToggleSelect",event:"pieselectchanged",method:"toggleSelected"},{type:"pieSelect",event:"pieselected",method:"select"},{type:"pieUnSelect",event:"pieunselected",method:"unSelect"}]),t.registerVisual(i("pie")),t.registerLayout(e.curry(r,"pie")),t.registerProcessor(o("pie"))}(),function(){if(EQ)return e0;EQ=1;var t=c$();(function(){if(PQ)return kQ;PQ=1;var t=fK(),e=rq(),n=e.extend({type:"series.scatter",dependencies:["grid","polar","geo","singleAxis","calendar"],getInitialData:function(e,n){return t(this.getSource(),this,{useEncodeDefaulter:!0})},brushSelector:"point",getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?5e3:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?1e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},clip:!0}});kQ=n})(),function(){if(NQ)return n0;NQ=1;var t=c$(),e=S$(),n=function(){if(RQ)return OQ;RQ=1;var t=FX(),e=ZK().createSymbol,n=GX(),i=4,r=t.extendShape({shape:{points:null},symbolProxy:null,softClipShape:null,buildPath:function(t,e){var n=e.points,r=e.size,o=this.symbolProxy,a=o.shape;if(!((t.getContext?t.getContext():t)&&r[0]=0;s--){var l=2*s,u=i[l]-o/2,h=i[l+1]-a/2;if(t>=u&&e>=h&&t<=u+o&&e<=h+a)return s}return-1}});function o(){this.group=new t.Group}var a=o.prototype;a.isPersistent=function(){return!this._incremental},a.updateData=function(t,e){this.group.removeAll();var n=new r({rectHover:!0,cursor:"default"});n.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(n,t,!1,e),this.group.add(n),this._incremental=null},a.updateLayout=function(t){if(!this._incremental){var e=t.getLayout("symbolPoints");this.group.eachChild(function(t){if(null!=t.startIndex){var n=2*(t.endIndex-t.startIndex),i=4*t.startIndex*2;e=new Float32Array(e.buffer,i,n)}t.setShape("points",e)})}},a.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new n({silent:!0})),this.group.add(this._incremental)):this._incremental=null},a.incrementalUpdate=function(t,e,n){var i;this._incremental?(i=new r,this._incremental.addDisplayable(i,!0)):((i=new r({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(i)),i.setShape({points:e.getLayout("symbolPoints")}),this._setCommon(i,e,!!this._incremental,n)},a._setCommon=function(t,n,r,o){var a=n.hostModel;o=o||{};var s=n.getVisual("symbolSize");t.setShape("size",s instanceof Array?s:[s,s]),t.softClipShape=o.clipShape||null,t.symbolProxy=e(n.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var l=t.shape.size[0]=0&&(t.dataIndex=n+(t.startIndex||0))}))},a.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},a._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var s=o;return OQ=s}(),i=Y$();t.extendChartView({type:"scatter",render:function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).updateData(i,{clipShape:this._getClipShape(t)}),this._finished=!0},incrementalPrepareRender:function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).incrementalPrepareUpdate(i),this._finished=!1},incrementalRender:function(t,e,n){this._symbolDraw.incrementalUpdate(t,e.getData(),{clipShape:this._getClipShape(e)}),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,n){var r=t.getData();if(this.group.dirty(),!this._finished||r.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var o=i().reset(t);o.progress&&o.progress({start:0,end:r.count()},r),this._symbolDraw.updateLayout(r)},_getClipShape:function(t){var e=t.coordinateSystem,n=e&&e.getArea&&e.getArea();return t.get("clip",!0)?n:null},_updateSymbolDraw:function(t,i){var r=this._symbolDraw,o=i.pipelineContext.large;return r&&o===this._isLargeDraw||(r&&r.remove(),r=this._symbolDraw=o?new n:new e,this._isLargeDraw=o,this.group.removeAll()),this.group.add(r.group),r},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},dispose:function(){}})}();var e=U$(),n=Y$();zJ(),t.registerVisual(e("scatter","circle")),t.registerLayout(n("scatter"))}(),function(){if(t0)return i0;t0=1;var t=c$();YQ||(YQ=1,function(){if(GQ)return BQ;GQ=1;var t=IW(),e=function(){if(VQ)return zQ;VQ=1;var t=IW(),e=u$();function n(t,n,i){e.call(this,t,n,i),this.type="value",this.angle=0,this.name="",this.model}t.inherits(n,e);var i=n;return zQ=i}(),n=DK(),i=qX(),r=FK(),o=r.getScaleExtent,a=r.niceScaleExtent,s=zj(),l=GK();function u(i,r,o){this._model=i,this.dimensions=[],this._indicatorAxes=t.map(i.getIndicatorModels(),function(t,i){var r="indicator_"+i,o=new e(r,"log"===t.get("axisType")?new l:new n);return o.name=t.get("name"),o.model=t,t.axis=o,this.dimensions.push(r),o},this),this.resize(i,o),this.cx,this.cy,this.r,this.r0,this.startAngle}u.prototype.getIndicatorAxes=function(){return this._indicatorAxes},u.prototype.dataToPoint=function(t,e){var n=this._indicatorAxes[e];return this.coordToPoint(n.dataToCoord(t),e)},u.prototype.coordToPoint=function(t,e){var n=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(n),this.cy-t*Math.sin(n)]},u.prototype.pointToData=function(t){var e=t[0]-this.cx,n=t[1]-this.cy,i=Math.sqrt(e*e+n*n);e/=i,n/=i;for(var r,o=Math.atan2(-n,e),a=1/0,s=-1,l=0;ln[0]&&isFinite(f)&&isFinite(n[0]));else{s.getTicks().length-1>l&&(d=u(d));var p=Math.ceil(n[1]/d)*d,f=i.round(p-d*l);s.setExtent(f,p),s.setInterval(d)}})},u.dimensions=[],u.create=function(t,e){var n=[];return t.eachComponent("radar",function(i){var r=new u(i,t,e);n.push(r),i.coordinateSystem=r}),t.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=n[t.get("radarIndex")||0])}),n},s.register("radar",u);var h=u;BQ=h}(),function(){if(HQ)return FQ;HQ=1;var t=c$(),e=IW(),n=cJ(),i=HX(),r=HK(),o=n.valueAxis;function a(t,n){return e.defaults({show:n},t)}var s=t.extendComponentModel({type:"radar",optionUpdated:function(){var t=this.get("boundaryGap"),n=this.get("splitNumber"),o=this.get("scale"),a=this.get("axisLine"),s=this.get("axisTick"),l=this.get("axisType"),u=this.get("axisLabel"),h=this.get("name"),c=this.get("name.show"),d=this.get("name.formatter"),p=this.get("nameGap"),f=this.get("triggerEvent"),g=e.map(this.get("indicator")||[],function(g){null!=g.max&&g.max>0&&!g.min?g.min=0:null!=g.min&&g.min<0&&!g.max&&(g.max=0);var v=h;if(null!=g.color&&(v=e.defaults({color:g.color},h)),g=e.merge(e.clone(g),{boundaryGap:t,splitNumber:n,scale:o,axisLine:a,axisTick:s,axisType:l,axisLabel:u,name:g.text,nameLocation:"end",nameGap:p,nameTextStyle:v,triggerEvent:f},!1),c||(g.name=""),"string"==typeof d){var m=g.name;g.name=d.replace("{value}",null!=m?m:"")}else"function"==typeof d&&(g.name=d(g.name,g));var y=e.extend(new i(g,null,this.ecModel),r);return y.mainType="radar",y.componentIndex=this.componentIndex,y},this);this.getIndicatorModels=function(){return g}},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"75%",startAngle:90,name:{show:!0},boundaryGap:[0,0],splitNumber:5,nameGap:15,scale:!1,shape:"polygon",axisLine:e.merge({lineStyle:{color:"#bbb"}},o.axisLine),axisLabel:a(o.axisLabel,!1),axisTick:a(o.axisTick,!1),axisType:"interval",splitLine:a(o.splitLine,!0),splitArea:a(o.splitArea,!0),indicator:[]}}),l=s;FQ=l}(),function(){if(UQ)return WQ;UQ=1,gW().__DEV__;var t=c$(),e=IW(),n=xJ(),i=FX(),r=["axisLine","axisTickLabel","axisName"],o=t.extendComponentView({type:"radar",render:function(t,e,n){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var i=t.coordinateSystem,o=i.getIndicatorAxes(),a=e.map(o,function(t){return new n(t.model,{position:[i.cx,i.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})});e.each(a,function(t){e.each(r,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){var n=t.coordinateSystem,r=n.getIndicatorAxes();if(r.length){var o=t.get("shape"),a=t.getModel("splitLine"),s=t.getModel("splitArea"),l=a.getModel("lineStyle"),u=s.getModel("areaStyle"),h=a.get("show"),c=s.get("show"),d=l.get("color"),p=u.get("color");d=e.isArray(d)?d:[d],p=e.isArray(p)?p:[p];var f=[],g=[];if("circle"===o)for(var v=r[0].getTicksCoords(),m=n.cx,y=n.cy,x=0;x":"\n";return i(""===l?this.name:l)+u+n.map(s,function(e,n){var r=a.get(a.mapDimension(e.dim),t);return i(e.name+" : "+r)}).join(u)},getTooltipPosition:function(t){if(null!=t)for(var e=this.getData(),i=this.coordinateSystem,r=e.getValues(n.map(i.dimensions,function(t){return e.mapDimension(t)}),t,!0),o=0,a=r.length;o":"\n";return h.join(", ")+f+r(l+" : "+s)},getTooltipPosition:function(t){if(null!=t){var e=this.getData().getName(t),n=this.coordinateSystem,i=n.getRegion(e);return i&&n.dataToPoint(i.center)}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},defaultOption:{zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:.75,showLegendSymbol:!0,dataRangeHoverLink:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}},nameProperty:"name"}});t.mixin(h,a);var c=h;x0=c})(),function(){if(V0)return z0;V0=1;var t=c$(),e=IW(),n=FX(),i=F0(),r="__seriesMapHighDown",o="__seriesMapCallKey",a=t.extendChartView({type:"map",render:function(t,e,n,r){if(!r||"mapToggleSelect"!==r.type||r.from!==this.uid){var o=this.group;if(o.removeAll(),!t.getHostGeoModel()){if(r&&"geoRoam"===r.type&&"series"===r.componentType&&r.seriesId===t.id)(a=this._mapDraw)&&o.add(a.group);else if(t.needsDrawMap){var a=this._mapDraw||new i(n,!0);o.add(a.group),a.draw(t,e,n,this,r),this._mapDraw=a}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,n)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(t,i,a){var u=t.originalData,h=this.group;u.each(u.mapDimension("value"),function(i,a){if(!isNaN(i)){var c=u.getItemLayout(a);if(c&&c.point){var d=c.point,p=c.offset,f=new n.Circle({style:{fill:t.getData().getVisual("color")},shape:{cx:d[0]+9*p,cy:d[1],r:3},silent:!0,z2:8+(p?0:n.Z2_EMPHASIS_LIFT+1)});if(!p){var g=t.mainSeries.getData(),v=u.getName(a),m=g.indexOfName(v),y=u.getItemModel(a),x=y.getModel("label"),_=y.getModel("emphasis.label"),b=g.getItemGraphicEl(m),w=e.retrieve2(t.getFormattedLabel(m,"normal"),v),S=e.retrieve2(t.getFormattedLabel(m,"emphasis"),w),M=b[r],I=Math.random();if(!M){M=b[r]={};var T=e.curry(s,!0),C=e.curry(s,!1);b.on("mouseover",T).on("mouseout",C).on("emphasis",T).on("normal",C)}b[o]=I,e.extend(M,{recordVersion:I,circle:f,labelModel:x,hoverLabelModel:_,emphasisText:S,normalText:w}),l(M,!1)}h.add(f)}}})}});function s(t){var e=this[r];e&&e.recordVersion===this[o]&&l(e,t)}function l(t,e){var i=t.circle,r=t.labelModel,o=t.hoverLabelModel,a=t.emphasisText,s=t.normalText;e?(i.style.extendFrom(n.setTextStyle({},o,{text:o.get("show")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=n.Z2_EMPHASIS_LIFT):(n.setTextStyle(i.style,r,{text:r.get("show")?s:null,textPosition:r.getShallow("position")||"bottom"},{isRectText:!0,useInsideStyle:!1}),i.dirty(!1),null!=i.__mapOriginalZ2&&(i.z2=i.__mapOriginalZ2,i.__mapOriginalZ2=null))}z0=a}(),l1(),h1();var e=c1(),n=d1(),i=p1(),r=f1(),o=TQ();t.registerLayout(e),t.registerVisual(n),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,i),t.registerPreprocessor(r),o("map",[{type:"mapToggleSelect",event:"mapselectchanged",method:"toggleSelected"},{type:"mapSelect",event:"mapselected",method:"select"},{type:"mapUnSelect",event:"mapunselected",method:"unSelect"}])}(),function(){if(O1)return b1;O1=1;var t=c$();(function(){if(_1)return x1;_1=1;var t=rq(),e=S1(),n=sj().encodeHTML,i=HX(),r=t.extend({type:"series.tree",layoutInfo:null,layoutMode:"box",getInitialData:function(t){var n={name:t.name,children:t.data},r=t.leaves||{},o=new i(r,this,this.ecModel),a=e.createTree(n,this,s);function s(t){t.wrapMethod("getItemModel",function(t,e){var n=a.getNodeByDataIndex(e);return n.children.length&&n.isExpand||(t.parentModel=o),t})}var l=0;a.eachNode("preorder",function(t){t.depth>l&&(l=t.depth)});var u=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:l;return a.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=u}),a.data},getOrient:function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},formatTooltip:function(t){for(var e=this.getData().tree,i=e.root.children[0],r=e.getNodeByDataIndex(t),o=r.getValue(),a=r.name;r&&r!==i;)a=r.parentNode.name+"."+a,r=r.parentNode;return n(a+(isNaN(o)||null==o?"":" : "+o))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderColor:"#c23531",borderWidth:1.5},label:{show:!0,color:"#555"},leaves:{label:{show:!0}},animationEasing:"linear",animationDuration:700,animationDurationUpdate:1e3}});x1=r})(),function(){if(T1)return I1;T1=1;var t=IW(),e=FX(),n=w$(),i=A1().radialCoordinate,r=c$(),o=JY(),a=u1(),s=O0(),l=L0(),u=G0().onIrrelevantElement;gW().__DEV__;var h=qX().parsePercent,c=e.extendShape({shape:{parentPoint:[],childPoints:[],orient:"",forkPosition:""},style:{stroke:"#000",fill:null},buildPath:function(t,e){var n=e.childPoints,i=n.length,r=e.parentPoint,o=n[0],a=n[i-1];if(1===i)return t.moveTo(r[0],r[1]),void t.lineTo(o[0],o[1]);var s=e.orient,l="TB"===s||"BT"===s?0:1,u=1-l,c=h(e.forkPosition,1),d=[];d[l]=r[l],d[u]=r[u]+(a[u]-r[u])*c,t.moveTo(r[0],r[1]),t.lineTo(d[0],d[1]),t.moveTo(o[0],o[1]),d[l]=o[l],t.lineTo(d[0],d[1]),d[l]=a[l],t.lineTo(d[0],d[1]),t.lineTo(a[0],a[1]);for(var p=1;pS.x)||(_-=Math.PI);var T=b?"left":"right",C=s.labelModel.get("rotate"),A=C*(Math.PI/180);x.setStyle({textPosition:s.labelModel.get("position")||T,textRotation:null==C?-_:A,textOrigin:"center",verticalAlign:"middle"})}v(a,u,c,r,m,g,y,o,s)}function v(n,i,r,o,a,s,l,u,h){var d=h.edgeShape,p=o.__edge;if("curve"===d)i.parentNode&&i.parentNode!==r&&(p||(p=o.__edge=new e.BezierCurve({shape:y(h,a,a),style:t.defaults({opacity:0,strokeNoScale:!0},h.lineStyle)})),e.updateProps(p,{shape:y(h,s,l),style:t.defaults({opacity:1},h.lineStyle)},n));else if("polyline"===d&&"orthogonal"===h.layout&&i!==r&&i.children&&0!==i.children.length&&!0===i.isExpand){for(var f=i.children,g=[],v=0;v=0;m--){var y=v[m],x=y.node,_=y.width,b=y.text;g>f.width&&(g-=_-d,_=d,b=null);var w=new t.Polygon({shape:{points:l(c,0,_,p,m===v.length-1,0===m)},style:n.defaults(a.getItemStyle(),{lineJoin:"bevel",text:b,textFill:s.getTextColor(),textFont:s.getFont()}),z:10,onclick:n.curry(h,x)});this.group.add(w),u(w,i,x),c+=_+o}},remove:function(){this.group.removeAll()}};var h=s;return G1=h}(),a=L0(),s=NU(),l=eU(),u=function(){if(Y1)return n2;Y1=1;var t=IW();function e(){var e,n=[],i={};return{add:function(e,r,o,a,s){return t.isString(a)&&(s=a,a=0),!i[e.id]&&(i[e.id]=1,n.push({el:e,target:r,time:o,delay:a,easing:s}),!0)},done:function(t){return e=t,this},start:function(){for(var t=n.length,r=0,o=n.length;rv||Math.abs(t.dy)>v)){var e=this.seriesModel.getData().tree.root;if(!e)return;var n=e.getLayout();if(!n)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+t.dx,y:n.y+t.dy,width:n.width,height:n.height}})}},_onZoom:function(t){var e=t.originX,n=t.originY;if("animating"!==this._state){var i=this.seriesModel.getData().tree.root;if(!i)return;var r=i.getLayout();if(!r)return;var o=new s(r.x,r.y,r.width,r.height),a=this.seriesModel.layoutInfo;e-=a.x,n-=a.y;var u=l.create();l.translate(u,u,[-e,-n]),l.scale(u,u,[t.scale,t.scale]),l.translate(u,u,[e,n]),o.applyTransform(u),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:o.x,y:o.y,width:o.width,height:o.height}})}},_initEvents:function(t){t.on("click",function(t){if("ready"===this._state){var e=this.seriesModel.get("nodeClick",!0);if(e){var n=this.findTarget(t.offsetX,t.offsetY);if(n){var i=n.node;if(i.getLayout().isLeafRoot)this._rootToNode(n);else if("zoomToNode"===e)this._zoomToNode(n);else if("link"===e){var r=i.hostTree.data.getItemModel(i.dataIndex),o=r.get("link",!0),a=r.get("target",!0)||"blank";o&&c(o,a)}}}}},this)},_renderBreadcrumb:function(t,e,n){function i(e){"animating"!==this._state&&(r.aboveViewRoot(t.getViewRoot(),e)?this._rootToNode({node:e}):this._zoomToNode({node:e}))}n||(n=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(n={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new o(this.group))).render(t,e,n.node,d(i,this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage=C(),this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},dispose:function(){this._clearController()},_zoomToNode:function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},_rootToNode:function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},findTarget:function(t,e){var n;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(i){var r=this._storage.background[i.getRawIndex()];if(r){var o=r.transformCoordToLocal(t,e),a=r.shape;if(!(a.x<=o[0]&&o[0]<=a.x+a.width&&a.y<=o[1]&&o[1]<=a.y+a.height))return!1;n={node:i,offsetX:o[0],offsetY:o[1]}}},this),n}});function C(){return{nodeGroup:[],background:[],content:[]}}function A(t,i,r,o,a,s,l,u,h,c){if(l){var d=l.getLayout(),g=t.getData();if(g.setItemGraphicEl(l.dataIndex,null),d&&d.isInView){var v=d.width,b=d.height,T=d.borderWidth,C=d.invisible,A=l.getRawIndex(),L=u&&u.getRawIndex(),k=l.viewChildren,P=d.upperHeight,O=k&&k.length,R=l.getModel("itemStyle"),N=l.getModel("emphasis.itemStyle"),E=Y("nodeGroup",p);if(E){if(h.add(E),E.attr("position",[d.x||0,d.y||0]),E.__tmNodeWidth=v,E.__tmNodeHeight=b,d.isAboveViewRoot)return E;var z=l.getModel(),V=Y("background",f,c,w);if(V&&G(E,V,O&&d.upperLabelHeight),O)n.isHighDownDispatcher(E)&&n.setAsHighDownDispatcher(E,!1),V&&(n.setAsHighDownDispatcher(V,!0),g.setItemGraphicEl(l.dataIndex,V));else{var B=Y("content",f,c,S);B&&F(E,B),V&&n.isHighDownDispatcher(V)&&n.setAsHighDownDispatcher(V,!1),n.setAsHighDownDispatcher(E,!0),g.setItemGraphicEl(l.dataIndex,E)}return E}}}function G(e,i,r){if(i.dataIndex=l.dataIndex,i.seriesIndex=t.seriesIndex,i.setShape({x:0,y:0,width:v,height:b}),C)H(i);else{i.invisible=!1;var o=l.getVisual("borderColor",!0),a=N.get("borderColor"),s=I(R);s.fill=o;var u=M(N);if(u.fill=a,r){var h=v-2*T;W(s,u,o,h,P,{x:T,y:0,width:h,height:P})}else s.text=u.text=null;i.setStyle(s),n.setElementHoverStyle(i,u)}e.add(i)}function F(e,i){i.dataIndex=l.dataIndex,i.seriesIndex=t.seriesIndex;var r=Math.max(v-2*T,0),o=Math.max(b-2*T,0);if(i.culling=!0,i.setShape({x:T,y:T,width:r,height:o}),C)H(i);else{i.invisible=!1;var a=l.getVisual("color",!0),s=I(R);s.fill=a;var u=M(N);W(s,u,a,r,o),i.setStyle(s),n.setElementHoverStyle(i,u)}e.add(i)}function H(t){!t.invisible&&s.push(t)}function W(i,r,o,a,s,u){var h=z.get("name"),c=z.getModel(u?x:m),p=z.getModel(u?_:y),f=c.getShallow("show");n.setLabelStyle(i,r,c,p,{defaultText:f?h:null,autoColor:o,isRectText:!0,labelFetcher:t,labelDataIndex:l.dataIndex,labelProp:u?"upperLabel":"label"}),U(i,u,d),U(r,u,d),u&&(i.textRect=e.clone(u)),i.truncate=f&&c.get("ellipsis")?{outerWidth:a,outerHeight:s,minChar:2}:null}function U(e,n,i){var r=e.text;if(!n&&i.isLeafRoot&&null!=r){var o=t.get("drillDownIcon",!0);e.text=o?o+" "+r:r}}function Y(t,e,n,o){var s=null!=L&&r[t][L],l=a[t];return s?(r[t][L]=null,Z(l,s,t)):C||((s=new e({z:D(n,o)})).__tmDepth=n,s.__tmStorageName=t,X(l,s,t)),i[t][A]=s}function Z(t,n,i){(t[A]={}).old="nodeGroup"===i?n.position.slice():e.extend({},n.shape)}function X(t,e,n){var i=t[A]={},r=l.parentNode;if(r&&(!o||"drillDown"===o.direction)){var s=0,u=0,h=a.background[r.getRawIndex()];!o&&h&&h.old&&(s=h.old.width,u=h.old.height),i.old="nodeGroup"===n?[0,u]:{x:s,y:u,width:0,height:0}}i.fadein="nodeGroup"!==n}}function D(t,e){var n=t*b+e;return(n-1)/n}Z1=T}(),function(){if(j1)return i2;j1=1;for(var t=c$(),e=U1(),n=function(){},i=["treemapZoomToNode","treemapRender","treemapMove"],r=0;r ")),r.value&&(u+=" : "+o(r.value)),u}return c.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var t=n.map(this.option.categories||[],function(t){return null!=t.value?t:n.extend({value:0},t)}),i=new e(["value"],this);i.initData(t),this._categoriesData=i,this._categoriesModels=i.mapArray(function(t){return i.getItemModel(t,!0)})},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},isAnimationEnabled:function(){return c.superCall(this,"isAnimationEnabled")&&!("force"===this.get("layout")&&this.get("force.layoutAnimation"))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,hoverAnimation:!0,layout:null,focusNodeAdjacency:!1,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,opacity:.5},emphasis:{label:{show:!0}}}});f2=c})(),function(){if(k2)return L2;k2=1;var t=c$(),e=IW(),n=S$(),i=T2(),r=L0(),o=O0(),a=G0().onIrrelevantElement,s=FX(),l=R2(),u=O2().getNodeGlobalScale,h="__focusNodeAdjacency",c="__unfocusNodeAdjacency",d=["itemStyle","opacity"],p=["lineStyle","opacity"];function f(t,e){var n=t.getVisual("opacity");return null!=n?n:t.getModel().get(e)}function g(t,e,n){var i=t.getGraphicEl(),r=f(t,e);null!=n&&(null==r&&(r=1),r*=n),i.downplay&&i.downplay(),i.traverse(function(t){if(!t.isGroup){var e=t.lineLabelOriginalOpacity;null!=e&&null==n||(e=r),t.setStyle("opacity",e)}})}function v(t,e){var n=f(t,e),i=t.getGraphicEl();i.traverse(function(t){!t.isGroup&&t.setStyle("opacity",n)}),i.highlight&&i.highlight()}var m=t.extendChartView({type:"graph",init:function(t,e){var o=new n,a=new i,s=this.group;this._controller=new r(e.getZr()),this._controllerHost={target:s},s.add(o.group),s.add(a.group),this._symbolDraw=o,this._lineDraw=a,this._firstRender=!0},render:function(t,e,n){var i=this,r=t.coordinateSystem;this._model=t;var o=this._symbolDraw,a=this._lineDraw,d=this.group;if("view"===r.type){var p={position:r.position,scale:r.scale};this._firstRender?d.attr(p):s.updateProps(d,p,t)}l(t.getGraph(),u(t));var f=t.getData();o.updateData(f);var g=t.getEdgeData();a.updateData(g),this._updateNodeAndLinkScale(),this._updateController(t,e,n),clearTimeout(this._layoutTimeout);var v=t.forceLayout,m=t.get("force.layoutAnimation");v&&this._startForceLayoutIteration(v,m),f.eachItemGraphicEl(function(e,r){var o=f.getItemModel(r);e.off("drag").off("dragend");var a=o.get("draggable");a&&e.on("drag",function(){v&&(v.warmUp(),!this._layouting&&this._startForceLayoutIteration(v,m),v.setFixed(r),f.setItemLayout(r,e.position))},this).on("dragend",function(){v&&v.setUnfixed(r)},this),e.setDraggable(a&&v),e[h]&&e.off("mouseover",e[h]),e[c]&&e.off("mouseout",e[c]),o.get("focusNodeAdjacency")&&(e.on("mouseover",e[h]=function(){i._clearTimer(),n.dispatchAction({type:"focusNodeAdjacency",seriesId:t.id,dataIndex:e.dataIndex})}),e.on("mouseout",e[c]=function(){i._dispatchUnfocus(n)}))},this),f.graph.eachEdge(function(e){var r=e.getGraphicEl();r[h]&&r.off("mouseover",r[h]),r[c]&&r.off("mouseout",r[c]),e.getModel().get("focusNodeAdjacency")&&(r.on("mouseover",r[h]=function(){i._clearTimer(),n.dispatchAction({type:"focusNodeAdjacency",seriesId:t.id,edgeDataIndex:e.dataIndex})}),r.on("mouseout",r[c]=function(){i._dispatchUnfocus(n)}))});var y="circular"===t.get("layout")&&t.get("circular.rotateLabel"),x=f.getLayout("cx"),_=f.getLayout("cy");f.eachItemGraphicEl(function(t,e){var n=f.getItemModel(e).get("label.rotate")||0,i=t.getSymbolPath();if(y){var r=f.getItemLayout(e),o=Math.atan2(r[1]-_,r[0]-x);o<0&&(o=2*Math.PI+o);var a=r[0]=t&&(0===e?0:r[e-1][0]).4?"bottom":"middle",textAlign:k<-.4?"left":k>.4?"right":"center"},{autoColor:E}),silent:!0}))}if(x.get("show")&&L!==b){for(var z=0;z<=w;z++){k=Math.cos(I),P=Math.sin(I);var V=new e.Line({shape:{x1:k*g+p,y1:P*g+f,x2:k*(g-M)+p,y2:P*(g-M)+f},silent:!0,style:D});"auto"===D.stroke&&V.setStyle({stroke:a((L+z/w)/b)}),d.add(V),I+=C}I-=C}else I+=T}},_renderPointer:function(n,i,o,s,l,u,h,c){var d=this.group,p=this._data;if(n.get("pointer.show")){var f=[+n.get("min"),+n.get("max")],g=[u,h],v=n.getData(),m=v.mapDimension("value");v.diff(p).add(function(i){var r=new t({shape:{angle:u}});e.initProps(r,{shape:{angle:a(v.get(m,i),f,g,!0)}},n),d.add(r),v.setItemGraphicEl(i,r)}).update(function(t,i){var r=p.getItemGraphicEl(i);e.updateProps(r,{shape:{angle:a(v.get(m,t),f,g,!0)}},n),d.add(r),v.setItemGraphicEl(t,r)}).remove(function(t){var e=p.getItemGraphicEl(t);d.remove(e)}).execute(),v.eachItemGraphicEl(function(t,n){var i=v.getItemModel(n),o=i.getModel("pointer");t.setShape({x:l.cx,y:l.cy,width:r(o.get("width"),l.r),r:r(o.get("length"),l.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",s(a(v.get(m,n),f,[0,1],!0))),e.setHoverStyle(t,i.getModel("emphasis.itemStyle").getItemStyle())}),this._data=v}else p&&p.eachItemGraphicEl(function(t){d.remove(t)})},_renderTitle:function(t,n,i,o,s){var l=t.getData(),u=l.mapDimension("value"),h=t.getModel("title");if(h.get("show")){var c=h.get("offsetCenter"),d=s.cx+r(c[0],s.r),p=s.cy+r(c[1],s.r),f=+t.get("min"),g=+t.get("max"),v=t.getData().get(u,0),m=o(a(v,[f,g],[0,1],!0));this.group.add(new e.Text({silent:!0,style:e.setTextStyle({},h,{x:d,y:p,text:l.getName(0),textAlign:"center",textVerticalAlign:"middle"},{autoColor:m,forceRich:!0})}))}},_renderDetail:function(t,n,i,o,s){var u=t.getModel("detail"),h=+t.get("min"),c=+t.get("max");if(u.get("show")){var d=u.get("offsetCenter"),p=s.cx+r(d[0],s.r),f=s.cy+r(d[1],s.r),g=r(u.get("width"),s.r),v=r(u.get("height"),s.r),m=t.getData(),y=m.get(m.mapDimension("value"),0),x=o(a(y,[h,c],[0,1],!0));this.group.add(new e.Text({silent:!0,style:e.setTextStyle({},u,{x:p,y:f,text:l(y,u.get("formatter")),textWidth:isNaN(g)?null:g,textHeight:isNaN(v)?null:v,textAlign:"center",textVerticalAlign:"middle"},{autoColor:x,forceRich:!0})}))}}}),c=h;g5=c}()),function(){if(C5)return A5;C5=1;var t=c$();(function(){if(w5)return b5;w5=1;var t=c$(),e=IW(),n=SQ(),i=PY().defaultEmphasis,r=Rj().makeSeriesEncodeForNameBased,o=IQ(),a=t.extendSeriesModel({type:"series.funnel",init:function(t){a.superApply(this,"init",arguments),this.legendVisualProvider=new o(e.bind(this.getData,this),e.bind(this.getRawData,this)),this._defaultLabelLine(t)},getInitialData:function(t,i){return n(this,{coordDimensions:["value"],encodeDefaulter:e.curry(r,this)})},_defaultLabelLine:function(t){i(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},getDataParams:function(t){var e=this.getData(),n=a.superCall(this,"getDataParams",t),i=e.mapDimension("value"),r=e.getSum(i);return n.percent=r?+(e.get(i,t)/r*100).toFixed(2):0,n.$vars.push("percent"),n},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",orient:"vertical",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}}}});b5=a})(),function(){if(M5)return S5;M5=1;var t=FX(),e=IW(),n=sq();function i(e,n){t.Group.call(this);var i=new t.Polygon,r=new t.Polyline,o=new t.Text;this.add(i),this.add(r),this.add(o),this.highDownOnUpdate=function(t,e){"emphasis"===e?(r.ignore=r.hoverIgnore,o.ignore=o.hoverIgnore):(r.ignore=r.normalIgnore,o.ignore=o.normalIgnore)},this.updateData(e,n,!0)}var r=i.prototype,o=["itemStyle","opacity"];r.updateData=function(n,i,r){var a=this.childAt(0),s=n.hostModel,l=n.getItemModel(i),u=n.getItemLayout(i),h=n.getItemModel(i).get(o);h=null==h?1:h,a.useStyle({}),r?(a.setShape({points:u.points}),a.setStyle({opacity:0}),t.initProps(a,{style:{opacity:h}},s,i)):t.updateProps(a,{style:{opacity:h},shape:{points:u.points}},s,i);var c=l.getModel("itemStyle"),d=n.getItemVisual(i,"color");a.setStyle(e.defaults({lineJoin:"round",fill:d},c.getItemStyle(["opacity"]))),a.hoverStyle=c.getModel("emphasis").getItemStyle(),this._updateLabel(n,i),t.setHoverStyle(this)},r._updateLabel=function(e,n){var i=this.childAt(1),r=this.childAt(2),o=e.hostModel,a=e.getItemModel(n),s=e.getItemLayout(n).label,l=e.getItemVisual(n,"color");t.updateProps(i,{shape:{points:s.linePoints||s.linePoints}},o,n),t.updateProps(r,{style:{x:s.x,y:s.y}},o,n),r.attr({rotation:s.rotation,origin:[s.x,s.y],z2:10});var u=a.getModel("label"),h=a.getModel("emphasis.label"),c=a.getModel("labelLine"),d=a.getModel("emphasis.labelLine");l=e.getItemVisual(n,"color"),t.setLabelStyle(r.style,r.hoverStyle={},u,h,{labelFetcher:e.hostModel,labelDataIndex:n,defaultText:e.getName(n),autoColor:l,useInsideStyle:!!s.inside},{textAlign:s.textAlign,textVerticalAlign:s.verticalAlign}),r.ignore=r.normalIgnore=!u.get("show"),r.hoverIgnore=!h.get("show"),i.ignore=i.normalIgnore=!c.get("show"),i.hoverIgnore=!d.get("show"),i.setStyle({stroke:l}),i.setStyle(c.getModel("lineStyle").getLineStyle()),i.hoverStyle=d.getModel("lineStyle").getLineStyle()},e.inherits(i,t.Group);var a=n.extend({type:"funnel",render:function(t,e,n){var r=t.getData(),o=this._data,a=this.group;r.diff(o).add(function(t){var e=new i(r,t);r.setItemGraphicEl(t,e),a.add(e)}).update(function(t,e){var n=o.getItemGraphicEl(e);n.updateData(r,t),a.add(n),r.setItemGraphicEl(t,n)}).remove(function(t){var e=o.getItemGraphicEl(t);a.remove(e)}).execute(),this._data=r},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}}),s=a;S5=s}();var e=CQ(),n=D5(),i=LQ();t.registerVisual(e("funnel")),t.registerLayout(n),t.registerProcessor(i("funnel"))}(),function(){if(f3)return P5;f3=1;var t=c$();x3(),function(){if(u3)return l3;u3=1;var t=IW(),e=t.each,n=t.createHashMap,i=rq(),r=fK(),o=i.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var n=this.getSource();return a(n,this),r(n,this)},getRawIndicesByActiveState:function(t){var e=this.coordinateSystem,n=this.getData(),i=[];return e.eachActiveState(n,function(e,r){t===e&&i.push(n.getRawIndex(r))}),i},defaultOption:{zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{show:!1},inactiveOpacity:.05,activeOpacity:1,lineStyle:{width:1,opacity:.45,type:"solid"},emphasis:{label:{show:!1}},progressive:500,smooth:!1,animationEasing:"linear"}});function a(t,i){if(!t.encodeDefine){var r=i.ecModel.getComponent("parallel",i.get("parallelIndex"));if(r){var o=t.encodeDefine=n();e(r.dimensions,function(t){var e=s(t);o.set(t,e)})}}}function s(t){return+t.replace("dim","")}l3=o}(),function(){if(c3)return h3;c3=1;var t=FX(),e=sq(),n=.3,i=e.extend({type:"parallel",init:function(){this._dataGroup=new t.Group,this.group.add(this._dataGroup),this._data,this._initialized},render:function(e,n,i,u){var h=this._dataGroup,c=e.getData(),d=this._data,p=e.coordinateSystem,f=p.dimensions,g=s(e);function v(t){l(a(c,h,t,f,p),c,t,g)}function m(n,i){var r=d.getItemGraphicEl(i),a=o(c,n,f,p);c.setItemGraphicEl(n,r);var s=u&&!1===u.animation?null:e;t.updateProps(r,{shape:{points:a}},s,n),l(r,c,n,g)}function y(t){var e=d.getItemGraphicEl(t);h.remove(e)}if(c.diff(d).add(v).update(m).remove(y).execute(),!this._initialized){this._initialized=!0;var x=r(p,e,function(){setTimeout(function(){h.removeClipPath()})});h.setClipPath(x)}this._data=c},incrementalPrepareRender:function(t,e,n){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},incrementalRender:function(t,e,n){for(var i=e.getData(),r=e.coordinateSystem,o=r.dimensions,u=s(e),h=t.start;h=0&&(s[a[l].depth]=new i(a[l],this,n));if(o&&r)return e(o,r,this,!0,u).data;function u(t,e){t.wrapMethod("getItemModel",function(t,e){return t.customizeGetParent(function(t){var n=this.parentModel,i=n.getData().getItemLayout(e).depth;return n.levelModels[i]||this.parentModel}),t}),e.wrapMethod("getItemModel",function(t,e){return t.customizeGetParent(function(t){var n=this.parentModel,i=n.getGraph().getEdgeByIndex(e).node1.getLayout().depth;return n.levelModels[i]||this.parentModel}),t})}},setNodePosition:function(t,e){var n=this.option.data[t];n.localX=e[0],n.localY=e[1]},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},formatTooltip:function(t,e,i){if("edge"===i){var o=this.getDataParams(t,i),a=o.data,s=a.source+" -- "+a.target;return o.value&&(s+=" : "+o.value),n(s)}if("node"===i){var l=this.getGraph().getNodeByIndex(t).getLayout().value,u=this.getDataParams(t,i).data.name;return l&&(s=u+" : "+l),n(s)}return r.superCall(this,"formatTooltip",t,e)},optionUpdated:function(){var t=this.option;!0===t.focusNodeAdjacency&&(t.focusNodeAdjacency="allEdges")},getDataParams:function(t,e){var n=r.superCall(this,"getDataParams",t,e);if(null==n.value&&"node"===e){var i=this.getGraph().getNodeByIndex(t).getLayout().value;n.value=i}return n},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",layout:null,left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,focusNodeAdjacency:!1,layoutIterations:32,label:{show:!0,position:"right",color:"#000",fontSize:12},levels:[],nodeAlign:"justify",itemStyle:{borderWidth:1,borderColor:"#333"},lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},animationEasing:"linear",animationDuration:1e3}});b3=r})(),function(){if(M3)return S3;M3=1;var t=FX(),e=c$(),n=IW(),i=["itemStyle","opacity"],r=["emphasis","itemStyle","opacity"],o=["lineStyle","opacity"],a=["emphasis","lineStyle","opacity"];function s(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function l(t,e,n){var i=t.getGraphicEl(),r=s(t,e);null!=n&&(null==r&&(r=1),r*=n),i.downplay&&i.downplay(),i.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",r)})}function u(t,e){var n=s(t,e),i=t.getGraphicEl();i.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",n)}),i.highlight&&i.highlight()}var h=t.extendShape({shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,cpx2:0,cpy2:0,extent:0,orient:""},buildPath:function(t,e){var n=e.extent;t.moveTo(e.x1,e.y1),t.bezierCurveTo(e.cpx1,e.cpy1,e.cpx2,e.cpy2,e.x2,e.y2),"vertical"===e.orient?(t.lineTo(e.x2+n,e.y2),t.bezierCurveTo(e.cpx2+n,e.cpy2,e.cpx1+n,e.cpy1,e.x1+n,e.y1)):(t.lineTo(e.x2,e.y2+n),t.bezierCurveTo(e.cpx2,e.cpy2+n,e.cpx1,e.cpy1+n,e.x1,e.y1+n)),t.closePath()},highlight:function(){this.trigger("emphasis")},downplay:function(){this.trigger("normal")}}),c=e.extendChartView({type:"sankey",_model:null,_focusAdjacencyDisabled:!1,render:function(e,n,i){var r=this,o=e.getGraph(),a=this.group,s=e.layoutInfo,l=s.width,u=s.height,c=e.getData(),p=e.getData("edge"),f=e.get("orient");this._model=e,a.removeAll(),a.attr("position",[s.x,s.y]),o.eachEdge(function(n){var i=new h;i.dataIndex=n.dataIndex,i.seriesIndex=e.seriesIndex,i.dataType="edge";var r,o,s,c,d,g,v,m,y=n.getModel("lineStyle"),x=y.get("curveness"),_=n.node1.getLayout(),b=n.node1.getModel(),w=b.get("localX"),S=b.get("localY"),M=n.node2.getLayout(),I=n.node2.getModel(),T=I.get("localX"),C=I.get("localY"),A=n.getLayout();switch(i.shape.extent=Math.max(1,A.dy),i.shape.orient=f,"vertical"===f?(r=(null!=w?w*l:_.x)+A.sy,o=(null!=S?S*u:_.y)+_.dy,s=(null!=T?T*l:M.x)+A.ty,d=r,g=o*(1-x)+(c=null!=C?C*u:M.y)*x,v=s,m=o*x+c*(1-x)):(r=(null!=w?w*l:_.x)+_.dx,o=(null!=S?S*u:_.y)+A.sy,d=r*(1-x)+(s=null!=T?T*l:M.x)*x,g=o,v=r*x+s*(1-x),m=c=(null!=C?C*u:M.y)+A.ty),i.setShape({x1:r,y1:o,x2:s,y2:c,cpx1:d,cpy1:g,cpx2:v,cpy2:m}),i.setStyle(y.getItemStyle()),i.style.fill){case"source":i.style.fill=n.node1.getVisual("color");break;case"target":i.style.fill=n.node2.getVisual("color")}t.setHoverStyle(i,n.getModel("emphasis.lineStyle").getItemStyle()),a.add(i),p.setItemGraphicEl(n.dataIndex,i)}),o.eachNode(function(n){var i=n.getLayout(),r=n.getModel(),o=r.get("localX"),s=r.get("localY"),h=r.getModel("label"),d=r.getModel("emphasis.label"),p=new t.Rect({shape:{x:null!=o?o*l:i.x,y:null!=s?s*u:i.y,width:i.dx,height:i.dy},style:r.getModel("itemStyle").getItemStyle()}),f=n.getModel("emphasis.itemStyle").getItemStyle();t.setLabelStyle(p.style,f,h,d,{labelFetcher:e,labelDataIndex:n.dataIndex,defaultText:n.id,isRectText:!0}),p.setStyle("fill",n.getVisual("color")),t.setHoverStyle(p,f),a.add(p),c.setItemGraphicEl(n.dataIndex,p),p.dataType="node"}),c.eachItemGraphicEl(function(t,n){var o=c.getItemModel(n);o.get("draggable")&&(t.drift=function(t,o){r._focusAdjacencyDisabled=!0,this.shape.x+=t,this.shape.y+=o,this.dirty(),i.dispatchAction({type:"dragNode",seriesId:e.id,dataIndex:c.getRawIndex(n),localX:this.shape.x/l,localY:this.shape.y/u})},t.ondragend=function(){r._focusAdjacencyDisabled=!1},t.draggable=!0,t.cursor="move"),t.highlight=function(){this.trigger("emphasis")},t.downplay=function(){this.trigger("normal")},t.focusNodeAdjHandler&&t.off("mouseover",t.focusNodeAdjHandler),t.unfocusNodeAdjHandler&&t.off("mouseout",t.unfocusNodeAdjHandler),o.get("focusNodeAdjacency")&&(t.on("mouseover",t.focusNodeAdjHandler=function(){r._focusAdjacencyDisabled||(r._clearTimer(),i.dispatchAction({type:"focusNodeAdjacency",seriesId:e.id,dataIndex:t.dataIndex}))}),t.on("mouseout",t.unfocusNodeAdjHandler=function(){r._focusAdjacencyDisabled||r._dispatchUnfocus(i)}))}),p.eachItemGraphicEl(function(t,n){var o=p.getItemModel(n);t.focusNodeAdjHandler&&t.off("mouseover",t.focusNodeAdjHandler),t.unfocusNodeAdjHandler&&t.off("mouseout",t.unfocusNodeAdjHandler),o.get("focusNodeAdjacency")&&(t.on("mouseover",t.focusNodeAdjHandler=function(){r._focusAdjacencyDisabled||(r._clearTimer(),i.dispatchAction({type:"focusNodeAdjacency",seriesId:e.id,edgeDataIndex:t.dataIndex}))}),t.on("mouseout",t.unfocusNodeAdjHandler=function(){r._focusAdjacencyDisabled||r._dispatchUnfocus(i)}))}),!this._data&&e.get("animation")&&a.setClipPath(d(a.getBoundingRect(),e,function(){a.removeClipPath()})),this._data=e.getData()},dispose:function(){this._clearTimer()},_dispatchUnfocus:function(t){var e=this;this._clearTimer(),this._unfocusDelayTimer=setTimeout(function(){e._unfocusDelayTimer=null,t.dispatchAction({type:"unfocusNodeAdjacency",seriesId:e._model.id})},500)},_clearTimer:function(){this._unfocusDelayTimer&&(clearTimeout(this._unfocusDelayTimer),this._unfocusDelayTimer=null)},focusNodeAdjacency:function(t,e,s,h){var c=t.getData(),d=c.graph,p=h.dataIndex,f=c.getItemModel(p),g=h.edgeDataIndex;if(null!=p||null!=g){var v=d.getNodeByIndex(p),m=d.getEdgeByIndex(g);if(d.eachNode(function(t){l(t,i,.1)}),d.eachEdge(function(t){l(t,o,.1)}),v){u(v,r);var y=f.get("focusNodeAdjacency");"outEdges"===y?n.each(v.outEdges,function(t){t.dataIndex<0||(u(t,a),u(t.node2,r))}):"inEdges"===y?n.each(v.inEdges,function(t){t.dataIndex<0||(u(t,a),u(t.node1,r))}):"allEdges"===y&&n.each(v.edges,function(t){t.dataIndex<0||(u(t,a),t.node1!==v&&u(t.node1,r),t.node2!==v&&u(t.node2,r))})}m&&(u(m,a),u(m.node1,r),u(m.node2,r))}},unfocusNodeAdjacency:function(t,e,n,r){var a=t.getGraph();a.eachNode(function(t){l(t,i)}),a.eachEdge(function(t){l(t,o)})}});function d(e,n,i){var r=new t.Rect({shape:{x:e.x-10,y:e.y-10,width:0,height:e.height+20}});return t.initProps(r,{shape:{width:e.width+20}},n,i),r}S3=c}(),function(){if(I3)return P3;I3=1;var t=c$();Y2(),t.registerAction({type:"dragNode",event:"dragnode",update:"update"},function(t,e){e.eachComponent({mainType:"series",subType:"sankey",query:t},function(e){e.setNodePosition(t.dataIndex,[t.localX,t.localY])})})}();var e=O3(),n=R3();t.registerLayout(e),t.registerVisual(n)}(),function(){if(U3)return Y3;U3=1;var t=c$();(function(){if(z3)return E3;z3=1;var t=IW(),e=rq(),n=X3().seriesModelMixin,i=e.extend({type:"series.boxplot",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"rgba(0,0,0,0.4)"}},animationEasing:"elasticOut",animationDuration:800}});t.mixin(i,n,!0),E3=i})(),function(){if(B3)return V3;B3=1;var t=IW(),e=sq(),n=FX(),i=EZ(),r=["itemStyle"],o=["emphasis","itemStyle"],a=e.extend({type:"boxplot",render:function(t,e,n){var i=t.getData(),r=this.group,o=this._data;this._data||r.removeAll();var a="horizontal"===t.get("layout")?1:0;i.diff(o).add(function(t){if(i.hasValue(t)){var e=l(i.getItemLayout(t),i,t,a,!0);i.setItemGraphicEl(t,e),r.add(e)}}).update(function(t,e){var n=o.getItemGraphicEl(e);if(i.hasValue(t)){var s=i.getItemLayout(t);n?u(s,n,i,t):n=l(s,i,t,a),r.add(n),i.setItemGraphicEl(t,n)}else r.remove(n)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)}).execute(),this._data=i},remove:function(t){var e=this.group,n=this._data;this._data=null,n&&n.eachItemGraphicEl(function(t){t&&e.remove(t)})},dispose:t.noop}),s=i.extend({type:"boxplotBoxPath",shape:{},buildPath:function(t,e){var n=e.points,i=0;for(t.moveTo(n[i][0],n[i][1]),i++;i<4;i++)t.lineTo(n[i][0],n[i][1]);for(t.closePath();i0?"P":"N",a=i.getVisual("borderColor"+r)||i.getVisual("color"+r),l=n.getModel(o).getItemStyle(s);e.useStyle(l),e.style.fill=null,e.style.stroke=a}var m=l;J3=m}();var e=function(){if(e4)return t4;e4=1;var t=IW();function e(e){e&&t.isArray(e.series)&&t.each(e.series,function(e){t.isObject(e)&&"k"===e.type&&(e.type="candlestick")})}return t4=e}(),n=l4(),i=u4();t.registerPreprocessor(e),t.registerVisual(n),t.registerLayout(i)}(),function(){if(v4)return F4;v4=1;var t=c$();(function(){if(c4)return h4;c4=1;var t=fK(),e=rq(),n=e.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(e,n){return t(this.getSource(),this,{useEncodeDefaulter:!0})},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,effectType:"ripple",progressive:0,showEffectOn:"render",rippleEffect:{period:4,scale:2.5,brushType:"fill"},symbolSize:10}});h4=n})(),function(){if(g4)return f4;g4=1;var t=c$(),e=S$(),n=function(){if(p4)return d4;p4=1;var t=IW(),e=ZK().createSymbol,n=FX().Group,i=qX().parsePercent,r=w$(),o=3;function a(e){return t.isArray(e)||(e=[+e,+e]),e}function s(t,e){var n=e.rippleEffectColor||e.color;t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?n:null,fill:"fill"===e.brushType?n:null}})})}function l(t,e){n.call(this);var i=new r(t,e),o=new n;this.add(i),this.add(o),o.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}var u=l.prototype;u.stopEffectAnimation=function(){this.childAt(1).removeAll()},u.startEffectAnimation=function(t){for(var n=t.symbolType,i=t.color,r=this.childAt(1),a=0;a "))},preventIncremental:function(){return!!this.get("effect.show")},getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}}});m4=h})(),function(){if(L4)return D4;L4=1,gW().__DEV__;var t=c$(),e=T2(),n=W4(),i=I2(),r=U4(),o=function(){if(M4)return S4;M4=1;var t=U4(),e=IW(),n=W4(),i=PW();function r(t,e,i){n.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}var o=r.prototype;o.createLine=function(e,n,i){return new t(e,n,i)},o.updateAnimationPoints=function(t,e){this._points=e;for(var n=[0],r=0,o=1;o=0&&!(r[s]<=e);s--);s=Math.min(s,o-2)}else{for(var s=a;se);s++);s=Math.min(s-1,o-2)}i.lerp(t.position,n[s],n[s+1],(e-r[s])/(r[s+1]-r[s]));var l=n[s+1][0]-n[s][0],u=n[s+1][1]-n[s][1];t.rotation=-Math.atan2(u,l)-Math.PI/2,this._lastFrame=s,this._lastFramePercent=e,t.ignore=!1}},e.inherits(r,n);var a=r;return S4=a}(),a=function(){if(T4)return I4;T4=1;var t=FX(),e=GX(),n=iZ(),i=uZ(),r=t.extendShape({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(t,e){var n=e.segs,i=e.curveness;if(e.polyline)for(var r=0;r0){t.moveTo(n[r++],n[r++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*i,d=(l+h)/2-(u-s)*i;t.quadraticCurveTo(c,d,u,h)}else t.lineTo(u,h)}},findDataIndex:function(t,e){var r=this.shape,o=r.segs,a=r.curveness;if(r.polyline)for(var s=0,l=0;l0)for(var h=o[l++],c=o[l++],d=1;d0){var g=(h+p)/2-(c-f)*a,v=(c+f)/2-(p-h)*a;if(i.containStroke(h,c,g,v,p,f))return s}else if(n.containStroke(h,c,p,f))return s;s++}return-1}});function o(){this.group=new t.Group}var a=o.prototype;a.isPersistent=function(){return!this._incremental},a.updateData=function(t){this.group.removeAll();var e=new r({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},a.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new e({silent:!0})),this.group.add(this._incremental)):this._incremental=null},a.incrementalUpdate=function(t,e){var n=new r;n.setShape({segs:e.getLayout("linesPoints")}),this._setCommon(n,e,!!this._incremental),this._incremental?this._incremental.addDisplayable(n,!0):(n.rectHover=!0,n.cursor="default",n.__startIndex=t.start,this.group.add(n))},a.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},a._setCommon=function(t,e,n){var i=e.hostModel;t.setShape({polyline:i.get("polyline"),curveness:i.get("lineStyle.curveness")}),t.useStyle(i.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var r=e.getVisual("color");r&&t.setStyle("stroke",r),t.setStyle("fill"),n||(t.seriesIndex=i.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var n=t.findDataIndex(e.offsetX,e.offsetY);n>0&&(t.dataIndex=n+t.__startIndex)}))},a._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var s=o;return I4=s}(),s=Y4(),l=W$().createClipPath,u=t.extendChartView({type:"lines",init:function(){},render:function(t,e,n){var i=t.getData(),r=this._updateLineDraw(i,t),o=t.get("zlevel"),a=t.get("effect.trailLength"),s=n.getZr(),u="svg"===s.painter.getType();u||s.painter.getLayer(o).clear(!0),null==this._lastZlevel||u||s.configLayer(this._lastZlevel,{motionBlur:!1}),this._showEffect(t)&&a&&(u||s.configLayer(o,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(a/10+.9,1),0)})),r.updateData(i);var h=t.get("clip",!0)&&l(t.coordinateSystem,!1,t);h?this.group.setClipPath(h):this.group.removeClipPath(),this._lastZlevel=o,this._finished=!0},incrementalPrepareRender:function(t,e,n){var i=t.getData();this._updateLineDraw(i,t).incrementalPrepareUpdate(i),this._clearLayer(n),this._finished=!1},incrementalRender:function(t,e,n){this._lineDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,n){var i=t.getData(),r=t.pipelineContext;if(!this._finished||r.large||r.progressiveRender)return{update:!0};var o=s.reset(t);o.progress&&o.progress({start:0,end:i.count()},i),this._lineDraw.updateLayout(),this._clearLayer(n)},_updateLineDraw:function(t,s){var l=this._lineDraw,u=this._showEffect(s),h=!!s.get("polyline"),c=s.pipelineContext.large;return l&&u===this._hasEffet&&h===this._isPolyline&&c===this._isLargeDraw||(l&&l.remove(),l=this._lineDraw=c?new a:new e(h?u?o:r:u?n:i),this._hasEffet=u,this._isPolyline=h,this._isLargeDraw=c,this.group.removeAll()),this.group.add(l.group),l},_showEffect:function(t){return!!t.get("effect.show")},_clearLayer:function(t){var e=t.getZr();"svg"===e.painter.getType()||null==this._lastZlevel||e.painter.getLayer(this._lastZlevel).clear(!0)},remove:function(t,e){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(e)},dispose:function(){}});D4=u}();var e=Y4(),n=Z4();t.registerLayout(e),t.registerVisual(n)}(),G4||(G4=1,function(){if(N4)return R4;N4=1;var t=rq(),e=fK(),n=zj(),i=t.extend({type:"series.heatmap",getInitialData:function(t,n){return e(this.getSource(),this,{generateCoord:"value"})},preventIncremental:function(){var t=n.get(this.get("coordinateSystem"));if(t&&t.dimensions)return"lng"===t.dimensions[0]&&"lat"===t.dimensions[1]},defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,geoIndex:0,blurSize:30,pointSize:20,maxOpacity:1,minOpacity:0}});R4=i}(),function(){if(B4)return V4;B4=1,gW().__DEV__;var t=c$(),e=FX(),n=X4(),i=IW();function r(t,e,n){var r=t[1]-t[0],o=(e=i.map(e,function(e){return{interval:[(e.interval[0]-t[0])/r,(e.interval[1]-t[0])/r]}})).length,a=0;return function(t){for(var i=a;i=0;i--){var r;if((r=e[i].interval)[0]<=t&&t<=r[1]){a=i;break}}return i>=0&&i=e[0]&&t<=e[1]}}function a(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}var s=t.extendChartView({type:"heatmap",render:function(t,e,n){var i;e.eachComponent("visualMap",function(e){e.eachTargetSeries(function(n){n===t&&(i=e)})}),this.group.removeAll(),this._incrementalDisplayable=null;var r=t.coordinateSystem;"cartesian2d"===r.type||"calendar"===r.type?this._renderOnCartesianAndCalendar(t,n,0,t.getData().count()):a(r)&&this._renderOnGeo(r,t,i,n)},incrementalPrepareRender:function(t,e,n){this.group.removeAll()},incrementalRender:function(t,e,n,i){e.coordinateSystem&&this._renderOnCartesianAndCalendar(e,i,t.start,t.end,!0)},_renderOnCartesianAndCalendar:function(t,n,r,o,a){var s,l,u=t.coordinateSystem;if("cartesian2d"===u.type){var h=u.getAxis("x"),c=u.getAxis("y");s=h.getBandWidth(),l=c.getBandWidth()}for(var d=this.group,p=t.getData(),f="itemStyle",g="emphasis.itemStyle",v="label",m="emphasis.label",y=t.getModel(f).getItemStyle(["color"]),x=t.getModel(g).getItemStyle(),_=t.getModel(v),b=t.getModel(m),w=u.type,S="cartesian2d"===w?[p.mapDimension("x"),p.mapDimension("y"),p.mapDimension("value")]:[p.mapDimension("time"),p.mapDimension("value")],M=r;M0?1:a<0?-1:0}function f(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function g(t,n,i,r,a,s,l,u,h,c){var d=h.valueDim,p=h.categoryDim,f=Math.abs(i[p.wh]),g=t.getItemVisual(n,"symbolSize");e.isArray(g)?g=g.slice():(null==g&&(g="100%"),g=[g,g]),g[p.index]=o(g[p.index],f),g[d.index]=o(g[d.index],r?f:Math.abs(s)),c.symbolSize=g,(c.symbolScale=[g[0]/u,g[1]/u])[d.index]*=(h.isHorizontal?-1:1)*l}function v(t,e,n,i,r){var o=t.get(l)||0;o&&(h.attr({scale:e.slice(),rotation:n}),h.updateTransform(),o/=h.getLineScale(),o*=e[i.valueDim.index]),r.valueLineWidth=o}function m(t,n,i,r,s,l,u,h,c,d,p,f){var g=p.categoryDim,v=p.valueDim,m=f.pxSign,y=Math.max(n[v.index]+h,0),x=y;if(r){var _=Math.abs(c),b=e.retrieve(t.get("symbolMargin"),"15%")+"",w=!1;b.lastIndexOf("!")===b.length-1&&(w=!0,b=b.slice(0,b.length-1)),b=o(b,n[v.index]);var S=Math.max(y+2*b,0),M=w?0:2*b,I=a(r),T=I?r:R((_+M)/S);S=y+2*(b=(_-T*y)/2/(w?T:T-1)),M=w?0:2*b,I||"fixed"===r||(T=d?R((Math.abs(d)+M)/S):0),x=T*S-M,f.repeatTimes=T,f.symbolMargin=b}var C=m*(x/2),A=f.pathPosition=[];A[g.index]=i[g.wh]/2,A[v.index]="start"===u?C:"end"===u?c-C:c/2,l&&(A[0]+=l[0],A[1]+=l[1]);var D=f.bundlePosition=[];D[g.index]=i[g.xy],D[v.index]=i[v.xy];var L=f.barRectShape=e.extend({},i);L[v.wh]=m*Math.max(Math.abs(i[v.wh]),Math.abs(A[v.index]+C)),L[g.wh]=i[g.wh];var k=f.clipShape={};k[g.xy]=-i[g.xy],k[g.wh]=p.ecSize[g.wh],k[v.xy]=0,k[v.wh]=i[v.wh]}function y(t){var e=t.symbolPatternSize,n=i(t.symbolType,-e/2,-e/2,e,e,t.color);return n.attr({culling:!0}),"image"!==n.type&&n.setStyle({strokeNoScale:!0}),n}function x(t,e,n,i){var r=t.__pictorialBundle,o=n.symbolSize,a=n.valueLineWidth,s=n.pathPosition,l=e.valueDim,u=n.repeatTimes||0,h=0,c=o[e.valueDim.index]+a+2*n.symbolMargin;for(k(t,function(t){t.__pictorialAnimationIndex=h,t.__pictorialRepeatTimes=u,h0:i<0)&&(r=u-1-t),e[l.index]=c*(r-u/2+.5)+s[l.index],{position:e,scale:n.symbolScale.slice(),rotation:n.rotation}}function g(){k(t,function(t){t.trigger("emphasis")})}function v(){k(t,function(t){t.trigger("normal")})}}function _(t,e,n,i){var r=t.__pictorialBundle,o=t.__pictorialMainPath;function a(){this.trigger("emphasis")}function s(){this.trigger("normal")}o?P(o,null,{position:n.pathPosition.slice(),scale:n.symbolScale.slice(),rotation:n.rotation},n,i):(o=t.__pictorialMainPath=y(n),r.add(o),P(o,{position:n.pathPosition.slice(),scale:[0,0],rotation:n.rotation},{scale:n.symbolScale.slice()},n,i),o.on("mouseover",a).on("mouseout",s)),T(o,n)}function b(t,i,r){var o=e.extend({},i.barRectShape),a=t.__pictorialBarRect;a?P(a,null,{shape:o},i,r):(a=t.__pictorialBarRect=new n.Rect({z2:2,shape:o,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}}),t.add(a))}function w(t,i,r,o){if(r.symbolClip){var a=t.__pictorialClipPath,s=e.extend({},r.clipShape),l=i.valueDim,u=r.animationModel,h=r.dataIndex;if(a)n.updateProps(a,{shape:s},u,h);else{s[l.wh]=0,a=new n.Rect({shape:s}),t.__pictorialBundle.setClipPath(a),t.__pictorialClipPath=a;var c={};c[l.wh]=r.clipShape[l.wh],n[o?"updateProps":"initProps"](a,{shape:c},u,h)}}}function S(t,e){var n=t.getItemModel(e);return n.getAnimationDelayParams=M,n.isAnimationEnabled=I,n}function M(t){return{index:t.__pictorialAnimationIndex,count:t.__pictorialRepeatTimes}}function I(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function T(t,e){t.off("emphasis").off("normal");var n=e.symbolScale.slice();e.hoverAnimation&&t.on("emphasis",function(){this.animateTo({scale:[1.1*n[0],1.1*n[1]]},400,"elasticOut")}).on("normal",function(){this.animateTo({scale:n.slice()},400,"elasticOut")})}function C(t,e,i,r){var o=new n.Group,a=new n.Group;return o.add(a),o.__pictorialBundle=a,a.attr("position",i.bundlePosition.slice()),i.symbolRepeat?x(o,e,i):_(o,e,i),b(o,i,r),w(o,e,i,r),o.__pictorialShapeStr=L(t,i),o.__pictorialSymbolMeta=i,o}function A(t,e,i){var r=i.animationModel,o=i.dataIndex,a=t.__pictorialBundle;n.updateProps(a,{position:i.bundlePosition.slice()},r,o),i.symbolRepeat?x(t,e,i,!0):_(t,e,i,!0),b(t,i,!0),w(t,e,i,!0)}function D(t,i,r,o){var a=o.__pictorialBarRect;a&&(a.style.text=null);var s=[];k(o,function(t){s.push(t)}),o.__pictorialMainPath&&s.push(o.__pictorialMainPath),o.__pictorialClipPath&&(r=null),e.each(s,function(t){n.updateProps(t,{scale:[0,0]},r,i,function(){o.parent&&o.parent.remove(o)})}),t.setItemGraphicEl(i,null)}function L(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function k(t,n,i){e.each(t.__pictorialBundle.children(),function(e){e!==t.__pictorialBarRect&&n.call(i,e)})}function P(t,e,i,r,o,a){e&&t.attr(e),r.symbolClip&&!o?i&&t.attr(i):i&&n[o?"updateProps":"initProps"](t,i,r.animationModel,r.dataIndex,a)}function O(t,i,r){var o=r.color,a=r.dataIndex,l=r.itemModel,u=l.getModel("itemStyle").getItemStyle(["color"]),h=l.getModel("emphasis.itemStyle").getItemStyle(),c=l.getShallow("cursor");k(t,function(t){t.setColor(o),t.setStyle(e.defaults({fill:o,opacity:r.opacity},u)),n.setHoverStyle(t,h),c&&(t.cursor=c),t.z2=r.z2});var d={},p=i.valueDim.posDesc[+(r.boundingLength>0)],f=t.__pictorialBarRect;s(f.style,d,l,o,i.seriesModel,a,p),n.setHoverStyle(f,d)}function R(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}var N=c;K4=N}();var n=BK().layout,i=U$();zJ(),t.registerLayout(e.curry(n,"pictorialBar")),t.registerVisual(i("pictorialBar","roundRect"))}(),function(){if(j6)return o6;j6=1;var t=c$();Q6(),function(){if(F6)return G6;F6=1;var t=rq(),e=aK(),n=nK().getDimensionTypeByAxis,i=rK(),r=IW(),o=PY().groupData,a=sj().encodeHTML,s=IQ(),l=2,u=t.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){u.superApply(this,"init",arguments),this.legendVisualProvider=new s(r.bind(this.getData,this),r.bind(this.getRawData,this))},fixData:function(t){var e=t.length,n={},i=o(t,function(t){return n.hasOwnProperty(t[0])||(n[t[0]]=-1),t[2]}),r=[];i.buckets.each(function(t,e){r.push({name:e,dataList:t})});for(var a=r.length,s=0;so&&(o=u),i.push(u)}for(var h=0;ho&&(o=d)}return a.y0=r,a.max=o,a}return U6=n}(),n=t8(),i=LQ();t.registerLayout(e),t.registerVisual(n),t.registerProcessor(i("themeRiver"))}(),function(){if(h8)return c8;h8=1;var t=c$(),e=IW();(function(){if(n8)return e8;n8=1;var t=IW(),e=rq(),n=S1(),i=HX(),r=U1().wrapTreePathInfo,o=e.extend({type:"series.sunburst",_viewRoot:null,getInitialData:function(e,r){var o={name:e.name,children:e.data};a(o);var s=t.map(e.levels||[],function(t){return new i(t,this,r)},this),l=n.createTree(o,this,u);function u(t){t.wrapMethod("getItemModel",function(t,e){var n=l.getNodeByDataIndex(e),i=s[n.depth];return i&&(t.parentModel=i),t})}return l.data},optionUpdated:function(){this.resetViewRoot()},getDataParams:function(t){var n=e.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return n.treePathInfo=r(i,this),n},defaultOption:{zlevel:0,z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,percentPrecision:2,stillShowZeroSum:!0,highlightPolicy:"descendant",nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},highlight:{itemStyle:{opacity:1}},downplay:{itemStyle:{opacity:.5},label:{opacity:.6}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicOut",data:[],levels:[],sort:"desc"},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}});function a(e){var n=0;t.each(e.children,function(e){a(e);var i=e.value;t.isArray(i)&&(i=i[0]),n+=i});var i=e.value;t.isArray(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=n),i<0&&(i=0),t.isArray(e.value)?e.value[0]=i:e.value=i}e8=o})(),function(){if(a8)return o8;a8=1;var t=IW(),e=sq(),n=function(){if(r8)return i8;r8=1;var t=IW(),e=FX(),n={NONE:"none",ANCESTOR:"ancestor",SELF:"self"},i=2,r=4;function o(t,n,o){e.Group.call(this);var a=new e.Sector({z2:i});a.seriesIndex=n.seriesIndex;var s=new e.Text({z2:r,silent:t.getModel("label").get("silent")});function l(){s.ignore=s.hoverIgnore}function u(){s.ignore=s.normalIgnore}this.add(a),this.add(s),this.updateData(!0,t,"normal",n,o),this.on("emphasis",l).on("normal",u).on("mouseover",l).on("mouseout",u)}var a=o.prototype;a.updateData=function(n,i,r,o,a){this.node=i,i.piece=this,o=o||this._seriesModel,a=a||this._ecModel;var s=this.childAt(0);s.dataIndex=i.dataIndex;var u=i.getModel(),h=i.getLayout(),d=t.extend({},h);d.label=null;var p=l(i,o,a);c(i,o,p);var f,g=u.getModel("itemStyle").getItemStyle();if("normal"===r)f=g;else{var v=u.getModel(r+".itemStyle").getItemStyle();f=t.merge(v,g)}f=t.defaults({lineJoin:"bevel",fill:f.fill||p},f),n?(s.setShape(d),s.shape.r=h.r0,e.updateProps(s,{shape:{r:h.r}},o,i.dataIndex),s.useStyle(f)):"object"==typeof f.fill&&f.fill.type||"object"==typeof s.style.fill&&s.style.fill.type?(e.updateProps(s,{shape:d},o),s.useStyle(f)):e.updateProps(s,{shape:d,style:f},o),this._updateLabel(o,p,r);var m=u.getShallow("cursor");if(m&&s.attr("cursor",m),n){var y=o.getShallow("highlightPolicy");this._initEvents(s,i,o,y)}this._seriesModel=o||this._seriesModel,this._ecModel=a||this._ecModel,e.setHoverStyle(this)},a.onEmphasis=function(t){var e=this;this.node.hostTree.root.eachNode(function(i){i.piece&&(e.node===i?i.piece.updateData(!1,i,"emphasis"):h(i,e.node,t)?i.piece.childAt(0).trigger("highlight"):t!==n.NONE&&i.piece.childAt(0).trigger("downplay"))})},a.onNormal=function(){this.node.hostTree.root.eachNode(function(t){t.piece&&t.piece.updateData(!1,t,"normal")})},a.onHighlight=function(){this.updateData(!1,this.node,"highlight")},a.onDownplay=function(){this.updateData(!1,this.node,"downplay")},a._updateLabel=function(n,i,r){var o=this.node.getModel(),a=o.getModel("label"),s="normal"===r||"emphasis"===r?a:o.getModel(r+".label"),l=o.getModel("emphasis.label"),u=s.get("formatter")?r:"normal",h=t.retrieve(n.getFormattedLabel(this.node.dataIndex,u,null,null,"label"),this.node.name);!1===T("show")&&(h="");var c=this.node.getLayout(),d=s.get("minAngle");null==d&&(d=a.get("minAngle")),d=d/180*Math.PI;var p=c.endAngle-c.startAngle;null!=d&&Math.abs(p)Math.PI/2?"right":"left"):b&&"center"!==b?"left"===b?(g=c.r0+_,v>Math.PI/2&&(b="right")):"right"===b&&(g=c.r-_,v>Math.PI/2&&(b="left")):(g=(c.r+c.r0)/2,b="center"),f.attr("style",{text:h,textAlign:b,textVerticalAlign:T("verticalAlign")||"middle",opacity:T("opacity")});var w=g*m+c.cx,S=g*y+c.cy;f.attr("position",[w,S]);var M=T("rotate"),I=0;function T(t){var e=s.get(t);return null==e?a.get(t):e}"radial"===M?(I=-v)<-Math.PI/2&&(I+=Math.PI):"tangential"===M?(I=Math.PI/2-v)>Math.PI/2?I-=Math.PI:I<-Math.PI/2&&(I+=Math.PI):"number"==typeof M&&(I=M*Math.PI/180),f.attr("rotation",I)},a._initEvents=function(t,e,n,i){t.off("mouseover").off("mouseout").off("emphasis").off("normal");var r=this,o=function(){r.onEmphasis(i)},a=function(){r.onNormal()},s=function(){r.onDownplay()},l=function(){r.onHighlight()};n.isAnimationEnabled()&&t.on("mouseover",o).on("mouseout",a).on("emphasis",o).on("normal",a).on("downplay",s).on("highlight",l)},t.inherits(o,e.Group);var s=o;function l(t,e,n){var i=t.getVisual("color"),r=t.getVisual("visualMeta");r&&0!==r.length||(i=null);var o=t.getModel("itemStyle").get("color");if(o)return o;if(i)return i;if(0===t.depth)return n.option.color[0];var a=n.option.color.length;return o=n.option.color[u(t)%a]}function u(e){for(var n=e;n.depth>1;)n=n.parentNode;var i=e.getAncestors()[0];return t.indexOf(i.children,n)}function h(t,e,i){return i!==n.NONE&&(i===n.SELF?t===e:i===n.ANCESTOR?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}function c(t,e,n){e.getData().setItemVisual(t.dataIndex,"color",n)}return i8=s}(),i=Yq(),r=sj().windowOpen,o="sunburstRootToNode",a=e.extend({type:"sunburst",init:function(){},render:function(e,r,o,a){var s=this;this.seriesModel=e,this.api=o,this.ecModel=r;var l=e.getData(),u=l.tree.root,h=e.getViewRoot(),c=this.group,d=e.get("renderLabelForZeroData"),p=[];h.eachNode(function(t){p.push(t)});var f=this._oldChildren||[];if(m(p,f),_(u,h),a&&a.highlight&&a.highlight.piece){var g=e.getShallow("highlightPolicy");a.highlight.piece.onEmphasis(g)}else if(a&&a.unhighlight){var v=this.virtualPiece;!v&&u.children.length&&(v=u.children[0].piece),v&&v.onNormal()}function m(e,n){function r(t){return t.getId()}function o(t,i){y(null==t?null:e[t],null==i?null:n[i])}0===e.length&&0===n.length||new i(n,e,r,r).add(o).update(o).remove(t.curry(o,null)).execute()}function y(t,i){if(d||!t||t.getValue()||(t=null),t!==u&&i!==u)if(i&&i.piece)t?(i.piece.updateData(!1,t,"normal",e,r),l.setItemGraphicEl(t.dataIndex,i.piece)):x(i);else if(t){var o=new n(t,e,r);c.add(o),l.setItemGraphicEl(t.dataIndex,o)}}function x(t){t&&t.piece&&(c.remove(t.piece),t.piece=null)}function _(t,i){if(i.depth>0){s.virtualPiece?s.virtualPiece.updateData(!1,t,"normal",e,r):(s.virtualPiece=new n(t,e,r),c.add(s.virtualPiece)),i.piece._onclickEvent&&i.piece.off("click",i.piece._onclickEvent);var o=function(t){s._rootToNode(i.parentNode)};i.piece._onclickEvent=o,s.virtualPiece.on("click",o)}else s.virtualPiece&&(c.remove(s.virtualPiece),s.virtualPiece=null)}this._initEvents(),this._oldChildren=p},dispose:function(){},_initEvents:function(){var t=this,e=function(e){var n=!1;t.seriesModel.getViewRoot().eachNode(function(i){if(!n&&i.piece&&i.piece.childAt(0)===e.target){var o=i.getModel().get("nodeClick");if("rootToNode"===o)t._rootToNode(i);else if("link"===o){var a=i.getModel(),s=a.get("link");if(s){var l=a.get("target",!0)||"_blank";r(s,l)}}n=!0}})};this.group._onclickEvent&&this.group.off("click",this.group._onclickEvent),this.group.on("click",e),this.group._onclickEvent=e},_rootToNode:function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:o,from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},containPoint:function(t,e){var n=e.getData().getItemLayout(0);if(n){var i=t[0]-n.cx,r=t[1]-n.cy,o=Math.sqrt(i*i+r*r);return o<=n.r&&o>=n.r0}}}),s=a;o8=s}(),function(){if(s8)return d8;s8=1;var t=c$(),e=U1(),n="sunburstRootToNode";t.registerAction({type:n,update:"updateView"},function(t,i){function r(i,r){var o=e.retrieveTargetInfo(t,[n],i);if(o){var a=i.getViewRoot();a&&(t.direction=e.aboveViewRoot(a,o.node)?"rollUp":"drillDown"),i.resetViewRoot(o.node)}}i.eachComponent({mainType:"series",subType:"sunburst",query:t},r)});var i="sunburstHighlight";t.registerAction({type:i,update:"updateView"},function(t,n){function r(n,r){var o=e.retrieveTargetInfo(t,[i],n);o&&(t.highlight=o.node)}n.eachComponent({mainType:"series",subType:"sunburst",query:t},r)});var r="sunburstUnhighlight";t.registerAction({type:r,update:"updateView"},function(t,e){function n(e,n){t.unhighlight=!0}e.eachComponent({mainType:"series",subType:"sunburst",query:t},n)})}();var n=CQ(),i=p8(),r=LQ();t.registerVisual(e.curry(n,"sunburst")),t.registerLayout(e.curry(i,"sunburst")),t.registerProcessor(e.curry(r,"sunburst"))}(),function(){if(M8)return A8;M8=1,gW().__DEV__;var t=IW(),e=FX(),n=b$().getDefaultLabel,i=fK(),r=BK().getLayoutOnAxis,o=Yq(),a=rq(),s=HX(),l=sq(),u=W$().createClipPath,h=function(){if(g8)return f8;g8=1;var t=IW();function e(e,n){return n=n||[0,0],t.map(["x","y"],function(t,i){var r=this.getAxis(t),o=n[i],a=e[i]/2;return"category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a))},this)}function n(n){var i=n.grid.getRect();return{coordSys:{type:"cartesian2d",x:i.x,y:i.y,width:i.width,height:i.height},api:{coord:function(t){return n.dataToPoint(t)},size:t.bind(e,n)}}}return f8=n}(),c=function(){if(m8)return v8;m8=1;var t=IW();function e(e,n){return n=n||[0,0],t.map([0,1],function(t){var i=n[t],r=e[t]/2,o=[],a=[];return o[t]=i-r,a[t]=i+r,o[1-t]=a[1-t]=n[1-t],Math.abs(this.dataToPoint(o)[t]-this.dataToPoint(a)[t])},this)}function n(n){var i=n.getBoundingRect();return{coordSys:{type:"geo",x:i.x,y:i.y,width:i.width,height:i.height,zoom:n.getZoom()},api:{coord:function(t){return n.dataToPoint(t)},size:t.bind(e,n)}}}return v8=n}(),d=function(){if(x8)return y8;x8=1;var t=IW();function e(t,e){var n=this.getAxis(),i=e instanceof Array?e[0]:e,r=(t instanceof Array?t[0]:t)/2;return"category"===n.type?n.getBandWidth():Math.abs(n.dataToCoord(i-r)-n.dataToCoord(i+r))}function n(n){var i=n.getRect();return{coordSys:{type:"singleAxis",x:i.x,y:i.y,width:i.width,height:i.height},api:{coord:function(t){return n.dataToPoint(t)},size:t.bind(e,n)}}}return y8=n}(),p=function(){if(b8)return _8;b8=1;var t=IW();function e(e,n){return t.map(["Radius","Angle"],function(t,i){var r=this["get"+t+"Axis"](),o=n[i],a=e[i]/2,s="dataTo"+t,l="category"===r.type?r.getBandWidth():Math.abs(r[s](o-a)-r[s](o+a));return"Angle"===t&&(l=l*Math.PI/180),l},this)}function n(n){var i=n.getRadiusAxis(),r=n.getAngleAxis(),o=i.getExtent();return o[0]>o[1]&&o.reverse(),{coordSys:{type:"polar",cx:n.cx,cy:n.cy,r:o[1],r0:o[0]},api:{coord:t.bind(function(t){var e=i.dataToRadius(t[0]),o=r.dataToAngle(t[1]),a=n.coordToPoint([e,o]);return a.push(e,o*Math.PI/180),a}),size:t.bind(e,n)}}}return _8=n}(),f=function(){if(S8)return w8;function t(t){var e=t.getRect(),n=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:n.start,end:n.end,weeks:n.weeks,dayCount:n.allDay}},api:{coord:function(e,n){return t.dataToPoint(e,n)}}}}return S8=1,w8=t}(),g=e.CACHED_LABEL_STYLE_PROPERTIES,v=["itemStyle"],m=["emphasis","itemStyle"],y=["label"],x=["emphasis","label"],_="e\0\0",b={cartesian2d:h,geo:c,singleAxis:d,polar:p,calendar:f};function w(t){var n,i=t.type;if("path"===i){var r=t.shape,o=null!=r.width&&null!=r.height?{x:r.x||0,y:r.y||0,width:r.width,height:r.height}:null,a=E(r);(n=e.makePath(a,null,o,r.layout||"center")).__customPathData=a}else if("image"===i)(n=new e.Image({})).__customImagePath=t.style.image;else if("text"===i)(n=new e.Text({})).__customText=t.style.text;else if("group"===i)n=new e.Group;else{if("compoundPath"===i)throw new Error('"compoundPath" is not supported yet.');n=new(e.getShapeClass(i))}return n.__customGraphicType=i,n.name=t.name,n}function S(n,i,r,o,a,s,l){var u={},h=r.style||{};if(r.shape&&(u.shape=t.clone(r.shape)),r.position&&(u.position=r.position.slice()),r.scale&&(u.scale=r.scale.slice()),r.origin&&(u.origin=r.origin.slice()),r.rotation&&(u.rotation=r.rotation),"image"===n.type&&r.style){var c=u.style={};t.each(["x","y","width","height"],function(t){M(t,c,h,n.style,s)})}if("text"===n.type&&r.style&&(c=u.style={},t.each(["x","y"],function(t){M(t,c,h,n.style,s)}),!h.hasOwnProperty("textFill")&&h.fill&&(h.textFill=h.fill),!h.hasOwnProperty("textStroke")&&h.stroke&&(h.textStroke=h.stroke)),"group"!==n.type&&(n.useStyle(h),s)){n.style.opacity=0;var d=h.opacity;null==d&&(d=1),e.initProps(n,{style:{opacity:d}},o,i)}s?n.attr(u):e.updateProps(n,u,o,i),r.hasOwnProperty("z2")&&n.attr("z2",r.z2||0),r.hasOwnProperty("silent")&&n.attr("silent",r.silent),r.hasOwnProperty("invisible")&&n.attr("invisible",r.invisible),r.hasOwnProperty("ignore")&&n.attr("ignore",r.ignore),r.hasOwnProperty("info")&&n.attr("info",r.info);var p=r.styleEmphasis;e.setElementHoverStyle(n,p),l&&e.setAsHighDownDispatcher(n,!1!==p)}function M(t,e,n,i,r){null==n[t]||r||(e[t]=n[t],n[t]=i[t])}function I(i,o,a,s){var l=i.get("renderItem"),u=i.coordinateSystem,h={};u&&(h=u.prepareCustoms?u.prepareCustoms():b[u.type](u));var c,d,p,f,g,_=t.defaults({getWidth:s.getWidth,getHeight:s.getHeight,getZr:s.getZr,getDevicePixelRatio:s.getDevicePixelRatio,value:I,style:C,styleEmphasis:A,visual:D,barLayout:L,currentSeriesIndices:k,font:P},h.api||{}),w={context:{},seriesId:i.id,seriesName:i.name,seriesIndex:i.seriesIndex,coordSys:h.coordSys,dataInsideLength:o.count(),encode:T(i.getData())},S=!0;return function(e,n){return c=e,S=!0,l&&l(t.defaults({dataIndexInside:e,dataIndex:o.getRawIndex(e),actionType:n?n.type:null},w),_)};function M(t){null==t&&(t=c),S&&(d=o.getItemModel(t),p=d.getModel(y),f=d.getModel(x),g=o.getItemVisual(t,"color"),S=!1)}function I(t,e){return null==e&&(e=c),o.get(o.getDimension(t||0),e)}function C(r,a){null==a&&(a=c),M(a);var s=d.getModel(v).getItemStyle();null!=g&&(s.fill=g);var l=o.getItemVisual(a,"opacity");null!=l&&(s.opacity=l);var u=r?O(r,p):p;return e.setTextStyle(s,u,null,{autoColor:g,isRectText:!0}),s.text=u.getShallow("show")?t.retrieve2(i.getFormattedLabel(a,"normal"),n(o,a)):null,r&&R(s,r),s}function A(r,a){null==a&&(a=c),M(a);var s=d.getModel(m).getItemStyle(),l=r?O(r,f):f;return e.setTextStyle(s,l,null,{isRectText:!0},!0),s.text=l.getShallow("show")?t.retrieve3(i.getFormattedLabel(a,"emphasis"),i.getFormattedLabel(a,"normal"),n(o,a)):null,r&&R(s,r),s}function D(t,e){return null==e&&(e=c),o.getItemVisual(e,t)}function L(e){if(u.getBaseAxis){var n=u.getBaseAxis();return r(t.defaults({axis:n},e),s)}}function k(){return a.getCurrentSeriesIndices()}function P(t){return e.getFont(t,a)}}function T(e){var n={};return t.each(e.dimensions,function(t,i){var r=e.getDimensionInfo(t);if(!r.isExtraCoord){var o=r.coordDim;(n[o]=n[o]||[])[r.coordDimIndex]=i}}),n}function C(t,e,n,i,r,o){return(t=A(t,e,n,i,r,o,!0))&&o.setItemGraphicEl(e,t),t}function A(t,e,n,i,r,o,a){var s=!n,l=(n=n||{}).type,u=n.shape,h=n.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&z(u)&&E(u)!==t.__customPathData||"image"===l&&V(h,"image")&&h.image!==t.__customImagePath||"text"===l&&V(u,"text")&&h.text!==t.__customText)&&(r.remove(t),t=null),!s){var c=!t;return!t&&(t=w(n)),S(t,e,n,i,o,c,a),"group"===l&&D(t,e,n,i,o),r.add(t),t}}function D(t,e,n,i,r){var o=n.children,a=o?o.length:0,s=n.$mergeChildren,l="byName"===s||n.diffChildrenByName,u=!1===s;if(a||l||u)if(l)L({oldChildren:t.children()||[],newChildren:o||[],dataIndex:e,animatableModel:i,group:t,data:r});else{u&&t.removeAll();for(var h=0;he[0]&&(e=e.slice().reverse());var i=t.coordToPoint([e[0],n]),r=t.coordToPoint([e[1],n]);return{x1:i[0],y1:i[1],x2:r[0],y2:r[1]}}function s(t){return t.getRadiusAxis().inverse?0:1}function l(t){var e=t[0],n=t[t.length-1];e&&n&&Math.abs(Math.abs(e.coord-n.coord)-360)<1e-4&&t.pop()}var u=i.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(e,n){if(this.group.removeAll(),e.get("show")){var i=e.axis,r=i.polar,a=r.getRadiusAxis().getExtent(),s=i.getTicksCoords(),u=i.getMinorTicksCoords(),h=t.map(i.getViewLabels(),function(e){return(e=t.clone(e)).coord=i.dataToCoord(e.tickValue),e});l(h),l(s),t.each(o,function(t){!e.get(t+".show")||i.scale.isBlank()&&"axisLine"!==t||this["_"+t](e,r,s,u,a,h)},this)}},_axisLine:function(t,n,i,r,o){var a,l=t.getModel("axisLine.lineStyle"),u=s(n),h=u?0:1;(a=0===o[h]?new e.Circle({shape:{cx:n.cx,cy:n.cy,r:o[u]},style:l.getLineStyle(),z2:1,silent:!0}):new e.Ring({shape:{cx:n.cx,cy:n.cy,r:o[u],r0:o[h]},style:l.getLineStyle(),z2:1,silent:!0})).style.fill=null,this.group.add(a)},_axisTick:function(n,i,r,o,l){var u=n.getModel("axisTick"),h=(u.get("inside")?-1:1)*u.get("length"),c=l[s(i)],d=t.map(r,function(t){return new e.Line({shape:a(i,[c,c+h],t.coord)})});this.group.add(e.mergePath(d,{style:t.defaults(u.getModel("lineStyle").getLineStyle(),{stroke:n.get("axisLine.lineStyle.color")})}))},_minorTick:function(n,i,r,o,l){if(o.length){for(var u=n.getModel("axisTick"),h=n.getModel("minorTick"),c=(u.get("inside")?-1:1)*h.get("length"),d=l[s(i)],p=[],f=0;fm?"left":"right",_=Math.abs(v[1]-y)/g<.3?"middle":v[1]>y?"top":"bottom";c&&c[h]&&c[h].textStyle&&(l=new n(c[h].textStyle,d,d.ecModel));var b=new e.Text({silent:r.isLabelSilent(i)});this.group.add(b),e.setTextStyle(b.style,l,{x:v[0],y:v[1],textFill:l.getTextColor()||i.get("axisLine.lineStyle.color"),text:t.formattedLabel,textAlign:x,textVerticalAlign:_}),f&&(b.eventData=r.makeAxisEventDataBase(i),b.eventData.targetType="axisLabel",b.eventData.value=t.rawLabel)},this)},_splitLine:function(n,i,r,o,s){var l=n.getModel("splitLine").getModel("lineStyle"),u=l.get("color"),h=0;u=u instanceof Array?u:[u];for(var c=[],d=0;dx?"left":"right",p=Math.abs(c[1]-_)/y<.3?"middle":c[1]>_?"top":"bottom"}return{position:c,align:d,verticalAlign:p}}var u={line:function(t,e,n,r,o){return"angle"===t.dim?{type:"Line",shape:i.makeLineShape(e.coordToPoint([r[0],n]),e.coordToPoint([r[1],n]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:n}}},shadow:function(t,e,n,r,o){var a=Math.max(1,t.getBandWidth()),s=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:i.makeSectorShape(e.cx,e.cy,r[0],r[1],(-n-a/2)*s,(a/2-n)*s)}:{type:"Sector",shape:i.makeSectorShape(e.cx,e.cy,n-a/2,n+a/2,0,2*Math.PI)}}};a.registerAxisPointerClass("PolarAxisPointer",s);var h=s;q8=h}(),t.registerLayout(e.curry(n,"bar")),t.extendComponentView({type:"polar"})}(),function(){if(o7)return m7;o7=1;var t=c$(),e=IW();function n(n,i){i.update="updateView",t.registerAction(i,function(t,i){var r={};return i.eachComponent({mainType:"geo",query:t},function(i){i[n](t.name);var o=i.coordinateSystem;e.each(o.regions,function(t){r[t.name]=i.isSelected(t.name)||!1})}),{selected:r,name:t.name}})}(function(){if(n7)return e7;n7=1;var t=IW(),e=PY(),n=uj(),i=HX(),r=MQ(),o=h1(),a=n.extend({type:"geo",coordinateSystem:null,layoutMode:"box",init:function(t){n.prototype.init.apply(this,arguments),e.defaultEmphasis(t,"label",["show"])},optionUpdated:function(){var e=this.option,n=this;e.regions=o.getFilledRegions(e.regions,e.map,e.nameMap),this._optionModelMap=t.reduce(e.regions||[],function(t,e){return e.name&&t.set(e.name,new i(e,n)),t},t.createHashMap()),this.updateSelectedMap(e.regions)},defaultOption:{zlevel:0,z:0,show:!0,left:"center",top:"center",aspectScale:null,silent:!1,map:"",boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",color:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},regions:[]},getRegionModel:function(t){return this._optionModelMap.get(t)||new i(null,this,this.ecModel)},getFormattedLabel:function(t,e){e=e||"normal";var n=this.getRegionModel(t).get(("normal"===e?"":e+".")+"label.formatter"),i={name:t};return"function"==typeof n?(i.status=e,n(i)):"string"==typeof n?n.replace("{a}",null!=t?t:""):void 0},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t}});t.mixin(a,r);var s=a;e7=s})(),h1(),function(){if(r7)return i7;r7=1;var t=F0(),e=c$(),n=e.extendComponentView({type:"geo",init:function(e,n){var i=new t(n,!0);this._mapDraw=i,this.group.add(i.group)},render:function(t,e,n,i){if(!i||"geoToggleSelect"!==i.type||i.from!==this.uid){var r=this._mapDraw;t.get("show")?r.draw(t,e,n,this,i):this._mapDraw.group.removeAll(),this.group.silent=t.get("silent")}},dispose:function(){this._mapDraw&&this._mapDraw.remove()}});i7=n}(),l1(),n("toggleSelected",{type:"geoToggleSelect",event:"geoselectchanged"}),n("select",{type:"geoSelect",event:"geoselected"}),n("unSelect",{type:"geoUnSelect",event:"geounselected"})}(),Q6(),x3(),d7||(d7=1,function(){if(s7)return a7;s7=1;var t=IW(),e=lj(),n=qX(),i=zj(),r=864e5;function o(t,e,n){this._model=t}function a(t,e,n,i){var r=n.calendarModel,o=n.seriesModel,a=r?r.coordinateSystem:o?o.coordinateSystem:null;return a===this?a[t](i):null}o.prototype={constructor:o,type:"calendar",dimensions:["time","value"],getDimensionsInfo:function(){return[{name:"time",type:"time"},"value"]},getRangeInfo:function(){return this._rangeInfo},getModel:function(){return this._model},getRect:function(){return this._rect},getCellWidth:function(){return this._sw},getCellHeight:function(){return this._sh},getOrient:function(){return this._orient},getFirstDayOfWeek:function(){return this._firstDayOfWeek},getDateInfo:function(t){var e=(t=n.parseDate(t)).getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var r=t.getDate();r=r<10?"0"+r:r;var o=t.getDay();return{y:e,m:i,d:r,day:o=Math.abs((o+7-this.getFirstDayOfWeek())%7),time:t.getTime(),formatedDate:e+"-"+i+"-"+r,date:t}},getNextNDay:function(t,e){return 0===(e=e||0)||(t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t)},update:function(n,i){this._firstDayOfWeek=+this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var r=this._rangeInfo.weeks||1,o=["width","height"],a=this._model.get("cellSize").slice(),s=this._model.getBoxLayoutParams(),l="horizontal"===this._orient?[r,7]:[7,r];t.each([0,1],function(t){c(a,t)&&(s[o[t]]=a[t]*l[t])});var u={width:i.getWidth(),height:i.getHeight()},h=this._rect=e.getLayoutRect(s,u);function c(t,e){return null!=t[e]&&"auto"!==t[e]}t.each([0,1],function(t){c(a,t)||(a[t]=h[o[t]]/l[t])}),this._sw=a[0],this._sh=a[1]},dataToPoint:function(e,n){t.isArray(e)&&(e=e[0]),null==n&&(n=!0);var i=this.getDateInfo(e),o=this._rangeInfo,a=i.formatedDate;if(n&&!(i.time>=o.start.time&&i.timea.end.time&&e.reverse(),e},_getRangeInfo:function(t){var e;(t=[this.getDateInfo(t[0]),this.getDateInfo(t[1])])[0].time>t[1].time&&(e=!0,t.reverse());var n=Math.floor(t[1].time/r)-Math.floor(t[0].time/r)+1,i=new Date(t[0].time),o=i.getDate(),a=t[1].date.getDate();i.setDate(o+n-1);var s=i.getDate();if(s!==a)for(var l=i.getTime()-t[1].time>0?1:-1;(s=i.getDate())!==a&&(i.getTime()-t[1].time)*l>0;)n-=l,i.setDate(s-l);var u=Math.floor((n+t[0].day+6)/7),h=e?1-u:u-1;return e&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:n,weeks:u,nthWeek:h,fweek:t[0].day,lweek:t[1].day}},_getDateByWeeksAndDay:function(t,e,n){var i=this._getRangeInfo(n);if(t>i.weeks||0===t&&ei.lweek)return!1;var r=7*(t-1)-i.fweek+e,o=new Date(i.start.time);return o.setDate(i.start.d+r),this.getDateInfo(o)}},o.dimensions=o.prototype.dimensions,o.getDimensionsInfo=o.prototype.getDimensionsInfo,o.create=function(t,e){var n=[];return t.eachComponent("calendar",function(t){var e=new o(t);n.push(e),t.coordinateSystem=e}),t.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=n[t.get("calendarIndex")||0])}),n},i.register("calendar",o);var s=o;a7=s}(),function(){if(u7)return l7;u7=1;var t=IW(),e=uj(),n=lj(),i=n.getLayoutParams,r=n.sizeCalculable,o=n.mergeLayoutParam,a=e.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},init:function(t,e,n,r){var o=i(t);a.superApply(this,"init",arguments),s(t,o)},mergeOption:function(t,e){a.superApply(this,"mergeOption",arguments),s(this.option,t)}});function s(e,n){var i=e.cellSize;t.isArray(i)?1===i.length&&(i[1]=i[0]):i=e.cellSize=[i,i];var a=t.map([0,1],function(t){return r(n,t)&&(i[t]="auto"),null!=i[t]&&"auto"!==i[t]});o(e,n,{type:"box",ignoreSize:a})}var l=a;l7=l}(),function(){if(c7)return h7;c7=1;var t=c$(),e=IW(),n=FX(),i=sj(),r=qX(),o={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},a={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]},s=t.extendComponentView({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,n){var i=this.group;i.removeAll();var r=t.coordinateSystem,o=r.getRangeInfo(),a=r.getOrient();this._renderDayRect(t,o,i),this._renderLines(t,o,a,i),this._renderYearText(t,o,a,i),this._renderMonthText(t,a,i),this._renderWeekText(t,o,a,i)},_renderDayRect:function(t,e,i){for(var r=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),a=r.getCellWidth(),s=r.getCellHeight(),l=e.start.time;l<=e.end.time;l=r.getNextNDay(l,1).time){var u=r.dataToRect([l],!1).tl,h=new n.Rect({shape:{x:u[0],y:u[1],width:a,height:s},cursor:"default",style:o});i.add(h)}},_renderLines:function(t,e,n,i){var r=this,o=t.coordinateSystem,a=t.getModel("splitLine.lineStyle").getLineStyle(),s=t.get("splitLine.show"),l=a.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var u=e.start,h=0;u.time<=e.end.time;h++){d(u.formatedDate),0===h&&(u=o.getDateInfo(e.start.y+"-"+e.start.m));var c=u.date;c.setMonth(c.getMonth()+1),u=o.getDateInfo(c)}function d(e){r._firstDayOfMonth.push(o.getDateInfo(e)),r._firstDayPoints.push(o.dataToRect([e],!1).tl);var l=r._getLinePointsOfOneWeek(t,e,n);r._tlpoints.push(l[0]),r._blpoints.push(l[l.length-1]),s&&r._drawSplitline(l,a,i)}d(o.getNextNDay(e.end.time,1).formatedDate),s&&this._drawSplitline(r._getEdgesPoints(r._tlpoints,l,n),a,i),s&&this._drawSplitline(r._getEdgesPoints(r._blpoints,l,n),a,i)},_getEdgesPoints:function(t,e,n){var i=[t[0].slice(),t[t.length-1].slice()],r="horizontal"===n?0:1;return i[0][r]=i[0][r]-e/2,i[1][r]=i[1][r]+e/2,i},_drawSplitline:function(t,e,i){var r=new n.Polyline({z2:20,shape:{points:t},style:e});i.add(r)},_getLinePointsOfOneWeek:function(t,e,n){var i=t.coordinateSystem;e=i.getDateInfo(e);for(var r=[],o=0;o<7;o++){var a=i.getNextNDay(e.time,o),s=i.dataToRect([a.time],!1);r[2*a.day]=s.tl,r[2*a.day+1]=s["horizontal"===n?"bl":"tr"]}return r},_formatterLabel:function(t,e){return"string"==typeof t&&t?i.formatTplSimple(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,n,i,r){e=e.slice();var o=["center","bottom"];"bottom"===i?(e[1]+=r,o=["center","top"]):"left"===i?e[0]-=r:"right"===i?(e[0]+=r,o=["center","top"]):e[1]-=r;var a=0;return"left"!==i&&"right"!==i||(a=Math.PI/2),{rotation:a,position:e,style:{textAlign:o[0],textVerticalAlign:o[1]}}},_renderYearText:function(t,e,i,r){var o=t.getModel("yearLabel");if(o.get("show")){var a=o.get("margin"),s=o.get("position");s||(s="horizontal"!==i?"top":"left");var l=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],u=(l[0][0]+l[1][0])/2,h=(l[0][1]+l[1][1])/2,c="horizontal"===i?0:1,d={top:[u,l[c][1]],bottom:[u,l[1-c][1]],left:[l[1-c][0],h],right:[l[c][0],h]},p=e.start.y;+e.end.y>+e.start.y&&(p=p+"-"+e.end.y);var f=o.get("formatter"),g={start:e.start.y,end:e.end.y,nameMap:p},v=this._formatterLabel(f,g),m=new n.Text({z2:30});n.setTextStyle(m.style,o,{text:v}),m.attr(this._yearTextPositionControl(m,d[s],i,s,a)),r.add(m)}},_monthTextPositionControl:function(t,e,n,i,r){var o="left",a="top",s=t[0],l=t[1];return"horizontal"===n?(l+=r,e&&(o="center"),"start"===i&&(a="bottom")):(s+=r,e&&(a="middle"),"start"===i&&(o="right")),{x:s,y:l,textAlign:o,textVerticalAlign:a}},_renderMonthText:function(t,i,r){var a=t.getModel("monthLabel");if(a.get("show")){var s=a.get("nameMap"),l=a.get("margin"),u=a.get("position"),h=a.get("align"),c=[this._tlpoints,this._blpoints];e.isString(s)&&(s=o[s.toUpperCase()]||[]);var d="start"===u?0:1,p="horizontal"===i?0:1;l="start"===u?-l:l;for(var f="center"===h,g=0;g=0;h--)null==a[h]?a.splice(h,1):delete a[h].$action},_flatten:function(t,n,i){e.each(t,function(t){if(t){i&&(t.parentOption=i),n.push(t);var e=t.children;"group"===t.type&&e&&this._flatten(e,n,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});function l(t,e,n,r){var o=n.type,s=new(a.hasOwnProperty(o)?a[o]:i.getShapeClass(o))(n);e.add(s),r.set(t,s),s.__ecGraphicId=t}function u(t,e){var n=t&&t.parent;n&&("group"===t.type&&t.traverse(function(t){u(t,e)}),e.removeKey(t.__ecGraphicId),n.remove(t))}function h(t){return t=e.extend({},t),e.each(["id","parentId","$action","hv","bounding"].concat(r.LOCATION_PARAMS),function(e){delete t[e]}),t}function c(t,n){var i;return e.each(n,function(e){null!=t[e]&&"auto"!==t[e]&&(i=!0)}),i}function d(t,e){var n=t.exist;if(e.id=t.keyInfo.id,!e.type&&n&&(e.type=n.type),null==e.parentId){var i=e.parentOption;i?e.parentId=i.id:n&&(e.parentId=n.parentId)}e.parentOption=null}function p(t,n,i){var o=e.extend({},i),a=t[n],s=i.$action||"merge";"merge"===s?a?(e.merge(a,o,!0),r.mergeLayoutParam(a,o,{ignoreSize:!0}),r.copyLayoutParams(i,a)):t[n]=o:"replace"===s?t[n]=o:"remove"===s&&a&&(t[n]=null)}function f(t,e){t&&(t.hv=e.hv=[c(e,["left","right"]),c(e,["top","bottom"])],"group"===t.type&&(null==t.width&&(t.width=e.width=0),null==t.height&&(t.height=e.height=0)))}function g(t,e,n){var i=t.eventData;t.silent||t.ignore||i||(i=t.eventData={componentType:"graphic",componentIndex:e.componentIndex,name:t.name}),i&&(i.info=t.info)}t.extendComponentView({type:"graphic",init:function(t,n){this._elMap=e.createHashMap(),this._lastGraphicModel},render:function(t,e,n){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,n)},_updateElements:function(t){var n=t.useElOptionsToUpdate();if(n){var i=this._elMap,r=this.group;e.each(n,function(e){var n=e.$action,o=e.id,a=i.get(o),s=e.parentId,c=null!=s?i.get(s):r,d=e.style;"text"===e.type&&d&&(e.hv&&e.hv[1]&&(d.textVerticalAlign=d.textBaseline=null),!d.hasOwnProperty("textFill")&&d.fill&&(d.textFill=d.fill),!d.hasOwnProperty("textStroke")&&d.stroke&&(d.textStroke=d.stroke));var p=h(e);n&&"merge"!==n?"replace"===n?(u(a,i),l(o,c,p,i)):"remove"===n&&u(a,i):a?a.attr(p):l(o,c,p,i);var f=i.get(o);f&&(f.__ecGraphicWidthOption=e.width,f.__ecGraphicHeightOption=e.height,g(f,t))})}},_relocate:function(t,e){for(var n=t.option.elements,i=this.group,a=this._elMap,s=e.getWidth(),l=e.getHeight(),u=0;u=0;u--){var d;if(h=n[u],d=a.get(h.id)){var p,f=(p=d.parent)===i?{width:s,height:l}:{width:p.__ecGraphicWidth,height:p.__ecGraphicHeight};r.positionElement(d,h,f,null,{hv:h.hv,boundingMode:h.bounding})}}},_clear:function(){var t=this._elMap;t.each(function(e){u(e,t)}),this._elMap=e.createHashMap()},dispose:function(){this._clear()}})}(),d9||(d9=1,function(){if(v7)return g7;v7=1;var t=c$(),e=IW(),n=_7(),i=t.extendComponentModel({type:"toolbox",layoutMode:{type:"box",ignoreSize:!0},optionUpdated:function(){i.superApply(this,"optionUpdated",arguments),e.each(this.option.feature,function(t,i){var r=n.get(i);r&&e.merge(t,r.defaultOption)})},defaultOption:{show:!0,z:6,zlevel:0,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1}}}),r=i;g7=r}(),function(){if(S7)return w7;S7=1;var t=c$(),e=IW(),n=oY(),i=_7(),r=FX(),o=HX(),a=Yq(),s=O7(),l=t.extendComponentView({type:"toolbox",render:function(t,l,h,c){var d=this.group;if(d.removeAll(),t.get("show")){var p=+t.get("itemSize"),f=t.get("feature")||{},g=this._features||(this._features={}),v=[];e.each(f,function(t,e){v.push(e)}),new a(this._featureNames||[],v).add(m).update(m).remove(e.curry(m,null)).execute(),this._featureNames=v,s.layout(d,t,h),d.add(s.makeBackground(d.getBoundingRect(),t)),d.eachChild(function(t){var e=t.__title,i=t.hoverStyle;if(i&&e){var r=n.getBoundingRect(e,n.makeFont(i)),o=t.position[0]+d.position[0],a=!1;t.position[1]+d.position[1]+p+r.height>h.getHeight()&&(i.textPosition="top",a=!0);var s=a?-5-r.height:p+8;o+r.width/2>h.getWidth()?(i.textPosition=["100%",s],i.textAlign="right"):o-r.width/2<0&&(i.textPosition=[0,s],i.textAlign="left")}})}function m(e,n){var r,a=v[e],s=v[n],d=f[a],p=new o(d,t,t.ecModel);if(c&&null!=c.newTitle&&c.featureName===a&&(d.title=c.newTitle),a&&!s){if(u(a))r={model:p,onclick:p.option.onclick,featureName:a};else{var m=i.get(a);if(!m)return;r=new m(p,l,h)}g[a]=r}else{if(!(r=g[s]))return;r.model=p,r.ecModel=l,r.api=h}a||!s?p.get("show")&&!r.unusable?(y(p,r,a),p.setIconStatus=function(t,e){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[t]=e,i[t]&&i[t].trigger(e)},r.render&&r.render(p,l,h,c)):r.remove&&r.remove(l,h):r.dispose&&r.dispose(l,h)}function y(n,i,o){var a=n.getModel("iconStyle"),s=n.getModel("emphasis.iconStyle"),u=i.getIcons?i.getIcons():n.get("icon"),c=n.get("title")||{};if("string"==typeof u){var f=u,g=c;c={},(u={})[o]=f,c[o]=g}var v=n.iconPaths={};e.each(u,function(o,u){var f=r.createIcon(o,{},{x:-p/2,y:-p/2,width:p,height:p});f.setStyle(a.getItemStyle()),f.hoverStyle=s.getItemStyle(),f.setStyle({text:c[u],textAlign:s.get("textAlign"),textBorderRadius:s.get("textBorderRadius"),textPadding:s.get("textPadding"),textFill:null});var g=t.getModel("tooltip");g&&g.get("show")&&f.attr("tooltip",e.extend({content:c[u],formatter:g.get("formatter",!0)||function(){return c[u]},formatterParams:{componentType:"toolbox",name:u,title:c[u],$vars:["name","title"]},position:g.get("position",!0)||"bottom"},g.option)),r.setHoverStyle(f),t.get("showTitle")&&(f.__title=c[u],f.on("mouseover",function(){var e=s.getItemStyle(),n="vertical"===t.get("orient")?null==t.get("right")?"right":"left":null==t.get("bottom")?"bottom":"top";f.setStyle({textFill:s.get("textFill")||e.fill||e.stroke||"#000",textBackgroundColor:s.get("textBackgroundColor"),textPosition:s.get("textPosition")||n})}).on("mouseout",function(){f.setStyle({textFill:null,textBackgroundColor:null})})),f.trigger(n.get("iconStatus."+u)||"normal"),d.add(f),f.on("click",e.bind(i.onclick,i,l,h,u)),v[u]=f})}},updateView:function(t,n,i,r){e.each(this._features,function(t){t.updateView&&t.updateView(t.model,n,i,r)})},remove:function(t,n){e.each(this._features,function(e){e.remove&&e.remove(t,n)}),this.group.removeAll()},dispose:function(t,n){e.each(this._features,function(e){e.dispose&&e.dispose(t,n)})}});function u(t){return 0===t.indexOf("my")}w7=l}(),function(){if(I7)return M7;I7=1;var t=wW(),e=Tq(),n=_7(),i=e.toolbox.saveAsImage;function r(t){this.model=t}r.defaultOption={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:i.title,type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:i.lang.slice()},r.prototype.unusable=!t.canvasSupported;var o=r.prototype;o.onclick=function(e,n){var i=this.model,r=i.get("name")||e.get("title.0.text")||"echarts",o="svg"===n.getZr().painter.getType()?"svg":i.get("type",!0)||"png",a=n.getConnectedDataURL({type:o,backgroundColor:i.get("backgroundColor",!0)||e.get("backgroundColor")||"#fff",connectedBackgroundColor:i.get("connectedBackgroundColor"),excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if("function"!=typeof MouseEvent||t.browser.ie||t.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var s=atob(a.split(",")[1]),l=s.length,u=new Uint8Array(l);l--;)u[l]=s.charCodeAt(l);var h=new Blob([u]);window.navigator.msSaveOrOpenBlob(h,r+"."+o)}else{var c=i.get("lang"),d='';window.open().document.write(d)}else{var p=document.createElement("a");p.download=r+"."+o,p.target="_blank",p.href=a;var f=new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1});p.dispatchEvent(f)}},n.register("saveAsImage",r);var a=r;M7=a}(),function(){if(C7)return T7;C7=1;var t=c$(),e=IW(),n=Tq(),i=_7(),r=n.toolbox.magicType,o="__ec_magicType_stack__";function a(t){this.model=t}a.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:e.clone(r.title),option:{},seriesIndex:{}};var s=a.prototype;s.getIcons=function(){var t=this.model,n=t.get("icon"),i={};return e.each(t.get("type"),function(t){n[t]&&(i[t]=n[t])}),i};var l={line:function(t,n,i,r){if("bar"===t)return e.merge({id:n,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},r.get("option.line")||{},!0)},bar:function(t,n,i,r){if("line"===t)return e.merge({id:n,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},r.get("option.bar")||{},!0)},stack:function(t,n,i,r){var a=i.get("stack")===o;if("line"===t||"bar"===t)return r.setIconStatus("stack",a?"normal":"emphasis"),e.merge({id:n,stack:a?"":o},r.get("option.stack")||{},!0)}},u=[["line","bar"],["stack"]];s.onclick=function(t,n,i){var a=this.model,s=a.get("seriesIndex."+i);if(l[i]){var h,c={series:[]},d=function(n){var r=n.subType,o=n.id,s=l[i](r,o,n,a);s&&(e.defaults(s,n.option),c.series.push(s));var u=n.coordinateSystem;if(u&&"cartesian2d"===u.type&&("line"===i||"bar"===i)){var h=u.getAxesByScale("ordinal")[0];if(h){var d=h.dim+"Axis",p=t.queryComponents({mainType:d,index:n.get(name+"Index"),id:n.get(name+"Id")})[0].componentIndex;c[d]=c[d]||[];for(var f=0;f<=p;f++)c[d][p]=c[d][p]||{};c[d][p].boundaryGap="bar"===i}}};e.each(u,function(t){e.indexOf(t,i)>=0&&e.each(t,function(t){a.setIconStatus(t,"normal")})}),a.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==s?null:{seriesIndex:s}},d),"stack"===i&&(h=c.series&&c.series[0]&&c.series[0].stack===o?e.merge({stack:r.title.tiled},r.title):e.clone(r.title)),n.dispatchAction({type:"changeMagicType",currentType:i,newOption:c,newTitle:h,featureName:"magicType"})}},t.registerAction({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),i.register("magicType",a);var h=a;T7=h}(),function(){if(D7)return A7;D7=1;var t=c$(),e=IW(),n=YW(),i=Tq(),r=_7(),o=i.toolbox.dataView,a=new Array(60).join("-"),s="\t";function l(t){var e={},n=[],i=[];return t.eachRawSeries(function(t){var r=t.coordinateSystem;if(!r||"cartesian2d"!==r.type&&"polar"!==r.type)n.push(t);else{var o=r.getBaseAxis();if("category"===o.type){var a=o.dim+"_"+o.index;e[a]||(e[a]={categoryAxis:o,valueAxis:r.getOtherAxis(o),series:[]},i.push({axisDim:o.dim,axisIndex:o.index})),e[a].series.push(t)}else n.push(t)}}),{seriesGroupByCategoryAxis:e,other:n,meta:i}}function u(t){var n=[];return e.each(t,function(t,i){var r=t.categoryAxis,o=t.valueAxis.dim,a=[" "].concat(e.map(t.series,function(t){return t.name})),l=[r.model.getCategories()];e.each(t.series,function(t){var e=t.getRawData();l.push(t.getRawData().mapArray(e.mapDimension(o),function(t){return t}))});for(var u=[a.join(s)],h=0;h=0)return!0}var f=new RegExp("["+s+"]+","g");function g(t){for(var n=t.split(/\n+/g),i=d(n.shift()).split(f),r=[],o=e.map(i,function(t){return{name:t,data:[]}}),a=0;a1?"emphasis":"normal")}function v(t,e,n,r,o){var a=n._isZoomActive;r&&"takeGlobalCursor"===r.type&&(a="dataZoomSelect"===r.key&&r.dataZoomSelectActive),n._isZoomActive=a,t.setIconStatus("zoom",a?"emphasis":"normal");var s=new i(f(t.option),e,{include:["grid"]});n._brushController.setPanels(s.makePanelOpts(o,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!a&&{brushType:"auto",brushStyle:t.getModel("brushStyle").getItemStyle()})}d._onBrush=function(t,e){if(e.isEnd&&t.length){var n={},a=this.ecModel;this._brushController.updateCovers([]),new i(f(this.model.option),a,{include:["grid"]}).matchOutputRanges(t,a,function(t,e,n){if("cartesian2d"===n.type){var i=t.brushType;"rect"===i?(s("x",n,e[0]),s("y",n,e[1])):s({lineX:"x",lineY:"y"}[i],n,e)}}),r.push(a,n),this._dispatchZoomAction(n)}function s(t,e,i){var r=e.getAxis(t),s=r.model,u=l(t,s,a),h=u.findRepresentativeAxisProxy(s).getMinMaxSpan();null==h.minValueSpan&&null==h.maxValueSpan||(i=o(0,i.slice(),r.scale.getExtent(),0,h.minValueSpan,h.maxValueSpan)),u&&(n[u.id]={dataZoomId:u.id,startValue:i[0],endValue:i[1]})}function l(t,e,n){var i;return n.eachComponent({mainType:"dataZoom",subType:"select"},function(n){n.getAxisModel(t,e.componentIndex)&&(i=n)}),i}},d._dispatchZoomAction=function(t){var n=[];u(t,function(t,i){n.push(e.clone(t))}),n.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:n})},s.register("dataZoom",c),t.registerPreprocessor(function(t){if(t){var n=t.dataZoom||(t.dataZoom=[]);e.isArray(n)||(t.dataZoom=n=[n]);var i=t.toolbox;if(i&&(e.isArray(i)&&(i=i[0]),i&&i.feature)){var r=i.feature.dataZoom;o("xAxis",r),o("yAxis",r)}}function o(t,i){if(i){var r=t+"Index",o=i[r];null==o||"all"===o||e.isArray(o)||(o=!1===o||"none"===o?[]:[o]),a(t,function(a,s){if(null==o||"all"===o||-1!==e.indexOf(o,s)){var l={type:"select",$fromToolbox:!0,filterMode:i.filterMode||"filter",id:h+t+s};l[r]=s,n.push(l)}})}}function a(n,i){var r=t[n];e.isArray(r)||(r=r?[r]:[]),u(r,i)}}),l9=c}(),function(){if(c9)return h9;c9=1;var t=c$(),e=z7(),n=Tq(),i=_7(),r=n.toolbox.restore;function o(t){this.model=t}o.defaultOption={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:r.title};var a=o.prototype;a.onclick=function(t,n,i){e.clear(t),n.dispatchAction({type:"restore",from:this.uid})},i.register("restore",o),t.registerAction({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")}),h9=o}()),function(){if(S9)return R9;S9=1;var t=c$();J6(),function(){if(v9)return g9;v9=1;var t=c$(),e=t.extendComponentModel({type:"tooltip",dependencies:["axisPointer"],defaultOption:{zlevel:0,z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:!1,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"rgba(50,50,50,0.7)",borderColor:"#333",borderRadius:4,borderWidth:0,padding:5,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#fff",fontSize:14}}});g9=e}(),function(){if(w9)return b9;w9=1;var t=c$(),e=IW(),n=wW(),i=function(){if(y9)return m9;y9=1;var t=IW(),e=cU(),n=YW(),i=UW(),r=wW(),o=sj(),a=t.each,s=o.toCamelCase,l=["","-webkit-","-moz-","-o-"],u="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;";function h(e){var n="cubic-bezier(0.23, 1, 0.32, 1)",i="left "+e+"s "+n+",top "+e+"s "+n;return t.map(l,function(t){return t+"transition:"+i}).join(";")}function c(t){var e=[],n=t.get("fontSize"),i=t.getTextColor();i&&e.push("color:"+i),e.push("font:"+t.getFont());var r=t.get("lineHeight");null==r&&(r=Math.round(3*n/2)),n&&e.push("line-height:"+r+"px");var o=t.get("textShadowColor"),s=t.get("textShadowBlur")||0,l=t.get("textShadowOffsetX")||0,u=t.get("textShadowOffsetY")||0;return s&&e.push("text-shadow:"+l+"px "+u+"px "+s+"px "+o),a(["decoration","align"],function(n){var i=t.get(n);i&&e.push("text-"+n+":"+i)}),e.join(";")}function d(t){var n=[],i=t.get("transitionDuration"),l=t.get("backgroundColor"),u=t.getModel("textStyle"),d=t.get("padding");return i&&n.push(h(i)),l&&(r.canvasSupported?n.push("background-Color:"+l):(n.push("background-Color:#"+e.toHex(l)),n.push("filter:alpha(opacity=70)"))),a(["width","color","radius"],function(e){var i="border-"+e,r=s(i),o=t.get(r);null!=o&&n.push(i+":"+o+("color"===e?"":"px"))}),n.push(c(u)),null!=d&&n.push("padding:"+o.normalizeCssArray(d).join("px ")+"px"),n.join(";")+";"}function p(t,e,n,r,o){var a=e&&e.painter;if(n){var s=a&&a.getViewportRoot();s&&i.transformLocalCoord(t,s,document.body,r,o)}else{t[0]=r,t[1]=o;var l=a&&a.getViewportRootOffset();l&&(t[0]+=l.offsetLeft,t[1]+=l.offsetTop)}t[2]=t[0]/e.getWidth(),t[3]=t[1]/e.getHeight()}function f(t,e,i){if(r.wxa)return null;var o=document.createElement("div");o.domBelongToZr=!0,this.el=o;var a=this._zr=e.getZr(),s=this._appendToBody=i&&i.appendToBody;this._styleCoord=[0,0,0,0],p(this._styleCoord,a,s,e.getWidth()/2,e.getHeight()/2),s?document.body.appendChild(o):t.appendChild(o),this._container=t,this._show=!1,this._hideTimeout;var l=this;o.onmouseenter=function(){l._enterable&&(clearTimeout(l._hideTimeout),l._show=!0),l._inContent=!0},o.onmousemove=function(t){if(t=t||window.event,!l._enterable){var e=a.handler,i=a.painter.getViewportRoot();n.normalizeEvent(i,t,!0),e.dispatch("mousemove",t)}},o.onmouseleave=function(){l._enterable&&l._show&&l.hideLater(l._hideDelay),l._inContent=!1}}f.prototype={constructor:f,_enterable:!0,update:function(t){var e=this._container,n=e.currentStyle||document.defaultView.getComputedStyle(e),i=e.style;"absolute"!==i.position&&"absolute"!==n.position&&(i.position="relative"),t.get("alwaysShowContent")&&this._moveTooltipIfResized()},_moveTooltipIfResized:function(){var t=this._styleCoord[2],e=this._styleCoord[3],n=t*this._zr.getWidth(),i=e*this._zr.getHeight();this.moveTo(n,i)},show:function(t){clearTimeout(this._hideTimeout);var e=this.el,n=this._styleCoord;e.style.cssText=u+d(t)+";left:"+n[0]+"px;top:"+n[1]+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",e.style.pointerEvents=this._enterable?"auto":"none",this._show=!0},setContent:function(t){this.el.innerHTML=null==t?"":t},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el;return[t.clientWidth,t.clientHeight]},moveTo:function(t,e){var n=this._styleCoord;p(n,this._zr,this._appendToBody,t,e);var i=this.el.style;i.left=n[0]+"px",i.top=n[1]+"px"},hide:function(){this.el.style.display="none",this._show=!1},hideLater:function(e){!this._show||this._inContent&&this._enterable||(e?(this._hideDelay=e,this._show=!1,this._hideTimeout=setTimeout(t.bind(this.hide,this),e)):this.hide())},isShow:function(){return this._show},dispose:function(){this.el.parentNode.removeChild(this.el)},getOuterSize:function(){var t=this.el.clientWidth,e=this.el.clientHeight;if(document.defaultView&&document.defaultView.getComputedStyle){var n=document.defaultView.getComputedStyle(this.el);n&&(t+=parseInt(n.borderLeftWidth,10)+parseInt(n.borderRightWidth,10),e+=parseInt(n.borderTopWidth,10)+parseInt(n.borderBottomWidth,10))}return{width:t,height:e}}};var g=f;return m9=g}(),r=function(){if(_9)return x9;_9=1;var t=IW(),e=BZ(),n=FX();function i(t,e,n,i){t[0]=n,t[1]=i,t[2]=t[0]/e.getWidth(),t[3]=t[1]/e.getHeight()}function r(t){var e=this._zr=t.getZr();this._styleCoord=[0,0,0,0],i(this._styleCoord,e,t.getWidth()/2,t.getHeight()/2),this._show=!1,this._hideTimeout}r.prototype={constructor:r,_enterable:!0,update:function(t){t.get("alwaysShowContent")&&this._moveTooltipIfResized()},_moveTooltipIfResized:function(){var t=this._styleCoord[2],e=this._styleCoord[3],n=t*this._zr.getWidth(),i=e*this._zr.getHeight();this.moveTo(n,i)},show:function(t){this._hideTimeout&&clearTimeout(this._hideTimeout),this.el.attr("show",!0),this._show=!0},setContent:function(t,i,r){this.el&&this._zr.remove(this.el);for(var o={},a=t,s="{marker",l="|}",u=a.indexOf(s);u>=0;){var h=a.indexOf(l),c=a.substr(u+s.length,h-u-s.length);c.indexOf("sub")>-1?o["marker"+c]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:i[c],textOffset:[3,0]}:o["marker"+c]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:i[c]},u=(a=a.substr(h+1)).indexOf("{marker")}var d=r.getModel("textStyle"),p=d.get("fontSize"),f=r.get("textLineHeight");null==f&&(f=Math.round(3*p/2)),this.el=new e({style:n.setTextStyle({},d,{rich:o,text:t,textBackgroundColor:r.get("backgroundColor"),textBorderRadius:r.get("borderRadius"),textFill:r.get("textStyle.color"),textPadding:r.get("padding"),textLineHeight:f}),z:r.get("z")}),this._zr.add(this.el);var g=this;this.el.on("mouseover",function(){g._enterable&&(clearTimeout(g._hideTimeout),g._show=!0),g._inContent=!0}),this.el.on("mouseout",function(){g._enterable&&g._show&&g.hideLater(g._hideDelay),g._inContent=!1})},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el.getBoundingRect();return[t.width,t.height]},moveTo:function(t,e){if(this.el){var n=this._styleCoord;i(n,this._zr,t,e),this.el.attr("position",[n[0],n[1]])}},hide:function(){this.el&&this.el.hide(),this._show=!1},hideLater:function(e){!this._show||this._inContent&&this._enterable||(e?(this._hideDelay=e,this._show=!1,this._hideTimeout=setTimeout(t.bind(this.hide,this),e)):this.hide())},isShow:function(){return this._show},dispose:function(){clearTimeout(this._hideTimeout),this.el&&this._zr.remove(this.el)},getOuterSize:function(){var t=this.getSize();return{width:t[0],height:t[1]}}};var o=r;return x9=o}(),o=sj(),a=qX(),s=FX(),l=S6(),u=lj(),h=HX(),c=k6(),d=FK(),p=K6(),f=PY().getTooltipRenderMode,g=e.bind,v=e.each,m=a.parsePercent,y=new s.Rect({shape:{x:-1,y:-1,width:2,height:2}}),x=t.extendComponentView({type:"tooltip",init:function(t,e){if(!n.node){var o,a=t.getComponent("tooltip"),s=a.get("renderMode");this._renderMode=f(s),"html"===this._renderMode?(o=new i(e.getDom(),e,{appendToBody:a.get("appendToBody",!0)}),this._newLine="
"):(o=new r(e),this._newLine="\n"),this._tooltipContent=o}},render:function(t,e,i){if(!n.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var r=this._tooltipContent;r.update(t),r.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel.get("triggerOn");c.register("itemTooltip",this._api,g(function(e,n,i){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(n,i):"leave"===e&&this._hide(i))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,n=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var i=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){!n.isDisposed()&&i.manuallyShowTip(t,e,n,{x:i._lastX,y:i._lastY})})}},manuallyShowTip:function(t,e,i,r){if(r.from!==this.uid&&!n.node){var o=b(r,i);this._ticket="";var a=r.dataByCoordSys;if(r.tooltip&&null!=r.x&&null!=r.y){var s=y;s.position=[r.x,r.y],s.update(),s.tooltip=r.tooltip,this._tryShow({offsetX:r.x,offsetY:r.y,target:s},o)}else if(a)this._tryShow({offsetX:r.x,offsetY:r.y,position:r.position,dataByCoordSys:r.dataByCoordSys,tooltipOption:r.tooltipOption},o);else if(null!=r.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,r))return;var u=l(r,e),h=u.point[0],c=u.point[1];null!=h&&null!=c&&this._tryShow({offsetX:h,offsetY:c,position:r.position,target:u.el},o)}else null!=r.x&&null!=r.y&&(i.dispatchAction({type:"updateAxisPointer",x:r.x,y:r.y}),this._tryShow({offsetX:r.x,offsetY:r.y,position:r.position,target:i.getZr().findHover(r.x,r.y).target},o))}},manuallyHideTip:function(t,e,n,i){var r=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&r.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,i.from!==this.uid&&this._hide(b(i,n))},_manuallyAxisShowTip:function(t,e,n,i){var r=i.seriesIndex,o=i.dataIndex,a=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=r&&null!=o&&null!=a){var s=e.getSeriesByIndex(r);if(s&&"axis"===(t=_([s.getData().getItemModel(o),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return n.dispatchAction({type:"updateAxisPointer",seriesIndex:r,dataIndex:o,position:i.position}),!0}},_tryShow:function(t,e){var n=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var i=t.dataByCoordSys;i&&i.length?this._showAxisTooltip(i,t):n&&null!=n.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,n,e)):n&&n.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,n,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,n){var i=t.get("showDelay");n=e.bind(n,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(n,i):n()},_showAxisTooltip:function(t,n){var i=this._ecModel,r=this._tooltipModel,a=[n.offsetX,n.offsetY],s=[],l=[],u=_([n.tooltipOption,r]),h=this._renderMode,c=this._newLine,f={};v(t,function(t){v(t.dataByAxis,function(t){var n=i.getComponent(t.axisDim+"Axis",t.axisIndex),r=t.value,a=[];if(n&&null!=r){var u=p.getValueLabel(r,n.axis,i,t.seriesDataIndices,t.valueLabelOpt);e.each(t.seriesDataIndices,function(o){var s=i.getSeriesByIndex(o.seriesIndex),c=o.dataIndexInside,p=s&&s.getDataParams(c);if(p.axisDim=t.axisDim,p.axisIndex=t.axisIndex,p.axisType=t.axisType,p.axisId=t.axisId,p.axisValue=d.getAxisRawValue(n.axis,r),p.axisValueLabel=u,p){l.push(p);var g,v=s.formatTooltip(c,!0,null,h);if(e.isObject(v)){g=v.html;var m=v.markers;e.merge(f,m)}else g=v;a.push(g)}});var g=u;"html"!==h?s.push(a.join(c)):s.push((g?o.encodeHTML(g)+c:"")+a.join(c))}})},this),s.reverse(),s=s.join(this._newLine+this._newLine);var g=n.position;this._showOrMove(u,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(u,g,a[0],a[1],this._tooltipContent,l):this._showTooltipContent(u,s,l,Math.random(),a[0],a[1],g,void 0,f)})},_showSeriesItemTooltip:function(t,n,i){var r=this._ecModel,o=n.seriesIndex,a=r.getSeriesByIndex(o),s=n.dataModel||a,l=n.dataIndex,u=n.dataType,h=s.getData(u),c=_([h.getItemModel(l),s,a&&(a.coordinateSystem||{}).model,this._tooltipModel]),d=c.get("trigger");if(null==d||"item"===d){var p,f,g=s.getDataParams(l,u),v=s.formatTooltip(l,!1,u,this._renderMode);e.isObject(v)?(p=v.html,f=v.markers):(p=v,f=null);var m="item_"+s.name+"_"+l;this._showOrMove(c,function(){this._showTooltipContent(c,p,g,m,t.offsetX,t.offsetY,t.position,t.target,f)}),i({type:"showTip",dataIndexInside:l,dataIndex:h.getRawIndex(l),seriesIndex:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,n){var i=e.tooltip;"string"==typeof i&&(i={content:i,formatter:i});var r=new h(i,this._tooltipModel,this._ecModel),o=r.get("content"),a=Math.random();this._showOrMove(r,function(){this._showTooltipContent(r,o,r.get("formatterParams")||{},a,t.offsetX,t.offsetY,t.position,e)}),n({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,n,i,r,a,s,l,u){if(this._ticket="",t.get("showContent")&&t.get("show")){var h=this._tooltipContent,c=t.get("formatter");s=s||t.get("position");var d=e;if(c&&"string"==typeof c)d=o.formatTpl(c,n,!0);else if("function"==typeof c){var p=g(function(e,i){e===this._ticket&&(h.setContent(i,u,t),this._updatePosition(t,s,r,a,h,n,l))},this);this._ticket=i,d=c(n,i,p)}h.setContent(d,u,t),h.show(t),this._updatePosition(t,s,r,a,h,n,l)}},_updatePosition:function(t,n,i,r,o,a,s){var l=this._api.getWidth(),h=this._api.getHeight();n=n||t.get("position");var c=o.getSize(),d=t.get("align"),p=t.get("verticalAlign"),f=s&&s.getBoundingRect().clone();if(s&&f.applyTransform(s.transform),"function"==typeof n&&(n=n([i,r],a,o.el,f,{viewSize:[l,h],contentSize:c.slice()})),e.isArray(n))i=m(n[0],l),r=m(n[1],h);else if(e.isObject(n)){n.width=c[0],n.height=c[1];var g=u.getLayoutRect(n,{width:l,height:h});i=g.x,r=g.y,d=null,p=null}else if("string"==typeof n&&s)i=(v=M(n,f,c))[0],r=v[1];else{var v;i=(v=w(i,r,o,l,h,d?null:20,p?null:20))[0],r=v[1]}d&&(i-=I(d)?c[0]/2:"right"===d?c[0]:0),p&&(r-=I(p)?c[1]/2:"bottom"===p?c[1]:0),t.get("confine")&&(i=(v=S(i,r,o,l,h))[0],r=v[1]),o.moveTo(i,r)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,n=!!e&&e.length===t.length;return n&&v(e,function(e,i){var r=e.dataByAxis||{},o=(t[i]||{}).dataByAxis||[];(n&=r.length===o.length)&&v(r,function(t,e){var i=o[e]||{},r=t.seriesDataIndices||[],a=i.seriesDataIndices||[];(n&=t.value===i.value&&t.axisType===i.axisType&&t.axisId===i.axisId&&r.length===a.length)&&v(r,function(t,e){var i=a[e];n&=t.seriesIndex===i.seriesIndex&&t.dataIndex===i.dataIndex})})}),this._lastDataByCoordSys=t,!!n},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){n.node||(this._tooltipContent.dispose(),c.unregister("itemTooltip",e))}});function _(t){for(var e=t.pop();t.length;){var n=t.pop();n&&(h.isInstance(n)&&(n=n.get("tooltip",!0)),"string"==typeof n&&(n={formatter:n}),e=new h(n,e,e.ecModel))}return e}function b(t,n){return t.dispatchAction||e.bind(n.dispatchAction,n)}function w(t,e,n,i,r,o,a){var s=n.getOuterSize(),l=s.width,u=s.height;return null!=o&&(t+l+o>i?t-=l+o:t+=o),null!=a&&(e+u+a>r?e-=u+a:e+=a),[t,e]}function S(t,e,n,i,r){var o=n.getOuterSize(),a=o.width,s=o.height;return t=Math.min(t+a,i)-a,e=Math.min(e+s,r)-s,[t=Math.max(t,0),e=Math.max(e,0)]}function M(t,e,n){var i=n[0],r=n[1],o=5,a=0,s=0,l=e.width,u=e.height;switch(t){case"inside":a=e.x+l/2-i/2,s=e.y+u/2-r/2;break;case"top":a=e.x+l/2-i/2,s=e.y-r-o;break;case"bottom":a=e.x+l/2-i/2,s=e.y+u+o;break;case"left":a=e.x-i-o,s=e.y+u/2-r/2;break;case"right":a=e.x+l+o,s=e.y+u/2-r/2}return[a,s]}function I(t){return"center"===t||"middle"===t}b9=x}(),t.registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),t.registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){})}(),J6(),function(){if(W9)return N9;W9=1;var t=c$(),e=function(){if(I9)return M9;I9=1;var t=IW(),e=["rect","polygon","keep","clear"];function n(n,r){var o=n&&n.brush;if(t.isArray(o)||(o=o?[o]:[]),o.length){var a=[];t.each(o,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(a=a.concat(e))});var s=n&&n.toolbox;t.isArray(s)&&(s=s[0]),s||(s={feature:{}},n.toolbox=[s]);var l=s.feature||(s.feature={}),u=l.brush||(l.brush={}),h=u.type||(u.type=[]);h.push.apply(h,a),i(h),r&&!h.length&&h.push.apply(h,e)}}function i(e){var n={};t.each(e,function(t){n[t]=1}),e.length=0,t.each(n,function(t,n){e.push(n)})}return M9=n}();B9(),function(){if(k9)return L9;k9=1,gW().__DEV__;var t=c$(),e=IW(),n=V9(),i=HX(),r=["#ddd"],o=t.extendComponentModel({type:"brush",dependencies:["geo","grid","xAxis","yAxis","parallel","series"],defaultOption:{toolbox:null,brushLink:null,seriesIndex:"all",geoIndex:null,xAxisIndex:null,yAxisIndex:null,brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(120,140,180,0.3)",borderColor:"rgba(120,140,180,0.8)"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;!e&&n.replaceVisualOption(i,t,["inBrush","outOfBrush"]);var o=i.inBrush=i.inBrush||{};i.outOfBrush=i.outOfBrush||{color:r},o.hasOwnProperty("liftZ")||(o.liftZ=5)},setAreas:function(t){t&&(this.areas=e.map(t,function(t){return a(this.option,t)},this))},setBrushOption:function(t){this.brushOption=a(this.option,t),this.brushType=this.brushOption.brushType}});function a(t,n){return e.merge({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new i(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},n,!0)}var s=o;L9=s}(),function(){if(O9)return P9;O9=1;var t=c$(),e=IW(),n=n3(),i=B9().layoutCovers,r=t.extendComponentView({type:"brush",init:function(t,i){this.ecModel=t,this.api=i,this.model,(this._brushController=new n(i.getZr())).on("brush",e.bind(this._onBrush,this)).mount()},render:function(t){return this.model=t,o.apply(this,arguments)},updateTransform:function(t,e){return i(e),o.apply(this,arguments)},updateView:o,dispose:function(){this._brushController.dispose()},_onBrush:function(t,n){var i=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),(!n.isEnd||n.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:i,areas:e.clone(t),$from:i}),n.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:i,areas:e.clone(t),$from:i})}});function o(t,e,n,i){(!i||i.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts(n)).enableBrush(t.brushOption).updateCovers(t.areas.slice())}P9=r}(),function(){if(G9)return att;G9=1;var t=c$();t.registerAction({type:"brush",event:"brush"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),t.registerAction({type:"brushSelect",event:"brushSelected",update:"none"},function(){}),t.registerAction({type:"brushEnd",event:"brushEnd",update:"none"},function(){})}(),function(){if(H9)return F9;H9=1;var t=IW(),e=_7(),n=Tq(),i=n.toolbox.brush;function r(t,e,n){this.model=t,this.ecModel=e,this.api=n,this._brushType,this._brushMode}r.defaultOption={show:!0,type:["rect","polygon","lineX","lineY","keep","clear"],icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:t.clone(i.title)};var o=r.prototype;o.render=o.updateView=function(e,n,i){var r,o,a;n.eachComponent({mainType:"brush"},function(t){r=t.brushType,o=t.brushOption.brushMode||"single",a|=t.areas.length}),this._brushType=r,this._brushMode=o,t.each(e.get("type",!0),function(t){e.setIconStatus(t,("keep"===t?"multiple"===o:"clear"===t?a:t===r)?"emphasis":"normal")})},o.getIcons=function(){var e=this.model,n=e.get("icon",!0),i={};return t.each(e.get("type",!0),function(t){n[t]&&(i[t]=n[t])}),i},o.onclick=function(t,e,n){var i=this._brushType,r=this._brushMode;"clear"===n?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===n?i:i!==n&&n,brushMode:"keep"===n?"multiple"===r?"single":"multiple":r}})},e.register("brush",r),F9=r}(),t.registerPreprocessor(e)}(),function(){if(U9)return stt;U9=1;var t=IW(),e=c$(),n=FX(),i=lj().getLayoutRect,r=sj().windowOpen;e.extendComponentModel({type:"title",layoutMode:{type:"box",ignoreSize:!0},defaultOption:{zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bolder",color:"#333"},subtextStyle:{color:"#aaa"}}}),e.extendComponentView({type:"title",render:function(e,o,a){if(this.group.removeAll(),e.get("show")){var s=this.group,l=e.getModel("textStyle"),u=e.getModel("subtextStyle"),h=e.get("textAlign"),c=t.retrieve2(e.get("textBaseline"),e.get("textVerticalAlign")),d=new n.Text({style:n.setTextStyle({},l,{text:e.get("text"),textFill:l.getTextColor()},{disableBox:!0}),z2:10}),p=d.getBoundingRect(),f=e.get("subtext"),g=new n.Text({style:n.setTextStyle({},u,{text:f,textFill:u.getTextColor(),y:p.height+e.get("itemGap"),textVerticalAlign:"top"},{disableBox:!0}),z2:10}),v=e.get("link"),m=e.get("sublink"),y=e.get("triggerEvent",!0);d.silent=!v&&!y,g.silent=!m&&!y,v&&d.on("click",function(){r(v,"_"+e.get("target"))}),m&&g.on("click",function(){r(m,"_"+e.get("subtarget"))}),d.eventData=g.eventData=y?{componentType:"title",componentIndex:e.componentIndex}:null,s.add(d),f&&s.add(g);var x=s.getBoundingRect(),_=e.getBoxLayoutParams();_.width=x.width,_.height=x.height;var b=i(_,{width:a.getWidth(),height:a.getHeight()},e.get("padding"));h||("middle"===(h=e.get("left")||e.get("right"))&&(h="center"),"right"===h?b.x+=b.width:"center"===h&&(b.x+=b.width/2)),c||("center"===(c=e.get("top")||e.get("bottom"))&&(c="middle"),"bottom"===c?b.y+=b.height:"middle"===c&&(b.y+=b.height/2),c=c||"top"),s.attr("position",[b.x,b.y]);var w={textAlign:h,textVerticalAlign:c};d.setStyle(w),g.setStyle(w),x=s.getBoundingRect();var S=b.margin,M=e.getItemStyle(["color","opacity"]);M.fill=e.get("backgroundColor");var I=new n.Rect({shape:{x:x.x-S[3],y:x.y-S[0],width:x.width+S[1]+S[3],height:x.height+S[0]+S[2],r:e.get("borderRadius")},style:M,subPixelOptimize:!0,silent:!0});s.add(I)}}})}(),function(){if(ott)return ltt;ott=1;var t=c$(),e=function(){if(Z9)return Y9;Z9=1;var t=IW();function e(e){var i=e&&e.timeline;t.isArray(i)||(i=i?[i]:[]),t.each(i,function(t){t&&n(t)})}function n(e){var n=e.type,o={number:"value",time:"time"};if(o[n]&&(e.axisType=o[n],delete e.type),i(e),r(e,"controlPosition")){var a=e.controlStyle||(e.controlStyle={});r(a,"position")||(a.position=e.controlPosition),"none"!==a.position||r(a,"show")||(a.show=!1,delete a.position),delete e.controlPosition}t.each(e.data||[],function(e){t.isObject(e)&&!t.isArray(e)&&(!r(e,"value")&&r(e,"name")&&(e.value=e.name),i(e))})}function i(e){var n=e.itemStyle||(e.itemStyle={}),i=n.emphasis||(n.emphasis={}),o=e.label||e.label||{},a=o.normal||(o.normal={}),s={normal:1,emphasis:1};t.each(o,function(t,e){s[e]||r(a,e)||(a[e]=t)}),i.label&&!r(o,"emphasis")&&(o.emphasis=i.label,delete i.label)}function r(t,e){return t.hasOwnProperty(e)}return Y9=e}();(function(){if(X9)return utt;X9=1;var t=uj();t.registerSubTypeDefaulter("timeline",function(){return"slider"})})(),function(){if(j9)return htt;j9=1;var t=c$(),e=IW();t.registerAction({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,n){var i=n.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),n.resetOption("timeline"),e.defaults({currentIndex:i.option.currentIndex},t)}),t.registerAction({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var n=e.getComponent("timeline");n&&null!=t.playState&&n.setPlayState(t.playState)})}(),function(){if(J9)return $9;J9=1;var t=IW(),e=function(){if(K9)return q9;K9=1;var t=IW(),e=uj(),n=rK(),i=PY(),r=e.extend({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},init:function(t,e,n){this._data,this._names,this.mergeDefaultAndTheme(t,n),this._initData()},mergeOption:function(t){r.superApply(this,"mergeOption",arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var e=this.option,r=e.data||[],o=e.axisType,a=this._names=[];if("category"===o){var s=[];t.each(r,function(e,n){var r,o=i.getDataItemValue(e);t.isObject(e)?(r=t.clone(e)).value=n:r=n,s.push(r),t.isString(o)||null!=o&&!isNaN(o)||(o=""),a.push(o+"")}),r=s}var l={category:"ordinal",time:"time"}[o]||"number";(this._data=new n([{name:"value",type:l}],this)).initData(r,a)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}}),o=r;return q9=o}(),n=Zj(),i=e.extend({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#304654"},itemStyle:{color:"#304654",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{label:{show:!0,color:"#c23531"},itemStyle:{color:"#c23531"},controlStyle:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}});t.mixin(i,n);var r=i;$9=r}(),function(){if(rtt)return itt;rtt=1;var t=IW(),e=NU(),n=eU(),i=FX(),r=lj(),o=ctt(),a=function(){if(ntt)return ett;ntt=1;var t=IW(),e=u$(),n=function(t,n,i,r){e.call(this,t,n,i),this.type=r||"value",this.model=null};n.prototype={constructor:n,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},t.inherits(n,e);var i=n;return ett=i}(),s=ZK().createSymbol,l=FK(),u=qX(),h=sj().encodeHTML,c=t.bind,d=t.each,p=Math.PI,f=o.extend({type:"timeline.slider",init:function(t,e){this.api=e,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(t,e,n,i){if(this.model=t,this.api=n,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var r=this._layout(t,n),o=this._createGroup("mainGroup"),a=this._createGroup("labelGroup"),s=this._axis=this._createAxis(r,t);t.formatTooltip=function(t){return h(s.scale.getLabel(t))},d(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](r,o,s,t)},this),this._renderAxisLabel(r,a,s,t),this._position(r,t)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var n=t.get("label.position"),i=t.get("orient"),r=g(t,e);null==n||"auto"===n?n="horizontal"===i?r.y+r.height/2=0||"+"===n?"left":"right"},h={horizontal:n>=0||"+"===n?"top":"bottom",vertical:"middle"},c={horizontal:0,vertical:p/2},d="vertical"===i?r.height:r.width,f=t.getModel("controlStyle"),v=f.get("show",!0),m=v?f.get("itemSize"):0,y=v?f.get("itemGap"):0,x=m+y,_=t.get("label.rotate")||0;_=_*p/180;var b=f.get("position",!0),w=v&&f.get("showPlayBtn",!0),S=v&&f.get("showPrevBtn",!0),M=v&&f.get("showNextBtn",!0),I=0,T=d;return"left"===b||"bottom"===b?(w&&(o=[0,0],I+=x),S&&(a=[I,0],I+=x),M&&(s=[T-m,0],T-=x)):(w&&(o=[T-m,0],T-=x),S&&(a=[0,0],I+=x),M&&(s=[T-m,0],T-=x)),l=[I,T],t.get("inverse")&&l.reverse(),{viewRect:r,mainLength:d,orient:i,rotation:c[i],labelRotation:_,labelPosOpt:n,labelAlign:t.get("label.align")||u[i],labelBaseline:t.get("label.verticalAlign")||t.get("label.baseline")||h[i],playPosition:o,prevBtnPosition:a,nextBtnPosition:s,axisExtent:l,controlSize:m,controlGap:y}},_position:function(t,e){var i=this._mainGroup,r=this._labelGroup,o=t.viewRect;if("vertical"===t.orient){var a=n.create(),s=o.x,l=o.y+o.height;n.translate(a,a,[-s,-l]),n.rotate(a,a,-p/2),n.translate(a,a,[s,l]),(o=o.clone()).applyTransform(a)}var u=y(o),h=y(i.getBoundingRect()),c=y(r.getBoundingRect()),d=i.position,f=r.position;f[0]=d[0]=u[0][0];var g,v=t.labelPosOpt;function m(t){var e=t.position;t.origin=[u[0][0]-e[0],u[1][0]-e[1]]}function y(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function x(t,e,n,i,r){t[i]+=n[i][r]-e[i][r]}isNaN(v)?(x(d,h,u,1,g="+"===v?0:1),x(f,c,u,1,1-g)):(x(d,h,u,1,g=v>=0?0:1),f[1]=d[1]+v),i.attr("position",d),r.attr("position",f),i.rotation=r.rotation=t.rotation,m(i),m(r)},_createAxis:function(t,e){var n=e.getData(),i=e.get("axisType"),r=l.createScaleByModel(e,i);r.getTicks=function(){return n.mapArray(["value"],function(t){return t})};var o=n.getDataExtent("value");r.setExtent(o[0],o[1]),r.niceTicks();var s=new a("value",r,t.axisExtent,i);return s.model=e,s},_createGroup:function(t){var e=this["_"+t]=new i.Group;return this.group.add(e),e},_renderAxisLine:function(e,n,r,o){var a=r.getExtent();o.get("lineStyle.show")&&n.add(new i.Line({shape:{x1:a[0],y1:0,x2:a[1],y2:0},style:t.extend({lineCap:"round"},o.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,n,r){var o=r.getData(),a=n.scale.getTicks();d(a,function(t){var a=n.dataToCoord(t),s=o.getItemModel(t),l=s.getModel("itemStyle"),u=s.getModel("emphasis.itemStyle"),h={position:[a,0],onclick:c(this._changeTimeline,this,t)},d=m(s,l,e,h);i.setHoverStyle(d,u.getItemStyle()),s.get("tooltip")?(d.dataIndex=t,d.dataModel=r):d.dataIndex=d.dataModel=null},this)},_renderAxisLabel:function(t,e,n,r){if(n.getLabelModel().get("show")){var o=r.getData(),a=n.getViewLabels();d(a,function(r){var a=r.tickValue,s=o.getItemModel(a),l=s.getModel("label"),u=s.getModel("emphasis.label"),h=n.dataToCoord(r.tickValue),d=new i.Text({position:[h,0],rotation:t.labelRotation-t.rotation,onclick:c(this._changeTimeline,this,a),silent:!1});i.setTextStyle(d.style,l,{text:r.formattedLabel,textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline}),e.add(d),i.setHoverStyle(d,i.setTextStyle({},u))},this)}},_renderControl:function(t,e,n,r){var o=t.controlSize,a=t.rotation,s=r.getModel("controlStyle").getItemStyle(),l=r.getModel("emphasis.controlStyle").getItemStyle(),u=[0,-o/2,o,o],h=r.getPlayState(),d=r.get("inverse",!0);function p(t,n,h,c){if(t){var d=v(r,n,u,{position:t,origin:[o/2,0],rotation:c?-a:0,rectHover:!0,style:s,onclick:h});e.add(d),i.setHoverStyle(d,l)}}p(t.nextBtnPosition,"controlStyle.nextIcon",c(this._changeTimeline,this,d?"-":"+")),p(t.prevBtnPosition,"controlStyle.prevIcon",c(this._changeTimeline,this,d?"+":"-")),p(t.playPosition,"controlStyle."+(h?"stopIcon":"playIcon"),c(this._handlePlayClick,this,!h),!0)},_renderCurrentPointer:function(t,e,n,i){var r=i.getData(),o=i.getCurrentIndex(),a=r.getItemModel(o).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=c(s._handlePointerDrag,s),t.ondragend=c(s._handlePointerDragend,s),y(t,o,n,i,!0)},onUpdate:function(t){y(t,o,n,i)}};this._currentPointer=m(a,a,this._mainGroup,{},this._currentPointer,l)},_handlePlayClick:function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},_handlePointerDrag:function(t,e,n){this._clearTimer(),this._pointerChangeTimeline([n.offsetX,n.offsetY])},_handlePointerDragend:function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},_pointerChangeTimeline:function(t,e){var n=this._toAxisCoord(t)[0],i=this._axis,r=u.asc(i.getExtent().slice());n>r[1]&&(n=r[1]),n=0&&"number"==typeof h&&(h=+h.toFixed(Math.min(m,20))),g.coord[p]=v.coord[p]=h,o=[g,v,{type:l,valueIndex:o.valueIndex,value:h}]}return(o=[i.dataTransform(e,o[0]),i.dataTransform(e,o[1]),t.extend({},o[2])])[2].type=o[2].type||"",t.merge(o[2],o[0]),t.merge(o[2],o[1]),o};function l(t){return!isNaN(t)&&!isFinite(t)}function u(t,e,n,i){var r=1-t,o=i.dimensions[t];return l(e[r])&&l(n[r])&&e[t]===n[t]&&i.getAxis(o).containData(e[t])}function h(t,e){if("cartesian2d"===t.type){var n=e[0].coord,r=e[1].coord;if(n&&r&&(u(1,n,r,t)||u(0,n,r,t)))return!0}return i.dataFilter(t,e[0])&&i.dataFilter(t,e[1])}function c(t,e,i,r,o){var a,s=r.coordinateSystem,u=t.getItemModel(e),h=n.parsePercent(u.get("x"),o.getWidth()),c=n.parsePercent(u.get("y"),o.getHeight());if(isNaN(h)||isNaN(c)){if(r.getMarkerPosition)a=r.getMarkerPosition(t.getValues(t.dimensions,e));else{var d=s.dimensions,p=t.get(d[0],e),f=t.get(d[1],e);a=s.dataToPoint([p,f])}if("cartesian2d"===s.type){var g=s.getAxis("x"),v=s.getAxis("y");d=s.dimensions,l(t.get(d[0],e))?a[0]=g.toGlobalCoord(g.getExtent()[i?0:1]):l(t.get(d[1],e))&&(a[1]=v.toGlobalCoord(v.getExtent()[i?0:1]))}isNaN(h)||(a[0]=h),isNaN(c)||(a[1]=c)}else a=[h,c];t.setItemLayout(e,a)}var d=o.extend({type:"markLine",updateTransform:function(t,e,n){e.eachSeries(function(t){var e=t.markLineModel;if(e){var i=e.getData(),r=e.__from,o=e.__to;r.each(function(e){c(r,e,!0,t,n),c(o,e,!1,t,n)}),i.each(function(t){i.setItemLayout(t,[r.getItemLayout(t),o.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(e,n,i,o){var a=e.coordinateSystem,s=e.id,l=e.getData(),u=this.markerGroupMap,h=u.get(s)||u.set(s,new r);this.group.add(h.group);var d=p(a,e,n),f=d.from,g=d.to,v=d.line;n.__from=f,n.__to=g,n.setData(v);var m=n.get("symbol"),y=n.get("symbolSize");function x(t,n,i){var r=t.getItemModel(n);c(t,n,i,e,o),t.setItemVisual(n,{symbolRotate:r.get("symbolRotate"),symbolSize:r.get("symbolSize")||y[i?0:1],symbol:r.get("symbol",!0)||m[i?0:1],color:r.get("itemStyle.color")||l.getVisual("color")})}t.isArray(m)||(m=[m,m]),"number"==typeof y&&(y=[y,y]),d.from.each(function(t){x(f,t,!0),x(g,t,!1)}),v.each(function(t){var e=v.getItemModel(t).get("lineStyle.color");v.setItemVisual(t,{color:e||f.getItemVisual(t,"color")}),v.setItemLayout(t,[f.getItemLayout(t),g.getItemLayout(t)]),v.setItemVisual(t,{fromSymbolRotate:f.getItemVisual(t,"symbolRotate"),fromSymbolSize:f.getItemVisual(t,"symbolSize"),fromSymbol:f.getItemVisual(t,"symbol"),toSymbolRotate:g.getItemVisual(t,"symbolRotate"),toSymbolSize:g.getItemVisual(t,"symbolSize"),toSymbol:g.getItemVisual(t,"symbol")})}),h.updateData(v),d.line.eachItemGraphicEl(function(t,e){t.traverse(function(t){t.dataModel=n})}),h.__keep=!0,h.group.silent=n.get("silent")||e.get("silent")}});function p(n,r,o){var a;a=n?t.map(n&&n.dimensions,function(e){var n=r.getData().getDimensionInfo(r.getData().mapDimension(e))||{};return t.defaults({name:e},n)}):[{name:"value",type:"float"}];var l=new e(a,o),u=new e(a,o),c=new e([],o),d=t.map(o.get("data"),t.curry(s,r,n,o));n&&(d=t.filter(d,t.curry(h,n)));var p=n?i.dimValueGetter:function(t){return t.value};return l.initData(t.map(d,function(t){return t[0]}),null,p),u.initData(t.map(d,function(t){return t[1]}),null,p),c.initData(t.map(d,function(t){return t[2]})),c.hasItemOption=!0,{from:l,to:u,line:c}}Dtt=d}(),t.registerPreprocessor(function(t){t.markLine=t.markLine||{}})}(),function(){if(Ntt)return Btt;Ntt=1;var t=c$();(function(){if(Ott)return Ptt;Ott=1;var t=mtt(),e=t.extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}}});Ptt=e})(),function(){if(Rtt)return Gtt;Rtt=1;var t=IW(),e=cU(),n=rK(),i=qX(),r=FX(),o=Itt(),a=Ttt(),s=function(e,n,i,r){var a=o.dataTransform(e,r[0]),s=o.dataTransform(e,r[1]),l=t.retrieve,u=a.coord,h=s.coord;u[0]=l(u[0],-1/0),u[1]=l(u[1],-1/0),h[0]=l(h[0],1/0),h[1]=l(h[1],1/0);var c=t.mergeAll([{},a,s]);return c.coord=[a.coord,s.coord],c.x0=a.x,c.y0=a.y,c.x1=s.x,c.y1=s.y,c};function l(t){return!isNaN(t)&&!isFinite(t)}function u(t,e,n,i){var r=1-t;return l(e[r])&&l(n[r])}function h(t,e){var n=e.coord[0],i=e.coord[1];return!("cartesian2d"!==t.type||!n||!i||!u(1,n,i)&&!u(0,n,i))||o.dataFilter(t,{coord:n,x:e.x0,y:e.y0})||o.dataFilter(t,{coord:i,x:e.x1,y:e.y1})}function c(t,e,n,r,o){var a,s=r.coordinateSystem,u=t.getItemModel(e),h=i.parsePercent(u.get(n[0]),o.getWidth()),c=i.parsePercent(u.get(n[1]),o.getHeight());if(isNaN(h)||isNaN(c)){if(r.getMarkerPosition)a=r.getMarkerPosition(t.getValues(n,e));else{var d=[g=t.get(n[0],e),v=t.get(n[1],e)];s.clampData&&s.clampData(d,d),a=s.dataToPoint(d,!0)}if("cartesian2d"===s.type){var p=s.getAxis("x"),f=s.getAxis("y"),g=t.get(n[0],e),v=t.get(n[1],e);l(g)?a[0]=p.toGlobalCoord(p.getExtent()["x0"===n[0]?0:1]):l(v)&&(a[1]=f.toGlobalCoord(f.getExtent()["y0"===n[1]?0:1]))}isNaN(h)||(a[0]=h),isNaN(c)||(a[1]=c)}else a=[h,c];return a}var d=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];function p(e,i,r){var o,a,l=["x0","y0","x1","y1"];e?(o=t.map(e&&e.dimensions,function(e){var n=i.getData(),r=n.getDimensionInfo(n.mapDimension(e))||{};return t.defaults({name:e},r)}),a=new n(t.map(l,function(t,e){return{name:t,type:o[e%2].type}}),r)):a=new n(o=[{name:"value",type:"float"}],r);var u=t.map(r.get("data"),t.curry(s,i,e,r));e&&(u=t.filter(u,t.curry(h,e)));var c=e?function(t,e,n,i){return t.coord[Math.floor(i/2)][i%2]}:function(t){return t.value};return a.initData(u,null,c),a.hasItemOption=!0,a}a.extend({type:"markArea",updateTransform:function(e,n,i){n.eachSeries(function(e){var n=e.markAreaModel;if(n){var r=n.getData();r.each(function(n){var o=t.map(d,function(t){return c(r,n,t,e,i)});r.setItemLayout(n,o),r.getItemGraphicEl(n).setShape("points",o)})}},this)},renderSeries:function(n,i,o,a){var s=n.coordinateSystem,u=n.id,h=n.getData(),f=this.markerGroupMap,g=f.get(u)||f.set(u,{group:new r.Group});this.group.add(g.group),g.__keep=!0;var v=p(s,n,i);i.setData(v),v.each(function(e){var i=t.map(d,function(t){return c(v,e,t,n,a)}),r=!0;t.each(d,function(t){if(r){var n=v.get(t[0],e),i=v.get(t[1],e);(l(n)||s.getAxis("x").containData(n))&&(l(i)||s.getAxis("y").containData(i))&&(r=!1)}}),v.setItemLayout(e,{points:i,allClipped:r}),v.setItemVisual(e,{color:h.getVisual("color")})}),v.diff(g.__data).add(function(t){var e=v.getItemLayout(t);if(!e.allClipped){var n=new r.Polygon({shape:{points:e.points}});v.setItemGraphicEl(t,n),g.group.add(n)}}).update(function(t,e){var n=g.__data.getItemGraphicEl(e),o=v.getItemLayout(t);o.allClipped?n&&g.group.remove(n):(n?r.updateProps(n,{shape:{points:o.points}},i,t):n=new r.Polygon({shape:{points:o.points}}),v.setItemGraphicEl(t,n),g.group.add(n))}).remove(function(t){var e=g.__data.getItemGraphicEl(t);g.group.remove(e)}).execute(),v.eachItemGraphicEl(function(n,o){var a=v.getItemModel(o),s=a.getModel("label"),l=a.getModel("emphasis.label"),u=v.getItemVisual(o,"color");n.useStyle(t.defaults(a.getModel("itemStyle").getItemStyle(),{fill:e.modifyAlpha(u,.4),stroke:u})),n.hoverStyle=a.getModel("emphasis.itemStyle").getItemStyle(),r.setLabelStyle(n.style,n.hoverStyle,s,l,{labelFetcher:i,labelDataIndex:o,defaultText:v.getName(o)||"",isRectText:!0,autoColor:u}),r.setHoverStyle(n,{}),n.dataModel=i}),g.__data=v,g.group.silent=i.get("silent")||n.get("silent")}})}(),t.registerPreprocessor(function(t){t.markArea=t.markArea||{}})}(),ret||(ret=1,net(),function(){if(Ktt)return qtt;Ktt=1;var t=Htt(),e=lj(),n=e.mergeLayoutParam,i=e.getLayoutParams,r=t.extend({type:"legend.scroll",setScrollDataIndex:function(t){this.option.scrollDataIndex=t},defaultOption:{scrollDataIndex:0,pageButtonItemGap:5,pageButtonGap:null,pageButtonPosition:"end",pageFormatter:"{current}/{total}",pageIcons:{horizontal:["M0,0L12,-10L12,10z","M0,0L-12,-10L-12,10z"],vertical:["M0,0L20,0L10,-20z","M0,0L20,0L10,20z"]},pageIconColor:"#2f4554",pageIconInactiveColor:"#aaa",pageIconSize:15,pageTextStyle:{color:"#333"},animationDurationUpdate:800},init:function(t,e,n,a){var s=i(t);r.superCall(this,"init",t,e,n,a),o(this,t,s)},mergeOption:function(t,e){r.superCall(this,"mergeOption",t,e),o(this,this.option,t)}});function o(t,e,i){var r=[1,1];r[t.getOrient().index]=0,n(e,i,{type:"box",ignoreSize:r})}var a=r;qtt=a}(),function(){if(Jtt)return $tt;Jtt=1;var t=IW(),e=FX(),n=lj(),i=tet(),r=e.Group,o=["width","height"],a=["x","y"],s=i.extend({type:"legend.scroll",newlineDisabled:!0,init:function(){s.superCall(this,"init"),this._currentIndex=0,this.group.add(this._containerGroup=new r),this._containerGroup.add(this.getContentGroup()),this.group.add(this._controllerGroup=new r),this._showController},resetInner:function(){s.superCall(this,"resetInner"),this._controllerGroup.removeAll(),this._containerGroup.removeClipPath(),this._containerGroup.__rectSize=null},renderInner:function(n,i,r,o,a,l,u){var h=this;s.superCall(this,"renderInner",n,i,r,o,a,l,u);var c=this._controllerGroup,d=i.get("pageIconSize",!0);t.isArray(d)||(d=[d,d]),f("pagePrev",0);var p=i.getModel("pageTextStyle");function f(n,r){var a=n+"DataIndex",s=e.createIcon(i.get("pageIcons",!0)[i.getOrient().name][r],{onclick:t.bind(h._pageGo,h,a,i,o)},{x:-d[0]/2,y:-d[1]/2,width:d[0],height:d[1]});s.name=n,c.add(s)}c.add(new e.Text({name:"pageText",style:{textFill:p.getTextColor(),font:p.getFont(),textVerticalAlign:"middle",textAlign:"center"},silent:!0})),f("pageNext",1)},layoutInner:function(e,i,r,s,l,u){var h=this.getSelectorGroup(),c=e.getOrient().index,d=o[c],p=a[c],f=o[1-c],g=a[1-c];l&&n.box("horizontal",h,e.get("selectorItemGap",!0));var v=e.get("selectorButtonGap",!0),m=h.getBoundingRect(),y=[-m.x,-m.y],x=t.clone(r);l&&(x[d]=r[d]-m[d]-v);var _=this._layoutContentAndController(e,s,x,c,d,f,g);if(l){if("end"===u)y[c]+=_[d]+v;else{var b=m[d]+v;y[c]-=b,_[p]-=b}_[d]+=m[d]+v,y[1-c]+=_[g]+_[f]/2-m[f]/2,_[f]=Math.max(_[f],m[f]),_[g]=Math.min(_[g],m[g]+y[1-c]),h.attr("position",y)}return _},_layoutContentAndController:function(i,r,o,a,s,l,u){var h=this.getContentGroup(),c=this._containerGroup,d=this._controllerGroup;n.box(i.get("orient"),h,i.get("itemGap"),a?o.width:null,a?null:o.height),n.box("horizontal",d,i.get("pageButtonItemGap",!0));var p=h.getBoundingRect(),f=d.getBoundingRect(),g=this._showController=p[s]>o[s],v=[-p.x,-p.y];r||(v[a]=h.position[a]);var m=[0,0],y=[-f.x,-f.y],x=t.retrieve2(i.get("pageButtonGap",!0),i.get("itemGap",!0));g&&("end"===i.get("pageButtonPosition",!0)?y[a]+=o[s]-f[s]:m[a]+=f[s]+x),y[1-a]+=p[l]/2-f[l]/2,h.attr("position",v),c.attr("position",m),d.attr("position",y);var _={x:0,y:0};if(_[s]=g?o[s]:p[s],_[l]=Math.max(p[l],f[l]),_[u]=Math.min(0,f[u]+y[1-a]),c.__rectSize=o[s],g){var b={x:0,y:0};b[s]=Math.max(o[s]-f[s]-x,0),b[l]=_[l],c.setClipPath(new e.Rect({shape:b})),c.__rectSize=b[s]}else d.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var w=this._getPageInfo(i);return null!=w.pageIndex&&e.updateProps(h,{position:w.contentPosition},!!g&&i),this._updatePageInfoView(i,w),_},_pageGo:function(t,e,n){var i=this._getPageInfo(e)[t];null!=i&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:e.id})},_updatePageInfoView:function(e,n){var i=this._controllerGroup;t.each(["pagePrev","pageNext"],function(t){var r=null!=n[t+"DataIndex"],o=i.childOfName(t);o&&(o.setStyle("fill",r?e.get("pageIconColor",!0):e.get("pageIconInactiveColor",!0)),o.cursor=r?"pointer":"default")});var r=i.childOfName("pageText"),o=e.get("pageFormatter"),a=n.pageIndex,s=null!=a?a+1:0,l=n.pageCount;r&&o&&r.setStyle("text",t.isString(o)?o.replace("{current}",s).replace("{total}",l):o({current:s,total:l}))},_getPageInfo:function(t){var e=t.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,r=t.getOrient().index,s=o[r],l=a[r],u=this._findTargetItemIndex(e),h=n.children(),c=h[u],d=h.length,p=d?1:0,f={contentPosition:n.position.slice(),pageCount:p,pageIndex:p-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!c)return f;var g=_(c);f.contentPosition[r]=-g.s;for(var v=u+1,m=g,y=g,x=null;v<=d;++v)(!(x=_(h[v]))&&y.e>m.s+i||x&&!b(x,m.s))&&(m=y.i>m.i?y:x)&&(null==f.pageNextDataIndex&&(f.pageNextDataIndex=m.i),++f.pageCount),y=x;for(v=u-1,m=g,y=g,x=null;v>=-1;--v)(x=_(h[v]))&&b(y,x.s)||!(m.i=e&&t.s<=e+i}},_findTargetItemIndex:function(t){return this._showController?(this.getContentGroup().eachChild(function(i,r){var o=i.__legendDataIndex;null==n&&null!=o&&(n=r),o===t&&(e=r)}),null!=e?e:n):0;var e,n}}),l=s;$tt=l}(),function(){if(iet)return cet;iet=1;var t=c$();t.registerAction("legendScroll","legendscroll",function(t,e){var n=t.scrollDataIndex;null!=n&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},function(t){t.setScrollDataIndex(n)})})}()),net(),_et||(_et=1,pet(),Met()),Met(),pet(),lnt||(lnt=1,nnt(),hnt()),nnt(),hnt(),function(){if(gnt)return vnt;gnt=1,function(){if(dnt)return mnt;dnt=1;var t=wW(),e=PW().applyTransform,n=NU(),i=cU(),r=oY(),o=SY(),a=MY(),s=IY(),l=TY(),u=BZ(),h=EZ(),c=QY(),d=VX(),p=xnt(),f=c.CMD,g=Math.round,v=Math.sqrt,m=Math.abs,y=Math.cos,x=Math.sin,_=Math.max;if(!t.canvasSupported){var b=",",w="progid:DXImageTransform.Microsoft",S=21600,M=S/2,I=1e5,T=1e3,C=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=S+","+S,t.coordorigin="0,0"},A=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},D=function(t,e,n){return"rgb("+[t,e,n].join(",")+")"},L=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},k=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},P=function(t,e,n){return(parseFloat(t)||0)*I+(parseFloat(e)||0)*T+n},O=o.parsePercent,R=function(t,e,n){var r=i.parse(e);n=+n,isNaN(n)&&(n=1),r&&(t.color=D(r[0],r[1],r[2]),t.opacity=n*r[3])},N=function(t){var e=i.parse(t);return[D(e[0],e[1],e[2]),e[3]]},E=function(t,n,i){var r=n.fill;if(null!=r)if(r instanceof d){var o,a=0,s=[0,0],l=0,u=1,h=i.getBoundingRect(),c=h.width,p=h.height;if("linear"===r.type){o="gradient";var f=i.transform,g=[r.x*c,r.y*p],v=[r.x2*c,r.y2*p];f&&(e(g,g,f),e(v,v,f));var m=v[0]-g[0],y=v[1]-g[1];(a=180*Math.atan2(m,y)/Math.PI)<0&&(a+=360),a<1e-6&&(a=0)}else{o="gradientradial",g=[r.x*c,r.y*p],f=i.transform;var x=i.scale,b=c,w=p;s=[(g[0]-h.x)/b,(g[1]-h.y)/w],f&&e(g,g,f),b/=x[0]*S,w/=x[1]*S;var M=_(b,w);l=0/M,u=2*r.r/M-l}var I=r.colorStops.slice();I.sort(function(t,e){return t.offset-e.offset});for(var T=I.length,C=[],A=[],D=0;D=2){var P=C[0][0],O=C[1][0],E=C[0][1]*n.opacity,z=C[1][1]*n.opacity;t.type=o,t.method="none",t.focus="100%",t.angle=a,t.color=P,t.color2=O,t.colors=A.join(","),t.opacity=z,t.opacity2=E}"radial"===o&&(t.focusposition=s.join(","))}else R(t,r,n.opacity)},z=function(t,e){e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof d||R(t,e.stroke,e.opacity)},V=function(t,e,n,i){var r="fill"===e,o=t.getElementsByTagName(e)[0];null!=n[e]&&"none"!==n[e]&&(r||!r&&n.lineWidth)?(t[r?"filled":"stroked"]="true",n[e]instanceof d&&k(t,o),o||(o=p.createNode(e)),r?E(o,n,i):z(o,n),L(t,o)):(t[r?"filled":"stroked"]="false",k(t,o))},B=[[],[],[]],G=function(t,n){var i,r,o,a,s,l,u=f.M,h=f.C,c=f.L,d=f.A,p=f.Q,m=[],_=t.data,w=t.len();for(a=0;a.01?W&&(U+=270/S):Math.abs(Y-z)<1e-4?W&&UE?A-=270/S:A+=270/S:W&&Yz?C+=270/S:C-=270/S),m.push(Z,g(((E-V)*O+k)*S-M),b,g(((z-G)*R+P)*S-M),b,g(((E+V)*O+k)*S-M),b,g(((z+G)*R+P)*S-M),b,g((U*O+k)*S-M),b,g((Y*R+P)*S-M),b,g((C*O+k)*S-M),b,g((A*R+P)*S-M)),s=C,l=A;break;case f.R:var X=B[0],j=B[1];X[0]=_[a++],X[1]=_[a++],j[0]=X[0]+_[a++],j[1]=X[1]+_[a++],n&&(e(X,X,n),e(j,j,n)),X[0]=g(X[0]*S-M),j[0]=g(j[0]*S-M),X[1]=g(X[1]*S-M),j[1]=g(j[1]*S-M),m.push(" m ",X[0],b,X[1]," l ",j[0],b,X[1]," l ",j[0],b,j[1]," l ",X[0],b,j[1]);break;case f.Z:m.push(" x ")}if(i>0){m.push(r);for(var q=0;qZ&&(Y=0,U={});var n,i=X.style;try{i.font=t,n=i.fontFamily.split(",")[0]}catch(Fu){}e={style:i.fontStyle||W,variant:i.fontVariant||W,weight:i.fontWeight||W,size:0|parseFloat(i.fontSize||12),family:n||"Microsoft YaHei"},U[t]=e,Y++}return e};r.$override("measureText",function(t,e){var n=p.doc;H||((H=n.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",p.doc.body.appendChild(H));try{H.style.font=e}catch(i){}return H.innerHTML="",H.appendChild(n.createTextNode(t)),{width:H.offsetWidth}});for(var q=new n,K=function(t,n,i,a){var s=this.style;this.__dirty&&o.normalizeTextStyle(s,!0);var l=s.text;if(null!=l&&(l+=""),l){if(s.rich){var u=r.parseRichText(l,s);l=[];for(var h=0;h{r=e.m,i=e.i,n=e.A,a=e.L,o=e.p,s=e.R,l=e.g,h=e.r,u=e.e,c=e.a,d=e.b,f=e.c,p=e.d,m=e.Z,g=e.C,_=e.f,v=e.h,y=e.j,x=e.k,b=e.M,T=e.l,w=e.n,S=e.o,M=e.q,A=e.s,E=e.t,D=e.u,C=e.v,L=e.w,P=e.x,O=e.y,N=e.O,R=e.z,I=e.B,B=e.D,z=e.E,F=e.S,G=e.F,U=e.G,H=e.H,V=e.I,k=e.J,W=e.K,j=e.N,X=e.P,q=e.Q,Z=e.T,Y=e.U,K=e.V,Q=e.W,J=e.X,$=e.Y,ee=e._,te=e.$,re=e.a0,ie=e.a1,ne=e.a2,ae=e.a3,oe=e.a4,se=e.a5,le=e.a6,he=e.a7,ue=e.a8,ce=e.a9,de=e.aa,fe=e.ab}],execute:function(){function t(e,t,r){"object"==typeof t&&(r=t,t=null);var i,n=this;if(!(e instanceof Function))for(var a in i=[],e)e.hasOwnProperty(a)&&i.push(a);var o=function(t){if(n.apply(this,arguments),e instanceof Function?pe(this,e.call(this,t)):function(e,t,r){for(var i=0;i=400?e.onerror&&e.onerror():e.onload&&e.onload(t.response)},e.onerror&&(t.onerror=e.onerror),t.send(null)}};var bt,Tt={supportWebGL:function(){if(null==bt)try{var e=document.createElement("canvas");if(!e.getContext("webgl")&&!e.getContext("experimental-webgl"))throw new Error}catch(ch){bt=!1}return bt}};Tt.Int8Array="undefined"==typeof Int8Array?Array:Int8Array,Tt.Uint8Array="undefined"==typeof Uint8Array?Array:Uint8Array,Tt.Uint16Array="undefined"==typeof Uint16Array?Array:Uint16Array,Tt.Uint32Array="undefined"==typeof Uint32Array?Array:Uint32Array,Tt.Int16Array="undefined"==typeof Int16Array?Array:Int16Array,Tt.Float32Array="undefined"==typeof Float32Array?Array:Float32Array,Tt.Float64Array="undefined"==typeof Float64Array?Array:Float64Array;var wt={};"undefined"!=typeof window?wt=window:"undefined"!=typeof global&&(wt=global),Tt.requestAnimationFrame=wt.requestAnimationFrame||wt.msRequestAnimationFrame||wt.mozRequestAnimationFrame||wt.webkitRequestAnimationFrame||function(e){setTimeout(e,16)},Tt.createCanvas=function(){return document.createElement("canvas")},Tt.createImage=function(){return new wt.Image},Tt.request={get:xt.get},Tt.addEventListener=function(e,t,r,i){e.addEventListener(t,r,i)},Tt.removeEventListener=function(e,t,r){e.removeEventListener(t,r)};var St=function(){this.head=null,this.tail=null,this._length=0};St.prototype.insert=function(e){var t=new St.Entry(e);return this.insertEntry(t),t},St.prototype.insertAt=function(e,t){if(!(e<0)){for(var r=this.head,i=0;r&&i!=e;)r=r.next,i++;if(r){var n=new St.Entry(t),a=r.prev;a?(a.next=n,n.prev=a):this.head=n,n.next=r,r.prev=n}else this.insert(t)}},St.prototype.insertBeforeEntry=function(e,t){var r=new St.Entry(e),i=t.prev;i?(i.next=r,r.prev=i):this.head=r,r.next=t,t.prev=r,this._length++},St.prototype.insertEntry=function(e){this.head?(this.tail.next=e,e.prev=this.tail,this.tail=e):this.head=this.tail=e,this._length++},St.prototype.remove=function(e){var t=e.prev,r=e.next;t?t.next=r:this.head=r,r?r.prev=t:this.tail=t,e.next=e.prev=null,this._length--},St.prototype.removeAt=function(e){if(!(e<0)){for(var t=this.head,r=0;t&&r!=e;)t=t.next,r++;return t?(this.remove(t),t.value):void 0}},St.prototype.getHead=function(){if(this.head)return this.head.value},St.prototype.getTail=function(){if(this.tail)return this.tail.value},St.prototype.getAt=function(e){if(!(e<0)){for(var t=this.head,r=0;t&&r!=e;)t=t.next,r++;return t.value}},St.prototype.indexOf=function(e){for(var t=this.head,r=0;t;){if(t.value===e)return r;t=t.next,r++}},St.prototype.length=function(){return this._length},St.prototype.isEmpty=function(){return 0===this._length},St.prototype.forEach=function(e,t){for(var r=this.head,i=0,n=void 0!==t;r;)n?e.call(t,r.value,i):e(r.value,i),r=r.next,i++},St.prototype.clear=function(){this.tail=this.head=null,this._length=0},St.Entry=function(e){this.value=e,this.next=null,this.prev=null};var Mt=function(e){this._list=new St,this._map={},this._maxSize=e||10};Mt.prototype.setMaxSize=function(e){this._maxSize=e},Mt.prototype.put=function(e,t){if(!this._map.hasOwnProperty(e)){var r=this._list.length();if(r>=this._maxSize&&r>0){var i=this._list.head;this._list.remove(i),delete this._map[i.key]}var n=this._list.insert(t);n.key=e,this._map[e]=n}},Mt.prototype.get=function(e){var t=this._map[e];if(this._map.hasOwnProperty(e))return t!==this._list.tail&&(this._list.remove(t),this._list.insertEntry(t)),t.value},Mt.prototype.remove=function(e){var t=this._map[e];void 0!==t&&(delete this._map[e],this._list.remove(t))},Mt.prototype.clear=function(){this._list.clear(),this._map={}};var At={},Et={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Dt(e){return(e=Math.round(e))<0?0:e>255?255:e}function Ct(e){return e<0?0:e>1?1:e}function Lt(e){return e.length&&"%"===e.charAt(e.length-1)?Dt(parseFloat(e)/100*255):Dt(parseInt(e,10))}function Pt(e){return e.length&&"%"===e.charAt(e.length-1)?Ct(parseFloat(e)/100):Ct(parseFloat(e))}function Ot(e,t,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?e+(t-e)*r*6:2*r<1?t:3*r<2?e+(t-e)*(2/3-r)*6:e}function Nt(e,t,r){return e+(t-e)*r}function Rt(e,t,r,i,n){return e[0]=t,e[1]=r,e[2]=i,e[3]=n,e}function It(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}var Bt=new Mt(20),zt=null;function Ft(e,t){zt&&It(zt,t),zt=Bt.put(e,zt||t.slice())}function Gt(e,t){var r=(parseFloat(e[0])%360+360)%360/360,i=Pt(e[1]),n=Pt(e[2]),a=n<=.5?n*(i+1):n+i-n*i,o=2*n-a;return Rt(t=t||[],Dt(255*Ot(o,a,r+1/3)),Dt(255*Ot(o,a,r)),Dt(255*Ot(o,a,r-1/3)),1),4===e.length&&(t[3]=e[3]),t}At.parse=function(e,t){if(e){t=t||[];var r=Bt.get(e);if(r)return It(t,r);var i,n=(e+="").replace(/ /g,"").toLowerCase();if(n in Et)return It(t,Et[n]),Ft(e,t),t;if("#"===n.charAt(0))return 4===n.length?(i=parseInt(n.substr(1),16))>=0&&i<=4095?(Rt(t,(3840&i)>>4|(3840&i)>>8,240&i|(240&i)>>4,15&i|(15&i)<<4,1),Ft(e,t),t):void Rt(t,0,0,0,1):7===n.length?(i=parseInt(n.substr(1),16))>=0&&i<=16777215?(Rt(t,(16711680&i)>>16,(65280&i)>>8,255&i,1),Ft(e,t),t):void Rt(t,0,0,0,1):void 0;var a=n.indexOf("("),o=n.indexOf(")");if(-1!==a&&o+1===n.length){var s=n.substr(0,a),l=n.substr(a+1,o-(a+1)).split(","),h=1;switch(s){case"rgba":if(4!==l.length)return void Rt(t,0,0,0,1);h=Pt(l.pop());case"rgb":return 3!==l.length?void Rt(t,0,0,0,1):(Rt(t,Lt(l[0]),Lt(l[1]),Lt(l[2]),h),Ft(e,t),t);case"hsla":return 4!==l.length?void Rt(t,0,0,0,1):(l[3]=Pt(l[3]),Gt(l,t),Ft(e,t),t);case"hsl":return 3!==l.length?void Rt(t,0,0,0,1):(Gt(l,t),Ft(e,t),t);default:return}}Rt(t,0,0,0,1)}},At.parseToFloat=function(e,t){if(t=At.parse(e,t))return t[0]/=255,t[1]/=255,t[2]/=255,t},At.lift=function(e,t){var r=At.parse(e);if(r){for(var i=0;i<3;i++)r[i]=t<0?r[i]*(1-t)|0:(255-r[i])*t+r[i]|0;return At.stringify(r,4===r.length?"rgba":"rgb")}},At.toHex=function(e){var t=At.parse(e);if(t)return((1<<24)+(t[0]<<16)+(t[1]<<8)+ +t[2]).toString(16).slice(1)},At.fastLerp=function(e,t,r){if(t&&t.length&&e>=0&&e<=1){r=r||[];var i=e*(t.length-1),n=Math.floor(i),a=Math.ceil(i),o=t[n],s=t[a],l=i-n;return r[0]=Dt(Nt(o[0],s[0],l)),r[1]=Dt(Nt(o[1],s[1],l)),r[2]=Dt(Nt(o[2],s[2],l)),r[3]=Ct(Nt(o[3],s[3],l)),r}},At.fastMapToColor=At.fastLerp,At.lerp=function(e,t,r){if(t&&t.length&&e>=0&&e<=1){var i=e*(t.length-1),n=Math.floor(i),a=Math.ceil(i),o=At.parse(t[n]),s=At.parse(t[a]),l=i-n,h=At.stringify([Dt(Nt(o[0],s[0],l)),Dt(Nt(o[1],s[1],l)),Dt(Nt(o[2],s[2],l)),Ct(Nt(o[3],s[3],l))],"rgba");return r?{color:h,leftIndex:n,rightIndex:a,value:i}:h}},At.mapToColor=At.lerp,At.modifyHSL=function(e,t,r,i){if(e=At.parse(e))return e=function(e){if(e){var t,r,i=e[0]/255,n=e[1]/255,a=e[2]/255,o=Math.min(i,n,a),s=Math.max(i,n,a),l=s-o,h=(s+o)/2;if(0===l)t=0,r=0;else{r=h<.5?l/(s+o):l/(2-s-o);var u=((s-i)/6+l/2)/l,c=((s-n)/6+l/2)/l,d=((s-a)/6+l/2)/l;i===s?t=d-c:n===s?t=1/3+u-d:a===s&&(t=2/3+c-u),t<0&&(t+=1),t>1&&(t-=1)}var f=[360*t,r,h];return null!=e[3]&&f.push(e[3]),f}}(e),null!=t&&(e[0]=(n=t,(n=Math.round(n))<0?0:n>360?360:n)),null!=r&&(e[1]=Pt(r)),null!=i&&(e[2]=Pt(i)),At.stringify(Gt(e),"rgba");var n},At.modifyAlpha=function(e,t){if((e=At.parse(e))&&null!=t)return e[3]=Ct(t),At.stringify(e,"rgba")},At.stringify=function(e,t){if(e&&e.length){var r=e[0]+","+e[1]+","+e[2];return"rgba"!==t&&"hsva"!==t&&"hsla"!==t||(r+=","+e[3]),t+"("+r+")"}};var Ut=At.parseToFloat,Ht={};function Vt(e){var t=Object.keys(e);t.sort();for(var r=[],i=0;i=0},getEnabledUniforms:function(){return this._enabledUniforms},getTextureUniforms:function(){return this._textureUniforms},set:function(e,t){if("object"==typeof e)for(var r in e){var i=e[r];this.setUniform(r,i)}else this.setUniform(e,t)},get:function(e){var t=this.uniforms[e];if(t)return t.value},attachShader:function(e,t){var r=this.uniforms;this.uniforms=e.createUniforms(),this.shader=e;var i=this.uniforms;this._enabledUniforms=Object.keys(i),this._enabledUniforms.sort(),this._textureUniforms=this._enabledUniforms.filter(function(e){var t=this.uniforms[e].type;return"t"===t||"tv"===t},this);var n=this.vertexDefines,a=this.fragmentDefines;if(this.vertexDefines=xe.clone(e.vertexDefines),this.fragmentDefines=xe.clone(e.fragmentDefines),t){for(var o in r)i[o]&&(i[o].value=r[o].value);xe.defaults(this.vertexDefines,n),xe.defaults(this.fragmentDefines,a)}var s={};for(var l in e.textures)s[l]={shaderType:e.textures[l].shaderType,type:e.textures[l].type,enabled:!(!t||!this._textureStatus[l])&&this._textureStatus[l].enabled};this._textureStatus=s,this._programKey=""},clone:function(){var e=new this.constructor({name:this.name,shader:this.shader});for(var t in this.uniforms)e.uniforms[t].value=this.uniforms[t].value;return e.depthTest=this.depthTest,e.depthMask=this.depthMask,e.transparent=this.transparent,e.blend=this.blend,e.vertexDefines=xe.clone(this.vertexDefines),e.fragmentDefines=xe.clone(this.fragmentDefines),e.enableTexture(this.getEnabledTextures()),e.precision=this.precision,e},define:function(e,t,r){var i=this.vertexDefines,n=this.fragmentDefines;"vertex"!==e&&"fragment"!==e&&"both"!==e&&arguments.length<3&&(r=t,t=e,e="both"),r=null!=r?r:null,"vertex"!==e&&"both"!==e||i[t]!==r&&(i[t]=r,this._programKey=""),"fragment"!==e&&"both"!==e||n[t]!==r&&(n[t]=r,"both"!==e&&(this._programKey=""))},undefine:function(e,t){"vertex"!==e&&"fragment"!==e&&"both"!==e&&arguments.length<2&&(t=e,e="both"),"vertex"!==e&&"both"!==e||this.isDefined("vertex",t)&&(delete this.vertexDefines[t],this._programKey=""),"fragment"!==e&&"both"!==e||this.isDefined("fragment",t)&&(delete this.fragmentDefines[t],"both"!==e&&(this._programKey=""))},isDefined:function(e,t){switch(e){case"vertex":return void 0!==this.vertexDefines[t];case"fragment":return void 0!==this.fragmentDefines[t]}},getDefine:function(e,t){switch(e){case"vertex":return this.vertexDefines[t];case"fragment":return this.fragmentDefines[t]}},enableTexture:function(e){if(Array.isArray(e))for(var t=0;t0&&(n=1/Math.sqrt(n),e[0]=t[0]*n,e[1]=t[1]*n),e},Zt.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]},Zt.cross=function(e,t,r){var i=t[0]*r[1]-t[1]*r[0];return e[0]=e[1]=0,e[2]=i,e},Zt.lerp=function(e,t,r,i){var n=t[0],a=t[1];return e[0]=n+i*(r[0]-n),e[1]=a+i*(r[1]-a),e},Zt.random=function(e,t){t=t||1;var r=2*GLMAT_RANDOM()*Math.PI;return e[0]=Math.cos(r)*t,e[1]=Math.sin(r)*t,e},Zt.transformMat2=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[2]*n,e[1]=r[1]*i+r[3]*n,e},Zt.transformMat2d=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[2]*n+r[4],e[1]=r[1]*i+r[3]*n+r[5],e},Zt.transformMat3=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[3]*n+r[6],e[1]=r[1]*i+r[4]*n+r[7],e},Zt.transformMat4=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[4]*n+r[12],e[1]=r[1]*i+r[5]*n+r[13],e},Zt.forEach=(kt=Zt.create(),function(e,t,r,i,n,a){var o,s;for(t||(t=2),r||(r=0),s=i?Math.min(i*t+r,e.length):e.length,o=r;o0&&i.push("#define "+n.toUpperCase()+"_COUNT "+a)}if(r)for(var o=0;ol.getMaxJointNumber()&&(d.USE_SKIN_MATRICES_TEXTURE=null),c+="\n"+nr(d)+"\n"}a&&(c+="\n#define INSTANCING\n");var f=c+nr(t.vertexDefines,s,u),p=c+nr(t.fragmentDefines,s,u),m=f+"\n"+t.shader.vertex,g=["OES_standard_derivatives","EXT_shader_texture_lod"].filter(function(e){return null!=l.getGLExtension(e)});g.indexOf("EXT_shader_texture_lod")>=0&&(p+="\n#define SUPPORT_TEXTURE_LOD"),g.indexOf("OES_standard_derivatives")>=0&&(p+="\n#define SUPPORT_STANDARD_DERIVATIVES");var _,v,y=function(e){for(var t=[],r=0;r=0){if(1!==s&&4!==s){yr();break}s=2,h=[]}else if(1!==s)if(4!==s)u(c),s=0;else{var d=c;dr.indexOf(d)>=0||fr.indexOf(d)>=0||pr.indexOf(d)>=0?l[o].semantic=d:"ignore"===d||"unconfigurable"===d?l[o].ignore=!0:l[o].value="bool"===e?"true"===d:parseFloat(d)}else l[o].value="bool"===e?"true"===c:parseFloat(c),h=null;else{if(2!==s){yr();break}if(!(h instanceof Array)){yr();break}h.push(+i[++a])}else l[o].value=new Tt.Float32Array(h),h=null,s=5;else if(2===s){if(!(h instanceof Array)){yr();break}h.push(+i[++a])}else s=5;else s=4;else{if(0!==s&&3!==s){yr();break}s=1}}return l}function br(e,t){"object"==typeof e&&(t=e.fragment,e=e.vertex),e=vr(e),t=vr(t),this._shaderID=function(e,t){var r="vertex:"+e+"fragment:"+t;if(gr[r])return gr[r];var i=xe.genGUID();return gr[r]=i,_r[i]={vertex:e,fragment:t},i}(e,t),this._vertexCode=br.parseImport(e),this._fragmentCode=br.parseImport(t),this.attributeSemantics={},this.matrixSemantics={},this.uniformSemantics={},this.matrixSemanticKeys=[],this.uniformTemplates={},this.attributes={},this.textures={},this.vertexDefines={},this.fragmentDefines={},this._parseAttributes(),this._parseUniforms(),this._parseDefines()}br.prototype={constructor:br,createUniforms:function(){var e={};for(var t in this.uniformTemplates){var r=this.uniformTemplates[t];e[t]={type:r.type,value:r.value()}}return e},_parseImport:function(){this._vertexCode=br.parseImport(this.vertex),this._fragmentCode=br.parseImport(this.fragment)},_addSemanticUniform:function(e,t,r){if(dr.indexOf(r)>=0)this.attributeSemantics[r]={symbol:e,type:t};else if(pr.indexOf(r)>=0){var i=!1,n=r;r.match(/TRANSPOSE$/)&&(i=!0,n=r.slice(0,-9)),this.matrixSemantics[r]={symbol:e,type:t,isTranspose:i,semanticNoTranspose:n}}else fr.indexOf(r)>=0&&(this.uniformSemantics[r]={symbol:e,type:t})},_addMaterialUniform:function(e,t,r,i,n,a){a[e]={type:r,value:n?cr.array:i||cr[t],semantic:null}},_parseUniforms:function(){var e={},t=this,r="vertex";function i(e){return null!=e?function(){return e}:null}function n(n,a,o){var s=xr(a,o),l=[];for(var h in s){var u=s[h],c=u.semantic,d=h,f=hr[a],p=i(s[h].value);s[h].isArray&&(d+="["+s[h].arraySize+"]",f+="v"),l.push(d),t._uniformList.push(h),u.ignore||("sampler2D"!==a&&"samplerCube"!==a||(t.textures[h]={shaderType:r,type:a}),c?t._addSemanticUniform(h,f,c):t._addMaterialUniform(h,a,f,p,s[h].isArray,e))}return l.length>0?"uniform "+a+" "+l.join(",")+";\n":""}this._uniformList=[],this._vertexCode=this._vertexCode.replace(or,n),r="fragment",this._fragmentCode=this._fragmentCode.replace(or,n),t.matrixSemanticKeys=Object.keys(this.matrixSemantics),this.uniformTemplates=e},_parseAttributes:function(){var e={},t=this;this._vertexCode=this._vertexCode.replace(sr,function(r,i,n){var a=xr(i,n),o=mr[i]||1,s=[];for(var l in a){var h=a[l].semantic;if(e[l]={type:"float",size:o,semantic:h||null},h){if(dr.indexOf(h)<0)throw new Error('Unkown semantic "'+h+'"');t.attributeSemantics[h]={symbol:l,type:i}}s.push(l)}return"attribute "+i+" "+s.join(",")+";\n"}),this.attributes=e},_parseDefines:function(){var e=this,t="vertex";function r(r,i,n){var a="vertex"===t?e.vertexDefines:e.fragmentDefines;return a[i]||(a[i]="false"!==n&&("true"===n||(n?isNaN(parseFloat(n))?n.trim():parseFloat(n):null))),""}this._vertexCode=this._vertexCode.replace(lr,r),t="fragment",this._fragmentCode=this._fragmentCode.replace(lr,r)},clone:function(){var e=_r[this._shaderID];return new br(e.vertex,e.fragment)}},Object.defineProperty&&(Object.defineProperty(br.prototype,"shaderID",{get:function(){return this._shaderID}}),Object.defineProperty(br.prototype,"vertex",{get:function(){return this._vertexCode}}),Object.defineProperty(br.prototype,"fragment",{get:function(){return this._fragmentCode}}),Object.defineProperty(br.prototype,"uniforms",{get:function(){return this._uniformList}}));var Tr=/(@import)\s*([0-9a-zA-Z_\-\.]*)/g;br.parseImport=function(e){return e=e.replace(Tr,function(e,t,r){return(e=br.source(r))?br.parseImport(e):(console.error('Shader chunk "'+r+'" not existed in library'),"")})};var wr=/(@export)\s*([0-9a-zA-Z_\-\.]*)\s*\n([\s\S]*?)@end/g;br.import=function(e){e.replace(wr,function(e,t,r,i){if(i=i.replace(/(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+\x24)/g,"")){for(var n,a=r.split("."),o=br.codes,s=0;s0&&(a=1/Math.sqrt(a),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a),e},Ar.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},Ar.cross=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[0],s=r[1],l=r[2];return e[0]=n*l-a*s,e[1]=a*o-i*l,e[2]=i*s-n*o,e},Ar.lerp=function(e,t,r,i){var n=t[0],a=t[1],o=t[2];return e[0]=n+i*(r[0]-n),e[1]=a+i*(r[1]-a),e[2]=o+i*(r[2]-o),e},Ar.random=function(e,t){t=t||1;var r=2*qt()*Math.PI,i=2*qt()-1,n=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(r)*n,e[1]=Math.sin(r)*n,e[2]=i*t,e},Ar.transformMat4=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[3]*i+r[7]*n+r[11]*a+r[15];return o=o||1,e[0]=(r[0]*i+r[4]*n+r[8]*a+r[12])/o,e[1]=(r[1]*i+r[5]*n+r[9]*a+r[13])/o,e[2]=(r[2]*i+r[6]*n+r[10]*a+r[14])/o,e},Ar.transformMat3=function(e,t,r){var i=t[0],n=t[1],a=t[2];return e[0]=i*r[0]+n*r[3]+a*r[6],e[1]=i*r[1]+n*r[4]+a*r[7],e[2]=i*r[2]+n*r[5]+a*r[8],e},Ar.transformQuat=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[0],s=r[1],l=r[2],h=r[3],u=h*i+s*a-l*n,c=h*n+l*i-o*a,d=h*a+o*n-s*i,f=-o*i-s*n-l*a;return e[0]=u*h+f*-o+c*-l-d*-s,e[1]=c*h+f*-s+d*-o-u*-l,e[2]=d*h+f*-l+u*-s-c*-o,e},Ar.rotateX=function(e,t,r,i){var n=[],a=[];return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],a[0]=n[0],a[1]=n[1]*Math.cos(i)-n[2]*Math.sin(i),a[2]=n[1]*Math.sin(i)+n[2]*Math.cos(i),e[0]=a[0]+r[0],e[1]=a[1]+r[1],e[2]=a[2]+r[2],e},Ar.rotateY=function(e,t,r,i){var n=[],a=[];return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],a[0]=n[2]*Math.sin(i)+n[0]*Math.cos(i),a[1]=n[1],a[2]=n[2]*Math.cos(i)-n[0]*Math.sin(i),e[0]=a[0]+r[0],e[1]=a[1]+r[1],e[2]=a[2]+r[2],e},Ar.rotateZ=function(e,t,r,i){var n=[],a=[];return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],a[0]=n[0]*Math.cos(i)-n[1]*Math.sin(i),a[1]=n[0]*Math.sin(i)+n[1]*Math.cos(i),a[2]=n[2],e[0]=a[0]+r[0],e[1]=a[1]+r[1],e[2]=a[2]+r[2],e},Ar.forEach=function(){var e=Ar.create();return function(t,r,i,n,a,o){var s,l;for(r||(r=3),i||(i=0),l=n?Math.min(n*r+i,t.length):t.length,s=i;s1?0:Math.acos(n)},br.import(Sr);var Er=Mr.create,Dr={};function Cr(e){return e.material}function Lr(e,t,r){return t.uniforms[r].value}function Pr(e,t,r,i){return r!==i}function Or(e){return!0}function Nr(){}var Rr={float:Ye,byte:ke,ubyte:We,short:je,ushort:Xe};function Ir(e,t,r){this.availableAttributes=e,this.availableAttributeSymbols=t,this.indicesBuffer=r,this.vao=null}function Br(e){var t,r;this.bind=function(e){t||((t=Tt.createCanvas()).width=t.height=1,t.getContext("2d"));var i=e.gl,n=!r;n&&(r=i.createTexture()),i.bindTexture(i.TEXTURE_2D,r),n&&i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,t)},this.unbind=function(e){e.gl.bindTexture(e.gl.TEXTURE_2D,null)},this.isRenderable=function(){return!0}}var zr=be.extend(function(){return{canvas:null,_width:100,_height:100,devicePixelRatio:"undefined"!=typeof window&&window.devicePixelRatio||1,clearColor:[0,0,0,0],clearBit:17664,alpha:!0,depth:!0,stencil:!1,antialias:!0,premultipliedAlpha:!0,preserveDrawingBuffer:!1,throwError:!0,gl:null,viewport:{},maxJointNumber:20,__currentFrameBuffer:null,_viewportStack:[],_clearStack:[],_sceneRendering:null}},function(){this.canvas||(this.canvas=Tt.createCanvas());var e=this.canvas;try{var t={alpha:this.alpha,depth:this.depth,stencil:this.stencil,antialias:this.antialias,premultipliedAlpha:this.premultipliedAlpha,preserveDrawingBuffer:this.preserveDrawingBuffer};if(this.gl=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),!this.gl)throw new Error;this._glinfo=new Se(this.gl),this.gl.targetRenderer&&console.error("Already created a renderer"),this.gl.targetRenderer=this,this.resize()}catch(ch){throw"Error creating WebGL Context "+ch}this._programMgr=new ar(this),this._placeholderTexture=new Br},{resize:function(e,t){var r=this.canvas,i=this.devicePixelRatio;null!=e?(r.style&&(r.style.width=e+"px",r.style.height=t+"px"),r.width=e*i,r.height=t*i,this._width=e,this._height=t):(this._width=r.width/i,this._height=r.height/i),this.setViewport(0,0,this._width,this._height)},getWidth:function(){return this._width},getHeight:function(){return this._height},getViewportAspect:function(){var e=this.viewport;return e.width/e.height},setDevicePixelRatio:function(e){this.devicePixelRatio=e,this.resize(this._width,this._height)},getDevicePixelRatio:function(){return this.devicePixelRatio},getGLExtension:function(e){return this._glinfo.getExtension(e)},getGLParameter:function(e){return this._glinfo.getParameter(e)},setViewport:function(e,t,r,i,n){if("object"==typeof e){var a=e;e=a.x,t=a.y,r=a.width,i=a.height,n=a.devicePixelRatio}n=n||this.devicePixelRatio,this.gl.viewport(e*n,t*n,r*n,i*n),this.viewport={x:e,y:t,width:r,height:i,devicePixelRatio:n}},saveViewport:function(){this._viewportStack.push(this.viewport)},restoreViewport:function(){this._viewportStack.length>0&&this.setViewport(this._viewportStack.pop())},saveClear:function(){this._clearStack.push({clearBit:this.clearBit,clearColor:this.clearColor})},restoreClear:function(){if(this._clearStack.length>0){var e=this._clearStack.pop();this.clearColor=e.clearColor,this.clearBit=e.clearBit}},bindSceneRendering:function(e){this._sceneRendering=e},render:function(e,t,r,i){var n=this.gl,a=this.clearColor;if(this.clearBit){n.colorMask(!0,!0,!0,!0),n.depthMask(!0);var o=this.viewport,s=!1,l=o.devicePixelRatio;(o.width!==this._width||o.height!==this._height||l&&l!==this.devicePixelRatio||o.x||o.y)&&(s=!0,n.enable(n.SCISSOR_TEST),n.scissor(o.x*l,o.y*l,o.width*l,o.height*l)),n.clearColor(a[0],a[1],a[2],a[3]),n.clear(this.clearBit),s&&n.disable(n.SCISSOR_TEST)}if(r||e.update(!1),e.updateLights(),t=t||e.getMainCamera()){t.update();var h=e.updateRenderList(t,!0);this._sceneRendering=e;var u=h.opaque,c=h.transparent,d=e.material;e.trigger("beforerender",this,e,t,h),i?(this.renderPreZ(u,e,t),n.depthFunc(n.LEQUAL)):n.depthFunc(n.LESS);for(var f=Er(),p=Ar.create(),m=0;m0){var s=e[n-1],l=s.joints?s.joints.length:0;if((a.joints?a.joints.length:0)===l&&a.material===s.material&&a.lightGroup===s.lightGroup){a.__program=s.__program;continue}}var h=this._programMgr.getProgram(a,o,t);this.validateProgram(h),a.__program=h}},renderPass:function(e,t,r){this.trigger("beforerenderpass",this,e,t,r),(r=r||{}).getMaterial=r.getMaterial||Cr,r.getUniform=r.getUniform||Lr,r.isMaterialChanged=r.isMaterialChanged||Pr,r.beforeRender=r.beforeRender||Nr,r.afterRender=r.afterRender||Nr;var i=r.ifRender||Or;this.updatePrograms(e,this._sceneRendering,r),r.sortCompare&&e.sort(r.sortCompare);var n=this.viewport,a=n.devicePixelRatio,o=[n.x*a,n.y*a,n.width*a,n.height*a],s=this.devicePixelRatio,l=this.__currentFrameBuffer?[this.__currentFrameBuffer.getTextureWidth(),this.__currentFrameBuffer.getTextureHeight()]:[this._width*s,this._height*s],h=[o[2],o[3]],u=Date.now();t?(Mr.copy(Fr.VIEW,t.viewMatrix.array),Mr.copy(Fr.PROJECTION,t.projectionMatrix.array),Mr.copy(Fr.VIEWINVERSE,t.worldTransform.array)):(Mr.identity(Fr.VIEW),Mr.identity(Fr.PROJECTION),Mr.identity(Fr.VIEWINVERSE)),Mr.multiply(Fr.VIEWPROJECTION,Fr.PROJECTION,Fr.VIEW),Mr.invert(Fr.PROJECTIONINVERSE,Fr.PROJECTION),Mr.invert(Fr.VIEWPROJECTIONINVERSE,Fr.VIEWPROJECTION);for(var c,d,f,p,m,g,_,v,y,x,b,T,w=this.gl,S=this._sceneRendering,M=0;Mthis.getMaxJointNumber()){var a=n.getSubSkinMatricesTexture(e.__uid__,e.joints);t.useTextureSlot(this,a,r),t.setUniform(i,"1i","skinMatricesTexture",r),t.setUniform(i,"1f","skinMatricesTextureSize",a.width)}else{var o=n.getSubSkinMatrices(e.__uid__,e.joints);t.setUniformOfSemantic(i,"SKIN_MATRIX",o)}},_renderObject:function(e,t,r){var i=this.gl,n=e.geometry,a=e.mode;null==a&&(a=4);var o=null,s=e.isInstancedMesh&&e.isInstancedMesh();if(!s||(o=this.getGLExtension("ANGLE_instanced_arrays"))){var l;if(s&&(l=this._bindInstancedAttributes(e,r,o)),t.indicesBuffer){var h=this.getGLExtension("OES_element_index_uint")&&n.indices instanceof Uint32Array?i.UNSIGNED_INT:i.UNSIGNED_SHORT;s?o.drawElementsInstancedANGLE(a,t.indicesBuffer.count,h,0,e.getInstanceCount()):i.drawElements(a,t.indicesBuffer.count,h,0)}else s?o.drawArraysInstancedANGLE(a,0,n.vertexCount,e.getInstanceCount()):i.drawArrays(a,0,n.vertexCount);if(s)for(var u=0;ur?r:e}Gr.add=function(e,t,r){return Ar.add(e.array,t.array,r.array),e._dirty=!0,e},Gr.set=function(e,t,r,i){Ar.set(e.array,t,r,i),e._dirty=!0},Gr.copy=function(e,t){return Ar.copy(e.array,t.array),e._dirty=!0,e},Gr.cross=function(e,t,r){return Ar.cross(e.array,t.array,r.array),e._dirty=!0,e},Gr.dist=function(e,t){return Ar.distance(e.array,t.array)},Gr.distance=Gr.dist,Gr.div=function(e,t,r){return Ar.divide(e.array,t.array,r.array),e._dirty=!0,e},Gr.divide=Gr.div,Gr.dot=function(e,t){return Ar.dot(e.array,t.array)},Gr.len=function(e){return Ar.length(e.array)},Gr.lerp=function(e,t,r,i){return Ar.lerp(e.array,t.array,r.array,i),e._dirty=!0,e},Gr.min=function(e,t,r){return Ar.min(e.array,t.array,r.array),e._dirty=!0,e},Gr.max=function(e,t,r){return Ar.max(e.array,t.array,r.array),e._dirty=!0,e},Gr.mul=function(e,t,r){return Ar.multiply(e.array,t.array,r.array),e._dirty=!0,e},Gr.multiply=Gr.mul,Gr.negate=function(e,t){return Ar.negate(e.array,t.array),e._dirty=!0,e},Gr.normalize=function(e,t){return Ar.normalize(e.array,t.array),e._dirty=!0,e},Gr.random=function(e,t){return Ar.random(e.array,t),e._dirty=!0,e},Gr.scale=function(e,t,r){return Ar.scale(e.array,t.array,r),e._dirty=!0,e},Gr.scaleAndAdd=function(e,t,r,i){return Ar.scaleAndAdd(e.array,t.array,r.array,i),e._dirty=!0,e},Gr.sqrDist=function(e,t){return Ar.sqrDist(e.array,t.array)},Gr.squaredDistance=Gr.sqrDist,Gr.sqrLen=function(e){return Ar.sqrLen(e.array)},Gr.squaredLength=Gr.sqrLen,Gr.sub=function(e,t,r){return Ar.subtract(e.array,t.array,r.array),e._dirty=!0,e},Gr.subtract=Gr.sub,Gr.transformMat3=function(e,t,r){return Ar.transformMat3(e.array,t.array,r.array),e._dirty=!0,e},Gr.transformMat4=function(e,t,r){return Ar.transformMat4(e.array,t.array,r.array),e._dirty=!0,e},Gr.transformQuat=function(e,t,r){return Ar.transformQuat(e.array,t.array,r.array),e._dirty=!0,e};var kr=Math.atan2,Wr=Math.asin,jr=Math.abs;Gr.eulerFromQuat=function(e,t,r){e._dirty=!0,t=t.array;var i=e.array,n=t[0],a=t[1],o=t[2],s=t[3],l=n*n,h=a*a,u=o*o,c=s*s;switch(r=(r||"XYZ").toUpperCase()){case"XYZ":i[0]=kr(2*(n*s-a*o),c-l-h+u),i[1]=Wr(Vr(2*(n*o+a*s),-1,1)),i[2]=kr(2*(o*s-n*a),c+l-h-u);break;case"YXZ":i[0]=Wr(Vr(2*(n*s-a*o),-1,1)),i[1]=kr(2*(n*o+a*s),c-l-h+u),i[2]=kr(2*(n*a+o*s),c-l+h-u);break;case"ZXY":i[0]=Wr(Vr(2*(n*s+a*o),-1,1)),i[1]=kr(2*(a*s-o*n),c-l-h+u),i[2]=kr(2*(o*s-n*a),c-l+h-u);break;case"ZYX":i[0]=kr(2*(n*s+o*a),c-l-h+u),i[1]=Wr(Vr(2*(a*s-n*o),-1,1)),i[2]=kr(2*(n*a+o*s),c+l-h-u);break;case"YZX":i[0]=kr(2*(n*s-o*a),c-l+h-u),i[1]=kr(2*(a*s-n*o),c+l-h-u),i[2]=Wr(Vr(2*(n*a+o*s),-1,1));break;case"XZY":i[0]=kr(2*(n*s+a*o),c-l+h-u),i[1]=kr(2*(n*o+a*s),c+l-h-u),i[2]=Wr(Vr(2*(o*s-n*a),-1,1));break;default:console.warn("Unkown order: "+r)}return e},Gr.eulerFromMat3=function(e,t,r){var i=t.array,n=i[0],a=i[3],o=i[6],s=i[1],l=i[4],h=i[7],u=i[2],c=i[5],d=i[8],f=e.array;switch(r=(r||"XYZ").toUpperCase()){case"XYZ":f[1]=Wr(Vr(o,-1,1)),jr(o)<.99999?(f[0]=kr(-h,d),f[2]=kr(-a,n)):(f[0]=kr(c,l),f[2]=0);break;case"YXZ":f[0]=Wr(-Vr(h,-1,1)),jr(h)<.99999?(f[1]=kr(o,d),f[2]=kr(s,l)):(f[1]=kr(-u,n),f[2]=0);break;case"ZXY":f[0]=Wr(Vr(c,-1,1)),jr(c)<.99999?(f[1]=kr(-u,d),f[2]=kr(-a,l)):(f[1]=0,f[2]=kr(s,n));break;case"ZYX":f[1]=Wr(-Vr(u,-1,1)),jr(u)<.99999?(f[0]=kr(c,d),f[2]=kr(s,n)):(f[0]=0,f[2]=kr(-a,l));break;case"YZX":f[2]=Wr(Vr(s,-1,1)),jr(s)<.99999?(f[0]=kr(-h,l),f[1]=kr(-u,n)):(f[0]=0,f[1]=kr(o,d));break;case"XZY":f[2]=Wr(-Vr(a,-1,1)),jr(a)<.99999?(f[0]=kr(c,l),f[1]=kr(o,n)):(f[0]=kr(-h,d),f[1]=0);break;default:console.warn("Unkown order: "+r)}return e._dirty=!0,e},Object.defineProperties(Gr,{POSITIVE_X:{get:function(){return new Gr(1,0,0)}},NEGATIVE_X:{get:function(){return new Gr(-1,0,0)}},POSITIVE_Y:{get:function(){return new Gr(0,1,0)}},NEGATIVE_Y:{get:function(){return new Gr(0,-1,0)}},POSITIVE_Z:{get:function(){return new Gr(0,0,1)}},NEGATIVE_Z:{get:function(){return new Gr(0,0,-1)}},UP:{get:function(){return new Gr(0,1,0)}},ZERO:{get:function(){return new Gr}}});var Xr,qr,Zr,Yr,Kr,Qr=1e-5,Jr=function(e,t){this.origin=e||new Gr,this.direction=t||new Gr};Jr.prototype={constructor:Jr,intersectPlane:function(e,t){var r=e.normal.array,i=e.distance,n=this.origin.array,a=this.direction.array,o=Ar.dot(r,a);if(0===o)return null;t||(t=new Gr);var s=(Ar.dot(r,n)-i)/o;return Ar.scaleAndAdd(t.array,n,a,-s),t._dirty=!0,t},mirrorAgainstPlane:function(e){var t=Ar.dot(e.normal.array,this.direction.array);Ar.scaleAndAdd(this.direction.array,this.direction.array,e.normal.array,2*-t),this.direction._dirty=!0},distanceToPoint:(Kr=Ar.create(),function(e){Ar.sub(Kr,e,this.origin.array);var t=Ar.dot(Kr,this.direction.array);if(t<0)return Ar.distance(this.origin.array,e);var r=Ar.lenSquared(Kr);return Math.sqrt(r-t*t)}),intersectSphere:function(){var e=Ar.create();return function(t,r,i){var n=this.origin.array,a=this.direction.array;t=t.array,Ar.sub(e,t,n);var o=Ar.dot(e,a),s=Ar.squaredLength(e)-o*o,l=r*r;if(!(s>l)){var h=Math.sqrt(l-s),u=o-h,c=o+h;return i||(i=new Gr),u<0?c<0?null:(Ar.scaleAndAdd(i.array,n,a,c),i):(Ar.scaleAndAdd(i.array,n,a,u),i)}}}(),intersectBoundingBox:function(e,t){var r,i,n,a,o,s,l=this.direction.array,h=this.origin.array,u=e.min.array,c=e.max.array,d=1/l[0],f=1/l[1],p=1/l[2];if(d>=0?(r=(u[0]-h[0])*d,i=(c[0]-h[0])*d):(i=(u[0]-h[0])*d,r=(c[0]-h[0])*d),f>=0?(n=(u[1]-h[1])*f,a=(c[1]-h[1])*f):(a=(u[1]-h[1])*f,n=(c[1]-h[1])*f),r>a||n>i)return null;if((n>r||r!=r)&&(r=n),(a=0?(o=(u[2]-h[2])*p,s=(c[2]-h[2])*p):(s=(u[2]-h[2])*p,o=(c[2]-h[2])*p),r>s||o>i)return null;if((o>r||r!=r)&&(r=o),(s=0?r:i;return t||(t=new Gr),Ar.scaleAndAdd(t.array,h,l,m),t},intersectTriangle:(Xr=Ar.create(),qr=Ar.create(),Zr=Ar.create(),Yr=Ar.create(),function(e,t,r,i,n,a){var o=this.direction.array,s=this.origin.array;e=e.array,t=t.array,r=r.array,Ar.sub(Xr,t,e),Ar.sub(qr,r,e),Ar.cross(Yr,qr,o);var l=Ar.dot(Xr,Yr);if(i){if(l>-1e-5)return null}else if(l>-1e-5&&l1)return null;Ar.cross(Yr,Xr,Zr);var u=Ar.dot(o,Yr)/l;if(u<0||u>1||h+u>1)return null;Ar.cross(Yr,Xr,qr);var c=-Ar.dot(Zr,Yr)/l;return c<0?null:(n||(n=new Gr),a&&Gr.set(a,1-h-u,h,u),Ar.scaleAndAdd(n.array,s,o,c),n)}),applyTransform:function(e){Gr.add(this.direction,this.direction,this.origin),Gr.transformMat4(this.origin,this.origin,e),Gr.transformMat4(this.direction,this.direction,e),Gr.sub(this.direction,this.direction,this.origin),Gr.normalize(this.direction,this.direction)},copy:function(e){Gr.copy(this.origin,e.origin),Gr.copy(this.direction,e.direction)},clone:function(){var e=new Jr;return e.copy(this),e}};var $r={create:function(){var e=new Xt(4);return e[0]=0,e[1]=0,e[2]=0,e[3]=0,e},clone:function(e){var t=new Xt(4);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t},fromValues:function(e,t,r,i){var n=new Xt(4);return n[0]=e,n[1]=t,n[2]=r,n[3]=i,n},copy:function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e},set:function(e,t,r,i,n){return e[0]=t,e[1]=r,e[2]=i,e[3]=n,e},add:function(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e},subtract:function(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e[3]=t[3]-r[3],e}};$r.sub=$r.subtract,$r.multiply=function(e,t,r){return e[0]=t[0]*r[0],e[1]=t[1]*r[1],e[2]=t[2]*r[2],e[3]=t[3]*r[3],e},$r.mul=$r.multiply,$r.divide=function(e,t,r){return e[0]=t[0]/r[0],e[1]=t[1]/r[1],e[2]=t[2]/r[2],e[3]=t[3]/r[3],e},$r.div=$r.divide,$r.min=function(e,t,r){return e[0]=Math.min(t[0],r[0]),e[1]=Math.min(t[1],r[1]),e[2]=Math.min(t[2],r[2]),e[3]=Math.min(t[3],r[3]),e},$r.max=function(e,t,r){return e[0]=Math.max(t[0],r[0]),e[1]=Math.max(t[1],r[1]),e[2]=Math.max(t[2],r[2]),e[3]=Math.max(t[3],r[3]),e},$r.scale=function(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e},$r.scaleAndAdd=function(e,t,r,i){return e[0]=t[0]+r[0]*i,e[1]=t[1]+r[1]*i,e[2]=t[2]+r[2]*i,e[3]=t[3]+r[3]*i,e},$r.distance=function(e,t){var r=t[0]-e[0],i=t[1]-e[1],n=t[2]-e[2],a=t[3]-e[3];return Math.sqrt(r*r+i*i+n*n+a*a)},$r.dist=$r.distance,$r.squaredDistance=function(e,t){var r=t[0]-e[0],i=t[1]-e[1],n=t[2]-e[2],a=t[3]-e[3];return r*r+i*i+n*n+a*a},$r.sqrDist=$r.squaredDistance,$r.length=function(e){var t=e[0],r=e[1],i=e[2],n=e[3];return Math.sqrt(t*t+r*r+i*i+n*n)},$r.len=$r.length,$r.squaredLength=function(e){var t=e[0],r=e[1],i=e[2],n=e[3];return t*t+r*r+i*i+n*n},$r.sqrLen=$r.squaredLength,$r.negate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e},$r.inverse=function(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e[3]=1/t[3],e},$r.normalize=function(e,t){var r=t[0],i=t[1],n=t[2],a=t[3],o=r*r+i*i+n*n+a*a;return o>0&&(o=1/Math.sqrt(o),e[0]=t[0]*o,e[1]=t[1]*o,e[2]=t[2]*o,e[3]=t[3]*o),e},$r.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]},$r.lerp=function(e,t,r,i){var n=t[0],a=t[1],o=t[2],s=t[3];return e[0]=n+i*(r[0]-n),e[1]=a+i*(r[1]-a),e[2]=o+i*(r[2]-o),e[3]=s+i*(r[3]-s),e},$r.random=function(e,t){return t=t||1,e[0]=qt(),e[1]=qt(),e[2]=qt(),e[3]=qt(),$r.normalize(e,e),$r.scale(e,e,t),e},$r.transformMat4=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=t[3];return e[0]=r[0]*i+r[4]*n+r[8]*a+r[12]*o,e[1]=r[1]*i+r[5]*n+r[9]*a+r[13]*o,e[2]=r[2]*i+r[6]*n+r[10]*a+r[14]*o,e[3]=r[3]*i+r[7]*n+r[11]*a+r[15]*o,e},$r.transformQuat=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[0],s=r[1],l=r[2],h=r[3],u=h*i+s*a-l*n,c=h*n+l*i-o*a,d=h*a+o*n-s*i,f=-o*i-s*n-l*a;return e[0]=u*h+f*-o+c*-l-d*-s,e[1]=c*h+f*-s+d*-o-u*-l,e[2]=d*h+f*-l+u*-s-c*-o,e},$r.forEach=function(){var e=$r.create();return function(t,r,i,n,a,o){var s,l;for(r||(r=4),i||(i=0),l=n?Math.min(n*r+i,t.length):t.length,s=i;s.999999?(e[0]=0,e[1]=0,e[2]=0,e[3]=1,e):(Ar.cross(ti,t,r),e[0]=ti[0],e[1]=ti[1],e[2]=ti[2],e[3]=1+i,ai.normalize(e,e))}),ai.setAxes=(ni=ei.create(),function(e,t,r,i){return ni[0]=r[0],ni[3]=r[1],ni[6]=r[2],ni[1]=i[0],ni[4]=i[1],ni[7]=i[2],ni[2]=-t[0],ni[5]=-t[1],ni[8]=-t[2],ai.normalize(e,ai.fromMat3(e,ni))}),ai.clone=$r.clone,ai.fromValues=$r.fromValues,ai.copy=$r.copy,ai.set=$r.set,ai.identity=function(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e},ai.setAxisAngle=function(e,t,r){r*=.5;var i=Math.sin(r);return e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=Math.cos(r),e},ai.add=$r.add,ai.multiply=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=t[3],s=r[0],l=r[1],h=r[2],u=r[3];return e[0]=i*u+o*s+n*h-a*l,e[1]=n*u+o*l+a*s-i*h,e[2]=a*u+o*h+i*l-n*s,e[3]=o*u-i*s-n*l-a*h,e},ai.mul=ai.multiply,ai.scale=$r.scale,ai.rotateX=function(e,t,r){r*=.5;var i=t[0],n=t[1],a=t[2],o=t[3],s=Math.sin(r),l=Math.cos(r);return e[0]=i*l+o*s,e[1]=n*l+a*s,e[2]=a*l-n*s,e[3]=o*l-i*s,e},ai.rotateY=function(e,t,r){r*=.5;var i=t[0],n=t[1],a=t[2],o=t[3],s=Math.sin(r),l=Math.cos(r);return e[0]=i*l-a*s,e[1]=n*l+o*s,e[2]=a*l+i*s,e[3]=o*l-n*s,e},ai.rotateZ=function(e,t,r){r*=.5;var i=t[0],n=t[1],a=t[2],o=t[3],s=Math.sin(r),l=Math.cos(r);return e[0]=i*l+n*s,e[1]=n*l-i*s,e[2]=a*l+o*s,e[3]=o*l-a*s,e},ai.calculateW=function(e,t){var r=t[0],i=t[1],n=t[2];return e[0]=r,e[1]=i,e[2]=n,e[3]=Math.sqrt(Math.abs(1-r*r-i*i-n*n)),e},ai.dot=$r.dot,ai.lerp=$r.lerp,ai.slerp=function(e,t,r,i){var n,a,o,s,l,h=t[0],u=t[1],c=t[2],d=t[3],f=r[0],p=r[1],m=r[2],g=r[3];return(a=h*f+u*p+c*m+d*g)<0&&(a=-a,f=-f,p=-p,m=-m,g=-g),1-a>1e-6?(n=Math.acos(a),o=Math.sin(n),s=Math.sin((1-i)*n)/o,l=Math.sin(i*n)/o):(s=1-i,l=i),e[0]=s*h+l*f,e[1]=s*u+l*p,e[2]=s*c+l*m,e[3]=s*d+l*g,e},ai.invert=function(e,t){var r=t[0],i=t[1],n=t[2],a=t[3],o=r*r+i*i+n*n+a*a,s=o?1/o:0;return e[0]=-r*s,e[1]=-i*s,e[2]=-n*s,e[3]=a*s,e},ai.conjugate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e},ai.length=$r.length,ai.len=ai.length,ai.squaredLength=$r.squaredLength,ai.sqrLen=ai.squaredLength,ai.normalize=$r.normalize,ai.fromMat3=function(e,t){var r,i=t[0]+t[4]+t[8];if(i>0)r=Math.sqrt(i+1),e[3]=.5*r,r=.5/r,e[0]=(t[5]-t[7])*r,e[1]=(t[6]-t[2])*r,e[2]=(t[1]-t[3])*r;else{var n=0;t[4]>t[0]&&(n=1),t[8]>t[3*n+n]&&(n=2);var a=(n+1)%3,o=(n+2)%3;r=Math.sqrt(t[3*n+n]-t[3*a+a]-t[3*o+o]+1),e[n]=.5*r,r=.5/r,e[3]=(t[3*a+o]-t[3*o+a])*r,e[a]=(t[3*a+n]+t[3*n+a])*r,e[o]=(t[3*o+n]+t[3*n+o])*r}return e};var oi,si,li,hi,ui=function(){this._axisX=new Gr,this._axisY=new Gr,this._axisZ=new Gr,this.array=Mr.create(),this._dirty=!0};ui.prototype={constructor:ui,setArray:function(e){for(var t=0;t0){var t=this.min,r=this.max,i=t.array,n=r.array;wi(i,e[0]),wi(n,e[0]);for(var a=1;an[0]&&(n[0]=o[0]),o[1]>n[1]&&(n[1]=o[1]),o[2]>n[2]&&(n[2]=o[2])}t._dirty=!0,r._dirty=!0}},union:function(e){var t=this.min,r=this.max;return Ar.min(t.array,t.array,e.min.array),Ar.max(r.array,r.array,e.max.array),t._dirty=!0,r._dirty=!0,this},intersection:function(e){var t=this.min,r=this.max;return Ar.max(t.array,t.array,e.min.array),Ar.min(r.array,r.array,e.max.array),t._dirty=!0,r._dirty=!0,this},intersectBoundingBox:function(e){var t=this.min.array,r=this.max.array,i=e.min.array,n=e.max.array;return!(t[0]>n[0]||t[1]>n[1]||t[2]>n[2]||r[0]=n[0]&&r[1]>=n[1]&&r[2]>=n[2]},containPoint:function(e){var t=this.min.array,r=this.max.array,i=e.array;return t[0]<=i[0]&&t[1]<=i[1]&&t[2]<=i[2]&&r[0]>=i[0]&&r[1]>=i[1]&&r[2]>=i[2]},isFinite:function(){var e=this.min.array,t=this.max.array;return isFinite(e[0])&&isFinite(e[1])&&isFinite(e[2])&&isFinite(t[0])&&isFinite(t[1])&&isFinite(t[2])},applyTransform:function(e){this.transformFrom(this,e)},transformFrom:(gi=Ar.create(),_i=Ar.create(),vi=Ar.create(),yi=Ar.create(),xi=Ar.create(),bi=Ar.create(),function(e,t){var r=e.min.array,i=e.max.array,n=t.array;return gi[0]=n[0]*r[0],gi[1]=n[1]*r[0],gi[2]=n[2]*r[0],_i[0]=n[0]*i[0],_i[1]=n[1]*i[0],_i[2]=n[2]*i[0],vi[0]=n[4]*r[1],vi[1]=n[5]*r[1],vi[2]=n[6]*r[1],yi[0]=n[4]*i[1],yi[1]=n[5]*i[1],yi[2]=n[6]*i[1],xi[0]=n[8]*r[2],xi[1]=n[9]*r[2],xi[2]=n[10]*r[2],bi[0]=n[8]*i[2],bi[1]=n[9]*i[2],bi[2]=n[10]*i[2],r=this.min.array,i=this.max.array,r[0]=Math.min(gi[0],_i[0])+Math.min(vi[0],yi[0])+Math.min(xi[0],bi[0])+n[12],r[1]=Math.min(gi[1],_i[1])+Math.min(vi[1],yi[1])+Math.min(xi[1],bi[1])+n[13],r[2]=Math.min(gi[2],_i[2])+Math.min(vi[2],yi[2])+Math.min(xi[2],bi[2])+n[14],i[0]=Math.max(gi[0],_i[0])+Math.max(vi[0],yi[0])+Math.max(xi[0],bi[0])+n[12],i[1]=Math.max(gi[1],_i[1])+Math.max(vi[1],yi[1])+Math.max(xi[1],bi[1])+n[13],i[2]=Math.max(gi[2],_i[2])+Math.max(vi[2],yi[2])+Math.max(xi[2],bi[2])+n[14],this.min._dirty=!0,this.max._dirty=!0,this}),applyProjection:function(e){var t=this.min.array,r=this.max.array,i=e.array,n=t[0],a=t[1],o=t[2],s=r[0],l=r[1],h=t[2],u=r[0],c=r[1],d=r[2];if(1===i[15])t[0]=i[0]*n+i[12],t[1]=i[5]*a+i[13],r[2]=i[10]*o+i[14],r[0]=i[0]*u+i[12],r[1]=i[5]*c+i[13],t[2]=i[10]*d+i[14];else{var f=-1/o;t[0]=i[0]*n*f,t[1]=i[5]*a*f,r[2]=(i[10]*o+i[14])*f,f=-1/h,r[0]=i[0]*s*f,r[1]=i[5]*l*f,f=-1/d,t[2]=(i[10]*d+i[14])*f}return this.min._dirty=!0,this.max._dirty=!0,this},updateVertices:function(){var e=this.vertices;if(!e){e=[];for(var t=0;t<8;t++)e[t]=Ar.fromValues(0,0,0);this.vertices=e}var r=this.min.array,i=this.max.array;return Ti(e[0],r[0],r[1],r[2]),Ti(e[1],r[0],i[1],r[2]),Ti(e[2],i[0],r[1],r[2]),Ti(e[3],i[0],i[1],r[2]),Ti(e[4],r[0],r[1],i[2]),Ti(e[5],r[0],i[1],i[2]),Ti(e[6],i[0],r[1],i[2]),Ti(e[7],i[0],i[1],i[2]),this},copy:function(e){var t=this.min,r=this.max;return wi(t.array,e.min.array),wi(r.array,e.max.array),t._dirty=!0,r._dirty=!0,this},clone:function(){var e=new Si;return e.copy(this),e}};var Mi,Ai,Ei,Di=0,Ci=be.extend({name:"",position:null,rotation:null,scale:null,worldTransform:null,localTransform:null,autoUpdateLocalTransform:!0,_parent:null,_scene:null,_needsUpdateWorldTransform:!0,_inIterating:!1,__depth:0},function(){this.name||(this.name=(this.type||"NODE")+"_"+Di++),this.position||(this.position=new Gr),this.rotation||(this.rotation=new fi),this.scale||(this.scale=new Gr(1,1,1)),this.worldTransform=new ui,this.localTransform=new ui,this._children=[]},{target:null,invisible:!1,isSkinnedMesh:function(){return!1},isRenderable:function(){return!1},setName:function(e){var t=this._scene;if(t){var r=t._nodeRepository;delete r[this.name],r[e]=this}this.name=e},add:function(e){var t=e._parent;if(t!==this){t&&t.remove(e),e._parent=this,this._children.push(e);var r=this._scene;r&&r!==e.scene&&e.traverse(this._addSelfToScene,this),e._needsUpdateWorldTransform=!0}},remove:function(e){var t=this._children,r=t.indexOf(e);r<0||(t.splice(r,1),e._parent=null,this._scene&&e.traverse(this._removeSelfFromScene,this))},removeAll:function(){for(var e=this._children,t=0;t0},beforeRender:function(e){},afterRender:function(e,t){},getBoundingBox:function(e,t){return t=Ci.prototype.getBoundingBox.call(this,e,t),this.geometry&&this.geometry.boundingBox&&t.union(this.geometry.boundingBox),t},clone:(Ei=["castShadow","receiveShadow","mode","culling","cullFace","frontFace","frustumCulling","renderOrder","lineWidth","ignorePicking","ignorePreZ","ignoreGBuffer"],function(){var e=Ci.prototype.clone.call(this);e.geometry=this.geometry,e.material=this.material;for(var t=0;t=0&&g[p]>1e-4&&(Ar.transformMat4(y,m,d[_[p]]),Ar.scaleAndAdd(v,v,y,g[p]));x.set(f,v)}}for(f=0;f>t;return e+1},dispose:function(e){var t=this._cache;t.use(e.__uid__);var r=t.get("webgl_texture");r&&e.gl.deleteTexture(r),t.deleteContext(e.__uid__)},isRenderable:function(){},isPowerOfTwo:function(){}});Object.defineProperty(Gi.prototype,"width",{get:function(){return this._width},set:function(e){this._width=e}}),Object.defineProperty(Gi.prototype,"height",{get:function(){return this._height},set:function(e){this._height=e}}),Gi.BYTE=ke,Gi.UNSIGNED_BYTE=We,Gi.SHORT=je,Gi.UNSIGNED_SHORT=Xe,Gi.INT=qe,Gi.UNSIGNED_INT=Ze,Gi.FLOAT=Ye,Gi.HALF_FLOAT=36193,Gi.UNSIGNED_INT_24_8_WEBGL=34042,Gi.DEPTH_COMPONENT=Ke,Gi.DEPTH_STENCIL=mt,Gi.ALPHA=Qe,Gi.RGB=Je,Gi.RGBA=$e,Gi.LUMINANCE=et,Gi.LUMINANCE_ALPHA=tt,Gi.SRGB=35904,Gi.SRGB_ALPHA=35906,Gi.COMPRESSED_RGB_S3TC_DXT1_EXT=33776,Gi.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777,Gi.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778,Gi.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779,Gi.NEAREST=rt,Gi.LINEAR=it,Gi.NEAREST_MIPMAP_NEAREST=nt,Gi.LINEAR_MIPMAP_NEAREST=at,Gi.NEAREST_MIPMAP_LINEAR=ot,Gi.LINEAR_MIPMAP_LINEAR=st,Gi.REPEAT=ut,Gi.CLAMP_TO_EDGE=ct,Gi.MIRRORED_REPEAT=dt;var Ui=Li.extend({skeleton:null,joints:null},function(){this.joints||(this.joints=[])},{offsetMatrix:null,isInstancedMesh:function(){return!1},isSkinnedMesh:function(){return!!(this.skeleton&&this.joints&&this.joints.length>0)},clone:function(){var e=Li.prototype.clone.call(this);return e.skeleton=this.skeleton,this.joints&&(e.joints=this.joints.slice()),e}});Ui.POINTS=De,Ui.LINES=Ce,Ui.LINE_LOOP=Le,Ui.LINE_STRIP=Pe,Ui.TRIANGLES=Oe,Ui.TRIANGLE_STRIP=Ne,Ui.TRIANGLE_FAN=Re,Ui.BACK=Ge,Ui.FRONT=Fe,Ui.FRONT_AND_BACK=Ue,Ui.CW=He,Ui.CCW=Ve;var Hi={isPowerOfTwo:function(e){return!(e&e-1)},nextPowerOfTwo:function(e){return e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e},nearestPowerOfTwo:function(e){return Math.pow(2,Math.round(Math.log(e)/Math.LN2))}},Vi=Hi.isPowerOfTwo;function ki(e){return Math.pow(2,Math.round(Math.log(e)/Math.LN2))}var Wi=Gi.extend(function(){return{image:null,pixels:null,mipmaps:[],convertToPOT:!1}},{textureType:"texture2D",update:function(e){var t=e.gl;t.bindTexture(t.TEXTURE_2D,this._cache.get("webgl_texture")),this.updateCommon(e);var r=this.format,i=this.type,n=!(!this.convertToPOT||this.mipmaps.length||!this.image||this.wrapS!==Gi.REPEAT&&this.wrapT!==Gi.REPEAT||!this.NPOT);t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,n?this.wrapS:this.getAvailableWrapS()),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,n?this.wrapT:this.getAvailableWrapT()),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,n?this.magFilter:this.getAvailableMagFilter()),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,n?this.minFilter:this.getAvailableMinFilter());var a=e.getGLExtension("EXT_texture_filter_anisotropic");if(a&&this.anisotropic>1&&t.texParameterf(t.TEXTURE_2D,a.TEXTURE_MAX_ANISOTROPY_EXT,this.anisotropic),36193===i&&(e.getGLExtension("OES_texture_half_float")||(i=Ye)),this.mipmaps.length)for(var o=this.width,s=this.height,l=0;l=Gi.COMPRESSED_RGB_S3TC_DXT1_EXT?e.compressedTexImage2D(e.TEXTURE_2D,r,a,i,n,0,t.pixels):e.texImage2D(e.TEXTURE_2D,r,a,i,n,0,a,o,t.pixels)},generateMipmap:function(e){var t=e.gl;this.useMipmap&&!this.NPOT&&(t.bindTexture(t.TEXTURE_2D,this._cache.get("webgl_texture")),t.generateMipmap(t.TEXTURE_2D))},isPowerOfTwo:function(){return Vi(this.width)&&Vi(this.height)},isRenderable:function(){return this.image?this.image.width>0&&this.image.height>0:!(!this.width||!this.height)},bind:function(e){e.gl.bindTexture(e.gl.TEXTURE_2D,this.getWebGLTexture(e))},unbind:function(e){e.gl.bindTexture(e.gl.TEXTURE_2D,null)},load:function(e,t){var r=Tt.createImage();t&&(r.crossOrigin=t);var i=this;return r.onload=function(){i.dirty(),i.trigger("success",i)},r.onerror=function(){i.trigger("error",i)},r.src=e,this.image=r,this}});function ji(e){return{byte:Tt.Int8Array,ubyte:Tt.Uint8Array,short:Tt.Int16Array,ushort:Tt.Uint16Array}[e]||Tt.Float32Array}function Xi(e){return"attr_"+e}function qi(e,t,r,i){switch(this.name=e,this.type=t,this.size=r,this.semantic=i||"",this.value=null,r){case 1:this.get=function(e){return this.value[e]},this.set=function(e,t){this.value[e]=t},this.copy=function(e,t){this.value[e]=this.value[e]};break;case 2:this.get=function(e,t){var r=this.value;return t[0]=r[2*e],t[1]=r[2*e+1],t},this.set=function(e,t){var r=this.value;r[2*e]=t[0],r[2*e+1]=t[1]},this.copy=function(e,t){var r=this.value;t*=2,r[e*=2]=r[t],r[e+1]=r[t+1]};break;case 3:this.get=function(e,t){var r=3*e,i=this.value;return t[0]=i[r],t[1]=i[r+1],t[2]=i[r+2],t},this.set=function(e,t){var r=3*e,i=this.value;i[r]=t[0],i[r+1]=t[1],i[r+2]=t[2]},this.copy=function(e,t){var r=this.value;t*=3,r[e*=3]=r[t],r[e+1]=r[t+1],r[e+2]=r[t+2]};break;case 4:this.get=function(e,t){var r=this.value,i=4*e;return t[0]=r[i],t[1]=r[i+1],t[2]=r[i+2],t[3]=r[i+3],t},this.set=function(e,t){var r=this.value,i=4*e;r[i]=t[0],r[i+1]=t[1],r[i+2]=t[2],r[i+3]=t[3]},this.copy=function(e,t){var r=this.value;t*=4,r[e*=4]=r[t],r[e+1]=r[t+1],r[e+2]=r[t+2],r[e+3]=r[t+3]}}}function Zi(e,t,r,i,n){this.name=e,this.type=t,this.buffer=r,this.size=i,this.semantic=n,this.symbol="",this.needsRemove=!1}function Yi(e){this.buffer=e,this.count=0}Object.defineProperty(Wi.prototype,"width",{get:function(){return this.image?this.image.width:this._width},set:function(e){this.image?console.warn("Texture from image can't set width"):(this._width!==e&&this.dirty(),this._width=e)}}),Object.defineProperty(Wi.prototype,"height",{get:function(){return this.image?this.image.height:this._height},set:function(e){this.image?console.warn("Texture from image can't set height"):(this._height!==e&&this.dirty(),this._height=e)}}),qi.prototype.init=function(e){if(!this.value||this.value.length!==e*this.size){var t=ji(this.type);this.value=new t(e*this.size)}},qi.prototype.fromArray=function(e){var t,r=ji(this.type);if(e[0]&&e[0].length){var i=0,n=this.size;t=new r(e.length*n);for(var a=0;a=0){t||(t=[]);var r=this.indices;return t[0]=r[3*e],t[1]=r[3*e+1],t[2]=r[3*e+2],t}},setTriangleIndices:function(e,t){var r=this.indices;r[3*e]=t[0],r[3*e+1]=t[1],r[3*e+2]=t[2]},isUseIndices:function(){return!!this.indices},initIndicesFromArray:function(e){var t,r=this.vertexCount>65535?Tt.Uint32Array:Tt.Uint16Array;if(e[0]&&e[0].length){var i=0;t=new r(3*e.length);for(var n=0;n=0&&(t.splice(r,1),delete this.attributes[e],!0)},getAttribute:function(e){return this.attributes[e]},getEnabledAttributes:function(){var e=this._enabledAttributes,t=this._attributeList;if(e)return e;for(var r=[],i=this.vertexCount,n=0;na[0]&&(a[0]=s),l>a[1]&&(a[1]=l),h>a[2]&&(a[2]=h)}r._dirty=!0,i._dirty=!0}},generateVertexNormals:function(){if(this.vertexCount){var e=this.indices,t=this.attributes,r=t.position.value,i=t.normal.value;if(i&&i.length===r.length)for(var n=0;n65535&&(this.indices=new Tt.Uint32Array(this.indices));for(var e=this.attributes,t=this.indices,r=this.getEnabledAttributes(),i={},n=0;nthis.distance,n=1;n<8;n++)if(Ar.dot(t[n].array,r)>this.distance!=i)return!0},intersectLine:(dn=Ar.create(),function(e,t,r){var i=this.distanceToPoint(e),n=this.distanceToPoint(t);if(i>0&&n>0||i<0&&n<0)return null;var a=this.normal.array,o=this.distance,s=e.array;Ar.sub(dn,t.array,e.array),Ar.normalize(dn,dn);var l=Ar.dot(a,dn);if(0===l)return null;r||(r=new Gr);var h=(Ar.dot(a,s)-o)/l;return Ar.scaleAndAdd(r.array,s,dn,-h),r._dirty=!0,r}),applyTransform:(hn=Mr.create(),un=$r.create(),cn=$r.create(),cn[3]=1,function(e){e=e.array,Ar.scale(cn,this.normal.array,this.distance),$r.transformMat4(cn,cn,e),this.distance=Ar.dot(cn,this.normal.array),Mr.invert(hn,e),Mr.transpose(hn,hn),un[3]=0,Ar.copy(un,this.normal.array),$r.transformMat4(un,un,hn),Ar.copy(this.normal.array,un)}),copy:function(e){Ar.copy(this.normal.array,e.normal.array),this.normal._dirty=!0,this.distance=e.distance},clone:function(){var e=new pn;return e.copy(this),e}};var mn,gn=Ar.set,_n=Ar.copy,vn=Ar.transformMat4,yn=Math.min,xn=Math.max,bn=function(){this.planes=[];for(var e=0;e<6;e++)this.planes.push(new pn);for(this.boundingBox=new Si,this.vertices=[],e=0;e<8;e++)this.vertices[e]=Ar.fromValues(0,0,0)};bn.prototype={setFromProjection:function(e){var t=this.planes,r=e.array,i=r[0],n=r[1],a=r[2],o=r[3],s=r[4],l=r[5],h=r[6],u=r[7],c=r[8],d=r[9],f=r[10],p=r[11],m=r[12],g=r[13],_=r[14],v=r[15];gn(t[0].normal.array,o-i,u-s,p-c),t[0].distance=-(v-m),t[0].normalize(),gn(t[1].normal.array,o+i,u+s,p+c),t[1].distance=-(v+m),t[1].normalize(),gn(t[2].normal.array,o+n,u+l,p+d),t[2].distance=-(v+g),t[2].normalize(),gn(t[3].normal.array,o-n,u-l,p-d),t[3].distance=-(v-g),t[3].normalize(),gn(t[4].normal.array,o-a,u-h,p-f),t[4].distance=-(v-_),t[4].normalize(),gn(t[5].normal.array,o+a,u+h,p+f),t[5].distance=-(v+_),t[5].normalize();var y=this.boundingBox,x=this.vertices;if(0===v){var b=l/i,T=-_/(f-1),w=-_/(f+1),S=-w/l,M=-T/l;y.min.set(-S*b,-S,w),y.max.set(S*b,S,T),gn(x[0],-S*b,-S,w),gn(x[1],-S*b,S,w),gn(x[2],S*b,-S,w),gn(x[3],S*b,S,w),gn(x[4],-M*b,-M,T),gn(x[5],-M*b,M,T),gn(x[6],M*b,-M,T),gn(x[7],M*b,M,T)}else{var A=(-1-m)/i,E=(1-m)/i,D=(1-g)/l,C=(-1-g)/l,L=(-1-_)/f,P=(1-_)/f;y.min.set(Math.min(A,E),Math.min(C,D),Math.min(P,L)),y.max.set(Math.max(E,A),Math.max(D,C),Math.max(L,P));var O=y.min.array,N=y.max.array;gn(x[0],O[0],O[1],O[2]),gn(x[1],O[0],N[1],O[2]),gn(x[2],N[0],O[1],O[2]),gn(x[3],N[0],N[1],O[2]),gn(x[4],O[0],O[1],N[2]),gn(x[5],O[0],N[1],N[2]),gn(x[6],N[0],O[1],N[2]),gn(x[7],N[0],N[1],N[2])}},getTransformedBoundingBox:(mn=Ar.create(),function(e,t){var r=this.vertices,i=t.array,n=e.min,a=e.max,o=n.array,s=a.array,l=r[0];vn(mn,l,i),_n(o,mn),_n(s,mn);for(var h=1;h<8;h++)l=r[h],vn(mn,l,i),o[0]=yn(mn[0],o[0]),o[1]=yn(mn[1],o[1]),o[2]=yn(mn[2],o[2]),s[0]=xn(mn[0],s[0]),s[1]=xn(mn[1],s[1]),s[2]=xn(mn[2],s[2]);return n._dirty=!0,a._dirty=!0,e})};var Tn,wn=Ci.extend(function(){return{projectionMatrix:new ui,invProjectionMatrix:new ui,viewMatrix:new ui,frustum:new bn}},function(){this.update(!0)},{update:function(e){Ci.prototype.update.call(this,e),ui.invert(this.viewMatrix,this.worldTransform),this.updateProjectionMatrix(),ui.invert(this.invProjectionMatrix,this.projectionMatrix),this.frustum.setFromProjection(this.projectionMatrix)},setViewMatrix:function(e){ui.copy(this.viewMatrix,e),ui.invert(this.worldTransform,e),this.decomposeWorldTransform()},decomposeProjectionMatrix:function(){},setProjectionMatrix:function(e){ui.copy(this.projectionMatrix,e),ui.invert(this.invProjectionMatrix,e),this.decomposeProjectionMatrix()},updateProjectionMatrix:function(){},castRay:(Tn=$r.create(),function(e,t){var r=void 0!==t?t:new Jr,i=e.array[0],n=e.array[1];return $r.set(Tn,i,n,-1,1),$r.transformMat4(Tn,Tn,this.invProjectionMatrix.array),$r.transformMat4(Tn,Tn,this.worldTransform.array),Ar.scale(r.origin.array,Tn,1/Tn[3]),$r.set(Tn,i,n,1,1),$r.transformMat4(Tn,Tn,this.invProjectionMatrix.array),$r.transformMat4(Tn,Tn,this.worldTransform.array),Ar.scale(Tn,Tn,1/Tn[3]),Ar.sub(r.direction.array,Tn,r.origin.array),Ar.normalize(r.direction.array,r.direction.array),r.direction._dirty=!0,r.origin._dirty=!0,r})}),Sn=Mr.create(),Mn=Mr.create(),An={};function En(e){var t=[],r=Object.keys(e);r.sort();for(var i=0;i0&&console.warn("Found multiple camera in one scene. Use the fist one."),this._cameraList.push(e)):e instanceof fn&&this.lights.push(e),e.name&&(this._nodeRepository[e.name]=e)},removeFromScene:function(e){var t;e instanceof wn?(t=this._cameraList.indexOf(e))>=0&&this._cameraList.splice(t,1):e instanceof fn&&(t=this.lights.indexOf(e))>=0&&this.lights.splice(t,1),e.name&&delete this._nodeRepository[e.name]},getNode:function(e){return this._nodeRepository[e]},setMainCamera:function(e){var t=this._cameraList.indexOf(e);t>=0&&this._cameraList.splice(t,1),this._cameraList.unshift(e)},getMainCamera:function(){return this._cameraList[0]},getLights:function(){return this.lights},updateLights:function(){var e=this.lights;this._previousLightNumber=this._lightNumber;for(var t={},r=0;r0&&this._doUpdateRenderList(o,t,r,i,n)}},isFrustumCulled:(Cn=new Si,Ln=new ui,function(e,t,r){var i=e.boundingBox;if(i||(i=e.skeleton&&e.skeleton.boundingBox?e.skeleton.boundingBox:e.geometry.boundingBox),!i)return!1;if(Ln.array=r,Cn.transformFrom(i,Ln),e.castShadow&&this.viewBoundingBoxLastFrame.union(Cn),e.frustumCulling){if(!Cn.intersectBoundingBox(t.frustum.boundingBox))return!0;Ln.array=t.projectionMatrix.array,Cn.max.array[2]>0&&Cn.min.array[2]<0&&(Cn.max.array[2]=-1e-20),Cn.applyProjection(Ln);var n=Cn.min.array,a=Cn.max.array;if(a[0]<-1||n[0]>1||a[1]<-1||n[1]>1||a[2]<-1||n[2]>1)return!0}return!1}),_updateLightUniforms:function(){var e=this.lights;e.sort(On);var t=this._lightUniforms;for(var r in t)for(var i in t[r])t[r][i].value.length=0;for(var n=0;n1&&t.texParameterf(t.TEXTURE_CUBE_MAP,n.TEXTURE_MAX_ANISOTROPY_EXT,this.anisotropic),36193===i&&(e.getGLExtension("OES_texture_half_float")||(i=Ye)),this.mipmaps.length)for(var a=this.width,o=this.height,s=0;s0&&e.height>0}Object.defineProperty(In.prototype,"width",{get:function(){return this.image&&this.image.px?this.image.px.width:this._width},set:function(e){this.image&&this.image.px?console.warn("Texture from image can't set width"):(this._width!==e&&this.dirty(),this._width=e)}}),Object.defineProperty(In.prototype,"height",{get:function(){return this.image&&this.image.px?this.image.px.height:this._height},set:function(e){this.image&&this.image.px?console.warn("Texture from image can't set height"):(this._height!==e&&this.dirty(),this._height=e)}});var zn=wn.extend({fov:50,aspect:1,near:.1,far:2e3},{updateProjectionMatrix:function(){var e=this.fov/180*Math.PI;this.projectionMatrix.perspective(e,this.aspect,this.near,this.far)},decomposeProjectionMatrix:function(){var e=this.projectionMatrix.array,t=2*Math.atan(1/e[5]);this.fov=t/Math.PI*180,this.aspect=e[5]/e[0],this.near=e[14]/(e[10]-1),this.far=e[14]/(e[10]+1)},clone:function(){var e=wn.prototype.clone.call(this);return e.fov=this.fov,e.aspect=this.aspect,e.near=this.near,e.far=this.far,e}}),Fn="framebuffer",Gn="renderbuffer",Un=Gn+"_width",Hn=Gn+"_height",Vn=Gn+"_attached",kn="depthtexture_attached",Wn=ft,jn=pt,Xn=_t,qn=gt,Zn=be.extend({depthBuffer:!0,viewport:null,_width:0,_height:0,_textures:null,_boundRenderer:null},function(){this._cache=new Fi,this._textures={}},{getTextureWidth:function(){return this._width},getTextureHeight:function(){return this._height},bind:function(e){if(e.__currentFrameBuffer){if(e.__currentFrameBuffer===this)return;console.warn("Renderer already bound with another framebuffer. Unbind it first")}e.__currentFrameBuffer=this;var t=e.gl;t.bindFramebuffer(Wn,this._getFrameBufferGL(e)),this._boundRenderer=e;var r=this._cache;r.put("viewport",e.viewport);var i,n,a=!1;for(var o in this._textures){a=!0;var s=this._textures[o];s&&(i=s.texture.width,n=s.texture.height,this._doAttach(e,s.texture,o,s.target))}this._width=i,this._height=n,!a&&this.depthBuffer&&console.error("Must attach texture before bind, or renderbuffer may have incorrect width and height."),this.viewport?e.setViewport(this.viewport):e.setViewport(0,0,i,n,1);var l=r.get("attached_textures");if(l)for(var o in l)if(!this._textures[o]){var h=l[o];this._doDetach(t,o,h)}if(!r.get(kn)&&this.depthBuffer){r.miss(Gn)&&r.put(Gn,t.createRenderbuffer());var u=r.get(Gn);i===r.get(Un)&&n===r.get(Hn)||(t.bindRenderbuffer(jn,u),t.renderbufferStorage(jn,t.DEPTH_COMPONENT16,i,n),r.put(Un,i),r.put(Hn,n),t.bindRenderbuffer(jn,null)),r.get(Vn)||(t.framebufferRenderbuffer(Wn,Xn,jn,u),r.put(Vn,!0))}},unbind:function(e){e.__currentFrameBuffer=null,e.gl.bindFramebuffer(Wn,null),this._boundRenderer=null,this._cache.use(e.__uid__);var t=this._cache.get("viewport");t&&e.setViewport(t),this.updateMipmap(e)},updateMipmap:function(e){var t=e.gl;for(var r in this._textures){var i=this._textures[r];if(i){var n=i.texture;if(!n.NPOT&&n.useMipmap&&n.minFilter===Gi.LINEAR_MIPMAP_LINEAR){var a="textureCube"===n.textureType?ht:lt;t.bindTexture(a,n.getWebGLTexture(e)),t.generateMipmap(a),t.bindTexture(a,null)}}}},checkStatus:function(e){return e.checkFramebufferStatus(Wn)},_getFrameBufferGL:function(e){var t=this._cache;return t.use(e.__uid__),t.miss(Fn)&&t.put(Fn,e.gl.createFramebuffer()),t.get(Fn)},attach:function(e,t,r){if(!e.width)throw new Error("The texture attached to color buffer is not a valid.");t=t||qn,r=r||lt;var i,n=this._boundRenderer;if(n&&n.gl){var a=this._cache;a.use(n.__uid__),i=a.get("attached_textures")}var o=this._textures[t];if(!o||o.target!==r||o.texture!==e||!i||null==i[t]){var s=!0;n&&(s=this._doAttach(n,e,t,r),this.viewport||n.setViewport(0,0,e.width,e.height,1)),s&&(this._textures[t]=this._textures[t]||{},this._textures[t].texture=e,this._textures[t].target=r)}},_doAttach:function(e,t,r,i){var n=e.gl,a=t.getWebGLTexture(e),o=this._cache.get("attached_textures");if(o&&o[r]){var s=o[r];if(s.texture===t&&s.target===i)return}var l=!0;if(((r=+r)===Xn||r===yt)&&(e.getGLExtension("WEBGL_depth_texture")||(console.error("Depth texture is not supported by the browser"),l=!1),t.format!==Ke&&t.format!==mt&&(console.error("The texture attached to depth buffer is not a valid."),l=!1),l)){var h=this._cache.get(Gn);h&&(n.framebufferRenderbuffer(Wn,Xn,jn,null),n.deleteRenderbuffer(h),this._cache.put(Gn,!1)),this._cache.put(Vn,!1),this._cache.put(kn,!0)}return n.framebufferTexture2D(Wn,r,i,a,0),o||(o={},this._cache.put("attached_textures",o)),o[r]=o[r]||{},o[r].texture=t,o[r].target=i,l},_doDetach:function(e,t,r){e.framebufferTexture2D(Wn,t,r,null,0);var i=this._cache.get("attached_textures");i&&i[t]&&(i[t]=null),t!==Xn&&t!==yt||this._cache.put(kn,!1)},detach:function(e,t){this._textures[e]=null,this._boundRenderer&&(this._cache.use(this._boundRenderer.__uid__),this._doDetach(this._boundRenderer.gl,e,t))},dispose:function(e){var t=e.gl,r=this._cache;r.use(e.__uid__);var i=r.get(Gn);i&&t.deleteRenderbuffer(i);var n=r.get(Fn);n&&t.deleteFramebuffer(n),r.deleteContext(e.__uid__),this._textures={}}});Zn.DEPTH_ATTACHMENT=Xn,Zn.COLOR_ATTACHMENT0=qn,Zn.STENCIL_ATTACHMENT=vt,Zn.DEPTH_STENCIL_ATTACHMENT=yt;var Yn=["px","nx","py","ny","pz","nz"],Kn=be.extend(function(){var e={position:new Gr,far:1e3,near:.1,texture:null,shadowMapPass:null},t=e._cameras={px:new zn({fov:90}),nx:new zn({fov:90}),py:new zn({fov:90}),ny:new zn({fov:90}),pz:new zn({fov:90}),nz:new zn({fov:90})};return t.px.lookAt(Gr.POSITIVE_X,Gr.NEGATIVE_Y),t.nx.lookAt(Gr.NEGATIVE_X,Gr.NEGATIVE_Y),t.py.lookAt(Gr.POSITIVE_Y,Gr.POSITIVE_Z),t.ny.lookAt(Gr.NEGATIVE_Y,Gr.NEGATIVE_Z),t.pz.lookAt(Gr.POSITIVE_Z,Gr.NEGATIVE_Y),t.nz.lookAt(Gr.NEGATIVE_Z,Gr.NEGATIVE_Y),e._frameBuffer=new Zn,e},{getCamera:function(e){return this._cameras[e]},render:function(e,t,r){var i=e.gl;r||t.update();for(var n=this.texture.width,a=2*Math.atan(n/(n-.5))/Math.PI*180,o=0;o<6;o++){var s=Yn[o],l=this._cameras[s];if(Gr.copy(l.position,this.position),l.far=this.far,l.near=this.near,l.fov=a,this.shadowMapPass){l.update();var h=t.getBoundingBox();h.applyTransform(l.viewMatrix),t.viewBoundingBoxLastFrame.copy(h),this.shadowMapPass.render(e,t,l,!0)}this._frameBuffer.attach(this.texture,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+o),this._frameBuffer.bind(e),e.render(t,l,!0),this._frameBuffer.unbind(e)}},dispose:function(e){this._frameBuffer.dispose(e)}}),Qn=tn.extend({dynamic:!1,widthSegments:1,heightSegments:1},function(){this.build()},{build:function(){for(var e=this.heightSegments,t=this.widthSegments,r=this.attributes,i=[],n=[],a=[],o=[],s=0;s<=e;s++)for(var l=s/e,h=0;h<=t;h++){var u=h/t;if(i.push([2*u-1,2*l-1,0]),n&&n.push([u,l]),a&&a.push([0,0,1]),h0?this.material.define("fragment","LOD"):this.material.undefine("fragment","LOD"),e.renderPass([this],r)}});function ra(e){return e.charCodeAt(0)+(e.charCodeAt(1)<<8)+(e.charCodeAt(2)<<16)+(e.charCodeAt(3)<<24)}var ia=ra("DXT1"),na=ra("DXT3"),aa=ra("DXT5"),oa=function(e,t){var r=new Int32Array(e,0,31);if(542327876!==r[0])return null;if(4&!r(20))return null;var i,n,a=r(21),o=r[4],s=r[3],l=512&r[28],h=131072&r[2];switch(a){case ia:i=8,n=Gi.COMPRESSED_RGB_S3TC_DXT1_EXT;break;case na:i=16,n=Gi.COMPRESSED_RGBA_S3TC_DXT3_EXT;break;case aa:i=16,n=Gi.COMPRESSED_RGBA_S3TC_DXT5_EXT;break;default:return null}var u=r[1]+4,c=l?6:1,d=1;h&&(d=Math.max(1,r[7]));for(var f=[],p=0;p0){var n=Math.pow(2,e[3]-128-8+i);t[r+0]=e[0]*n,t[r+1]=e[1]*n,t[r+2]=e[2]*n}else t[r+0]=0,t[r+1]=0,t[r+2]=0;return t[r+3]=1,t}function ha(e,t){t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3]}function ua(e,t,r,i){for(var n=0,a=0,o=i;o>0;)if(e[a][0]=t[r++],e[a][1]=t[r++],e[a][2]=t[r++],e[a][3]=t[r++],1===e[a][0]&&1===e[a][1]&&1===e[a][2]){for(var s=e[a][3]<>>0;s>0;s--)ha(e[a-1],e[a]),a++,o--;n+=8}else a++,o--,n=0;return r}function ca(e,t,r,i){if(i<8|i>32767)return ua(e,t,r,i);if(2!=(n=t[r++]))return ua(e,t,r-1,i);if(e[0][1]=t[r++],e[0][2]=t[r++],n=t[r++],(e[0][2]<<8>>>0|n)>>>0!==i)return null;for(var n=0;n<4;n++)for(var a=0;a128){o=(127&o)>>>0;for(var s=t[r++];o--;)e[a++][n]=s}else for(;o--;)e[a++][n]=t[r++]}return r}var da=function(e,t,r){null==r&&(r=0);var i=new Uint8Array(e),n=i.length;if("#?"===function(e,t,r){for(var i="",n=t;n=n)){a+=2;for(var o="";a20)return console.warn("Given image is not a height map"),e}var d,f,p,m;l%(4*i)==0?(d=o.data[l],p=o.data[l+4]):l%(4*i)==4*(i-1)?(d=o.data[l-4],p=o.data[l]):(d=o.data[l-4],p=o.data[l+4]),l<4*i?(f=o.data[l],m=o.data[l+4*i]):l>i*(n-1)*4?(f=o.data[l-4*i],m=o.data[l]):(f=o.data[l-4*i],m=o.data[l+4*i]),s.data[l]=d-p+127,s.data[l+1]=f-m+127,s.data[l+2]=255,s.data[l+3]=255}return a.putImageData(s,0,0),r},isHeightImage:function(e,t,r){if(!e||!e.width||!e.height)return!1;var i=document.createElement("canvas"),n=i.getContext("2d"),a=t||32;r=r||20,i.width=i.height=a,n.drawImage(e,0,0,a,a);for(var o=n.getImageData(0,0,a,a),s=0;sr)return!1}return!0},_fetchTexture:function(e,t,r){Tt.request.get({url:e,responseType:"arraybuffer",onload:t,onerror:r})},createChessboard:function(e,t,r,i){e=e||512,t=t||64,r=r||"black",i=i||"white";var n=Math.ceil(e/t),a=document.createElement("canvas");a.width=e,a.height=e;var o=a.getContext("2d");o.fillStyle=i,o.fillRect(0,0,e,e),o.fillStyle=r;for(var s=0;s=0||(pa.forEach(function(t){e.on(t,this[ma(t)],this)},this),this._meshes.push(e))},detachFromMesh:function(e){var t=this._meshes.indexOf(e);t>=0&&this._meshes.splice(t,1),pa.forEach(function(t){e.off(t,this[ma(t)])},this)},dispose:function(){this._meshes.forEach(function(e){this.detachFromMesh(e)},this)}};var _a=wn.extend({left:-1,right:1,near:-1,far:1,top:1,bottom:-1},{updateProjectionMatrix:function(){this.projectionMatrix.ortho(this.left,this.right,this.bottom,this.top,this.near,this.far)},decomposeProjectionMatrix:function(){var e=this.projectionMatrix.array;this.left=(-1-e[12])/e[0],this.right=(1-e[12])/e[0],this.top=(1-e[13])/e[5],this.bottom=(-1-e[13])/e[5],this.near=-(-1-e[14])/e[10],this.far=-(1-e[14])/e[10]},clone:function(){var e=wn.prototype.clone.call(this);return e.left=this.left,e.right=this.right,e.near=this.near,e.far=this.far,e.top=this.top,e.bottom=this.bottom,e}});br.import("\n@export clay.compositor.vertex\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nattribute vec3 position : POSITION;\nattribute vec2 texcoord : TEXCOORD_0;\nvarying vec2 v_Texcoord;\nvoid main()\n{\n v_Texcoord = texcoord;\n gl_Position = worldViewProjection * vec4(position, 1.0);\n}\n@end");var va=new Qn,ya=new Ui({geometry:va,frustumCulling:!1}),xa=new _a,ba=be.extend(function(){return{fragment:"",outputs:null,material:null,blendWithPrevious:!1,clearColor:!1,clearDepth:!0}},function(){var e=new br(br.source("clay.compositor.vertex"),this.fragment),t=new Wt({shader:e});t.enableTexturesAll(),this.material=t},{setUniform:function(e,t){this.material.setUniform(e,t)},getUniform:function(e){var t=this.material.uniforms[e];if(t)return t.value},attachOutput:function(e,t){this.outputs||(this.outputs={}),t=t||gt,this.outputs[t]=e},detachOutput:function(e){for(var t in this.outputs)this.outputs[t]===e&&(this.outputs[t]=null)},bind:function(e,t){if(this.outputs)for(var r in this.outputs){var i=this.outputs[r];i&&t.attach(i,r)}t&&t.bind(e)},unbind:function(e,t){t.unbind(e)},render:function(e,t){var r=e.gl;if(t){this.bind(e,t);var i=e.getGLExtension("EXT_draw_buffers");if(i&&this.outputs){var n=[];for(var a in this.outputs)(a=+a)>=r.COLOR_ATTACHMENT0&&a<=r.COLOR_ATTACHMENT0+8&&n.push(a);i.drawBuffersEXT(n)}}this.trigger("beforerender",this,e);var o=this.clearDepth?r.DEPTH_BUFFER_BIT:0;if(r.depthMask(!0),this.clearColor){o|=r.COLOR_BUFFER_BIT,r.colorMask(!0,!0,!0,!0);var s=this.clearColor;Array.isArray(s)&&r.clearColor(s[0],s[1],s[2],s[3])}r.clear(o),this.blendWithPrevious?(r.enable(r.BLEND),this.material.transparent=!0):(r.disable(r.BLEND),this.material.transparent=!1),this.renderQuad(e),this.trigger("afterrender",this,e),t&&this.unbind(e,t)},renderQuad:function(e){ya.material=this.material,e.renderPass([ya],xa)},dispose:function(e){}}),Ta={},wa=["px","nx","py","ny","pz","nz"];Ta.prefilterEnvironmentMap=function(e,t,r,i,n){n&&i||(i=Ta.generateNormalDistribution(),n=Ta.integrateBRDF(e,i));var a=(r=r||{}).width||64,o=r.height||64,s=r.type||t.type,l=new In({width:a,height:o,type:s,flipY:!1,mipmaps:[]});l.isPowerOfTwo()||console.warn("Width and height must be power of two to enable mipmap.");var h=Math.min(a,o),u=Math.log(h)/Math.log(2)+1,c=new Wt({shader:new br({vertex:br.source("clay.skybox.vertex"),fragment:"#define SHADER_NAME prefilter\n#define SAMPLE_NUMBER 1024\n#define PI 3.14159265358979\nuniform mat4 viewInverse : VIEWINVERSE;\nuniform samplerCube environmentMap;\nuniform sampler2D normalDistribution;\nuniform float roughness : 0.5;\nvarying vec2 v_Texcoord;\nvarying vec3 v_WorldPosition;\n@import clay.util.rgbm\nvec3 importanceSampleNormal(float i, float roughness, vec3 N) {\n vec3 H = texture2D(normalDistribution, vec2(roughness, i)).rgb;\n vec3 upVector = abs(N.y) > 0.999 ? vec3(1.0, 0.0, 0.0) : vec3(0.0, 1.0, 0.0);\n vec3 tangentX = normalize(cross(N, upVector));\n vec3 tangentZ = cross(N, tangentX);\n return normalize(tangentX * H.x + N * H.y + tangentZ * H.z);\n}\nvoid main() {\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(v_WorldPosition - eyePos);\n vec3 N = V;\n vec3 prefilteredColor = vec3(0.0);\n float totalWeight = 0.0;\n float fMaxSampleNumber = float(SAMPLE_NUMBER);\n for (int i = 0; i < SAMPLE_NUMBER; i++) {\n vec3 H = importanceSampleNormal(float(i) / fMaxSampleNumber, roughness, N);\n vec3 L = reflect(-V, H);\n float NoL = clamp(dot(N, L), 0.0, 1.0);\n if (NoL > 0.0) {\n prefilteredColor += decodeHDR(textureCube(environmentMap, L)).rgb * NoL;\n totalWeight += NoL;\n }\n }\n gl_FragColor = encodeHDR(vec4(prefilteredColor / totalWeight, 1.0));\n}\n"})});c.set("normalDistribution",i),r.encodeRGBM&&c.define("fragment","RGBM_ENCODE"),r.decodeRGBM&&c.define("fragment","RGBM_DECODE");var d,f=new Pn;if("texture2D"===t.textureType){var p=new In({width:a,height:o,type:s===Gi.FLOAT?Gi.HALF_FLOAT:s});fa.panoramaToCubeMap(e,t,p,{encodeRGBM:r.decodeRGBM}),t=p}(d=new ta({scene:f,material:c})).material.set("environmentMap",t);var m=new Kn({texture:l});r.encodeRGBM&&(s=l.type=Gi.UNSIGNED_BYTE);for(var g=new Wi({width:a,height:o,type:s}),_=new Zn({depthBuffer:!1}),v=Tt[s===Gi.UNSIGNED_BYTE?"Uint8Array":"Float32Array"],y=0;y 0.999 ? vec3(1.0, 0.0, 0.0) : vec3(0.0, 1.0, 0.0);\n vec3 tangentX = normalize(cross(N, upVector));\n vec3 tangentZ = cross(N, tangentX);\n return normalize(tangentX * H.x + N * H.y + tangentZ * H.z);\n}\nfloat G_Smith(float roughness, float NoV, float NoL) {\n float k = roughness * roughness / 2.0;\n float G1V = NoV / (NoV * (1.0 - k) + k);\n float G1L = NoL / (NoL * (1.0 - k) + k);\n return G1L * G1V;\n}\nvoid main() {\n vec2 uv = gl_FragCoord.xy / viewportSize;\n float NoV = uv.x;\n float roughness = uv.y;\n vec3 V;\n V.x = sqrt(1.0 - NoV * NoV);\n V.y = 0.0;\n V.z = NoV;\n float A = 0.0;\n float B = 0.0;\n for (int i = 0; i < SAMPLE_NUMBER; i++) {\n vec3 H = importanceSampleNormal(float(i) / fSampleNumber, roughness, N);\n vec3 L = reflect(-V, H);\n float NoL = clamp(L.z, 0.0, 1.0);\n float NoH = clamp(H.z, 0.0, 1.0);\n float VoH = clamp(dot(V, H), 0.0, 1.0);\n if (NoL > 0.0) {\n float G = G_Smith(roughness, NoV, NoL);\n float G_Vis = G * VoH / (NoH * NoV);\n float Fc = pow(1.0 - VoH, 5.0);\n A += (1.0 - Fc) * G_Vis;\n B += Fc * G_Vis;\n }\n }\n gl_FragColor = vec4(vec2(A, B) / fSampleNumber, 0.0, 1.0);\n}\n"}),n=new Wi({width:512,height:256,type:Gi.HALF_FLOAT,wrapS:Gi.CLAMP_TO_EDGE,wrapT:Gi.CLAMP_TO_EDGE,minFilter:Gi.NEAREST,magFilter:Gi.NEAREST,useMipmap:!1});return i.setUniform("normalDistribution",t),i.setUniform("viewportSize",[512,256]),i.attachOutput(n),i.render(e,r),r.dispose(e),n},Ta.generateNormalDistribution=function(e,t){for(var r=new Wi({width:e=e||256,height:t=t||1024,type:Gi.FLOAT,minFilter:Gi.NEAREST,magFilter:Gi.NEAREST,wrapS:Gi.CLAMP_TO_EDGE,wrapT:Gi.CLAMP_TO_EDGE,useMipmap:!1}),i=new Float32Array(t*e*4),n=[],a=0;a>>16)>>>0;h=(((16711935&(h=((252645135&(h=((858993459&(h=((1431655765&h)<<1|(2863311530&h)>>>1)>>>0))<<2|(3435973836&h)>>>2)>>>0))<<4|(4042322160&h)>>>4)>>>0))<<8|(4278255360&h)>>>8)>>>0)/4294967296;var u=Math.sqrt((1-h)/(1+(s*s-1)*h));n[l]=u}for(l=0;l65535?Uint32Array:Uint16Array,v=this.indices=new _(t*e*6),y=this.radius,x=this.phiStart,b=this.phiLength,T=this.thetaStart,w=this.thetaLength,S=[],M=[],A=0,E=1/(y=this.radius);for(d=0;d<=e;d++)for(c=0;c<=t;c++)h=c/t,u=d/e,o=-y*Math.cos(x+h*b)*Math.sin(T+u*w),s=y*Math.cos(T+u*w),l=y*Math.sin(x+h*b)*Math.sin(T+u*w),S[0]=o,S[1]=s,S[2]=l,M[0]=h,M[1]=u,r.set(A,S),i.set(A,M),S[0]*=E,S[1]*=E,S[2]*=E,n.set(A,S),A++;var D=t+1,C=0;for(d=0;d=0&&l.splice(e,1)}),l.push(h),this.__zr&&this.__zr.animation.addAnimator(h),h},stopAnimation:function(e){this._animators=this._animators||[];for(var t=this._animators,r=t.length,i=0;i 0.) {\n vec4 lineColor = wireframeLineColor;\n#ifdef SRGB_DECODE\n lineColor = sRGBToLinear(lineColor);\n#endif\n\n gl_FragColor.rgb = mix(gl_FragColor.rgb, lineColor.rgb, (1.0 - edgeFactor()) * lineColor.a);\n }\n#endif\n@end\n\n\n\n\n@export ecgl.common.bumpMap.header\n\n#ifdef BUMPMAP_ENABLED\nuniform sampler2D bumpMap;\nuniform float bumpScale : 1.0;\n\n\nvec3 bumpNormal(vec3 surfPos, vec3 surfNormal, vec3 baseNormal)\n{\n vec2 dSTdx = dFdx(v_Texcoord);\n vec2 dSTdy = dFdy(v_Texcoord);\n\n float Hll = bumpScale * texture2D(bumpMap, v_Texcoord).x;\n float dHx = bumpScale * texture2D(bumpMap, v_Texcoord + dSTdx).x - Hll;\n float dHy = bumpScale * texture2D(bumpMap, v_Texcoord + dSTdy).x - Hll;\n\n vec3 vSigmaX = dFdx(surfPos);\n vec3 vSigmaY = dFdy(surfPos);\n vec3 vN = surfNormal;\n\n vec3 R1 = cross(vSigmaY, vN);\n vec3 R2 = cross(vN, vSigmaX);\n\n float fDet = dot(vSigmaX, R1);\n\n vec3 vGrad = sign(fDet) * (dHx * R1 + dHy * R2);\n return normalize(abs(fDet) * baseNormal - vGrad);\n\n}\n#endif\n\n@end\n\n@export ecgl.common.normalMap.vertexHeader\n\n#ifdef NORMALMAP_ENABLED\nattribute vec4 tangent : TANGENT;\nvarying vec3 v_Tangent;\nvarying vec3 v_Bitangent;\n#endif\n\n@end\n\n@export ecgl.common.normalMap.vertexMain\n\n#ifdef NORMALMAP_ENABLED\n if (dot(tangent, tangent) > 0.0) {\n v_Tangent = normalize((worldInverseTranspose * vec4(tangent.xyz, 0.0)).xyz);\n v_Bitangent = normalize(cross(v_Normal, v_Tangent) * tangent.w);\n }\n#endif\n\n@end\n\n\n@export ecgl.common.normalMap.fragmentHeader\n\n#ifdef NORMALMAP_ENABLED\nuniform sampler2D normalMap;\nvarying vec3 v_Tangent;\nvarying vec3 v_Bitangent;\n#endif\n\n@end\n\n@export ecgl.common.normalMap.fragmentMain\n#ifdef NORMALMAP_ENABLED\n if (dot(v_Tangent, v_Tangent) > 0.0) {\n vec3 normalTexel = texture2D(normalMap, v_DetailTexcoord).xyz;\n if (dot(normalTexel, normalTexel) > 0.0) { N = normalTexel * 2.0 - 1.0;\n mat3 tbn = mat3(v_Tangent, v_Bitangent, v_Normal);\n N = normalize(tbn * N);\n }\n }\n#endif\n@end\n\n\n\n@export ecgl.common.vertexAnimation.header\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nattribute vec3 prevNormal;\nuniform float percent;\n#endif\n\n@end\n\n@export ecgl.common.vertexAnimation.main\n\n#ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n vec3 norm = mix(prevNormal, normal, percent);\n#else\n vec3 pos = position;\n vec3 norm = normal;\n#endif\n\n@end\n\n\n@export ecgl.common.ssaoMap.header\n#ifdef SSAOMAP_ENABLED\nuniform sampler2D ssaoMap;\nuniform vec4 viewport : VIEWPORT;\n#endif\n@end\n\n@export ecgl.common.ssaoMap.main\n float ao = 1.0;\n#ifdef SSAOMAP_ENABLED\n ao = texture2D(ssaoMap, (gl_FragCoord.xy - viewport.xy) / viewport.zw).r;\n#endif\n@end\n\n\n\n\n@export ecgl.common.diffuseLayer.header\n\n#if (LAYER_DIFFUSEMAP_COUNT > 0)\nuniform float layerDiffuseIntensity[LAYER_DIFFUSEMAP_COUNT];\nuniform sampler2D layerDiffuseMap[LAYER_DIFFUSEMAP_COUNT];\n#endif\n\n@end\n\n@export ecgl.common.emissiveLayer.header\n\n#if (LAYER_EMISSIVEMAP_COUNT > 0)\nuniform float layerEmissionIntensity[LAYER_EMISSIVEMAP_COUNT];\nuniform sampler2D layerEmissiveMap[LAYER_EMISSIVEMAP_COUNT];\n#endif\n\n@end\n\n@export ecgl.common.layers.header\n@import ecgl.common.diffuseLayer.header\n@import ecgl.common.emissiveLayer.header\n@end\n\n@export ecgl.common.diffuseLayer.main\n\n#if (LAYER_DIFFUSEMAP_COUNT > 0)\n for (int _idx_ = 0; _idx_ < LAYER_DIFFUSEMAP_COUNT; _idx_++) {{\n float intensity = layerDiffuseIntensity[_idx_];\n vec4 texel2 = texture2D(layerDiffuseMap[_idx_], v_Texcoord);\n #ifdef SRGB_DECODE\n texel2 = sRGBToLinear(texel2);\n #endif\n albedoTexel.rgb = mix(albedoTexel.rgb, texel2.rgb * intensity, texel2.a);\n albedoTexel.a = texel2.a + (1.0 - texel2.a) * albedoTexel.a;\n }}\n#endif\n\n@end\n\n@export ecgl.common.emissiveLayer.main\n\n#if (LAYER_EMISSIVEMAP_COUNT > 0)\n for (int _idx_ = 0; _idx_ < LAYER_EMISSIVEMAP_COUNT; _idx_++)\n {{\n vec4 texel2 = texture2D(layerEmissiveMap[_idx_], v_Texcoord) * layerEmissionIntensity[_idx_];\n #ifdef SRGB_DECODE\n texel2 = sRGBToLinear(texel2);\n #endif\n float intensity = layerEmissionIntensity[_idx_];\n gl_FragColor.rgb += texel2.rgb * texel2.a * intensity;\n }}\n#endif\n\n@end\n"),br.import("@export ecgl.color.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\n@import ecgl.common.uv.header\n\nattribute vec2 texcoord : TEXCOORD_0;\nattribute vec3 position: POSITION;\n\n@import ecgl.common.wireframe.vertexHeader\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n#endif\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nuniform float percent : 1.0;\n#endif\n\n#ifdef ATMOSPHERE_ENABLED\nattribute vec3 normal: NORMAL;\nuniform mat4 worldInverseTranspose : WORLDINVERSETRANSPOSE;\nvarying vec3 v_Normal;\n#endif\n\nvoid main()\n{\n#ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n#else\n vec3 pos = position;\n#endif\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n @import ecgl.common.uv.main\n\n#ifdef VERTEX_COLOR\n v_Color = a_Color;\n#endif\n\n#ifdef ATMOSPHERE_ENABLED\n v_Normal = normalize((worldInverseTranspose * vec4(normal, 0.0)).xyz);\n#endif\n\n @import ecgl.common.wireframe.vertexMain\n\n}\n\n@end\n\n@export ecgl.color.fragment\n\n#define LAYER_DIFFUSEMAP_COUNT 0\n#define LAYER_EMISSIVEMAP_COUNT 0\n\nuniform sampler2D diffuseMap;\nuniform sampler2D detailMap;\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\n#ifdef ATMOSPHERE_ENABLED\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform vec3 glowColor;\nuniform float glowPower;\nvarying vec3 v_Normal;\n#endif\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n@import ecgl.common.layers.header\n\n@import ecgl.common.uv.fragmentHeader\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.util.srgb\n\nvoid main()\n{\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(color);\n#else\n gl_FragColor = color;\n#endif\n\n#ifdef VERTEX_COLOR\n gl_FragColor *= v_Color;\n#endif\n\n @import ecgl.common.albedo.main\n\n @import ecgl.common.diffuseLayer.main\n\n gl_FragColor *= albedoTexel;\n\n#ifdef ATMOSPHERE_ENABLED\n float atmoIntensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor.rgb += glowColor * atmoIntensity;\n#endif\n\n @import ecgl.common.emissiveLayer.main\n\n @import ecgl.common.wireframe.fragmentMain\n\n}\n@end"),br.import("/**\n * http: */\n\n@export ecgl.lambert.vertex\n\n@import ecgl.common.transformUniforms\n\n@import ecgl.common.uv.header\n\n\n@import ecgl.common.attributes\n\n@import ecgl.common.wireframe.vertexHeader\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n#endif\n\n\n@import ecgl.common.vertexAnimation.header\n\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nvoid main()\n{\n @import ecgl.common.uv.main\n\n @import ecgl.common.vertexAnimation.main\n\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n v_Normal = normalize((worldInverseTranspose * vec4(norm, 0.0)).xyz);\n v_WorldPosition = (world * vec4(pos, 1.0)).xyz;\n\n#ifdef VERTEX_COLOR\n v_Color = a_Color;\n#endif\n\n @import ecgl.common.wireframe.vertexMain\n}\n\n@end\n\n\n@export ecgl.lambert.fragment\n\n#define LAYER_DIFFUSEMAP_COUNT 0\n#define LAYER_EMISSIVEMAP_COUNT 0\n\n#define NORMAL_UP_AXIS 1\n#define NORMAL_FRONT_AXIS 2\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform sampler2D diffuseMap;\nuniform sampler2D detailMap;\n\n@import ecgl.common.layers.header\n\nuniform float emissionIntensity: 1.0;\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n#ifdef ATMOSPHERE_ENABLED\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform vec3 glowColor;\nuniform float glowPower;\n#endif\n\n#ifdef AMBIENT_LIGHT_COUNT\n@import clay.header.ambient_light\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n@import clay.header.ambient_sh_light\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n@import clay.header.directional_light\n#endif\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n\n@import ecgl.common.ssaoMap.header\n\n@import ecgl.common.bumpMap.header\n\n@import clay.util.srgb\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.plugin.compute_shadow_map\n\nvoid main()\n{\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(color);\n#else\n gl_FragColor = color;\n#endif\n\n#ifdef VERTEX_COLOR\n #ifdef SRGB_DECODE\n gl_FragColor *= sRGBToLinear(v_Color);\n #else\n gl_FragColor *= v_Color;\n #endif\n#endif\n\n @import ecgl.common.albedo.main\n\n @import ecgl.common.diffuseLayer.main\n\n gl_FragColor *= albedoTexel;\n\n vec3 N = v_Normal;\n#ifdef DOUBLE_SIDED\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n\n if (dot(N, V) < 0.0) {\n N = -N;\n }\n#endif\n\n float ambientFactor = 1.0;\n\n#ifdef BUMPMAP_ENABLED\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n ambientFactor = dot(v_Normal, N);\n#endif\n\n vec3 N2 = vec3(N.x, N[NORMAL_UP_AXIS], N[NORMAL_FRONT_AXIS]);\n\n vec3 diffuseColor = vec3(0.0, 0.0, 0.0);\n\n @import ecgl.common.ssaoMap.main\n\n#ifdef AMBIENT_LIGHT_COUNT\n for(int i = 0; i < AMBIENT_LIGHT_COUNT; i++)\n {\n diffuseColor += ambientLightColor[i] * ambientFactor * ao;\n }\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_SH_LIGHT_COUNT; _idx_++)\n {{\n diffuseColor += calcAmbientSHLight(_idx_, N2) * ambientSHLightColor[_idx_] * ao;\n }}\n#endif\n#ifdef DIRECTIONAL_LIGHT_COUNT\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n float shadowContribsDir[DIRECTIONAL_LIGHT_COUNT];\n if(shadowEnabled)\n {\n computeShadowOfDirectionalLights(v_WorldPosition, shadowContribsDir);\n }\n#endif\n for(int i = 0; i < DIRECTIONAL_LIGHT_COUNT; i++)\n {\n vec3 lightDirection = -directionalLightDirection[i];\n vec3 lightColor = directionalLightColor[i];\n\n float shadowContrib = 1.0;\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n if (shadowEnabled)\n {\n shadowContrib = shadowContribsDir[i];\n }\n#endif\n\n float ndl = dot(N, normalize(lightDirection)) * shadowContrib;\n\n diffuseColor += lightColor * clamp(ndl, 0.0, 1.0);\n }\n#endif\n\n gl_FragColor.rgb *= diffuseColor;\n\n#ifdef ATMOSPHERE_ENABLED\n float atmoIntensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor.rgb += glowColor * atmoIntensity;\n#endif\n\n @import ecgl.common.emissiveLayer.main\n\n @import ecgl.common.wireframe.fragmentMain\n}\n\n@end"),br.import("@export ecgl.realistic.vertex\n\n@import ecgl.common.transformUniforms\n\n@import ecgl.common.uv.header\n\n@import ecgl.common.attributes\n\n\n@import ecgl.common.wireframe.vertexHeader\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n#endif\n\n#ifdef NORMALMAP_ENABLED\nattribute vec4 tangent : TANGENT;\nvarying vec3 v_Tangent;\nvarying vec3 v_Bitangent;\n#endif\n\n@import ecgl.common.vertexAnimation.header\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nvoid main()\n{\n\n @import ecgl.common.uv.main\n\n @import ecgl.common.vertexAnimation.main\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n v_Normal = normalize((worldInverseTranspose * vec4(norm, 0.0)).xyz);\n v_WorldPosition = (world * vec4(pos, 1.0)).xyz;\n\n#ifdef VERTEX_COLOR\n v_Color = a_Color;\n#endif\n\n#ifdef NORMALMAP_ENABLED\n v_Tangent = normalize((worldInverseTranspose * vec4(tangent.xyz, 0.0)).xyz);\n v_Bitangent = normalize(cross(v_Normal, v_Tangent) * tangent.w);\n#endif\n\n @import ecgl.common.wireframe.vertexMain\n\n}\n\n@end\n\n\n\n@export ecgl.realistic.fragment\n\n#define LAYER_DIFFUSEMAP_COUNT 0\n#define LAYER_EMISSIVEMAP_COUNT 0\n#define PI 3.14159265358979\n#define ROUGHNESS_CHANEL 0\n#define METALNESS_CHANEL 1\n\n#define NORMAL_UP_AXIS 1\n#define NORMAL_FRONT_AXIS 2\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform sampler2D diffuseMap;\n\nuniform sampler2D detailMap;\nuniform sampler2D metalnessMap;\nuniform sampler2D roughnessMap;\n\n@import ecgl.common.layers.header\n\nuniform float emissionIntensity: 1.0;\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nuniform float metalness : 0.0;\nuniform float roughness : 0.5;\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n#ifdef ATMOSPHERE_ENABLED\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform vec3 glowColor;\nuniform float glowPower;\n#endif\n\n#ifdef AMBIENT_LIGHT_COUNT\n@import clay.header.ambient_light\n#endif\n\n#ifdef AMBIENT_SH_LIGHT_COUNT\n@import clay.header.ambient_sh_light\n#endif\n\n#ifdef AMBIENT_CUBEMAP_LIGHT_COUNT\n@import clay.header.ambient_cubemap_light\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n@import clay.header.directional_light\n#endif\n\n@import ecgl.common.normalMap.fragmentHeader\n\n@import ecgl.common.ssaoMap.header\n\n@import ecgl.common.bumpMap.header\n\n@import clay.util.srgb\n\n@import clay.util.rgbm\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.plugin.compute_shadow_map\n\nvec3 F_Schlick(float ndv, vec3 spec) {\n return spec + (1.0 - spec) * pow(1.0 - ndv, 5.0);\n}\n\nfloat D_Phong(float g, float ndh) {\n float a = pow(8192.0, g);\n return (a + 2.0) / 8.0 * pow(ndh, a);\n}\n\nvoid main()\n{\n vec4 albedoColor = color;\n\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n#ifdef VERTEX_COLOR\n #ifdef SRGB_DECODE\n albedoColor *= sRGBToLinear(v_Color);\n #else\n albedoColor *= v_Color;\n #endif\n#endif\n\n @import ecgl.common.albedo.main\n\n @import ecgl.common.diffuseLayer.main\n\n albedoColor *= albedoTexel;\n\n float m = metalness;\n\n#ifdef METALNESSMAP_ENABLED\n float m2 = texture2D(metalnessMap, v_DetailTexcoord)[METALNESS_CHANEL];\n m = clamp(m2 + (m - 0.5) * 2.0, 0.0, 1.0);\n#endif\n\n vec3 baseColor = albedoColor.rgb;\n albedoColor.rgb = baseColor * (1.0 - m);\n vec3 specFactor = mix(vec3(0.04), baseColor, m);\n\n float g = 1.0 - roughness;\n\n#ifdef ROUGHNESSMAP_ENABLED\n float g2 = 1.0 - texture2D(roughnessMap, v_DetailTexcoord)[ROUGHNESS_CHANEL];\n g = clamp(g2 + (g - 0.5) * 2.0, 0.0, 1.0);\n#endif\n\n vec3 N = v_Normal;\n\n#ifdef DOUBLE_SIDED\n if (dot(N, V) < 0.0) {\n N = -N;\n }\n#endif\n\n float ambientFactor = 1.0;\n\n#ifdef BUMPMAP_ENABLED\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n ambientFactor = dot(v_Normal, N);\n#endif\n\n@import ecgl.common.normalMap.fragmentMain\n\n vec3 N2 = vec3(N.x, N[NORMAL_UP_AXIS], N[NORMAL_FRONT_AXIS]);\n\n vec3 diffuseTerm = vec3(0.0);\n vec3 specularTerm = vec3(0.0);\n\n float ndv = clamp(dot(N, V), 0.0, 1.0);\n vec3 fresnelTerm = F_Schlick(ndv, specFactor);\n\n @import ecgl.common.ssaoMap.main\n\n#ifdef AMBIENT_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_LIGHT_COUNT; _idx_++)\n {{\n diffuseTerm += ambientLightColor[_idx_] * ambientFactor * ao;\n }}\n#endif\n\n#ifdef AMBIENT_SH_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_SH_LIGHT_COUNT; _idx_++)\n {{\n diffuseTerm += calcAmbientSHLight(_idx_, N2) * ambientSHLightColor[_idx_] * ao;\n }}\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n float shadowContribsDir[DIRECTIONAL_LIGHT_COUNT];\n if(shadowEnabled)\n {\n computeShadowOfDirectionalLights(v_WorldPosition, shadowContribsDir);\n }\n#endif\n for(int _idx_ = 0; _idx_ < DIRECTIONAL_LIGHT_COUNT; _idx_++)\n {{\n vec3 L = -directionalLightDirection[_idx_];\n vec3 lc = directionalLightColor[_idx_];\n\n vec3 H = normalize(L + V);\n float ndl = clamp(dot(N, normalize(L)), 0.0, 1.0);\n float ndh = clamp(dot(N, H), 0.0, 1.0);\n\n float shadowContrib = 1.0;\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n if (shadowEnabled)\n {\n shadowContrib = shadowContribsDir[_idx_];\n }\n#endif\n\n vec3 li = lc * ndl * shadowContrib;\n\n diffuseTerm += li;\n specularTerm += li * fresnelTerm * D_Phong(g, ndh);\n }}\n#endif\n\n\n#ifdef AMBIENT_CUBEMAP_LIGHT_COUNT\n vec3 L = reflect(-V, N);\n L = vec3(L.x, L[NORMAL_UP_AXIS], L[NORMAL_FRONT_AXIS]);\n float rough2 = clamp(1.0 - g, 0.0, 1.0);\n float bias2 = rough2 * 5.0;\n vec2 brdfParam2 = texture2D(ambientCubemapLightBRDFLookup[0], vec2(rough2, ndv)).xy;\n vec3 envWeight2 = specFactor * brdfParam2.x + brdfParam2.y;\n vec3 envTexel2;\n for(int _idx_ = 0; _idx_ < AMBIENT_CUBEMAP_LIGHT_COUNT; _idx_++)\n {{\n envTexel2 = RGBMDecode(textureCubeLodEXT(ambientCubemapLightCubemap[_idx_], L, bias2), 8.12);\n specularTerm += ambientCubemapLightColor[_idx_] * envTexel2 * envWeight2 * ao;\n }}\n#endif\n\n gl_FragColor.rgb = albedoColor.rgb * diffuseTerm + specularTerm;\n gl_FragColor.a = albedoColor.a;\n\n#ifdef ATMOSPHERE_ENABLED\n float atmoIntensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor.rgb += glowColor * atmoIntensity;\n#endif\n\n#ifdef SRGB_ENCODE\n gl_FragColor = linearTosRGB(gl_FragColor);\n#endif\n\n @import ecgl.common.emissiveLayer.main\n\n @import ecgl.common.wireframe.fragmentMain\n}\n\n@end"),br.import("@export ecgl.hatching.vertex\n\n@import ecgl.realistic.vertex\n\n@end\n\n\n@export ecgl.hatching.fragment\n\n#define NORMAL_UP_AXIS 1\n#define NORMAL_FRONT_AXIS 2\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform vec4 color : [0.0, 0.0, 0.0, 1.0];\nuniform vec4 paperColor : [1.0, 1.0, 1.0, 1.0];\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n#ifdef AMBIENT_LIGHT_COUNT\n@import clay.header.ambient_light\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n@import clay.header.ambient_sh_light\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n@import clay.header.directional_light\n#endif\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n\n@import ecgl.common.ssaoMap.header\n\n@import ecgl.common.bumpMap.header\n\n@import clay.util.srgb\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.plugin.compute_shadow_map\n\nuniform sampler2D hatch1;\nuniform sampler2D hatch2;\nuniform sampler2D hatch3;\nuniform sampler2D hatch4;\nuniform sampler2D hatch5;\nuniform sampler2D hatch6;\n\nfloat shade(in float tone) {\n vec4 c = vec4(1. ,1., 1., 1.);\n float step = 1. / 6.;\n vec2 uv = v_DetailTexcoord;\n if (tone <= step / 2.0) {\n c = mix(vec4(0.), texture2D(hatch6, uv), 12. * tone);\n }\n else if (tone <= step) {\n c = mix(texture2D(hatch6, uv), texture2D(hatch5, uv), 6. * tone);\n }\n if(tone > step && tone <= 2. * step){\n c = mix(texture2D(hatch5, uv), texture2D(hatch4, uv) , 6. * (tone - step));\n }\n if(tone > 2. * step && tone <= 3. * step){\n c = mix(texture2D(hatch4, uv), texture2D(hatch3, uv), 6. * (tone - 2. * step));\n }\n if(tone > 3. * step && tone <= 4. * step){\n c = mix(texture2D(hatch3, uv), texture2D(hatch2, uv), 6. * (tone - 3. * step));\n }\n if(tone > 4. * step && tone <= 5. * step){\n c = mix(texture2D(hatch2, uv), texture2D(hatch1, uv), 6. * (tone - 4. * step));\n }\n if(tone > 5. * step){\n c = mix(texture2D(hatch1, uv), vec4(1.), 6. * (tone - 5. * step));\n }\n\n return c.r;\n}\n\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\n\nvoid main()\n{\n#ifdef SRGB_DECODE\n vec4 inkColor = sRGBToLinear(color);\n#else\n vec4 inkColor = color;\n#endif\n\n#ifdef VERTEX_COLOR\n #ifdef SRGB_DECODE\n inkColor *= sRGBToLinear(v_Color);\n #else\n inkColor *= v_Color;\n #endif\n#endif\n\n vec3 N = v_Normal;\n#ifdef DOUBLE_SIDED\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n\n if (dot(N, V) < 0.0) {\n N = -N;\n }\n#endif\n\n float tone = 0.0;\n\n float ambientFactor = 1.0;\n\n#ifdef BUMPMAP_ENABLED\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n ambientFactor = dot(v_Normal, N);\n#endif\n\n vec3 N2 = vec3(N.x, N[NORMAL_UP_AXIS], N[NORMAL_FRONT_AXIS]);\n\n @import ecgl.common.ssaoMap.main\n\n#ifdef AMBIENT_LIGHT_COUNT\n for(int i = 0; i < AMBIENT_LIGHT_COUNT; i++)\n {\n tone += dot(ambientLightColor[i], w) * ambientFactor * ao;\n }\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_SH_LIGHT_COUNT; _idx_++)\n {{\n tone += dot(calcAmbientSHLight(_idx_, N2) * ambientSHLightColor[_idx_], w) * ao;\n }}\n#endif\n#ifdef DIRECTIONAL_LIGHT_COUNT\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n float shadowContribsDir[DIRECTIONAL_LIGHT_COUNT];\n if(shadowEnabled)\n {\n computeShadowOfDirectionalLights(v_WorldPosition, shadowContribsDir);\n }\n#endif\n for(int i = 0; i < DIRECTIONAL_LIGHT_COUNT; i++)\n {\n vec3 lightDirection = -directionalLightDirection[i];\n float lightTone = dot(directionalLightColor[i], w);\n\n float shadowContrib = 1.0;\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n if (shadowEnabled)\n {\n shadowContrib = shadowContribsDir[i];\n }\n#endif\n\n float ndl = dot(N, normalize(lightDirection)) * shadowContrib;\n\n tone += lightTone * clamp(ndl, 0.0, 1.0);\n }\n#endif\n\n gl_FragColor = mix(inkColor, paperColor, shade(clamp(tone, 0.0, 1.0)));\n }\n@end\n"),br.import("@export ecgl.sm.depth.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nattribute vec3 position : POSITION;\nattribute vec2 texcoord : TEXCOORD_0;\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nuniform float percent : 1.0;\n#endif\n\nvarying vec4 v_ViewPosition;\nvarying vec2 v_Texcoord;\n\nvoid main(){\n\n#ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n#else\n vec3 pos = position;\n#endif\n\n v_ViewPosition = worldViewProjection * vec4(pos, 1.0);\n gl_Position = v_ViewPosition;\n\n v_Texcoord = texcoord;\n\n}\n@end\n\n\n\n@export ecgl.sm.depth.fragment\n\n@import clay.sm.depth.fragment\n\n@end");var Za=Pn.prototype.addToScene,Ya=Pn.prototype.removeFromScene;Pn.prototype.addToScene=function(e){if(Za.call(this,e),this.__zr){var t=this.__zr;e.traverse(function(e){e.__zr=t,e.addAnimatorsToZr&&e.addAnimatorsToZr(t)})}},Pn.prototype.removeFromScene=function(e){Ya.call(this,e),e.traverse(function(e){var t=e.__zr;e.__zr=null,t&&e.removeAnimatorsFromZr&&e.removeAnimatorsFromZr(t)})},Wt.prototype.setTextureImage=function(e,t,r,i){if(this.shader){var n,a,o=r.getZr(),s=this;return s.autoUpdateTextureStatus=!1,s.disableTexture(e),(a=t)&&"none"!==a&&(n=Ka.loadTexture(t,r,i,function(t){s.enableTexture(e),o&&o.refresh()}),s.set(e,n)),n}};var Ka={};Ka.Renderer=zr,Ka.Node=Ci,Ka.Mesh=Ui,Ka.Shader=br,Ka.Material=Wt,Ka.Texture=Gi,Ka.Texture2D=Wi,Ka.Geometry=tn,Ka.SphereGeometry=Oa,Ka.PlaneGeometry=Qn,Ka.CubeGeometry=$n,Ka.AmbientLight=Na,Ka.DirectionalLight=Ra,Ka.PointLight=Ia,Ka.SpotLight=Ba,Ka.PerspectiveCamera=zn,Ka.OrthographicCamera=_a,Ka.Vector2=Yt,Ka.Vector3=Gr,Ka.Vector4=za,Ka.Quaternion=fi,Ka.Matrix2=Ha,Ka.Matrix2d=ka,Ka.Matrix3=Wa,Ka.Matrix4=ui,Ka.Plane=pn,Ka.Ray=Jr,Ka.BoundingBox=Si,Ka.Frustum=bn;var Qa=null;function Ja(e){return Math.pow(2,Math.round(Math.log(e)/Math.LN2))}function $a(e){if((e.wrapS===Gi.REPEAT||e.wrapT===Gi.REPEAT)&&e.image){var t=Ja(e.width),r=Ja(e.height);if(t!==e.width||r!==e.height){var i=document.createElement("canvas");i.width=t,i.height=r,i.getContext("2d").drawImage(e.image,0,0,t,r),e.image=i}}}Ka.loadTexture=function(e,t,r,i){"function"==typeof r&&(i=r,r={}),r=r||{};for(var n=Object.keys(r).sort(),o="",s=0;s3?t[3]=e[3]:t[3]=1,t):((t=o(e||"#000",t)||[0,0,0,0])[0]/=255,t[1]/=255,t[2]/=255,t)},Ka.directionFromAlphaBeta=function(e,t){var r=e/180*Math.PI+Math.PI/2,i=-t/180*Math.PI+Math.PI/2,n=[],a=Math.sin(r);return n[0]=a*Math.cos(i),n[1]=-Math.cos(r),n[2]=a*Math.sin(i),n},Ka.getShadowResolution=function(e){var t=1024;switch(e){case"low":t=512;break;case"medium":break;case"high":t=2048;break;case"ultra":t=4096}return t},Ka.COMMON_SHADERS=["lambert","color","realistic","hatching","shadow"],Ka.createShader=function(e){"ecgl.shadow"===e&&(e="ecgl.displayShadow");var t=br.source(e+".vertex"),r=br.source(e+".fragment");t||console.error("Vertex shader of '%s' not exits",e),r||console.error("Fragment shader of '%s' not exits",e);var i=new br(t,r);return i.name=e,i},Ka.createMaterial=function(e,t){t instanceof Array||(t=[t]);var r=Ka.createShader(e),i=new Wt({shader:r});return t.forEach(function(e){"string"==typeof e&&i.define(e)}),i},Ka.setMaterialFromModel=function(e,t,r,i){t.autoUpdateTextureStatus=!1;var n=r.getModel(e+"Material"),a=n.get("detailTexture"),o=La(n.get("textureTiling"),1),s=La(n.get("textureOffset"),0);"number"==typeof o&&(o=[o,o]),"number"==typeof s&&(s=[s,s]);var l=o[0]>1||o[1]>1?Ka.Texture.REPEAT:Ka.Texture.CLAMP_TO_EDGE,h={anisotropic:8,wrapS:l,wrapT:l};if("realistic"===e){var u=n.get("roughness"),c=n.get("metalness");null!=c?isNaN(c)&&(t.setTextureImage("metalnessMap",c,i,h),c=La(n.get("metalnessAdjust"),.5)):c=0,null!=u?isNaN(u)&&(t.setTextureImage("roughnessMap",u,i,h),u=La(n.get("roughnessAdjust"),.5)):u=.5;var d=n.get("normalTexture");t.setTextureImage("detailMap",a,i,h),t.setTextureImage("normalMap",d,i,h),t.set({roughness:u,metalness:c,detailUvRepeat:o,detailUvOffset:s})}else if("lambert"===e)t.setTextureImage("detailMap",a,i,h),t.set({detailUvRepeat:o,detailUvOffset:s});else if("color"===e)t.setTextureImage("detailMap",a,i,h),t.set({detailUvRepeat:o,detailUvOffset:s});else if("hatching"===e){var f=n.get("hatchingTextures")||[];f.length;for(var p=0;p<6;p++)t.setTextureImage("hatch"+(p+1),f[p],i,{anisotropic:8,wrapS:Ka.Texture.REPEAT,wrapT:Ka.Texture.REPEAT});t.set({detailUvRepeat:o,detailUvOffset:s})}},Ka.updateVertexAnimation=function(e,t,r,i){var n=i.get("animation"),a=i.get("animationDurationUpdate"),o=i.get("animationEasingUpdate"),s=r.shadowDepthMaterial;if(n&&t&&a>0&&t.geometry.vertexCount===r.geometry.vertexCount){r.material.define("vertex","VERTEX_ANIMATION"),r.ignorePreZ=!0,s&&s.define("vertex","VERTEX_ANIMATION");for(var l=0;l=0&&this._viewsToDispose.splice(t,1),this.views.push(e),e.layer=this;var r=this.zr;e.scene.traverse(function(e){e.__zr=r,e.addAnimatorsToZr&&e.addAnimatorsToZr(r)})}},eo.prototype.removeView=function(e){if(e.layer===this){var t=this.views.indexOf(e);t>=0&&(this.views.splice(t,1),e.scene.traverse(to,this),e.layer=null,this._viewsToDispose.push(e))}},eo.prototype.removeViewsAll=function(){this.views.forEach(function(e){e.scene.traverse(to,this),e.layer=null,this._viewsToDispose.push(e)},this),this.views.length=0},eo.prototype.resize=function(e,t){this.renderer.resize(e,t)},eo.prototype.clear=function(){var e=this.renderer.gl,t=this._backgroundColor||[0,0,0,0];e.clearColor(t[0],t[1],t[2],t[3]),e.depthMask(!0),e.colorMask(!0,!0,!0,!0),e.clear(e.DEPTH_BUFFER_BIT|e.COLOR_BUFFER_BIT)},eo.prototype.clearDepth=function(){var e=this.renderer.gl;e.clear(e.DEPTH_BUFFER_BIT)},eo.prototype.clearColor=function(){var e=this.renderer.gl;e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)},eo.prototype.needsRefresh=function(){this.zr.refresh()},eo.prototype.refresh=function(e){this._backgroundColor=e?Ka.parseColor(e):[0,0,0,0],this.renderer.clearColor=this._backgroundColor;for(var t=0;t20)){e=e.event;var i=this.pickObject(e.offsetX,e.offsetY);i&&(this._dispatchEvent(e.type,e,i),this._dispatchDataEvent(e.type,e,i));var n=this._clickToSetFocusPoint(e);n&&n.view.setDOFFocusOnPoint(n.distance)&&this.zr.refresh()}}},eo.prototype._clickToSetFocusPoint=function(e){for(var t=this.renderer,r=t.viewport,i=this.views.length-1;i>=0;i--){var n=this.views[i];if(n.hasDOF()&&n.containPoint(e.offsetX,e.offsetY)){this._picking.scene=n.scene,this._picking.camera=n.camera,t.viewport=n.viewport;var a=this._picking.pick(e.offsetX,e.offsetY,!0);if(a)return a.view=n,a}}t.viewport=r},eo.prototype.onglobalout=function(e){var t=this._hovered;t&&this._dispatchEvent("mouseout",e,{target:t.target})},eo.prototype.pickObject=function(e,t){for(var r=[],i=this.renderer,n=i.viewport,a=0;a=0&&(c.dataIndex=this._lastDataIndex,c.seriesIndex=this._lastSeriesIndex,this.zr.handler.dispatchToElement(u,"mouseout",t)),s=!0):null!=o&&o!==this._lastEventData&&(null!=this._lastEventData&&(c.eventData=this._lastEventData,this.zr.handler.dispatchToElement(u,"mouseout",t)),s=!0),this._lastEventData=o,this._lastDataIndex=n,this._lastSeriesIndex=a),c.eventData=o,c.dataIndex=n,c.seriesIndex=a,(null!=o||parseInt(n,10)>=0&&parseInt(a,10)>=0)&&(this.zr.handler.dispatchToElement(u,e,t),s&&this.zr.handler.dispatchToElement(u,"mouseover",t))},eo.prototype._dispatchToView=function(e,t){for(var r=0;re&&o=0&&(function(e){lo(e,"itemStyle"),lo(e,"lineStyle"),lo(e,"areaStyle"),lo(e,"label")}(t),"mapbox"===t.coordinateSystem&&(t.coordinateSystem="mapbox3D",e.mapbox3D=e.mapbox))}),ho(e.xAxis3D),ho(e.yAxis3D),ho(e.zAxis3D),ho(e.grid3D),lo(e.geo3D)});const co={defaultOption:{viewControl:{projection:"perspective",autoRotate:!1,autoRotateDirection:"cw",autoRotateSpeed:10,autoRotateAfterStill:3,damping:.8,rotateSensitivity:1,zoomSensitivity:1,panSensitivity:1,panMouseButton:"middle",rotateMouseButton:"left",distance:150,minDistance:40,maxDistance:400,orthographicSize:150,maxOrthographicSize:400,minOrthographicSize:20,center:[0,0,0],alpha:0,beta:0,minAlpha:-90,maxAlpha:90}},setView:function(e){e=e||{},this.option.viewControl=this.option.viewControl||{},null!=e.alpha&&(this.option.viewControl.alpha=e.alpha),null!=e.beta&&(this.option.viewControl.beta=e.beta),null!=e.distance&&(this.option.viewControl.distance=e.distance),null!=e.center&&(this.option.viewControl.center=e.center)}},fo={defaultOption:{postEffect:{enable:!1,bloom:{enable:!0,intensity:.1},depthOfField:{enable:!1,focalRange:20,focalDistance:50,blurRadius:10,fstop:2.8,quality:"medium"},screenSpaceAmbientOcclusion:{enable:!1,radius:2,quality:"medium",intensity:1},screenSpaceReflection:{enable:!1,quality:"medium",maxRoughness:.8},colorCorrection:{enable:!0,exposure:0,brightness:0,contrast:1,saturation:1,lookupTexture:""},edge:{enable:!1},FXAA:{enable:!1}},temporalSuperSampling:{enable:"auto"}}},po={defaultOption:{light:{main:{shadow:!1,shadowQuality:"high",color:"#fff",intensity:1,alpha:0,beta:0},ambient:{color:"#fff",intensity:.2},ambientCubemap:{texture:null,exposure:1,diffuseIntensity:.5,specularIntensity:.5}}}};var mo=g.extend({type:"grid3D",dependencies:["xAxis3D","yAxis3D","zAxis3D"],defaultOption:{show:!0,zlevel:-10,left:0,top:0,width:"100%",height:"100%",environment:"auto",boxWidth:100,boxHeight:100,boxDepth:100,axisPointer:{show:!0,lineStyle:{color:"rgba(0, 0, 0, 0.8)",width:1},label:{show:!0,formatter:null,margin:8,textStyle:{fontSize:14,color:"#fff",backgroundColor:"rgba(0,0,0,0.5)",padding:3,borderRadius:3}}},axisLine:{show:!0,lineStyle:{color:"#333",width:2,type:"solid"}},axisTick:{show:!0,inside:!1,length:3,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,margin:8,textStyle:{fontSize:12}},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}},light:{main:{alpha:30,beta:40},ambient:{intensity:.4}},viewControl:{alpha:20,beta:40,autoRotate:!1,distance:200,minDistance:40,maxDistance:400}}});_(mo.prototype,co),_(mo.prototype,fo),_(mo.prototype,po);var go=La,_o={left:0,middle:1,right:2};function vo(e){return e instanceof Array||(e=[e,e]),e}var yo=be.extend(function(){return{zr:null,viewGL:null,_center:new Gr,minDistance:.5,maxDistance:1.5,maxOrthographicSize:300,minOrthographicSize:30,minAlpha:-90,maxAlpha:90,minBeta:-1/0,maxBeta:1/0,autoRotateAfterStill:0,autoRotateDirection:"cw",autoRotateSpeed:60,damping:.8,rotateSensitivity:1,zoomSensitivity:1,panSensitivity:1,panMouseButton:"middle",rotateMouseButton:"left",_mode:"rotate",_camera:null,_needsUpdate:!1,_rotating:!1,_phi:0,_theta:0,_mouseX:0,_mouseY:0,_rotateVelocity:new Yt,_panVelocity:new Yt,_distance:500,_zoomSpeed:0,_stillTimeout:0,_animators:[]}},function(){["_mouseDownHandler","_mouseWheelHandler","_mouseMoveHandler","_mouseUpHandler","_pinchHandler","_contextMenuHandler","_update"].forEach(function(e){this[e]=this[e].bind(this)},this)},{init:function(){var e=this.zr;e&&(e.on("mousedown",this._mouseDownHandler),e.on("globalout",this._mouseUpHandler),e.on("mousewheel",this._mouseWheelHandler),e.on("pinch",this._pinchHandler),e.animation.on("frame",this._update),e.dom.addEventListener("contextmenu",this._contextMenuHandler))},dispose:function(){var e=this.zr;e&&(e.off("mousedown",this._mouseDownHandler),e.off("mousemove",this._mouseMoveHandler),e.off("mouseup",this._mouseUpHandler),e.off("mousewheel",this._mouseWheelHandler),e.off("pinch",this._pinchHandler),e.off("globalout",this._mouseUpHandler),e.dom.removeEventListener("contextmenu",this._contextMenuHandler),e.animation.off("frame",this._update)),this.stopAllAnimation()},getDistance:function(){return this._distance},setDistance:function(e){this._distance=e,this._needsUpdate=!0},getOrthographicSize:function(){return this._orthoSize},setOrthographicSize:function(e){this._orthoSize=e,this._needsUpdate=!0},getAlpha:function(){return this._theta/Math.PI*180},getBeta:function(){return-this._phi/Math.PI*180},getCenter:function(){return this._center.toArray()},setAlpha:function(e){e=Math.max(Math.min(this.maxAlpha,e),this.minAlpha),this._theta=e/180*Math.PI,this._needsUpdate=!0},setBeta:function(e){e=Math.max(Math.min(this.maxBeta,e),this.minBeta),this._phi=-e/180*Math.PI,this._needsUpdate=!0},setCenter:function(e){this._center.setArray(e)},setViewGL:function(e){this.viewGL=e},getCamera:function(){return this.viewGL.camera},setFromViewControlModel:function(e,t){var r=(t=t||{}).baseDistance||0,i=t.baseOrthoSize||1,n=e.get("projection");"perspective"!==n&&"orthographic"!==n&&"isometric"!==n&&(n="perspective"),this._projection=n,this.viewGL.setProjection(n);var a=e.get("distance")+r,o=e.get("orthographicSize")+i;[["damping",.8],["autoRotate",!1],["autoRotateAfterStill",3],["autoRotateDirection","cw"],["autoRotateSpeed",10],["minDistance",30],["maxDistance",400],["minOrthographicSize",30],["maxOrthographicSize",300],["minAlpha",-90],["maxAlpha",90],["minBeta",-1/0],["maxBeta",1/0],["rotateSensitivity",1],["zoomSensitivity",1],["panSensitivity",1],["panMouseButton","left"],["rotateMouseButton","middle"]].forEach(function(t){this[t[0]]=go(e.get(t[0]),t[1])},this),this.minDistance+=r,this.maxDistance+=r,this.minOrthographicSize+=i,this.maxOrthographicSize+=i;var s=e.ecModel,l={};["animation","animationDurationUpdate","animationEasingUpdate"].forEach(function(t){l[t]=go(e.get(t),s&&s.get(t))});var h=go(t.alpha,e.get("alpha"))||0,u=go(t.beta,e.get("beta"))||0,c=go(t.center,e.get("center"))||[0,0,0];l.animation&&l.animationDurationUpdate>0&&this._notFirst?this.animateTo({alpha:h,beta:u,center:c,distance:a,orthographicSize:o,easing:l.animationEasingUpdate,duration:l.animationDurationUpdate}):(this.setDistance(a),this.setAlpha(h),this.setBeta(u),this.setCenter(c),this.setOrthographicSize(o)),this._notFirst=!0,this._validateProperties()},_validateProperties:function(){},animateTo:function(e){var t=this.zr,r=this,i={},n={};return null!=e.distance&&(i.distance=this.getDistance(),n.distance=e.distance),null!=e.orthographicSize&&(i.orthographicSize=this.getOrthographicSize(),n.orthographicSize=e.orthographicSize),null!=e.alpha&&(i.alpha=this.getAlpha(),n.alpha=e.alpha),null!=e.beta&&(i.beta=this.getBeta(),n.beta=e.beta),null!=e.center&&(i.center=this.getCenter(),n.center=e.center),this._addAnimator(t.animation.animate(i).when(e.duration||1e3,n).during(function(){null!=i.alpha&&r.setAlpha(i.alpha),null!=i.beta&&r.setBeta(i.beta),null!=i.distance&&r.setDistance(i.distance),null!=i.center&&r.setCenter(i.center),null!=i.orthographicSize&&r.setOrthographicSize(i.orthographicSize),r._needsUpdate=!0})).start(e.easing||"linear")},stopAllAnimation:function(){for(var e=0;e0},_update:function(e){if(this._rotating){var t=("cw"===this.autoRotateDirection?1:-1)*this.autoRotateSpeed/180*Math.PI;this._phi-=t*e/1e3,this._needsUpdate=!0}else this._rotateVelocity.len()>0&&(this._needsUpdate=!0);(Math.abs(this._zoomSpeed)>.1||this._panVelocity.len()>0)&&(this._needsUpdate=!0),this._needsUpdate&&(e=Math.min(e,50),this._updateDistanceOrSize(e),this._updatePan(e),this._updateRotate(e),this._updateTransform(),this.getCamera().update(),this.zr&&this.zr.refresh(),this.trigger("update"),this._needsUpdate=!1)},_updateRotate:function(e){var t=this._rotateVelocity;this._phi=t.y*e/20+this._phi,this._theta=t.x*e/20+this._theta,this.setAlpha(this.getAlpha()),this.setBeta(this.getBeta()),this._vectorDamping(t,Math.pow(this.damping,e/16))},_updateDistanceOrSize:function(e){"perspective"===this._projection?this._setDistance(this._distance+this._zoomSpeed*e/20):this._setOrthoSize(this._orthoSize+this._zoomSpeed*e/20),this._zoomSpeed*=Math.pow(this.damping,e/16)},_setDistance:function(e){this._distance=Math.max(Math.min(e,this.maxDistance),this.minDistance)},_setOrthoSize:function(e){this._orthoSize=Math.max(Math.min(e,this.maxOrthographicSize),this.minOrthographicSize);var t=this.getCamera(),r=this._orthoSize,i=r/this.viewGL.viewport.height*this.viewGL.viewport.width;t.left=-i/2,t.right=i/2,t.top=r/2,t.bottom=-r/2},_updatePan:function(e){var t=this._panVelocity,r=this._distance,i=this.getCamera(),n=i.worldTransform.y,a=i.worldTransform.x;this._center.scaleAndAdd(a,-t.x*r/200).scaleAndAdd(n,-t.y*r/200),this._vectorDamping(t,0)},_updateTransform:function(){var e=this.getCamera(),t=new Gr,r=this._theta+Math.PI/2,i=this._phi+Math.PI/2,n=Math.sin(r);t.x=n*Math.cos(i),t.y=-Math.cos(r),t.z=n*Math.sin(i),e.position.copy(this._center).scaleAndAdd(t,this._distance),e.rotation.identity().rotateY(-this._phi).rotateX(-this._theta)},_startCountingStill:function(){clearTimeout(this._stillTimeout);var e=this.autoRotateAfterStill,t=this;!isNaN(e)&&e>0&&(this._stillTimeout=setTimeout(function(){t._rotating=!0},1e3*e))},_vectorDamping:function(e,t){var r=e.len();(r*=t)<1e-4&&(r=0),e.normalize().scale(r)},_decomposeTransform:function(){if(this.getCamera()){this.getCamera().updateWorldTransform();var e=this.getCamera().worldTransform.z,t=Math.asin(e.y),r=Math.atan2(e.x,e.z);this._theta=t,this._phi=-r,this.setBeta(this.getBeta()),this.setAlpha(this.getAlpha()),this.getCamera().aspect?this._setDistance(this.getCamera().position.dist(this._center)):this._setOrthoSize(this.getCamera().top-this.getCamera().bottom)}},_mouseDownHandler:function(e){if(!e.target&&!this._isAnimating()){var t=e.offsetX,r=e.offsetY;this.viewGL&&!this.viewGL.containPoint(t,r)||(this.zr.on("mousemove",this._mouseMoveHandler),this.zr.on("mouseup",this._mouseUpHandler),e.event.targetTouches?1===e.event.targetTouches.length&&(this._mode="rotate"):e.event.button===_o[this.rotateMouseButton]?this._mode="rotate":e.event.button===_o[this.panMouseButton]?this._mode="pan":this._mode="",this._rotateVelocity.set(0,0),this._rotating=!1,this.autoRotate&&this._startCountingStill(),this._mouseX=e.offsetX,this._mouseY=e.offsetY)}},_mouseMoveHandler:function(e){if(!(e.target&&e.target.__isGLToZRProxy||this._isAnimating())){var t=vo(this.panSensitivity),r=vo(this.rotateSensitivity);"rotate"===this._mode?(this._rotateVelocity.y=(e.offsetX-this._mouseX)/this.zr.getHeight()*2*r[0],this._rotateVelocity.x=(e.offsetY-this._mouseY)/this.zr.getWidth()*2*r[1]):"pan"===this._mode&&(this._panVelocity.x=(e.offsetX-this._mouseX)/this.zr.getWidth()*t[0]*400,this._panVelocity.y=(-e.offsetY+this._mouseY)/this.zr.getHeight()*t[1]*400),this._mouseX=e.offsetX,this._mouseY=e.offsetY,e.event.preventDefault()}},_mouseWheelHandler:function(e){if(!this._isAnimating()){var t=e.event.wheelDelta||-e.event.detail;this._zoomHandler(e,t)}},_pinchHandler:function(e){this._isAnimating()||(this._zoomHandler(e,e.pinchScale>1?1:-1),this._mode="")},_zoomHandler:function(e,t){if(0!==t){var r,i=e.offsetX,n=e.offsetY;this.viewGL&&!this.viewGL.containPoint(i,n)||(r="perspective"===this._projection?Math.max(Math.max(Math.min(this._distance-this.minDistance,this.maxDistance-this._distance))/20,.5):Math.max(Math.max(Math.min(this._orthoSize-this.minOrthographicSize,this.maxOrthographicSize-this._orthoSize))/20,.5),this._zoomSpeed=(t>0?-1:1)*r*this.zoomSensitivity,this._rotating=!1,this.autoRotate&&"rotate"===this._mode&&this._startCountingStill(),e.event.preventDefault())}},_mouseUpHandler:function(){this.zr.off("mousemove",this._mouseMoveHandler),this.zr.off("mouseup",this._mouseUpHandler)},_isRightMouseButtonUsed:function(){return"right"===this.rotateMouseButton||"right"===this.panMouseButton},_contextMenuHandler:function(e){this._isRightMouseButtonUsed()&&e.preventDefault()},_addAnimator:function(e){var t=this._animators;return t.push(e),e.done(function(){var r=t.indexOf(e);r>=0&&t.splice(r,1)}),e}});Object.defineProperty(yo.prototype,"autoRotate",{get:function(e){return this._autoRotate},set:function(e){this._autoRotate=e,this._rotating=e}});const xo={convertToDynamicArray:function(e){e&&this.resetOffset();var t=this.attributes;for(var r in t)e||!t[r].value?t[r].value=[]:t[r].value=Array.prototype.slice.call(t[r].value);e||!this.indices?this.indices=[]:this.indices=Array.prototype.slice.call(this.indices)},convertToTypedArray:function(){var e=this.attributes;for(var t in e)e[t].value&&e[t].value.length>0?e[t].value=new Float32Array(e[t].value):e[t].value=null;this.indices&&this.indices.length>0&&(this.indices=this.vertexCount>65535?new Uint32Array(this.indices):new Uint16Array(this.indices)),this.dirty()}},bo={vec2:Zt,vec3:Ar,vec4:$r,mat3:ei,mat4:Mr};var To=bo.vec3,wo=[[0,0],[1,1]],So=tn.extend(function(){return{segmentScale:1,dynamic:!0,useNativeLine:!0,attributes:{position:new tn.Attribute("position","float",3,"POSITION"),positionPrev:new tn.Attribute("positionPrev","float",3),positionNext:new tn.Attribute("positionNext","float",3),prevPositionPrev:new tn.Attribute("prevPositionPrev","float",3),prevPosition:new tn.Attribute("prevPosition","float",3),prevPositionNext:new tn.Attribute("prevPositionNext","float",3),offset:new tn.Attribute("offset","float",1),color:new tn.Attribute("color","float",4,"COLOR")}}},{resetOffset:function(){this._vertexOffset=0,this._triangleOffset=0,this._itemVertexOffsets=[]},setVertexCount:function(e){var t=this.attributes;this.vertexCount!==e&&(t.position.init(e),t.color.init(e),this.useNativeLine||(t.positionPrev.init(e),t.positionNext.init(e),t.offset.init(e)),e>65535?this.indices instanceof Uint16Array&&(this.indices=new Uint32Array(this.indices)):this.indices instanceof Uint32Array&&(this.indices=new Uint16Array(this.indices)))},setTriangleCount:function(e){this.triangleCount!==e&&(this.indices=0===e?null:this.vertexCount>65535?new Uint32Array(3*e):new Uint16Array(3*e))},_getCubicCurveApproxStep:function(e,t,r,i){return 1/(To.dist(e,t)+To.dist(r,t)+To.dist(i,r)+1)*this.segmentScale},getCubicCurveVertexCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?2*a:2*a+2},getCubicCurveTriangleCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?0:2*a},getLineVertexCount:function(){return this.getPolylineVertexCount(wo)},getLineTriangleCount:function(){return this.getPolylineTriangleCount(wo)},getPolylineVertexCount:function(e){var t;return t="number"==typeof e?e:"number"!=typeof e[0]?e.length:e.length/3,this.useNativeLine?2*(t-1):2*(t-1)+2},getPolylineTriangleCount:function(e){var t;return t="number"==typeof e?e:"number"!=typeof e[0]?e.length:e.length/3,this.useNativeLine?0:2*Math.max(t-1,0)},addCubicCurve:function(e,t,r,i,n,a){null==a&&(a=1);var o=e[0],s=e[1],l=e[2],h=t[0],u=t[1],c=t[2],d=r[0],f=r[1],p=r[2],m=i[0],g=i[1],_=i[2],v=this._getCubicCurveApproxStep(e,t,r,i),y=v*v,x=y*v,b=3*v,T=3*y,w=6*y,S=6*x,M=o-2*h+d,A=s-2*u+f,E=l-2*c+p,D=3*(h-d)-o+m,C=3*(u-f)-s+g,L=3*(c-p)-l+_,P=o,O=s,N=l,R=(h-o)*b+M*T+D*x,I=(u-s)*b+A*T+C*x,B=(c-l)*b+E*T+L*x,z=M*w+D*S,F=A*w+C*S,G=E*w+L*S,U=D*S,H=C*S,V=L*S,k=0,W=0,j=Math.ceil(1/v),X=new Float32Array(3*(j+1)),q=(X=[],0);for(W=0;W1&&(P=R>0?Math.min(P,m):Math.max(P,m),O=I>0?Math.min(O,g):Math.max(O,g),N=B>0?Math.min(N,_):Math.max(N,_));return this.addPolyline(X,n,a)},addLine:function(e,t,r,i){return this.addPolyline([e,t],r,i)},addPolyline:function(e,t,r,i,n){if(e.length){var a="number"!=typeof e[0];if(null==n&&(n=a?e.length:e.length/3),!(n<2)){null==i&&(i=0),null==r&&(r=1),this._itemVertexOffsets.push(this._vertexOffset);var o,s,l=(a="number"!=typeof e[0])?"number"!=typeof t[0]:t.length/4===n,h=this.attributes.position,u=this.attributes.positionPrev,c=this.attributes.positionNext,d=this.attributes.color,f=this.attributes.offset,p=this.indices,m=this._vertexOffset;r=Math.max(r,.01);for(var g=i;g1&&(h.copy(m,m-1),d.copy(m,m-1),m++):(g0&&(c.set(m-2,o),c.set(m-1,o)),h.set(m,o),h.set(m+1,o),d.set(m,s),d.set(m+1,s),f.set(m,r/2),f.set(m+1,-r/2),m+=2),this.useNativeLine)d.set(m,s),h.set(m,o),m++;else if(g>0){var y=3*this._triangleOffset;(p=this.indices)[y]=m-4,p[y+1]=m-3,p[y+2]=m-2,p[y+3]=m-3,p[y+4]=m-1,p[y+5]=m-2,this._triangleOffset+=2}}if(!this.useNativeLine){var x=this._vertexOffset,b=this._vertexOffset+2*n;u.copy(x,x+2),u.copy(x+1,x+3),c.copy(b-1,b-3),c.copy(b-2,b-4)}return this._vertexOffset=m,this._vertexOffset}}},setItemColor:function(e,t){for(var r=this._itemVertexOffsets[e],i=eo&&(n=this._x=0,a+=this._rowHeight+l,this._y=a,this._rowHeight=0),this._x+=t+l,this._rowHeight=Math.max(this._rowHeight,r),a+r+l>s)return null;e.x+=this.offsetX*this.dpr+n,e.y+=this.offsetY*this.dpr+a,this._zr.add(e);var h=[this.offsetX/this.width,this.offsetY/this.height];return[[n/o+h[0],a/s+h[1]],[(n+t)/o+h[0],(a+r)/s+h[1]]]},_fitElement:function(e,t,r){var i=e.getBoundingRect(),n=t/i.width,a=r/i.height;e.x=-i.x*n,e.y=-i.y*a,e.scaleX=n,e.scaleY=a,e.update()}},Ao.prototype={clear:function(){for(var e=0;e=e)){var n=(r+this._nodeWidth)*this._dpr,a=(i+this._nodeHeight)*this._dpr;try{this._zr.resize({width:n,height:a})}catch(ch){this._canvas.width=n,this._canvas.height=a}var o=new Mo(this._zr,r,i,this._nodeWidth,this._nodeHeight,this._gap,this._dpr);return this._textureAtlasNodes.push(o),o}},add:function(e,t,r){if(this._coords[e.id])return this._coords[e.id];var i=this._getCurrentNode().add(e,t,r);if(!i){var n=this._expand();if(!n)return;i=n.add(e,t,r)}return this._coords[e.id]=i,i},getCoordsScale:function(){var e=this._dpr;return[this._nodeWidth/this._canvas.width*e,this._nodeHeight/this._canvas.height*e]},getCoords:function(e){return this._coords[e]},dispose:function(){this._zr.dispose()}},Eo.prototype={constructor:Eo,setScene:function(e){this._scene=e,this._skybox&&this._skybox.attachScene(this._scene)},initLight:function(e){this._lightRoot=e,this.mainLight=new Ka.DirectionalLight({shadowBias:.005}),this.ambientLight=new Ka.AmbientLight,e.add(this.mainLight),e.add(this.ambientLight)},dispose:function(){this._lightRoot&&(this._lightRoot.remove(this.mainLight),this._lightRoot.remove(this.ambientLight))},updateLight:function(e){var t=this.mainLight,r=this.ambientLight,i=e.getModel("light"),n=i.getModel("main"),a=i.getModel("ambient");t.intensity=n.get("intensity"),r.intensity=a.get("intensity"),t.color=Ka.parseColor(n.get("color")).slice(0,3),r.color=Ka.parseColor(a.get("color")).slice(0,3);var o=n.get("alpha")||0,s=n.get("beta")||0;t.position.setArray(Ka.directionFromAlphaBeta(o,s)),t.lookAt(Ka.Vector3.ZERO),t.castShadow=n.get("shadow"),t.shadowResolution=Ka.getShadowResolution(n.get("shadowQuality"))},updateAmbientCubemap:function(e,t,r){var i=t.getModel("light.ambientCubemap"),n=i.get("texture");if(n){this._cubemapLightsCache=this._cubemapLightsCache||{};var a=this._cubemapLightsCache[n];if(!a){var o=this;a=this._cubemapLightsCache[n]=Ka.createAmbientCubemap(i.option,e,r,function(){o._isSkyboxFromAmbientCubemap&&o._skybox.setEnvironmentMap(a.specular.cubemap),r.getZr().refresh()})}this._lightRoot.add(a.diffuse),this._lightRoot.add(a.specular),this._currentCubemapLights=a}else this._currentCubemapLights&&(this._lightRoot.remove(this._currentCubemapLights.diffuse),this._lightRoot.remove(this._currentCubemapLights.specular),this._currentCubemapLights=null)},updateSkybox:function(e,t,r){var i=t.get("environment"),n=this,a=(n._skybox=n._skybox||new ta,n._skybox);if(i&&"none"!==i)if("auto"===i)if(this._isSkyboxFromAmbientCubemap=!0,this._currentCubemapLights){var l=this._currentCubemapLights.specular.cubemap;a.setEnvironmentMap(l),this._scene&&a.attachScene(this._scene),a.material.set("lod",3)}else this._skybox&&this._skybox.detachScene();else if("object"==typeof i&&i.colorStops||"string"==typeof i&&o(i)){this._isSkyboxFromAmbientCubemap=!1;var h=new Ka.Texture2D({anisotropic:8,flipY:!1});a.setEnvironmentMap(h);var u=h.image=document.createElement("canvas");u.width=u.height=16;var c=u.getContext("2d"),d=new s({shape:{x:0,y:0,width:16,height:16},style:{fill:i}});x(c,d),a.attachScene(this._scene)}else this._isSkyboxFromAmbientCubemap=!1,h=Ka.loadTexture(i,r,{anisotropic:8,flipY:!1}),a.setEnvironmentMap(h),a.attachScene(this._scene);else this._skybox&&this._skybox.detachScene(this._scene),this._skybox=null;var f=t.coordinateSystem;if(this._skybox)if(!f||!f.viewGL||"auto"===i||i.match&&i.match(/.hdr$/))this._skybox.material.undefine("fragment","SRGB_DECODE");else{var p=f.viewGL.isLinearSpace()?"define":"undefine";this._skybox.material[p]("fragment","SRGB_DECODE")}}};var Do=bo.vec3,Co=tn.extend(function(){return{segmentScale:1,useNativeLine:!0,attributes:{position:new tn.Attribute("position","float",3,"POSITION"),normal:new tn.Attribute("normal","float",3,"NORMAL"),color:new tn.Attribute("color","float",4,"COLOR")}}},{resetOffset:function(){this._vertexOffset=0,this._faceOffset=0},setQuadCount:function(e){var t=this.attributes,r=this.getQuadVertexCount()*e,i=this.getQuadTriangleCount()*e;this.vertexCount!==r&&(t.position.init(r),t.normal.init(r),t.color.init(r)),this.triangleCount!==i&&(this.indices=r>65535?new Uint32Array(3*i):new Uint16Array(3*i))},getQuadVertexCount:function(){return 4},getQuadTriangleCount:function(){return 2},addQuad:function(){var e=Do.create(),t=Do.create(),r=Do.create(),i=[0,3,1,3,2,1];return function(n,a){var o=this.attributes.position,s=this.attributes.normal,l=this.attributes.color;Do.sub(e,n[1],n[0]),Do.sub(t,n[2],n[1]),Do.cross(r,e,t),Do.normalize(r,r);for(var h=0;h<4;h++)o.set(this._vertexOffset+h,n[h]),l.set(this._vertexOffset+h,a),s.set(this._vertexOffset+h,r);var u=3*this._faceOffset;for(h=0;h<6;h++)this.indices[u+h]=i[h]+this._vertexOffset;this._vertexOffset+=4,this._faceOffset+=2}}()});v(Co.prototype,xo);var Lo=La,Po={x:0,y:2,z:1};function Oo(e,t,r){this.rootNode=new Ka.Node;var i=new Ka.Mesh({geometry:new So({useNativeLine:!1}),material:t,castShadow:!1,ignorePicking:!0,$ignorePicking:!0,renderOrder:1}),n=new Ka.Mesh({geometry:new Co,material:r,castShadow:!1,culling:!1,ignorePicking:!0,$ignorePicking:!0,renderOrder:0});this.rootNode.add(n),this.rootNode.add(i),this.faceInfo=e,this.plane=new Ka.Plane,this.linesMesh=i,this.quadsMesh=n}Oo.prototype.update=function(e,t,r){var i=e.coordinateSystem,n=[i.getAxis(this.faceInfo[0]),i.getAxis(this.faceInfo[1])],a=this.linesMesh.geometry,o=this.quadsMesh.geometry;a.convertToDynamicArray(!0),o.convertToDynamicArray(!0),this._updateSplitLines(a,n,e,r),this._udpateSplitAreas(o,n,e,r),a.convertToTypedArray(),o.convertToTypedArray();var s=i.getAxis(this.faceInfo[2]);!function(e,t,r,i){var n=[0,0,0],a=i<0?r.getExtentMin():r.getExtentMax();n[Po[r.dim]]=a,e.position.setArray(n),e.rotation.identity(),t.distance=-Math.abs(a),t.normal.set(0,0,0),"x"===r.dim?(e.rotation.rotateY(i*Math.PI/2),t.normal.x=-i):"z"===r.dim?(e.rotation.rotateX(-i*Math.PI/2),t.normal.y=-i):(i>0&&e.rotation.rotateY(Math.PI),t.normal.z=-i)}(this.rootNode,this.plane,s,this.faceInfo[3])},Oo.prototype._updateSplitLines=function(e,t,r,n){var a=n.getDevicePixelRatio();t.forEach(function(n,o){var s=n.model,l=t[1-o].getExtent();if(!n.scale.isBlank()){var h=s.getModel("splitLine",r.getModel("splitLine"));if(h.get("show")){var u=h.getModel("lineStyle"),c=u.get("color"),d=Lo(u.get("opacity"),1),f=Lo(u.get("width"),1);c=i(c)?c:[c];for(var p=n.getTicksCoords({tickModel:h}),m=0,g=0;g65535?new Uint32Array(3*r):new Uint16Array(3*r))},setSpriteAlign:function(e,t,r,i,n){var a,o,s,l;switch(null==r&&(r="left"),null==i&&(i="top"),n=n||0,r){case"left":a=n,s=t[0]+n;break;case"center":case"middle":a=-t[0]/2,s=t[0]/2;break;case"right":a=-t[0]-n,s=-n}switch(i){case"bottom":o=n,l=t[1]+n;break;case"middle":o=-t[1]/2,l=t[1]/2;break;case"top":o=-t[1]-n,l=-n}var h=4*e,u=this.attributes.offset;u.set(h,[a,l]),u.set(h+1,[s,l]),u.set(h+2,[s,o]),u.set(h+3,[a,o])},addSprite:function(e,t,r,i,n,a){var o=this._vertexOffset;this.setSprite(this._vertexOffset/4,e,t,r,i,n,a);for(var s=0;si[1]?0:1,o=this._faces[2*r+a],s=this._faces[2*r+1-a];o.rootNode.invisible=!0,s.rootNode.invisible=!1}},_updateAxisLinePosition:function(){var e=this._model.coordinateSystem,t=e.getAxis("x"),r=e.getAxis("y"),i=e.getAxis("z"),n=i.getExtentMax(),a=i.getExtentMin(),o=t.getExtentMin(),s=t.getExtentMax(),l=r.getExtentMax(),h=r.getExtentMin(),u=this._axes[0].rootNode,c=this._axes[1].rootNode,d=this._axes[2].rootNode,f=this._faces,p=f[4].rootNode.invisible?h:l,m=f[2].rootNode.invisible?n:a,g=f[0].rootNode.invisible?o:s,_=f[2].rootNode.invisible?n:a,v=f[0].rootNode.invisible?s:o,y=f[4].rootNode.invisible?h:l;u.rotation.identity(),c.rotation.identity(),d.rotation.identity(),f[4].rootNode.invisible&&(this._axes[0].flipped=!0,u.rotation.rotateX(Math.PI)),f[0].rootNode.invisible&&(this._axes[1].flipped=!0,c.rotation.rotateZ(Math.PI)),f[4].rootNode.invisible&&(this._axes[2].flipped=!0,d.rotation.rotateY(Math.PI)),u.position.set(0,m,p),c.position.set(g,_,0),d.position.set(v,0,y),u.update(),c.update(),d.update(),this._updateAxisLabelAlign()},_updateAxisLabelAlign:function(){var e=this._control.getCamera(),t=[new Ka.Vector4,new Ka.Vector4],r=new Ka.Vector4;this.groupGL.getWorldPosition(r),r.w=1,r.transformMat4(e.viewMatrix).transformMat4(e.projectionMatrix),r.x/=r.w,r.y/=r.w,this._axes.forEach(function(i){var n=i.axisLineCoords;i.labelsMesh.geometry;for(var a=0;ar.y?"bottom":"top"):(s="middle",o=u>r.x?"left":"right"),i.setSpriteAlign(o,s,this._api)},this)},_doShowAxisPointer:function(){this._axisPointerLineMesh.invisible&&(this._axisPointerLineMesh.invisible=!1,this._axisPointerLabelsMesh.invisible=!1,this._api.getZr().refresh())},_doHideAxisPointer:function(){this._axisPointerLineMesh.invisible||(this._axisPointerLineMesh.invisible=!0,this._axisPointerLabelsMesh.invisible=!0,this._api.getZr().refresh())},_updateAxisPointer:function(e){var t=this._model.coordinateSystem,r=t.dataToPoint(e),i=this._axisPointerLineMesh.geometry,n=this._model.getModel("axisPointer"),a=this._api.getDevicePixelRatio();function o(e){return La(e.model.get("axisPointer.show"),n.get("show"))}function s(e){var t=e.model.getModel("axisPointer",n).getModel("lineStyle"),r=Ka.parseColor(t.get("color")),i=Ho(t.get("width"),1),a=Ho(t.get("opacity"),1);return r[3]*=a,{color:r,lineWidth:i}}i.convertToDynamicArray(!0);for(var l=0;l 0.0) {\n if (texture2D(alphaMap, v_Texcoord).a <= alphaCutoff) {\n discard;\n }\n }\n#ifdef USE_VSM\n depth = depth * 0.5 + 0.5;\n float moment1 = depth;\n float moment2 = depth * depth;\n #ifdef SUPPORT_STANDARD_DERIVATIVES\n float dx = dFdx(depth);\n float dy = dFdy(depth);\n moment2 += 0.25*(dx*dx+dy*dy);\n #endif\n gl_FragColor = vec4(moment1, moment2, 0.0, 1.0);\n#else\n #ifdef SUPPORT_STANDARD_DERIVATIVES\n float dx = dFdx(depth);\n float dy = dFdy(depth);\n depth += sqrt(dx*dx + dy*dy) * slopeScale + bias;\n #else\n depth += bias;\n #endif\n gl_FragColor = encodeFloat(depth * 0.5 + 0.5);\n#endif\n}\n@end\n@export clay.sm.debug_depth\nuniform sampler2D depthMap;\nvarying vec2 v_Texcoord;\n@import clay.util.decode_float\nvoid main() {\n vec4 tex = texture2D(depthMap, v_Texcoord);\n#ifdef USE_VSM\n gl_FragColor = vec4(tex.rgb, 1.0);\n#else\n float depth = decodeFloat(tex);\n gl_FragColor = vec4(depth, depth, depth, 1.0);\n#endif\n}\n@end\n@export clay.sm.distance.vertex\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform mat4 world : WORLD;\nattribute vec3 position : POSITION;\n@import clay.chunk.skinning_header\nvarying vec3 v_WorldPosition;\nvoid main (){\n vec4 P = vec4(position, 1.0);\n#ifdef SKINNING\n @import clay.chunk.skin_matrix\n P = skinMatrixWS * P;\n#endif\n#ifdef INSTANCING\n @import clay.chunk.instancing_matrix\n P = instanceMat * P;\n#endif\n gl_Position = worldViewProjection * P;\n v_WorldPosition = (world * P).xyz;\n}\n@end\n@export clay.sm.distance.fragment\nuniform vec3 lightPosition;\nuniform float range : 100;\nvarying vec3 v_WorldPosition;\n@import clay.util.encode_float\nvoid main(){\n float dist = distance(lightPosition, v_WorldPosition);\n#ifdef USE_VSM\n gl_FragColor = vec4(dist, dist * dist, 0.0, 0.0);\n#else\n dist = dist / range;\n gl_FragColor = encodeFloat(dist);\n#endif\n}\n@end\n@export clay.plugin.shadow_map_common\n@import clay.util.decode_float\nfloat tapShadowMap(sampler2D map, vec2 uv, float z){\n vec4 tex = texture2D(map, uv);\n return step(z, decodeFloat(tex) * 2.0 - 1.0);\n}\nfloat pcf(sampler2D map, vec2 uv, float z, float textureSize, vec2 scale) {\n float shadowContrib = tapShadowMap(map, uv, z);\n vec2 offset = vec2(1.0 / textureSize) * scale;\n#ifdef PCF_KERNEL_SIZE\n for (int _idx_ = 0; _idx_ < PCF_KERNEL_SIZE; _idx_++) {{\n shadowContrib += tapShadowMap(map, uv + offset * pcfKernel[_idx_], z);\n }}\n return shadowContrib / float(PCF_KERNEL_SIZE + 1);\n#else\n shadowContrib += tapShadowMap(map, uv+vec2(offset.x, 0.0), z);\n shadowContrib += tapShadowMap(map, uv+vec2(offset.x, offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(-offset.x, offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(0.0, offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(-offset.x, 0.0), z);\n shadowContrib += tapShadowMap(map, uv+vec2(-offset.x, -offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(offset.x, -offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(0.0, -offset.y), z);\n return shadowContrib / 9.0;\n#endif\n}\nfloat pcf(sampler2D map, vec2 uv, float z, float textureSize) {\n return pcf(map, uv, z, textureSize, vec2(1.0));\n}\nfloat chebyshevUpperBound(vec2 moments, float z){\n float p = 0.0;\n z = z * 0.5 + 0.5;\n if (z <= moments.x) {\n p = 1.0;\n }\n float variance = moments.y - moments.x * moments.x;\n variance = max(variance, 0.0000001);\n float mD = moments.x - z;\n float pMax = variance / (variance + mD * mD);\n pMax = clamp((pMax-0.4)/(1.0-0.4), 0.0, 1.0);\n return max(p, pMax);\n}\nfloat computeShadowContrib(\n sampler2D map, mat4 lightVPM, vec3 position, float textureSize, vec2 scale, vec2 offset\n) {\n vec4 posInLightSpace = lightVPM * vec4(position, 1.0);\n posInLightSpace.xyz /= posInLightSpace.w;\n float z = posInLightSpace.z;\n if(all(greaterThan(posInLightSpace.xyz, vec3(-0.99, -0.99, -1.0))) &&\n all(lessThan(posInLightSpace.xyz, vec3(0.99, 0.99, 1.0)))){\n vec2 uv = (posInLightSpace.xy+1.0) / 2.0;\n #ifdef USE_VSM\n vec2 moments = texture2D(map, uv * scale + offset).xy;\n return chebyshevUpperBound(moments, z);\n #else\n return pcf(map, uv * scale + offset, z, textureSize, scale);\n #endif\n }\n return 1.0;\n}\nfloat computeShadowContrib(sampler2D map, mat4 lightVPM, vec3 position, float textureSize) {\n return computeShadowContrib(map, lightVPM, position, textureSize, vec2(1.0), vec2(0.0));\n}\nfloat computeShadowContribOmni(samplerCube map, vec3 direction, float range)\n{\n float dist = length(direction);\n vec4 shadowTex = textureCube(map, direction);\n#ifdef USE_VSM\n vec2 moments = shadowTex.xy;\n float variance = moments.y - moments.x * moments.x;\n float mD = moments.x - dist;\n float p = variance / (variance + mD * mD);\n if(moments.x + 0.001 < dist){\n return clamp(p, 0.0, 1.0);\n }else{\n return 1.0;\n }\n#else\n return step(dist, (decodeFloat(shadowTex) + 0.0002) * range);\n#endif\n}\n@end\n@export clay.plugin.compute_shadow_map\n#if defined(SPOT_LIGHT_SHADOWMAP_COUNT) || defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT) || defined(POINT_LIGHT_SHADOWMAP_COUNT)\n#ifdef SPOT_LIGHT_SHADOWMAP_COUNT\nuniform sampler2D spotLightShadowMaps[SPOT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform mat4 spotLightMatrices[SPOT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform float spotLightShadowMapSizes[SPOT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\n#endif\n#ifdef DIRECTIONAL_LIGHT_SHADOWMAP_COUNT\n#if defined(SHADOW_CASCADE)\nuniform sampler2D directionalLightShadowMaps[1]:unconfigurable;\nuniform mat4 directionalLightMatrices[SHADOW_CASCADE]:unconfigurable;\nuniform float directionalLightShadowMapSizes[1]:unconfigurable;\nuniform float shadowCascadeClipsNear[SHADOW_CASCADE]:unconfigurable;\nuniform float shadowCascadeClipsFar[SHADOW_CASCADE]:unconfigurable;\n#else\nuniform sampler2D directionalLightShadowMaps[DIRECTIONAL_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform mat4 directionalLightMatrices[DIRECTIONAL_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform float directionalLightShadowMapSizes[DIRECTIONAL_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\n#endif\n#endif\n#ifdef POINT_LIGHT_SHADOWMAP_COUNT\nuniform samplerCube pointLightShadowMaps[POINT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\n#endif\nuniform bool shadowEnabled : true;\n#ifdef PCF_KERNEL_SIZE\nuniform vec2 pcfKernel[PCF_KERNEL_SIZE];\n#endif\n@import clay.plugin.shadow_map_common\n#if defined(SPOT_LIGHT_SHADOWMAP_COUNT)\nvoid computeShadowOfSpotLights(vec3 position, inout float shadowContribs[SPOT_LIGHT_COUNT] ) {\n float shadowContrib;\n for(int _idx_ = 0; _idx_ < SPOT_LIGHT_SHADOWMAP_COUNT; _idx_++) {{\n shadowContrib = computeShadowContrib(\n spotLightShadowMaps[_idx_], spotLightMatrices[_idx_], position,\n spotLightShadowMapSizes[_idx_]\n );\n shadowContribs[_idx_] = shadowContrib;\n }}\n for(int _idx_ = SPOT_LIGHT_SHADOWMAP_COUNT; _idx_ < SPOT_LIGHT_COUNT; _idx_++){{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#endif\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n#ifdef SHADOW_CASCADE\nvoid computeShadowOfDirectionalLights(vec3 position, inout float shadowContribs[DIRECTIONAL_LIGHT_COUNT]){\n float depth = (2.0 * gl_FragCoord.z - gl_DepthRange.near - gl_DepthRange.far)\n / (gl_DepthRange.far - gl_DepthRange.near);\n float shadowContrib;\n shadowContribs[0] = 1.0;\n for (int _idx_ = 0; _idx_ < SHADOW_CASCADE; _idx_++) {{\n if (\n depth >= shadowCascadeClipsNear[_idx_] &&\n depth <= shadowCascadeClipsFar[_idx_]\n ) {\n shadowContrib = computeShadowContrib(\n directionalLightShadowMaps[0], directionalLightMatrices[_idx_], position,\n directionalLightShadowMapSizes[0],\n vec2(1.0 / float(SHADOW_CASCADE), 1.0),\n vec2(float(_idx_) / float(SHADOW_CASCADE), 0.0)\n );\n shadowContribs[0] = shadowContrib;\n }\n }}\n for(int _idx_ = DIRECTIONAL_LIGHT_SHADOWMAP_COUNT; _idx_ < DIRECTIONAL_LIGHT_COUNT; _idx_++) {{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#else\nvoid computeShadowOfDirectionalLights(vec3 position, inout float shadowContribs[DIRECTIONAL_LIGHT_COUNT]){\n float shadowContrib;\n for(int _idx_ = 0; _idx_ < DIRECTIONAL_LIGHT_SHADOWMAP_COUNT; _idx_++) {{\n shadowContrib = computeShadowContrib(\n directionalLightShadowMaps[_idx_], directionalLightMatrices[_idx_], position,\n directionalLightShadowMapSizes[_idx_]\n );\n shadowContribs[_idx_] = shadowContrib;\n }}\n for(int _idx_ = DIRECTIONAL_LIGHT_SHADOWMAP_COUNT; _idx_ < DIRECTIONAL_LIGHT_COUNT; _idx_++) {{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#endif\n#endif\n#if defined(POINT_LIGHT_SHADOWMAP_COUNT)\nvoid computeShadowOfPointLights(vec3 position, inout float shadowContribs[POINT_LIGHT_COUNT] ){\n vec3 lightPosition;\n vec3 direction;\n for(int _idx_ = 0; _idx_ < POINT_LIGHT_SHADOWMAP_COUNT; _idx_++) {{\n lightPosition = pointLightPosition[_idx_];\n direction = position - lightPosition;\n shadowContribs[_idx_] = computeShadowContribOmni(pointLightShadowMaps[_idx_], direction, pointLightRange[_idx_]);\n }}\n for(int _idx_ = POINT_LIGHT_SHADOWMAP_COUNT; _idx_ < POINT_LIGHT_COUNT; _idx_++) {{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#endif\n#endif\n@end");var $o,es,ts,rs,is,ns,as,os=be.extend(function(){return{softShadow:os.PCF,shadowBlur:1,lightFrustumBias:"auto",kernelPCF:new Float32Array([1,0,1,1,-1,1,0,1,-1,0,-1,-1,1,-1,0,-1]),precision:"highp",_lastRenderNotCastShadow:!1,_frameBuffer:new Zn,_textures:{},_shadowMapNumber:{POINT_LIGHT:0,DIRECTIONAL_LIGHT:0,SPOT_LIGHT:0},_depthMaterials:{},_distanceMaterials:{},_receivers:[],_lightsCastShadow:[],_lightCameras:{},_lightMaterials:{},_texturePool:new Xo}},function(){this._gaussianPassH=new ba({fragment:br.source("clay.compositor.gaussian_blur")}),this._gaussianPassV=new ba({fragment:br.source("clay.compositor.gaussian_blur")}),this._gaussianPassH.setUniform("blurSize",this.shadowBlur),this._gaussianPassH.setUniform("blurDir",0),this._gaussianPassV.setUniform("blurSize",this.shadowBlur),this._gaussianPassV.setUniform("blurDir",1),this._outputDepthPass=new ba({fragment:br.source("clay.sm.debug_depth")})},{render:function(e,t,r,i){r||(r=t.getMainCamera()),this.trigger("beforerender",this,e,t,r),this._renderShadowPass(e,t,r,i),this.trigger("afterrender",this,e,t,r)},renderDebug:function(e,t){e.saveClear();var r=e.viewport,i=0,n=t||r.width/4,a=n;for(var o in this.softShadow===os.VSM?this._outputDepthPass.material.define("fragment","USE_VSM"):this._outputDepthPass.material.undefine("fragment","USE_VSM"),this._textures){var s=this._textures[o];e.setViewport(i,0,n*s.width/s.height,a),this._outputDepthPass.setUniform("depthMap",s),this._outputDepthPass.render(e),i+=n*s.width/s.height}e.setViewport(r),e.restoreClear()},_updateReceivers:function(e,t){if(t.receiveShadow?(this._receivers.push(t),t.material.set("shadowEnabled",1),t.material.set("pcfKernel",this.kernelPCF)):t.material.set("shadowEnabled",0),this.softShadow===os.VSM)t.material.define("fragment","USE_VSM"),t.material.undefine("fragment","PCF_KERNEL_SIZE");else{t.material.undefine("fragment","USE_VSM");var r=this.kernelPCF;r&&r.length?t.material.define("fragment","PCF_KERNEL_SIZE",r.length/2):t.material.undefine("fragment","PCF_KERNEL_SIZE")}},_update:function(e,t){var r=this;t.traverse(function(t){t.isRenderable()&&r._updateReceivers(e,t)});for(var i=0;i4){console.warn("Support at most 4 cascade");continue}p.shadowCascade>1&&(o=p),this.renderDirectionalLightShadow(e,t,r,p,c,u,h)}else"SPOT_LIGHT"===p.type?this.renderSpotLightShadow(e,t,p,l,s):"POINT_LIGHT"===p.type&&this.renderPointLightShadow(e,t,p,d);this._shadowMapNumber[p.type]++}for(var m in this._shadowMapNumber){var g=this._shadowMapNumber[m],_=m+"_SHADOWMAP_COUNT";for(f=0;f0?v.define("fragment",_,g):v.isDefined("fragment",_)&&v.undefine("fragment",_))}for(f=0;f0){var x=h.map(S);if(y.directionalLightShadowMaps={value:h,type:"tv"},y.directionalLightMatrices={value:u,type:"m4v"},y.directionalLightShadowMapSizes={value:x,type:"1fv"},o){var b=c.slice(),T=c.slice();b.pop(),T.shift(),b.reverse(),T.reverse(),u.reverse(),y.shadowCascadeClipsNear={value:b,type:"1fv"},y.shadowCascadeClipsFar={value:T,type:"1fv"}}}if(s.length>0){var w=s.map(S);(y=t.shadowUniforms).spotLightShadowMaps={value:s,type:"tv"},y.spotLightMatrices={value:l,type:"m4v"},y.spotLightShadowMapSizes={value:w,type:"1fv"}}d.length>0&&(y.pointLightShadowMaps={value:d,type:"tv"})}function S(e){return e.height}},renderDirectionalLightShadow:($o=new bn,es=new ui,ts=new Si,rs=new ui,is=new ui,ns=new ui,as=new ui,function(e,t,r,i,n,a,o){var s=this._getDepthMaterial(i),l={getMaterial:function(e){return e.shadowDepthMaterial||s},isMaterialChanged:Jo,getUniform:Qo,ifRender:function(e){return e.castShadow},sortCompare:zr.opaqueSortCompare};if(!t.viewBoundingBoxLastFrame.isFinite()){var h=t.getBoundingBox();t.viewBoundingBoxLastFrame.copy(h).applyTransform(r.viewMatrix)}var u=Math.min(-t.viewBoundingBoxLastFrame.min.z,r.far),c=Math.max(-t.viewBoundingBoxLastFrame.max.z,r.near),d=this._getDirectionalLightCamera(i,t,r),f=ns.array;as.copy(d.projectionMatrix),Mr.invert(is.array,d.worldTransform.array),Mr.multiply(is.array,is.array,r.worldTransform.array),Mr.multiply(f,as.array,is.array);for(var p=[],m=r instanceof zn,g=(r.near+r.far)/(r.near-r.far),_=2*r.near*r.far/(r.near-r.far),v=0;v<=i.shadowCascade;v++){var y=c*Math.pow(u/c,v/i.shadowCascade),x=c+(u-c)*v/i.shadowCascade,b=y*i.cascadeSplitLogFactor+x*(1-i.cascadeSplitLogFactor);p.push(b),n.push(-(-b*g+_)/-b)}var T=this._getTexture(i,i.shadowCascade);o.push(T);var w=e.viewport,S=e.gl;for(this._frameBuffer.attach(T),this._frameBuffer.bind(e),S.clear(S.COLOR_BUFFER_BIT|S.DEPTH_BUFFER_BIT),v=0;vd?s>f?p[n>0?"px":"nx"]=!0:p[o>0?"pz":"nz"]=!0:d>f?p[a>0?"py":"ny"]=!0:p[o>0?"pz":"nz"]=!0}for(r=0;r0&&(this.outputs[e].keepLastFrame?(this._prevOutputTextures[e]&&this._compositor.releaseTexture(this._prevOutputTextures[e]),this._prevOutputTextures[e]=this._outputTextures[e]):this._compositor.releaseTexture(this._outputTextures[e]))}}),ls=be.extend(function(){return{nodes:[]}},{dirty:function(){this._dirty=!0},addNode:function(e){this.nodes.indexOf(e)>=0||(this.nodes.push(e),this._dirty=!0)},removeNode:function(e){"string"==typeof e&&(e=this.getNodeByName(e));var t=this.nodes.indexOf(e);t>=0&&(this.nodes.splice(t,1),this._dirty=!0)},getNodeByName:function(e){for(var t=0;t=r.COLOR_ATTACHMENT0&&u<=r.COLOR_ATTACHMENT0+8&&h.push(u);l.drawBuffersEXT(h)}e.saveClear(),e.clearBit=Me|Ee,t=e.render(this.scene,this.camera,!this.autoUpdateScene,this.preZ),e.restoreClear(),i.unbind(e)}else t=e.render(this.scene,this.camera,!this.autoUpdateScene,this.preZ);this.trigger("afterrender",t),this._rendering=!1,this._rendered=!0}}),cs=ss.extend(function(){return{texture:null,outputs:{color:{}}}},function(){},{getOutput:function(e,t){return this.texture},beforeFrame:function(){},afterFrame:function(){}}),ds=ss.extend(function(){return{name:"",inputs:{},outputs:null,shader:"",inputLinks:{},outputLinks:{},pass:null,_prevOutputTextures:{},_outputTextures:{},_outputReferences:{},_rendering:!1,_rendered:!1,_compositor:null}},function(){var e=new ba({fragment:this.shader});this.pass=e},{render:function(e,t){this.trigger("beforerender",e),this._rendering=!0;var r=e.gl;for(var i in this.inputLinks){var n=(c=this.inputLinks[i]).node.getOutput(e,c.pin);this.pass.setUniform(i,n)}if(this.outputs){this.pass.outputs={};var a={};for(var o in this.outputs){var s=this.updateParameter(o,e);isNaN(s.width)&&this.updateParameter(o,e);var l=this.outputs[o],h=this._compositor.allocateTexture(s);this._outputTextures[o]=h,"string"==typeof(u=l.attachment||r.COLOR_ATTACHMENT0)&&(u=r[u]),a[u]=h}for(var u in this._compositor.getFrameBuffer().bind(e),a)this._compositor.getFrameBuffer().attach(a[u],u);this.pass.render(e),this._compositor.getFrameBuffer().updateMipmap(e)}else this.pass.outputs=null,this._compositor.getFrameBuffer().unbind(e),this.pass.render(e,t);for(var i in this.inputLinks){var c;(c=this.inputLinks[i]).node.removeReference(c.pin)}this._rendering=!1,this._rendered=!0,this.trigger("afterrender",e)},updateParameter:function(e,t){var r,i,n=this.outputs[e],a=n.parameters,o=n._parametersCopy;if(o||(o=n._parametersCopy={}),a)for(var s in a)"width"!==s&&"height"!==s&&(o[s]=a[s]);return r="function"==typeof a.width?a.width.call(this,t):a.width,i="function"==typeof a.height?a.height.call(this,t):a.height,r=Math.ceil(r),i=Math.ceil(i),o.width===r&&o.height===i||this._outputTextures[e]&&this._outputTextures[e].dispose(t),o.width=r,o.height=i,o},setParameter:function(e,t){this.pass.setUniform(e,t)},getParameter:function(e){return this.pass.getUniform(e)},setParameters:function(e){for(var t in e)this.setParameter(t,e[t])},define:function(e,t){this.pass.material.define("fragment",e,t)},undefine:function(e){this.pass.material.undefine("fragment",e)},removeReference:function(e){this._outputReferences[e]--,0===this._outputReferences[e]&&(this.outputs[e].keepLastFrame?(this._prevOutputTextures[e]&&this._compositor.releaseTexture(this._prevOutputTextures[e]),this._prevOutputTextures[e]=this._outputTextures[e]):this._compositor.releaseTexture(this._outputTextures[e]))},clear:function(){ss.prototype.clear.call(this),this.pass.material.disableTexturesAll()}});const fs="@export clay.compositor.kernel.gaussian_9\nfloat gaussianKernel[9];\ngaussianKernel[0] = 0.07;\ngaussianKernel[1] = 0.09;\ngaussianKernel[2] = 0.12;\ngaussianKernel[3] = 0.14;\ngaussianKernel[4] = 0.16;\ngaussianKernel[5] = 0.14;\ngaussianKernel[6] = 0.12;\ngaussianKernel[7] = 0.09;\ngaussianKernel[8] = 0.07;\n@end\n@export clay.compositor.kernel.gaussian_13\nfloat gaussianKernel[13];\ngaussianKernel[0] = 0.02;\ngaussianKernel[1] = 0.03;\ngaussianKernel[2] = 0.06;\ngaussianKernel[3] = 0.08;\ngaussianKernel[4] = 0.11;\ngaussianKernel[5] = 0.13;\ngaussianKernel[6] = 0.14;\ngaussianKernel[7] = 0.13;\ngaussianKernel[8] = 0.11;\ngaussianKernel[9] = 0.08;\ngaussianKernel[10] = 0.06;\ngaussianKernel[11] = 0.03;\ngaussianKernel[12] = 0.02;\n@end\n@export clay.compositor.gaussian_blur\n#define SHADER_NAME gaussian_blur\nuniform sampler2D texture;varying vec2 v_Texcoord;\nuniform float blurSize : 2.0;\nuniform vec2 textureSize : [512.0, 512.0];\nuniform float blurDir : 0.0;\n@import clay.util.rgbm\n@import clay.util.clamp_sample\nvoid main (void)\n{\n @import clay.compositor.kernel.gaussian_9\n vec2 off = blurSize / textureSize;\n off *= vec2(1.0 - blurDir, blurDir);\n vec4 sum = vec4(0.0);\n float weightAll = 0.0;\n for (int i = 0; i < 9; i++) {\n float w = gaussianKernel[i];\n vec4 texel = decodeHDR(clampSample(texture, v_Texcoord + float(i - 4) * off));\n sum += texel * w;\n weightAll += w;\n }\n gl_FragColor = encodeHDR(sum / max(weightAll, 0.01));\n}\n@end\n",ps="\n@export clay.compositor.lut\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform sampler2D lookup;\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n float blueColor = tex.b * 63.0;\n vec2 quad1;\n quad1.y = floor(floor(blueColor) / 8.0);\n quad1.x = floor(blueColor) - (quad1.y * 8.0);\n vec2 quad2;\n quad2.y = floor(ceil(blueColor) / 8.0);\n quad2.x = ceil(blueColor) - (quad2.y * 8.0);\n vec2 texPos1;\n texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.r);\n texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.g);\n vec2 texPos2;\n texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.r);\n texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.g);\n vec4 newColor1 = texture2D(lookup, texPos1);\n vec4 newColor2 = texture2D(lookup, texPos2);\n vec4 newColor = mix(newColor1, newColor2, fract(blueColor));\n gl_FragColor = vec4(newColor.rgb, tex.w);\n}\n@end",ms="@export clay.compositor.output\n#define OUTPUT_ALPHA\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\n@import clay.util.rgbm\nvoid main()\n{\n vec4 tex = decodeHDR(texture2D(texture, v_Texcoord));\n gl_FragColor.rgb = tex.rgb;\n#ifdef OUTPUT_ALPHA\n gl_FragColor.a = tex.a;\n#else\n gl_FragColor.a = 1.0;\n#endif\n gl_FragColor = encodeHDR(gl_FragColor);\n#ifdef PREMULTIPLY_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif\n}\n@end",gs="@export clay.compositor.bright\nuniform sampler2D texture;\nuniform float threshold : 1;\nuniform float scale : 1.0;\nuniform vec2 textureSize: [512, 512];\nvarying vec2 v_Texcoord;\nconst vec3 lumWeight = vec3(0.2125, 0.7154, 0.0721);\n@import clay.util.rgbm\nvec4 median(vec4 a, vec4 b, vec4 c)\n{\n return a + b + c - min(min(a, b), c) - max(max(a, b), c);\n}\nvoid main()\n{\n vec4 texel = decodeHDR(texture2D(texture, v_Texcoord));\n#ifdef ANTI_FLICKER\n vec3 d = 1.0 / textureSize.xyx * vec3(1.0, 1.0, 0.0);\n vec4 s1 = decodeHDR(texture2D(texture, v_Texcoord - d.xz));\n vec4 s2 = decodeHDR(texture2D(texture, v_Texcoord + d.xz));\n vec4 s3 = decodeHDR(texture2D(texture, v_Texcoord - d.zy));\n vec4 s4 = decodeHDR(texture2D(texture, v_Texcoord + d.zy));\n texel = median(median(texel, s1, s2), s3, s4);\n#endif\n float lum = dot(texel.rgb , lumWeight);\n vec4 color;\n if (lum > threshold && texel.a > 0.0)\n {\n color = vec4(texel.rgb * scale, texel.a * scale);\n }\n else\n {\n color = vec4(0.0);\n }\n gl_FragColor = encodeHDR(color);\n}\n@end\n",_s="@export clay.compositor.downsample\nuniform sampler2D texture;\nuniform vec2 textureSize : [512, 512];\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\nfloat brightness(vec3 c)\n{\n return max(max(c.r, c.g), c.b);\n}\n@import clay.util.clamp_sample\nvoid main()\n{\n vec4 d = vec4(-1.0, -1.0, 1.0, 1.0) / textureSize.xyxy;\n#ifdef ANTI_FLICKER\n vec3 s1 = decodeHDR(clampSample(texture, v_Texcoord + d.xy)).rgb;\n vec3 s2 = decodeHDR(clampSample(texture, v_Texcoord + d.zy)).rgb;\n vec3 s3 = decodeHDR(clampSample(texture, v_Texcoord + d.xw)).rgb;\n vec3 s4 = decodeHDR(clampSample(texture, v_Texcoord + d.zw)).rgb;\n float s1w = 1.0 / (brightness(s1) + 1.0);\n float s2w = 1.0 / (brightness(s2) + 1.0);\n float s3w = 1.0 / (brightness(s3) + 1.0);\n float s4w = 1.0 / (brightness(s4) + 1.0);\n float oneDivideSum = 1.0 / (s1w + s2w + s3w + s4w);\n vec4 color = vec4(\n (s1 * s1w + s2 * s2w + s3 * s3w + s4 * s4w) * oneDivideSum,\n 1.0\n );\n#else\n vec4 color = decodeHDR(clampSample(texture, v_Texcoord + d.xy));\n color += decodeHDR(clampSample(texture, v_Texcoord + d.zy));\n color += decodeHDR(clampSample(texture, v_Texcoord + d.xw));\n color += decodeHDR(clampSample(texture, v_Texcoord + d.zw));\n color *= 0.25;\n#endif\n gl_FragColor = encodeHDR(color);\n}\n@end",vs="\n@export clay.compositor.upsample\n#define HIGH_QUALITY\nuniform sampler2D texture;\nuniform vec2 textureSize : [512, 512];\nuniform float sampleScale: 0.5;\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\n@import clay.util.clamp_sample\nvoid main()\n{\n#ifdef HIGH_QUALITY\n vec4 d = vec4(1.0, 1.0, -1.0, 0.0) / textureSize.xyxy * sampleScale;\n vec4 s;\n s = decodeHDR(clampSample(texture, v_Texcoord - d.xy));\n s += decodeHDR(clampSample(texture, v_Texcoord - d.wy)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord - d.zy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zw)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord )) * 4.0;\n s += decodeHDR(clampSample(texture, v_Texcoord + d.xw)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.wy)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord + d.xy));\n gl_FragColor = encodeHDR(s / 16.0);\n#else\n vec4 d = vec4(-1.0, -1.0, +1.0, +1.0) / textureSize.xyxy;\n vec4 s;\n s = decodeHDR(clampSample(texture, v_Texcoord + d.xy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.xw));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zw));\n gl_FragColor = encodeHDR(s / 4.0);\n#endif\n}\n@end",ys="@export clay.compositor.hdr.composite\n#define TONEMAPPING\nuniform sampler2D texture;\n#ifdef BLOOM_ENABLED\nuniform sampler2D bloom;\n#endif\n#ifdef LENSFLARE_ENABLED\nuniform sampler2D lensflare;\nuniform sampler2D lensdirt;\n#endif\n#ifdef LUM_ENABLED\nuniform sampler2D lum;\n#endif\n#ifdef LUT_ENABLED\nuniform sampler2D lut;\n#endif\n#ifdef COLOR_CORRECTION\nuniform float brightness : 0.0;\nuniform float contrast : 1.0;\nuniform float saturation : 1.0;\n#endif\n#ifdef VIGNETTE\nuniform float vignetteDarkness: 1.0;\nuniform float vignetteOffset: 1.0;\n#endif\nuniform float exposure : 1.0;\nuniform float bloomIntensity : 0.25;\nuniform float lensflareIntensity : 1;\nvarying vec2 v_Texcoord;\n@import clay.util.srgb\nvec3 ACESToneMapping(vec3 color)\n{\n const float A = 2.51;\n const float B = 0.03;\n const float C = 2.43;\n const float D = 0.59;\n const float E = 0.14;\n return (color * (A * color + B)) / (color * (C * color + D) + E);\n}\nfloat eyeAdaption(float fLum)\n{\n return mix(0.2, fLum, 0.5);\n}\n#ifdef LUT_ENABLED\nvec3 lutTransform(vec3 color) {\n float blueColor = color.b * 63.0;\n vec2 quad1;\n quad1.y = floor(floor(blueColor) / 8.0);\n quad1.x = floor(blueColor) - (quad1.y * 8.0);\n vec2 quad2;\n quad2.y = floor(ceil(blueColor) / 8.0);\n quad2.x = ceil(blueColor) - (quad2.y * 8.0);\n vec2 texPos1;\n texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.r);\n texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.g);\n vec2 texPos2;\n texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.r);\n texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.g);\n vec4 newColor1 = texture2D(lut, texPos1);\n vec4 newColor2 = texture2D(lut, texPos2);\n vec4 newColor = mix(newColor1, newColor2, fract(blueColor));\n return newColor.rgb;\n}\n#endif\n@import clay.util.rgbm\nvoid main()\n{\n vec4 texel = vec4(0.0);\n vec4 originalTexel = vec4(0.0);\n#ifdef TEXTURE_ENABLED\n texel = decodeHDR(texture2D(texture, v_Texcoord));\n originalTexel = texel;\n#endif\n#ifdef BLOOM_ENABLED\n vec4 bloomTexel = decodeHDR(texture2D(bloom, v_Texcoord));\n texel.rgb += bloomTexel.rgb * bloomIntensity;\n texel.a += bloomTexel.a * bloomIntensity;\n#endif\n#ifdef LENSFLARE_ENABLED\n texel += decodeHDR(texture2D(lensflare, v_Texcoord)) * texture2D(lensdirt, v_Texcoord) * lensflareIntensity;\n#endif\n texel.a = min(texel.a, 1.0);\n#ifdef LUM_ENABLED\n float fLum = texture2D(lum, vec2(0.5, 0.5)).r;\n float adaptedLumDest = 3.0 / (max(0.1, 1.0 + 10.0*eyeAdaption(fLum)));\n float exposureBias = adaptedLumDest * exposure;\n#else\n float exposureBias = exposure;\n#endif\n#ifdef TONEMAPPING\n texel.rgb *= exposureBias;\n texel.rgb = ACESToneMapping(texel.rgb);\n#endif\n texel = linearTosRGB(texel);\n#ifdef LUT_ENABLED\n texel.rgb = lutTransform(clamp(texel.rgb,vec3(0.0),vec3(1.0)));\n#endif\n#ifdef COLOR_CORRECTION\n texel.rgb = clamp(texel.rgb + vec3(brightness), 0.0, 1.0);\n texel.rgb = clamp((texel.rgb - vec3(0.5))*contrast+vec3(0.5), 0.0, 1.0);\n float lum = dot(texel.rgb, vec3(0.2125, 0.7154, 0.0721));\n texel.rgb = mix(vec3(lum), texel.rgb, saturation);\n#endif\n#ifdef VIGNETTE\n vec2 uv = (v_Texcoord - vec2(0.5)) * vec2(vignetteOffset);\n texel.rgb = mix(texel.rgb, vec3(1.0 - vignetteDarkness), dot(uv, uv));\n#endif\n gl_FragColor = encodeHDR(texel);\n#ifdef DEBUG\n #if DEBUG == 1\n gl_FragColor = encodeHDR(decodeHDR(texture2D(texture, v_Texcoord)));\n #elif DEBUG == 2\n gl_FragColor = encodeHDR(decodeHDR(texture2D(bloom, v_Texcoord)) * bloomIntensity);\n #elif DEBUG == 3\n gl_FragColor = encodeHDR(decodeHDR(texture2D(lensflare, v_Texcoord) * lensflareIntensity));\n #endif\n#endif\n if (originalTexel.a <= 0.01 && gl_FragColor.a > 1e-5) {\n gl_FragColor.a = dot(gl_FragColor.rgb, vec3(0.2125, 0.7154, 0.0721));\n }\n#ifdef PREMULTIPLY_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif\n}\n@end",xs="@export clay.compositor.blend\n#define SHADER_NAME blend\n#ifdef TEXTURE1_ENABLED\nuniform sampler2D texture1;\nuniform float weight1 : 1.0;\n#endif\n#ifdef TEXTURE2_ENABLED\nuniform sampler2D texture2;\nuniform float weight2 : 1.0;\n#endif\n#ifdef TEXTURE3_ENABLED\nuniform sampler2D texture3;\nuniform float weight3 : 1.0;\n#endif\n#ifdef TEXTURE4_ENABLED\nuniform sampler2D texture4;\nuniform float weight4 : 1.0;\n#endif\n#ifdef TEXTURE5_ENABLED\nuniform sampler2D texture5;\nuniform float weight5 : 1.0;\n#endif\n#ifdef TEXTURE6_ENABLED\nuniform sampler2D texture6;\nuniform float weight6 : 1.0;\n#endif\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\nvoid main()\n{\n vec4 tex = vec4(0.0);\n#ifdef TEXTURE1_ENABLED\n tex += decodeHDR(texture2D(texture1, v_Texcoord)) * weight1;\n#endif\n#ifdef TEXTURE2_ENABLED\n tex += decodeHDR(texture2D(texture2, v_Texcoord)) * weight2;\n#endif\n#ifdef TEXTURE3_ENABLED\n tex += decodeHDR(texture2D(texture3, v_Texcoord)) * weight3;\n#endif\n#ifdef TEXTURE4_ENABLED\n tex += decodeHDR(texture2D(texture4, v_Texcoord)) * weight4;\n#endif\n#ifdef TEXTURE5_ENABLED\n tex += decodeHDR(texture2D(texture5, v_Texcoord)) * weight5;\n#endif\n#ifdef TEXTURE6_ENABLED\n tex += decodeHDR(texture2D(texture6, v_Texcoord)) * weight6;\n#endif\n gl_FragColor = encodeHDR(tex);\n}\n@end",bs="@export clay.compositor.fxaa\nuniform sampler2D texture;\nuniform vec4 viewport : VIEWPORT;\nvarying vec2 v_Texcoord;\n#define FXAA_REDUCE_MIN (1.0/128.0)\n#define FXAA_REDUCE_MUL (1.0/8.0)\n#define FXAA_SPAN_MAX 8.0\n@import clay.util.rgbm\nvoid main()\n{\n vec2 resolution = 1.0 / viewport.zw;\n vec3 rgbNW = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( -1.0, -1.0 ) ) * resolution ) ).xyz;\n vec3 rgbNE = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( 1.0, -1.0 ) ) * resolution ) ).xyz;\n vec3 rgbSW = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( -1.0, 1.0 ) ) * resolution ) ).xyz;\n vec3 rgbSE = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( 1.0, 1.0 ) ) * resolution ) ).xyz;\n vec4 rgbaM = decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution ) );\n vec3 rgbM = rgbaM.xyz;\n float opacity = rgbaM.w;\n vec3 luma = vec3( 0.299, 0.587, 0.114 );\n float lumaNW = dot( rgbNW, luma );\n float lumaNE = dot( rgbNE, luma );\n float lumaSW = dot( rgbSW, luma );\n float lumaSE = dot( rgbSE, luma );\n float lumaM = dot( rgbM, luma );\n float lumaMin = min( lumaM, min( min( lumaNW, lumaNE ), min( lumaSW, lumaSE ) ) );\n float lumaMax = max( lumaM, max( max( lumaNW, lumaNE) , max( lumaSW, lumaSE ) ) );\n vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n float dirReduce = max( ( lumaNW + lumaNE + lumaSW + lumaSE ) * ( 0.25 * FXAA_REDUCE_MUL ), FXAA_REDUCE_MIN );\n float rcpDirMin = 1.0 / ( min( abs( dir.x ), abs( dir.y ) ) + dirReduce );\n dir = min( vec2( FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max( vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * resolution;\n vec3 rgbA = decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * ( 1.0 / 3.0 - 0.5 ) ) ).xyz;\n rgbA += decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * ( 2.0 / 3.0 - 0.5 ) ) ).xyz;\n rgbA *= 0.5;\n vec3 rgbB = decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * -0.5 ) ).xyz;\n rgbB += decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * 0.5 ) ).xyz;\n rgbB *= 0.25;\n rgbB += rgbA * 0.5;\n float lumaB = dot( rgbB, luma );\n if ( ( lumaB < lumaMin ) || ( lumaB > lumaMax ) )\n {\n gl_FragColor = vec4( rgbA, opacity );\n }\n else {\n gl_FragColor = vec4( rgbB, opacity );\n }\n}\n@end";!function(e){e.import("@export clay.compositor.coloradjust\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float brightness : 0.0;\nuniform float contrast : 1.0;\nuniform float exposure : 0.0;\nuniform float gamma : 1.0;\nuniform float saturation : 1.0;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord);\n vec3 color = clamp(tex.rgb + vec3(brightness), 0.0, 1.0);\n color = clamp( (color-vec3(0.5))*contrast+vec3(0.5), 0.0, 1.0);\n color = clamp( color * pow(2.0, exposure), 0.0, 1.0);\n color = clamp( pow(color, vec3(gamma)), 0.0, 1.0);\n float luminance = dot( color, w );\n color = mix(vec3(luminance), color, saturation);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.brightness\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float brightness : 0.0;\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord);\n vec3 color = tex.rgb + vec3(brightness);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.contrast\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float contrast : 1.0;\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord);\n vec3 color = (tex.rgb-vec3(0.5))*contrast+vec3(0.5);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.exposure\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float exposure : 0.0;\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n vec3 color = tex.rgb * pow(2.0, exposure);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.gamma\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float gamma : 1.0;\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n vec3 color = pow(tex.rgb, vec3(gamma));\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.saturation\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float saturation : 1.0;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n vec3 color = tex.rgb;\n float luminance = dot(color, w);\n color = mix(vec3(luminance), color, saturation);\n gl_FragColor = vec4(color, tex.a);\n}\n@end"),e.import(fs),e.import("@export clay.compositor.hdr.log_lum\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\n@import clay.util.rgbm\nvoid main()\n{\n vec4 tex = decodeHDR(texture2D(texture, v_Texcoord));\n float luminance = dot(tex.rgb, w);\n luminance = log(luminance + 0.001);\n gl_FragColor = encodeHDR(vec4(vec3(luminance), 1.0));\n}\n@end\n@export clay.compositor.hdr.lum_adaption\nvarying vec2 v_Texcoord;\nuniform sampler2D adaptedLum;\nuniform sampler2D currentLum;\nuniform float frameTime : 0.02;\n@import clay.util.rgbm\nvoid main()\n{\n float fAdaptedLum = decodeHDR(texture2D(adaptedLum, vec2(0.5, 0.5))).r;\n float fCurrentLum = exp(encodeHDR(texture2D(currentLum, vec2(0.5, 0.5))).r);\n fAdaptedLum += (fCurrentLum - fAdaptedLum) * (1.0 - pow(0.98, 30.0 * frameTime));\n gl_FragColor = encodeHDR(vec4(vec3(fAdaptedLum), 1.0));\n}\n@end\n@export clay.compositor.lum\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord );\n float luminance = dot(tex.rgb, w);\n gl_FragColor = vec4(vec3(luminance), 1.0);\n}\n@end"),e.import(ps),e.import("@export clay.compositor.vignette\n#define OUTPUT_ALPHA\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float darkness: 1;\nuniform float offset: 1;\n@import clay.util.rgbm\nvoid main()\n{\n vec4 texel = decodeHDR(texture2D(texture, v_Texcoord));\n gl_FragColor.rgb = texel.rgb;\n vec2 uv = (v_Texcoord - vec2(0.5)) * vec2(offset);\n gl_FragColor = encodeHDR(vec4(mix(texel.rgb, vec3(1.0 - darkness), dot(uv, uv)), texel.a));\n}\n@end"),e.import(ms),e.import(gs),e.import(_s),e.import(vs),e.import(ys),e.import("@export clay.compositor.lensflare\n#define SAMPLE_NUMBER 8\nuniform sampler2D texture;\nuniform sampler2D lenscolor;\nuniform vec2 textureSize : [512, 512];\nuniform float dispersal : 0.3;\nuniform float haloWidth : 0.4;\nuniform float distortion : 1.0;\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\nvec4 textureDistorted(\n in vec2 texcoord,\n in vec2 direction,\n in vec3 distortion\n) {\n return vec4(\n decodeHDR(texture2D(texture, texcoord + direction * distortion.r)).r,\n decodeHDR(texture2D(texture, texcoord + direction * distortion.g)).g,\n decodeHDR(texture2D(texture, texcoord + direction * distortion.b)).b,\n 1.0\n );\n}\nvoid main()\n{\n vec2 texcoord = -v_Texcoord + vec2(1.0); vec2 textureOffset = 1.0 / textureSize;\n vec2 ghostVec = (vec2(0.5) - texcoord) * dispersal;\n vec2 haloVec = normalize(ghostVec) * haloWidth;\n vec3 distortion = vec3(-textureOffset.x * distortion, 0.0, textureOffset.x * distortion);\n vec4 result = vec4(0.0);\n for (int i = 0; i < SAMPLE_NUMBER; i++)\n {\n vec2 offset = fract(texcoord + ghostVec * float(i));\n float weight = length(vec2(0.5) - offset) / length(vec2(0.5));\n weight = pow(1.0 - weight, 10.0);\n result += textureDistorted(offset, normalize(ghostVec), distortion) * weight;\n }\n result *= texture2D(lenscolor, vec2(length(vec2(0.5) - texcoord)) / length(vec2(0.5)));\n float weight = length(vec2(0.5) - fract(texcoord + haloVec)) / length(vec2(0.5));\n weight = pow(1.0 - weight, 10.0);\n vec2 offset = fract(texcoord + haloVec);\n result += textureDistorted(offset, normalize(ghostVec), distortion) * weight;\n gl_FragColor = result;\n}\n@end"),e.import(xs),e.import(bs)}(br);var Ts=/^#source\((.*?)\)/;function ws(e,t){var r=new hs;t=t||{};var i={textures:{},parameters:{}};for(var n in e.parameters){var a=e.parameters[n];i.parameters[n]=Es(a)}return function(e,t,r,i){if(e.textures){var n={},a=0,o=!1,s=r.textureRootPath;xe.each(e.textures,function(e,t){var r,l=e.path,h=Es(e.parameters);if(Array.isArray(l)&&6===l.length)s&&(l=l.map(function(e){return xe.relative2absolute(e,s)})),r=new In(h);else{if("string"!=typeof l)return;s&&(l=xe.relative2absolute(l,s)),r=new Wi(h)}r.load(l),a++,r.once("success",function(){n[t]=r,0===--a&&(i(n),o=!0)})}),0!==a||o||i(n)}else i({})}(e,0,t,function(n){i.textures=n,function(){for(var n=0;n0;)r+=i*(n%t),n=Math.floor(n/t),i/=t;return r}function Ps(e){for(var t=new Uint8Array(e*e*4),r=0,i=new Gr,n=0;n 0.99999) {\n gl_FragColor = vec4(1.0);\n return;\n }\n mat3 kernelBasis;\n#endif\n\n float z = depthTexel.r * 2.0 - 1.0;\n\n vec4 projectedPos = vec4(v_Texcoord * 2.0 - 1.0, z, 1.0);\n vec4 p4 = projectionInv * projectedPos;\n\n vec3 position = p4.xyz / p4.w;\n\n float ao = ssaoEstimator(position, kernelBasis);\n ao = clamp(1.0 - (1.0 - ao) * intensity, 0.0, 1.0);\n gl_FragColor = vec4(vec3(ao), 1.0);\n}\n\n@end\n\n\n@export ecgl.ssao.blur\n#define SHADER_NAME SSAO_BLUR\n\nuniform sampler2D ssaoTexture;\n\n#ifdef NORMALTEX_ENABLED\nuniform sampler2D normalTex;\n#endif\n\nvarying vec2 v_Texcoord;\n\nuniform vec2 textureSize;\nuniform float blurSize : 1.0;\n\nuniform int direction: 0.0;\n\n#ifdef DEPTHTEX_ENABLED\nuniform sampler2D depthTex;\nuniform mat4 projection;\nuniform float depthRange : 0.5;\n\nfloat getLinearDepth(vec2 coord)\n{\n float depth = texture2D(depthTex, coord).r * 2.0 - 1.0;\n return projection[3][2] / (depth * projection[2][3] - projection[2][2]);\n}\n#endif\n\nvoid main()\n{\n float kernel[5];\n kernel[0] = 0.122581;\n kernel[1] = 0.233062;\n kernel[2] = 0.288713;\n kernel[3] = 0.233062;\n kernel[4] = 0.122581;\n\n vec2 off = vec2(0.0);\n if (direction == 0) {\n off[0] = blurSize / textureSize.x;\n }\n else {\n off[1] = blurSize / textureSize.y;\n }\n\n vec2 coord = v_Texcoord;\n\n float sum = 0.0;\n float weightAll = 0.0;\n\n#ifdef NORMALTEX_ENABLED\n vec3 centerNormal = texture2D(normalTex, v_Texcoord).rgb * 2.0 - 1.0;\n#endif\n#if defined(DEPTHTEX_ENABLED)\n float centerDepth = getLinearDepth(v_Texcoord);\n#endif\n\n for (int i = 0; i < 5; i++) {\n vec2 coord = clamp(v_Texcoord + vec2(float(i) - 2.0) * off, vec2(0.0), vec2(1.0));\n\n float w = kernel[i];\n#ifdef NORMALTEX_ENABLED\n vec3 normal = texture2D(normalTex, coord).rgb * 2.0 - 1.0;\n w *= clamp(dot(normal, centerNormal), 0.0, 1.0);\n#endif\n#ifdef DEPTHTEX_ENABLED\n float d = getLinearDepth(coord);\n w *= (1.0 - smoothstep(abs(centerDepth - d) / depthRange, 0.0, 1.0));\n#endif\n\n weightAll += w;\n sum += texture2D(ssaoTexture, coord).r * w;\n }\n\n gl_FragColor = vec4(vec3(sum / weightAll), 1.0);\n}\n\n@end\n"),Rs.prototype.setDepthTexture=function(e){this._depthTex=e},Rs.prototype.setNormalTexture=function(e){this._normalTex=e,this._ssaoPass.material[e?"enableTexture":"disableTexture"]("normalTex"),this.setKernelSize(this._kernelSize)},Rs.prototype.update=function(e,t,r){var i=e.getWidth(),n=e.getHeight(),a=this._ssaoPass,o=this._blurPass;a.setUniform("kernel",this._kernels[r%this._kernels.length]),a.setUniform("depthTex",this._depthTex),null!=this._normalTex&&a.setUniform("normalTex",this._normalTex),a.setUniform("depthTexSize",[this._depthTex.width,this._depthTex.height]);var s=new ui;ui.transpose(s,t.worldTransform),a.setUniform("projection",t.projectionMatrix.array),a.setUniform("projectionInv",t.invProjectionMatrix.array),a.setUniform("viewInverseTranspose",s.array);var l=this._ssaoTexture,h=this._blurTexture,u=this._blurTexture2;l.width=i/2,l.height=n/2,h.width=i,h.height=n,u.width=i,u.height=n,this._framebuffer.attach(l),this._framebuffer.bind(e),e.gl.clearColor(1,1,1,1),e.gl.clear(e.gl.COLOR_BUFFER_BIT),a.render(e),o.setUniform("textureSize",[i/2,n/2]),o.setUniform("projection",t.projectionMatrix.array),this._framebuffer.attach(h),o.setUniform("direction",0),o.setUniform("ssaoTexture",l),o.render(e),this._framebuffer.attach(u),o.setUniform("textureSize",[i,n]),o.setUniform("direction",1),o.setUniform("ssaoTexture",h),o.render(e),this._framebuffer.unbind(e);var c=e.clearColor;e.gl.clearColor(c[0],c[1],c[2],c[3])},Rs.prototype.getTargetTexture=function(){return this._blurTexture2},Rs.prototype.setParameter=function(e,t){"noiseTexSize"===e?this.setNoiseSize(t):"kernelSize"===e?this.setKernelSize(t):"intensity"===e?this._ssaoPass.material.set("intensity",t):this._ssaoPass.setUniform(e,t)},Rs.prototype.setKernelSize=function(e){this._kernelSize=e,this._ssaoPass.material.define("fragment","KERNEL_SIZE",e),this._kernels=this._kernels||[];for(var t=0;t<30;t++)this._kernels[t]=Ns(e,t*e,!!this._normalTex)},Rs.prototype.setNoiseSize=function(e){var t=this._ssaoPass.getUniform("noiseTex");t?(t.data=Ps(e),t.width=t.height=e,t.dirty()):(t=Os(e),this._ssaoPass.setUniform("noiseTex",Os(e))),this._ssaoPass.setUniform("noiseTexSize",[e,e])},Rs.prototype.dispose=function(e){this._blurTexture.dispose(e),this._ssaoTexture.dispose(e),this._blurTexture2.dispose(e)},br.import("@export ecgl.ssr.main\n\n#define SHADER_NAME SSR\n#define MAX_ITERATION 20;\n#define SAMPLE_PER_FRAME 5;\n#define TOTAL_SAMPLES 128;\n\nuniform sampler2D sourceTexture;\nuniform sampler2D gBufferTexture1;\nuniform sampler2D gBufferTexture2;\nuniform sampler2D gBufferTexture3;\nuniform samplerCube specularCubemap;\nuniform float specularIntensity: 1;\n\nuniform mat4 projection;\nuniform mat4 projectionInv;\nuniform mat4 toViewSpace;\nuniform mat4 toWorldSpace;\n\nuniform float maxRayDistance: 200;\n\nuniform float pixelStride: 16;\nuniform float pixelStrideZCutoff: 50; \nuniform float screenEdgeFadeStart: 0.9; \nuniform float eyeFadeStart : 0.2; uniform float eyeFadeEnd: 0.8; \nuniform float minGlossiness: 0.2; uniform float zThicknessThreshold: 1;\n\nuniform float nearZ;\nuniform vec2 viewportSize : VIEWPORT_SIZE;\n\nuniform float jitterOffset: 0;\n\nvarying vec2 v_Texcoord;\n\n#ifdef DEPTH_DECODE\n@import clay.util.decode_float\n#endif\n\n#ifdef PHYSICALLY_CORRECT\nuniform sampler2D normalDistribution;\nuniform float sampleOffset: 0;\nuniform vec2 normalDistributionSize;\n\nvec3 transformNormal(vec3 H, vec3 N) {\n vec3 upVector = N.y > 0.999 ? vec3(1.0, 0.0, 0.0) : vec3(0.0, 1.0, 0.0);\n vec3 tangentX = normalize(cross(N, upVector));\n vec3 tangentZ = cross(N, tangentX);\n return normalize(tangentX * H.x + N * H.y + tangentZ * H.z);\n}\nvec3 importanceSampleNormalGGX(float i, float roughness, vec3 N) {\n float p = fract((i + sampleOffset) / float(TOTAL_SAMPLES));\n vec3 H = texture2D(normalDistribution,vec2(roughness, p)).rgb;\n return transformNormal(H, N);\n}\nfloat G_Smith(float g, float ndv, float ndl) {\n float roughness = 1.0 - g;\n float k = roughness * roughness / 2.0;\n float G1V = ndv / (ndv * (1.0 - k) + k);\n float G1L = ndl / (ndl * (1.0 - k) + k);\n return G1L * G1V;\n}\nvec3 F_Schlick(float ndv, vec3 spec) {\n return spec + (1.0 - spec) * pow(1.0 - ndv, 5.0);\n}\n#endif\n\nfloat fetchDepth(sampler2D depthTexture, vec2 uv)\n{\n vec4 depthTexel = texture2D(depthTexture, uv);\n return depthTexel.r * 2.0 - 1.0;\n}\n\nfloat linearDepth(float depth)\n{\n if (projection[3][3] == 0.0) {\n return projection[3][2] / (depth * projection[2][3] - projection[2][2]);\n }\n else {\n return (depth - projection[3][2]) / projection[2][2];\n }\n}\n\nbool rayIntersectDepth(float rayZNear, float rayZFar, vec2 hitPixel)\n{\n if (rayZFar > rayZNear)\n {\n float t = rayZFar; rayZFar = rayZNear; rayZNear = t;\n }\n float cameraZ = linearDepth(fetchDepth(gBufferTexture2, hitPixel));\n return rayZFar <= cameraZ && rayZNear >= cameraZ - zThicknessThreshold;\n}\n\n\nbool traceScreenSpaceRay(\n vec3 rayOrigin, vec3 rayDir, float jitter,\n out vec2 hitPixel, out vec3 hitPoint, out float iterationCount\n)\n{\n float rayLength = ((rayOrigin.z + rayDir.z * maxRayDistance) > -nearZ)\n ? (-nearZ - rayOrigin.z) / rayDir.z : maxRayDistance;\n\n vec3 rayEnd = rayOrigin + rayDir * rayLength;\n\n vec4 H0 = projection * vec4(rayOrigin, 1.0);\n vec4 H1 = projection * vec4(rayEnd, 1.0);\n\n float k0 = 1.0 / H0.w, k1 = 1.0 / H1.w;\n\n vec3 Q0 = rayOrigin * k0, Q1 = rayEnd * k1;\n\n vec2 P0 = (H0.xy * k0 * 0.5 + 0.5) * viewportSize;\n vec2 P1 = (H1.xy * k1 * 0.5 + 0.5) * viewportSize;\n\n P1 += dot(P1 - P0, P1 - P0) < 0.0001 ? 0.01 : 0.0;\n vec2 delta = P1 - P0;\n\n bool permute = false;\n if (abs(delta.x) < abs(delta.y)) {\n permute = true;\n delta = delta.yx;\n P0 = P0.yx;\n P1 = P1.yx;\n }\n float stepDir = sign(delta.x);\n float invdx = stepDir / delta.x;\n\n vec3 dQ = (Q1 - Q0) * invdx;\n float dk = (k1 - k0) * invdx;\n\n vec2 dP = vec2(stepDir, delta.y * invdx);\n\n float strideScaler = 1.0 - min(1.0, -rayOrigin.z / pixelStrideZCutoff);\n float pixStride = 1.0 + strideScaler * pixelStride;\n\n dP *= pixStride; dQ *= pixStride; dk *= pixStride;\n\n vec4 pqk = vec4(P0, Q0.z, k0);\n vec4 dPQK = vec4(dP, dQ.z, dk);\n\n pqk += dPQK * jitter;\n float rayZFar = (dPQK.z * 0.5 + pqk.z) / (dPQK.w * 0.5 + pqk.w);\n float rayZNear;\n\n bool intersect = false;\n\n vec2 texelSize = 1.0 / viewportSize;\n\n iterationCount = 0.0;\n\n for (int i = 0; i < MAX_ITERATION; i++)\n {\n pqk += dPQK;\n\n rayZNear = rayZFar;\n rayZFar = (dPQK.z * 0.5 + pqk.z) / (dPQK.w * 0.5 + pqk.w);\n\n hitPixel = permute ? pqk.yx : pqk.xy;\n hitPixel *= texelSize;\n\n intersect = rayIntersectDepth(rayZNear, rayZFar, hitPixel);\n\n iterationCount += 1.0;\n\n dPQK *= 1.2;\n\n if (intersect) {\n break;\n }\n }\n\n Q0.xy += dQ.xy * iterationCount;\n Q0.z = pqk.z;\n hitPoint = Q0 / pqk.w;\n\n return intersect;\n}\n\nfloat calculateAlpha(\n float iterationCount, float reflectivity,\n vec2 hitPixel, vec3 hitPoint, float dist, vec3 rayDir\n)\n{\n float alpha = clamp(reflectivity, 0.0, 1.0);\n alpha *= 1.0 - (iterationCount / float(MAX_ITERATION));\n vec2 hitPixelNDC = hitPixel * 2.0 - 1.0;\n float maxDimension = min(1.0, max(abs(hitPixelNDC.x), abs(hitPixelNDC.y)));\n alpha *= 1.0 - max(0.0, maxDimension - screenEdgeFadeStart) / (1.0 - screenEdgeFadeStart);\n\n float _eyeFadeStart = eyeFadeStart;\n float _eyeFadeEnd = eyeFadeEnd;\n if (_eyeFadeStart > _eyeFadeEnd) {\n float tmp = _eyeFadeEnd;\n _eyeFadeEnd = _eyeFadeStart;\n _eyeFadeStart = tmp;\n }\n\n float eyeDir = clamp(rayDir.z, _eyeFadeStart, _eyeFadeEnd);\n alpha *= 1.0 - (eyeDir - _eyeFadeStart) / (_eyeFadeEnd - _eyeFadeStart);\n\n alpha *= 1.0 - clamp(dist / maxRayDistance, 0.0, 1.0);\n\n return alpha;\n}\n\n@import clay.util.rand\n\n@import clay.util.rgbm\n\nvoid main()\n{\n vec4 normalAndGloss = texture2D(gBufferTexture1, v_Texcoord);\n\n if (dot(normalAndGloss.rgb, vec3(1.0)) == 0.0) {\n discard;\n }\n\n float g = normalAndGloss.a;\n#if !defined(PHYSICALLY_CORRECT)\n if (g <= minGlossiness) {\n discard;\n }\n#endif\n\n float reflectivity = (g - minGlossiness) / (1.0 - minGlossiness);\n\n vec3 N = normalize(normalAndGloss.rgb * 2.0 - 1.0);\n N = normalize((toViewSpace * vec4(N, 0.0)).xyz);\n\n vec4 projectedPos = vec4(v_Texcoord * 2.0 - 1.0, fetchDepth(gBufferTexture2, v_Texcoord), 1.0);\n vec4 pos = projectionInv * projectedPos;\n vec3 rayOrigin = pos.xyz / pos.w;\n vec3 V = -normalize(rayOrigin);\n\n float ndv = clamp(dot(N, V), 0.0, 1.0);\n float iterationCount;\n float jitter = rand(fract(v_Texcoord + jitterOffset));\n\n#ifdef PHYSICALLY_CORRECT\n vec4 color = vec4(vec3(0.0), 1.0);\n vec4 albedoMetalness = texture2D(gBufferTexture3, v_Texcoord);\n vec3 albedo = albedoMetalness.rgb;\n float m = albedoMetalness.a;\n vec3 diffuseColor = albedo * (1.0 - m);\n vec3 spec = mix(vec3(0.04), albedo, m);\n\n float jitter2 = rand(fract(v_Texcoord)) * float(TOTAL_SAMPLES);\n\n for (int i = 0; i < SAMPLE_PER_FRAME; i++) {\n vec3 H = importanceSampleNormalGGX(float(i) + jitter2, 1.0 - g, N);\n vec3 rayDir = normalize(reflect(-V, H));\n#else\n vec3 rayDir = normalize(reflect(-V, N));\n#endif\n vec2 hitPixel;\n vec3 hitPoint;\n\n bool intersect = traceScreenSpaceRay(rayOrigin, rayDir, jitter, hitPixel, hitPoint, iterationCount);\n\n float dist = distance(rayOrigin, hitPoint);\n\n vec3 hitNormal = texture2D(gBufferTexture1, hitPixel).rgb * 2.0 - 1.0;\n hitNormal = normalize((toViewSpace * vec4(hitNormal, 0.0)).xyz);\n#ifdef PHYSICALLY_CORRECT\n float ndl = clamp(dot(N, rayDir), 0.0, 1.0);\n float vdh = clamp(dot(V, H), 0.0, 1.0);\n float ndh = clamp(dot(N, H), 0.0, 1.0);\n vec3 litTexel = vec3(0.0);\n if (dot(hitNormal, rayDir) < 0.0 && intersect) {\n litTexel = texture2D(sourceTexture, hitPixel).rgb;\n litTexel *= pow(clamp(1.0 - dist / 200.0, 0.0, 1.0), 3.0);\n\n }\n else {\n #ifdef SPECULARCUBEMAP_ENABLED\n vec3 rayDirW = normalize(toWorldSpace * vec4(rayDir, 0.0)).rgb;\n litTexel = RGBMDecode(textureCubeLodEXT(specularCubemap, rayDirW, 0.0), 8.12).rgb * specularIntensity;\n#endif\n }\n color.rgb += ndl * litTexel * (\n F_Schlick(ndl, spec) * G_Smith(g, ndv, ndl) * vdh / (ndh * ndv + 0.001)\n );\n }\n color.rgb /= float(SAMPLE_PER_FRAME);\n#else\n #if !defined(SPECULARCUBEMAP_ENABLED)\n if (dot(hitNormal, rayDir) >= 0.0) {\n discard;\n }\n if (!intersect) {\n discard;\n }\n#endif\n float alpha = clamp(calculateAlpha(iterationCount, reflectivity, hitPixel, hitPoint, dist, rayDir), 0.0, 1.0);\n vec4 color = texture2D(sourceTexture, hitPixel);\n color.rgb *= alpha;\n\n#ifdef SPECULARCUBEMAP_ENABLED\n vec3 rayDirW = normalize(toWorldSpace * vec4(rayDir, 0.0)).rgb;\n alpha = alpha * (intersect ? 1.0 : 0.0);\n float bias = (1.0 -g) * 5.0;\n color.rgb += (1.0 - alpha)\n * RGBMDecode(textureCubeLodEXT(specularCubemap, rayDirW, bias), 8.12).rgb\n * specularIntensity;\n#endif\n\n#endif\n\n gl_FragColor = encodeHDR(color);\n}\n@end\n\n@export ecgl.ssr.blur\n\nuniform sampler2D texture;\nuniform sampler2D gBufferTexture1;\nuniform sampler2D gBufferTexture2;\nuniform mat4 projection;\nuniform float depthRange : 0.05;\n\nvarying vec2 v_Texcoord;\n\nuniform vec2 textureSize;\nuniform float blurSize : 1.0;\n\n#ifdef BLEND\n #ifdef SSAOTEX_ENABLED\nuniform sampler2D ssaoTex;\n #endif\nuniform sampler2D sourceTexture;\n#endif\n\nfloat getLinearDepth(vec2 coord)\n{\n float depth = texture2D(gBufferTexture2, coord).r * 2.0 - 1.0;\n return projection[3][2] / (depth * projection[2][3] - projection[2][2]);\n}\n\n@import clay.util.rgbm\n\n\nvoid main()\n{\n @import clay.compositor.kernel.gaussian_9\n\n vec4 centerNTexel = texture2D(gBufferTexture1, v_Texcoord);\n float g = centerNTexel.a;\n float maxBlurSize = clamp(1.0 - g, 0.0, 1.0) * blurSize;\n#ifdef VERTICAL\n vec2 off = vec2(0.0, maxBlurSize / textureSize.y);\n#else\n vec2 off = vec2(maxBlurSize / textureSize.x, 0.0);\n#endif\n\n vec2 coord = v_Texcoord;\n\n vec4 sum = vec4(0.0);\n float weightAll = 0.0;\n\n vec3 cN = centerNTexel.rgb * 2.0 - 1.0;\n float cD = getLinearDepth(v_Texcoord);\n for (int i = 0; i < 9; i++) {\n vec2 coord = clamp((float(i) - 4.0) * off + v_Texcoord, vec2(0.0), vec2(1.0));\n float w = gaussianKernel[i]\n * clamp(dot(cN, texture2D(gBufferTexture1, coord).rgb * 2.0 - 1.0), 0.0, 1.0);\n float d = getLinearDepth(coord);\n w *= (1.0 - smoothstep(abs(cD - d) / depthRange, 0.0, 1.0));\n\n weightAll += w;\n sum += decodeHDR(texture2D(texture, coord)) * w;\n }\n\n#ifdef BLEND\n float aoFactor = 1.0;\n #ifdef SSAOTEX_ENABLED\n aoFactor = texture2D(ssaoTex, v_Texcoord).r;\n #endif\n gl_FragColor = encodeHDR(\n sum / weightAll * aoFactor + decodeHDR(texture2D(sourceTexture, v_Texcoord))\n );\n#else\n gl_FragColor = encodeHDR(sum / weightAll);\n#endif\n}\n\n@end"),Is.prototype.setAmbientCubemap=function(e,t){this._ssrPass.material.set("specularCubemap",e),this._ssrPass.material.set("specularIntensity",t);var r=e&&t;this._ssrPass.material[r?"enableTexture":"disableTexture"]("specularCubemap")},Is.prototype.update=function(e,t,r,i){var n=e.getWidth(),a=e.getHeight(),o=this._ssrTexture,s=this._texture2,l=this._texture3;o.width=this._prevTexture.width=this._currentTexture.width=n/this._downScale,o.height=this._prevTexture.height=this._currentTexture.height=a/this._downScale,s.width=l.width=n,s.height=l.height=a;var h=this._frameBuffer,u=this._ssrPass,c=this._blurPass1,d=this._blurPass2,f=this._blendPass,p=new ui,m=new ui;ui.transpose(p,t.worldTransform),ui.transpose(m,t.viewMatrix),u.setUniform("sourceTexture",r),u.setUniform("projection",t.projectionMatrix.array),u.setUniform("projectionInv",t.invProjectionMatrix.array),u.setUniform("toViewSpace",p.array),u.setUniform("toWorldSpace",m.array),u.setUniform("nearZ",t.near);var g=i/this._totalSamples*this._samplePerFrame;if(u.setUniform("jitterOffset",g),u.setUniform("sampleOffset",i*this._samplePerFrame),c.setUniform("textureSize",[o.width,o.height]),d.setUniform("textureSize",[n,a]),d.setUniform("sourceTexture",r),c.setUniform("projection",t.projectionMatrix.array),d.setUniform("projection",t.projectionMatrix.array),h.attach(o),h.bind(e),u.render(e),this._physicallyCorrect&&(h.attach(this._currentTexture),f.setUniform("texture1",this._prevTexture),f.setUniform("texture2",o),f.material.set({weight1:i>=1?.95:0,weight2:i>=1?.05:1}),f.render(e)),h.attach(s),c.setUniform("texture",this._physicallyCorrect?this._currentTexture:o),c.render(e),h.attach(l),d.setUniform("texture",s),d.render(e),h.unbind(e),this._physicallyCorrect){var _=this._prevTexture;this._prevTexture=this._currentTexture,this._currentTexture=_}},Is.prototype.getTargetTexture=function(){return this._texture3},Is.prototype.setParameter=function(e,t){"maxIteration"===e?this._ssrPass.material.define("fragment","MAX_ITERATION",t):this._ssrPass.setUniform(e,t)},Is.prototype.setPhysicallyCorrect=function(e){e?(this._normalDistribution||(this._normalDistribution=Ta.generateNormalDistribution(64,this._totalSamples)),this._ssrPass.material.define("fragment","PHYSICALLY_CORRECT"),this._ssrPass.material.set("normalDistribution",this._normalDistribution),this._ssrPass.material.set("normalDistributionSize",[64,this._totalSamples])):this._ssrPass.material.undefine("fragment","PHYSICALLY_CORRECT"),this._physicallyCorrect=e},Is.prototype.setSSAOTexture=function(e){var t=this._blurPass2;e?(t.material.enableTexture("ssaoTex"),t.material.set("ssaoTex",e)):t.material.disableTexture("ssaoTex")},Is.prototype.isFinished=function(e){return!this._physicallyCorrect||e>this._totalSamples/this._samplePerFrame},Is.prototype.dispose=function(e){this._ssrTexture.dispose(e),this._texture2.dispose(e),this._texture3.dispose(e),this._prevTexture.dispose(e),this._currentTexture.dispose(e),this._frameBuffer.dispose(e)};const Bs=[0,0,-.321585265978,-.154972575841,.458126042375,.188473391593,.842080129861,.527766490688,.147304551086,-.659453822776,-.331943915203,-.940619700594,.0479226680259,.54812163202,.701581552186,-.709825561388,-.295436780218,.940589268233,-.901489676764,.237713156085,.973570876096,-.109899459384,-.866792314779,-.451805525005,.330975007087,.800048655954,-.344275183665,.381779221166,-.386139432542,-.437418421534,-.576478634965,-.0148463392551,.385798197415,-.262426961053,-.666302061145,.682427250835,-.628010632582,-.732836215494,.10163141741,-.987658134403,.711995289051,-.320024291314,.0296005138058,.950296523438,.0130612307608,-.351024443122,-.879596633704,-.10478487883,.435712737232,.504254490347,.779203817497,.206477676721,.388264289969,-.896736162545,-.153106280781,-.629203242522,-.245517550697,.657969239148,.126830499058,.26862328493,-.634888119007,-.302301223431,.617074219636,.779817204925];function zs(e,t,r,i,n){var a=e.gl;t.setUniform(a,"1i",r,n),a.activeTexture(a.TEXTURE0+n),i.isRenderable()?i.bind(e):i.unbind(e)}function Fs(e,t,r,i,n){var a,o,s,l,h=e.gl;return function(n,u,c){if(!l||l.material!==n.material){var d=n.material,f=n.__program,p=d.get("roughness");null==p&&(p=1);var m=d.get("normalMap")||t,g=d.get("roughnessMap"),_=d.get("bumpMap"),v=d.get("uvRepeat"),y=d.get("uvOffset"),x=d.get("detailUvRepeat"),b=d.get("detailUvOffset"),T=!!_&&d.isTextureEnabled("bumpMap"),w=!!g&&d.isTextureEnabled("roughnessMap"),S=d.isDefined("fragment","DOUBLE_SIDED");_=_||r,g=g||i,c!==u?(u.set("normalMap",m),u.set("bumpMap",_),u.set("roughnessMap",g),u.set("useBumpMap",T),u.set("useRoughnessMap",w),u.set("doubleSide",S),null!=v&&u.set("uvRepeat",v),null!=y&&u.set("uvOffset",y),null!=x&&u.set("detailUvRepeat",x),null!=b&&u.set("detailUvOffset",b),u.set("roughness",p)):(f.setUniform(h,"1f","roughness",p),a!==m&&zs(e,f,"normalMap",m,0),o!==_&&_&&zs(e,f,"bumpMap",_,1),s!==g&&g&&zs(e,f,"roughnessMap",g,2),null!=v&&f.setUniform(h,"2f","uvRepeat",v),null!=y&&f.setUniform(h,"2f","uvOffset",y),null!=x&&f.setUniform(h,"2f","detailUvRepeat",x),null!=b&&f.setUniform(h,"2f","detailUvOffset",b),f.setUniform(h,"1i","useBumpMap",+T),f.setUniform(h,"1i","useRoughnessMap",+w),f.setUniform(h,"1i","doubleSide",+S)),a=m,o=_,s=g,l=n}}}function Gs(e){this._depthTex=new Wi({format:Gi.DEPTH_COMPONENT,type:Gi.UNSIGNED_INT}),this._normalTex=new Wi({type:Gi.HALF_FLOAT}),this._framebuffer=new Zn,this._framebuffer.attach(this._normalTex),this._framebuffer.attach(this._depthTex,Zn.DEPTH_ATTACHMENT),this._normalMaterial=new Wt({shader:new br(br.source("ecgl.normal.vertex"),br.source("ecgl.normal.fragment"))}),this._normalMaterial.enableTexture(["normalMap","bumpMap","roughnessMap"]),this._defaultNormalMap=fa.createBlank("#000"),this._defaultBumpMap=fa.createBlank("#000"),this._defaultRoughessMap=fa.createBlank("#000"),this._debugPass=new ba({fragment:br.source("clay.compositor.output")}),this._debugPass.setUniform("texture",this._normalTex),this._debugPass.material.undefine("fragment","OUTPUT_ALPHA")}function Us(e){e=e||{},this._edgePass=new ba({fragment:br.source("ecgl.edge")}),this._edgePass.setUniform("normalTexture",e.normalTexture),this._edgePass.setUniform("depthTexture",e.depthTexture),this._targetTexture=new Wi({type:Gi.HALF_FLOAT}),this._frameBuffer=new Zn,this._frameBuffer.attach(this._targetTexture)}br.import("@export ecgl.normal.vertex\n\n@import ecgl.common.transformUniforms\n\n@import ecgl.common.uv.header\n\n@import ecgl.common.attributes\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\n@import ecgl.common.normalMap.vertexHeader\n\n@import ecgl.common.vertexAnimation.header\n\nvoid main()\n{\n\n @import ecgl.common.vertexAnimation.main\n\n @import ecgl.common.uv.main\n\n v_Normal = normalize((worldInverseTranspose * vec4(normal, 0.0)).xyz);\n v_WorldPosition = (world * vec4(pos, 1.0)).xyz;\n\n @import ecgl.common.normalMap.vertexMain\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n}\n\n\n@end\n\n\n@export ecgl.normal.fragment\n\n#define ROUGHNESS_CHANEL 0\n\nuniform bool useBumpMap;\nuniform bool useRoughnessMap;\nuniform bool doubleSide;\nuniform float roughness;\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n@import ecgl.common.normalMap.fragmentHeader\n@import ecgl.common.bumpMap.header\n\nuniform sampler2D roughnessMap;\n\nvoid main()\n{\n vec3 N = v_Normal;\n \n bool flipNormal = false;\n if (doubleSide) {\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n\n if (dot(N, V) < 0.0) {\n flipNormal = true;\n }\n }\n\n @import ecgl.common.normalMap.fragmentMain\n\n if (useBumpMap) {\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n }\n\n float g = 1.0 - roughness;\n\n if (useRoughnessMap) {\n float g2 = 1.0 - texture2D(roughnessMap, v_DetailTexcoord)[ROUGHNESS_CHANEL];\n g = clamp(g2 + (g - 0.5) * 2.0, 0.0, 1.0);\n }\n\n if (flipNormal) {\n N = -N;\n }\n\n gl_FragColor.rgb = (N.xyz + 1.0) * 0.5;\n gl_FragColor.a = g;\n}\n@end"),Gs.prototype.getDepthTexture=function(){return this._depthTex},Gs.prototype.getNormalTexture=function(){return this._normalTex},Gs.prototype.update=function(e,t,r){var i=e.getWidth(),n=e.getHeight(),a=this._depthTex,o=this._normalTex,s=this._normalMaterial;a.width=i,a.height=n,o.width=i,o.height=n;var l=t.getRenderList(r).opaque;this._framebuffer.bind(e),e.gl.clearColor(0,0,0,0),e.gl.clear(e.gl.COLOR_BUFFER_BIT|e.gl.DEPTH_BUFFER_BIT),e.gl.disable(e.gl.BLEND),e.renderPass(l,r,{getMaterial:function(){return s},ifRender:function(e){return e.renderNormal},beforeRender:Fs(e,this._defaultNormalMap,this._defaultBumpMap,this._defaultRoughessMap,this._normalMaterial),sort:e.opaqueSortCompare}),this._framebuffer.unbind(e)},Gs.prototype.renderDebug=function(e){this._debugPass.render(e)},Gs.prototype.dispose=function(e){this._depthTex.dispose(e),this._normalTex.dispose(e)},Us.prototype.update=function(e,t,r,i){var n=e.getWidth(),a=e.getHeight(),o=this._targetTexture;o.width=n,o.height=a;var s=this._frameBuffer;s.bind(e),this._edgePass.setUniform("projectionInv",t.invProjectionMatrix.array),this._edgePass.setUniform("textureSize",[n,a]),this._edgePass.setUniform("texture",r),this._edgePass.render(e),s.unbind(e)},Us.prototype.getTargetTexture=function(){return this._targetTexture},Us.prototype.setParameter=function(e,t){this._edgePass.setUniform(e,t)},Us.prototype.dispose=function(e){this._targetTexture.dispose(e),this._frameBuffer.dispose(e)};const Hs={nodes:[{name:"source",type:"texture",outputs:{color:{}}},{name:"source_half",shader:"#source(clay.compositor.downsample)",inputs:{texture:"source"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"}},{name:"bright",shader:"#source(clay.compositor.bright)",inputs:{texture:"source_half"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{threshold:2,scale:4,textureSize:"expr([width * 1.0 / 2, height / 2])"}},{name:"bright_downsample_4",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 2, height / 2] )"}},{name:"bright_downsample_8",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright_downsample_4"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 4, height / 4] )"}},{name:"bright_downsample_16",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright_downsample_8"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 16)",height:"expr(height * 1.0 / 16)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 8, height / 8] )"}},{name:"bright_downsample_32",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright_downsample_16"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 32)",height:"expr(height * 1.0 / 32)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 16, height / 16] )"}},{name:"bright_upsample_16_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_32"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 16)",height:"expr(height * 1.0 / 16)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 32, height / 32] )"}},{name:"bright_upsample_16_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_16_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 16)",height:"expr(height * 1.0 / 16)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 16, height * 1.0 / 16] )"}},{name:"bright_upsample_8_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_16"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 16, height * 1.0 / 16] )"}},{name:"bright_upsample_8_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_8_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 8, height * 1.0 / 8] )"}},{name:"bright_upsample_8_blend",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_8_blur_v",texture2:"bright_upsample_16_blur_v"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"bright_upsample_4_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_8"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 8, height * 1.0 / 8] )"}},{name:"bright_upsample_4_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_4_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 4, height * 1.0 / 4] )"}},{name:"bright_upsample_4_blend",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_4_blur_v",texture2:"bright_upsample_8_blend"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"bright_upsample_2_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_4"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 4, height * 1.0 / 4] )"}},{name:"bright_upsample_2_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_2_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 2, height * 1.0 / 2] )"}},{name:"bright_upsample_2_blend",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_2_blur_v",texture2:"bright_upsample_4_blend"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"bright_upsample_full_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 2, height * 1.0 / 2] )"}},{name:"bright_upsample_full_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_full_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0, height * 1.0] )"}},{name:"bloom_composite",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_full_blur_v",texture2:"bright_upsample_2_blend"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"coc",shader:"#source(ecgl.dof.coc)",outputs:{color:{parameters:{minFilter:"NEAREST",magFilter:"NEAREST",width:"expr(width * 1.0)",height:"expr(height * 1.0)"}}},parameters:{focalDist:50,focalRange:30}},{name:"dof_far_blur",shader:"#source(ecgl.dof.diskBlur)",inputs:{texture:"source",coc:"coc"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"}},{name:"dof_near_blur",shader:"#source(ecgl.dof.diskBlur)",inputs:{texture:"source",coc:"coc"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"},defines:{BLUR_NEARFIELD:null}},{name:"dof_coc_blur",shader:"#source(ecgl.dof.diskBlur)",inputs:{texture:"coc"},outputs:{color:{parameters:{minFilter:"NEAREST",magFilter:"NEAREST",width:"expr(width * 1.0)",height:"expr(height * 1.0)"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"},defines:{BLUR_COC:null}},{name:"dof_composite",shader:"#source(ecgl.dof.composite)",inputs:{original:"source",blurred:"dof_far_blur",nearfield:"dof_near_blur",coc:"coc",nearcoc:"dof_coc_blur"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}}},{name:"composite",shader:"#source(clay.compositor.hdr.composite)",inputs:{texture:"source",bloom:"bloom_composite"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)"}}},defines:{}},{name:"FXAA",shader:"#source(clay.compositor.fxaa)",inputs:{texture:"composite"}}]};function Vs(e,t){return{color:{parameters:{width:e,height:t}}}}br.import(fs),br.import(ps),br.import(ms),br.import(gs),br.import(_s),br.import(vs),br.import(ys),br.import(xs),br.import(bs),br.import("@export ecgl.dof.coc\n\nuniform sampler2D depth;\n\nuniform float zNear: 0.1;\nuniform float zFar: 2000;\n\nuniform float focalDistance: 3;\nuniform float focalRange: 1;\nuniform float focalLength: 30;\nuniform float fstop: 2.8;\n\nvarying vec2 v_Texcoord;\n\n@import clay.util.encode_float\n\nvoid main()\n{\n float z = texture2D(depth, v_Texcoord).r * 2.0 - 1.0;\n\n float dist = 2.0 * zNear * zFar / (zFar + zNear - z * (zFar - zNear));\n\n float aperture = focalLength / fstop;\n\n float coc;\n\n float uppper = focalDistance + focalRange;\n float lower = focalDistance - focalRange;\n if (dist <= uppper && dist >= lower) {\n coc = 0.5;\n }\n else {\n float focalAdjusted = dist > uppper ? uppper : lower;\n\n coc = abs(aperture * (focalLength * (dist - focalAdjusted)) / (dist * (focalAdjusted - focalLength)));\n coc = clamp(coc, 0.0, 2.0) / 2.00001;\n\n if (dist < lower) {\n coc = -coc;\n }\n coc = coc * 0.5 + 0.5;\n }\n\n gl_FragColor = encodeFloat(coc);\n}\n@end\n\n\n@export ecgl.dof.composite\n\n#define DEBUG 0\n\nuniform sampler2D original;\nuniform sampler2D blurred;\nuniform sampler2D nearfield;\nuniform sampler2D coc;\nuniform sampler2D nearcoc;\nvarying vec2 v_Texcoord;\n\n@import clay.util.rgbm\n@import clay.util.float\n\nvoid main()\n{\n vec4 blurredColor = texture2D(blurred, v_Texcoord);\n vec4 originalColor = texture2D(original, v_Texcoord);\n\n float fCoc = decodeFloat(texture2D(coc, v_Texcoord));\n\n fCoc = abs(fCoc * 2.0 - 1.0);\n\n float weight = smoothstep(0.0, 1.0, fCoc);\n \n#ifdef NEARFIELD_ENABLED\n vec4 nearfieldColor = texture2D(nearfield, v_Texcoord);\n float fNearCoc = decodeFloat(texture2D(nearcoc, v_Texcoord));\n fNearCoc = abs(fNearCoc * 2.0 - 1.0);\n\n gl_FragColor = encodeHDR(\n mix(\n nearfieldColor, mix(originalColor, blurredColor, weight),\n pow(1.0 - fNearCoc, 4.0)\n )\n );\n#else\n gl_FragColor = encodeHDR(mix(originalColor, blurredColor, weight));\n#endif\n\n}\n\n@end\n\n\n\n@export ecgl.dof.diskBlur\n\n#define POISSON_KERNEL_SIZE 16;\n\nuniform sampler2D texture;\nuniform sampler2D coc;\nvarying vec2 v_Texcoord;\n\nuniform float blurRadius : 10.0;\nuniform vec2 textureSize : [512.0, 512.0];\n\nuniform vec2 poissonKernel[POISSON_KERNEL_SIZE];\n\nuniform float percent;\n\nfloat nrand(const in vec2 n) {\n return fract(sin(dot(n.xy ,vec2(12.9898,78.233))) * 43758.5453);\n}\n\n@import clay.util.rgbm\n@import clay.util.float\n\n\nvoid main()\n{\n vec2 offset = blurRadius / textureSize;\n\n float rnd = 6.28318 * nrand(v_Texcoord + 0.07 * percent );\n float cosa = cos(rnd);\n float sina = sin(rnd);\n vec4 basis = vec4(cosa, -sina, sina, cosa);\n\n#if !defined(BLUR_NEARFIELD) && !defined(BLUR_COC)\n offset *= abs(decodeFloat(texture2D(coc, v_Texcoord)) * 2.0 - 1.0);\n#endif\n\n#ifdef BLUR_COC\n float cocSum = 0.0;\n#else\n vec4 color = vec4(0.0);\n#endif\n\n\n float weightSum = 0.0;\n\n for (int i = 0; i < POISSON_KERNEL_SIZE; i++) {\n vec2 ofs = poissonKernel[i];\n\n ofs = vec2(dot(ofs, basis.xy), dot(ofs, basis.zw));\n\n vec2 uv = v_Texcoord + ofs * offset;\n vec4 texel = texture2D(texture, uv);\n\n float w = 1.0;\n#ifdef BLUR_COC\n float fCoc = decodeFloat(texel) * 2.0 - 1.0;\n cocSum += clamp(fCoc, -1.0, 0.0) * w;\n#else\n texel = texel;\n #if !defined(BLUR_NEARFIELD)\n float fCoc = decodeFloat(texture2D(coc, uv)) * 2.0 - 1.0;\n w *= abs(fCoc);\n #endif\n texel.rgb *= texel.a;\n color += texel * w;\n#endif\n\n weightSum += w;\n }\n\n#ifdef BLUR_COC\n gl_FragColor = encodeFloat(clamp(cocSum / weightSum, -1.0, 0.0) * 0.5 + 0.5);\n#else\n color /= weightSum;\n color.rgb /= (color.a + 0.0001);\n gl_FragColor = color;\n#endif\n}\n\n@end"),br.import("@export ecgl.edge\n\nuniform sampler2D texture;\n\nuniform sampler2D normalTexture;\nuniform sampler2D depthTexture;\n\nuniform mat4 projectionInv;\n\nuniform vec2 textureSize;\n\nuniform vec4 edgeColor: [0,0,0,0.8];\n\nvarying vec2 v_Texcoord;\n\nvec3 packColor(vec2 coord) {\n float z = texture2D(depthTexture, coord).r * 2.0 - 1.0;\n vec4 p = vec4(v_Texcoord * 2.0 - 1.0, z, 1.0);\n vec4 p4 = projectionInv * p;\n\n return vec3(\n texture2D(normalTexture, coord).rg,\n -p4.z / p4.w / 5.0\n );\n}\n\nvoid main() {\n vec2 cc = v_Texcoord;\n vec3 center = packColor(cc);\n\n float size = clamp(1.0 - (center.z - 10.0) / 100.0, 0.0, 1.0) * 0.5;\n float dx = size / textureSize.x;\n float dy = size / textureSize.y;\n\n vec2 coord;\n vec3 topLeft = packColor(cc+vec2(-dx, -dy));\n vec3 top = packColor(cc+vec2(0.0, -dy));\n vec3 topRight = packColor(cc+vec2(dx, -dy));\n vec3 left = packColor(cc+vec2(-dx, 0.0));\n vec3 right = packColor(cc+vec2(dx, 0.0));\n vec3 bottomLeft = packColor(cc+vec2(-dx, dy));\n vec3 bottom = packColor(cc+vec2(0.0, dy));\n vec3 bottomRight = packColor(cc+vec2(dx, dy));\n\n vec3 v = -topLeft-2.0*top-topRight+bottomLeft+2.0*bottom+bottomRight;\n vec3 h = -bottomLeft-2.0*left-topLeft+bottomRight+2.0*right+topRight;\n\n float edge = sqrt(dot(h, h) + dot(v, v));\n\n edge = smoothstep(0.8, 1.0, edge);\n\n gl_FragColor = mix(texture2D(texture, v_Texcoord), vec4(edgeColor.rgb, 1.0), edgeColor.a * edge);\n}\n@end");var ks=["composite","FXAA"];function Ws(){this._width,this._height,this._dpr,this._sourceTexture=new Wi({type:Gi.HALF_FLOAT}),this._depthTexture=new Wi({format:Gi.DEPTH_COMPONENT,type:Gi.UNSIGNED_INT}),this._framebuffer=new Zn,this._framebuffer.attach(this._sourceTexture),this._framebuffer.attach(this._depthTexture,Zn.DEPTH_ATTACHMENT),this._normalPass=new Gs,this._compositor=ws(Hs);var e=this._compositor.getNodeByName("source");e.texture=this._sourceTexture;var t=this._compositor.getNodeByName("coc");this._sourceNode=e,this._cocNode=t,this._compositeNode=this._compositor.getNodeByName("composite"),this._fxaaNode=this._compositor.getNodeByName("FXAA"),this._dofBlurNodes=["dof_far_blur","dof_near_blur","dof_coc_blur"].map(function(e){return this._compositor.getNodeByName(e)},this),this._dofBlurKernel=0,this._dofBlurKernelSize=new Float32Array(0),this._finalNodesChain=ks.map(function(e){return this._compositor.getNodeByName(e)},this);var r={normalTexture:this._normalPass.getNormalTexture(),depthTexture:this._normalPass.getDepthTexture()};this._ssaoPass=new Rs(r),this._ssrPass=new Is(r),this._edgePass=new Us(r)}function js(e){for(var t=[],r=0;r<30;r++)t.push([Ls(r,2),Ls(r,3)]);this._haltonSequence=t,this._frame=0,this._sourceTex=new Wi,this._sourceFb=new Zn,this._sourceFb.attach(this._sourceTex),this._prevFrameTex=new Wi,this._outputTex=new Wi;var i=this._blendPass=new ba({fragment:br.source("clay.compositor.blend")});i.material.disableTexturesAll(),i.material.enableTexture(["texture1","texture2"]),this._blendFb=new Zn({depthBuffer:!1}),this._outputPass=new ba({fragment:br.source("clay.compositor.output"),blendWithPrevious:!0}),this._outputPass.material.define("fragment","OUTPUT_ALPHA"),this._outputPass.material.blend=function(e){e.blendEquationSeparate(e.FUNC_ADD,e.FUNC_ADD),e.blendFuncSeparate(e.ONE,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA)}}function Xs(e){e=e||"perspective",this.layer=null,this.scene=new Pn,this.rootNode=this.scene,this.viewport={x:0,y:0,width:0,height:0},this.setProjection(e),this._compositor=new Ws,this._temporalSS=new js,this._shadowMapPass=new os;for(var t=[],r=0,i=0;i<30;i++){for(var n=[],a=0;a<6;a++)n.push(4*Ls(r,2)-2),n.push(4*Ls(r,3)-2),r++;t.push(n)}this._pcfKernels=t,this.scene.on("beforerender",function(e,t,r){this.needsTemporalSS()&&this._temporalSS.jitterProjection(e,r)},this)}Ws.prototype.resize=function(e,t,r){e*=r=r||1,t*=r;var i=this._sourceTexture,n=this._depthTexture;i.width=e,i.height=t,n.width=e,n.height=t;var a={getWidth:function(){return e},getHeight:function(){return t},getDevicePixelRatio:function(){return r}};function o(e,t){if("function"==typeof e[t]){var r=e[t].__original||e[t];e[t]=function(e){return r.call(this,a)},e[t].__original=r}}this._compositor.nodes.forEach(function(e){for(var t in e.outputs){var r=e.outputs[t].parameters;r&&(o(r,"width"),o(r,"height"))}for(var i in e.parameters)o(e.parameters,i)}),this._width=e,this._height=t,this._dpr=r},Ws.prototype.getWidth=function(){return this._width},Ws.prototype.getHeight=function(){return this._height},Ws.prototype._ifRenderNormalPass=function(){return this._enableSSAO||this._enableEdge||this._enableSSR},Ws.prototype._getPrevNode=function(e){for(var t=ks.indexOf(e.name)-1,r=this._finalNodesChain[t];r&&!this._compositor.getNodeByName(r.name);)t-=1,r=this._finalNodesChain[t];return r},Ws.prototype._getNextNode=function(e){for(var t=ks.indexOf(e.name)+1,r=this._finalNodesChain[t];r&&!this._compositor.getNodeByName(r.name);)t+=1,r=this._finalNodesChain[t];return r},Ws.prototype._addChainNode=function(e){var t=this._getPrevNode(e),r=this._getNextNode(e);t&&(e.inputs.texture=t.name,r?(e.outputs=Vs(this.getWidth.bind(this),this.getHeight.bind(this)),r.inputs.texture=e.name):e.outputs=null,this._compositor.addNode(e))},Ws.prototype._removeChainNode=function(e){var t=this._getPrevNode(e),r=this._getNextNode(e);t&&(r?(t.outputs=Vs(this.getWidth.bind(this),this.getHeight.bind(this)),r.inputs.texture=t.name):t.outputs=null,this._compositor.removeNode(e))},Ws.prototype.updateNormal=function(e,t,r,i){this._ifRenderNormalPass()&&this._normalPass.update(e,t,r)},Ws.prototype.updateSSAO=function(e,t,r,i){this._ssaoPass.update(e,r,i)},Ws.prototype.enableSSAO=function(){this._enableSSAO=!0},Ws.prototype.disableSSAO=function(){this._enableSSAO=!1},Ws.prototype.enableSSR=function(){this._enableSSR=!0},Ws.prototype.disableSSR=function(){this._enableSSR=!1},Ws.prototype.getSSAOTexture=function(){return this._ssaoPass.getTargetTexture()},Ws.prototype.getSourceFrameBuffer=function(){return this._framebuffer},Ws.prototype.getSourceTexture=function(){return this._sourceTexture},Ws.prototype.disableFXAA=function(){this._removeChainNode(this._fxaaNode)},Ws.prototype.enableFXAA=function(){this._addChainNode(this._fxaaNode)},Ws.prototype.enableBloom=function(){this._compositeNode.inputs.bloom="bloom_composite",this._compositor.dirty()},Ws.prototype.disableBloom=function(){this._compositeNode.inputs.bloom=null,this._compositor.dirty()},Ws.prototype.enableDOF=function(){this._compositeNode.inputs.texture="dof_composite",this._compositor.dirty()},Ws.prototype.disableDOF=function(){this._compositeNode.inputs.texture="source",this._compositor.dirty()},Ws.prototype.enableColorCorrection=function(){this._compositeNode.define("COLOR_CORRECTION"),this._enableColorCorrection=!0},Ws.prototype.disableColorCorrection=function(){this._compositeNode.undefine("COLOR_CORRECTION"),this._enableColorCorrection=!1},Ws.prototype.enableEdge=function(){this._enableEdge=!0},Ws.prototype.disableEdge=function(){this._enableEdge=!1},Ws.prototype.setBloomIntensity=function(e){this._compositeNode.setParameter("bloomIntensity",e)},Ws.prototype.setSSAOParameter=function(e,t){switch(e){case"quality":var r={low:6,medium:12,high:32,ultra:62}[t]||12;this._ssaoPass.setParameter("kernelSize",r);break;case"radius":this._ssaoPass.setParameter(e,t),this._ssaoPass.setParameter("bias",t/200);break;case"intensity":this._ssaoPass.setParameter(e,t)}},Ws.prototype.setDOFParameter=function(e,t){switch(e){case"focalDistance":case"focalRange":case"fstop":this._cocNode.setParameter(e,t);break;case"blurRadius":for(var r=0;r=this._haltonSequence.length},render:function(e,t,r){var i=this._blendPass;0===this._frame?(i.setUniform("weight1",0),i.setUniform("weight2",1)):(i.setUniform("weight1",.9),i.setUniform("weight2",.1)),i.setUniform("texture1",this._prevFrameTex),i.setUniform("texture2",t||this._sourceTex),this._blendFb.attach(this._outputTex),this._blendFb.bind(e),i.render(e),this._blendFb.unbind(e),r||(this._outputPass.setUniform("texture",this._outputTex),this._outputPass.render(e));var n=this._prevFrameTex;this._prevFrameTex=this._outputTex,this._outputTex=n,this._frame++},dispose:function(e){this._sourceFb.dispose(e),this._blendFb.dispose(e),this._prevFrameTex.dispose(e),this._outputTex.dispose(e),this._sourceTex.dispose(e),this._outputPass.dispose(e),this._blendPass.dispose(e)}},Xs.prototype.setProjection=function(e){var t=this.camera;t&&t.update(),"perspective"===e?this.camera instanceof zn||(this.camera=new zn,t&&this.camera.setLocalTransform(t.localTransform)):this.camera instanceof _a||(this.camera=new _a,t&&this.camera.setLocalTransform(t.localTransform)),this.camera.near=.1,this.camera.far=2e3},Xs.prototype.setViewport=function(e,t,r,i,n){this.camera instanceof zn&&(this.camera.aspect=r/i),n=n||1,this.viewport.x=e,this.viewport.y=t,this.viewport.width=r,this.viewport.height=i,this.viewport.devicePixelRatio=n,this._compositor.resize(r*n,i*n),this._temporalSS.resize(r*n,i*n)},Xs.prototype.containPoint=function(e,t){var r=this.viewport;return t=this.layer.renderer.getHeight()-t,e>=r.x&&t>=r.y&&e<=r.x+r.width&&t<=r.y+r.height};var qs=new Yt;function Zs(e,t){var r=e.getBoxLayoutParams(),i=C(r,{width:t.getWidth(),height:t.getHeight()});i.y=t.getHeight()-i.y-i.height,this.viewGL.setViewport(i.x,i.y,i.width,i.height,t.getDevicePixelRatio());var n=e.get("boxWidth"),a=e.get("boxHeight"),o=e.get("boxDepth");this.getAxis("x").setExtent(-n/2,n/2),this.getAxis("y").setExtent(o/2,-o/2),this.getAxis("z").setExtent(-a/2,a/2),this.size=[n,a,o]}function Ys(e,t){var r={};e.eachSeries(function(e){if(e.coordinateSystem===this){var t=e.getData();["x","y","z"].forEach(function(e){t.mapDimensionsAll(e,!0).forEach(function(i){var n,a;n=e,a=t.getDataExtent(i,!0),r[n]=r[n]||[1/0,-1/0],r[n][0]=Math.min(a[0],r[n][0]),r[n][1]=Math.max(a[1],r[n][1])})})}},this),["xAxis3D","yAxis3D","zAxis3D"].forEach(function(t){e.eachComponent(t,function(e){var i=t.charAt(0),n=e.getReferringComponents("grid3D").models[0],a=n.coordinateSystem;if(a===this){var o=a.getAxis(i);if(!o){(o=new jo(i,L(r[i]||[1/0,-1/0],e))).type=e.get("type");var s="category"===o.type;o.onBand=s&&e.get("boundaryGap"),o.inverse=e.get("inverse"),e.axis=o,o.model=e,o.getLabelModel=function(){return e.getModel("axisLabel",n.getModel("axisLabel"))},o.getTickModel=function(){return e.getModel("axisTick",n.getModel("axisTick"))},a.addAxis(o)}}},this)},this),this.resize(this.model,t)}Xs.prototype.castRay=function(e,t,r){var i=this.layer.renderer,n=i.viewport;return i.viewport=this.viewport,i.screenToNDC(e,t,qs),this.camera.castRay(qs,r),i.viewport=n,r},Xs.prototype.prepareRender=function(){this.scene.update(),this.camera.update(),this.scene.updateLights();var e=this.scene.updateRenderList(this.camera);this._needsSortProgressively=!1;for(var t=0;t30},Xs.prototype._doRender=function(e,t,r){var i=this.scene,n=this.camera;r=r||0,this._updateTransparent(e,i,n,r),t||(this._shadowMapPass.kernelPCF=this._pcfKernels[0],this._shadowMapPass.render(e,i,n,!0)),this._updateShadowPCFKernel(r);var a,o=e.clearColor;e.gl.clearColor(o[0],o[1],o[2],o[3]),this._enablePostEffect&&(this.needsTemporalSS()&&this._temporalSS.jitterProjection(e,n),this._compositor.updateNormal(e,i,n,this._temporalSS.getFrame())),this._updateSSAO(e,i,n,this._temporalSS.getFrame()),this._enablePostEffect?((a=this._compositor.getSourceFrameBuffer()).bind(e),e.gl.clear(e.gl.DEPTH_BUFFER_BIT|e.gl.COLOR_BUFFER_BIT),e.render(i,n,!0,!0),a.unbind(e),this.needsTemporalSS()&&t?(this._compositor.composite(e,i,n,this._temporalSS.getSourceFrameBuffer(),this._temporalSS.getFrame()),e.setViewport(this.viewport),this._temporalSS.render(e)):(e.setViewport(this.viewport),this._compositor.composite(e,i,n,null,0))):this.needsTemporalSS()&&t?((a=this._temporalSS.getSourceFrameBuffer()).bind(e),e.saveClear(),e.clearBit=e.gl.DEPTH_BUFFER_BIT|e.gl.COLOR_BUFFER_BIT,e.render(i,n,!0,!0),e.restoreClear(),a.unbind(e),e.setViewport(this.viewport),this._temporalSS.render(e)):(e.setViewport(this.viewport),e.render(i,n,!0,!0))},Xs.prototype._updateTransparent=function(e,t,r,i){for(var n=new Gr,a=new ui,o=r.getWorldPosition(),s=t.getRenderList(r).transparent,l=0;lthis.camera.far||e80*r){i=a=e[0],n=o=e[1];for(var p=r;pa&&(a=s),l>o&&(o=l);h=Math.max(a-i,o-n)}return dl(d,f,r,i,n,h),f}function ul(e,t,r,i,n){var a,o;if(n===Pl(e,t,r,i)>0)for(a=t;a=t;a-=i)o=Dl(a,e[a],e[a+1],o);return o&&Sl(o,o.next)&&(Cl(o),o=o.next),o}function cl(e,t){if(!e)return e;t||(t=e);var r,i=e;do{if(r=!1,i.steiner||!Sl(i,i.next)&&0!==wl(i.prev,i,i.next))i=i.next;else{if(Cl(i),(i=t=i.prev)===i.next)return null;r=!0}}while(r||i!==t);return t}function dl(e,t,r,i,n,a,o){if(e){!o&&a&&function(e,t,r,i){var n=e;do{null===n.z&&(n.z=yl(n.x,n.y,t,r,i)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,function(e){var t,r,i,n,a,o,s,l,h=1;do{for(r=e,e=null,a=null,o=0;r;){for(o++,i=r,s=0,t=0;t0||l>0&&i;)0!==s&&(0===l||!i||r.z<=i.z)?(n=r,r=r.nextZ,s--):(n=i,i=i.nextZ,l--),a?a.nextZ=n:e=n,n.prevZ=a,a=n;r=i}a.nextZ=null,h*=2}while(o>1)}(n)}(e,i,n,a);for(var s,l,h=e;e.prev!==e.next;)if(s=e.prev,l=e.next,a?pl(e,i,n,a):fl(e))t.push(s.i/r),t.push(e.i/r),t.push(l.i/r),Cl(e),e=l.next,h=l.next;else if((e=l)===h){o?1===o?dl(e=ml(e,t,r),t,r,i,n,a,2):2===o&&gl(e,t,r,i,n,a):dl(cl(e),t,r,i,n,a,1);break}}}function fl(e){var t=e.prev,r=e,i=e.next;if(wl(t,r,i)>=0)return!1;for(var n=e.next.next;n!==e.prev;){if(bl(t.x,t.y,r.x,r.y,i.x,i.y,n.x,n.y)&&wl(n.prev,n,n.next)>=0)return!1;n=n.next}return!0}function pl(e,t,r,i){var n=e.prev,a=e,o=e.next;if(wl(n,a,o)>=0)return!1;for(var s=n.xa.x?n.x>o.x?n.x:o.x:a.x>o.x?a.x:o.x,u=n.y>a.y?n.y>o.y?n.y:o.y:a.y>o.y?a.y:o.y,c=yl(s,l,t,r,i),d=yl(h,u,t,r,i),f=e.nextZ;f&&f.z<=d;){if(f!==e.prev&&f!==e.next&&bl(n.x,n.y,a.x,a.y,o.x,o.y,f.x,f.y)&&wl(f.prev,f,f.next)>=0)return!1;f=f.nextZ}for(f=e.prevZ;f&&f.z>=c;){if(f!==e.prev&&f!==e.next&&bl(n.x,n.y,a.x,a.y,o.x,o.y,f.x,f.y)&&wl(f.prev,f,f.next)>=0)return!1;f=f.prevZ}return!0}function ml(e,t,r){var i=e;do{var n=i.prev,a=i.next.next;!Sl(n,a)&&Ml(n,i,i.next,a)&&Al(n,a)&&Al(a,n)&&(t.push(n.i/r),t.push(i.i/r),t.push(a.i/r),Cl(i),Cl(i.next),i=e=a),i=i.next}while(i!==e);return i}function gl(e,t,r,i,n,a){var o=e;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Tl(o,s)){var l=El(o,s);return o=cl(o,o.next),l=cl(l,l.next),dl(o,t,r,i,n,a),void dl(l,t,r,i,n,a)}s=s.next}o=o.next}while(o!==e)}function _l(e,t){return e.x-t.x}function vl(e,t){if(t=function(e,t){var r,i=t,n=e.x,a=e.y,o=-1/0;do{if(a<=i.y&&a>=i.next.y&&i.next.y!==i.y){var s=i.x+(a-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=n&&s>o){if(o=s,s===n){if(a===i.y)return i;if(a===i.next.y)return i.next}r=i.x=i.x&&i.x>=u&&n!==i.x&&bl(ar.x)&&Al(i,e)&&(r=i,d=l),i=i.next;return r}(e,t),t){var r=El(t,e);cl(r,r.next)}}function yl(e,t,r,i,n){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-r)/n)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)/n)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function xl(e){var t=e,r=e;do{t.x=0&&(e-o)*(i-s)-(r-o)*(t-s)>=0&&(r-o)*(a-s)-(n-o)*(i-s)>=0}function Tl(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&Ml(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}(e,t)&&Al(e,t)&&Al(t,e)&&function(e,t){var r=e,i=!1,n=(e.x+t.x)/2,a=(e.y+t.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&n<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next}while(r!==e);return i}(e,t)}function wl(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function Sl(e,t){return e.x===t.x&&e.y===t.y}function Ml(e,t,r,i){return!!(Sl(e,t)&&Sl(r,i)||Sl(e,i)&&Sl(r,t))||wl(e,t,r)>0!=wl(e,t,i)>0&&wl(r,i,e)>0!=wl(r,i,t)>0}function Al(e,t){return wl(e.prev,e,e.next)<0?wl(e,t,e.next)>=0&&wl(e,e.prev,t)>=0:wl(e,t,e.prev)<0||wl(e,e.next,t)<0}function El(e,t){var r=new Ll(e.i,e.x,e.y),i=new Ll(t.i,t.x,t.y),n=e.next,a=t.prev;return e.next=t,t.prev=e,r.next=n,n.prev=r,i.next=r,r.prev=i,a.next=i,i.prev=a,i}function Dl(e,t,r,i){var n=new Ll(e,t,r);return i?(n.next=i.next,n.prev=i,i.next.prev=n,i.next=n):(n.prev=n,n.next=n),n}function Cl(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Ll(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Pl(e,t,r,i){for(var n=0,a=t,o=r-i;ah&&s.push({pivot:Math.floor((l+h)/2),left:h,right:l}),h=a[o].pivot+1,(l=a[o].right)>h&&s.push({pivot:Math.floor((l+h)/2),left:h,right:l})}a=this._parts=s}else for(o=0;o=2e4},doSortTriangles:function(e,t){var r=this.indices;if(0===t){var i=this.attributes.position;e=e.array,this._triangleZList&&this._triangleZList.length===this.triangleCount||(this._triangleZList=new Float32Array(this.triangleCount),this._sortedTriangleIndices=new Uint32Array(this.triangleCount),this._indicesTmp=new r.constructor(r.length),this._triangleZListTmp=new Float32Array(this.triangleCount));for(var n,a=0,o=0;o0,r={},i=0;i65535?new Uint32Array(3*o):new Uint16Array(3*o),d.material.shader!==t&&d.material.attachShader(t,!0),Ka.setMaterialFromModel(t.__shading,d.material,e,r),s>0&&(this._linesMesh.geometry.resetOffset(),this._linesMesh.geometry.setVertexCount(s),this._linesMesh.geometry.setTriangleCount(l)),this._dataIndexOfVertex=new Uint32Array(a),this._vertexRangeOfDataIndex=new Uint32Array(2*(n-i))},_updateRegionMesh:function(e,t,r,i){for(var n=e.getData(),a=0,o=0,s=!1,l=this._polygonMesh,h=this._linesMesh,u=r;u0;T&&(b*=t.getDevicePixelRatio(),this._updateLinesGeometry(h.geometry,e,u,v,b,e.coordinateSystem.transform)),h.invisible=!T,h.material.set({color:g})}(l=this._polygonMesh).material.transparent=s,l.material.depthMask=!s,l.geometry.updateBoundingBox(),l.frontFace=this.extrudeY?Ka.Mesh.CCW:Ka.Mesh.CW,l.material.get("normalMap")&&l.geometry.generateTangents(),l.seriesIndex=e.seriesIndex,l.on("mousemove",this._onmousemove,this),l.on("mouseout",this._onmouseout,this)},_updateDebugWireframe:function(e){var t=e.getModel("debug.wireframe");if(t.get("show")){var r=Ka.parseColor(t.get("lineStyle.color")||"rgba(0,0,0,0.5)"),i=La(t.get("lineStyle.width"),1),n=this._polygonMesh;n.geometry.generateBarycentric(),n.material.define("both","WIREFRAME_TRIANGLE"),n.material.set("wireframeLineColor",r),n.material.set("wireframeLineWidth",i)}},_onmousemove:function(e){var t=this._dataIndexOfVertex[e.triangle[0]];null==t&&(t=-1),t!==this._lastHoverDataIndex&&(this.downplay(this._lastHoverDataIndex),this.highlight(t),this._labelsBuilder.updateLabels([t])),this._lastHoverDataIndex=t,this._polygonMesh.dataIndex=t},_onmouseout:function(e){e.target&&(this.downplay(this._lastHoverDataIndex),this._lastHoverDataIndex=-1,this._polygonMesh.dataIndex=-1),this._labelsBuilder.updateLabels([])},_updateGroundPlane:function(e,t,r){var i=e.getModel("groundPlane",e);if(this._groundMesh.invisible=!i.get("show",!0),!this._groundMesh.invisible){var n=e.get("shading"),a=this._groundMaterials[n];a||(a=this._groundMaterials.lambert),Ka.setMaterialFromModel(n,a,i,r),a.get("normalMap")&&this._groundMesh.geometry.generateTangents(),this._groundMesh.material=a,this._groundMesh.material.set("color",Ka.parseColor(i.get("color"))),this._groundMesh.scale.set(t.size[0],t.size[2],1)}},_triangulation:function(e,t,r){this._triangulationResults=[];for(var i=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0],a=e.coordinateSystem,o=t;o1?i:0,L[U][g]=A.points[V+2],l.set(n+U,L[U]),s?(R[0]=(A.points[V]*_[0]-v[0])/x,R[1]=(A.points[V+2]*_[g]-v[g])/x):(R[0]=(H?I:I+G)/x,R[1]=(L[U][m]*_[m]-v[m])/x),u.set(n+U,R)}for(Wl.sub(P,L[1],L[0]),Wl.sub(O,L[3],L[0]),Wl.cross(N,P,O),Wl.normalize(N,N),U=0;U<4;U++)h.set(n+U,N),f&&c.set(n+U,o);for(U=0;U<6;U++)p[3*a+U]=C[U]+n;n+=4,a+=2,I+=G}}return t.dirty(),{vertexOffset:n,triangleOffset:a}},_getRegionLinesInfo:function(e,t,r){var i=0,n=0;return t.getRegionModel(e).getModel("itemStyle").get("borderWidth")>0&&t.getRegionPolygonCoords(e).forEach(function(e){var t=e.exterior,a=e.interiors;i+=r.getPolylineVertexCount(t),n+=r.getPolylineTriangleCount(t);for(var o=0;othis._endIndex)){t-=this._startIndex;for(var i=this._vertexRangeOfDataIndex[2*t];i0},_displacementChanged:!0,_displacementScale:0,updateDisplacementHash:function(){var e=this.getDisplacementTexture(),t=this.getDisplacemenScale();this._displacementChanged=this._displacementTexture!==e||this._displacementScale!==t,this._displacementTexture=e,this._displacementScale=t},isDisplacementChanged:function(){return this._displacementChanged}});_(ih.prototype,co),_(ih.prototype,fo),_(ih.prototype,po),_(ih.prototype,ol);var nh=Math.PI,ah=Math.sin,oh=Math.cos,sh=Math.tan,lh=Math.asin,hh=Math.atan2,uh=nh/180,ch=23.4397*uh;function dh(e,t){return hh(ah(e)*oh(ch)-sh(t)*ah(ch),oh(e))}function fh(e,t,r){return hh(ah(e),oh(e)*ah(t)-sh(r)*oh(t))}function ph(e,t,r){return lh(ah(t)*ah(r)+oh(t)*oh(r)*oh(e))}function mh(e){var t,r,i=function(e){return uh*(357.5291+.98560028*e)}(e),n=function(e){return e+uh*(1.9148*ah(e)+.02*ah(2*e)+3e-4*ah(3*e))+102.9372*uh+nh}(i);return{dec:(t=n,r=0,lh(ah(r)*oh(ch)+oh(r)*ah(ch)*ah(t))),ra:dh(n,0)}}var gh={getPosition:function(e,t,r){var i=uh*-r,n=uh*t,a=function(e){return function(e){return e.valueOf()/864e5-.5+2440588}(e)-2451545}(e),o=mh(a),s=function(e,t){return uh*(280.16+360.9856235*e)-t}(a,i)-o.ra;return{azimuth:fh(s,n,o.dec),altitude:ph(s,n,o.dec)}}};Ka.Shader.import(Xa),Ka.Shader.import("@export ecgl.atmosphere.vertex\nattribute vec3 position: POSITION;\nattribute vec3 normal : NORMAL;\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform mat4 normalMatrix : WORLDINVERSETRANSPOSE;\n\nvarying vec3 v_Normal;\n\nvoid main() {\n v_Normal = normalize((normalMatrix * vec4(normal, 0.0)).xyz);\n gl_Position = worldViewProjection * vec4(position, 1.0);\n}\n@end\n\n\n@export ecgl.atmosphere.fragment\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform float glowPower;\nuniform vec3 glowColor;\n\nvarying vec3 v_Normal;\n\nvoid main() {\n float intensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor = vec4(glowColor, intensity * intensity);\n}\n@end");const _h=S.extend({type:"globe",__ecgl__:!0,_displacementScale:0,init:function(e,t){this.groupGL=new Ka.Node,this._sphereGeometry=new Ka.SphereGeometry({widthSegments:200,heightSegments:100,dynamic:!0}),this._overlayGeometry=new Ka.SphereGeometry({widthSegments:80,heightSegments:40}),this._planeGeometry=new Ka.PlaneGeometry,this._earthMesh=new Ka.Mesh({renderNormal:!0}),this._atmosphereMesh=new Ka.Mesh,this._atmosphereGeometry=new Ka.SphereGeometry({widthSegments:80,heightSegments:40}),this._atmosphereMaterial=new Ka.Material({shader:new Ka.Shader(Ka.Shader.source("ecgl.atmosphere.vertex"),Ka.Shader.source("ecgl.atmosphere.fragment")),transparent:!0}),this._atmosphereMesh.geometry=this._atmosphereGeometry,this._atmosphereMesh.material=this._atmosphereMaterial,this._atmosphereMesh.frontFace=Ka.Mesh.CW,this._lightRoot=new Ka.Node,this._sceneHelper=new Eo,this._sceneHelper.initLight(this._lightRoot),this.groupGL.add(this._atmosphereMesh),this.groupGL.add(this._earthMesh),this._control=new yo({zr:t.getZr()}),this._control.init(),this._layerMeshes={}},render:function(e,t,r){var i=e.coordinateSystem,n=e.get("shading");i.viewGL.add(this._lightRoot),e.get("show")?i.viewGL.add(this.groupGL):i.viewGL.remove(this.groupGL),this._sceneHelper.setScene(i.viewGL.scene),i.viewGL.setPostEffect(e.getModel("postEffect"),r),i.viewGL.setTemporalSuperSampling(e.getModel("temporalSuperSampling"));var a=this._earthMesh;a.geometry=this._sphereGeometry;var o="ecgl."+n;a.material&&a.material.shader.name===o||(a.material=Ka.createMaterial(o)),Ka.setMaterialFromModel(n,a.material,e,r),["roughnessMap","metalnessMap","detailMap","normalMap"].forEach(function(e){var t=a.material.get(e);t&&(t.flipY=!1)}),a.material.set("color",Ka.parseColor(e.get("baseColor")));var s=.99*i.radius;if(a.scale.set(s,s,s),e.get("atmosphere.show")){a.material.define("both","ATMOSPHERE_ENABLED"),this._atmosphereMesh.invisible=!1,this._atmosphereMaterial.setUniforms({glowPower:e.get("atmosphere.glowPower")||6,glowColor:e.get("atmosphere.color")||"#ffffff"}),a.material.setUniforms({glowPower:e.get("atmosphere.innerGlowPower")||2,glowColor:e.get("atmosphere.color")||"#ffffff"});var l=e.get("atmosphere.offset")||5;this._atmosphereMesh.scale.set(s+l,s+l,s+l)}else a.material.undefine("both","ATMOSPHERE_ENABLED"),this._atmosphereMesh.invisible=!0;var h=a.material.setTextureImage("diffuseMap",e.get("baseTexture"),r,{flipY:!1,anisotropic:8});h&&h.surface&&h.surface.attachToMesh(a);var u=a.material.setTextureImage("bumpMap",e.get("heightTexture"),r,{flipY:!1,anisotropic:8});u&&u.surface&&u.surface.attachToMesh(a),a.material[e.get("postEffect.enable")?"define":"undefine"]("fragment","SRGB_DECODE"),this._updateLight(e,r),this._displaceVertices(e,r),this._updateViewControl(e,r),this._updateLayers(e,r)},afterRender:function(e,t,r,i){var n=i.renderer;this._sceneHelper.updateAmbientCubemap(n,e,r),this._sceneHelper.updateSkybox(n,e,r)},_updateLayers:function(e,t){var r=e.coordinateSystem,i=e.get("layers"),n=r.radius,a=[],o=[],s=[],l=[];u(i,function(e){var i=new b(e),h=i.get("type"),u=Ka.loadTexture(i.get("texture"),t,{flipY:!1,anisotropic:8});if(u.surface&&u.surface.attachToMesh(this._earthMesh),"blend"===h){var c=i.get("blendTo"),d=La(i.get("intensity"),1);"emission"===c?(s.push(u),l.push(d)):(a.push(u),o.push(d))}else{var f=i.get("id"),p=this._layerMeshes[f];p||(p=this._layerMeshes[f]=new Ka.Mesh({geometry:this._overlayGeometry,castShadow:!1,ignorePicking:!0})),"lambert"===i.get("shading")?(p.material=p.__lambertMaterial||new Ka.Material({autoUpdateTextureStatus:!1,shader:Ka.createShader("ecgl.lambert"),transparent:!0,depthMask:!1}),p.__lambertMaterial=p.material):(p.material=p.__colorMaterial||new Ka.Material({autoUpdateTextureStatus:!1,shader:Ka.createShader("ecgl.color"),transparent:!0,depthMask:!1}),p.__colorMaterial=p.material),p.material.enableTexture("diffuseMap");var m=i.get("distance"),g=n+(null==m?r.radius/100:m);p.scale.set(g,g,g),n=g;var _=this._blankTexture||(this._blankTexture=Ka.createBlankTexture("rgba(255, 255, 255, 0)"));p.material.set("diffuseMap",_),Ka.loadTexture(i.get("texture"),t,{flipY:!1,anisotropic:8},function(e){e.surface&&e.surface.attachToMesh(p),p.material.set("diffuseMap",e),t.getZr().refresh()}),i.get("show")?this.groupGL.add(p):this.groupGL.remove(p)}},this);var h=this._earthMesh.material;h.define("fragment","LAYER_DIFFUSEMAP_COUNT",a.length),h.define("fragment","LAYER_EMISSIVEMAP_COUNT",s.length),h.set("layerDiffuseMap",a),h.set("layerDiffuseIntensity",o),h.set("layerEmissiveMap",s),h.set("layerEmissionIntensity",l);var c=e.getModel("debug.wireframe");if(c.get("show")){h.define("both","WIREFRAME_TRIANGLE");var d=Ka.parseColor(c.get("lineStyle.color")||"rgba(0,0,0,0.5)"),f=La(c.get("lineStyle.width"),1);h.set("wireframeLineWidth",f),h.set("wireframeLineColor",d)}else h.undefine("both","WIREFRAME_TRIANGLE")},_updateViewControl:function(e,t){var r=e.coordinateSystem,i=e.getModel("viewControl");r.viewGL.camera;var n=this,a=this._control;a.setViewGL(r.viewGL);var o,s,l=i.get("targetCoord");null!=l&&(s=l[0]+90,o=l[1]),a.setFromViewControlModel(i,{baseDistance:r.radius,alpha:o,beta:s}),a.off("update"),a.on("update",function(){t.dispatchAction({type:"globeChangeCamera",alpha:a.getAlpha(),beta:a.getBeta(),distance:a.getDistance()-r.radius,center:a.getCenter(),from:n.uid,globeId:e.id})})},_displaceVertices:function(e,t){var r=e.get("displacementQuality"),i=e.get("debug.wireframe.show"),n=e.coordinateSystem;if(e.isDisplacementChanged()||r!==this._displacementQuality||i!==this._showDebugWireframe){this._displacementQuality=r,this._showDebugWireframe=i;var a=this._sphereGeometry,o={low:100,medium:200,high:400,ultra:800}[r]||200,s=o/2;(a.widthSegments!==o||i)&&(a.widthSegments=o,a.heightSegments=s,a.build()),this._doDisplaceVertices(a,n),i&&a.generateBarycentric()}},_doDisplaceVertices:function(e,t){var r=e.attributes.position.value,i=e.attributes.texcoord0.value,n=e.__originalPosition;n&&n.length===r.length||((n=new Float32Array(r.length)).set(r),e.__originalPosition=n);for(var a=t.displacementWidth,o=t.displacementHeight,s=t.displacementData,l=0;l50&&(a=1e3);var o=[];Lh.perspective(o,Oh,this.width/this.height,1,a),this.viewGL.camera.projectionMatrix.setArray(o),this.viewGL.camera.decomposeProjectionMatrix(),o=Lh.identity([]);var s=this.dataToPoint(this.center);Lh.scale(o,o,[1,-1,1]),Lh.translate(o,o,[0,0,-e]),Lh.rotateX(o,o,t),Lh.rotateZ(o,o,-this.bearing/180*Math.PI),Lh.translate(o,o,[-s[0]*this.getScale()*Rh,-s[1]*this.getScale()*Rh,0]),this.viewGL.camera.viewMatrix.array=o;var l=[];Lh.invert(l,o),this.viewGL.camera.worldTransform.array=l,this.viewGL.camera.decomposeWorldTransform();var h,u=Ph*this.getScale();if(this.altitudeExtent&&!isNaN(this.boxHeight)){var c=this.altitudeExtent[1]-this.altitudeExtent[0];h=this.boxHeight/c*this.getScale()/Math.pow(2,this._initialZoom-this.zoomOffset)}else h=u/(2*Math.PI*6378e3*Math.abs(Math.cos(this.center[1]*(Math.PI/180))))*this.altitudeScale*Rh;this.viewGL.rootNode.scale.set(this.getScale()*Rh,this.getScale()*Rh,h)}},getScale:function(){return Math.pow(2,this.zoom-this.zoomOffset)},projectOnTile:function(e,t){return this.projectOnTileWithScale(e,this.getScale()*Ph,t)},projectOnTileWithScale:function(e,t,r){var i=e[0],n=e[1]*Nh/180,a=t*(i*Nh/180+Nh)/(2*Nh),o=t*(Nh-Math.log(Math.tan(Nh/4+.5*n)))/(2*Nh);return(r=r||[])[0]=a,r[1]=o,r},unprojectFromTile:function(e,t){return this.unprojectOnTileWithScale(e,this.getScale()*Ph,t)},unprojectOnTileWithScale:function(e,t,r){var i=e[0],n=e[1],a=i/t*(2*Nh)-Nh,o=2*(Math.atan(Math.exp(Nh-n/t*(2*Nh)))-Nh/4);return(r=r||[])[0]=180*a/Nh,r[1]=180*o/Nh,r},dataToPoint:function(e,t){return(t=this.projectOnTileWithScale(e,Ph,t))[0]-=this._origin[0],t[1]-=this._origin[1],t[2]=isNaN(e[2])?0:e[2],isNaN(e[2])||(t[2]=e[2],this.altitudeExtent&&(t[2]-=this.altitudeExtent[0])),t}},Bh.prototype=new Ih,Bh.prototype.constructor=Bh,Bh.prototype.type="mapbox3D";var Fh=zh("mapbox3D",Bh,function(e){e.forEach(function(e){e.setCameraOption(e.model.getMapboxCameraOption())})});I(function(e){e.registerComponentModel(Mh),e.registerComponentView(Ch),e.registerCoordinateSystem("mapbox3D",Fh),e.registerAction({type:"mapbox3DChangeCamera",event:"mapbox3dcamerachanged",update:"mapbox3D:updateCamera"},function(e,t){t.eachComponent({mainType:"mapbox3D",query:e},function(t){t.setMapboxCameraOption(e)})})});var Gh=["zoom","center","pitch","bearing"],Uh=g.extend({type:"maptalks3D",layoutMode:"box",coordinateSystem:null,defaultOption:{zlevel:-10,urlTemplate:"http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",attribution:'©
OpenStreetMap contributors, © CARTO',center:[0,0],zoom:0,pitch:0,bearing:0,light:{main:{alpha:20,beta:30}},altitudeScale:1,boxHeight:"auto"},getMaptalksCameraOption:function(){var e=this;return Gh.reduce(function(t,r){return t[r]=e.get(r),t},{})},setMaptalksCameraOption:function(e){null!=e&&Gh.forEach(function(t){null!=e[t]&&(this.option[t]=e[t])},this)},getMaptalks:function(){return this._maptalks},setMaptalks:function(e){this._maptalks=e}});function Hh(e,t,r,i){if(this.id=e,this.zr=t,this.dom=document.createElement("div"),this.dom.style.cssText="position:absolute;left:0;right:0;top:0;bottom:0;",!maptalks)throw new Error("Maptalks library must be included. See https://maptalks.org");this._maptalks=new maptalks.Map(this.dom,{center:r,zoom:i,doubleClickZoom:!1,fog:!1}),this._initEvents()}_(Uh.prototype,fo),_(Uh.prototype,po),Hh.prototype.setUnpainted=function(){},Hh.prototype.resize=function(){this._maptalks.checkSize()},Hh.prototype.getMaptalks=function(){return this._maptalks},Hh.prototype.clear=function(){},Hh.prototype.refresh=function(){this._maptalks.checkSize()};var Vh=["mousedown","mouseup","click","dblclick","mousemove","mousewheel","DOMMouseScroll","touchstart","touchend","touchmove","touchcancel"];Hh.prototype._initEvents=function(){var e=this.dom;this._handlers=this._handlers||{contextmenu:function(e){return e.preventDefault(),!1}},Vh.forEach(function(t){this._handlers[t]=function(r){var i={};for(var n in r)i[n]=r[n];i.bubbles=!1;var a=new r.constructor(r.type,i);"mousewheel"===t||"DOMMouseScroll"===t?e.dispatchEvent(a):e.firstElementChild.dispatchEvent(a)},this.zr.dom.addEventListener(t,this._handlers[t])},this),this.zr.dom.addEventListener("contextmenu",this._handlers.contextmenu)},Hh.prototype.dispose=function(){Vh.forEach(function(e){this.zr.dom.removeEventListener(e,this._handlers[e])},this),this._maptalks.remove()},Ka.Shader.import(Dh);const kh=S.extend({type:"maptalks3D",__ecgl__:!0,init:function(e,t){this._groundMesh=new Ka.Mesh({geometry:new Ka.PlaneGeometry,material:new Ka.Material({shader:new Ka.Shader({vertex:Ka.Shader.source("ecgl.displayShadow.vertex"),fragment:Ka.Shader.source("ecgl.displayShadow.fragment")}),depthMask:!1}),renderOrder:-100,culling:!1,castShadow:!1,$ignorePicking:!0,renderNormal:!0})},_initMaptalksLayer:function(e,t){var r=t.getZr();this._zrLayer=new Hh("maptalks3D",r,e.get("center"),e.get("zoom")),r.painter.insertLayer(-1e3,this._zrLayer),this._lightRoot=new Ka.Node,this._sceneHelper=new Eo(this._lightRoot),this._sceneHelper.initLight(this._lightRoot);var i=this._zrLayer.getMaptalks(),n=this._dispatchInteractAction.bind(this,t,i);["zoomend","zooming","zoomstart","dragrotating","pitch","pitchend","movestart","moving","moveend","resize","touchstart","touchmove","touchend","animating"].forEach(function(e){i.on(e,n)})},render:function(e,t,r){this._zrLayer||this._initMaptalksLayer(e,r);var i=this._zrLayer.getMaptalks(),n=e.get("urlTemplate"),a=i.getBaseLayer();n!==this._oldUrlTemplate&&(a?a.setOptions({urlTemplate:n,attribution:e.get("attribution")}):(a=new maptalks.TileLayer("maptalks-echarts-gl-baselayer",{urlTemplate:n,subdomains:["a","b","c"],attribution:e.get("attribution")}),i.setBaseLayer(a))),this._oldUrlTemplate=n,i.setCenter(e.get("center")),i.setZoom(e.get("zoom"),{animation:!1}),i.setPitch(e.get("pitch")),i.setBearing(e.get("bearing")),e.setMaptalks(i);var o=e.coordinateSystem;o.viewGL.scene.add(this._lightRoot),o.viewGL.add(this._groundMesh),this._updateGroundMesh(),this._sceneHelper.setScene(o.viewGL.scene),this._sceneHelper.updateLight(e),o.viewGL.setPostEffect(e.getModel("postEffect"),r),o.viewGL.setTemporalSuperSampling(e.getModel("temporalSuperSampling")),this._maptalks3DModel=e},afterRender:function(e,t,r,i){var n=i.renderer;this._sceneHelper.updateAmbientCubemap(n,e,r),this._sceneHelper.updateSkybox(n,e,r),e.coordinateSystem.viewGL.scene.traverse(function(e){e.material&&(e.material.define("fragment","NORMAL_UP_AXIS",2),e.material.define("fragment","NORMAL_FRONT_AXIS",1))})},updateCamera:function(e,t,r,i){e.coordinateSystem.setCameraOption(i),this._updateGroundMesh(),r.getZr().refresh()},_dispatchInteractAction:function(e,t,r){var i;e.dispatchAction({type:"maptalks3DChangeCamera",pitch:t.getPitch(),zoom:(i=t.getResolution(),19-Math.log(i/Wh)/Math.LN2+1),center:t.getCenter().toArray(),bearing:t.getBearing(),maptalks3DId:this._maptalks3DModel&&this._maptalks3DModel.id})},_updateGroundMesh:function(){if(this._maptalks3DModel){var e=this._maptalks3DModel.coordinateSystem,t=e.dataToPoint(e.center);this._groundMesh.position.set(t[0],t[1],-.001);var r=new Ka.Plane(new Ka.Vector3(0,0,1),0),i=e.viewGL.camera.castRay(new Ka.Vector2(-1,-1)),n=e.viewGL.camera.castRay(new Ka.Vector2(1,1)),a=i.intersectPlane(r),o=n.intersectPlane(r),s=a.dist(o)/e.viewGL.rootNode.scale.x;this._groundMesh.scale.set(s,s,1)}},dispose:function(e,t){this._zrLayer&&this._zrLayer.dispose(),t.getZr().painter.delLayer(-1e3)}}),Wh=12756274*Math.PI/(256*Math.pow(2,20));function jh(){Ih.apply(this,arguments),this.maxPitch=85,this.zoomOffset=1}jh.prototype=new Ih,jh.prototype.constructor=jh,jh.prototype.type="maptalks3D";var Xh=zh("maptalks3D",jh,function(e){e.forEach(function(e){e.setCameraOption(e.model.getMaptalksCameraOption())})});I(function(e){e.registerComponentModel(Uh),e.registerComponentView(kh),e.registerCoordinateSystem("maptalks3D",Xh),e.registerAction({type:"maptalks3DChangeCamera",event:"maptalks3dcamerachanged",update:"maptalks3D:updateCamera"},function(e,t){t.eachComponent({mainType:"maptalks3D",query:e},function(t){t.setMaptalksCameraOption(e)})})});var qh=bo.vec3,Zh=X.isDimensionStacked;function Yh(e,t,r){for(var i=e.getDataExtent(t),n=e.getDataExtent(r),a=i[1]-i[0]||i[0],o=n[1]-n[0]||n[0],s=new Uint8Array(2500),l=0;l0&&d>0||c<0&&d<0)),m=["x","y","z"].map(function(t){return e.coordDimToDataDim(t)[0]}),g=Zh(r,m[2]),_=g?r.getCalculationInfo("stackResultDimension"):m[2];r.each(m,function(e,i,a,o){var s=r.get(_,o),l=g?s-a:p?0:f[0],h=t.dataToPoint([e,i,l]),u=t.dataToPoint([e,i,s]),c=qh.dist(h,u),d=[0,u[1]"+r.join("
")}(a):Z(Y(a)),s=n.getName(t),l=Hl(n,t);K(l)&&l.colorStops&&(l=(l.colorStops[0]||{}).color);var h=Q(l=l||"transparent"),c=e.name;return"\0-"===c&&(c=""),(c=c?Z(c)+"
":"")+h+(s?Z(s)+": "+o:o)}function ru(e,t,r){r=r||e.getSource();var i=t||$(e.get("coordinateSystem"))||["x","y","z"],n=z(r,{dimensionsDefine:r.dimensionsDefine||e.get("dimensions"),encodeDefine:r.encodeDefine||e.get("encode"),coordDimensions:i.map(function(t){var r=e.getReferringComponents(t+"Axis3D").models[0];return{type:r&&"category"===r.get("type")?"ordinal":"float",name:t}})});"cartesian3D"===e.get("coordinateSystem")&&n.forEach(function(t){if(i.indexOf(t.coordDim)>=0){var r=e.getReferringComponents(t.coordDim+"Axis3D").models[0];r&&"category"===r.get("type")&&(t.ordinalMeta=r.getOrdinalMeta())}});var a=X.enableDataStack(e,n,{byIndex:!0,stackedCoordDimension:"z"}),o=new F(n,e);return o.setCalculationInfo(a),o.initData(r),o}eu.getFormattedLabel=function(e,t,r,i,n){r=r||"normal";var a=e.getData(i).getItemModel(t),o=e.getDataParams(t,i);null!=n&&o.value instanceof Array&&(o.value=o.value[n]);var s,l=a.get("normal"===r?["label","formatter"]:["emphasis","label","formatter"]);return null==l&&(l=a.get(["label","formatter"])),"function"==typeof l?(o.status=r,s=l(o)):"string"==typeof l&&(s=q(l,o)),s},eu.normalizeToArray=function(e){return e instanceof Array?e:null==e?[]:[e]};var iu=ee.extend({type:"series.bar3D",dependencies:["globe"],visualStyleAccessPathvisu:"itemStyle",getInitialData:function(e,t){return ru(this)},getFormattedLabel:function(e,t,r,i){var n=eu.getFormattedLabel(this,e,t,r,i);return null==n&&(n=this.getData().get("z",e)),n},formatTooltip:function(e){return tu(this,e)},defaultOption:{coordinateSystem:"cartesian3D",globeIndex:0,grid3DIndex:0,zlevel:-10,bevelSize:0,bevelSmoothness:2,onGridPlane:"xy",shading:"color",minHeight:0,itemStyle:{opacity:1},label:{show:!1,distance:2,textStyle:{fontSize:14,color:"#000",backgroundColor:"rgba(255,255,255,0.7)",padding:3,borderRadius:3}},emphasis:{label:{show:!0}},animationDurationUpdate:500}});_(iu.prototype,ol);var nu,au,ou,su,lu,hu,uu,cu,du=bo.vec3,fu=bo.mat3,pu=tn.extend(function(){return{attributes:{position:new tn.Attribute("position","float",3,"POSITION"),normal:new tn.Attribute("normal","float",3,"NORMAL"),color:new tn.Attribute("color","float",4,"COLOR"),prevPosition:new tn.Attribute("prevPosition","float",3),prevNormal:new tn.Attribute("prevNormal","float",3)},dynamic:!0,enableNormal:!1,bevelSize:1,bevelSegments:0,_dataIndices:null,_vertexOffset:0,_triangleOffset:0}},{resetOffset:function(){this._vertexOffset=0,this._triangleOffset=0},setBarCount:function(e){var t=this.enableNormal,r=this.getBarVertexCount()*e,i=this.getBarTriangleCount()*e;this.vertexCount!==r&&(this.attributes.position.init(r),t?this.attributes.normal.init(r):this.attributes.normal.value=null,this.attributes.color.init(r)),this.triangleCount!==i&&(this.indices=r>65535?new Uint32Array(3*i):new Uint16Array(3*i),this._dataIndices=new Uint32Array(r))},getBarVertexCount:function(){var e=this.bevelSize>0?this.bevelSegments:0;return e>0?this._getBevelBarVertexCount(e):this.enableNormal?24:8},getBarTriangleCount:function(){var e=this.bevelSize>0?this.bevelSegments:0;return e>0?this._getBevelBarTriangleCount(e):12},_getBevelBarVertexCount:function(e){return 4*(e+1)*(e+1)*2},_getBevelBarTriangleCount:function(e){return(4*e+3+1)*(2*e+1)*2+4},setColor:function(e,t){for(var r=this.getBarVertexCount(),i=r*(e+1),n=r*e;n0&&this.bevelSegments>0)this._addBevelBar(e,c,m,g,this.bevelSize,this.bevelSegments,_);else{du.copy(n,c),du.normalize(n,n),du.cross(a,m,n),du.normalize(a,a),du.cross(i,n,a),du.normalize(a,a),du.negate(o,i),du.negate(s,n),du.negate(l,a),t(h[0],e,i,g[0]/2),t(h[0],h[0],a,g[2]/2),t(h[1],e,i,g[0]/2),t(h[1],h[1],l,g[2]/2),t(h[2],e,o,g[0]/2),t(h[2],h[2],l,g[2]/2),t(h[3],e,o,g[0]/2),t(h[3],h[3],a,g[2]/2),t(r,e,n,g[1]),t(h[4],r,i,g[0]/2),t(h[4],h[4],a,g[2]/2),t(h[5],r,i,g[0]/2),t(h[5],h[5],l,g[2]/2),t(h[6],r,o,g[0]/2),t(h[6],h[6],l,g[2]/2),t(h[7],r,o,g[0]/2),t(h[7],h[7],a,g[2]/2);var x=this.attributes;if(this.enableNormal){u[0]=i,u[1]=o,u[2]=n,u[3]=s,u[4]=a,u[5]=l;for(var b=this._vertexOffset,T=0;T0&&(f++,u[3]<.99&&(p=!0))}}),o.geometry.setBarCount(f);var m=r.getLayout("orient"),g=this._barIndexOfData=new Int32Array(r.count());f=0,r.each(function(e){if(r.hasValue(e)){var t=r.getItemLayout(e),i=t[0],n=t[1],o=t[2],s=4*e;u[0]=c[s++],u[1]=c[s++],u[2]=c[s++],u[3]=c[s++],u[3]>0&&(a._barMesh.geometry.addBar(i,n,m,o,u,e),g[e]=f++)}else g[e]=-1}),o.geometry.dirty(),o.geometry.updateBoundingBox();var _=o.material;_.transparent=p,_.depthMask=!p,o.geometry.sortTriangles=p,this._initHandler(e,t)},_initHandler:function(e,t){var r=e.getData(),i=this._barMesh,n="cartesian3D"===e.coordinateSystem.type;i.seriesIndex=e.seriesIndex;var a=-1;i.off("mousemove"),i.off("mouseout"),i.on("mousemove",function(e){var o=i.geometry.getDataIndexOfVertex(e.triangle[0]);o!==a&&(this._downplay(a),this._highlight(o),this._labelsBuilder.updateLabels([o]),n&&t.dispatchAction({type:"grid3DShowAxisPointer",value:[r.get("x",o),r.get("y",o),r.get("z",o,!0)]})),a=o,i.dataIndex=o},this),i.on("mouseout",function(e){this._downplay(a),this._labelsBuilder.updateLabels(),a=-1,i.dataIndex=-1,n&&t.dispatchAction({type:"grid3DHideAxisPointer"})},this)},_highlight:function(e){var t=this._data;if(t){var r=this._barIndexOfData[e];if(!(r<0)){var i=t.getItemModel(e).getModel("emphasis.itemStyle"),n=i.get("color"),a=i.get("opacity");if(null==n){var o=Hl(t,e);n=G(o,-.4)}null==a&&(a=Vl(t,e));var s=Ka.parseColor(n);s[3]*=a,this._barMesh.geometry.setColor(r,s),this._api.getZr().refresh()}}},_downplay:function(e){var t=this._data;if(t){var r=this._barIndexOfData[e];if(!(r<0)){var i=Hl(t,e),n=Vl(t,e),a=Ka.parseColor(i);a[3]*=n,this._barMesh.geometry.setColor(r,a),this._api.getZr().refresh()}}},highlight:function(e,t,r,i){this._toggleStatus("highlight",e,t,r,i)},downplay:function(e,t,r,i){this._toggleStatus("downplay",e,t,r,i)},_toggleStatus:function(e,t,r,i,n){var a=t.getData(),o=Pa(a,n),s=this;null!=o?u(eu.normalizeToArray(o),function(t){"highlight"===e?this._highlight(t):this._downplay(t)},this):a.each(function(t){"highlight"===e?s._highlight(t):s._downplay(t)})},remove:function(){this.groupGL.removeAll()},dispose:function(){this._labelsBuilder.dispose(),this.groupGL.removeAll()}});function _u(e){e.registerChartView(gu),e.registerSeriesModel(iu),$h(e),e.registerProcessor(function(e,t){e.eachSeriesByType("bar3d",function(e){var t=e.getData();t.filterSelf(function(e){return t.hasValue(e)})})})}I(_u);var vu=ee.extend({type:"series.line3D",dependencies:["grid3D"],visualStyleAccessPath:"lineStyle",visualDrawType:"stroke",getInitialData:function(e,t){return ru(this)},formatTooltip:function(e){return tu(this,e)},defaultOption:{coordinateSystem:"cartesian3D",zlevel:-10,grid3DIndex:0,lineStyle:{width:2},animationDurationUpdate:500}}),yu=bo.vec3;Ka.Shader.import(Uo);const xu=te.extend({type:"line3D",__ecgl__:!0,init:function(e,t){this.groupGL=new Ka.Node,this._api=t},render:function(e,t,r){var i=this._prevLine3DMesh;this._prevLine3DMesh=this._line3DMesh,this._line3DMesh=i,this._line3DMesh||(this._line3DMesh=new Ka.Mesh({geometry:new So({useNativeLine:!1,sortTriangles:!0}),material:new Ka.Material({shader:Ka.createShader("ecgl.meshLines3D")}),renderOrder:10}),this._line3DMesh.geometry.pick=this._pick.bind(this)),this.groupGL.remove(this._prevLine3DMesh),this.groupGL.add(this._line3DMesh);var n=e.coordinateSystem;if(n&&n.viewGL){n.viewGL.add(this.groupGL);var a=n.viewGL.isLinearSpace()?"define":"undefine";this._line3DMesh.material[a]("fragment","SRGB_DECODE")}this._doRender(e,r),this._data=e.getData(),this._camera=n.viewGL.camera,this.updateCamera(),this._updateAnimation(e)},updateCamera:function(){this._updateNDCPosition()},_doRender:function(e,t){var r=e.getData(),i=this._line3DMesh;i.geometry.resetOffset();var n=r.getLayout("points"),a=[],o=new Float32Array(n.length/3*4),s=0,l=!1;r.each(function(e){var t=Hl(r,e),i=Vl(r,e);null==i&&(i=1),Ka.parseColor(t,a),a[3]*=i,o[s++]=a[0],o[s++]=a[1],o[s++]=a[2],o[s++]=a[3],a[3]<.99&&(l=!0)}),i.geometry.setVertexCount(i.geometry.getPolylineVertexCount(n)),i.geometry.setTriangleCount(i.geometry.getPolylineTriangleCount(n)),i.geometry.addPolyline(n,o,La(e.get("lineStyle.width"),1)),i.geometry.dirty(),i.geometry.updateBoundingBox();var h=i.material;h.transparent=l,h.depthMask=!l;var u=e.getModel("debug.wireframe");u.get("show")?(i.geometry.createAttribute("barycentric","float",3),i.geometry.generateBarycentric(),i.material.set("both","WIREFRAME_TRIANGLE"),i.material.set("wireframeLineColor",Ka.parseColor(u.get("lineStyle.color")||"rgba(0,0,0,0.5)")),i.material.set("wireframeLineWidth",La(u.get("lineStyle.width"),1))):i.material.set("both","WIREFRAME_TRIANGLE"),this._points=n,this._initHandler(e,t)},_updateAnimation:function(e){Ka.updateVertexAnimation([["prevPosition","position"],["prevPositionPrev","positionPrev"],["prevPositionNext","positionNext"]],this._prevLine3DMesh,this._line3DMesh,e)},_initHandler:function(e,t){var r=e.getData(),i=e.coordinateSystem,n=this._line3DMesh,a=-1;n.seriesIndex=e.seriesIndex,n.off("mousemove"),n.off("mouseout"),n.on("mousemove",function(e){var o=i.pointToData(e.point.array),s=r.indicesOfNearest("x",o[0])[0];s!==a&&(t.dispatchAction({type:"grid3DShowAxisPointer",value:[r.get("x",s),r.get("y",s),r.get("z",s)]}),n.dataIndex=s),a=s},this),n.on("mouseout",function(e){a=-1,n.dataIndex=-1,t.dispatchAction({type:"grid3DHideAxisPointer"})},this)},_updateNDCPosition:function(){var e=new ui,t=this._camera;ui.multiply(e,t.projectionMatrix,t.viewMatrix);var r=this._positionNDC,i=this._points,n=i.length/3;r&&r.length/2===n||(r=this._positionNDC=new Float32Array(2*n));for(var a=[],o=0;o=0){var g=3*l,_=new Gr(this._points[g],this._points[g+1],this._points[g+2]);a.push({dataIndex:l,point:_,pointWorld:_.clone(),target:this._line3DMesh,distance:this._camera.getWorldPosition().dist(_)})}},remove:function(){this.groupGL.removeAll()},dispose:function(){this.groupGL.removeAll()}});I(function(e){e.registerChartView(xu),e.registerSeriesModel(vu),e.registerLayout(function(e,t){e.eachSeriesByType("line3D",function(e){var t=e.getData(),r=e.coordinateSystem;if(r){if("cartesian3D"!==r.type)return;var i=new Float32Array(3*t.count()),n=[],a=[],o=r.dimensions.map(function(t){return e.coordDimToDataDim(t)[0]});r&&t.each(o,function(e,t,o,s){n[0]=e,n[1]=t,n[2]=o,r.dataToPoint(n,a),i[3*s]=a[0],i[3*s+1]=a[1],i[3*s+2]=a[2]}),t.setLayout("points",i)}})})});const bu=ee.extend({type:"series.scatter3D",dependencies:["globe","grid3D","geo3D"],visualStyleAccessPath:"itemStyle",hasSymbolVisual:!0,getInitialData:function(e,t){return ru(this)},getFormattedLabel:function(e,t,r,i){var n=eu.getFormattedLabel(this,e,t,r,i);if(null==n){var a=this.getData(),o=a.dimensions[a.dimensions.length-1];n=a.get(o,e)}return n},formatTooltip:function(e){return tu(this,e)},defaultOption:{coordinateSystem:"cartesian3D",zlevel:-10,progressive:1e5,progressiveThreshold:1e5,grid3DIndex:0,globeIndex:0,symbol:"circle",symbolSize:10,blendMode:"source-over",label:{show:!1,position:"right",distance:5,textStyle:{fontSize:14,color:"#000",backgroundColor:"rgba(255,255,255,0.7)",padding:3,borderRadius:3}},itemStyle:{opacity:.8},emphasis:{label:{show:!0}},animationDurationUpdate:500}});function Tu(e,t,r){(t=t||document.createElement("canvas")).width=e,t.height=e;var i=t.getContext("2d");return r&&r(i),t}var wu={getMarginByStyle:function(e){var t=e.minMargin||0,r=0;e.stroke&&"none"!==e.stroke&&(r=null==e.lineWidth?1:e.lineWidth);var i=e.shadowBlur||0,n=e.shadowOffsetX||0,a=e.shadowOffsetY||0,o={};return o.left=Math.max(r/2,-n+i,t),o.right=Math.max(r/2,n+i,t),o.top=Math.max(r/2,-a+i,t),o.bottom=Math.max(r/2,a+i,t),o},createSymbolSprite:function(e,t,r,n){var a=function(e,t,r,n){i(t)||(t=[t,t]);var a=wu.getMarginByStyle(r,n),o=t[0]+a.left+a.right,s=t[1]+a.top+a.bottom,l=ie(e,0,0,t[0],t[1]),h=Math.max(o,s);l.x=a.left,l.y=a.top,o>s?l.y+=(h-s)/2:l.x+=(h-o)/2;var u=l.getBoundingRect();return l.x-=u.x,l.y-=u.y,l.setStyle(r),l.update(),l.__size=h,l}(e,t,r),o=wu.getMarginByStyle(r);return{image:Tu(a.__size,n,function(e){x(e,a)}),margin:o}},createSDFFromCanvas:function(e,t,r,i){return Tu(t,i,function(t){var i=e.getContext("2d").getImageData(0,0,e.width,e.height);t.putImageData(function(e,t,r){var i=t.width,n=t.height,a=e.canvas.width,o=e.canvas.height,s=i/a,l=n/o;function h(e){return e<128?1:-1}function u(e,a){var o=1/0;e=Math.floor(e*s);for(var u=(a=Math.floor(a*l))*i+e,c=h(t.data[4*u]),d=Math.max(a-r,0);d=2e4},doSortVertices:function(e,t){var r=this.indices,i=Su.create();if(!r){r=this.indices=this.vertexCount>65535?new Uint32Array(this.vertexCount):new Uint16Array(this.vertexCount);for(var n=0;n.05);else for(n=0;n<3;n++)this._progressiveQuickSort(3*t+n);this.dirtyIndices()},_simpleSort:function(e){var t=this._zList,r=this.indices;function i(e,r){return t[r]-t[e]}e?Array.prototype.sort.call(r,i):Il.sort(r,i,0,r.length-1)},_progressiveQuickSort:function(e){var t=this._zList,r=this.indices;this._quickSort=this._quickSort||new Il,this._quickSort.step(r,function(e,r){return t[r]-t[e]},e)}};var Au=bo.vec4;Ka.Shader.import("@export ecgl.sdfSprite.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform float elapsedTime : 0;\n\nattribute vec3 position : POSITION;\n\n#ifdef VERTEX_SIZE\nattribute float size;\n#else\nuniform float u_Size;\n#endif\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_FillColor: COLOR;\nvarying vec4 v_Color;\n#endif\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nattribute float prevSize;\nuniform float percent : 1.0;\n#endif\n\n\n#ifdef POSITIONTEXTURE_ENABLED\nuniform sampler2D positionTexture;\n#endif\n\nvarying float v_Size;\n\nvoid main()\n{\n\n#ifdef POSITIONTEXTURE_ENABLED\n gl_Position = worldViewProjection * vec4(texture2D(positionTexture, position.xy).xy, -10.0, 1.0);\n#else\n\n #ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n #else\n vec3 pos = position;\n #endif\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n#endif\n\n#ifdef VERTEX_SIZE\n#ifdef VERTEX_ANIMATION\n v_Size = mix(prevSize, size, percent);\n#else\n v_Size = size;\n#endif\n#else\n v_Size = u_Size;\n#endif\n\n#ifdef VERTEX_COLOR\n v_Color = a_FillColor;\n #endif\n\n gl_PointSize = v_Size;\n}\n\n@end\n\n@export ecgl.sdfSprite.fragment\n\nuniform vec4 color: [1, 1, 1, 1];\nuniform vec4 strokeColor: [1, 1, 1, 1];\nuniform float smoothing: 0.07;\n\nuniform float lineWidth: 0.0;\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\nvarying float v_Size;\n\nuniform sampler2D sprite;\n\n@import clay.util.srgb\n\nvoid main()\n{\n gl_FragColor = color;\n\n vec4 _strokeColor = strokeColor;\n\n#ifdef VERTEX_COLOR\n gl_FragColor *= v_Color;\n #endif\n\n#ifdef SPRITE_ENABLED\n float d = texture2D(sprite, gl_PointCoord).r;\n gl_FragColor.a *= smoothstep(0.5 - smoothing, 0.5 + smoothing, d);\n\n if (lineWidth > 0.0) {\n float sLineWidth = lineWidth / 2.0;\n\n float outlineMaxValue0 = 0.5 + sLineWidth;\n float outlineMaxValue1 = 0.5 + sLineWidth + smoothing;\n float outlineMinValue0 = 0.5 - sLineWidth - smoothing;\n float outlineMinValue1 = 0.5 - sLineWidth;\n\n if (d <= outlineMaxValue1 && d >= outlineMinValue0) {\n float a = _strokeColor.a;\n if (d <= outlineMinValue1) {\n a = a * smoothstep(outlineMinValue0, outlineMinValue1, d);\n }\n else {\n a = a * smoothstep(outlineMaxValue1, outlineMaxValue0, d);\n }\n gl_FragColor.rgb = mix(gl_FragColor.rgb * gl_FragColor.a, _strokeColor.rgb, a);\n gl_FragColor.a = gl_FragColor.a * (1.0 - a) + a;\n }\n }\n#endif\n\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(gl_FragColor);\n#endif\n}\n@end");var Eu=Ka.Mesh.extend(function(){var e=new Ka.Geometry({dynamic:!0,attributes:{color:new Ka.Geometry.Attribute("color","float",4,"COLOR"),position:new Ka.Geometry.Attribute("position","float",3,"POSITION"),size:new Ka.Geometry.Attribute("size","float",1),prevPosition:new Ka.Geometry.Attribute("prevPosition","float",3),prevSize:new Ka.Geometry.Attribute("prevSize","float",1)}});Object.assign(e,Mu);var t=new Ka.Material({shader:Ka.createShader("ecgl.sdfSprite"),transparent:!0,depthMask:!1});t.enableTexture("sprite"),t.define("both","VERTEX_COLOR"),t.define("both","VERTEX_SIZE");var r=new Ka.Texture2D({image:document.createElement("canvas"),flipY:!1});return t.set("sprite",r),e.pick=this._pick.bind(this),{geometry:e,material:t,mode:Ka.Mesh.POINTS,sizeScale:1}},{_pick:function(e,t,r,i,n,a){var o=this._positionNDC;if(o)for(var s=r.viewport,l=2/s.width,h=2/s.height,u=this.geometry.vertexCount-1;u>=0;u--){var c,d=o[2*(c=this.geometry.indices?this.geometry.indices[u]:u)],f=o[2*c+1],p=this.geometry.attributes.size.get(c)/this.sizeScale/2;if(e>d-p*l&&ef-p*h&&t2?(p=this._updateSymbolSprite(e,d,u,c),s.enableTexture("sprite")):s.disableTexture("sprite"),h.position.init(n-i);var m=[];if(f){s.undefine("VERTEX_SIZE"),s.undefine("VERTEX_COLOR");var g=function(e){const t=e.getVisual("style");if(t)return t[e.getVisual("drawType")]}(o),_=function(e){return e.getVisual("style").opacity}(o);Ka.parseColor(g,m),m[3]*=_,s.set({color:m,u_Size:u.maxSize*this._sizeScale})}else s.set({color:[1,1,1,1]}),s.define("VERTEX_SIZE"),s.define("VERTEX_COLOR"),h.size.init(n-i),h.color.init(n-i),this._originalOpacity=new Float32Array(n-i);for(var v=o.getLayout("points"),y=h.position.value,x=0;x1?(o[0]=r.maxSize,o[1]=r.maxSize/r.aspect):(o[1]=r.maxSize,o[0]=r.maxSize*r.aspect),o[0]=o[0]||1,o[1]=o[1]||1,this._symbolType===r.type&&(n=this._symbolSize,a=o,n&&a&&n[0]===a[0]&&n[1]===a[1])&&this._lineWidth===t.lineWidth||(wu.createSymbolSprite(r.type,o,{fill:"#fff",lineWidth:t.lineWidth,stroke:"transparent",shadowColor:"transparent",minMargin:Math.min(o[0]/2,10)},this._spriteImageCanvas),wu.createSDFFromCanvas(this._spriteImageCanvas,Math.min(this._spriteImageCanvas.width,32),20,this._mesh.material.get("sprite").image),this._symbolType=r.type,this._symbolSize=o,this._lineWidth=t.lineWidth),this._spriteImageCanvas.width/r.maxSize*i},_updateMaterial:function(e,t){var r="lighter"===e.get("blendMode")?Ka.additiveBlend:null,i=this._mesh.material;i.blend=r,i.set("lineWidth",t.lineWidth/20);var n=Ka.parseColor(t.stroke);i.set("strokeColor",n),i.transparent=!0,i.depthMask=!1,i.depthTest=!this.is2D,i.sortVertices=!this.is2D},_updateLabelBuilder:function(e,t,r){var i=e.getData(),n=this._mesh.geometry,a=n.attributes.position.value,o=(t=this._startDataIndex,this._mesh.sizeScale);this._labelsBuilder.updateData(i,t,r),this._labelsBuilder.getLabelPosition=function(e,r,i){var n=3*(e-t);return[a[n],a[n+1],a[n+2]]},this._labelsBuilder.getLabelDistance=function(e,r,i){return n.attributes.size.get(e-t)/o/2+i},this._labelsBuilder.updateLabels()},_updateAnimation:function(e){Ka.updateVertexAnimation([["prevPosition","position"],["prevSize","size"]],this._prevMesh,this._mesh,e)},_updateHandler:function(e,t,r){var i,n=e.getData(),a=this._mesh,o=this,s=-1,l=e.coordinateSystem&&"cartesian3D"===e.coordinateSystem.type;l&&(i=e.coordinateSystem.model),a.seriesIndex=e.seriesIndex,a.off("mousemove"),a.off("mouseout"),a.on("mousemove",function(t){var h=t.vertexIndex+o._startDataIndex;h!==s&&(this.highlightOnMouseover&&(this.downplay(n,s),this.highlight(n,h),this._labelsBuilder.updateLabels([h])),l&&r.dispatchAction({type:"grid3DShowAxisPointer",value:[n.get(e.coordDimToDataDim("x")[0],h),n.get(e.coordDimToDataDim("y")[0],h),n.get(e.coordDimToDataDim("z")[0],h)],grid3DIndex:i.componentIndex})),a.dataIndex=h,s=h},this),a.on("mouseout",function(e){var t=e.vertexIndex+o._startDataIndex;this.highlightOnMouseover&&(this.downplay(n,t),this._labelsBuilder.updateLabels()),s=-1,a.dataIndex=-1,l&&r.dispatchAction({type:"grid3DHideAxisPointer",grid3DIndex:i.componentIndex})},this)},updateLayout:function(e,t,r){var i=e.getData();if(this._mesh){var n=this._mesh.geometry.attributes.position.value,a=i.getLayout("points");if(this.is2D)for(var o=0;othis._endDataIndex||tthis._endDataIndex||t0?1:-1}Ka.Shader.import("@export ecgl.trail2.vertex\nattribute vec3 position: POSITION;\nattribute vec3 positionPrev;\nattribute vec3 positionNext;\nattribute float offset;\nattribute float dist;\nattribute float distAll;\nattribute float start;\n\nattribute vec4 a_Color : COLOR;\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform vec4 viewport : VIEWPORT;\nuniform float near : NEAR;\n\nuniform float speed : 0;\nuniform float trailLength: 0.3;\nuniform float time;\nuniform float period: 1000;\n\nuniform float spotSize: 1;\n\nvarying vec4 v_Color;\nvarying float v_Percent;\nvarying float v_SpotPercent;\n\n@import ecgl.common.wireframe.vertexHeader\n\n@import ecgl.lines3D.clipNear\n\nvoid main()\n{\n @import ecgl.lines3D.expandLine\n\n gl_Position = currProj;\n\n v_Color = a_Color;\n\n @import ecgl.common.wireframe.vertexMain\n\n#ifdef CONSTANT_SPEED\n float t = mod((speed * time + start) / distAll, 1. + trailLength) - trailLength;\n#else\n float t = mod((time + start) / period, 1. + trailLength) - trailLength;\n#endif\n\n float trailLen = distAll * trailLength;\n\n v_Percent = (dist - t * distAll) / trailLen;\n\n v_SpotPercent = spotSize / distAll;\n\n }\n@end\n\n\n@export ecgl.trail2.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nuniform float spotIntensity: 5;\n\nvarying vec4 v_Color;\nvarying float v_Percent;\nvarying float v_SpotPercent;\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.util.srgb\n\nvoid main()\n{\n if (v_Percent > 1.0 || v_Percent < 0.0) {\n discard;\n }\n\n float fade = v_Percent;\n\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(color * v_Color);\n#else\n gl_FragColor = color * v_Color;\n#endif\n\n @import ecgl.common.wireframe.fragmentMain\n\n if (v_Percent > (1.0 - v_SpotPercent)) {\n gl_FragColor.rgb *= spotIntensity;\n }\n\n gl_FragColor.a *= fade;\n}\n\n@end");const Qu=Ka.Mesh.extend(function(){var e=new Ka.Material({shader:new Ka.Shader(Ka.Shader.source("ecgl.trail2.vertex"),Ka.Shader.source("ecgl.trail2.fragment")),transparent:!0,depthMask:!1}),t=new So({dynamic:!0});return t.createAttribute("dist","float",1),t.createAttribute("distAll","float",1),t.createAttribute("start","float",1),{geometry:t,material:e,culling:!1,$ignorePicking:!0}},{updateData:function(e,t,r){var i=e.hostModel,n=this.geometry,a=i.getModel("effect"),o=a.get("trailWidth")*t.getDevicePixelRatio(),s=a.get("trailLength"),l=i.get("effect.constantSpeed"),h=1e3*i.get("effect.period"),u=null!=l;u?this.material.set("speed",l/1e3):this.material.set("period",h),this.material[u?"define":"undefine"]("vertex","CONSTANT_SPEED");var c=i.get("polyline");n.trailLength=s,this.material.set("trailLength",s),n.resetOffset(),["position","positionPrev","positionNext"].forEach(function(e){n.attributes[e].value=r.attributes[e].value}),["dist","distAll","start","offset","color"].forEach(function(e){n.attributes[e].init(n.vertexCount)}),n.indices=r.indices;var d=[],f=a.get("trailColor"),p=a.get("trailOpacity"),m=null!=f,g=null!=p;this.updateWorldTransform();var _=this.worldTransform.x.len(),v=this.worldTransform.y.len(),y=this.worldTransform.z.len(),x=0,b=0;e.each(function(t){var i=e.getItemLayout(t),a=g?p:Vl(e,t),s=Hl(e,t);null==a&&(a=1),(d=Ka.parseColor(m?f:s,d))[3]*=a;for(var l=c?r.getPolylineVertexCount(i):r.getCubicCurveVertexCount(i[0],i[1],i[2],i[3]),T=0,w=[],S=[],M=x;Mx&&(T+=Yu.dist(w,S)),n.attributes.dist.set(M,T),Yu.copy(S,w);b=Math.max(b,T);var A=Math.random()*(u?T:h);for(M=x;M0;this._updateSurfaceMesh(this._surfaceMesh,e,u,f);var p=this._surfaceMesh.material;f?(p.define("WIREFRAME_QUAD"),p.set("wireframeLineWidth",d),p.set("wireframeLineColor",Ka.parseColor(c.get("lineStyle.color")))):p.undefine("WIREFRAME_QUAD"),this._initHandler(e,r),this._updateAnimation(e)},_updateAnimation:function(e){Ka.updateVertexAnimation([["prevPosition","position"],["prevNormal","normal"]],this._prevSurfaceMesh,this._surfaceMesh,e)},_createSurfaceMesh:function(){var e=new Ka.Mesh({geometry:new Ka.Geometry({dynamic:!0,sortTriangles:!0}),shadowDepthMaterial:new Ka.Material({shader:new Ka.Shader(Ka.Shader.source("ecgl.sm.depth.vertex"),Ka.Shader.source("ecgl.sm.depth.fragment"))}),culling:!1,renderOrder:10,renderNormal:!0});return e.geometry.createAttribute("barycentric","float",4),e.geometry.createAttribute("prevPosition","float",3),e.geometry.createAttribute("prevNormal","float",3),Object.assign(e.geometry,Ul),e},_initHandler:function(e,t){var r=e.getData(),i=this._surfaceMesh,n=e.coordinateSystem;i.seriesIndex=e.seriesIndex;var a=-1;i.off("mousemove"),i.off("mouseout"),i.on("mousemove",function(e){var o=function(e,t){for(var r=1/0,n=-1,a=[],o=0;o=0){var s=[];i.geometry.attributes.position.get(o,s);for(var l=n.pointToData(s),h=1/0,u=-1,c=[],d=0;d65535?Uint32Array:Uint16Array)((p-1)*(m-1)*6),b=function(e,t,r){r[1]=e*m+t,r[0]=e*m+t+1,r[3]=(e+1)*m+t+1,r[2]=(e+1)*m+t},T=!1;if(l){var w=[],S=[],M=0;g?u.init(n.vertexCount):u.value=null;for(var A=[[],[],[]],E=[],D=[],C=nc.create(),L=function(e,t,r){var i=3*t;return r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],r},P=new Float32Array(o.length),O=new Float32Array(o.length/3*4),N=0;N0;){if(Math.floor(s/u)===s/u)return[u,s/u];u--}return[u=Math.floor(Math.sqrt(s)),u]},dispose:function(){this.groupGL.removeAll()},remove:function(){this.groupGL.removeAll()}});function sc(e,t){for(var r=[],i=0;i "+f)),u++)}var p=z(e,{coordDimensions:["value"]});(s=new F(p,r)).initData(e);var m=new F(["value"],r);return m.initData(h,l),n&&n(s,m),ue({mainData:s,struct:a,structAttr:"graph",datas:{node:s,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a}(i,r,this,!0,function(e,r){e.wrapMethod("getItemModel",function(e){const t=n._categoriesModels[e.getShallow("category")];return t&&(t.parentModel=e.parentModel,e.parentModel=t),e});const i=t.getModel([]).getModel;function a(e,t){const r=i.call(this,e,t);return r.resolveParentPath=o,r}function o(e){if(e&&("label"===e[0]||"label"===e[1])){const t=e.slice();return"label"===e[0]?t[0]="edgeLabel":"label"===e[1]&&(t[1]="edgeLabel"),t}return e}r.wrapMethod("getItemModel",function(e){return e.resolveParentPath=o,e.getModel=a,e})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(e,t,r){if("edge"===r){var i=this.getData(),n=this.getDataParams(e,r),a=i.graph.getEdgeByIndex(e),o=i.getName(a.node1.dataIndex),s=i.getName(a.node2.dataIndex),l=[];return null!=o&&l.push(o),null!=s&&l.push(s),l=Z(l.join(" > ")),n.value&&(l+=" : "+Z(n.value)),l}return fc.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var e=(this.option.categories||[]).map(function(e){return null!=e.value?e:Object.assign({value:0},e)}),t=new F(["value"],this);t.initData(e),this._categoriesData=t,this._categoriesModels=t.mapArray(function(e){return t.getItemModel(e,!0)})},setView:function(e){null!=e.zoom&&(this.option.zoom=e.zoom),null!=e.offset&&(this.option.offset=e.offset)},setNodePosition:function(e){for(var t=0;t65535?this.indices instanceof Uint16Array&&(this.indices=new Uint32Array(this.indices)):this.indices instanceof Uint32Array&&(this.indices=new Uint16Array(this.indices)))},setTriangleCount:function(e){this.triangleCount!==e&&(this.indices=0===e?null:this.vertexCount>65535?new Uint32Array(3*e):new Uint16Array(3*e))},_getCubicCurveApproxStep:function(e,t,r,i){return 1/(pc.dist(e,t)+pc.dist(r,t)+pc.dist(i,r)+1)*this.segmentScale},getCubicCurveVertexCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?2*a:2*a+2},getCubicCurveTriangleCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?0:2*a},getLineVertexCount:function(){return this.getPolylineVertexCount(mc)},getLineTriangleCount:function(){return this.getPolylineTriangleCount(mc)},getPolylineVertexCount:function(e){var t;return t="number"==typeof e?e:"number"!=typeof e[0]?e.length:e.length/2,this.useNativeLine?2*(t-1):2*(t-1)+2},getPolylineTriangleCount:function(e){var t;return t="number"==typeof e?e:"number"!=typeof e[0]?e.length:e.length/2,this.useNativeLine?0:2*(t-1)},addCubicCurve:function(e,t,r,i,n,a){null==a&&(a=1);var o=e[0],s=e[1],l=t[0],h=t[1],u=r[0],c=r[1],d=i[0],f=i[1],p=this._getCubicCurveApproxStep(e,t,r,i),m=p*p,g=m*p,_=3*p,v=3*m,y=6*m,x=6*g,b=o-2*l+u,T=s-2*h+c,w=3*(l-u)-o+d,S=3*(h-c)-s+f,M=o,A=s,E=(l-o)*_+b*v+w*g,D=(h-s)*_+T*v+S*g,C=b*y+w*x,L=T*y+S*x,P=w*x,O=S*x,N=0,R=0,I=Math.ceil(1/p),B=new Float32Array(3*(I+1)),z=(B=[],0);for(R=0;R1&&(M=E>0?Math.min(M,d):Math.max(M,d),A=D>0?Math.min(A,f):Math.max(A,f));this.addPolyline(B,n,a)},addLine:function(e,t,r,i){this.addPolyline([e,t],r,i)},addPolyline:function(){var e=pc.create(),t=pc.create(),r=pc.create(),i=pc.create(),n=[],a=[],o=[];return function(s,l,h,u,c){if(s.length){var d="number"!=typeof s[0];if(null==c&&(c=d?s.length:s.length/2),!(c<2)){null==u&&(u=0),null==h&&(h=1),this._itemVertexOffsets.push(this._vertexOffset);for(var f,p=d?"number"!=typeof l[0]:l.length/4===c,m=this.attributes.position,g=this.attributes.color,_=this.attributes.offset,v=this.attributes.normal,y=this.indices,x=this._vertexOffset,b=0;b1&&(m.copy(x,x-1),g.copy(x,x-1),x++);else{var S;if(b0){pc.sub(e,n,o),pc.sub(t,a,n),pc.normalize(e,e),pc.normalize(t,t),pc.add(i,e,t),pc.normalize(i,i);var M=h/2*Math.min(1/pc.dot(e,i),2);r[0]=-i[1],r[1]=i[0],S=M}else pc.sub(e,a,n),pc.normalize(e,e),r[0]=-e[1],r[1]=e[0],S=h/2;else pc.sub(e,n,o),pc.normalize(e,e),r[0]=-e[1],r[1]=e[0],S=h/2;v.set(x,r),v.set(x+1,r),_.set(x,S),_.set(x+1,-S),pc.copy(o,n),m.set(x,n),m.set(x+1,n),g.set(x,f),g.set(x+1,f),x+=2}if(this.useNativeLine)g.set(x,f),m.set(x,n),x++;else if(b>0){var A=3*this._faceOffset;(y=this.indices)[A]=x-4,y[A+1]=x-3,y[A+2]=x-2,y[A+3]=x-3,y[A+4]=x-1,y[A+5]=x-2,this._faceOffset+=2}}this._vertexOffset=x}}}}(),setItemColor:function(e,t){for(var r=this._itemVertexOffsets[e],i=e 0.0) {\n float factor = 0.0;\n if (preventOverlap) {\n float d = sqrt(d2);\n d = d - n0.w - n1.w;\n if (d > 0.0) {\n factor = scaling * n0.z * n1.z / (d * d);\n }\n else if (d < 0.0) {\n factor = scaling * 100.0 * n0.z * n1.z;\n }\n }\n else {\n factor = scaling * n0.z * n1.z / d2;\n }\n force += dir * factor;\n }\n }\n\n vec2 dir = gravityCenter - n0.xy;\n float d = 1.0;\n if (!strongGravityMode) {\n d = length(dir);\n }\n\n force += dir * n0.z * gravity / (d + 1.0);\n\n gl_FragColor = vec4(force, 0.0, 1.0);\n}\n@end\n\n@export ecgl.forceAtlas2.updateEdgeAttraction.vertex\n\nattribute vec2 node1;\nattribute vec2 node2;\nattribute float weight;\n\nuniform sampler2D positionTex;\nuniform float edgeWeightInfluence;\nuniform bool preventOverlap;\nuniform bool linLogMode;\n\nuniform vec2 windowSize: WINDOW_SIZE;\n\nvarying vec2 v_Force;\n\nvoid main() {\n\n vec4 n0 = texture2D(positionTex, node1);\n vec4 n1 = texture2D(positionTex, node2);\n\n vec2 dir = n1.xy - n0.xy;\n float d = length(dir);\n float w;\n if (edgeWeightInfluence == 0.0) {\n w = 1.0;\n }\n else if (edgeWeightInfluence == 1.0) {\n w = weight;\n }\n else {\n w = pow(weight, edgeWeightInfluence);\n }\n vec2 offset = vec2(1.0 / windowSize.x, 1.0 / windowSize.y);\n vec2 scale = vec2((windowSize.x - 1.0) / windowSize.x, (windowSize.y - 1.0) / windowSize.y);\n vec2 pos = node1 * scale * 2.0 - 1.0;\n gl_Position = vec4(pos + offset, 0.0, 1.0);\n gl_PointSize = 1.0;\n\n float factor;\n if (preventOverlap) {\n d = d - n1.w - n0.w;\n }\n if (d <= 0.0) {\n v_Force = vec2(0.0);\n return;\n }\n\n if (linLogMode) {\n factor = w * log(d) / d;\n }\n else {\n factor = w;\n }\n v_Force = dir * factor;\n}\n@end\n\n@export ecgl.forceAtlas2.updateEdgeAttraction.fragment\n\nvarying vec2 v_Force;\n\nvoid main() {\n gl_FragColor = vec4(v_Force, 0.0, 0.0);\n}\n@end\n\n@export ecgl.forceAtlas2.calcWeightedSum.vertex\n\nattribute vec2 node;\n\nvarying vec2 v_NodeUv;\n\nvoid main() {\n\n v_NodeUv = node;\n gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n gl_PointSize = 1.0;\n}\n@end\n\n@export ecgl.forceAtlas2.calcWeightedSum.fragment\n\nvarying vec2 v_NodeUv;\n\nuniform sampler2D positionTex;\nuniform sampler2D forceTex;\nuniform sampler2D forcePrevTex;\n\nvoid main() {\n vec2 force = texture2D(forceTex, v_NodeUv).rg;\n vec2 forcePrev = texture2D(forcePrevTex, v_NodeUv).rg;\n\n float mass = texture2D(positionTex, v_NodeUv).z;\n float swing = length(force - forcePrev) * mass;\n float traction = length(force + forcePrev) * 0.5 * mass;\n\n gl_FragColor = vec4(swing, traction, 0.0, 0.0);\n}\n@end\n\n@export ecgl.forceAtlas2.calcGlobalSpeed\n\nuniform sampler2D globalSpeedPrevTex;\nuniform sampler2D weightedSumTex;\nuniform float jitterTolerence;\n\nvoid main() {\n vec2 weightedSum = texture2D(weightedSumTex, vec2(0.5)).xy;\n float prevGlobalSpeed = texture2D(globalSpeedPrevTex, vec2(0.5)).x;\n float globalSpeed = jitterTolerence * jitterTolerence\n * weightedSum.y / weightedSum.x;\n if (prevGlobalSpeed > 0.0) {\n globalSpeed = min(globalSpeed / prevGlobalSpeed, 1.5) * prevGlobalSpeed;\n }\n gl_FragColor = vec4(globalSpeed, 0.0, 0.0, 1.0);\n}\n@end\n\n@export ecgl.forceAtlas2.updatePosition\n\nuniform sampler2D forceTex;\nuniform sampler2D forcePrevTex;\nuniform sampler2D positionTex;\nuniform sampler2D globalSpeedTex;\n\nvarying vec2 v_Texcoord;\n\nvoid main() {\n vec2 force = texture2D(forceTex, v_Texcoord).xy;\n vec2 forcePrev = texture2D(forcePrevTex, v_Texcoord).xy;\n vec4 node = texture2D(positionTex, v_Texcoord);\n\n float globalSpeed = texture2D(globalSpeedTex, vec2(0.5)).r;\n float swing = length(force - forcePrev);\n float speed = 0.1 * globalSpeed / (0.1 + globalSpeed * sqrt(swing));\n\n float df = length(force);\n if (df > 0.0) {\n speed = min(df * speed, 10.0) / df;\n\n gl_FragColor = vec4(node.xy + speed * force, node.zw);\n }\n else {\n gl_FragColor = node;\n }\n}\n@end\n\n@export ecgl.forceAtlas2.edges.vertex\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nattribute vec2 node;\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n\nuniform sampler2D positionTex;\n\nvoid main()\n{\n gl_Position = worldViewProjection * vec4(\n texture2D(positionTex, node).xy, -10.0, 1.0\n );\n v_Color = a_Color;\n}\n@end\n\n@export ecgl.forceAtlas2.edges.fragment\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nvarying vec4 v_Color;\nvoid main() {\n gl_FragColor = color * v_Color;\n}\n@end");var _c={repulsionByDegree:!0,linLogMode:!1,strongGravityMode:!1,gravity:1,scaling:1,edgeWeightInfluence:1,jitterTolerence:.1,preventOverlap:!1,dissuadeHubs:!1,gravityCenter:null};function vc(e){var t={type:Ka.Texture.FLOAT,minFilter:Ka.Texture.NEAREST,magFilter:Ka.Texture.NEAREST};this._positionSourceTex=new Ka.Texture2D(t),this._positionSourceTex.flipY=!1,this._positionTex=new Ka.Texture2D(t),this._positionPrevTex=new Ka.Texture2D(t),this._forceTex=new Ka.Texture2D(t),this._forcePrevTex=new Ka.Texture2D(t),this._weightedSumTex=new Ka.Texture2D(t),this._weightedSumTex.width=this._weightedSumTex.height=1,this._globalSpeedTex=new Ka.Texture2D(t),this._globalSpeedPrevTex=new Ka.Texture2D(t),this._globalSpeedTex.width=this._globalSpeedTex.height=1,this._globalSpeedPrevTex.width=this._globalSpeedPrevTex.height=1,this._nodeRepulsionPass=new ba({fragment:Ka.Shader.source("ecgl.forceAtlas2.updateNodeRepulsion")}),this._positionPass=new ba({fragment:Ka.Shader.source("ecgl.forceAtlas2.updatePosition")}),this._globalSpeedPass=new ba({fragment:Ka.Shader.source("ecgl.forceAtlas2.calcGlobalSpeed")}),this._copyPass=new ba({fragment:Ka.Shader.source("clay.compositor.output")});var r=function(e){e.blendEquation(e.FUNC_ADD),e.blendFunc(e.ONE,e.ONE)};this._edgeForceMesh=new Ka.Mesh({geometry:new Ka.Geometry({attributes:{node1:new Ka.Geometry.Attribute("node1","float",2),node2:new Ka.Geometry.Attribute("node2","float",2),weight:new Ka.Geometry.Attribute("weight","float",1)},dynamic:!0,mainAttribute:"node1"}),material:new Ka.Material({transparent:!0,shader:Ka.createShader("ecgl.forceAtlas2.updateEdgeAttraction"),blend:r,depthMask:!1,depthText:!1}),mode:Ka.Mesh.POINTS}),this._weightedSumMesh=new Ka.Mesh({geometry:new Ka.Geometry({attributes:{node:new Ka.Geometry.Attribute("node","float",2)},dynamic:!0,mainAttribute:"node"}),material:new Ka.Material({transparent:!0,shader:Ka.createShader("ecgl.forceAtlas2.calcWeightedSum"),blend:r,depthMask:!1,depthText:!1}),mode:Ka.Mesh.POINTS}),this._framebuffer=new Zn({depthBuffer:!1}),this._dummyCamera=new Ka.OrthographicCamera({left:-1,right:1,top:1,bottom:-1,near:0,far:100}),this._globalSpeed=0}vc.prototype.updateOption=function(e){for(var t in _c)this[t]=_c[t];var r=this._nodes.length;if(this.jitterTolerence=r>5e4?10:r>5e3?1:.1,this.scaling=r>100?2:10,e)for(var t in _c)null!=e[t]&&(this[t]=e[t]);if(this.repulsionByDegree)for(var i=this._positionSourceTex.pixels,n=0;ne},vc.prototype._swapTexture=function(){var e=this._positionPrevTex;this._positionPrevTex=this._positionTex,this._positionTex=e,e=this._forcePrevTex,this._forcePrevTex=this._forceTex,this._forceTex=e,e=this._globalSpeedPrevTex,this._globalSpeedPrevTex=this._globalSpeedTex,this._globalSpeedTex=e},vc.prototype._initFromSource=function(e){this._framebuffer.attach(this._positionPrevTex),this._framebuffer.bind(e),this._copyPass.setUniform("texture",this._positionSourceTex),this._copyPass.render(e),e.gl.clearColor(0,0,0,0),this._framebuffer.attach(this._forcePrevTex),e.gl.clear(e.gl.COLOR_BUFFER_BIT),this._framebuffer.attach(this._globalSpeedPrevTex),e.gl.clear(e.gl.COLOR_BUFFER_BIT),this._framebuffer.unbind(e)},vc.prototype._resize=function(e,t){["_positionSourceTex","_positionTex","_positionPrevTex","_forceTex","_forcePrevTex"].forEach(function(r){this[r].width=e,this[r].height=t,this[r].dirty()},this)},vc.prototype.dispose=function(e){this._framebuffer.dispose(e),this._copyPass.dispose(e),this._nodeRepulsionPass.dispose(e),this._positionPass.dispose(e),this._globalSpeedPass.dispose(e),this._edgeForceMesh.geometry.dispose(e),this._weightedSumMesh.geometry.dispose(e),this._positionSourceTex.dispose(e),this._positionTex.dispose(e),this._positionPrevTex.dispose(e),this._forceTex.dispose(e),this._forcePrevTex.dispose(e),this._weightedSumTex.dispose(e),this._globalSpeedTex.dispose(e),this._globalSpeedPrevTex.dispose(e)};var yc=function(){var e=function(){return new Float32Array(2)},t=function(e,t){var r=t[0]-e[0],i=t[1]-e[1];return Math.sqrt(r*r+i*i)},r=function(e){var t=e[0],r=e[1];return Math.sqrt(t*t+r*r)},i=function(e,t,r,i){return e[0]=t[0]+r[0]*i,e[1]=t[1]+r[1]*i,e},n=function(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e},a=function(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e},o=function(e,t){return e[0]=t[0],e[1]=t[1],e},s=function(e,t,r){return e[0]=t,e[1]=r,e};function l(){this.subRegions=[],this.nSubRegions=0,this.node=null,this.mass=0,this.centerOfMass=null,this.bbox=new Float32Array(4),this.size=0}var h=l.prototype;function u(){this.position=new Float32Array(2),this.force=e(),this.forcePrev=e(),this.mass=1,this.inDegree=0,this.outDegree=0}function c(e,t){this.source=e,this.target=t,this.weight=1}function d(){this.autoSettings=!0,this.barnesHutOptimize=!0,this.barnesHutTheta=1.5,this.repulsionByDegree=!0,this.linLogMode=!1,this.strongGravityMode=!1,this.gravity=1,this.scaling=1,this.edgeWeightInfluence=1,this.jitterTolerence=.1,this.preventOverlap=!1,this.dissuadeHubs=!1,this.rootRegion=new l,this.rootRegion.centerOfMass=e(),this.nodes=[],this.edges=[],this.bbox=new Float32Array(4),this.gravityCenter=null,this._massArr=null,this._swingingArr=null,this._sizeArr=null,this._globalSpeed=0}h.beforeUpdate=function(){for(var e=0;e=e&&this.bbox[1]<=t&&this.bbox[3]>=t},h.setBBox=function(e,t,r,i){this.bbox[0]=e,this.bbox[1]=t,this.bbox[2]=r,this.bbox[3]=i,this.size=(r-e+i-t)/2},h._newSubRegion=function(){var e=this.subRegions[this.nSubRegions];return e||(e=new l,this.subRegions[this.nSubRegions]=e),this.nSubRegions++,e},h._addNodeToSubRegion=function(e){var t=this.findSubRegion(e.position[0],e.position[1]),r=this.bbox;if(!t){var i=(r[0]+r[2])/2,n=(r[1]+r[3])/2,a=(r[2]-r[0])/2,o=(r[3]-r[1])/2,s=e.position[0]>=i?1:0,l=e.position[1]>=n?1:0;(t=this._newSubRegion()).setBBox(s*a+r[0],l*o+r[1],(s+1)*a+r[0],(l+1)*o+r[1])}t.addNode(e)},h._updateCenterOfMass=function(e){null==this.centerOfMass&&(this.centerOfMass=new Float32Array(2));var t=this.centerOfMass[0]*this.mass,r=this.centerOfMass[1]*this.mass;t+=e.position[0]*e.mass,r+=e.position[1]*e.mass,this.mass+=e.mass,this.centerOfMass[0]=t/this.mass,this.centerOfMass[1]=r/this.mass};var f=d.prototype;f.initNodes=function(e,t,r){var i=t.length;this.nodes.length=0;for(var n=void 0!==r,a=0;a0&&(this.strongGravityMode?this.applyNodeStrongGravity(u):this.applyNodeGravity(u))}for(l=0;l0&&(g=Math.min(g/this._globalSpeed,1.5)*this._globalSpeed),this._globalSpeed=g,l=0;l0&&(v=Math.min(y*v,10)/y,i(h.position,h.position,h.force,v))}},f.applyRegionToNodeRepulsion=function(){var t=e();return function(e,r){if(e.node)this.applyNodeToNodeRepulsion(e.node,r,!0);else{a(t,r.position,e.centerOfMass);var n=t[0]*t[0]+t[1]*t[1];if(n>this.barnesHutTheta*e.size*e.size){var o=this.scaling*r.mass*e.mass/n;i(r.force,r.force,t,o)}else for(var s=0;s0)s=this.scaling*e.mass*r.mass/(l*l);else{if(!(l<0))return;s=100*this.scaling*e.mass*r.mass}}else s=this.scaling*e.mass*r.mass/o;i(e.force,e.force,t,s),i(r.force,r.force,t,-s)}}}}(),f.applyEdgeAttraction=function(){var t=e();return function(e){var n=e.source,o=e.target;a(t,n.position,o.position);var s,l,h=r(t);s=0===this.edgeWeightInfluence?1:1===this.edgeWeightInfluence?e.weight:Math.pow(e.weight,this.edgeWeightInfluence),this.preventOverlap&&(h=h-n.size-o.size)<=0||(l=this.linLogMode?-s*Math.log(h+1)/(h+1):-s,i(n.force,n.force,t,l),i(o.force,o.force,t,-l))}}(),f.applyNodeGravity=function(){var t=e();return function(e){a(t,this.gravityCenter,e.position);var n=r(t);i(e.force,e.force,t,this.gravity*e.mass/(n+1))}}(),f.applyNodeStrongGravity=function(){var t=e();return function(e){a(t,this.gravityCenter,e.position),i(e.force,e.force,t,this.gravity*e.mass)}}(),f.updateBBox=function(){for(var e=1/0,t=1/0,r=-1/0,i=-1/0,n=0;n5e4?10:a>5e3?1:.1,t.scaling=a>100?2:10,t.barnesHutOptimize=a>1e3,e)for(var r in xc)null!=e[r]&&(t[r]=e[r]);if(!t.gravityCenter){for(var o=[1/0,1/0],s=[-1/0,-1/0],l=0;le},bc.prototype.getNodePosition=function(e,t){if(t||(t=new Float32Array(2*this._nodes.length)),this._positionArr)for(var r=0;r0?1.1:.9,a=Math.max(Math.min(this._zoom*n,this.maxZoom),this.minZoom);n=a/this._zoom;var o=this._convertPos(r,i),s=(o.x-this._dx)*(n-1),l=(o.y-this._dy)*(n-1);this._dx-=s,this._dy-=l,this._zoom=a,this._needsUpdate=!0}}},dispose:function(){var e=this.zr;e.off("mousedown",this._mouseDownHandler),e.off("mousemove",this._mouseMoveHandler),e.off("mouseup",this._mouseUpHandler),e.off("mousewheel",this._mouseWheelHandler),e.off("globalout",this._mouseUpHandler),e.animation.off("frame",this._update)}}),wc=bo.vec2;Ka.Shader.import("@export ecgl.lines2D.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nattribute vec2 position: POSITION;\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n\n#ifdef POSITIONTEXTURE_ENABLED\nuniform sampler2D positionTexture;\n#endif\n\nvoid main()\n{\n gl_Position = worldViewProjection * vec4(position, -10.0, 1.0);\n\n v_Color = a_Color;\n}\n\n@end\n\n@export ecgl.lines2D.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nvarying vec4 v_Color;\n\nvoid main()\n{\n gl_FragColor = color * v_Color;\n}\n@end\n\n\n@export ecgl.meshLines2D.vertex\n\nattribute vec2 position: POSITION;\nattribute vec2 normal;\nattribute float offset;\nattribute vec4 a_Color : COLOR;\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform vec4 viewport : VIEWPORT;\n\nvarying vec4 v_Color;\nvarying float v_Miter;\n\nvoid main()\n{\n vec4 p2 = worldViewProjection * vec4(position + normal, -10.0, 1.0);\n gl_Position = worldViewProjection * vec4(position, -10.0, 1.0);\n\n p2.xy /= p2.w;\n gl_Position.xy /= gl_Position.w;\n\n vec2 N = normalize(p2.xy - gl_Position.xy);\n gl_Position.xy += N * offset / viewport.zw * 2.0;\n\n gl_Position.xy *= gl_Position.w;\n\n v_Color = a_Color;\n}\n@end\n\n\n@export ecgl.meshLines2D.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nvarying vec4 v_Color;\nvarying float v_Miter;\n\nvoid main()\n{\n gl_FragColor = color * v_Color;\n}\n\n@end");var Sc=1;const Mc=te.extend({type:"graphGL",__ecgl__:!0,init:function(e,t){this.groupGL=new Ka.Node,this.viewGL=new Xs("orthographic"),this.viewGL.camera.left=this.viewGL.camera.right=0,this.viewGL.add(this.groupGL),this._pointsBuilder=new Du(!0,t),this._forceEdgesMesh=new Ka.Mesh({material:new Ka.Material({shader:Ka.createShader("ecgl.forceAtlas2.edges"),transparent:!0,depthMask:!1,depthTest:!1}),$ignorePicking:!0,geometry:new Ka.Geometry({attributes:{node:new Ka.Geometry.Attribute("node","float",2),color:new Ka.Geometry.Attribute("color","float",4,"COLOR")},dynamic:!0,mainAttribute:"node"}),renderOrder:-1,mode:Ka.Mesh.LINES}),this._edgesMesh=new Ka.Mesh({material:new Ka.Material({shader:Ka.createShader("ecgl.meshLines2D"),transparent:!0,depthMask:!1,depthTest:!1}),$ignorePicking:!0,geometry:new gc({useNativeLine:!1,dynamic:!0}),renderOrder:-1,culling:!1}),this._layoutId=0,this._control=new Tc({zr:t.getZr(),viewGL:this.viewGL}),this._control.setTarget(this.groupGL),this._control.init(),this._clickHandler=this._clickHandler.bind(this)},render:function(e,t,r){this.groupGL.add(this._pointsBuilder.rootNode),this._model=e,this._api=r,this._initLayout(e,t,r),this._pointsBuilder.update(e,t,r),this._forceLayoutInstance instanceof vc||this.groupGL.remove(this._forceEdgesMesh),this._updateCamera(e,r),this._control.off("update"),this._control.on("update",function(){r.dispatchAction({type:"graphGLRoam",seriesId:e.id,zoom:this._control.getZoom(),offset:this._control.getOffset()}),this._pointsBuilder.updateView(this.viewGL.camera)},this),this._control.setZoom(La(e.get("zoom"),1)),this._control.setOffset(e.get("offset")||[0,0]);var i=this._pointsBuilder.getPointsMesh();if(i.off("mousemove",this._mousemoveHandler),i.off("mouseout",this._mouseOutHandler,this),r.getZr().off("click",this._clickHandler),this._pointsBuilder.highlightOnMouseover=!0,e.get("focusNodeAdjacency")){var n=e.get("focusNodeAdjacencyOn");"click"===n?r.getZr().on("click",this._clickHandler):"mouseover"===n&&(i.on("mousemove",this._mousemoveHandler,this),i.on("mouseout",this._mouseOutHandler,this),this._pointsBuilder.highlightOnMouseover=!1)}this._lastMouseOverDataIndex=-1},_clickHandler:function(e){if(!this._layouting){var t=this._pointsBuilder.getPointsMesh().dataIndex;t>=0?this._api.dispatchAction({type:"graphGLFocusNodeAdjacency",seriesId:this._model.id,dataIndex:t}):this._api.dispatchAction({type:"graphGLUnfocusNodeAdjacency",seriesId:this._model.id})}},_mousemoveHandler:function(e){if(!this._layouting){var t=this._pointsBuilder.getPointsMesh().dataIndex;t>=0?t!==this._lastMouseOverDataIndex&&this._api.dispatchAction({type:"graphGLFocusNodeAdjacency",seriesId:this._model.id,dataIndex:t}):this._mouseOutHandler(e),this._lastMouseOverDataIndex=t}},_mouseOutHandler:function(e){this._layouting||(this._api.dispatchAction({type:"graphGLUnfocusNodeAdjacency",seriesId:this._model.id}),this._lastMouseOverDataIndex=-1)},_updateForceEdgesGeometry:function(e,t){var r=this._forceEdgesMesh.geometry,i=t.getEdgeData(),n=0,a=this._forceLayoutInstance,o=2*i.count();r.attributes.node.init(o),r.attributes.color.init(o),i.each(function(t){var o=e[t];r.attributes.node.set(n,a.getNodeUV(o.node1)),r.attributes.node.set(n+1,a.getNodeUV(o.node2));var s=Hl(i,o.dataIndex),l=Ka.parseColor(s);l[3]*=La(Vl(i,o.dataIndex),1),r.attributes.color.set(n,l),r.attributes.color.set(n+1,l),n+=2}),r.dirty()},_updateMeshLinesGeometry:function(){var e=this._model.getEdgeData(),t=this._edgesMesh.geometry,r=(e=this._model.getEdgeData(),this._model.getData().getLayout("points"));t.resetOffset(),t.setVertexCount(e.count()*t.getLineVertexCount()),t.setTriangleCount(e.count()*t.getLineTriangleCount());var i=[],n=[],a=["lineStyle","width"];this._originalEdgeColors=new Float32Array(4*e.count()),this._edgeIndicesMap=new Float32Array(e.count()),e.each(function(o){var s=e.graph.getEdgeByIndex(o),l=2*s.node1.dataIndex,h=2*s.node2.dataIndex;i[0]=r[l],i[1]=r[l+1],n[0]=r[h],n[1]=r[h+1];var u=Hl(e,s.dataIndex),c=Ka.parseColor(u);c[3]*=La(Vl(e,s.dataIndex),1);var d=e.getItemModel(s.dataIndex),f=La(d.get(a),1)*this._api.getDevicePixelRatio();t.addLine(i,n,c,f);for(var p=0;p<4;p++)this._originalEdgeColors[4*s.dataIndex+p]=c[p];this._edgeIndicesMap[s.dataIndex]=o},this),t.dirty()},_updateForceNodesGeometry:function(e){for(var t=this._pointsBuilder.getPointsMesh(),r=[],i=0;i=p&&(l._syncNodePosition(e),f=0),r.getZr().refresh(),h(function(){m(t)})})};h(function(){l._forceLayoutInstanceToDispose&&(l._forceLayoutInstanceToDispose.dispose(n.layer.renderer),l._forceLayoutInstanceToDispose=null),m(u)}),this._layouting=!0}}},stopLayout:function(e,t,r,i){i&&null!=i.from&&i.from!==this.uid||(this._layoutId=0,this.groupGL.remove(this._forceEdgesMesh),this.groupGL.add(this._edgesMesh),this._forceLayoutInstance&&this.viewGL.layer&&(i&&i.beforeLayout||(this._syncNodePosition(e),this._updateAfterLayout(e,t,r)),this._api.getZr().refresh(),this._layouting=!1))},_syncNodePosition:function(e){var t=this._forceLayoutInstance.getNodePosition(this.viewGL.layer.renderer);e.getData().setLayout("points",t),e.setNodePosition(t)},_updateAfterLayout:function(e,t,r){this._updateMeshLinesGeometry(),this._pointsBuilder.removePositionTexture(),this._pointsBuilder.updateLayout(e,t,r),this._pointsBuilder.updateView(this.viewGL.camera),this._pointsBuilder.updateLabels(),this._pointsBuilder.showLabels()},focusNodeAdjacency:function(e,t,r,i){var n=this._model.getData();this._downplayAll();var a=i.dataIndex,o=n.graph,s=[],l=o.getNodeByIndex(a);s.push(l),l.edges.forEach(function(e){e.dataIndex<0||(e.node1!==l&&s.push(e.node1),e.node2!==l&&s.push(e.node2))},this),this._pointsBuilder.fadeOutAll(.05),this._fadeOutEdgesAll(.05),s.forEach(function(e){this._pointsBuilder.highlight(n,e.dataIndex)},this),this._pointsBuilder.updateLabels(s.map(function(e){return e.dataIndex}));var h=[];l.edges.forEach(function(e){e.dataIndex>=0&&(this._highlightEdge(e.dataIndex),h.push(e))},this),this._focusNodes=s,this._focusEdges=h},unfocusNodeAdjacency:function(e,t,r,i){this._downplayAll(),this._pointsBuilder.fadeInAll(),this._fadeInEdgesAll(),this._pointsBuilder.updateLabels()},_highlightEdge:function(e){var t=this._model.getEdgeData().getItemModel(e),r=Ka.parseColor(t.get("emphasis.lineStyle.color")||t.get("lineStyle.color")),i=La(t.get("emphasis.lineStyle.opacity"),t.get("lineStyle.opacity"),1);r[3]*=i,this._edgesMesh.geometry.setItemColor(this._edgeIndicesMap[e],r)},_downplayAll:function(){this._focusNodes&&this._focusNodes.forEach(function(e){this._pointsBuilder.downplay(this._model.getData(),e.dataIndex)},this),this._focusEdges&&this._focusEdges.forEach(function(e){this._downplayEdge(e.dataIndex)},this)},_downplayEdge:function(e){var t=this._getColor(e,[]);this._edgesMesh.geometry.setItemColor(this._edgeIndicesMap[e],t)},_setEdgeFade:function(){var e=[];return function(t,r){this._getColor(t,e),e[3]*=r,this._edgesMesh.geometry.setItemColor(this._edgeIndicesMap[t],e)}}(),_getColor:function(e,t){for(var r=0;r<4;r++)t[r]=this._originalEdgeColors[4*e+r];return t},_fadeOutEdgesAll:function(e){this._model.getData().graph.eachEdge(function(t){this._setEdgeFade(t.dataIndex,e)},this)},_fadeInEdgesAll:function(){this._fadeOutEdgesAll(1)},_updateCamera:function(e,t){this.viewGL.setViewport(0,0,t.getWidth(),t.getHeight(),t.getDevicePixelRatio());for(var r=this.viewGL.camera,i=e.getData().getLayout("points"),n=wc.create(1/0,1/0),a=wc.create(-1/0,-1/0),o=[],s=0;sr.left&&hr.top)){var u=Math.max(a[0]-n[0],10),c=u/t.getWidth()*t.getHeight();u*=1.4,c*=1.4,n[0]-=.2*u,r.left=n[0],r.top=l-c/2,r.bottom=l+c/2,r.right=u+n[0],r.near=0,r.far=100}},dispose:function(){var e=this.viewGL.layer.renderer;this._forceLayoutInstance&&this._forceLayoutInstance.dispose(e),this.groupGL.removeAll(),this._layoutId=-1,this._pointsBuilder.dispose()},remove:function(){this.groupGL.removeAll(),this._control.dispose()}});function Ac(e){return e instanceof Array||(e=[e,e]),e}I(function(e){function t(){}e.registerChartView(Mc),e.registerSeriesModel(fc),e.registerVisual(function(e){const t={};e.eachSeriesByType("graphGL",function(e){var r=e.getCategoriesData(),i=e.getData(),n={};r.each(function(i){var a=r.getName(i);n["ec-"+a]=i;var o=r.getItemModel(i),s=o.getModel("itemStyle").getItemStyle();s.fill||(s.fill=e.getColorFromPalette(a,t)),r.setItemVisual(i,"style",s);var l=["symbol","symbolSize","symbolKeepAspect"];for(let e=0;e65535?new Uint32Array(3*i):new Uint16Array(3*i))},addLine:function(e){var t=this._vertexOffset;this.attributes.position.set(t,[e[0],e[1],1]),this.attributes.position.set(t+1,[e[0],e[1],-1]),this.attributes.position.set(t+2,[e[0],e[1],2]),this.attributes.position.set(t+3,[e[0],e[1],-2]),this.setTriangleIndices(this._faceOffset++,[t,t+1,t+2]),this.setTriangleIndices(this._faceOffset++,[t+1,t+2,t+3]),this._vertexOffset+=4}});br.import("@export ecgl.vfParticle.particle.fragment\n\nuniform sampler2D particleTexture;\nuniform sampler2D spawnTexture;\nuniform sampler2D velocityTexture;\n\nuniform float deltaTime;\nuniform float elapsedTime;\n\nuniform float speedScaling : 1.0;\n\nuniform vec2 textureSize;\nuniform vec4 region : [0, 0, 1, 1];\nuniform float firstFrameTime;\n\nvarying vec2 v_Texcoord;\n\n\nvoid main()\n{\n vec4 p = texture2D(particleTexture, v_Texcoord);\n bool spawn = false;\n if (p.w <= 0.0) {\n p = texture2D(spawnTexture, fract(v_Texcoord + elapsedTime / 10.0));\n p.w -= firstFrameTime;\n spawn = true;\n }\n vec2 v = texture2D(velocityTexture, fract(p.xy * region.zw + region.xy)).xy;\n v = (v - 0.5) * 2.0;\n p.z = length(v);\n p.xy += v * deltaTime / 10.0 * speedScaling;\n p.w -= deltaTime;\n\n if (spawn || p.xy != fract(p.xy)) {\n p.z = 0.0;\n }\n p.xy = fract(p.xy);\n\n gl_FragColor = p;\n}\n@end\n\n@export ecgl.vfParticle.renderPoints.vertex\n\n#define PI 3.1415926\n\nattribute vec2 texcoord : TEXCOORD_0;\n\nuniform sampler2D particleTexture;\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nuniform float size : 1.0;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\nvoid main()\n{\n vec4 p = texture2D(particleTexture, texcoord);\n\n if (p.w > 0.0 && p.z > 1e-5) {\n gl_Position = worldViewProjection * vec4(p.xy * 2.0 - 1.0, 0.0, 1.0);\n }\n else {\n gl_Position = vec4(100000.0, 100000.0, 100000.0, 1.0);\n }\n\n v_Mag = p.z;\n v_Uv = p.xy;\n\n gl_PointSize = size;\n}\n\n@end\n\n@export ecgl.vfParticle.renderPoints.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nuniform sampler2D gradientTexture;\nuniform sampler2D colorTexture;\nuniform sampler2D spriteTexture;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\nvoid main()\n{\n gl_FragColor = color;\n#ifdef SPRITETEXTURE_ENABLED\n gl_FragColor *= texture2D(spriteTexture, gl_PointCoord);\n if (color.a == 0.0) {\n discard;\n }\n#endif\n#ifdef GRADIENTTEXTURE_ENABLED\n gl_FragColor *= texture2D(gradientTexture, vec2(v_Mag, 0.5));\n#endif\n#ifdef COLORTEXTURE_ENABLED\n gl_FragColor *= texture2D(colorTexture, v_Uv);\n#endif\n}\n\n@end\n\n@export ecgl.vfParticle.renderLines.vertex\n\n#define PI 3.1415926\n\nattribute vec3 position : POSITION;\n\nuniform sampler2D particleTexture;\nuniform sampler2D prevParticleTexture;\n\nuniform float size : 1.0;\nuniform vec4 vp: VIEWPORT;\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\n@import clay.util.rand\n\nvoid main()\n{\n vec4 p = texture2D(particleTexture, position.xy);\n vec4 p2 = texture2D(prevParticleTexture, position.xy);\n\n p.xy = p.xy * 2.0 - 1.0;\n p2.xy = p2.xy * 2.0 - 1.0;\n\n if (p.w > 0.0 && p.z > 1e-5) {\n vec2 dir = normalize(p.xy - p2.xy);\n vec2 norm = vec2(dir.y / vp.z, -dir.x / vp.w) * sign(position.z) * size;\n if (abs(position.z) == 2.0) {\n gl_Position = vec4(p.xy + norm, 0.0, 1.0);\n v_Uv = p.xy;\n v_Mag = p.z;\n }\n else {\n gl_Position = vec4(p2.xy + norm, 0.0, 1.0);\n v_Mag = p2.z;\n v_Uv = p2.xy;\n }\n gl_Position = worldViewProjection * gl_Position;\n }\n else {\n gl_Position = vec4(100000.0, 100000.0, 100000.0, 1.0);\n }\n}\n\n@end\n\n@export ecgl.vfParticle.renderLines.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nuniform sampler2D gradientTexture;\nuniform sampler2D colorTexture;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\nvoid main()\n{\n gl_FragColor = color;\n #ifdef GRADIENTTEXTURE_ENABLED\n gl_FragColor *= texture2D(gradientTexture, vec2(v_Mag, 0.5));\n#endif\n#ifdef COLORTEXTURE_ENABLED\n gl_FragColor *= texture2D(colorTexture, v_Uv);\n#endif\n}\n\n@end\n");var Cc=function(){this.motionBlurFactor=.99,this.vectorFieldTexture=new Wi({type:Gi.FLOAT,flipY:!1}),this.particleLife=[5,20],this._particleType="point",this._particleSize=1,this.particleColor=[1,1,1,1],this.particleSpeedScaling=1,this._thisFrameTexture=null,this._particlePass=null,this._spawnTexture=null,this._particleTexture0=null,this._particleTexture1=null,this._particlePointsMesh=null,this._surfaceFrameBuffer=null,this._elapsedTime=0,this._scene=null,this._camera=null,this._lastFrameTexture=null,this._supersampling=1,this._downsampleTextures=[],this._width=512,this._height=512,this.init()};Cc.prototype={constructor:Cc,init:function(){var e={type:Gi.FLOAT,minFilter:Gi.NEAREST,magFilter:Gi.NEAREST,useMipmap:!1};this._spawnTexture=new Wi(e),this._particleTexture0=new Wi(e),this._particleTexture1=new Wi(e),this._frameBuffer=new Zn({depthBuffer:!1}),this._particlePass=new ba({fragment:br.source("ecgl.vfParticle.particle.fragment")}),this._particlePass.setUniform("velocityTexture",this.vectorFieldTexture),this._particlePass.setUniform("spawnTexture",this._spawnTexture),this._downsamplePass=new ba({fragment:br.source("clay.compositor.downsample")});var t=new Ui({renderOrder:10,material:new Wt({shader:new br(br.source("ecgl.vfParticle.renderPoints.vertex"),br.source("ecgl.vfParticle.renderPoints.fragment"))}),mode:Ui.POINTS,geometry:new tn({dynamic:!0,mainAttribute:"texcoord0"})}),r=new Ui({renderOrder:10,material:new Wt({shader:new br(br.source("ecgl.vfParticle.renderLines.vertex"),br.source("ecgl.vfParticle.renderLines.fragment"))}),geometry:new Dc,culling:!1}),i=new Ui({material:new Wt({shader:new br(br.source("ecgl.color.vertex"),br.source("ecgl.color.fragment"))}),geometry:new Qn});i.material.enableTexture("diffuseMap"),this._particlePointsMesh=t,this._particleLinesMesh=r,this._lastFrameFullQuadMesh=i,this._camera=new _a,this._thisFrameTexture=new Wi,this._lastFrameTexture=new Wi},setParticleDensity:function(e,t){for(var r=new Float32Array(e*t*4),i=0,n=this.particleLife,a=0;a0?e[e.length-1]:this._lastFrameTexture},setRegion:function(e){this._particlePass.setUniform("region",e)},resize:function(e,t){this._lastFrameTexture.width=e*this._supersampling,this._lastFrameTexture.height=t*this._supersampling,this._thisFrameTexture.width=e*this._supersampling,this._thisFrameTexture.height=t*this._supersampling,this._width=e,this._height=t},setParticleSize:function(e){var t=this._getParticleMesh();if(e<=2)return t.material.disableTexture("spriteTexture"),void(t.material.transparent=!1);this._spriteTexture||(this._spriteTexture=new Wi),this._spriteTexture.image&&this._spriteTexture.image.width===e||(this._spriteTexture.image=function(e){var t=document.createElement("canvas");t.width=t.height=e;var r=t.getContext("2d");return r.fillStyle="#fff",r.arc(e/2,e/2,e/2,0,2*Math.PI),r.fill(),t}(e),this._spriteTexture.dirty()),t.material.transparent=!0,t.material.enableTexture("spriteTexture"),t.material.set("spriteTexture",this._spriteTexture),this._particleSize=e},setGradientTexture:function(e){var t=this._getParticleMesh().material;t[e?"enableTexture":"disableTexture"]("gradientTexture"),t.setUniform("gradientTexture",e)},setColorTextureImage:function(e,t){this._getParticleMesh().material.setTextureImage("colorTexture",e,t,{flipY:!0})},setParticleType:function(e){this._particleType=e},clearFrame:function(e){var t=this._frameBuffer;t.attach(this._lastFrameTexture),t.bind(e),e.gl.clear(e.gl.DEPTH_BUFFER_BIT|e.gl.COLOR_BUFFER_BIT),t.unbind(e)},setSupersampling:function(e){this._supersampling=e,this.resize(this._width,this._height)},_updateDownsampleTextures:function(e,t){for(var r=this._downsampleTextures,i=Math.max(Math.floor(Math.log(this._supersampling/t.getDevicePixelRatio())/Math.log(2)),0),n=2,a=this._width*this._supersampling,o=this._height*this._supersampling,s=0;s=359&&(n[0]>0&&(n[0]=0),a[0]1?(t.material.shader!==this._meshLinesShader&&t.material.attachShader(this._meshLinesShader),t.mode=Ka.Mesh.TRIANGLES):(t.material.shader!==this._nativeLinesShader&&t.material.attachShader(this._nativeLinesShader),t.mode=Ka.Mesh.LINES),r=r||0,i=i||n.count(),s.resetOffset();var u=0,c=0,d=[],f=[],p=[],m=[],g=[],_=.3,v=.7;function y(){f[0]=d[0]*v+m[0]*_-(d[1]-m[1])*a,f[1]=d[1]*v+m[1]*_-(m[0]-d[0])*a,p[0]=d[0]*_+m[0]*v-(d[1]-m[1])*a,p[1]=d[1]*_+m[1]*v-(m[0]-d[0])*a}if(o||0!==a)for(var x=r;x{r=e.m,i=e.i,n=e.A,a=e.L,o=e.p,s=e.R,l=e.g,h=e.r,u=e.e,c=e.a,d=e.b,f=e.c,p=e.d,m=e.Z,g=e.C,_=e.f,v=e.h,y=e.j,x=e.k,b=e.M,T=e.l,w=e.n,S=e.o,M=e.q,A=e.s,E=e.t,D=e.u,C=e.v,L=e.w,P=e.x,O=e.y,N=e.O,R=e.z,I=e.B,B=e.D,z=e.E,F=e.S,G=e.F,U=e.G,H=e.H,V=e.I,k=e.J,W=e.K,j=e.N,X=e.P,q=e.Q,Z=e.T,Y=e.U,K=e.V,Q=e.W,J=e.X,$=e.Y,ee=e._,te=e.$,re=e.a0,ie=e.a1,ne=e.a2,ae=e.a3,oe=e.a4,se=e.a5,le=e.a6,he=e.a7,ue=e.a8,ce=e.a9,de=e.aa,fe=e.ab}],execute:function(){function t(e,t,r){"object"==typeof t&&(r=t,t=null);var i,n=this;if(!(e instanceof Function))for(var a in i=[],e)e.hasOwnProperty(a)&&i.push(a);var o=function(t){if(n.apply(this,arguments),e instanceof Function?pe(this,e.call(this,t)):function(e,t,r){for(var i=0;i=400?e.onerror&&e.onerror():e.onload&&e.onload(t.response)},e.onerror&&(t.onerror=e.onerror),t.send(null)}};var bt,Tt={supportWebGL:function(){if(null==bt)try{var e=document.createElement("canvas");if(!e.getContext("webgl")&&!e.getContext("experimental-webgl"))throw new Error}catch(ch){bt=!1}return bt}};Tt.Int8Array="undefined"==typeof Int8Array?Array:Int8Array,Tt.Uint8Array="undefined"==typeof Uint8Array?Array:Uint8Array,Tt.Uint16Array="undefined"==typeof Uint16Array?Array:Uint16Array,Tt.Uint32Array="undefined"==typeof Uint32Array?Array:Uint32Array,Tt.Int16Array="undefined"==typeof Int16Array?Array:Int16Array,Tt.Float32Array="undefined"==typeof Float32Array?Array:Float32Array,Tt.Float64Array="undefined"==typeof Float64Array?Array:Float64Array;var wt={};"undefined"!=typeof window?wt=window:"undefined"!=typeof global&&(wt=global),Tt.requestAnimationFrame=wt.requestAnimationFrame||wt.msRequestAnimationFrame||wt.mozRequestAnimationFrame||wt.webkitRequestAnimationFrame||function(e){setTimeout(e,16)},Tt.createCanvas=function(){return document.createElement("canvas")},Tt.createImage=function(){return new wt.Image},Tt.request={get:xt.get},Tt.addEventListener=function(e,t,r,i){e.addEventListener(t,r,i)},Tt.removeEventListener=function(e,t,r){e.removeEventListener(t,r)};var St=function(){this.head=null,this.tail=null,this._length=0};St.prototype.insert=function(e){var t=new St.Entry(e);return this.insertEntry(t),t},St.prototype.insertAt=function(e,t){if(!(e<0)){for(var r=this.head,i=0;r&&i!=e;)r=r.next,i++;if(r){var n=new St.Entry(t),a=r.prev;a?(a.next=n,n.prev=a):this.head=n,n.next=r,r.prev=n}else this.insert(t)}},St.prototype.insertBeforeEntry=function(e,t){var r=new St.Entry(e),i=t.prev;i?(i.next=r,r.prev=i):this.head=r,r.next=t,t.prev=r,this._length++},St.prototype.insertEntry=function(e){this.head?(this.tail.next=e,e.prev=this.tail,this.tail=e):this.head=this.tail=e,this._length++},St.prototype.remove=function(e){var t=e.prev,r=e.next;t?t.next=r:this.head=r,r?r.prev=t:this.tail=t,e.next=e.prev=null,this._length--},St.prototype.removeAt=function(e){if(!(e<0)){for(var t=this.head,r=0;t&&r!=e;)t=t.next,r++;return t?(this.remove(t),t.value):void 0}},St.prototype.getHead=function(){if(this.head)return this.head.value},St.prototype.getTail=function(){if(this.tail)return this.tail.value},St.prototype.getAt=function(e){if(!(e<0)){for(var t=this.head,r=0;t&&r!=e;)t=t.next,r++;return t.value}},St.prototype.indexOf=function(e){for(var t=this.head,r=0;t;){if(t.value===e)return r;t=t.next,r++}},St.prototype.length=function(){return this._length},St.prototype.isEmpty=function(){return 0===this._length},St.prototype.forEach=function(e,t){for(var r=this.head,i=0,n=void 0!==t;r;)n?e.call(t,r.value,i):e(r.value,i),r=r.next,i++},St.prototype.clear=function(){this.tail=this.head=null,this._length=0},St.Entry=function(e){this.value=e,this.next=null,this.prev=null};var Mt=function(e){this._list=new St,this._map={},this._maxSize=e||10};Mt.prototype.setMaxSize=function(e){this._maxSize=e},Mt.prototype.put=function(e,t){if(!this._map.hasOwnProperty(e)){var r=this._list.length();if(r>=this._maxSize&&r>0){var i=this._list.head;this._list.remove(i),delete this._map[i.key]}var n=this._list.insert(t);n.key=e,this._map[e]=n}},Mt.prototype.get=function(e){var t=this._map[e];if(this._map.hasOwnProperty(e))return t!==this._list.tail&&(this._list.remove(t),this._list.insertEntry(t)),t.value},Mt.prototype.remove=function(e){var t=this._map[e];void 0!==t&&(delete this._map[e],this._list.remove(t))},Mt.prototype.clear=function(){this._list.clear(),this._map={}};var At={},Et={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Dt(e){return(e=Math.round(e))<0?0:e>255?255:e}function Ct(e){return e<0?0:e>1?1:e}function Lt(e){return e.length&&"%"===e.charAt(e.length-1)?Dt(parseFloat(e)/100*255):Dt(parseInt(e,10))}function Pt(e){return e.length&&"%"===e.charAt(e.length-1)?Ct(parseFloat(e)/100):Ct(parseFloat(e))}function Ot(e,t,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?e+(t-e)*r*6:2*r<1?t:3*r<2?e+(t-e)*(2/3-r)*6:e}function Nt(e,t,r){return e+(t-e)*r}function Rt(e,t,r,i,n){return e[0]=t,e[1]=r,e[2]=i,e[3]=n,e}function It(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}var Bt=new Mt(20),zt=null;function Ft(e,t){zt&&It(zt,t),zt=Bt.put(e,zt||t.slice())}function Gt(e,t){var r=(parseFloat(e[0])%360+360)%360/360,i=Pt(e[1]),n=Pt(e[2]),a=n<=.5?n*(i+1):n+i-n*i,o=2*n-a;return Rt(t=t||[],Dt(255*Ot(o,a,r+1/3)),Dt(255*Ot(o,a,r)),Dt(255*Ot(o,a,r-1/3)),1),4===e.length&&(t[3]=e[3]),t}At.parse=function(e,t){if(e){t=t||[];var r=Bt.get(e);if(r)return It(t,r);var i,n=(e+="").replace(/ /g,"").toLowerCase();if(n in Et)return It(t,Et[n]),Ft(e,t),t;if("#"===n.charAt(0))return 4===n.length?(i=parseInt(n.substr(1),16))>=0&&i<=4095?(Rt(t,(3840&i)>>4|(3840&i)>>8,240&i|(240&i)>>4,15&i|(15&i)<<4,1),Ft(e,t),t):void Rt(t,0,0,0,1):7===n.length?(i=parseInt(n.substr(1),16))>=0&&i<=16777215?(Rt(t,(16711680&i)>>16,(65280&i)>>8,255&i,1),Ft(e,t),t):void Rt(t,0,0,0,1):void 0;var a=n.indexOf("("),o=n.indexOf(")");if(-1!==a&&o+1===n.length){var s=n.substr(0,a),l=n.substr(a+1,o-(a+1)).split(","),h=1;switch(s){case"rgba":if(4!==l.length)return void Rt(t,0,0,0,1);h=Pt(l.pop());case"rgb":return 3!==l.length?void Rt(t,0,0,0,1):(Rt(t,Lt(l[0]),Lt(l[1]),Lt(l[2]),h),Ft(e,t),t);case"hsla":return 4!==l.length?void Rt(t,0,0,0,1):(l[3]=Pt(l[3]),Gt(l,t),Ft(e,t),t);case"hsl":return 3!==l.length?void Rt(t,0,0,0,1):(Gt(l,t),Ft(e,t),t);default:return}}Rt(t,0,0,0,1)}},At.parseToFloat=function(e,t){if(t=At.parse(e,t))return t[0]/=255,t[1]/=255,t[2]/=255,t},At.lift=function(e,t){var r=At.parse(e);if(r){for(var i=0;i<3;i++)r[i]=t<0?r[i]*(1-t)|0:(255-r[i])*t+r[i]|0;return At.stringify(r,4===r.length?"rgba":"rgb")}},At.toHex=function(e){var t=At.parse(e);if(t)return((1<<24)+(t[0]<<16)+(t[1]<<8)+ +t[2]).toString(16).slice(1)},At.fastLerp=function(e,t,r){if(t&&t.length&&e>=0&&e<=1){r=r||[];var i=e*(t.length-1),n=Math.floor(i),a=Math.ceil(i),o=t[n],s=t[a],l=i-n;return r[0]=Dt(Nt(o[0],s[0],l)),r[1]=Dt(Nt(o[1],s[1],l)),r[2]=Dt(Nt(o[2],s[2],l)),r[3]=Ct(Nt(o[3],s[3],l)),r}},At.fastMapToColor=At.fastLerp,At.lerp=function(e,t,r){if(t&&t.length&&e>=0&&e<=1){var i=e*(t.length-1),n=Math.floor(i),a=Math.ceil(i),o=At.parse(t[n]),s=At.parse(t[a]),l=i-n,h=At.stringify([Dt(Nt(o[0],s[0],l)),Dt(Nt(o[1],s[1],l)),Dt(Nt(o[2],s[2],l)),Ct(Nt(o[3],s[3],l))],"rgba");return r?{color:h,leftIndex:n,rightIndex:a,value:i}:h}},At.mapToColor=At.lerp,At.modifyHSL=function(e,t,r,i){if(e=At.parse(e))return e=function(e){if(e){var t,r,i=e[0]/255,n=e[1]/255,a=e[2]/255,o=Math.min(i,n,a),s=Math.max(i,n,a),l=s-o,h=(s+o)/2;if(0===l)t=0,r=0;else{r=h<.5?l/(s+o):l/(2-s-o);var u=((s-i)/6+l/2)/l,c=((s-n)/6+l/2)/l,d=((s-a)/6+l/2)/l;i===s?t=d-c:n===s?t=1/3+u-d:a===s&&(t=2/3+c-u),t<0&&(t+=1),t>1&&(t-=1)}var f=[360*t,r,h];return null!=e[3]&&f.push(e[3]),f}}(e),null!=t&&(e[0]=(n=t,(n=Math.round(n))<0?0:n>360?360:n)),null!=r&&(e[1]=Pt(r)),null!=i&&(e[2]=Pt(i)),At.stringify(Gt(e),"rgba");var n},At.modifyAlpha=function(e,t){if((e=At.parse(e))&&null!=t)return e[3]=Ct(t),At.stringify(e,"rgba")},At.stringify=function(e,t){if(e&&e.length){var r=e[0]+","+e[1]+","+e[2];return"rgba"!==t&&"hsva"!==t&&"hsla"!==t||(r+=","+e[3]),t+"("+r+")"}};var Ut=At.parseToFloat,Ht={};function Vt(e){var t=Object.keys(e);t.sort();for(var r=[],i=0;i=0},getEnabledUniforms:function(){return this._enabledUniforms},getTextureUniforms:function(){return this._textureUniforms},set:function(e,t){if("object"==typeof e)for(var r in e){var i=e[r];this.setUniform(r,i)}else this.setUniform(e,t)},get:function(e){var t=this.uniforms[e];if(t)return t.value},attachShader:function(e,t){var r=this.uniforms;this.uniforms=e.createUniforms(),this.shader=e;var i=this.uniforms;this._enabledUniforms=Object.keys(i),this._enabledUniforms.sort(),this._textureUniforms=this._enabledUniforms.filter(function(e){var t=this.uniforms[e].type;return"t"===t||"tv"===t},this);var n=this.vertexDefines,a=this.fragmentDefines;if(this.vertexDefines=xe.clone(e.vertexDefines),this.fragmentDefines=xe.clone(e.fragmentDefines),t){for(var o in r)i[o]&&(i[o].value=r[o].value);xe.defaults(this.vertexDefines,n),xe.defaults(this.fragmentDefines,a)}var s={};for(var l in e.textures)s[l]={shaderType:e.textures[l].shaderType,type:e.textures[l].type,enabled:!(!t||!this._textureStatus[l])&&this._textureStatus[l].enabled};this._textureStatus=s,this._programKey=""},clone:function(){var e=new this.constructor({name:this.name,shader:this.shader});for(var t in this.uniforms)e.uniforms[t].value=this.uniforms[t].value;return e.depthTest=this.depthTest,e.depthMask=this.depthMask,e.transparent=this.transparent,e.blend=this.blend,e.vertexDefines=xe.clone(this.vertexDefines),e.fragmentDefines=xe.clone(this.fragmentDefines),e.enableTexture(this.getEnabledTextures()),e.precision=this.precision,e},define:function(e,t,r){var i=this.vertexDefines,n=this.fragmentDefines;"vertex"!==e&&"fragment"!==e&&"both"!==e&&arguments.length<3&&(r=t,t=e,e="both"),r=null!=r?r:null,"vertex"!==e&&"both"!==e||i[t]!==r&&(i[t]=r,this._programKey=""),"fragment"!==e&&"both"!==e||n[t]!==r&&(n[t]=r,"both"!==e&&(this._programKey=""))},undefine:function(e,t){"vertex"!==e&&"fragment"!==e&&"both"!==e&&arguments.length<2&&(t=e,e="both"),"vertex"!==e&&"both"!==e||this.isDefined("vertex",t)&&(delete this.vertexDefines[t],this._programKey=""),"fragment"!==e&&"both"!==e||this.isDefined("fragment",t)&&(delete this.fragmentDefines[t],"both"!==e&&(this._programKey=""))},isDefined:function(e,t){switch(e){case"vertex":return void 0!==this.vertexDefines[t];case"fragment":return void 0!==this.fragmentDefines[t]}},getDefine:function(e,t){switch(e){case"vertex":return this.vertexDefines[t];case"fragment":return this.fragmentDefines[t]}},enableTexture:function(e){if(Array.isArray(e))for(var t=0;t0&&(n=1/Math.sqrt(n),e[0]=t[0]*n,e[1]=t[1]*n),e},Zt.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]},Zt.cross=function(e,t,r){var i=t[0]*r[1]-t[1]*r[0];return e[0]=e[1]=0,e[2]=i,e},Zt.lerp=function(e,t,r,i){var n=t[0],a=t[1];return e[0]=n+i*(r[0]-n),e[1]=a+i*(r[1]-a),e},Zt.random=function(e,t){t=t||1;var r=2*GLMAT_RANDOM()*Math.PI;return e[0]=Math.cos(r)*t,e[1]=Math.sin(r)*t,e},Zt.transformMat2=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[2]*n,e[1]=r[1]*i+r[3]*n,e},Zt.transformMat2d=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[2]*n+r[4],e[1]=r[1]*i+r[3]*n+r[5],e},Zt.transformMat3=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[3]*n+r[6],e[1]=r[1]*i+r[4]*n+r[7],e},Zt.transformMat4=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[4]*n+r[12],e[1]=r[1]*i+r[5]*n+r[13],e},Zt.forEach=(kt=Zt.create(),function(e,t,r,i,n,a){var o,s;for(t||(t=2),r||(r=0),s=i?Math.min(i*t+r,e.length):e.length,o=r;o0&&i.push("#define "+n.toUpperCase()+"_COUNT "+a)}if(r)for(var o=0;ol.getMaxJointNumber()&&(d.USE_SKIN_MATRICES_TEXTURE=null),c+="\n"+nr(d)+"\n"}a&&(c+="\n#define INSTANCING\n");var f=c+nr(t.vertexDefines,s,u),p=c+nr(t.fragmentDefines,s,u),m=f+"\n"+t.shader.vertex,g=["OES_standard_derivatives","EXT_shader_texture_lod"].filter(function(e){return null!=l.getGLExtension(e)});g.indexOf("EXT_shader_texture_lod")>=0&&(p+="\n#define SUPPORT_TEXTURE_LOD"),g.indexOf("OES_standard_derivatives")>=0&&(p+="\n#define SUPPORT_STANDARD_DERIVATIVES");var _,v,y=function(e){for(var t=[],r=0;r=0){if(1!==s&&4!==s){yr();break}s=2,h=[]}else if(1!==s)if(4!==s)u(c),s=0;else{var d=c;dr.indexOf(d)>=0||fr.indexOf(d)>=0||pr.indexOf(d)>=0?l[o].semantic=d:"ignore"===d||"unconfigurable"===d?l[o].ignore=!0:l[o].value="bool"===e?"true"===d:parseFloat(d)}else l[o].value="bool"===e?"true"===c:parseFloat(c),h=null;else{if(2!==s){yr();break}if(!(h instanceof Array)){yr();break}h.push(+i[++a])}else l[o].value=new Tt.Float32Array(h),h=null,s=5;else if(2===s){if(!(h instanceof Array)){yr();break}h.push(+i[++a])}else s=5;else s=4;else{if(0!==s&&3!==s){yr();break}s=1}}return l}function br(e,t){"object"==typeof e&&(t=e.fragment,e=e.vertex),e=vr(e),t=vr(t),this._shaderID=function(e,t){var r="vertex:"+e+"fragment:"+t;if(gr[r])return gr[r];var i=xe.genGUID();return gr[r]=i,_r[i]={vertex:e,fragment:t},i}(e,t),this._vertexCode=br.parseImport(e),this._fragmentCode=br.parseImport(t),this.attributeSemantics={},this.matrixSemantics={},this.uniformSemantics={},this.matrixSemanticKeys=[],this.uniformTemplates={},this.attributes={},this.textures={},this.vertexDefines={},this.fragmentDefines={},this._parseAttributes(),this._parseUniforms(),this._parseDefines()}br.prototype={constructor:br,createUniforms:function(){var e={};for(var t in this.uniformTemplates){var r=this.uniformTemplates[t];e[t]={type:r.type,value:r.value()}}return e},_parseImport:function(){this._vertexCode=br.parseImport(this.vertex),this._fragmentCode=br.parseImport(this.fragment)},_addSemanticUniform:function(e,t,r){if(dr.indexOf(r)>=0)this.attributeSemantics[r]={symbol:e,type:t};else if(pr.indexOf(r)>=0){var i=!1,n=r;r.match(/TRANSPOSE$/)&&(i=!0,n=r.slice(0,-9)),this.matrixSemantics[r]={symbol:e,type:t,isTranspose:i,semanticNoTranspose:n}}else fr.indexOf(r)>=0&&(this.uniformSemantics[r]={symbol:e,type:t})},_addMaterialUniform:function(e,t,r,i,n,a){a[e]={type:r,value:n?cr.array:i||cr[t],semantic:null}},_parseUniforms:function(){var e={},t=this,r="vertex";function i(e){return null!=e?function(){return e}:null}function n(n,a,o){var s=xr(a,o),l=[];for(var h in s){var u=s[h],c=u.semantic,d=h,f=hr[a],p=i(s[h].value);s[h].isArray&&(d+="["+s[h].arraySize+"]",f+="v"),l.push(d),t._uniformList.push(h),u.ignore||("sampler2D"!==a&&"samplerCube"!==a||(t.textures[h]={shaderType:r,type:a}),c?t._addSemanticUniform(h,f,c):t._addMaterialUniform(h,a,f,p,s[h].isArray,e))}return l.length>0?"uniform "+a+" "+l.join(",")+";\n":""}this._uniformList=[],this._vertexCode=this._vertexCode.replace(or,n),r="fragment",this._fragmentCode=this._fragmentCode.replace(or,n),t.matrixSemanticKeys=Object.keys(this.matrixSemantics),this.uniformTemplates=e},_parseAttributes:function(){var e={},t=this;this._vertexCode=this._vertexCode.replace(sr,function(r,i,n){var a=xr(i,n),o=mr[i]||1,s=[];for(var l in a){var h=a[l].semantic;if(e[l]={type:"float",size:o,semantic:h||null},h){if(dr.indexOf(h)<0)throw new Error('Unkown semantic "'+h+'"');t.attributeSemantics[h]={symbol:l,type:i}}s.push(l)}return"attribute "+i+" "+s.join(",")+";\n"}),this.attributes=e},_parseDefines:function(){var e=this,t="vertex";function r(r,i,n){var a="vertex"===t?e.vertexDefines:e.fragmentDefines;return a[i]||(a[i]="false"!==n&&("true"===n||(n?isNaN(parseFloat(n))?n.trim():parseFloat(n):null))),""}this._vertexCode=this._vertexCode.replace(lr,r),t="fragment",this._fragmentCode=this._fragmentCode.replace(lr,r)},clone:function(){var e=_r[this._shaderID];return new br(e.vertex,e.fragment)}},Object.defineProperty&&(Object.defineProperty(br.prototype,"shaderID",{get:function(){return this._shaderID}}),Object.defineProperty(br.prototype,"vertex",{get:function(){return this._vertexCode}}),Object.defineProperty(br.prototype,"fragment",{get:function(){return this._fragmentCode}}),Object.defineProperty(br.prototype,"uniforms",{get:function(){return this._uniformList}}));var Tr=/(@import)\s*([0-9a-zA-Z_\-\.]*)/g;br.parseImport=function(e){return e=e.replace(Tr,function(e,t,r){return(e=br.source(r))?br.parseImport(e):(console.error('Shader chunk "'+r+'" not existed in library'),"")})};var wr=/(@export)\s*([0-9a-zA-Z_\-\.]*)\s*\n([\s\S]*?)@end/g;br.import=function(e){e.replace(wr,function(e,t,r,i){if(i=i.replace(/(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+\x24)/g,"")){for(var n,a=r.split("."),o=br.codes,s=0;s0&&(a=1/Math.sqrt(a),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a),e},Ar.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},Ar.cross=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[0],s=r[1],l=r[2];return e[0]=n*l-a*s,e[1]=a*o-i*l,e[2]=i*s-n*o,e},Ar.lerp=function(e,t,r,i){var n=t[0],a=t[1],o=t[2];return e[0]=n+i*(r[0]-n),e[1]=a+i*(r[1]-a),e[2]=o+i*(r[2]-o),e},Ar.random=function(e,t){t=t||1;var r=2*qt()*Math.PI,i=2*qt()-1,n=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(r)*n,e[1]=Math.sin(r)*n,e[2]=i*t,e},Ar.transformMat4=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[3]*i+r[7]*n+r[11]*a+r[15];return o=o||1,e[0]=(r[0]*i+r[4]*n+r[8]*a+r[12])/o,e[1]=(r[1]*i+r[5]*n+r[9]*a+r[13])/o,e[2]=(r[2]*i+r[6]*n+r[10]*a+r[14])/o,e},Ar.transformMat3=function(e,t,r){var i=t[0],n=t[1],a=t[2];return e[0]=i*r[0]+n*r[3]+a*r[6],e[1]=i*r[1]+n*r[4]+a*r[7],e[2]=i*r[2]+n*r[5]+a*r[8],e},Ar.transformQuat=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[0],s=r[1],l=r[2],h=r[3],u=h*i+s*a-l*n,c=h*n+l*i-o*a,d=h*a+o*n-s*i,f=-o*i-s*n-l*a;return e[0]=u*h+f*-o+c*-l-d*-s,e[1]=c*h+f*-s+d*-o-u*-l,e[2]=d*h+f*-l+u*-s-c*-o,e},Ar.rotateX=function(e,t,r,i){var n=[],a=[];return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],a[0]=n[0],a[1]=n[1]*Math.cos(i)-n[2]*Math.sin(i),a[2]=n[1]*Math.sin(i)+n[2]*Math.cos(i),e[0]=a[0]+r[0],e[1]=a[1]+r[1],e[2]=a[2]+r[2],e},Ar.rotateY=function(e,t,r,i){var n=[],a=[];return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],a[0]=n[2]*Math.sin(i)+n[0]*Math.cos(i),a[1]=n[1],a[2]=n[2]*Math.cos(i)-n[0]*Math.sin(i),e[0]=a[0]+r[0],e[1]=a[1]+r[1],e[2]=a[2]+r[2],e},Ar.rotateZ=function(e,t,r,i){var n=[],a=[];return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],a[0]=n[0]*Math.cos(i)-n[1]*Math.sin(i),a[1]=n[0]*Math.sin(i)+n[1]*Math.cos(i),a[2]=n[2],e[0]=a[0]+r[0],e[1]=a[1]+r[1],e[2]=a[2]+r[2],e},Ar.forEach=function(){var e=Ar.create();return function(t,r,i,n,a,o){var s,l;for(r||(r=3),i||(i=0),l=n?Math.min(n*r+i,t.length):t.length,s=i;s1?0:Math.acos(n)},br.import(Sr);var Er=Mr.create,Dr={};function Cr(e){return e.material}function Lr(e,t,r){return t.uniforms[r].value}function Pr(e,t,r,i){return r!==i}function Or(e){return!0}function Nr(){}var Rr={float:Ye,byte:ke,ubyte:We,short:je,ushort:Xe};function Ir(e,t,r){this.availableAttributes=e,this.availableAttributeSymbols=t,this.indicesBuffer=r,this.vao=null}function Br(e){var t,r;this.bind=function(e){t||((t=Tt.createCanvas()).width=t.height=1,t.getContext("2d"));var i=e.gl,n=!r;n&&(r=i.createTexture()),i.bindTexture(i.TEXTURE_2D,r),n&&i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,t)},this.unbind=function(e){e.gl.bindTexture(e.gl.TEXTURE_2D,null)},this.isRenderable=function(){return!0}}var zr=be.extend(function(){return{canvas:null,_width:100,_height:100,devicePixelRatio:"undefined"!=typeof window&&window.devicePixelRatio||1,clearColor:[0,0,0,0],clearBit:17664,alpha:!0,depth:!0,stencil:!1,antialias:!0,premultipliedAlpha:!0,preserveDrawingBuffer:!1,throwError:!0,gl:null,viewport:{},maxJointNumber:20,__currentFrameBuffer:null,_viewportStack:[],_clearStack:[],_sceneRendering:null}},function(){this.canvas||(this.canvas=Tt.createCanvas());var e=this.canvas;try{var t={alpha:this.alpha,depth:this.depth,stencil:this.stencil,antialias:this.antialias,premultipliedAlpha:this.premultipliedAlpha,preserveDrawingBuffer:this.preserveDrawingBuffer};if(this.gl=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),!this.gl)throw new Error;this._glinfo=new Se(this.gl),this.gl.targetRenderer&&console.error("Already created a renderer"),this.gl.targetRenderer=this,this.resize()}catch(ch){throw"Error creating WebGL Context "+ch}this._programMgr=new ar(this),this._placeholderTexture=new Br},{resize:function(e,t){var r=this.canvas,i=this.devicePixelRatio;null!=e?(r.style&&(r.style.width=e+"px",r.style.height=t+"px"),r.width=e*i,r.height=t*i,this._width=e,this._height=t):(this._width=r.width/i,this._height=r.height/i),this.setViewport(0,0,this._width,this._height)},getWidth:function(){return this._width},getHeight:function(){return this._height},getViewportAspect:function(){var e=this.viewport;return e.width/e.height},setDevicePixelRatio:function(e){this.devicePixelRatio=e,this.resize(this._width,this._height)},getDevicePixelRatio:function(){return this.devicePixelRatio},getGLExtension:function(e){return this._glinfo.getExtension(e)},getGLParameter:function(e){return this._glinfo.getParameter(e)},setViewport:function(e,t,r,i,n){if("object"==typeof e){var a=e;e=a.x,t=a.y,r=a.width,i=a.height,n=a.devicePixelRatio}n=n||this.devicePixelRatio,this.gl.viewport(e*n,t*n,r*n,i*n),this.viewport={x:e,y:t,width:r,height:i,devicePixelRatio:n}},saveViewport:function(){this._viewportStack.push(this.viewport)},restoreViewport:function(){this._viewportStack.length>0&&this.setViewport(this._viewportStack.pop())},saveClear:function(){this._clearStack.push({clearBit:this.clearBit,clearColor:this.clearColor})},restoreClear:function(){if(this._clearStack.length>0){var e=this._clearStack.pop();this.clearColor=e.clearColor,this.clearBit=e.clearBit}},bindSceneRendering:function(e){this._sceneRendering=e},render:function(e,t,r,i){var n=this.gl,a=this.clearColor;if(this.clearBit){n.colorMask(!0,!0,!0,!0),n.depthMask(!0);var o=this.viewport,s=!1,l=o.devicePixelRatio;(o.width!==this._width||o.height!==this._height||l&&l!==this.devicePixelRatio||o.x||o.y)&&(s=!0,n.enable(n.SCISSOR_TEST),n.scissor(o.x*l,o.y*l,o.width*l,o.height*l)),n.clearColor(a[0],a[1],a[2],a[3]),n.clear(this.clearBit),s&&n.disable(n.SCISSOR_TEST)}if(r||e.update(!1),e.updateLights(),t=t||e.getMainCamera()){t.update();var h=e.updateRenderList(t,!0);this._sceneRendering=e;var u=h.opaque,c=h.transparent,d=e.material;e.trigger("beforerender",this,e,t,h),i?(this.renderPreZ(u,e,t),n.depthFunc(n.LEQUAL)):n.depthFunc(n.LESS);for(var f=Er(),p=Ar.create(),m=0;m0){var s=e[n-1],l=s.joints?s.joints.length:0;if((a.joints?a.joints.length:0)===l&&a.material===s.material&&a.lightGroup===s.lightGroup){a.__program=s.__program;continue}}var h=this._programMgr.getProgram(a,o,t);this.validateProgram(h),a.__program=h}},renderPass:function(e,t,r){this.trigger("beforerenderpass",this,e,t,r),(r=r||{}).getMaterial=r.getMaterial||Cr,r.getUniform=r.getUniform||Lr,r.isMaterialChanged=r.isMaterialChanged||Pr,r.beforeRender=r.beforeRender||Nr,r.afterRender=r.afterRender||Nr;var i=r.ifRender||Or;this.updatePrograms(e,this._sceneRendering,r),r.sortCompare&&e.sort(r.sortCompare);var n=this.viewport,a=n.devicePixelRatio,o=[n.x*a,n.y*a,n.width*a,n.height*a],s=this.devicePixelRatio,l=this.__currentFrameBuffer?[this.__currentFrameBuffer.getTextureWidth(),this.__currentFrameBuffer.getTextureHeight()]:[this._width*s,this._height*s],h=[o[2],o[3]],u=Date.now();t?(Mr.copy(Fr.VIEW,t.viewMatrix.array),Mr.copy(Fr.PROJECTION,t.projectionMatrix.array),Mr.copy(Fr.VIEWINVERSE,t.worldTransform.array)):(Mr.identity(Fr.VIEW),Mr.identity(Fr.PROJECTION),Mr.identity(Fr.VIEWINVERSE)),Mr.multiply(Fr.VIEWPROJECTION,Fr.PROJECTION,Fr.VIEW),Mr.invert(Fr.PROJECTIONINVERSE,Fr.PROJECTION),Mr.invert(Fr.VIEWPROJECTIONINVERSE,Fr.VIEWPROJECTION);for(var c,d,f,p,m,g,_,v,y,x,b,T,w=this.gl,S=this._sceneRendering,M=0;Mthis.getMaxJointNumber()){var a=n.getSubSkinMatricesTexture(e.__uid__,e.joints);t.useTextureSlot(this,a,r),t.setUniform(i,"1i","skinMatricesTexture",r),t.setUniform(i,"1f","skinMatricesTextureSize",a.width)}else{var o=n.getSubSkinMatrices(e.__uid__,e.joints);t.setUniformOfSemantic(i,"SKIN_MATRIX",o)}},_renderObject:function(e,t,r){var i=this.gl,n=e.geometry,a=e.mode;null==a&&(a=4);var o=null,s=e.isInstancedMesh&&e.isInstancedMesh();if(!s||(o=this.getGLExtension("ANGLE_instanced_arrays"))){var l;if(s&&(l=this._bindInstancedAttributes(e,r,o)),t.indicesBuffer){var h=this.getGLExtension("OES_element_index_uint")&&n.indices instanceof Uint32Array?i.UNSIGNED_INT:i.UNSIGNED_SHORT;s?o.drawElementsInstancedANGLE(a,t.indicesBuffer.count,h,0,e.getInstanceCount()):i.drawElements(a,t.indicesBuffer.count,h,0)}else s?o.drawArraysInstancedANGLE(a,0,n.vertexCount,e.getInstanceCount()):i.drawArrays(a,0,n.vertexCount);if(s)for(var u=0;ur?r:e}Gr.add=function(e,t,r){return Ar.add(e.array,t.array,r.array),e._dirty=!0,e},Gr.set=function(e,t,r,i){Ar.set(e.array,t,r,i),e._dirty=!0},Gr.copy=function(e,t){return Ar.copy(e.array,t.array),e._dirty=!0,e},Gr.cross=function(e,t,r){return Ar.cross(e.array,t.array,r.array),e._dirty=!0,e},Gr.dist=function(e,t){return Ar.distance(e.array,t.array)},Gr.distance=Gr.dist,Gr.div=function(e,t,r){return Ar.divide(e.array,t.array,r.array),e._dirty=!0,e},Gr.divide=Gr.div,Gr.dot=function(e,t){return Ar.dot(e.array,t.array)},Gr.len=function(e){return Ar.length(e.array)},Gr.lerp=function(e,t,r,i){return Ar.lerp(e.array,t.array,r.array,i),e._dirty=!0,e},Gr.min=function(e,t,r){return Ar.min(e.array,t.array,r.array),e._dirty=!0,e},Gr.max=function(e,t,r){return Ar.max(e.array,t.array,r.array),e._dirty=!0,e},Gr.mul=function(e,t,r){return Ar.multiply(e.array,t.array,r.array),e._dirty=!0,e},Gr.multiply=Gr.mul,Gr.negate=function(e,t){return Ar.negate(e.array,t.array),e._dirty=!0,e},Gr.normalize=function(e,t){return Ar.normalize(e.array,t.array),e._dirty=!0,e},Gr.random=function(e,t){return Ar.random(e.array,t),e._dirty=!0,e},Gr.scale=function(e,t,r){return Ar.scale(e.array,t.array,r),e._dirty=!0,e},Gr.scaleAndAdd=function(e,t,r,i){return Ar.scaleAndAdd(e.array,t.array,r.array,i),e._dirty=!0,e},Gr.sqrDist=function(e,t){return Ar.sqrDist(e.array,t.array)},Gr.squaredDistance=Gr.sqrDist,Gr.sqrLen=function(e){return Ar.sqrLen(e.array)},Gr.squaredLength=Gr.sqrLen,Gr.sub=function(e,t,r){return Ar.subtract(e.array,t.array,r.array),e._dirty=!0,e},Gr.subtract=Gr.sub,Gr.transformMat3=function(e,t,r){return Ar.transformMat3(e.array,t.array,r.array),e._dirty=!0,e},Gr.transformMat4=function(e,t,r){return Ar.transformMat4(e.array,t.array,r.array),e._dirty=!0,e},Gr.transformQuat=function(e,t,r){return Ar.transformQuat(e.array,t.array,r.array),e._dirty=!0,e};var kr=Math.atan2,Wr=Math.asin,jr=Math.abs;Gr.eulerFromQuat=function(e,t,r){e._dirty=!0,t=t.array;var i=e.array,n=t[0],a=t[1],o=t[2],s=t[3],l=n*n,h=a*a,u=o*o,c=s*s;switch(r=(r||"XYZ").toUpperCase()){case"XYZ":i[0]=kr(2*(n*s-a*o),c-l-h+u),i[1]=Wr(Vr(2*(n*o+a*s),-1,1)),i[2]=kr(2*(o*s-n*a),c+l-h-u);break;case"YXZ":i[0]=Wr(Vr(2*(n*s-a*o),-1,1)),i[1]=kr(2*(n*o+a*s),c-l-h+u),i[2]=kr(2*(n*a+o*s),c-l+h-u);break;case"ZXY":i[0]=Wr(Vr(2*(n*s+a*o),-1,1)),i[1]=kr(2*(a*s-o*n),c-l-h+u),i[2]=kr(2*(o*s-n*a),c-l+h-u);break;case"ZYX":i[0]=kr(2*(n*s+o*a),c-l-h+u),i[1]=Wr(Vr(2*(a*s-n*o),-1,1)),i[2]=kr(2*(n*a+o*s),c+l-h-u);break;case"YZX":i[0]=kr(2*(n*s-o*a),c-l+h-u),i[1]=kr(2*(a*s-n*o),c+l-h-u),i[2]=Wr(Vr(2*(n*a+o*s),-1,1));break;case"XZY":i[0]=kr(2*(n*s+a*o),c-l+h-u),i[1]=kr(2*(n*o+a*s),c+l-h-u),i[2]=Wr(Vr(2*(o*s-n*a),-1,1));break;default:console.warn("Unkown order: "+r)}return e},Gr.eulerFromMat3=function(e,t,r){var i=t.array,n=i[0],a=i[3],o=i[6],s=i[1],l=i[4],h=i[7],u=i[2],c=i[5],d=i[8],f=e.array;switch(r=(r||"XYZ").toUpperCase()){case"XYZ":f[1]=Wr(Vr(o,-1,1)),jr(o)<.99999?(f[0]=kr(-h,d),f[2]=kr(-a,n)):(f[0]=kr(c,l),f[2]=0);break;case"YXZ":f[0]=Wr(-Vr(h,-1,1)),jr(h)<.99999?(f[1]=kr(o,d),f[2]=kr(s,l)):(f[1]=kr(-u,n),f[2]=0);break;case"ZXY":f[0]=Wr(Vr(c,-1,1)),jr(c)<.99999?(f[1]=kr(-u,d),f[2]=kr(-a,l)):(f[1]=0,f[2]=kr(s,n));break;case"ZYX":f[1]=Wr(-Vr(u,-1,1)),jr(u)<.99999?(f[0]=kr(c,d),f[2]=kr(s,n)):(f[0]=0,f[2]=kr(-a,l));break;case"YZX":f[2]=Wr(Vr(s,-1,1)),jr(s)<.99999?(f[0]=kr(-h,l),f[1]=kr(-u,n)):(f[0]=0,f[1]=kr(o,d));break;case"XZY":f[2]=Wr(-Vr(a,-1,1)),jr(a)<.99999?(f[0]=kr(c,l),f[1]=kr(o,n)):(f[0]=kr(-h,d),f[1]=0);break;default:console.warn("Unkown order: "+r)}return e._dirty=!0,e},Object.defineProperties(Gr,{POSITIVE_X:{get:function(){return new Gr(1,0,0)}},NEGATIVE_X:{get:function(){return new Gr(-1,0,0)}},POSITIVE_Y:{get:function(){return new Gr(0,1,0)}},NEGATIVE_Y:{get:function(){return new Gr(0,-1,0)}},POSITIVE_Z:{get:function(){return new Gr(0,0,1)}},NEGATIVE_Z:{get:function(){return new Gr(0,0,-1)}},UP:{get:function(){return new Gr(0,1,0)}},ZERO:{get:function(){return new Gr}}});var Xr,qr,Zr,Yr,Kr,Qr=1e-5,Jr=function(e,t){this.origin=e||new Gr,this.direction=t||new Gr};Jr.prototype={constructor:Jr,intersectPlane:function(e,t){var r=e.normal.array,i=e.distance,n=this.origin.array,a=this.direction.array,o=Ar.dot(r,a);if(0===o)return null;t||(t=new Gr);var s=(Ar.dot(r,n)-i)/o;return Ar.scaleAndAdd(t.array,n,a,-s),t._dirty=!0,t},mirrorAgainstPlane:function(e){var t=Ar.dot(e.normal.array,this.direction.array);Ar.scaleAndAdd(this.direction.array,this.direction.array,e.normal.array,2*-t),this.direction._dirty=!0},distanceToPoint:(Kr=Ar.create(),function(e){Ar.sub(Kr,e,this.origin.array);var t=Ar.dot(Kr,this.direction.array);if(t<0)return Ar.distance(this.origin.array,e);var r=Ar.lenSquared(Kr);return Math.sqrt(r-t*t)}),intersectSphere:function(){var e=Ar.create();return function(t,r,i){var n=this.origin.array,a=this.direction.array;t=t.array,Ar.sub(e,t,n);var o=Ar.dot(e,a),s=Ar.squaredLength(e)-o*o,l=r*r;if(!(s>l)){var h=Math.sqrt(l-s),u=o-h,c=o+h;return i||(i=new Gr),u<0?c<0?null:(Ar.scaleAndAdd(i.array,n,a,c),i):(Ar.scaleAndAdd(i.array,n,a,u),i)}}}(),intersectBoundingBox:function(e,t){var r,i,n,a,o,s,l=this.direction.array,h=this.origin.array,u=e.min.array,c=e.max.array,d=1/l[0],f=1/l[1],p=1/l[2];if(d>=0?(r=(u[0]-h[0])*d,i=(c[0]-h[0])*d):(i=(u[0]-h[0])*d,r=(c[0]-h[0])*d),f>=0?(n=(u[1]-h[1])*f,a=(c[1]-h[1])*f):(a=(u[1]-h[1])*f,n=(c[1]-h[1])*f),r>a||n>i)return null;if((n>r||r!=r)&&(r=n),(a=0?(o=(u[2]-h[2])*p,s=(c[2]-h[2])*p):(s=(u[2]-h[2])*p,o=(c[2]-h[2])*p),r>s||o>i)return null;if((o>r||r!=r)&&(r=o),(s=0?r:i;return t||(t=new Gr),Ar.scaleAndAdd(t.array,h,l,m),t},intersectTriangle:(Xr=Ar.create(),qr=Ar.create(),Zr=Ar.create(),Yr=Ar.create(),function(e,t,r,i,n,a){var o=this.direction.array,s=this.origin.array;e=e.array,t=t.array,r=r.array,Ar.sub(Xr,t,e),Ar.sub(qr,r,e),Ar.cross(Yr,qr,o);var l=Ar.dot(Xr,Yr);if(i){if(l>-1e-5)return null}else if(l>-1e-5&&l1)return null;Ar.cross(Yr,Xr,Zr);var u=Ar.dot(o,Yr)/l;if(u<0||u>1||h+u>1)return null;Ar.cross(Yr,Xr,qr);var c=-Ar.dot(Zr,Yr)/l;return c<0?null:(n||(n=new Gr),a&&Gr.set(a,1-h-u,h,u),Ar.scaleAndAdd(n.array,s,o,c),n)}),applyTransform:function(e){Gr.add(this.direction,this.direction,this.origin),Gr.transformMat4(this.origin,this.origin,e),Gr.transformMat4(this.direction,this.direction,e),Gr.sub(this.direction,this.direction,this.origin),Gr.normalize(this.direction,this.direction)},copy:function(e){Gr.copy(this.origin,e.origin),Gr.copy(this.direction,e.direction)},clone:function(){var e=new Jr;return e.copy(this),e}};var $r={create:function(){var e=new Xt(4);return e[0]=0,e[1]=0,e[2]=0,e[3]=0,e},clone:function(e){var t=new Xt(4);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t},fromValues:function(e,t,r,i){var n=new Xt(4);return n[0]=e,n[1]=t,n[2]=r,n[3]=i,n},copy:function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e},set:function(e,t,r,i,n){return e[0]=t,e[1]=r,e[2]=i,e[3]=n,e},add:function(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e},subtract:function(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e[3]=t[3]-r[3],e}};$r.sub=$r.subtract,$r.multiply=function(e,t,r){return e[0]=t[0]*r[0],e[1]=t[1]*r[1],e[2]=t[2]*r[2],e[3]=t[3]*r[3],e},$r.mul=$r.multiply,$r.divide=function(e,t,r){return e[0]=t[0]/r[0],e[1]=t[1]/r[1],e[2]=t[2]/r[2],e[3]=t[3]/r[3],e},$r.div=$r.divide,$r.min=function(e,t,r){return e[0]=Math.min(t[0],r[0]),e[1]=Math.min(t[1],r[1]),e[2]=Math.min(t[2],r[2]),e[3]=Math.min(t[3],r[3]),e},$r.max=function(e,t,r){return e[0]=Math.max(t[0],r[0]),e[1]=Math.max(t[1],r[1]),e[2]=Math.max(t[2],r[2]),e[3]=Math.max(t[3],r[3]),e},$r.scale=function(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e},$r.scaleAndAdd=function(e,t,r,i){return e[0]=t[0]+r[0]*i,e[1]=t[1]+r[1]*i,e[2]=t[2]+r[2]*i,e[3]=t[3]+r[3]*i,e},$r.distance=function(e,t){var r=t[0]-e[0],i=t[1]-e[1],n=t[2]-e[2],a=t[3]-e[3];return Math.sqrt(r*r+i*i+n*n+a*a)},$r.dist=$r.distance,$r.squaredDistance=function(e,t){var r=t[0]-e[0],i=t[1]-e[1],n=t[2]-e[2],a=t[3]-e[3];return r*r+i*i+n*n+a*a},$r.sqrDist=$r.squaredDistance,$r.length=function(e){var t=e[0],r=e[1],i=e[2],n=e[3];return Math.sqrt(t*t+r*r+i*i+n*n)},$r.len=$r.length,$r.squaredLength=function(e){var t=e[0],r=e[1],i=e[2],n=e[3];return t*t+r*r+i*i+n*n},$r.sqrLen=$r.squaredLength,$r.negate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e},$r.inverse=function(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e[3]=1/t[3],e},$r.normalize=function(e,t){var r=t[0],i=t[1],n=t[2],a=t[3],o=r*r+i*i+n*n+a*a;return o>0&&(o=1/Math.sqrt(o),e[0]=t[0]*o,e[1]=t[1]*o,e[2]=t[2]*o,e[3]=t[3]*o),e},$r.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]},$r.lerp=function(e,t,r,i){var n=t[0],a=t[1],o=t[2],s=t[3];return e[0]=n+i*(r[0]-n),e[1]=a+i*(r[1]-a),e[2]=o+i*(r[2]-o),e[3]=s+i*(r[3]-s),e},$r.random=function(e,t){return t=t||1,e[0]=qt(),e[1]=qt(),e[2]=qt(),e[3]=qt(),$r.normalize(e,e),$r.scale(e,e,t),e},$r.transformMat4=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=t[3];return e[0]=r[0]*i+r[4]*n+r[8]*a+r[12]*o,e[1]=r[1]*i+r[5]*n+r[9]*a+r[13]*o,e[2]=r[2]*i+r[6]*n+r[10]*a+r[14]*o,e[3]=r[3]*i+r[7]*n+r[11]*a+r[15]*o,e},$r.transformQuat=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[0],s=r[1],l=r[2],h=r[3],u=h*i+s*a-l*n,c=h*n+l*i-o*a,d=h*a+o*n-s*i,f=-o*i-s*n-l*a;return e[0]=u*h+f*-o+c*-l-d*-s,e[1]=c*h+f*-s+d*-o-u*-l,e[2]=d*h+f*-l+u*-s-c*-o,e},$r.forEach=function(){var e=$r.create();return function(t,r,i,n,a,o){var s,l;for(r||(r=4),i||(i=0),l=n?Math.min(n*r+i,t.length):t.length,s=i;s.999999?(e[0]=0,e[1]=0,e[2]=0,e[3]=1,e):(Ar.cross(ti,t,r),e[0]=ti[0],e[1]=ti[1],e[2]=ti[2],e[3]=1+i,ai.normalize(e,e))}),ai.setAxes=(ni=ei.create(),function(e,t,r,i){return ni[0]=r[0],ni[3]=r[1],ni[6]=r[2],ni[1]=i[0],ni[4]=i[1],ni[7]=i[2],ni[2]=-t[0],ni[5]=-t[1],ni[8]=-t[2],ai.normalize(e,ai.fromMat3(e,ni))}),ai.clone=$r.clone,ai.fromValues=$r.fromValues,ai.copy=$r.copy,ai.set=$r.set,ai.identity=function(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e},ai.setAxisAngle=function(e,t,r){r*=.5;var i=Math.sin(r);return e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=Math.cos(r),e},ai.add=$r.add,ai.multiply=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=t[3],s=r[0],l=r[1],h=r[2],u=r[3];return e[0]=i*u+o*s+n*h-a*l,e[1]=n*u+o*l+a*s-i*h,e[2]=a*u+o*h+i*l-n*s,e[3]=o*u-i*s-n*l-a*h,e},ai.mul=ai.multiply,ai.scale=$r.scale,ai.rotateX=function(e,t,r){r*=.5;var i=t[0],n=t[1],a=t[2],o=t[3],s=Math.sin(r),l=Math.cos(r);return e[0]=i*l+o*s,e[1]=n*l+a*s,e[2]=a*l-n*s,e[3]=o*l-i*s,e},ai.rotateY=function(e,t,r){r*=.5;var i=t[0],n=t[1],a=t[2],o=t[3],s=Math.sin(r),l=Math.cos(r);return e[0]=i*l-a*s,e[1]=n*l+o*s,e[2]=a*l+i*s,e[3]=o*l-n*s,e},ai.rotateZ=function(e,t,r){r*=.5;var i=t[0],n=t[1],a=t[2],o=t[3],s=Math.sin(r),l=Math.cos(r);return e[0]=i*l+n*s,e[1]=n*l-i*s,e[2]=a*l+o*s,e[3]=o*l-a*s,e},ai.calculateW=function(e,t){var r=t[0],i=t[1],n=t[2];return e[0]=r,e[1]=i,e[2]=n,e[3]=Math.sqrt(Math.abs(1-r*r-i*i-n*n)),e},ai.dot=$r.dot,ai.lerp=$r.lerp,ai.slerp=function(e,t,r,i){var n,a,o,s,l,h=t[0],u=t[1],c=t[2],d=t[3],f=r[0],p=r[1],m=r[2],g=r[3];return(a=h*f+u*p+c*m+d*g)<0&&(a=-a,f=-f,p=-p,m=-m,g=-g),1-a>1e-6?(n=Math.acos(a),o=Math.sin(n),s=Math.sin((1-i)*n)/o,l=Math.sin(i*n)/o):(s=1-i,l=i),e[0]=s*h+l*f,e[1]=s*u+l*p,e[2]=s*c+l*m,e[3]=s*d+l*g,e},ai.invert=function(e,t){var r=t[0],i=t[1],n=t[2],a=t[3],o=r*r+i*i+n*n+a*a,s=o?1/o:0;return e[0]=-r*s,e[1]=-i*s,e[2]=-n*s,e[3]=a*s,e},ai.conjugate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e},ai.length=$r.length,ai.len=ai.length,ai.squaredLength=$r.squaredLength,ai.sqrLen=ai.squaredLength,ai.normalize=$r.normalize,ai.fromMat3=function(e,t){var r,i=t[0]+t[4]+t[8];if(i>0)r=Math.sqrt(i+1),e[3]=.5*r,r=.5/r,e[0]=(t[5]-t[7])*r,e[1]=(t[6]-t[2])*r,e[2]=(t[1]-t[3])*r;else{var n=0;t[4]>t[0]&&(n=1),t[8]>t[3*n+n]&&(n=2);var a=(n+1)%3,o=(n+2)%3;r=Math.sqrt(t[3*n+n]-t[3*a+a]-t[3*o+o]+1),e[n]=.5*r,r=.5/r,e[3]=(t[3*a+o]-t[3*o+a])*r,e[a]=(t[3*a+n]+t[3*n+a])*r,e[o]=(t[3*o+n]+t[3*n+o])*r}return e};var oi,si,li,hi,ui=function(){this._axisX=new Gr,this._axisY=new Gr,this._axisZ=new Gr,this.array=Mr.create(),this._dirty=!0};ui.prototype={constructor:ui,setArray:function(e){for(var t=0;t0){var t=this.min,r=this.max,i=t.array,n=r.array;wi(i,e[0]),wi(n,e[0]);for(var a=1;an[0]&&(n[0]=o[0]),o[1]>n[1]&&(n[1]=o[1]),o[2]>n[2]&&(n[2]=o[2])}t._dirty=!0,r._dirty=!0}},union:function(e){var t=this.min,r=this.max;return Ar.min(t.array,t.array,e.min.array),Ar.max(r.array,r.array,e.max.array),t._dirty=!0,r._dirty=!0,this},intersection:function(e){var t=this.min,r=this.max;return Ar.max(t.array,t.array,e.min.array),Ar.min(r.array,r.array,e.max.array),t._dirty=!0,r._dirty=!0,this},intersectBoundingBox:function(e){var t=this.min.array,r=this.max.array,i=e.min.array,n=e.max.array;return!(t[0]>n[0]||t[1]>n[1]||t[2]>n[2]||r[0]=n[0]&&r[1]>=n[1]&&r[2]>=n[2]},containPoint:function(e){var t=this.min.array,r=this.max.array,i=e.array;return t[0]<=i[0]&&t[1]<=i[1]&&t[2]<=i[2]&&r[0]>=i[0]&&r[1]>=i[1]&&r[2]>=i[2]},isFinite:function(){var e=this.min.array,t=this.max.array;return isFinite(e[0])&&isFinite(e[1])&&isFinite(e[2])&&isFinite(t[0])&&isFinite(t[1])&&isFinite(t[2])},applyTransform:function(e){this.transformFrom(this,e)},transformFrom:(gi=Ar.create(),_i=Ar.create(),vi=Ar.create(),yi=Ar.create(),xi=Ar.create(),bi=Ar.create(),function(e,t){var r=e.min.array,i=e.max.array,n=t.array;return gi[0]=n[0]*r[0],gi[1]=n[1]*r[0],gi[2]=n[2]*r[0],_i[0]=n[0]*i[0],_i[1]=n[1]*i[0],_i[2]=n[2]*i[0],vi[0]=n[4]*r[1],vi[1]=n[5]*r[1],vi[2]=n[6]*r[1],yi[0]=n[4]*i[1],yi[1]=n[5]*i[1],yi[2]=n[6]*i[1],xi[0]=n[8]*r[2],xi[1]=n[9]*r[2],xi[2]=n[10]*r[2],bi[0]=n[8]*i[2],bi[1]=n[9]*i[2],bi[2]=n[10]*i[2],r=this.min.array,i=this.max.array,r[0]=Math.min(gi[0],_i[0])+Math.min(vi[0],yi[0])+Math.min(xi[0],bi[0])+n[12],r[1]=Math.min(gi[1],_i[1])+Math.min(vi[1],yi[1])+Math.min(xi[1],bi[1])+n[13],r[2]=Math.min(gi[2],_i[2])+Math.min(vi[2],yi[2])+Math.min(xi[2],bi[2])+n[14],i[0]=Math.max(gi[0],_i[0])+Math.max(vi[0],yi[0])+Math.max(xi[0],bi[0])+n[12],i[1]=Math.max(gi[1],_i[1])+Math.max(vi[1],yi[1])+Math.max(xi[1],bi[1])+n[13],i[2]=Math.max(gi[2],_i[2])+Math.max(vi[2],yi[2])+Math.max(xi[2],bi[2])+n[14],this.min._dirty=!0,this.max._dirty=!0,this}),applyProjection:function(e){var t=this.min.array,r=this.max.array,i=e.array,n=t[0],a=t[1],o=t[2],s=r[0],l=r[1],h=t[2],u=r[0],c=r[1],d=r[2];if(1===i[15])t[0]=i[0]*n+i[12],t[1]=i[5]*a+i[13],r[2]=i[10]*o+i[14],r[0]=i[0]*u+i[12],r[1]=i[5]*c+i[13],t[2]=i[10]*d+i[14];else{var f=-1/o;t[0]=i[0]*n*f,t[1]=i[5]*a*f,r[2]=(i[10]*o+i[14])*f,f=-1/h,r[0]=i[0]*s*f,r[1]=i[5]*l*f,f=-1/d,t[2]=(i[10]*d+i[14])*f}return this.min._dirty=!0,this.max._dirty=!0,this},updateVertices:function(){var e=this.vertices;if(!e){e=[];for(var t=0;t<8;t++)e[t]=Ar.fromValues(0,0,0);this.vertices=e}var r=this.min.array,i=this.max.array;return Ti(e[0],r[0],r[1],r[2]),Ti(e[1],r[0],i[1],r[2]),Ti(e[2],i[0],r[1],r[2]),Ti(e[3],i[0],i[1],r[2]),Ti(e[4],r[0],r[1],i[2]),Ti(e[5],r[0],i[1],i[2]),Ti(e[6],i[0],r[1],i[2]),Ti(e[7],i[0],i[1],i[2]),this},copy:function(e){var t=this.min,r=this.max;return wi(t.array,e.min.array),wi(r.array,e.max.array),t._dirty=!0,r._dirty=!0,this},clone:function(){var e=new Si;return e.copy(this),e}};var Mi,Ai,Ei,Di=0,Ci=be.extend({name:"",position:null,rotation:null,scale:null,worldTransform:null,localTransform:null,autoUpdateLocalTransform:!0,_parent:null,_scene:null,_needsUpdateWorldTransform:!0,_inIterating:!1,__depth:0},function(){this.name||(this.name=(this.type||"NODE")+"_"+Di++),this.position||(this.position=new Gr),this.rotation||(this.rotation=new fi),this.scale||(this.scale=new Gr(1,1,1)),this.worldTransform=new ui,this.localTransform=new ui,this._children=[]},{target:null,invisible:!1,isSkinnedMesh:function(){return!1},isRenderable:function(){return!1},setName:function(e){var t=this._scene;if(t){var r=t._nodeRepository;delete r[this.name],r[e]=this}this.name=e},add:function(e){var t=e._parent;if(t!==this){t&&t.remove(e),e._parent=this,this._children.push(e);var r=this._scene;r&&r!==e.scene&&e.traverse(this._addSelfToScene,this),e._needsUpdateWorldTransform=!0}},remove:function(e){var t=this._children,r=t.indexOf(e);r<0||(t.splice(r,1),e._parent=null,this._scene&&e.traverse(this._removeSelfFromScene,this))},removeAll:function(){for(var e=this._children,t=0;t0},beforeRender:function(e){},afterRender:function(e,t){},getBoundingBox:function(e,t){return t=Ci.prototype.getBoundingBox.call(this,e,t),this.geometry&&this.geometry.boundingBox&&t.union(this.geometry.boundingBox),t},clone:(Ei=["castShadow","receiveShadow","mode","culling","cullFace","frontFace","frustumCulling","renderOrder","lineWidth","ignorePicking","ignorePreZ","ignoreGBuffer"],function(){var e=Ci.prototype.clone.call(this);e.geometry=this.geometry,e.material=this.material;for(var t=0;t=0&&g[p]>1e-4&&(Ar.transformMat4(y,m,d[_[p]]),Ar.scaleAndAdd(v,v,y,g[p]));x.set(f,v)}}for(f=0;f>t;return e+1},dispose:function(e){var t=this._cache;t.use(e.__uid__);var r=t.get("webgl_texture");r&&e.gl.deleteTexture(r),t.deleteContext(e.__uid__)},isRenderable:function(){},isPowerOfTwo:function(){}});Object.defineProperty(Gi.prototype,"width",{get:function(){return this._width},set:function(e){this._width=e}}),Object.defineProperty(Gi.prototype,"height",{get:function(){return this._height},set:function(e){this._height=e}}),Gi.BYTE=ke,Gi.UNSIGNED_BYTE=We,Gi.SHORT=je,Gi.UNSIGNED_SHORT=Xe,Gi.INT=qe,Gi.UNSIGNED_INT=Ze,Gi.FLOAT=Ye,Gi.HALF_FLOAT=36193,Gi.UNSIGNED_INT_24_8_WEBGL=34042,Gi.DEPTH_COMPONENT=Ke,Gi.DEPTH_STENCIL=mt,Gi.ALPHA=Qe,Gi.RGB=Je,Gi.RGBA=$e,Gi.LUMINANCE=et,Gi.LUMINANCE_ALPHA=tt,Gi.SRGB=35904,Gi.SRGB_ALPHA=35906,Gi.COMPRESSED_RGB_S3TC_DXT1_EXT=33776,Gi.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777,Gi.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778,Gi.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779,Gi.NEAREST=rt,Gi.LINEAR=it,Gi.NEAREST_MIPMAP_NEAREST=nt,Gi.LINEAR_MIPMAP_NEAREST=at,Gi.NEAREST_MIPMAP_LINEAR=ot,Gi.LINEAR_MIPMAP_LINEAR=st,Gi.REPEAT=ut,Gi.CLAMP_TO_EDGE=ct,Gi.MIRRORED_REPEAT=dt;var Ui=Li.extend({skeleton:null,joints:null},function(){this.joints||(this.joints=[])},{offsetMatrix:null,isInstancedMesh:function(){return!1},isSkinnedMesh:function(){return!!(this.skeleton&&this.joints&&this.joints.length>0)},clone:function(){var e=Li.prototype.clone.call(this);return e.skeleton=this.skeleton,this.joints&&(e.joints=this.joints.slice()),e}});Ui.POINTS=De,Ui.LINES=Ce,Ui.LINE_LOOP=Le,Ui.LINE_STRIP=Pe,Ui.TRIANGLES=Oe,Ui.TRIANGLE_STRIP=Ne,Ui.TRIANGLE_FAN=Re,Ui.BACK=Ge,Ui.FRONT=Fe,Ui.FRONT_AND_BACK=Ue,Ui.CW=He,Ui.CCW=Ve;var Hi={isPowerOfTwo:function(e){return!(e&e-1)},nextPowerOfTwo:function(e){return e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e},nearestPowerOfTwo:function(e){return Math.pow(2,Math.round(Math.log(e)/Math.LN2))}},Vi=Hi.isPowerOfTwo;function ki(e){return Math.pow(2,Math.round(Math.log(e)/Math.LN2))}var Wi=Gi.extend(function(){return{image:null,pixels:null,mipmaps:[],convertToPOT:!1}},{textureType:"texture2D",update:function(e){var t=e.gl;t.bindTexture(t.TEXTURE_2D,this._cache.get("webgl_texture")),this.updateCommon(e);var r=this.format,i=this.type,n=!(!this.convertToPOT||this.mipmaps.length||!this.image||this.wrapS!==Gi.REPEAT&&this.wrapT!==Gi.REPEAT||!this.NPOT);t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,n?this.wrapS:this.getAvailableWrapS()),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,n?this.wrapT:this.getAvailableWrapT()),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,n?this.magFilter:this.getAvailableMagFilter()),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,n?this.minFilter:this.getAvailableMinFilter());var a=e.getGLExtension("EXT_texture_filter_anisotropic");if(a&&this.anisotropic>1&&t.texParameterf(t.TEXTURE_2D,a.TEXTURE_MAX_ANISOTROPY_EXT,this.anisotropic),36193===i&&(e.getGLExtension("OES_texture_half_float")||(i=Ye)),this.mipmaps.length)for(var o=this.width,s=this.height,l=0;l=Gi.COMPRESSED_RGB_S3TC_DXT1_EXT?e.compressedTexImage2D(e.TEXTURE_2D,r,a,i,n,0,t.pixels):e.texImage2D(e.TEXTURE_2D,r,a,i,n,0,a,o,t.pixels)},generateMipmap:function(e){var t=e.gl;this.useMipmap&&!this.NPOT&&(t.bindTexture(t.TEXTURE_2D,this._cache.get("webgl_texture")),t.generateMipmap(t.TEXTURE_2D))},isPowerOfTwo:function(){return Vi(this.width)&&Vi(this.height)},isRenderable:function(){return this.image?this.image.width>0&&this.image.height>0:!(!this.width||!this.height)},bind:function(e){e.gl.bindTexture(e.gl.TEXTURE_2D,this.getWebGLTexture(e))},unbind:function(e){e.gl.bindTexture(e.gl.TEXTURE_2D,null)},load:function(e,t){var r=Tt.createImage();t&&(r.crossOrigin=t);var i=this;return r.onload=function(){i.dirty(),i.trigger("success",i)},r.onerror=function(){i.trigger("error",i)},r.src=e,this.image=r,this}});function ji(e){return{byte:Tt.Int8Array,ubyte:Tt.Uint8Array,short:Tt.Int16Array,ushort:Tt.Uint16Array}[e]||Tt.Float32Array}function Xi(e){return"attr_"+e}function qi(e,t,r,i){switch(this.name=e,this.type=t,this.size=r,this.semantic=i||"",this.value=null,r){case 1:this.get=function(e){return this.value[e]},this.set=function(e,t){this.value[e]=t},this.copy=function(e,t){this.value[e]=this.value[e]};break;case 2:this.get=function(e,t){var r=this.value;return t[0]=r[2*e],t[1]=r[2*e+1],t},this.set=function(e,t){var r=this.value;r[2*e]=t[0],r[2*e+1]=t[1]},this.copy=function(e,t){var r=this.value;t*=2,r[e*=2]=r[t],r[e+1]=r[t+1]};break;case 3:this.get=function(e,t){var r=3*e,i=this.value;return t[0]=i[r],t[1]=i[r+1],t[2]=i[r+2],t},this.set=function(e,t){var r=3*e,i=this.value;i[r]=t[0],i[r+1]=t[1],i[r+2]=t[2]},this.copy=function(e,t){var r=this.value;t*=3,r[e*=3]=r[t],r[e+1]=r[t+1],r[e+2]=r[t+2]};break;case 4:this.get=function(e,t){var r=this.value,i=4*e;return t[0]=r[i],t[1]=r[i+1],t[2]=r[i+2],t[3]=r[i+3],t},this.set=function(e,t){var r=this.value,i=4*e;r[i]=t[0],r[i+1]=t[1],r[i+2]=t[2],r[i+3]=t[3]},this.copy=function(e,t){var r=this.value;t*=4,r[e*=4]=r[t],r[e+1]=r[t+1],r[e+2]=r[t+2],r[e+3]=r[t+3]}}}function Zi(e,t,r,i,n){this.name=e,this.type=t,this.buffer=r,this.size=i,this.semantic=n,this.symbol="",this.needsRemove=!1}function Yi(e){this.buffer=e,this.count=0}Object.defineProperty(Wi.prototype,"width",{get:function(){return this.image?this.image.width:this._width},set:function(e){this.image?console.warn("Texture from image can't set width"):(this._width!==e&&this.dirty(),this._width=e)}}),Object.defineProperty(Wi.prototype,"height",{get:function(){return this.image?this.image.height:this._height},set:function(e){this.image?console.warn("Texture from image can't set height"):(this._height!==e&&this.dirty(),this._height=e)}}),qi.prototype.init=function(e){if(!this.value||this.value.length!==e*this.size){var t=ji(this.type);this.value=new t(e*this.size)}},qi.prototype.fromArray=function(e){var t,r=ji(this.type);if(e[0]&&e[0].length){var i=0,n=this.size;t=new r(e.length*n);for(var a=0;a=0){t||(t=[]);var r=this.indices;return t[0]=r[3*e],t[1]=r[3*e+1],t[2]=r[3*e+2],t}},setTriangleIndices:function(e,t){var r=this.indices;r[3*e]=t[0],r[3*e+1]=t[1],r[3*e+2]=t[2]},isUseIndices:function(){return!!this.indices},initIndicesFromArray:function(e){var t,r=this.vertexCount>65535?Tt.Uint32Array:Tt.Uint16Array;if(e[0]&&e[0].length){var i=0;t=new r(3*e.length);for(var n=0;n=0&&(t.splice(r,1),delete this.attributes[e],!0)},getAttribute:function(e){return this.attributes[e]},getEnabledAttributes:function(){var e=this._enabledAttributes,t=this._attributeList;if(e)return e;for(var r=[],i=this.vertexCount,n=0;na[0]&&(a[0]=s),l>a[1]&&(a[1]=l),h>a[2]&&(a[2]=h)}r._dirty=!0,i._dirty=!0}},generateVertexNormals:function(){if(this.vertexCount){var e=this.indices,t=this.attributes,r=t.position.value,i=t.normal.value;if(i&&i.length===r.length)for(var n=0;n65535&&(this.indices=new Tt.Uint32Array(this.indices));for(var e=this.attributes,t=this.indices,r=this.getEnabledAttributes(),i={},n=0;nthis.distance,n=1;n<8;n++)if(Ar.dot(t[n].array,r)>this.distance!=i)return!0},intersectLine:(dn=Ar.create(),function(e,t,r){var i=this.distanceToPoint(e),n=this.distanceToPoint(t);if(i>0&&n>0||i<0&&n<0)return null;var a=this.normal.array,o=this.distance,s=e.array;Ar.sub(dn,t.array,e.array),Ar.normalize(dn,dn);var l=Ar.dot(a,dn);if(0===l)return null;r||(r=new Gr);var h=(Ar.dot(a,s)-o)/l;return Ar.scaleAndAdd(r.array,s,dn,-h),r._dirty=!0,r}),applyTransform:(hn=Mr.create(),un=$r.create(),cn=$r.create(),cn[3]=1,function(e){e=e.array,Ar.scale(cn,this.normal.array,this.distance),$r.transformMat4(cn,cn,e),this.distance=Ar.dot(cn,this.normal.array),Mr.invert(hn,e),Mr.transpose(hn,hn),un[3]=0,Ar.copy(un,this.normal.array),$r.transformMat4(un,un,hn),Ar.copy(this.normal.array,un)}),copy:function(e){Ar.copy(this.normal.array,e.normal.array),this.normal._dirty=!0,this.distance=e.distance},clone:function(){var e=new pn;return e.copy(this),e}};var mn,gn=Ar.set,_n=Ar.copy,vn=Ar.transformMat4,yn=Math.min,xn=Math.max,bn=function(){this.planes=[];for(var e=0;e<6;e++)this.planes.push(new pn);for(this.boundingBox=new Si,this.vertices=[],e=0;e<8;e++)this.vertices[e]=Ar.fromValues(0,0,0)};bn.prototype={setFromProjection:function(e){var t=this.planes,r=e.array,i=r[0],n=r[1],a=r[2],o=r[3],s=r[4],l=r[5],h=r[6],u=r[7],c=r[8],d=r[9],f=r[10],p=r[11],m=r[12],g=r[13],_=r[14],v=r[15];gn(t[0].normal.array,o-i,u-s,p-c),t[0].distance=-(v-m),t[0].normalize(),gn(t[1].normal.array,o+i,u+s,p+c),t[1].distance=-(v+m),t[1].normalize(),gn(t[2].normal.array,o+n,u+l,p+d),t[2].distance=-(v+g),t[2].normalize(),gn(t[3].normal.array,o-n,u-l,p-d),t[3].distance=-(v-g),t[3].normalize(),gn(t[4].normal.array,o-a,u-h,p-f),t[4].distance=-(v-_),t[4].normalize(),gn(t[5].normal.array,o+a,u+h,p+f),t[5].distance=-(v+_),t[5].normalize();var y=this.boundingBox,x=this.vertices;if(0===v){var b=l/i,T=-_/(f-1),w=-_/(f+1),S=-w/l,M=-T/l;y.min.set(-S*b,-S,w),y.max.set(S*b,S,T),gn(x[0],-S*b,-S,w),gn(x[1],-S*b,S,w),gn(x[2],S*b,-S,w),gn(x[3],S*b,S,w),gn(x[4],-M*b,-M,T),gn(x[5],-M*b,M,T),gn(x[6],M*b,-M,T),gn(x[7],M*b,M,T)}else{var A=(-1-m)/i,E=(1-m)/i,D=(1-g)/l,C=(-1-g)/l,L=(-1-_)/f,P=(1-_)/f;y.min.set(Math.min(A,E),Math.min(C,D),Math.min(P,L)),y.max.set(Math.max(E,A),Math.max(D,C),Math.max(L,P));var O=y.min.array,N=y.max.array;gn(x[0],O[0],O[1],O[2]),gn(x[1],O[0],N[1],O[2]),gn(x[2],N[0],O[1],O[2]),gn(x[3],N[0],N[1],O[2]),gn(x[4],O[0],O[1],N[2]),gn(x[5],O[0],N[1],N[2]),gn(x[6],N[0],O[1],N[2]),gn(x[7],N[0],N[1],N[2])}},getTransformedBoundingBox:(mn=Ar.create(),function(e,t){var r=this.vertices,i=t.array,n=e.min,a=e.max,o=n.array,s=a.array,l=r[0];vn(mn,l,i),_n(o,mn),_n(s,mn);for(var h=1;h<8;h++)l=r[h],vn(mn,l,i),o[0]=yn(mn[0],o[0]),o[1]=yn(mn[1],o[1]),o[2]=yn(mn[2],o[2]),s[0]=xn(mn[0],s[0]),s[1]=xn(mn[1],s[1]),s[2]=xn(mn[2],s[2]);return n._dirty=!0,a._dirty=!0,e})};var Tn,wn=Ci.extend(function(){return{projectionMatrix:new ui,invProjectionMatrix:new ui,viewMatrix:new ui,frustum:new bn}},function(){this.update(!0)},{update:function(e){Ci.prototype.update.call(this,e),ui.invert(this.viewMatrix,this.worldTransform),this.updateProjectionMatrix(),ui.invert(this.invProjectionMatrix,this.projectionMatrix),this.frustum.setFromProjection(this.projectionMatrix)},setViewMatrix:function(e){ui.copy(this.viewMatrix,e),ui.invert(this.worldTransform,e),this.decomposeWorldTransform()},decomposeProjectionMatrix:function(){},setProjectionMatrix:function(e){ui.copy(this.projectionMatrix,e),ui.invert(this.invProjectionMatrix,e),this.decomposeProjectionMatrix()},updateProjectionMatrix:function(){},castRay:(Tn=$r.create(),function(e,t){var r=void 0!==t?t:new Jr,i=e.array[0],n=e.array[1];return $r.set(Tn,i,n,-1,1),$r.transformMat4(Tn,Tn,this.invProjectionMatrix.array),$r.transformMat4(Tn,Tn,this.worldTransform.array),Ar.scale(r.origin.array,Tn,1/Tn[3]),$r.set(Tn,i,n,1,1),$r.transformMat4(Tn,Tn,this.invProjectionMatrix.array),$r.transformMat4(Tn,Tn,this.worldTransform.array),Ar.scale(Tn,Tn,1/Tn[3]),Ar.sub(r.direction.array,Tn,r.origin.array),Ar.normalize(r.direction.array,r.direction.array),r.direction._dirty=!0,r.origin._dirty=!0,r})}),Sn=Mr.create(),Mn=Mr.create(),An={};function En(e){var t=[],r=Object.keys(e);r.sort();for(var i=0;i0&&console.warn("Found multiple camera in one scene. Use the fist one."),this._cameraList.push(e)):e instanceof fn&&this.lights.push(e),e.name&&(this._nodeRepository[e.name]=e)},removeFromScene:function(e){var t;e instanceof wn?(t=this._cameraList.indexOf(e))>=0&&this._cameraList.splice(t,1):e instanceof fn&&(t=this.lights.indexOf(e))>=0&&this.lights.splice(t,1),e.name&&delete this._nodeRepository[e.name]},getNode:function(e){return this._nodeRepository[e]},setMainCamera:function(e){var t=this._cameraList.indexOf(e);t>=0&&this._cameraList.splice(t,1),this._cameraList.unshift(e)},getMainCamera:function(){return this._cameraList[0]},getLights:function(){return this.lights},updateLights:function(){var e=this.lights;this._previousLightNumber=this._lightNumber;for(var t={},r=0;r0&&this._doUpdateRenderList(o,t,r,i,n)}},isFrustumCulled:(Cn=new Si,Ln=new ui,function(e,t,r){var i=e.boundingBox;if(i||(i=e.skeleton&&e.skeleton.boundingBox?e.skeleton.boundingBox:e.geometry.boundingBox),!i)return!1;if(Ln.array=r,Cn.transformFrom(i,Ln),e.castShadow&&this.viewBoundingBoxLastFrame.union(Cn),e.frustumCulling){if(!Cn.intersectBoundingBox(t.frustum.boundingBox))return!0;Ln.array=t.projectionMatrix.array,Cn.max.array[2]>0&&Cn.min.array[2]<0&&(Cn.max.array[2]=-1e-20),Cn.applyProjection(Ln);var n=Cn.min.array,a=Cn.max.array;if(a[0]<-1||n[0]>1||a[1]<-1||n[1]>1||a[2]<-1||n[2]>1)return!0}return!1}),_updateLightUniforms:function(){var e=this.lights;e.sort(On);var t=this._lightUniforms;for(var r in t)for(var i in t[r])t[r][i].value.length=0;for(var n=0;n1&&t.texParameterf(t.TEXTURE_CUBE_MAP,n.TEXTURE_MAX_ANISOTROPY_EXT,this.anisotropic),36193===i&&(e.getGLExtension("OES_texture_half_float")||(i=Ye)),this.mipmaps.length)for(var a=this.width,o=this.height,s=0;s0&&e.height>0}Object.defineProperty(In.prototype,"width",{get:function(){return this.image&&this.image.px?this.image.px.width:this._width},set:function(e){this.image&&this.image.px?console.warn("Texture from image can't set width"):(this._width!==e&&this.dirty(),this._width=e)}}),Object.defineProperty(In.prototype,"height",{get:function(){return this.image&&this.image.px?this.image.px.height:this._height},set:function(e){this.image&&this.image.px?console.warn("Texture from image can't set height"):(this._height!==e&&this.dirty(),this._height=e)}});var zn=wn.extend({fov:50,aspect:1,near:.1,far:2e3},{updateProjectionMatrix:function(){var e=this.fov/180*Math.PI;this.projectionMatrix.perspective(e,this.aspect,this.near,this.far)},decomposeProjectionMatrix:function(){var e=this.projectionMatrix.array,t=2*Math.atan(1/e[5]);this.fov=t/Math.PI*180,this.aspect=e[5]/e[0],this.near=e[14]/(e[10]-1),this.far=e[14]/(e[10]+1)},clone:function(){var e=wn.prototype.clone.call(this);return e.fov=this.fov,e.aspect=this.aspect,e.near=this.near,e.far=this.far,e}}),Fn="framebuffer",Gn="renderbuffer",Un=Gn+"_width",Hn=Gn+"_height",Vn=Gn+"_attached",kn="depthtexture_attached",Wn=ft,jn=pt,Xn=_t,qn=gt,Zn=be.extend({depthBuffer:!0,viewport:null,_width:0,_height:0,_textures:null,_boundRenderer:null},function(){this._cache=new Fi,this._textures={}},{getTextureWidth:function(){return this._width},getTextureHeight:function(){return this._height},bind:function(e){if(e.__currentFrameBuffer){if(e.__currentFrameBuffer===this)return;console.warn("Renderer already bound with another framebuffer. Unbind it first")}e.__currentFrameBuffer=this;var t=e.gl;t.bindFramebuffer(Wn,this._getFrameBufferGL(e)),this._boundRenderer=e;var r=this._cache;r.put("viewport",e.viewport);var i,n,a=!1;for(var o in this._textures){a=!0;var s=this._textures[o];s&&(i=s.texture.width,n=s.texture.height,this._doAttach(e,s.texture,o,s.target))}this._width=i,this._height=n,!a&&this.depthBuffer&&console.error("Must attach texture before bind, or renderbuffer may have incorrect width and height."),this.viewport?e.setViewport(this.viewport):e.setViewport(0,0,i,n,1);var l=r.get("attached_textures");if(l)for(var o in l)if(!this._textures[o]){var h=l[o];this._doDetach(t,o,h)}if(!r.get(kn)&&this.depthBuffer){r.miss(Gn)&&r.put(Gn,t.createRenderbuffer());var u=r.get(Gn);i===r.get(Un)&&n===r.get(Hn)||(t.bindRenderbuffer(jn,u),t.renderbufferStorage(jn,t.DEPTH_COMPONENT16,i,n),r.put(Un,i),r.put(Hn,n),t.bindRenderbuffer(jn,null)),r.get(Vn)||(t.framebufferRenderbuffer(Wn,Xn,jn,u),r.put(Vn,!0))}},unbind:function(e){e.__currentFrameBuffer=null,e.gl.bindFramebuffer(Wn,null),this._boundRenderer=null,this._cache.use(e.__uid__);var t=this._cache.get("viewport");t&&e.setViewport(t),this.updateMipmap(e)},updateMipmap:function(e){var t=e.gl;for(var r in this._textures){var i=this._textures[r];if(i){var n=i.texture;if(!n.NPOT&&n.useMipmap&&n.minFilter===Gi.LINEAR_MIPMAP_LINEAR){var a="textureCube"===n.textureType?ht:lt;t.bindTexture(a,n.getWebGLTexture(e)),t.generateMipmap(a),t.bindTexture(a,null)}}}},checkStatus:function(e){return e.checkFramebufferStatus(Wn)},_getFrameBufferGL:function(e){var t=this._cache;return t.use(e.__uid__),t.miss(Fn)&&t.put(Fn,e.gl.createFramebuffer()),t.get(Fn)},attach:function(e,t,r){if(!e.width)throw new Error("The texture attached to color buffer is not a valid.");t=t||qn,r=r||lt;var i,n=this._boundRenderer;if(n&&n.gl){var a=this._cache;a.use(n.__uid__),i=a.get("attached_textures")}var o=this._textures[t];if(!o||o.target!==r||o.texture!==e||!i||null==i[t]){var s=!0;n&&(s=this._doAttach(n,e,t,r),this.viewport||n.setViewport(0,0,e.width,e.height,1)),s&&(this._textures[t]=this._textures[t]||{},this._textures[t].texture=e,this._textures[t].target=r)}},_doAttach:function(e,t,r,i){var n=e.gl,a=t.getWebGLTexture(e),o=this._cache.get("attached_textures");if(o&&o[r]){var s=o[r];if(s.texture===t&&s.target===i)return}var l=!0;if(((r=+r)===Xn||r===yt)&&(e.getGLExtension("WEBGL_depth_texture")||(console.error("Depth texture is not supported by the browser"),l=!1),t.format!==Ke&&t.format!==mt&&(console.error("The texture attached to depth buffer is not a valid."),l=!1),l)){var h=this._cache.get(Gn);h&&(n.framebufferRenderbuffer(Wn,Xn,jn,null),n.deleteRenderbuffer(h),this._cache.put(Gn,!1)),this._cache.put(Vn,!1),this._cache.put(kn,!0)}return n.framebufferTexture2D(Wn,r,i,a,0),o||(o={},this._cache.put("attached_textures",o)),o[r]=o[r]||{},o[r].texture=t,o[r].target=i,l},_doDetach:function(e,t,r){e.framebufferTexture2D(Wn,t,r,null,0);var i=this._cache.get("attached_textures");i&&i[t]&&(i[t]=null),t!==Xn&&t!==yt||this._cache.put(kn,!1)},detach:function(e,t){this._textures[e]=null,this._boundRenderer&&(this._cache.use(this._boundRenderer.__uid__),this._doDetach(this._boundRenderer.gl,e,t))},dispose:function(e){var t=e.gl,r=this._cache;r.use(e.__uid__);var i=r.get(Gn);i&&t.deleteRenderbuffer(i);var n=r.get(Fn);n&&t.deleteFramebuffer(n),r.deleteContext(e.__uid__),this._textures={}}});Zn.DEPTH_ATTACHMENT=Xn,Zn.COLOR_ATTACHMENT0=qn,Zn.STENCIL_ATTACHMENT=vt,Zn.DEPTH_STENCIL_ATTACHMENT=yt;var Yn=["px","nx","py","ny","pz","nz"],Kn=be.extend(function(){var e={position:new Gr,far:1e3,near:.1,texture:null,shadowMapPass:null},t=e._cameras={px:new zn({fov:90}),nx:new zn({fov:90}),py:new zn({fov:90}),ny:new zn({fov:90}),pz:new zn({fov:90}),nz:new zn({fov:90})};return t.px.lookAt(Gr.POSITIVE_X,Gr.NEGATIVE_Y),t.nx.lookAt(Gr.NEGATIVE_X,Gr.NEGATIVE_Y),t.py.lookAt(Gr.POSITIVE_Y,Gr.POSITIVE_Z),t.ny.lookAt(Gr.NEGATIVE_Y,Gr.NEGATIVE_Z),t.pz.lookAt(Gr.POSITIVE_Z,Gr.NEGATIVE_Y),t.nz.lookAt(Gr.NEGATIVE_Z,Gr.NEGATIVE_Y),e._frameBuffer=new Zn,e},{getCamera:function(e){return this._cameras[e]},render:function(e,t,r){var i=e.gl;r||t.update();for(var n=this.texture.width,a=2*Math.atan(n/(n-.5))/Math.PI*180,o=0;o<6;o++){var s=Yn[o],l=this._cameras[s];if(Gr.copy(l.position,this.position),l.far=this.far,l.near=this.near,l.fov=a,this.shadowMapPass){l.update();var h=t.getBoundingBox();h.applyTransform(l.viewMatrix),t.viewBoundingBoxLastFrame.copy(h),this.shadowMapPass.render(e,t,l,!0)}this._frameBuffer.attach(this.texture,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+o),this._frameBuffer.bind(e),e.render(t,l,!0),this._frameBuffer.unbind(e)}},dispose:function(e){this._frameBuffer.dispose(e)}}),Qn=tn.extend({dynamic:!1,widthSegments:1,heightSegments:1},function(){this.build()},{build:function(){for(var e=this.heightSegments,t=this.widthSegments,r=this.attributes,i=[],n=[],a=[],o=[],s=0;s<=e;s++)for(var l=s/e,h=0;h<=t;h++){var u=h/t;if(i.push([2*u-1,2*l-1,0]),n&&n.push([u,l]),a&&a.push([0,0,1]),h0?this.material.define("fragment","LOD"):this.material.undefine("fragment","LOD"),e.renderPass([this],r)}});function ra(e){return e.charCodeAt(0)+(e.charCodeAt(1)<<8)+(e.charCodeAt(2)<<16)+(e.charCodeAt(3)<<24)}var ia=ra("DXT1"),na=ra("DXT3"),aa=ra("DXT5"),oa=function(e,t){var r=new Int32Array(e,0,31);if(542327876!==r[0])return null;if(4&!r(20))return null;var i,n,a=r(21),o=r[4],s=r[3],l=512&r[28],h=131072&r[2];switch(a){case ia:i=8,n=Gi.COMPRESSED_RGB_S3TC_DXT1_EXT;break;case na:i=16,n=Gi.COMPRESSED_RGBA_S3TC_DXT3_EXT;break;case aa:i=16,n=Gi.COMPRESSED_RGBA_S3TC_DXT5_EXT;break;default:return null}var u=r[1]+4,c=l?6:1,d=1;h&&(d=Math.max(1,r[7]));for(var f=[],p=0;p0){var n=Math.pow(2,e[3]-128-8+i);t[r+0]=e[0]*n,t[r+1]=e[1]*n,t[r+2]=e[2]*n}else t[r+0]=0,t[r+1]=0,t[r+2]=0;return t[r+3]=1,t}function ha(e,t){t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3]}function ua(e,t,r,i){for(var n=0,a=0,o=i;o>0;)if(e[a][0]=t[r++],e[a][1]=t[r++],e[a][2]=t[r++],e[a][3]=t[r++],1===e[a][0]&&1===e[a][1]&&1===e[a][2]){for(var s=e[a][3]<>>0;s>0;s--)ha(e[a-1],e[a]),a++,o--;n+=8}else a++,o--,n=0;return r}function ca(e,t,r,i){if(i<8|i>32767)return ua(e,t,r,i);if(2!=(n=t[r++]))return ua(e,t,r-1,i);if(e[0][1]=t[r++],e[0][2]=t[r++],n=t[r++],(e[0][2]<<8>>>0|n)>>>0!==i)return null;for(var n=0;n<4;n++)for(var a=0;a128){o=(127&o)>>>0;for(var s=t[r++];o--;)e[a++][n]=s}else for(;o--;)e[a++][n]=t[r++]}return r}var da=function(e,t,r){null==r&&(r=0);var i=new Uint8Array(e),n=i.length;if("#?"===function(e,t,r){for(var i="",n=t;n=n)){a+=2;for(var o="";a20)return console.warn("Given image is not a height map"),e}var d,f,p,m;l%(4*i)==0?(d=o.data[l],p=o.data[l+4]):l%(4*i)==4*(i-1)?(d=o.data[l-4],p=o.data[l]):(d=o.data[l-4],p=o.data[l+4]),l<4*i?(f=o.data[l],m=o.data[l+4*i]):l>i*(n-1)*4?(f=o.data[l-4*i],m=o.data[l]):(f=o.data[l-4*i],m=o.data[l+4*i]),s.data[l]=d-p+127,s.data[l+1]=f-m+127,s.data[l+2]=255,s.data[l+3]=255}return a.putImageData(s,0,0),r},isHeightImage:function(e,t,r){if(!e||!e.width||!e.height)return!1;var i=document.createElement("canvas"),n=i.getContext("2d"),a=t||32;r=r||20,i.width=i.height=a,n.drawImage(e,0,0,a,a);for(var o=n.getImageData(0,0,a,a),s=0;sr)return!1}return!0},_fetchTexture:function(e,t,r){Tt.request.get({url:e,responseType:"arraybuffer",onload:t,onerror:r})},createChessboard:function(e,t,r,i){e=e||512,t=t||64,r=r||"black",i=i||"white";var n=Math.ceil(e/t),a=document.createElement("canvas");a.width=e,a.height=e;var o=a.getContext("2d");o.fillStyle=i,o.fillRect(0,0,e,e),o.fillStyle=r;for(var s=0;s=0||(pa.forEach(function(t){e.on(t,this[ma(t)],this)},this),this._meshes.push(e))},detachFromMesh:function(e){var t=this._meshes.indexOf(e);t>=0&&this._meshes.splice(t,1),pa.forEach(function(t){e.off(t,this[ma(t)])},this)},dispose:function(){this._meshes.forEach(function(e){this.detachFromMesh(e)},this)}};var _a=wn.extend({left:-1,right:1,near:-1,far:1,top:1,bottom:-1},{updateProjectionMatrix:function(){this.projectionMatrix.ortho(this.left,this.right,this.bottom,this.top,this.near,this.far)},decomposeProjectionMatrix:function(){var e=this.projectionMatrix.array;this.left=(-1-e[12])/e[0],this.right=(1-e[12])/e[0],this.top=(1-e[13])/e[5],this.bottom=(-1-e[13])/e[5],this.near=-(-1-e[14])/e[10],this.far=-(1-e[14])/e[10]},clone:function(){var e=wn.prototype.clone.call(this);return e.left=this.left,e.right=this.right,e.near=this.near,e.far=this.far,e.top=this.top,e.bottom=this.bottom,e}});br.import("\n@export clay.compositor.vertex\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nattribute vec3 position : POSITION;\nattribute vec2 texcoord : TEXCOORD_0;\nvarying vec2 v_Texcoord;\nvoid main()\n{\n v_Texcoord = texcoord;\n gl_Position = worldViewProjection * vec4(position, 1.0);\n}\n@end");var va=new Qn,ya=new Ui({geometry:va,frustumCulling:!1}),xa=new _a,ba=be.extend(function(){return{fragment:"",outputs:null,material:null,blendWithPrevious:!1,clearColor:!1,clearDepth:!0}},function(){var e=new br(br.source("clay.compositor.vertex"),this.fragment),t=new Wt({shader:e});t.enableTexturesAll(),this.material=t},{setUniform:function(e,t){this.material.setUniform(e,t)},getUniform:function(e){var t=this.material.uniforms[e];if(t)return t.value},attachOutput:function(e,t){this.outputs||(this.outputs={}),t=t||gt,this.outputs[t]=e},detachOutput:function(e){for(var t in this.outputs)this.outputs[t]===e&&(this.outputs[t]=null)},bind:function(e,t){if(this.outputs)for(var r in this.outputs){var i=this.outputs[r];i&&t.attach(i,r)}t&&t.bind(e)},unbind:function(e,t){t.unbind(e)},render:function(e,t){var r=e.gl;if(t){this.bind(e,t);var i=e.getGLExtension("EXT_draw_buffers");if(i&&this.outputs){var n=[];for(var a in this.outputs)(a=+a)>=r.COLOR_ATTACHMENT0&&a<=r.COLOR_ATTACHMENT0+8&&n.push(a);i.drawBuffersEXT(n)}}this.trigger("beforerender",this,e);var o=this.clearDepth?r.DEPTH_BUFFER_BIT:0;if(r.depthMask(!0),this.clearColor){o|=r.COLOR_BUFFER_BIT,r.colorMask(!0,!0,!0,!0);var s=this.clearColor;Array.isArray(s)&&r.clearColor(s[0],s[1],s[2],s[3])}r.clear(o),this.blendWithPrevious?(r.enable(r.BLEND),this.material.transparent=!0):(r.disable(r.BLEND),this.material.transparent=!1),this.renderQuad(e),this.trigger("afterrender",this,e),t&&this.unbind(e,t)},renderQuad:function(e){ya.material=this.material,e.renderPass([ya],xa)},dispose:function(e){}}),Ta={},wa=["px","nx","py","ny","pz","nz"];Ta.prefilterEnvironmentMap=function(e,t,r,i,n){n&&i||(i=Ta.generateNormalDistribution(),n=Ta.integrateBRDF(e,i));var a=(r=r||{}).width||64,o=r.height||64,s=r.type||t.type,l=new In({width:a,height:o,type:s,flipY:!1,mipmaps:[]});l.isPowerOfTwo()||console.warn("Width and height must be power of two to enable mipmap.");var h=Math.min(a,o),u=Math.log(h)/Math.log(2)+1,c=new Wt({shader:new br({vertex:br.source("clay.skybox.vertex"),fragment:"#define SHADER_NAME prefilter\n#define SAMPLE_NUMBER 1024\n#define PI 3.14159265358979\nuniform mat4 viewInverse : VIEWINVERSE;\nuniform samplerCube environmentMap;\nuniform sampler2D normalDistribution;\nuniform float roughness : 0.5;\nvarying vec2 v_Texcoord;\nvarying vec3 v_WorldPosition;\n@import clay.util.rgbm\nvec3 importanceSampleNormal(float i, float roughness, vec3 N) {\n vec3 H = texture2D(normalDistribution, vec2(roughness, i)).rgb;\n vec3 upVector = abs(N.y) > 0.999 ? vec3(1.0, 0.0, 0.0) : vec3(0.0, 1.0, 0.0);\n vec3 tangentX = normalize(cross(N, upVector));\n vec3 tangentZ = cross(N, tangentX);\n return normalize(tangentX * H.x + N * H.y + tangentZ * H.z);\n}\nvoid main() {\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(v_WorldPosition - eyePos);\n vec3 N = V;\n vec3 prefilteredColor = vec3(0.0);\n float totalWeight = 0.0;\n float fMaxSampleNumber = float(SAMPLE_NUMBER);\n for (int i = 0; i < SAMPLE_NUMBER; i++) {\n vec3 H = importanceSampleNormal(float(i) / fMaxSampleNumber, roughness, N);\n vec3 L = reflect(-V, H);\n float NoL = clamp(dot(N, L), 0.0, 1.0);\n if (NoL > 0.0) {\n prefilteredColor += decodeHDR(textureCube(environmentMap, L)).rgb * NoL;\n totalWeight += NoL;\n }\n }\n gl_FragColor = encodeHDR(vec4(prefilteredColor / totalWeight, 1.0));\n}\n"})});c.set("normalDistribution",i),r.encodeRGBM&&c.define("fragment","RGBM_ENCODE"),r.decodeRGBM&&c.define("fragment","RGBM_DECODE");var d,f=new Pn;if("texture2D"===t.textureType){var p=new In({width:a,height:o,type:s===Gi.FLOAT?Gi.HALF_FLOAT:s});fa.panoramaToCubeMap(e,t,p,{encodeRGBM:r.decodeRGBM}),t=p}(d=new ta({scene:f,material:c})).material.set("environmentMap",t);var m=new Kn({texture:l});r.encodeRGBM&&(s=l.type=Gi.UNSIGNED_BYTE);for(var g=new Wi({width:a,height:o,type:s}),_=new Zn({depthBuffer:!1}),v=Tt[s===Gi.UNSIGNED_BYTE?"Uint8Array":"Float32Array"],y=0;y 0.999 ? vec3(1.0, 0.0, 0.0) : vec3(0.0, 1.0, 0.0);\n vec3 tangentX = normalize(cross(N, upVector));\n vec3 tangentZ = cross(N, tangentX);\n return normalize(tangentX * H.x + N * H.y + tangentZ * H.z);\n}\nfloat G_Smith(float roughness, float NoV, float NoL) {\n float k = roughness * roughness / 2.0;\n float G1V = NoV / (NoV * (1.0 - k) + k);\n float G1L = NoL / (NoL * (1.0 - k) + k);\n return G1L * G1V;\n}\nvoid main() {\n vec2 uv = gl_FragCoord.xy / viewportSize;\n float NoV = uv.x;\n float roughness = uv.y;\n vec3 V;\n V.x = sqrt(1.0 - NoV * NoV);\n V.y = 0.0;\n V.z = NoV;\n float A = 0.0;\n float B = 0.0;\n for (int i = 0; i < SAMPLE_NUMBER; i++) {\n vec3 H = importanceSampleNormal(float(i) / fSampleNumber, roughness, N);\n vec3 L = reflect(-V, H);\n float NoL = clamp(L.z, 0.0, 1.0);\n float NoH = clamp(H.z, 0.0, 1.0);\n float VoH = clamp(dot(V, H), 0.0, 1.0);\n if (NoL > 0.0) {\n float G = G_Smith(roughness, NoV, NoL);\n float G_Vis = G * VoH / (NoH * NoV);\n float Fc = pow(1.0 - VoH, 5.0);\n A += (1.0 - Fc) * G_Vis;\n B += Fc * G_Vis;\n }\n }\n gl_FragColor = vec4(vec2(A, B) / fSampleNumber, 0.0, 1.0);\n}\n"}),n=new Wi({width:512,height:256,type:Gi.HALF_FLOAT,wrapS:Gi.CLAMP_TO_EDGE,wrapT:Gi.CLAMP_TO_EDGE,minFilter:Gi.NEAREST,magFilter:Gi.NEAREST,useMipmap:!1});return i.setUniform("normalDistribution",t),i.setUniform("viewportSize",[512,256]),i.attachOutput(n),i.render(e,r),r.dispose(e),n},Ta.generateNormalDistribution=function(e,t){for(var r=new Wi({width:e=e||256,height:t=t||1024,type:Gi.FLOAT,minFilter:Gi.NEAREST,magFilter:Gi.NEAREST,wrapS:Gi.CLAMP_TO_EDGE,wrapT:Gi.CLAMP_TO_EDGE,useMipmap:!1}),i=new Float32Array(t*e*4),n=[],a=0;a>>16)>>>0;h=(((16711935&(h=((252645135&(h=((858993459&(h=((1431655765&h)<<1|(2863311530&h)>>>1)>>>0))<<2|(3435973836&h)>>>2)>>>0))<<4|(4042322160&h)>>>4)>>>0))<<8|(4278255360&h)>>>8)>>>0)/4294967296;var u=Math.sqrt((1-h)/(1+(s*s-1)*h));n[l]=u}for(l=0;l65535?Uint32Array:Uint16Array,v=this.indices=new _(t*e*6),y=this.radius,x=this.phiStart,b=this.phiLength,T=this.thetaStart,w=this.thetaLength,S=[],M=[],A=0,E=1/(y=this.radius);for(d=0;d<=e;d++)for(c=0;c<=t;c++)h=c/t,u=d/e,o=-y*Math.cos(x+h*b)*Math.sin(T+u*w),s=y*Math.cos(T+u*w),l=y*Math.sin(x+h*b)*Math.sin(T+u*w),S[0]=o,S[1]=s,S[2]=l,M[0]=h,M[1]=u,r.set(A,S),i.set(A,M),S[0]*=E,S[1]*=E,S[2]*=E,n.set(A,S),A++;var D=t+1,C=0;for(d=0;d=0&&l.splice(e,1)}),l.push(h),this.__zr&&this.__zr.animation.addAnimator(h),h},stopAnimation:function(e){this._animators=this._animators||[];for(var t=this._animators,r=t.length,i=0;i 0.) {\n vec4 lineColor = wireframeLineColor;\n#ifdef SRGB_DECODE\n lineColor = sRGBToLinear(lineColor);\n#endif\n\n gl_FragColor.rgb = mix(gl_FragColor.rgb, lineColor.rgb, (1.0 - edgeFactor()) * lineColor.a);\n }\n#endif\n@end\n\n\n\n\n@export ecgl.common.bumpMap.header\n\n#ifdef BUMPMAP_ENABLED\nuniform sampler2D bumpMap;\nuniform float bumpScale : 1.0;\n\n\nvec3 bumpNormal(vec3 surfPos, vec3 surfNormal, vec3 baseNormal)\n{\n vec2 dSTdx = dFdx(v_Texcoord);\n vec2 dSTdy = dFdy(v_Texcoord);\n\n float Hll = bumpScale * texture2D(bumpMap, v_Texcoord).x;\n float dHx = bumpScale * texture2D(bumpMap, v_Texcoord + dSTdx).x - Hll;\n float dHy = bumpScale * texture2D(bumpMap, v_Texcoord + dSTdy).x - Hll;\n\n vec3 vSigmaX = dFdx(surfPos);\n vec3 vSigmaY = dFdy(surfPos);\n vec3 vN = surfNormal;\n\n vec3 R1 = cross(vSigmaY, vN);\n vec3 R2 = cross(vN, vSigmaX);\n\n float fDet = dot(vSigmaX, R1);\n\n vec3 vGrad = sign(fDet) * (dHx * R1 + dHy * R2);\n return normalize(abs(fDet) * baseNormal - vGrad);\n\n}\n#endif\n\n@end\n\n@export ecgl.common.normalMap.vertexHeader\n\n#ifdef NORMALMAP_ENABLED\nattribute vec4 tangent : TANGENT;\nvarying vec3 v_Tangent;\nvarying vec3 v_Bitangent;\n#endif\n\n@end\n\n@export ecgl.common.normalMap.vertexMain\n\n#ifdef NORMALMAP_ENABLED\n if (dot(tangent, tangent) > 0.0) {\n v_Tangent = normalize((worldInverseTranspose * vec4(tangent.xyz, 0.0)).xyz);\n v_Bitangent = normalize(cross(v_Normal, v_Tangent) * tangent.w);\n }\n#endif\n\n@end\n\n\n@export ecgl.common.normalMap.fragmentHeader\n\n#ifdef NORMALMAP_ENABLED\nuniform sampler2D normalMap;\nvarying vec3 v_Tangent;\nvarying vec3 v_Bitangent;\n#endif\n\n@end\n\n@export ecgl.common.normalMap.fragmentMain\n#ifdef NORMALMAP_ENABLED\n if (dot(v_Tangent, v_Tangent) > 0.0) {\n vec3 normalTexel = texture2D(normalMap, v_DetailTexcoord).xyz;\n if (dot(normalTexel, normalTexel) > 0.0) { N = normalTexel * 2.0 - 1.0;\n mat3 tbn = mat3(v_Tangent, v_Bitangent, v_Normal);\n N = normalize(tbn * N);\n }\n }\n#endif\n@end\n\n\n\n@export ecgl.common.vertexAnimation.header\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nattribute vec3 prevNormal;\nuniform float percent;\n#endif\n\n@end\n\n@export ecgl.common.vertexAnimation.main\n\n#ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n vec3 norm = mix(prevNormal, normal, percent);\n#else\n vec3 pos = position;\n vec3 norm = normal;\n#endif\n\n@end\n\n\n@export ecgl.common.ssaoMap.header\n#ifdef SSAOMAP_ENABLED\nuniform sampler2D ssaoMap;\nuniform vec4 viewport : VIEWPORT;\n#endif\n@end\n\n@export ecgl.common.ssaoMap.main\n float ao = 1.0;\n#ifdef SSAOMAP_ENABLED\n ao = texture2D(ssaoMap, (gl_FragCoord.xy - viewport.xy) / viewport.zw).r;\n#endif\n@end\n\n\n\n\n@export ecgl.common.diffuseLayer.header\n\n#if (LAYER_DIFFUSEMAP_COUNT > 0)\nuniform float layerDiffuseIntensity[LAYER_DIFFUSEMAP_COUNT];\nuniform sampler2D layerDiffuseMap[LAYER_DIFFUSEMAP_COUNT];\n#endif\n\n@end\n\n@export ecgl.common.emissiveLayer.header\n\n#if (LAYER_EMISSIVEMAP_COUNT > 0)\nuniform float layerEmissionIntensity[LAYER_EMISSIVEMAP_COUNT];\nuniform sampler2D layerEmissiveMap[LAYER_EMISSIVEMAP_COUNT];\n#endif\n\n@end\n\n@export ecgl.common.layers.header\n@import ecgl.common.diffuseLayer.header\n@import ecgl.common.emissiveLayer.header\n@end\n\n@export ecgl.common.diffuseLayer.main\n\n#if (LAYER_DIFFUSEMAP_COUNT > 0)\n for (int _idx_ = 0; _idx_ < LAYER_DIFFUSEMAP_COUNT; _idx_++) {{\n float intensity = layerDiffuseIntensity[_idx_];\n vec4 texel2 = texture2D(layerDiffuseMap[_idx_], v_Texcoord);\n #ifdef SRGB_DECODE\n texel2 = sRGBToLinear(texel2);\n #endif\n albedoTexel.rgb = mix(albedoTexel.rgb, texel2.rgb * intensity, texel2.a);\n albedoTexel.a = texel2.a + (1.0 - texel2.a) * albedoTexel.a;\n }}\n#endif\n\n@end\n\n@export ecgl.common.emissiveLayer.main\n\n#if (LAYER_EMISSIVEMAP_COUNT > 0)\n for (int _idx_ = 0; _idx_ < LAYER_EMISSIVEMAP_COUNT; _idx_++)\n {{\n vec4 texel2 = texture2D(layerEmissiveMap[_idx_], v_Texcoord) * layerEmissionIntensity[_idx_];\n #ifdef SRGB_DECODE\n texel2 = sRGBToLinear(texel2);\n #endif\n float intensity = layerEmissionIntensity[_idx_];\n gl_FragColor.rgb += texel2.rgb * texel2.a * intensity;\n }}\n#endif\n\n@end\n"),br.import("@export ecgl.color.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\n@import ecgl.common.uv.header\n\nattribute vec2 texcoord : TEXCOORD_0;\nattribute vec3 position: POSITION;\n\n@import ecgl.common.wireframe.vertexHeader\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n#endif\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nuniform float percent : 1.0;\n#endif\n\n#ifdef ATMOSPHERE_ENABLED\nattribute vec3 normal: NORMAL;\nuniform mat4 worldInverseTranspose : WORLDINVERSETRANSPOSE;\nvarying vec3 v_Normal;\n#endif\n\nvoid main()\n{\n#ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n#else\n vec3 pos = position;\n#endif\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n @import ecgl.common.uv.main\n\n#ifdef VERTEX_COLOR\n v_Color = a_Color;\n#endif\n\n#ifdef ATMOSPHERE_ENABLED\n v_Normal = normalize((worldInverseTranspose * vec4(normal, 0.0)).xyz);\n#endif\n\n @import ecgl.common.wireframe.vertexMain\n\n}\n\n@end\n\n@export ecgl.color.fragment\n\n#define LAYER_DIFFUSEMAP_COUNT 0\n#define LAYER_EMISSIVEMAP_COUNT 0\n\nuniform sampler2D diffuseMap;\nuniform sampler2D detailMap;\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\n#ifdef ATMOSPHERE_ENABLED\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform vec3 glowColor;\nuniform float glowPower;\nvarying vec3 v_Normal;\n#endif\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n@import ecgl.common.layers.header\n\n@import ecgl.common.uv.fragmentHeader\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.util.srgb\n\nvoid main()\n{\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(color);\n#else\n gl_FragColor = color;\n#endif\n\n#ifdef VERTEX_COLOR\n gl_FragColor *= v_Color;\n#endif\n\n @import ecgl.common.albedo.main\n\n @import ecgl.common.diffuseLayer.main\n\n gl_FragColor *= albedoTexel;\n\n#ifdef ATMOSPHERE_ENABLED\n float atmoIntensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor.rgb += glowColor * atmoIntensity;\n#endif\n\n @import ecgl.common.emissiveLayer.main\n\n @import ecgl.common.wireframe.fragmentMain\n\n}\n@end"),br.import("/**\n * http: */\n\n@export ecgl.lambert.vertex\n\n@import ecgl.common.transformUniforms\n\n@import ecgl.common.uv.header\n\n\n@import ecgl.common.attributes\n\n@import ecgl.common.wireframe.vertexHeader\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n#endif\n\n\n@import ecgl.common.vertexAnimation.header\n\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nvoid main()\n{\n @import ecgl.common.uv.main\n\n @import ecgl.common.vertexAnimation.main\n\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n v_Normal = normalize((worldInverseTranspose * vec4(norm, 0.0)).xyz);\n v_WorldPosition = (world * vec4(pos, 1.0)).xyz;\n\n#ifdef VERTEX_COLOR\n v_Color = a_Color;\n#endif\n\n @import ecgl.common.wireframe.vertexMain\n}\n\n@end\n\n\n@export ecgl.lambert.fragment\n\n#define LAYER_DIFFUSEMAP_COUNT 0\n#define LAYER_EMISSIVEMAP_COUNT 0\n\n#define NORMAL_UP_AXIS 1\n#define NORMAL_FRONT_AXIS 2\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform sampler2D diffuseMap;\nuniform sampler2D detailMap;\n\n@import ecgl.common.layers.header\n\nuniform float emissionIntensity: 1.0;\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n#ifdef ATMOSPHERE_ENABLED\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform vec3 glowColor;\nuniform float glowPower;\n#endif\n\n#ifdef AMBIENT_LIGHT_COUNT\n@import clay.header.ambient_light\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n@import clay.header.ambient_sh_light\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n@import clay.header.directional_light\n#endif\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n\n@import ecgl.common.ssaoMap.header\n\n@import ecgl.common.bumpMap.header\n\n@import clay.util.srgb\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.plugin.compute_shadow_map\n\nvoid main()\n{\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(color);\n#else\n gl_FragColor = color;\n#endif\n\n#ifdef VERTEX_COLOR\n #ifdef SRGB_DECODE\n gl_FragColor *= sRGBToLinear(v_Color);\n #else\n gl_FragColor *= v_Color;\n #endif\n#endif\n\n @import ecgl.common.albedo.main\n\n @import ecgl.common.diffuseLayer.main\n\n gl_FragColor *= albedoTexel;\n\n vec3 N = v_Normal;\n#ifdef DOUBLE_SIDED\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n\n if (dot(N, V) < 0.0) {\n N = -N;\n }\n#endif\n\n float ambientFactor = 1.0;\n\n#ifdef BUMPMAP_ENABLED\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n ambientFactor = dot(v_Normal, N);\n#endif\n\n vec3 N2 = vec3(N.x, N[NORMAL_UP_AXIS], N[NORMAL_FRONT_AXIS]);\n\n vec3 diffuseColor = vec3(0.0, 0.0, 0.0);\n\n @import ecgl.common.ssaoMap.main\n\n#ifdef AMBIENT_LIGHT_COUNT\n for(int i = 0; i < AMBIENT_LIGHT_COUNT; i++)\n {\n diffuseColor += ambientLightColor[i] * ambientFactor * ao;\n }\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_SH_LIGHT_COUNT; _idx_++)\n {{\n diffuseColor += calcAmbientSHLight(_idx_, N2) * ambientSHLightColor[_idx_] * ao;\n }}\n#endif\n#ifdef DIRECTIONAL_LIGHT_COUNT\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n float shadowContribsDir[DIRECTIONAL_LIGHT_COUNT];\n if(shadowEnabled)\n {\n computeShadowOfDirectionalLights(v_WorldPosition, shadowContribsDir);\n }\n#endif\n for(int i = 0; i < DIRECTIONAL_LIGHT_COUNT; i++)\n {\n vec3 lightDirection = -directionalLightDirection[i];\n vec3 lightColor = directionalLightColor[i];\n\n float shadowContrib = 1.0;\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n if (shadowEnabled)\n {\n shadowContrib = shadowContribsDir[i];\n }\n#endif\n\n float ndl = dot(N, normalize(lightDirection)) * shadowContrib;\n\n diffuseColor += lightColor * clamp(ndl, 0.0, 1.0);\n }\n#endif\n\n gl_FragColor.rgb *= diffuseColor;\n\n#ifdef ATMOSPHERE_ENABLED\n float atmoIntensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor.rgb += glowColor * atmoIntensity;\n#endif\n\n @import ecgl.common.emissiveLayer.main\n\n @import ecgl.common.wireframe.fragmentMain\n}\n\n@end"),br.import("@export ecgl.realistic.vertex\n\n@import ecgl.common.transformUniforms\n\n@import ecgl.common.uv.header\n\n@import ecgl.common.attributes\n\n\n@import ecgl.common.wireframe.vertexHeader\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n#endif\n\n#ifdef NORMALMAP_ENABLED\nattribute vec4 tangent : TANGENT;\nvarying vec3 v_Tangent;\nvarying vec3 v_Bitangent;\n#endif\n\n@import ecgl.common.vertexAnimation.header\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nvoid main()\n{\n\n @import ecgl.common.uv.main\n\n @import ecgl.common.vertexAnimation.main\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n v_Normal = normalize((worldInverseTranspose * vec4(norm, 0.0)).xyz);\n v_WorldPosition = (world * vec4(pos, 1.0)).xyz;\n\n#ifdef VERTEX_COLOR\n v_Color = a_Color;\n#endif\n\n#ifdef NORMALMAP_ENABLED\n v_Tangent = normalize((worldInverseTranspose * vec4(tangent.xyz, 0.0)).xyz);\n v_Bitangent = normalize(cross(v_Normal, v_Tangent) * tangent.w);\n#endif\n\n @import ecgl.common.wireframe.vertexMain\n\n}\n\n@end\n\n\n\n@export ecgl.realistic.fragment\n\n#define LAYER_DIFFUSEMAP_COUNT 0\n#define LAYER_EMISSIVEMAP_COUNT 0\n#define PI 3.14159265358979\n#define ROUGHNESS_CHANEL 0\n#define METALNESS_CHANEL 1\n\n#define NORMAL_UP_AXIS 1\n#define NORMAL_FRONT_AXIS 2\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform sampler2D diffuseMap;\n\nuniform sampler2D detailMap;\nuniform sampler2D metalnessMap;\nuniform sampler2D roughnessMap;\n\n@import ecgl.common.layers.header\n\nuniform float emissionIntensity: 1.0;\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nuniform float metalness : 0.0;\nuniform float roughness : 0.5;\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n#ifdef ATMOSPHERE_ENABLED\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform vec3 glowColor;\nuniform float glowPower;\n#endif\n\n#ifdef AMBIENT_LIGHT_COUNT\n@import clay.header.ambient_light\n#endif\n\n#ifdef AMBIENT_SH_LIGHT_COUNT\n@import clay.header.ambient_sh_light\n#endif\n\n#ifdef AMBIENT_CUBEMAP_LIGHT_COUNT\n@import clay.header.ambient_cubemap_light\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n@import clay.header.directional_light\n#endif\n\n@import ecgl.common.normalMap.fragmentHeader\n\n@import ecgl.common.ssaoMap.header\n\n@import ecgl.common.bumpMap.header\n\n@import clay.util.srgb\n\n@import clay.util.rgbm\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.plugin.compute_shadow_map\n\nvec3 F_Schlick(float ndv, vec3 spec) {\n return spec + (1.0 - spec) * pow(1.0 - ndv, 5.0);\n}\n\nfloat D_Phong(float g, float ndh) {\n float a = pow(8192.0, g);\n return (a + 2.0) / 8.0 * pow(ndh, a);\n}\n\nvoid main()\n{\n vec4 albedoColor = color;\n\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n#ifdef VERTEX_COLOR\n #ifdef SRGB_DECODE\n albedoColor *= sRGBToLinear(v_Color);\n #else\n albedoColor *= v_Color;\n #endif\n#endif\n\n @import ecgl.common.albedo.main\n\n @import ecgl.common.diffuseLayer.main\n\n albedoColor *= albedoTexel;\n\n float m = metalness;\n\n#ifdef METALNESSMAP_ENABLED\n float m2 = texture2D(metalnessMap, v_DetailTexcoord)[METALNESS_CHANEL];\n m = clamp(m2 + (m - 0.5) * 2.0, 0.0, 1.0);\n#endif\n\n vec3 baseColor = albedoColor.rgb;\n albedoColor.rgb = baseColor * (1.0 - m);\n vec3 specFactor = mix(vec3(0.04), baseColor, m);\n\n float g = 1.0 - roughness;\n\n#ifdef ROUGHNESSMAP_ENABLED\n float g2 = 1.0 - texture2D(roughnessMap, v_DetailTexcoord)[ROUGHNESS_CHANEL];\n g = clamp(g2 + (g - 0.5) * 2.0, 0.0, 1.0);\n#endif\n\n vec3 N = v_Normal;\n\n#ifdef DOUBLE_SIDED\n if (dot(N, V) < 0.0) {\n N = -N;\n }\n#endif\n\n float ambientFactor = 1.0;\n\n#ifdef BUMPMAP_ENABLED\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n ambientFactor = dot(v_Normal, N);\n#endif\n\n@import ecgl.common.normalMap.fragmentMain\n\n vec3 N2 = vec3(N.x, N[NORMAL_UP_AXIS], N[NORMAL_FRONT_AXIS]);\n\n vec3 diffuseTerm = vec3(0.0);\n vec3 specularTerm = vec3(0.0);\n\n float ndv = clamp(dot(N, V), 0.0, 1.0);\n vec3 fresnelTerm = F_Schlick(ndv, specFactor);\n\n @import ecgl.common.ssaoMap.main\n\n#ifdef AMBIENT_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_LIGHT_COUNT; _idx_++)\n {{\n diffuseTerm += ambientLightColor[_idx_] * ambientFactor * ao;\n }}\n#endif\n\n#ifdef AMBIENT_SH_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_SH_LIGHT_COUNT; _idx_++)\n {{\n diffuseTerm += calcAmbientSHLight(_idx_, N2) * ambientSHLightColor[_idx_] * ao;\n }}\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n float shadowContribsDir[DIRECTIONAL_LIGHT_COUNT];\n if(shadowEnabled)\n {\n computeShadowOfDirectionalLights(v_WorldPosition, shadowContribsDir);\n }\n#endif\n for(int _idx_ = 0; _idx_ < DIRECTIONAL_LIGHT_COUNT; _idx_++)\n {{\n vec3 L = -directionalLightDirection[_idx_];\n vec3 lc = directionalLightColor[_idx_];\n\n vec3 H = normalize(L + V);\n float ndl = clamp(dot(N, normalize(L)), 0.0, 1.0);\n float ndh = clamp(dot(N, H), 0.0, 1.0);\n\n float shadowContrib = 1.0;\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n if (shadowEnabled)\n {\n shadowContrib = shadowContribsDir[_idx_];\n }\n#endif\n\n vec3 li = lc * ndl * shadowContrib;\n\n diffuseTerm += li;\n specularTerm += li * fresnelTerm * D_Phong(g, ndh);\n }}\n#endif\n\n\n#ifdef AMBIENT_CUBEMAP_LIGHT_COUNT\n vec3 L = reflect(-V, N);\n L = vec3(L.x, L[NORMAL_UP_AXIS], L[NORMAL_FRONT_AXIS]);\n float rough2 = clamp(1.0 - g, 0.0, 1.0);\n float bias2 = rough2 * 5.0;\n vec2 brdfParam2 = texture2D(ambientCubemapLightBRDFLookup[0], vec2(rough2, ndv)).xy;\n vec3 envWeight2 = specFactor * brdfParam2.x + brdfParam2.y;\n vec3 envTexel2;\n for(int _idx_ = 0; _idx_ < AMBIENT_CUBEMAP_LIGHT_COUNT; _idx_++)\n {{\n envTexel2 = RGBMDecode(textureCubeLodEXT(ambientCubemapLightCubemap[_idx_], L, bias2), 8.12);\n specularTerm += ambientCubemapLightColor[_idx_] * envTexel2 * envWeight2 * ao;\n }}\n#endif\n\n gl_FragColor.rgb = albedoColor.rgb * diffuseTerm + specularTerm;\n gl_FragColor.a = albedoColor.a;\n\n#ifdef ATMOSPHERE_ENABLED\n float atmoIntensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor.rgb += glowColor * atmoIntensity;\n#endif\n\n#ifdef SRGB_ENCODE\n gl_FragColor = linearTosRGB(gl_FragColor);\n#endif\n\n @import ecgl.common.emissiveLayer.main\n\n @import ecgl.common.wireframe.fragmentMain\n}\n\n@end"),br.import("@export ecgl.hatching.vertex\n\n@import ecgl.realistic.vertex\n\n@end\n\n\n@export ecgl.hatching.fragment\n\n#define NORMAL_UP_AXIS 1\n#define NORMAL_FRONT_AXIS 2\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform vec4 color : [0.0, 0.0, 0.0, 1.0];\nuniform vec4 paperColor : [1.0, 1.0, 1.0, 1.0];\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n#ifdef AMBIENT_LIGHT_COUNT\n@import clay.header.ambient_light\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n@import clay.header.ambient_sh_light\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n@import clay.header.directional_light\n#endif\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n\n@import ecgl.common.ssaoMap.header\n\n@import ecgl.common.bumpMap.header\n\n@import clay.util.srgb\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.plugin.compute_shadow_map\n\nuniform sampler2D hatch1;\nuniform sampler2D hatch2;\nuniform sampler2D hatch3;\nuniform sampler2D hatch4;\nuniform sampler2D hatch5;\nuniform sampler2D hatch6;\n\nfloat shade(in float tone) {\n vec4 c = vec4(1. ,1., 1., 1.);\n float step = 1. / 6.;\n vec2 uv = v_DetailTexcoord;\n if (tone <= step / 2.0) {\n c = mix(vec4(0.), texture2D(hatch6, uv), 12. * tone);\n }\n else if (tone <= step) {\n c = mix(texture2D(hatch6, uv), texture2D(hatch5, uv), 6. * tone);\n }\n if(tone > step && tone <= 2. * step){\n c = mix(texture2D(hatch5, uv), texture2D(hatch4, uv) , 6. * (tone - step));\n }\n if(tone > 2. * step && tone <= 3. * step){\n c = mix(texture2D(hatch4, uv), texture2D(hatch3, uv), 6. * (tone - 2. * step));\n }\n if(tone > 3. * step && tone <= 4. * step){\n c = mix(texture2D(hatch3, uv), texture2D(hatch2, uv), 6. * (tone - 3. * step));\n }\n if(tone > 4. * step && tone <= 5. * step){\n c = mix(texture2D(hatch2, uv), texture2D(hatch1, uv), 6. * (tone - 4. * step));\n }\n if(tone > 5. * step){\n c = mix(texture2D(hatch1, uv), vec4(1.), 6. * (tone - 5. * step));\n }\n\n return c.r;\n}\n\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\n\nvoid main()\n{\n#ifdef SRGB_DECODE\n vec4 inkColor = sRGBToLinear(color);\n#else\n vec4 inkColor = color;\n#endif\n\n#ifdef VERTEX_COLOR\n #ifdef SRGB_DECODE\n inkColor *= sRGBToLinear(v_Color);\n #else\n inkColor *= v_Color;\n #endif\n#endif\n\n vec3 N = v_Normal;\n#ifdef DOUBLE_SIDED\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n\n if (dot(N, V) < 0.0) {\n N = -N;\n }\n#endif\n\n float tone = 0.0;\n\n float ambientFactor = 1.0;\n\n#ifdef BUMPMAP_ENABLED\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n ambientFactor = dot(v_Normal, N);\n#endif\n\n vec3 N2 = vec3(N.x, N[NORMAL_UP_AXIS], N[NORMAL_FRONT_AXIS]);\n\n @import ecgl.common.ssaoMap.main\n\n#ifdef AMBIENT_LIGHT_COUNT\n for(int i = 0; i < AMBIENT_LIGHT_COUNT; i++)\n {\n tone += dot(ambientLightColor[i], w) * ambientFactor * ao;\n }\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_SH_LIGHT_COUNT; _idx_++)\n {{\n tone += dot(calcAmbientSHLight(_idx_, N2) * ambientSHLightColor[_idx_], w) * ao;\n }}\n#endif\n#ifdef DIRECTIONAL_LIGHT_COUNT\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n float shadowContribsDir[DIRECTIONAL_LIGHT_COUNT];\n if(shadowEnabled)\n {\n computeShadowOfDirectionalLights(v_WorldPosition, shadowContribsDir);\n }\n#endif\n for(int i = 0; i < DIRECTIONAL_LIGHT_COUNT; i++)\n {\n vec3 lightDirection = -directionalLightDirection[i];\n float lightTone = dot(directionalLightColor[i], w);\n\n float shadowContrib = 1.0;\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n if (shadowEnabled)\n {\n shadowContrib = shadowContribsDir[i];\n }\n#endif\n\n float ndl = dot(N, normalize(lightDirection)) * shadowContrib;\n\n tone += lightTone * clamp(ndl, 0.0, 1.0);\n }\n#endif\n\n gl_FragColor = mix(inkColor, paperColor, shade(clamp(tone, 0.0, 1.0)));\n }\n@end\n"),br.import("@export ecgl.sm.depth.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nattribute vec3 position : POSITION;\nattribute vec2 texcoord : TEXCOORD_0;\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nuniform float percent : 1.0;\n#endif\n\nvarying vec4 v_ViewPosition;\nvarying vec2 v_Texcoord;\n\nvoid main(){\n\n#ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n#else\n vec3 pos = position;\n#endif\n\n v_ViewPosition = worldViewProjection * vec4(pos, 1.0);\n gl_Position = v_ViewPosition;\n\n v_Texcoord = texcoord;\n\n}\n@end\n\n\n\n@export ecgl.sm.depth.fragment\n\n@import clay.sm.depth.fragment\n\n@end");var Za=Pn.prototype.addToScene,Ya=Pn.prototype.removeFromScene;Pn.prototype.addToScene=function(e){if(Za.call(this,e),this.__zr){var t=this.__zr;e.traverse(function(e){e.__zr=t,e.addAnimatorsToZr&&e.addAnimatorsToZr(t)})}},Pn.prototype.removeFromScene=function(e){Ya.call(this,e),e.traverse(function(e){var t=e.__zr;e.__zr=null,t&&e.removeAnimatorsFromZr&&e.removeAnimatorsFromZr(t)})},Wt.prototype.setTextureImage=function(e,t,r,i){if(this.shader){var n,a,o=r.getZr(),s=this;return s.autoUpdateTextureStatus=!1,s.disableTexture(e),(a=t)&&"none"!==a&&(n=Ka.loadTexture(t,r,i,function(t){s.enableTexture(e),o&&o.refresh()}),s.set(e,n)),n}};var Ka={};Ka.Renderer=zr,Ka.Node=Ci,Ka.Mesh=Ui,Ka.Shader=br,Ka.Material=Wt,Ka.Texture=Gi,Ka.Texture2D=Wi,Ka.Geometry=tn,Ka.SphereGeometry=Oa,Ka.PlaneGeometry=Qn,Ka.CubeGeometry=$n,Ka.AmbientLight=Na,Ka.DirectionalLight=Ra,Ka.PointLight=Ia,Ka.SpotLight=Ba,Ka.PerspectiveCamera=zn,Ka.OrthographicCamera=_a,Ka.Vector2=Yt,Ka.Vector3=Gr,Ka.Vector4=za,Ka.Quaternion=fi,Ka.Matrix2=Ha,Ka.Matrix2d=ka,Ka.Matrix3=Wa,Ka.Matrix4=ui,Ka.Plane=pn,Ka.Ray=Jr,Ka.BoundingBox=Si,Ka.Frustum=bn;var Qa=null;function Ja(e){return Math.pow(2,Math.round(Math.log(e)/Math.LN2))}function $a(e){if((e.wrapS===Gi.REPEAT||e.wrapT===Gi.REPEAT)&&e.image){var t=Ja(e.width),r=Ja(e.height);if(t!==e.width||r!==e.height){var i=document.createElement("canvas");i.width=t,i.height=r,i.getContext("2d").drawImage(e.image,0,0,t,r),e.image=i}}}Ka.loadTexture=function(e,t,r,i){"function"==typeof r&&(i=r,r={}),r=r||{};for(var n=Object.keys(r).sort(),o="",s=0;s3?t[3]=e[3]:t[3]=1,t):((t=o(e||"#000",t)||[0,0,0,0])[0]/=255,t[1]/=255,t[2]/=255,t)},Ka.directionFromAlphaBeta=function(e,t){var r=e/180*Math.PI+Math.PI/2,i=-t/180*Math.PI+Math.PI/2,n=[],a=Math.sin(r);return n[0]=a*Math.cos(i),n[1]=-Math.cos(r),n[2]=a*Math.sin(i),n},Ka.getShadowResolution=function(e){var t=1024;switch(e){case"low":t=512;break;case"medium":break;case"high":t=2048;break;case"ultra":t=4096}return t},Ka.COMMON_SHADERS=["lambert","color","realistic","hatching","shadow"],Ka.createShader=function(e){"ecgl.shadow"===e&&(e="ecgl.displayShadow");var t=br.source(e+".vertex"),r=br.source(e+".fragment");t||console.error("Vertex shader of '%s' not exits",e),r||console.error("Fragment shader of '%s' not exits",e);var i=new br(t,r);return i.name=e,i},Ka.createMaterial=function(e,t){t instanceof Array||(t=[t]);var r=Ka.createShader(e),i=new Wt({shader:r});return t.forEach(function(e){"string"==typeof e&&i.define(e)}),i},Ka.setMaterialFromModel=function(e,t,r,i){t.autoUpdateTextureStatus=!1;var n=r.getModel(e+"Material"),a=n.get("detailTexture"),o=La(n.get("textureTiling"),1),s=La(n.get("textureOffset"),0);"number"==typeof o&&(o=[o,o]),"number"==typeof s&&(s=[s,s]);var l=o[0]>1||o[1]>1?Ka.Texture.REPEAT:Ka.Texture.CLAMP_TO_EDGE,h={anisotropic:8,wrapS:l,wrapT:l};if("realistic"===e){var u=n.get("roughness"),c=n.get("metalness");null!=c?isNaN(c)&&(t.setTextureImage("metalnessMap",c,i,h),c=La(n.get("metalnessAdjust"),.5)):c=0,null!=u?isNaN(u)&&(t.setTextureImage("roughnessMap",u,i,h),u=La(n.get("roughnessAdjust"),.5)):u=.5;var d=n.get("normalTexture");t.setTextureImage("detailMap",a,i,h),t.setTextureImage("normalMap",d,i,h),t.set({roughness:u,metalness:c,detailUvRepeat:o,detailUvOffset:s})}else if("lambert"===e)t.setTextureImage("detailMap",a,i,h),t.set({detailUvRepeat:o,detailUvOffset:s});else if("color"===e)t.setTextureImage("detailMap",a,i,h),t.set({detailUvRepeat:o,detailUvOffset:s});else if("hatching"===e){var f=n.get("hatchingTextures")||[];f.length;for(var p=0;p<6;p++)t.setTextureImage("hatch"+(p+1),f[p],i,{anisotropic:8,wrapS:Ka.Texture.REPEAT,wrapT:Ka.Texture.REPEAT});t.set({detailUvRepeat:o,detailUvOffset:s})}},Ka.updateVertexAnimation=function(e,t,r,i){var n=i.get("animation"),a=i.get("animationDurationUpdate"),o=i.get("animationEasingUpdate"),s=r.shadowDepthMaterial;if(n&&t&&a>0&&t.geometry.vertexCount===r.geometry.vertexCount){r.material.define("vertex","VERTEX_ANIMATION"),r.ignorePreZ=!0,s&&s.define("vertex","VERTEX_ANIMATION");for(var l=0;l=0&&this._viewsToDispose.splice(t,1),this.views.push(e),e.layer=this;var r=this.zr;e.scene.traverse(function(e){e.__zr=r,e.addAnimatorsToZr&&e.addAnimatorsToZr(r)})}},eo.prototype.removeView=function(e){if(e.layer===this){var t=this.views.indexOf(e);t>=0&&(this.views.splice(t,1),e.scene.traverse(to,this),e.layer=null,this._viewsToDispose.push(e))}},eo.prototype.removeViewsAll=function(){this.views.forEach(function(e){e.scene.traverse(to,this),e.layer=null,this._viewsToDispose.push(e)},this),this.views.length=0},eo.prototype.resize=function(e,t){this.renderer.resize(e,t)},eo.prototype.clear=function(){var e=this.renderer.gl,t=this._backgroundColor||[0,0,0,0];e.clearColor(t[0],t[1],t[2],t[3]),e.depthMask(!0),e.colorMask(!0,!0,!0,!0),e.clear(e.DEPTH_BUFFER_BIT|e.COLOR_BUFFER_BIT)},eo.prototype.clearDepth=function(){var e=this.renderer.gl;e.clear(e.DEPTH_BUFFER_BIT)},eo.prototype.clearColor=function(){var e=this.renderer.gl;e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)},eo.prototype.needsRefresh=function(){this.zr.refresh()},eo.prototype.refresh=function(e){this._backgroundColor=e?Ka.parseColor(e):[0,0,0,0],this.renderer.clearColor=this._backgroundColor;for(var t=0;t20)){e=e.event;var i=this.pickObject(e.offsetX,e.offsetY);i&&(this._dispatchEvent(e.type,e,i),this._dispatchDataEvent(e.type,e,i));var n=this._clickToSetFocusPoint(e);n&&n.view.setDOFFocusOnPoint(n.distance)&&this.zr.refresh()}}},eo.prototype._clickToSetFocusPoint=function(e){for(var t=this.renderer,r=t.viewport,i=this.views.length-1;i>=0;i--){var n=this.views[i];if(n.hasDOF()&&n.containPoint(e.offsetX,e.offsetY)){this._picking.scene=n.scene,this._picking.camera=n.camera,t.viewport=n.viewport;var a=this._picking.pick(e.offsetX,e.offsetY,!0);if(a)return a.view=n,a}}t.viewport=r},eo.prototype.onglobalout=function(e){var t=this._hovered;t&&this._dispatchEvent("mouseout",e,{target:t.target})},eo.prototype.pickObject=function(e,t){for(var r=[],i=this.renderer,n=i.viewport,a=0;a=0&&(c.dataIndex=this._lastDataIndex,c.seriesIndex=this._lastSeriesIndex,this.zr.handler.dispatchToElement(u,"mouseout",t)),s=!0):null!=o&&o!==this._lastEventData&&(null!=this._lastEventData&&(c.eventData=this._lastEventData,this.zr.handler.dispatchToElement(u,"mouseout",t)),s=!0),this._lastEventData=o,this._lastDataIndex=n,this._lastSeriesIndex=a),c.eventData=o,c.dataIndex=n,c.seriesIndex=a,(null!=o||parseInt(n,10)>=0&&parseInt(a,10)>=0)&&(this.zr.handler.dispatchToElement(u,e,t),s&&this.zr.handler.dispatchToElement(u,"mouseover",t))},eo.prototype._dispatchToView=function(e,t){for(var r=0;re&&o=0&&(function(e){lo(e,"itemStyle"),lo(e,"lineStyle"),lo(e,"areaStyle"),lo(e,"label")}(t),"mapbox"===t.coordinateSystem&&(t.coordinateSystem="mapbox3D",e.mapbox3D=e.mapbox))}),ho(e.xAxis3D),ho(e.yAxis3D),ho(e.zAxis3D),ho(e.grid3D),lo(e.geo3D)});const co={defaultOption:{viewControl:{projection:"perspective",autoRotate:!1,autoRotateDirection:"cw",autoRotateSpeed:10,autoRotateAfterStill:3,damping:.8,rotateSensitivity:1,zoomSensitivity:1,panSensitivity:1,panMouseButton:"middle",rotateMouseButton:"left",distance:150,minDistance:40,maxDistance:400,orthographicSize:150,maxOrthographicSize:400,minOrthographicSize:20,center:[0,0,0],alpha:0,beta:0,minAlpha:-90,maxAlpha:90}},setView:function(e){e=e||{},this.option.viewControl=this.option.viewControl||{},null!=e.alpha&&(this.option.viewControl.alpha=e.alpha),null!=e.beta&&(this.option.viewControl.beta=e.beta),null!=e.distance&&(this.option.viewControl.distance=e.distance),null!=e.center&&(this.option.viewControl.center=e.center)}},fo={defaultOption:{postEffect:{enable:!1,bloom:{enable:!0,intensity:.1},depthOfField:{enable:!1,focalRange:20,focalDistance:50,blurRadius:10,fstop:2.8,quality:"medium"},screenSpaceAmbientOcclusion:{enable:!1,radius:2,quality:"medium",intensity:1},screenSpaceReflection:{enable:!1,quality:"medium",maxRoughness:.8},colorCorrection:{enable:!0,exposure:0,brightness:0,contrast:1,saturation:1,lookupTexture:""},edge:{enable:!1},FXAA:{enable:!1}},temporalSuperSampling:{enable:"auto"}}},po={defaultOption:{light:{main:{shadow:!1,shadowQuality:"high",color:"#fff",intensity:1,alpha:0,beta:0},ambient:{color:"#fff",intensity:.2},ambientCubemap:{texture:null,exposure:1,diffuseIntensity:.5,specularIntensity:.5}}}};var mo=g.extend({type:"grid3D",dependencies:["xAxis3D","yAxis3D","zAxis3D"],defaultOption:{show:!0,zlevel:-10,left:0,top:0,width:"100%",height:"100%",environment:"auto",boxWidth:100,boxHeight:100,boxDepth:100,axisPointer:{show:!0,lineStyle:{color:"rgba(0, 0, 0, 0.8)",width:1},label:{show:!0,formatter:null,margin:8,textStyle:{fontSize:14,color:"#fff",backgroundColor:"rgba(0,0,0,0.5)",padding:3,borderRadius:3}}},axisLine:{show:!0,lineStyle:{color:"#333",width:2,type:"solid"}},axisTick:{show:!0,inside:!1,length:3,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,margin:8,textStyle:{fontSize:12}},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}},light:{main:{alpha:30,beta:40},ambient:{intensity:.4}},viewControl:{alpha:20,beta:40,autoRotate:!1,distance:200,minDistance:40,maxDistance:400}}});_(mo.prototype,co),_(mo.prototype,fo),_(mo.prototype,po);var go=La,_o={left:0,middle:1,right:2};function vo(e){return e instanceof Array||(e=[e,e]),e}var yo=be.extend(function(){return{zr:null,viewGL:null,_center:new Gr,minDistance:.5,maxDistance:1.5,maxOrthographicSize:300,minOrthographicSize:30,minAlpha:-90,maxAlpha:90,minBeta:-1/0,maxBeta:1/0,autoRotateAfterStill:0,autoRotateDirection:"cw",autoRotateSpeed:60,damping:.8,rotateSensitivity:1,zoomSensitivity:1,panSensitivity:1,panMouseButton:"middle",rotateMouseButton:"left",_mode:"rotate",_camera:null,_needsUpdate:!1,_rotating:!1,_phi:0,_theta:0,_mouseX:0,_mouseY:0,_rotateVelocity:new Yt,_panVelocity:new Yt,_distance:500,_zoomSpeed:0,_stillTimeout:0,_animators:[]}},function(){["_mouseDownHandler","_mouseWheelHandler","_mouseMoveHandler","_mouseUpHandler","_pinchHandler","_contextMenuHandler","_update"].forEach(function(e){this[e]=this[e].bind(this)},this)},{init:function(){var e=this.zr;e&&(e.on("mousedown",this._mouseDownHandler),e.on("globalout",this._mouseUpHandler),e.on("mousewheel",this._mouseWheelHandler),e.on("pinch",this._pinchHandler),e.animation.on("frame",this._update),e.dom.addEventListener("contextmenu",this._contextMenuHandler))},dispose:function(){var e=this.zr;e&&(e.off("mousedown",this._mouseDownHandler),e.off("mousemove",this._mouseMoveHandler),e.off("mouseup",this._mouseUpHandler),e.off("mousewheel",this._mouseWheelHandler),e.off("pinch",this._pinchHandler),e.off("globalout",this._mouseUpHandler),e.dom.removeEventListener("contextmenu",this._contextMenuHandler),e.animation.off("frame",this._update)),this.stopAllAnimation()},getDistance:function(){return this._distance},setDistance:function(e){this._distance=e,this._needsUpdate=!0},getOrthographicSize:function(){return this._orthoSize},setOrthographicSize:function(e){this._orthoSize=e,this._needsUpdate=!0},getAlpha:function(){return this._theta/Math.PI*180},getBeta:function(){return-this._phi/Math.PI*180},getCenter:function(){return this._center.toArray()},setAlpha:function(e){e=Math.max(Math.min(this.maxAlpha,e),this.minAlpha),this._theta=e/180*Math.PI,this._needsUpdate=!0},setBeta:function(e){e=Math.max(Math.min(this.maxBeta,e),this.minBeta),this._phi=-e/180*Math.PI,this._needsUpdate=!0},setCenter:function(e){this._center.setArray(e)},setViewGL:function(e){this.viewGL=e},getCamera:function(){return this.viewGL.camera},setFromViewControlModel:function(e,t){var r=(t=t||{}).baseDistance||0,i=t.baseOrthoSize||1,n=e.get("projection");"perspective"!==n&&"orthographic"!==n&&"isometric"!==n&&(n="perspective"),this._projection=n,this.viewGL.setProjection(n);var a=e.get("distance")+r,o=e.get("orthographicSize")+i;[["damping",.8],["autoRotate",!1],["autoRotateAfterStill",3],["autoRotateDirection","cw"],["autoRotateSpeed",10],["minDistance",30],["maxDistance",400],["minOrthographicSize",30],["maxOrthographicSize",300],["minAlpha",-90],["maxAlpha",90],["minBeta",-1/0],["maxBeta",1/0],["rotateSensitivity",1],["zoomSensitivity",1],["panSensitivity",1],["panMouseButton","left"],["rotateMouseButton","middle"]].forEach(function(t){this[t[0]]=go(e.get(t[0]),t[1])},this),this.minDistance+=r,this.maxDistance+=r,this.minOrthographicSize+=i,this.maxOrthographicSize+=i;var s=e.ecModel,l={};["animation","animationDurationUpdate","animationEasingUpdate"].forEach(function(t){l[t]=go(e.get(t),s&&s.get(t))});var h=go(t.alpha,e.get("alpha"))||0,u=go(t.beta,e.get("beta"))||0,c=go(t.center,e.get("center"))||[0,0,0];l.animation&&l.animationDurationUpdate>0&&this._notFirst?this.animateTo({alpha:h,beta:u,center:c,distance:a,orthographicSize:o,easing:l.animationEasingUpdate,duration:l.animationDurationUpdate}):(this.setDistance(a),this.setAlpha(h),this.setBeta(u),this.setCenter(c),this.setOrthographicSize(o)),this._notFirst=!0,this._validateProperties()},_validateProperties:function(){},animateTo:function(e){var t=this.zr,r=this,i={},n={};return null!=e.distance&&(i.distance=this.getDistance(),n.distance=e.distance),null!=e.orthographicSize&&(i.orthographicSize=this.getOrthographicSize(),n.orthographicSize=e.orthographicSize),null!=e.alpha&&(i.alpha=this.getAlpha(),n.alpha=e.alpha),null!=e.beta&&(i.beta=this.getBeta(),n.beta=e.beta),null!=e.center&&(i.center=this.getCenter(),n.center=e.center),this._addAnimator(t.animation.animate(i).when(e.duration||1e3,n).during(function(){null!=i.alpha&&r.setAlpha(i.alpha),null!=i.beta&&r.setBeta(i.beta),null!=i.distance&&r.setDistance(i.distance),null!=i.center&&r.setCenter(i.center),null!=i.orthographicSize&&r.setOrthographicSize(i.orthographicSize),r._needsUpdate=!0})).start(e.easing||"linear")},stopAllAnimation:function(){for(var e=0;e0},_update:function(e){if(this._rotating){var t=("cw"===this.autoRotateDirection?1:-1)*this.autoRotateSpeed/180*Math.PI;this._phi-=t*e/1e3,this._needsUpdate=!0}else this._rotateVelocity.len()>0&&(this._needsUpdate=!0);(Math.abs(this._zoomSpeed)>.1||this._panVelocity.len()>0)&&(this._needsUpdate=!0),this._needsUpdate&&(e=Math.min(e,50),this._updateDistanceOrSize(e),this._updatePan(e),this._updateRotate(e),this._updateTransform(),this.getCamera().update(),this.zr&&this.zr.refresh(),this.trigger("update"),this._needsUpdate=!1)},_updateRotate:function(e){var t=this._rotateVelocity;this._phi=t.y*e/20+this._phi,this._theta=t.x*e/20+this._theta,this.setAlpha(this.getAlpha()),this.setBeta(this.getBeta()),this._vectorDamping(t,Math.pow(this.damping,e/16))},_updateDistanceOrSize:function(e){"perspective"===this._projection?this._setDistance(this._distance+this._zoomSpeed*e/20):this._setOrthoSize(this._orthoSize+this._zoomSpeed*e/20),this._zoomSpeed*=Math.pow(this.damping,e/16)},_setDistance:function(e){this._distance=Math.max(Math.min(e,this.maxDistance),this.minDistance)},_setOrthoSize:function(e){this._orthoSize=Math.max(Math.min(e,this.maxOrthographicSize),this.minOrthographicSize);var t=this.getCamera(),r=this._orthoSize,i=r/this.viewGL.viewport.height*this.viewGL.viewport.width;t.left=-i/2,t.right=i/2,t.top=r/2,t.bottom=-r/2},_updatePan:function(e){var t=this._panVelocity,r=this._distance,i=this.getCamera(),n=i.worldTransform.y,a=i.worldTransform.x;this._center.scaleAndAdd(a,-t.x*r/200).scaleAndAdd(n,-t.y*r/200),this._vectorDamping(t,0)},_updateTransform:function(){var e=this.getCamera(),t=new Gr,r=this._theta+Math.PI/2,i=this._phi+Math.PI/2,n=Math.sin(r);t.x=n*Math.cos(i),t.y=-Math.cos(r),t.z=n*Math.sin(i),e.position.copy(this._center).scaleAndAdd(t,this._distance),e.rotation.identity().rotateY(-this._phi).rotateX(-this._theta)},_startCountingStill:function(){clearTimeout(this._stillTimeout);var e=this.autoRotateAfterStill,t=this;!isNaN(e)&&e>0&&(this._stillTimeout=setTimeout(function(){t._rotating=!0},1e3*e))},_vectorDamping:function(e,t){var r=e.len();(r*=t)<1e-4&&(r=0),e.normalize().scale(r)},_decomposeTransform:function(){if(this.getCamera()){this.getCamera().updateWorldTransform();var e=this.getCamera().worldTransform.z,t=Math.asin(e.y),r=Math.atan2(e.x,e.z);this._theta=t,this._phi=-r,this.setBeta(this.getBeta()),this.setAlpha(this.getAlpha()),this.getCamera().aspect?this._setDistance(this.getCamera().position.dist(this._center)):this._setOrthoSize(this.getCamera().top-this.getCamera().bottom)}},_mouseDownHandler:function(e){if(!e.target&&!this._isAnimating()){var t=e.offsetX,r=e.offsetY;this.viewGL&&!this.viewGL.containPoint(t,r)||(this.zr.on("mousemove",this._mouseMoveHandler),this.zr.on("mouseup",this._mouseUpHandler),e.event.targetTouches?1===e.event.targetTouches.length&&(this._mode="rotate"):e.event.button===_o[this.rotateMouseButton]?this._mode="rotate":e.event.button===_o[this.panMouseButton]?this._mode="pan":this._mode="",this._rotateVelocity.set(0,0),this._rotating=!1,this.autoRotate&&this._startCountingStill(),this._mouseX=e.offsetX,this._mouseY=e.offsetY)}},_mouseMoveHandler:function(e){if(!(e.target&&e.target.__isGLToZRProxy||this._isAnimating())){var t=vo(this.panSensitivity),r=vo(this.rotateSensitivity);"rotate"===this._mode?(this._rotateVelocity.y=(e.offsetX-this._mouseX)/this.zr.getHeight()*2*r[0],this._rotateVelocity.x=(e.offsetY-this._mouseY)/this.zr.getWidth()*2*r[1]):"pan"===this._mode&&(this._panVelocity.x=(e.offsetX-this._mouseX)/this.zr.getWidth()*t[0]*400,this._panVelocity.y=(-e.offsetY+this._mouseY)/this.zr.getHeight()*t[1]*400),this._mouseX=e.offsetX,this._mouseY=e.offsetY,e.event.preventDefault()}},_mouseWheelHandler:function(e){if(!this._isAnimating()){var t=e.event.wheelDelta||-e.event.detail;this._zoomHandler(e,t)}},_pinchHandler:function(e){this._isAnimating()||(this._zoomHandler(e,e.pinchScale>1?1:-1),this._mode="")},_zoomHandler:function(e,t){if(0!==t){var r,i=e.offsetX,n=e.offsetY;this.viewGL&&!this.viewGL.containPoint(i,n)||(r="perspective"===this._projection?Math.max(Math.max(Math.min(this._distance-this.minDistance,this.maxDistance-this._distance))/20,.5):Math.max(Math.max(Math.min(this._orthoSize-this.minOrthographicSize,this.maxOrthographicSize-this._orthoSize))/20,.5),this._zoomSpeed=(t>0?-1:1)*r*this.zoomSensitivity,this._rotating=!1,this.autoRotate&&"rotate"===this._mode&&this._startCountingStill(),e.event.preventDefault())}},_mouseUpHandler:function(){this.zr.off("mousemove",this._mouseMoveHandler),this.zr.off("mouseup",this._mouseUpHandler)},_isRightMouseButtonUsed:function(){return"right"===this.rotateMouseButton||"right"===this.panMouseButton},_contextMenuHandler:function(e){this._isRightMouseButtonUsed()&&e.preventDefault()},_addAnimator:function(e){var t=this._animators;return t.push(e),e.done(function(){var r=t.indexOf(e);r>=0&&t.splice(r,1)}),e}});Object.defineProperty(yo.prototype,"autoRotate",{get:function(e){return this._autoRotate},set:function(e){this._autoRotate=e,this._rotating=e}});const xo={convertToDynamicArray:function(e){e&&this.resetOffset();var t=this.attributes;for(var r in t)e||!t[r].value?t[r].value=[]:t[r].value=Array.prototype.slice.call(t[r].value);e||!this.indices?this.indices=[]:this.indices=Array.prototype.slice.call(this.indices)},convertToTypedArray:function(){var e=this.attributes;for(var t in e)e[t].value&&e[t].value.length>0?e[t].value=new Float32Array(e[t].value):e[t].value=null;this.indices&&this.indices.length>0&&(this.indices=this.vertexCount>65535?new Uint32Array(this.indices):new Uint16Array(this.indices)),this.dirty()}},bo={vec2:Zt,vec3:Ar,vec4:$r,mat3:ei,mat4:Mr};var To=bo.vec3,wo=[[0,0],[1,1]],So=tn.extend(function(){return{segmentScale:1,dynamic:!0,useNativeLine:!0,attributes:{position:new tn.Attribute("position","float",3,"POSITION"),positionPrev:new tn.Attribute("positionPrev","float",3),positionNext:new tn.Attribute("positionNext","float",3),prevPositionPrev:new tn.Attribute("prevPositionPrev","float",3),prevPosition:new tn.Attribute("prevPosition","float",3),prevPositionNext:new tn.Attribute("prevPositionNext","float",3),offset:new tn.Attribute("offset","float",1),color:new tn.Attribute("color","float",4,"COLOR")}}},{resetOffset:function(){this._vertexOffset=0,this._triangleOffset=0,this._itemVertexOffsets=[]},setVertexCount:function(e){var t=this.attributes;this.vertexCount!==e&&(t.position.init(e),t.color.init(e),this.useNativeLine||(t.positionPrev.init(e),t.positionNext.init(e),t.offset.init(e)),e>65535?this.indices instanceof Uint16Array&&(this.indices=new Uint32Array(this.indices)):this.indices instanceof Uint32Array&&(this.indices=new Uint16Array(this.indices)))},setTriangleCount:function(e){this.triangleCount!==e&&(this.indices=0===e?null:this.vertexCount>65535?new Uint32Array(3*e):new Uint16Array(3*e))},_getCubicCurveApproxStep:function(e,t,r,i){return 1/(To.dist(e,t)+To.dist(r,t)+To.dist(i,r)+1)*this.segmentScale},getCubicCurveVertexCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?2*a:2*a+2},getCubicCurveTriangleCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?0:2*a},getLineVertexCount:function(){return this.getPolylineVertexCount(wo)},getLineTriangleCount:function(){return this.getPolylineTriangleCount(wo)},getPolylineVertexCount:function(e){var t;return t="number"==typeof e?e:"number"!=typeof e[0]?e.length:e.length/3,this.useNativeLine?2*(t-1):2*(t-1)+2},getPolylineTriangleCount:function(e){var t;return t="number"==typeof e?e:"number"!=typeof e[0]?e.length:e.length/3,this.useNativeLine?0:2*Math.max(t-1,0)},addCubicCurve:function(e,t,r,i,n,a){null==a&&(a=1);var o=e[0],s=e[1],l=e[2],h=t[0],u=t[1],c=t[2],d=r[0],f=r[1],p=r[2],m=i[0],g=i[1],_=i[2],v=this._getCubicCurveApproxStep(e,t,r,i),y=v*v,x=y*v,b=3*v,T=3*y,w=6*y,S=6*x,M=o-2*h+d,A=s-2*u+f,E=l-2*c+p,D=3*(h-d)-o+m,C=3*(u-f)-s+g,L=3*(c-p)-l+_,P=o,O=s,N=l,R=(h-o)*b+M*T+D*x,I=(u-s)*b+A*T+C*x,B=(c-l)*b+E*T+L*x,z=M*w+D*S,F=A*w+C*S,G=E*w+L*S,U=D*S,H=C*S,V=L*S,k=0,W=0,j=Math.ceil(1/v),X=new Float32Array(3*(j+1)),q=(X=[],0);for(W=0;W1&&(P=R>0?Math.min(P,m):Math.max(P,m),O=I>0?Math.min(O,g):Math.max(O,g),N=B>0?Math.min(N,_):Math.max(N,_));return this.addPolyline(X,n,a)},addLine:function(e,t,r,i){return this.addPolyline([e,t],r,i)},addPolyline:function(e,t,r,i,n){if(e.length){var a="number"!=typeof e[0];if(null==n&&(n=a?e.length:e.length/3),!(n<2)){null==i&&(i=0),null==r&&(r=1),this._itemVertexOffsets.push(this._vertexOffset);var o,s,l=(a="number"!=typeof e[0])?"number"!=typeof t[0]:t.length/4===n,h=this.attributes.position,u=this.attributes.positionPrev,c=this.attributes.positionNext,d=this.attributes.color,f=this.attributes.offset,p=this.indices,m=this._vertexOffset;r=Math.max(r,.01);for(var g=i;g1&&(h.copy(m,m-1),d.copy(m,m-1),m++):(g0&&(c.set(m-2,o),c.set(m-1,o)),h.set(m,o),h.set(m+1,o),d.set(m,s),d.set(m+1,s),f.set(m,r/2),f.set(m+1,-r/2),m+=2),this.useNativeLine)d.set(m,s),h.set(m,o),m++;else if(g>0){var y=3*this._triangleOffset;(p=this.indices)[y]=m-4,p[y+1]=m-3,p[y+2]=m-2,p[y+3]=m-3,p[y+4]=m-1,p[y+5]=m-2,this._triangleOffset+=2}}if(!this.useNativeLine){var x=this._vertexOffset,b=this._vertexOffset+2*n;u.copy(x,x+2),u.copy(x+1,x+3),c.copy(b-1,b-3),c.copy(b-2,b-4)}return this._vertexOffset=m,this._vertexOffset}}},setItemColor:function(e,t){for(var r=this._itemVertexOffsets[e],i=eo&&(n=this._x=0,a+=this._rowHeight+l,this._y=a,this._rowHeight=0),this._x+=t+l,this._rowHeight=Math.max(this._rowHeight,r),a+r+l>s)return null;e.x+=this.offsetX*this.dpr+n,e.y+=this.offsetY*this.dpr+a,this._zr.add(e);var h=[this.offsetX/this.width,this.offsetY/this.height];return[[n/o+h[0],a/s+h[1]],[(n+t)/o+h[0],(a+r)/s+h[1]]]},_fitElement:function(e,t,r){var i=e.getBoundingRect(),n=t/i.width,a=r/i.height;e.x=-i.x*n,e.y=-i.y*a,e.scaleX=n,e.scaleY=a,e.update()}},Ao.prototype={clear:function(){for(var e=0;e=e)){var n=(r+this._nodeWidth)*this._dpr,a=(i+this._nodeHeight)*this._dpr;try{this._zr.resize({width:n,height:a})}catch(ch){this._canvas.width=n,this._canvas.height=a}var o=new Mo(this._zr,r,i,this._nodeWidth,this._nodeHeight,this._gap,this._dpr);return this._textureAtlasNodes.push(o),o}},add:function(e,t,r){if(this._coords[e.id])return this._coords[e.id];var i=this._getCurrentNode().add(e,t,r);if(!i){var n=this._expand();if(!n)return;i=n.add(e,t,r)}return this._coords[e.id]=i,i},getCoordsScale:function(){var e=this._dpr;return[this._nodeWidth/this._canvas.width*e,this._nodeHeight/this._canvas.height*e]},getCoords:function(e){return this._coords[e]},dispose:function(){this._zr.dispose()}},Eo.prototype={constructor:Eo,setScene:function(e){this._scene=e,this._skybox&&this._skybox.attachScene(this._scene)},initLight:function(e){this._lightRoot=e,this.mainLight=new Ka.DirectionalLight({shadowBias:.005}),this.ambientLight=new Ka.AmbientLight,e.add(this.mainLight),e.add(this.ambientLight)},dispose:function(){this._lightRoot&&(this._lightRoot.remove(this.mainLight),this._lightRoot.remove(this.ambientLight))},updateLight:function(e){var t=this.mainLight,r=this.ambientLight,i=e.getModel("light"),n=i.getModel("main"),a=i.getModel("ambient");t.intensity=n.get("intensity"),r.intensity=a.get("intensity"),t.color=Ka.parseColor(n.get("color")).slice(0,3),r.color=Ka.parseColor(a.get("color")).slice(0,3);var o=n.get("alpha")||0,s=n.get("beta")||0;t.position.setArray(Ka.directionFromAlphaBeta(o,s)),t.lookAt(Ka.Vector3.ZERO),t.castShadow=n.get("shadow"),t.shadowResolution=Ka.getShadowResolution(n.get("shadowQuality"))},updateAmbientCubemap:function(e,t,r){var i=t.getModel("light.ambientCubemap"),n=i.get("texture");if(n){this._cubemapLightsCache=this._cubemapLightsCache||{};var a=this._cubemapLightsCache[n];if(!a){var o=this;a=this._cubemapLightsCache[n]=Ka.createAmbientCubemap(i.option,e,r,function(){o._isSkyboxFromAmbientCubemap&&o._skybox.setEnvironmentMap(a.specular.cubemap),r.getZr().refresh()})}this._lightRoot.add(a.diffuse),this._lightRoot.add(a.specular),this._currentCubemapLights=a}else this._currentCubemapLights&&(this._lightRoot.remove(this._currentCubemapLights.diffuse),this._lightRoot.remove(this._currentCubemapLights.specular),this._currentCubemapLights=null)},updateSkybox:function(e,t,r){var i=t.get("environment"),n=this,a=(n._skybox=n._skybox||new ta,n._skybox);if(i&&"none"!==i)if("auto"===i)if(this._isSkyboxFromAmbientCubemap=!0,this._currentCubemapLights){var l=this._currentCubemapLights.specular.cubemap;a.setEnvironmentMap(l),this._scene&&a.attachScene(this._scene),a.material.set("lod",3)}else this._skybox&&this._skybox.detachScene();else if("object"==typeof i&&i.colorStops||"string"==typeof i&&o(i)){this._isSkyboxFromAmbientCubemap=!1;var h=new Ka.Texture2D({anisotropic:8,flipY:!1});a.setEnvironmentMap(h);var u=h.image=document.createElement("canvas");u.width=u.height=16;var c=u.getContext("2d"),d=new s({shape:{x:0,y:0,width:16,height:16},style:{fill:i}});x(c,d),a.attachScene(this._scene)}else this._isSkyboxFromAmbientCubemap=!1,h=Ka.loadTexture(i,r,{anisotropic:8,flipY:!1}),a.setEnvironmentMap(h),a.attachScene(this._scene);else this._skybox&&this._skybox.detachScene(this._scene),this._skybox=null;var f=t.coordinateSystem;if(this._skybox)if(!f||!f.viewGL||"auto"===i||i.match&&i.match(/.hdr$/))this._skybox.material.undefine("fragment","SRGB_DECODE");else{var p=f.viewGL.isLinearSpace()?"define":"undefine";this._skybox.material[p]("fragment","SRGB_DECODE")}}};var Do=bo.vec3,Co=tn.extend(function(){return{segmentScale:1,useNativeLine:!0,attributes:{position:new tn.Attribute("position","float",3,"POSITION"),normal:new tn.Attribute("normal","float",3,"NORMAL"),color:new tn.Attribute("color","float",4,"COLOR")}}},{resetOffset:function(){this._vertexOffset=0,this._faceOffset=0},setQuadCount:function(e){var t=this.attributes,r=this.getQuadVertexCount()*e,i=this.getQuadTriangleCount()*e;this.vertexCount!==r&&(t.position.init(r),t.normal.init(r),t.color.init(r)),this.triangleCount!==i&&(this.indices=r>65535?new Uint32Array(3*i):new Uint16Array(3*i))},getQuadVertexCount:function(){return 4},getQuadTriangleCount:function(){return 2},addQuad:function(){var e=Do.create(),t=Do.create(),r=Do.create(),i=[0,3,1,3,2,1];return function(n,a){var o=this.attributes.position,s=this.attributes.normal,l=this.attributes.color;Do.sub(e,n[1],n[0]),Do.sub(t,n[2],n[1]),Do.cross(r,e,t),Do.normalize(r,r);for(var h=0;h<4;h++)o.set(this._vertexOffset+h,n[h]),l.set(this._vertexOffset+h,a),s.set(this._vertexOffset+h,r);var u=3*this._faceOffset;for(h=0;h<6;h++)this.indices[u+h]=i[h]+this._vertexOffset;this._vertexOffset+=4,this._faceOffset+=2}}()});v(Co.prototype,xo);var Lo=La,Po={x:0,y:2,z:1};function Oo(e,t,r){this.rootNode=new Ka.Node;var i=new Ka.Mesh({geometry:new So({useNativeLine:!1}),material:t,castShadow:!1,ignorePicking:!0,$ignorePicking:!0,renderOrder:1}),n=new Ka.Mesh({geometry:new Co,material:r,castShadow:!1,culling:!1,ignorePicking:!0,$ignorePicking:!0,renderOrder:0});this.rootNode.add(n),this.rootNode.add(i),this.faceInfo=e,this.plane=new Ka.Plane,this.linesMesh=i,this.quadsMesh=n}Oo.prototype.update=function(e,t,r){var i=e.coordinateSystem,n=[i.getAxis(this.faceInfo[0]),i.getAxis(this.faceInfo[1])],a=this.linesMesh.geometry,o=this.quadsMesh.geometry;a.convertToDynamicArray(!0),o.convertToDynamicArray(!0),this._updateSplitLines(a,n,e,r),this._udpateSplitAreas(o,n,e,r),a.convertToTypedArray(),o.convertToTypedArray();var s=i.getAxis(this.faceInfo[2]);!function(e,t,r,i){var n=[0,0,0],a=i<0?r.getExtentMin():r.getExtentMax();n[Po[r.dim]]=a,e.position.setArray(n),e.rotation.identity(),t.distance=-Math.abs(a),t.normal.set(0,0,0),"x"===r.dim?(e.rotation.rotateY(i*Math.PI/2),t.normal.x=-i):"z"===r.dim?(e.rotation.rotateX(-i*Math.PI/2),t.normal.y=-i):(i>0&&e.rotation.rotateY(Math.PI),t.normal.z=-i)}(this.rootNode,this.plane,s,this.faceInfo[3])},Oo.prototype._updateSplitLines=function(e,t,r,n){var a=n.getDevicePixelRatio();t.forEach(function(n,o){var s=n.model,l=t[1-o].getExtent();if(!n.scale.isBlank()){var h=s.getModel("splitLine",r.getModel("splitLine"));if(h.get("show")){var u=h.getModel("lineStyle"),c=u.get("color"),d=Lo(u.get("opacity"),1),f=Lo(u.get("width"),1);c=i(c)?c:[c];for(var p=n.getTicksCoords({tickModel:h}),m=0,g=0;g65535?new Uint32Array(3*r):new Uint16Array(3*r))},setSpriteAlign:function(e,t,r,i,n){var a,o,s,l;switch(null==r&&(r="left"),null==i&&(i="top"),n=n||0,r){case"left":a=n,s=t[0]+n;break;case"center":case"middle":a=-t[0]/2,s=t[0]/2;break;case"right":a=-t[0]-n,s=-n}switch(i){case"bottom":o=n,l=t[1]+n;break;case"middle":o=-t[1]/2,l=t[1]/2;break;case"top":o=-t[1]-n,l=-n}var h=4*e,u=this.attributes.offset;u.set(h,[a,l]),u.set(h+1,[s,l]),u.set(h+2,[s,o]),u.set(h+3,[a,o])},addSprite:function(e,t,r,i,n,a){var o=this._vertexOffset;this.setSprite(this._vertexOffset/4,e,t,r,i,n,a);for(var s=0;si[1]?0:1,o=this._faces[2*r+a],s=this._faces[2*r+1-a];o.rootNode.invisible=!0,s.rootNode.invisible=!1}},_updateAxisLinePosition:function(){var e=this._model.coordinateSystem,t=e.getAxis("x"),r=e.getAxis("y"),i=e.getAxis("z"),n=i.getExtentMax(),a=i.getExtentMin(),o=t.getExtentMin(),s=t.getExtentMax(),l=r.getExtentMax(),h=r.getExtentMin(),u=this._axes[0].rootNode,c=this._axes[1].rootNode,d=this._axes[2].rootNode,f=this._faces,p=f[4].rootNode.invisible?h:l,m=f[2].rootNode.invisible?n:a,g=f[0].rootNode.invisible?o:s,_=f[2].rootNode.invisible?n:a,v=f[0].rootNode.invisible?s:o,y=f[4].rootNode.invisible?h:l;u.rotation.identity(),c.rotation.identity(),d.rotation.identity(),f[4].rootNode.invisible&&(this._axes[0].flipped=!0,u.rotation.rotateX(Math.PI)),f[0].rootNode.invisible&&(this._axes[1].flipped=!0,c.rotation.rotateZ(Math.PI)),f[4].rootNode.invisible&&(this._axes[2].flipped=!0,d.rotation.rotateY(Math.PI)),u.position.set(0,m,p),c.position.set(g,_,0),d.position.set(v,0,y),u.update(),c.update(),d.update(),this._updateAxisLabelAlign()},_updateAxisLabelAlign:function(){var e=this._control.getCamera(),t=[new Ka.Vector4,new Ka.Vector4],r=new Ka.Vector4;this.groupGL.getWorldPosition(r),r.w=1,r.transformMat4(e.viewMatrix).transformMat4(e.projectionMatrix),r.x/=r.w,r.y/=r.w,this._axes.forEach(function(i){var n=i.axisLineCoords;i.labelsMesh.geometry;for(var a=0;ar.y?"bottom":"top"):(s="middle",o=u>r.x?"left":"right"),i.setSpriteAlign(o,s,this._api)},this)},_doShowAxisPointer:function(){this._axisPointerLineMesh.invisible&&(this._axisPointerLineMesh.invisible=!1,this._axisPointerLabelsMesh.invisible=!1,this._api.getZr().refresh())},_doHideAxisPointer:function(){this._axisPointerLineMesh.invisible||(this._axisPointerLineMesh.invisible=!0,this._axisPointerLabelsMesh.invisible=!0,this._api.getZr().refresh())},_updateAxisPointer:function(e){var t=this._model.coordinateSystem,r=t.dataToPoint(e),i=this._axisPointerLineMesh.geometry,n=this._model.getModel("axisPointer"),a=this._api.getDevicePixelRatio();function o(e){return La(e.model.get("axisPointer.show"),n.get("show"))}function s(e){var t=e.model.getModel("axisPointer",n).getModel("lineStyle"),r=Ka.parseColor(t.get("color")),i=Ho(t.get("width"),1),a=Ho(t.get("opacity"),1);return r[3]*=a,{color:r,lineWidth:i}}i.convertToDynamicArray(!0);for(var l=0;l 0.0) {\n if (texture2D(alphaMap, v_Texcoord).a <= alphaCutoff) {\n discard;\n }\n }\n#ifdef USE_VSM\n depth = depth * 0.5 + 0.5;\n float moment1 = depth;\n float moment2 = depth * depth;\n #ifdef SUPPORT_STANDARD_DERIVATIVES\n float dx = dFdx(depth);\n float dy = dFdy(depth);\n moment2 += 0.25*(dx*dx+dy*dy);\n #endif\n gl_FragColor = vec4(moment1, moment2, 0.0, 1.0);\n#else\n #ifdef SUPPORT_STANDARD_DERIVATIVES\n float dx = dFdx(depth);\n float dy = dFdy(depth);\n depth += sqrt(dx*dx + dy*dy) * slopeScale + bias;\n #else\n depth += bias;\n #endif\n gl_FragColor = encodeFloat(depth * 0.5 + 0.5);\n#endif\n}\n@end\n@export clay.sm.debug_depth\nuniform sampler2D depthMap;\nvarying vec2 v_Texcoord;\n@import clay.util.decode_float\nvoid main() {\n vec4 tex = texture2D(depthMap, v_Texcoord);\n#ifdef USE_VSM\n gl_FragColor = vec4(tex.rgb, 1.0);\n#else\n float depth = decodeFloat(tex);\n gl_FragColor = vec4(depth, depth, depth, 1.0);\n#endif\n}\n@end\n@export clay.sm.distance.vertex\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform mat4 world : WORLD;\nattribute vec3 position : POSITION;\n@import clay.chunk.skinning_header\nvarying vec3 v_WorldPosition;\nvoid main (){\n vec4 P = vec4(position, 1.0);\n#ifdef SKINNING\n @import clay.chunk.skin_matrix\n P = skinMatrixWS * P;\n#endif\n#ifdef INSTANCING\n @import clay.chunk.instancing_matrix\n P = instanceMat * P;\n#endif\n gl_Position = worldViewProjection * P;\n v_WorldPosition = (world * P).xyz;\n}\n@end\n@export clay.sm.distance.fragment\nuniform vec3 lightPosition;\nuniform float range : 100;\nvarying vec3 v_WorldPosition;\n@import clay.util.encode_float\nvoid main(){\n float dist = distance(lightPosition, v_WorldPosition);\n#ifdef USE_VSM\n gl_FragColor = vec4(dist, dist * dist, 0.0, 0.0);\n#else\n dist = dist / range;\n gl_FragColor = encodeFloat(dist);\n#endif\n}\n@end\n@export clay.plugin.shadow_map_common\n@import clay.util.decode_float\nfloat tapShadowMap(sampler2D map, vec2 uv, float z){\n vec4 tex = texture2D(map, uv);\n return step(z, decodeFloat(tex) * 2.0 - 1.0);\n}\nfloat pcf(sampler2D map, vec2 uv, float z, float textureSize, vec2 scale) {\n float shadowContrib = tapShadowMap(map, uv, z);\n vec2 offset = vec2(1.0 / textureSize) * scale;\n#ifdef PCF_KERNEL_SIZE\n for (int _idx_ = 0; _idx_ < PCF_KERNEL_SIZE; _idx_++) {{\n shadowContrib += tapShadowMap(map, uv + offset * pcfKernel[_idx_], z);\n }}\n return shadowContrib / float(PCF_KERNEL_SIZE + 1);\n#else\n shadowContrib += tapShadowMap(map, uv+vec2(offset.x, 0.0), z);\n shadowContrib += tapShadowMap(map, uv+vec2(offset.x, offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(-offset.x, offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(0.0, offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(-offset.x, 0.0), z);\n shadowContrib += tapShadowMap(map, uv+vec2(-offset.x, -offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(offset.x, -offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(0.0, -offset.y), z);\n return shadowContrib / 9.0;\n#endif\n}\nfloat pcf(sampler2D map, vec2 uv, float z, float textureSize) {\n return pcf(map, uv, z, textureSize, vec2(1.0));\n}\nfloat chebyshevUpperBound(vec2 moments, float z){\n float p = 0.0;\n z = z * 0.5 + 0.5;\n if (z <= moments.x) {\n p = 1.0;\n }\n float variance = moments.y - moments.x * moments.x;\n variance = max(variance, 0.0000001);\n float mD = moments.x - z;\n float pMax = variance / (variance + mD * mD);\n pMax = clamp((pMax-0.4)/(1.0-0.4), 0.0, 1.0);\n return max(p, pMax);\n}\nfloat computeShadowContrib(\n sampler2D map, mat4 lightVPM, vec3 position, float textureSize, vec2 scale, vec2 offset\n) {\n vec4 posInLightSpace = lightVPM * vec4(position, 1.0);\n posInLightSpace.xyz /= posInLightSpace.w;\n float z = posInLightSpace.z;\n if(all(greaterThan(posInLightSpace.xyz, vec3(-0.99, -0.99, -1.0))) &&\n all(lessThan(posInLightSpace.xyz, vec3(0.99, 0.99, 1.0)))){\n vec2 uv = (posInLightSpace.xy+1.0) / 2.0;\n #ifdef USE_VSM\n vec2 moments = texture2D(map, uv * scale + offset).xy;\n return chebyshevUpperBound(moments, z);\n #else\n return pcf(map, uv * scale + offset, z, textureSize, scale);\n #endif\n }\n return 1.0;\n}\nfloat computeShadowContrib(sampler2D map, mat4 lightVPM, vec3 position, float textureSize) {\n return computeShadowContrib(map, lightVPM, position, textureSize, vec2(1.0), vec2(0.0));\n}\nfloat computeShadowContribOmni(samplerCube map, vec3 direction, float range)\n{\n float dist = length(direction);\n vec4 shadowTex = textureCube(map, direction);\n#ifdef USE_VSM\n vec2 moments = shadowTex.xy;\n float variance = moments.y - moments.x * moments.x;\n float mD = moments.x - dist;\n float p = variance / (variance + mD * mD);\n if(moments.x + 0.001 < dist){\n return clamp(p, 0.0, 1.0);\n }else{\n return 1.0;\n }\n#else\n return step(dist, (decodeFloat(shadowTex) + 0.0002) * range);\n#endif\n}\n@end\n@export clay.plugin.compute_shadow_map\n#if defined(SPOT_LIGHT_SHADOWMAP_COUNT) || defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT) || defined(POINT_LIGHT_SHADOWMAP_COUNT)\n#ifdef SPOT_LIGHT_SHADOWMAP_COUNT\nuniform sampler2D spotLightShadowMaps[SPOT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform mat4 spotLightMatrices[SPOT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform float spotLightShadowMapSizes[SPOT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\n#endif\n#ifdef DIRECTIONAL_LIGHT_SHADOWMAP_COUNT\n#if defined(SHADOW_CASCADE)\nuniform sampler2D directionalLightShadowMaps[1]:unconfigurable;\nuniform mat4 directionalLightMatrices[SHADOW_CASCADE]:unconfigurable;\nuniform float directionalLightShadowMapSizes[1]:unconfigurable;\nuniform float shadowCascadeClipsNear[SHADOW_CASCADE]:unconfigurable;\nuniform float shadowCascadeClipsFar[SHADOW_CASCADE]:unconfigurable;\n#else\nuniform sampler2D directionalLightShadowMaps[DIRECTIONAL_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform mat4 directionalLightMatrices[DIRECTIONAL_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform float directionalLightShadowMapSizes[DIRECTIONAL_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\n#endif\n#endif\n#ifdef POINT_LIGHT_SHADOWMAP_COUNT\nuniform samplerCube pointLightShadowMaps[POINT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\n#endif\nuniform bool shadowEnabled : true;\n#ifdef PCF_KERNEL_SIZE\nuniform vec2 pcfKernel[PCF_KERNEL_SIZE];\n#endif\n@import clay.plugin.shadow_map_common\n#if defined(SPOT_LIGHT_SHADOWMAP_COUNT)\nvoid computeShadowOfSpotLights(vec3 position, inout float shadowContribs[SPOT_LIGHT_COUNT] ) {\n float shadowContrib;\n for(int _idx_ = 0; _idx_ < SPOT_LIGHT_SHADOWMAP_COUNT; _idx_++) {{\n shadowContrib = computeShadowContrib(\n spotLightShadowMaps[_idx_], spotLightMatrices[_idx_], position,\n spotLightShadowMapSizes[_idx_]\n );\n shadowContribs[_idx_] = shadowContrib;\n }}\n for(int _idx_ = SPOT_LIGHT_SHADOWMAP_COUNT; _idx_ < SPOT_LIGHT_COUNT; _idx_++){{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#endif\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n#ifdef SHADOW_CASCADE\nvoid computeShadowOfDirectionalLights(vec3 position, inout float shadowContribs[DIRECTIONAL_LIGHT_COUNT]){\n float depth = (2.0 * gl_FragCoord.z - gl_DepthRange.near - gl_DepthRange.far)\n / (gl_DepthRange.far - gl_DepthRange.near);\n float shadowContrib;\n shadowContribs[0] = 1.0;\n for (int _idx_ = 0; _idx_ < SHADOW_CASCADE; _idx_++) {{\n if (\n depth >= shadowCascadeClipsNear[_idx_] &&\n depth <= shadowCascadeClipsFar[_idx_]\n ) {\n shadowContrib = computeShadowContrib(\n directionalLightShadowMaps[0], directionalLightMatrices[_idx_], position,\n directionalLightShadowMapSizes[0],\n vec2(1.0 / float(SHADOW_CASCADE), 1.0),\n vec2(float(_idx_) / float(SHADOW_CASCADE), 0.0)\n );\n shadowContribs[0] = shadowContrib;\n }\n }}\n for(int _idx_ = DIRECTIONAL_LIGHT_SHADOWMAP_COUNT; _idx_ < DIRECTIONAL_LIGHT_COUNT; _idx_++) {{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#else\nvoid computeShadowOfDirectionalLights(vec3 position, inout float shadowContribs[DIRECTIONAL_LIGHT_COUNT]){\n float shadowContrib;\n for(int _idx_ = 0; _idx_ < DIRECTIONAL_LIGHT_SHADOWMAP_COUNT; _idx_++) {{\n shadowContrib = computeShadowContrib(\n directionalLightShadowMaps[_idx_], directionalLightMatrices[_idx_], position,\n directionalLightShadowMapSizes[_idx_]\n );\n shadowContribs[_idx_] = shadowContrib;\n }}\n for(int _idx_ = DIRECTIONAL_LIGHT_SHADOWMAP_COUNT; _idx_ < DIRECTIONAL_LIGHT_COUNT; _idx_++) {{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#endif\n#endif\n#if defined(POINT_LIGHT_SHADOWMAP_COUNT)\nvoid computeShadowOfPointLights(vec3 position, inout float shadowContribs[POINT_LIGHT_COUNT] ){\n vec3 lightPosition;\n vec3 direction;\n for(int _idx_ = 0; _idx_ < POINT_LIGHT_SHADOWMAP_COUNT; _idx_++) {{\n lightPosition = pointLightPosition[_idx_];\n direction = position - lightPosition;\n shadowContribs[_idx_] = computeShadowContribOmni(pointLightShadowMaps[_idx_], direction, pointLightRange[_idx_]);\n }}\n for(int _idx_ = POINT_LIGHT_SHADOWMAP_COUNT; _idx_ < POINT_LIGHT_COUNT; _idx_++) {{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#endif\n#endif\n@end");var $o,es,ts,rs,is,ns,as,os=be.extend(function(){return{softShadow:os.PCF,shadowBlur:1,lightFrustumBias:"auto",kernelPCF:new Float32Array([1,0,1,1,-1,1,0,1,-1,0,-1,-1,1,-1,0,-1]),precision:"highp",_lastRenderNotCastShadow:!1,_frameBuffer:new Zn,_textures:{},_shadowMapNumber:{POINT_LIGHT:0,DIRECTIONAL_LIGHT:0,SPOT_LIGHT:0},_depthMaterials:{},_distanceMaterials:{},_receivers:[],_lightsCastShadow:[],_lightCameras:{},_lightMaterials:{},_texturePool:new Xo}},function(){this._gaussianPassH=new ba({fragment:br.source("clay.compositor.gaussian_blur")}),this._gaussianPassV=new ba({fragment:br.source("clay.compositor.gaussian_blur")}),this._gaussianPassH.setUniform("blurSize",this.shadowBlur),this._gaussianPassH.setUniform("blurDir",0),this._gaussianPassV.setUniform("blurSize",this.shadowBlur),this._gaussianPassV.setUniform("blurDir",1),this._outputDepthPass=new ba({fragment:br.source("clay.sm.debug_depth")})},{render:function(e,t,r,i){r||(r=t.getMainCamera()),this.trigger("beforerender",this,e,t,r),this._renderShadowPass(e,t,r,i),this.trigger("afterrender",this,e,t,r)},renderDebug:function(e,t){e.saveClear();var r=e.viewport,i=0,n=t||r.width/4,a=n;for(var o in this.softShadow===os.VSM?this._outputDepthPass.material.define("fragment","USE_VSM"):this._outputDepthPass.material.undefine("fragment","USE_VSM"),this._textures){var s=this._textures[o];e.setViewport(i,0,n*s.width/s.height,a),this._outputDepthPass.setUniform("depthMap",s),this._outputDepthPass.render(e),i+=n*s.width/s.height}e.setViewport(r),e.restoreClear()},_updateReceivers:function(e,t){if(t.receiveShadow?(this._receivers.push(t),t.material.set("shadowEnabled",1),t.material.set("pcfKernel",this.kernelPCF)):t.material.set("shadowEnabled",0),this.softShadow===os.VSM)t.material.define("fragment","USE_VSM"),t.material.undefine("fragment","PCF_KERNEL_SIZE");else{t.material.undefine("fragment","USE_VSM");var r=this.kernelPCF;r&&r.length?t.material.define("fragment","PCF_KERNEL_SIZE",r.length/2):t.material.undefine("fragment","PCF_KERNEL_SIZE")}},_update:function(e,t){var r=this;t.traverse(function(t){t.isRenderable()&&r._updateReceivers(e,t)});for(var i=0;i4){console.warn("Support at most 4 cascade");continue}p.shadowCascade>1&&(o=p),this.renderDirectionalLightShadow(e,t,r,p,c,u,h)}else"SPOT_LIGHT"===p.type?this.renderSpotLightShadow(e,t,p,l,s):"POINT_LIGHT"===p.type&&this.renderPointLightShadow(e,t,p,d);this._shadowMapNumber[p.type]++}for(var m in this._shadowMapNumber){var g=this._shadowMapNumber[m],_=m+"_SHADOWMAP_COUNT";for(f=0;f0?v.define("fragment",_,g):v.isDefined("fragment",_)&&v.undefine("fragment",_))}for(f=0;f0){var x=h.map(S);if(y.directionalLightShadowMaps={value:h,type:"tv"},y.directionalLightMatrices={value:u,type:"m4v"},y.directionalLightShadowMapSizes={value:x,type:"1fv"},o){var b=c.slice(),T=c.slice();b.pop(),T.shift(),b.reverse(),T.reverse(),u.reverse(),y.shadowCascadeClipsNear={value:b,type:"1fv"},y.shadowCascadeClipsFar={value:T,type:"1fv"}}}if(s.length>0){var w=s.map(S);(y=t.shadowUniforms).spotLightShadowMaps={value:s,type:"tv"},y.spotLightMatrices={value:l,type:"m4v"},y.spotLightShadowMapSizes={value:w,type:"1fv"}}d.length>0&&(y.pointLightShadowMaps={value:d,type:"tv"})}function S(e){return e.height}},renderDirectionalLightShadow:($o=new bn,es=new ui,ts=new Si,rs=new ui,is=new ui,ns=new ui,as=new ui,function(e,t,r,i,n,a,o){var s=this._getDepthMaterial(i),l={getMaterial:function(e){return e.shadowDepthMaterial||s},isMaterialChanged:Jo,getUniform:Qo,ifRender:function(e){return e.castShadow},sortCompare:zr.opaqueSortCompare};if(!t.viewBoundingBoxLastFrame.isFinite()){var h=t.getBoundingBox();t.viewBoundingBoxLastFrame.copy(h).applyTransform(r.viewMatrix)}var u=Math.min(-t.viewBoundingBoxLastFrame.min.z,r.far),c=Math.max(-t.viewBoundingBoxLastFrame.max.z,r.near),d=this._getDirectionalLightCamera(i,t,r),f=ns.array;as.copy(d.projectionMatrix),Mr.invert(is.array,d.worldTransform.array),Mr.multiply(is.array,is.array,r.worldTransform.array),Mr.multiply(f,as.array,is.array);for(var p=[],m=r instanceof zn,g=(r.near+r.far)/(r.near-r.far),_=2*r.near*r.far/(r.near-r.far),v=0;v<=i.shadowCascade;v++){var y=c*Math.pow(u/c,v/i.shadowCascade),x=c+(u-c)*v/i.shadowCascade,b=y*i.cascadeSplitLogFactor+x*(1-i.cascadeSplitLogFactor);p.push(b),n.push(-(-b*g+_)/-b)}var T=this._getTexture(i,i.shadowCascade);o.push(T);var w=e.viewport,S=e.gl;for(this._frameBuffer.attach(T),this._frameBuffer.bind(e),S.clear(S.COLOR_BUFFER_BIT|S.DEPTH_BUFFER_BIT),v=0;vd?s>f?p[n>0?"px":"nx"]=!0:p[o>0?"pz":"nz"]=!0:d>f?p[a>0?"py":"ny"]=!0:p[o>0?"pz":"nz"]=!0}for(r=0;r0&&(this.outputs[e].keepLastFrame?(this._prevOutputTextures[e]&&this._compositor.releaseTexture(this._prevOutputTextures[e]),this._prevOutputTextures[e]=this._outputTextures[e]):this._compositor.releaseTexture(this._outputTextures[e]))}}),ls=be.extend(function(){return{nodes:[]}},{dirty:function(){this._dirty=!0},addNode:function(e){this.nodes.indexOf(e)>=0||(this.nodes.push(e),this._dirty=!0)},removeNode:function(e){"string"==typeof e&&(e=this.getNodeByName(e));var t=this.nodes.indexOf(e);t>=0&&(this.nodes.splice(t,1),this._dirty=!0)},getNodeByName:function(e){for(var t=0;t=r.COLOR_ATTACHMENT0&&u<=r.COLOR_ATTACHMENT0+8&&h.push(u);l.drawBuffersEXT(h)}e.saveClear(),e.clearBit=Me|Ee,t=e.render(this.scene,this.camera,!this.autoUpdateScene,this.preZ),e.restoreClear(),i.unbind(e)}else t=e.render(this.scene,this.camera,!this.autoUpdateScene,this.preZ);this.trigger("afterrender",t),this._rendering=!1,this._rendered=!0}}),cs=ss.extend(function(){return{texture:null,outputs:{color:{}}}},function(){},{getOutput:function(e,t){return this.texture},beforeFrame:function(){},afterFrame:function(){}}),ds=ss.extend(function(){return{name:"",inputs:{},outputs:null,shader:"",inputLinks:{},outputLinks:{},pass:null,_prevOutputTextures:{},_outputTextures:{},_outputReferences:{},_rendering:!1,_rendered:!1,_compositor:null}},function(){var e=new ba({fragment:this.shader});this.pass=e},{render:function(e,t){this.trigger("beforerender",e),this._rendering=!0;var r=e.gl;for(var i in this.inputLinks){var n=(c=this.inputLinks[i]).node.getOutput(e,c.pin);this.pass.setUniform(i,n)}if(this.outputs){this.pass.outputs={};var a={};for(var o in this.outputs){var s=this.updateParameter(o,e);isNaN(s.width)&&this.updateParameter(o,e);var l=this.outputs[o],h=this._compositor.allocateTexture(s);this._outputTextures[o]=h,"string"==typeof(u=l.attachment||r.COLOR_ATTACHMENT0)&&(u=r[u]),a[u]=h}for(var u in this._compositor.getFrameBuffer().bind(e),a)this._compositor.getFrameBuffer().attach(a[u],u);this.pass.render(e),this._compositor.getFrameBuffer().updateMipmap(e)}else this.pass.outputs=null,this._compositor.getFrameBuffer().unbind(e),this.pass.render(e,t);for(var i in this.inputLinks){var c;(c=this.inputLinks[i]).node.removeReference(c.pin)}this._rendering=!1,this._rendered=!0,this.trigger("afterrender",e)},updateParameter:function(e,t){var r,i,n=this.outputs[e],a=n.parameters,o=n._parametersCopy;if(o||(o=n._parametersCopy={}),a)for(var s in a)"width"!==s&&"height"!==s&&(o[s]=a[s]);return r="function"==typeof a.width?a.width.call(this,t):a.width,i="function"==typeof a.height?a.height.call(this,t):a.height,r=Math.ceil(r),i=Math.ceil(i),o.width===r&&o.height===i||this._outputTextures[e]&&this._outputTextures[e].dispose(t),o.width=r,o.height=i,o},setParameter:function(e,t){this.pass.setUniform(e,t)},getParameter:function(e){return this.pass.getUniform(e)},setParameters:function(e){for(var t in e)this.setParameter(t,e[t])},define:function(e,t){this.pass.material.define("fragment",e,t)},undefine:function(e){this.pass.material.undefine("fragment",e)},removeReference:function(e){this._outputReferences[e]--,0===this._outputReferences[e]&&(this.outputs[e].keepLastFrame?(this._prevOutputTextures[e]&&this._compositor.releaseTexture(this._prevOutputTextures[e]),this._prevOutputTextures[e]=this._outputTextures[e]):this._compositor.releaseTexture(this._outputTextures[e]))},clear:function(){ss.prototype.clear.call(this),this.pass.material.disableTexturesAll()}});const fs="@export clay.compositor.kernel.gaussian_9\nfloat gaussianKernel[9];\ngaussianKernel[0] = 0.07;\ngaussianKernel[1] = 0.09;\ngaussianKernel[2] = 0.12;\ngaussianKernel[3] = 0.14;\ngaussianKernel[4] = 0.16;\ngaussianKernel[5] = 0.14;\ngaussianKernel[6] = 0.12;\ngaussianKernel[7] = 0.09;\ngaussianKernel[8] = 0.07;\n@end\n@export clay.compositor.kernel.gaussian_13\nfloat gaussianKernel[13];\ngaussianKernel[0] = 0.02;\ngaussianKernel[1] = 0.03;\ngaussianKernel[2] = 0.06;\ngaussianKernel[3] = 0.08;\ngaussianKernel[4] = 0.11;\ngaussianKernel[5] = 0.13;\ngaussianKernel[6] = 0.14;\ngaussianKernel[7] = 0.13;\ngaussianKernel[8] = 0.11;\ngaussianKernel[9] = 0.08;\ngaussianKernel[10] = 0.06;\ngaussianKernel[11] = 0.03;\ngaussianKernel[12] = 0.02;\n@end\n@export clay.compositor.gaussian_blur\n#define SHADER_NAME gaussian_blur\nuniform sampler2D texture;varying vec2 v_Texcoord;\nuniform float blurSize : 2.0;\nuniform vec2 textureSize : [512.0, 512.0];\nuniform float blurDir : 0.0;\n@import clay.util.rgbm\n@import clay.util.clamp_sample\nvoid main (void)\n{\n @import clay.compositor.kernel.gaussian_9\n vec2 off = blurSize / textureSize;\n off *= vec2(1.0 - blurDir, blurDir);\n vec4 sum = vec4(0.0);\n float weightAll = 0.0;\n for (int i = 0; i < 9; i++) {\n float w = gaussianKernel[i];\n vec4 texel = decodeHDR(clampSample(texture, v_Texcoord + float(i - 4) * off));\n sum += texel * w;\n weightAll += w;\n }\n gl_FragColor = encodeHDR(sum / max(weightAll, 0.01));\n}\n@end\n",ps="\n@export clay.compositor.lut\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform sampler2D lookup;\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n float blueColor = tex.b * 63.0;\n vec2 quad1;\n quad1.y = floor(floor(blueColor) / 8.0);\n quad1.x = floor(blueColor) - (quad1.y * 8.0);\n vec2 quad2;\n quad2.y = floor(ceil(blueColor) / 8.0);\n quad2.x = ceil(blueColor) - (quad2.y * 8.0);\n vec2 texPos1;\n texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.r);\n texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.g);\n vec2 texPos2;\n texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.r);\n texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.g);\n vec4 newColor1 = texture2D(lookup, texPos1);\n vec4 newColor2 = texture2D(lookup, texPos2);\n vec4 newColor = mix(newColor1, newColor2, fract(blueColor));\n gl_FragColor = vec4(newColor.rgb, tex.w);\n}\n@end",ms="@export clay.compositor.output\n#define OUTPUT_ALPHA\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\n@import clay.util.rgbm\nvoid main()\n{\n vec4 tex = decodeHDR(texture2D(texture, v_Texcoord));\n gl_FragColor.rgb = tex.rgb;\n#ifdef OUTPUT_ALPHA\n gl_FragColor.a = tex.a;\n#else\n gl_FragColor.a = 1.0;\n#endif\n gl_FragColor = encodeHDR(gl_FragColor);\n#ifdef PREMULTIPLY_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif\n}\n@end",gs="@export clay.compositor.bright\nuniform sampler2D texture;\nuniform float threshold : 1;\nuniform float scale : 1.0;\nuniform vec2 textureSize: [512, 512];\nvarying vec2 v_Texcoord;\nconst vec3 lumWeight = vec3(0.2125, 0.7154, 0.0721);\n@import clay.util.rgbm\nvec4 median(vec4 a, vec4 b, vec4 c)\n{\n return a + b + c - min(min(a, b), c) - max(max(a, b), c);\n}\nvoid main()\n{\n vec4 texel = decodeHDR(texture2D(texture, v_Texcoord));\n#ifdef ANTI_FLICKER\n vec3 d = 1.0 / textureSize.xyx * vec3(1.0, 1.0, 0.0);\n vec4 s1 = decodeHDR(texture2D(texture, v_Texcoord - d.xz));\n vec4 s2 = decodeHDR(texture2D(texture, v_Texcoord + d.xz));\n vec4 s3 = decodeHDR(texture2D(texture, v_Texcoord - d.zy));\n vec4 s4 = decodeHDR(texture2D(texture, v_Texcoord + d.zy));\n texel = median(median(texel, s1, s2), s3, s4);\n#endif\n float lum = dot(texel.rgb , lumWeight);\n vec4 color;\n if (lum > threshold && texel.a > 0.0)\n {\n color = vec4(texel.rgb * scale, texel.a * scale);\n }\n else\n {\n color = vec4(0.0);\n }\n gl_FragColor = encodeHDR(color);\n}\n@end\n",_s="@export clay.compositor.downsample\nuniform sampler2D texture;\nuniform vec2 textureSize : [512, 512];\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\nfloat brightness(vec3 c)\n{\n return max(max(c.r, c.g), c.b);\n}\n@import clay.util.clamp_sample\nvoid main()\n{\n vec4 d = vec4(-1.0, -1.0, 1.0, 1.0) / textureSize.xyxy;\n#ifdef ANTI_FLICKER\n vec3 s1 = decodeHDR(clampSample(texture, v_Texcoord + d.xy)).rgb;\n vec3 s2 = decodeHDR(clampSample(texture, v_Texcoord + d.zy)).rgb;\n vec3 s3 = decodeHDR(clampSample(texture, v_Texcoord + d.xw)).rgb;\n vec3 s4 = decodeHDR(clampSample(texture, v_Texcoord + d.zw)).rgb;\n float s1w = 1.0 / (brightness(s1) + 1.0);\n float s2w = 1.0 / (brightness(s2) + 1.0);\n float s3w = 1.0 / (brightness(s3) + 1.0);\n float s4w = 1.0 / (brightness(s4) + 1.0);\n float oneDivideSum = 1.0 / (s1w + s2w + s3w + s4w);\n vec4 color = vec4(\n (s1 * s1w + s2 * s2w + s3 * s3w + s4 * s4w) * oneDivideSum,\n 1.0\n );\n#else\n vec4 color = decodeHDR(clampSample(texture, v_Texcoord + d.xy));\n color += decodeHDR(clampSample(texture, v_Texcoord + d.zy));\n color += decodeHDR(clampSample(texture, v_Texcoord + d.xw));\n color += decodeHDR(clampSample(texture, v_Texcoord + d.zw));\n color *= 0.25;\n#endif\n gl_FragColor = encodeHDR(color);\n}\n@end",vs="\n@export clay.compositor.upsample\n#define HIGH_QUALITY\nuniform sampler2D texture;\nuniform vec2 textureSize : [512, 512];\nuniform float sampleScale: 0.5;\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\n@import clay.util.clamp_sample\nvoid main()\n{\n#ifdef HIGH_QUALITY\n vec4 d = vec4(1.0, 1.0, -1.0, 0.0) / textureSize.xyxy * sampleScale;\n vec4 s;\n s = decodeHDR(clampSample(texture, v_Texcoord - d.xy));\n s += decodeHDR(clampSample(texture, v_Texcoord - d.wy)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord - d.zy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zw)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord )) * 4.0;\n s += decodeHDR(clampSample(texture, v_Texcoord + d.xw)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.wy)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord + d.xy));\n gl_FragColor = encodeHDR(s / 16.0);\n#else\n vec4 d = vec4(-1.0, -1.0, +1.0, +1.0) / textureSize.xyxy;\n vec4 s;\n s = decodeHDR(clampSample(texture, v_Texcoord + d.xy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.xw));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zw));\n gl_FragColor = encodeHDR(s / 4.0);\n#endif\n}\n@end",ys="@export clay.compositor.hdr.composite\n#define TONEMAPPING\nuniform sampler2D texture;\n#ifdef BLOOM_ENABLED\nuniform sampler2D bloom;\n#endif\n#ifdef LENSFLARE_ENABLED\nuniform sampler2D lensflare;\nuniform sampler2D lensdirt;\n#endif\n#ifdef LUM_ENABLED\nuniform sampler2D lum;\n#endif\n#ifdef LUT_ENABLED\nuniform sampler2D lut;\n#endif\n#ifdef COLOR_CORRECTION\nuniform float brightness : 0.0;\nuniform float contrast : 1.0;\nuniform float saturation : 1.0;\n#endif\n#ifdef VIGNETTE\nuniform float vignetteDarkness: 1.0;\nuniform float vignetteOffset: 1.0;\n#endif\nuniform float exposure : 1.0;\nuniform float bloomIntensity : 0.25;\nuniform float lensflareIntensity : 1;\nvarying vec2 v_Texcoord;\n@import clay.util.srgb\nvec3 ACESToneMapping(vec3 color)\n{\n const float A = 2.51;\n const float B = 0.03;\n const float C = 2.43;\n const float D = 0.59;\n const float E = 0.14;\n return (color * (A * color + B)) / (color * (C * color + D) + E);\n}\nfloat eyeAdaption(float fLum)\n{\n return mix(0.2, fLum, 0.5);\n}\n#ifdef LUT_ENABLED\nvec3 lutTransform(vec3 color) {\n float blueColor = color.b * 63.0;\n vec2 quad1;\n quad1.y = floor(floor(blueColor) / 8.0);\n quad1.x = floor(blueColor) - (quad1.y * 8.0);\n vec2 quad2;\n quad2.y = floor(ceil(blueColor) / 8.0);\n quad2.x = ceil(blueColor) - (quad2.y * 8.0);\n vec2 texPos1;\n texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.r);\n texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.g);\n vec2 texPos2;\n texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.r);\n texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.g);\n vec4 newColor1 = texture2D(lut, texPos1);\n vec4 newColor2 = texture2D(lut, texPos2);\n vec4 newColor = mix(newColor1, newColor2, fract(blueColor));\n return newColor.rgb;\n}\n#endif\n@import clay.util.rgbm\nvoid main()\n{\n vec4 texel = vec4(0.0);\n vec4 originalTexel = vec4(0.0);\n#ifdef TEXTURE_ENABLED\n texel = decodeHDR(texture2D(texture, v_Texcoord));\n originalTexel = texel;\n#endif\n#ifdef BLOOM_ENABLED\n vec4 bloomTexel = decodeHDR(texture2D(bloom, v_Texcoord));\n texel.rgb += bloomTexel.rgb * bloomIntensity;\n texel.a += bloomTexel.a * bloomIntensity;\n#endif\n#ifdef LENSFLARE_ENABLED\n texel += decodeHDR(texture2D(lensflare, v_Texcoord)) * texture2D(lensdirt, v_Texcoord) * lensflareIntensity;\n#endif\n texel.a = min(texel.a, 1.0);\n#ifdef LUM_ENABLED\n float fLum = texture2D(lum, vec2(0.5, 0.5)).r;\n float adaptedLumDest = 3.0 / (max(0.1, 1.0 + 10.0*eyeAdaption(fLum)));\n float exposureBias = adaptedLumDest * exposure;\n#else\n float exposureBias = exposure;\n#endif\n#ifdef TONEMAPPING\n texel.rgb *= exposureBias;\n texel.rgb = ACESToneMapping(texel.rgb);\n#endif\n texel = linearTosRGB(texel);\n#ifdef LUT_ENABLED\n texel.rgb = lutTransform(clamp(texel.rgb,vec3(0.0),vec3(1.0)));\n#endif\n#ifdef COLOR_CORRECTION\n texel.rgb = clamp(texel.rgb + vec3(brightness), 0.0, 1.0);\n texel.rgb = clamp((texel.rgb - vec3(0.5))*contrast+vec3(0.5), 0.0, 1.0);\n float lum = dot(texel.rgb, vec3(0.2125, 0.7154, 0.0721));\n texel.rgb = mix(vec3(lum), texel.rgb, saturation);\n#endif\n#ifdef VIGNETTE\n vec2 uv = (v_Texcoord - vec2(0.5)) * vec2(vignetteOffset);\n texel.rgb = mix(texel.rgb, vec3(1.0 - vignetteDarkness), dot(uv, uv));\n#endif\n gl_FragColor = encodeHDR(texel);\n#ifdef DEBUG\n #if DEBUG == 1\n gl_FragColor = encodeHDR(decodeHDR(texture2D(texture, v_Texcoord)));\n #elif DEBUG == 2\n gl_FragColor = encodeHDR(decodeHDR(texture2D(bloom, v_Texcoord)) * bloomIntensity);\n #elif DEBUG == 3\n gl_FragColor = encodeHDR(decodeHDR(texture2D(lensflare, v_Texcoord) * lensflareIntensity));\n #endif\n#endif\n if (originalTexel.a <= 0.01 && gl_FragColor.a > 1e-5) {\n gl_FragColor.a = dot(gl_FragColor.rgb, vec3(0.2125, 0.7154, 0.0721));\n }\n#ifdef PREMULTIPLY_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif\n}\n@end",xs="@export clay.compositor.blend\n#define SHADER_NAME blend\n#ifdef TEXTURE1_ENABLED\nuniform sampler2D texture1;\nuniform float weight1 : 1.0;\n#endif\n#ifdef TEXTURE2_ENABLED\nuniform sampler2D texture2;\nuniform float weight2 : 1.0;\n#endif\n#ifdef TEXTURE3_ENABLED\nuniform sampler2D texture3;\nuniform float weight3 : 1.0;\n#endif\n#ifdef TEXTURE4_ENABLED\nuniform sampler2D texture4;\nuniform float weight4 : 1.0;\n#endif\n#ifdef TEXTURE5_ENABLED\nuniform sampler2D texture5;\nuniform float weight5 : 1.0;\n#endif\n#ifdef TEXTURE6_ENABLED\nuniform sampler2D texture6;\nuniform float weight6 : 1.0;\n#endif\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\nvoid main()\n{\n vec4 tex = vec4(0.0);\n#ifdef TEXTURE1_ENABLED\n tex += decodeHDR(texture2D(texture1, v_Texcoord)) * weight1;\n#endif\n#ifdef TEXTURE2_ENABLED\n tex += decodeHDR(texture2D(texture2, v_Texcoord)) * weight2;\n#endif\n#ifdef TEXTURE3_ENABLED\n tex += decodeHDR(texture2D(texture3, v_Texcoord)) * weight3;\n#endif\n#ifdef TEXTURE4_ENABLED\n tex += decodeHDR(texture2D(texture4, v_Texcoord)) * weight4;\n#endif\n#ifdef TEXTURE5_ENABLED\n tex += decodeHDR(texture2D(texture5, v_Texcoord)) * weight5;\n#endif\n#ifdef TEXTURE6_ENABLED\n tex += decodeHDR(texture2D(texture6, v_Texcoord)) * weight6;\n#endif\n gl_FragColor = encodeHDR(tex);\n}\n@end",bs="@export clay.compositor.fxaa\nuniform sampler2D texture;\nuniform vec4 viewport : VIEWPORT;\nvarying vec2 v_Texcoord;\n#define FXAA_REDUCE_MIN (1.0/128.0)\n#define FXAA_REDUCE_MUL (1.0/8.0)\n#define FXAA_SPAN_MAX 8.0\n@import clay.util.rgbm\nvoid main()\n{\n vec2 resolution = 1.0 / viewport.zw;\n vec3 rgbNW = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( -1.0, -1.0 ) ) * resolution ) ).xyz;\n vec3 rgbNE = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( 1.0, -1.0 ) ) * resolution ) ).xyz;\n vec3 rgbSW = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( -1.0, 1.0 ) ) * resolution ) ).xyz;\n vec3 rgbSE = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( 1.0, 1.0 ) ) * resolution ) ).xyz;\n vec4 rgbaM = decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution ) );\n vec3 rgbM = rgbaM.xyz;\n float opacity = rgbaM.w;\n vec3 luma = vec3( 0.299, 0.587, 0.114 );\n float lumaNW = dot( rgbNW, luma );\n float lumaNE = dot( rgbNE, luma );\n float lumaSW = dot( rgbSW, luma );\n float lumaSE = dot( rgbSE, luma );\n float lumaM = dot( rgbM, luma );\n float lumaMin = min( lumaM, min( min( lumaNW, lumaNE ), min( lumaSW, lumaSE ) ) );\n float lumaMax = max( lumaM, max( max( lumaNW, lumaNE) , max( lumaSW, lumaSE ) ) );\n vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n float dirReduce = max( ( lumaNW + lumaNE + lumaSW + lumaSE ) * ( 0.25 * FXAA_REDUCE_MUL ), FXAA_REDUCE_MIN );\n float rcpDirMin = 1.0 / ( min( abs( dir.x ), abs( dir.y ) ) + dirReduce );\n dir = min( vec2( FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max( vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * resolution;\n vec3 rgbA = decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * ( 1.0 / 3.0 - 0.5 ) ) ).xyz;\n rgbA += decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * ( 2.0 / 3.0 - 0.5 ) ) ).xyz;\n rgbA *= 0.5;\n vec3 rgbB = decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * -0.5 ) ).xyz;\n rgbB += decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * 0.5 ) ).xyz;\n rgbB *= 0.25;\n rgbB += rgbA * 0.5;\n float lumaB = dot( rgbB, luma );\n if ( ( lumaB < lumaMin ) || ( lumaB > lumaMax ) )\n {\n gl_FragColor = vec4( rgbA, opacity );\n }\n else {\n gl_FragColor = vec4( rgbB, opacity );\n }\n}\n@end";!function(e){e.import("@export clay.compositor.coloradjust\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float brightness : 0.0;\nuniform float contrast : 1.0;\nuniform float exposure : 0.0;\nuniform float gamma : 1.0;\nuniform float saturation : 1.0;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord);\n vec3 color = clamp(tex.rgb + vec3(brightness), 0.0, 1.0);\n color = clamp( (color-vec3(0.5))*contrast+vec3(0.5), 0.0, 1.0);\n color = clamp( color * pow(2.0, exposure), 0.0, 1.0);\n color = clamp( pow(color, vec3(gamma)), 0.0, 1.0);\n float luminance = dot( color, w );\n color = mix(vec3(luminance), color, saturation);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.brightness\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float brightness : 0.0;\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord);\n vec3 color = tex.rgb + vec3(brightness);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.contrast\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float contrast : 1.0;\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord);\n vec3 color = (tex.rgb-vec3(0.5))*contrast+vec3(0.5);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.exposure\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float exposure : 0.0;\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n vec3 color = tex.rgb * pow(2.0, exposure);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.gamma\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float gamma : 1.0;\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n vec3 color = pow(tex.rgb, vec3(gamma));\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.saturation\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float saturation : 1.0;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n vec3 color = tex.rgb;\n float luminance = dot(color, w);\n color = mix(vec3(luminance), color, saturation);\n gl_FragColor = vec4(color, tex.a);\n}\n@end"),e.import(fs),e.import("@export clay.compositor.hdr.log_lum\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\n@import clay.util.rgbm\nvoid main()\n{\n vec4 tex = decodeHDR(texture2D(texture, v_Texcoord));\n float luminance = dot(tex.rgb, w);\n luminance = log(luminance + 0.001);\n gl_FragColor = encodeHDR(vec4(vec3(luminance), 1.0));\n}\n@end\n@export clay.compositor.hdr.lum_adaption\nvarying vec2 v_Texcoord;\nuniform sampler2D adaptedLum;\nuniform sampler2D currentLum;\nuniform float frameTime : 0.02;\n@import clay.util.rgbm\nvoid main()\n{\n float fAdaptedLum = decodeHDR(texture2D(adaptedLum, vec2(0.5, 0.5))).r;\n float fCurrentLum = exp(encodeHDR(texture2D(currentLum, vec2(0.5, 0.5))).r);\n fAdaptedLum += (fCurrentLum - fAdaptedLum) * (1.0 - pow(0.98, 30.0 * frameTime));\n gl_FragColor = encodeHDR(vec4(vec3(fAdaptedLum), 1.0));\n}\n@end\n@export clay.compositor.lum\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord );\n float luminance = dot(tex.rgb, w);\n gl_FragColor = vec4(vec3(luminance), 1.0);\n}\n@end"),e.import(ps),e.import("@export clay.compositor.vignette\n#define OUTPUT_ALPHA\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float darkness: 1;\nuniform float offset: 1;\n@import clay.util.rgbm\nvoid main()\n{\n vec4 texel = decodeHDR(texture2D(texture, v_Texcoord));\n gl_FragColor.rgb = texel.rgb;\n vec2 uv = (v_Texcoord - vec2(0.5)) * vec2(offset);\n gl_FragColor = encodeHDR(vec4(mix(texel.rgb, vec3(1.0 - darkness), dot(uv, uv)), texel.a));\n}\n@end"),e.import(ms),e.import(gs),e.import(_s),e.import(vs),e.import(ys),e.import("@export clay.compositor.lensflare\n#define SAMPLE_NUMBER 8\nuniform sampler2D texture;\nuniform sampler2D lenscolor;\nuniform vec2 textureSize : [512, 512];\nuniform float dispersal : 0.3;\nuniform float haloWidth : 0.4;\nuniform float distortion : 1.0;\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\nvec4 textureDistorted(\n in vec2 texcoord,\n in vec2 direction,\n in vec3 distortion\n) {\n return vec4(\n decodeHDR(texture2D(texture, texcoord + direction * distortion.r)).r,\n decodeHDR(texture2D(texture, texcoord + direction * distortion.g)).g,\n decodeHDR(texture2D(texture, texcoord + direction * distortion.b)).b,\n 1.0\n );\n}\nvoid main()\n{\n vec2 texcoord = -v_Texcoord + vec2(1.0); vec2 textureOffset = 1.0 / textureSize;\n vec2 ghostVec = (vec2(0.5) - texcoord) * dispersal;\n vec2 haloVec = normalize(ghostVec) * haloWidth;\n vec3 distortion = vec3(-textureOffset.x * distortion, 0.0, textureOffset.x * distortion);\n vec4 result = vec4(0.0);\n for (int i = 0; i < SAMPLE_NUMBER; i++)\n {\n vec2 offset = fract(texcoord + ghostVec * float(i));\n float weight = length(vec2(0.5) - offset) / length(vec2(0.5));\n weight = pow(1.0 - weight, 10.0);\n result += textureDistorted(offset, normalize(ghostVec), distortion) * weight;\n }\n result *= texture2D(lenscolor, vec2(length(vec2(0.5) - texcoord)) / length(vec2(0.5)));\n float weight = length(vec2(0.5) - fract(texcoord + haloVec)) / length(vec2(0.5));\n weight = pow(1.0 - weight, 10.0);\n vec2 offset = fract(texcoord + haloVec);\n result += textureDistorted(offset, normalize(ghostVec), distortion) * weight;\n gl_FragColor = result;\n}\n@end"),e.import(xs),e.import(bs)}(br);var Ts=/^#source\((.*?)\)/;function ws(e,t){var r=new hs;t=t||{};var i={textures:{},parameters:{}};for(var n in e.parameters){var a=e.parameters[n];i.parameters[n]=Es(a)}return function(e,t,r,i){if(e.textures){var n={},a=0,o=!1,s=r.textureRootPath;xe.each(e.textures,function(e,t){var r,l=e.path,h=Es(e.parameters);if(Array.isArray(l)&&6===l.length)s&&(l=l.map(function(e){return xe.relative2absolute(e,s)})),r=new In(h);else{if("string"!=typeof l)return;s&&(l=xe.relative2absolute(l,s)),r=new Wi(h)}r.load(l),a++,r.once("success",function(){n[t]=r,0===--a&&(i(n),o=!0)})}),0!==a||o||i(n)}else i({})}(e,0,t,function(n){i.textures=n,function(){for(var n=0;n0;)r+=i*(n%t),n=Math.floor(n/t),i/=t;return r}function Ps(e){for(var t=new Uint8Array(e*e*4),r=0,i=new Gr,n=0;n 0.99999) {\n gl_FragColor = vec4(1.0);\n return;\n }\n mat3 kernelBasis;\n#endif\n\n float z = depthTexel.r * 2.0 - 1.0;\n\n vec4 projectedPos = vec4(v_Texcoord * 2.0 - 1.0, z, 1.0);\n vec4 p4 = projectionInv * projectedPos;\n\n vec3 position = p4.xyz / p4.w;\n\n float ao = ssaoEstimator(position, kernelBasis);\n ao = clamp(1.0 - (1.0 - ao) * intensity, 0.0, 1.0);\n gl_FragColor = vec4(vec3(ao), 1.0);\n}\n\n@end\n\n\n@export ecgl.ssao.blur\n#define SHADER_NAME SSAO_BLUR\n\nuniform sampler2D ssaoTexture;\n\n#ifdef NORMALTEX_ENABLED\nuniform sampler2D normalTex;\n#endif\n\nvarying vec2 v_Texcoord;\n\nuniform vec2 textureSize;\nuniform float blurSize : 1.0;\n\nuniform int direction: 0.0;\n\n#ifdef DEPTHTEX_ENABLED\nuniform sampler2D depthTex;\nuniform mat4 projection;\nuniform float depthRange : 0.5;\n\nfloat getLinearDepth(vec2 coord)\n{\n float depth = texture2D(depthTex, coord).r * 2.0 - 1.0;\n return projection[3][2] / (depth * projection[2][3] - projection[2][2]);\n}\n#endif\n\nvoid main()\n{\n float kernel[5];\n kernel[0] = 0.122581;\n kernel[1] = 0.233062;\n kernel[2] = 0.288713;\n kernel[3] = 0.233062;\n kernel[4] = 0.122581;\n\n vec2 off = vec2(0.0);\n if (direction == 0) {\n off[0] = blurSize / textureSize.x;\n }\n else {\n off[1] = blurSize / textureSize.y;\n }\n\n vec2 coord = v_Texcoord;\n\n float sum = 0.0;\n float weightAll = 0.0;\n\n#ifdef NORMALTEX_ENABLED\n vec3 centerNormal = texture2D(normalTex, v_Texcoord).rgb * 2.0 - 1.0;\n#endif\n#if defined(DEPTHTEX_ENABLED)\n float centerDepth = getLinearDepth(v_Texcoord);\n#endif\n\n for (int i = 0; i < 5; i++) {\n vec2 coord = clamp(v_Texcoord + vec2(float(i) - 2.0) * off, vec2(0.0), vec2(1.0));\n\n float w = kernel[i];\n#ifdef NORMALTEX_ENABLED\n vec3 normal = texture2D(normalTex, coord).rgb * 2.0 - 1.0;\n w *= clamp(dot(normal, centerNormal), 0.0, 1.0);\n#endif\n#ifdef DEPTHTEX_ENABLED\n float d = getLinearDepth(coord);\n w *= (1.0 - smoothstep(abs(centerDepth - d) / depthRange, 0.0, 1.0));\n#endif\n\n weightAll += w;\n sum += texture2D(ssaoTexture, coord).r * w;\n }\n\n gl_FragColor = vec4(vec3(sum / weightAll), 1.0);\n}\n\n@end\n"),Rs.prototype.setDepthTexture=function(e){this._depthTex=e},Rs.prototype.setNormalTexture=function(e){this._normalTex=e,this._ssaoPass.material[e?"enableTexture":"disableTexture"]("normalTex"),this.setKernelSize(this._kernelSize)},Rs.prototype.update=function(e,t,r){var i=e.getWidth(),n=e.getHeight(),a=this._ssaoPass,o=this._blurPass;a.setUniform("kernel",this._kernels[r%this._kernels.length]),a.setUniform("depthTex",this._depthTex),null!=this._normalTex&&a.setUniform("normalTex",this._normalTex),a.setUniform("depthTexSize",[this._depthTex.width,this._depthTex.height]);var s=new ui;ui.transpose(s,t.worldTransform),a.setUniform("projection",t.projectionMatrix.array),a.setUniform("projectionInv",t.invProjectionMatrix.array),a.setUniform("viewInverseTranspose",s.array);var l=this._ssaoTexture,h=this._blurTexture,u=this._blurTexture2;l.width=i/2,l.height=n/2,h.width=i,h.height=n,u.width=i,u.height=n,this._framebuffer.attach(l),this._framebuffer.bind(e),e.gl.clearColor(1,1,1,1),e.gl.clear(e.gl.COLOR_BUFFER_BIT),a.render(e),o.setUniform("textureSize",[i/2,n/2]),o.setUniform("projection",t.projectionMatrix.array),this._framebuffer.attach(h),o.setUniform("direction",0),o.setUniform("ssaoTexture",l),o.render(e),this._framebuffer.attach(u),o.setUniform("textureSize",[i,n]),o.setUniform("direction",1),o.setUniform("ssaoTexture",h),o.render(e),this._framebuffer.unbind(e);var c=e.clearColor;e.gl.clearColor(c[0],c[1],c[2],c[3])},Rs.prototype.getTargetTexture=function(){return this._blurTexture2},Rs.prototype.setParameter=function(e,t){"noiseTexSize"===e?this.setNoiseSize(t):"kernelSize"===e?this.setKernelSize(t):"intensity"===e?this._ssaoPass.material.set("intensity",t):this._ssaoPass.setUniform(e,t)},Rs.prototype.setKernelSize=function(e){this._kernelSize=e,this._ssaoPass.material.define("fragment","KERNEL_SIZE",e),this._kernels=this._kernels||[];for(var t=0;t<30;t++)this._kernels[t]=Ns(e,t*e,!!this._normalTex)},Rs.prototype.setNoiseSize=function(e){var t=this._ssaoPass.getUniform("noiseTex");t?(t.data=Ps(e),t.width=t.height=e,t.dirty()):(t=Os(e),this._ssaoPass.setUniform("noiseTex",Os(e))),this._ssaoPass.setUniform("noiseTexSize",[e,e])},Rs.prototype.dispose=function(e){this._blurTexture.dispose(e),this._ssaoTexture.dispose(e),this._blurTexture2.dispose(e)},br.import("@export ecgl.ssr.main\n\n#define SHADER_NAME SSR\n#define MAX_ITERATION 20;\n#define SAMPLE_PER_FRAME 5;\n#define TOTAL_SAMPLES 128;\n\nuniform sampler2D sourceTexture;\nuniform sampler2D gBufferTexture1;\nuniform sampler2D gBufferTexture2;\nuniform sampler2D gBufferTexture3;\nuniform samplerCube specularCubemap;\nuniform float specularIntensity: 1;\n\nuniform mat4 projection;\nuniform mat4 projectionInv;\nuniform mat4 toViewSpace;\nuniform mat4 toWorldSpace;\n\nuniform float maxRayDistance: 200;\n\nuniform float pixelStride: 16;\nuniform float pixelStrideZCutoff: 50; \nuniform float screenEdgeFadeStart: 0.9; \nuniform float eyeFadeStart : 0.2; uniform float eyeFadeEnd: 0.8; \nuniform float minGlossiness: 0.2; uniform float zThicknessThreshold: 1;\n\nuniform float nearZ;\nuniform vec2 viewportSize : VIEWPORT_SIZE;\n\nuniform float jitterOffset: 0;\n\nvarying vec2 v_Texcoord;\n\n#ifdef DEPTH_DECODE\n@import clay.util.decode_float\n#endif\n\n#ifdef PHYSICALLY_CORRECT\nuniform sampler2D normalDistribution;\nuniform float sampleOffset: 0;\nuniform vec2 normalDistributionSize;\n\nvec3 transformNormal(vec3 H, vec3 N) {\n vec3 upVector = N.y > 0.999 ? vec3(1.0, 0.0, 0.0) : vec3(0.0, 1.0, 0.0);\n vec3 tangentX = normalize(cross(N, upVector));\n vec3 tangentZ = cross(N, tangentX);\n return normalize(tangentX * H.x + N * H.y + tangentZ * H.z);\n}\nvec3 importanceSampleNormalGGX(float i, float roughness, vec3 N) {\n float p = fract((i + sampleOffset) / float(TOTAL_SAMPLES));\n vec3 H = texture2D(normalDistribution,vec2(roughness, p)).rgb;\n return transformNormal(H, N);\n}\nfloat G_Smith(float g, float ndv, float ndl) {\n float roughness = 1.0 - g;\n float k = roughness * roughness / 2.0;\n float G1V = ndv / (ndv * (1.0 - k) + k);\n float G1L = ndl / (ndl * (1.0 - k) + k);\n return G1L * G1V;\n}\nvec3 F_Schlick(float ndv, vec3 spec) {\n return spec + (1.0 - spec) * pow(1.0 - ndv, 5.0);\n}\n#endif\n\nfloat fetchDepth(sampler2D depthTexture, vec2 uv)\n{\n vec4 depthTexel = texture2D(depthTexture, uv);\n return depthTexel.r * 2.0 - 1.0;\n}\n\nfloat linearDepth(float depth)\n{\n if (projection[3][3] == 0.0) {\n return projection[3][2] / (depth * projection[2][3] - projection[2][2]);\n }\n else {\n return (depth - projection[3][2]) / projection[2][2];\n }\n}\n\nbool rayIntersectDepth(float rayZNear, float rayZFar, vec2 hitPixel)\n{\n if (rayZFar > rayZNear)\n {\n float t = rayZFar; rayZFar = rayZNear; rayZNear = t;\n }\n float cameraZ = linearDepth(fetchDepth(gBufferTexture2, hitPixel));\n return rayZFar <= cameraZ && rayZNear >= cameraZ - zThicknessThreshold;\n}\n\n\nbool traceScreenSpaceRay(\n vec3 rayOrigin, vec3 rayDir, float jitter,\n out vec2 hitPixel, out vec3 hitPoint, out float iterationCount\n)\n{\n float rayLength = ((rayOrigin.z + rayDir.z * maxRayDistance) > -nearZ)\n ? (-nearZ - rayOrigin.z) / rayDir.z : maxRayDistance;\n\n vec3 rayEnd = rayOrigin + rayDir * rayLength;\n\n vec4 H0 = projection * vec4(rayOrigin, 1.0);\n vec4 H1 = projection * vec4(rayEnd, 1.0);\n\n float k0 = 1.0 / H0.w, k1 = 1.0 / H1.w;\n\n vec3 Q0 = rayOrigin * k0, Q1 = rayEnd * k1;\n\n vec2 P0 = (H0.xy * k0 * 0.5 + 0.5) * viewportSize;\n vec2 P1 = (H1.xy * k1 * 0.5 + 0.5) * viewportSize;\n\n P1 += dot(P1 - P0, P1 - P0) < 0.0001 ? 0.01 : 0.0;\n vec2 delta = P1 - P0;\n\n bool permute = false;\n if (abs(delta.x) < abs(delta.y)) {\n permute = true;\n delta = delta.yx;\n P0 = P0.yx;\n P1 = P1.yx;\n }\n float stepDir = sign(delta.x);\n float invdx = stepDir / delta.x;\n\n vec3 dQ = (Q1 - Q0) * invdx;\n float dk = (k1 - k0) * invdx;\n\n vec2 dP = vec2(stepDir, delta.y * invdx);\n\n float strideScaler = 1.0 - min(1.0, -rayOrigin.z / pixelStrideZCutoff);\n float pixStride = 1.0 + strideScaler * pixelStride;\n\n dP *= pixStride; dQ *= pixStride; dk *= pixStride;\n\n vec4 pqk = vec4(P0, Q0.z, k0);\n vec4 dPQK = vec4(dP, dQ.z, dk);\n\n pqk += dPQK * jitter;\n float rayZFar = (dPQK.z * 0.5 + pqk.z) / (dPQK.w * 0.5 + pqk.w);\n float rayZNear;\n\n bool intersect = false;\n\n vec2 texelSize = 1.0 / viewportSize;\n\n iterationCount = 0.0;\n\n for (int i = 0; i < MAX_ITERATION; i++)\n {\n pqk += dPQK;\n\n rayZNear = rayZFar;\n rayZFar = (dPQK.z * 0.5 + pqk.z) / (dPQK.w * 0.5 + pqk.w);\n\n hitPixel = permute ? pqk.yx : pqk.xy;\n hitPixel *= texelSize;\n\n intersect = rayIntersectDepth(rayZNear, rayZFar, hitPixel);\n\n iterationCount += 1.0;\n\n dPQK *= 1.2;\n\n if (intersect) {\n break;\n }\n }\n\n Q0.xy += dQ.xy * iterationCount;\n Q0.z = pqk.z;\n hitPoint = Q0 / pqk.w;\n\n return intersect;\n}\n\nfloat calculateAlpha(\n float iterationCount, float reflectivity,\n vec2 hitPixel, vec3 hitPoint, float dist, vec3 rayDir\n)\n{\n float alpha = clamp(reflectivity, 0.0, 1.0);\n alpha *= 1.0 - (iterationCount / float(MAX_ITERATION));\n vec2 hitPixelNDC = hitPixel * 2.0 - 1.0;\n float maxDimension = min(1.0, max(abs(hitPixelNDC.x), abs(hitPixelNDC.y)));\n alpha *= 1.0 - max(0.0, maxDimension - screenEdgeFadeStart) / (1.0 - screenEdgeFadeStart);\n\n float _eyeFadeStart = eyeFadeStart;\n float _eyeFadeEnd = eyeFadeEnd;\n if (_eyeFadeStart > _eyeFadeEnd) {\n float tmp = _eyeFadeEnd;\n _eyeFadeEnd = _eyeFadeStart;\n _eyeFadeStart = tmp;\n }\n\n float eyeDir = clamp(rayDir.z, _eyeFadeStart, _eyeFadeEnd);\n alpha *= 1.0 - (eyeDir - _eyeFadeStart) / (_eyeFadeEnd - _eyeFadeStart);\n\n alpha *= 1.0 - clamp(dist / maxRayDistance, 0.0, 1.0);\n\n return alpha;\n}\n\n@import clay.util.rand\n\n@import clay.util.rgbm\n\nvoid main()\n{\n vec4 normalAndGloss = texture2D(gBufferTexture1, v_Texcoord);\n\n if (dot(normalAndGloss.rgb, vec3(1.0)) == 0.0) {\n discard;\n }\n\n float g = normalAndGloss.a;\n#if !defined(PHYSICALLY_CORRECT)\n if (g <= minGlossiness) {\n discard;\n }\n#endif\n\n float reflectivity = (g - minGlossiness) / (1.0 - minGlossiness);\n\n vec3 N = normalize(normalAndGloss.rgb * 2.0 - 1.0);\n N = normalize((toViewSpace * vec4(N, 0.0)).xyz);\n\n vec4 projectedPos = vec4(v_Texcoord * 2.0 - 1.0, fetchDepth(gBufferTexture2, v_Texcoord), 1.0);\n vec4 pos = projectionInv * projectedPos;\n vec3 rayOrigin = pos.xyz / pos.w;\n vec3 V = -normalize(rayOrigin);\n\n float ndv = clamp(dot(N, V), 0.0, 1.0);\n float iterationCount;\n float jitter = rand(fract(v_Texcoord + jitterOffset));\n\n#ifdef PHYSICALLY_CORRECT\n vec4 color = vec4(vec3(0.0), 1.0);\n vec4 albedoMetalness = texture2D(gBufferTexture3, v_Texcoord);\n vec3 albedo = albedoMetalness.rgb;\n float m = albedoMetalness.a;\n vec3 diffuseColor = albedo * (1.0 - m);\n vec3 spec = mix(vec3(0.04), albedo, m);\n\n float jitter2 = rand(fract(v_Texcoord)) * float(TOTAL_SAMPLES);\n\n for (int i = 0; i < SAMPLE_PER_FRAME; i++) {\n vec3 H = importanceSampleNormalGGX(float(i) + jitter2, 1.0 - g, N);\n vec3 rayDir = normalize(reflect(-V, H));\n#else\n vec3 rayDir = normalize(reflect(-V, N));\n#endif\n vec2 hitPixel;\n vec3 hitPoint;\n\n bool intersect = traceScreenSpaceRay(rayOrigin, rayDir, jitter, hitPixel, hitPoint, iterationCount);\n\n float dist = distance(rayOrigin, hitPoint);\n\n vec3 hitNormal = texture2D(gBufferTexture1, hitPixel).rgb * 2.0 - 1.0;\n hitNormal = normalize((toViewSpace * vec4(hitNormal, 0.0)).xyz);\n#ifdef PHYSICALLY_CORRECT\n float ndl = clamp(dot(N, rayDir), 0.0, 1.0);\n float vdh = clamp(dot(V, H), 0.0, 1.0);\n float ndh = clamp(dot(N, H), 0.0, 1.0);\n vec3 litTexel = vec3(0.0);\n if (dot(hitNormal, rayDir) < 0.0 && intersect) {\n litTexel = texture2D(sourceTexture, hitPixel).rgb;\n litTexel *= pow(clamp(1.0 - dist / 200.0, 0.0, 1.0), 3.0);\n\n }\n else {\n #ifdef SPECULARCUBEMAP_ENABLED\n vec3 rayDirW = normalize(toWorldSpace * vec4(rayDir, 0.0)).rgb;\n litTexel = RGBMDecode(textureCubeLodEXT(specularCubemap, rayDirW, 0.0), 8.12).rgb * specularIntensity;\n#endif\n }\n color.rgb += ndl * litTexel * (\n F_Schlick(ndl, spec) * G_Smith(g, ndv, ndl) * vdh / (ndh * ndv + 0.001)\n );\n }\n color.rgb /= float(SAMPLE_PER_FRAME);\n#else\n #if !defined(SPECULARCUBEMAP_ENABLED)\n if (dot(hitNormal, rayDir) >= 0.0) {\n discard;\n }\n if (!intersect) {\n discard;\n }\n#endif\n float alpha = clamp(calculateAlpha(iterationCount, reflectivity, hitPixel, hitPoint, dist, rayDir), 0.0, 1.0);\n vec4 color = texture2D(sourceTexture, hitPixel);\n color.rgb *= alpha;\n\n#ifdef SPECULARCUBEMAP_ENABLED\n vec3 rayDirW = normalize(toWorldSpace * vec4(rayDir, 0.0)).rgb;\n alpha = alpha * (intersect ? 1.0 : 0.0);\n float bias = (1.0 -g) * 5.0;\n color.rgb += (1.0 - alpha)\n * RGBMDecode(textureCubeLodEXT(specularCubemap, rayDirW, bias), 8.12).rgb\n * specularIntensity;\n#endif\n\n#endif\n\n gl_FragColor = encodeHDR(color);\n}\n@end\n\n@export ecgl.ssr.blur\n\nuniform sampler2D texture;\nuniform sampler2D gBufferTexture1;\nuniform sampler2D gBufferTexture2;\nuniform mat4 projection;\nuniform float depthRange : 0.05;\n\nvarying vec2 v_Texcoord;\n\nuniform vec2 textureSize;\nuniform float blurSize : 1.0;\n\n#ifdef BLEND\n #ifdef SSAOTEX_ENABLED\nuniform sampler2D ssaoTex;\n #endif\nuniform sampler2D sourceTexture;\n#endif\n\nfloat getLinearDepth(vec2 coord)\n{\n float depth = texture2D(gBufferTexture2, coord).r * 2.0 - 1.0;\n return projection[3][2] / (depth * projection[2][3] - projection[2][2]);\n}\n\n@import clay.util.rgbm\n\n\nvoid main()\n{\n @import clay.compositor.kernel.gaussian_9\n\n vec4 centerNTexel = texture2D(gBufferTexture1, v_Texcoord);\n float g = centerNTexel.a;\n float maxBlurSize = clamp(1.0 - g, 0.0, 1.0) * blurSize;\n#ifdef VERTICAL\n vec2 off = vec2(0.0, maxBlurSize / textureSize.y);\n#else\n vec2 off = vec2(maxBlurSize / textureSize.x, 0.0);\n#endif\n\n vec2 coord = v_Texcoord;\n\n vec4 sum = vec4(0.0);\n float weightAll = 0.0;\n\n vec3 cN = centerNTexel.rgb * 2.0 - 1.0;\n float cD = getLinearDepth(v_Texcoord);\n for (int i = 0; i < 9; i++) {\n vec2 coord = clamp((float(i) - 4.0) * off + v_Texcoord, vec2(0.0), vec2(1.0));\n float w = gaussianKernel[i]\n * clamp(dot(cN, texture2D(gBufferTexture1, coord).rgb * 2.0 - 1.0), 0.0, 1.0);\n float d = getLinearDepth(coord);\n w *= (1.0 - smoothstep(abs(cD - d) / depthRange, 0.0, 1.0));\n\n weightAll += w;\n sum += decodeHDR(texture2D(texture, coord)) * w;\n }\n\n#ifdef BLEND\n float aoFactor = 1.0;\n #ifdef SSAOTEX_ENABLED\n aoFactor = texture2D(ssaoTex, v_Texcoord).r;\n #endif\n gl_FragColor = encodeHDR(\n sum / weightAll * aoFactor + decodeHDR(texture2D(sourceTexture, v_Texcoord))\n );\n#else\n gl_FragColor = encodeHDR(sum / weightAll);\n#endif\n}\n\n@end"),Is.prototype.setAmbientCubemap=function(e,t){this._ssrPass.material.set("specularCubemap",e),this._ssrPass.material.set("specularIntensity",t);var r=e&&t;this._ssrPass.material[r?"enableTexture":"disableTexture"]("specularCubemap")},Is.prototype.update=function(e,t,r,i){var n=e.getWidth(),a=e.getHeight(),o=this._ssrTexture,s=this._texture2,l=this._texture3;o.width=this._prevTexture.width=this._currentTexture.width=n/this._downScale,o.height=this._prevTexture.height=this._currentTexture.height=a/this._downScale,s.width=l.width=n,s.height=l.height=a;var h=this._frameBuffer,u=this._ssrPass,c=this._blurPass1,d=this._blurPass2,f=this._blendPass,p=new ui,m=new ui;ui.transpose(p,t.worldTransform),ui.transpose(m,t.viewMatrix),u.setUniform("sourceTexture",r),u.setUniform("projection",t.projectionMatrix.array),u.setUniform("projectionInv",t.invProjectionMatrix.array),u.setUniform("toViewSpace",p.array),u.setUniform("toWorldSpace",m.array),u.setUniform("nearZ",t.near);var g=i/this._totalSamples*this._samplePerFrame;if(u.setUniform("jitterOffset",g),u.setUniform("sampleOffset",i*this._samplePerFrame),c.setUniform("textureSize",[o.width,o.height]),d.setUniform("textureSize",[n,a]),d.setUniform("sourceTexture",r),c.setUniform("projection",t.projectionMatrix.array),d.setUniform("projection",t.projectionMatrix.array),h.attach(o),h.bind(e),u.render(e),this._physicallyCorrect&&(h.attach(this._currentTexture),f.setUniform("texture1",this._prevTexture),f.setUniform("texture2",o),f.material.set({weight1:i>=1?.95:0,weight2:i>=1?.05:1}),f.render(e)),h.attach(s),c.setUniform("texture",this._physicallyCorrect?this._currentTexture:o),c.render(e),h.attach(l),d.setUniform("texture",s),d.render(e),h.unbind(e),this._physicallyCorrect){var _=this._prevTexture;this._prevTexture=this._currentTexture,this._currentTexture=_}},Is.prototype.getTargetTexture=function(){return this._texture3},Is.prototype.setParameter=function(e,t){"maxIteration"===e?this._ssrPass.material.define("fragment","MAX_ITERATION",t):this._ssrPass.setUniform(e,t)},Is.prototype.setPhysicallyCorrect=function(e){e?(this._normalDistribution||(this._normalDistribution=Ta.generateNormalDistribution(64,this._totalSamples)),this._ssrPass.material.define("fragment","PHYSICALLY_CORRECT"),this._ssrPass.material.set("normalDistribution",this._normalDistribution),this._ssrPass.material.set("normalDistributionSize",[64,this._totalSamples])):this._ssrPass.material.undefine("fragment","PHYSICALLY_CORRECT"),this._physicallyCorrect=e},Is.prototype.setSSAOTexture=function(e){var t=this._blurPass2;e?(t.material.enableTexture("ssaoTex"),t.material.set("ssaoTex",e)):t.material.disableTexture("ssaoTex")},Is.prototype.isFinished=function(e){return!this._physicallyCorrect||e>this._totalSamples/this._samplePerFrame},Is.prototype.dispose=function(e){this._ssrTexture.dispose(e),this._texture2.dispose(e),this._texture3.dispose(e),this._prevTexture.dispose(e),this._currentTexture.dispose(e),this._frameBuffer.dispose(e)};const Bs=[0,0,-.321585265978,-.154972575841,.458126042375,.188473391593,.842080129861,.527766490688,.147304551086,-.659453822776,-.331943915203,-.940619700594,.0479226680259,.54812163202,.701581552186,-.709825561388,-.295436780218,.940589268233,-.901489676764,.237713156085,.973570876096,-.109899459384,-.866792314779,-.451805525005,.330975007087,.800048655954,-.344275183665,.381779221166,-.386139432542,-.437418421534,-.576478634965,-.0148463392551,.385798197415,-.262426961053,-.666302061145,.682427250835,-.628010632582,-.732836215494,.10163141741,-.987658134403,.711995289051,-.320024291314,.0296005138058,.950296523438,.0130612307608,-.351024443122,-.879596633704,-.10478487883,.435712737232,.504254490347,.779203817497,.206477676721,.388264289969,-.896736162545,-.153106280781,-.629203242522,-.245517550697,.657969239148,.126830499058,.26862328493,-.634888119007,-.302301223431,.617074219636,.779817204925];function zs(e,t,r,i,n){var a=e.gl;t.setUniform(a,"1i",r,n),a.activeTexture(a.TEXTURE0+n),i.isRenderable()?i.bind(e):i.unbind(e)}function Fs(e,t,r,i,n){var a,o,s,l,h=e.gl;return function(n,u,c){if(!l||l.material!==n.material){var d=n.material,f=n.__program,p=d.get("roughness");null==p&&(p=1);var m=d.get("normalMap")||t,g=d.get("roughnessMap"),_=d.get("bumpMap"),v=d.get("uvRepeat"),y=d.get("uvOffset"),x=d.get("detailUvRepeat"),b=d.get("detailUvOffset"),T=!!_&&d.isTextureEnabled("bumpMap"),w=!!g&&d.isTextureEnabled("roughnessMap"),S=d.isDefined("fragment","DOUBLE_SIDED");_=_||r,g=g||i,c!==u?(u.set("normalMap",m),u.set("bumpMap",_),u.set("roughnessMap",g),u.set("useBumpMap",T),u.set("useRoughnessMap",w),u.set("doubleSide",S),null!=v&&u.set("uvRepeat",v),null!=y&&u.set("uvOffset",y),null!=x&&u.set("detailUvRepeat",x),null!=b&&u.set("detailUvOffset",b),u.set("roughness",p)):(f.setUniform(h,"1f","roughness",p),a!==m&&zs(e,f,"normalMap",m,0),o!==_&&_&&zs(e,f,"bumpMap",_,1),s!==g&&g&&zs(e,f,"roughnessMap",g,2),null!=v&&f.setUniform(h,"2f","uvRepeat",v),null!=y&&f.setUniform(h,"2f","uvOffset",y),null!=x&&f.setUniform(h,"2f","detailUvRepeat",x),null!=b&&f.setUniform(h,"2f","detailUvOffset",b),f.setUniform(h,"1i","useBumpMap",+T),f.setUniform(h,"1i","useRoughnessMap",+w),f.setUniform(h,"1i","doubleSide",+S)),a=m,o=_,s=g,l=n}}}function Gs(e){this._depthTex=new Wi({format:Gi.DEPTH_COMPONENT,type:Gi.UNSIGNED_INT}),this._normalTex=new Wi({type:Gi.HALF_FLOAT}),this._framebuffer=new Zn,this._framebuffer.attach(this._normalTex),this._framebuffer.attach(this._depthTex,Zn.DEPTH_ATTACHMENT),this._normalMaterial=new Wt({shader:new br(br.source("ecgl.normal.vertex"),br.source("ecgl.normal.fragment"))}),this._normalMaterial.enableTexture(["normalMap","bumpMap","roughnessMap"]),this._defaultNormalMap=fa.createBlank("#000"),this._defaultBumpMap=fa.createBlank("#000"),this._defaultRoughessMap=fa.createBlank("#000"),this._debugPass=new ba({fragment:br.source("clay.compositor.output")}),this._debugPass.setUniform("texture",this._normalTex),this._debugPass.material.undefine("fragment","OUTPUT_ALPHA")}function Us(e){e=e||{},this._edgePass=new ba({fragment:br.source("ecgl.edge")}),this._edgePass.setUniform("normalTexture",e.normalTexture),this._edgePass.setUniform("depthTexture",e.depthTexture),this._targetTexture=new Wi({type:Gi.HALF_FLOAT}),this._frameBuffer=new Zn,this._frameBuffer.attach(this._targetTexture)}br.import("@export ecgl.normal.vertex\n\n@import ecgl.common.transformUniforms\n\n@import ecgl.common.uv.header\n\n@import ecgl.common.attributes\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\n@import ecgl.common.normalMap.vertexHeader\n\n@import ecgl.common.vertexAnimation.header\n\nvoid main()\n{\n\n @import ecgl.common.vertexAnimation.main\n\n @import ecgl.common.uv.main\n\n v_Normal = normalize((worldInverseTranspose * vec4(normal, 0.0)).xyz);\n v_WorldPosition = (world * vec4(pos, 1.0)).xyz;\n\n @import ecgl.common.normalMap.vertexMain\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n}\n\n\n@end\n\n\n@export ecgl.normal.fragment\n\n#define ROUGHNESS_CHANEL 0\n\nuniform bool useBumpMap;\nuniform bool useRoughnessMap;\nuniform bool doubleSide;\nuniform float roughness;\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n@import ecgl.common.normalMap.fragmentHeader\n@import ecgl.common.bumpMap.header\n\nuniform sampler2D roughnessMap;\n\nvoid main()\n{\n vec3 N = v_Normal;\n \n bool flipNormal = false;\n if (doubleSide) {\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n\n if (dot(N, V) < 0.0) {\n flipNormal = true;\n }\n }\n\n @import ecgl.common.normalMap.fragmentMain\n\n if (useBumpMap) {\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n }\n\n float g = 1.0 - roughness;\n\n if (useRoughnessMap) {\n float g2 = 1.0 - texture2D(roughnessMap, v_DetailTexcoord)[ROUGHNESS_CHANEL];\n g = clamp(g2 + (g - 0.5) * 2.0, 0.0, 1.0);\n }\n\n if (flipNormal) {\n N = -N;\n }\n\n gl_FragColor.rgb = (N.xyz + 1.0) * 0.5;\n gl_FragColor.a = g;\n}\n@end"),Gs.prototype.getDepthTexture=function(){return this._depthTex},Gs.prototype.getNormalTexture=function(){return this._normalTex},Gs.prototype.update=function(e,t,r){var i=e.getWidth(),n=e.getHeight(),a=this._depthTex,o=this._normalTex,s=this._normalMaterial;a.width=i,a.height=n,o.width=i,o.height=n;var l=t.getRenderList(r).opaque;this._framebuffer.bind(e),e.gl.clearColor(0,0,0,0),e.gl.clear(e.gl.COLOR_BUFFER_BIT|e.gl.DEPTH_BUFFER_BIT),e.gl.disable(e.gl.BLEND),e.renderPass(l,r,{getMaterial:function(){return s},ifRender:function(e){return e.renderNormal},beforeRender:Fs(e,this._defaultNormalMap,this._defaultBumpMap,this._defaultRoughessMap,this._normalMaterial),sort:e.opaqueSortCompare}),this._framebuffer.unbind(e)},Gs.prototype.renderDebug=function(e){this._debugPass.render(e)},Gs.prototype.dispose=function(e){this._depthTex.dispose(e),this._normalTex.dispose(e)},Us.prototype.update=function(e,t,r,i){var n=e.getWidth(),a=e.getHeight(),o=this._targetTexture;o.width=n,o.height=a;var s=this._frameBuffer;s.bind(e),this._edgePass.setUniform("projectionInv",t.invProjectionMatrix.array),this._edgePass.setUniform("textureSize",[n,a]),this._edgePass.setUniform("texture",r),this._edgePass.render(e),s.unbind(e)},Us.prototype.getTargetTexture=function(){return this._targetTexture},Us.prototype.setParameter=function(e,t){this._edgePass.setUniform(e,t)},Us.prototype.dispose=function(e){this._targetTexture.dispose(e),this._frameBuffer.dispose(e)};const Hs={nodes:[{name:"source",type:"texture",outputs:{color:{}}},{name:"source_half",shader:"#source(clay.compositor.downsample)",inputs:{texture:"source"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"}},{name:"bright",shader:"#source(clay.compositor.bright)",inputs:{texture:"source_half"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{threshold:2,scale:4,textureSize:"expr([width * 1.0 / 2, height / 2])"}},{name:"bright_downsample_4",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 2, height / 2] )"}},{name:"bright_downsample_8",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright_downsample_4"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 4, height / 4] )"}},{name:"bright_downsample_16",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright_downsample_8"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 16)",height:"expr(height * 1.0 / 16)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 8, height / 8] )"}},{name:"bright_downsample_32",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright_downsample_16"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 32)",height:"expr(height * 1.0 / 32)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 16, height / 16] )"}},{name:"bright_upsample_16_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_32"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 16)",height:"expr(height * 1.0 / 16)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 32, height / 32] )"}},{name:"bright_upsample_16_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_16_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 16)",height:"expr(height * 1.0 / 16)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 16, height * 1.0 / 16] )"}},{name:"bright_upsample_8_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_16"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 16, height * 1.0 / 16] )"}},{name:"bright_upsample_8_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_8_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 8, height * 1.0 / 8] )"}},{name:"bright_upsample_8_blend",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_8_blur_v",texture2:"bright_upsample_16_blur_v"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"bright_upsample_4_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_8"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 8, height * 1.0 / 8] )"}},{name:"bright_upsample_4_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_4_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 4, height * 1.0 / 4] )"}},{name:"bright_upsample_4_blend",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_4_blur_v",texture2:"bright_upsample_8_blend"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"bright_upsample_2_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_4"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 4, height * 1.0 / 4] )"}},{name:"bright_upsample_2_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_2_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 2, height * 1.0 / 2] )"}},{name:"bright_upsample_2_blend",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_2_blur_v",texture2:"bright_upsample_4_blend"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"bright_upsample_full_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 2, height * 1.0 / 2] )"}},{name:"bright_upsample_full_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_full_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0, height * 1.0] )"}},{name:"bloom_composite",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_full_blur_v",texture2:"bright_upsample_2_blend"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"coc",shader:"#source(ecgl.dof.coc)",outputs:{color:{parameters:{minFilter:"NEAREST",magFilter:"NEAREST",width:"expr(width * 1.0)",height:"expr(height * 1.0)"}}},parameters:{focalDist:50,focalRange:30}},{name:"dof_far_blur",shader:"#source(ecgl.dof.diskBlur)",inputs:{texture:"source",coc:"coc"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"}},{name:"dof_near_blur",shader:"#source(ecgl.dof.diskBlur)",inputs:{texture:"source",coc:"coc"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"},defines:{BLUR_NEARFIELD:null}},{name:"dof_coc_blur",shader:"#source(ecgl.dof.diskBlur)",inputs:{texture:"coc"},outputs:{color:{parameters:{minFilter:"NEAREST",magFilter:"NEAREST",width:"expr(width * 1.0)",height:"expr(height * 1.0)"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"},defines:{BLUR_COC:null}},{name:"dof_composite",shader:"#source(ecgl.dof.composite)",inputs:{original:"source",blurred:"dof_far_blur",nearfield:"dof_near_blur",coc:"coc",nearcoc:"dof_coc_blur"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}}},{name:"composite",shader:"#source(clay.compositor.hdr.composite)",inputs:{texture:"source",bloom:"bloom_composite"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)"}}},defines:{}},{name:"FXAA",shader:"#source(clay.compositor.fxaa)",inputs:{texture:"composite"}}]};function Vs(e,t){return{color:{parameters:{width:e,height:t}}}}br.import(fs),br.import(ps),br.import(ms),br.import(gs),br.import(_s),br.import(vs),br.import(ys),br.import(xs),br.import(bs),br.import("@export ecgl.dof.coc\n\nuniform sampler2D depth;\n\nuniform float zNear: 0.1;\nuniform float zFar: 2000;\n\nuniform float focalDistance: 3;\nuniform float focalRange: 1;\nuniform float focalLength: 30;\nuniform float fstop: 2.8;\n\nvarying vec2 v_Texcoord;\n\n@import clay.util.encode_float\n\nvoid main()\n{\n float z = texture2D(depth, v_Texcoord).r * 2.0 - 1.0;\n\n float dist = 2.0 * zNear * zFar / (zFar + zNear - z * (zFar - zNear));\n\n float aperture = focalLength / fstop;\n\n float coc;\n\n float uppper = focalDistance + focalRange;\n float lower = focalDistance - focalRange;\n if (dist <= uppper && dist >= lower) {\n coc = 0.5;\n }\n else {\n float focalAdjusted = dist > uppper ? uppper : lower;\n\n coc = abs(aperture * (focalLength * (dist - focalAdjusted)) / (dist * (focalAdjusted - focalLength)));\n coc = clamp(coc, 0.0, 2.0) / 2.00001;\n\n if (dist < lower) {\n coc = -coc;\n }\n coc = coc * 0.5 + 0.5;\n }\n\n gl_FragColor = encodeFloat(coc);\n}\n@end\n\n\n@export ecgl.dof.composite\n\n#define DEBUG 0\n\nuniform sampler2D original;\nuniform sampler2D blurred;\nuniform sampler2D nearfield;\nuniform sampler2D coc;\nuniform sampler2D nearcoc;\nvarying vec2 v_Texcoord;\n\n@import clay.util.rgbm\n@import clay.util.float\n\nvoid main()\n{\n vec4 blurredColor = texture2D(blurred, v_Texcoord);\n vec4 originalColor = texture2D(original, v_Texcoord);\n\n float fCoc = decodeFloat(texture2D(coc, v_Texcoord));\n\n fCoc = abs(fCoc * 2.0 - 1.0);\n\n float weight = smoothstep(0.0, 1.0, fCoc);\n \n#ifdef NEARFIELD_ENABLED\n vec4 nearfieldColor = texture2D(nearfield, v_Texcoord);\n float fNearCoc = decodeFloat(texture2D(nearcoc, v_Texcoord));\n fNearCoc = abs(fNearCoc * 2.0 - 1.0);\n\n gl_FragColor = encodeHDR(\n mix(\n nearfieldColor, mix(originalColor, blurredColor, weight),\n pow(1.0 - fNearCoc, 4.0)\n )\n );\n#else\n gl_FragColor = encodeHDR(mix(originalColor, blurredColor, weight));\n#endif\n\n}\n\n@end\n\n\n\n@export ecgl.dof.diskBlur\n\n#define POISSON_KERNEL_SIZE 16;\n\nuniform sampler2D texture;\nuniform sampler2D coc;\nvarying vec2 v_Texcoord;\n\nuniform float blurRadius : 10.0;\nuniform vec2 textureSize : [512.0, 512.0];\n\nuniform vec2 poissonKernel[POISSON_KERNEL_SIZE];\n\nuniform float percent;\n\nfloat nrand(const in vec2 n) {\n return fract(sin(dot(n.xy ,vec2(12.9898,78.233))) * 43758.5453);\n}\n\n@import clay.util.rgbm\n@import clay.util.float\n\n\nvoid main()\n{\n vec2 offset = blurRadius / textureSize;\n\n float rnd = 6.28318 * nrand(v_Texcoord + 0.07 * percent );\n float cosa = cos(rnd);\n float sina = sin(rnd);\n vec4 basis = vec4(cosa, -sina, sina, cosa);\n\n#if !defined(BLUR_NEARFIELD) && !defined(BLUR_COC)\n offset *= abs(decodeFloat(texture2D(coc, v_Texcoord)) * 2.0 - 1.0);\n#endif\n\n#ifdef BLUR_COC\n float cocSum = 0.0;\n#else\n vec4 color = vec4(0.0);\n#endif\n\n\n float weightSum = 0.0;\n\n for (int i = 0; i < POISSON_KERNEL_SIZE; i++) {\n vec2 ofs = poissonKernel[i];\n\n ofs = vec2(dot(ofs, basis.xy), dot(ofs, basis.zw));\n\n vec2 uv = v_Texcoord + ofs * offset;\n vec4 texel = texture2D(texture, uv);\n\n float w = 1.0;\n#ifdef BLUR_COC\n float fCoc = decodeFloat(texel) * 2.0 - 1.0;\n cocSum += clamp(fCoc, -1.0, 0.0) * w;\n#else\n texel = texel;\n #if !defined(BLUR_NEARFIELD)\n float fCoc = decodeFloat(texture2D(coc, uv)) * 2.0 - 1.0;\n w *= abs(fCoc);\n #endif\n texel.rgb *= texel.a;\n color += texel * w;\n#endif\n\n weightSum += w;\n }\n\n#ifdef BLUR_COC\n gl_FragColor = encodeFloat(clamp(cocSum / weightSum, -1.0, 0.0) * 0.5 + 0.5);\n#else\n color /= weightSum;\n color.rgb /= (color.a + 0.0001);\n gl_FragColor = color;\n#endif\n}\n\n@end"),br.import("@export ecgl.edge\n\nuniform sampler2D texture;\n\nuniform sampler2D normalTexture;\nuniform sampler2D depthTexture;\n\nuniform mat4 projectionInv;\n\nuniform vec2 textureSize;\n\nuniform vec4 edgeColor: [0,0,0,0.8];\n\nvarying vec2 v_Texcoord;\n\nvec3 packColor(vec2 coord) {\n float z = texture2D(depthTexture, coord).r * 2.0 - 1.0;\n vec4 p = vec4(v_Texcoord * 2.0 - 1.0, z, 1.0);\n vec4 p4 = projectionInv * p;\n\n return vec3(\n texture2D(normalTexture, coord).rg,\n -p4.z / p4.w / 5.0\n );\n}\n\nvoid main() {\n vec2 cc = v_Texcoord;\n vec3 center = packColor(cc);\n\n float size = clamp(1.0 - (center.z - 10.0) / 100.0, 0.0, 1.0) * 0.5;\n float dx = size / textureSize.x;\n float dy = size / textureSize.y;\n\n vec2 coord;\n vec3 topLeft = packColor(cc+vec2(-dx, -dy));\n vec3 top = packColor(cc+vec2(0.0, -dy));\n vec3 topRight = packColor(cc+vec2(dx, -dy));\n vec3 left = packColor(cc+vec2(-dx, 0.0));\n vec3 right = packColor(cc+vec2(dx, 0.0));\n vec3 bottomLeft = packColor(cc+vec2(-dx, dy));\n vec3 bottom = packColor(cc+vec2(0.0, dy));\n vec3 bottomRight = packColor(cc+vec2(dx, dy));\n\n vec3 v = -topLeft-2.0*top-topRight+bottomLeft+2.0*bottom+bottomRight;\n vec3 h = -bottomLeft-2.0*left-topLeft+bottomRight+2.0*right+topRight;\n\n float edge = sqrt(dot(h, h) + dot(v, v));\n\n edge = smoothstep(0.8, 1.0, edge);\n\n gl_FragColor = mix(texture2D(texture, v_Texcoord), vec4(edgeColor.rgb, 1.0), edgeColor.a * edge);\n}\n@end");var ks=["composite","FXAA"];function Ws(){this._width,this._height,this._dpr,this._sourceTexture=new Wi({type:Gi.HALF_FLOAT}),this._depthTexture=new Wi({format:Gi.DEPTH_COMPONENT,type:Gi.UNSIGNED_INT}),this._framebuffer=new Zn,this._framebuffer.attach(this._sourceTexture),this._framebuffer.attach(this._depthTexture,Zn.DEPTH_ATTACHMENT),this._normalPass=new Gs,this._compositor=ws(Hs);var e=this._compositor.getNodeByName("source");e.texture=this._sourceTexture;var t=this._compositor.getNodeByName("coc");this._sourceNode=e,this._cocNode=t,this._compositeNode=this._compositor.getNodeByName("composite"),this._fxaaNode=this._compositor.getNodeByName("FXAA"),this._dofBlurNodes=["dof_far_blur","dof_near_blur","dof_coc_blur"].map(function(e){return this._compositor.getNodeByName(e)},this),this._dofBlurKernel=0,this._dofBlurKernelSize=new Float32Array(0),this._finalNodesChain=ks.map(function(e){return this._compositor.getNodeByName(e)},this);var r={normalTexture:this._normalPass.getNormalTexture(),depthTexture:this._normalPass.getDepthTexture()};this._ssaoPass=new Rs(r),this._ssrPass=new Is(r),this._edgePass=new Us(r)}function js(e){for(var t=[],r=0;r<30;r++)t.push([Ls(r,2),Ls(r,3)]);this._haltonSequence=t,this._frame=0,this._sourceTex=new Wi,this._sourceFb=new Zn,this._sourceFb.attach(this._sourceTex),this._prevFrameTex=new Wi,this._outputTex=new Wi;var i=this._blendPass=new ba({fragment:br.source("clay.compositor.blend")});i.material.disableTexturesAll(),i.material.enableTexture(["texture1","texture2"]),this._blendFb=new Zn({depthBuffer:!1}),this._outputPass=new ba({fragment:br.source("clay.compositor.output"),blendWithPrevious:!0}),this._outputPass.material.define("fragment","OUTPUT_ALPHA"),this._outputPass.material.blend=function(e){e.blendEquationSeparate(e.FUNC_ADD,e.FUNC_ADD),e.blendFuncSeparate(e.ONE,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA)}}function Xs(e){e=e||"perspective",this.layer=null,this.scene=new Pn,this.rootNode=this.scene,this.viewport={x:0,y:0,width:0,height:0},this.setProjection(e),this._compositor=new Ws,this._temporalSS=new js,this._shadowMapPass=new os;for(var t=[],r=0,i=0;i<30;i++){for(var n=[],a=0;a<6;a++)n.push(4*Ls(r,2)-2),n.push(4*Ls(r,3)-2),r++;t.push(n)}this._pcfKernels=t,this.scene.on("beforerender",function(e,t,r){this.needsTemporalSS()&&this._temporalSS.jitterProjection(e,r)},this)}Ws.prototype.resize=function(e,t,r){e*=r=r||1,t*=r;var i=this._sourceTexture,n=this._depthTexture;i.width=e,i.height=t,n.width=e,n.height=t;var a={getWidth:function(){return e},getHeight:function(){return t},getDevicePixelRatio:function(){return r}};function o(e,t){if("function"==typeof e[t]){var r=e[t].__original||e[t];e[t]=function(e){return r.call(this,a)},e[t].__original=r}}this._compositor.nodes.forEach(function(e){for(var t in e.outputs){var r=e.outputs[t].parameters;r&&(o(r,"width"),o(r,"height"))}for(var i in e.parameters)o(e.parameters,i)}),this._width=e,this._height=t,this._dpr=r},Ws.prototype.getWidth=function(){return this._width},Ws.prototype.getHeight=function(){return this._height},Ws.prototype._ifRenderNormalPass=function(){return this._enableSSAO||this._enableEdge||this._enableSSR},Ws.prototype._getPrevNode=function(e){for(var t=ks.indexOf(e.name)-1,r=this._finalNodesChain[t];r&&!this._compositor.getNodeByName(r.name);)t-=1,r=this._finalNodesChain[t];return r},Ws.prototype._getNextNode=function(e){for(var t=ks.indexOf(e.name)+1,r=this._finalNodesChain[t];r&&!this._compositor.getNodeByName(r.name);)t+=1,r=this._finalNodesChain[t];return r},Ws.prototype._addChainNode=function(e){var t=this._getPrevNode(e),r=this._getNextNode(e);t&&(e.inputs.texture=t.name,r?(e.outputs=Vs(this.getWidth.bind(this),this.getHeight.bind(this)),r.inputs.texture=e.name):e.outputs=null,this._compositor.addNode(e))},Ws.prototype._removeChainNode=function(e){var t=this._getPrevNode(e),r=this._getNextNode(e);t&&(r?(t.outputs=Vs(this.getWidth.bind(this),this.getHeight.bind(this)),r.inputs.texture=t.name):t.outputs=null,this._compositor.removeNode(e))},Ws.prototype.updateNormal=function(e,t,r,i){this._ifRenderNormalPass()&&this._normalPass.update(e,t,r)},Ws.prototype.updateSSAO=function(e,t,r,i){this._ssaoPass.update(e,r,i)},Ws.prototype.enableSSAO=function(){this._enableSSAO=!0},Ws.prototype.disableSSAO=function(){this._enableSSAO=!1},Ws.prototype.enableSSR=function(){this._enableSSR=!0},Ws.prototype.disableSSR=function(){this._enableSSR=!1},Ws.prototype.getSSAOTexture=function(){return this._ssaoPass.getTargetTexture()},Ws.prototype.getSourceFrameBuffer=function(){return this._framebuffer},Ws.prototype.getSourceTexture=function(){return this._sourceTexture},Ws.prototype.disableFXAA=function(){this._removeChainNode(this._fxaaNode)},Ws.prototype.enableFXAA=function(){this._addChainNode(this._fxaaNode)},Ws.prototype.enableBloom=function(){this._compositeNode.inputs.bloom="bloom_composite",this._compositor.dirty()},Ws.prototype.disableBloom=function(){this._compositeNode.inputs.bloom=null,this._compositor.dirty()},Ws.prototype.enableDOF=function(){this._compositeNode.inputs.texture="dof_composite",this._compositor.dirty()},Ws.prototype.disableDOF=function(){this._compositeNode.inputs.texture="source",this._compositor.dirty()},Ws.prototype.enableColorCorrection=function(){this._compositeNode.define("COLOR_CORRECTION"),this._enableColorCorrection=!0},Ws.prototype.disableColorCorrection=function(){this._compositeNode.undefine("COLOR_CORRECTION"),this._enableColorCorrection=!1},Ws.prototype.enableEdge=function(){this._enableEdge=!0},Ws.prototype.disableEdge=function(){this._enableEdge=!1},Ws.prototype.setBloomIntensity=function(e){this._compositeNode.setParameter("bloomIntensity",e)},Ws.prototype.setSSAOParameter=function(e,t){switch(e){case"quality":var r={low:6,medium:12,high:32,ultra:62}[t]||12;this._ssaoPass.setParameter("kernelSize",r);break;case"radius":this._ssaoPass.setParameter(e,t),this._ssaoPass.setParameter("bias",t/200);break;case"intensity":this._ssaoPass.setParameter(e,t)}},Ws.prototype.setDOFParameter=function(e,t){switch(e){case"focalDistance":case"focalRange":case"fstop":this._cocNode.setParameter(e,t);break;case"blurRadius":for(var r=0;r=this._haltonSequence.length},render:function(e,t,r){var i=this._blendPass;0===this._frame?(i.setUniform("weight1",0),i.setUniform("weight2",1)):(i.setUniform("weight1",.9),i.setUniform("weight2",.1)),i.setUniform("texture1",this._prevFrameTex),i.setUniform("texture2",t||this._sourceTex),this._blendFb.attach(this._outputTex),this._blendFb.bind(e),i.render(e),this._blendFb.unbind(e),r||(this._outputPass.setUniform("texture",this._outputTex),this._outputPass.render(e));var n=this._prevFrameTex;this._prevFrameTex=this._outputTex,this._outputTex=n,this._frame++},dispose:function(e){this._sourceFb.dispose(e),this._blendFb.dispose(e),this._prevFrameTex.dispose(e),this._outputTex.dispose(e),this._sourceTex.dispose(e),this._outputPass.dispose(e),this._blendPass.dispose(e)}},Xs.prototype.setProjection=function(e){var t=this.camera;t&&t.update(),"perspective"===e?this.camera instanceof zn||(this.camera=new zn,t&&this.camera.setLocalTransform(t.localTransform)):this.camera instanceof _a||(this.camera=new _a,t&&this.camera.setLocalTransform(t.localTransform)),this.camera.near=.1,this.camera.far=2e3},Xs.prototype.setViewport=function(e,t,r,i,n){this.camera instanceof zn&&(this.camera.aspect=r/i),n=n||1,this.viewport.x=e,this.viewport.y=t,this.viewport.width=r,this.viewport.height=i,this.viewport.devicePixelRatio=n,this._compositor.resize(r*n,i*n),this._temporalSS.resize(r*n,i*n)},Xs.prototype.containPoint=function(e,t){var r=this.viewport;return t=this.layer.renderer.getHeight()-t,e>=r.x&&t>=r.y&&e<=r.x+r.width&&t<=r.y+r.height};var qs=new Yt;function Zs(e,t){var r=e.getBoxLayoutParams(),i=C(r,{width:t.getWidth(),height:t.getHeight()});i.y=t.getHeight()-i.y-i.height,this.viewGL.setViewport(i.x,i.y,i.width,i.height,t.getDevicePixelRatio());var n=e.get("boxWidth"),a=e.get("boxHeight"),o=e.get("boxDepth");this.getAxis("x").setExtent(-n/2,n/2),this.getAxis("y").setExtent(o/2,-o/2),this.getAxis("z").setExtent(-a/2,a/2),this.size=[n,a,o]}function Ys(e,t){var r={};e.eachSeries(function(e){if(e.coordinateSystem===this){var t=e.getData();["x","y","z"].forEach(function(e){t.mapDimensionsAll(e,!0).forEach(function(i){var n,a;n=e,a=t.getDataExtent(i,!0),r[n]=r[n]||[1/0,-1/0],r[n][0]=Math.min(a[0],r[n][0]),r[n][1]=Math.max(a[1],r[n][1])})})}},this),["xAxis3D","yAxis3D","zAxis3D"].forEach(function(t){e.eachComponent(t,function(e){var i=t.charAt(0),n=e.getReferringComponents("grid3D").models[0],a=n.coordinateSystem;if(a===this){var o=a.getAxis(i);if(!o){(o=new jo(i,L(r[i]||[1/0,-1/0],e))).type=e.get("type");var s="category"===o.type;o.onBand=s&&e.get("boundaryGap"),o.inverse=e.get("inverse"),e.axis=o,o.model=e,o.getLabelModel=function(){return e.getModel("axisLabel",n.getModel("axisLabel"))},o.getTickModel=function(){return e.getModel("axisTick",n.getModel("axisTick"))},a.addAxis(o)}}},this)},this),this.resize(this.model,t)}Xs.prototype.castRay=function(e,t,r){var i=this.layer.renderer,n=i.viewport;return i.viewport=this.viewport,i.screenToNDC(e,t,qs),this.camera.castRay(qs,r),i.viewport=n,r},Xs.prototype.prepareRender=function(){this.scene.update(),this.camera.update(),this.scene.updateLights();var e=this.scene.updateRenderList(this.camera);this._needsSortProgressively=!1;for(var t=0;t30},Xs.prototype._doRender=function(e,t,r){var i=this.scene,n=this.camera;r=r||0,this._updateTransparent(e,i,n,r),t||(this._shadowMapPass.kernelPCF=this._pcfKernels[0],this._shadowMapPass.render(e,i,n,!0)),this._updateShadowPCFKernel(r);var a,o=e.clearColor;e.gl.clearColor(o[0],o[1],o[2],o[3]),this._enablePostEffect&&(this.needsTemporalSS()&&this._temporalSS.jitterProjection(e,n),this._compositor.updateNormal(e,i,n,this._temporalSS.getFrame())),this._updateSSAO(e,i,n,this._temporalSS.getFrame()),this._enablePostEffect?((a=this._compositor.getSourceFrameBuffer()).bind(e),e.gl.clear(e.gl.DEPTH_BUFFER_BIT|e.gl.COLOR_BUFFER_BIT),e.render(i,n,!0,!0),a.unbind(e),this.needsTemporalSS()&&t?(this._compositor.composite(e,i,n,this._temporalSS.getSourceFrameBuffer(),this._temporalSS.getFrame()),e.setViewport(this.viewport),this._temporalSS.render(e)):(e.setViewport(this.viewport),this._compositor.composite(e,i,n,null,0))):this.needsTemporalSS()&&t?((a=this._temporalSS.getSourceFrameBuffer()).bind(e),e.saveClear(),e.clearBit=e.gl.DEPTH_BUFFER_BIT|e.gl.COLOR_BUFFER_BIT,e.render(i,n,!0,!0),e.restoreClear(),a.unbind(e),e.setViewport(this.viewport),this._temporalSS.render(e)):(e.setViewport(this.viewport),e.render(i,n,!0,!0))},Xs.prototype._updateTransparent=function(e,t,r,i){for(var n=new Gr,a=new ui,o=r.getWorldPosition(),s=t.getRenderList(r).transparent,l=0;lthis.camera.far||e80*r){i=a=e[0],n=o=e[1];for(var p=r;pa&&(a=s),l>o&&(o=l);h=Math.max(a-i,o-n)}return dl(d,f,r,i,n,h),f}function ul(e,t,r,i,n){var a,o;if(n===Pl(e,t,r,i)>0)for(a=t;a=t;a-=i)o=Dl(a,e[a],e[a+1],o);return o&&Sl(o,o.next)&&(Cl(o),o=o.next),o}function cl(e,t){if(!e)return e;t||(t=e);var r,i=e;do{if(r=!1,i.steiner||!Sl(i,i.next)&&0!==wl(i.prev,i,i.next))i=i.next;else{if(Cl(i),(i=t=i.prev)===i.next)return null;r=!0}}while(r||i!==t);return t}function dl(e,t,r,i,n,a,o){if(e){!o&&a&&function(e,t,r,i){var n=e;do{null===n.z&&(n.z=yl(n.x,n.y,t,r,i)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,function(e){var t,r,i,n,a,o,s,l,h=1;do{for(r=e,e=null,a=null,o=0;r;){for(o++,i=r,s=0,t=0;t0||l>0&&i;)0!==s&&(0===l||!i||r.z<=i.z)?(n=r,r=r.nextZ,s--):(n=i,i=i.nextZ,l--),a?a.nextZ=n:e=n,n.prevZ=a,a=n;r=i}a.nextZ=null,h*=2}while(o>1)}(n)}(e,i,n,a);for(var s,l,h=e;e.prev!==e.next;)if(s=e.prev,l=e.next,a?pl(e,i,n,a):fl(e))t.push(s.i/r),t.push(e.i/r),t.push(l.i/r),Cl(e),e=l.next,h=l.next;else if((e=l)===h){o?1===o?dl(e=ml(e,t,r),t,r,i,n,a,2):2===o&&gl(e,t,r,i,n,a):dl(cl(e),t,r,i,n,a,1);break}}}function fl(e){var t=e.prev,r=e,i=e.next;if(wl(t,r,i)>=0)return!1;for(var n=e.next.next;n!==e.prev;){if(bl(t.x,t.y,r.x,r.y,i.x,i.y,n.x,n.y)&&wl(n.prev,n,n.next)>=0)return!1;n=n.next}return!0}function pl(e,t,r,i){var n=e.prev,a=e,o=e.next;if(wl(n,a,o)>=0)return!1;for(var s=n.xa.x?n.x>o.x?n.x:o.x:a.x>o.x?a.x:o.x,u=n.y>a.y?n.y>o.y?n.y:o.y:a.y>o.y?a.y:o.y,c=yl(s,l,t,r,i),d=yl(h,u,t,r,i),f=e.nextZ;f&&f.z<=d;){if(f!==e.prev&&f!==e.next&&bl(n.x,n.y,a.x,a.y,o.x,o.y,f.x,f.y)&&wl(f.prev,f,f.next)>=0)return!1;f=f.nextZ}for(f=e.prevZ;f&&f.z>=c;){if(f!==e.prev&&f!==e.next&&bl(n.x,n.y,a.x,a.y,o.x,o.y,f.x,f.y)&&wl(f.prev,f,f.next)>=0)return!1;f=f.prevZ}return!0}function ml(e,t,r){var i=e;do{var n=i.prev,a=i.next.next;!Sl(n,a)&&Ml(n,i,i.next,a)&&Al(n,a)&&Al(a,n)&&(t.push(n.i/r),t.push(i.i/r),t.push(a.i/r),Cl(i),Cl(i.next),i=e=a),i=i.next}while(i!==e);return i}function gl(e,t,r,i,n,a){var o=e;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Tl(o,s)){var l=El(o,s);return o=cl(o,o.next),l=cl(l,l.next),dl(o,t,r,i,n,a),void dl(l,t,r,i,n,a)}s=s.next}o=o.next}while(o!==e)}function _l(e,t){return e.x-t.x}function vl(e,t){if(t=function(e,t){var r,i=t,n=e.x,a=e.y,o=-1/0;do{if(a<=i.y&&a>=i.next.y&&i.next.y!==i.y){var s=i.x+(a-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=n&&s>o){if(o=s,s===n){if(a===i.y)return i;if(a===i.next.y)return i.next}r=i.x=i.x&&i.x>=u&&n!==i.x&&bl(ar.x)&&Al(i,e)&&(r=i,d=l),i=i.next;return r}(e,t),t){var r=El(t,e);cl(r,r.next)}}function yl(e,t,r,i,n){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-r)/n)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)/n)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function xl(e){var t=e,r=e;do{t.x=0&&(e-o)*(i-s)-(r-o)*(t-s)>=0&&(r-o)*(a-s)-(n-o)*(i-s)>=0}function Tl(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&Ml(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}(e,t)&&Al(e,t)&&Al(t,e)&&function(e,t){var r=e,i=!1,n=(e.x+t.x)/2,a=(e.y+t.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&n<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next}while(r!==e);return i}(e,t)}function wl(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function Sl(e,t){return e.x===t.x&&e.y===t.y}function Ml(e,t,r,i){return!!(Sl(e,t)&&Sl(r,i)||Sl(e,i)&&Sl(r,t))||wl(e,t,r)>0!=wl(e,t,i)>0&&wl(r,i,e)>0!=wl(r,i,t)>0}function Al(e,t){return wl(e.prev,e,e.next)<0?wl(e,t,e.next)>=0&&wl(e,e.prev,t)>=0:wl(e,t,e.prev)<0||wl(e,e.next,t)<0}function El(e,t){var r=new Ll(e.i,e.x,e.y),i=new Ll(t.i,t.x,t.y),n=e.next,a=t.prev;return e.next=t,t.prev=e,r.next=n,n.prev=r,i.next=r,r.prev=i,a.next=i,i.prev=a,i}function Dl(e,t,r,i){var n=new Ll(e,t,r);return i?(n.next=i.next,n.prev=i,i.next.prev=n,i.next=n):(n.prev=n,n.next=n),n}function Cl(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Ll(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Pl(e,t,r,i){for(var n=0,a=t,o=r-i;ah&&s.push({pivot:Math.floor((l+h)/2),left:h,right:l}),h=a[o].pivot+1,(l=a[o].right)>h&&s.push({pivot:Math.floor((l+h)/2),left:h,right:l})}a=this._parts=s}else for(o=0;o=2e4},doSortTriangles:function(e,t){var r=this.indices;if(0===t){var i=this.attributes.position;e=e.array,this._triangleZList&&this._triangleZList.length===this.triangleCount||(this._triangleZList=new Float32Array(this.triangleCount),this._sortedTriangleIndices=new Uint32Array(this.triangleCount),this._indicesTmp=new r.constructor(r.length),this._triangleZListTmp=new Float32Array(this.triangleCount));for(var n,a=0,o=0;o0,r={},i=0;i65535?new Uint32Array(3*o):new Uint16Array(3*o),d.material.shader!==t&&d.material.attachShader(t,!0),Ka.setMaterialFromModel(t.__shading,d.material,e,r),s>0&&(this._linesMesh.geometry.resetOffset(),this._linesMesh.geometry.setVertexCount(s),this._linesMesh.geometry.setTriangleCount(l)),this._dataIndexOfVertex=new Uint32Array(a),this._vertexRangeOfDataIndex=new Uint32Array(2*(n-i))},_updateRegionMesh:function(e,t,r,i){for(var n=e.getData(),a=0,o=0,s=!1,l=this._polygonMesh,h=this._linesMesh,u=r;u0;T&&(b*=t.getDevicePixelRatio(),this._updateLinesGeometry(h.geometry,e,u,v,b,e.coordinateSystem.transform)),h.invisible=!T,h.material.set({color:g})}(l=this._polygonMesh).material.transparent=s,l.material.depthMask=!s,l.geometry.updateBoundingBox(),l.frontFace=this.extrudeY?Ka.Mesh.CCW:Ka.Mesh.CW,l.material.get("normalMap")&&l.geometry.generateTangents(),l.seriesIndex=e.seriesIndex,l.on("mousemove",this._onmousemove,this),l.on("mouseout",this._onmouseout,this)},_updateDebugWireframe:function(e){var t=e.getModel("debug.wireframe");if(t.get("show")){var r=Ka.parseColor(t.get("lineStyle.color")||"rgba(0,0,0,0.5)"),i=La(t.get("lineStyle.width"),1),n=this._polygonMesh;n.geometry.generateBarycentric(),n.material.define("both","WIREFRAME_TRIANGLE"),n.material.set("wireframeLineColor",r),n.material.set("wireframeLineWidth",i)}},_onmousemove:function(e){var t=this._dataIndexOfVertex[e.triangle[0]];null==t&&(t=-1),t!==this._lastHoverDataIndex&&(this.downplay(this._lastHoverDataIndex),this.highlight(t),this._labelsBuilder.updateLabels([t])),this._lastHoverDataIndex=t,this._polygonMesh.dataIndex=t},_onmouseout:function(e){e.target&&(this.downplay(this._lastHoverDataIndex),this._lastHoverDataIndex=-1,this._polygonMesh.dataIndex=-1),this._labelsBuilder.updateLabels([])},_updateGroundPlane:function(e,t,r){var i=e.getModel("groundPlane",e);if(this._groundMesh.invisible=!i.get("show",!0),!this._groundMesh.invisible){var n=e.get("shading"),a=this._groundMaterials[n];a||(a=this._groundMaterials.lambert),Ka.setMaterialFromModel(n,a,i,r),a.get("normalMap")&&this._groundMesh.geometry.generateTangents(),this._groundMesh.material=a,this._groundMesh.material.set("color",Ka.parseColor(i.get("color"))),this._groundMesh.scale.set(t.size[0],t.size[2],1)}},_triangulation:function(e,t,r){this._triangulationResults=[];for(var i=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0],a=e.coordinateSystem,o=t;o1?i:0,L[U][g]=A.points[V+2],l.set(n+U,L[U]),s?(R[0]=(A.points[V]*_[0]-v[0])/x,R[1]=(A.points[V+2]*_[g]-v[g])/x):(R[0]=(H?I:I+G)/x,R[1]=(L[U][m]*_[m]-v[m])/x),u.set(n+U,R)}for(Wl.sub(P,L[1],L[0]),Wl.sub(O,L[3],L[0]),Wl.cross(N,P,O),Wl.normalize(N,N),U=0;U<4;U++)h.set(n+U,N),f&&c.set(n+U,o);for(U=0;U<6;U++)p[3*a+U]=C[U]+n;n+=4,a+=2,I+=G}}return t.dirty(),{vertexOffset:n,triangleOffset:a}},_getRegionLinesInfo:function(e,t,r){var i=0,n=0;return t.getRegionModel(e).getModel("itemStyle").get("borderWidth")>0&&t.getRegionPolygonCoords(e).forEach(function(e){var t=e.exterior,a=e.interiors;i+=r.getPolylineVertexCount(t),n+=r.getPolylineTriangleCount(t);for(var o=0;othis._endIndex)){t-=this._startIndex;for(var i=this._vertexRangeOfDataIndex[2*t];i0},_displacementChanged:!0,_displacementScale:0,updateDisplacementHash:function(){var e=this.getDisplacementTexture(),t=this.getDisplacemenScale();this._displacementChanged=this._displacementTexture!==e||this._displacementScale!==t,this._displacementTexture=e,this._displacementScale=t},isDisplacementChanged:function(){return this._displacementChanged}});_(ih.prototype,co),_(ih.prototype,fo),_(ih.prototype,po),_(ih.prototype,ol);var nh=Math.PI,ah=Math.sin,oh=Math.cos,sh=Math.tan,lh=Math.asin,hh=Math.atan2,uh=nh/180,ch=23.4397*uh;function dh(e,t){return hh(ah(e)*oh(ch)-sh(t)*ah(ch),oh(e))}function fh(e,t,r){return hh(ah(e),oh(e)*ah(t)-sh(r)*oh(t))}function ph(e,t,r){return lh(ah(t)*ah(r)+oh(t)*oh(r)*oh(e))}function mh(e){var t,r,i=function(e){return uh*(357.5291+.98560028*e)}(e),n=function(e){return e+uh*(1.9148*ah(e)+.02*ah(2*e)+3e-4*ah(3*e))+102.9372*uh+nh}(i);return{dec:(t=n,r=0,lh(ah(r)*oh(ch)+oh(r)*ah(ch)*ah(t))),ra:dh(n,0)}}var gh={getPosition:function(e,t,r){var i=uh*-r,n=uh*t,a=function(e){return function(e){return e.valueOf()/864e5-.5+2440588}(e)-2451545}(e),o=mh(a),s=function(e,t){return uh*(280.16+360.9856235*e)-t}(a,i)-o.ra;return{azimuth:fh(s,n,o.dec),altitude:ph(s,n,o.dec)}}};Ka.Shader.import(Xa),Ka.Shader.import("@export ecgl.atmosphere.vertex\nattribute vec3 position: POSITION;\nattribute vec3 normal : NORMAL;\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform mat4 normalMatrix : WORLDINVERSETRANSPOSE;\n\nvarying vec3 v_Normal;\n\nvoid main() {\n v_Normal = normalize((normalMatrix * vec4(normal, 0.0)).xyz);\n gl_Position = worldViewProjection * vec4(position, 1.0);\n}\n@end\n\n\n@export ecgl.atmosphere.fragment\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform float glowPower;\nuniform vec3 glowColor;\n\nvarying vec3 v_Normal;\n\nvoid main() {\n float intensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor = vec4(glowColor, intensity * intensity);\n}\n@end");const _h=S.extend({type:"globe",__ecgl__:!0,_displacementScale:0,init:function(e,t){this.groupGL=new Ka.Node,this._sphereGeometry=new Ka.SphereGeometry({widthSegments:200,heightSegments:100,dynamic:!0}),this._overlayGeometry=new Ka.SphereGeometry({widthSegments:80,heightSegments:40}),this._planeGeometry=new Ka.PlaneGeometry,this._earthMesh=new Ka.Mesh({renderNormal:!0}),this._atmosphereMesh=new Ka.Mesh,this._atmosphereGeometry=new Ka.SphereGeometry({widthSegments:80,heightSegments:40}),this._atmosphereMaterial=new Ka.Material({shader:new Ka.Shader(Ka.Shader.source("ecgl.atmosphere.vertex"),Ka.Shader.source("ecgl.atmosphere.fragment")),transparent:!0}),this._atmosphereMesh.geometry=this._atmosphereGeometry,this._atmosphereMesh.material=this._atmosphereMaterial,this._atmosphereMesh.frontFace=Ka.Mesh.CW,this._lightRoot=new Ka.Node,this._sceneHelper=new Eo,this._sceneHelper.initLight(this._lightRoot),this.groupGL.add(this._atmosphereMesh),this.groupGL.add(this._earthMesh),this._control=new yo({zr:t.getZr()}),this._control.init(),this._layerMeshes={}},render:function(e,t,r){var i=e.coordinateSystem,n=e.get("shading");i.viewGL.add(this._lightRoot),e.get("show")?i.viewGL.add(this.groupGL):i.viewGL.remove(this.groupGL),this._sceneHelper.setScene(i.viewGL.scene),i.viewGL.setPostEffect(e.getModel("postEffect"),r),i.viewGL.setTemporalSuperSampling(e.getModel("temporalSuperSampling"));var a=this._earthMesh;a.geometry=this._sphereGeometry;var o="ecgl."+n;a.material&&a.material.shader.name===o||(a.material=Ka.createMaterial(o)),Ka.setMaterialFromModel(n,a.material,e,r),["roughnessMap","metalnessMap","detailMap","normalMap"].forEach(function(e){var t=a.material.get(e);t&&(t.flipY=!1)}),a.material.set("color",Ka.parseColor(e.get("baseColor")));var s=.99*i.radius;if(a.scale.set(s,s,s),e.get("atmosphere.show")){a.material.define("both","ATMOSPHERE_ENABLED"),this._atmosphereMesh.invisible=!1,this._atmosphereMaterial.setUniforms({glowPower:e.get("atmosphere.glowPower")||6,glowColor:e.get("atmosphere.color")||"#ffffff"}),a.material.setUniforms({glowPower:e.get("atmosphere.innerGlowPower")||2,glowColor:e.get("atmosphere.color")||"#ffffff"});var l=e.get("atmosphere.offset")||5;this._atmosphereMesh.scale.set(s+l,s+l,s+l)}else a.material.undefine("both","ATMOSPHERE_ENABLED"),this._atmosphereMesh.invisible=!0;var h=a.material.setTextureImage("diffuseMap",e.get("baseTexture"),r,{flipY:!1,anisotropic:8});h&&h.surface&&h.surface.attachToMesh(a);var u=a.material.setTextureImage("bumpMap",e.get("heightTexture"),r,{flipY:!1,anisotropic:8});u&&u.surface&&u.surface.attachToMesh(a),a.material[e.get("postEffect.enable")?"define":"undefine"]("fragment","SRGB_DECODE"),this._updateLight(e,r),this._displaceVertices(e,r),this._updateViewControl(e,r),this._updateLayers(e,r)},afterRender:function(e,t,r,i){var n=i.renderer;this._sceneHelper.updateAmbientCubemap(n,e,r),this._sceneHelper.updateSkybox(n,e,r)},_updateLayers:function(e,t){var r=e.coordinateSystem,i=e.get("layers"),n=r.radius,a=[],o=[],s=[],l=[];u(i,function(e){var i=new b(e),h=i.get("type"),u=Ka.loadTexture(i.get("texture"),t,{flipY:!1,anisotropic:8});if(u.surface&&u.surface.attachToMesh(this._earthMesh),"blend"===h){var c=i.get("blendTo"),d=La(i.get("intensity"),1);"emission"===c?(s.push(u),l.push(d)):(a.push(u),o.push(d))}else{var f=i.get("id"),p=this._layerMeshes[f];p||(p=this._layerMeshes[f]=new Ka.Mesh({geometry:this._overlayGeometry,castShadow:!1,ignorePicking:!0})),"lambert"===i.get("shading")?(p.material=p.__lambertMaterial||new Ka.Material({autoUpdateTextureStatus:!1,shader:Ka.createShader("ecgl.lambert"),transparent:!0,depthMask:!1}),p.__lambertMaterial=p.material):(p.material=p.__colorMaterial||new Ka.Material({autoUpdateTextureStatus:!1,shader:Ka.createShader("ecgl.color"),transparent:!0,depthMask:!1}),p.__colorMaterial=p.material),p.material.enableTexture("diffuseMap");var m=i.get("distance"),g=n+(null==m?r.radius/100:m);p.scale.set(g,g,g),n=g;var _=this._blankTexture||(this._blankTexture=Ka.createBlankTexture("rgba(255, 255, 255, 0)"));p.material.set("diffuseMap",_),Ka.loadTexture(i.get("texture"),t,{flipY:!1,anisotropic:8},function(e){e.surface&&e.surface.attachToMesh(p),p.material.set("diffuseMap",e),t.getZr().refresh()}),i.get("show")?this.groupGL.add(p):this.groupGL.remove(p)}},this);var h=this._earthMesh.material;h.define("fragment","LAYER_DIFFUSEMAP_COUNT",a.length),h.define("fragment","LAYER_EMISSIVEMAP_COUNT",s.length),h.set("layerDiffuseMap",a),h.set("layerDiffuseIntensity",o),h.set("layerEmissiveMap",s),h.set("layerEmissionIntensity",l);var c=e.getModel("debug.wireframe");if(c.get("show")){h.define("both","WIREFRAME_TRIANGLE");var d=Ka.parseColor(c.get("lineStyle.color")||"rgba(0,0,0,0.5)"),f=La(c.get("lineStyle.width"),1);h.set("wireframeLineWidth",f),h.set("wireframeLineColor",d)}else h.undefine("both","WIREFRAME_TRIANGLE")},_updateViewControl:function(e,t){var r=e.coordinateSystem,i=e.getModel("viewControl");r.viewGL.camera;var n=this,a=this._control;a.setViewGL(r.viewGL);var o,s,l=i.get("targetCoord");null!=l&&(s=l[0]+90,o=l[1]),a.setFromViewControlModel(i,{baseDistance:r.radius,alpha:o,beta:s}),a.off("update"),a.on("update",function(){t.dispatchAction({type:"globeChangeCamera",alpha:a.getAlpha(),beta:a.getBeta(),distance:a.getDistance()-r.radius,center:a.getCenter(),from:n.uid,globeId:e.id})})},_displaceVertices:function(e,t){var r=e.get("displacementQuality"),i=e.get("debug.wireframe.show"),n=e.coordinateSystem;if(e.isDisplacementChanged()||r!==this._displacementQuality||i!==this._showDebugWireframe){this._displacementQuality=r,this._showDebugWireframe=i;var a=this._sphereGeometry,o={low:100,medium:200,high:400,ultra:800}[r]||200,s=o/2;(a.widthSegments!==o||i)&&(a.widthSegments=o,a.heightSegments=s,a.build()),this._doDisplaceVertices(a,n),i&&a.generateBarycentric()}},_doDisplaceVertices:function(e,t){var r=e.attributes.position.value,i=e.attributes.texcoord0.value,n=e.__originalPosition;n&&n.length===r.length||((n=new Float32Array(r.length)).set(r),e.__originalPosition=n);for(var a=t.displacementWidth,o=t.displacementHeight,s=t.displacementData,l=0;l50&&(a=1e3);var o=[];Lh.perspective(o,Oh,this.width/this.height,1,a),this.viewGL.camera.projectionMatrix.setArray(o),this.viewGL.camera.decomposeProjectionMatrix(),o=Lh.identity([]);var s=this.dataToPoint(this.center);Lh.scale(o,o,[1,-1,1]),Lh.translate(o,o,[0,0,-e]),Lh.rotateX(o,o,t),Lh.rotateZ(o,o,-this.bearing/180*Math.PI),Lh.translate(o,o,[-s[0]*this.getScale()*Rh,-s[1]*this.getScale()*Rh,0]),this.viewGL.camera.viewMatrix.array=o;var l=[];Lh.invert(l,o),this.viewGL.camera.worldTransform.array=l,this.viewGL.camera.decomposeWorldTransform();var h,u=Ph*this.getScale();if(this.altitudeExtent&&!isNaN(this.boxHeight)){var c=this.altitudeExtent[1]-this.altitudeExtent[0];h=this.boxHeight/c*this.getScale()/Math.pow(2,this._initialZoom-this.zoomOffset)}else h=u/(2*Math.PI*6378e3*Math.abs(Math.cos(this.center[1]*(Math.PI/180))))*this.altitudeScale*Rh;this.viewGL.rootNode.scale.set(this.getScale()*Rh,this.getScale()*Rh,h)}},getScale:function(){return Math.pow(2,this.zoom-this.zoomOffset)},projectOnTile:function(e,t){return this.projectOnTileWithScale(e,this.getScale()*Ph,t)},projectOnTileWithScale:function(e,t,r){var i=e[0],n=e[1]*Nh/180,a=t*(i*Nh/180+Nh)/(2*Nh),o=t*(Nh-Math.log(Math.tan(Nh/4+.5*n)))/(2*Nh);return(r=r||[])[0]=a,r[1]=o,r},unprojectFromTile:function(e,t){return this.unprojectOnTileWithScale(e,this.getScale()*Ph,t)},unprojectOnTileWithScale:function(e,t,r){var i=e[0],n=e[1],a=i/t*(2*Nh)-Nh,o=2*(Math.atan(Math.exp(Nh-n/t*(2*Nh)))-Nh/4);return(r=r||[])[0]=180*a/Nh,r[1]=180*o/Nh,r},dataToPoint:function(e,t){return(t=this.projectOnTileWithScale(e,Ph,t))[0]-=this._origin[0],t[1]-=this._origin[1],t[2]=isNaN(e[2])?0:e[2],isNaN(e[2])||(t[2]=e[2],this.altitudeExtent&&(t[2]-=this.altitudeExtent[0])),t}},Bh.prototype=new Ih,Bh.prototype.constructor=Bh,Bh.prototype.type="mapbox3D";var Fh=zh("mapbox3D",Bh,function(e){e.forEach(function(e){e.setCameraOption(e.model.getMapboxCameraOption())})});I(function(e){e.registerComponentModel(Mh),e.registerComponentView(Ch),e.registerCoordinateSystem("mapbox3D",Fh),e.registerAction({type:"mapbox3DChangeCamera",event:"mapbox3dcamerachanged",update:"mapbox3D:updateCamera"},function(e,t){t.eachComponent({mainType:"mapbox3D",query:e},function(t){t.setMapboxCameraOption(e)})})});var Gh=["zoom","center","pitch","bearing"],Uh=g.extend({type:"maptalks3D",layoutMode:"box",coordinateSystem:null,defaultOption:{zlevel:-10,urlTemplate:"http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",attribution:'© OpenStreetMap contributors, © CARTO',center:[0,0],zoom:0,pitch:0,bearing:0,light:{main:{alpha:20,beta:30}},altitudeScale:1,boxHeight:"auto"},getMaptalksCameraOption:function(){var e=this;return Gh.reduce(function(t,r){return t[r]=e.get(r),t},{})},setMaptalksCameraOption:function(e){null!=e&&Gh.forEach(function(t){null!=e[t]&&(this.option[t]=e[t])},this)},getMaptalks:function(){return this._maptalks},setMaptalks:function(e){this._maptalks=e}});function Hh(e,t,r,i){if(this.id=e,this.zr=t,this.dom=document.createElement("div"),this.dom.style.cssText="position:absolute;left:0;right:0;top:0;bottom:0;",!maptalks)throw new Error("Maptalks library must be included. See https://maptalks.org");this._maptalks=new maptalks.Map(this.dom,{center:r,zoom:i,doubleClickZoom:!1,fog:!1}),this._initEvents()}_(Uh.prototype,fo),_(Uh.prototype,po),Hh.prototype.setUnpainted=function(){},Hh.prototype.resize=function(){this._maptalks.checkSize()},Hh.prototype.getMaptalks=function(){return this._maptalks},Hh.prototype.clear=function(){},Hh.prototype.refresh=function(){this._maptalks.checkSize()};var Vh=["mousedown","mouseup","click","dblclick","mousemove","mousewheel","DOMMouseScroll","touchstart","touchend","touchmove","touchcancel"];Hh.prototype._initEvents=function(){var e=this.dom;this._handlers=this._handlers||{contextmenu:function(e){return e.preventDefault(),!1}},Vh.forEach(function(t){this._handlers[t]=function(r){var i={};for(var n in r)i[n]=r[n];i.bubbles=!1;var a=new r.constructor(r.type,i);"mousewheel"===t||"DOMMouseScroll"===t?e.dispatchEvent(a):e.firstElementChild.dispatchEvent(a)},this.zr.dom.addEventListener(t,this._handlers[t])},this),this.zr.dom.addEventListener("contextmenu",this._handlers.contextmenu)},Hh.prototype.dispose=function(){Vh.forEach(function(e){this.zr.dom.removeEventListener(e,this._handlers[e])},this),this._maptalks.remove()},Ka.Shader.import(Dh);const kh=S.extend({type:"maptalks3D",__ecgl__:!0,init:function(e,t){this._groundMesh=new Ka.Mesh({geometry:new Ka.PlaneGeometry,material:new Ka.Material({shader:new Ka.Shader({vertex:Ka.Shader.source("ecgl.displayShadow.vertex"),fragment:Ka.Shader.source("ecgl.displayShadow.fragment")}),depthMask:!1}),renderOrder:-100,culling:!1,castShadow:!1,$ignorePicking:!0,renderNormal:!0})},_initMaptalksLayer:function(e,t){var r=t.getZr();this._zrLayer=new Hh("maptalks3D",r,e.get("center"),e.get("zoom")),r.painter.insertLayer(-1e3,this._zrLayer),this._lightRoot=new Ka.Node,this._sceneHelper=new Eo(this._lightRoot),this._sceneHelper.initLight(this._lightRoot);var i=this._zrLayer.getMaptalks(),n=this._dispatchInteractAction.bind(this,t,i);["zoomend","zooming","zoomstart","dragrotating","pitch","pitchend","movestart","moving","moveend","resize","touchstart","touchmove","touchend","animating"].forEach(function(e){i.on(e,n)})},render:function(e,t,r){this._zrLayer||this._initMaptalksLayer(e,r);var i=this._zrLayer.getMaptalks(),n=e.get("urlTemplate"),a=i.getBaseLayer();n!==this._oldUrlTemplate&&(a?a.setOptions({urlTemplate:n,attribution:e.get("attribution")}):(a=new maptalks.TileLayer("maptalks-echarts-gl-baselayer",{urlTemplate:n,subdomains:["a","b","c"],attribution:e.get("attribution")}),i.setBaseLayer(a))),this._oldUrlTemplate=n,i.setCenter(e.get("center")),i.setZoom(e.get("zoom"),{animation:!1}),i.setPitch(e.get("pitch")),i.setBearing(e.get("bearing")),e.setMaptalks(i);var o=e.coordinateSystem;o.viewGL.scene.add(this._lightRoot),o.viewGL.add(this._groundMesh),this._updateGroundMesh(),this._sceneHelper.setScene(o.viewGL.scene),this._sceneHelper.updateLight(e),o.viewGL.setPostEffect(e.getModel("postEffect"),r),o.viewGL.setTemporalSuperSampling(e.getModel("temporalSuperSampling")),this._maptalks3DModel=e},afterRender:function(e,t,r,i){var n=i.renderer;this._sceneHelper.updateAmbientCubemap(n,e,r),this._sceneHelper.updateSkybox(n,e,r),e.coordinateSystem.viewGL.scene.traverse(function(e){e.material&&(e.material.define("fragment","NORMAL_UP_AXIS",2),e.material.define("fragment","NORMAL_FRONT_AXIS",1))})},updateCamera:function(e,t,r,i){e.coordinateSystem.setCameraOption(i),this._updateGroundMesh(),r.getZr().refresh()},_dispatchInteractAction:function(e,t,r){var i;e.dispatchAction({type:"maptalks3DChangeCamera",pitch:t.getPitch(),zoom:(i=t.getResolution(),19-Math.log(i/Wh)/Math.LN2+1),center:t.getCenter().toArray(),bearing:t.getBearing(),maptalks3DId:this._maptalks3DModel&&this._maptalks3DModel.id})},_updateGroundMesh:function(){if(this._maptalks3DModel){var e=this._maptalks3DModel.coordinateSystem,t=e.dataToPoint(e.center);this._groundMesh.position.set(t[0],t[1],-.001);var r=new Ka.Plane(new Ka.Vector3(0,0,1),0),i=e.viewGL.camera.castRay(new Ka.Vector2(-1,-1)),n=e.viewGL.camera.castRay(new Ka.Vector2(1,1)),a=i.intersectPlane(r),o=n.intersectPlane(r),s=a.dist(o)/e.viewGL.rootNode.scale.x;this._groundMesh.scale.set(s,s,1)}},dispose:function(e,t){this._zrLayer&&this._zrLayer.dispose(),t.getZr().painter.delLayer(-1e3)}}),Wh=12756274*Math.PI/(256*Math.pow(2,20));function jh(){Ih.apply(this,arguments),this.maxPitch=85,this.zoomOffset=1}jh.prototype=new Ih,jh.prototype.constructor=jh,jh.prototype.type="maptalks3D";var Xh=zh("maptalks3D",jh,function(e){e.forEach(function(e){e.setCameraOption(e.model.getMaptalksCameraOption())})});I(function(e){e.registerComponentModel(Uh),e.registerComponentView(kh),e.registerCoordinateSystem("maptalks3D",Xh),e.registerAction({type:"maptalks3DChangeCamera",event:"maptalks3dcamerachanged",update:"maptalks3D:updateCamera"},function(e,t){t.eachComponent({mainType:"maptalks3D",query:e},function(t){t.setMaptalksCameraOption(e)})})});var qh=bo.vec3,Zh=X.isDimensionStacked;function Yh(e,t,r){for(var i=e.getDataExtent(t),n=e.getDataExtent(r),a=i[1]-i[0]||i[0],o=n[1]-n[0]||n[0],s=new Uint8Array(2500),l=0;l0&&d>0||c<0&&d<0)),m=["x","y","z"].map(function(t){return e.coordDimToDataDim(t)[0]}),g=Zh(r,m[2]),_=g?r.getCalculationInfo("stackResultDimension"):m[2];r.each(m,function(e,i,a,o){var s=r.get(_,o),l=g?s-a:p?0:f[0],h=t.dataToPoint([e,i,l]),u=t.dataToPoint([e,i,s]),c=qh.dist(h,u),d=[0,u[1]"+r.join("
")}(a):Z(Y(a)),s=n.getName(t),l=Hl(n,t);K(l)&&l.colorStops&&(l=(l.colorStops[0]||{}).color);var h=Q(l=l||"transparent"),c=e.name;return"\0-"===c&&(c=""),(c=c?Z(c)+"
":"")+h+(s?Z(s)+": "+o:o)}function ru(e,t,r){r=r||e.getSource();var i=t||$(e.get("coordinateSystem"))||["x","y","z"],n=z(r,{dimensionsDefine:r.dimensionsDefine||e.get("dimensions"),encodeDefine:r.encodeDefine||e.get("encode"),coordDimensions:i.map(function(t){var r=e.getReferringComponents(t+"Axis3D").models[0];return{type:r&&"category"===r.get("type")?"ordinal":"float",name:t}})});"cartesian3D"===e.get("coordinateSystem")&&n.forEach(function(t){if(i.indexOf(t.coordDim)>=0){var r=e.getReferringComponents(t.coordDim+"Axis3D").models[0];r&&"category"===r.get("type")&&(t.ordinalMeta=r.getOrdinalMeta())}});var a=X.enableDataStack(e,n,{byIndex:!0,stackedCoordDimension:"z"}),o=new F(n,e);return o.setCalculationInfo(a),o.initData(r),o}eu.getFormattedLabel=function(e,t,r,i,n){r=r||"normal";var a=e.getData(i).getItemModel(t),o=e.getDataParams(t,i);null!=n&&o.value instanceof Array&&(o.value=o.value[n]);var s,l=a.get("normal"===r?["label","formatter"]:["emphasis","label","formatter"]);return null==l&&(l=a.get(["label","formatter"])),"function"==typeof l?(o.status=r,s=l(o)):"string"==typeof l&&(s=q(l,o)),s},eu.normalizeToArray=function(e){return e instanceof Array?e:null==e?[]:[e]};var iu=ee.extend({type:"series.bar3D",dependencies:["globe"],visualStyleAccessPathvisu:"itemStyle",getInitialData:function(e,t){return ru(this)},getFormattedLabel:function(e,t,r,i){var n=eu.getFormattedLabel(this,e,t,r,i);return null==n&&(n=this.getData().get("z",e)),n},formatTooltip:function(e){return tu(this,e)},defaultOption:{coordinateSystem:"cartesian3D",globeIndex:0,grid3DIndex:0,zlevel:-10,bevelSize:0,bevelSmoothness:2,onGridPlane:"xy",shading:"color",minHeight:0,itemStyle:{opacity:1},label:{show:!1,distance:2,textStyle:{fontSize:14,color:"#000",backgroundColor:"rgba(255,255,255,0.7)",padding:3,borderRadius:3}},emphasis:{label:{show:!0}},animationDurationUpdate:500}});_(iu.prototype,ol);var nu,au,ou,su,lu,hu,uu,cu,du=bo.vec3,fu=bo.mat3,pu=tn.extend(function(){return{attributes:{position:new tn.Attribute("position","float",3,"POSITION"),normal:new tn.Attribute("normal","float",3,"NORMAL"),color:new tn.Attribute("color","float",4,"COLOR"),prevPosition:new tn.Attribute("prevPosition","float",3),prevNormal:new tn.Attribute("prevNormal","float",3)},dynamic:!0,enableNormal:!1,bevelSize:1,bevelSegments:0,_dataIndices:null,_vertexOffset:0,_triangleOffset:0}},{resetOffset:function(){this._vertexOffset=0,this._triangleOffset=0},setBarCount:function(e){var t=this.enableNormal,r=this.getBarVertexCount()*e,i=this.getBarTriangleCount()*e;this.vertexCount!==r&&(this.attributes.position.init(r),t?this.attributes.normal.init(r):this.attributes.normal.value=null,this.attributes.color.init(r)),this.triangleCount!==i&&(this.indices=r>65535?new Uint32Array(3*i):new Uint16Array(3*i),this._dataIndices=new Uint32Array(r))},getBarVertexCount:function(){var e=this.bevelSize>0?this.bevelSegments:0;return e>0?this._getBevelBarVertexCount(e):this.enableNormal?24:8},getBarTriangleCount:function(){var e=this.bevelSize>0?this.bevelSegments:0;return e>0?this._getBevelBarTriangleCount(e):12},_getBevelBarVertexCount:function(e){return 4*(e+1)*(e+1)*2},_getBevelBarTriangleCount:function(e){return(4*e+3+1)*(2*e+1)*2+4},setColor:function(e,t){for(var r=this.getBarVertexCount(),i=r*(e+1),n=r*e;n0&&this.bevelSegments>0)this._addBevelBar(e,c,m,g,this.bevelSize,this.bevelSegments,_);else{du.copy(n,c),du.normalize(n,n),du.cross(a,m,n),du.normalize(a,a),du.cross(i,n,a),du.normalize(a,a),du.negate(o,i),du.negate(s,n),du.negate(l,a),t(h[0],e,i,g[0]/2),t(h[0],h[0],a,g[2]/2),t(h[1],e,i,g[0]/2),t(h[1],h[1],l,g[2]/2),t(h[2],e,o,g[0]/2),t(h[2],h[2],l,g[2]/2),t(h[3],e,o,g[0]/2),t(h[3],h[3],a,g[2]/2),t(r,e,n,g[1]),t(h[4],r,i,g[0]/2),t(h[4],h[4],a,g[2]/2),t(h[5],r,i,g[0]/2),t(h[5],h[5],l,g[2]/2),t(h[6],r,o,g[0]/2),t(h[6],h[6],l,g[2]/2),t(h[7],r,o,g[0]/2),t(h[7],h[7],a,g[2]/2);var x=this.attributes;if(this.enableNormal){u[0]=i,u[1]=o,u[2]=n,u[3]=s,u[4]=a,u[5]=l;for(var b=this._vertexOffset,T=0;T0&&(f++,u[3]<.99&&(p=!0))}}),o.geometry.setBarCount(f);var m=r.getLayout("orient"),g=this._barIndexOfData=new Int32Array(r.count());f=0,r.each(function(e){if(r.hasValue(e)){var t=r.getItemLayout(e),i=t[0],n=t[1],o=t[2],s=4*e;u[0]=c[s++],u[1]=c[s++],u[2]=c[s++],u[3]=c[s++],u[3]>0&&(a._barMesh.geometry.addBar(i,n,m,o,u,e),g[e]=f++)}else g[e]=-1}),o.geometry.dirty(),o.geometry.updateBoundingBox();var _=o.material;_.transparent=p,_.depthMask=!p,o.geometry.sortTriangles=p,this._initHandler(e,t)},_initHandler:function(e,t){var r=e.getData(),i=this._barMesh,n="cartesian3D"===e.coordinateSystem.type;i.seriesIndex=e.seriesIndex;var a=-1;i.off("mousemove"),i.off("mouseout"),i.on("mousemove",function(e){var o=i.geometry.getDataIndexOfVertex(e.triangle[0]);o!==a&&(this._downplay(a),this._highlight(o),this._labelsBuilder.updateLabels([o]),n&&t.dispatchAction({type:"grid3DShowAxisPointer",value:[r.get("x",o),r.get("y",o),r.get("z",o,!0)]})),a=o,i.dataIndex=o},this),i.on("mouseout",function(e){this._downplay(a),this._labelsBuilder.updateLabels(),a=-1,i.dataIndex=-1,n&&t.dispatchAction({type:"grid3DHideAxisPointer"})},this)},_highlight:function(e){var t=this._data;if(t){var r=this._barIndexOfData[e];if(!(r<0)){var i=t.getItemModel(e).getModel("emphasis.itemStyle"),n=i.get("color"),a=i.get("opacity");if(null==n){var o=Hl(t,e);n=G(o,-.4)}null==a&&(a=Vl(t,e));var s=Ka.parseColor(n);s[3]*=a,this._barMesh.geometry.setColor(r,s),this._api.getZr().refresh()}}},_downplay:function(e){var t=this._data;if(t){var r=this._barIndexOfData[e];if(!(r<0)){var i=Hl(t,e),n=Vl(t,e),a=Ka.parseColor(i);a[3]*=n,this._barMesh.geometry.setColor(r,a),this._api.getZr().refresh()}}},highlight:function(e,t,r,i){this._toggleStatus("highlight",e,t,r,i)},downplay:function(e,t,r,i){this._toggleStatus("downplay",e,t,r,i)},_toggleStatus:function(e,t,r,i,n){var a=t.getData(),o=Pa(a,n),s=this;null!=o?u(eu.normalizeToArray(o),function(t){"highlight"===e?this._highlight(t):this._downplay(t)},this):a.each(function(t){"highlight"===e?s._highlight(t):s._downplay(t)})},remove:function(){this.groupGL.removeAll()},dispose:function(){this._labelsBuilder.dispose(),this.groupGL.removeAll()}});function _u(e){e.registerChartView(gu),e.registerSeriesModel(iu),$h(e),e.registerProcessor(function(e,t){e.eachSeriesByType("bar3d",function(e){var t=e.getData();t.filterSelf(function(e){return t.hasValue(e)})})})}I(_u);var vu=ee.extend({type:"series.line3D",dependencies:["grid3D"],visualStyleAccessPath:"lineStyle",visualDrawType:"stroke",getInitialData:function(e,t){return ru(this)},formatTooltip:function(e){return tu(this,e)},defaultOption:{coordinateSystem:"cartesian3D",zlevel:-10,grid3DIndex:0,lineStyle:{width:2},animationDurationUpdate:500}}),yu=bo.vec3;Ka.Shader.import(Uo);const xu=te.extend({type:"line3D",__ecgl__:!0,init:function(e,t){this.groupGL=new Ka.Node,this._api=t},render:function(e,t,r){var i=this._prevLine3DMesh;this._prevLine3DMesh=this._line3DMesh,this._line3DMesh=i,this._line3DMesh||(this._line3DMesh=new Ka.Mesh({geometry:new So({useNativeLine:!1,sortTriangles:!0}),material:new Ka.Material({shader:Ka.createShader("ecgl.meshLines3D")}),renderOrder:10}),this._line3DMesh.geometry.pick=this._pick.bind(this)),this.groupGL.remove(this._prevLine3DMesh),this.groupGL.add(this._line3DMesh);var n=e.coordinateSystem;if(n&&n.viewGL){n.viewGL.add(this.groupGL);var a=n.viewGL.isLinearSpace()?"define":"undefine";this._line3DMesh.material[a]("fragment","SRGB_DECODE")}this._doRender(e,r),this._data=e.getData(),this._camera=n.viewGL.camera,this.updateCamera(),this._updateAnimation(e)},updateCamera:function(){this._updateNDCPosition()},_doRender:function(e,t){var r=e.getData(),i=this._line3DMesh;i.geometry.resetOffset();var n=r.getLayout("points"),a=[],o=new Float32Array(n.length/3*4),s=0,l=!1;r.each(function(e){var t=Hl(r,e),i=Vl(r,e);null==i&&(i=1),Ka.parseColor(t,a),a[3]*=i,o[s++]=a[0],o[s++]=a[1],o[s++]=a[2],o[s++]=a[3],a[3]<.99&&(l=!0)}),i.geometry.setVertexCount(i.geometry.getPolylineVertexCount(n)),i.geometry.setTriangleCount(i.geometry.getPolylineTriangleCount(n)),i.geometry.addPolyline(n,o,La(e.get("lineStyle.width"),1)),i.geometry.dirty(),i.geometry.updateBoundingBox();var h=i.material;h.transparent=l,h.depthMask=!l;var u=e.getModel("debug.wireframe");u.get("show")?(i.geometry.createAttribute("barycentric","float",3),i.geometry.generateBarycentric(),i.material.set("both","WIREFRAME_TRIANGLE"),i.material.set("wireframeLineColor",Ka.parseColor(u.get("lineStyle.color")||"rgba(0,0,0,0.5)")),i.material.set("wireframeLineWidth",La(u.get("lineStyle.width"),1))):i.material.set("both","WIREFRAME_TRIANGLE"),this._points=n,this._initHandler(e,t)},_updateAnimation:function(e){Ka.updateVertexAnimation([["prevPosition","position"],["prevPositionPrev","positionPrev"],["prevPositionNext","positionNext"]],this._prevLine3DMesh,this._line3DMesh,e)},_initHandler:function(e,t){var r=e.getData(),i=e.coordinateSystem,n=this._line3DMesh,a=-1;n.seriesIndex=e.seriesIndex,n.off("mousemove"),n.off("mouseout"),n.on("mousemove",function(e){var o=i.pointToData(e.point.array),s=r.indicesOfNearest("x",o[0])[0];s!==a&&(t.dispatchAction({type:"grid3DShowAxisPointer",value:[r.get("x",s),r.get("y",s),r.get("z",s)]}),n.dataIndex=s),a=s},this),n.on("mouseout",function(e){a=-1,n.dataIndex=-1,t.dispatchAction({type:"grid3DHideAxisPointer"})},this)},_updateNDCPosition:function(){var e=new ui,t=this._camera;ui.multiply(e,t.projectionMatrix,t.viewMatrix);var r=this._positionNDC,i=this._points,n=i.length/3;r&&r.length/2===n||(r=this._positionNDC=new Float32Array(2*n));for(var a=[],o=0;o=0){var g=3*l,_=new Gr(this._points[g],this._points[g+1],this._points[g+2]);a.push({dataIndex:l,point:_,pointWorld:_.clone(),target:this._line3DMesh,distance:this._camera.getWorldPosition().dist(_)})}},remove:function(){this.groupGL.removeAll()},dispose:function(){this.groupGL.removeAll()}});I(function(e){e.registerChartView(xu),e.registerSeriesModel(vu),e.registerLayout(function(e,t){e.eachSeriesByType("line3D",function(e){var t=e.getData(),r=e.coordinateSystem;if(r){if("cartesian3D"!==r.type)return;var i=new Float32Array(3*t.count()),n=[],a=[],o=r.dimensions.map(function(t){return e.coordDimToDataDim(t)[0]});r&&t.each(o,function(e,t,o,s){n[0]=e,n[1]=t,n[2]=o,r.dataToPoint(n,a),i[3*s]=a[0],i[3*s+1]=a[1],i[3*s+2]=a[2]}),t.setLayout("points",i)}})})});const bu=ee.extend({type:"series.scatter3D",dependencies:["globe","grid3D","geo3D"],visualStyleAccessPath:"itemStyle",hasSymbolVisual:!0,getInitialData:function(e,t){return ru(this)},getFormattedLabel:function(e,t,r,i){var n=eu.getFormattedLabel(this,e,t,r,i);if(null==n){var a=this.getData(),o=a.dimensions[a.dimensions.length-1];n=a.get(o,e)}return n},formatTooltip:function(e){return tu(this,e)},defaultOption:{coordinateSystem:"cartesian3D",zlevel:-10,progressive:1e5,progressiveThreshold:1e5,grid3DIndex:0,globeIndex:0,symbol:"circle",symbolSize:10,blendMode:"source-over",label:{show:!1,position:"right",distance:5,textStyle:{fontSize:14,color:"#000",backgroundColor:"rgba(255,255,255,0.7)",padding:3,borderRadius:3}},itemStyle:{opacity:.8},emphasis:{label:{show:!0}},animationDurationUpdate:500}});function Tu(e,t,r){(t=t||document.createElement("canvas")).width=e,t.height=e;var i=t.getContext("2d");return r&&r(i),t}var wu={getMarginByStyle:function(e){var t=e.minMargin||0,r=0;e.stroke&&"none"!==e.stroke&&(r=null==e.lineWidth?1:e.lineWidth);var i=e.shadowBlur||0,n=e.shadowOffsetX||0,a=e.shadowOffsetY||0,o={};return o.left=Math.max(r/2,-n+i,t),o.right=Math.max(r/2,n+i,t),o.top=Math.max(r/2,-a+i,t),o.bottom=Math.max(r/2,a+i,t),o},createSymbolSprite:function(e,t,r,n){var a=function(e,t,r,n){i(t)||(t=[t,t]);var a=wu.getMarginByStyle(r,n),o=t[0]+a.left+a.right,s=t[1]+a.top+a.bottom,l=ie(e,0,0,t[0],t[1]),h=Math.max(o,s);l.x=a.left,l.y=a.top,o>s?l.y+=(h-s)/2:l.x+=(h-o)/2;var u=l.getBoundingRect();return l.x-=u.x,l.y-=u.y,l.setStyle(r),l.update(),l.__size=h,l}(e,t,r),o=wu.getMarginByStyle(r);return{image:Tu(a.__size,n,function(e){x(e,a)}),margin:o}},createSDFFromCanvas:function(e,t,r,i){return Tu(t,i,function(t){var i=e.getContext("2d").getImageData(0,0,e.width,e.height);t.putImageData(function(e,t,r){var i=t.width,n=t.height,a=e.canvas.width,o=e.canvas.height,s=i/a,l=n/o;function h(e){return e<128?1:-1}function u(e,a){var o=1/0;e=Math.floor(e*s);for(var u=(a=Math.floor(a*l))*i+e,c=h(t.data[4*u]),d=Math.max(a-r,0);d=2e4},doSortVertices:function(e,t){var r=this.indices,i=Su.create();if(!r){r=this.indices=this.vertexCount>65535?new Uint32Array(this.vertexCount):new Uint16Array(this.vertexCount);for(var n=0;n.05);else for(n=0;n<3;n++)this._progressiveQuickSort(3*t+n);this.dirtyIndices()},_simpleSort:function(e){var t=this._zList,r=this.indices;function i(e,r){return t[r]-t[e]}e?Array.prototype.sort.call(r,i):Il.sort(r,i,0,r.length-1)},_progressiveQuickSort:function(e){var t=this._zList,r=this.indices;this._quickSort=this._quickSort||new Il,this._quickSort.step(r,function(e,r){return t[r]-t[e]},e)}};var Au=bo.vec4;Ka.Shader.import("@export ecgl.sdfSprite.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform float elapsedTime : 0;\n\nattribute vec3 position : POSITION;\n\n#ifdef VERTEX_SIZE\nattribute float size;\n#else\nuniform float u_Size;\n#endif\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_FillColor: COLOR;\nvarying vec4 v_Color;\n#endif\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nattribute float prevSize;\nuniform float percent : 1.0;\n#endif\n\n\n#ifdef POSITIONTEXTURE_ENABLED\nuniform sampler2D positionTexture;\n#endif\n\nvarying float v_Size;\n\nvoid main()\n{\n\n#ifdef POSITIONTEXTURE_ENABLED\n gl_Position = worldViewProjection * vec4(texture2D(positionTexture, position.xy).xy, -10.0, 1.0);\n#else\n\n #ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n #else\n vec3 pos = position;\n #endif\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n#endif\n\n#ifdef VERTEX_SIZE\n#ifdef VERTEX_ANIMATION\n v_Size = mix(prevSize, size, percent);\n#else\n v_Size = size;\n#endif\n#else\n v_Size = u_Size;\n#endif\n\n#ifdef VERTEX_COLOR\n v_Color = a_FillColor;\n #endif\n\n gl_PointSize = v_Size;\n}\n\n@end\n\n@export ecgl.sdfSprite.fragment\n\nuniform vec4 color: [1, 1, 1, 1];\nuniform vec4 strokeColor: [1, 1, 1, 1];\nuniform float smoothing: 0.07;\n\nuniform float lineWidth: 0.0;\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\nvarying float v_Size;\n\nuniform sampler2D sprite;\n\n@import clay.util.srgb\n\nvoid main()\n{\n gl_FragColor = color;\n\n vec4 _strokeColor = strokeColor;\n\n#ifdef VERTEX_COLOR\n gl_FragColor *= v_Color;\n #endif\n\n#ifdef SPRITE_ENABLED\n float d = texture2D(sprite, gl_PointCoord).r;\n gl_FragColor.a *= smoothstep(0.5 - smoothing, 0.5 + smoothing, d);\n\n if (lineWidth > 0.0) {\n float sLineWidth = lineWidth / 2.0;\n\n float outlineMaxValue0 = 0.5 + sLineWidth;\n float outlineMaxValue1 = 0.5 + sLineWidth + smoothing;\n float outlineMinValue0 = 0.5 - sLineWidth - smoothing;\n float outlineMinValue1 = 0.5 - sLineWidth;\n\n if (d <= outlineMaxValue1 && d >= outlineMinValue0) {\n float a = _strokeColor.a;\n if (d <= outlineMinValue1) {\n a = a * smoothstep(outlineMinValue0, outlineMinValue1, d);\n }\n else {\n a = a * smoothstep(outlineMaxValue1, outlineMaxValue0, d);\n }\n gl_FragColor.rgb = mix(gl_FragColor.rgb * gl_FragColor.a, _strokeColor.rgb, a);\n gl_FragColor.a = gl_FragColor.a * (1.0 - a) + a;\n }\n }\n#endif\n\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(gl_FragColor);\n#endif\n}\n@end");var Eu=Ka.Mesh.extend(function(){var e=new Ka.Geometry({dynamic:!0,attributes:{color:new Ka.Geometry.Attribute("color","float",4,"COLOR"),position:new Ka.Geometry.Attribute("position","float",3,"POSITION"),size:new Ka.Geometry.Attribute("size","float",1),prevPosition:new Ka.Geometry.Attribute("prevPosition","float",3),prevSize:new Ka.Geometry.Attribute("prevSize","float",1)}});Object.assign(e,Mu);var t=new Ka.Material({shader:Ka.createShader("ecgl.sdfSprite"),transparent:!0,depthMask:!1});t.enableTexture("sprite"),t.define("both","VERTEX_COLOR"),t.define("both","VERTEX_SIZE");var r=new Ka.Texture2D({image:document.createElement("canvas"),flipY:!1});return t.set("sprite",r),e.pick=this._pick.bind(this),{geometry:e,material:t,mode:Ka.Mesh.POINTS,sizeScale:1}},{_pick:function(e,t,r,i,n,a){var o=this._positionNDC;if(o)for(var s=r.viewport,l=2/s.width,h=2/s.height,u=this.geometry.vertexCount-1;u>=0;u--){var c,d=o[2*(c=this.geometry.indices?this.geometry.indices[u]:u)],f=o[2*c+1],p=this.geometry.attributes.size.get(c)/this.sizeScale/2;if(e>d-p*l&&ef-p*h&&t2?(p=this._updateSymbolSprite(e,d,u,c),s.enableTexture("sprite")):s.disableTexture("sprite"),h.position.init(n-i);var m=[];if(f){s.undefine("VERTEX_SIZE"),s.undefine("VERTEX_COLOR");var g=function(e){const t=e.getVisual("style");if(t)return t[e.getVisual("drawType")]}(o),_=function(e){return e.getVisual("style").opacity}(o);Ka.parseColor(g,m),m[3]*=_,s.set({color:m,u_Size:u.maxSize*this._sizeScale})}else s.set({color:[1,1,1,1]}),s.define("VERTEX_SIZE"),s.define("VERTEX_COLOR"),h.size.init(n-i),h.color.init(n-i),this._originalOpacity=new Float32Array(n-i);for(var v=o.getLayout("points"),y=h.position.value,x=0;x1?(o[0]=r.maxSize,o[1]=r.maxSize/r.aspect):(o[1]=r.maxSize,o[0]=r.maxSize*r.aspect),o[0]=o[0]||1,o[1]=o[1]||1,this._symbolType===r.type&&(n=this._symbolSize,a=o,n&&a&&n[0]===a[0]&&n[1]===a[1])&&this._lineWidth===t.lineWidth||(wu.createSymbolSprite(r.type,o,{fill:"#fff",lineWidth:t.lineWidth,stroke:"transparent",shadowColor:"transparent",minMargin:Math.min(o[0]/2,10)},this._spriteImageCanvas),wu.createSDFFromCanvas(this._spriteImageCanvas,Math.min(this._spriteImageCanvas.width,32),20,this._mesh.material.get("sprite").image),this._symbolType=r.type,this._symbolSize=o,this._lineWidth=t.lineWidth),this._spriteImageCanvas.width/r.maxSize*i},_updateMaterial:function(e,t){var r="lighter"===e.get("blendMode")?Ka.additiveBlend:null,i=this._mesh.material;i.blend=r,i.set("lineWidth",t.lineWidth/20);var n=Ka.parseColor(t.stroke);i.set("strokeColor",n),i.transparent=!0,i.depthMask=!1,i.depthTest=!this.is2D,i.sortVertices=!this.is2D},_updateLabelBuilder:function(e,t,r){var i=e.getData(),n=this._mesh.geometry,a=n.attributes.position.value,o=(t=this._startDataIndex,this._mesh.sizeScale);this._labelsBuilder.updateData(i,t,r),this._labelsBuilder.getLabelPosition=function(e,r,i){var n=3*(e-t);return[a[n],a[n+1],a[n+2]]},this._labelsBuilder.getLabelDistance=function(e,r,i){return n.attributes.size.get(e-t)/o/2+i},this._labelsBuilder.updateLabels()},_updateAnimation:function(e){Ka.updateVertexAnimation([["prevPosition","position"],["prevSize","size"]],this._prevMesh,this._mesh,e)},_updateHandler:function(e,t,r){var i,n=e.getData(),a=this._mesh,o=this,s=-1,l=e.coordinateSystem&&"cartesian3D"===e.coordinateSystem.type;l&&(i=e.coordinateSystem.model),a.seriesIndex=e.seriesIndex,a.off("mousemove"),a.off("mouseout"),a.on("mousemove",function(t){var h=t.vertexIndex+o._startDataIndex;h!==s&&(this.highlightOnMouseover&&(this.downplay(n,s),this.highlight(n,h),this._labelsBuilder.updateLabels([h])),l&&r.dispatchAction({type:"grid3DShowAxisPointer",value:[n.get(e.coordDimToDataDim("x")[0],h),n.get(e.coordDimToDataDim("y")[0],h),n.get(e.coordDimToDataDim("z")[0],h)],grid3DIndex:i.componentIndex})),a.dataIndex=h,s=h},this),a.on("mouseout",function(e){var t=e.vertexIndex+o._startDataIndex;this.highlightOnMouseover&&(this.downplay(n,t),this._labelsBuilder.updateLabels()),s=-1,a.dataIndex=-1,l&&r.dispatchAction({type:"grid3DHideAxisPointer",grid3DIndex:i.componentIndex})},this)},updateLayout:function(e,t,r){var i=e.getData();if(this._mesh){var n=this._mesh.geometry.attributes.position.value,a=i.getLayout("points");if(this.is2D)for(var o=0;othis._endDataIndex||tthis._endDataIndex||t0?1:-1}Ka.Shader.import("@export ecgl.trail2.vertex\nattribute vec3 position: POSITION;\nattribute vec3 positionPrev;\nattribute vec3 positionNext;\nattribute float offset;\nattribute float dist;\nattribute float distAll;\nattribute float start;\n\nattribute vec4 a_Color : COLOR;\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform vec4 viewport : VIEWPORT;\nuniform float near : NEAR;\n\nuniform float speed : 0;\nuniform float trailLength: 0.3;\nuniform float time;\nuniform float period: 1000;\n\nuniform float spotSize: 1;\n\nvarying vec4 v_Color;\nvarying float v_Percent;\nvarying float v_SpotPercent;\n\n@import ecgl.common.wireframe.vertexHeader\n\n@import ecgl.lines3D.clipNear\n\nvoid main()\n{\n @import ecgl.lines3D.expandLine\n\n gl_Position = currProj;\n\n v_Color = a_Color;\n\n @import ecgl.common.wireframe.vertexMain\n\n#ifdef CONSTANT_SPEED\n float t = mod((speed * time + start) / distAll, 1. + trailLength) - trailLength;\n#else\n float t = mod((time + start) / period, 1. + trailLength) - trailLength;\n#endif\n\n float trailLen = distAll * trailLength;\n\n v_Percent = (dist - t * distAll) / trailLen;\n\n v_SpotPercent = spotSize / distAll;\n\n }\n@end\n\n\n@export ecgl.trail2.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nuniform float spotIntensity: 5;\n\nvarying vec4 v_Color;\nvarying float v_Percent;\nvarying float v_SpotPercent;\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.util.srgb\n\nvoid main()\n{\n if (v_Percent > 1.0 || v_Percent < 0.0) {\n discard;\n }\n\n float fade = v_Percent;\n\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(color * v_Color);\n#else\n gl_FragColor = color * v_Color;\n#endif\n\n @import ecgl.common.wireframe.fragmentMain\n\n if (v_Percent > (1.0 - v_SpotPercent)) {\n gl_FragColor.rgb *= spotIntensity;\n }\n\n gl_FragColor.a *= fade;\n}\n\n@end");const Qu=Ka.Mesh.extend(function(){var e=new Ka.Material({shader:new Ka.Shader(Ka.Shader.source("ecgl.trail2.vertex"),Ka.Shader.source("ecgl.trail2.fragment")),transparent:!0,depthMask:!1}),t=new So({dynamic:!0});return t.createAttribute("dist","float",1),t.createAttribute("distAll","float",1),t.createAttribute("start","float",1),{geometry:t,material:e,culling:!1,$ignorePicking:!0}},{updateData:function(e,t,r){var i=e.hostModel,n=this.geometry,a=i.getModel("effect"),o=a.get("trailWidth")*t.getDevicePixelRatio(),s=a.get("trailLength"),l=i.get("effect.constantSpeed"),h=1e3*i.get("effect.period"),u=null!=l;u?this.material.set("speed",l/1e3):this.material.set("period",h),this.material[u?"define":"undefine"]("vertex","CONSTANT_SPEED");var c=i.get("polyline");n.trailLength=s,this.material.set("trailLength",s),n.resetOffset(),["position","positionPrev","positionNext"].forEach(function(e){n.attributes[e].value=r.attributes[e].value}),["dist","distAll","start","offset","color"].forEach(function(e){n.attributes[e].init(n.vertexCount)}),n.indices=r.indices;var d=[],f=a.get("trailColor"),p=a.get("trailOpacity"),m=null!=f,g=null!=p;this.updateWorldTransform();var _=this.worldTransform.x.len(),v=this.worldTransform.y.len(),y=this.worldTransform.z.len(),x=0,b=0;e.each(function(t){var i=e.getItemLayout(t),a=g?p:Vl(e,t),s=Hl(e,t);null==a&&(a=1),(d=Ka.parseColor(m?f:s,d))[3]*=a;for(var l=c?r.getPolylineVertexCount(i):r.getCubicCurveVertexCount(i[0],i[1],i[2],i[3]),T=0,w=[],S=[],M=x;Mx&&(T+=Yu.dist(w,S)),n.attributes.dist.set(M,T),Yu.copy(S,w);b=Math.max(b,T);var A=Math.random()*(u?T:h);for(M=x;M0;this._updateSurfaceMesh(this._surfaceMesh,e,u,f);var p=this._surfaceMesh.material;f?(p.define("WIREFRAME_QUAD"),p.set("wireframeLineWidth",d),p.set("wireframeLineColor",Ka.parseColor(c.get("lineStyle.color")))):p.undefine("WIREFRAME_QUAD"),this._initHandler(e,r),this._updateAnimation(e)},_updateAnimation:function(e){Ka.updateVertexAnimation([["prevPosition","position"],["prevNormal","normal"]],this._prevSurfaceMesh,this._surfaceMesh,e)},_createSurfaceMesh:function(){var e=new Ka.Mesh({geometry:new Ka.Geometry({dynamic:!0,sortTriangles:!0}),shadowDepthMaterial:new Ka.Material({shader:new Ka.Shader(Ka.Shader.source("ecgl.sm.depth.vertex"),Ka.Shader.source("ecgl.sm.depth.fragment"))}),culling:!1,renderOrder:10,renderNormal:!0});return e.geometry.createAttribute("barycentric","float",4),e.geometry.createAttribute("prevPosition","float",3),e.geometry.createAttribute("prevNormal","float",3),Object.assign(e.geometry,Ul),e},_initHandler:function(e,t){var r=e.getData(),i=this._surfaceMesh,n=e.coordinateSystem;i.seriesIndex=e.seriesIndex;var a=-1;i.off("mousemove"),i.off("mouseout"),i.on("mousemove",function(e){var o=function(e,t){for(var r=1/0,n=-1,a=[],o=0;o=0){var s=[];i.geometry.attributes.position.get(o,s);for(var l=n.pointToData(s),h=1/0,u=-1,c=[],d=0;d65535?Uint32Array:Uint16Array)((p-1)*(m-1)*6),b=function(e,t,r){r[1]=e*m+t,r[0]=e*m+t+1,r[3]=(e+1)*m+t+1,r[2]=(e+1)*m+t},T=!1;if(l){var w=[],S=[],M=0;g?u.init(n.vertexCount):u.value=null;for(var A=[[],[],[]],E=[],D=[],C=nc.create(),L=function(e,t,r){var i=3*t;return r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],r},P=new Float32Array(o.length),O=new Float32Array(o.length/3*4),N=0;N0;){if(Math.floor(s/u)===s/u)return[u,s/u];u--}return[u=Math.floor(Math.sqrt(s)),u]},dispose:function(){this.groupGL.removeAll()},remove:function(){this.groupGL.removeAll()}});function sc(e,t){for(var r=[],i=0;i "+f)),u++)}var p=z(e,{coordDimensions:["value"]});(s=new F(p,r)).initData(e);var m=new F(["value"],r);return m.initData(h,l),n&&n(s,m),ue({mainData:s,struct:a,structAttr:"graph",datas:{node:s,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a}(i,r,this,!0,function(e,r){e.wrapMethod("getItemModel",function(e){const t=n._categoriesModels[e.getShallow("category")];return t&&(t.parentModel=e.parentModel,e.parentModel=t),e});const i=t.getModel([]).getModel;function a(e,t){const r=i.call(this,e,t);return r.resolveParentPath=o,r}function o(e){if(e&&("label"===e[0]||"label"===e[1])){const t=e.slice();return"label"===e[0]?t[0]="edgeLabel":"label"===e[1]&&(t[1]="edgeLabel"),t}return e}r.wrapMethod("getItemModel",function(e){return e.resolveParentPath=o,e.getModel=a,e})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(e,t,r){if("edge"===r){var i=this.getData(),n=this.getDataParams(e,r),a=i.graph.getEdgeByIndex(e),o=i.getName(a.node1.dataIndex),s=i.getName(a.node2.dataIndex),l=[];return null!=o&&l.push(o),null!=s&&l.push(s),l=Z(l.join(" > ")),n.value&&(l+=" : "+Z(n.value)),l}return fc.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var e=(this.option.categories||[]).map(function(e){return null!=e.value?e:Object.assign({value:0},e)}),t=new F(["value"],this);t.initData(e),this._categoriesData=t,this._categoriesModels=t.mapArray(function(e){return t.getItemModel(e,!0)})},setView:function(e){null!=e.zoom&&(this.option.zoom=e.zoom),null!=e.offset&&(this.option.offset=e.offset)},setNodePosition:function(e){for(var t=0;t65535?this.indices instanceof Uint16Array&&(this.indices=new Uint32Array(this.indices)):this.indices instanceof Uint32Array&&(this.indices=new Uint16Array(this.indices)))},setTriangleCount:function(e){this.triangleCount!==e&&(this.indices=0===e?null:this.vertexCount>65535?new Uint32Array(3*e):new Uint16Array(3*e))},_getCubicCurveApproxStep:function(e,t,r,i){return 1/(pc.dist(e,t)+pc.dist(r,t)+pc.dist(i,r)+1)*this.segmentScale},getCubicCurveVertexCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?2*a:2*a+2},getCubicCurveTriangleCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?0:2*a},getLineVertexCount:function(){return this.getPolylineVertexCount(mc)},getLineTriangleCount:function(){return this.getPolylineTriangleCount(mc)},getPolylineVertexCount:function(e){var t;return t="number"==typeof e?e:"number"!=typeof e[0]?e.length:e.length/2,this.useNativeLine?2*(t-1):2*(t-1)+2},getPolylineTriangleCount:function(e){var t;return t="number"==typeof e?e:"number"!=typeof e[0]?e.length:e.length/2,this.useNativeLine?0:2*(t-1)},addCubicCurve:function(e,t,r,i,n,a){null==a&&(a=1);var o=e[0],s=e[1],l=t[0],h=t[1],u=r[0],c=r[1],d=i[0],f=i[1],p=this._getCubicCurveApproxStep(e,t,r,i),m=p*p,g=m*p,_=3*p,v=3*m,y=6*m,x=6*g,b=o-2*l+u,T=s-2*h+c,w=3*(l-u)-o+d,S=3*(h-c)-s+f,M=o,A=s,E=(l-o)*_+b*v+w*g,D=(h-s)*_+T*v+S*g,C=b*y+w*x,L=T*y+S*x,P=w*x,O=S*x,N=0,R=0,I=Math.ceil(1/p),B=new Float32Array(3*(I+1)),z=(B=[],0);for(R=0;R1&&(M=E>0?Math.min(M,d):Math.max(M,d),A=D>0?Math.min(A,f):Math.max(A,f));this.addPolyline(B,n,a)},addLine:function(e,t,r,i){this.addPolyline([e,t],r,i)},addPolyline:function(){var e=pc.create(),t=pc.create(),r=pc.create(),i=pc.create(),n=[],a=[],o=[];return function(s,l,h,u,c){if(s.length){var d="number"!=typeof s[0];if(null==c&&(c=d?s.length:s.length/2),!(c<2)){null==u&&(u=0),null==h&&(h=1),this._itemVertexOffsets.push(this._vertexOffset);for(var f,p=d?"number"!=typeof l[0]:l.length/4===c,m=this.attributes.position,g=this.attributes.color,_=this.attributes.offset,v=this.attributes.normal,y=this.indices,x=this._vertexOffset,b=0;b1&&(m.copy(x,x-1),g.copy(x,x-1),x++);else{var S;if(b0){pc.sub(e,n,o),pc.sub(t,a,n),pc.normalize(e,e),pc.normalize(t,t),pc.add(i,e,t),pc.normalize(i,i);var M=h/2*Math.min(1/pc.dot(e,i),2);r[0]=-i[1],r[1]=i[0],S=M}else pc.sub(e,a,n),pc.normalize(e,e),r[0]=-e[1],r[1]=e[0],S=h/2;else pc.sub(e,n,o),pc.normalize(e,e),r[0]=-e[1],r[1]=e[0],S=h/2;v.set(x,r),v.set(x+1,r),_.set(x,S),_.set(x+1,-S),pc.copy(o,n),m.set(x,n),m.set(x+1,n),g.set(x,f),g.set(x+1,f),x+=2}if(this.useNativeLine)g.set(x,f),m.set(x,n),x++;else if(b>0){var A=3*this._faceOffset;(y=this.indices)[A]=x-4,y[A+1]=x-3,y[A+2]=x-2,y[A+3]=x-3,y[A+4]=x-1,y[A+5]=x-2,this._faceOffset+=2}}this._vertexOffset=x}}}}(),setItemColor:function(e,t){for(var r=this._itemVertexOffsets[e],i=e 0.0) {\n float factor = 0.0;\n if (preventOverlap) {\n float d = sqrt(d2);\n d = d - n0.w - n1.w;\n if (d > 0.0) {\n factor = scaling * n0.z * n1.z / (d * d);\n }\n else if (d < 0.0) {\n factor = scaling * 100.0 * n0.z * n1.z;\n }\n }\n else {\n factor = scaling * n0.z * n1.z / d2;\n }\n force += dir * factor;\n }\n }\n\n vec2 dir = gravityCenter - n0.xy;\n float d = 1.0;\n if (!strongGravityMode) {\n d = length(dir);\n }\n\n force += dir * n0.z * gravity / (d + 1.0);\n\n gl_FragColor = vec4(force, 0.0, 1.0);\n}\n@end\n\n@export ecgl.forceAtlas2.updateEdgeAttraction.vertex\n\nattribute vec2 node1;\nattribute vec2 node2;\nattribute float weight;\n\nuniform sampler2D positionTex;\nuniform float edgeWeightInfluence;\nuniform bool preventOverlap;\nuniform bool linLogMode;\n\nuniform vec2 windowSize: WINDOW_SIZE;\n\nvarying vec2 v_Force;\n\nvoid main() {\n\n vec4 n0 = texture2D(positionTex, node1);\n vec4 n1 = texture2D(positionTex, node2);\n\n vec2 dir = n1.xy - n0.xy;\n float d = length(dir);\n float w;\n if (edgeWeightInfluence == 0.0) {\n w = 1.0;\n }\n else if (edgeWeightInfluence == 1.0) {\n w = weight;\n }\n else {\n w = pow(weight, edgeWeightInfluence);\n }\n vec2 offset = vec2(1.0 / windowSize.x, 1.0 / windowSize.y);\n vec2 scale = vec2((windowSize.x - 1.0) / windowSize.x, (windowSize.y - 1.0) / windowSize.y);\n vec2 pos = node1 * scale * 2.0 - 1.0;\n gl_Position = vec4(pos + offset, 0.0, 1.0);\n gl_PointSize = 1.0;\n\n float factor;\n if (preventOverlap) {\n d = d - n1.w - n0.w;\n }\n if (d <= 0.0) {\n v_Force = vec2(0.0);\n return;\n }\n\n if (linLogMode) {\n factor = w * log(d) / d;\n }\n else {\n factor = w;\n }\n v_Force = dir * factor;\n}\n@end\n\n@export ecgl.forceAtlas2.updateEdgeAttraction.fragment\n\nvarying vec2 v_Force;\n\nvoid main() {\n gl_FragColor = vec4(v_Force, 0.0, 0.0);\n}\n@end\n\n@export ecgl.forceAtlas2.calcWeightedSum.vertex\n\nattribute vec2 node;\n\nvarying vec2 v_NodeUv;\n\nvoid main() {\n\n v_NodeUv = node;\n gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n gl_PointSize = 1.0;\n}\n@end\n\n@export ecgl.forceAtlas2.calcWeightedSum.fragment\n\nvarying vec2 v_NodeUv;\n\nuniform sampler2D positionTex;\nuniform sampler2D forceTex;\nuniform sampler2D forcePrevTex;\n\nvoid main() {\n vec2 force = texture2D(forceTex, v_NodeUv).rg;\n vec2 forcePrev = texture2D(forcePrevTex, v_NodeUv).rg;\n\n float mass = texture2D(positionTex, v_NodeUv).z;\n float swing = length(force - forcePrev) * mass;\n float traction = length(force + forcePrev) * 0.5 * mass;\n\n gl_FragColor = vec4(swing, traction, 0.0, 0.0);\n}\n@end\n\n@export ecgl.forceAtlas2.calcGlobalSpeed\n\nuniform sampler2D globalSpeedPrevTex;\nuniform sampler2D weightedSumTex;\nuniform float jitterTolerence;\n\nvoid main() {\n vec2 weightedSum = texture2D(weightedSumTex, vec2(0.5)).xy;\n float prevGlobalSpeed = texture2D(globalSpeedPrevTex, vec2(0.5)).x;\n float globalSpeed = jitterTolerence * jitterTolerence\n * weightedSum.y / weightedSum.x;\n if (prevGlobalSpeed > 0.0) {\n globalSpeed = min(globalSpeed / prevGlobalSpeed, 1.5) * prevGlobalSpeed;\n }\n gl_FragColor = vec4(globalSpeed, 0.0, 0.0, 1.0);\n}\n@end\n\n@export ecgl.forceAtlas2.updatePosition\n\nuniform sampler2D forceTex;\nuniform sampler2D forcePrevTex;\nuniform sampler2D positionTex;\nuniform sampler2D globalSpeedTex;\n\nvarying vec2 v_Texcoord;\n\nvoid main() {\n vec2 force = texture2D(forceTex, v_Texcoord).xy;\n vec2 forcePrev = texture2D(forcePrevTex, v_Texcoord).xy;\n vec4 node = texture2D(positionTex, v_Texcoord);\n\n float globalSpeed = texture2D(globalSpeedTex, vec2(0.5)).r;\n float swing = length(force - forcePrev);\n float speed = 0.1 * globalSpeed / (0.1 + globalSpeed * sqrt(swing));\n\n float df = length(force);\n if (df > 0.0) {\n speed = min(df * speed, 10.0) / df;\n\n gl_FragColor = vec4(node.xy + speed * force, node.zw);\n }\n else {\n gl_FragColor = node;\n }\n}\n@end\n\n@export ecgl.forceAtlas2.edges.vertex\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nattribute vec2 node;\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n\nuniform sampler2D positionTex;\n\nvoid main()\n{\n gl_Position = worldViewProjection * vec4(\n texture2D(positionTex, node).xy, -10.0, 1.0\n );\n v_Color = a_Color;\n}\n@end\n\n@export ecgl.forceAtlas2.edges.fragment\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nvarying vec4 v_Color;\nvoid main() {\n gl_FragColor = color * v_Color;\n}\n@end");var _c={repulsionByDegree:!0,linLogMode:!1,strongGravityMode:!1,gravity:1,scaling:1,edgeWeightInfluence:1,jitterTolerence:.1,preventOverlap:!1,dissuadeHubs:!1,gravityCenter:null};function vc(e){var t={type:Ka.Texture.FLOAT,minFilter:Ka.Texture.NEAREST,magFilter:Ka.Texture.NEAREST};this._positionSourceTex=new Ka.Texture2D(t),this._positionSourceTex.flipY=!1,this._positionTex=new Ka.Texture2D(t),this._positionPrevTex=new Ka.Texture2D(t),this._forceTex=new Ka.Texture2D(t),this._forcePrevTex=new Ka.Texture2D(t),this._weightedSumTex=new Ka.Texture2D(t),this._weightedSumTex.width=this._weightedSumTex.height=1,this._globalSpeedTex=new Ka.Texture2D(t),this._globalSpeedPrevTex=new Ka.Texture2D(t),this._globalSpeedTex.width=this._globalSpeedTex.height=1,this._globalSpeedPrevTex.width=this._globalSpeedPrevTex.height=1,this._nodeRepulsionPass=new ba({fragment:Ka.Shader.source("ecgl.forceAtlas2.updateNodeRepulsion")}),this._positionPass=new ba({fragment:Ka.Shader.source("ecgl.forceAtlas2.updatePosition")}),this._globalSpeedPass=new ba({fragment:Ka.Shader.source("ecgl.forceAtlas2.calcGlobalSpeed")}),this._copyPass=new ba({fragment:Ka.Shader.source("clay.compositor.output")});var r=function(e){e.blendEquation(e.FUNC_ADD),e.blendFunc(e.ONE,e.ONE)};this._edgeForceMesh=new Ka.Mesh({geometry:new Ka.Geometry({attributes:{node1:new Ka.Geometry.Attribute("node1","float",2),node2:new Ka.Geometry.Attribute("node2","float",2),weight:new Ka.Geometry.Attribute("weight","float",1)},dynamic:!0,mainAttribute:"node1"}),material:new Ka.Material({transparent:!0,shader:Ka.createShader("ecgl.forceAtlas2.updateEdgeAttraction"),blend:r,depthMask:!1,depthText:!1}),mode:Ka.Mesh.POINTS}),this._weightedSumMesh=new Ka.Mesh({geometry:new Ka.Geometry({attributes:{node:new Ka.Geometry.Attribute("node","float",2)},dynamic:!0,mainAttribute:"node"}),material:new Ka.Material({transparent:!0,shader:Ka.createShader("ecgl.forceAtlas2.calcWeightedSum"),blend:r,depthMask:!1,depthText:!1}),mode:Ka.Mesh.POINTS}),this._framebuffer=new Zn({depthBuffer:!1}),this._dummyCamera=new Ka.OrthographicCamera({left:-1,right:1,top:1,bottom:-1,near:0,far:100}),this._globalSpeed=0}vc.prototype.updateOption=function(e){for(var t in _c)this[t]=_c[t];var r=this._nodes.length;if(this.jitterTolerence=r>5e4?10:r>5e3?1:.1,this.scaling=r>100?2:10,e)for(var t in _c)null!=e[t]&&(this[t]=e[t]);if(this.repulsionByDegree)for(var i=this._positionSourceTex.pixels,n=0;ne},vc.prototype._swapTexture=function(){var e=this._positionPrevTex;this._positionPrevTex=this._positionTex,this._positionTex=e,e=this._forcePrevTex,this._forcePrevTex=this._forceTex,this._forceTex=e,e=this._globalSpeedPrevTex,this._globalSpeedPrevTex=this._globalSpeedTex,this._globalSpeedTex=e},vc.prototype._initFromSource=function(e){this._framebuffer.attach(this._positionPrevTex),this._framebuffer.bind(e),this._copyPass.setUniform("texture",this._positionSourceTex),this._copyPass.render(e),e.gl.clearColor(0,0,0,0),this._framebuffer.attach(this._forcePrevTex),e.gl.clear(e.gl.COLOR_BUFFER_BIT),this._framebuffer.attach(this._globalSpeedPrevTex),e.gl.clear(e.gl.COLOR_BUFFER_BIT),this._framebuffer.unbind(e)},vc.prototype._resize=function(e,t){["_positionSourceTex","_positionTex","_positionPrevTex","_forceTex","_forcePrevTex"].forEach(function(r){this[r].width=e,this[r].height=t,this[r].dirty()},this)},vc.prototype.dispose=function(e){this._framebuffer.dispose(e),this._copyPass.dispose(e),this._nodeRepulsionPass.dispose(e),this._positionPass.dispose(e),this._globalSpeedPass.dispose(e),this._edgeForceMesh.geometry.dispose(e),this._weightedSumMesh.geometry.dispose(e),this._positionSourceTex.dispose(e),this._positionTex.dispose(e),this._positionPrevTex.dispose(e),this._forceTex.dispose(e),this._forcePrevTex.dispose(e),this._weightedSumTex.dispose(e),this._globalSpeedTex.dispose(e),this._globalSpeedPrevTex.dispose(e)};var yc=function(){var e=function(){return new Float32Array(2)},t=function(e,t){var r=t[0]-e[0],i=t[1]-e[1];return Math.sqrt(r*r+i*i)},r=function(e){var t=e[0],r=e[1];return Math.sqrt(t*t+r*r)},i=function(e,t,r,i){return e[0]=t[0]+r[0]*i,e[1]=t[1]+r[1]*i,e},n=function(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e},a=function(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e},o=function(e,t){return e[0]=t[0],e[1]=t[1],e},s=function(e,t,r){return e[0]=t,e[1]=r,e};function l(){this.subRegions=[],this.nSubRegions=0,this.node=null,this.mass=0,this.centerOfMass=null,this.bbox=new Float32Array(4),this.size=0}var h=l.prototype;function u(){this.position=new Float32Array(2),this.force=e(),this.forcePrev=e(),this.mass=1,this.inDegree=0,this.outDegree=0}function c(e,t){this.source=e,this.target=t,this.weight=1}function d(){this.autoSettings=!0,this.barnesHutOptimize=!0,this.barnesHutTheta=1.5,this.repulsionByDegree=!0,this.linLogMode=!1,this.strongGravityMode=!1,this.gravity=1,this.scaling=1,this.edgeWeightInfluence=1,this.jitterTolerence=.1,this.preventOverlap=!1,this.dissuadeHubs=!1,this.rootRegion=new l,this.rootRegion.centerOfMass=e(),this.nodes=[],this.edges=[],this.bbox=new Float32Array(4),this.gravityCenter=null,this._massArr=null,this._swingingArr=null,this._sizeArr=null,this._globalSpeed=0}h.beforeUpdate=function(){for(var e=0;e=e&&this.bbox[1]<=t&&this.bbox[3]>=t},h.setBBox=function(e,t,r,i){this.bbox[0]=e,this.bbox[1]=t,this.bbox[2]=r,this.bbox[3]=i,this.size=(r-e+i-t)/2},h._newSubRegion=function(){var e=this.subRegions[this.nSubRegions];return e||(e=new l,this.subRegions[this.nSubRegions]=e),this.nSubRegions++,e},h._addNodeToSubRegion=function(e){var t=this.findSubRegion(e.position[0],e.position[1]),r=this.bbox;if(!t){var i=(r[0]+r[2])/2,n=(r[1]+r[3])/2,a=(r[2]-r[0])/2,o=(r[3]-r[1])/2,s=e.position[0]>=i?1:0,l=e.position[1]>=n?1:0;(t=this._newSubRegion()).setBBox(s*a+r[0],l*o+r[1],(s+1)*a+r[0],(l+1)*o+r[1])}t.addNode(e)},h._updateCenterOfMass=function(e){null==this.centerOfMass&&(this.centerOfMass=new Float32Array(2));var t=this.centerOfMass[0]*this.mass,r=this.centerOfMass[1]*this.mass;t+=e.position[0]*e.mass,r+=e.position[1]*e.mass,this.mass+=e.mass,this.centerOfMass[0]=t/this.mass,this.centerOfMass[1]=r/this.mass};var f=d.prototype;f.initNodes=function(e,t,r){var i=t.length;this.nodes.length=0;for(var n=void 0!==r,a=0;a0&&(this.strongGravityMode?this.applyNodeStrongGravity(u):this.applyNodeGravity(u))}for(l=0;l0&&(g=Math.min(g/this._globalSpeed,1.5)*this._globalSpeed),this._globalSpeed=g,l=0;l0&&(v=Math.min(y*v,10)/y,i(h.position,h.position,h.force,v))}},f.applyRegionToNodeRepulsion=function(){var t=e();return function(e,r){if(e.node)this.applyNodeToNodeRepulsion(e.node,r,!0);else{a(t,r.position,e.centerOfMass);var n=t[0]*t[0]+t[1]*t[1];if(n>this.barnesHutTheta*e.size*e.size){var o=this.scaling*r.mass*e.mass/n;i(r.force,r.force,t,o)}else for(var s=0;s0)s=this.scaling*e.mass*r.mass/(l*l);else{if(!(l<0))return;s=100*this.scaling*e.mass*r.mass}}else s=this.scaling*e.mass*r.mass/o;i(e.force,e.force,t,s),i(r.force,r.force,t,-s)}}}}(),f.applyEdgeAttraction=function(){var t=e();return function(e){var n=e.source,o=e.target;a(t,n.position,o.position);var s,l,h=r(t);s=0===this.edgeWeightInfluence?1:1===this.edgeWeightInfluence?e.weight:Math.pow(e.weight,this.edgeWeightInfluence),this.preventOverlap&&(h=h-n.size-o.size)<=0||(l=this.linLogMode?-s*Math.log(h+1)/(h+1):-s,i(n.force,n.force,t,l),i(o.force,o.force,t,-l))}}(),f.applyNodeGravity=function(){var t=e();return function(e){a(t,this.gravityCenter,e.position);var n=r(t);i(e.force,e.force,t,this.gravity*e.mass/(n+1))}}(),f.applyNodeStrongGravity=function(){var t=e();return function(e){a(t,this.gravityCenter,e.position),i(e.force,e.force,t,this.gravity*e.mass)}}(),f.updateBBox=function(){for(var e=1/0,t=1/0,r=-1/0,i=-1/0,n=0;n5e4?10:a>5e3?1:.1,t.scaling=a>100?2:10,t.barnesHutOptimize=a>1e3,e)for(var r in xc)null!=e[r]&&(t[r]=e[r]);if(!t.gravityCenter){for(var o=[1/0,1/0],s=[-1/0,-1/0],l=0;le},bc.prototype.getNodePosition=function(e,t){if(t||(t=new Float32Array(2*this._nodes.length)),this._positionArr)for(var r=0;r0?1.1:.9,a=Math.max(Math.min(this._zoom*n,this.maxZoom),this.minZoom);n=a/this._zoom;var o=this._convertPos(r,i),s=(o.x-this._dx)*(n-1),l=(o.y-this._dy)*(n-1);this._dx-=s,this._dy-=l,this._zoom=a,this._needsUpdate=!0}}},dispose:function(){var e=this.zr;e.off("mousedown",this._mouseDownHandler),e.off("mousemove",this._mouseMoveHandler),e.off("mouseup",this._mouseUpHandler),e.off("mousewheel",this._mouseWheelHandler),e.off("globalout",this._mouseUpHandler),e.animation.off("frame",this._update)}}),wc=bo.vec2;Ka.Shader.import("@export ecgl.lines2D.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nattribute vec2 position: POSITION;\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n\n#ifdef POSITIONTEXTURE_ENABLED\nuniform sampler2D positionTexture;\n#endif\n\nvoid main()\n{\n gl_Position = worldViewProjection * vec4(position, -10.0, 1.0);\n\n v_Color = a_Color;\n}\n\n@end\n\n@export ecgl.lines2D.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nvarying vec4 v_Color;\n\nvoid main()\n{\n gl_FragColor = color * v_Color;\n}\n@end\n\n\n@export ecgl.meshLines2D.vertex\n\nattribute vec2 position: POSITION;\nattribute vec2 normal;\nattribute float offset;\nattribute vec4 a_Color : COLOR;\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform vec4 viewport : VIEWPORT;\n\nvarying vec4 v_Color;\nvarying float v_Miter;\n\nvoid main()\n{\n vec4 p2 = worldViewProjection * vec4(position + normal, -10.0, 1.0);\n gl_Position = worldViewProjection * vec4(position, -10.0, 1.0);\n\n p2.xy /= p2.w;\n gl_Position.xy /= gl_Position.w;\n\n vec2 N = normalize(p2.xy - gl_Position.xy);\n gl_Position.xy += N * offset / viewport.zw * 2.0;\n\n gl_Position.xy *= gl_Position.w;\n\n v_Color = a_Color;\n}\n@end\n\n\n@export ecgl.meshLines2D.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nvarying vec4 v_Color;\nvarying float v_Miter;\n\nvoid main()\n{\n gl_FragColor = color * v_Color;\n}\n\n@end");var Sc=1;const Mc=te.extend({type:"graphGL",__ecgl__:!0,init:function(e,t){this.groupGL=new Ka.Node,this.viewGL=new Xs("orthographic"),this.viewGL.camera.left=this.viewGL.camera.right=0,this.viewGL.add(this.groupGL),this._pointsBuilder=new Du(!0,t),this._forceEdgesMesh=new Ka.Mesh({material:new Ka.Material({shader:Ka.createShader("ecgl.forceAtlas2.edges"),transparent:!0,depthMask:!1,depthTest:!1}),$ignorePicking:!0,geometry:new Ka.Geometry({attributes:{node:new Ka.Geometry.Attribute("node","float",2),color:new Ka.Geometry.Attribute("color","float",4,"COLOR")},dynamic:!0,mainAttribute:"node"}),renderOrder:-1,mode:Ka.Mesh.LINES}),this._edgesMesh=new Ka.Mesh({material:new Ka.Material({shader:Ka.createShader("ecgl.meshLines2D"),transparent:!0,depthMask:!1,depthTest:!1}),$ignorePicking:!0,geometry:new gc({useNativeLine:!1,dynamic:!0}),renderOrder:-1,culling:!1}),this._layoutId=0,this._control=new Tc({zr:t.getZr(),viewGL:this.viewGL}),this._control.setTarget(this.groupGL),this._control.init(),this._clickHandler=this._clickHandler.bind(this)},render:function(e,t,r){this.groupGL.add(this._pointsBuilder.rootNode),this._model=e,this._api=r,this._initLayout(e,t,r),this._pointsBuilder.update(e,t,r),this._forceLayoutInstance instanceof vc||this.groupGL.remove(this._forceEdgesMesh),this._updateCamera(e,r),this._control.off("update"),this._control.on("update",function(){r.dispatchAction({type:"graphGLRoam",seriesId:e.id,zoom:this._control.getZoom(),offset:this._control.getOffset()}),this._pointsBuilder.updateView(this.viewGL.camera)},this),this._control.setZoom(La(e.get("zoom"),1)),this._control.setOffset(e.get("offset")||[0,0]);var i=this._pointsBuilder.getPointsMesh();if(i.off("mousemove",this._mousemoveHandler),i.off("mouseout",this._mouseOutHandler,this),r.getZr().off("click",this._clickHandler),this._pointsBuilder.highlightOnMouseover=!0,e.get("focusNodeAdjacency")){var n=e.get("focusNodeAdjacencyOn");"click"===n?r.getZr().on("click",this._clickHandler):"mouseover"===n&&(i.on("mousemove",this._mousemoveHandler,this),i.on("mouseout",this._mouseOutHandler,this),this._pointsBuilder.highlightOnMouseover=!1)}this._lastMouseOverDataIndex=-1},_clickHandler:function(e){if(!this._layouting){var t=this._pointsBuilder.getPointsMesh().dataIndex;t>=0?this._api.dispatchAction({type:"graphGLFocusNodeAdjacency",seriesId:this._model.id,dataIndex:t}):this._api.dispatchAction({type:"graphGLUnfocusNodeAdjacency",seriesId:this._model.id})}},_mousemoveHandler:function(e){if(!this._layouting){var t=this._pointsBuilder.getPointsMesh().dataIndex;t>=0?t!==this._lastMouseOverDataIndex&&this._api.dispatchAction({type:"graphGLFocusNodeAdjacency",seriesId:this._model.id,dataIndex:t}):this._mouseOutHandler(e),this._lastMouseOverDataIndex=t}},_mouseOutHandler:function(e){this._layouting||(this._api.dispatchAction({type:"graphGLUnfocusNodeAdjacency",seriesId:this._model.id}),this._lastMouseOverDataIndex=-1)},_updateForceEdgesGeometry:function(e,t){var r=this._forceEdgesMesh.geometry,i=t.getEdgeData(),n=0,a=this._forceLayoutInstance,o=2*i.count();r.attributes.node.init(o),r.attributes.color.init(o),i.each(function(t){var o=e[t];r.attributes.node.set(n,a.getNodeUV(o.node1)),r.attributes.node.set(n+1,a.getNodeUV(o.node2));var s=Hl(i,o.dataIndex),l=Ka.parseColor(s);l[3]*=La(Vl(i,o.dataIndex),1),r.attributes.color.set(n,l),r.attributes.color.set(n+1,l),n+=2}),r.dirty()},_updateMeshLinesGeometry:function(){var e=this._model.getEdgeData(),t=this._edgesMesh.geometry,r=(e=this._model.getEdgeData(),this._model.getData().getLayout("points"));t.resetOffset(),t.setVertexCount(e.count()*t.getLineVertexCount()),t.setTriangleCount(e.count()*t.getLineTriangleCount());var i=[],n=[],a=["lineStyle","width"];this._originalEdgeColors=new Float32Array(4*e.count()),this._edgeIndicesMap=new Float32Array(e.count()),e.each(function(o){var s=e.graph.getEdgeByIndex(o),l=2*s.node1.dataIndex,h=2*s.node2.dataIndex;i[0]=r[l],i[1]=r[l+1],n[0]=r[h],n[1]=r[h+1];var u=Hl(e,s.dataIndex),c=Ka.parseColor(u);c[3]*=La(Vl(e,s.dataIndex),1);var d=e.getItemModel(s.dataIndex),f=La(d.get(a),1)*this._api.getDevicePixelRatio();t.addLine(i,n,c,f);for(var p=0;p<4;p++)this._originalEdgeColors[4*s.dataIndex+p]=c[p];this._edgeIndicesMap[s.dataIndex]=o},this),t.dirty()},_updateForceNodesGeometry:function(e){for(var t=this._pointsBuilder.getPointsMesh(),r=[],i=0;i=p&&(l._syncNodePosition(e),f=0),r.getZr().refresh(),h(function(){m(t)})})};h(function(){l._forceLayoutInstanceToDispose&&(l._forceLayoutInstanceToDispose.dispose(n.layer.renderer),l._forceLayoutInstanceToDispose=null),m(u)}),this._layouting=!0}}},stopLayout:function(e,t,r,i){i&&null!=i.from&&i.from!==this.uid||(this._layoutId=0,this.groupGL.remove(this._forceEdgesMesh),this.groupGL.add(this._edgesMesh),this._forceLayoutInstance&&this.viewGL.layer&&(i&&i.beforeLayout||(this._syncNodePosition(e),this._updateAfterLayout(e,t,r)),this._api.getZr().refresh(),this._layouting=!1))},_syncNodePosition:function(e){var t=this._forceLayoutInstance.getNodePosition(this.viewGL.layer.renderer);e.getData().setLayout("points",t),e.setNodePosition(t)},_updateAfterLayout:function(e,t,r){this._updateMeshLinesGeometry(),this._pointsBuilder.removePositionTexture(),this._pointsBuilder.updateLayout(e,t,r),this._pointsBuilder.updateView(this.viewGL.camera),this._pointsBuilder.updateLabels(),this._pointsBuilder.showLabels()},focusNodeAdjacency:function(e,t,r,i){var n=this._model.getData();this._downplayAll();var a=i.dataIndex,o=n.graph,s=[],l=o.getNodeByIndex(a);s.push(l),l.edges.forEach(function(e){e.dataIndex<0||(e.node1!==l&&s.push(e.node1),e.node2!==l&&s.push(e.node2))},this),this._pointsBuilder.fadeOutAll(.05),this._fadeOutEdgesAll(.05),s.forEach(function(e){this._pointsBuilder.highlight(n,e.dataIndex)},this),this._pointsBuilder.updateLabels(s.map(function(e){return e.dataIndex}));var h=[];l.edges.forEach(function(e){e.dataIndex>=0&&(this._highlightEdge(e.dataIndex),h.push(e))},this),this._focusNodes=s,this._focusEdges=h},unfocusNodeAdjacency:function(e,t,r,i){this._downplayAll(),this._pointsBuilder.fadeInAll(),this._fadeInEdgesAll(),this._pointsBuilder.updateLabels()},_highlightEdge:function(e){var t=this._model.getEdgeData().getItemModel(e),r=Ka.parseColor(t.get("emphasis.lineStyle.color")||t.get("lineStyle.color")),i=La(t.get("emphasis.lineStyle.opacity"),t.get("lineStyle.opacity"),1);r[3]*=i,this._edgesMesh.geometry.setItemColor(this._edgeIndicesMap[e],r)},_downplayAll:function(){this._focusNodes&&this._focusNodes.forEach(function(e){this._pointsBuilder.downplay(this._model.getData(),e.dataIndex)},this),this._focusEdges&&this._focusEdges.forEach(function(e){this._downplayEdge(e.dataIndex)},this)},_downplayEdge:function(e){var t=this._getColor(e,[]);this._edgesMesh.geometry.setItemColor(this._edgeIndicesMap[e],t)},_setEdgeFade:function(){var e=[];return function(t,r){this._getColor(t,e),e[3]*=r,this._edgesMesh.geometry.setItemColor(this._edgeIndicesMap[t],e)}}(),_getColor:function(e,t){for(var r=0;r<4;r++)t[r]=this._originalEdgeColors[4*e+r];return t},_fadeOutEdgesAll:function(e){this._model.getData().graph.eachEdge(function(t){this._setEdgeFade(t.dataIndex,e)},this)},_fadeInEdgesAll:function(){this._fadeOutEdgesAll(1)},_updateCamera:function(e,t){this.viewGL.setViewport(0,0,t.getWidth(),t.getHeight(),t.getDevicePixelRatio());for(var r=this.viewGL.camera,i=e.getData().getLayout("points"),n=wc.create(1/0,1/0),a=wc.create(-1/0,-1/0),o=[],s=0;sr.left&&hr.top)){var u=Math.max(a[0]-n[0],10),c=u/t.getWidth()*t.getHeight();u*=1.4,c*=1.4,n[0]-=.2*u,r.left=n[0],r.top=l-c/2,r.bottom=l+c/2,r.right=u+n[0],r.near=0,r.far=100}},dispose:function(){var e=this.viewGL.layer.renderer;this._forceLayoutInstance&&this._forceLayoutInstance.dispose(e),this.groupGL.removeAll(),this._layoutId=-1,this._pointsBuilder.dispose()},remove:function(){this.groupGL.removeAll(),this._control.dispose()}});function Ac(e){return e instanceof Array||(e=[e,e]),e}I(function(e){function t(){}e.registerChartView(Mc),e.registerSeriesModel(fc),e.registerVisual(function(e){const t={};e.eachSeriesByType("graphGL",function(e){var r=e.getCategoriesData(),i=e.getData(),n={};r.each(function(i){var a=r.getName(i);n["ec-"+a]=i;var o=r.getItemModel(i),s=o.getModel("itemStyle").getItemStyle();s.fill||(s.fill=e.getColorFromPalette(a,t)),r.setItemVisual(i,"style",s);var l=["symbol","symbolSize","symbolKeepAspect"];for(let e=0;e65535?new Uint32Array(3*i):new Uint16Array(3*i))},addLine:function(e){var t=this._vertexOffset;this.attributes.position.set(t,[e[0],e[1],1]),this.attributes.position.set(t+1,[e[0],e[1],-1]),this.attributes.position.set(t+2,[e[0],e[1],2]),this.attributes.position.set(t+3,[e[0],e[1],-2]),this.setTriangleIndices(this._faceOffset++,[t,t+1,t+2]),this.setTriangleIndices(this._faceOffset++,[t+1,t+2,t+3]),this._vertexOffset+=4}});br.import("@export ecgl.vfParticle.particle.fragment\n\nuniform sampler2D particleTexture;\nuniform sampler2D spawnTexture;\nuniform sampler2D velocityTexture;\n\nuniform float deltaTime;\nuniform float elapsedTime;\n\nuniform float speedScaling : 1.0;\n\nuniform vec2 textureSize;\nuniform vec4 region : [0, 0, 1, 1];\nuniform float firstFrameTime;\n\nvarying vec2 v_Texcoord;\n\n\nvoid main()\n{\n vec4 p = texture2D(particleTexture, v_Texcoord);\n bool spawn = false;\n if (p.w <= 0.0) {\n p = texture2D(spawnTexture, fract(v_Texcoord + elapsedTime / 10.0));\n p.w -= firstFrameTime;\n spawn = true;\n }\n vec2 v = texture2D(velocityTexture, fract(p.xy * region.zw + region.xy)).xy;\n v = (v - 0.5) * 2.0;\n p.z = length(v);\n p.xy += v * deltaTime / 10.0 * speedScaling;\n p.w -= deltaTime;\n\n if (spawn || p.xy != fract(p.xy)) {\n p.z = 0.0;\n }\n p.xy = fract(p.xy);\n\n gl_FragColor = p;\n}\n@end\n\n@export ecgl.vfParticle.renderPoints.vertex\n\n#define PI 3.1415926\n\nattribute vec2 texcoord : TEXCOORD_0;\n\nuniform sampler2D particleTexture;\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nuniform float size : 1.0;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\nvoid main()\n{\n vec4 p = texture2D(particleTexture, texcoord);\n\n if (p.w > 0.0 && p.z > 1e-5) {\n gl_Position = worldViewProjection * vec4(p.xy * 2.0 - 1.0, 0.0, 1.0);\n }\n else {\n gl_Position = vec4(100000.0, 100000.0, 100000.0, 1.0);\n }\n\n v_Mag = p.z;\n v_Uv = p.xy;\n\n gl_PointSize = size;\n}\n\n@end\n\n@export ecgl.vfParticle.renderPoints.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nuniform sampler2D gradientTexture;\nuniform sampler2D colorTexture;\nuniform sampler2D spriteTexture;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\nvoid main()\n{\n gl_FragColor = color;\n#ifdef SPRITETEXTURE_ENABLED\n gl_FragColor *= texture2D(spriteTexture, gl_PointCoord);\n if (color.a == 0.0) {\n discard;\n }\n#endif\n#ifdef GRADIENTTEXTURE_ENABLED\n gl_FragColor *= texture2D(gradientTexture, vec2(v_Mag, 0.5));\n#endif\n#ifdef COLORTEXTURE_ENABLED\n gl_FragColor *= texture2D(colorTexture, v_Uv);\n#endif\n}\n\n@end\n\n@export ecgl.vfParticle.renderLines.vertex\n\n#define PI 3.1415926\n\nattribute vec3 position : POSITION;\n\nuniform sampler2D particleTexture;\nuniform sampler2D prevParticleTexture;\n\nuniform float size : 1.0;\nuniform vec4 vp: VIEWPORT;\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\n@import clay.util.rand\n\nvoid main()\n{\n vec4 p = texture2D(particleTexture, position.xy);\n vec4 p2 = texture2D(prevParticleTexture, position.xy);\n\n p.xy = p.xy * 2.0 - 1.0;\n p2.xy = p2.xy * 2.0 - 1.0;\n\n if (p.w > 0.0 && p.z > 1e-5) {\n vec2 dir = normalize(p.xy - p2.xy);\n vec2 norm = vec2(dir.y / vp.z, -dir.x / vp.w) * sign(position.z) * size;\n if (abs(position.z) == 2.0) {\n gl_Position = vec4(p.xy + norm, 0.0, 1.0);\n v_Uv = p.xy;\n v_Mag = p.z;\n }\n else {\n gl_Position = vec4(p2.xy + norm, 0.0, 1.0);\n v_Mag = p2.z;\n v_Uv = p2.xy;\n }\n gl_Position = worldViewProjection * gl_Position;\n }\n else {\n gl_Position = vec4(100000.0, 100000.0, 100000.0, 1.0);\n }\n}\n\n@end\n\n@export ecgl.vfParticle.renderLines.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nuniform sampler2D gradientTexture;\nuniform sampler2D colorTexture;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\nvoid main()\n{\n gl_FragColor = color;\n #ifdef GRADIENTTEXTURE_ENABLED\n gl_FragColor *= texture2D(gradientTexture, vec2(v_Mag, 0.5));\n#endif\n#ifdef COLORTEXTURE_ENABLED\n gl_FragColor *= texture2D(colorTexture, v_Uv);\n#endif\n}\n\n@end\n");var Cc=function(){this.motionBlurFactor=.99,this.vectorFieldTexture=new Wi({type:Gi.FLOAT,flipY:!1}),this.particleLife=[5,20],this._particleType="point",this._particleSize=1,this.particleColor=[1,1,1,1],this.particleSpeedScaling=1,this._thisFrameTexture=null,this._particlePass=null,this._spawnTexture=null,this._particleTexture0=null,this._particleTexture1=null,this._particlePointsMesh=null,this._surfaceFrameBuffer=null,this._elapsedTime=0,this._scene=null,this._camera=null,this._lastFrameTexture=null,this._supersampling=1,this._downsampleTextures=[],this._width=512,this._height=512,this.init()};Cc.prototype={constructor:Cc,init:function(){var e={type:Gi.FLOAT,minFilter:Gi.NEAREST,magFilter:Gi.NEAREST,useMipmap:!1};this._spawnTexture=new Wi(e),this._particleTexture0=new Wi(e),this._particleTexture1=new Wi(e),this._frameBuffer=new Zn({depthBuffer:!1}),this._particlePass=new ba({fragment:br.source("ecgl.vfParticle.particle.fragment")}),this._particlePass.setUniform("velocityTexture",this.vectorFieldTexture),this._particlePass.setUniform("spawnTexture",this._spawnTexture),this._downsamplePass=new ba({fragment:br.source("clay.compositor.downsample")});var t=new Ui({renderOrder:10,material:new Wt({shader:new br(br.source("ecgl.vfParticle.renderPoints.vertex"),br.source("ecgl.vfParticle.renderPoints.fragment"))}),mode:Ui.POINTS,geometry:new tn({dynamic:!0,mainAttribute:"texcoord0"})}),r=new Ui({renderOrder:10,material:new Wt({shader:new br(br.source("ecgl.vfParticle.renderLines.vertex"),br.source("ecgl.vfParticle.renderLines.fragment"))}),geometry:new Dc,culling:!1}),i=new Ui({material:new Wt({shader:new br(br.source("ecgl.color.vertex"),br.source("ecgl.color.fragment"))}),geometry:new Qn});i.material.enableTexture("diffuseMap"),this._particlePointsMesh=t,this._particleLinesMesh=r,this._lastFrameFullQuadMesh=i,this._camera=new _a,this._thisFrameTexture=new Wi,this._lastFrameTexture=new Wi},setParticleDensity:function(e,t){for(var r=new Float32Array(e*t*4),i=0,n=this.particleLife,a=0;a0?e[e.length-1]:this._lastFrameTexture},setRegion:function(e){this._particlePass.setUniform("region",e)},resize:function(e,t){this._lastFrameTexture.width=e*this._supersampling,this._lastFrameTexture.height=t*this._supersampling,this._thisFrameTexture.width=e*this._supersampling,this._thisFrameTexture.height=t*this._supersampling,this._width=e,this._height=t},setParticleSize:function(e){var t=this._getParticleMesh();if(e<=2)return t.material.disableTexture("spriteTexture"),void(t.material.transparent=!1);this._spriteTexture||(this._spriteTexture=new Wi),this._spriteTexture.image&&this._spriteTexture.image.width===e||(this._spriteTexture.image=function(e){var t=document.createElement("canvas");t.width=t.height=e;var r=t.getContext("2d");return r.fillStyle="#fff",r.arc(e/2,e/2,e/2,0,2*Math.PI),r.fill(),t}(e),this._spriteTexture.dirty()),t.material.transparent=!0,t.material.enableTexture("spriteTexture"),t.material.set("spriteTexture",this._spriteTexture),this._particleSize=e},setGradientTexture:function(e){var t=this._getParticleMesh().material;t[e?"enableTexture":"disableTexture"]("gradientTexture"),t.setUniform("gradientTexture",e)},setColorTextureImage:function(e,t){this._getParticleMesh().material.setTextureImage("colorTexture",e,t,{flipY:!0})},setParticleType:function(e){this._particleType=e},clearFrame:function(e){var t=this._frameBuffer;t.attach(this._lastFrameTexture),t.bind(e),e.gl.clear(e.gl.DEPTH_BUFFER_BIT|e.gl.COLOR_BUFFER_BIT),t.unbind(e)},setSupersampling:function(e){this._supersampling=e,this.resize(this._width,this._height)},_updateDownsampleTextures:function(e,t){for(var r=this._downsampleTextures,i=Math.max(Math.floor(Math.log(this._supersampling/t.getDevicePixelRatio())/Math.log(2)),0),n=2,a=this._width*this._supersampling,o=this._height*this._supersampling,s=0;s=359&&(n[0]>0&&(n[0]=0),a[0]1?(t.material.shader!==this._meshLinesShader&&t.material.attachShader(this._meshLinesShader),t.mode=Ka.Mesh.TRIANGLES):(t.material.shader!==this._nativeLinesShader&&t.material.attachShader(this._nativeLinesShader),t.mode=Ka.Mesh.LINES),r=r||0,i=i||n.count(),s.resetOffset();var u=0,c=0,d=[],f=[],p=[],m=[],g=[],_=.3,v=.7;function y(){f[0]=d[0]*v+m[0]*_-(d[1]-m[1])*a,f[1]=d[1]*v+m[1]*_-(m[0]-d[0])*a,p[0]=d[0]*_+m[0]*v-(d[1]-m[1])*a,p[1]=d[1]*_+m[1]*v-(m[0]-d[0])*a}if(o||0!==a)for(var x=r;x=400?e.onerror&&e.onerror():e.onload&&e.onload(t.response)},e.onerror&&(t.onerror=e.onerror),t.send(null)}};var xt,bt={supportWebGL:function(){if(null==xt)try{var e=document.createElement("canvas");if(!(e.getContext("webgl")||e.getContext("experimental-webgl")))throw new Error}catch(t){xt=!1}return xt}};bt.Int8Array="undefined"==typeof Int8Array?Array:Int8Array,bt.Uint8Array="undefined"==typeof Uint8Array?Array:Uint8Array,bt.Uint16Array="undefined"==typeof Uint16Array?Array:Uint16Array,bt.Uint32Array="undefined"==typeof Uint32Array?Array:Uint32Array,bt.Int16Array="undefined"==typeof Int16Array?Array:Int16Array,bt.Float32Array="undefined"==typeof Float32Array?Array:Float32Array,bt.Float64Array="undefined"==typeof Float64Array?Array:Float64Array;var Tt={};"undefined"!=typeof window?Tt=window:"undefined"!=typeof global&&(Tt=global),bt.requestAnimationFrame=Tt.requestAnimationFrame||Tt.msRequestAnimationFrame||Tt.mozRequestAnimationFrame||Tt.webkitRequestAnimationFrame||function(e){setTimeout(e,16)},bt.createCanvas=function(){return document.createElement("canvas")},bt.createImage=function(){return new Tt.Image},bt.request={get:yt.get},bt.addEventListener=function(e,t,r,i){e.addEventListener(t,r,i)},bt.removeEventListener=function(e,t,r){e.removeEventListener(t,r)};var wt=function(){this.head=null,this.tail=null,this._length=0};wt.prototype.insert=function(e){var t=new wt.Entry(e);return this.insertEntry(t),t},wt.prototype.insertAt=function(e,t){if(!(e<0)){for(var r=this.head,i=0;r&&i!=e;)r=r.next,i++;if(r){var n=new wt.Entry(t),a=r.prev;a?(a.next=n,n.prev=a):this.head=n,n.next=r,r.prev=n}else this.insert(t)}},wt.prototype.insertBeforeEntry=function(e,t){var r=new wt.Entry(e),i=t.prev;i?(i.next=r,r.prev=i):this.head=r,r.next=t,t.prev=r,this._length++},wt.prototype.insertEntry=function(e){this.head?(this.tail.next=e,e.prev=this.tail,this.tail=e):this.head=this.tail=e,this._length++},wt.prototype.remove=function(e){var t=e.prev,r=e.next;t?t.next=r:this.head=r,r?r.prev=t:this.tail=t,e.next=e.prev=null,this._length--},wt.prototype.removeAt=function(e){if(!(e<0)){for(var t=this.head,r=0;t&&r!=e;)t=t.next,r++;return t?(this.remove(t),t.value):void 0}},wt.prototype.getHead=function(){if(this.head)return this.head.value},wt.prototype.getTail=function(){if(this.tail)return this.tail.value},wt.prototype.getAt=function(e){if(!(e<0)){for(var t=this.head,r=0;t&&r!=e;)t=t.next,r++;return t.value}},wt.prototype.indexOf=function(e){for(var t=this.head,r=0;t;){if(t.value===e)return r;t=t.next,r++}},wt.prototype.length=function(){return this._length},wt.prototype.isEmpty=function(){return 0===this._length},wt.prototype.forEach=function(e,t){for(var r=this.head,i=0,n=void 0!==t;r;)n?e.call(t,r.value,i):e(r.value,i),r=r.next,i++},wt.prototype.clear=function(){this.tail=this.head=null,this._length=0},wt.Entry=function(e){this.value=e,this.next=null,this.prev=null};var St=function(e){this._list=new wt,this._map={},this._maxSize=e||10};St.prototype.setMaxSize=function(e){this._maxSize=e},St.prototype.put=function(e,t){if(!this._map.hasOwnProperty(e)){var r=this._list.length();if(r>=this._maxSize&&r>0){var i=this._list.head;this._list.remove(i),delete this._map[i.key]}var n=this._list.insert(t);n.key=e,this._map[e]=n}},St.prototype.get=function(e){var t=this._map[e];if(this._map.hasOwnProperty(e))return t!==this._list.tail&&(this._list.remove(t),this._list.insertEntry(t)),t.value},St.prototype.remove=function(e){var t=this._map[e];void 0!==t&&(delete this._map[e],this._list.remove(t))},St.prototype.clear=function(){this._list.clear(),this._map={}};var Mt={},At={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Et(e){return(e=Math.round(e))<0?0:e>255?255:e}function Dt(e){return e<0?0:e>1?1:e}function Ct(e){return e.length&&"%"===e.charAt(e.length-1)?Et(parseFloat(e)/100*255):Et(parseInt(e,10))}function Lt(e){return e.length&&"%"===e.charAt(e.length-1)?Dt(parseFloat(e)/100):Dt(parseFloat(e))}function Pt(e,t,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?e+(t-e)*r*6:2*r<1?t:3*r<2?e+(t-e)*(2/3-r)*6:e}function Ot(e,t,r){return e+(t-e)*r}function Nt(e,t,r,i,n){return e[0]=t,e[1]=r,e[2]=i,e[3]=n,e}function Rt(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}var It=new St(20),Bt=null;function zt(e,t){Bt&&Rt(Bt,t),Bt=It.put(e,Bt||t.slice())}function Ft(e,t){var r=(parseFloat(e[0])%360+360)%360/360,i=Lt(e[1]),n=Lt(e[2]),a=n<=.5?n*(i+1):n+i-n*i,o=2*n-a;return Nt(t=t||[],Et(255*Pt(o,a,r+1/3)),Et(255*Pt(o,a,r)),Et(255*Pt(o,a,r-1/3)),1),4===e.length&&(t[3]=e[3]),t}Mt.parse=function(e,t){if(e){t=t||[];var r=It.get(e);if(r)return Rt(t,r);var i,n=(e+="").replace(/ /g,"").toLowerCase();if(n in At)return Rt(t,At[n]),zt(e,t),t;if("#"===n.charAt(0))return 4===n.length?(i=parseInt(n.substr(1),16))>=0&&i<=4095?(Nt(t,(3840&i)>>4|(3840&i)>>8,240&i|(240&i)>>4,15&i|(15&i)<<4,1),zt(e,t),t):void Nt(t,0,0,0,1):7===n.length?(i=parseInt(n.substr(1),16))>=0&&i<=16777215?(Nt(t,(16711680&i)>>16,(65280&i)>>8,255&i,1),zt(e,t),t):void Nt(t,0,0,0,1):void 0;var a=n.indexOf("("),o=n.indexOf(")");if(-1!==a&&o+1===n.length){var s=n.substr(0,a),l=n.substr(a+1,o-(a+1)).split(","),h=1;switch(s){case"rgba":if(4!==l.length)return void Nt(t,0,0,0,1);h=Lt(l.pop());case"rgb":return 3!==l.length?void Nt(t,0,0,0,1):(Nt(t,Ct(l[0]),Ct(l[1]),Ct(l[2]),h),zt(e,t),t);case"hsla":return 4!==l.length?void Nt(t,0,0,0,1):(l[3]=Lt(l[3]),Ft(l,t),zt(e,t),t);case"hsl":return 3!==l.length?void Nt(t,0,0,0,1):(Ft(l,t),zt(e,t),t);default:return}}Nt(t,0,0,0,1)}},Mt.parseToFloat=function(e,t){if(t=Mt.parse(e,t))return t[0]/=255,t[1]/=255,t[2]/=255,t},Mt.lift=function(e,t){var r=Mt.parse(e);if(r){for(var i=0;i<3;i++)r[i]=t<0?r[i]*(1-t)|0:(255-r[i])*t+r[i]|0;return Mt.stringify(r,4===r.length?"rgba":"rgb")}},Mt.toHex=function(e){var t=Mt.parse(e);if(t)return((1<<24)+(t[0]<<16)+(t[1]<<8)+ +t[2]).toString(16).slice(1)},Mt.fastLerp=function(e,t,r){if(t&&t.length&&e>=0&&e<=1){r=r||[];var i=e*(t.length-1),n=Math.floor(i),a=Math.ceil(i),o=t[n],s=t[a],l=i-n;return r[0]=Et(Ot(o[0],s[0],l)),r[1]=Et(Ot(o[1],s[1],l)),r[2]=Et(Ot(o[2],s[2],l)),r[3]=Dt(Ot(o[3],s[3],l)),r}},Mt.fastMapToColor=Mt.fastLerp,Mt.lerp=function(e,t,r){if(t&&t.length&&e>=0&&e<=1){var i=e*(t.length-1),n=Math.floor(i),a=Math.ceil(i),o=Mt.parse(t[n]),s=Mt.parse(t[a]),l=i-n,h=Mt.stringify([Et(Ot(o[0],s[0],l)),Et(Ot(o[1],s[1],l)),Et(Ot(o[2],s[2],l)),Dt(Ot(o[3],s[3],l))],"rgba");return r?{color:h,leftIndex:n,rightIndex:a,value:i}:h}},Mt.mapToColor=Mt.lerp,Mt.modifyHSL=function(e,t,r,i){if(e=Mt.parse(e))return e=function(e){if(e){var t,r,i=e[0]/255,n=e[1]/255,a=e[2]/255,o=Math.min(i,n,a),s=Math.max(i,n,a),l=s-o,h=(s+o)/2;if(0===l)t=0,r=0;else{r=h<.5?l/(s+o):l/(2-s-o);var u=((s-i)/6+l/2)/l,c=((s-n)/6+l/2)/l,d=((s-a)/6+l/2)/l;i===s?t=d-c:n===s?t=1/3+u-d:a===s&&(t=2/3+c-u),t<0&&(t+=1),t>1&&(t-=1)}var f=[360*t,r,h];return null!=e[3]&&f.push(e[3]),f}}(e),null!=t&&(e[0]=(n=t,(n=Math.round(n))<0?0:n>360?360:n)),null!=r&&(e[1]=Lt(r)),null!=i&&(e[2]=Lt(i)),Mt.stringify(Ft(e),"rgba");var n},Mt.modifyAlpha=function(e,t){if((e=Mt.parse(e))&&null!=t)return e[3]=Dt(t),Mt.stringify(e,"rgba")},Mt.stringify=function(e,t){if(e&&e.length){var r=e[0]+","+e[1]+","+e[2];return"rgba"!==t&&"hsva"!==t&&"hsla"!==t||(r+=","+e[3]),t+"("+r+")"}};var Gt=Mt.parseToFloat,Ut={};function Ht(e){var t=Object.keys(e);t.sort();for(var r=[],i=0;i=0},getEnabledUniforms:function(){return this._enabledUniforms},getTextureUniforms:function(){return this._textureUniforms},set:function(e,t){if("object"==typeof e)for(var r in e){var i=e[r];this.setUniform(r,i)}else this.setUniform(e,t)},get:function(e){var t=this.uniforms[e];if(t)return t.value},attachShader:function(e,t){var r=this.uniforms;this.uniforms=e.createUniforms(),this.shader=e;var i=this.uniforms;this._enabledUniforms=Object.keys(i),this._enabledUniforms.sort(),this._textureUniforms=this._enabledUniforms.filter(function(e){var t=this.uniforms[e].type;return"t"===t||"tv"===t},this);var n=this.vertexDefines,a=this.fragmentDefines;if(this.vertexDefines=ye.clone(e.vertexDefines),this.fragmentDefines=ye.clone(e.fragmentDefines),t){for(var o in r)i[o]&&(i[o].value=r[o].value);ye.defaults(this.vertexDefines,n),ye.defaults(this.fragmentDefines,a)}var s={};for(var l in e.textures)s[l]={shaderType:e.textures[l].shaderType,type:e.textures[l].type,enabled:!(!t||!this._textureStatus[l])&&this._textureStatus[l].enabled};this._textureStatus=s,this._programKey=""},clone:function(){var e=new this.constructor({name:this.name,shader:this.shader});for(var t in this.uniforms)e.uniforms[t].value=this.uniforms[t].value;return e.depthTest=this.depthTest,e.depthMask=this.depthMask,e.transparent=this.transparent,e.blend=this.blend,e.vertexDefines=ye.clone(this.vertexDefines),e.fragmentDefines=ye.clone(this.fragmentDefines),e.enableTexture(this.getEnabledTextures()),e.precision=this.precision,e},define:function(e,t,r){var i=this.vertexDefines,n=this.fragmentDefines;"vertex"!==e&&"fragment"!==e&&"both"!==e&&arguments.length<3&&(r=t,t=e,e="both"),r=null!=r?r:null,"vertex"!==e&&"both"!==e||i[t]!==r&&(i[t]=r,this._programKey=""),"fragment"!==e&&"both"!==e||n[t]!==r&&(n[t]=r,"both"!==e&&(this._programKey=""))},undefine:function(e,t){"vertex"!==e&&"fragment"!==e&&"both"!==e&&arguments.length<2&&(t=e,e="both"),"vertex"!==e&&"both"!==e||this.isDefined("vertex",t)&&(delete this.vertexDefines[t],this._programKey=""),"fragment"!==e&&"both"!==e||this.isDefined("fragment",t)&&(delete this.fragmentDefines[t],"both"!==e&&(this._programKey=""))},isDefined:function(e,t){switch(e){case"vertex":return void 0!==this.vertexDefines[t];case"fragment":return void 0!==this.fragmentDefines[t]}},getDefine:function(e,t){switch(e){case"vertex":return this.vertexDefines[t];case"fragment":return this.fragmentDefines[t]}},enableTexture:function(e){if(Array.isArray(e))for(var t=0;t0&&(n=1/Math.sqrt(n),e[0]=t[0]*n,e[1]=t[1]*n),e},qt.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]},qt.cross=function(e,t,r){var i=t[0]*r[1]-t[1]*r[0];return e[0]=e[1]=0,e[2]=i,e},qt.lerp=function(e,t,r,i){var n=t[0],a=t[1];return e[0]=n+i*(r[0]-n),e[1]=a+i*(r[1]-a),e},qt.random=function(e,t){t=t||1;var r=2*GLMAT_RANDOM()*Math.PI;return e[0]=Math.cos(r)*t,e[1]=Math.sin(r)*t,e},qt.transformMat2=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[2]*n,e[1]=r[1]*i+r[3]*n,e},qt.transformMat2d=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[2]*n+r[4],e[1]=r[1]*i+r[3]*n+r[5],e},qt.transformMat3=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[3]*n+r[6],e[1]=r[1]*i+r[4]*n+r[7],e},qt.transformMat4=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[4]*n+r[12],e[1]=r[1]*i+r[5]*n+r[13],e},qt.forEach=(Vt=qt.create(),function(e,t,r,i,n,a){var o,s;for(t||(t=2),r||(r=0),s=i?Math.min(i*t+r,e.length):e.length,o=r;o0&&i.push("#define "+n.toUpperCase()+"_COUNT "+a)}if(r)for(var o=0;ol.getMaxJointNumber()&&(d.USE_SKIN_MATRICES_TEXTURE=null),c+="\n"+ir(d)+"\n"}a&&(c+="\n#define INSTANCING\n");var f=c+ir(t.vertexDefines,s,u),p=c+ir(t.fragmentDefines,s,u),m=f+"\n"+t.shader.vertex,g=["OES_standard_derivatives","EXT_shader_texture_lod"].filter(function(e){return null!=l.getGLExtension(e)});g.indexOf("EXT_shader_texture_lod")>=0&&(p+="\n#define SUPPORT_TEXTURE_LOD"),g.indexOf("OES_standard_derivatives")>=0&&(p+="\n#define SUPPORT_STANDARD_DERIVATIVES");var _,v,y=function(e){for(var t=[],r=0;r=0){if(1!==s&&4!==s){vr();break}s=2,h=[]}else if(1!==s)if(4!==s)u(c),s=0;else{var d=c;cr.indexOf(d)>=0||dr.indexOf(d)>=0||fr.indexOf(d)>=0?l[o].semantic=d:"ignore"===d||"unconfigurable"===d?l[o].ignore=!0:l[o].value="bool"===e?"true"===d:parseFloat(d)}else l[o].value="bool"===e?"true"===c:parseFloat(c),h=null;else{if(2!==s){vr();break}if(!(h instanceof Array)){vr();break}h.push(+i[++a])}else l[o].value=new bt.Float32Array(h),h=null,s=5;else if(2===s){if(!(h instanceof Array)){vr();break}h.push(+i[++a])}else s=5;else s=4;else{if(0!==s&&3!==s){vr();break}s=1}}return l}function xr(e,t){"object"==typeof e&&(t=e.fragment,e=e.vertex),e=_r(e),t=_r(t),this._shaderID=function(e,t){var r="vertex:"+e+"fragment:"+t;if(mr[r])return mr[r];var i=ye.genGUID();return mr[r]=i,gr[i]={vertex:e,fragment:t},i}(e,t),this._vertexCode=xr.parseImport(e),this._fragmentCode=xr.parseImport(t),this.attributeSemantics={},this.matrixSemantics={},this.uniformSemantics={},this.matrixSemanticKeys=[],this.uniformTemplates={},this.attributes={},this.textures={},this.vertexDefines={},this.fragmentDefines={},this._parseAttributes(),this._parseUniforms(),this._parseDefines()}xr.prototype={constructor:xr,createUniforms:function(){var e={};for(var t in this.uniformTemplates){var r=this.uniformTemplates[t];e[t]={type:r.type,value:r.value()}}return e},_parseImport:function(){this._vertexCode=xr.parseImport(this.vertex),this._fragmentCode=xr.parseImport(this.fragment)},_addSemanticUniform:function(e,t,r){if(cr.indexOf(r)>=0)this.attributeSemantics[r]={symbol:e,type:t};else if(fr.indexOf(r)>=0){var i=!1,n=r;r.match(/TRANSPOSE$/)&&(i=!0,n=r.slice(0,-9)),this.matrixSemantics[r]={symbol:e,type:t,isTranspose:i,semanticNoTranspose:n}}else dr.indexOf(r)>=0&&(this.uniformSemantics[r]={symbol:e,type:t})},_addMaterialUniform:function(e,t,r,i,n,a){a[e]={type:r,value:n?ur.array:i||ur[t],semantic:null}},_parseUniforms:function(){var e={},t=this,r="vertex";function i(e){return null!=e?function(){return e}:null}function n(n,a,o){var s=yr(a,o),l=[];for(var h in s){var u=s[h],c=u.semantic,d=h,f=lr[a],p=i(s[h].value);s[h].isArray&&(d+="["+s[h].arraySize+"]",f+="v"),l.push(d),t._uniformList.push(h),u.ignore||("sampler2D"!==a&&"samplerCube"!==a||(t.textures[h]={shaderType:r,type:a}),c?t._addSemanticUniform(h,f,c):t._addMaterialUniform(h,a,f,p,s[h].isArray,e))}return l.length>0?"uniform "+a+" "+l.join(",")+";\n":""}this._uniformList=[],this._vertexCode=this._vertexCode.replace(ar,n),r="fragment",this._fragmentCode=this._fragmentCode.replace(ar,n),t.matrixSemanticKeys=Object.keys(this.matrixSemantics),this.uniformTemplates=e},_parseAttributes:function(){var e={},t=this;this._vertexCode=this._vertexCode.replace(or,function(r,i,n){var a=yr(i,n),o=pr[i]||1,s=[];for(var l in a){var h=a[l].semantic;if(e[l]={type:"float",size:o,semantic:h||null},h){if(cr.indexOf(h)<0)throw new Error('Unkown semantic "'+h+'"');t.attributeSemantics[h]={symbol:l,type:i}}s.push(l)}return"attribute "+i+" "+s.join(",")+";\n"}),this.attributes=e},_parseDefines:function(){var e=this,t="vertex";function r(r,i,n){var a="vertex"===t?e.vertexDefines:e.fragmentDefines;return a[i]||(a[i]="false"!==n&&("true"===n||(n?isNaN(parseFloat(n))?n.trim():parseFloat(n):null))),""}this._vertexCode=this._vertexCode.replace(sr,r),t="fragment",this._fragmentCode=this._fragmentCode.replace(sr,r)},clone:function(){var e=gr[this._shaderID];return new xr(e.vertex,e.fragment)}},Object.defineProperty&&(Object.defineProperty(xr.prototype,"shaderID",{get:function(){return this._shaderID}}),Object.defineProperty(xr.prototype,"vertex",{get:function(){return this._vertexCode}}),Object.defineProperty(xr.prototype,"fragment",{get:function(){return this._fragmentCode}}),Object.defineProperty(xr.prototype,"uniforms",{get:function(){return this._uniformList}}));var br=/(@import)\s*([0-9a-zA-Z_\-\.]*)/g;xr.parseImport=function(e){return e=e.replace(br,function(e,t,r){return(e=xr.source(r))?xr.parseImport(e):(console.error('Shader chunk "'+r+'" not existed in library'),"")})};var Tr=/(@export)\s*([0-9a-zA-Z_\-\.]*)\s*\n([\s\S]*?)@end/g;xr.import=function(e){e.replace(Tr,function(e,t,r,i){if(i=i.replace(/(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+\x24)/g,"")){for(var n,a=r.split("."),o=xr.codes,s=0;s0&&(a=1/Math.sqrt(a),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a),e},Mr.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},Mr.cross=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[0],s=r[1],l=r[2];return e[0]=n*l-a*s,e[1]=a*o-i*l,e[2]=i*s-n*o,e},Mr.lerp=function(e,t,r,i){var n=t[0],a=t[1],o=t[2];return e[0]=n+i*(r[0]-n),e[1]=a+i*(r[1]-a),e[2]=o+i*(r[2]-o),e},Mr.random=function(e,t){t=t||1;var r=2*Xt()*Math.PI,i=2*Xt()-1,n=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(r)*n,e[1]=Math.sin(r)*n,e[2]=i*t,e},Mr.transformMat4=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[3]*i+r[7]*n+r[11]*a+r[15];return o=o||1,e[0]=(r[0]*i+r[4]*n+r[8]*a+r[12])/o,e[1]=(r[1]*i+r[5]*n+r[9]*a+r[13])/o,e[2]=(r[2]*i+r[6]*n+r[10]*a+r[14])/o,e},Mr.transformMat3=function(e,t,r){var i=t[0],n=t[1],a=t[2];return e[0]=i*r[0]+n*r[3]+a*r[6],e[1]=i*r[1]+n*r[4]+a*r[7],e[2]=i*r[2]+n*r[5]+a*r[8],e},Mr.transformQuat=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[0],s=r[1],l=r[2],h=r[3],u=h*i+s*a-l*n,c=h*n+l*i-o*a,d=h*a+o*n-s*i,f=-o*i-s*n-l*a;return e[0]=u*h+f*-o+c*-l-d*-s,e[1]=c*h+f*-s+d*-o-u*-l,e[2]=d*h+f*-l+u*-s-c*-o,e},Mr.rotateX=function(e,t,r,i){var n=[],a=[];return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],a[0]=n[0],a[1]=n[1]*Math.cos(i)-n[2]*Math.sin(i),a[2]=n[1]*Math.sin(i)+n[2]*Math.cos(i),e[0]=a[0]+r[0],e[1]=a[1]+r[1],e[2]=a[2]+r[2],e},Mr.rotateY=function(e,t,r,i){var n=[],a=[];return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],a[0]=n[2]*Math.sin(i)+n[0]*Math.cos(i),a[1]=n[1],a[2]=n[2]*Math.cos(i)-n[0]*Math.sin(i),e[0]=a[0]+r[0],e[1]=a[1]+r[1],e[2]=a[2]+r[2],e},Mr.rotateZ=function(e,t,r,i){var n=[],a=[];return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],a[0]=n[0]*Math.cos(i)-n[1]*Math.sin(i),a[1]=n[0]*Math.sin(i)+n[1]*Math.cos(i),a[2]=n[2],e[0]=a[0]+r[0],e[1]=a[1]+r[1],e[2]=a[2]+r[2],e},Mr.forEach=function(){var e=Mr.create();return function(t,r,i,n,a,o){var s,l;for(r||(r=3),i||(i=0),l=n?Math.min(n*r+i,t.length):t.length,s=i;s1?0:Math.acos(n)},xr.import(wr);var Ar=Sr.create,Er={};function Dr(e){return e.material}function Cr(e,t,r){return t.uniforms[r].value}function Lr(e,t,r,i){return r!==i}function Pr(e){return!0}function Or(){}var Nr={float:Ze,byte:Ve,ubyte:ke,short:We,ushort:je};function Rr(e,t,r){this.availableAttributes=e,this.availableAttributeSymbols=t,this.indicesBuffer=r,this.vao=null}function Ir(e){var t,r;this.bind=function(e){t||((t=bt.createCanvas()).width=t.height=1,t.getContext("2d"));var i=e.gl,n=!r;n&&(r=i.createTexture()),i.bindTexture(i.TEXTURE_2D,r),n&&i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,t)},this.unbind=function(e){e.gl.bindTexture(e.gl.TEXTURE_2D,null)},this.isRenderable=function(){return!0}}var Br=xe.extend(function(){return{canvas:null,_width:100,_height:100,devicePixelRatio:"undefined"!=typeof window&&window.devicePixelRatio||1,clearColor:[0,0,0,0],clearBit:17664,alpha:!0,depth:!0,stencil:!1,antialias:!0,premultipliedAlpha:!0,preserveDrawingBuffer:!1,throwError:!0,gl:null,viewport:{},maxJointNumber:20,__currentFrameBuffer:null,_viewportStack:[],_clearStack:[],_sceneRendering:null}},function(){this.canvas||(this.canvas=bt.createCanvas());var e=this.canvas;try{var t={alpha:this.alpha,depth:this.depth,stencil:this.stencil,antialias:this.antialias,premultipliedAlpha:this.premultipliedAlpha,preserveDrawingBuffer:this.preserveDrawingBuffer};if(this.gl=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),!this.gl)throw new Error;this._glinfo=new we(this.gl),this.gl.targetRenderer&&console.error("Already created a renderer"),this.gl.targetRenderer=this,this.resize()}catch(r){throw"Error creating WebGL Context "+r}this._programMgr=new nr(this),this._placeholderTexture=new Ir},{resize:function(e,t){var r=this.canvas,i=this.devicePixelRatio;null!=e?(r.style&&(r.style.width=e+"px",r.style.height=t+"px"),r.width=e*i,r.height=t*i,this._width=e,this._height=t):(this._width=r.width/i,this._height=r.height/i),this.setViewport(0,0,this._width,this._height)},getWidth:function(){return this._width},getHeight:function(){return this._height},getViewportAspect:function(){var e=this.viewport;return e.width/e.height},setDevicePixelRatio:function(e){this.devicePixelRatio=e,this.resize(this._width,this._height)},getDevicePixelRatio:function(){return this.devicePixelRatio},getGLExtension:function(e){return this._glinfo.getExtension(e)},getGLParameter:function(e){return this._glinfo.getParameter(e)},setViewport:function(e,t,r,i,n){if("object"==typeof e){var a=e;e=a.x,t=a.y,r=a.width,i=a.height,n=a.devicePixelRatio}n=n||this.devicePixelRatio,this.gl.viewport(e*n,t*n,r*n,i*n),this.viewport={x:e,y:t,width:r,height:i,devicePixelRatio:n}},saveViewport:function(){this._viewportStack.push(this.viewport)},restoreViewport:function(){this._viewportStack.length>0&&this.setViewport(this._viewportStack.pop())},saveClear:function(){this._clearStack.push({clearBit:this.clearBit,clearColor:this.clearColor})},restoreClear:function(){if(this._clearStack.length>0){var e=this._clearStack.pop();this.clearColor=e.clearColor,this.clearBit=e.clearBit}},bindSceneRendering:function(e){this._sceneRendering=e},render:function(e,t,r,i){var n=this.gl,a=this.clearColor;if(this.clearBit){n.colorMask(!0,!0,!0,!0),n.depthMask(!0);var o=this.viewport,s=!1,l=o.devicePixelRatio;(o.width!==this._width||o.height!==this._height||l&&l!==this.devicePixelRatio||o.x||o.y)&&(s=!0,n.enable(n.SCISSOR_TEST),n.scissor(o.x*l,o.y*l,o.width*l,o.height*l)),n.clearColor(a[0],a[1],a[2],a[3]),n.clear(this.clearBit),s&&n.disable(n.SCISSOR_TEST)}if(r||e.update(!1),e.updateLights(),t=t||e.getMainCamera()){t.update();var h=e.updateRenderList(t,!0);this._sceneRendering=e;var u=h.opaque,c=h.transparent,d=e.material;e.trigger("beforerender",this,e,t,h),i?(this.renderPreZ(u,e,t),n.depthFunc(n.LEQUAL)):n.depthFunc(n.LESS);for(var f=Ar(),p=Mr.create(),m=0;m0){var s=e[n-1],l=s.joints?s.joints.length:0;if((a.joints?a.joints.length:0)===l&&a.material===s.material&&a.lightGroup===s.lightGroup){a.__program=s.__program;continue}}var h=this._programMgr.getProgram(a,o,t);this.validateProgram(h),a.__program=h}},renderPass:function(e,t,r){this.trigger("beforerenderpass",this,e,t,r),(r=r||{}).getMaterial=r.getMaterial||Dr,r.getUniform=r.getUniform||Cr,r.isMaterialChanged=r.isMaterialChanged||Lr,r.beforeRender=r.beforeRender||Or,r.afterRender=r.afterRender||Or;var i=r.ifRender||Pr;this.updatePrograms(e,this._sceneRendering,r),r.sortCompare&&e.sort(r.sortCompare);var n=this.viewport,a=n.devicePixelRatio,o=[n.x*a,n.y*a,n.width*a,n.height*a],s=this.devicePixelRatio,l=this.__currentFrameBuffer?[this.__currentFrameBuffer.getTextureWidth(),this.__currentFrameBuffer.getTextureHeight()]:[this._width*s,this._height*s],h=[o[2],o[3]],u=Date.now();t?(Sr.copy(zr.VIEW,t.viewMatrix.array),Sr.copy(zr.PROJECTION,t.projectionMatrix.array),Sr.copy(zr.VIEWINVERSE,t.worldTransform.array)):(Sr.identity(zr.VIEW),Sr.identity(zr.PROJECTION),Sr.identity(zr.VIEWINVERSE)),Sr.multiply(zr.VIEWPROJECTION,zr.PROJECTION,zr.VIEW),Sr.invert(zr.PROJECTIONINVERSE,zr.PROJECTION),Sr.invert(zr.VIEWPROJECTIONINVERSE,zr.VIEWPROJECTION);for(var c,d,f,p,m,g,_,v,y,x,b,T,w=this.gl,S=this._sceneRendering,M=0;Mthis.getMaxJointNumber()){var a=n.getSubSkinMatricesTexture(e.__uid__,e.joints);t.useTextureSlot(this,a,r),t.setUniform(i,"1i","skinMatricesTexture",r),t.setUniform(i,"1f","skinMatricesTextureSize",a.width)}else{var o=n.getSubSkinMatrices(e.__uid__,e.joints);t.setUniformOfSemantic(i,"SKIN_MATRIX",o)}},_renderObject:function(e,t,r){var i=this.gl,n=e.geometry,a=e.mode;null==a&&(a=4);var o=null,s=e.isInstancedMesh&&e.isInstancedMesh();if(!s||(o=this.getGLExtension("ANGLE_instanced_arrays"))){var l;if(s&&(l=this._bindInstancedAttributes(e,r,o)),t.indicesBuffer){var h=this.getGLExtension("OES_element_index_uint")&&n.indices instanceof Uint32Array?i.UNSIGNED_INT:i.UNSIGNED_SHORT;s?o.drawElementsInstancedANGLE(a,t.indicesBuffer.count,h,0,e.getInstanceCount()):i.drawElements(a,t.indicesBuffer.count,h,0)}else s?o.drawArraysInstancedANGLE(a,0,n.vertexCount,e.getInstanceCount()):i.drawArrays(a,0,n.vertexCount);if(s)for(var u=0;ur?r:e}Fr.add=function(e,t,r){return Mr.add(e.array,t.array,r.array),e._dirty=!0,e},Fr.set=function(e,t,r,i){Mr.set(e.array,t,r,i),e._dirty=!0},Fr.copy=function(e,t){return Mr.copy(e.array,t.array),e._dirty=!0,e},Fr.cross=function(e,t,r){return Mr.cross(e.array,t.array,r.array),e._dirty=!0,e},Fr.dist=function(e,t){return Mr.distance(e.array,t.array)},Fr.distance=Fr.dist,Fr.div=function(e,t,r){return Mr.divide(e.array,t.array,r.array),e._dirty=!0,e},Fr.divide=Fr.div,Fr.dot=function(e,t){return Mr.dot(e.array,t.array)},Fr.len=function(e){return Mr.length(e.array)},Fr.lerp=function(e,t,r,i){return Mr.lerp(e.array,t.array,r.array,i),e._dirty=!0,e},Fr.min=function(e,t,r){return Mr.min(e.array,t.array,r.array),e._dirty=!0,e},Fr.max=function(e,t,r){return Mr.max(e.array,t.array,r.array),e._dirty=!0,e},Fr.mul=function(e,t,r){return Mr.multiply(e.array,t.array,r.array),e._dirty=!0,e},Fr.multiply=Fr.mul,Fr.negate=function(e,t){return Mr.negate(e.array,t.array),e._dirty=!0,e},Fr.normalize=function(e,t){return Mr.normalize(e.array,t.array),e._dirty=!0,e},Fr.random=function(e,t){return Mr.random(e.array,t),e._dirty=!0,e},Fr.scale=function(e,t,r){return Mr.scale(e.array,t.array,r),e._dirty=!0,e},Fr.scaleAndAdd=function(e,t,r,i){return Mr.scaleAndAdd(e.array,t.array,r.array,i),e._dirty=!0,e},Fr.sqrDist=function(e,t){return Mr.sqrDist(e.array,t.array)},Fr.squaredDistance=Fr.sqrDist,Fr.sqrLen=function(e){return Mr.sqrLen(e.array)},Fr.squaredLength=Fr.sqrLen,Fr.sub=function(e,t,r){return Mr.subtract(e.array,t.array,r.array),e._dirty=!0,e},Fr.subtract=Fr.sub,Fr.transformMat3=function(e,t,r){return Mr.transformMat3(e.array,t.array,r.array),e._dirty=!0,e},Fr.transformMat4=function(e,t,r){return Mr.transformMat4(e.array,t.array,r.array),e._dirty=!0,e},Fr.transformQuat=function(e,t,r){return Mr.transformQuat(e.array,t.array,r.array),e._dirty=!0,e};var Vr=Math.atan2,kr=Math.asin,Wr=Math.abs;Fr.eulerFromQuat=function(e,t,r){e._dirty=!0,t=t.array;var i=e.array,n=t[0],a=t[1],o=t[2],s=t[3],l=n*n,h=a*a,u=o*o,c=s*s;switch(r=(r||"XYZ").toUpperCase()){case"XYZ":i[0]=Vr(2*(n*s-a*o),c-l-h+u),i[1]=kr(Hr(2*(n*o+a*s),-1,1)),i[2]=Vr(2*(o*s-n*a),c+l-h-u);break;case"YXZ":i[0]=kr(Hr(2*(n*s-a*o),-1,1)),i[1]=Vr(2*(n*o+a*s),c-l-h+u),i[2]=Vr(2*(n*a+o*s),c-l+h-u);break;case"ZXY":i[0]=kr(Hr(2*(n*s+a*o),-1,1)),i[1]=Vr(2*(a*s-o*n),c-l-h+u),i[2]=Vr(2*(o*s-n*a),c-l+h-u);break;case"ZYX":i[0]=Vr(2*(n*s+o*a),c-l-h+u),i[1]=kr(Hr(2*(a*s-n*o),-1,1)),i[2]=Vr(2*(n*a+o*s),c+l-h-u);break;case"YZX":i[0]=Vr(2*(n*s-o*a),c-l+h-u),i[1]=Vr(2*(a*s-n*o),c+l-h-u),i[2]=kr(Hr(2*(n*a+o*s),-1,1));break;case"XZY":i[0]=Vr(2*(n*s+a*o),c-l+h-u),i[1]=Vr(2*(n*o+a*s),c+l-h-u),i[2]=kr(Hr(2*(o*s-n*a),-1,1));break;default:console.warn("Unkown order: "+r)}return e},Fr.eulerFromMat3=function(e,t,r){var i=t.array,n=i[0],a=i[3],o=i[6],s=i[1],l=i[4],h=i[7],u=i[2],c=i[5],d=i[8],f=e.array;switch(r=(r||"XYZ").toUpperCase()){case"XYZ":f[1]=kr(Hr(o,-1,1)),Wr(o)<.99999?(f[0]=Vr(-h,d),f[2]=Vr(-a,n)):(f[0]=Vr(c,l),f[2]=0);break;case"YXZ":f[0]=kr(-Hr(h,-1,1)),Wr(h)<.99999?(f[1]=Vr(o,d),f[2]=Vr(s,l)):(f[1]=Vr(-u,n),f[2]=0);break;case"ZXY":f[0]=kr(Hr(c,-1,1)),Wr(c)<.99999?(f[1]=Vr(-u,d),f[2]=Vr(-a,l)):(f[1]=0,f[2]=Vr(s,n));break;case"ZYX":f[1]=kr(-Hr(u,-1,1)),Wr(u)<.99999?(f[0]=Vr(c,d),f[2]=Vr(s,n)):(f[0]=0,f[2]=Vr(-a,l));break;case"YZX":f[2]=kr(Hr(s,-1,1)),Wr(s)<.99999?(f[0]=Vr(-h,l),f[1]=Vr(-u,n)):(f[0]=0,f[1]=Vr(o,d));break;case"XZY":f[2]=kr(-Hr(a,-1,1)),Wr(a)<.99999?(f[0]=Vr(c,l),f[1]=Vr(o,n)):(f[0]=Vr(-h,d),f[1]=0);break;default:console.warn("Unkown order: "+r)}return e._dirty=!0,e},Object.defineProperties(Fr,{POSITIVE_X:{get:function(){return new Fr(1,0,0)}},NEGATIVE_X:{get:function(){return new Fr(-1,0,0)}},POSITIVE_Y:{get:function(){return new Fr(0,1,0)}},NEGATIVE_Y:{get:function(){return new Fr(0,-1,0)}},POSITIVE_Z:{get:function(){return new Fr(0,0,1)}},NEGATIVE_Z:{get:function(){return new Fr(0,0,-1)}},UP:{get:function(){return new Fr(0,1,0)}},ZERO:{get:function(){return new Fr}}});var jr,Xr,qr,Zr,Yr,Kr=1e-5,Qr=function(e,t){this.origin=e||new Fr,this.direction=t||new Fr};Qr.prototype={constructor:Qr,intersectPlane:function(e,t){var r=e.normal.array,i=e.distance,n=this.origin.array,a=this.direction.array,o=Mr.dot(r,a);if(0===o)return null;t||(t=new Fr);var s=(Mr.dot(r,n)-i)/o;return Mr.scaleAndAdd(t.array,n,a,-s),t._dirty=!0,t},mirrorAgainstPlane:function(e){var t=Mr.dot(e.normal.array,this.direction.array);Mr.scaleAndAdd(this.direction.array,this.direction.array,e.normal.array,2*-t),this.direction._dirty=!0},distanceToPoint:(Yr=Mr.create(),function(e){Mr.sub(Yr,e,this.origin.array);var t=Mr.dot(Yr,this.direction.array);if(t<0)return Mr.distance(this.origin.array,e);var r=Mr.lenSquared(Yr);return Math.sqrt(r-t*t)}),intersectSphere:function(){var e=Mr.create();return function(t,r,i){var n=this.origin.array,a=this.direction.array;t=t.array,Mr.sub(e,t,n);var o=Mr.dot(e,a),s=Mr.squaredLength(e)-o*o,l=r*r;if(!(s>l)){var h=Math.sqrt(l-s),u=o-h,c=o+h;return i||(i=new Fr),u<0?c<0?null:(Mr.scaleAndAdd(i.array,n,a,c),i):(Mr.scaleAndAdd(i.array,n,a,u),i)}}}(),intersectBoundingBox:function(e,t){var r,i,n,a,o,s,l=this.direction.array,h=this.origin.array,u=e.min.array,c=e.max.array,d=1/l[0],f=1/l[1],p=1/l[2];if(d>=0?(r=(u[0]-h[0])*d,i=(c[0]-h[0])*d):(i=(u[0]-h[0])*d,r=(c[0]-h[0])*d),f>=0?(n=(u[1]-h[1])*f,a=(c[1]-h[1])*f):(a=(u[1]-h[1])*f,n=(c[1]-h[1])*f),r>a||n>i)return null;if((n>r||r!=r)&&(r=n),(a=0?(o=(u[2]-h[2])*p,s=(c[2]-h[2])*p):(s=(u[2]-h[2])*p,o=(c[2]-h[2])*p),r>s||o>i)return null;if((o>r||r!=r)&&(r=o),(s=0?r:i;return t||(t=new Fr),Mr.scaleAndAdd(t.array,h,l,m),t},intersectTriangle:(jr=Mr.create(),Xr=Mr.create(),qr=Mr.create(),Zr=Mr.create(),function(e,t,r,i,n,a){var o=this.direction.array,s=this.origin.array;e=e.array,t=t.array,r=r.array,Mr.sub(jr,t,e),Mr.sub(Xr,r,e),Mr.cross(Zr,Xr,o);var l=Mr.dot(jr,Zr);if(i){if(l>-1e-5)return null}else if(l>-1e-5&&l1)return null;Mr.cross(Zr,jr,qr);var u=Mr.dot(o,Zr)/l;if(u<0||u>1||h+u>1)return null;Mr.cross(Zr,jr,Xr);var c=-Mr.dot(qr,Zr)/l;return c<0?null:(n||(n=new Fr),a&&Fr.set(a,1-h-u,h,u),Mr.scaleAndAdd(n.array,s,o,c),n)}),applyTransform:function(e){Fr.add(this.direction,this.direction,this.origin),Fr.transformMat4(this.origin,this.origin,e),Fr.transformMat4(this.direction,this.direction,e),Fr.sub(this.direction,this.direction,this.origin),Fr.normalize(this.direction,this.direction)},copy:function(e){Fr.copy(this.origin,e.origin),Fr.copy(this.direction,e.direction)},clone:function(){var e=new Qr;return e.copy(this),e}};var Jr={create:function(){var e=new jt(4);return e[0]=0,e[1]=0,e[2]=0,e[3]=0,e},clone:function(e){var t=new jt(4);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t},fromValues:function(e,t,r,i){var n=new jt(4);return n[0]=e,n[1]=t,n[2]=r,n[3]=i,n},copy:function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e},set:function(e,t,r,i,n){return e[0]=t,e[1]=r,e[2]=i,e[3]=n,e},add:function(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e},subtract:function(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e[3]=t[3]-r[3],e}};Jr.sub=Jr.subtract,Jr.multiply=function(e,t,r){return e[0]=t[0]*r[0],e[1]=t[1]*r[1],e[2]=t[2]*r[2],e[3]=t[3]*r[3],e},Jr.mul=Jr.multiply,Jr.divide=function(e,t,r){return e[0]=t[0]/r[0],e[1]=t[1]/r[1],e[2]=t[2]/r[2],e[3]=t[3]/r[3],e},Jr.div=Jr.divide,Jr.min=function(e,t,r){return e[0]=Math.min(t[0],r[0]),e[1]=Math.min(t[1],r[1]),e[2]=Math.min(t[2],r[2]),e[3]=Math.min(t[3],r[3]),e},Jr.max=function(e,t,r){return e[0]=Math.max(t[0],r[0]),e[1]=Math.max(t[1],r[1]),e[2]=Math.max(t[2],r[2]),e[3]=Math.max(t[3],r[3]),e},Jr.scale=function(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e},Jr.scaleAndAdd=function(e,t,r,i){return e[0]=t[0]+r[0]*i,e[1]=t[1]+r[1]*i,e[2]=t[2]+r[2]*i,e[3]=t[3]+r[3]*i,e},Jr.distance=function(e,t){var r=t[0]-e[0],i=t[1]-e[1],n=t[2]-e[2],a=t[3]-e[3];return Math.sqrt(r*r+i*i+n*n+a*a)},Jr.dist=Jr.distance,Jr.squaredDistance=function(e,t){var r=t[0]-e[0],i=t[1]-e[1],n=t[2]-e[2],a=t[3]-e[3];return r*r+i*i+n*n+a*a},Jr.sqrDist=Jr.squaredDistance,Jr.length=function(e){var t=e[0],r=e[1],i=e[2],n=e[3];return Math.sqrt(t*t+r*r+i*i+n*n)},Jr.len=Jr.length,Jr.squaredLength=function(e){var t=e[0],r=e[1],i=e[2],n=e[3];return t*t+r*r+i*i+n*n},Jr.sqrLen=Jr.squaredLength,Jr.negate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e},Jr.inverse=function(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e[3]=1/t[3],e},Jr.normalize=function(e,t){var r=t[0],i=t[1],n=t[2],a=t[3],o=r*r+i*i+n*n+a*a;return o>0&&(o=1/Math.sqrt(o),e[0]=t[0]*o,e[1]=t[1]*o,e[2]=t[2]*o,e[3]=t[3]*o),e},Jr.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]},Jr.lerp=function(e,t,r,i){var n=t[0],a=t[1],o=t[2],s=t[3];return e[0]=n+i*(r[0]-n),e[1]=a+i*(r[1]-a),e[2]=o+i*(r[2]-o),e[3]=s+i*(r[3]-s),e},Jr.random=function(e,t){return t=t||1,e[0]=Xt(),e[1]=Xt(),e[2]=Xt(),e[3]=Xt(),Jr.normalize(e,e),Jr.scale(e,e,t),e},Jr.transformMat4=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=t[3];return e[0]=r[0]*i+r[4]*n+r[8]*a+r[12]*o,e[1]=r[1]*i+r[5]*n+r[9]*a+r[13]*o,e[2]=r[2]*i+r[6]*n+r[10]*a+r[14]*o,e[3]=r[3]*i+r[7]*n+r[11]*a+r[15]*o,e},Jr.transformQuat=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[0],s=r[1],l=r[2],h=r[3],u=h*i+s*a-l*n,c=h*n+l*i-o*a,d=h*a+o*n-s*i,f=-o*i-s*n-l*a;return e[0]=u*h+f*-o+c*-l-d*-s,e[1]=c*h+f*-s+d*-o-u*-l,e[2]=d*h+f*-l+u*-s-c*-o,e},Jr.forEach=function(){var e=Jr.create();return function(t,r,i,n,a,o){var s,l;for(r||(r=4),i||(i=0),l=n?Math.min(n*r+i,t.length):t.length,s=i;s.999999?(e[0]=0,e[1]=0,e[2]=0,e[3]=1,e):(Mr.cross(ei,t,r),e[0]=ei[0],e[1]=ei[1],e[2]=ei[2],e[3]=1+i,ni.normalize(e,e))}),ni.setAxes=(ii=$r.create(),function(e,t,r,i){return ii[0]=r[0],ii[3]=r[1],ii[6]=r[2],ii[1]=i[0],ii[4]=i[1],ii[7]=i[2],ii[2]=-t[0],ii[5]=-t[1],ii[8]=-t[2],ni.normalize(e,ni.fromMat3(e,ii))}),ni.clone=Jr.clone,ni.fromValues=Jr.fromValues,ni.copy=Jr.copy,ni.set=Jr.set,ni.identity=function(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e},ni.setAxisAngle=function(e,t,r){r*=.5;var i=Math.sin(r);return e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=Math.cos(r),e},ni.add=Jr.add,ni.multiply=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=t[3],s=r[0],l=r[1],h=r[2],u=r[3];return e[0]=i*u+o*s+n*h-a*l,e[1]=n*u+o*l+a*s-i*h,e[2]=a*u+o*h+i*l-n*s,e[3]=o*u-i*s-n*l-a*h,e},ni.mul=ni.multiply,ni.scale=Jr.scale,ni.rotateX=function(e,t,r){r*=.5;var i=t[0],n=t[1],a=t[2],o=t[3],s=Math.sin(r),l=Math.cos(r);return e[0]=i*l+o*s,e[1]=n*l+a*s,e[2]=a*l-n*s,e[3]=o*l-i*s,e},ni.rotateY=function(e,t,r){r*=.5;var i=t[0],n=t[1],a=t[2],o=t[3],s=Math.sin(r),l=Math.cos(r);return e[0]=i*l-a*s,e[1]=n*l+o*s,e[2]=a*l+i*s,e[3]=o*l-n*s,e},ni.rotateZ=function(e,t,r){r*=.5;var i=t[0],n=t[1],a=t[2],o=t[3],s=Math.sin(r),l=Math.cos(r);return e[0]=i*l+n*s,e[1]=n*l-i*s,e[2]=a*l+o*s,e[3]=o*l-a*s,e},ni.calculateW=function(e,t){var r=t[0],i=t[1],n=t[2];return e[0]=r,e[1]=i,e[2]=n,e[3]=Math.sqrt(Math.abs(1-r*r-i*i-n*n)),e},ni.dot=Jr.dot,ni.lerp=Jr.lerp,ni.slerp=function(e,t,r,i){var n,a,o,s,l,h=t[0],u=t[1],c=t[2],d=t[3],f=r[0],p=r[1],m=r[2],g=r[3];return(a=h*f+u*p+c*m+d*g)<0&&(a=-a,f=-f,p=-p,m=-m,g=-g),1-a>1e-6?(n=Math.acos(a),o=Math.sin(n),s=Math.sin((1-i)*n)/o,l=Math.sin(i*n)/o):(s=1-i,l=i),e[0]=s*h+l*f,e[1]=s*u+l*p,e[2]=s*c+l*m,e[3]=s*d+l*g,e},ni.invert=function(e,t){var r=t[0],i=t[1],n=t[2],a=t[3],o=r*r+i*i+n*n+a*a,s=o?1/o:0;return e[0]=-r*s,e[1]=-i*s,e[2]=-n*s,e[3]=a*s,e},ni.conjugate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e},ni.length=Jr.length,ni.len=ni.length,ni.squaredLength=Jr.squaredLength,ni.sqrLen=ni.squaredLength,ni.normalize=Jr.normalize,ni.fromMat3=function(e,t){var r,i=t[0]+t[4]+t[8];if(i>0)r=Math.sqrt(i+1),e[3]=.5*r,r=.5/r,e[0]=(t[5]-t[7])*r,e[1]=(t[6]-t[2])*r,e[2]=(t[1]-t[3])*r;else{var n=0;t[4]>t[0]&&(n=1),t[8]>t[3*n+n]&&(n=2);var a=(n+1)%3,o=(n+2)%3;r=Math.sqrt(t[3*n+n]-t[3*a+a]-t[3*o+o]+1),e[n]=.5*r,r=.5/r,e[3]=(t[3*a+o]-t[3*o+a])*r,e[a]=(t[3*a+n]+t[3*n+a])*r,e[o]=(t[3*o+n]+t[3*n+o])*r}return e};var ai,oi,si,li,hi=function(){this._axisX=new Fr,this._axisY=new Fr,this._axisZ=new Fr,this.array=Sr.create(),this._dirty=!0};hi.prototype={constructor:hi,setArray:function(e){for(var t=0;t0){var t=this.min,r=this.max,i=t.array,n=r.array;Ti(i,e[0]),Ti(n,e[0]);for(var a=1;an[0]&&(n[0]=o[0]),o[1]>n[1]&&(n[1]=o[1]),o[2]>n[2]&&(n[2]=o[2])}t._dirty=!0,r._dirty=!0}},union:function(e){var t=this.min,r=this.max;return Mr.min(t.array,t.array,e.min.array),Mr.max(r.array,r.array,e.max.array),t._dirty=!0,r._dirty=!0,this},intersection:function(e){var t=this.min,r=this.max;return Mr.max(t.array,t.array,e.min.array),Mr.min(r.array,r.array,e.max.array),t._dirty=!0,r._dirty=!0,this},intersectBoundingBox:function(e){var t=this.min.array,r=this.max.array,i=e.min.array,n=e.max.array;return!(t[0]>n[0]||t[1]>n[1]||t[2]>n[2]||r[0]=n[0]&&r[1]>=n[1]&&r[2]>=n[2]},containPoint:function(e){var t=this.min.array,r=this.max.array,i=e.array;return t[0]<=i[0]&&t[1]<=i[1]&&t[2]<=i[2]&&r[0]>=i[0]&&r[1]>=i[1]&&r[2]>=i[2]},isFinite:function(){var e=this.min.array,t=this.max.array;return isFinite(e[0])&&isFinite(e[1])&&isFinite(e[2])&&isFinite(t[0])&&isFinite(t[1])&&isFinite(t[2])},applyTransform:function(e){this.transformFrom(this,e)},transformFrom:(mi=Mr.create(),gi=Mr.create(),_i=Mr.create(),vi=Mr.create(),yi=Mr.create(),xi=Mr.create(),function(e,t){var r=e.min.array,i=e.max.array,n=t.array;return mi[0]=n[0]*r[0],mi[1]=n[1]*r[0],mi[2]=n[2]*r[0],gi[0]=n[0]*i[0],gi[1]=n[1]*i[0],gi[2]=n[2]*i[0],_i[0]=n[4]*r[1],_i[1]=n[5]*r[1],_i[2]=n[6]*r[1],vi[0]=n[4]*i[1],vi[1]=n[5]*i[1],vi[2]=n[6]*i[1],yi[0]=n[8]*r[2],yi[1]=n[9]*r[2],yi[2]=n[10]*r[2],xi[0]=n[8]*i[2],xi[1]=n[9]*i[2],xi[2]=n[10]*i[2],r=this.min.array,i=this.max.array,r[0]=Math.min(mi[0],gi[0])+Math.min(_i[0],vi[0])+Math.min(yi[0],xi[0])+n[12],r[1]=Math.min(mi[1],gi[1])+Math.min(_i[1],vi[1])+Math.min(yi[1],xi[1])+n[13],r[2]=Math.min(mi[2],gi[2])+Math.min(_i[2],vi[2])+Math.min(yi[2],xi[2])+n[14],i[0]=Math.max(mi[0],gi[0])+Math.max(_i[0],vi[0])+Math.max(yi[0],xi[0])+n[12],i[1]=Math.max(mi[1],gi[1])+Math.max(_i[1],vi[1])+Math.max(yi[1],xi[1])+n[13],i[2]=Math.max(mi[2],gi[2])+Math.max(_i[2],vi[2])+Math.max(yi[2],xi[2])+n[14],this.min._dirty=!0,this.max._dirty=!0,this}),applyProjection:function(e){var t=this.min.array,r=this.max.array,i=e.array,n=t[0],a=t[1],o=t[2],s=r[0],l=r[1],h=t[2],u=r[0],c=r[1],d=r[2];if(1===i[15])t[0]=i[0]*n+i[12],t[1]=i[5]*a+i[13],r[2]=i[10]*o+i[14],r[0]=i[0]*u+i[12],r[1]=i[5]*c+i[13],t[2]=i[10]*d+i[14];else{var f=-1/o;t[0]=i[0]*n*f,t[1]=i[5]*a*f,r[2]=(i[10]*o+i[14])*f,f=-1/h,r[0]=i[0]*s*f,r[1]=i[5]*l*f,f=-1/d,t[2]=(i[10]*d+i[14])*f}return this.min._dirty=!0,this.max._dirty=!0,this},updateVertices:function(){var e=this.vertices;if(!e){e=[];for(var t=0;t<8;t++)e[t]=Mr.fromValues(0,0,0);this.vertices=e}var r=this.min.array,i=this.max.array;return bi(e[0],r[0],r[1],r[2]),bi(e[1],r[0],i[1],r[2]),bi(e[2],i[0],r[1],r[2]),bi(e[3],i[0],i[1],r[2]),bi(e[4],r[0],r[1],i[2]),bi(e[5],r[0],i[1],i[2]),bi(e[6],i[0],r[1],i[2]),bi(e[7],i[0],i[1],i[2]),this},copy:function(e){var t=this.min,r=this.max;return Ti(t.array,e.min.array),Ti(r.array,e.max.array),t._dirty=!0,r._dirty=!0,this},clone:function(){var e=new wi;return e.copy(this),e}};var Si,Mi,Ai=0,Ei=xe.extend({name:"",position:null,rotation:null,scale:null,worldTransform:null,localTransform:null,autoUpdateLocalTransform:!0,_parent:null,_scene:null,_needsUpdateWorldTransform:!0,_inIterating:!1,__depth:0},function(){this.name||(this.name=(this.type||"NODE")+"_"+Ai++),this.position||(this.position=new Fr),this.rotation||(this.rotation=new di),this.scale||(this.scale=new Fr(1,1,1)),this.worldTransform=new hi,this.localTransform=new hi,this._children=[]},{target:null,invisible:!1,isSkinnedMesh:function(){return!1},isRenderable:function(){return!1},setName:function(e){var t=this._scene;if(t){var r=t._nodeRepository;delete r[this.name],r[e]=this}this.name=e},add:function(e){var t=e._parent;if(t!==this){t&&t.remove(e),e._parent=this,this._children.push(e);var r=this._scene;r&&r!==e.scene&&e.traverse(this._addSelfToScene,this),e._needsUpdateWorldTransform=!0}},remove:function(e){var t=this._children,r=t.indexOf(e);r<0||(t.splice(r,1),e._parent=null,this._scene&&e.traverse(this._removeSelfFromScene,this))},removeAll:function(){for(var e=this._children,t=0;t0},beforeRender:function(e){},afterRender:function(e,t){},getBoundingBox:function(e,t){return t=Ei.prototype.getBoundingBox.call(this,e,t),this.geometry&&this.geometry.boundingBox&&t.union(this.geometry.boundingBox),t},clone:function(){var e=["castShadow","receiveShadow","mode","culling","cullFace","frontFace","frustumCulling","renderOrder","lineWidth","ignorePicking","ignorePreZ","ignoreGBuffer"];return function(){var t=Ei.prototype.clone.call(this);t.geometry=this.geometry,t.material=this.material;for(var r=0;r=0&&g[p]>1e-4&&(Mr.transformMat4(y,m,d[_[p]]),Mr.scaleAndAdd(v,v,y,g[p]));x.set(f,v)}}for(f=0;f>t;return e+1},dispose:function(e){var t=this._cache;t.use(e.__uid__);var r=t.get("webgl_texture");r&&e.gl.deleteTexture(r),t.deleteContext(e.__uid__)},isRenderable:function(){},isPowerOfTwo:function(){}});Object.defineProperty(zi.prototype,"width",{get:function(){return this._width},set:function(e){this._width=e}}),Object.defineProperty(zi.prototype,"height",{get:function(){return this._height},set:function(e){this._height=e}}),zi.BYTE=Ve,zi.UNSIGNED_BYTE=ke,zi.SHORT=We,zi.UNSIGNED_SHORT=je,zi.INT=Xe,zi.UNSIGNED_INT=qe,zi.FLOAT=Ze,zi.HALF_FLOAT=36193,zi.UNSIGNED_INT_24_8_WEBGL=34042,zi.DEPTH_COMPONENT=Ye,zi.DEPTH_STENCIL=pt,zi.ALPHA=Ke,zi.RGB=Qe,zi.RGBA=Je,zi.LUMINANCE=$e,zi.LUMINANCE_ALPHA=et,zi.SRGB=35904,zi.SRGB_ALPHA=35906,zi.COMPRESSED_RGB_S3TC_DXT1_EXT=33776,zi.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777,zi.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778,zi.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779,zi.NEAREST=tt,zi.LINEAR=rt,zi.NEAREST_MIPMAP_NEAREST=it,zi.LINEAR_MIPMAP_NEAREST=nt,zi.NEAREST_MIPMAP_LINEAR=at,zi.LINEAR_MIPMAP_LINEAR=ot,zi.REPEAT=ht,zi.CLAMP_TO_EDGE=ut,zi.MIRRORED_REPEAT=ct;var Fi=Di.extend({skeleton:null,joints:null},function(){this.joints||(this.joints=[])},{offsetMatrix:null,isInstancedMesh:function(){return!1},isSkinnedMesh:function(){return!!(this.skeleton&&this.joints&&this.joints.length>0)},clone:function(){var e=Di.prototype.clone.call(this);return e.skeleton=this.skeleton,this.joints&&(e.joints=this.joints.slice()),e}});Fi.POINTS=Ee,Fi.LINES=De,Fi.LINE_LOOP=Ce,Fi.LINE_STRIP=Le,Fi.TRIANGLES=Pe,Fi.TRIANGLE_STRIP=Oe,Fi.TRIANGLE_FAN=Ne,Fi.BACK=Fe,Fi.FRONT=ze,Fi.FRONT_AND_BACK=Ge,Fi.CW=Ue,Fi.CCW=He;var Gi={isPowerOfTwo:function(e){return!(e&e-1)},nextPowerOfTwo:function(e){return e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e},nearestPowerOfTwo:function(e){return Math.pow(2,Math.round(Math.log(e)/Math.LN2))}},Ui=Gi.isPowerOfTwo;function Hi(e){return Math.pow(2,Math.round(Math.log(e)/Math.LN2))}var Vi=zi.extend(function(){return{image:null,pixels:null,mipmaps:[],convertToPOT:!1}},{textureType:"texture2D",update:function(e){var t=e.gl;t.bindTexture(t.TEXTURE_2D,this._cache.get("webgl_texture")),this.updateCommon(e);var r=this.format,i=this.type,n=!(!this.convertToPOT||this.mipmaps.length||!this.image||this.wrapS!==zi.REPEAT&&this.wrapT!==zi.REPEAT||!this.NPOT);t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,n?this.wrapS:this.getAvailableWrapS()),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,n?this.wrapT:this.getAvailableWrapT()),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,n?this.magFilter:this.getAvailableMagFilter()),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,n?this.minFilter:this.getAvailableMinFilter());var a=e.getGLExtension("EXT_texture_filter_anisotropic");(a&&this.anisotropic>1&&t.texParameterf(t.TEXTURE_2D,a.TEXTURE_MAX_ANISOTROPY_EXT,this.anisotropic),36193===i)&&(e.getGLExtension("OES_texture_half_float")||(i=Ze));if(this.mipmaps.length)for(var o=this.width,s=this.height,l=0;l=zi.COMPRESSED_RGB_S3TC_DXT1_EXT?e.compressedTexImage2D(e.TEXTURE_2D,r,a,i,n,0,t.pixels):e.texImage2D(e.TEXTURE_2D,r,a,i,n,0,a,o,t.pixels)},generateMipmap:function(e){var t=e.gl;this.useMipmap&&!this.NPOT&&(t.bindTexture(t.TEXTURE_2D,this._cache.get("webgl_texture")),t.generateMipmap(t.TEXTURE_2D))},isPowerOfTwo:function(){return Ui(this.width)&&Ui(this.height)},isRenderable:function(){return this.image?this.image.width>0&&this.image.height>0:!(!this.width||!this.height)},bind:function(e){e.gl.bindTexture(e.gl.TEXTURE_2D,this.getWebGLTexture(e))},unbind:function(e){e.gl.bindTexture(e.gl.TEXTURE_2D,null)},load:function(e,t){var r=bt.createImage();t&&(r.crossOrigin=t);var i=this;return r.onload=function(){i.dirty(),i.trigger("success",i)},r.onerror=function(){i.trigger("error",i)},r.src=e,this.image=r,this}});function ki(e){return{byte:bt.Int8Array,ubyte:bt.Uint8Array,short:bt.Int16Array,ushort:bt.Uint16Array}[e]||bt.Float32Array}function Wi(e){return"attr_"+e}function ji(e,t,r,i){switch(this.name=e,this.type=t,this.size=r,this.semantic=i||"",this.value=null,r){case 1:this.get=function(e){return this.value[e]},this.set=function(e,t){this.value[e]=t},this.copy=function(e,t){this.value[e]=this.value[e]};break;case 2:this.get=function(e,t){var r=this.value;return t[0]=r[2*e],t[1]=r[2*e+1],t},this.set=function(e,t){var r=this.value;r[2*e]=t[0],r[2*e+1]=t[1]},this.copy=function(e,t){var r=this.value;t*=2,r[e*=2]=r[t],r[e+1]=r[t+1]};break;case 3:this.get=function(e,t){var r=3*e,i=this.value;return t[0]=i[r],t[1]=i[r+1],t[2]=i[r+2],t},this.set=function(e,t){var r=3*e,i=this.value;i[r]=t[0],i[r+1]=t[1],i[r+2]=t[2]},this.copy=function(e,t){var r=this.value;t*=3,r[e*=3]=r[t],r[e+1]=r[t+1],r[e+2]=r[t+2]};break;case 4:this.get=function(e,t){var r=this.value,i=4*e;return t[0]=r[i],t[1]=r[i+1],t[2]=r[i+2],t[3]=r[i+3],t},this.set=function(e,t){var r=this.value,i=4*e;r[i]=t[0],r[i+1]=t[1],r[i+2]=t[2],r[i+3]=t[3]},this.copy=function(e,t){var r=this.value;t*=4,r[e*=4]=r[t],r[e+1]=r[t+1],r[e+2]=r[t+2],r[e+3]=r[t+3]}}}function Xi(e,t,r,i,n){this.name=e,this.type=t,this.buffer=r,this.size=i,this.semantic=n,this.symbol="",this.needsRemove=!1}function qi(e){this.buffer=e,this.count=0}Object.defineProperty(Vi.prototype,"width",{get:function(){return this.image?this.image.width:this._width},set:function(e){this.image?console.warn("Texture from image can't set width"):(this._width!==e&&this.dirty(),this._width=e)}}),Object.defineProperty(Vi.prototype,"height",{get:function(){return this.image?this.image.height:this._height},set:function(e){this.image?console.warn("Texture from image can't set height"):(this._height!==e&&this.dirty(),this._height=e)}}),ji.prototype.init=function(e){if(!this.value||this.value.length!==e*this.size){var t=ki(this.type);this.value=new t(e*this.size)}},ji.prototype.fromArray=function(e){var t,r=ki(this.type);if(e[0]&&e[0].length){var i=0,n=this.size;t=new r(e.length*n);for(var a=0;a=0){t||(t=[]);var r=this.indices;return t[0]=r[3*e],t[1]=r[3*e+1],t[2]=r[3*e+2],t}},setTriangleIndices:function(e,t){var r=this.indices;r[3*e]=t[0],r[3*e+1]=t[1],r[3*e+2]=t[2]},isUseIndices:function(){return!!this.indices},initIndicesFromArray:function(e){var t,r=this.vertexCount>65535?bt.Uint32Array:bt.Uint16Array;if(e[0]&&e[0].length){var i=0;t=new r(3*e.length);for(var n=0;n=0&&(t.splice(r,1),delete this.attributes[e],!0)},getAttribute:function(e){return this.attributes[e]},getEnabledAttributes:function(){var e=this._enabledAttributes,t=this._attributeList;if(e)return e;for(var r=[],i=this.vertexCount,n=0;na[0]&&(a[0]=s),l>a[1]&&(a[1]=l),h>a[2]&&(a[2]=h)}r._dirty=!0,i._dirty=!0}},generateVertexNormals:function(){if(this.vertexCount){var e=this.indices,t=this.attributes,r=t.position.value,i=t.normal.value;if(i&&i.length===r.length)for(var n=0;n65535&&(this.indices=new bt.Uint32Array(this.indices));for(var e=this.attributes,t=this.indices,r=this.getEnabledAttributes(),i={},n=0;nthis.distance,n=1;n<8;n++)if(Mr.dot(t[n].array,r)>this.distance!=i)return!0},intersectLine:(un=Mr.create(),function(e,t,r){var i=this.distanceToPoint(e),n=this.distanceToPoint(t);if(i>0&&n>0||i<0&&n<0)return null;var a=this.normal.array,o=this.distance,s=e.array;Mr.sub(un,t.array,e.array),Mr.normalize(un,un);var l=Mr.dot(a,un);if(0===l)return null;r||(r=new Fr);var h=(Mr.dot(a,s)-o)/l;return Mr.scaleAndAdd(r.array,s,un,-h),r._dirty=!0,r}),applyTransform:(sn=Sr.create(),ln=Jr.create(),hn=Jr.create(),hn[3]=1,function(e){e=e.array,Mr.scale(hn,this.normal.array,this.distance),Jr.transformMat4(hn,hn,e),this.distance=Mr.dot(hn,this.normal.array),Sr.invert(sn,e),Sr.transpose(sn,sn),ln[3]=0,Mr.copy(ln,this.normal.array),Jr.transformMat4(ln,ln,sn),Mr.copy(this.normal.array,ln)}),copy:function(e){Mr.copy(this.normal.array,e.normal.array),this.normal._dirty=!0,this.distance=e.distance},clone:function(){var e=new dn;return e.copy(this),e}};var fn,pn=Mr.set,mn=Mr.copy,gn=Mr.transformMat4,_n=Math.min,vn=Math.max,yn=function(){this.planes=[];for(var e=0;e<6;e++)this.planes.push(new dn);this.boundingBox=new wi,this.vertices=[];for(e=0;e<8;e++)this.vertices[e]=Mr.fromValues(0,0,0)};yn.prototype={setFromProjection:function(e){var t=this.planes,r=e.array,i=r[0],n=r[1],a=r[2],o=r[3],s=r[4],l=r[5],h=r[6],u=r[7],c=r[8],d=r[9],f=r[10],p=r[11],m=r[12],g=r[13],_=r[14],v=r[15];pn(t[0].normal.array,o-i,u-s,p-c),t[0].distance=-(v-m),t[0].normalize(),pn(t[1].normal.array,o+i,u+s,p+c),t[1].distance=-(v+m),t[1].normalize(),pn(t[2].normal.array,o+n,u+l,p+d),t[2].distance=-(v+g),t[2].normalize(),pn(t[3].normal.array,o-n,u-l,p-d),t[3].distance=-(v-g),t[3].normalize(),pn(t[4].normal.array,o-a,u-h,p-f),t[4].distance=-(v-_),t[4].normalize(),pn(t[5].normal.array,o+a,u+h,p+f),t[5].distance=-(v+_),t[5].normalize();var y=this.boundingBox,x=this.vertices;if(0===v){var b=l/i,T=-_/(f-1),w=-_/(f+1),S=-w/l,M=-T/l;y.min.set(-S*b,-S,w),y.max.set(S*b,S,T),pn(x[0],-S*b,-S,w),pn(x[1],-S*b,S,w),pn(x[2],S*b,-S,w),pn(x[3],S*b,S,w),pn(x[4],-M*b,-M,T),pn(x[5],-M*b,M,T),pn(x[6],M*b,-M,T),pn(x[7],M*b,M,T)}else{var A=(-1-m)/i,E=(1-m)/i,D=(1-g)/l,C=(-1-g)/l,L=(-1-_)/f,P=(1-_)/f;y.min.set(Math.min(A,E),Math.min(C,D),Math.min(P,L)),y.max.set(Math.max(E,A),Math.max(D,C),Math.max(L,P));var O=y.min.array,N=y.max.array;pn(x[0],O[0],O[1],O[2]),pn(x[1],O[0],N[1],O[2]),pn(x[2],N[0],O[1],O[2]),pn(x[3],N[0],N[1],O[2]),pn(x[4],O[0],O[1],N[2]),pn(x[5],O[0],N[1],N[2]),pn(x[6],N[0],O[1],N[2]),pn(x[7],N[0],N[1],N[2])}},getTransformedBoundingBox:(fn=Mr.create(),function(e,t){var r=this.vertices,i=t.array,n=e.min,a=e.max,o=n.array,s=a.array,l=r[0];gn(fn,l,i),mn(o,fn),mn(s,fn);for(var h=1;h<8;h++)l=r[h],gn(fn,l,i),o[0]=_n(fn[0],o[0]),o[1]=_n(fn[1],o[1]),o[2]=_n(fn[2],o[2]),s[0]=vn(fn[0],s[0]),s[1]=vn(fn[1],s[1]),s[2]=vn(fn[2],s[2]);return n._dirty=!0,a._dirty=!0,e})};var xn,bn=Ei.extend(function(){return{projectionMatrix:new hi,invProjectionMatrix:new hi,viewMatrix:new hi,frustum:new yn}},function(){this.update(!0)},{update:function(e){Ei.prototype.update.call(this,e),hi.invert(this.viewMatrix,this.worldTransform),this.updateProjectionMatrix(),hi.invert(this.invProjectionMatrix,this.projectionMatrix),this.frustum.setFromProjection(this.projectionMatrix)},setViewMatrix:function(e){hi.copy(this.viewMatrix,e),hi.invert(this.worldTransform,e),this.decomposeWorldTransform()},decomposeProjectionMatrix:function(){},setProjectionMatrix:function(e){hi.copy(this.projectionMatrix,e),hi.invert(this.invProjectionMatrix,e),this.decomposeProjectionMatrix()},updateProjectionMatrix:function(){},castRay:(xn=Jr.create(),function(e,t){var r=void 0!==t?t:new Qr,i=e.array[0],n=e.array[1];return Jr.set(xn,i,n,-1,1),Jr.transformMat4(xn,xn,this.invProjectionMatrix.array),Jr.transformMat4(xn,xn,this.worldTransform.array),Mr.scale(r.origin.array,xn,1/xn[3]),Jr.set(xn,i,n,1,1),Jr.transformMat4(xn,xn,this.invProjectionMatrix.array),Jr.transformMat4(xn,xn,this.worldTransform.array),Mr.scale(xn,xn,1/xn[3]),Mr.sub(r.direction.array,xn,r.origin.array),Mr.normalize(r.direction.array,r.direction.array),r.direction._dirty=!0,r.origin._dirty=!0,r})}),Tn=Sr.create(),wn=Sr.create(),Sn={};function Mn(e){var t=[],r=Object.keys(e);r.sort();for(var i=0;i0&&console.warn("Found multiple camera in one scene. Use the fist one."),this._cameraList.push(e)):e instanceof cn&&this.lights.push(e),e.name&&(this._nodeRepository[e.name]=e)},removeFromScene:function(e){var t;e instanceof bn?(t=this._cameraList.indexOf(e))>=0&&this._cameraList.splice(t,1):e instanceof cn&&(t=this.lights.indexOf(e))>=0&&this.lights.splice(t,1),e.name&&delete this._nodeRepository[e.name]},getNode:function(e){return this._nodeRepository[e]},setMainCamera:function(e){var t=this._cameraList.indexOf(e);t>=0&&this._cameraList.splice(t,1),this._cameraList.unshift(e)},getMainCamera:function(){return this._cameraList[0]},getLights:function(){return this.lights},updateLights:function(){var e=this.lights;this._previousLightNumber=this._lightNumber;for(var t={},r=0;r0&&this._doUpdateRenderList(o,t,r,i,n)}},isFrustumCulled:(En=new wi,Dn=new hi,function(e,t,r){var i=e.boundingBox;if(i||(i=e.skeleton&&e.skeleton.boundingBox?e.skeleton.boundingBox:e.geometry.boundingBox),!i)return!1;if(Dn.array=r,En.transformFrom(i,Dn),e.castShadow&&this.viewBoundingBoxLastFrame.union(En),e.frustumCulling){if(!En.intersectBoundingBox(t.frustum.boundingBox))return!0;Dn.array=t.projectionMatrix.array,En.max.array[2]>0&&En.min.array[2]<0&&(En.max.array[2]=-1e-20),En.applyProjection(Dn);var n=En.min.array,a=En.max.array;if(a[0]<-1||n[0]>1||a[1]<-1||n[1]>1||a[2]<-1||n[2]>1)return!0}return!1}),_updateLightUniforms:function(){var e=this.lights;e.sort(Ln);var t=this._lightUniforms;for(var r in t)for(var i in t[r])t[r][i].value.length=0;for(var n=0;n1&&t.texParameterf(t.TEXTURE_CUBE_MAP,n.TEXTURE_MAX_ANISOTROPY_EXT,this.anisotropic),36193===i)&&(e.getGLExtension("OES_texture_half_float")||(i=Ze));if(this.mipmaps.length)for(var a=this.width,o=this.height,s=0;s0&&e.height>0}Object.defineProperty(Nn.prototype,"width",{get:function(){return this.image&&this.image.px?this.image.px.width:this._width},set:function(e){this.image&&this.image.px?console.warn("Texture from image can't set width"):(this._width!==e&&this.dirty(),this._width=e)}}),Object.defineProperty(Nn.prototype,"height",{get:function(){return this.image&&this.image.px?this.image.px.height:this._height},set:function(e){this.image&&this.image.px?console.warn("Texture from image can't set height"):(this._height!==e&&this.dirty(),this._height=e)}});var In=bn.extend({fov:50,aspect:1,near:.1,far:2e3},{updateProjectionMatrix:function(){var e=this.fov/180*Math.PI;this.projectionMatrix.perspective(e,this.aspect,this.near,this.far)},decomposeProjectionMatrix:function(){var e=this.projectionMatrix.array,t=2*Math.atan(1/e[5]);this.fov=t/Math.PI*180,this.aspect=e[5]/e[0],this.near=e[14]/(e[10]-1),this.far=e[14]/(e[10]+1)},clone:function(){var e=bn.prototype.clone.call(this);return e.fov=this.fov,e.aspect=this.aspect,e.near=this.near,e.far=this.far,e}}),Bn="framebuffer",zn="renderbuffer",Fn=zn+"_width",Gn=zn+"_height",Un=zn+"_attached",Hn="depthtexture_attached",Vn=dt,kn=ft,Wn=gt,jn=mt,Xn=xe.extend({depthBuffer:!0,viewport:null,_width:0,_height:0,_textures:null,_boundRenderer:null},function(){this._cache=new Bi,this._textures={}},{getTextureWidth:function(){return this._width},getTextureHeight:function(){return this._height},bind:function(e){if(e.__currentFrameBuffer){if(e.__currentFrameBuffer===this)return;console.warn("Renderer already bound with another framebuffer. Unbind it first")}e.__currentFrameBuffer=this;var t=e.gl;t.bindFramebuffer(Vn,this._getFrameBufferGL(e)),this._boundRenderer=e;var r=this._cache;r.put("viewport",e.viewport);var i,n,a=!1;for(var o in this._textures){a=!0;var s=this._textures[o];s&&(i=s.texture.width,n=s.texture.height,this._doAttach(e,s.texture,o,s.target))}this._width=i,this._height=n,!a&&this.depthBuffer&&console.error("Must attach texture before bind, or renderbuffer may have incorrect width and height."),this.viewport?e.setViewport(this.viewport):e.setViewport(0,0,i,n,1);var l=r.get("attached_textures");if(l)for(var o in l)if(!this._textures[o]){var h=l[o];this._doDetach(t,o,h)}if(!r.get(Hn)&&this.depthBuffer){r.miss(zn)&&r.put(zn,t.createRenderbuffer());var u=r.get(zn);i===r.get(Fn)&&n===r.get(Gn)||(t.bindRenderbuffer(kn,u),t.renderbufferStorage(kn,t.DEPTH_COMPONENT16,i,n),r.put(Fn,i),r.put(Gn,n),t.bindRenderbuffer(kn,null)),r.get(Un)||(t.framebufferRenderbuffer(Vn,Wn,kn,u),r.put(Un,!0))}},unbind:function(e){e.__currentFrameBuffer=null,e.gl.bindFramebuffer(Vn,null),this._boundRenderer=null,this._cache.use(e.__uid__);var t=this._cache.get("viewport");t&&e.setViewport(t),this.updateMipmap(e)},updateMipmap:function(e){var t=e.gl;for(var r in this._textures){var i=this._textures[r];if(i){var n=i.texture;if(!n.NPOT&&n.useMipmap&&n.minFilter===zi.LINEAR_MIPMAP_LINEAR){var a="textureCube"===n.textureType?lt:st;t.bindTexture(a,n.getWebGLTexture(e)),t.generateMipmap(a),t.bindTexture(a,null)}}}},checkStatus:function(e){return e.checkFramebufferStatus(Vn)},_getFrameBufferGL:function(e){var t=this._cache;return t.use(e.__uid__),t.miss(Bn)&&t.put(Bn,e.gl.createFramebuffer()),t.get(Bn)},attach:function(e,t,r){if(!e.width)throw new Error("The texture attached to color buffer is not a valid.");t=t||jn,r=r||st;var i,n=this._boundRenderer;if(n&&n.gl){var a=this._cache;a.use(n.__uid__),i=a.get("attached_textures")}var o=this._textures[t];if(!o||o.target!==r||o.texture!==e||!i||null==i[t]){var s=!0;n&&(s=this._doAttach(n,e,t,r),this.viewport||n.setViewport(0,0,e.width,e.height,1)),s&&(this._textures[t]=this._textures[t]||{},this._textures[t].texture=e,this._textures[t].target=r)}},_doAttach:function(e,t,r,i){var n=e.gl,a=t.getWebGLTexture(e),o=this._cache.get("attached_textures");if(o&&o[r]){var s=o[r];if(s.texture===t&&s.target===i)return}var l=!0;if(((r=+r)===Wn||r===vt)&&(e.getGLExtension("WEBGL_depth_texture")||(console.error("Depth texture is not supported by the browser"),l=!1),t.format!==Ye&&t.format!==pt&&(console.error("The texture attached to depth buffer is not a valid."),l=!1),l)){var h=this._cache.get(zn);h&&(n.framebufferRenderbuffer(Vn,Wn,kn,null),n.deleteRenderbuffer(h),this._cache.put(zn,!1)),this._cache.put(Un,!1),this._cache.put(Hn,!0)}return n.framebufferTexture2D(Vn,r,i,a,0),o||(o={},this._cache.put("attached_textures",o)),o[r]=o[r]||{},o[r].texture=t,o[r].target=i,l},_doDetach:function(e,t,r){e.framebufferTexture2D(Vn,t,r,null,0);var i=this._cache.get("attached_textures");i&&i[t]&&(i[t]=null),t!==Wn&&t!==vt||this._cache.put(Hn,!1)},detach:function(e,t){(this._textures[e]=null,this._boundRenderer)&&(this._cache.use(this._boundRenderer.__uid__),this._doDetach(this._boundRenderer.gl,e,t))},dispose:function(e){var t=e.gl,r=this._cache;r.use(e.__uid__);var i=r.get(zn);i&&t.deleteRenderbuffer(i);var n=r.get(Bn);n&&t.deleteFramebuffer(n),r.deleteContext(e.__uid__),this._textures={}}});Xn.DEPTH_ATTACHMENT=Wn,Xn.COLOR_ATTACHMENT0=jn,Xn.STENCIL_ATTACHMENT=_t,Xn.DEPTH_STENCIL_ATTACHMENT=vt;var qn=["px","nx","py","ny","pz","nz"],Zn=xe.extend(function(){var e={position:new Fr,far:1e3,near:.1,texture:null,shadowMapPass:null},t=e._cameras={px:new In({fov:90}),nx:new In({fov:90}),py:new In({fov:90}),ny:new In({fov:90}),pz:new In({fov:90}),nz:new In({fov:90})};return t.px.lookAt(Fr.POSITIVE_X,Fr.NEGATIVE_Y),t.nx.lookAt(Fr.NEGATIVE_X,Fr.NEGATIVE_Y),t.py.lookAt(Fr.POSITIVE_Y,Fr.POSITIVE_Z),t.ny.lookAt(Fr.NEGATIVE_Y,Fr.NEGATIVE_Z),t.pz.lookAt(Fr.POSITIVE_Z,Fr.NEGATIVE_Y),t.nz.lookAt(Fr.NEGATIVE_Z,Fr.NEGATIVE_Y),e._frameBuffer=new Xn,e},{getCamera:function(e){return this._cameras[e]},render:function(e,t,r){var i=e.gl;r||t.update();for(var n=this.texture.width,a=2*Math.atan(n/(n-.5))/Math.PI*180,o=0;o<6;o++){var s=qn[o],l=this._cameras[s];if(Fr.copy(l.position,this.position),l.far=this.far,l.near=this.near,l.fov=a,this.shadowMapPass){l.update();var h=t.getBoundingBox();h.applyTransform(l.viewMatrix),t.viewBoundingBoxLastFrame.copy(h),this.shadowMapPass.render(e,t,l,!0)}this._frameBuffer.attach(this.texture,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+o),this._frameBuffer.bind(e),e.render(t,l,!0),this._frameBuffer.unbind(e)}},dispose:function(e){this._frameBuffer.dispose(e)}}),Yn=$i.extend({dynamic:!1,widthSegments:1,heightSegments:1},function(){this.build()},{build:function(){for(var e=this.heightSegments,t=this.widthSegments,r=this.attributes,i=[],n=[],a=[],o=[],s=0;s<=e;s++)for(var l=s/e,h=0;h<=t;h++){var u=h/t;if(i.push([2*u-1,2*l-1,0]),n&&n.push([u,l]),a&&a.push([0,0,1]),h0?this.material.define("fragment","LOD"):this.material.undefine("fragment","LOD"),e.renderPass([this],r)}});function ea(e){return e.charCodeAt(0)+(e.charCodeAt(1)<<8)+(e.charCodeAt(2)<<16)+(e.charCodeAt(3)<<24)}var ta=ea("DXT1"),ra=ea("DXT3"),ia=ea("DXT5"),na=function(e,t){var r=new Int32Array(e,0,31);if(542327876!==r[0])return null;if(4&!r(20))return null;var i,n,a=r(21),o=r[4],s=r[3],l=512&r[28],h=131072&r[2];switch(a){case ta:i=8,n=zi.COMPRESSED_RGB_S3TC_DXT1_EXT;break;case ra:i=16,n=zi.COMPRESSED_RGBA_S3TC_DXT3_EXT;break;case ia:i=16,n=zi.COMPRESSED_RGBA_S3TC_DXT5_EXT;break;default:return null}var u=r[1]+4,c=l?6:1,d=1;h&&(d=Math.max(1,r[7]));for(var f=[],p=0;p0){var n=Math.pow(2,e[3]-128-8+i);t[r+0]=e[0]*n,t[r+1]=e[1]*n,t[r+2]=e[2]*n}else t[r+0]=0,t[r+1]=0,t[r+2]=0;return t[r+3]=1,t}function sa(e,t){t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3]}function la(e,t,r,i){for(var n=0,a=0,o=i;o>0;)if(e[a][0]=t[r++],e[a][1]=t[r++],e[a][2]=t[r++],e[a][3]=t[r++],1===e[a][0]&&1===e[a][1]&&1===e[a][2]){for(var s=e[a][3]<>>0;s>0;s--)sa(e[a-1],e[a]),a++,o--;n+=8}else a++,o--,n=0;return r}function ha(e,t,r,i){if(i<8|i>32767)return la(e,t,r,i);if(2!=(n=t[r++]))return la(e,t,r-1,i);if(e[0][1]=t[r++],e[0][2]=t[r++],n=t[r++],(e[0][2]<<8>>>0|n)>>>0!==i)return null;for(var n=0;n<4;n++)for(var a=0;a128){o=(127&o)>>>0;for(var s=t[r++];o--;)e[a++][n]=s}else for(;o--;)e[a++][n]=t[r++]}return r}var ua=function(e,t,r){null==r&&(r=0);var i=new Uint8Array(e),n=i.length;if("#?"===function(e,t,r){for(var i="",n=t;n=n)){a+=2;for(var o="";a20)return console.warn("Given image is not a height map"),e}var d,f,p,m;l%(4*i)==0?(d=o.data[l],p=o.data[l+4]):l%(4*i)==4*(i-1)?(d=o.data[l-4],p=o.data[l]):(d=o.data[l-4],p=o.data[l+4]),l<4*i?(f=o.data[l],m=o.data[l+4*i]):l>i*(n-1)*4?(f=o.data[l-4*i],m=o.data[l]):(f=o.data[l-4*i],m=o.data[l+4*i]),s.data[l]=d-p+127,s.data[l+1]=f-m+127,s.data[l+2]=255,s.data[l+3]=255}return a.putImageData(s,0,0),r},isHeightImage:function(e,t,r){if(!e||!e.width||!e.height)return!1;var i=document.createElement("canvas"),n=i.getContext("2d"),a=t||32;r=r||20,i.width=i.height=a,n.drawImage(e,0,0,a,a);for(var o=n.getImageData(0,0,a,a),s=0;sr)return!1}return!0},_fetchTexture:function(e,t,r){bt.request.get({url:e,responseType:"arraybuffer",onload:t,onerror:r})},createChessboard:function(e,t,r,i){e=e||512,t=t||64,r=r||"black",i=i||"white";var n=Math.ceil(e/t),a=document.createElement("canvas");a.width=e,a.height=e;var o=a.getContext("2d");o.fillStyle=i,o.fillRect(0,0,e,e),o.fillStyle=r;for(var s=0;s=0||(da.forEach(function(t){e.on(t,this[fa(t)],this)},this),this._meshes.push(e))},detachFromMesh:function(e){var t=this._meshes.indexOf(e);t>=0&&this._meshes.splice(t,1),da.forEach(function(t){e.off(t,this[fa(t)])},this)},dispose:function(){this._meshes.forEach(function(e){this.detachFromMesh(e)},this)}};var ma=bn.extend({left:-1,right:1,near:-1,far:1,top:1,bottom:-1},{updateProjectionMatrix:function(){this.projectionMatrix.ortho(this.left,this.right,this.bottom,this.top,this.near,this.far)},decomposeProjectionMatrix:function(){var e=this.projectionMatrix.array;this.left=(-1-e[12])/e[0],this.right=(1-e[12])/e[0],this.top=(1-e[13])/e[5],this.bottom=(-1-e[13])/e[5],this.near=-(-1-e[14])/e[10],this.far=-(1-e[14])/e[10]},clone:function(){var e=bn.prototype.clone.call(this);return e.left=this.left,e.right=this.right,e.near=this.near,e.far=this.far,e.top=this.top,e.bottom=this.bottom,e}});xr.import("\n@export clay.compositor.vertex\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nattribute vec3 position : POSITION;\nattribute vec2 texcoord : TEXCOORD_0;\nvarying vec2 v_Texcoord;\nvoid main()\n{\n v_Texcoord = texcoord;\n gl_Position = worldViewProjection * vec4(position, 1.0);\n}\n@end");var ga=new Yn,_a=new Fi({geometry:ga,frustumCulling:!1}),va=new ma,ya=xe.extend(function(){return{fragment:"",outputs:null,material:null,blendWithPrevious:!1,clearColor:!1,clearDepth:!0}},function(){var e=new xr(xr.source("clay.compositor.vertex"),this.fragment),t=new kt({shader:e});t.enableTexturesAll(),this.material=t},{setUniform:function(e,t){this.material.setUniform(e,t)},getUniform:function(e){var t=this.material.uniforms[e];if(t)return t.value},attachOutput:function(e,t){this.outputs||(this.outputs={}),t=t||mt,this.outputs[t]=e},detachOutput:function(e){for(var t in this.outputs)this.outputs[t]===e&&(this.outputs[t]=null)},bind:function(e,t){if(this.outputs)for(var r in this.outputs){var i=this.outputs[r];i&&t.attach(i,r)}t&&t.bind(e)},unbind:function(e,t){t.unbind(e)},render:function(e,t){var r=e.gl;if(t){this.bind(e,t);var i=e.getGLExtension("EXT_draw_buffers");if(i&&this.outputs){var n=[];for(var a in this.outputs)(a=+a)>=r.COLOR_ATTACHMENT0&&a<=r.COLOR_ATTACHMENT0+8&&n.push(a);i.drawBuffersEXT(n)}}this.trigger("beforerender",this,e);var o=this.clearDepth?r.DEPTH_BUFFER_BIT:0;if(r.depthMask(!0),this.clearColor){o|=r.COLOR_BUFFER_BIT,r.colorMask(!0,!0,!0,!0);var s=this.clearColor;Array.isArray(s)&&r.clearColor(s[0],s[1],s[2],s[3])}r.clear(o),this.blendWithPrevious?(r.enable(r.BLEND),this.material.transparent=!0):(r.disable(r.BLEND),this.material.transparent=!1),this.renderQuad(e),this.trigger("afterrender",this,e),t&&this.unbind(e,t)},renderQuad:function(e){_a.material=this.material,e.renderPass([_a],va)},dispose:function(e){}});var xa={},ba=["px","nx","py","ny","pz","nz"];xa.prefilterEnvironmentMap=function(e,t,r,i,n){n&&i||(i=xa.generateNormalDistribution(),n=xa.integrateBRDF(e,i));var a=(r=r||{}).width||64,o=r.height||64,s=r.type||t.type,l=new Nn({width:a,height:o,type:s,flipY:!1,mipmaps:[]});l.isPowerOfTwo()||console.warn("Width and height must be power of two to enable mipmap.");var h=Math.min(a,o),u=Math.log(h)/Math.log(2)+1,c=new kt({shader:new xr({vertex:xr.source("clay.skybox.vertex"),fragment:"#define SHADER_NAME prefilter\n#define SAMPLE_NUMBER 1024\n#define PI 3.14159265358979\nuniform mat4 viewInverse : VIEWINVERSE;\nuniform samplerCube environmentMap;\nuniform sampler2D normalDistribution;\nuniform float roughness : 0.5;\nvarying vec2 v_Texcoord;\nvarying vec3 v_WorldPosition;\n@import clay.util.rgbm\nvec3 importanceSampleNormal(float i, float roughness, vec3 N) {\n vec3 H = texture2D(normalDistribution, vec2(roughness, i)).rgb;\n vec3 upVector = abs(N.y) > 0.999 ? vec3(1.0, 0.0, 0.0) : vec3(0.0, 1.0, 0.0);\n vec3 tangentX = normalize(cross(N, upVector));\n vec3 tangentZ = cross(N, tangentX);\n return normalize(tangentX * H.x + N * H.y + tangentZ * H.z);\n}\nvoid main() {\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(v_WorldPosition - eyePos);\n vec3 N = V;\n vec3 prefilteredColor = vec3(0.0);\n float totalWeight = 0.0;\n float fMaxSampleNumber = float(SAMPLE_NUMBER);\n for (int i = 0; i < SAMPLE_NUMBER; i++) {\n vec3 H = importanceSampleNormal(float(i) / fMaxSampleNumber, roughness, N);\n vec3 L = reflect(-V, H);\n float NoL = clamp(dot(N, L), 0.0, 1.0);\n if (NoL > 0.0) {\n prefilteredColor += decodeHDR(textureCube(environmentMap, L)).rgb * NoL;\n totalWeight += NoL;\n }\n }\n gl_FragColor = encodeHDR(vec4(prefilteredColor / totalWeight, 1.0));\n}\n"})});c.set("normalDistribution",i),r.encodeRGBM&&c.define("fragment","RGBM_ENCODE"),r.decodeRGBM&&c.define("fragment","RGBM_DECODE");var d,f=new Cn;if("texture2D"===t.textureType){var p=new Nn({width:a,height:o,type:s===zi.FLOAT?zi.HALF_FLOAT:s});ca.panoramaToCubeMap(e,t,p,{encodeRGBM:r.decodeRGBM}),t=p}(d=new $n({scene:f,material:c})).material.set("environmentMap",t);var m=new Zn({texture:l});r.encodeRGBM&&(s=l.type=zi.UNSIGNED_BYTE);for(var g=new Vi({width:a,height:o,type:s}),_=new Xn({depthBuffer:!1}),v=bt[s===zi.UNSIGNED_BYTE?"Uint8Array":"Float32Array"],y=0;y 0.999 ? vec3(1.0, 0.0, 0.0) : vec3(0.0, 1.0, 0.0);\n vec3 tangentX = normalize(cross(N, upVector));\n vec3 tangentZ = cross(N, tangentX);\n return normalize(tangentX * H.x + N * H.y + tangentZ * H.z);\n}\nfloat G_Smith(float roughness, float NoV, float NoL) {\n float k = roughness * roughness / 2.0;\n float G1V = NoV / (NoV * (1.0 - k) + k);\n float G1L = NoL / (NoL * (1.0 - k) + k);\n return G1L * G1V;\n}\nvoid main() {\n vec2 uv = gl_FragCoord.xy / viewportSize;\n float NoV = uv.x;\n float roughness = uv.y;\n vec3 V;\n V.x = sqrt(1.0 - NoV * NoV);\n V.y = 0.0;\n V.z = NoV;\n float A = 0.0;\n float B = 0.0;\n for (int i = 0; i < SAMPLE_NUMBER; i++) {\n vec3 H = importanceSampleNormal(float(i) / fSampleNumber, roughness, N);\n vec3 L = reflect(-V, H);\n float NoL = clamp(L.z, 0.0, 1.0);\n float NoH = clamp(H.z, 0.0, 1.0);\n float VoH = clamp(dot(V, H), 0.0, 1.0);\n if (NoL > 0.0) {\n float G = G_Smith(roughness, NoV, NoL);\n float G_Vis = G * VoH / (NoH * NoV);\n float Fc = pow(1.0 - VoH, 5.0);\n A += (1.0 - Fc) * G_Vis;\n B += Fc * G_Vis;\n }\n }\n gl_FragColor = vec4(vec2(A, B) / fSampleNumber, 0.0, 1.0);\n}\n"}),n=new Vi({width:512,height:256,type:zi.HALF_FLOAT,wrapS:zi.CLAMP_TO_EDGE,wrapT:zi.CLAMP_TO_EDGE,minFilter:zi.NEAREST,magFilter:zi.NEAREST,useMipmap:!1});return i.setUniform("normalDistribution",t),i.setUniform("viewportSize",[512,256]),i.attachOutput(n),i.render(e,r),r.dispose(e),n},xa.generateNormalDistribution=function(e,t){for(var r=new Vi({width:e=e||256,height:t=t||1024,type:zi.FLOAT,minFilter:zi.NEAREST,magFilter:zi.NEAREST,wrapS:zi.CLAMP_TO_EDGE,wrapT:zi.CLAMP_TO_EDGE,useMipmap:!1}),i=new Float32Array(t*e*4),n=[],a=0;a>>16)>>>0;h=(((16711935&(h=((252645135&(h=((858993459&(h=((1431655765&h)<<1|(2863311530&h)>>>1)>>>0))<<2|(3435973836&h)>>>2)>>>0))<<4|(4042322160&h)>>>4)>>>0))<<8|(4278255360&h)>>>8)>>>0)/4294967296;var u=Math.sqrt((1-h)/(1+(s*s-1)*h));n[l]=u}for(l=0;l65535?Uint32Array:Uint16Array,v=this.indices=new _(t*e*6),y=this.radius,x=this.phiStart,b=this.phiLength,T=this.thetaStart,w=this.thetaLength,S=[],M=[],A=0,E=1/(y=this.radius);for(d=0;d<=e;d++)for(c=0;c<=t;c++)h=c/t,u=d/e,o=-y*Math.cos(x+h*b)*Math.sin(T+u*w),s=y*Math.cos(T+u*w),l=y*Math.sin(x+h*b)*Math.sin(T+u*w),S[0]=o,S[1]=s,S[2]=l,M[0]=h,M[1]=u,r.set(A,S),i.set(A,M),S[0]*=E,S[1]*=E,S[2]*=E,n.set(A,S),A++;var D=t+1,C=0;for(d=0;d=0&&l.splice(e,1)}),l.push(h),this.__zr&&this.__zr.animation.addAnimator(h),h},stopAnimation:function(e){this._animators=this._animators||[];for(var t=this._animators,r=t.length,i=0;i 0.) {\n vec4 lineColor = wireframeLineColor;\n#ifdef SRGB_DECODE\n lineColor = sRGBToLinear(lineColor);\n#endif\n\n gl_FragColor.rgb = mix(gl_FragColor.rgb, lineColor.rgb, (1.0 - edgeFactor()) * lineColor.a);\n }\n#endif\n@end\n\n\n\n\n@export ecgl.common.bumpMap.header\n\n#ifdef BUMPMAP_ENABLED\nuniform sampler2D bumpMap;\nuniform float bumpScale : 1.0;\n\n\nvec3 bumpNormal(vec3 surfPos, vec3 surfNormal, vec3 baseNormal)\n{\n vec2 dSTdx = dFdx(v_Texcoord);\n vec2 dSTdy = dFdy(v_Texcoord);\n\n float Hll = bumpScale * texture2D(bumpMap, v_Texcoord).x;\n float dHx = bumpScale * texture2D(bumpMap, v_Texcoord + dSTdx).x - Hll;\n float dHy = bumpScale * texture2D(bumpMap, v_Texcoord + dSTdy).x - Hll;\n\n vec3 vSigmaX = dFdx(surfPos);\n vec3 vSigmaY = dFdy(surfPos);\n vec3 vN = surfNormal;\n\n vec3 R1 = cross(vSigmaY, vN);\n vec3 R2 = cross(vN, vSigmaX);\n\n float fDet = dot(vSigmaX, R1);\n\n vec3 vGrad = sign(fDet) * (dHx * R1 + dHy * R2);\n return normalize(abs(fDet) * baseNormal - vGrad);\n\n}\n#endif\n\n@end\n\n@export ecgl.common.normalMap.vertexHeader\n\n#ifdef NORMALMAP_ENABLED\nattribute vec4 tangent : TANGENT;\nvarying vec3 v_Tangent;\nvarying vec3 v_Bitangent;\n#endif\n\n@end\n\n@export ecgl.common.normalMap.vertexMain\n\n#ifdef NORMALMAP_ENABLED\n if (dot(tangent, tangent) > 0.0) {\n v_Tangent = normalize((worldInverseTranspose * vec4(tangent.xyz, 0.0)).xyz);\n v_Bitangent = normalize(cross(v_Normal, v_Tangent) * tangent.w);\n }\n#endif\n\n@end\n\n\n@export ecgl.common.normalMap.fragmentHeader\n\n#ifdef NORMALMAP_ENABLED\nuniform sampler2D normalMap;\nvarying vec3 v_Tangent;\nvarying vec3 v_Bitangent;\n#endif\n\n@end\n\n@export ecgl.common.normalMap.fragmentMain\n#ifdef NORMALMAP_ENABLED\n if (dot(v_Tangent, v_Tangent) > 0.0) {\n vec3 normalTexel = texture2D(normalMap, v_DetailTexcoord).xyz;\n if (dot(normalTexel, normalTexel) > 0.0) { N = normalTexel * 2.0 - 1.0;\n mat3 tbn = mat3(v_Tangent, v_Bitangent, v_Normal);\n N = normalize(tbn * N);\n }\n }\n#endif\n@end\n\n\n\n@export ecgl.common.vertexAnimation.header\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nattribute vec3 prevNormal;\nuniform float percent;\n#endif\n\n@end\n\n@export ecgl.common.vertexAnimation.main\n\n#ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n vec3 norm = mix(prevNormal, normal, percent);\n#else\n vec3 pos = position;\n vec3 norm = normal;\n#endif\n\n@end\n\n\n@export ecgl.common.ssaoMap.header\n#ifdef SSAOMAP_ENABLED\nuniform sampler2D ssaoMap;\nuniform vec4 viewport : VIEWPORT;\n#endif\n@end\n\n@export ecgl.common.ssaoMap.main\n float ao = 1.0;\n#ifdef SSAOMAP_ENABLED\n ao = texture2D(ssaoMap, (gl_FragCoord.xy - viewport.xy) / viewport.zw).r;\n#endif\n@end\n\n\n\n\n@export ecgl.common.diffuseLayer.header\n\n#if (LAYER_DIFFUSEMAP_COUNT > 0)\nuniform float layerDiffuseIntensity[LAYER_DIFFUSEMAP_COUNT];\nuniform sampler2D layerDiffuseMap[LAYER_DIFFUSEMAP_COUNT];\n#endif\n\n@end\n\n@export ecgl.common.emissiveLayer.header\n\n#if (LAYER_EMISSIVEMAP_COUNT > 0)\nuniform float layerEmissionIntensity[LAYER_EMISSIVEMAP_COUNT];\nuniform sampler2D layerEmissiveMap[LAYER_EMISSIVEMAP_COUNT];\n#endif\n\n@end\n\n@export ecgl.common.layers.header\n@import ecgl.common.diffuseLayer.header\n@import ecgl.common.emissiveLayer.header\n@end\n\n@export ecgl.common.diffuseLayer.main\n\n#if (LAYER_DIFFUSEMAP_COUNT > 0)\n for (int _idx_ = 0; _idx_ < LAYER_DIFFUSEMAP_COUNT; _idx_++) {{\n float intensity = layerDiffuseIntensity[_idx_];\n vec4 texel2 = texture2D(layerDiffuseMap[_idx_], v_Texcoord);\n #ifdef SRGB_DECODE\n texel2 = sRGBToLinear(texel2);\n #endif\n albedoTexel.rgb = mix(albedoTexel.rgb, texel2.rgb * intensity, texel2.a);\n albedoTexel.a = texel2.a + (1.0 - texel2.a) * albedoTexel.a;\n }}\n#endif\n\n@end\n\n@export ecgl.common.emissiveLayer.main\n\n#if (LAYER_EMISSIVEMAP_COUNT > 0)\n for (int _idx_ = 0; _idx_ < LAYER_EMISSIVEMAP_COUNT; _idx_++)\n {{\n vec4 texel2 = texture2D(layerEmissiveMap[_idx_], v_Texcoord) * layerEmissionIntensity[_idx_];\n #ifdef SRGB_DECODE\n texel2 = sRGBToLinear(texel2);\n #endif\n float intensity = layerEmissionIntensity[_idx_];\n gl_FragColor.rgb += texel2.rgb * texel2.a * intensity;\n }}\n#endif\n\n@end\n"),xr.import("@export ecgl.color.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\n@import ecgl.common.uv.header\n\nattribute vec2 texcoord : TEXCOORD_0;\nattribute vec3 position: POSITION;\n\n@import ecgl.common.wireframe.vertexHeader\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n#endif\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nuniform float percent : 1.0;\n#endif\n\n#ifdef ATMOSPHERE_ENABLED\nattribute vec3 normal: NORMAL;\nuniform mat4 worldInverseTranspose : WORLDINVERSETRANSPOSE;\nvarying vec3 v_Normal;\n#endif\n\nvoid main()\n{\n#ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n#else\n vec3 pos = position;\n#endif\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n @import ecgl.common.uv.main\n\n#ifdef VERTEX_COLOR\n v_Color = a_Color;\n#endif\n\n#ifdef ATMOSPHERE_ENABLED\n v_Normal = normalize((worldInverseTranspose * vec4(normal, 0.0)).xyz);\n#endif\n\n @import ecgl.common.wireframe.vertexMain\n\n}\n\n@end\n\n@export ecgl.color.fragment\n\n#define LAYER_DIFFUSEMAP_COUNT 0\n#define LAYER_EMISSIVEMAP_COUNT 0\n\nuniform sampler2D diffuseMap;\nuniform sampler2D detailMap;\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\n#ifdef ATMOSPHERE_ENABLED\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform vec3 glowColor;\nuniform float glowPower;\nvarying vec3 v_Normal;\n#endif\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n@import ecgl.common.layers.header\n\n@import ecgl.common.uv.fragmentHeader\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.util.srgb\n\nvoid main()\n{\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(color);\n#else\n gl_FragColor = color;\n#endif\n\n#ifdef VERTEX_COLOR\n gl_FragColor *= v_Color;\n#endif\n\n @import ecgl.common.albedo.main\n\n @import ecgl.common.diffuseLayer.main\n\n gl_FragColor *= albedoTexel;\n\n#ifdef ATMOSPHERE_ENABLED\n float atmoIntensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor.rgb += glowColor * atmoIntensity;\n#endif\n\n @import ecgl.common.emissiveLayer.main\n\n @import ecgl.common.wireframe.fragmentMain\n\n}\n@end"),xr.import("/**\n * http: */\n\n@export ecgl.lambert.vertex\n\n@import ecgl.common.transformUniforms\n\n@import ecgl.common.uv.header\n\n\n@import ecgl.common.attributes\n\n@import ecgl.common.wireframe.vertexHeader\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n#endif\n\n\n@import ecgl.common.vertexAnimation.header\n\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nvoid main()\n{\n @import ecgl.common.uv.main\n\n @import ecgl.common.vertexAnimation.main\n\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n v_Normal = normalize((worldInverseTranspose * vec4(norm, 0.0)).xyz);\n v_WorldPosition = (world * vec4(pos, 1.0)).xyz;\n\n#ifdef VERTEX_COLOR\n v_Color = a_Color;\n#endif\n\n @import ecgl.common.wireframe.vertexMain\n}\n\n@end\n\n\n@export ecgl.lambert.fragment\n\n#define LAYER_DIFFUSEMAP_COUNT 0\n#define LAYER_EMISSIVEMAP_COUNT 0\n\n#define NORMAL_UP_AXIS 1\n#define NORMAL_FRONT_AXIS 2\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform sampler2D diffuseMap;\nuniform sampler2D detailMap;\n\n@import ecgl.common.layers.header\n\nuniform float emissionIntensity: 1.0;\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n#ifdef ATMOSPHERE_ENABLED\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform vec3 glowColor;\nuniform float glowPower;\n#endif\n\n#ifdef AMBIENT_LIGHT_COUNT\n@import clay.header.ambient_light\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n@import clay.header.ambient_sh_light\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n@import clay.header.directional_light\n#endif\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n\n@import ecgl.common.ssaoMap.header\n\n@import ecgl.common.bumpMap.header\n\n@import clay.util.srgb\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.plugin.compute_shadow_map\n\nvoid main()\n{\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(color);\n#else\n gl_FragColor = color;\n#endif\n\n#ifdef VERTEX_COLOR\n #ifdef SRGB_DECODE\n gl_FragColor *= sRGBToLinear(v_Color);\n #else\n gl_FragColor *= v_Color;\n #endif\n#endif\n\n @import ecgl.common.albedo.main\n\n @import ecgl.common.diffuseLayer.main\n\n gl_FragColor *= albedoTexel;\n\n vec3 N = v_Normal;\n#ifdef DOUBLE_SIDED\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n\n if (dot(N, V) < 0.0) {\n N = -N;\n }\n#endif\n\n float ambientFactor = 1.0;\n\n#ifdef BUMPMAP_ENABLED\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n ambientFactor = dot(v_Normal, N);\n#endif\n\n vec3 N2 = vec3(N.x, N[NORMAL_UP_AXIS], N[NORMAL_FRONT_AXIS]);\n\n vec3 diffuseColor = vec3(0.0, 0.0, 0.0);\n\n @import ecgl.common.ssaoMap.main\n\n#ifdef AMBIENT_LIGHT_COUNT\n for(int i = 0; i < AMBIENT_LIGHT_COUNT; i++)\n {\n diffuseColor += ambientLightColor[i] * ambientFactor * ao;\n }\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_SH_LIGHT_COUNT; _idx_++)\n {{\n diffuseColor += calcAmbientSHLight(_idx_, N2) * ambientSHLightColor[_idx_] * ao;\n }}\n#endif\n#ifdef DIRECTIONAL_LIGHT_COUNT\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n float shadowContribsDir[DIRECTIONAL_LIGHT_COUNT];\n if(shadowEnabled)\n {\n computeShadowOfDirectionalLights(v_WorldPosition, shadowContribsDir);\n }\n#endif\n for(int i = 0; i < DIRECTIONAL_LIGHT_COUNT; i++)\n {\n vec3 lightDirection = -directionalLightDirection[i];\n vec3 lightColor = directionalLightColor[i];\n\n float shadowContrib = 1.0;\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n if (shadowEnabled)\n {\n shadowContrib = shadowContribsDir[i];\n }\n#endif\n\n float ndl = dot(N, normalize(lightDirection)) * shadowContrib;\n\n diffuseColor += lightColor * clamp(ndl, 0.0, 1.0);\n }\n#endif\n\n gl_FragColor.rgb *= diffuseColor;\n\n#ifdef ATMOSPHERE_ENABLED\n float atmoIntensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor.rgb += glowColor * atmoIntensity;\n#endif\n\n @import ecgl.common.emissiveLayer.main\n\n @import ecgl.common.wireframe.fragmentMain\n}\n\n@end"),xr.import("@export ecgl.realistic.vertex\n\n@import ecgl.common.transformUniforms\n\n@import ecgl.common.uv.header\n\n@import ecgl.common.attributes\n\n\n@import ecgl.common.wireframe.vertexHeader\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n#endif\n\n#ifdef NORMALMAP_ENABLED\nattribute vec4 tangent : TANGENT;\nvarying vec3 v_Tangent;\nvarying vec3 v_Bitangent;\n#endif\n\n@import ecgl.common.vertexAnimation.header\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nvoid main()\n{\n\n @import ecgl.common.uv.main\n\n @import ecgl.common.vertexAnimation.main\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n v_Normal = normalize((worldInverseTranspose * vec4(norm, 0.0)).xyz);\n v_WorldPosition = (world * vec4(pos, 1.0)).xyz;\n\n#ifdef VERTEX_COLOR\n v_Color = a_Color;\n#endif\n\n#ifdef NORMALMAP_ENABLED\n v_Tangent = normalize((worldInverseTranspose * vec4(tangent.xyz, 0.0)).xyz);\n v_Bitangent = normalize(cross(v_Normal, v_Tangent) * tangent.w);\n#endif\n\n @import ecgl.common.wireframe.vertexMain\n\n}\n\n@end\n\n\n\n@export ecgl.realistic.fragment\n\n#define LAYER_DIFFUSEMAP_COUNT 0\n#define LAYER_EMISSIVEMAP_COUNT 0\n#define PI 3.14159265358979\n#define ROUGHNESS_CHANEL 0\n#define METALNESS_CHANEL 1\n\n#define NORMAL_UP_AXIS 1\n#define NORMAL_FRONT_AXIS 2\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform sampler2D diffuseMap;\n\nuniform sampler2D detailMap;\nuniform sampler2D metalnessMap;\nuniform sampler2D roughnessMap;\n\n@import ecgl.common.layers.header\n\nuniform float emissionIntensity: 1.0;\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nuniform float metalness : 0.0;\nuniform float roughness : 0.5;\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n#ifdef ATMOSPHERE_ENABLED\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform vec3 glowColor;\nuniform float glowPower;\n#endif\n\n#ifdef AMBIENT_LIGHT_COUNT\n@import clay.header.ambient_light\n#endif\n\n#ifdef AMBIENT_SH_LIGHT_COUNT\n@import clay.header.ambient_sh_light\n#endif\n\n#ifdef AMBIENT_CUBEMAP_LIGHT_COUNT\n@import clay.header.ambient_cubemap_light\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n@import clay.header.directional_light\n#endif\n\n@import ecgl.common.normalMap.fragmentHeader\n\n@import ecgl.common.ssaoMap.header\n\n@import ecgl.common.bumpMap.header\n\n@import clay.util.srgb\n\n@import clay.util.rgbm\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.plugin.compute_shadow_map\n\nvec3 F_Schlick(float ndv, vec3 spec) {\n return spec + (1.0 - spec) * pow(1.0 - ndv, 5.0);\n}\n\nfloat D_Phong(float g, float ndh) {\n float a = pow(8192.0, g);\n return (a + 2.0) / 8.0 * pow(ndh, a);\n}\n\nvoid main()\n{\n vec4 albedoColor = color;\n\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n#ifdef VERTEX_COLOR\n #ifdef SRGB_DECODE\n albedoColor *= sRGBToLinear(v_Color);\n #else\n albedoColor *= v_Color;\n #endif\n#endif\n\n @import ecgl.common.albedo.main\n\n @import ecgl.common.diffuseLayer.main\n\n albedoColor *= albedoTexel;\n\n float m = metalness;\n\n#ifdef METALNESSMAP_ENABLED\n float m2 = texture2D(metalnessMap, v_DetailTexcoord)[METALNESS_CHANEL];\n m = clamp(m2 + (m - 0.5) * 2.0, 0.0, 1.0);\n#endif\n\n vec3 baseColor = albedoColor.rgb;\n albedoColor.rgb = baseColor * (1.0 - m);\n vec3 specFactor = mix(vec3(0.04), baseColor, m);\n\n float g = 1.0 - roughness;\n\n#ifdef ROUGHNESSMAP_ENABLED\n float g2 = 1.0 - texture2D(roughnessMap, v_DetailTexcoord)[ROUGHNESS_CHANEL];\n g = clamp(g2 + (g - 0.5) * 2.0, 0.0, 1.0);\n#endif\n\n vec3 N = v_Normal;\n\n#ifdef DOUBLE_SIDED\n if (dot(N, V) < 0.0) {\n N = -N;\n }\n#endif\n\n float ambientFactor = 1.0;\n\n#ifdef BUMPMAP_ENABLED\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n ambientFactor = dot(v_Normal, N);\n#endif\n\n@import ecgl.common.normalMap.fragmentMain\n\n vec3 N2 = vec3(N.x, N[NORMAL_UP_AXIS], N[NORMAL_FRONT_AXIS]);\n\n vec3 diffuseTerm = vec3(0.0);\n vec3 specularTerm = vec3(0.0);\n\n float ndv = clamp(dot(N, V), 0.0, 1.0);\n vec3 fresnelTerm = F_Schlick(ndv, specFactor);\n\n @import ecgl.common.ssaoMap.main\n\n#ifdef AMBIENT_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_LIGHT_COUNT; _idx_++)\n {{\n diffuseTerm += ambientLightColor[_idx_] * ambientFactor * ao;\n }}\n#endif\n\n#ifdef AMBIENT_SH_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_SH_LIGHT_COUNT; _idx_++)\n {{\n diffuseTerm += calcAmbientSHLight(_idx_, N2) * ambientSHLightColor[_idx_] * ao;\n }}\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n float shadowContribsDir[DIRECTIONAL_LIGHT_COUNT];\n if(shadowEnabled)\n {\n computeShadowOfDirectionalLights(v_WorldPosition, shadowContribsDir);\n }\n#endif\n for(int _idx_ = 0; _idx_ < DIRECTIONAL_LIGHT_COUNT; _idx_++)\n {{\n vec3 L = -directionalLightDirection[_idx_];\n vec3 lc = directionalLightColor[_idx_];\n\n vec3 H = normalize(L + V);\n float ndl = clamp(dot(N, normalize(L)), 0.0, 1.0);\n float ndh = clamp(dot(N, H), 0.0, 1.0);\n\n float shadowContrib = 1.0;\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n if (shadowEnabled)\n {\n shadowContrib = shadowContribsDir[_idx_];\n }\n#endif\n\n vec3 li = lc * ndl * shadowContrib;\n\n diffuseTerm += li;\n specularTerm += li * fresnelTerm * D_Phong(g, ndh);\n }}\n#endif\n\n\n#ifdef AMBIENT_CUBEMAP_LIGHT_COUNT\n vec3 L = reflect(-V, N);\n L = vec3(L.x, L[NORMAL_UP_AXIS], L[NORMAL_FRONT_AXIS]);\n float rough2 = clamp(1.0 - g, 0.0, 1.0);\n float bias2 = rough2 * 5.0;\n vec2 brdfParam2 = texture2D(ambientCubemapLightBRDFLookup[0], vec2(rough2, ndv)).xy;\n vec3 envWeight2 = specFactor * brdfParam2.x + brdfParam2.y;\n vec3 envTexel2;\n for(int _idx_ = 0; _idx_ < AMBIENT_CUBEMAP_LIGHT_COUNT; _idx_++)\n {{\n envTexel2 = RGBMDecode(textureCubeLodEXT(ambientCubemapLightCubemap[_idx_], L, bias2), 8.12);\n specularTerm += ambientCubemapLightColor[_idx_] * envTexel2 * envWeight2 * ao;\n }}\n#endif\n\n gl_FragColor.rgb = albedoColor.rgb * diffuseTerm + specularTerm;\n gl_FragColor.a = albedoColor.a;\n\n#ifdef ATMOSPHERE_ENABLED\n float atmoIntensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor.rgb += glowColor * atmoIntensity;\n#endif\n\n#ifdef SRGB_ENCODE\n gl_FragColor = linearTosRGB(gl_FragColor);\n#endif\n\n @import ecgl.common.emissiveLayer.main\n\n @import ecgl.common.wireframe.fragmentMain\n}\n\n@end"),xr.import("@export ecgl.hatching.vertex\n\n@import ecgl.realistic.vertex\n\n@end\n\n\n@export ecgl.hatching.fragment\n\n#define NORMAL_UP_AXIS 1\n#define NORMAL_FRONT_AXIS 2\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform vec4 color : [0.0, 0.0, 0.0, 1.0];\nuniform vec4 paperColor : [1.0, 1.0, 1.0, 1.0];\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n#ifdef AMBIENT_LIGHT_COUNT\n@import clay.header.ambient_light\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n@import clay.header.ambient_sh_light\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n@import clay.header.directional_light\n#endif\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n\n@import ecgl.common.ssaoMap.header\n\n@import ecgl.common.bumpMap.header\n\n@import clay.util.srgb\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.plugin.compute_shadow_map\n\nuniform sampler2D hatch1;\nuniform sampler2D hatch2;\nuniform sampler2D hatch3;\nuniform sampler2D hatch4;\nuniform sampler2D hatch5;\nuniform sampler2D hatch6;\n\nfloat shade(in float tone) {\n vec4 c = vec4(1. ,1., 1., 1.);\n float step = 1. / 6.;\n vec2 uv = v_DetailTexcoord;\n if (tone <= step / 2.0) {\n c = mix(vec4(0.), texture2D(hatch6, uv), 12. * tone);\n }\n else if (tone <= step) {\n c = mix(texture2D(hatch6, uv), texture2D(hatch5, uv), 6. * tone);\n }\n if(tone > step && tone <= 2. * step){\n c = mix(texture2D(hatch5, uv), texture2D(hatch4, uv) , 6. * (tone - step));\n }\n if(tone > 2. * step && tone <= 3. * step){\n c = mix(texture2D(hatch4, uv), texture2D(hatch3, uv), 6. * (tone - 2. * step));\n }\n if(tone > 3. * step && tone <= 4. * step){\n c = mix(texture2D(hatch3, uv), texture2D(hatch2, uv), 6. * (tone - 3. * step));\n }\n if(tone > 4. * step && tone <= 5. * step){\n c = mix(texture2D(hatch2, uv), texture2D(hatch1, uv), 6. * (tone - 4. * step));\n }\n if(tone > 5. * step){\n c = mix(texture2D(hatch1, uv), vec4(1.), 6. * (tone - 5. * step));\n }\n\n return c.r;\n}\n\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\n\nvoid main()\n{\n#ifdef SRGB_DECODE\n vec4 inkColor = sRGBToLinear(color);\n#else\n vec4 inkColor = color;\n#endif\n\n#ifdef VERTEX_COLOR\n #ifdef SRGB_DECODE\n inkColor *= sRGBToLinear(v_Color);\n #else\n inkColor *= v_Color;\n #endif\n#endif\n\n vec3 N = v_Normal;\n#ifdef DOUBLE_SIDED\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n\n if (dot(N, V) < 0.0) {\n N = -N;\n }\n#endif\n\n float tone = 0.0;\n\n float ambientFactor = 1.0;\n\n#ifdef BUMPMAP_ENABLED\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n ambientFactor = dot(v_Normal, N);\n#endif\n\n vec3 N2 = vec3(N.x, N[NORMAL_UP_AXIS], N[NORMAL_FRONT_AXIS]);\n\n @import ecgl.common.ssaoMap.main\n\n#ifdef AMBIENT_LIGHT_COUNT\n for(int i = 0; i < AMBIENT_LIGHT_COUNT; i++)\n {\n tone += dot(ambientLightColor[i], w) * ambientFactor * ao;\n }\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_SH_LIGHT_COUNT; _idx_++)\n {{\n tone += dot(calcAmbientSHLight(_idx_, N2) * ambientSHLightColor[_idx_], w) * ao;\n }}\n#endif\n#ifdef DIRECTIONAL_LIGHT_COUNT\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n float shadowContribsDir[DIRECTIONAL_LIGHT_COUNT];\n if(shadowEnabled)\n {\n computeShadowOfDirectionalLights(v_WorldPosition, shadowContribsDir);\n }\n#endif\n for(int i = 0; i < DIRECTIONAL_LIGHT_COUNT; i++)\n {\n vec3 lightDirection = -directionalLightDirection[i];\n float lightTone = dot(directionalLightColor[i], w);\n\n float shadowContrib = 1.0;\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n if (shadowEnabled)\n {\n shadowContrib = shadowContribsDir[i];\n }\n#endif\n\n float ndl = dot(N, normalize(lightDirection)) * shadowContrib;\n\n tone += lightTone * clamp(ndl, 0.0, 1.0);\n }\n#endif\n\n gl_FragColor = mix(inkColor, paperColor, shade(clamp(tone, 0.0, 1.0)));\n }\n@end\n"),xr.import("@export ecgl.sm.depth.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nattribute vec3 position : POSITION;\nattribute vec2 texcoord : TEXCOORD_0;\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nuniform float percent : 1.0;\n#endif\n\nvarying vec4 v_ViewPosition;\nvarying vec2 v_Texcoord;\n\nvoid main(){\n\n#ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n#else\n vec3 pos = position;\n#endif\n\n v_ViewPosition = worldViewProjection * vec4(pos, 1.0);\n gl_Position = v_ViewPosition;\n\n v_Texcoord = texcoord;\n\n}\n@end\n\n\n\n@export ecgl.sm.depth.fragment\n\n@import clay.sm.depth.fragment\n\n@end");var Xa=Cn.prototype.addToScene,qa=Cn.prototype.removeFromScene;Cn.prototype.addToScene=function(e){if(Xa.call(this,e),this.__zr){var t=this.__zr;e.traverse(function(e){e.__zr=t,e.addAnimatorsToZr&&e.addAnimatorsToZr(t)})}},Cn.prototype.removeFromScene=function(e){qa.call(this,e),e.traverse(function(e){var t=e.__zr;e.__zr=null,t&&e.removeAnimatorsFromZr&&e.removeAnimatorsFromZr(t)})},kt.prototype.setTextureImage=function(e,t,r,i){if(this.shader){var n,a,o=r.getZr(),s=this;return s.autoUpdateTextureStatus=!1,s.disableTexture(e),(a=t)&&"none"!==a&&(n=Za.loadTexture(t,r,i,function(t){s.enableTexture(e),o&&o.refresh()}),s.set(e,n)),n}};var Za={};Za.Renderer=Br,Za.Node=Ei,Za.Mesh=Fi,Za.Shader=xr,Za.Material=kt,Za.Texture=zi,Za.Texture2D=Vi,Za.Geometry=$i,Za.SphereGeometry=La,Za.PlaneGeometry=Yn,Za.CubeGeometry=Qn,Za.AmbientLight=Pa,Za.DirectionalLight=Oa,Za.PointLight=Na,Za.SpotLight=Ra,Za.PerspectiveCamera=In,Za.OrthographicCamera=ma,Za.Vector2=Zt,Za.Vector3=Fr,Za.Vector4=Ia,Za.Quaternion=di,Za.Matrix2=Ga,Za.Matrix2d=Ha,Za.Matrix3=Va,Za.Matrix4=hi,Za.Plane=dn,Za.Ray=Qr,Za.BoundingBox=wi,Za.Frustum=yn;var Ya=null;function Ka(e){return Math.pow(2,Math.round(Math.log(e)/Math.LN2))}function Qa(e){if((e.wrapS===zi.REPEAT||e.wrapT===zi.REPEAT)&&e.image){var t=Ka(e.width),r=Ka(e.height);if(t!==e.width||r!==e.height){var i=document.createElement("canvas");i.width=t,i.height=r,i.getContext("2d").drawImage(e.image,0,0,t,r),e.image=i}}}Za.loadTexture=function(e,t,r,n){"function"==typeof r&&(n=r,r={}),r=r||{};for(var a=Object.keys(r).sort(),o="",s=0;s3?t[3]=e[3]:t[3]=1,t):((t=n(e||"#000",t)||[0,0,0,0])[0]/=255,t[1]/=255,t[2]/=255,t)},Za.directionFromAlphaBeta=function(e,t){var r=e/180*Math.PI+Math.PI/2,i=-t/180*Math.PI+Math.PI/2,n=[],a=Math.sin(r);return n[0]=a*Math.cos(i),n[1]=-Math.cos(r),n[2]=a*Math.sin(i),n},Za.getShadowResolution=function(e){var t=1024;switch(e){case"low":t=512;break;case"medium":break;case"high":t=2048;break;case"ultra":t=4096}return t},Za.COMMON_SHADERS=["lambert","color","realistic","hatching","shadow"],Za.createShader=function(e){"ecgl.shadow"===e&&(e="ecgl.displayShadow");var t=xr.source(e+".vertex"),r=xr.source(e+".fragment");t||console.error("Vertex shader of '%s' not exits",e),r||console.error("Fragment shader of '%s' not exits",e);var i=new xr(t,r);return i.name=e,i},Za.createMaterial=function(e,t){t instanceof Array||(t=[t]);var r=Za.createShader(e),i=new kt({shader:r});return t.forEach(function(e){"string"==typeof e&&i.define(e)}),i},Za.setMaterialFromModel=function(e,t,r,i){t.autoUpdateTextureStatus=!1;var n=r.getModel(e+"Material"),a=n.get("detailTexture"),o=Da(n.get("textureTiling"),1),s=Da(n.get("textureOffset"),0);"number"==typeof o&&(o=[o,o]),"number"==typeof s&&(s=[s,s]);var l=o[0]>1||o[1]>1?Za.Texture.REPEAT:Za.Texture.CLAMP_TO_EDGE,h={anisotropic:8,wrapS:l,wrapT:l};if("realistic"===e){var u=n.get("roughness"),c=n.get("metalness");null!=c?isNaN(c)&&(t.setTextureImage("metalnessMap",c,i,h),c=Da(n.get("metalnessAdjust"),.5)):c=0,null!=u?isNaN(u)&&(t.setTextureImage("roughnessMap",u,i,h),u=Da(n.get("roughnessAdjust"),.5)):u=.5;var d=n.get("normalTexture");t.setTextureImage("detailMap",a,i,h),t.setTextureImage("normalMap",d,i,h),t.set({roughness:u,metalness:c,detailUvRepeat:o,detailUvOffset:s})}else if("lambert"===e)t.setTextureImage("detailMap",a,i,h),t.set({detailUvRepeat:o,detailUvOffset:s});else if("color"===e)t.setTextureImage("detailMap",a,i,h),t.set({detailUvRepeat:o,detailUvOffset:s});else if("hatching"===e){var f=n.get("hatchingTextures")||[];f.length;for(var p=0;p<6;p++)t.setTextureImage("hatch"+(p+1),f[p],i,{anisotropic:8,wrapS:Za.Texture.REPEAT,wrapT:Za.Texture.REPEAT});t.set({detailUvRepeat:o,detailUvOffset:s})}},Za.updateVertexAnimation=function(e,t,r,i){var n=i.get("animation"),a=i.get("animationDurationUpdate"),o=i.get("animationEasingUpdate"),s=r.shadowDepthMaterial;if(n&&t&&a>0&&t.geometry.vertexCount===r.geometry.vertexCount){r.material.define("vertex","VERTEX_ANIMATION"),r.ignorePreZ=!0,s&&s.define("vertex","VERTEX_ANIMATION");for(var l=0;l=0&&this._viewsToDispose.splice(t,1),this.views.push(e),e.layer=this;var r=this.zr;e.scene.traverse(function(e){e.__zr=r,e.addAnimatorsToZr&&e.addAnimatorsToZr(r)})}},Ja.prototype.removeView=function(e){if(e.layer===this){var t=this.views.indexOf(e);t>=0&&(this.views.splice(t,1),e.scene.traverse($a,this),e.layer=null,this._viewsToDispose.push(e))}},Ja.prototype.removeViewsAll=function(){this.views.forEach(function(e){e.scene.traverse($a,this),e.layer=null,this._viewsToDispose.push(e)},this),this.views.length=0},Ja.prototype.resize=function(e,t){this.renderer.resize(e,t)},Ja.prototype.clear=function(){var e=this.renderer.gl,t=this._backgroundColor||[0,0,0,0];e.clearColor(t[0],t[1],t[2],t[3]),e.depthMask(!0),e.colorMask(!0,!0,!0,!0),e.clear(e.DEPTH_BUFFER_BIT|e.COLOR_BUFFER_BIT)},Ja.prototype.clearDepth=function(){var e=this.renderer.gl;e.clear(e.DEPTH_BUFFER_BIT)},Ja.prototype.clearColor=function(){var e=this.renderer.gl;e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)},Ja.prototype.needsRefresh=function(){this.zr.refresh()},Ja.prototype.refresh=function(e){this._backgroundColor=e?Za.parseColor(e):[0,0,0,0],this.renderer.clearColor=this._backgroundColor;for(var t=0;t20)){e=e.event;var i=this.pickObject(e.offsetX,e.offsetY);i&&(this._dispatchEvent(e.type,e,i),this._dispatchDataEvent(e.type,e,i));var n=this._clickToSetFocusPoint(e);if(n)n.view.setDOFFocusOnPoint(n.distance)&&this.zr.refresh()}}},Ja.prototype._clickToSetFocusPoint=function(e){for(var t=this.renderer,r=t.viewport,i=this.views.length-1;i>=0;i--){var n=this.views[i];if(n.hasDOF()&&n.containPoint(e.offsetX,e.offsetY)){this._picking.scene=n.scene,this._picking.camera=n.camera,t.viewport=n.viewport;var a=this._picking.pick(e.offsetX,e.offsetY,!0);if(a)return a.view=n,a}}t.viewport=r},Ja.prototype.onglobalout=function(e){var t=this._hovered;t&&this._dispatchEvent("mouseout",e,{target:t.target})},Ja.prototype.pickObject=function(e,t){for(var r=[],i=this.renderer,n=i.viewport,a=0;a=0&&(c.dataIndex=this._lastDataIndex,c.seriesIndex=this._lastSeriesIndex,this.zr.handler.dispatchToElement(u,"mouseout",t)),l=!0):null!=s&&s!==this._lastEventData&&(null!=this._lastEventData&&(c.eventData=this._lastEventData,this.zr.handler.dispatchToElement(u,"mouseout",t)),l=!0),this._lastEventData=s,this._lastDataIndex=n,this._lastSeriesIndex=a),c.eventData=s,c.dataIndex=n,c.seriesIndex=a,(null!=s||parseInt(n,10)>=0&&parseInt(a,10)>=0)&&(this.zr.handler.dispatchToElement(u,e,t),l&&this.zr.handler.dispatchToElement(u,"mouseover",t))},Ja.prototype._dispatchToView=function(e,t){for(var r=0;re&&o=0&&(!function(e){oo(e,"itemStyle"),oo(e,"lineStyle"),oo(e,"areaStyle"),oo(e,"label")}(t),"mapbox"===t.coordinateSystem&&(t.coordinateSystem="mapbox3D",e.mapbox3D=e.mapbox))}),so(e.xAxis3D),so(e.yAxis3D),so(e.zAxis3D),so(e.grid3D),oo(e.geo3D)});const ho={defaultOption:{viewControl:{projection:"perspective",autoRotate:!1,autoRotateDirection:"cw",autoRotateSpeed:10,autoRotateAfterStill:3,damping:.8,rotateSensitivity:1,zoomSensitivity:1,panSensitivity:1,panMouseButton:"middle",rotateMouseButton:"left",distance:150,minDistance:40,maxDistance:400,orthographicSize:150,maxOrthographicSize:400,minOrthographicSize:20,center:[0,0,0],alpha:0,beta:0,minAlpha:-90,maxAlpha:90}},setView:function(e){e=e||{},this.option.viewControl=this.option.viewControl||{},null!=e.alpha&&(this.option.viewControl.alpha=e.alpha),null!=e.beta&&(this.option.viewControl.beta=e.beta),null!=e.distance&&(this.option.viewControl.distance=e.distance),null!=e.center&&(this.option.viewControl.center=e.center)}},uo={defaultOption:{postEffect:{enable:!1,bloom:{enable:!0,intensity:.1},depthOfField:{enable:!1,focalRange:20,focalDistance:50,blurRadius:10,fstop:2.8,quality:"medium"},screenSpaceAmbientOcclusion:{enable:!1,radius:2,quality:"medium",intensity:1},screenSpaceReflection:{enable:!1,quality:"medium",maxRoughness:.8},colorCorrection:{enable:!0,exposure:0,brightness:0,contrast:1,saturation:1,lookupTexture:""},edge:{enable:!1},FXAA:{enable:!1}},temporalSuperSampling:{enable:"auto"}}},co={defaultOption:{light:{main:{shadow:!1,shadowQuality:"high",color:"#fff",intensity:1,alpha:0,beta:0},ambient:{color:"#fff",intensity:.2},ambientCubemap:{texture:null,exposure:1,diffuseIntensity:.5,specularIntensity:.5}}}};var fo=p.extend({type:"grid3D",dependencies:["xAxis3D","yAxis3D","zAxis3D"],defaultOption:{show:!0,zlevel:-10,left:0,top:0,width:"100%",height:"100%",environment:"auto",boxWidth:100,boxHeight:100,boxDepth:100,axisPointer:{show:!0,lineStyle:{color:"rgba(0, 0, 0, 0.8)",width:1},label:{show:!0,formatter:null,margin:8,textStyle:{fontSize:14,color:"#fff",backgroundColor:"rgba(0,0,0,0.5)",padding:3,borderRadius:3}}},axisLine:{show:!0,lineStyle:{color:"#333",width:2,type:"solid"}},axisTick:{show:!0,inside:!1,length:3,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,margin:8,textStyle:{fontSize:12}},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}},light:{main:{alpha:30,beta:40},ambient:{intensity:.4}},viewControl:{alpha:20,beta:40,autoRotate:!1,distance:200,minDistance:40,maxDistance:400}}});m(fo.prototype,ho),m(fo.prototype,uo),m(fo.prototype,co);var po=Da,mo={left:0,middle:1,right:2};function go(e){return e instanceof Array||(e=[e,e]),e}var _o=xe.extend(function(){return{zr:null,viewGL:null,_center:new Fr,minDistance:.5,maxDistance:1.5,maxOrthographicSize:300,minOrthographicSize:30,minAlpha:-90,maxAlpha:90,minBeta:-1/0,maxBeta:1/0,autoRotateAfterStill:0,autoRotateDirection:"cw",autoRotateSpeed:60,damping:.8,rotateSensitivity:1,zoomSensitivity:1,panSensitivity:1,panMouseButton:"middle",rotateMouseButton:"left",_mode:"rotate",_camera:null,_needsUpdate:!1,_rotating:!1,_phi:0,_theta:0,_mouseX:0,_mouseY:0,_rotateVelocity:new Zt,_panVelocity:new Zt,_distance:500,_zoomSpeed:0,_stillTimeout:0,_animators:[]}},function(){["_mouseDownHandler","_mouseWheelHandler","_mouseMoveHandler","_mouseUpHandler","_pinchHandler","_contextMenuHandler","_update"].forEach(function(e){this[e]=this[e].bind(this)},this)},{init:function(){var e=this.zr;e&&(e.on("mousedown",this._mouseDownHandler),e.on("globalout",this._mouseUpHandler),e.on("mousewheel",this._mouseWheelHandler),e.on("pinch",this._pinchHandler),e.animation.on("frame",this._update),e.dom.addEventListener("contextmenu",this._contextMenuHandler))},dispose:function(){var e=this.zr;e&&(e.off("mousedown",this._mouseDownHandler),e.off("mousemove",this._mouseMoveHandler),e.off("mouseup",this._mouseUpHandler),e.off("mousewheel",this._mouseWheelHandler),e.off("pinch",this._pinchHandler),e.off("globalout",this._mouseUpHandler),e.dom.removeEventListener("contextmenu",this._contextMenuHandler),e.animation.off("frame",this._update)),this.stopAllAnimation()},getDistance:function(){return this._distance},setDistance:function(e){this._distance=e,this._needsUpdate=!0},getOrthographicSize:function(){return this._orthoSize},setOrthographicSize:function(e){this._orthoSize=e,this._needsUpdate=!0},getAlpha:function(){return this._theta/Math.PI*180},getBeta:function(){return-this._phi/Math.PI*180},getCenter:function(){return this._center.toArray()},setAlpha:function(e){e=Math.max(Math.min(this.maxAlpha,e),this.minAlpha),this._theta=e/180*Math.PI,this._needsUpdate=!0},setBeta:function(e){e=Math.max(Math.min(this.maxBeta,e),this.minBeta),this._phi=-e/180*Math.PI,this._needsUpdate=!0},setCenter:function(e){this._center.setArray(e)},setViewGL:function(e){this.viewGL=e},getCamera:function(){return this.viewGL.camera},setFromViewControlModel:function(e,t){var r=(t=t||{}).baseDistance||0,i=t.baseOrthoSize||1,n=e.get("projection");"perspective"!==n&&"orthographic"!==n&&"isometric"!==n&&(n="perspective"),this._projection=n,this.viewGL.setProjection(n);var a=e.get("distance")+r,o=e.get("orthographicSize")+i;[["damping",.8],["autoRotate",!1],["autoRotateAfterStill",3],["autoRotateDirection","cw"],["autoRotateSpeed",10],["minDistance",30],["maxDistance",400],["minOrthographicSize",30],["maxOrthographicSize",300],["minAlpha",-90],["maxAlpha",90],["minBeta",-1/0],["maxBeta",1/0],["rotateSensitivity",1],["zoomSensitivity",1],["panSensitivity",1],["panMouseButton","left"],["rotateMouseButton","middle"]].forEach(function(t){this[t[0]]=po(e.get(t[0]),t[1])},this),this.minDistance+=r,this.maxDistance+=r,this.minOrthographicSize+=i,this.maxOrthographicSize+=i;var s=e.ecModel,l={};["animation","animationDurationUpdate","animationEasingUpdate"].forEach(function(t){l[t]=po(e.get(t),s&&s.get(t))});var h=po(t.alpha,e.get("alpha"))||0,u=po(t.beta,e.get("beta"))||0,c=po(t.center,e.get("center"))||[0,0,0];l.animation&&l.animationDurationUpdate>0&&this._notFirst?this.animateTo({alpha:h,beta:u,center:c,distance:a,orthographicSize:o,easing:l.animationEasingUpdate,duration:l.animationDurationUpdate}):(this.setDistance(a),this.setAlpha(h),this.setBeta(u),this.setCenter(c),this.setOrthographicSize(o)),this._notFirst=!0,this._validateProperties()},_validateProperties:function(){},animateTo:function(e){var t=this.zr,r=this,i={},n={};return null!=e.distance&&(i.distance=this.getDistance(),n.distance=e.distance),null!=e.orthographicSize&&(i.orthographicSize=this.getOrthographicSize(),n.orthographicSize=e.orthographicSize),null!=e.alpha&&(i.alpha=this.getAlpha(),n.alpha=e.alpha),null!=e.beta&&(i.beta=this.getBeta(),n.beta=e.beta),null!=e.center&&(i.center=this.getCenter(),n.center=e.center),this._addAnimator(t.animation.animate(i).when(e.duration||1e3,n).during(function(){null!=i.alpha&&r.setAlpha(i.alpha),null!=i.beta&&r.setBeta(i.beta),null!=i.distance&&r.setDistance(i.distance),null!=i.center&&r.setCenter(i.center),null!=i.orthographicSize&&r.setOrthographicSize(i.orthographicSize),r._needsUpdate=!0})).start(e.easing||"linear")},stopAllAnimation:function(){for(var e=0;e0},_update:function(e){if(this._rotating){var t=("cw"===this.autoRotateDirection?1:-1)*this.autoRotateSpeed/180*Math.PI;this._phi-=t*e/1e3,this._needsUpdate=!0}else this._rotateVelocity.len()>0&&(this._needsUpdate=!0);(Math.abs(this._zoomSpeed)>.1||this._panVelocity.len()>0)&&(this._needsUpdate=!0),this._needsUpdate&&(e=Math.min(e,50),this._updateDistanceOrSize(e),this._updatePan(e),this._updateRotate(e),this._updateTransform(),this.getCamera().update(),this.zr&&this.zr.refresh(),this.trigger("update"),this._needsUpdate=!1)},_updateRotate:function(e){var t=this._rotateVelocity;this._phi=t.y*e/20+this._phi,this._theta=t.x*e/20+this._theta,this.setAlpha(this.getAlpha()),this.setBeta(this.getBeta()),this._vectorDamping(t,Math.pow(this.damping,e/16))},_updateDistanceOrSize:function(e){"perspective"===this._projection?this._setDistance(this._distance+this._zoomSpeed*e/20):this._setOrthoSize(this._orthoSize+this._zoomSpeed*e/20),this._zoomSpeed*=Math.pow(this.damping,e/16)},_setDistance:function(e){this._distance=Math.max(Math.min(e,this.maxDistance),this.minDistance)},_setOrthoSize:function(e){this._orthoSize=Math.max(Math.min(e,this.maxOrthographicSize),this.minOrthographicSize);var t=this.getCamera(),r=this._orthoSize,i=r/this.viewGL.viewport.height*this.viewGL.viewport.width;t.left=-i/2,t.right=i/2,t.top=r/2,t.bottom=-r/2},_updatePan:function(e){var t=this._panVelocity,r=this._distance,i=this.getCamera(),n=i.worldTransform.y,a=i.worldTransform.x;this._center.scaleAndAdd(a,-t.x*r/200).scaleAndAdd(n,-t.y*r/200),this._vectorDamping(t,0)},_updateTransform:function(){var e=this.getCamera(),t=new Fr,r=this._theta+Math.PI/2,i=this._phi+Math.PI/2,n=Math.sin(r);t.x=n*Math.cos(i),t.y=-Math.cos(r),t.z=n*Math.sin(i),e.position.copy(this._center).scaleAndAdd(t,this._distance),e.rotation.identity().rotateY(-this._phi).rotateX(-this._theta)},_startCountingStill:function(){clearTimeout(this._stillTimeout);var e=this.autoRotateAfterStill,t=this;!isNaN(e)&&e>0&&(this._stillTimeout=setTimeout(function(){t._rotating=!0},1e3*e))},_vectorDamping:function(e,t){var r=e.len();(r*=t)<1e-4&&(r=0),e.normalize().scale(r)},_decomposeTransform:function(){if(this.getCamera()){this.getCamera().updateWorldTransform();var e=this.getCamera().worldTransform.z,t=Math.asin(e.y),r=Math.atan2(e.x,e.z);this._theta=t,this._phi=-r,this.setBeta(this.getBeta()),this.setAlpha(this.getAlpha()),this.getCamera().aspect?this._setDistance(this.getCamera().position.dist(this._center)):this._setOrthoSize(this.getCamera().top-this.getCamera().bottom)}},_mouseDownHandler:function(e){if(!e.target&&!this._isAnimating()){var t=e.offsetX,r=e.offsetY;this.viewGL&&!this.viewGL.containPoint(t,r)||(this.zr.on("mousemove",this._mouseMoveHandler),this.zr.on("mouseup",this._mouseUpHandler),e.event.targetTouches?1===e.event.targetTouches.length&&(this._mode="rotate"):e.event.button===mo[this.rotateMouseButton]?this._mode="rotate":e.event.button===mo[this.panMouseButton]?this._mode="pan":this._mode="",this._rotateVelocity.set(0,0),this._rotating=!1,this.autoRotate&&this._startCountingStill(),this._mouseX=e.offsetX,this._mouseY=e.offsetY)}},_mouseMoveHandler:function(e){if(!(e.target&&e.target.__isGLToZRProxy||this._isAnimating())){var t=go(this.panSensitivity),r=go(this.rotateSensitivity);"rotate"===this._mode?(this._rotateVelocity.y=(e.offsetX-this._mouseX)/this.zr.getHeight()*2*r[0],this._rotateVelocity.x=(e.offsetY-this._mouseY)/this.zr.getWidth()*2*r[1]):"pan"===this._mode&&(this._panVelocity.x=(e.offsetX-this._mouseX)/this.zr.getWidth()*t[0]*400,this._panVelocity.y=(-e.offsetY+this._mouseY)/this.zr.getHeight()*t[1]*400),this._mouseX=e.offsetX,this._mouseY=e.offsetY,e.event.preventDefault()}},_mouseWheelHandler:function(e){if(!this._isAnimating()){var t=e.event.wheelDelta||-e.event.detail;this._zoomHandler(e,t)}},_pinchHandler:function(e){this._isAnimating()||(this._zoomHandler(e,e.pinchScale>1?1:-1),this._mode="")},_zoomHandler:function(e,t){if(0!==t){var r,i=e.offsetX,n=e.offsetY;if(!this.viewGL||this.viewGL.containPoint(i,n))r="perspective"===this._projection?Math.max(Math.max(Math.min(this._distance-this.minDistance,this.maxDistance-this._distance))/20,.5):Math.max(Math.max(Math.min(this._orthoSize-this.minOrthographicSize,this.maxOrthographicSize-this._orthoSize))/20,.5),this._zoomSpeed=(t>0?-1:1)*r*this.zoomSensitivity,this._rotating=!1,this.autoRotate&&"rotate"===this._mode&&this._startCountingStill(),e.event.preventDefault()}},_mouseUpHandler:function(){this.zr.off("mousemove",this._mouseMoveHandler),this.zr.off("mouseup",this._mouseUpHandler)},_isRightMouseButtonUsed:function(){return"right"===this.rotateMouseButton||"right"===this.panMouseButton},_contextMenuHandler:function(e){this._isRightMouseButtonUsed()&&e.preventDefault()},_addAnimator:function(e){var t=this._animators;return t.push(e),e.done(function(){var r=t.indexOf(e);r>=0&&t.splice(r,1)}),e}});Object.defineProperty(_o.prototype,"autoRotate",{get:function(e){return this._autoRotate},set:function(e){this._autoRotate=e,this._rotating=e}});const vo={convertToDynamicArray:function(e){e&&this.resetOffset();var t=this.attributes;for(var r in t)e||!t[r].value?t[r].value=[]:t[r].value=Array.prototype.slice.call(t[r].value);e||!this.indices?this.indices=[]:this.indices=Array.prototype.slice.call(this.indices)},convertToTypedArray:function(){var e=this.attributes;for(var t in e)e[t].value&&e[t].value.length>0?e[t].value=new Float32Array(e[t].value):e[t].value=null;this.indices&&this.indices.length>0&&(this.indices=this.vertexCount>65535?new Uint32Array(this.indices):new Uint16Array(this.indices)),this.dirty()}},yo={vec2:qt,vec3:Mr,vec4:Jr,mat3:$r,mat4:Sr};var xo=yo.vec3,bo=[[0,0],[1,1]],To=$i.extend(function(){return{segmentScale:1,dynamic:!0,useNativeLine:!0,attributes:{position:new $i.Attribute("position","float",3,"POSITION"),positionPrev:new $i.Attribute("positionPrev","float",3),positionNext:new $i.Attribute("positionNext","float",3),prevPositionPrev:new $i.Attribute("prevPositionPrev","float",3),prevPosition:new $i.Attribute("prevPosition","float",3),prevPositionNext:new $i.Attribute("prevPositionNext","float",3),offset:new $i.Attribute("offset","float",1),color:new $i.Attribute("color","float",4,"COLOR")}}},{resetOffset:function(){this._vertexOffset=0,this._triangleOffset=0,this._itemVertexOffsets=[]},setVertexCount:function(e){var t=this.attributes;this.vertexCount!==e&&(t.position.init(e),t.color.init(e),this.useNativeLine||(t.positionPrev.init(e),t.positionNext.init(e),t.offset.init(e)),e>65535?this.indices instanceof Uint16Array&&(this.indices=new Uint32Array(this.indices)):this.indices instanceof Uint32Array&&(this.indices=new Uint16Array(this.indices)))},setTriangleCount:function(e){this.triangleCount!==e&&(this.indices=0===e?null:this.vertexCount>65535?new Uint32Array(3*e):new Uint16Array(3*e))},_getCubicCurveApproxStep:function(e,t,r,i){return 1/(xo.dist(e,t)+xo.dist(r,t)+xo.dist(i,r)+1)*this.segmentScale},getCubicCurveVertexCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?2*a:2*a+2},getCubicCurveTriangleCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?0:2*a},getLineVertexCount:function(){return this.getPolylineVertexCount(bo)},getLineTriangleCount:function(){return this.getPolylineTriangleCount(bo)},getPolylineVertexCount:function(e){var t;"number"==typeof e?t=e:t="number"!=typeof e[0]?e.length:e.length/3;return this.useNativeLine?2*(t-1):2*(t-1)+2},getPolylineTriangleCount:function(e){var t;"number"==typeof e?t=e:t="number"!=typeof e[0]?e.length:e.length/3;return this.useNativeLine?0:2*Math.max(t-1,0)},addCubicCurve:function(e,t,r,i,n,a){null==a&&(a=1);var o=e[0],s=e[1],l=e[2],h=t[0],u=t[1],c=t[2],d=r[0],f=r[1],p=r[2],m=i[0],g=i[1],_=i[2],v=this._getCubicCurveApproxStep(e,t,r,i),y=v*v,x=y*v,b=3*v,T=3*y,w=6*y,S=6*x,M=o-2*h+d,A=s-2*u+f,E=l-2*c+p,D=3*(h-d)-o+m,C=3*(u-f)-s+g,L=3*(c-p)-l+_,P=o,O=s,N=l,R=(h-o)*b+M*T+D*x,I=(u-s)*b+A*T+C*x,B=(c-l)*b+E*T+L*x,z=M*w+D*S,F=A*w+C*S,G=E*w+L*S,U=D*S,H=C*S,V=L*S,k=0,W=0,j=Math.ceil(1/v),X=new Float32Array(3*(j+1)),q=(X=[],0);for(W=0;W1&&(P=R>0?Math.min(P,m):Math.max(P,m),O=I>0?Math.min(O,g):Math.max(O,g),N=B>0?Math.min(N,_):Math.max(N,_));return this.addPolyline(X,n,a)},addLine:function(e,t,r,i){return this.addPolyline([e,t],r,i)},addPolyline:function(e,t,r,i,n){if(e.length){var a="number"!=typeof e[0];if(null==n&&(n=a?e.length:e.length/3),!(n<2)){null==i&&(i=0),null==r&&(r=1),this._itemVertexOffsets.push(this._vertexOffset);var o,s,l=(a="number"!=typeof e[0])?"number"!=typeof t[0]:t.length/4===n,h=this.attributes.position,u=this.attributes.positionPrev,c=this.attributes.positionNext,d=this.attributes.color,f=this.attributes.offset,p=this.indices,m=this._vertexOffset;r=Math.max(r,.01);for(var g=i;g1&&(h.copy(m,m-1),d.copy(m,m-1),m++):(g0&&(c.set(m-2,o),c.set(m-1,o)),h.set(m,o),h.set(m+1,o),d.set(m,s),d.set(m+1,s),f.set(m,r/2),f.set(m+1,-r/2),m+=2),this.useNativeLine)d.set(m,s),h.set(m,o),m++;else if(g>0){var y=3*this._triangleOffset;(p=this.indices)[y]=m-4,p[y+1]=m-3,p[y+2]=m-2,p[y+3]=m-3,p[y+4]=m-1,p[y+5]=m-2,this._triangleOffset+=2}}if(!this.useNativeLine){var x=this._vertexOffset,b=this._vertexOffset+2*n;u.copy(x,x+2),u.copy(x+1,x+3),c.copy(b-1,b-3),c.copy(b-2,b-4)}return this._vertexOffset=m,this._vertexOffset}}},setItemColor:function(e,t){for(var r=this._itemVertexOffsets[e],i=eo&&(n=this._x=0,a+=this._rowHeight+l,this._y=a,this._rowHeight=0),this._x+=t+l,this._rowHeight=Math.max(this._rowHeight,r),a+r+l>s)return null;e.x+=this.offsetX*this.dpr+n,e.y+=this.offsetY*this.dpr+a,this._zr.add(e);var h=[this.offsetX/this.width,this.offsetY/this.height];return[[n/o+h[0],a/s+h[1]],[(n+t)/o+h[0],(a+r)/s+h[1]]]},_fitElement:function(e,t,r){var i=e.getBoundingRect(),n=t/i.width,a=r/i.height;e.x=-i.x*n,e.y=-i.y*a,e.scaleX=n,e.scaleY=a,e.update()}},So.prototype={clear:function(){for(var e=0;e=e)){var n=(r+this._nodeWidth)*this._dpr,a=(i+this._nodeHeight)*this._dpr;try{this._zr.resize({width:n,height:a})}catch(s){this._canvas.width=n,this._canvas.height=a}var o=new wo(this._zr,r,i,this._nodeWidth,this._nodeHeight,this._gap,this._dpr);return this._textureAtlasNodes.push(o),o}},add:function(e,t,r){if(this._coords[e.id])return this._coords[e.id];var i=this._getCurrentNode().add(e,t,r);if(!i){var n=this._expand();if(!n)return;i=n.add(e,t,r)}return this._coords[e.id]=i,i},getCoordsScale:function(){var e=this._dpr;return[this._nodeWidth/this._canvas.width*e,this._nodeHeight/this._canvas.height*e]},getCoords:function(e){return this._coords[e]},dispose:function(){this._zr.dispose()}},Mo.prototype={constructor:Mo,setScene:function(e){this._scene=e,this._skybox&&this._skybox.attachScene(this._scene)},initLight:function(e){this._lightRoot=e,this.mainLight=new Za.DirectionalLight({shadowBias:.005}),this.ambientLight=new Za.AmbientLight,e.add(this.mainLight),e.add(this.ambientLight)},dispose:function(){this._lightRoot&&(this._lightRoot.remove(this.mainLight),this._lightRoot.remove(this.ambientLight))},updateLight:function(e){var t=this.mainLight,r=this.ambientLight,i=e.getModel("light"),n=i.getModel("main"),a=i.getModel("ambient");t.intensity=n.get("intensity"),r.intensity=a.get("intensity"),t.color=Za.parseColor(n.get("color")).slice(0,3),r.color=Za.parseColor(a.get("color")).slice(0,3);var o=n.get("alpha")||0,s=n.get("beta")||0;t.position.setArray(Za.directionFromAlphaBeta(o,s)),t.lookAt(Za.Vector3.ZERO),t.castShadow=n.get("shadow"),t.shadowResolution=Za.getShadowResolution(n.get("shadowQuality"))},updateAmbientCubemap:function(e,t,r){var i=t.getModel("light.ambientCubemap"),n=i.get("texture");if(n){this._cubemapLightsCache=this._cubemapLightsCache||{};var a=this._cubemapLightsCache[n];if(!a){var o=this;a=this._cubemapLightsCache[n]=Za.createAmbientCubemap(i.option,e,r,function(){o._isSkyboxFromAmbientCubemap&&o._skybox.setEnvironmentMap(a.specular.cubemap),r.getZr().refresh()})}this._lightRoot.add(a.diffuse),this._lightRoot.add(a.specular),this._currentCubemapLights=a}else this._currentCubemapLights&&(this._lightRoot.remove(this._currentCubemapLights.diffuse),this._lightRoot.remove(this._currentCubemapLights.specular),this._currentCubemapLights=null)},updateSkybox:function(e,t,r){var i=t.get("environment"),o=this;var s=(o._skybox=o._skybox||new $n,o._skybox);if(i&&"none"!==i)if("auto"===i)if(this._isSkyboxFromAmbientCubemap=!0,this._currentCubemapLights){var l=this._currentCubemapLights.specular.cubemap;s.setEnvironmentMap(l),this._scene&&s.attachScene(this._scene),s.material.set("lod",3)}else this._skybox&&this._skybox.detachScene();else if("object"==typeof i&&i.colorStops||"string"==typeof i&&n(i)){this._isSkyboxFromAmbientCubemap=!1;var h=new Za.Texture2D({anisotropic:8,flipY:!1});s.setEnvironmentMap(h);var u=h.image=document.createElement("canvas");u.width=u.height=16;var c=u.getContext("2d"),d=new a({shape:{x:0,y:0,width:16,height:16},style:{fill:i}});v(c,d),s.attachScene(this._scene)}else{this._isSkyboxFromAmbientCubemap=!1;h=Za.loadTexture(i,r,{anisotropic:8,flipY:!1});s.setEnvironmentMap(h),s.attachScene(this._scene)}else this._skybox&&this._skybox.detachScene(this._scene),this._skybox=null;var f=t.coordinateSystem;if(this._skybox)if(!f||!f.viewGL||"auto"===i||i.match&&i.match(/.hdr$/))this._skybox.material.undefine("fragment","SRGB_DECODE");else{var p=f.viewGL.isLinearSpace()?"define":"undefine";this._skybox.material[p]("fragment","SRGB_DECODE")}}};var Ao,Eo,Do,Co,Lo=yo.vec3,Po=$i.extend(function(){return{segmentScale:1,useNativeLine:!0,attributes:{position:new $i.Attribute("position","float",3,"POSITION"),normal:new $i.Attribute("normal","float",3,"NORMAL"),color:new $i.Attribute("color","float",4,"COLOR")}}},{resetOffset:function(){this._vertexOffset=0,this._faceOffset=0},setQuadCount:function(e){var t=this.attributes,r=this.getQuadVertexCount()*e,i=this.getQuadTriangleCount()*e;this.vertexCount!==r&&(t.position.init(r),t.normal.init(r),t.color.init(r)),this.triangleCount!==i&&(this.indices=r>65535?new Uint32Array(3*i):new Uint16Array(3*i))},getQuadVertexCount:function(){return 4},getQuadTriangleCount:function(){return 2},addQuad:(Ao=Lo.create(),Eo=Lo.create(),Do=Lo.create(),Co=[0,3,1,3,2,1],function(e,t){var r=this.attributes.position,i=this.attributes.normal,n=this.attributes.color;Lo.sub(Ao,e[1],e[0]),Lo.sub(Eo,e[2],e[1]),Lo.cross(Do,Ao,Eo),Lo.normalize(Do,Do);for(var a=0;a<4;a++)r.set(this._vertexOffset+a,e[a]),n.set(this._vertexOffset+a,t),i.set(this._vertexOffset+a,Do);var o=3*this._faceOffset;for(a=0;a<6;a++)this.indices[o+a]=Co[a]+this._vertexOffset;this._vertexOffset+=4,this._faceOffset+=2})});g(Po.prototype,vo);var Oo=Da,No={x:0,y:2,z:1};function Ro(e,t,r){this.rootNode=new Za.Node;var i=new Za.Mesh({geometry:new To({useNativeLine:!1}),material:t,castShadow:!1,ignorePicking:!0,$ignorePicking:!0,renderOrder:1}),n=new Za.Mesh({geometry:new Po,material:r,castShadow:!1,culling:!1,ignorePicking:!0,$ignorePicking:!0,renderOrder:0});this.rootNode.add(n),this.rootNode.add(i),this.faceInfo=e,this.plane=new Za.Plane,this.linesMesh=i,this.quadsMesh=n}Ro.prototype.update=function(e,t,r){var i=e.coordinateSystem,n=[i.getAxis(this.faceInfo[0]),i.getAxis(this.faceInfo[1])],a=this.linesMesh.geometry,o=this.quadsMesh.geometry;a.convertToDynamicArray(!0),o.convertToDynamicArray(!0),this._updateSplitLines(a,n,e,r),this._udpateSplitAreas(o,n,e,r),a.convertToTypedArray(),o.convertToTypedArray();var s=i.getAxis(this.faceInfo[2]);!function(e,t,r,i){var n=[0,0,0],a=i<0?r.getExtentMin():r.getExtentMax();n[No[r.dim]]=a,e.position.setArray(n),e.rotation.identity(),t.distance=-Math.abs(a),t.normal.set(0,0,0),"x"===r.dim?(e.rotation.rotateY(i*Math.PI/2),t.normal.x=-i):"z"===r.dim?(e.rotation.rotateX(-i*Math.PI/2),t.normal.y=-i):(i>0&&e.rotation.rotateY(Math.PI),t.normal.z=-i)}(this.rootNode,this.plane,s,this.faceInfo[3])},Ro.prototype._updateSplitLines=function(e,r,i,n){var a=n.getDevicePixelRatio();r.forEach(function(n,o){var s=n.model,l=r[1-o].getExtent();if(!n.scale.isBlank()){var h=s.getModel("splitLine",i.getModel("splitLine"));if(h.get("show")){var u=h.getModel("lineStyle"),c=u.get("color"),d=Oo(u.get("opacity"),1),f=Oo(u.get("width"),1);c=t(c)?c:[c];for(var p=n.getTicksCoords({tickModel:h}),m=0,g=0;g65535?new Uint32Array(3*r):new Uint16Array(3*r))},setSpriteAlign:function(e,t,r,i,n){var a,o,s,l;switch(null==r&&(r="left"),null==i&&(i="top"),n=n||0,r){case"left":a=n,s=t[0]+n;break;case"center":case"middle":a=-t[0]/2,s=t[0]/2;break;case"right":a=-t[0]-n,s=-n}switch(i){case"bottom":o=n,l=t[1]+n;break;case"middle":o=-t[1]/2,l=t[1]/2;break;case"top":o=-t[1]-n,l=-n}var h=4*e,u=this.attributes.offset;u.set(h,[a,l]),u.set(h+1,[s,l]),u.set(h+2,[s,o]),u.set(h+3,[a,o])},addSprite:function(e,t,r,i,n,a){var o=this._vertexOffset;this.setSprite(this._vertexOffset/4,e,t,r,i,n,a);for(var s=0;si[1]?0:1,o=this._faces[2*r+a],s=this._faces[2*r+1-a];o.rootNode.invisible=!0,s.rootNode.invisible=!1}},_updateAxisLinePosition:function(){var e=this._model.coordinateSystem,t=e.getAxis("x"),r=e.getAxis("y"),i=e.getAxis("z"),n=i.getExtentMax(),a=i.getExtentMin(),o=t.getExtentMin(),s=t.getExtentMax(),l=r.getExtentMax(),h=r.getExtentMin(),u=this._axes[0].rootNode,c=this._axes[1].rootNode,d=this._axes[2].rootNode,f=this._faces,p=f[4].rootNode.invisible?h:l,m=f[2].rootNode.invisible?n:a,g=f[0].rootNode.invisible?o:s,_=f[2].rootNode.invisible?n:a,v=f[0].rootNode.invisible?s:o,y=f[4].rootNode.invisible?h:l;u.rotation.identity(),c.rotation.identity(),d.rotation.identity(),f[4].rootNode.invisible&&(this._axes[0].flipped=!0,u.rotation.rotateX(Math.PI)),f[0].rootNode.invisible&&(this._axes[1].flipped=!0,c.rotation.rotateZ(Math.PI)),f[4].rootNode.invisible&&(this._axes[2].flipped=!0,d.rotation.rotateY(Math.PI)),u.position.set(0,m,p),c.position.set(g,_,0),d.position.set(v,0,y),u.update(),c.update(),d.update(),this._updateAxisLabelAlign()},_updateAxisLabelAlign:function(){var e=this._control.getCamera(),t=[new Za.Vector4,new Za.Vector4],r=new Za.Vector4;this.groupGL.getWorldPosition(r),r.w=1,r.transformMat4(e.viewMatrix).transformMat4(e.projectionMatrix),r.x/=r.w,r.y/=r.w,this._axes.forEach(function(i){var n=i.axisLineCoords;i.labelsMesh.geometry;for(var a=0;ar.y?"bottom":"top"):(s="middle",o=u>r.x?"left":"right"),i.setSpriteAlign(o,s,this._api)},this)},_doShowAxisPointer:function(){this._axisPointerLineMesh.invisible&&(this._axisPointerLineMesh.invisible=!1,this._axisPointerLabelsMesh.invisible=!1,this._api.getZr().refresh())},_doHideAxisPointer:function(){this._axisPointerLineMesh.invisible||(this._axisPointerLineMesh.invisible=!0,this._axisPointerLabelsMesh.invisible=!0,this._api.getZr().refresh())},_updateAxisPointer:function(e){var t=this._model.coordinateSystem,r=t.dataToPoint(e),i=this._axisPointerLineMesh.geometry,n=this._model.getModel("axisPointer"),a=this._api.getDevicePixelRatio();function o(e){return Da(e.model.get("axisPointer.show"),n.get("show"))}function s(e){var t=e.model.getModel("axisPointer",n).getModel("lineStyle"),r=Za.parseColor(t.get("color")),i=ko(t.get("width"),1),a=ko(t.get("opacity"),1);return r[3]*=a,{color:r,lineWidth:i}}i.convertToDynamicArray(!0);for(var l=0;l 0.0) {\n if (texture2D(alphaMap, v_Texcoord).a <= alphaCutoff) {\n discard;\n }\n }\n#ifdef USE_VSM\n depth = depth * 0.5 + 0.5;\n float moment1 = depth;\n float moment2 = depth * depth;\n #ifdef SUPPORT_STANDARD_DERIVATIVES\n float dx = dFdx(depth);\n float dy = dFdy(depth);\n moment2 += 0.25*(dx*dx+dy*dy);\n #endif\n gl_FragColor = vec4(moment1, moment2, 0.0, 1.0);\n#else\n #ifdef SUPPORT_STANDARD_DERIVATIVES\n float dx = dFdx(depth);\n float dy = dFdy(depth);\n depth += sqrt(dx*dx + dy*dy) * slopeScale + bias;\n #else\n depth += bias;\n #endif\n gl_FragColor = encodeFloat(depth * 0.5 + 0.5);\n#endif\n}\n@end\n@export clay.sm.debug_depth\nuniform sampler2D depthMap;\nvarying vec2 v_Texcoord;\n@import clay.util.decode_float\nvoid main() {\n vec4 tex = texture2D(depthMap, v_Texcoord);\n#ifdef USE_VSM\n gl_FragColor = vec4(tex.rgb, 1.0);\n#else\n float depth = decodeFloat(tex);\n gl_FragColor = vec4(depth, depth, depth, 1.0);\n#endif\n}\n@end\n@export clay.sm.distance.vertex\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform mat4 world : WORLD;\nattribute vec3 position : POSITION;\n@import clay.chunk.skinning_header\nvarying vec3 v_WorldPosition;\nvoid main (){\n vec4 P = vec4(position, 1.0);\n#ifdef SKINNING\n @import clay.chunk.skin_matrix\n P = skinMatrixWS * P;\n#endif\n#ifdef INSTANCING\n @import clay.chunk.instancing_matrix\n P = instanceMat * P;\n#endif\n gl_Position = worldViewProjection * P;\n v_WorldPosition = (world * P).xyz;\n}\n@end\n@export clay.sm.distance.fragment\nuniform vec3 lightPosition;\nuniform float range : 100;\nvarying vec3 v_WorldPosition;\n@import clay.util.encode_float\nvoid main(){\n float dist = distance(lightPosition, v_WorldPosition);\n#ifdef USE_VSM\n gl_FragColor = vec4(dist, dist * dist, 0.0, 0.0);\n#else\n dist = dist / range;\n gl_FragColor = encodeFloat(dist);\n#endif\n}\n@end\n@export clay.plugin.shadow_map_common\n@import clay.util.decode_float\nfloat tapShadowMap(sampler2D map, vec2 uv, float z){\n vec4 tex = texture2D(map, uv);\n return step(z, decodeFloat(tex) * 2.0 - 1.0);\n}\nfloat pcf(sampler2D map, vec2 uv, float z, float textureSize, vec2 scale) {\n float shadowContrib = tapShadowMap(map, uv, z);\n vec2 offset = vec2(1.0 / textureSize) * scale;\n#ifdef PCF_KERNEL_SIZE\n for (int _idx_ = 0; _idx_ < PCF_KERNEL_SIZE; _idx_++) {{\n shadowContrib += tapShadowMap(map, uv + offset * pcfKernel[_idx_], z);\n }}\n return shadowContrib / float(PCF_KERNEL_SIZE + 1);\n#else\n shadowContrib += tapShadowMap(map, uv+vec2(offset.x, 0.0), z);\n shadowContrib += tapShadowMap(map, uv+vec2(offset.x, offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(-offset.x, offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(0.0, offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(-offset.x, 0.0), z);\n shadowContrib += tapShadowMap(map, uv+vec2(-offset.x, -offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(offset.x, -offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(0.0, -offset.y), z);\n return shadowContrib / 9.0;\n#endif\n}\nfloat pcf(sampler2D map, vec2 uv, float z, float textureSize) {\n return pcf(map, uv, z, textureSize, vec2(1.0));\n}\nfloat chebyshevUpperBound(vec2 moments, float z){\n float p = 0.0;\n z = z * 0.5 + 0.5;\n if (z <= moments.x) {\n p = 1.0;\n }\n float variance = moments.y - moments.x * moments.x;\n variance = max(variance, 0.0000001);\n float mD = moments.x - z;\n float pMax = variance / (variance + mD * mD);\n pMax = clamp((pMax-0.4)/(1.0-0.4), 0.0, 1.0);\n return max(p, pMax);\n}\nfloat computeShadowContrib(\n sampler2D map, mat4 lightVPM, vec3 position, float textureSize, vec2 scale, vec2 offset\n) {\n vec4 posInLightSpace = lightVPM * vec4(position, 1.0);\n posInLightSpace.xyz /= posInLightSpace.w;\n float z = posInLightSpace.z;\n if(all(greaterThan(posInLightSpace.xyz, vec3(-0.99, -0.99, -1.0))) &&\n all(lessThan(posInLightSpace.xyz, vec3(0.99, 0.99, 1.0)))){\n vec2 uv = (posInLightSpace.xy+1.0) / 2.0;\n #ifdef USE_VSM\n vec2 moments = texture2D(map, uv * scale + offset).xy;\n return chebyshevUpperBound(moments, z);\n #else\n return pcf(map, uv * scale + offset, z, textureSize, scale);\n #endif\n }\n return 1.0;\n}\nfloat computeShadowContrib(sampler2D map, mat4 lightVPM, vec3 position, float textureSize) {\n return computeShadowContrib(map, lightVPM, position, textureSize, vec2(1.0), vec2(0.0));\n}\nfloat computeShadowContribOmni(samplerCube map, vec3 direction, float range)\n{\n float dist = length(direction);\n vec4 shadowTex = textureCube(map, direction);\n#ifdef USE_VSM\n vec2 moments = shadowTex.xy;\n float variance = moments.y - moments.x * moments.x;\n float mD = moments.x - dist;\n float p = variance / (variance + mD * mD);\n if(moments.x + 0.001 < dist){\n return clamp(p, 0.0, 1.0);\n }else{\n return 1.0;\n }\n#else\n return step(dist, (decodeFloat(shadowTex) + 0.0002) * range);\n#endif\n}\n@end\n@export clay.plugin.compute_shadow_map\n#if defined(SPOT_LIGHT_SHADOWMAP_COUNT) || defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT) || defined(POINT_LIGHT_SHADOWMAP_COUNT)\n#ifdef SPOT_LIGHT_SHADOWMAP_COUNT\nuniform sampler2D spotLightShadowMaps[SPOT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform mat4 spotLightMatrices[SPOT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform float spotLightShadowMapSizes[SPOT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\n#endif\n#ifdef DIRECTIONAL_LIGHT_SHADOWMAP_COUNT\n#if defined(SHADOW_CASCADE)\nuniform sampler2D directionalLightShadowMaps[1]:unconfigurable;\nuniform mat4 directionalLightMatrices[SHADOW_CASCADE]:unconfigurable;\nuniform float directionalLightShadowMapSizes[1]:unconfigurable;\nuniform float shadowCascadeClipsNear[SHADOW_CASCADE]:unconfigurable;\nuniform float shadowCascadeClipsFar[SHADOW_CASCADE]:unconfigurable;\n#else\nuniform sampler2D directionalLightShadowMaps[DIRECTIONAL_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform mat4 directionalLightMatrices[DIRECTIONAL_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform float directionalLightShadowMapSizes[DIRECTIONAL_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\n#endif\n#endif\n#ifdef POINT_LIGHT_SHADOWMAP_COUNT\nuniform samplerCube pointLightShadowMaps[POINT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\n#endif\nuniform bool shadowEnabled : true;\n#ifdef PCF_KERNEL_SIZE\nuniform vec2 pcfKernel[PCF_KERNEL_SIZE];\n#endif\n@import clay.plugin.shadow_map_common\n#if defined(SPOT_LIGHT_SHADOWMAP_COUNT)\nvoid computeShadowOfSpotLights(vec3 position, inout float shadowContribs[SPOT_LIGHT_COUNT] ) {\n float shadowContrib;\n for(int _idx_ = 0; _idx_ < SPOT_LIGHT_SHADOWMAP_COUNT; _idx_++) {{\n shadowContrib = computeShadowContrib(\n spotLightShadowMaps[_idx_], spotLightMatrices[_idx_], position,\n spotLightShadowMapSizes[_idx_]\n );\n shadowContribs[_idx_] = shadowContrib;\n }}\n for(int _idx_ = SPOT_LIGHT_SHADOWMAP_COUNT; _idx_ < SPOT_LIGHT_COUNT; _idx_++){{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#endif\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n#ifdef SHADOW_CASCADE\nvoid computeShadowOfDirectionalLights(vec3 position, inout float shadowContribs[DIRECTIONAL_LIGHT_COUNT]){\n float depth = (2.0 * gl_FragCoord.z - gl_DepthRange.near - gl_DepthRange.far)\n / (gl_DepthRange.far - gl_DepthRange.near);\n float shadowContrib;\n shadowContribs[0] = 1.0;\n for (int _idx_ = 0; _idx_ < SHADOW_CASCADE; _idx_++) {{\n if (\n depth >= shadowCascadeClipsNear[_idx_] &&\n depth <= shadowCascadeClipsFar[_idx_]\n ) {\n shadowContrib = computeShadowContrib(\n directionalLightShadowMaps[0], directionalLightMatrices[_idx_], position,\n directionalLightShadowMapSizes[0],\n vec2(1.0 / float(SHADOW_CASCADE), 1.0),\n vec2(float(_idx_) / float(SHADOW_CASCADE), 0.0)\n );\n shadowContribs[0] = shadowContrib;\n }\n }}\n for(int _idx_ = DIRECTIONAL_LIGHT_SHADOWMAP_COUNT; _idx_ < DIRECTIONAL_LIGHT_COUNT; _idx_++) {{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#else\nvoid computeShadowOfDirectionalLights(vec3 position, inout float shadowContribs[DIRECTIONAL_LIGHT_COUNT]){\n float shadowContrib;\n for(int _idx_ = 0; _idx_ < DIRECTIONAL_LIGHT_SHADOWMAP_COUNT; _idx_++) {{\n shadowContrib = computeShadowContrib(\n directionalLightShadowMaps[_idx_], directionalLightMatrices[_idx_], position,\n directionalLightShadowMapSizes[_idx_]\n );\n shadowContribs[_idx_] = shadowContrib;\n }}\n for(int _idx_ = DIRECTIONAL_LIGHT_SHADOWMAP_COUNT; _idx_ < DIRECTIONAL_LIGHT_COUNT; _idx_++) {{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#endif\n#endif\n#if defined(POINT_LIGHT_SHADOWMAP_COUNT)\nvoid computeShadowOfPointLights(vec3 position, inout float shadowContribs[POINT_LIGHT_COUNT] ){\n vec3 lightPosition;\n vec3 direction;\n for(int _idx_ = 0; _idx_ < POINT_LIGHT_SHADOWMAP_COUNT; _idx_++) {{\n lightPosition = pointLightPosition[_idx_];\n direction = position - lightPosition;\n shadowContribs[_idx_] = computeShadowContribOmni(pointLightShadowMaps[_idx_], direction, pointLightRange[_idx_]);\n }}\n for(int _idx_ = POINT_LIGHT_SHADOWMAP_COUNT; _idx_ < POINT_LIGHT_COUNT; _idx_++) {{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#endif\n#endif\n@end");var ts,rs,is,ns,as,os,ss,ls=xe.extend(function(){return{softShadow:ls.PCF,shadowBlur:1,lightFrustumBias:"auto",kernelPCF:new Float32Array([1,0,1,1,-1,1,0,1,-1,0,-1,-1,1,-1,0,-1]),precision:"highp",_lastRenderNotCastShadow:!1,_frameBuffer:new Xn,_textures:{},_shadowMapNumber:{POINT_LIGHT:0,DIRECTIONAL_LIGHT:0,SPOT_LIGHT:0},_depthMaterials:{},_distanceMaterials:{},_receivers:[],_lightsCastShadow:[],_lightCameras:{},_lightMaterials:{},_texturePool:new Zo}},function(){this._gaussianPassH=new ya({fragment:xr.source("clay.compositor.gaussian_blur")}),this._gaussianPassV=new ya({fragment:xr.source("clay.compositor.gaussian_blur")}),this._gaussianPassH.setUniform("blurSize",this.shadowBlur),this._gaussianPassH.setUniform("blurDir",0),this._gaussianPassV.setUniform("blurSize",this.shadowBlur),this._gaussianPassV.setUniform("blurDir",1),this._outputDepthPass=new ya({fragment:xr.source("clay.sm.debug_depth")})},{render:function(e,t,r,i){r||(r=t.getMainCamera()),this.trigger("beforerender",this,e,t,r),this._renderShadowPass(e,t,r,i),this.trigger("afterrender",this,e,t,r)},renderDebug:function(e,t){e.saveClear();var r=e.viewport,i=0,n=t||r.width/4,a=n;for(var o in this.softShadow===ls.VSM?this._outputDepthPass.material.define("fragment","USE_VSM"):this._outputDepthPass.material.undefine("fragment","USE_VSM"),this._textures){var s=this._textures[o];e.setViewport(i,0,n*s.width/s.height,a),this._outputDepthPass.setUniform("depthMap",s),this._outputDepthPass.render(e),i+=n*s.width/s.height}e.setViewport(r),e.restoreClear()},_updateReceivers:function(e,t){if(t.receiveShadow?(this._receivers.push(t),t.material.set("shadowEnabled",1),t.material.set("pcfKernel",this.kernelPCF)):t.material.set("shadowEnabled",0),this.softShadow===ls.VSM)t.material.define("fragment","USE_VSM"),t.material.undefine("fragment","PCF_KERNEL_SIZE");else{t.material.undefine("fragment","USE_VSM");var r=this.kernelPCF;r&&r.length?t.material.define("fragment","PCF_KERNEL_SIZE",r.length/2):t.material.undefine("fragment","PCF_KERNEL_SIZE")}},_update:function(e,t){var r=this;t.traverse(function(t){t.isRenderable()&&r._updateReceivers(e,t)});for(var i=0;i4){console.warn("Support at most 4 cascade");continue}p.shadowCascade>1&&(o=p),this.renderDirectionalLightShadow(e,t,r,p,c,u,h)}else"SPOT_LIGHT"===p.type?this.renderSpotLightShadow(e,t,p,l,s):"POINT_LIGHT"===p.type&&this.renderPointLightShadow(e,t,p,d);this._shadowMapNumber[p.type]++}for(var m in this._shadowMapNumber){var g=this._shadowMapNumber[m],_=m+"_SHADOWMAP_COUNT";for(f=0;f0?v.define("fragment",_,g):v.isDefined("fragment",_)&&v.undefine("fragment",_))}}for(f=0;f0){var x=h.map(S);if(y.directionalLightShadowMaps={value:h,type:"tv"},y.directionalLightMatrices={value:u,type:"m4v"},y.directionalLightShadowMapSizes={value:x,type:"1fv"},o){var b=c.slice(),T=c.slice();b.pop(),T.shift(),b.reverse(),T.reverse(),u.reverse(),y.shadowCascadeClipsNear={value:b,type:"1fv"},y.shadowCascadeClipsFar={value:T,type:"1fv"}}}if(s.length>0){var w=s.map(S);(y=t.shadowUniforms).spotLightShadowMaps={value:s,type:"tv"},y.spotLightMatrices={value:l,type:"m4v"},y.spotLightShadowMapSizes={value:w,type:"1fv"}}d.length>0&&(y.pointLightShadowMaps={value:d,type:"tv"})}function S(e){return e.height}},renderDirectionalLightShadow:(ts=new yn,rs=new hi,is=new wi,ns=new hi,as=new hi,os=new hi,ss=new hi,function(e,t,r,i,n,a,o){var s=this._getDepthMaterial(i),l={getMaterial:function(e){return e.shadowDepthMaterial||s},isMaterialChanged:es,getUniform:$o,ifRender:function(e){return e.castShadow},sortCompare:Br.opaqueSortCompare};if(!t.viewBoundingBoxLastFrame.isFinite()){var h=t.getBoundingBox();t.viewBoundingBoxLastFrame.copy(h).applyTransform(r.viewMatrix)}var u=Math.min(-t.viewBoundingBoxLastFrame.min.z,r.far),c=Math.max(-t.viewBoundingBoxLastFrame.max.z,r.near),d=this._getDirectionalLightCamera(i,t,r),f=os.array;ss.copy(d.projectionMatrix),Sr.invert(as.array,d.worldTransform.array),Sr.multiply(as.array,as.array,r.worldTransform.array),Sr.multiply(f,ss.array,as.array);for(var p=[],m=r instanceof In,g=(r.near+r.far)/(r.near-r.far),_=2*r.near*r.far/(r.near-r.far),v=0;v<=i.shadowCascade;v++){var y=c*Math.pow(u/c,v/i.shadowCascade),x=c+(u-c)*v/i.shadowCascade,b=y*i.cascadeSplitLogFactor+x*(1-i.cascadeSplitLogFactor);p.push(b),n.push(-(-b*g+_)/-b)}var T=this._getTexture(i,i.shadowCascade);o.push(T);var w=e.viewport,S=e.gl;for(this._frameBuffer.attach(T),this._frameBuffer.bind(e),S.clear(S.COLOR_BUFFER_BIT|S.DEPTH_BUFFER_BIT),v=0;vd?s>f?p[n>0?"px":"nx"]=!0:p[o>0?"pz":"nz"]=!0:d>f?p[a>0?"py":"ny"]=!0:p[o>0?"pz":"nz"]=!0}for(r=0;r0)this.outputs[e].keepLastFrame?(this._prevOutputTextures[e]&&this._compositor.releaseTexture(this._prevOutputTextures[e]),this._prevOutputTextures[e]=this._outputTextures[e]):this._compositor.releaseTexture(this._outputTextures[e])}}}),us=xe.extend(function(){return{nodes:[]}},{dirty:function(){this._dirty=!0},addNode:function(e){this.nodes.indexOf(e)>=0||(this.nodes.push(e),this._dirty=!0)},removeNode:function(e){"string"==typeof e&&(e=this.getNodeByName(e));var t=this.nodes.indexOf(e);t>=0&&(this.nodes.splice(t,1),this._dirty=!0)},getNodeByName:function(e){for(var t=0;t=r.COLOR_ATTACHMENT0&&u<=r.COLOR_ATTACHMENT0+8&&h.push(u);l.drawBuffersEXT(h)}e.saveClear(),e.clearBit=Se|Ae,t=e.render(this.scene,this.camera,!this.autoUpdateScene,this.preZ),e.restoreClear(),i.unbind(e)}else t=e.render(this.scene,this.camera,!this.autoUpdateScene,this.preZ);this.trigger("afterrender",t),this._rendering=!1,this._rendered=!0}}),fs=hs.extend(function(){return{texture:null,outputs:{color:{}}}},function(){},{getOutput:function(e,t){return this.texture},beforeFrame:function(){},afterFrame:function(){}}),ps=hs.extend(function(){return{name:"",inputs:{},outputs:null,shader:"",inputLinks:{},outputLinks:{},pass:null,_prevOutputTextures:{},_outputTextures:{},_outputReferences:{},_rendering:!1,_rendered:!1,_compositor:null}},function(){var e=new ya({fragment:this.shader});this.pass=e},{render:function(e,t){this.trigger("beforerender",e),this._rendering=!0;var r=e.gl;for(var i in this.inputLinks){var n=(c=this.inputLinks[i]).node.getOutput(e,c.pin);this.pass.setUniform(i,n)}if(this.outputs){this.pass.outputs={};var a={};for(var o in this.outputs){var s=this.updateParameter(o,e);isNaN(s.width)&&this.updateParameter(o,e);var l=this.outputs[o],h=this._compositor.allocateTexture(s);this._outputTextures[o]=h,"string"==typeof(u=l.attachment||r.COLOR_ATTACHMENT0)&&(u=r[u]),a[u]=h}for(var u in this._compositor.getFrameBuffer().bind(e),a)this._compositor.getFrameBuffer().attach(a[u],u);this.pass.render(e),this._compositor.getFrameBuffer().updateMipmap(e)}else this.pass.outputs=null,this._compositor.getFrameBuffer().unbind(e),this.pass.render(e,t);for(var i in this.inputLinks){var c;(c=this.inputLinks[i]).node.removeReference(c.pin)}this._rendering=!1,this._rendered=!0,this.trigger("afterrender",e)},updateParameter:function(e,t){var r,i,n=this.outputs[e],a=n.parameters,o=n._parametersCopy;if(o||(o=n._parametersCopy={}),a)for(var s in a)"width"!==s&&"height"!==s&&(o[s]=a[s]);return r="function"==typeof a.width?a.width.call(this,t):a.width,i="function"==typeof a.height?a.height.call(this,t):a.height,r=Math.ceil(r),i=Math.ceil(i),o.width===r&&o.height===i||this._outputTextures[e]&&this._outputTextures[e].dispose(t),o.width=r,o.height=i,o},setParameter:function(e,t){this.pass.setUniform(e,t)},getParameter:function(e){return this.pass.getUniform(e)},setParameters:function(e){for(var t in e)this.setParameter(t,e[t])},define:function(e,t){this.pass.material.define("fragment",e,t)},undefine:function(e){this.pass.material.undefine("fragment",e)},removeReference:function(e){(this._outputReferences[e]--,0===this._outputReferences[e])&&(this.outputs[e].keepLastFrame?(this._prevOutputTextures[e]&&this._compositor.releaseTexture(this._prevOutputTextures[e]),this._prevOutputTextures[e]=this._outputTextures[e]):this._compositor.releaseTexture(this._outputTextures[e]))},clear:function(){hs.prototype.clear.call(this),this.pass.material.disableTexturesAll()}});const ms="@export clay.compositor.kernel.gaussian_9\nfloat gaussianKernel[9];\ngaussianKernel[0] = 0.07;\ngaussianKernel[1] = 0.09;\ngaussianKernel[2] = 0.12;\ngaussianKernel[3] = 0.14;\ngaussianKernel[4] = 0.16;\ngaussianKernel[5] = 0.14;\ngaussianKernel[6] = 0.12;\ngaussianKernel[7] = 0.09;\ngaussianKernel[8] = 0.07;\n@end\n@export clay.compositor.kernel.gaussian_13\nfloat gaussianKernel[13];\ngaussianKernel[0] = 0.02;\ngaussianKernel[1] = 0.03;\ngaussianKernel[2] = 0.06;\ngaussianKernel[3] = 0.08;\ngaussianKernel[4] = 0.11;\ngaussianKernel[5] = 0.13;\ngaussianKernel[6] = 0.14;\ngaussianKernel[7] = 0.13;\ngaussianKernel[8] = 0.11;\ngaussianKernel[9] = 0.08;\ngaussianKernel[10] = 0.06;\ngaussianKernel[11] = 0.03;\ngaussianKernel[12] = 0.02;\n@end\n@export clay.compositor.gaussian_blur\n#define SHADER_NAME gaussian_blur\nuniform sampler2D texture;varying vec2 v_Texcoord;\nuniform float blurSize : 2.0;\nuniform vec2 textureSize : [512.0, 512.0];\nuniform float blurDir : 0.0;\n@import clay.util.rgbm\n@import clay.util.clamp_sample\nvoid main (void)\n{\n @import clay.compositor.kernel.gaussian_9\n vec2 off = blurSize / textureSize;\n off *= vec2(1.0 - blurDir, blurDir);\n vec4 sum = vec4(0.0);\n float weightAll = 0.0;\n for (int i = 0; i < 9; i++) {\n float w = gaussianKernel[i];\n vec4 texel = decodeHDR(clampSample(texture, v_Texcoord + float(i - 4) * off));\n sum += texel * w;\n weightAll += w;\n }\n gl_FragColor = encodeHDR(sum / max(weightAll, 0.01));\n}\n@end\n",gs="\n@export clay.compositor.lut\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform sampler2D lookup;\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n float blueColor = tex.b * 63.0;\n vec2 quad1;\n quad1.y = floor(floor(blueColor) / 8.0);\n quad1.x = floor(blueColor) - (quad1.y * 8.0);\n vec2 quad2;\n quad2.y = floor(ceil(blueColor) / 8.0);\n quad2.x = ceil(blueColor) - (quad2.y * 8.0);\n vec2 texPos1;\n texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.r);\n texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.g);\n vec2 texPos2;\n texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.r);\n texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.g);\n vec4 newColor1 = texture2D(lookup, texPos1);\n vec4 newColor2 = texture2D(lookup, texPos2);\n vec4 newColor = mix(newColor1, newColor2, fract(blueColor));\n gl_FragColor = vec4(newColor.rgb, tex.w);\n}\n@end",_s="@export clay.compositor.output\n#define OUTPUT_ALPHA\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\n@import clay.util.rgbm\nvoid main()\n{\n vec4 tex = decodeHDR(texture2D(texture, v_Texcoord));\n gl_FragColor.rgb = tex.rgb;\n#ifdef OUTPUT_ALPHA\n gl_FragColor.a = tex.a;\n#else\n gl_FragColor.a = 1.0;\n#endif\n gl_FragColor = encodeHDR(gl_FragColor);\n#ifdef PREMULTIPLY_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif\n}\n@end",vs="@export clay.compositor.bright\nuniform sampler2D texture;\nuniform float threshold : 1;\nuniform float scale : 1.0;\nuniform vec2 textureSize: [512, 512];\nvarying vec2 v_Texcoord;\nconst vec3 lumWeight = vec3(0.2125, 0.7154, 0.0721);\n@import clay.util.rgbm\nvec4 median(vec4 a, vec4 b, vec4 c)\n{\n return a + b + c - min(min(a, b), c) - max(max(a, b), c);\n}\nvoid main()\n{\n vec4 texel = decodeHDR(texture2D(texture, v_Texcoord));\n#ifdef ANTI_FLICKER\n vec3 d = 1.0 / textureSize.xyx * vec3(1.0, 1.0, 0.0);\n vec4 s1 = decodeHDR(texture2D(texture, v_Texcoord - d.xz));\n vec4 s2 = decodeHDR(texture2D(texture, v_Texcoord + d.xz));\n vec4 s3 = decodeHDR(texture2D(texture, v_Texcoord - d.zy));\n vec4 s4 = decodeHDR(texture2D(texture, v_Texcoord + d.zy));\n texel = median(median(texel, s1, s2), s3, s4);\n#endif\n float lum = dot(texel.rgb , lumWeight);\n vec4 color;\n if (lum > threshold && texel.a > 0.0)\n {\n color = vec4(texel.rgb * scale, texel.a * scale);\n }\n else\n {\n color = vec4(0.0);\n }\n gl_FragColor = encodeHDR(color);\n}\n@end\n",ys="@export clay.compositor.downsample\nuniform sampler2D texture;\nuniform vec2 textureSize : [512, 512];\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\nfloat brightness(vec3 c)\n{\n return max(max(c.r, c.g), c.b);\n}\n@import clay.util.clamp_sample\nvoid main()\n{\n vec4 d = vec4(-1.0, -1.0, 1.0, 1.0) / textureSize.xyxy;\n#ifdef ANTI_FLICKER\n vec3 s1 = decodeHDR(clampSample(texture, v_Texcoord + d.xy)).rgb;\n vec3 s2 = decodeHDR(clampSample(texture, v_Texcoord + d.zy)).rgb;\n vec3 s3 = decodeHDR(clampSample(texture, v_Texcoord + d.xw)).rgb;\n vec3 s4 = decodeHDR(clampSample(texture, v_Texcoord + d.zw)).rgb;\n float s1w = 1.0 / (brightness(s1) + 1.0);\n float s2w = 1.0 / (brightness(s2) + 1.0);\n float s3w = 1.0 / (brightness(s3) + 1.0);\n float s4w = 1.0 / (brightness(s4) + 1.0);\n float oneDivideSum = 1.0 / (s1w + s2w + s3w + s4w);\n vec4 color = vec4(\n (s1 * s1w + s2 * s2w + s3 * s3w + s4 * s4w) * oneDivideSum,\n 1.0\n );\n#else\n vec4 color = decodeHDR(clampSample(texture, v_Texcoord + d.xy));\n color += decodeHDR(clampSample(texture, v_Texcoord + d.zy));\n color += decodeHDR(clampSample(texture, v_Texcoord + d.xw));\n color += decodeHDR(clampSample(texture, v_Texcoord + d.zw));\n color *= 0.25;\n#endif\n gl_FragColor = encodeHDR(color);\n}\n@end",xs="\n@export clay.compositor.upsample\n#define HIGH_QUALITY\nuniform sampler2D texture;\nuniform vec2 textureSize : [512, 512];\nuniform float sampleScale: 0.5;\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\n@import clay.util.clamp_sample\nvoid main()\n{\n#ifdef HIGH_QUALITY\n vec4 d = vec4(1.0, 1.0, -1.0, 0.0) / textureSize.xyxy * sampleScale;\n vec4 s;\n s = decodeHDR(clampSample(texture, v_Texcoord - d.xy));\n s += decodeHDR(clampSample(texture, v_Texcoord - d.wy)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord - d.zy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zw)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord )) * 4.0;\n s += decodeHDR(clampSample(texture, v_Texcoord + d.xw)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.wy)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord + d.xy));\n gl_FragColor = encodeHDR(s / 16.0);\n#else\n vec4 d = vec4(-1.0, -1.0, +1.0, +1.0) / textureSize.xyxy;\n vec4 s;\n s = decodeHDR(clampSample(texture, v_Texcoord + d.xy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.xw));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zw));\n gl_FragColor = encodeHDR(s / 4.0);\n#endif\n}\n@end",bs="@export clay.compositor.hdr.composite\n#define TONEMAPPING\nuniform sampler2D texture;\n#ifdef BLOOM_ENABLED\nuniform sampler2D bloom;\n#endif\n#ifdef LENSFLARE_ENABLED\nuniform sampler2D lensflare;\nuniform sampler2D lensdirt;\n#endif\n#ifdef LUM_ENABLED\nuniform sampler2D lum;\n#endif\n#ifdef LUT_ENABLED\nuniform sampler2D lut;\n#endif\n#ifdef COLOR_CORRECTION\nuniform float brightness : 0.0;\nuniform float contrast : 1.0;\nuniform float saturation : 1.0;\n#endif\n#ifdef VIGNETTE\nuniform float vignetteDarkness: 1.0;\nuniform float vignetteOffset: 1.0;\n#endif\nuniform float exposure : 1.0;\nuniform float bloomIntensity : 0.25;\nuniform float lensflareIntensity : 1;\nvarying vec2 v_Texcoord;\n@import clay.util.srgb\nvec3 ACESToneMapping(vec3 color)\n{\n const float A = 2.51;\n const float B = 0.03;\n const float C = 2.43;\n const float D = 0.59;\n const float E = 0.14;\n return (color * (A * color + B)) / (color * (C * color + D) + E);\n}\nfloat eyeAdaption(float fLum)\n{\n return mix(0.2, fLum, 0.5);\n}\n#ifdef LUT_ENABLED\nvec3 lutTransform(vec3 color) {\n float blueColor = color.b * 63.0;\n vec2 quad1;\n quad1.y = floor(floor(blueColor) / 8.0);\n quad1.x = floor(blueColor) - (quad1.y * 8.0);\n vec2 quad2;\n quad2.y = floor(ceil(blueColor) / 8.0);\n quad2.x = ceil(blueColor) - (quad2.y * 8.0);\n vec2 texPos1;\n texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.r);\n texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.g);\n vec2 texPos2;\n texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.r);\n texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.g);\n vec4 newColor1 = texture2D(lut, texPos1);\n vec4 newColor2 = texture2D(lut, texPos2);\n vec4 newColor = mix(newColor1, newColor2, fract(blueColor));\n return newColor.rgb;\n}\n#endif\n@import clay.util.rgbm\nvoid main()\n{\n vec4 texel = vec4(0.0);\n vec4 originalTexel = vec4(0.0);\n#ifdef TEXTURE_ENABLED\n texel = decodeHDR(texture2D(texture, v_Texcoord));\n originalTexel = texel;\n#endif\n#ifdef BLOOM_ENABLED\n vec4 bloomTexel = decodeHDR(texture2D(bloom, v_Texcoord));\n texel.rgb += bloomTexel.rgb * bloomIntensity;\n texel.a += bloomTexel.a * bloomIntensity;\n#endif\n#ifdef LENSFLARE_ENABLED\n texel += decodeHDR(texture2D(lensflare, v_Texcoord)) * texture2D(lensdirt, v_Texcoord) * lensflareIntensity;\n#endif\n texel.a = min(texel.a, 1.0);\n#ifdef LUM_ENABLED\n float fLum = texture2D(lum, vec2(0.5, 0.5)).r;\n float adaptedLumDest = 3.0 / (max(0.1, 1.0 + 10.0*eyeAdaption(fLum)));\n float exposureBias = adaptedLumDest * exposure;\n#else\n float exposureBias = exposure;\n#endif\n#ifdef TONEMAPPING\n texel.rgb *= exposureBias;\n texel.rgb = ACESToneMapping(texel.rgb);\n#endif\n texel = linearTosRGB(texel);\n#ifdef LUT_ENABLED\n texel.rgb = lutTransform(clamp(texel.rgb,vec3(0.0),vec3(1.0)));\n#endif\n#ifdef COLOR_CORRECTION\n texel.rgb = clamp(texel.rgb + vec3(brightness), 0.0, 1.0);\n texel.rgb = clamp((texel.rgb - vec3(0.5))*contrast+vec3(0.5), 0.0, 1.0);\n float lum = dot(texel.rgb, vec3(0.2125, 0.7154, 0.0721));\n texel.rgb = mix(vec3(lum), texel.rgb, saturation);\n#endif\n#ifdef VIGNETTE\n vec2 uv = (v_Texcoord - vec2(0.5)) * vec2(vignetteOffset);\n texel.rgb = mix(texel.rgb, vec3(1.0 - vignetteDarkness), dot(uv, uv));\n#endif\n gl_FragColor = encodeHDR(texel);\n#ifdef DEBUG\n #if DEBUG == 1\n gl_FragColor = encodeHDR(decodeHDR(texture2D(texture, v_Texcoord)));\n #elif DEBUG == 2\n gl_FragColor = encodeHDR(decodeHDR(texture2D(bloom, v_Texcoord)) * bloomIntensity);\n #elif DEBUG == 3\n gl_FragColor = encodeHDR(decodeHDR(texture2D(lensflare, v_Texcoord) * lensflareIntensity));\n #endif\n#endif\n if (originalTexel.a <= 0.01 && gl_FragColor.a > 1e-5) {\n gl_FragColor.a = dot(gl_FragColor.rgb, vec3(0.2125, 0.7154, 0.0721));\n }\n#ifdef PREMULTIPLY_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif\n}\n@end",Ts="@export clay.compositor.blend\n#define SHADER_NAME blend\n#ifdef TEXTURE1_ENABLED\nuniform sampler2D texture1;\nuniform float weight1 : 1.0;\n#endif\n#ifdef TEXTURE2_ENABLED\nuniform sampler2D texture2;\nuniform float weight2 : 1.0;\n#endif\n#ifdef TEXTURE3_ENABLED\nuniform sampler2D texture3;\nuniform float weight3 : 1.0;\n#endif\n#ifdef TEXTURE4_ENABLED\nuniform sampler2D texture4;\nuniform float weight4 : 1.0;\n#endif\n#ifdef TEXTURE5_ENABLED\nuniform sampler2D texture5;\nuniform float weight5 : 1.0;\n#endif\n#ifdef TEXTURE6_ENABLED\nuniform sampler2D texture6;\nuniform float weight6 : 1.0;\n#endif\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\nvoid main()\n{\n vec4 tex = vec4(0.0);\n#ifdef TEXTURE1_ENABLED\n tex += decodeHDR(texture2D(texture1, v_Texcoord)) * weight1;\n#endif\n#ifdef TEXTURE2_ENABLED\n tex += decodeHDR(texture2D(texture2, v_Texcoord)) * weight2;\n#endif\n#ifdef TEXTURE3_ENABLED\n tex += decodeHDR(texture2D(texture3, v_Texcoord)) * weight3;\n#endif\n#ifdef TEXTURE4_ENABLED\n tex += decodeHDR(texture2D(texture4, v_Texcoord)) * weight4;\n#endif\n#ifdef TEXTURE5_ENABLED\n tex += decodeHDR(texture2D(texture5, v_Texcoord)) * weight5;\n#endif\n#ifdef TEXTURE6_ENABLED\n tex += decodeHDR(texture2D(texture6, v_Texcoord)) * weight6;\n#endif\n gl_FragColor = encodeHDR(tex);\n}\n@end",ws="@export clay.compositor.fxaa\nuniform sampler2D texture;\nuniform vec4 viewport : VIEWPORT;\nvarying vec2 v_Texcoord;\n#define FXAA_REDUCE_MIN (1.0/128.0)\n#define FXAA_REDUCE_MUL (1.0/8.0)\n#define FXAA_SPAN_MAX 8.0\n@import clay.util.rgbm\nvoid main()\n{\n vec2 resolution = 1.0 / viewport.zw;\n vec3 rgbNW = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( -1.0, -1.0 ) ) * resolution ) ).xyz;\n vec3 rgbNE = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( 1.0, -1.0 ) ) * resolution ) ).xyz;\n vec3 rgbSW = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( -1.0, 1.0 ) ) * resolution ) ).xyz;\n vec3 rgbSE = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( 1.0, 1.0 ) ) * resolution ) ).xyz;\n vec4 rgbaM = decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution ) );\n vec3 rgbM = rgbaM.xyz;\n float opacity = rgbaM.w;\n vec3 luma = vec3( 0.299, 0.587, 0.114 );\n float lumaNW = dot( rgbNW, luma );\n float lumaNE = dot( rgbNE, luma );\n float lumaSW = dot( rgbSW, luma );\n float lumaSE = dot( rgbSE, luma );\n float lumaM = dot( rgbM, luma );\n float lumaMin = min( lumaM, min( min( lumaNW, lumaNE ), min( lumaSW, lumaSE ) ) );\n float lumaMax = max( lumaM, max( max( lumaNW, lumaNE) , max( lumaSW, lumaSE ) ) );\n vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n float dirReduce = max( ( lumaNW + lumaNE + lumaSW + lumaSE ) * ( 0.25 * FXAA_REDUCE_MUL ), FXAA_REDUCE_MIN );\n float rcpDirMin = 1.0 / ( min( abs( dir.x ), abs( dir.y ) ) + dirReduce );\n dir = min( vec2( FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max( vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * resolution;\n vec3 rgbA = decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * ( 1.0 / 3.0 - 0.5 ) ) ).xyz;\n rgbA += decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * ( 2.0 / 3.0 - 0.5 ) ) ).xyz;\n rgbA *= 0.5;\n vec3 rgbB = decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * -0.5 ) ).xyz;\n rgbB += decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * 0.5 ) ).xyz;\n rgbB *= 0.25;\n rgbB += rgbA * 0.5;\n float lumaB = dot( rgbB, luma );\n if ( ( lumaB < lumaMin ) || ( lumaB > lumaMax ) )\n {\n gl_FragColor = vec4( rgbA, opacity );\n }\n else {\n gl_FragColor = vec4( rgbB, opacity );\n }\n}\n@end";var Ss;(Ss=xr).import("@export clay.compositor.coloradjust\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float brightness : 0.0;\nuniform float contrast : 1.0;\nuniform float exposure : 0.0;\nuniform float gamma : 1.0;\nuniform float saturation : 1.0;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord);\n vec3 color = clamp(tex.rgb + vec3(brightness), 0.0, 1.0);\n color = clamp( (color-vec3(0.5))*contrast+vec3(0.5), 0.0, 1.0);\n color = clamp( color * pow(2.0, exposure), 0.0, 1.0);\n color = clamp( pow(color, vec3(gamma)), 0.0, 1.0);\n float luminance = dot( color, w );\n color = mix(vec3(luminance), color, saturation);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.brightness\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float brightness : 0.0;\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord);\n vec3 color = tex.rgb + vec3(brightness);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.contrast\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float contrast : 1.0;\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord);\n vec3 color = (tex.rgb-vec3(0.5))*contrast+vec3(0.5);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.exposure\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float exposure : 0.0;\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n vec3 color = tex.rgb * pow(2.0, exposure);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.gamma\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float gamma : 1.0;\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n vec3 color = pow(tex.rgb, vec3(gamma));\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.saturation\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float saturation : 1.0;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n vec3 color = tex.rgb;\n float luminance = dot(color, w);\n color = mix(vec3(luminance), color, saturation);\n gl_FragColor = vec4(color, tex.a);\n}\n@end"),Ss.import(ms),Ss.import("@export clay.compositor.hdr.log_lum\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\n@import clay.util.rgbm\nvoid main()\n{\n vec4 tex = decodeHDR(texture2D(texture, v_Texcoord));\n float luminance = dot(tex.rgb, w);\n luminance = log(luminance + 0.001);\n gl_FragColor = encodeHDR(vec4(vec3(luminance), 1.0));\n}\n@end\n@export clay.compositor.hdr.lum_adaption\nvarying vec2 v_Texcoord;\nuniform sampler2D adaptedLum;\nuniform sampler2D currentLum;\nuniform float frameTime : 0.02;\n@import clay.util.rgbm\nvoid main()\n{\n float fAdaptedLum = decodeHDR(texture2D(adaptedLum, vec2(0.5, 0.5))).r;\n float fCurrentLum = exp(encodeHDR(texture2D(currentLum, vec2(0.5, 0.5))).r);\n fAdaptedLum += (fCurrentLum - fAdaptedLum) * (1.0 - pow(0.98, 30.0 * frameTime));\n gl_FragColor = encodeHDR(vec4(vec3(fAdaptedLum), 1.0));\n}\n@end\n@export clay.compositor.lum\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord );\n float luminance = dot(tex.rgb, w);\n gl_FragColor = vec4(vec3(luminance), 1.0);\n}\n@end"),Ss.import(gs),Ss.import("@export clay.compositor.vignette\n#define OUTPUT_ALPHA\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float darkness: 1;\nuniform float offset: 1;\n@import clay.util.rgbm\nvoid main()\n{\n vec4 texel = decodeHDR(texture2D(texture, v_Texcoord));\n gl_FragColor.rgb = texel.rgb;\n vec2 uv = (v_Texcoord - vec2(0.5)) * vec2(offset);\n gl_FragColor = encodeHDR(vec4(mix(texel.rgb, vec3(1.0 - darkness), dot(uv, uv)), texel.a));\n}\n@end"),Ss.import(_s),Ss.import(vs),Ss.import(ys),Ss.import(xs),Ss.import(bs),Ss.import("@export clay.compositor.lensflare\n#define SAMPLE_NUMBER 8\nuniform sampler2D texture;\nuniform sampler2D lenscolor;\nuniform vec2 textureSize : [512, 512];\nuniform float dispersal : 0.3;\nuniform float haloWidth : 0.4;\nuniform float distortion : 1.0;\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\nvec4 textureDistorted(\n in vec2 texcoord,\n in vec2 direction,\n in vec3 distortion\n) {\n return vec4(\n decodeHDR(texture2D(texture, texcoord + direction * distortion.r)).r,\n decodeHDR(texture2D(texture, texcoord + direction * distortion.g)).g,\n decodeHDR(texture2D(texture, texcoord + direction * distortion.b)).b,\n 1.0\n );\n}\nvoid main()\n{\n vec2 texcoord = -v_Texcoord + vec2(1.0); vec2 textureOffset = 1.0 / textureSize;\n vec2 ghostVec = (vec2(0.5) - texcoord) * dispersal;\n vec2 haloVec = normalize(ghostVec) * haloWidth;\n vec3 distortion = vec3(-textureOffset.x * distortion, 0.0, textureOffset.x * distortion);\n vec4 result = vec4(0.0);\n for (int i = 0; i < SAMPLE_NUMBER; i++)\n {\n vec2 offset = fract(texcoord + ghostVec * float(i));\n float weight = length(vec2(0.5) - offset) / length(vec2(0.5));\n weight = pow(1.0 - weight, 10.0);\n result += textureDistorted(offset, normalize(ghostVec), distortion) * weight;\n }\n result *= texture2D(lenscolor, vec2(length(vec2(0.5) - texcoord)) / length(vec2(0.5)));\n float weight = length(vec2(0.5) - fract(texcoord + haloVec)) / length(vec2(0.5));\n weight = pow(1.0 - weight, 10.0);\n vec2 offset = fract(texcoord + haloVec);\n result += textureDistorted(offset, normalize(ghostVec), distortion) * weight;\n gl_FragColor = result;\n}\n@end"),Ss.import(Ts),Ss.import(ws);var Ms=/^#source\((.*?)\)/;function As(e,t){var r=new cs;t=t||{};var i={textures:{},parameters:{}};for(var n in e.parameters){var a=e.parameters[n];i.parameters[n]=Ls(a)}return function(e,t,r,i){if(!e.textures)return void i({});var n={},a=0,o=!1,s=r.textureRootPath;ye.each(e.textures,function(e,t){var r,l=e.path,h=Ls(e.parameters);if(Array.isArray(l)&&6===l.length)s&&(l=l.map(function(e){return ye.relative2absolute(e,s)})),r=new Nn(h);else{if("string"!=typeof l)return;s&&(l=ye.relative2absolute(l,s)),r=new Vi(h)}r.load(l),a++,r.once("success",function(){n[t]=r,0===--a&&(i(n),o=!0)})}),0!==a||o||i(n)}(e,0,t,function(n){i.textures=n,function(){for(var n=0;n0;)r+=i*(n%t),n=Math.floor(n/t),i/=t;return r}function Rs(e){for(var t=new Uint8Array(e*e*4),r=0,i=new Fr,n=0;n 0.99999) {\n gl_FragColor = vec4(1.0);\n return;\n }\n mat3 kernelBasis;\n#endif\n\n float z = depthTexel.r * 2.0 - 1.0;\n\n vec4 projectedPos = vec4(v_Texcoord * 2.0 - 1.0, z, 1.0);\n vec4 p4 = projectionInv * projectedPos;\n\n vec3 position = p4.xyz / p4.w;\n\n float ao = ssaoEstimator(position, kernelBasis);\n ao = clamp(1.0 - (1.0 - ao) * intensity, 0.0, 1.0);\n gl_FragColor = vec4(vec3(ao), 1.0);\n}\n\n@end\n\n\n@export ecgl.ssao.blur\n#define SHADER_NAME SSAO_BLUR\n\nuniform sampler2D ssaoTexture;\n\n#ifdef NORMALTEX_ENABLED\nuniform sampler2D normalTex;\n#endif\n\nvarying vec2 v_Texcoord;\n\nuniform vec2 textureSize;\nuniform float blurSize : 1.0;\n\nuniform int direction: 0.0;\n\n#ifdef DEPTHTEX_ENABLED\nuniform sampler2D depthTex;\nuniform mat4 projection;\nuniform float depthRange : 0.5;\n\nfloat getLinearDepth(vec2 coord)\n{\n float depth = texture2D(depthTex, coord).r * 2.0 - 1.0;\n return projection[3][2] / (depth * projection[2][3] - projection[2][2]);\n}\n#endif\n\nvoid main()\n{\n float kernel[5];\n kernel[0] = 0.122581;\n kernel[1] = 0.233062;\n kernel[2] = 0.288713;\n kernel[3] = 0.233062;\n kernel[4] = 0.122581;\n\n vec2 off = vec2(0.0);\n if (direction == 0) {\n off[0] = blurSize / textureSize.x;\n }\n else {\n off[1] = blurSize / textureSize.y;\n }\n\n vec2 coord = v_Texcoord;\n\n float sum = 0.0;\n float weightAll = 0.0;\n\n#ifdef NORMALTEX_ENABLED\n vec3 centerNormal = texture2D(normalTex, v_Texcoord).rgb * 2.0 - 1.0;\n#endif\n#if defined(DEPTHTEX_ENABLED)\n float centerDepth = getLinearDepth(v_Texcoord);\n#endif\n\n for (int i = 0; i < 5; i++) {\n vec2 coord = clamp(v_Texcoord + vec2(float(i) - 2.0) * off, vec2(0.0), vec2(1.0));\n\n float w = kernel[i];\n#ifdef NORMALTEX_ENABLED\n vec3 normal = texture2D(normalTex, coord).rgb * 2.0 - 1.0;\n w *= clamp(dot(normal, centerNormal), 0.0, 1.0);\n#endif\n#ifdef DEPTHTEX_ENABLED\n float d = getLinearDepth(coord);\n w *= (1.0 - smoothstep(abs(centerDepth - d) / depthRange, 0.0, 1.0));\n#endif\n\n weightAll += w;\n sum += texture2D(ssaoTexture, coord).r * w;\n }\n\n gl_FragColor = vec4(vec3(sum / weightAll), 1.0);\n}\n\n@end\n"),zs.prototype.setDepthTexture=function(e){this._depthTex=e},zs.prototype.setNormalTexture=function(e){this._normalTex=e,this._ssaoPass.material[e?"enableTexture":"disableTexture"]("normalTex"),this.setKernelSize(this._kernelSize)},zs.prototype.update=function(e,t,r){var i=e.getWidth(),n=e.getHeight(),a=this._ssaoPass,o=this._blurPass;a.setUniform("kernel",this._kernels[r%this._kernels.length]),a.setUniform("depthTex",this._depthTex),null!=this._normalTex&&a.setUniform("normalTex",this._normalTex),a.setUniform("depthTexSize",[this._depthTex.width,this._depthTex.height]);var s=new hi;hi.transpose(s,t.worldTransform),a.setUniform("projection",t.projectionMatrix.array),a.setUniform("projectionInv",t.invProjectionMatrix.array),a.setUniform("viewInverseTranspose",s.array);var l=this._ssaoTexture,h=this._blurTexture,u=this._blurTexture2;l.width=i/2,l.height=n/2,h.width=i,h.height=n,u.width=i,u.height=n,this._framebuffer.attach(l),this._framebuffer.bind(e),e.gl.clearColor(1,1,1,1),e.gl.clear(e.gl.COLOR_BUFFER_BIT),a.render(e),o.setUniform("textureSize",[i/2,n/2]),o.setUniform("projection",t.projectionMatrix.array),this._framebuffer.attach(h),o.setUniform("direction",0),o.setUniform("ssaoTexture",l),o.render(e),this._framebuffer.attach(u),o.setUniform("textureSize",[i,n]),o.setUniform("direction",1),o.setUniform("ssaoTexture",h),o.render(e),this._framebuffer.unbind(e);var c=e.clearColor;e.gl.clearColor(c[0],c[1],c[2],c[3])},zs.prototype.getTargetTexture=function(){return this._blurTexture2},zs.prototype.setParameter=function(e,t){"noiseTexSize"===e?this.setNoiseSize(t):"kernelSize"===e?this.setKernelSize(t):"intensity"===e?this._ssaoPass.material.set("intensity",t):this._ssaoPass.setUniform(e,t)},zs.prototype.setKernelSize=function(e){this._kernelSize=e,this._ssaoPass.material.define("fragment","KERNEL_SIZE",e),this._kernels=this._kernels||[];for(var t=0;t<30;t++)this._kernels[t]=Bs(e,t*e,!!this._normalTex)},zs.prototype.setNoiseSize=function(e){var t=this._ssaoPass.getUniform("noiseTex");t?(t.data=Rs(e),t.width=t.height=e,t.dirty()):(t=Is(e),this._ssaoPass.setUniform("noiseTex",Is(e))),this._ssaoPass.setUniform("noiseTexSize",[e,e])},zs.prototype.dispose=function(e){this._blurTexture.dispose(e),this._ssaoTexture.dispose(e),this._blurTexture2.dispose(e)};function Fs(e){e=e||{},this._ssrPass=new ya({fragment:xr.source("ecgl.ssr.main"),clearColor:[0,0,0,0]}),this._blurPass1=new ya({fragment:xr.source("ecgl.ssr.blur"),clearColor:[0,0,0,0]}),this._blurPass2=new ya({fragment:xr.source("ecgl.ssr.blur"),clearColor:[0,0,0,0]}),this._blendPass=new ya({fragment:xr.source("clay.compositor.blend")}),this._blendPass.material.disableTexturesAll(),this._blendPass.material.enableTexture(["texture1","texture2"]),this._ssrPass.setUniform("gBufferTexture1",e.normalTexture),this._ssrPass.setUniform("gBufferTexture2",e.depthTexture),this._blurPass1.setUniform("gBufferTexture1",e.normalTexture),this._blurPass1.setUniform("gBufferTexture2",e.depthTexture),this._blurPass2.setUniform("gBufferTexture1",e.normalTexture),this._blurPass2.setUniform("gBufferTexture2",e.depthTexture),this._blurPass2.material.define("fragment","VERTICAL"),this._blurPass2.material.define("fragment","BLEND"),this._ssrTexture=new Vi({type:zi.HALF_FLOAT}),this._texture2=new Vi({type:zi.HALF_FLOAT}),this._texture3=new Vi({type:zi.HALF_FLOAT}),this._prevTexture=new Vi({type:zi.HALF_FLOAT}),this._currentTexture=new Vi({type:zi.HALF_FLOAT}),this._frameBuffer=new Xn({depthBuffer:!1}),this._normalDistribution=null,this._totalSamples=256,this._samplePerFrame=4,this._ssrPass.material.define("fragment","SAMPLE_PER_FRAME",this._samplePerFrame),this._ssrPass.material.define("fragment","TOTAL_SAMPLES",this._totalSamples),this._downScale=1}xr.import("@export ecgl.ssr.main\n\n#define SHADER_NAME SSR\n#define MAX_ITERATION 20;\n#define SAMPLE_PER_FRAME 5;\n#define TOTAL_SAMPLES 128;\n\nuniform sampler2D sourceTexture;\nuniform sampler2D gBufferTexture1;\nuniform sampler2D gBufferTexture2;\nuniform sampler2D gBufferTexture3;\nuniform samplerCube specularCubemap;\nuniform float specularIntensity: 1;\n\nuniform mat4 projection;\nuniform mat4 projectionInv;\nuniform mat4 toViewSpace;\nuniform mat4 toWorldSpace;\n\nuniform float maxRayDistance: 200;\n\nuniform float pixelStride: 16;\nuniform float pixelStrideZCutoff: 50; \nuniform float screenEdgeFadeStart: 0.9; \nuniform float eyeFadeStart : 0.2; uniform float eyeFadeEnd: 0.8; \nuniform float minGlossiness: 0.2; uniform float zThicknessThreshold: 1;\n\nuniform float nearZ;\nuniform vec2 viewportSize : VIEWPORT_SIZE;\n\nuniform float jitterOffset: 0;\n\nvarying vec2 v_Texcoord;\n\n#ifdef DEPTH_DECODE\n@import clay.util.decode_float\n#endif\n\n#ifdef PHYSICALLY_CORRECT\nuniform sampler2D normalDistribution;\nuniform float sampleOffset: 0;\nuniform vec2 normalDistributionSize;\n\nvec3 transformNormal(vec3 H, vec3 N) {\n vec3 upVector = N.y > 0.999 ? vec3(1.0, 0.0, 0.0) : vec3(0.0, 1.0, 0.0);\n vec3 tangentX = normalize(cross(N, upVector));\n vec3 tangentZ = cross(N, tangentX);\n return normalize(tangentX * H.x + N * H.y + tangentZ * H.z);\n}\nvec3 importanceSampleNormalGGX(float i, float roughness, vec3 N) {\n float p = fract((i + sampleOffset) / float(TOTAL_SAMPLES));\n vec3 H = texture2D(normalDistribution,vec2(roughness, p)).rgb;\n return transformNormal(H, N);\n}\nfloat G_Smith(float g, float ndv, float ndl) {\n float roughness = 1.0 - g;\n float k = roughness * roughness / 2.0;\n float G1V = ndv / (ndv * (1.0 - k) + k);\n float G1L = ndl / (ndl * (1.0 - k) + k);\n return G1L * G1V;\n}\nvec3 F_Schlick(float ndv, vec3 spec) {\n return spec + (1.0 - spec) * pow(1.0 - ndv, 5.0);\n}\n#endif\n\nfloat fetchDepth(sampler2D depthTexture, vec2 uv)\n{\n vec4 depthTexel = texture2D(depthTexture, uv);\n return depthTexel.r * 2.0 - 1.0;\n}\n\nfloat linearDepth(float depth)\n{\n if (projection[3][3] == 0.0) {\n return projection[3][2] / (depth * projection[2][3] - projection[2][2]);\n }\n else {\n return (depth - projection[3][2]) / projection[2][2];\n }\n}\n\nbool rayIntersectDepth(float rayZNear, float rayZFar, vec2 hitPixel)\n{\n if (rayZFar > rayZNear)\n {\n float t = rayZFar; rayZFar = rayZNear; rayZNear = t;\n }\n float cameraZ = linearDepth(fetchDepth(gBufferTexture2, hitPixel));\n return rayZFar <= cameraZ && rayZNear >= cameraZ - zThicknessThreshold;\n}\n\n\nbool traceScreenSpaceRay(\n vec3 rayOrigin, vec3 rayDir, float jitter,\n out vec2 hitPixel, out vec3 hitPoint, out float iterationCount\n)\n{\n float rayLength = ((rayOrigin.z + rayDir.z * maxRayDistance) > -nearZ)\n ? (-nearZ - rayOrigin.z) / rayDir.z : maxRayDistance;\n\n vec3 rayEnd = rayOrigin + rayDir * rayLength;\n\n vec4 H0 = projection * vec4(rayOrigin, 1.0);\n vec4 H1 = projection * vec4(rayEnd, 1.0);\n\n float k0 = 1.0 / H0.w, k1 = 1.0 / H1.w;\n\n vec3 Q0 = rayOrigin * k0, Q1 = rayEnd * k1;\n\n vec2 P0 = (H0.xy * k0 * 0.5 + 0.5) * viewportSize;\n vec2 P1 = (H1.xy * k1 * 0.5 + 0.5) * viewportSize;\n\n P1 += dot(P1 - P0, P1 - P0) < 0.0001 ? 0.01 : 0.0;\n vec2 delta = P1 - P0;\n\n bool permute = false;\n if (abs(delta.x) < abs(delta.y)) {\n permute = true;\n delta = delta.yx;\n P0 = P0.yx;\n P1 = P1.yx;\n }\n float stepDir = sign(delta.x);\n float invdx = stepDir / delta.x;\n\n vec3 dQ = (Q1 - Q0) * invdx;\n float dk = (k1 - k0) * invdx;\n\n vec2 dP = vec2(stepDir, delta.y * invdx);\n\n float strideScaler = 1.0 - min(1.0, -rayOrigin.z / pixelStrideZCutoff);\n float pixStride = 1.0 + strideScaler * pixelStride;\n\n dP *= pixStride; dQ *= pixStride; dk *= pixStride;\n\n vec4 pqk = vec4(P0, Q0.z, k0);\n vec4 dPQK = vec4(dP, dQ.z, dk);\n\n pqk += dPQK * jitter;\n float rayZFar = (dPQK.z * 0.5 + pqk.z) / (dPQK.w * 0.5 + pqk.w);\n float rayZNear;\n\n bool intersect = false;\n\n vec2 texelSize = 1.0 / viewportSize;\n\n iterationCount = 0.0;\n\n for (int i = 0; i < MAX_ITERATION; i++)\n {\n pqk += dPQK;\n\n rayZNear = rayZFar;\n rayZFar = (dPQK.z * 0.5 + pqk.z) / (dPQK.w * 0.5 + pqk.w);\n\n hitPixel = permute ? pqk.yx : pqk.xy;\n hitPixel *= texelSize;\n\n intersect = rayIntersectDepth(rayZNear, rayZFar, hitPixel);\n\n iterationCount += 1.0;\n\n dPQK *= 1.2;\n\n if (intersect) {\n break;\n }\n }\n\n Q0.xy += dQ.xy * iterationCount;\n Q0.z = pqk.z;\n hitPoint = Q0 / pqk.w;\n\n return intersect;\n}\n\nfloat calculateAlpha(\n float iterationCount, float reflectivity,\n vec2 hitPixel, vec3 hitPoint, float dist, vec3 rayDir\n)\n{\n float alpha = clamp(reflectivity, 0.0, 1.0);\n alpha *= 1.0 - (iterationCount / float(MAX_ITERATION));\n vec2 hitPixelNDC = hitPixel * 2.0 - 1.0;\n float maxDimension = min(1.0, max(abs(hitPixelNDC.x), abs(hitPixelNDC.y)));\n alpha *= 1.0 - max(0.0, maxDimension - screenEdgeFadeStart) / (1.0 - screenEdgeFadeStart);\n\n float _eyeFadeStart = eyeFadeStart;\n float _eyeFadeEnd = eyeFadeEnd;\n if (_eyeFadeStart > _eyeFadeEnd) {\n float tmp = _eyeFadeEnd;\n _eyeFadeEnd = _eyeFadeStart;\n _eyeFadeStart = tmp;\n }\n\n float eyeDir = clamp(rayDir.z, _eyeFadeStart, _eyeFadeEnd);\n alpha *= 1.0 - (eyeDir - _eyeFadeStart) / (_eyeFadeEnd - _eyeFadeStart);\n\n alpha *= 1.0 - clamp(dist / maxRayDistance, 0.0, 1.0);\n\n return alpha;\n}\n\n@import clay.util.rand\n\n@import clay.util.rgbm\n\nvoid main()\n{\n vec4 normalAndGloss = texture2D(gBufferTexture1, v_Texcoord);\n\n if (dot(normalAndGloss.rgb, vec3(1.0)) == 0.0) {\n discard;\n }\n\n float g = normalAndGloss.a;\n#if !defined(PHYSICALLY_CORRECT)\n if (g <= minGlossiness) {\n discard;\n }\n#endif\n\n float reflectivity = (g - minGlossiness) / (1.0 - minGlossiness);\n\n vec3 N = normalize(normalAndGloss.rgb * 2.0 - 1.0);\n N = normalize((toViewSpace * vec4(N, 0.0)).xyz);\n\n vec4 projectedPos = vec4(v_Texcoord * 2.0 - 1.0, fetchDepth(gBufferTexture2, v_Texcoord), 1.0);\n vec4 pos = projectionInv * projectedPos;\n vec3 rayOrigin = pos.xyz / pos.w;\n vec3 V = -normalize(rayOrigin);\n\n float ndv = clamp(dot(N, V), 0.0, 1.0);\n float iterationCount;\n float jitter = rand(fract(v_Texcoord + jitterOffset));\n\n#ifdef PHYSICALLY_CORRECT\n vec4 color = vec4(vec3(0.0), 1.0);\n vec4 albedoMetalness = texture2D(gBufferTexture3, v_Texcoord);\n vec3 albedo = albedoMetalness.rgb;\n float m = albedoMetalness.a;\n vec3 diffuseColor = albedo * (1.0 - m);\n vec3 spec = mix(vec3(0.04), albedo, m);\n\n float jitter2 = rand(fract(v_Texcoord)) * float(TOTAL_SAMPLES);\n\n for (int i = 0; i < SAMPLE_PER_FRAME; i++) {\n vec3 H = importanceSampleNormalGGX(float(i) + jitter2, 1.0 - g, N);\n vec3 rayDir = normalize(reflect(-V, H));\n#else\n vec3 rayDir = normalize(reflect(-V, N));\n#endif\n vec2 hitPixel;\n vec3 hitPoint;\n\n bool intersect = traceScreenSpaceRay(rayOrigin, rayDir, jitter, hitPixel, hitPoint, iterationCount);\n\n float dist = distance(rayOrigin, hitPoint);\n\n vec3 hitNormal = texture2D(gBufferTexture1, hitPixel).rgb * 2.0 - 1.0;\n hitNormal = normalize((toViewSpace * vec4(hitNormal, 0.0)).xyz);\n#ifdef PHYSICALLY_CORRECT\n float ndl = clamp(dot(N, rayDir), 0.0, 1.0);\n float vdh = clamp(dot(V, H), 0.0, 1.0);\n float ndh = clamp(dot(N, H), 0.0, 1.0);\n vec3 litTexel = vec3(0.0);\n if (dot(hitNormal, rayDir) < 0.0 && intersect) {\n litTexel = texture2D(sourceTexture, hitPixel).rgb;\n litTexel *= pow(clamp(1.0 - dist / 200.0, 0.0, 1.0), 3.0);\n\n }\n else {\n #ifdef SPECULARCUBEMAP_ENABLED\n vec3 rayDirW = normalize(toWorldSpace * vec4(rayDir, 0.0)).rgb;\n litTexel = RGBMDecode(textureCubeLodEXT(specularCubemap, rayDirW, 0.0), 8.12).rgb * specularIntensity;\n#endif\n }\n color.rgb += ndl * litTexel * (\n F_Schlick(ndl, spec) * G_Smith(g, ndv, ndl) * vdh / (ndh * ndv + 0.001)\n );\n }\n color.rgb /= float(SAMPLE_PER_FRAME);\n#else\n #if !defined(SPECULARCUBEMAP_ENABLED)\n if (dot(hitNormal, rayDir) >= 0.0) {\n discard;\n }\n if (!intersect) {\n discard;\n }\n#endif\n float alpha = clamp(calculateAlpha(iterationCount, reflectivity, hitPixel, hitPoint, dist, rayDir), 0.0, 1.0);\n vec4 color = texture2D(sourceTexture, hitPixel);\n color.rgb *= alpha;\n\n#ifdef SPECULARCUBEMAP_ENABLED\n vec3 rayDirW = normalize(toWorldSpace * vec4(rayDir, 0.0)).rgb;\n alpha = alpha * (intersect ? 1.0 : 0.0);\n float bias = (1.0 -g) * 5.0;\n color.rgb += (1.0 - alpha)\n * RGBMDecode(textureCubeLodEXT(specularCubemap, rayDirW, bias), 8.12).rgb\n * specularIntensity;\n#endif\n\n#endif\n\n gl_FragColor = encodeHDR(color);\n}\n@end\n\n@export ecgl.ssr.blur\n\nuniform sampler2D texture;\nuniform sampler2D gBufferTexture1;\nuniform sampler2D gBufferTexture2;\nuniform mat4 projection;\nuniform float depthRange : 0.05;\n\nvarying vec2 v_Texcoord;\n\nuniform vec2 textureSize;\nuniform float blurSize : 1.0;\n\n#ifdef BLEND\n #ifdef SSAOTEX_ENABLED\nuniform sampler2D ssaoTex;\n #endif\nuniform sampler2D sourceTexture;\n#endif\n\nfloat getLinearDepth(vec2 coord)\n{\n float depth = texture2D(gBufferTexture2, coord).r * 2.0 - 1.0;\n return projection[3][2] / (depth * projection[2][3] - projection[2][2]);\n}\n\n@import clay.util.rgbm\n\n\nvoid main()\n{\n @import clay.compositor.kernel.gaussian_9\n\n vec4 centerNTexel = texture2D(gBufferTexture1, v_Texcoord);\n float g = centerNTexel.a;\n float maxBlurSize = clamp(1.0 - g, 0.0, 1.0) * blurSize;\n#ifdef VERTICAL\n vec2 off = vec2(0.0, maxBlurSize / textureSize.y);\n#else\n vec2 off = vec2(maxBlurSize / textureSize.x, 0.0);\n#endif\n\n vec2 coord = v_Texcoord;\n\n vec4 sum = vec4(0.0);\n float weightAll = 0.0;\n\n vec3 cN = centerNTexel.rgb * 2.0 - 1.0;\n float cD = getLinearDepth(v_Texcoord);\n for (int i = 0; i < 9; i++) {\n vec2 coord = clamp((float(i) - 4.0) * off + v_Texcoord, vec2(0.0), vec2(1.0));\n float w = gaussianKernel[i]\n * clamp(dot(cN, texture2D(gBufferTexture1, coord).rgb * 2.0 - 1.0), 0.0, 1.0);\n float d = getLinearDepth(coord);\n w *= (1.0 - smoothstep(abs(cD - d) / depthRange, 0.0, 1.0));\n\n weightAll += w;\n sum += decodeHDR(texture2D(texture, coord)) * w;\n }\n\n#ifdef BLEND\n float aoFactor = 1.0;\n #ifdef SSAOTEX_ENABLED\n aoFactor = texture2D(ssaoTex, v_Texcoord).r;\n #endif\n gl_FragColor = encodeHDR(\n sum / weightAll * aoFactor + decodeHDR(texture2D(sourceTexture, v_Texcoord))\n );\n#else\n gl_FragColor = encodeHDR(sum / weightAll);\n#endif\n}\n\n@end"),Fs.prototype.setAmbientCubemap=function(e,t){this._ssrPass.material.set("specularCubemap",e),this._ssrPass.material.set("specularIntensity",t);var r=e&&t;this._ssrPass.material[r?"enableTexture":"disableTexture"]("specularCubemap")},Fs.prototype.update=function(e,t,r,i){var n=e.getWidth(),a=e.getHeight(),o=this._ssrTexture,s=this._texture2,l=this._texture3;o.width=this._prevTexture.width=this._currentTexture.width=n/this._downScale,o.height=this._prevTexture.height=this._currentTexture.height=a/this._downScale,s.width=l.width=n,s.height=l.height=a;var h=this._frameBuffer,u=this._ssrPass,c=this._blurPass1,d=this._blurPass2,f=this._blendPass,p=new hi,m=new hi;hi.transpose(p,t.worldTransform),hi.transpose(m,t.viewMatrix),u.setUniform("sourceTexture",r),u.setUniform("projection",t.projectionMatrix.array),u.setUniform("projectionInv",t.invProjectionMatrix.array),u.setUniform("toViewSpace",p.array),u.setUniform("toWorldSpace",m.array),u.setUniform("nearZ",t.near);var g=i/this._totalSamples*this._samplePerFrame;if(u.setUniform("jitterOffset",g),u.setUniform("sampleOffset",i*this._samplePerFrame),c.setUniform("textureSize",[o.width,o.height]),d.setUniform("textureSize",[n,a]),d.setUniform("sourceTexture",r),c.setUniform("projection",t.projectionMatrix.array),d.setUniform("projection",t.projectionMatrix.array),h.attach(o),h.bind(e),u.render(e),this._physicallyCorrect&&(h.attach(this._currentTexture),f.setUniform("texture1",this._prevTexture),f.setUniform("texture2",o),f.material.set({weight1:i>=1?.95:0,weight2:i>=1?.05:1}),f.render(e)),h.attach(s),c.setUniform("texture",this._physicallyCorrect?this._currentTexture:o),c.render(e),h.attach(l),d.setUniform("texture",s),d.render(e),h.unbind(e),this._physicallyCorrect){var _=this._prevTexture;this._prevTexture=this._currentTexture,this._currentTexture=_}},Fs.prototype.getTargetTexture=function(){return this._texture3},Fs.prototype.setParameter=function(e,t){"maxIteration"===e?this._ssrPass.material.define("fragment","MAX_ITERATION",t):this._ssrPass.setUniform(e,t)},Fs.prototype.setPhysicallyCorrect=function(e){e?(this._normalDistribution||(this._normalDistribution=xa.generateNormalDistribution(64,this._totalSamples)),this._ssrPass.material.define("fragment","PHYSICALLY_CORRECT"),this._ssrPass.material.set("normalDistribution",this._normalDistribution),this._ssrPass.material.set("normalDistributionSize",[64,this._totalSamples])):this._ssrPass.material.undefine("fragment","PHYSICALLY_CORRECT"),this._physicallyCorrect=e},Fs.prototype.setSSAOTexture=function(e){var t=this._blurPass2;e?(t.material.enableTexture("ssaoTex"),t.material.set("ssaoTex",e)):t.material.disableTexture("ssaoTex")},Fs.prototype.isFinished=function(e){return!this._physicallyCorrect||e>this._totalSamples/this._samplePerFrame},Fs.prototype.dispose=function(e){this._ssrTexture.dispose(e),this._texture2.dispose(e),this._texture3.dispose(e),this._prevTexture.dispose(e),this._currentTexture.dispose(e),this._frameBuffer.dispose(e)};const Gs=[0,0,-.321585265978,-.154972575841,.458126042375,.188473391593,.842080129861,.527766490688,.147304551086,-.659453822776,-.331943915203,-.940619700594,.0479226680259,.54812163202,.701581552186,-.709825561388,-.295436780218,.940589268233,-.901489676764,.237713156085,.973570876096,-.109899459384,-.866792314779,-.451805525005,.330975007087,.800048655954,-.344275183665,.381779221166,-.386139432542,-.437418421534,-.576478634965,-.0148463392551,.385798197415,-.262426961053,-.666302061145,.682427250835,-.628010632582,-.732836215494,.10163141741,-.987658134403,.711995289051,-.320024291314,.0296005138058,.950296523438,.0130612307608,-.351024443122,-.879596633704,-.10478487883,.435712737232,.504254490347,.779203817497,.206477676721,.388264289969,-.896736162545,-.153106280781,-.629203242522,-.245517550697,.657969239148,.126830499058,.26862328493,-.634888119007,-.302301223431,.617074219636,.779817204925];function Us(e,t,r,i,n){var a=e.gl;t.setUniform(a,"1i",r,n),a.activeTexture(a.TEXTURE0+n),i.isRenderable()?i.bind(e):i.unbind(e)}function Hs(e,t,r,i,n){var a,o,s,l,h=e.gl;return function(n,u,c){if(!l||l.material!==n.material){var d=n.material,f=n.__program,p=d.get("roughness");null==p&&(p=1);var m=d.get("normalMap")||t,g=d.get("roughnessMap"),_=d.get("bumpMap"),v=d.get("uvRepeat"),y=d.get("uvOffset"),x=d.get("detailUvRepeat"),b=d.get("detailUvOffset"),T=!!_&&d.isTextureEnabled("bumpMap"),w=!!g&&d.isTextureEnabled("roughnessMap"),S=d.isDefined("fragment","DOUBLE_SIDED");_=_||r,g=g||i,c!==u?(u.set("normalMap",m),u.set("bumpMap",_),u.set("roughnessMap",g),u.set("useBumpMap",T),u.set("useRoughnessMap",w),u.set("doubleSide",S),null!=v&&u.set("uvRepeat",v),null!=y&&u.set("uvOffset",y),null!=x&&u.set("detailUvRepeat",x),null!=b&&u.set("detailUvOffset",b),u.set("roughness",p)):(f.setUniform(h,"1f","roughness",p),a!==m&&Us(e,f,"normalMap",m,0),o!==_&&_&&Us(e,f,"bumpMap",_,1),s!==g&&g&&Us(e,f,"roughnessMap",g,2),null!=v&&f.setUniform(h,"2f","uvRepeat",v),null!=y&&f.setUniform(h,"2f","uvOffset",y),null!=x&&f.setUniform(h,"2f","detailUvRepeat",x),null!=b&&f.setUniform(h,"2f","detailUvOffset",b),f.setUniform(h,"1i","useBumpMap",+T),f.setUniform(h,"1i","useRoughnessMap",+w),f.setUniform(h,"1i","doubleSide",+S)),a=m,o=_,s=g,l=n}}}function Vs(e){this._depthTex=new Vi({format:zi.DEPTH_COMPONENT,type:zi.UNSIGNED_INT}),this._normalTex=new Vi({type:zi.HALF_FLOAT}),this._framebuffer=new Xn,this._framebuffer.attach(this._normalTex),this._framebuffer.attach(this._depthTex,Xn.DEPTH_ATTACHMENT),this._normalMaterial=new kt({shader:new xr(xr.source("ecgl.normal.vertex"),xr.source("ecgl.normal.fragment"))}),this._normalMaterial.enableTexture(["normalMap","bumpMap","roughnessMap"]),this._defaultNormalMap=ca.createBlank("#000"),this._defaultBumpMap=ca.createBlank("#000"),this._defaultRoughessMap=ca.createBlank("#000"),this._debugPass=new ya({fragment:xr.source("clay.compositor.output")}),this._debugPass.setUniform("texture",this._normalTex),this._debugPass.material.undefine("fragment","OUTPUT_ALPHA")}function ks(e){e=e||{},this._edgePass=new ya({fragment:xr.source("ecgl.edge")}),this._edgePass.setUniform("normalTexture",e.normalTexture),this._edgePass.setUniform("depthTexture",e.depthTexture),this._targetTexture=new Vi({type:zi.HALF_FLOAT}),this._frameBuffer=new Xn,this._frameBuffer.attach(this._targetTexture)}xr.import("@export ecgl.normal.vertex\n\n@import ecgl.common.transformUniforms\n\n@import ecgl.common.uv.header\n\n@import ecgl.common.attributes\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\n@import ecgl.common.normalMap.vertexHeader\n\n@import ecgl.common.vertexAnimation.header\n\nvoid main()\n{\n\n @import ecgl.common.vertexAnimation.main\n\n @import ecgl.common.uv.main\n\n v_Normal = normalize((worldInverseTranspose * vec4(normal, 0.0)).xyz);\n v_WorldPosition = (world * vec4(pos, 1.0)).xyz;\n\n @import ecgl.common.normalMap.vertexMain\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n}\n\n\n@end\n\n\n@export ecgl.normal.fragment\n\n#define ROUGHNESS_CHANEL 0\n\nuniform bool useBumpMap;\nuniform bool useRoughnessMap;\nuniform bool doubleSide;\nuniform float roughness;\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n@import ecgl.common.normalMap.fragmentHeader\n@import ecgl.common.bumpMap.header\n\nuniform sampler2D roughnessMap;\n\nvoid main()\n{\n vec3 N = v_Normal;\n \n bool flipNormal = false;\n if (doubleSide) {\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n\n if (dot(N, V) < 0.0) {\n flipNormal = true;\n }\n }\n\n @import ecgl.common.normalMap.fragmentMain\n\n if (useBumpMap) {\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n }\n\n float g = 1.0 - roughness;\n\n if (useRoughnessMap) {\n float g2 = 1.0 - texture2D(roughnessMap, v_DetailTexcoord)[ROUGHNESS_CHANEL];\n g = clamp(g2 + (g - 0.5) * 2.0, 0.0, 1.0);\n }\n\n if (flipNormal) {\n N = -N;\n }\n\n gl_FragColor.rgb = (N.xyz + 1.0) * 0.5;\n gl_FragColor.a = g;\n}\n@end"),Vs.prototype.getDepthTexture=function(){return this._depthTex},Vs.prototype.getNormalTexture=function(){return this._normalTex},Vs.prototype.update=function(e,t,r){var i=e.getWidth(),n=e.getHeight(),a=this._depthTex,o=this._normalTex,s=this._normalMaterial;a.width=i,a.height=n,o.width=i,o.height=n;var l=t.getRenderList(r).opaque;this._framebuffer.bind(e),e.gl.clearColor(0,0,0,0),e.gl.clear(e.gl.COLOR_BUFFER_BIT|e.gl.DEPTH_BUFFER_BIT),e.gl.disable(e.gl.BLEND),e.renderPass(l,r,{getMaterial:function(){return s},ifRender:function(e){return e.renderNormal},beforeRender:Hs(e,this._defaultNormalMap,this._defaultBumpMap,this._defaultRoughessMap,this._normalMaterial),sort:e.opaqueSortCompare}),this._framebuffer.unbind(e)},Vs.prototype.renderDebug=function(e){this._debugPass.render(e)},Vs.prototype.dispose=function(e){this._depthTex.dispose(e),this._normalTex.dispose(e)},ks.prototype.update=function(e,t,r,i){var n=e.getWidth(),a=e.getHeight(),o=this._targetTexture;o.width=n,o.height=a;var s=this._frameBuffer;s.bind(e),this._edgePass.setUniform("projectionInv",t.invProjectionMatrix.array),this._edgePass.setUniform("textureSize",[n,a]),this._edgePass.setUniform("texture",r),this._edgePass.render(e),s.unbind(e)},ks.prototype.getTargetTexture=function(){return this._targetTexture},ks.prototype.setParameter=function(e,t){this._edgePass.setUniform(e,t)},ks.prototype.dispose=function(e){this._targetTexture.dispose(e),this._frameBuffer.dispose(e)};const Ws={nodes:[{name:"source",type:"texture",outputs:{color:{}}},{name:"source_half",shader:"#source(clay.compositor.downsample)",inputs:{texture:"source"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"}},{name:"bright",shader:"#source(clay.compositor.bright)",inputs:{texture:"source_half"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{threshold:2,scale:4,textureSize:"expr([width * 1.0 / 2, height / 2])"}},{name:"bright_downsample_4",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 2, height / 2] )"}},{name:"bright_downsample_8",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright_downsample_4"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 4, height / 4] )"}},{name:"bright_downsample_16",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright_downsample_8"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 16)",height:"expr(height * 1.0 / 16)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 8, height / 8] )"}},{name:"bright_downsample_32",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright_downsample_16"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 32)",height:"expr(height * 1.0 / 32)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 16, height / 16] )"}},{name:"bright_upsample_16_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_32"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 16)",height:"expr(height * 1.0 / 16)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 32, height / 32] )"}},{name:"bright_upsample_16_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_16_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 16)",height:"expr(height * 1.0 / 16)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 16, height * 1.0 / 16] )"}},{name:"bright_upsample_8_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_16"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 16, height * 1.0 / 16] )"}},{name:"bright_upsample_8_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_8_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 8, height * 1.0 / 8] )"}},{name:"bright_upsample_8_blend",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_8_blur_v",texture2:"bright_upsample_16_blur_v"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"bright_upsample_4_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_8"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 8, height * 1.0 / 8] )"}},{name:"bright_upsample_4_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_4_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 4, height * 1.0 / 4] )"}},{name:"bright_upsample_4_blend",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_4_blur_v",texture2:"bright_upsample_8_blend"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"bright_upsample_2_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_4"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 4, height * 1.0 / 4] )"}},{name:"bright_upsample_2_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_2_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 2, height * 1.0 / 2] )"}},{name:"bright_upsample_2_blend",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_2_blur_v",texture2:"bright_upsample_4_blend"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"bright_upsample_full_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 2, height * 1.0 / 2] )"}},{name:"bright_upsample_full_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_full_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0, height * 1.0] )"}},{name:"bloom_composite",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_full_blur_v",texture2:"bright_upsample_2_blend"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"coc",shader:"#source(ecgl.dof.coc)",outputs:{color:{parameters:{minFilter:"NEAREST",magFilter:"NEAREST",width:"expr(width * 1.0)",height:"expr(height * 1.0)"}}},parameters:{focalDist:50,focalRange:30}},{name:"dof_far_blur",shader:"#source(ecgl.dof.diskBlur)",inputs:{texture:"source",coc:"coc"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"}},{name:"dof_near_blur",shader:"#source(ecgl.dof.diskBlur)",inputs:{texture:"source",coc:"coc"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"},defines:{BLUR_NEARFIELD:null}},{name:"dof_coc_blur",shader:"#source(ecgl.dof.diskBlur)",inputs:{texture:"coc"},outputs:{color:{parameters:{minFilter:"NEAREST",magFilter:"NEAREST",width:"expr(width * 1.0)",height:"expr(height * 1.0)"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"},defines:{BLUR_COC:null}},{name:"dof_composite",shader:"#source(ecgl.dof.composite)",inputs:{original:"source",blurred:"dof_far_blur",nearfield:"dof_near_blur",coc:"coc",nearcoc:"dof_coc_blur"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}}},{name:"composite",shader:"#source(clay.compositor.hdr.composite)",inputs:{texture:"source",bloom:"bloom_composite"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)"}}},defines:{}},{name:"FXAA",shader:"#source(clay.compositor.fxaa)",inputs:{texture:"composite"}}]};function js(e,t){return{color:{parameters:{width:e,height:t}}}}xr.import(ms),xr.import(gs),xr.import(_s),xr.import(vs),xr.import(ys),xr.import(xs),xr.import(bs),xr.import(Ts),xr.import(ws),xr.import("@export ecgl.dof.coc\n\nuniform sampler2D depth;\n\nuniform float zNear: 0.1;\nuniform float zFar: 2000;\n\nuniform float focalDistance: 3;\nuniform float focalRange: 1;\nuniform float focalLength: 30;\nuniform float fstop: 2.8;\n\nvarying vec2 v_Texcoord;\n\n@import clay.util.encode_float\n\nvoid main()\n{\n float z = texture2D(depth, v_Texcoord).r * 2.0 - 1.0;\n\n float dist = 2.0 * zNear * zFar / (zFar + zNear - z * (zFar - zNear));\n\n float aperture = focalLength / fstop;\n\n float coc;\n\n float uppper = focalDistance + focalRange;\n float lower = focalDistance - focalRange;\n if (dist <= uppper && dist >= lower) {\n coc = 0.5;\n }\n else {\n float focalAdjusted = dist > uppper ? uppper : lower;\n\n coc = abs(aperture * (focalLength * (dist - focalAdjusted)) / (dist * (focalAdjusted - focalLength)));\n coc = clamp(coc, 0.0, 2.0) / 2.00001;\n\n if (dist < lower) {\n coc = -coc;\n }\n coc = coc * 0.5 + 0.5;\n }\n\n gl_FragColor = encodeFloat(coc);\n}\n@end\n\n\n@export ecgl.dof.composite\n\n#define DEBUG 0\n\nuniform sampler2D original;\nuniform sampler2D blurred;\nuniform sampler2D nearfield;\nuniform sampler2D coc;\nuniform sampler2D nearcoc;\nvarying vec2 v_Texcoord;\n\n@import clay.util.rgbm\n@import clay.util.float\n\nvoid main()\n{\n vec4 blurredColor = texture2D(blurred, v_Texcoord);\n vec4 originalColor = texture2D(original, v_Texcoord);\n\n float fCoc = decodeFloat(texture2D(coc, v_Texcoord));\n\n fCoc = abs(fCoc * 2.0 - 1.0);\n\n float weight = smoothstep(0.0, 1.0, fCoc);\n \n#ifdef NEARFIELD_ENABLED\n vec4 nearfieldColor = texture2D(nearfield, v_Texcoord);\n float fNearCoc = decodeFloat(texture2D(nearcoc, v_Texcoord));\n fNearCoc = abs(fNearCoc * 2.0 - 1.0);\n\n gl_FragColor = encodeHDR(\n mix(\n nearfieldColor, mix(originalColor, blurredColor, weight),\n pow(1.0 - fNearCoc, 4.0)\n )\n );\n#else\n gl_FragColor = encodeHDR(mix(originalColor, blurredColor, weight));\n#endif\n\n}\n\n@end\n\n\n\n@export ecgl.dof.diskBlur\n\n#define POISSON_KERNEL_SIZE 16;\n\nuniform sampler2D texture;\nuniform sampler2D coc;\nvarying vec2 v_Texcoord;\n\nuniform float blurRadius : 10.0;\nuniform vec2 textureSize : [512.0, 512.0];\n\nuniform vec2 poissonKernel[POISSON_KERNEL_SIZE];\n\nuniform float percent;\n\nfloat nrand(const in vec2 n) {\n return fract(sin(dot(n.xy ,vec2(12.9898,78.233))) * 43758.5453);\n}\n\n@import clay.util.rgbm\n@import clay.util.float\n\n\nvoid main()\n{\n vec2 offset = blurRadius / textureSize;\n\n float rnd = 6.28318 * nrand(v_Texcoord + 0.07 * percent );\n float cosa = cos(rnd);\n float sina = sin(rnd);\n vec4 basis = vec4(cosa, -sina, sina, cosa);\n\n#if !defined(BLUR_NEARFIELD) && !defined(BLUR_COC)\n offset *= abs(decodeFloat(texture2D(coc, v_Texcoord)) * 2.0 - 1.0);\n#endif\n\n#ifdef BLUR_COC\n float cocSum = 0.0;\n#else\n vec4 color = vec4(0.0);\n#endif\n\n\n float weightSum = 0.0;\n\n for (int i = 0; i < POISSON_KERNEL_SIZE; i++) {\n vec2 ofs = poissonKernel[i];\n\n ofs = vec2(dot(ofs, basis.xy), dot(ofs, basis.zw));\n\n vec2 uv = v_Texcoord + ofs * offset;\n vec4 texel = texture2D(texture, uv);\n\n float w = 1.0;\n#ifdef BLUR_COC\n float fCoc = decodeFloat(texel) * 2.0 - 1.0;\n cocSum += clamp(fCoc, -1.0, 0.0) * w;\n#else\n texel = texel;\n #if !defined(BLUR_NEARFIELD)\n float fCoc = decodeFloat(texture2D(coc, uv)) * 2.0 - 1.0;\n w *= abs(fCoc);\n #endif\n texel.rgb *= texel.a;\n color += texel * w;\n#endif\n\n weightSum += w;\n }\n\n#ifdef BLUR_COC\n gl_FragColor = encodeFloat(clamp(cocSum / weightSum, -1.0, 0.0) * 0.5 + 0.5);\n#else\n color /= weightSum;\n color.rgb /= (color.a + 0.0001);\n gl_FragColor = color;\n#endif\n}\n\n@end"),xr.import("@export ecgl.edge\n\nuniform sampler2D texture;\n\nuniform sampler2D normalTexture;\nuniform sampler2D depthTexture;\n\nuniform mat4 projectionInv;\n\nuniform vec2 textureSize;\n\nuniform vec4 edgeColor: [0,0,0,0.8];\n\nvarying vec2 v_Texcoord;\n\nvec3 packColor(vec2 coord) {\n float z = texture2D(depthTexture, coord).r * 2.0 - 1.0;\n vec4 p = vec4(v_Texcoord * 2.0 - 1.0, z, 1.0);\n vec4 p4 = projectionInv * p;\n\n return vec3(\n texture2D(normalTexture, coord).rg,\n -p4.z / p4.w / 5.0\n );\n}\n\nvoid main() {\n vec2 cc = v_Texcoord;\n vec3 center = packColor(cc);\n\n float size = clamp(1.0 - (center.z - 10.0) / 100.0, 0.0, 1.0) * 0.5;\n float dx = size / textureSize.x;\n float dy = size / textureSize.y;\n\n vec2 coord;\n vec3 topLeft = packColor(cc+vec2(-dx, -dy));\n vec3 top = packColor(cc+vec2(0.0, -dy));\n vec3 topRight = packColor(cc+vec2(dx, -dy));\n vec3 left = packColor(cc+vec2(-dx, 0.0));\n vec3 right = packColor(cc+vec2(dx, 0.0));\n vec3 bottomLeft = packColor(cc+vec2(-dx, dy));\n vec3 bottom = packColor(cc+vec2(0.0, dy));\n vec3 bottomRight = packColor(cc+vec2(dx, dy));\n\n vec3 v = -topLeft-2.0*top-topRight+bottomLeft+2.0*bottom+bottomRight;\n vec3 h = -bottomLeft-2.0*left-topLeft+bottomRight+2.0*right+topRight;\n\n float edge = sqrt(dot(h, h) + dot(v, v));\n\n edge = smoothstep(0.8, 1.0, edge);\n\n gl_FragColor = mix(texture2D(texture, v_Texcoord), vec4(edgeColor.rgb, 1.0), edgeColor.a * edge);\n}\n@end");var Xs=["composite","FXAA"];function qs(){this._width,this._height,this._dpr,this._sourceTexture=new Vi({type:zi.HALF_FLOAT}),this._depthTexture=new Vi({format:zi.DEPTH_COMPONENT,type:zi.UNSIGNED_INT}),this._framebuffer=new Xn,this._framebuffer.attach(this._sourceTexture),this._framebuffer.attach(this._depthTexture,Xn.DEPTH_ATTACHMENT),this._normalPass=new Vs,this._compositor=As(Ws);var e=this._compositor.getNodeByName("source");e.texture=this._sourceTexture;var t=this._compositor.getNodeByName("coc");this._sourceNode=e,this._cocNode=t,this._compositeNode=this._compositor.getNodeByName("composite"),this._fxaaNode=this._compositor.getNodeByName("FXAA"),this._dofBlurNodes=["dof_far_blur","dof_near_blur","dof_coc_blur"].map(function(e){return this._compositor.getNodeByName(e)},this),this._dofBlurKernel=0,this._dofBlurKernelSize=new Float32Array(0),this._finalNodesChain=Xs.map(function(e){return this._compositor.getNodeByName(e)},this);var r={normalTexture:this._normalPass.getNormalTexture(),depthTexture:this._normalPass.getDepthTexture()};this._ssaoPass=new zs(r),this._ssrPass=new Fs(r),this._edgePass=new ks(r)}function Zs(e){for(var t=[],r=0;r<30;r++)t.push([Ns(r,2),Ns(r,3)]);this._haltonSequence=t,this._frame=0,this._sourceTex=new Vi,this._sourceFb=new Xn,this._sourceFb.attach(this._sourceTex),this._prevFrameTex=new Vi,this._outputTex=new Vi;var i=this._blendPass=new ya({fragment:xr.source("clay.compositor.blend")});i.material.disableTexturesAll(),i.material.enableTexture(["texture1","texture2"]),this._blendFb=new Xn({depthBuffer:!1}),this._outputPass=new ya({fragment:xr.source("clay.compositor.output"),blendWithPrevious:!0}),this._outputPass.material.define("fragment","OUTPUT_ALPHA"),this._outputPass.material.blend=function(e){e.blendEquationSeparate(e.FUNC_ADD,e.FUNC_ADD),e.blendFuncSeparate(e.ONE,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA)}}function Ys(e){e=e||"perspective",this.layer=null,this.scene=new Cn,this.rootNode=this.scene,this.viewport={x:0,y:0,width:0,height:0},this.setProjection(e),this._compositor=new qs,this._temporalSS=new Zs,this._shadowMapPass=new ls;for(var t=[],r=0,i=0;i<30;i++){for(var n=[],a=0;a<6;a++)n.push(4*Ns(r,2)-2),n.push(4*Ns(r,3)-2),r++;t.push(n)}this._pcfKernels=t,this.scene.on("beforerender",function(e,t,r){this.needsTemporalSS()&&this._temporalSS.jitterProjection(e,r)},this)}qs.prototype.resize=function(e,t,r){e*=r=r||1,t*=r;var i=this._sourceTexture,n=this._depthTexture;i.width=e,i.height=t,n.width=e,n.height=t;var a={getWidth:function(){return e},getHeight:function(){return t},getDevicePixelRatio:function(){return r}};function o(e,t){if("function"==typeof e[t]){var r=e[t].__original||e[t];e[t]=function(e){return r.call(this,a)},e[t].__original=r}}this._compositor.nodes.forEach(function(e){for(var t in e.outputs){var r=e.outputs[t].parameters;r&&(o(r,"width"),o(r,"height"))}for(var i in e.parameters)o(e.parameters,i)}),this._width=e,this._height=t,this._dpr=r},qs.prototype.getWidth=function(){return this._width},qs.prototype.getHeight=function(){return this._height},qs.prototype._ifRenderNormalPass=function(){return this._enableSSAO||this._enableEdge||this._enableSSR},qs.prototype._getPrevNode=function(e){for(var t=Xs.indexOf(e.name)-1,r=this._finalNodesChain[t];r&&!this._compositor.getNodeByName(r.name);)t-=1,r=this._finalNodesChain[t];return r},qs.prototype._getNextNode=function(e){for(var t=Xs.indexOf(e.name)+1,r=this._finalNodesChain[t];r&&!this._compositor.getNodeByName(r.name);)t+=1,r=this._finalNodesChain[t];return r},qs.prototype._addChainNode=function(e){var t=this._getPrevNode(e),r=this._getNextNode(e);t&&(e.inputs.texture=t.name,r?(e.outputs=js(this.getWidth.bind(this),this.getHeight.bind(this)),r.inputs.texture=e.name):e.outputs=null,this._compositor.addNode(e))},qs.prototype._removeChainNode=function(e){var t=this._getPrevNode(e),r=this._getNextNode(e);t&&(r?(t.outputs=js(this.getWidth.bind(this),this.getHeight.bind(this)),r.inputs.texture=t.name):t.outputs=null,this._compositor.removeNode(e))},qs.prototype.updateNormal=function(e,t,r,i){this._ifRenderNormalPass()&&this._normalPass.update(e,t,r)},qs.prototype.updateSSAO=function(e,t,r,i){this._ssaoPass.update(e,r,i)},qs.prototype.enableSSAO=function(){this._enableSSAO=!0},qs.prototype.disableSSAO=function(){this._enableSSAO=!1},qs.prototype.enableSSR=function(){this._enableSSR=!0},qs.prototype.disableSSR=function(){this._enableSSR=!1},qs.prototype.getSSAOTexture=function(){return this._ssaoPass.getTargetTexture()},qs.prototype.getSourceFrameBuffer=function(){return this._framebuffer},qs.prototype.getSourceTexture=function(){return this._sourceTexture},qs.prototype.disableFXAA=function(){this._removeChainNode(this._fxaaNode)},qs.prototype.enableFXAA=function(){this._addChainNode(this._fxaaNode)},qs.prototype.enableBloom=function(){this._compositeNode.inputs.bloom="bloom_composite",this._compositor.dirty()},qs.prototype.disableBloom=function(){this._compositeNode.inputs.bloom=null,this._compositor.dirty()},qs.prototype.enableDOF=function(){this._compositeNode.inputs.texture="dof_composite",this._compositor.dirty()},qs.prototype.disableDOF=function(){this._compositeNode.inputs.texture="source",this._compositor.dirty()},qs.prototype.enableColorCorrection=function(){this._compositeNode.define("COLOR_CORRECTION"),this._enableColorCorrection=!0},qs.prototype.disableColorCorrection=function(){this._compositeNode.undefine("COLOR_CORRECTION"),this._enableColorCorrection=!1},qs.prototype.enableEdge=function(){this._enableEdge=!0},qs.prototype.disableEdge=function(){this._enableEdge=!1},qs.prototype.setBloomIntensity=function(e){this._compositeNode.setParameter("bloomIntensity",e)},qs.prototype.setSSAOParameter=function(e,t){switch(e){case"quality":var r={low:6,medium:12,high:32,ultra:62}[t]||12;this._ssaoPass.setParameter("kernelSize",r);break;case"radius":this._ssaoPass.setParameter(e,t),this._ssaoPass.setParameter("bias",t/200);break;case"intensity":this._ssaoPass.setParameter(e,t)}},qs.prototype.setDOFParameter=function(e,t){switch(e){case"focalDistance":case"focalRange":case"fstop":this._cocNode.setParameter(e,t);break;case"blurRadius":for(var r=0;r=this._haltonSequence.length},render:function(e,t,r){var i=this._blendPass;0===this._frame?(i.setUniform("weight1",0),i.setUniform("weight2",1)):(i.setUniform("weight1",.9),i.setUniform("weight2",.1)),i.setUniform("texture1",this._prevFrameTex),i.setUniform("texture2",t||this._sourceTex),this._blendFb.attach(this._outputTex),this._blendFb.bind(e),i.render(e),this._blendFb.unbind(e),r||(this._outputPass.setUniform("texture",this._outputTex),this._outputPass.render(e));var n=this._prevFrameTex;this._prevFrameTex=this._outputTex,this._outputTex=n,this._frame++},dispose:function(e){this._sourceFb.dispose(e),this._blendFb.dispose(e),this._prevFrameTex.dispose(e),this._outputTex.dispose(e),this._sourceTex.dispose(e),this._outputPass.dispose(e),this._blendPass.dispose(e)}},Ys.prototype.setProjection=function(e){var t=this.camera;t&&t.update(),"perspective"===e?this.camera instanceof In||(this.camera=new In,t&&this.camera.setLocalTransform(t.localTransform)):this.camera instanceof ma||(this.camera=new ma,t&&this.camera.setLocalTransform(t.localTransform)),this.camera.near=.1,this.camera.far=2e3},Ys.prototype.setViewport=function(e,t,r,i,n){this.camera instanceof In&&(this.camera.aspect=r/i),n=n||1,this.viewport.x=e,this.viewport.y=t,this.viewport.width=r,this.viewport.height=i,this.viewport.devicePixelRatio=n,this._compositor.resize(r*n,i*n),this._temporalSS.resize(r*n,i*n)},Ys.prototype.containPoint=function(e,t){var r=this.viewport;return t=this.layer.renderer.getHeight()-t,e>=r.x&&t>=r.y&&e<=r.x+r.width&&t<=r.y+r.height};var Ks=new Zt;function Qs(e,t){var r=e.getBoxLayoutParams(),i=E(r,{width:t.getWidth(),height:t.getHeight()});i.y=t.getHeight()-i.y-i.height,this.viewGL.setViewport(i.x,i.y,i.width,i.height,t.getDevicePixelRatio());var n=e.get("boxWidth"),a=e.get("boxHeight"),o=e.get("boxDepth");this.getAxis("x").setExtent(-n/2,n/2),this.getAxis("y").setExtent(o/2,-o/2),this.getAxis("z").setExtent(-a/2,a/2),this.size=[n,a,o]}function Js(e,t){var r={};e.eachSeries(function(e){if(e.coordinateSystem===this){var t=e.getData();["x","y","z"].forEach(function(e){t.mapDimensionsAll(e,!0).forEach(function(i){var n,a;n=e,a=t.getDataExtent(i,!0),r[n]=r[n]||[1/0,-1/0],r[n][0]=Math.min(a[0],r[n][0]),r[n][1]=Math.max(a[1],r[n][1])})})}},this),["xAxis3D","yAxis3D","zAxis3D"].forEach(function(t){e.eachComponent(t,function(e){var i=t.charAt(0),n=e.getReferringComponents("grid3D").models[0],a=n.coordinateSystem;if(a===this){var o=a.getAxis(i);if(!o){(o=new qo(i,D(r[i]||[1/0,-1/0],e))).type=e.get("type");var s="category"===o.type;o.onBand=s&&e.get("boundaryGap"),o.inverse=e.get("inverse"),e.axis=o,o.model=e,o.getLabelModel=function(){return e.getModel("axisLabel",n.getModel("axisLabel"))},o.getTickModel=function(){return e.getModel("axisTick",n.getModel("axisTick"))},a.addAxis(o)}}},this)},this),this.resize(this.model,t)}Ys.prototype.castRay=function(e,t,r){var i=this.layer.renderer,n=i.viewport;return i.viewport=this.viewport,i.screenToNDC(e,t,Ks),this.camera.castRay(Ks,r),i.viewport=n,r},Ys.prototype.prepareRender=function(){this.scene.update(),this.camera.update(),this.scene.updateLights();var e=this.scene.updateRenderList(this.camera);this._needsSortProgressively=!1;for(var t=0;t30},Ys.prototype._doRender=function(e,t,r){var i=this.scene,n=this.camera;r=r||0,this._updateTransparent(e,i,n,r),t||(this._shadowMapPass.kernelPCF=this._pcfKernels[0],this._shadowMapPass.render(e,i,n,!0)),this._updateShadowPCFKernel(r);var a,o=e.clearColor;(e.gl.clearColor(o[0],o[1],o[2],o[3]),this._enablePostEffect&&(this.needsTemporalSS()&&this._temporalSS.jitterProjection(e,n),this._compositor.updateNormal(e,i,n,this._temporalSS.getFrame())),this._updateSSAO(e,i,n,this._temporalSS.getFrame()),this._enablePostEffect)?((a=this._compositor.getSourceFrameBuffer()).bind(e),e.gl.clear(e.gl.DEPTH_BUFFER_BIT|e.gl.COLOR_BUFFER_BIT),e.render(i,n,!0,!0),a.unbind(e),this.needsTemporalSS()&&t?(this._compositor.composite(e,i,n,this._temporalSS.getSourceFrameBuffer(),this._temporalSS.getFrame()),e.setViewport(this.viewport),this._temporalSS.render(e)):(e.setViewport(this.viewport),this._compositor.composite(e,i,n,null,0))):this.needsTemporalSS()&&t?((a=this._temporalSS.getSourceFrameBuffer()).bind(e),e.saveClear(),e.clearBit=e.gl.DEPTH_BUFFER_BIT|e.gl.COLOR_BUFFER_BIT,e.render(i,n,!0,!0),e.restoreClear(),a.unbind(e),e.setViewport(this.viewport),this._temporalSS.render(e)):(e.setViewport(this.viewport),e.render(i,n,!0,!0))},Ys.prototype._updateTransparent=function(e,t,r,i){for(var n=new Fr,a=new hi,o=r.getWorldPosition(),s=t.getRenderList(r).transparent,l=0;lthis.camera.far||e80*r){i=a=e[0],n=o=e[1];for(var p=r;pa&&(a=s),l>o&&(o=l);h=Math.max(a-i,o-n)}return ml(d,f,r,i,n,h),f}function fl(e,t,r,i,n){var a,o;if(n===Rl(e,t,r,i)>0)for(a=t;a=t;a-=i)o=Pl(a,e[a],e[a+1],o);return o&&El(o,o.next)&&(Ol(o),o=o.next),o}function pl(e,t){if(!e)return e;t||(t=e);var r,i=e;do{if(r=!1,i.steiner||!El(i,i.next)&&0!==Al(i.prev,i,i.next))i=i.next;else{if(Ol(i),(i=t=i.prev)===i.next)return null;r=!0}}while(r||i!==t);return t}function ml(e,t,r,i,n,a,o){if(e){!o&&a&&function(e,t,r,i){var n=e;do{null===n.z&&(n.z=Tl(n.x,n.y,t,r,i)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,function(e){var t,r,i,n,a,o,s,l,h=1;do{for(r=e,e=null,a=null,o=0;r;){for(o++,i=r,s=0,t=0;t0||l>0&&i;)0!==s&&(0===l||!i||r.z<=i.z)?(n=r,r=r.nextZ,s--):(n=i,i=i.nextZ,l--),a?a.nextZ=n:e=n,n.prevZ=a,a=n;r=i}a.nextZ=null,h*=2}while(o>1)}(n)}(e,i,n,a);for(var s,l,h=e;e.prev!==e.next;)if(s=e.prev,l=e.next,a?_l(e,i,n,a):gl(e))t.push(s.i/r),t.push(e.i/r),t.push(l.i/r),Ol(e),e=l.next,h=l.next;else if((e=l)===h){o?1===o?ml(e=vl(e,t,r),t,r,i,n,a,2):2===o&&yl(e,t,r,i,n,a):ml(pl(e),t,r,i,n,a,1);break}}}function gl(e){var t=e.prev,r=e,i=e.next;if(Al(t,r,i)>=0)return!1;for(var n=e.next.next;n!==e.prev;){if(Sl(t.x,t.y,r.x,r.y,i.x,i.y,n.x,n.y)&&Al(n.prev,n,n.next)>=0)return!1;n=n.next}return!0}function _l(e,t,r,i){var n=e.prev,a=e,o=e.next;if(Al(n,a,o)>=0)return!1;for(var s=n.xa.x?n.x>o.x?n.x:o.x:a.x>o.x?a.x:o.x,u=n.y>a.y?n.y>o.y?n.y:o.y:a.y>o.y?a.y:o.y,c=Tl(s,l,t,r,i),d=Tl(h,u,t,r,i),f=e.nextZ;f&&f.z<=d;){if(f!==e.prev&&f!==e.next&&Sl(n.x,n.y,a.x,a.y,o.x,o.y,f.x,f.y)&&Al(f.prev,f,f.next)>=0)return!1;f=f.nextZ}for(f=e.prevZ;f&&f.z>=c;){if(f!==e.prev&&f!==e.next&&Sl(n.x,n.y,a.x,a.y,o.x,o.y,f.x,f.y)&&Al(f.prev,f,f.next)>=0)return!1;f=f.prevZ}return!0}function vl(e,t,r){var i=e;do{var n=i.prev,a=i.next.next;!El(n,a)&&Dl(n,i,i.next,a)&&Cl(n,a)&&Cl(a,n)&&(t.push(n.i/r),t.push(i.i/r),t.push(a.i/r),Ol(i),Ol(i.next),i=e=a),i=i.next}while(i!==e);return i}function yl(e,t,r,i,n,a){var o=e;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Ml(o,s)){var l=Ll(o,s);return o=pl(o,o.next),l=pl(l,l.next),ml(o,t,r,i,n,a),void ml(l,t,r,i,n,a)}s=s.next}o=o.next}while(o!==e)}function xl(e,t){return e.x-t.x}function bl(e,t){if(t=function(e,t){var r,i=t,n=e.x,a=e.y,o=-1/0;do{if(a<=i.y&&a>=i.next.y&&i.next.y!==i.y){var s=i.x+(a-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=n&&s>o){if(o=s,s===n){if(a===i.y)return i;if(a===i.next.y)return i.next}r=i.x=i.x&&i.x>=u&&n!==i.x&&Sl(ar.x)&&Cl(i,e)&&(r=i,d=l),i=i.next;return r}(e,t),t){var r=Ll(t,e);pl(r,r.next)}}function Tl(e,t,r,i,n){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-r)/n)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)/n)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function wl(e){var t=e,r=e;do{t.x=0&&(e-o)*(i-s)-(r-o)*(t-s)>=0&&(r-o)*(a-s)-(n-o)*(i-s)>=0}function Ml(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&Dl(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}(e,t)&&Cl(e,t)&&Cl(t,e)&&function(e,t){var r=e,i=!1,n=(e.x+t.x)/2,a=(e.y+t.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&n<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next}while(r!==e);return i}(e,t)}function Al(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function El(e,t){return e.x===t.x&&e.y===t.y}function Dl(e,t,r,i){return!!(El(e,t)&&El(r,i)||El(e,i)&&El(r,t))||Al(e,t,r)>0!=Al(e,t,i)>0&&Al(r,i,e)>0!=Al(r,i,t)>0}function Cl(e,t){return Al(e.prev,e,e.next)<0?Al(e,t,e.next)>=0&&Al(e,e.prev,t)>=0:Al(e,t,e.prev)<0||Al(e,e.next,t)<0}function Ll(e,t){var r=new Nl(e.i,e.x,e.y),i=new Nl(t.i,t.x,t.y),n=e.next,a=t.prev;return e.next=t,t.prev=e,r.next=n,n.prev=r,i.next=r,r.prev=i,a.next=i,i.prev=a,i}function Pl(e,t,r,i){var n=new Nl(e,t,r);return i?(n.next=i.next,n.prev=i,i.next.prev=n,i.next=n):(n.prev=n,n.next=n),n}function Ol(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Nl(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Rl(e,t,r,i){for(var n=0,a=t,o=r-i;al&&s.push({pivot:Math.floor((h+l)/2),left:l,right:h});var h;l=a[o].pivot+1;(h=a[o].right)>l&&s.push({pivot:Math.floor((h+l)/2),left:l,right:h})}a=this._parts=s}else for(o=0;o=2e4},doSortTriangles:function(e,t){var r=this.indices;if(0===t){var i=this.attributes.position;e=e.array;this._triangleZList&&this._triangleZList.length===this.triangleCount||(this._triangleZList=new Float32Array(this.triangleCount),this._sortedTriangleIndices=new Uint32Array(this.triangleCount),this._indicesTmp=new r.constructor(r.length),this._triangleZListTmp=new Float32Array(this.triangleCount));for(var n,a=0,o=0;o0,r={},i=0;i65535?new Uint32Array(3*o):new Uint16Array(3*o),d.material.shader!==t&&d.material.attachShader(t,!0),Za.setMaterialFromModel(t.__shading,d.material,e,r),s>0&&(this._linesMesh.geometry.resetOffset(),this._linesMesh.geometry.setVertexCount(s),this._linesMesh.geometry.setTriangleCount(l)),this._dataIndexOfVertex=new Uint32Array(a),this._vertexRangeOfDataIndex=new Uint32Array(2*(n-i))},_updateRegionMesh:function(e,t,r,i){for(var n=e.getData(),a=0,o=0,s=!1,l=this._polygonMesh,h=this._linesMesh,u=r;u0;T&&(b*=t.getDevicePixelRatio(),this._updateLinesGeometry(h.geometry,e,u,v,b,e.coordinateSystem.transform)),h.invisible=!T,h.material.set({color:g})}(l=this._polygonMesh).material.transparent=s,l.material.depthMask=!s,l.geometry.updateBoundingBox(),l.frontFace=this.extrudeY?Za.Mesh.CCW:Za.Mesh.CW,l.material.get("normalMap")&&l.geometry.generateTangents(),l.seriesIndex=e.seriesIndex,l.on("mousemove",this._onmousemove,this),l.on("mouseout",this._onmouseout,this)},_updateDebugWireframe:function(e){var t=e.getModel("debug.wireframe");if(t.get("show")){var r=Za.parseColor(t.get("lineStyle.color")||"rgba(0,0,0,0.5)"),i=Da(t.get("lineStyle.width"),1),n=this._polygonMesh;n.geometry.generateBarycentric(),n.material.define("both","WIREFRAME_TRIANGLE"),n.material.set("wireframeLineColor",r),n.material.set("wireframeLineWidth",i)}},_onmousemove:function(e){var t=this._dataIndexOfVertex[e.triangle[0]];null==t&&(t=-1),t!==this._lastHoverDataIndex&&(this.downplay(this._lastHoverDataIndex),this.highlight(t),this._labelsBuilder.updateLabels([t])),this._lastHoverDataIndex=t,this._polygonMesh.dataIndex=t},_onmouseout:function(e){e.target&&(this.downplay(this._lastHoverDataIndex),this._lastHoverDataIndex=-1,this._polygonMesh.dataIndex=-1),this._labelsBuilder.updateLabels([])},_updateGroundPlane:function(e,t,r){var i=e.getModel("groundPlane",e);if(this._groundMesh.invisible=!i.get("show",!0),!this._groundMesh.invisible){var n=e.get("shading"),a=this._groundMaterials[n];a||(a=this._groundMaterials.lambert),Za.setMaterialFromModel(n,a,i,r),a.get("normalMap")&&this._groundMesh.geometry.generateTangents(),this._groundMesh.material=a,this._groundMesh.material.set("color",Za.parseColor(i.get("color"))),this._groundMesh.scale.set(t.size[0],t.size[2],1)}},_triangulation:function(e,t,r){this._triangulationResults=[];for(var i=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0],a=e.coordinateSystem,o=t;o1?i:0,L[U][g]=A.points[V+2],l.set(n+U,L[U]),s?(R[0]=(A.points[V]*_[0]-v[0])/x,R[1]=(A.points[V+2]*_[g]-v[g])/x):(R[0]=(H?I:I+G)/x,R[1]=(L[U][m]*_[m]-v[m])/x),u.set(n+U,R)}ql.sub(P,L[1],L[0]),ql.sub(O,L[3],L[0]),ql.cross(N,P,O),ql.normalize(N,N);for(U=0;U<4;U++)h.set(n+U,N),f&&c.set(n+U,o);for(U=0;U<6;U++)p[3*a+U]=C[U]+n;n+=4,a+=2,I+=G}}return t.dirty(),{vertexOffset:n,triangleOffset:a}},_getRegionLinesInfo:function(e,t,r){var i=0,n=0;t.getRegionModel(e).getModel("itemStyle").get("borderWidth")>0&&t.getRegionPolygonCoords(e).forEach(function(e){var t=e.exterior,a=e.interiors;i+=r.getPolylineVertexCount(t),n+=r.getPolylineTriangleCount(t);for(var o=0;othis._endIndex)){t-=this._startIndex;for(var i=this._vertexRangeOfDataIndex[2*t];i0},_displacementChanged:!0,_displacementScale:0,updateDisplacementHash:function(){var e=this.getDisplacementTexture(),t=this.getDisplacemenScale();this._displacementChanged=this._displacementTexture!==e||this._displacementScale!==t,this._displacementTexture=e,this._displacementScale=t},isDisplacementChanged:function(){return this._displacementChanged}});m(oh.prototype,ho),m(oh.prototype,uo),m(oh.prototype,co),m(oh.prototype,hl);var sh=Math.PI,lh=Math.sin,hh=Math.cos,uh=Math.tan,ch=Math.asin,dh=Math.atan2,fh=sh/180;var ph=23.4397*fh;function mh(e,t){return dh(lh(e)*hh(ph)-uh(t)*lh(ph),hh(e))}function gh(e,t){return ch(lh(t)*hh(ph)+hh(t)*lh(ph)*lh(e))}function _h(e,t,r){return dh(lh(e),hh(e)*lh(t)-uh(r)*hh(t))}function vh(e,t,r){return ch(lh(t)*lh(r)+hh(t)*hh(r)*hh(e))}function yh(e){var t=function(e){return fh*(357.5291+.98560028*e)}(e),r=function(e){return e+fh*(1.9148*lh(e)+.02*lh(2*e)+3e-4*lh(3*e))+102.9372*fh+sh}(t);return{dec:gh(r,0),ra:mh(r,0)}}var xh={};xh.getPosition=function(e,t,r){var i=fh*-r,n=fh*t,a=function(e){return function(e){return e.valueOf()/864e5-.5+2440588}(e)-2451545}(e),o=yh(a),s=function(e,t){return fh*(280.16+360.9856235*e)-t}(a,i)-o.ra;return{azimuth:_h(s,n,o.dec),altitude:vh(s,n,o.dec)}};Za.Shader.import(Wa),Za.Shader.import("@export ecgl.atmosphere.vertex\nattribute vec3 position: POSITION;\nattribute vec3 normal : NORMAL;\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform mat4 normalMatrix : WORLDINVERSETRANSPOSE;\n\nvarying vec3 v_Normal;\n\nvoid main() {\n v_Normal = normalize((normalMatrix * vec4(normal, 0.0)).xyz);\n gl_Position = worldViewProjection * vec4(position, 1.0);\n}\n@end\n\n\n@export ecgl.atmosphere.fragment\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform float glowPower;\nuniform vec3 glowColor;\n\nvarying vec3 v_Normal;\n\nvoid main() {\n float intensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor = vec4(glowColor, intensity * intensity);\n}\n@end");const bh=T.extend({type:"globe",__ecgl__:!0,_displacementScale:0,init:function(e,t){this.groupGL=new Za.Node,this._sphereGeometry=new Za.SphereGeometry({widthSegments:200,heightSegments:100,dynamic:!0}),this._overlayGeometry=new Za.SphereGeometry({widthSegments:80,heightSegments:40}),this._planeGeometry=new Za.PlaneGeometry,this._earthMesh=new Za.Mesh({renderNormal:!0}),this._atmosphereMesh=new Za.Mesh,this._atmosphereGeometry=new Za.SphereGeometry({widthSegments:80,heightSegments:40}),this._atmosphereMaterial=new Za.Material({shader:new Za.Shader(Za.Shader.source("ecgl.atmosphere.vertex"),Za.Shader.source("ecgl.atmosphere.fragment")),transparent:!0}),this._atmosphereMesh.geometry=this._atmosphereGeometry,this._atmosphereMesh.material=this._atmosphereMaterial,this._atmosphereMesh.frontFace=Za.Mesh.CW,this._lightRoot=new Za.Node,this._sceneHelper=new Mo,this._sceneHelper.initLight(this._lightRoot),this.groupGL.add(this._atmosphereMesh),this.groupGL.add(this._earthMesh),this._control=new _o({zr:t.getZr()}),this._control.init(),this._layerMeshes={}},render:function(e,t,r){var i=e.coordinateSystem,n=e.get("shading");i.viewGL.add(this._lightRoot),e.get("show")?i.viewGL.add(this.groupGL):i.viewGL.remove(this.groupGL),this._sceneHelper.setScene(i.viewGL.scene),i.viewGL.setPostEffect(e.getModel("postEffect"),r),i.viewGL.setTemporalSuperSampling(e.getModel("temporalSuperSampling"));var a=this._earthMesh;a.geometry=this._sphereGeometry;var o="ecgl."+n;a.material&&a.material.shader.name===o||(a.material=Za.createMaterial(o)),Za.setMaterialFromModel(n,a.material,e,r),["roughnessMap","metalnessMap","detailMap","normalMap"].forEach(function(e){var t=a.material.get(e);t&&(t.flipY=!1)}),a.material.set("color",Za.parseColor(e.get("baseColor")));var s=.99*i.radius;if(a.scale.set(s,s,s),e.get("atmosphere.show")){a.material.define("both","ATMOSPHERE_ENABLED"),this._atmosphereMesh.invisible=!1,this._atmosphereMaterial.setUniforms({glowPower:e.get("atmosphere.glowPower")||6,glowColor:e.get("atmosphere.color")||"#ffffff"}),a.material.setUniforms({glowPower:e.get("atmosphere.innerGlowPower")||2,glowColor:e.get("atmosphere.color")||"#ffffff"});var l=e.get("atmosphere.offset")||5;this._atmosphereMesh.scale.set(s+l,s+l,s+l)}else a.material.undefine("both","ATMOSPHERE_ENABLED"),this._atmosphereMesh.invisible=!0;var h=a.material.setTextureImage("diffuseMap",e.get("baseTexture"),r,{flipY:!1,anisotropic:8});h&&h.surface&&h.surface.attachToMesh(a);var u=a.material.setTextureImage("bumpMap",e.get("heightTexture"),r,{flipY:!1,anisotropic:8});u&&u.surface&&u.surface.attachToMesh(a),a.material[e.get("postEffect.enable")?"define":"undefine"]("fragment","SRGB_DECODE"),this._updateLight(e,r),this._displaceVertices(e,r),this._updateViewControl(e,r),this._updateLayers(e,r)},afterRender:function(e,t,r,i){var n=i.renderer;this._sceneHelper.updateAmbientCubemap(n,e,r),this._sceneHelper.updateSkybox(n,e,r)},_updateLayers:function(e,t){var r=e.coordinateSystem,i=e.get("layers"),n=r.radius,a=[],o=[],s=[],h=[];l(i,function(e){var i=new y(e),l=i.get("type"),u=Za.loadTexture(i.get("texture"),t,{flipY:!1,anisotropic:8});if(u.surface&&u.surface.attachToMesh(this._earthMesh),"blend"===l){var c=i.get("blendTo"),d=Da(i.get("intensity"),1);"emission"===c?(s.push(u),h.push(d)):(a.push(u),o.push(d))}else{var f=i.get("id"),p=this._layerMeshes[f];p||(p=this._layerMeshes[f]=new Za.Mesh({geometry:this._overlayGeometry,castShadow:!1,ignorePicking:!0})),"lambert"===i.get("shading")?(p.material=p.__lambertMaterial||new Za.Material({autoUpdateTextureStatus:!1,shader:Za.createShader("ecgl.lambert"),transparent:!0,depthMask:!1}),p.__lambertMaterial=p.material):(p.material=p.__colorMaterial||new Za.Material({autoUpdateTextureStatus:!1,shader:Za.createShader("ecgl.color"),transparent:!0,depthMask:!1}),p.__colorMaterial=p.material),p.material.enableTexture("diffuseMap");var m=i.get("distance"),g=n+(null==m?r.radius/100:m);p.scale.set(g,g,g),n=g;var _=this._blankTexture||(this._blankTexture=Za.createBlankTexture("rgba(255, 255, 255, 0)"));p.material.set("diffuseMap",_),Za.loadTexture(i.get("texture"),t,{flipY:!1,anisotropic:8},function(e){e.surface&&e.surface.attachToMesh(p),p.material.set("diffuseMap",e),t.getZr().refresh()}),i.get("show")?this.groupGL.add(p):this.groupGL.remove(p)}},this);var u=this._earthMesh.material;u.define("fragment","LAYER_DIFFUSEMAP_COUNT",a.length),u.define("fragment","LAYER_EMISSIVEMAP_COUNT",s.length),u.set("layerDiffuseMap",a),u.set("layerDiffuseIntensity",o),u.set("layerEmissiveMap",s),u.set("layerEmissionIntensity",h);var c=e.getModel("debug.wireframe");if(c.get("show")){u.define("both","WIREFRAME_TRIANGLE");var d=Za.parseColor(c.get("lineStyle.color")||"rgba(0,0,0,0.5)"),f=Da(c.get("lineStyle.width"),1);u.set("wireframeLineWidth",f),u.set("wireframeLineColor",d)}else u.undefine("both","WIREFRAME_TRIANGLE")},_updateViewControl:function(e,t){var r=e.coordinateSystem,i=e.getModel("viewControl");r.viewGL.camera;var n=this;var a=this._control;a.setViewGL(r.viewGL);var o,s,l=i.get("targetCoord");null!=l&&(s=l[0]+90,o=l[1]),a.setFromViewControlModel(i,{baseDistance:r.radius,alpha:o,beta:s}),a.off("update"),a.on("update",function(){t.dispatchAction({type:"globeChangeCamera",alpha:a.getAlpha(),beta:a.getBeta(),distance:a.getDistance()-r.radius,center:a.getCenter(),from:n.uid,globeId:e.id})})},_displaceVertices:function(e,t){var r=e.get("displacementQuality"),i=e.get("debug.wireframe.show"),n=e.coordinateSystem;if(e.isDisplacementChanged()||r!==this._displacementQuality||i!==this._showDebugWireframe){this._displacementQuality=r,this._showDebugWireframe=i;var a=this._sphereGeometry,o={low:100,medium:200,high:400,ultra:800}[r]||200,s=o/2;(a.widthSegments!==o||i)&&(a.widthSegments=o,a.heightSegments=s,a.build()),this._doDisplaceVertices(a,n),i&&a.generateBarycentric()}},_doDisplaceVertices:function(e,t){var r=e.attributes.position.value,i=e.attributes.texcoord0.value,n=e.__originalPosition;n&&n.length===r.length||((n=new Float32Array(r.length)).set(r),e.__originalPosition=n);for(var a=t.displacementWidth,o=t.displacementHeight,s=t.displacementData,l=0;l50&&(a=1e3);var o=[];Rh.perspective(o,Bh,this.width/this.height,1,a),this.viewGL.camera.projectionMatrix.setArray(o),this.viewGL.camera.decomposeProjectionMatrix();o=Rh.identity([]);var s=this.dataToPoint(this.center);Rh.scale(o,o,[1,-1,1]),Rh.translate(o,o,[0,0,-e]),Rh.rotateX(o,o,t),Rh.rotateZ(o,o,-this.bearing/180*Math.PI),Rh.translate(o,o,[-s[0]*this.getScale()*Fh,-s[1]*this.getScale()*Fh,0]),this.viewGL.camera.viewMatrix.array=o;var l=[];Rh.invert(l,o),this.viewGL.camera.worldTransform.array=l,this.viewGL.camera.decomposeWorldTransform();var h,u=Ih*this.getScale();if(this.altitudeExtent&&!isNaN(this.boxHeight)){var c=this.altitudeExtent[1]-this.altitudeExtent[0];h=this.boxHeight/c*this.getScale()/Math.pow(2,this._initialZoom-this.zoomOffset)}else h=u/(2*Math.PI*6378e3*Math.abs(Math.cos(this.center[1]*(Math.PI/180))))*this.altitudeScale*Fh;this.viewGL.rootNode.scale.set(this.getScale()*Fh,this.getScale()*Fh,h)}},getScale:function(){return Math.pow(2,this.zoom-this.zoomOffset)},projectOnTile:function(e,t){return this.projectOnTileWithScale(e,this.getScale()*Ih,t)},projectOnTileWithScale:function(e,t,r){var i=e[0],n=e[1]*zh/180,a=t*(i*zh/180+zh)/(2*zh),o=t*(zh-Math.log(Math.tan(zh/4+.5*n)))/(2*zh);return(r=r||[])[0]=a,r[1]=o,r},unprojectFromTile:function(e,t){return this.unprojectOnTileWithScale(e,this.getScale()*Ih,t)},unprojectOnTileWithScale:function(e,t,r){var i=e[0],n=e[1],a=i/t*(2*zh)-zh,o=2*(Math.atan(Math.exp(zh-n/t*(2*zh)))-zh/4);return(r=r||[])[0]=180*a/zh,r[1]=180*o/zh,r},dataToPoint:function(e,t){return(t=this.projectOnTileWithScale(e,Ih,t))[0]-=this._origin[0],t[1]-=this._origin[1],t[2]=isNaN(e[2])?0:e[2],isNaN(e[2])||(t[2]=e[2],this.altitudeExtent&&(t[2]-=this.altitudeExtent[0])),t}},Uh.prototype=new Gh,Uh.prototype.constructor=Uh,Uh.prototype.type="mapbox3D";var Vh=Hh("mapbox3D",Uh,function(e){e.forEach(function(e){e.setCameraOption(e.model.getMapboxCameraOption())})});N(function(e){e.registerComponentModel(Ch),e.registerComponentView(Nh),e.registerCoordinateSystem("mapbox3D",Vh),e.registerAction({type:"mapbox3DChangeCamera",event:"mapbox3dcamerachanged",update:"mapbox3D:updateCamera"},function(e,t){t.eachComponent({mainType:"mapbox3D",query:e},function(t){t.setMapboxCameraOption(e)})})});var kh=["zoom","center","pitch","bearing"],Wh=p.extend({type:"maptalks3D",layoutMode:"box",coordinateSystem:null,defaultOption:{zlevel:-10,urlTemplate:"http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",attribution:'© OpenStreetMap contributors, © CARTO',center:[0,0],zoom:0,pitch:0,bearing:0,light:{main:{alpha:20,beta:30}},altitudeScale:1,boxHeight:"auto"},getMaptalksCameraOption:function(){var e=this;return kh.reduce(function(t,r){return t[r]=e.get(r),t},{})},setMaptalksCameraOption:function(e){null!=e&&kh.forEach(function(t){null!=e[t]&&(this.option[t]=e[t])},this)},getMaptalks:function(){return this._maptalks},setMaptalks:function(e){this._maptalks=e}});function jh(e,t,r,i){if(this.id=e,this.zr=t,this.dom=document.createElement("div"),this.dom.style.cssText="position:absolute;left:0;right:0;top:0;bottom:0;",!maptalks)throw new Error("Maptalks library must be included. See https://maptalks.org");this._maptalks=new maptalks.Map(this.dom,{center:r,zoom:i,doubleClickZoom:!1,fog:!1}),this._initEvents()}m(Wh.prototype,uo),m(Wh.prototype,co),jh.prototype.setUnpainted=function(){},jh.prototype.resize=function(){this._maptalks.checkSize()},jh.prototype.getMaptalks=function(){return this._maptalks},jh.prototype.clear=function(){},jh.prototype.refresh=function(){this._maptalks.checkSize()};var Xh=["mousedown","mouseup","click","dblclick","mousemove","mousewheel","DOMMouseScroll","touchstart","touchend","touchmove","touchcancel"];jh.prototype._initEvents=function(){var e=this.dom;this._handlers=this._handlers||{contextmenu:function(e){return e.preventDefault(),!1}},Xh.forEach(function(t){this._handlers[t]=function(r){var i={};for(var n in r)i[n]=r[n];i.bubbles=!1;var a=new r.constructor(r.type,i);"mousewheel"===t||"DOMMouseScroll"===t?e.dispatchEvent(a):e.firstElementChild.dispatchEvent(a)},this.zr.dom.addEventListener(t,this._handlers[t])},this),this.zr.dom.addEventListener("contextmenu",this._handlers.contextmenu)},jh.prototype.dispose=function(){Xh.forEach(function(e){this.zr.dom.removeEventListener(e,this._handlers[e])},this),this._maptalks.remove()},Za.Shader.import(Oh);const qh=T.extend({type:"maptalks3D",__ecgl__:!0,init:function(e,t){this._groundMesh=new Za.Mesh({geometry:new Za.PlaneGeometry,material:new Za.Material({shader:new Za.Shader({vertex:Za.Shader.source("ecgl.displayShadow.vertex"),fragment:Za.Shader.source("ecgl.displayShadow.fragment")}),depthMask:!1}),renderOrder:-100,culling:!1,castShadow:!1,$ignorePicking:!0,renderNormal:!0})},_initMaptalksLayer:function(e,t){var r=t.getZr();this._zrLayer=new jh("maptalks3D",r,e.get("center"),e.get("zoom")),r.painter.insertLayer(-1e3,this._zrLayer),this._lightRoot=new Za.Node,this._sceneHelper=new Mo(this._lightRoot),this._sceneHelper.initLight(this._lightRoot);var i=this._zrLayer.getMaptalks(),n=this._dispatchInteractAction.bind(this,t,i);["zoomend","zooming","zoomstart","dragrotating","pitch","pitchend","movestart","moving","moveend","resize","touchstart","touchmove","touchend","animating"].forEach(function(e){i.on(e,n)})},render:function(e,t,r){this._zrLayer||this._initMaptalksLayer(e,r);var i=this._zrLayer.getMaptalks(),n=e.get("urlTemplate"),a=i.getBaseLayer();n!==this._oldUrlTemplate&&(a?a.setOptions({urlTemplate:n,attribution:e.get("attribution")}):(a=new maptalks.TileLayer("maptalks-echarts-gl-baselayer",{urlTemplate:n,subdomains:["a","b","c"],attribution:e.get("attribution")}),i.setBaseLayer(a))),this._oldUrlTemplate=n,i.setCenter(e.get("center")),i.setZoom(e.get("zoom"),{animation:!1}),i.setPitch(e.get("pitch")),i.setBearing(e.get("bearing")),e.setMaptalks(i);var o=e.coordinateSystem;o.viewGL.scene.add(this._lightRoot),o.viewGL.add(this._groundMesh),this._updateGroundMesh(),this._sceneHelper.setScene(o.viewGL.scene),this._sceneHelper.updateLight(e),o.viewGL.setPostEffect(e.getModel("postEffect"),r),o.viewGL.setTemporalSuperSampling(e.getModel("temporalSuperSampling")),this._maptalks3DModel=e},afterRender:function(e,t,r,i){var n=i.renderer;this._sceneHelper.updateAmbientCubemap(n,e,r),this._sceneHelper.updateSkybox(n,e,r),e.coordinateSystem.viewGL.scene.traverse(function(e){e.material&&(e.material.define("fragment","NORMAL_UP_AXIS",2),e.material.define("fragment","NORMAL_FRONT_AXIS",1))})},updateCamera:function(e,t,r,i){e.coordinateSystem.setCameraOption(i),this._updateGroundMesh(),r.getZr().refresh()},_dispatchInteractAction:function(e,t,r){var i;e.dispatchAction({type:"maptalks3DChangeCamera",pitch:t.getPitch(),zoom:(i=t.getResolution(),19-Math.log(i/Zh)/Math.LN2+1),center:t.getCenter().toArray(),bearing:t.getBearing(),maptalks3DId:this._maptalks3DModel&&this._maptalks3DModel.id})},_updateGroundMesh:function(){if(this._maptalks3DModel){var e=this._maptalks3DModel.coordinateSystem,t=e.dataToPoint(e.center);this._groundMesh.position.set(t[0],t[1],-.001);var r=new Za.Plane(new Za.Vector3(0,0,1),0),i=e.viewGL.camera.castRay(new Za.Vector2(-1,-1)),n=e.viewGL.camera.castRay(new Za.Vector2(1,1)),a=i.intersectPlane(r),o=n.intersectPlane(r),s=a.dist(o)/e.viewGL.rootNode.scale.x;this._groundMesh.scale.set(s,s,1)}},dispose:function(e,t){this._zrLayer&&this._zrLayer.dispose(),t.getZr().painter.delLayer(-1e3)}}),Zh=12756274*Math.PI/(256*Math.pow(2,20));function Yh(){Gh.apply(this,arguments),this.maxPitch=85,this.zoomOffset=1}Yh.prototype=new Gh,Yh.prototype.constructor=Yh,Yh.prototype.type="maptalks3D";var Kh=Hh("maptalks3D",Yh,function(e){e.forEach(function(e){e.setCameraOption(e.model.getMaptalksCameraOption())})});N(function(e){e.registerComponentModel(Wh),e.registerComponentView(qh),e.registerCoordinateSystem("maptalks3D",Kh),e.registerAction({type:"maptalks3DChangeCamera",event:"maptalks3dcamerachanged",update:"maptalks3D:updateCamera"},function(e,t){t.eachComponent({mainType:"maptalks3D",query:e},function(t){t.setMaptalksCameraOption(e)})})});var Qh=yo.vec3,Jh=W.isDimensionStacked;function $h(e,t,r){for(var i=e.getDataExtent(t),n=e.getDataExtent(r),a=i[1]-i[0]||i[0],o=n[1]-n[0]||n[0],s=new Uint8Array(2500),l=0;l0&&d>0||c<0&&d<0)),m=["x","y","z"].map(function(t){return e.coordDimToDataDim(t)[0]}),g=Jh(i,m[2]),_=g?i.getCalculationInfo("stackResultDimension"):m[2];i.each(m,function(e,t,a,o){var s=i.get(_,o),l=g?s-a:p?0:f[0],h=r.dataToPoint([e,t,l]),u=r.dataToPoint([e,t,s]),c=Qh.dist(h,u),d=[0,u[1]"+t.join("
")}(a):X(q(a)),s=n.getName(r),h=Wl(n,r);Z(h)&&h.colorStops&&(h=(h.colorStops[0]||{}).color);var u=Y(h=h||"transparent"),c=e.name;return"\0-"===c&&(c=""),(c=c?X(c)+"
":"")+u+(s?X(s)+": "+o:o)}function ou(e,t,r){r=r||e.getSource();var i=t||Q(e.get("coordinateSystem"))||["x","y","z"],n=I(r,{dimensionsDefine:r.dimensionsDefine||e.get("dimensions"),encodeDefine:r.encodeDefine||e.get("encode"),coordDimensions:i.map(function(t){var r=e.getReferringComponents(t+"Axis3D").models[0];return{type:r&&"category"===r.get("type")?"ordinal":"float",name:t}})});"cartesian3D"===e.get("coordinateSystem")&&n.forEach(function(t){if(i.indexOf(t.coordDim)>=0){var r=e.getReferringComponents(t.coordDim+"Axis3D").models[0];r&&"category"===r.get("type")&&(t.ordinalMeta=r.getOrdinalMeta())}});var a=W.enableDataStack(e,n,{byIndex:!0,stackedCoordDimension:"z"}),o=new B(n,e);return o.setCalculationInfo(a),o.initData(r),o}nu.getFormattedLabel=function(e,t,r,i,n){r=r||"normal";var a=e.getData(i).getItemModel(t),o=e.getDataParams(t,i);null!=n&&o.value instanceof Array&&(o.value=o.value[n]);var s,l=a.get("normal"===r?["label","formatter"]:["emphasis","label","formatter"]);return null==l&&(l=a.get(["label","formatter"])),"function"==typeof l?(o.status=r,s=l(o)):"string"==typeof l&&(s=j(l,o)),s},nu.normalizeToArray=function(e){return e instanceof Array?e:null==e?[]:[e]};var su=J.extend({type:"series.bar3D",dependencies:["globe"],visualStyleAccessPathvisu:"itemStyle",getInitialData:function(e,t){return ou(this)},getFormattedLabel:function(e,t,r,i){var n=nu.getFormattedLabel(this,e,t,r,i);return null==n&&(n=this.getData().get("z",e)),n},formatTooltip:function(e){return au(this,e)},defaultOption:{coordinateSystem:"cartesian3D",globeIndex:0,grid3DIndex:0,zlevel:-10,bevelSize:0,bevelSmoothness:2,onGridPlane:"xy",shading:"color",minHeight:0,itemStyle:{opacity:1},label:{show:!1,distance:2,textStyle:{fontSize:14,color:"#000",backgroundColor:"rgba(255,255,255,0.7)",padding:3,borderRadius:3}},emphasis:{label:{show:!0}},animationDurationUpdate:500}});m(su.prototype,hl);var lu,hu,uu,cu,du,fu,pu,mu,gu=yo.vec3,_u=yo.mat3,vu=$i.extend(function(){return{attributes:{position:new $i.Attribute("position","float",3,"POSITION"),normal:new $i.Attribute("normal","float",3,"NORMAL"),color:new $i.Attribute("color","float",4,"COLOR"),prevPosition:new $i.Attribute("prevPosition","float",3),prevNormal:new $i.Attribute("prevNormal","float",3)},dynamic:!0,enableNormal:!1,bevelSize:1,bevelSegments:0,_dataIndices:null,_vertexOffset:0,_triangleOffset:0}},{resetOffset:function(){this._vertexOffset=0,this._triangleOffset=0},setBarCount:function(e){var t=this.enableNormal,r=this.getBarVertexCount()*e,i=this.getBarTriangleCount()*e;this.vertexCount!==r&&(this.attributes.position.init(r),t?this.attributes.normal.init(r):this.attributes.normal.value=null,this.attributes.color.init(r)),this.triangleCount!==i&&(this.indices=r>65535?new Uint32Array(3*i):new Uint16Array(3*i),this._dataIndices=new Uint32Array(r))},getBarVertexCount:function(){var e=this.bevelSize>0?this.bevelSegments:0;return e>0?this._getBevelBarVertexCount(e):this.enableNormal?24:8},getBarTriangleCount:function(){var e=this.bevelSize>0?this.bevelSegments:0;return e>0?this._getBevelBarTriangleCount(e):12},_getBevelBarVertexCount:function(e){return 4*(e+1)*(e+1)*2},_getBevelBarTriangleCount:function(e){return(4*e+3+1)*(2*e+1)*2+4},setColor:function(e,t){for(var r=this.getBarVertexCount(),i=r*(e+1),n=r*e;n0&&this.bevelSegments>0)this._addBevelBar(e,c,m,g,this.bevelSize,this.bevelSegments,_);else{gu.copy(n,c),gu.normalize(n,n),gu.cross(a,m,n),gu.normalize(a,a),gu.cross(i,n,a),gu.normalize(a,a),gu.negate(o,i),gu.negate(s,n),gu.negate(l,a),t(h[0],e,i,g[0]/2),t(h[0],h[0],a,g[2]/2),t(h[1],e,i,g[0]/2),t(h[1],h[1],l,g[2]/2),t(h[2],e,o,g[0]/2),t(h[2],h[2],l,g[2]/2),t(h[3],e,o,g[0]/2),t(h[3],h[3],a,g[2]/2),t(r,e,n,g[1]),t(h[4],r,i,g[0]/2),t(h[4],h[4],a,g[2]/2),t(h[5],r,i,g[0]/2),t(h[5],h[5],l,g[2]/2),t(h[6],r,o,g[0]/2),t(h[6],h[6],l,g[2]/2),t(h[7],r,o,g[0]/2),t(h[7],h[7],a,g[2]/2);var x=this.attributes;if(this.enableNormal){u[0]=i,u[1]=o,u[2]=n,u[3]=s,u[4]=a,u[5]=l;for(var b=this._vertexOffset,T=0;T0&&(f++,u[3]<.99&&(p=!0))}}),o.geometry.setBarCount(f);var m=r.getLayout("orient"),g=this._barIndexOfData=new Int32Array(r.count());f=0;r.each(function(e){if(r.hasValue(e)){var t=r.getItemLayout(e),i=t[0],n=t[1],o=t[2],s=4*e;u[0]=c[s++],u[1]=c[s++],u[2]=c[s++],u[3]=c[s++],u[3]>0&&(a._barMesh.geometry.addBar(i,n,m,o,u,e),g[e]=f++)}else g[e]=-1}),o.geometry.dirty(),o.geometry.updateBoundingBox();var _=o.material;_.transparent=p,_.depthMask=!p,o.geometry.sortTriangles=p,this._initHandler(e,t)},_initHandler:function(e,t){var r=e.getData(),i=this._barMesh,n="cartesian3D"===e.coordinateSystem.type;i.seriesIndex=e.seriesIndex;var a=-1;i.off("mousemove"),i.off("mouseout"),i.on("mousemove",function(e){var o=i.geometry.getDataIndexOfVertex(e.triangle[0]);o!==a&&(this._downplay(a),this._highlight(o),this._labelsBuilder.updateLabels([o]),n&&t.dispatchAction({type:"grid3DShowAxisPointer",value:[r.get("x",o),r.get("y",o),r.get("z",o,!0)]})),a=o,i.dataIndex=o},this),i.on("mouseout",function(e){this._downplay(a),this._labelsBuilder.updateLabels(),a=-1,i.dataIndex=-1,n&&t.dispatchAction({type:"grid3DHideAxisPointer"})},this)},_highlight:function(e){var t=this._data;if(t){var r=this._barIndexOfData[e];if(!(r<0)){var i=t.getItemModel(e).getModel("emphasis.itemStyle"),n=i.get("color"),a=i.get("opacity");if(null==n){var o=Wl(t,e);n=z(o,-.4)}null==a&&(a=jl(t,e));var s=Za.parseColor(n);s[3]*=a,this._barMesh.geometry.setColor(r,s),this._api.getZr().refresh()}}},_downplay:function(e){var t=this._data;if(t){var r=this._barIndexOfData[e];if(!(r<0)){var i=Wl(t,e),n=jl(t,e),a=Za.parseColor(i);a[3]*=n,this._barMesh.geometry.setColor(r,a),this._api.getZr().refresh()}}},highlight:function(e,t,r,i){this._toggleStatus("highlight",e,t,r,i)},downplay:function(e,t,r,i){this._toggleStatus("downplay",e,t,r,i)},_toggleStatus:function(e,t,r,i,n){var a=t.getData(),o=Ca(a,n),s=this;null!=o?l(nu.normalizeToArray(o),function(t){"highlight"===e?this._highlight(t):this._downplay(t)},this):a.each(function(t){"highlight"===e?s._highlight(t):s._downplay(t)})},remove:function(){this.groupGL.removeAll()},dispose:function(){this._labelsBuilder.dispose(),this.groupGL.removeAll()}});function bu(e){e.registerChartView(xu),e.registerSeriesModel(su),iu(e),e.registerProcessor(function(e,t){e.eachSeriesByType("bar3d",function(e){var t=e.getData();t.filterSelf(function(e){return t.hasValue(e)})})})}N(bu);var Tu=J.extend({type:"series.line3D",dependencies:["grid3D"],visualStyleAccessPath:"lineStyle",visualDrawType:"stroke",getInitialData:function(e,t){return ou(this)},formatTooltip:function(e){return au(this,e)},defaultOption:{coordinateSystem:"cartesian3D",zlevel:-10,grid3DIndex:0,lineStyle:{width:2},animationDurationUpdate:500}}),wu=yo.vec3;Za.Shader.import(Vo);const Su=$.extend({type:"line3D",__ecgl__:!0,init:function(e,t){this.groupGL=new Za.Node,this._api=t},render:function(e,t,r){var i=this._prevLine3DMesh;this._prevLine3DMesh=this._line3DMesh,this._line3DMesh=i,this._line3DMesh||(this._line3DMesh=new Za.Mesh({geometry:new To({useNativeLine:!1,sortTriangles:!0}),material:new Za.Material({shader:Za.createShader("ecgl.meshLines3D")}),renderOrder:10}),this._line3DMesh.geometry.pick=this._pick.bind(this)),this.groupGL.remove(this._prevLine3DMesh),this.groupGL.add(this._line3DMesh);var n=e.coordinateSystem;if(n&&n.viewGL){n.viewGL.add(this.groupGL);var a=n.viewGL.isLinearSpace()?"define":"undefine";this._line3DMesh.material[a]("fragment","SRGB_DECODE")}this._doRender(e,r),this._data=e.getData(),this._camera=n.viewGL.camera,this.updateCamera(),this._updateAnimation(e)},updateCamera:function(){this._updateNDCPosition()},_doRender:function(e,t){var r=e.getData(),i=this._line3DMesh;i.geometry.resetOffset();var n=r.getLayout("points"),a=[],o=new Float32Array(n.length/3*4),s=0,l=!1;r.each(function(e){var t=Wl(r,e),i=jl(r,e);null==i&&(i=1),Za.parseColor(t,a),a[3]*=i,o[s++]=a[0],o[s++]=a[1],o[s++]=a[2],o[s++]=a[3],a[3]<.99&&(l=!0)}),i.geometry.setVertexCount(i.geometry.getPolylineVertexCount(n)),i.geometry.setTriangleCount(i.geometry.getPolylineTriangleCount(n)),i.geometry.addPolyline(n,o,Da(e.get("lineStyle.width"),1)),i.geometry.dirty(),i.geometry.updateBoundingBox();var h=i.material;h.transparent=l,h.depthMask=!l;var u=e.getModel("debug.wireframe");u.get("show")?(i.geometry.createAttribute("barycentric","float",3),i.geometry.generateBarycentric(),i.material.set("both","WIREFRAME_TRIANGLE"),i.material.set("wireframeLineColor",Za.parseColor(u.get("lineStyle.color")||"rgba(0,0,0,0.5)")),i.material.set("wireframeLineWidth",Da(u.get("lineStyle.width"),1))):i.material.set("both","WIREFRAME_TRIANGLE"),this._points=n,this._initHandler(e,t)},_updateAnimation:function(e){Za.updateVertexAnimation([["prevPosition","position"],["prevPositionPrev","positionPrev"],["prevPositionNext","positionNext"]],this._prevLine3DMesh,this._line3DMesh,e)},_initHandler:function(e,t){var r=e.getData(),i=e.coordinateSystem,n=this._line3DMesh,a=-1;n.seriesIndex=e.seriesIndex,n.off("mousemove"),n.off("mouseout"),n.on("mousemove",function(e){var o=i.pointToData(e.point.array),s=r.indicesOfNearest("x",o[0])[0];s!==a&&(t.dispatchAction({type:"grid3DShowAxisPointer",value:[r.get("x",s),r.get("y",s),r.get("z",s)]}),n.dataIndex=s),a=s},this),n.on("mouseout",function(e){a=-1,n.dataIndex=-1,t.dispatchAction({type:"grid3DHideAxisPointer"})},this)},_updateNDCPosition:function(){var e=new hi,t=this._camera;hi.multiply(e,t.projectionMatrix,t.viewMatrix);var r=this._positionNDC,i=this._points,n=i.length/3;r&&r.length/2===n||(r=this._positionNDC=new Float32Array(2*n));for(var a=[],o=0;o=0){var g=3*l,_=new Fr(this._points[g],this._points[g+1],this._points[g+2]);a.push({dataIndex:l,point:_,pointWorld:_.clone(),target:this._line3DMesh,distance:this._camera.getWorldPosition().dist(_)})}},remove:function(){this.groupGL.removeAll()},dispose:function(){this.groupGL.removeAll()}});N(function(e){e.registerChartView(Su),e.registerSeriesModel(Tu),e.registerLayout(function(e,t){e.eachSeriesByType("line3D",function(e){var t=e.getData(),r=e.coordinateSystem;if(r){if("cartesian3D"!==r.type)return;var i=new Float32Array(3*t.count()),n=[],a=[],o=r.dimensions.map(function(t){return e.coordDimToDataDim(t)[0]});r&&t.each(o,function(e,t,o,s){n[0]=e,n[1]=t,n[2]=o,r.dataToPoint(n,a),i[3*s]=a[0],i[3*s+1]=a[1],i[3*s+2]=a[2]}),t.setLayout("points",i)}})})});const Mu=J.extend({type:"series.scatter3D",dependencies:["globe","grid3D","geo3D"],visualStyleAccessPath:"itemStyle",hasSymbolVisual:!0,getInitialData:function(e,t){return ou(this)},getFormattedLabel:function(e,t,r,i){var n=nu.getFormattedLabel(this,e,t,r,i);if(null==n){var a=this.getData(),o=a.dimensions[a.dimensions.length-1];n=a.get(o,e)}return n},formatTooltip:function(e){return au(this,e)},defaultOption:{coordinateSystem:"cartesian3D",zlevel:-10,progressive:1e5,progressiveThreshold:1e5,grid3DIndex:0,globeIndex:0,symbol:"circle",symbolSize:10,blendMode:"source-over",label:{show:!1,position:"right",distance:5,textStyle:{fontSize:14,color:"#000",backgroundColor:"rgba(255,255,255,0.7)",padding:3,borderRadius:3}},itemStyle:{opacity:.8},emphasis:{label:{show:!0}},animationDurationUpdate:500}});function Au(e,t,r){(t=t||document.createElement("canvas")).width=e,t.height=e;var i=t.getContext("2d");return r&&r(i),t}var Eu={getMarginByStyle:function(e){var t=e.minMargin||0,r=0;e.stroke&&"none"!==e.stroke&&(r=null==e.lineWidth?1:e.lineWidth);var i=e.shadowBlur||0,n=e.shadowOffsetX||0,a=e.shadowOffsetY||0,o={};return o.left=Math.max(r/2,-n+i,t),o.right=Math.max(r/2,n+i,t),o.top=Math.max(r/2,-a+i,t),o.bottom=Math.max(r/2,a+i,t),o},createSymbolSprite:function(e,r,i,n){var a=function(e,r,i,n){t(r)||(r=[r,r]);var a=Eu.getMarginByStyle(i,n),o=r[0]+a.left+a.right,s=r[1]+a.top+a.bottom,l=te(e,0,0,r[0],r[1]),h=Math.max(o,s);l.x=a.left,l.y=a.top,o>s?l.y+=(h-s)/2:l.x+=(h-o)/2;var u=l.getBoundingRect();return l.x-=u.x,l.y-=u.y,l.setStyle(i),l.update(),l.__size=h,l}(e,r,i),o=Eu.getMarginByStyle(i);return{image:Au(a.__size,n,function(e){v(e,a)}),margin:o}},createSDFFromCanvas:function(e,t,r,i){return Au(t,i,function(t){var i=e.getContext("2d").getImageData(0,0,e.width,e.height);t.putImageData(function(e,t,r){var i=t.width,n=t.height,a=e.canvas.width,o=e.canvas.height,s=i/a,l=n/o;function h(e){return e<128?1:-1}function u(e,a){var o=1/0;e=Math.floor(e*s);for(var u=(a=Math.floor(a*l))*i+e,c=h(t.data[4*u]),d=Math.max(a-r,0);d=2e4},doSortVertices:function(e,t){var r=this.indices,i=Du.create();if(!r){r=this.indices=this.vertexCount>65535?new Uint32Array(this.vertexCount):new Uint16Array(this.vertexCount);for(var n=0;n.05);else for(n=0;n<3;n++)this._progressiveQuickSort(3*t+n);this.dirtyIndices()},_simpleSort:function(e){var t=this._zList,r=this.indices;function i(e,r){return t[r]-t[e]}e?Array.prototype.sort.call(r,i):Fl.sort(r,i,0,r.length-1)},_progressiveQuickSort:function(e){var t=this._zList,r=this.indices;this._quickSort=this._quickSort||new Fl,this._quickSort.step(r,function(e,r){return t[r]-t[e]},e)}};var Lu=yo.vec4;Za.Shader.import("@export ecgl.sdfSprite.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform float elapsedTime : 0;\n\nattribute vec3 position : POSITION;\n\n#ifdef VERTEX_SIZE\nattribute float size;\n#else\nuniform float u_Size;\n#endif\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_FillColor: COLOR;\nvarying vec4 v_Color;\n#endif\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nattribute float prevSize;\nuniform float percent : 1.0;\n#endif\n\n\n#ifdef POSITIONTEXTURE_ENABLED\nuniform sampler2D positionTexture;\n#endif\n\nvarying float v_Size;\n\nvoid main()\n{\n\n#ifdef POSITIONTEXTURE_ENABLED\n gl_Position = worldViewProjection * vec4(texture2D(positionTexture, position.xy).xy, -10.0, 1.0);\n#else\n\n #ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n #else\n vec3 pos = position;\n #endif\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n#endif\n\n#ifdef VERTEX_SIZE\n#ifdef VERTEX_ANIMATION\n v_Size = mix(prevSize, size, percent);\n#else\n v_Size = size;\n#endif\n#else\n v_Size = u_Size;\n#endif\n\n#ifdef VERTEX_COLOR\n v_Color = a_FillColor;\n #endif\n\n gl_PointSize = v_Size;\n}\n\n@end\n\n@export ecgl.sdfSprite.fragment\n\nuniform vec4 color: [1, 1, 1, 1];\nuniform vec4 strokeColor: [1, 1, 1, 1];\nuniform float smoothing: 0.07;\n\nuniform float lineWidth: 0.0;\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\nvarying float v_Size;\n\nuniform sampler2D sprite;\n\n@import clay.util.srgb\n\nvoid main()\n{\n gl_FragColor = color;\n\n vec4 _strokeColor = strokeColor;\n\n#ifdef VERTEX_COLOR\n gl_FragColor *= v_Color;\n #endif\n\n#ifdef SPRITE_ENABLED\n float d = texture2D(sprite, gl_PointCoord).r;\n gl_FragColor.a *= smoothstep(0.5 - smoothing, 0.5 + smoothing, d);\n\n if (lineWidth > 0.0) {\n float sLineWidth = lineWidth / 2.0;\n\n float outlineMaxValue0 = 0.5 + sLineWidth;\n float outlineMaxValue1 = 0.5 + sLineWidth + smoothing;\n float outlineMinValue0 = 0.5 - sLineWidth - smoothing;\n float outlineMinValue1 = 0.5 - sLineWidth;\n\n if (d <= outlineMaxValue1 && d >= outlineMinValue0) {\n float a = _strokeColor.a;\n if (d <= outlineMinValue1) {\n a = a * smoothstep(outlineMinValue0, outlineMinValue1, d);\n }\n else {\n a = a * smoothstep(outlineMaxValue1, outlineMaxValue0, d);\n }\n gl_FragColor.rgb = mix(gl_FragColor.rgb * gl_FragColor.a, _strokeColor.rgb, a);\n gl_FragColor.a = gl_FragColor.a * (1.0 - a) + a;\n }\n }\n#endif\n\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(gl_FragColor);\n#endif\n}\n@end");var Pu=Za.Mesh.extend(function(){var e=new Za.Geometry({dynamic:!0,attributes:{color:new Za.Geometry.Attribute("color","float",4,"COLOR"),position:new Za.Geometry.Attribute("position","float",3,"POSITION"),size:new Za.Geometry.Attribute("size","float",1),prevPosition:new Za.Geometry.Attribute("prevPosition","float",3),prevSize:new Za.Geometry.Attribute("prevSize","float",1)}});Object.assign(e,Cu);var t=new Za.Material({shader:Za.createShader("ecgl.sdfSprite"),transparent:!0,depthMask:!1});t.enableTexture("sprite"),t.define("both","VERTEX_COLOR"),t.define("both","VERTEX_SIZE");var r=new Za.Texture2D({image:document.createElement("canvas"),flipY:!1});return t.set("sprite",r),e.pick=this._pick.bind(this),{geometry:e,material:t,mode:Za.Mesh.POINTS,sizeScale:1}},{_pick:function(e,t,r,i,n,a){var o=this._positionNDC;if(o)for(var s=r.viewport,l=2/s.width,h=2/s.height,u=this.geometry.vertexCount-1;u>=0;u--){var c,d=o[2*(c=this.geometry.indices?this.geometry.indices[u]:u)],f=o[2*c+1],p=this.geometry.attributes.size.get(c)/this.sizeScale/2;if(e>d-p*l&&ef-p*h&&t2?(p=this._updateSymbolSprite(e,d,u,c),s.enableTexture("sprite")):s.disableTexture("sprite"),h.position.init(n-i);var m=[];if(f){s.undefine("VERTEX_SIZE"),s.undefine("VERTEX_COLOR");var g=function(e){const t=e.getVisual("style");if(t)return t[e.getVisual("drawType")]}(o),_=function(e){return e.getVisual("style").opacity}(o);Za.parseColor(g,m),m[3]*=_,s.set({color:m,u_Size:u.maxSize*this._sizeScale})}else s.set({color:[1,1,1,1]}),s.define("VERTEX_SIZE"),s.define("VERTEX_COLOR"),h.size.init(n-i),h.color.init(n-i),this._originalOpacity=new Float32Array(n-i);for(var v=o.getLayout("points"),y=h.position.value,x=0;x1?(n[0]=r.maxSize,n[1]=r.maxSize/r.aspect):(n[1]=r.maxSize,n[0]=r.maxSize*r.aspect),n[0]=n[0]||1,n[1]=n[1]||1,this._symbolType===r.type&&function(e,t){return e&&t&&e[0]===t[0]&&e[1]===t[1]}(this._symbolSize,n)&&this._lineWidth===t.lineWidth||(Eu.createSymbolSprite(r.type,n,{fill:"#fff",lineWidth:t.lineWidth,stroke:"transparent",shadowColor:"transparent",minMargin:Math.min(n[0]/2,10)},this._spriteImageCanvas),Eu.createSDFFromCanvas(this._spriteImageCanvas,Math.min(this._spriteImageCanvas.width,32),20,this._mesh.material.get("sprite").image),this._symbolType=r.type,this._symbolSize=n,this._lineWidth=t.lineWidth),this._spriteImageCanvas.width/r.maxSize*i},_updateMaterial:function(e,t){var r="lighter"===e.get("blendMode")?Za.additiveBlend:null,i=this._mesh.material;i.blend=r,i.set("lineWidth",t.lineWidth/20);var n=Za.parseColor(t.stroke);i.set("strokeColor",n),i.transparent=!0,i.depthMask=!1,i.depthTest=!this.is2D,i.sortVertices=!this.is2D},_updateLabelBuilder:function(e,t,r){var i=e.getData(),n=this._mesh.geometry,a=n.attributes.position.value,o=(t=this._startDataIndex,this._mesh.sizeScale);this._labelsBuilder.updateData(i,t,r),this._labelsBuilder.getLabelPosition=function(e,r,i){var n=3*(e-t);return[a[n],a[n+1],a[n+2]]},this._labelsBuilder.getLabelDistance=function(e,r,i){return n.attributes.size.get(e-t)/o/2+i},this._labelsBuilder.updateLabels()},_updateAnimation:function(e){Za.updateVertexAnimation([["prevPosition","position"],["prevSize","size"]],this._prevMesh,this._mesh,e)},_updateHandler:function(e,t,r){var i,n=e.getData(),a=this._mesh,o=this,s=-1,l=e.coordinateSystem&&"cartesian3D"===e.coordinateSystem.type;l&&(i=e.coordinateSystem.model),a.seriesIndex=e.seriesIndex,a.off("mousemove"),a.off("mouseout"),a.on("mousemove",function(t){var h=t.vertexIndex+o._startDataIndex;h!==s&&(this.highlightOnMouseover&&(this.downplay(n,s),this.highlight(n,h),this._labelsBuilder.updateLabels([h])),l&&r.dispatchAction({type:"grid3DShowAxisPointer",value:[n.get(e.coordDimToDataDim("x")[0],h),n.get(e.coordDimToDataDim("y")[0],h),n.get(e.coordDimToDataDim("z")[0],h)],grid3DIndex:i.componentIndex})),a.dataIndex=h,s=h},this),a.on("mouseout",function(e){var t=e.vertexIndex+o._startDataIndex;this.highlightOnMouseover&&(this.downplay(n,t),this._labelsBuilder.updateLabels()),s=-1,a.dataIndex=-1,l&&r.dispatchAction({type:"grid3DHideAxisPointer",grid3DIndex:i.componentIndex})},this)},updateLayout:function(e,t,r){var i=e.getData();if(this._mesh){var n=this._mesh.geometry.attributes.position.value,a=i.getLayout("points");if(this.is2D)for(var o=0;othis._endDataIndex||tthis._endDataIndex||t0?1:-1}Za.Shader.import("@export ecgl.trail2.vertex\nattribute vec3 position: POSITION;\nattribute vec3 positionPrev;\nattribute vec3 positionNext;\nattribute float offset;\nattribute float dist;\nattribute float distAll;\nattribute float start;\n\nattribute vec4 a_Color : COLOR;\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform vec4 viewport : VIEWPORT;\nuniform float near : NEAR;\n\nuniform float speed : 0;\nuniform float trailLength: 0.3;\nuniform float time;\nuniform float period: 1000;\n\nuniform float spotSize: 1;\n\nvarying vec4 v_Color;\nvarying float v_Percent;\nvarying float v_SpotPercent;\n\n@import ecgl.common.wireframe.vertexHeader\n\n@import ecgl.lines3D.clipNear\n\nvoid main()\n{\n @import ecgl.lines3D.expandLine\n\n gl_Position = currProj;\n\n v_Color = a_Color;\n\n @import ecgl.common.wireframe.vertexMain\n\n#ifdef CONSTANT_SPEED\n float t = mod((speed * time + start) / distAll, 1. + trailLength) - trailLength;\n#else\n float t = mod((time + start) / period, 1. + trailLength) - trailLength;\n#endif\n\n float trailLen = distAll * trailLength;\n\n v_Percent = (dist - t * distAll) / trailLen;\n\n v_SpotPercent = spotSize / distAll;\n\n }\n@end\n\n\n@export ecgl.trail2.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nuniform float spotIntensity: 5;\n\nvarying vec4 v_Color;\nvarying float v_Percent;\nvarying float v_SpotPercent;\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.util.srgb\n\nvoid main()\n{\n if (v_Percent > 1.0 || v_Percent < 0.0) {\n discard;\n }\n\n float fade = v_Percent;\n\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(color * v_Color);\n#else\n gl_FragColor = color * v_Color;\n#endif\n\n @import ecgl.common.wireframe.fragmentMain\n\n if (v_Percent > (1.0 - v_SpotPercent)) {\n gl_FragColor.rgb *= spotIntensity;\n }\n\n gl_FragColor.a *= fade;\n}\n\n@end");const tc=Za.Mesh.extend(function(){var e=new Za.Material({shader:new Za.Shader(Za.Shader.source("ecgl.trail2.vertex"),Za.Shader.source("ecgl.trail2.fragment")),transparent:!0,depthMask:!1}),t=new To({dynamic:!0});return t.createAttribute("dist","float",1),t.createAttribute("distAll","float",1),t.createAttribute("start","float",1),{geometry:t,material:e,culling:!1,$ignorePicking:!0}},{updateData:function(e,t,r){var i=e.hostModel,n=this.geometry,a=i.getModel("effect"),o=a.get("trailWidth")*t.getDevicePixelRatio(),s=a.get("trailLength"),l=i.get("effect.constantSpeed"),h=1e3*i.get("effect.period"),u=null!=l;u?this.material.set("speed",l/1e3):this.material.set("period",h),this.material[u?"define":"undefine"]("vertex","CONSTANT_SPEED");var c=i.get("polyline");n.trailLength=s,this.material.set("trailLength",s),n.resetOffset(),["position","positionPrev","positionNext"].forEach(function(e){n.attributes[e].value=r.attributes[e].value});["dist","distAll","start","offset","color"].forEach(function(e){n.attributes[e].init(n.vertexCount)}),n.indices=r.indices;var d=[],f=a.get("trailColor"),p=a.get("trailOpacity"),m=null!=f,g=null!=p;this.updateWorldTransform();var _=this.worldTransform.x.len(),v=this.worldTransform.y.len(),y=this.worldTransform.z.len(),x=0,b=0;e.each(function(t){var i=e.getItemLayout(t),a=g?p:jl(e,t),s=Wl(e,t);null==a&&(a=1),(d=Za.parseColor(m?f:s,d))[3]*=a;for(var l=c?r.getPolylineVertexCount(i):r.getCubicCurveVertexCount(i[0],i[1],i[2],i[3]),T=0,w=[],S=[],M=x;Mx&&(T+=$u.dist(w,S)),n.attributes.dist.set(M,T),$u.copy(S,w);b=Math.max(b,T);var A=Math.random()*(u?T:h);for(M=x;M0;this._updateSurfaceMesh(this._surfaceMesh,e,u,f);var p=this._surfaceMesh.material;f?(p.define("WIREFRAME_QUAD"),p.set("wireframeLineWidth",d),p.set("wireframeLineColor",Za.parseColor(c.get("lineStyle.color")))):p.undefine("WIREFRAME_QUAD"),this._initHandler(e,r),this._updateAnimation(e)},_updateAnimation:function(e){Za.updateVertexAnimation([["prevPosition","position"],["prevNormal","normal"]],this._prevSurfaceMesh,this._surfaceMesh,e)},_createSurfaceMesh:function(){var e=new Za.Mesh({geometry:new Za.Geometry({dynamic:!0,sortTriangles:!0}),shadowDepthMaterial:new Za.Material({shader:new Za.Shader(Za.Shader.source("ecgl.sm.depth.vertex"),Za.Shader.source("ecgl.sm.depth.fragment"))}),culling:!1,renderOrder:10,renderNormal:!0});return e.geometry.createAttribute("barycentric","float",4),e.geometry.createAttribute("prevPosition","float",3),e.geometry.createAttribute("prevNormal","float",3),Object.assign(e.geometry,kl),e},_initHandler:function(e,t){var r=e.getData(),i=this._surfaceMesh,n=e.coordinateSystem;i.seriesIndex=e.seriesIndex;var a=-1;i.off("mousemove"),i.off("mouseout"),i.on("mousemove",function(e){var o=function(e,t){for(var r=1/0,n=-1,a=[],o=0;o=0){var s=[];i.geometry.attributes.position.get(o,s);for(var l=n.pointToData(s),h=1/0,u=-1,c=[],d=0;d65535?Uint32Array:Uint16Array)((p-1)*(m-1)*6),b=function(e,t,r){r[1]=e*m+t,r[0]=e*m+t+1,r[3]=(e+1)*m+t+1,r[2]=(e+1)*m+t},T=!1;if(l){var w=[],S=[],M=0;g?u.init(n.vertexCount):u.value=null;for(var A=[[],[],[]],E=[],D=[],C=lc.create(),L=function(e,t,r){var i=3*t;return r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],r},P=new Float32Array(o.length),O=new Float32Array(o.length/3*4),N=0;N0;){if(Math.floor(s/u)===s/u)return[u,s/u];u--}return[u=Math.floor(Math.sqrt(s)),u]},dispose:function(){this.groupGL.removeAll()},remove:function(){this.groupGL.removeAll()}});function cc(e,t){for(var r=[],i=0;i "+f)),u++)}var p=I(e,{coordDimensions:["value"]});(s=new B(p,r)).initData(e);var m=new B(["value"],r);return m.initData(h,l),n&&n(s,m),le({mainData:s,struct:a,structAttr:"graph",datas:{node:s,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a}(i,r,this,!0,function(e,r){e.wrapMethod("getItemModel",function(e){const t=n._categoriesModels[e.getShallow("category")];return t&&(t.parentModel=e.parentModel,e.parentModel=t),e});const i=t.getModel([]).getModel;function a(e,t){const r=i.call(this,e,t);return r.resolveParentPath=o,r}function o(e){if(e&&("label"===e[0]||"label"===e[1])){const t=e.slice();return"label"===e[0]?t[0]="edgeLabel":"label"===e[1]&&(t[1]="edgeLabel"),t}return e}r.wrapMethod("getItemModel",function(e){return e.resolveParentPath=o,e.getModel=a,e})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(e,t,r){if("edge"===r){var i=this.getData(),n=this.getDataParams(e,r),a=i.graph.getEdgeByIndex(e),o=i.getName(a.node1.dataIndex),s=i.getName(a.node2.dataIndex),l=[];return null!=o&&l.push(o),null!=s&&l.push(s),l=X(l.join(" > ")),n.value&&(l+=" : "+X(n.value)),l}return _c.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var e=(this.option.categories||[]).map(function(e){return null!=e.value?e:Object.assign({value:0},e)}),t=new B(["value"],this);t.initData(e),this._categoriesData=t,this._categoriesModels=t.mapArray(function(e){return t.getItemModel(e,!0)})},setView:function(e){null!=e.zoom&&(this.option.zoom=e.zoom),null!=e.offset&&(this.option.offset=e.offset)},setNodePosition:function(e){for(var t=0;t65535?this.indices instanceof Uint16Array&&(this.indices=new Uint32Array(this.indices)):this.indices instanceof Uint32Array&&(this.indices=new Uint16Array(this.indices)))},setTriangleCount:function(e){this.triangleCount!==e&&(this.indices=0===e?null:this.vertexCount>65535?new Uint32Array(3*e):new Uint16Array(3*e))},_getCubicCurveApproxStep:function(e,t,r,i){return 1/(vc.dist(e,t)+vc.dist(r,t)+vc.dist(i,r)+1)*this.segmentScale},getCubicCurveVertexCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?2*a:2*a+2},getCubicCurveTriangleCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?0:2*a},getLineVertexCount:function(){return this.getPolylineVertexCount(yc)},getLineTriangleCount:function(){return this.getPolylineTriangleCount(yc)},getPolylineVertexCount:function(e){var t;"number"==typeof e?t=e:t="number"!=typeof e[0]?e.length:e.length/2;return this.useNativeLine?2*(t-1):2*(t-1)+2},getPolylineTriangleCount:function(e){var t;"number"==typeof e?t=e:t="number"!=typeof e[0]?e.length:e.length/2;return this.useNativeLine?0:2*(t-1)},addCubicCurve:function(e,t,r,i,n,a){null==a&&(a=1);var o=e[0],s=e[1],l=t[0],h=t[1],u=r[0],c=r[1],d=i[0],f=i[1],p=this._getCubicCurveApproxStep(e,t,r,i),m=p*p,g=m*p,_=3*p,v=3*m,y=6*m,x=6*g,b=o-2*l+u,T=s-2*h+c,w=3*(l-u)-o+d,S=3*(h-c)-s+f,M=o,A=s,E=(l-o)*_+b*v+w*g,D=(h-s)*_+T*v+S*g,C=b*y+w*x,L=T*y+S*x,P=w*x,O=S*x,N=0,R=0,I=Math.ceil(1/p),B=new Float32Array(3*(I+1)),z=(B=[],0);for(R=0;R1&&(M=E>0?Math.min(M,d):Math.max(M,d),A=D>0?Math.min(A,f):Math.max(A,f));this.addPolyline(B,n,a)},addLine:function(e,t,r,i){this.addPolyline([e,t],r,i)},addPolyline:function(){var e=vc.create(),t=vc.create(),r=vc.create(),i=vc.create(),n=[],a=[],o=[];return function(s,l,h,u,c){if(s.length){var d="number"!=typeof s[0];if(null==c&&(c=d?s.length:s.length/2),!(c<2)){null==u&&(u=0),null==h&&(h=1),this._itemVertexOffsets.push(this._vertexOffset);for(var f,p=d?"number"!=typeof l[0]:l.length/4===c,m=this.attributes.position,g=this.attributes.color,_=this.attributes.offset,v=this.attributes.normal,y=this.indices,x=this._vertexOffset,b=0;b1&&(m.copy(x,x-1),g.copy(x,x-1),x++);else{var S;if(b0){vc.sub(e,n,o),vc.sub(t,a,n),vc.normalize(e,e),vc.normalize(t,t),vc.add(i,e,t),vc.normalize(i,i);var M=h/2*Math.min(1/vc.dot(e,i),2);r[0]=-i[1],r[1]=i[0],S=M}else vc.sub(e,a,n),vc.normalize(e,e),r[0]=-e[1],r[1]=e[0],S=h/2}else vc.sub(e,n,o),vc.normalize(e,e),r[0]=-e[1],r[1]=e[0],S=h/2;v.set(x,r),v.set(x+1,r),_.set(x,S),_.set(x+1,-S),vc.copy(o,n),m.set(x,n),m.set(x+1,n),g.set(x,f),g.set(x+1,f),x+=2}if(this.useNativeLine)g.set(x,f),m.set(x,n),x++;else if(b>0){var A=3*this._faceOffset;(y=this.indices)[A]=x-4,y[A+1]=x-3,y[A+2]=x-2,y[A+3]=x-3,y[A+4]=x-1,y[A+5]=x-2,this._faceOffset+=2}}this._vertexOffset=x}}}}(),setItemColor:function(e,t){for(var r=this._itemVertexOffsets[e],i=e 0.0) {\n float factor = 0.0;\n if (preventOverlap) {\n float d = sqrt(d2);\n d = d - n0.w - n1.w;\n if (d > 0.0) {\n factor = scaling * n0.z * n1.z / (d * d);\n }\n else if (d < 0.0) {\n factor = scaling * 100.0 * n0.z * n1.z;\n }\n }\n else {\n factor = scaling * n0.z * n1.z / d2;\n }\n force += dir * factor;\n }\n }\n\n vec2 dir = gravityCenter - n0.xy;\n float d = 1.0;\n if (!strongGravityMode) {\n d = length(dir);\n }\n\n force += dir * n0.z * gravity / (d + 1.0);\n\n gl_FragColor = vec4(force, 0.0, 1.0);\n}\n@end\n\n@export ecgl.forceAtlas2.updateEdgeAttraction.vertex\n\nattribute vec2 node1;\nattribute vec2 node2;\nattribute float weight;\n\nuniform sampler2D positionTex;\nuniform float edgeWeightInfluence;\nuniform bool preventOverlap;\nuniform bool linLogMode;\n\nuniform vec2 windowSize: WINDOW_SIZE;\n\nvarying vec2 v_Force;\n\nvoid main() {\n\n vec4 n0 = texture2D(positionTex, node1);\n vec4 n1 = texture2D(positionTex, node2);\n\n vec2 dir = n1.xy - n0.xy;\n float d = length(dir);\n float w;\n if (edgeWeightInfluence == 0.0) {\n w = 1.0;\n }\n else if (edgeWeightInfluence == 1.0) {\n w = weight;\n }\n else {\n w = pow(weight, edgeWeightInfluence);\n }\n vec2 offset = vec2(1.0 / windowSize.x, 1.0 / windowSize.y);\n vec2 scale = vec2((windowSize.x - 1.0) / windowSize.x, (windowSize.y - 1.0) / windowSize.y);\n vec2 pos = node1 * scale * 2.0 - 1.0;\n gl_Position = vec4(pos + offset, 0.0, 1.0);\n gl_PointSize = 1.0;\n\n float factor;\n if (preventOverlap) {\n d = d - n1.w - n0.w;\n }\n if (d <= 0.0) {\n v_Force = vec2(0.0);\n return;\n }\n\n if (linLogMode) {\n factor = w * log(d) / d;\n }\n else {\n factor = w;\n }\n v_Force = dir * factor;\n}\n@end\n\n@export ecgl.forceAtlas2.updateEdgeAttraction.fragment\n\nvarying vec2 v_Force;\n\nvoid main() {\n gl_FragColor = vec4(v_Force, 0.0, 0.0);\n}\n@end\n\n@export ecgl.forceAtlas2.calcWeightedSum.vertex\n\nattribute vec2 node;\n\nvarying vec2 v_NodeUv;\n\nvoid main() {\n\n v_NodeUv = node;\n gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n gl_PointSize = 1.0;\n}\n@end\n\n@export ecgl.forceAtlas2.calcWeightedSum.fragment\n\nvarying vec2 v_NodeUv;\n\nuniform sampler2D positionTex;\nuniform sampler2D forceTex;\nuniform sampler2D forcePrevTex;\n\nvoid main() {\n vec2 force = texture2D(forceTex, v_NodeUv).rg;\n vec2 forcePrev = texture2D(forcePrevTex, v_NodeUv).rg;\n\n float mass = texture2D(positionTex, v_NodeUv).z;\n float swing = length(force - forcePrev) * mass;\n float traction = length(force + forcePrev) * 0.5 * mass;\n\n gl_FragColor = vec4(swing, traction, 0.0, 0.0);\n}\n@end\n\n@export ecgl.forceAtlas2.calcGlobalSpeed\n\nuniform sampler2D globalSpeedPrevTex;\nuniform sampler2D weightedSumTex;\nuniform float jitterTolerence;\n\nvoid main() {\n vec2 weightedSum = texture2D(weightedSumTex, vec2(0.5)).xy;\n float prevGlobalSpeed = texture2D(globalSpeedPrevTex, vec2(0.5)).x;\n float globalSpeed = jitterTolerence * jitterTolerence\n * weightedSum.y / weightedSum.x;\n if (prevGlobalSpeed > 0.0) {\n globalSpeed = min(globalSpeed / prevGlobalSpeed, 1.5) * prevGlobalSpeed;\n }\n gl_FragColor = vec4(globalSpeed, 0.0, 0.0, 1.0);\n}\n@end\n\n@export ecgl.forceAtlas2.updatePosition\n\nuniform sampler2D forceTex;\nuniform sampler2D forcePrevTex;\nuniform sampler2D positionTex;\nuniform sampler2D globalSpeedTex;\n\nvarying vec2 v_Texcoord;\n\nvoid main() {\n vec2 force = texture2D(forceTex, v_Texcoord).xy;\n vec2 forcePrev = texture2D(forcePrevTex, v_Texcoord).xy;\n vec4 node = texture2D(positionTex, v_Texcoord);\n\n float globalSpeed = texture2D(globalSpeedTex, vec2(0.5)).r;\n float swing = length(force - forcePrev);\n float speed = 0.1 * globalSpeed / (0.1 + globalSpeed * sqrt(swing));\n\n float df = length(force);\n if (df > 0.0) {\n speed = min(df * speed, 10.0) / df;\n\n gl_FragColor = vec4(node.xy + speed * force, node.zw);\n }\n else {\n gl_FragColor = node;\n }\n}\n@end\n\n@export ecgl.forceAtlas2.edges.vertex\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nattribute vec2 node;\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n\nuniform sampler2D positionTex;\n\nvoid main()\n{\n gl_Position = worldViewProjection * vec4(\n texture2D(positionTex, node).xy, -10.0, 1.0\n );\n v_Color = a_Color;\n}\n@end\n\n@export ecgl.forceAtlas2.edges.fragment\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nvarying vec4 v_Color;\nvoid main() {\n gl_FragColor = color * v_Color;\n}\n@end");var bc={repulsionByDegree:!0,linLogMode:!1,strongGravityMode:!1,gravity:1,scaling:1,edgeWeightInfluence:1,jitterTolerence:.1,preventOverlap:!1,dissuadeHubs:!1,gravityCenter:null};function Tc(e){var t={type:Za.Texture.FLOAT,minFilter:Za.Texture.NEAREST,magFilter:Za.Texture.NEAREST};this._positionSourceTex=new Za.Texture2D(t),this._positionSourceTex.flipY=!1,this._positionTex=new Za.Texture2D(t),this._positionPrevTex=new Za.Texture2D(t),this._forceTex=new Za.Texture2D(t),this._forcePrevTex=new Za.Texture2D(t),this._weightedSumTex=new Za.Texture2D(t),this._weightedSumTex.width=this._weightedSumTex.height=1,this._globalSpeedTex=new Za.Texture2D(t),this._globalSpeedPrevTex=new Za.Texture2D(t),this._globalSpeedTex.width=this._globalSpeedTex.height=1,this._globalSpeedPrevTex.width=this._globalSpeedPrevTex.height=1,this._nodeRepulsionPass=new ya({fragment:Za.Shader.source("ecgl.forceAtlas2.updateNodeRepulsion")}),this._positionPass=new ya({fragment:Za.Shader.source("ecgl.forceAtlas2.updatePosition")}),this._globalSpeedPass=new ya({fragment:Za.Shader.source("ecgl.forceAtlas2.calcGlobalSpeed")}),this._copyPass=new ya({fragment:Za.Shader.source("clay.compositor.output")});var r=function(e){e.blendEquation(e.FUNC_ADD),e.blendFunc(e.ONE,e.ONE)};this._edgeForceMesh=new Za.Mesh({geometry:new Za.Geometry({attributes:{node1:new Za.Geometry.Attribute("node1","float",2),node2:new Za.Geometry.Attribute("node2","float",2),weight:new Za.Geometry.Attribute("weight","float",1)},dynamic:!0,mainAttribute:"node1"}),material:new Za.Material({transparent:!0,shader:Za.createShader("ecgl.forceAtlas2.updateEdgeAttraction"),blend:r,depthMask:!1,depthText:!1}),mode:Za.Mesh.POINTS}),this._weightedSumMesh=new Za.Mesh({geometry:new Za.Geometry({attributes:{node:new Za.Geometry.Attribute("node","float",2)},dynamic:!0,mainAttribute:"node"}),material:new Za.Material({transparent:!0,shader:Za.createShader("ecgl.forceAtlas2.calcWeightedSum"),blend:r,depthMask:!1,depthText:!1}),mode:Za.Mesh.POINTS}),this._framebuffer=new Xn({depthBuffer:!1}),this._dummyCamera=new Za.OrthographicCamera({left:-1,right:1,top:1,bottom:-1,near:0,far:100}),this._globalSpeed=0}Tc.prototype.updateOption=function(e){for(var t in bc)this[t]=bc[t];var r=this._nodes.length;if(this.jitterTolerence=r>5e4?10:r>5e3?1:.1,this.scaling=r>100?2:10,e)for(var t in bc)null!=e[t]&&(this[t]=e[t]);if(this.repulsionByDegree)for(var i=this._positionSourceTex.pixels,n=0;ne},Tc.prototype._swapTexture=function(){var e=this._positionPrevTex;this._positionPrevTex=this._positionTex,this._positionTex=e;e=this._forcePrevTex;this._forcePrevTex=this._forceTex,this._forceTex=e;e=this._globalSpeedPrevTex;this._globalSpeedPrevTex=this._globalSpeedTex,this._globalSpeedTex=e},Tc.prototype._initFromSource=function(e){this._framebuffer.attach(this._positionPrevTex),this._framebuffer.bind(e),this._copyPass.setUniform("texture",this._positionSourceTex),this._copyPass.render(e),e.gl.clearColor(0,0,0,0),this._framebuffer.attach(this._forcePrevTex),e.gl.clear(e.gl.COLOR_BUFFER_BIT),this._framebuffer.attach(this._globalSpeedPrevTex),e.gl.clear(e.gl.COLOR_BUFFER_BIT),this._framebuffer.unbind(e)},Tc.prototype._resize=function(e,t){["_positionSourceTex","_positionTex","_positionPrevTex","_forceTex","_forcePrevTex"].forEach(function(r){this[r].width=e,this[r].height=t,this[r].dirty()},this)},Tc.prototype.dispose=function(e){this._framebuffer.dispose(e),this._copyPass.dispose(e),this._nodeRepulsionPass.dispose(e),this._positionPass.dispose(e),this._globalSpeedPass.dispose(e),this._edgeForceMesh.geometry.dispose(e),this._weightedSumMesh.geometry.dispose(e),this._positionSourceTex.dispose(e),this._positionTex.dispose(e),this._positionPrevTex.dispose(e),this._forceTex.dispose(e),this._forcePrevTex.dispose(e),this._weightedSumTex.dispose(e),this._globalSpeedTex.dispose(e),this._globalSpeedPrevTex.dispose(e)};var wc=function(){var e=function(){return new Float32Array(2)},t=function(e,t){var r=t[0]-e[0],i=t[1]-e[1];return Math.sqrt(r*r+i*i)},r=function(e){var t=e[0],r=e[1];return Math.sqrt(t*t+r*r)},i=function(e,t,r,i){return e[0]=t[0]+r[0]*i,e[1]=t[1]+r[1]*i,e},n=function(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e},a=function(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e},o=function(e,t){return e[0]=t[0],e[1]=t[1],e},s=function(e,t,r){return e[0]=t,e[1]=r,e};function l(){this.subRegions=[],this.nSubRegions=0,this.node=null,this.mass=0,this.centerOfMass=null,this.bbox=new Float32Array(4),this.size=0}var h=l.prototype;function u(){this.position=new Float32Array(2),this.force=e(),this.forcePrev=e(),this.mass=1,this.inDegree=0,this.outDegree=0}function c(e,t){this.source=e,this.target=t,this.weight=1}function d(){this.autoSettings=!0,this.barnesHutOptimize=!0,this.barnesHutTheta=1.5,this.repulsionByDegree=!0,this.linLogMode=!1,this.strongGravityMode=!1,this.gravity=1,this.scaling=1,this.edgeWeightInfluence=1,this.jitterTolerence=.1,this.preventOverlap=!1,this.dissuadeHubs=!1,this.rootRegion=new l,this.rootRegion.centerOfMass=e(),this.nodes=[],this.edges=[],this.bbox=new Float32Array(4),this.gravityCenter=null,this._massArr=null,this._swingingArr=null,this._sizeArr=null,this._globalSpeed=0}h.beforeUpdate=function(){for(var e=0;e=e&&this.bbox[1]<=t&&this.bbox[3]>=t},h.setBBox=function(e,t,r,i){this.bbox[0]=e,this.bbox[1]=t,this.bbox[2]=r,this.bbox[3]=i,this.size=(r-e+i-t)/2},h._newSubRegion=function(){var e=this.subRegions[this.nSubRegions];return e||(e=new l,this.subRegions[this.nSubRegions]=e),this.nSubRegions++,e},h._addNodeToSubRegion=function(e){var t=this.findSubRegion(e.position[0],e.position[1]),r=this.bbox;if(!t){var i=(r[0]+r[2])/2,n=(r[1]+r[3])/2,a=(r[2]-r[0])/2,o=(r[3]-r[1])/2,s=e.position[0]>=i?1:0,l=e.position[1]>=n?1:0;(t=this._newSubRegion()).setBBox(s*a+r[0],l*o+r[1],(s+1)*a+r[0],(l+1)*o+r[1])}t.addNode(e)},h._updateCenterOfMass=function(e){null==this.centerOfMass&&(this.centerOfMass=new Float32Array(2));var t=this.centerOfMass[0]*this.mass,r=this.centerOfMass[1]*this.mass;t+=e.position[0]*e.mass,r+=e.position[1]*e.mass,this.mass+=e.mass,this.centerOfMass[0]=t/this.mass,this.centerOfMass[1]=r/this.mass};var f=d.prototype;f.initNodes=function(e,t,r){var i=t.length;this.nodes.length=0;for(var n=void 0!==r,a=0;a0&&(this.strongGravityMode?this.applyNodeStrongGravity(u):this.applyNodeGravity(u))}for(l=0;l0&&(g=Math.min(g/this._globalSpeed,1.5)*this._globalSpeed),this._globalSpeed=g;for(l=0;l0&&(v=Math.min(y*v,10)/y,i(h.position,h.position,h.force,v))}},f.applyRegionToNodeRepulsion=function(){var t=e();return function(e,r){if(e.node)this.applyNodeToNodeRepulsion(e.node,r,!0);else{a(t,r.position,e.centerOfMass);var n=t[0]*t[0]+t[1]*t[1];if(n>this.barnesHutTheta*e.size*e.size){var o=this.scaling*r.mass*e.mass/n;i(r.force,r.force,t,o)}else for(var s=0;s0)s=this.scaling*e.mass*r.mass/(l*l);else{if(!(l<0))return;s=100*this.scaling*e.mass*r.mass}}else s=this.scaling*e.mass*r.mass/o;i(e.force,e.force,t,s),i(r.force,r.force,t,-s)}}}}(),f.applyEdgeAttraction=function(){var t=e();return function(e){var n=e.source,o=e.target;a(t,n.position,o.position);var s,l,h=r(t);s=0===this.edgeWeightInfluence?1:1===this.edgeWeightInfluence?e.weight:Math.pow(e.weight,this.edgeWeightInfluence),this.preventOverlap&&(h=h-n.size-o.size)<=0||(l=this.linLogMode?-s*Math.log(h+1)/(h+1):-s,i(n.force,n.force,t,l),i(o.force,o.force,t,-l))}}(),f.applyNodeGravity=function(){var t=e();return function(e){a(t,this.gravityCenter,e.position);var n=r(t);i(e.force,e.force,t,this.gravity*e.mass/(n+1))}}(),f.applyNodeStrongGravity=function(){var t=e();return function(e){a(t,this.gravityCenter,e.position),i(e.force,e.force,t,this.gravity*e.mass)}}(),f.updateBBox=function(){for(var e=1/0,t=1/0,r=-1/0,i=-1/0,n=0;n5e4?10:a>5e3?1:.1,t.scaling=a>100?2:10,t.barnesHutOptimize=a>1e3,e)for(var r in Sc)null!=e[r]&&(t[r]=e[r]);if(!t.gravityCenter){for(var o=[1/0,1/0],s=[-1/0,-1/0],l=0;le},Mc.prototype.getNodePosition=function(e,t){if(t||(t=new Float32Array(2*this._nodes.length)),this._positionArr)for(var r=0;r0?1.1:.9,a=Math.max(Math.min(this._zoom*n,this.maxZoom),this.minZoom);n=a/this._zoom;var o=this._convertPos(r,i),s=(o.x-this._dx)*(n-1),l=(o.y-this._dy)*(n-1);this._dx-=s,this._dy-=l,this._zoom=a,this._needsUpdate=!0}}},dispose:function(){var e=this.zr;e.off("mousedown",this._mouseDownHandler),e.off("mousemove",this._mouseMoveHandler),e.off("mouseup",this._mouseUpHandler),e.off("mousewheel",this._mouseWheelHandler),e.off("globalout",this._mouseUpHandler),e.animation.off("frame",this._update)}});var Ec=yo.vec2;Za.Shader.import("@export ecgl.lines2D.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nattribute vec2 position: POSITION;\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n\n#ifdef POSITIONTEXTURE_ENABLED\nuniform sampler2D positionTexture;\n#endif\n\nvoid main()\n{\n gl_Position = worldViewProjection * vec4(position, -10.0, 1.0);\n\n v_Color = a_Color;\n}\n\n@end\n\n@export ecgl.lines2D.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nvarying vec4 v_Color;\n\nvoid main()\n{\n gl_FragColor = color * v_Color;\n}\n@end\n\n\n@export ecgl.meshLines2D.vertex\n\nattribute vec2 position: POSITION;\nattribute vec2 normal;\nattribute float offset;\nattribute vec4 a_Color : COLOR;\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform vec4 viewport : VIEWPORT;\n\nvarying vec4 v_Color;\nvarying float v_Miter;\n\nvoid main()\n{\n vec4 p2 = worldViewProjection * vec4(position + normal, -10.0, 1.0);\n gl_Position = worldViewProjection * vec4(position, -10.0, 1.0);\n\n p2.xy /= p2.w;\n gl_Position.xy /= gl_Position.w;\n\n vec2 N = normalize(p2.xy - gl_Position.xy);\n gl_Position.xy += N * offset / viewport.zw * 2.0;\n\n gl_Position.xy *= gl_Position.w;\n\n v_Color = a_Color;\n}\n@end\n\n\n@export ecgl.meshLines2D.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nvarying vec4 v_Color;\nvarying float v_Miter;\n\nvoid main()\n{\n gl_FragColor = color * v_Color;\n}\n\n@end");var Dc=1;const Cc=$.extend({type:"graphGL",__ecgl__:!0,init:function(e,t){this.groupGL=new Za.Node,this.viewGL=new Ys("orthographic"),this.viewGL.camera.left=this.viewGL.camera.right=0,this.viewGL.add(this.groupGL),this._pointsBuilder=new Ou(!0,t),this._forceEdgesMesh=new Za.Mesh({material:new Za.Material({shader:Za.createShader("ecgl.forceAtlas2.edges"),transparent:!0,depthMask:!1,depthTest:!1}),$ignorePicking:!0,geometry:new Za.Geometry({attributes:{node:new Za.Geometry.Attribute("node","float",2),color:new Za.Geometry.Attribute("color","float",4,"COLOR")},dynamic:!0,mainAttribute:"node"}),renderOrder:-1,mode:Za.Mesh.LINES}),this._edgesMesh=new Za.Mesh({material:new Za.Material({shader:Za.createShader("ecgl.meshLines2D"),transparent:!0,depthMask:!1,depthTest:!1}),$ignorePicking:!0,geometry:new xc({useNativeLine:!1,dynamic:!0}),renderOrder:-1,culling:!1}),this._layoutId=0,this._control=new Ac({zr:t.getZr(),viewGL:this.viewGL}),this._control.setTarget(this.groupGL),this._control.init(),this._clickHandler=this._clickHandler.bind(this)},render:function(e,t,r){this.groupGL.add(this._pointsBuilder.rootNode),this._model=e,this._api=r,this._initLayout(e,t,r),this._pointsBuilder.update(e,t,r),this._forceLayoutInstance instanceof Tc||this.groupGL.remove(this._forceEdgesMesh),this._updateCamera(e,r),this._control.off("update"),this._control.on("update",function(){r.dispatchAction({type:"graphGLRoam",seriesId:e.id,zoom:this._control.getZoom(),offset:this._control.getOffset()}),this._pointsBuilder.updateView(this.viewGL.camera)},this),this._control.setZoom(Da(e.get("zoom"),1)),this._control.setOffset(e.get("offset")||[0,0]);var i=this._pointsBuilder.getPointsMesh();if(i.off("mousemove",this._mousemoveHandler),i.off("mouseout",this._mouseOutHandler,this),r.getZr().off("click",this._clickHandler),this._pointsBuilder.highlightOnMouseover=!0,e.get("focusNodeAdjacency")){var n=e.get("focusNodeAdjacencyOn");"click"===n?r.getZr().on("click",this._clickHandler):"mouseover"===n&&(i.on("mousemove",this._mousemoveHandler,this),i.on("mouseout",this._mouseOutHandler,this),this._pointsBuilder.highlightOnMouseover=!1)}this._lastMouseOverDataIndex=-1},_clickHandler:function(e){if(!this._layouting){var t=this._pointsBuilder.getPointsMesh().dataIndex;t>=0?this._api.dispatchAction({type:"graphGLFocusNodeAdjacency",seriesId:this._model.id,dataIndex:t}):this._api.dispatchAction({type:"graphGLUnfocusNodeAdjacency",seriesId:this._model.id})}},_mousemoveHandler:function(e){if(!this._layouting){var t=this._pointsBuilder.getPointsMesh().dataIndex;t>=0?t!==this._lastMouseOverDataIndex&&this._api.dispatchAction({type:"graphGLFocusNodeAdjacency",seriesId:this._model.id,dataIndex:t}):this._mouseOutHandler(e),this._lastMouseOverDataIndex=t}},_mouseOutHandler:function(e){this._layouting||(this._api.dispatchAction({type:"graphGLUnfocusNodeAdjacency",seriesId:this._model.id}),this._lastMouseOverDataIndex=-1)},_updateForceEdgesGeometry:function(e,t){var r=this._forceEdgesMesh.geometry,i=t.getEdgeData(),n=0,a=this._forceLayoutInstance,o=2*i.count();r.attributes.node.init(o),r.attributes.color.init(o),i.each(function(t){var o=e[t];r.attributes.node.set(n,a.getNodeUV(o.node1)),r.attributes.node.set(n+1,a.getNodeUV(o.node2));var s=Wl(i,o.dataIndex),l=Za.parseColor(s);l[3]*=Da(jl(i,o.dataIndex),1),r.attributes.color.set(n,l),r.attributes.color.set(n+1,l),n+=2}),r.dirty()},_updateMeshLinesGeometry:function(){var e=this._model.getEdgeData(),t=this._edgesMesh.geometry,r=(e=this._model.getEdgeData(),this._model.getData().getLayout("points"));t.resetOffset(),t.setVertexCount(e.count()*t.getLineVertexCount()),t.setTriangleCount(e.count()*t.getLineTriangleCount());var i=[],n=[],a=["lineStyle","width"];this._originalEdgeColors=new Float32Array(4*e.count()),this._edgeIndicesMap=new Float32Array(e.count()),e.each(function(o){var s=e.graph.getEdgeByIndex(o),l=2*s.node1.dataIndex,h=2*s.node2.dataIndex;i[0]=r[l],i[1]=r[l+1],n[0]=r[h],n[1]=r[h+1];var u=Wl(e,s.dataIndex),c=Za.parseColor(u);c[3]*=Da(jl(e,s.dataIndex),1);var d=e.getItemModel(s.dataIndex),f=Da(d.get(a),1)*this._api.getDevicePixelRatio();t.addLine(i,n,c,f);for(var p=0;p<4;p++)this._originalEdgeColors[4*s.dataIndex+p]=c[p];this._edgeIndicesMap[s.dataIndex]=o},this),t.dirty()},_updateForceNodesGeometry:function(e){for(var t=this._pointsBuilder.getPointsMesh(),r=[],i=0;i=p&&(h._syncNodePosition(e),f=0),r.getZr().refresh(),s(function(){m(t)})})};s(function(){h._forceLayoutInstanceToDispose&&(h._forceLayoutInstanceToDispose.dispose(n.layer.renderer),h._forceLayoutInstanceToDispose=null),m(u)}),this._layouting=!0}}},stopLayout:function(e,t,r,i){i&&null!=i.from&&i.from!==this.uid||(this._layoutId=0,this.groupGL.remove(this._forceEdgesMesh),this.groupGL.add(this._edgesMesh),this._forceLayoutInstance&&this.viewGL.layer&&(i&&i.beforeLayout||(this._syncNodePosition(e),this._updateAfterLayout(e,t,r)),this._api.getZr().refresh(),this._layouting=!1))},_syncNodePosition:function(e){var t=this._forceLayoutInstance.getNodePosition(this.viewGL.layer.renderer);e.getData().setLayout("points",t),e.setNodePosition(t)},_updateAfterLayout:function(e,t,r){this._updateMeshLinesGeometry(),this._pointsBuilder.removePositionTexture(),this._pointsBuilder.updateLayout(e,t,r),this._pointsBuilder.updateView(this.viewGL.camera),this._pointsBuilder.updateLabels(),this._pointsBuilder.showLabels()},focusNodeAdjacency:function(e,t,r,i){var n=this._model.getData();this._downplayAll();var a=i.dataIndex,o=n.graph,s=[],l=o.getNodeByIndex(a);s.push(l),l.edges.forEach(function(e){e.dataIndex<0||(e.node1!==l&&s.push(e.node1),e.node2!==l&&s.push(e.node2))},this),this._pointsBuilder.fadeOutAll(.05),this._fadeOutEdgesAll(.05),s.forEach(function(e){this._pointsBuilder.highlight(n,e.dataIndex)},this),this._pointsBuilder.updateLabels(s.map(function(e){return e.dataIndex}));var h=[];l.edges.forEach(function(e){e.dataIndex>=0&&(this._highlightEdge(e.dataIndex),h.push(e))},this),this._focusNodes=s,this._focusEdges=h},unfocusNodeAdjacency:function(e,t,r,i){this._downplayAll(),this._pointsBuilder.fadeInAll(),this._fadeInEdgesAll(),this._pointsBuilder.updateLabels()},_highlightEdge:function(e){var t=this._model.getEdgeData().getItemModel(e),r=Za.parseColor(t.get("emphasis.lineStyle.color")||t.get("lineStyle.color")),i=Da(t.get("emphasis.lineStyle.opacity"),t.get("lineStyle.opacity"),1);r[3]*=i,this._edgesMesh.geometry.setItemColor(this._edgeIndicesMap[e],r)},_downplayAll:function(){this._focusNodes&&this._focusNodes.forEach(function(e){this._pointsBuilder.downplay(this._model.getData(),e.dataIndex)},this),this._focusEdges&&this._focusEdges.forEach(function(e){this._downplayEdge(e.dataIndex)},this)},_downplayEdge:function(e){var t=this._getColor(e,[]);this._edgesMesh.geometry.setItemColor(this._edgeIndicesMap[e],t)},_setEdgeFade:function(){var e=[];return function(t,r){this._getColor(t,e),e[3]*=r,this._edgesMesh.geometry.setItemColor(this._edgeIndicesMap[t],e)}}(),_getColor:function(e,t){for(var r=0;r<4;r++)t[r]=this._originalEdgeColors[4*e+r];return t},_fadeOutEdgesAll:function(e){this._model.getData().graph.eachEdge(function(t){this._setEdgeFade(t.dataIndex,e)},this)},_fadeInEdgesAll:function(){this._fadeOutEdgesAll(1)},_updateCamera:function(e,t){this.viewGL.setViewport(0,0,t.getWidth(),t.getHeight(),t.getDevicePixelRatio());for(var r=this.viewGL.camera,i=e.getData().getLayout("points"),n=Ec.create(1/0,1/0),a=Ec.create(-1/0,-1/0),o=[],s=0;sr.left&&hr.top)){var u=Math.max(a[0]-n[0],10),c=u/t.getWidth()*t.getHeight();u*=1.4,c*=1.4,n[0]-=.2*u,r.left=n[0],r.top=l-c/2,r.bottom=l+c/2,r.right=u+n[0],r.near=0,r.far=100}},dispose:function(){var e=this.viewGL.layer.renderer;this._forceLayoutInstance&&this._forceLayoutInstance.dispose(e),this.groupGL.removeAll(),this._layoutId=-1,this._pointsBuilder.dispose()},remove:function(){this.groupGL.removeAll(),this._control.dispose()}});function Lc(e){return e instanceof Array||(e=[e,e]),e}N(function(e){function t(){}e.registerChartView(Cc),e.registerSeriesModel(_c),e.registerVisual(function(e){const t={};e.eachSeriesByType("graphGL",function(e){var r=e.getCategoriesData(),i=e.getData(),n={};r.each(function(i){var a=r.getName(i);n["ec-"+a]=i;var o=r.getItemModel(i),s=o.getModel("itemStyle").getItemStyle();s.fill||(s.fill=e.getColorFromPalette(a,t)),r.setItemVisual(i,"style",s);var l=["symbol","symbolSize","symbolKeepAspect"];for(let e=0;e65535?new Uint32Array(3*i):new Uint16Array(3*i))},addLine:function(e){var t=this._vertexOffset;this.attributes.position.set(t,[e[0],e[1],1]),this.attributes.position.set(t+1,[e[0],e[1],-1]),this.attributes.position.set(t+2,[e[0],e[1],2]),this.attributes.position.set(t+3,[e[0],e[1],-2]),this.setTriangleIndices(this._faceOffset++,[t,t+1,t+2]),this.setTriangleIndices(this._faceOffset++,[t+1,t+2,t+3]),this._vertexOffset+=4}});xr.import("@export ecgl.vfParticle.particle.fragment\n\nuniform sampler2D particleTexture;\nuniform sampler2D spawnTexture;\nuniform sampler2D velocityTexture;\n\nuniform float deltaTime;\nuniform float elapsedTime;\n\nuniform float speedScaling : 1.0;\n\nuniform vec2 textureSize;\nuniform vec4 region : [0, 0, 1, 1];\nuniform float firstFrameTime;\n\nvarying vec2 v_Texcoord;\n\n\nvoid main()\n{\n vec4 p = texture2D(particleTexture, v_Texcoord);\n bool spawn = false;\n if (p.w <= 0.0) {\n p = texture2D(spawnTexture, fract(v_Texcoord + elapsedTime / 10.0));\n p.w -= firstFrameTime;\n spawn = true;\n }\n vec2 v = texture2D(velocityTexture, fract(p.xy * region.zw + region.xy)).xy;\n v = (v - 0.5) * 2.0;\n p.z = length(v);\n p.xy += v * deltaTime / 10.0 * speedScaling;\n p.w -= deltaTime;\n\n if (spawn || p.xy != fract(p.xy)) {\n p.z = 0.0;\n }\n p.xy = fract(p.xy);\n\n gl_FragColor = p;\n}\n@end\n\n@export ecgl.vfParticle.renderPoints.vertex\n\n#define PI 3.1415926\n\nattribute vec2 texcoord : TEXCOORD_0;\n\nuniform sampler2D particleTexture;\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nuniform float size : 1.0;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\nvoid main()\n{\n vec4 p = texture2D(particleTexture, texcoord);\n\n if (p.w > 0.0 && p.z > 1e-5) {\n gl_Position = worldViewProjection * vec4(p.xy * 2.0 - 1.0, 0.0, 1.0);\n }\n else {\n gl_Position = vec4(100000.0, 100000.0, 100000.0, 1.0);\n }\n\n v_Mag = p.z;\n v_Uv = p.xy;\n\n gl_PointSize = size;\n}\n\n@end\n\n@export ecgl.vfParticle.renderPoints.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nuniform sampler2D gradientTexture;\nuniform sampler2D colorTexture;\nuniform sampler2D spriteTexture;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\nvoid main()\n{\n gl_FragColor = color;\n#ifdef SPRITETEXTURE_ENABLED\n gl_FragColor *= texture2D(spriteTexture, gl_PointCoord);\n if (color.a == 0.0) {\n discard;\n }\n#endif\n#ifdef GRADIENTTEXTURE_ENABLED\n gl_FragColor *= texture2D(gradientTexture, vec2(v_Mag, 0.5));\n#endif\n#ifdef COLORTEXTURE_ENABLED\n gl_FragColor *= texture2D(colorTexture, v_Uv);\n#endif\n}\n\n@end\n\n@export ecgl.vfParticle.renderLines.vertex\n\n#define PI 3.1415926\n\nattribute vec3 position : POSITION;\n\nuniform sampler2D particleTexture;\nuniform sampler2D prevParticleTexture;\n\nuniform float size : 1.0;\nuniform vec4 vp: VIEWPORT;\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\n@import clay.util.rand\n\nvoid main()\n{\n vec4 p = texture2D(particleTexture, position.xy);\n vec4 p2 = texture2D(prevParticleTexture, position.xy);\n\n p.xy = p.xy * 2.0 - 1.0;\n p2.xy = p2.xy * 2.0 - 1.0;\n\n if (p.w > 0.0 && p.z > 1e-5) {\n vec2 dir = normalize(p.xy - p2.xy);\n vec2 norm = vec2(dir.y / vp.z, -dir.x / vp.w) * sign(position.z) * size;\n if (abs(position.z) == 2.0) {\n gl_Position = vec4(p.xy + norm, 0.0, 1.0);\n v_Uv = p.xy;\n v_Mag = p.z;\n }\n else {\n gl_Position = vec4(p2.xy + norm, 0.0, 1.0);\n v_Mag = p2.z;\n v_Uv = p2.xy;\n }\n gl_Position = worldViewProjection * gl_Position;\n }\n else {\n gl_Position = vec4(100000.0, 100000.0, 100000.0, 1.0);\n }\n}\n\n@end\n\n@export ecgl.vfParticle.renderLines.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nuniform sampler2D gradientTexture;\nuniform sampler2D colorTexture;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\nvoid main()\n{\n gl_FragColor = color;\n #ifdef GRADIENTTEXTURE_ENABLED\n gl_FragColor *= texture2D(gradientTexture, vec2(v_Mag, 0.5));\n#endif\n#ifdef COLORTEXTURE_ENABLED\n gl_FragColor *= texture2D(colorTexture, v_Uv);\n#endif\n}\n\n@end\n");var Nc=function(){this.motionBlurFactor=.99,this.vectorFieldTexture=new Vi({type:zi.FLOAT,flipY:!1}),this.particleLife=[5,20],this._particleType="point",this._particleSize=1,this.particleColor=[1,1,1,1],this.particleSpeedScaling=1,this._thisFrameTexture=null,this._particlePass=null,this._spawnTexture=null,this._particleTexture0=null,this._particleTexture1=null,this._particlePointsMesh=null,this._surfaceFrameBuffer=null,this._elapsedTime=0,this._scene=null,this._camera=null,this._lastFrameTexture=null,this._supersampling=1,this._downsampleTextures=[],this._width=512,this._height=512,this.init()};Nc.prototype={constructor:Nc,init:function(){var e={type:zi.FLOAT,minFilter:zi.NEAREST,magFilter:zi.NEAREST,useMipmap:!1};this._spawnTexture=new Vi(e),this._particleTexture0=new Vi(e),this._particleTexture1=new Vi(e),this._frameBuffer=new Xn({depthBuffer:!1}),this._particlePass=new ya({fragment:xr.source("ecgl.vfParticle.particle.fragment")}),this._particlePass.setUniform("velocityTexture",this.vectorFieldTexture),this._particlePass.setUniform("spawnTexture",this._spawnTexture),this._downsamplePass=new ya({fragment:xr.source("clay.compositor.downsample")});var t=new Fi({renderOrder:10,material:new kt({shader:new xr(xr.source("ecgl.vfParticle.renderPoints.vertex"),xr.source("ecgl.vfParticle.renderPoints.fragment"))}),mode:Fi.POINTS,geometry:new $i({dynamic:!0,mainAttribute:"texcoord0"})}),r=new Fi({renderOrder:10,material:new kt({shader:new xr(xr.source("ecgl.vfParticle.renderLines.vertex"),xr.source("ecgl.vfParticle.renderLines.fragment"))}),geometry:new Oc,culling:!1}),i=new Fi({material:new kt({shader:new xr(xr.source("ecgl.color.vertex"),xr.source("ecgl.color.fragment"))}),geometry:new Yn});i.material.enableTexture("diffuseMap"),this._particlePointsMesh=t,this._particleLinesMesh=r,this._lastFrameFullQuadMesh=i,this._camera=new ma,this._thisFrameTexture=new Vi,this._lastFrameTexture=new Vi},setParticleDensity:function(e,t){for(var r=new Float32Array(4*(e*t)),i=0,n=this.particleLife,a=0;a0?e[e.length-1]:this._lastFrameTexture},setRegion:function(e){this._particlePass.setUniform("region",e)},resize:function(e,t){this._lastFrameTexture.width=e*this._supersampling,this._lastFrameTexture.height=t*this._supersampling,this._thisFrameTexture.width=e*this._supersampling,this._thisFrameTexture.height=t*this._supersampling,this._width=e,this._height=t},setParticleSize:function(e){var t=this._getParticleMesh();if(e<=2)return t.material.disableTexture("spriteTexture"),void(t.material.transparent=!1);this._spriteTexture||(this._spriteTexture=new Vi),this._spriteTexture.image&&this._spriteTexture.image.width===e||(this._spriteTexture.image=function(e){var t=document.createElement("canvas");t.width=t.height=e;var r=t.getContext("2d");return r.fillStyle="#fff",r.arc(e/2,e/2,e/2,0,2*Math.PI),r.fill(),t}(e),this._spriteTexture.dirty()),t.material.transparent=!0,t.material.enableTexture("spriteTexture"),t.material.set("spriteTexture",this._spriteTexture),this._particleSize=e},setGradientTexture:function(e){var t=this._getParticleMesh().material;t[e?"enableTexture":"disableTexture"]("gradientTexture"),t.setUniform("gradientTexture",e)},setColorTextureImage:function(e,t){this._getParticleMesh().material.setTextureImage("colorTexture",e,t,{flipY:!0})},setParticleType:function(e){this._particleType=e},clearFrame:function(e){var t=this._frameBuffer;t.attach(this._lastFrameTexture),t.bind(e),e.gl.clear(e.gl.DEPTH_BUFFER_BIT|e.gl.COLOR_BUFFER_BIT),t.unbind(e)},setSupersampling:function(e){this._supersampling=e,this.resize(this._width,this._height)},_updateDownsampleTextures:function(e,t){for(var r=this._downsampleTextures,i=Math.max(Math.floor(Math.log(this._supersampling/t.getDevicePixelRatio())/Math.log(2)),0),n=2,a=this._width*this._supersampling,o=this._height*this._supersampling,s=0;s=359&&(n[0]>0&&(n[0]=0),a[0]1?(t.material.shader!==this._meshLinesShader&&t.material.attachShader(this._meshLinesShader),t.mode=Za.Mesh.TRIANGLES):(t.material.shader!==this._nativeLinesShader&&t.material.attachShader(this._nativeLinesShader),t.mode=Za.Mesh.LINES),r=r||0,i=i||n.count(),s.resetOffset();var u=0,c=0,d=[],f=[],p=[],m=[],g=[],_=.3,v=.7;function y(){f[0]=d[0]*v+m[0]*_-(d[1]-m[1])*a,f[1]=d[1]*v+m[1]*_-(m[0]-d[0])*a,p[0]=d[0]*_+m[0]*v-(d[1]-m[1])*a,p[1]=d[1]*_+m[1]*v-(m[0]-d[0])*a}if(o||0!==a)for(var x=r;x=400?e.onerror&&e.onerror():e.onload&&e.onload(t.response)},e.onerror&&(t.onerror=e.onerror),t.send(null)}};var xt,bt={supportWebGL:function(){if(null==xt)try{var e=document.createElement("canvas");if(!(e.getContext("webgl")||e.getContext("experimental-webgl")))throw new Error}catch(t){xt=!1}return xt}};bt.Int8Array="undefined"==typeof Int8Array?Array:Int8Array,bt.Uint8Array="undefined"==typeof Uint8Array?Array:Uint8Array,bt.Uint16Array="undefined"==typeof Uint16Array?Array:Uint16Array,bt.Uint32Array="undefined"==typeof Uint32Array?Array:Uint32Array,bt.Int16Array="undefined"==typeof Int16Array?Array:Int16Array,bt.Float32Array="undefined"==typeof Float32Array?Array:Float32Array,bt.Float64Array="undefined"==typeof Float64Array?Array:Float64Array;var Tt={};"undefined"!=typeof window?Tt=window:"undefined"!=typeof global&&(Tt=global),bt.requestAnimationFrame=Tt.requestAnimationFrame||Tt.msRequestAnimationFrame||Tt.mozRequestAnimationFrame||Tt.webkitRequestAnimationFrame||function(e){setTimeout(e,16)},bt.createCanvas=function(){return document.createElement("canvas")},bt.createImage=function(){return new Tt.Image},bt.request={get:yt.get},bt.addEventListener=function(e,t,r,i){e.addEventListener(t,r,i)},bt.removeEventListener=function(e,t,r){e.removeEventListener(t,r)};var wt=function(){this.head=null,this.tail=null,this._length=0};wt.prototype.insert=function(e){var t=new wt.Entry(e);return this.insertEntry(t),t},wt.prototype.insertAt=function(e,t){if(!(e<0)){for(var r=this.head,i=0;r&&i!=e;)r=r.next,i++;if(r){var n=new wt.Entry(t),a=r.prev;a?(a.next=n,n.prev=a):this.head=n,n.next=r,r.prev=n}else this.insert(t)}},wt.prototype.insertBeforeEntry=function(e,t){var r=new wt.Entry(e),i=t.prev;i?(i.next=r,r.prev=i):this.head=r,r.next=t,t.prev=r,this._length++},wt.prototype.insertEntry=function(e){this.head?(this.tail.next=e,e.prev=this.tail,this.tail=e):this.head=this.tail=e,this._length++},wt.prototype.remove=function(e){var t=e.prev,r=e.next;t?t.next=r:this.head=r,r?r.prev=t:this.tail=t,e.next=e.prev=null,this._length--},wt.prototype.removeAt=function(e){if(!(e<0)){for(var t=this.head,r=0;t&&r!=e;)t=t.next,r++;return t?(this.remove(t),t.value):void 0}},wt.prototype.getHead=function(){if(this.head)return this.head.value},wt.prototype.getTail=function(){if(this.tail)return this.tail.value},wt.prototype.getAt=function(e){if(!(e<0)){for(var t=this.head,r=0;t&&r!=e;)t=t.next,r++;return t.value}},wt.prototype.indexOf=function(e){for(var t=this.head,r=0;t;){if(t.value===e)return r;t=t.next,r++}},wt.prototype.length=function(){return this._length},wt.prototype.isEmpty=function(){return 0===this._length},wt.prototype.forEach=function(e,t){for(var r=this.head,i=0,n=void 0!==t;r;)n?e.call(t,r.value,i):e(r.value,i),r=r.next,i++},wt.prototype.clear=function(){this.tail=this.head=null,this._length=0},wt.Entry=function(e){this.value=e,this.next=null,this.prev=null};var St=function(e){this._list=new wt,this._map={},this._maxSize=e||10};St.prototype.setMaxSize=function(e){this._maxSize=e},St.prototype.put=function(e,t){if(!this._map.hasOwnProperty(e)){var r=this._list.length();if(r>=this._maxSize&&r>0){var i=this._list.head;this._list.remove(i),delete this._map[i.key]}var n=this._list.insert(t);n.key=e,this._map[e]=n}},St.prototype.get=function(e){var t=this._map[e];if(this._map.hasOwnProperty(e))return t!==this._list.tail&&(this._list.remove(t),this._list.insertEntry(t)),t.value},St.prototype.remove=function(e){var t=this._map[e];void 0!==t&&(delete this._map[e],this._list.remove(t))},St.prototype.clear=function(){this._list.clear(),this._map={}};var Mt={},At={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Et(e){return(e=Math.round(e))<0?0:e>255?255:e}function Dt(e){return e<0?0:e>1?1:e}function Ct(e){return e.length&&"%"===e.charAt(e.length-1)?Et(parseFloat(e)/100*255):Et(parseInt(e,10))}function Lt(e){return e.length&&"%"===e.charAt(e.length-1)?Dt(parseFloat(e)/100):Dt(parseFloat(e))}function Pt(e,t,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?e+(t-e)*r*6:2*r<1?t:3*r<2?e+(t-e)*(2/3-r)*6:e}function Ot(e,t,r){return e+(t-e)*r}function Nt(e,t,r,i,n){return e[0]=t,e[1]=r,e[2]=i,e[3]=n,e}function Rt(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}var It=new St(20),Bt=null;function zt(e,t){Bt&&Rt(Bt,t),Bt=It.put(e,Bt||t.slice())}function Ft(e,t){var r=(parseFloat(e[0])%360+360)%360/360,i=Lt(e[1]),n=Lt(e[2]),a=n<=.5?n*(i+1):n+i-n*i,o=2*n-a;return Nt(t=t||[],Et(255*Pt(o,a,r+1/3)),Et(255*Pt(o,a,r)),Et(255*Pt(o,a,r-1/3)),1),4===e.length&&(t[3]=e[3]),t}Mt.parse=function(e,t){if(e){t=t||[];var r=It.get(e);if(r)return Rt(t,r);var i,n=(e+="").replace(/ /g,"").toLowerCase();if(n in At)return Rt(t,At[n]),zt(e,t),t;if("#"===n.charAt(0))return 4===n.length?(i=parseInt(n.substr(1),16))>=0&&i<=4095?(Nt(t,(3840&i)>>4|(3840&i)>>8,240&i|(240&i)>>4,15&i|(15&i)<<4,1),zt(e,t),t):void Nt(t,0,0,0,1):7===n.length?(i=parseInt(n.substr(1),16))>=0&&i<=16777215?(Nt(t,(16711680&i)>>16,(65280&i)>>8,255&i,1),zt(e,t),t):void Nt(t,0,0,0,1):void 0;var a=n.indexOf("("),o=n.indexOf(")");if(-1!==a&&o+1===n.length){var s=n.substr(0,a),l=n.substr(a+1,o-(a+1)).split(","),h=1;switch(s){case"rgba":if(4!==l.length)return void Nt(t,0,0,0,1);h=Lt(l.pop());case"rgb":return 3!==l.length?void Nt(t,0,0,0,1):(Nt(t,Ct(l[0]),Ct(l[1]),Ct(l[2]),h),zt(e,t),t);case"hsla":return 4!==l.length?void Nt(t,0,0,0,1):(l[3]=Lt(l[3]),Ft(l,t),zt(e,t),t);case"hsl":return 3!==l.length?void Nt(t,0,0,0,1):(Ft(l,t),zt(e,t),t);default:return}}Nt(t,0,0,0,1)}},Mt.parseToFloat=function(e,t){if(t=Mt.parse(e,t))return t[0]/=255,t[1]/=255,t[2]/=255,t},Mt.lift=function(e,t){var r=Mt.parse(e);if(r){for(var i=0;i<3;i++)r[i]=t<0?r[i]*(1-t)|0:(255-r[i])*t+r[i]|0;return Mt.stringify(r,4===r.length?"rgba":"rgb")}},Mt.toHex=function(e){var t=Mt.parse(e);if(t)return((1<<24)+(t[0]<<16)+(t[1]<<8)+ +t[2]).toString(16).slice(1)},Mt.fastLerp=function(e,t,r){if(t&&t.length&&e>=0&&e<=1){r=r||[];var i=e*(t.length-1),n=Math.floor(i),a=Math.ceil(i),o=t[n],s=t[a],l=i-n;return r[0]=Et(Ot(o[0],s[0],l)),r[1]=Et(Ot(o[1],s[1],l)),r[2]=Et(Ot(o[2],s[2],l)),r[3]=Dt(Ot(o[3],s[3],l)),r}},Mt.fastMapToColor=Mt.fastLerp,Mt.lerp=function(e,t,r){if(t&&t.length&&e>=0&&e<=1){var i=e*(t.length-1),n=Math.floor(i),a=Math.ceil(i),o=Mt.parse(t[n]),s=Mt.parse(t[a]),l=i-n,h=Mt.stringify([Et(Ot(o[0],s[0],l)),Et(Ot(o[1],s[1],l)),Et(Ot(o[2],s[2],l)),Dt(Ot(o[3],s[3],l))],"rgba");return r?{color:h,leftIndex:n,rightIndex:a,value:i}:h}},Mt.mapToColor=Mt.lerp,Mt.modifyHSL=function(e,t,r,i){if(e=Mt.parse(e))return e=function(e){if(e){var t,r,i=e[0]/255,n=e[1]/255,a=e[2]/255,o=Math.min(i,n,a),s=Math.max(i,n,a),l=s-o,h=(s+o)/2;if(0===l)t=0,r=0;else{r=h<.5?l/(s+o):l/(2-s-o);var u=((s-i)/6+l/2)/l,c=((s-n)/6+l/2)/l,d=((s-a)/6+l/2)/l;i===s?t=d-c:n===s?t=1/3+u-d:a===s&&(t=2/3+c-u),t<0&&(t+=1),t>1&&(t-=1)}var f=[360*t,r,h];return null!=e[3]&&f.push(e[3]),f}}(e),null!=t&&(e[0]=(n=t,(n=Math.round(n))<0?0:n>360?360:n)),null!=r&&(e[1]=Lt(r)),null!=i&&(e[2]=Lt(i)),Mt.stringify(Ft(e),"rgba");var n},Mt.modifyAlpha=function(e,t){if((e=Mt.parse(e))&&null!=t)return e[3]=Dt(t),Mt.stringify(e,"rgba")},Mt.stringify=function(e,t){if(e&&e.length){var r=e[0]+","+e[1]+","+e[2];return"rgba"!==t&&"hsva"!==t&&"hsla"!==t||(r+=","+e[3]),t+"("+r+")"}};var Gt=Mt.parseToFloat,Ut={};function Ht(e){var t=Object.keys(e);t.sort();for(var r=[],i=0;i=0},getEnabledUniforms:function(){return this._enabledUniforms},getTextureUniforms:function(){return this._textureUniforms},set:function(e,t){if("object"==typeof e)for(var r in e){var i=e[r];this.setUniform(r,i)}else this.setUniform(e,t)},get:function(e){var t=this.uniforms[e];if(t)return t.value},attachShader:function(e,t){var r=this.uniforms;this.uniforms=e.createUniforms(),this.shader=e;var i=this.uniforms;this._enabledUniforms=Object.keys(i),this._enabledUniforms.sort(),this._textureUniforms=this._enabledUniforms.filter(function(e){var t=this.uniforms[e].type;return"t"===t||"tv"===t},this);var n=this.vertexDefines,a=this.fragmentDefines;if(this.vertexDefines=ye.clone(e.vertexDefines),this.fragmentDefines=ye.clone(e.fragmentDefines),t){for(var o in r)i[o]&&(i[o].value=r[o].value);ye.defaults(this.vertexDefines,n),ye.defaults(this.fragmentDefines,a)}var s={};for(var l in e.textures)s[l]={shaderType:e.textures[l].shaderType,type:e.textures[l].type,enabled:!(!t||!this._textureStatus[l])&&this._textureStatus[l].enabled};this._textureStatus=s,this._programKey=""},clone:function(){var e=new this.constructor({name:this.name,shader:this.shader});for(var t in this.uniforms)e.uniforms[t].value=this.uniforms[t].value;return e.depthTest=this.depthTest,e.depthMask=this.depthMask,e.transparent=this.transparent,e.blend=this.blend,e.vertexDefines=ye.clone(this.vertexDefines),e.fragmentDefines=ye.clone(this.fragmentDefines),e.enableTexture(this.getEnabledTextures()),e.precision=this.precision,e},define:function(e,t,r){var i=this.vertexDefines,n=this.fragmentDefines;"vertex"!==e&&"fragment"!==e&&"both"!==e&&arguments.length<3&&(r=t,t=e,e="both"),r=null!=r?r:null,"vertex"!==e&&"both"!==e||i[t]!==r&&(i[t]=r,this._programKey=""),"fragment"!==e&&"both"!==e||n[t]!==r&&(n[t]=r,"both"!==e&&(this._programKey=""))},undefine:function(e,t){"vertex"!==e&&"fragment"!==e&&"both"!==e&&arguments.length<2&&(t=e,e="both"),"vertex"!==e&&"both"!==e||this.isDefined("vertex",t)&&(delete this.vertexDefines[t],this._programKey=""),"fragment"!==e&&"both"!==e||this.isDefined("fragment",t)&&(delete this.fragmentDefines[t],"both"!==e&&(this._programKey=""))},isDefined:function(e,t){switch(e){case"vertex":return void 0!==this.vertexDefines[t];case"fragment":return void 0!==this.fragmentDefines[t]}},getDefine:function(e,t){switch(e){case"vertex":return this.vertexDefines[t];case"fragment":return this.fragmentDefines[t]}},enableTexture:function(e){if(Array.isArray(e))for(var t=0;t0&&(n=1/Math.sqrt(n),e[0]=t[0]*n,e[1]=t[1]*n),e},qt.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]},qt.cross=function(e,t,r){var i=t[0]*r[1]-t[1]*r[0];return e[0]=e[1]=0,e[2]=i,e},qt.lerp=function(e,t,r,i){var n=t[0],a=t[1];return e[0]=n+i*(r[0]-n),e[1]=a+i*(r[1]-a),e},qt.random=function(e,t){t=t||1;var r=2*GLMAT_RANDOM()*Math.PI;return e[0]=Math.cos(r)*t,e[1]=Math.sin(r)*t,e},qt.transformMat2=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[2]*n,e[1]=r[1]*i+r[3]*n,e},qt.transformMat2d=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[2]*n+r[4],e[1]=r[1]*i+r[3]*n+r[5],e},qt.transformMat3=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[3]*n+r[6],e[1]=r[1]*i+r[4]*n+r[7],e},qt.transformMat4=function(e,t,r){var i=t[0],n=t[1];return e[0]=r[0]*i+r[4]*n+r[12],e[1]=r[1]*i+r[5]*n+r[13],e},qt.forEach=(Vt=qt.create(),function(e,t,r,i,n,a){var o,s;for(t||(t=2),r||(r=0),s=i?Math.min(i*t+r,e.length):e.length,o=r;o0&&i.push("#define "+n.toUpperCase()+"_COUNT "+a)}if(r)for(var o=0;ol.getMaxJointNumber()&&(d.USE_SKIN_MATRICES_TEXTURE=null),c+="\n"+ir(d)+"\n"}a&&(c+="\n#define INSTANCING\n");var f=c+ir(t.vertexDefines,s,u),p=c+ir(t.fragmentDefines,s,u),m=f+"\n"+t.shader.vertex,g=["OES_standard_derivatives","EXT_shader_texture_lod"].filter(function(e){return null!=l.getGLExtension(e)});g.indexOf("EXT_shader_texture_lod")>=0&&(p+="\n#define SUPPORT_TEXTURE_LOD"),g.indexOf("OES_standard_derivatives")>=0&&(p+="\n#define SUPPORT_STANDARD_DERIVATIVES");var _,v,y=function(e){for(var t=[],r=0;r=0){if(1!==s&&4!==s){vr();break}s=2,h=[]}else if(1!==s)if(4!==s)u(c),s=0;else{var d=c;cr.indexOf(d)>=0||dr.indexOf(d)>=0||fr.indexOf(d)>=0?l[o].semantic=d:"ignore"===d||"unconfigurable"===d?l[o].ignore=!0:l[o].value="bool"===e?"true"===d:parseFloat(d)}else l[o].value="bool"===e?"true"===c:parseFloat(c),h=null;else{if(2!==s){vr();break}if(!(h instanceof Array)){vr();break}h.push(+i[++a])}else l[o].value=new bt.Float32Array(h),h=null,s=5;else if(2===s){if(!(h instanceof Array)){vr();break}h.push(+i[++a])}else s=5;else s=4;else{if(0!==s&&3!==s){vr();break}s=1}}return l}function xr(e,t){"object"==typeof e&&(t=e.fragment,e=e.vertex),e=_r(e),t=_r(t),this._shaderID=function(e,t){var r="vertex:"+e+"fragment:"+t;if(mr[r])return mr[r];var i=ye.genGUID();return mr[r]=i,gr[i]={vertex:e,fragment:t},i}(e,t),this._vertexCode=xr.parseImport(e),this._fragmentCode=xr.parseImport(t),this.attributeSemantics={},this.matrixSemantics={},this.uniformSemantics={},this.matrixSemanticKeys=[],this.uniformTemplates={},this.attributes={},this.textures={},this.vertexDefines={},this.fragmentDefines={},this._parseAttributes(),this._parseUniforms(),this._parseDefines()}xr.prototype={constructor:xr,createUniforms:function(){var e={};for(var t in this.uniformTemplates){var r=this.uniformTemplates[t];e[t]={type:r.type,value:r.value()}}return e},_parseImport:function(){this._vertexCode=xr.parseImport(this.vertex),this._fragmentCode=xr.parseImport(this.fragment)},_addSemanticUniform:function(e,t,r){if(cr.indexOf(r)>=0)this.attributeSemantics[r]={symbol:e,type:t};else if(fr.indexOf(r)>=0){var i=!1,n=r;r.match(/TRANSPOSE$/)&&(i=!0,n=r.slice(0,-9)),this.matrixSemantics[r]={symbol:e,type:t,isTranspose:i,semanticNoTranspose:n}}else dr.indexOf(r)>=0&&(this.uniformSemantics[r]={symbol:e,type:t})},_addMaterialUniform:function(e,t,r,i,n,a){a[e]={type:r,value:n?ur.array:i||ur[t],semantic:null}},_parseUniforms:function(){var e={},t=this,r="vertex";function i(e){return null!=e?function(){return e}:null}function n(n,a,o){var s=yr(a,o),l=[];for(var h in s){var u=s[h],c=u.semantic,d=h,f=lr[a],p=i(s[h].value);s[h].isArray&&(d+="["+s[h].arraySize+"]",f+="v"),l.push(d),t._uniformList.push(h),u.ignore||("sampler2D"!==a&&"samplerCube"!==a||(t.textures[h]={shaderType:r,type:a}),c?t._addSemanticUniform(h,f,c):t._addMaterialUniform(h,a,f,p,s[h].isArray,e))}return l.length>0?"uniform "+a+" "+l.join(",")+";\n":""}this._uniformList=[],this._vertexCode=this._vertexCode.replace(ar,n),r="fragment",this._fragmentCode=this._fragmentCode.replace(ar,n),t.matrixSemanticKeys=Object.keys(this.matrixSemantics),this.uniformTemplates=e},_parseAttributes:function(){var e={},t=this;this._vertexCode=this._vertexCode.replace(or,function(r,i,n){var a=yr(i,n),o=pr[i]||1,s=[];for(var l in a){var h=a[l].semantic;if(e[l]={type:"float",size:o,semantic:h||null},h){if(cr.indexOf(h)<0)throw new Error('Unkown semantic "'+h+'"');t.attributeSemantics[h]={symbol:l,type:i}}s.push(l)}return"attribute "+i+" "+s.join(",")+";\n"}),this.attributes=e},_parseDefines:function(){var e=this,t="vertex";function r(r,i,n){var a="vertex"===t?e.vertexDefines:e.fragmentDefines;return a[i]||(a[i]="false"!==n&&("true"===n||(n?isNaN(parseFloat(n))?n.trim():parseFloat(n):null))),""}this._vertexCode=this._vertexCode.replace(sr,r),t="fragment",this._fragmentCode=this._fragmentCode.replace(sr,r)},clone:function(){var e=gr[this._shaderID];return new xr(e.vertex,e.fragment)}},Object.defineProperty&&(Object.defineProperty(xr.prototype,"shaderID",{get:function(){return this._shaderID}}),Object.defineProperty(xr.prototype,"vertex",{get:function(){return this._vertexCode}}),Object.defineProperty(xr.prototype,"fragment",{get:function(){return this._fragmentCode}}),Object.defineProperty(xr.prototype,"uniforms",{get:function(){return this._uniformList}}));var br=/(@import)\s*([0-9a-zA-Z_\-\.]*)/g;xr.parseImport=function(e){return e=e.replace(br,function(e,t,r){return(e=xr.source(r))?xr.parseImport(e):(console.error('Shader chunk "'+r+'" not existed in library'),"")})};var Tr=/(@export)\s*([0-9a-zA-Z_\-\.]*)\s*\n([\s\S]*?)@end/g;xr.import=function(e){e.replace(Tr,function(e,t,r,i){if(i=i.replace(/(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+\x24)/g,"")){for(var n,a=r.split("."),o=xr.codes,s=0;s0&&(a=1/Math.sqrt(a),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a),e},Mr.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},Mr.cross=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[0],s=r[1],l=r[2];return e[0]=n*l-a*s,e[1]=a*o-i*l,e[2]=i*s-n*o,e},Mr.lerp=function(e,t,r,i){var n=t[0],a=t[1],o=t[2];return e[0]=n+i*(r[0]-n),e[1]=a+i*(r[1]-a),e[2]=o+i*(r[2]-o),e},Mr.random=function(e,t){t=t||1;var r=2*Xt()*Math.PI,i=2*Xt()-1,n=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(r)*n,e[1]=Math.sin(r)*n,e[2]=i*t,e},Mr.transformMat4=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[3]*i+r[7]*n+r[11]*a+r[15];return o=o||1,e[0]=(r[0]*i+r[4]*n+r[8]*a+r[12])/o,e[1]=(r[1]*i+r[5]*n+r[9]*a+r[13])/o,e[2]=(r[2]*i+r[6]*n+r[10]*a+r[14])/o,e},Mr.transformMat3=function(e,t,r){var i=t[0],n=t[1],a=t[2];return e[0]=i*r[0]+n*r[3]+a*r[6],e[1]=i*r[1]+n*r[4]+a*r[7],e[2]=i*r[2]+n*r[5]+a*r[8],e},Mr.transformQuat=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[0],s=r[1],l=r[2],h=r[3],u=h*i+s*a-l*n,c=h*n+l*i-o*a,d=h*a+o*n-s*i,f=-o*i-s*n-l*a;return e[0]=u*h+f*-o+c*-l-d*-s,e[1]=c*h+f*-s+d*-o-u*-l,e[2]=d*h+f*-l+u*-s-c*-o,e},Mr.rotateX=function(e,t,r,i){var n=[],a=[];return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],a[0]=n[0],a[1]=n[1]*Math.cos(i)-n[2]*Math.sin(i),a[2]=n[1]*Math.sin(i)+n[2]*Math.cos(i),e[0]=a[0]+r[0],e[1]=a[1]+r[1],e[2]=a[2]+r[2],e},Mr.rotateY=function(e,t,r,i){var n=[],a=[];return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],a[0]=n[2]*Math.sin(i)+n[0]*Math.cos(i),a[1]=n[1],a[2]=n[2]*Math.cos(i)-n[0]*Math.sin(i),e[0]=a[0]+r[0],e[1]=a[1]+r[1],e[2]=a[2]+r[2],e},Mr.rotateZ=function(e,t,r,i){var n=[],a=[];return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],a[0]=n[0]*Math.cos(i)-n[1]*Math.sin(i),a[1]=n[0]*Math.sin(i)+n[1]*Math.cos(i),a[2]=n[2],e[0]=a[0]+r[0],e[1]=a[1]+r[1],e[2]=a[2]+r[2],e},Mr.forEach=function(){var e=Mr.create();return function(t,r,i,n,a,o){var s,l;for(r||(r=3),i||(i=0),l=n?Math.min(n*r+i,t.length):t.length,s=i;s1?0:Math.acos(n)},xr.import(wr);var Ar=Sr.create,Er={};function Dr(e){return e.material}function Cr(e,t,r){return t.uniforms[r].value}function Lr(e,t,r,i){return r!==i}function Pr(e){return!0}function Or(){}var Nr={float:Ze,byte:Ve,ubyte:ke,short:We,ushort:je};function Rr(e,t,r){this.availableAttributes=e,this.availableAttributeSymbols=t,this.indicesBuffer=r,this.vao=null}function Ir(e){var t,r;this.bind=function(e){t||((t=bt.createCanvas()).width=t.height=1,t.getContext("2d"));var i=e.gl,n=!r;n&&(r=i.createTexture()),i.bindTexture(i.TEXTURE_2D,r),n&&i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,t)},this.unbind=function(e){e.gl.bindTexture(e.gl.TEXTURE_2D,null)},this.isRenderable=function(){return!0}}var Br=xe.extend(function(){return{canvas:null,_width:100,_height:100,devicePixelRatio:"undefined"!=typeof window&&window.devicePixelRatio||1,clearColor:[0,0,0,0],clearBit:17664,alpha:!0,depth:!0,stencil:!1,antialias:!0,premultipliedAlpha:!0,preserveDrawingBuffer:!1,throwError:!0,gl:null,viewport:{},maxJointNumber:20,__currentFrameBuffer:null,_viewportStack:[],_clearStack:[],_sceneRendering:null}},function(){this.canvas||(this.canvas=bt.createCanvas());var e=this.canvas;try{var t={alpha:this.alpha,depth:this.depth,stencil:this.stencil,antialias:this.antialias,premultipliedAlpha:this.premultipliedAlpha,preserveDrawingBuffer:this.preserveDrawingBuffer};if(this.gl=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),!this.gl)throw new Error;this._glinfo=new we(this.gl),this.gl.targetRenderer&&console.error("Already created a renderer"),this.gl.targetRenderer=this,this.resize()}catch(r){throw"Error creating WebGL Context "+r}this._programMgr=new nr(this),this._placeholderTexture=new Ir},{resize:function(e,t){var r=this.canvas,i=this.devicePixelRatio;null!=e?(r.style&&(r.style.width=e+"px",r.style.height=t+"px"),r.width=e*i,r.height=t*i,this._width=e,this._height=t):(this._width=r.width/i,this._height=r.height/i),this.setViewport(0,0,this._width,this._height)},getWidth:function(){return this._width},getHeight:function(){return this._height},getViewportAspect:function(){var e=this.viewport;return e.width/e.height},setDevicePixelRatio:function(e){this.devicePixelRatio=e,this.resize(this._width,this._height)},getDevicePixelRatio:function(){return this.devicePixelRatio},getGLExtension:function(e){return this._glinfo.getExtension(e)},getGLParameter:function(e){return this._glinfo.getParameter(e)},setViewport:function(e,t,r,i,n){if("object"==typeof e){var a=e;e=a.x,t=a.y,r=a.width,i=a.height,n=a.devicePixelRatio}n=n||this.devicePixelRatio,this.gl.viewport(e*n,t*n,r*n,i*n),this.viewport={x:e,y:t,width:r,height:i,devicePixelRatio:n}},saveViewport:function(){this._viewportStack.push(this.viewport)},restoreViewport:function(){this._viewportStack.length>0&&this.setViewport(this._viewportStack.pop())},saveClear:function(){this._clearStack.push({clearBit:this.clearBit,clearColor:this.clearColor})},restoreClear:function(){if(this._clearStack.length>0){var e=this._clearStack.pop();this.clearColor=e.clearColor,this.clearBit=e.clearBit}},bindSceneRendering:function(e){this._sceneRendering=e},render:function(e,t,r,i){var n=this.gl,a=this.clearColor;if(this.clearBit){n.colorMask(!0,!0,!0,!0),n.depthMask(!0);var o=this.viewport,s=!1,l=o.devicePixelRatio;(o.width!==this._width||o.height!==this._height||l&&l!==this.devicePixelRatio||o.x||o.y)&&(s=!0,n.enable(n.SCISSOR_TEST),n.scissor(o.x*l,o.y*l,o.width*l,o.height*l)),n.clearColor(a[0],a[1],a[2],a[3]),n.clear(this.clearBit),s&&n.disable(n.SCISSOR_TEST)}if(r||e.update(!1),e.updateLights(),t=t||e.getMainCamera()){t.update();var h=e.updateRenderList(t,!0);this._sceneRendering=e;var u=h.opaque,c=h.transparent,d=e.material;e.trigger("beforerender",this,e,t,h),i?(this.renderPreZ(u,e,t),n.depthFunc(n.LEQUAL)):n.depthFunc(n.LESS);for(var f=Ar(),p=Mr.create(),m=0;m0){var s=e[n-1],l=s.joints?s.joints.length:0;if((a.joints?a.joints.length:0)===l&&a.material===s.material&&a.lightGroup===s.lightGroup){a.__program=s.__program;continue}}var h=this._programMgr.getProgram(a,o,t);this.validateProgram(h),a.__program=h}},renderPass:function(e,t,r){this.trigger("beforerenderpass",this,e,t,r),(r=r||{}).getMaterial=r.getMaterial||Dr,r.getUniform=r.getUniform||Cr,r.isMaterialChanged=r.isMaterialChanged||Lr,r.beforeRender=r.beforeRender||Or,r.afterRender=r.afterRender||Or;var i=r.ifRender||Pr;this.updatePrograms(e,this._sceneRendering,r),r.sortCompare&&e.sort(r.sortCompare);var n=this.viewport,a=n.devicePixelRatio,o=[n.x*a,n.y*a,n.width*a,n.height*a],s=this.devicePixelRatio,l=this.__currentFrameBuffer?[this.__currentFrameBuffer.getTextureWidth(),this.__currentFrameBuffer.getTextureHeight()]:[this._width*s,this._height*s],h=[o[2],o[3]],u=Date.now();t?(Sr.copy(zr.VIEW,t.viewMatrix.array),Sr.copy(zr.PROJECTION,t.projectionMatrix.array),Sr.copy(zr.VIEWINVERSE,t.worldTransform.array)):(Sr.identity(zr.VIEW),Sr.identity(zr.PROJECTION),Sr.identity(zr.VIEWINVERSE)),Sr.multiply(zr.VIEWPROJECTION,zr.PROJECTION,zr.VIEW),Sr.invert(zr.PROJECTIONINVERSE,zr.PROJECTION),Sr.invert(zr.VIEWPROJECTIONINVERSE,zr.VIEWPROJECTION);for(var c,d,f,p,m,g,_,v,y,x,b,T,w=this.gl,S=this._sceneRendering,M=0;Mthis.getMaxJointNumber()){var a=n.getSubSkinMatricesTexture(e.__uid__,e.joints);t.useTextureSlot(this,a,r),t.setUniform(i,"1i","skinMatricesTexture",r),t.setUniform(i,"1f","skinMatricesTextureSize",a.width)}else{var o=n.getSubSkinMatrices(e.__uid__,e.joints);t.setUniformOfSemantic(i,"SKIN_MATRIX",o)}},_renderObject:function(e,t,r){var i=this.gl,n=e.geometry,a=e.mode;null==a&&(a=4);var o=null,s=e.isInstancedMesh&&e.isInstancedMesh();if(!s||(o=this.getGLExtension("ANGLE_instanced_arrays"))){var l;if(s&&(l=this._bindInstancedAttributes(e,r,o)),t.indicesBuffer){var h=this.getGLExtension("OES_element_index_uint")&&n.indices instanceof Uint32Array?i.UNSIGNED_INT:i.UNSIGNED_SHORT;s?o.drawElementsInstancedANGLE(a,t.indicesBuffer.count,h,0,e.getInstanceCount()):i.drawElements(a,t.indicesBuffer.count,h,0)}else s?o.drawArraysInstancedANGLE(a,0,n.vertexCount,e.getInstanceCount()):i.drawArrays(a,0,n.vertexCount);if(s)for(var u=0;ur?r:e}Fr.add=function(e,t,r){return Mr.add(e.array,t.array,r.array),e._dirty=!0,e},Fr.set=function(e,t,r,i){Mr.set(e.array,t,r,i),e._dirty=!0},Fr.copy=function(e,t){return Mr.copy(e.array,t.array),e._dirty=!0,e},Fr.cross=function(e,t,r){return Mr.cross(e.array,t.array,r.array),e._dirty=!0,e},Fr.dist=function(e,t){return Mr.distance(e.array,t.array)},Fr.distance=Fr.dist,Fr.div=function(e,t,r){return Mr.divide(e.array,t.array,r.array),e._dirty=!0,e},Fr.divide=Fr.div,Fr.dot=function(e,t){return Mr.dot(e.array,t.array)},Fr.len=function(e){return Mr.length(e.array)},Fr.lerp=function(e,t,r,i){return Mr.lerp(e.array,t.array,r.array,i),e._dirty=!0,e},Fr.min=function(e,t,r){return Mr.min(e.array,t.array,r.array),e._dirty=!0,e},Fr.max=function(e,t,r){return Mr.max(e.array,t.array,r.array),e._dirty=!0,e},Fr.mul=function(e,t,r){return Mr.multiply(e.array,t.array,r.array),e._dirty=!0,e},Fr.multiply=Fr.mul,Fr.negate=function(e,t){return Mr.negate(e.array,t.array),e._dirty=!0,e},Fr.normalize=function(e,t){return Mr.normalize(e.array,t.array),e._dirty=!0,e},Fr.random=function(e,t){return Mr.random(e.array,t),e._dirty=!0,e},Fr.scale=function(e,t,r){return Mr.scale(e.array,t.array,r),e._dirty=!0,e},Fr.scaleAndAdd=function(e,t,r,i){return Mr.scaleAndAdd(e.array,t.array,r.array,i),e._dirty=!0,e},Fr.sqrDist=function(e,t){return Mr.sqrDist(e.array,t.array)},Fr.squaredDistance=Fr.sqrDist,Fr.sqrLen=function(e){return Mr.sqrLen(e.array)},Fr.squaredLength=Fr.sqrLen,Fr.sub=function(e,t,r){return Mr.subtract(e.array,t.array,r.array),e._dirty=!0,e},Fr.subtract=Fr.sub,Fr.transformMat3=function(e,t,r){return Mr.transformMat3(e.array,t.array,r.array),e._dirty=!0,e},Fr.transformMat4=function(e,t,r){return Mr.transformMat4(e.array,t.array,r.array),e._dirty=!0,e},Fr.transformQuat=function(e,t,r){return Mr.transformQuat(e.array,t.array,r.array),e._dirty=!0,e};var Vr=Math.atan2,kr=Math.asin,Wr=Math.abs;Fr.eulerFromQuat=function(e,t,r){e._dirty=!0,t=t.array;var i=e.array,n=t[0],a=t[1],o=t[2],s=t[3],l=n*n,h=a*a,u=o*o,c=s*s;switch(r=(r||"XYZ").toUpperCase()){case"XYZ":i[0]=Vr(2*(n*s-a*o),c-l-h+u),i[1]=kr(Hr(2*(n*o+a*s),-1,1)),i[2]=Vr(2*(o*s-n*a),c+l-h-u);break;case"YXZ":i[0]=kr(Hr(2*(n*s-a*o),-1,1)),i[1]=Vr(2*(n*o+a*s),c-l-h+u),i[2]=Vr(2*(n*a+o*s),c-l+h-u);break;case"ZXY":i[0]=kr(Hr(2*(n*s+a*o),-1,1)),i[1]=Vr(2*(a*s-o*n),c-l-h+u),i[2]=Vr(2*(o*s-n*a),c-l+h-u);break;case"ZYX":i[0]=Vr(2*(n*s+o*a),c-l-h+u),i[1]=kr(Hr(2*(a*s-n*o),-1,1)),i[2]=Vr(2*(n*a+o*s),c+l-h-u);break;case"YZX":i[0]=Vr(2*(n*s-o*a),c-l+h-u),i[1]=Vr(2*(a*s-n*o),c+l-h-u),i[2]=kr(Hr(2*(n*a+o*s),-1,1));break;case"XZY":i[0]=Vr(2*(n*s+a*o),c-l+h-u),i[1]=Vr(2*(n*o+a*s),c+l-h-u),i[2]=kr(Hr(2*(o*s-n*a),-1,1));break;default:console.warn("Unkown order: "+r)}return e},Fr.eulerFromMat3=function(e,t,r){var i=t.array,n=i[0],a=i[3],o=i[6],s=i[1],l=i[4],h=i[7],u=i[2],c=i[5],d=i[8],f=e.array;switch(r=(r||"XYZ").toUpperCase()){case"XYZ":f[1]=kr(Hr(o,-1,1)),Wr(o)<.99999?(f[0]=Vr(-h,d),f[2]=Vr(-a,n)):(f[0]=Vr(c,l),f[2]=0);break;case"YXZ":f[0]=kr(-Hr(h,-1,1)),Wr(h)<.99999?(f[1]=Vr(o,d),f[2]=Vr(s,l)):(f[1]=Vr(-u,n),f[2]=0);break;case"ZXY":f[0]=kr(Hr(c,-1,1)),Wr(c)<.99999?(f[1]=Vr(-u,d),f[2]=Vr(-a,l)):(f[1]=0,f[2]=Vr(s,n));break;case"ZYX":f[1]=kr(-Hr(u,-1,1)),Wr(u)<.99999?(f[0]=Vr(c,d),f[2]=Vr(s,n)):(f[0]=0,f[2]=Vr(-a,l));break;case"YZX":f[2]=kr(Hr(s,-1,1)),Wr(s)<.99999?(f[0]=Vr(-h,l),f[1]=Vr(-u,n)):(f[0]=0,f[1]=Vr(o,d));break;case"XZY":f[2]=kr(-Hr(a,-1,1)),Wr(a)<.99999?(f[0]=Vr(c,l),f[1]=Vr(o,n)):(f[0]=Vr(-h,d),f[1]=0);break;default:console.warn("Unkown order: "+r)}return e._dirty=!0,e},Object.defineProperties(Fr,{POSITIVE_X:{get:function(){return new Fr(1,0,0)}},NEGATIVE_X:{get:function(){return new Fr(-1,0,0)}},POSITIVE_Y:{get:function(){return new Fr(0,1,0)}},NEGATIVE_Y:{get:function(){return new Fr(0,-1,0)}},POSITIVE_Z:{get:function(){return new Fr(0,0,1)}},NEGATIVE_Z:{get:function(){return new Fr(0,0,-1)}},UP:{get:function(){return new Fr(0,1,0)}},ZERO:{get:function(){return new Fr}}});var jr,Xr,qr,Zr,Yr,Kr=1e-5,Qr=function(e,t){this.origin=e||new Fr,this.direction=t||new Fr};Qr.prototype={constructor:Qr,intersectPlane:function(e,t){var r=e.normal.array,i=e.distance,n=this.origin.array,a=this.direction.array,o=Mr.dot(r,a);if(0===o)return null;t||(t=new Fr);var s=(Mr.dot(r,n)-i)/o;return Mr.scaleAndAdd(t.array,n,a,-s),t._dirty=!0,t},mirrorAgainstPlane:function(e){var t=Mr.dot(e.normal.array,this.direction.array);Mr.scaleAndAdd(this.direction.array,this.direction.array,e.normal.array,2*-t),this.direction._dirty=!0},distanceToPoint:(Yr=Mr.create(),function(e){Mr.sub(Yr,e,this.origin.array);var t=Mr.dot(Yr,this.direction.array);if(t<0)return Mr.distance(this.origin.array,e);var r=Mr.lenSquared(Yr);return Math.sqrt(r-t*t)}),intersectSphere:function(){var e=Mr.create();return function(t,r,i){var n=this.origin.array,a=this.direction.array;t=t.array,Mr.sub(e,t,n);var o=Mr.dot(e,a),s=Mr.squaredLength(e)-o*o,l=r*r;if(!(s>l)){var h=Math.sqrt(l-s),u=o-h,c=o+h;return i||(i=new Fr),u<0?c<0?null:(Mr.scaleAndAdd(i.array,n,a,c),i):(Mr.scaleAndAdd(i.array,n,a,u),i)}}}(),intersectBoundingBox:function(e,t){var r,i,n,a,o,s,l=this.direction.array,h=this.origin.array,u=e.min.array,c=e.max.array,d=1/l[0],f=1/l[1],p=1/l[2];if(d>=0?(r=(u[0]-h[0])*d,i=(c[0]-h[0])*d):(i=(u[0]-h[0])*d,r=(c[0]-h[0])*d),f>=0?(n=(u[1]-h[1])*f,a=(c[1]-h[1])*f):(a=(u[1]-h[1])*f,n=(c[1]-h[1])*f),r>a||n>i)return null;if((n>r||r!=r)&&(r=n),(a=0?(o=(u[2]-h[2])*p,s=(c[2]-h[2])*p):(s=(u[2]-h[2])*p,o=(c[2]-h[2])*p),r>s||o>i)return null;if((o>r||r!=r)&&(r=o),(s=0?r:i;return t||(t=new Fr),Mr.scaleAndAdd(t.array,h,l,m),t},intersectTriangle:(jr=Mr.create(),Xr=Mr.create(),qr=Mr.create(),Zr=Mr.create(),function(e,t,r,i,n,a){var o=this.direction.array,s=this.origin.array;e=e.array,t=t.array,r=r.array,Mr.sub(jr,t,e),Mr.sub(Xr,r,e),Mr.cross(Zr,Xr,o);var l=Mr.dot(jr,Zr);if(i){if(l>-1e-5)return null}else if(l>-1e-5&&l1)return null;Mr.cross(Zr,jr,qr);var u=Mr.dot(o,Zr)/l;if(u<0||u>1||h+u>1)return null;Mr.cross(Zr,jr,Xr);var c=-Mr.dot(qr,Zr)/l;return c<0?null:(n||(n=new Fr),a&&Fr.set(a,1-h-u,h,u),Mr.scaleAndAdd(n.array,s,o,c),n)}),applyTransform:function(e){Fr.add(this.direction,this.direction,this.origin),Fr.transformMat4(this.origin,this.origin,e),Fr.transformMat4(this.direction,this.direction,e),Fr.sub(this.direction,this.direction,this.origin),Fr.normalize(this.direction,this.direction)},copy:function(e){Fr.copy(this.origin,e.origin),Fr.copy(this.direction,e.direction)},clone:function(){var e=new Qr;return e.copy(this),e}};var Jr={create:function(){var e=new jt(4);return e[0]=0,e[1]=0,e[2]=0,e[3]=0,e},clone:function(e){var t=new jt(4);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t},fromValues:function(e,t,r,i){var n=new jt(4);return n[0]=e,n[1]=t,n[2]=r,n[3]=i,n},copy:function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e},set:function(e,t,r,i,n){return e[0]=t,e[1]=r,e[2]=i,e[3]=n,e},add:function(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e},subtract:function(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e[3]=t[3]-r[3],e}};Jr.sub=Jr.subtract,Jr.multiply=function(e,t,r){return e[0]=t[0]*r[0],e[1]=t[1]*r[1],e[2]=t[2]*r[2],e[3]=t[3]*r[3],e},Jr.mul=Jr.multiply,Jr.divide=function(e,t,r){return e[0]=t[0]/r[0],e[1]=t[1]/r[1],e[2]=t[2]/r[2],e[3]=t[3]/r[3],e},Jr.div=Jr.divide,Jr.min=function(e,t,r){return e[0]=Math.min(t[0],r[0]),e[1]=Math.min(t[1],r[1]),e[2]=Math.min(t[2],r[2]),e[3]=Math.min(t[3],r[3]),e},Jr.max=function(e,t,r){return e[0]=Math.max(t[0],r[0]),e[1]=Math.max(t[1],r[1]),e[2]=Math.max(t[2],r[2]),e[3]=Math.max(t[3],r[3]),e},Jr.scale=function(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e},Jr.scaleAndAdd=function(e,t,r,i){return e[0]=t[0]+r[0]*i,e[1]=t[1]+r[1]*i,e[2]=t[2]+r[2]*i,e[3]=t[3]+r[3]*i,e},Jr.distance=function(e,t){var r=t[0]-e[0],i=t[1]-e[1],n=t[2]-e[2],a=t[3]-e[3];return Math.sqrt(r*r+i*i+n*n+a*a)},Jr.dist=Jr.distance,Jr.squaredDistance=function(e,t){var r=t[0]-e[0],i=t[1]-e[1],n=t[2]-e[2],a=t[3]-e[3];return r*r+i*i+n*n+a*a},Jr.sqrDist=Jr.squaredDistance,Jr.length=function(e){var t=e[0],r=e[1],i=e[2],n=e[3];return Math.sqrt(t*t+r*r+i*i+n*n)},Jr.len=Jr.length,Jr.squaredLength=function(e){var t=e[0],r=e[1],i=e[2],n=e[3];return t*t+r*r+i*i+n*n},Jr.sqrLen=Jr.squaredLength,Jr.negate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e},Jr.inverse=function(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e[3]=1/t[3],e},Jr.normalize=function(e,t){var r=t[0],i=t[1],n=t[2],a=t[3],o=r*r+i*i+n*n+a*a;return o>0&&(o=1/Math.sqrt(o),e[0]=t[0]*o,e[1]=t[1]*o,e[2]=t[2]*o,e[3]=t[3]*o),e},Jr.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]},Jr.lerp=function(e,t,r,i){var n=t[0],a=t[1],o=t[2],s=t[3];return e[0]=n+i*(r[0]-n),e[1]=a+i*(r[1]-a),e[2]=o+i*(r[2]-o),e[3]=s+i*(r[3]-s),e},Jr.random=function(e,t){return t=t||1,e[0]=Xt(),e[1]=Xt(),e[2]=Xt(),e[3]=Xt(),Jr.normalize(e,e),Jr.scale(e,e,t),e},Jr.transformMat4=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=t[3];return e[0]=r[0]*i+r[4]*n+r[8]*a+r[12]*o,e[1]=r[1]*i+r[5]*n+r[9]*a+r[13]*o,e[2]=r[2]*i+r[6]*n+r[10]*a+r[14]*o,e[3]=r[3]*i+r[7]*n+r[11]*a+r[15]*o,e},Jr.transformQuat=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=r[0],s=r[1],l=r[2],h=r[3],u=h*i+s*a-l*n,c=h*n+l*i-o*a,d=h*a+o*n-s*i,f=-o*i-s*n-l*a;return e[0]=u*h+f*-o+c*-l-d*-s,e[1]=c*h+f*-s+d*-o-u*-l,e[2]=d*h+f*-l+u*-s-c*-o,e},Jr.forEach=function(){var e=Jr.create();return function(t,r,i,n,a,o){var s,l;for(r||(r=4),i||(i=0),l=n?Math.min(n*r+i,t.length):t.length,s=i;s.999999?(e[0]=0,e[1]=0,e[2]=0,e[3]=1,e):(Mr.cross(ei,t,r),e[0]=ei[0],e[1]=ei[1],e[2]=ei[2],e[3]=1+i,ni.normalize(e,e))}),ni.setAxes=(ii=$r.create(),function(e,t,r,i){return ii[0]=r[0],ii[3]=r[1],ii[6]=r[2],ii[1]=i[0],ii[4]=i[1],ii[7]=i[2],ii[2]=-t[0],ii[5]=-t[1],ii[8]=-t[2],ni.normalize(e,ni.fromMat3(e,ii))}),ni.clone=Jr.clone,ni.fromValues=Jr.fromValues,ni.copy=Jr.copy,ni.set=Jr.set,ni.identity=function(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e},ni.setAxisAngle=function(e,t,r){r*=.5;var i=Math.sin(r);return e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=Math.cos(r),e},ni.add=Jr.add,ni.multiply=function(e,t,r){var i=t[0],n=t[1],a=t[2],o=t[3],s=r[0],l=r[1],h=r[2],u=r[3];return e[0]=i*u+o*s+n*h-a*l,e[1]=n*u+o*l+a*s-i*h,e[2]=a*u+o*h+i*l-n*s,e[3]=o*u-i*s-n*l-a*h,e},ni.mul=ni.multiply,ni.scale=Jr.scale,ni.rotateX=function(e,t,r){r*=.5;var i=t[0],n=t[1],a=t[2],o=t[3],s=Math.sin(r),l=Math.cos(r);return e[0]=i*l+o*s,e[1]=n*l+a*s,e[2]=a*l-n*s,e[3]=o*l-i*s,e},ni.rotateY=function(e,t,r){r*=.5;var i=t[0],n=t[1],a=t[2],o=t[3],s=Math.sin(r),l=Math.cos(r);return e[0]=i*l-a*s,e[1]=n*l+o*s,e[2]=a*l+i*s,e[3]=o*l-n*s,e},ni.rotateZ=function(e,t,r){r*=.5;var i=t[0],n=t[1],a=t[2],o=t[3],s=Math.sin(r),l=Math.cos(r);return e[0]=i*l+n*s,e[1]=n*l-i*s,e[2]=a*l+o*s,e[3]=o*l-a*s,e},ni.calculateW=function(e,t){var r=t[0],i=t[1],n=t[2];return e[0]=r,e[1]=i,e[2]=n,e[3]=Math.sqrt(Math.abs(1-r*r-i*i-n*n)),e},ni.dot=Jr.dot,ni.lerp=Jr.lerp,ni.slerp=function(e,t,r,i){var n,a,o,s,l,h=t[0],u=t[1],c=t[2],d=t[3],f=r[0],p=r[1],m=r[2],g=r[3];return(a=h*f+u*p+c*m+d*g)<0&&(a=-a,f=-f,p=-p,m=-m,g=-g),1-a>1e-6?(n=Math.acos(a),o=Math.sin(n),s=Math.sin((1-i)*n)/o,l=Math.sin(i*n)/o):(s=1-i,l=i),e[0]=s*h+l*f,e[1]=s*u+l*p,e[2]=s*c+l*m,e[3]=s*d+l*g,e},ni.invert=function(e,t){var r=t[0],i=t[1],n=t[2],a=t[3],o=r*r+i*i+n*n+a*a,s=o?1/o:0;return e[0]=-r*s,e[1]=-i*s,e[2]=-n*s,e[3]=a*s,e},ni.conjugate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e},ni.length=Jr.length,ni.len=ni.length,ni.squaredLength=Jr.squaredLength,ni.sqrLen=ni.squaredLength,ni.normalize=Jr.normalize,ni.fromMat3=function(e,t){var r,i=t[0]+t[4]+t[8];if(i>0)r=Math.sqrt(i+1),e[3]=.5*r,r=.5/r,e[0]=(t[5]-t[7])*r,e[1]=(t[6]-t[2])*r,e[2]=(t[1]-t[3])*r;else{var n=0;t[4]>t[0]&&(n=1),t[8]>t[3*n+n]&&(n=2);var a=(n+1)%3,o=(n+2)%3;r=Math.sqrt(t[3*n+n]-t[3*a+a]-t[3*o+o]+1),e[n]=.5*r,r=.5/r,e[3]=(t[3*a+o]-t[3*o+a])*r,e[a]=(t[3*a+n]+t[3*n+a])*r,e[o]=(t[3*o+n]+t[3*n+o])*r}return e};var ai,oi,si,li,hi=function(){this._axisX=new Fr,this._axisY=new Fr,this._axisZ=new Fr,this.array=Sr.create(),this._dirty=!0};hi.prototype={constructor:hi,setArray:function(e){for(var t=0;t0){var t=this.min,r=this.max,i=t.array,n=r.array;Ti(i,e[0]),Ti(n,e[0]);for(var a=1;an[0]&&(n[0]=o[0]),o[1]>n[1]&&(n[1]=o[1]),o[2]>n[2]&&(n[2]=o[2])}t._dirty=!0,r._dirty=!0}},union:function(e){var t=this.min,r=this.max;return Mr.min(t.array,t.array,e.min.array),Mr.max(r.array,r.array,e.max.array),t._dirty=!0,r._dirty=!0,this},intersection:function(e){var t=this.min,r=this.max;return Mr.max(t.array,t.array,e.min.array),Mr.min(r.array,r.array,e.max.array),t._dirty=!0,r._dirty=!0,this},intersectBoundingBox:function(e){var t=this.min.array,r=this.max.array,i=e.min.array,n=e.max.array;return!(t[0]>n[0]||t[1]>n[1]||t[2]>n[2]||r[0]=n[0]&&r[1]>=n[1]&&r[2]>=n[2]},containPoint:function(e){var t=this.min.array,r=this.max.array,i=e.array;return t[0]<=i[0]&&t[1]<=i[1]&&t[2]<=i[2]&&r[0]>=i[0]&&r[1]>=i[1]&&r[2]>=i[2]},isFinite:function(){var e=this.min.array,t=this.max.array;return isFinite(e[0])&&isFinite(e[1])&&isFinite(e[2])&&isFinite(t[0])&&isFinite(t[1])&&isFinite(t[2])},applyTransform:function(e){this.transformFrom(this,e)},transformFrom:(mi=Mr.create(),gi=Mr.create(),_i=Mr.create(),vi=Mr.create(),yi=Mr.create(),xi=Mr.create(),function(e,t){var r=e.min.array,i=e.max.array,n=t.array;return mi[0]=n[0]*r[0],mi[1]=n[1]*r[0],mi[2]=n[2]*r[0],gi[0]=n[0]*i[0],gi[1]=n[1]*i[0],gi[2]=n[2]*i[0],_i[0]=n[4]*r[1],_i[1]=n[5]*r[1],_i[2]=n[6]*r[1],vi[0]=n[4]*i[1],vi[1]=n[5]*i[1],vi[2]=n[6]*i[1],yi[0]=n[8]*r[2],yi[1]=n[9]*r[2],yi[2]=n[10]*r[2],xi[0]=n[8]*i[2],xi[1]=n[9]*i[2],xi[2]=n[10]*i[2],r=this.min.array,i=this.max.array,r[0]=Math.min(mi[0],gi[0])+Math.min(_i[0],vi[0])+Math.min(yi[0],xi[0])+n[12],r[1]=Math.min(mi[1],gi[1])+Math.min(_i[1],vi[1])+Math.min(yi[1],xi[1])+n[13],r[2]=Math.min(mi[2],gi[2])+Math.min(_i[2],vi[2])+Math.min(yi[2],xi[2])+n[14],i[0]=Math.max(mi[0],gi[0])+Math.max(_i[0],vi[0])+Math.max(yi[0],xi[0])+n[12],i[1]=Math.max(mi[1],gi[1])+Math.max(_i[1],vi[1])+Math.max(yi[1],xi[1])+n[13],i[2]=Math.max(mi[2],gi[2])+Math.max(_i[2],vi[2])+Math.max(yi[2],xi[2])+n[14],this.min._dirty=!0,this.max._dirty=!0,this}),applyProjection:function(e){var t=this.min.array,r=this.max.array,i=e.array,n=t[0],a=t[1],o=t[2],s=r[0],l=r[1],h=t[2],u=r[0],c=r[1],d=r[2];if(1===i[15])t[0]=i[0]*n+i[12],t[1]=i[5]*a+i[13],r[2]=i[10]*o+i[14],r[0]=i[0]*u+i[12],r[1]=i[5]*c+i[13],t[2]=i[10]*d+i[14];else{var f=-1/o;t[0]=i[0]*n*f,t[1]=i[5]*a*f,r[2]=(i[10]*o+i[14])*f,f=-1/h,r[0]=i[0]*s*f,r[1]=i[5]*l*f,f=-1/d,t[2]=(i[10]*d+i[14])*f}return this.min._dirty=!0,this.max._dirty=!0,this},updateVertices:function(){var e=this.vertices;if(!e){e=[];for(var t=0;t<8;t++)e[t]=Mr.fromValues(0,0,0);this.vertices=e}var r=this.min.array,i=this.max.array;return bi(e[0],r[0],r[1],r[2]),bi(e[1],r[0],i[1],r[2]),bi(e[2],i[0],r[1],r[2]),bi(e[3],i[0],i[1],r[2]),bi(e[4],r[0],r[1],i[2]),bi(e[5],r[0],i[1],i[2]),bi(e[6],i[0],r[1],i[2]),bi(e[7],i[0],i[1],i[2]),this},copy:function(e){var t=this.min,r=this.max;return Ti(t.array,e.min.array),Ti(r.array,e.max.array),t._dirty=!0,r._dirty=!0,this},clone:function(){var e=new wi;return e.copy(this),e}};var Si,Mi,Ai=0,Ei=xe.extend({name:"",position:null,rotation:null,scale:null,worldTransform:null,localTransform:null,autoUpdateLocalTransform:!0,_parent:null,_scene:null,_needsUpdateWorldTransform:!0,_inIterating:!1,__depth:0},function(){this.name||(this.name=(this.type||"NODE")+"_"+Ai++),this.position||(this.position=new Fr),this.rotation||(this.rotation=new di),this.scale||(this.scale=new Fr(1,1,1)),this.worldTransform=new hi,this.localTransform=new hi,this._children=[]},{target:null,invisible:!1,isSkinnedMesh:function(){return!1},isRenderable:function(){return!1},setName:function(e){var t=this._scene;if(t){var r=t._nodeRepository;delete r[this.name],r[e]=this}this.name=e},add:function(e){var t=e._parent;if(t!==this){t&&t.remove(e),e._parent=this,this._children.push(e);var r=this._scene;r&&r!==e.scene&&e.traverse(this._addSelfToScene,this),e._needsUpdateWorldTransform=!0}},remove:function(e){var t=this._children,r=t.indexOf(e);r<0||(t.splice(r,1),e._parent=null,this._scene&&e.traverse(this._removeSelfFromScene,this))},removeAll:function(){for(var e=this._children,t=0;t0},beforeRender:function(e){},afterRender:function(e,t){},getBoundingBox:function(e,t){return t=Ei.prototype.getBoundingBox.call(this,e,t),this.geometry&&this.geometry.boundingBox&&t.union(this.geometry.boundingBox),t},clone:function(){var e=["castShadow","receiveShadow","mode","culling","cullFace","frontFace","frustumCulling","renderOrder","lineWidth","ignorePicking","ignorePreZ","ignoreGBuffer"];return function(){var t=Ei.prototype.clone.call(this);t.geometry=this.geometry,t.material=this.material;for(var r=0;r=0&&g[p]>1e-4&&(Mr.transformMat4(y,m,d[_[p]]),Mr.scaleAndAdd(v,v,y,g[p]));x.set(f,v)}}for(f=0;f>t;return e+1},dispose:function(e){var t=this._cache;t.use(e.__uid__);var r=t.get("webgl_texture");r&&e.gl.deleteTexture(r),t.deleteContext(e.__uid__)},isRenderable:function(){},isPowerOfTwo:function(){}});Object.defineProperty(zi.prototype,"width",{get:function(){return this._width},set:function(e){this._width=e}}),Object.defineProperty(zi.prototype,"height",{get:function(){return this._height},set:function(e){this._height=e}}),zi.BYTE=Ve,zi.UNSIGNED_BYTE=ke,zi.SHORT=We,zi.UNSIGNED_SHORT=je,zi.INT=Xe,zi.UNSIGNED_INT=qe,zi.FLOAT=Ze,zi.HALF_FLOAT=36193,zi.UNSIGNED_INT_24_8_WEBGL=34042,zi.DEPTH_COMPONENT=Ye,zi.DEPTH_STENCIL=pt,zi.ALPHA=Ke,zi.RGB=Qe,zi.RGBA=Je,zi.LUMINANCE=$e,zi.LUMINANCE_ALPHA=et,zi.SRGB=35904,zi.SRGB_ALPHA=35906,zi.COMPRESSED_RGB_S3TC_DXT1_EXT=33776,zi.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777,zi.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778,zi.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779,zi.NEAREST=tt,zi.LINEAR=rt,zi.NEAREST_MIPMAP_NEAREST=it,zi.LINEAR_MIPMAP_NEAREST=nt,zi.NEAREST_MIPMAP_LINEAR=at,zi.LINEAR_MIPMAP_LINEAR=ot,zi.REPEAT=ht,zi.CLAMP_TO_EDGE=ut,zi.MIRRORED_REPEAT=ct;var Fi=Di.extend({skeleton:null,joints:null},function(){this.joints||(this.joints=[])},{offsetMatrix:null,isInstancedMesh:function(){return!1},isSkinnedMesh:function(){return!!(this.skeleton&&this.joints&&this.joints.length>0)},clone:function(){var e=Di.prototype.clone.call(this);return e.skeleton=this.skeleton,this.joints&&(e.joints=this.joints.slice()),e}});Fi.POINTS=Ee,Fi.LINES=De,Fi.LINE_LOOP=Ce,Fi.LINE_STRIP=Le,Fi.TRIANGLES=Pe,Fi.TRIANGLE_STRIP=Oe,Fi.TRIANGLE_FAN=Ne,Fi.BACK=Fe,Fi.FRONT=ze,Fi.FRONT_AND_BACK=Ge,Fi.CW=Ue,Fi.CCW=He;var Gi={isPowerOfTwo:function(e){return!(e&e-1)},nextPowerOfTwo:function(e){return e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e},nearestPowerOfTwo:function(e){return Math.pow(2,Math.round(Math.log(e)/Math.LN2))}},Ui=Gi.isPowerOfTwo;function Hi(e){return Math.pow(2,Math.round(Math.log(e)/Math.LN2))}var Vi=zi.extend(function(){return{image:null,pixels:null,mipmaps:[],convertToPOT:!1}},{textureType:"texture2D",update:function(e){var t=e.gl;t.bindTexture(t.TEXTURE_2D,this._cache.get("webgl_texture")),this.updateCommon(e);var r=this.format,i=this.type,n=!(!this.convertToPOT||this.mipmaps.length||!this.image||this.wrapS!==zi.REPEAT&&this.wrapT!==zi.REPEAT||!this.NPOT);t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,n?this.wrapS:this.getAvailableWrapS()),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,n?this.wrapT:this.getAvailableWrapT()),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,n?this.magFilter:this.getAvailableMagFilter()),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,n?this.minFilter:this.getAvailableMinFilter());var a=e.getGLExtension("EXT_texture_filter_anisotropic");(a&&this.anisotropic>1&&t.texParameterf(t.TEXTURE_2D,a.TEXTURE_MAX_ANISOTROPY_EXT,this.anisotropic),36193===i)&&(e.getGLExtension("OES_texture_half_float")||(i=Ze));if(this.mipmaps.length)for(var o=this.width,s=this.height,l=0;l=zi.COMPRESSED_RGB_S3TC_DXT1_EXT?e.compressedTexImage2D(e.TEXTURE_2D,r,a,i,n,0,t.pixels):e.texImage2D(e.TEXTURE_2D,r,a,i,n,0,a,o,t.pixels)},generateMipmap:function(e){var t=e.gl;this.useMipmap&&!this.NPOT&&(t.bindTexture(t.TEXTURE_2D,this._cache.get("webgl_texture")),t.generateMipmap(t.TEXTURE_2D))},isPowerOfTwo:function(){return Ui(this.width)&&Ui(this.height)},isRenderable:function(){return this.image?this.image.width>0&&this.image.height>0:!(!this.width||!this.height)},bind:function(e){e.gl.bindTexture(e.gl.TEXTURE_2D,this.getWebGLTexture(e))},unbind:function(e){e.gl.bindTexture(e.gl.TEXTURE_2D,null)},load:function(e,t){var r=bt.createImage();t&&(r.crossOrigin=t);var i=this;return r.onload=function(){i.dirty(),i.trigger("success",i)},r.onerror=function(){i.trigger("error",i)},r.src=e,this.image=r,this}});function ki(e){return{byte:bt.Int8Array,ubyte:bt.Uint8Array,short:bt.Int16Array,ushort:bt.Uint16Array}[e]||bt.Float32Array}function Wi(e){return"attr_"+e}function ji(e,t,r,i){switch(this.name=e,this.type=t,this.size=r,this.semantic=i||"",this.value=null,r){case 1:this.get=function(e){return this.value[e]},this.set=function(e,t){this.value[e]=t},this.copy=function(e,t){this.value[e]=this.value[e]};break;case 2:this.get=function(e,t){var r=this.value;return t[0]=r[2*e],t[1]=r[2*e+1],t},this.set=function(e,t){var r=this.value;r[2*e]=t[0],r[2*e+1]=t[1]},this.copy=function(e,t){var r=this.value;t*=2,r[e*=2]=r[t],r[e+1]=r[t+1]};break;case 3:this.get=function(e,t){var r=3*e,i=this.value;return t[0]=i[r],t[1]=i[r+1],t[2]=i[r+2],t},this.set=function(e,t){var r=3*e,i=this.value;i[r]=t[0],i[r+1]=t[1],i[r+2]=t[2]},this.copy=function(e,t){var r=this.value;t*=3,r[e*=3]=r[t],r[e+1]=r[t+1],r[e+2]=r[t+2]};break;case 4:this.get=function(e,t){var r=this.value,i=4*e;return t[0]=r[i],t[1]=r[i+1],t[2]=r[i+2],t[3]=r[i+3],t},this.set=function(e,t){var r=this.value,i=4*e;r[i]=t[0],r[i+1]=t[1],r[i+2]=t[2],r[i+3]=t[3]},this.copy=function(e,t){var r=this.value;t*=4,r[e*=4]=r[t],r[e+1]=r[t+1],r[e+2]=r[t+2],r[e+3]=r[t+3]}}}function Xi(e,t,r,i,n){this.name=e,this.type=t,this.buffer=r,this.size=i,this.semantic=n,this.symbol="",this.needsRemove=!1}function qi(e){this.buffer=e,this.count=0}Object.defineProperty(Vi.prototype,"width",{get:function(){return this.image?this.image.width:this._width},set:function(e){this.image?console.warn("Texture from image can't set width"):(this._width!==e&&this.dirty(),this._width=e)}}),Object.defineProperty(Vi.prototype,"height",{get:function(){return this.image?this.image.height:this._height},set:function(e){this.image?console.warn("Texture from image can't set height"):(this._height!==e&&this.dirty(),this._height=e)}}),ji.prototype.init=function(e){if(!this.value||this.value.length!==e*this.size){var t=ki(this.type);this.value=new t(e*this.size)}},ji.prototype.fromArray=function(e){var t,r=ki(this.type);if(e[0]&&e[0].length){var i=0,n=this.size;t=new r(e.length*n);for(var a=0;a=0){t||(t=[]);var r=this.indices;return t[0]=r[3*e],t[1]=r[3*e+1],t[2]=r[3*e+2],t}},setTriangleIndices:function(e,t){var r=this.indices;r[3*e]=t[0],r[3*e+1]=t[1],r[3*e+2]=t[2]},isUseIndices:function(){return!!this.indices},initIndicesFromArray:function(e){var t,r=this.vertexCount>65535?bt.Uint32Array:bt.Uint16Array;if(e[0]&&e[0].length){var i=0;t=new r(3*e.length);for(var n=0;n=0&&(t.splice(r,1),delete this.attributes[e],!0)},getAttribute:function(e){return this.attributes[e]},getEnabledAttributes:function(){var e=this._enabledAttributes,t=this._attributeList;if(e)return e;for(var r=[],i=this.vertexCount,n=0;na[0]&&(a[0]=s),l>a[1]&&(a[1]=l),h>a[2]&&(a[2]=h)}r._dirty=!0,i._dirty=!0}},generateVertexNormals:function(){if(this.vertexCount){var e=this.indices,t=this.attributes,r=t.position.value,i=t.normal.value;if(i&&i.length===r.length)for(var n=0;n65535&&(this.indices=new bt.Uint32Array(this.indices));for(var e=this.attributes,t=this.indices,r=this.getEnabledAttributes(),i={},n=0;nthis.distance,n=1;n<8;n++)if(Mr.dot(t[n].array,r)>this.distance!=i)return!0},intersectLine:(un=Mr.create(),function(e,t,r){var i=this.distanceToPoint(e),n=this.distanceToPoint(t);if(i>0&&n>0||i<0&&n<0)return null;var a=this.normal.array,o=this.distance,s=e.array;Mr.sub(un,t.array,e.array),Mr.normalize(un,un);var l=Mr.dot(a,un);if(0===l)return null;r||(r=new Fr);var h=(Mr.dot(a,s)-o)/l;return Mr.scaleAndAdd(r.array,s,un,-h),r._dirty=!0,r}),applyTransform:(sn=Sr.create(),ln=Jr.create(),hn=Jr.create(),hn[3]=1,function(e){e=e.array,Mr.scale(hn,this.normal.array,this.distance),Jr.transformMat4(hn,hn,e),this.distance=Mr.dot(hn,this.normal.array),Sr.invert(sn,e),Sr.transpose(sn,sn),ln[3]=0,Mr.copy(ln,this.normal.array),Jr.transformMat4(ln,ln,sn),Mr.copy(this.normal.array,ln)}),copy:function(e){Mr.copy(this.normal.array,e.normal.array),this.normal._dirty=!0,this.distance=e.distance},clone:function(){var e=new dn;return e.copy(this),e}};var fn,pn=Mr.set,mn=Mr.copy,gn=Mr.transformMat4,_n=Math.min,vn=Math.max,yn=function(){this.planes=[];for(var e=0;e<6;e++)this.planes.push(new dn);this.boundingBox=new wi,this.vertices=[];for(e=0;e<8;e++)this.vertices[e]=Mr.fromValues(0,0,0)};yn.prototype={setFromProjection:function(e){var t=this.planes,r=e.array,i=r[0],n=r[1],a=r[2],o=r[3],s=r[4],l=r[5],h=r[6],u=r[7],c=r[8],d=r[9],f=r[10],p=r[11],m=r[12],g=r[13],_=r[14],v=r[15];pn(t[0].normal.array,o-i,u-s,p-c),t[0].distance=-(v-m),t[0].normalize(),pn(t[1].normal.array,o+i,u+s,p+c),t[1].distance=-(v+m),t[1].normalize(),pn(t[2].normal.array,o+n,u+l,p+d),t[2].distance=-(v+g),t[2].normalize(),pn(t[3].normal.array,o-n,u-l,p-d),t[3].distance=-(v-g),t[3].normalize(),pn(t[4].normal.array,o-a,u-h,p-f),t[4].distance=-(v-_),t[4].normalize(),pn(t[5].normal.array,o+a,u+h,p+f),t[5].distance=-(v+_),t[5].normalize();var y=this.boundingBox,x=this.vertices;if(0===v){var b=l/i,T=-_/(f-1),w=-_/(f+1),S=-w/l,M=-T/l;y.min.set(-S*b,-S,w),y.max.set(S*b,S,T),pn(x[0],-S*b,-S,w),pn(x[1],-S*b,S,w),pn(x[2],S*b,-S,w),pn(x[3],S*b,S,w),pn(x[4],-M*b,-M,T),pn(x[5],-M*b,M,T),pn(x[6],M*b,-M,T),pn(x[7],M*b,M,T)}else{var A=(-1-m)/i,E=(1-m)/i,D=(1-g)/l,C=(-1-g)/l,L=(-1-_)/f,P=(1-_)/f;y.min.set(Math.min(A,E),Math.min(C,D),Math.min(P,L)),y.max.set(Math.max(E,A),Math.max(D,C),Math.max(L,P));var O=y.min.array,N=y.max.array;pn(x[0],O[0],O[1],O[2]),pn(x[1],O[0],N[1],O[2]),pn(x[2],N[0],O[1],O[2]),pn(x[3],N[0],N[1],O[2]),pn(x[4],O[0],O[1],N[2]),pn(x[5],O[0],N[1],N[2]),pn(x[6],N[0],O[1],N[2]),pn(x[7],N[0],N[1],N[2])}},getTransformedBoundingBox:(fn=Mr.create(),function(e,t){var r=this.vertices,i=t.array,n=e.min,a=e.max,o=n.array,s=a.array,l=r[0];gn(fn,l,i),mn(o,fn),mn(s,fn);for(var h=1;h<8;h++)l=r[h],gn(fn,l,i),o[0]=_n(fn[0],o[0]),o[1]=_n(fn[1],o[1]),o[2]=_n(fn[2],o[2]),s[0]=vn(fn[0],s[0]),s[1]=vn(fn[1],s[1]),s[2]=vn(fn[2],s[2]);return n._dirty=!0,a._dirty=!0,e})};var xn,bn=Ei.extend(function(){return{projectionMatrix:new hi,invProjectionMatrix:new hi,viewMatrix:new hi,frustum:new yn}},function(){this.update(!0)},{update:function(e){Ei.prototype.update.call(this,e),hi.invert(this.viewMatrix,this.worldTransform),this.updateProjectionMatrix(),hi.invert(this.invProjectionMatrix,this.projectionMatrix),this.frustum.setFromProjection(this.projectionMatrix)},setViewMatrix:function(e){hi.copy(this.viewMatrix,e),hi.invert(this.worldTransform,e),this.decomposeWorldTransform()},decomposeProjectionMatrix:function(){},setProjectionMatrix:function(e){hi.copy(this.projectionMatrix,e),hi.invert(this.invProjectionMatrix,e),this.decomposeProjectionMatrix()},updateProjectionMatrix:function(){},castRay:(xn=Jr.create(),function(e,t){var r=void 0!==t?t:new Qr,i=e.array[0],n=e.array[1];return Jr.set(xn,i,n,-1,1),Jr.transformMat4(xn,xn,this.invProjectionMatrix.array),Jr.transformMat4(xn,xn,this.worldTransform.array),Mr.scale(r.origin.array,xn,1/xn[3]),Jr.set(xn,i,n,1,1),Jr.transformMat4(xn,xn,this.invProjectionMatrix.array),Jr.transformMat4(xn,xn,this.worldTransform.array),Mr.scale(xn,xn,1/xn[3]),Mr.sub(r.direction.array,xn,r.origin.array),Mr.normalize(r.direction.array,r.direction.array),r.direction._dirty=!0,r.origin._dirty=!0,r})}),Tn=Sr.create(),wn=Sr.create(),Sn={};function Mn(e){var t=[],r=Object.keys(e);r.sort();for(var i=0;i0&&console.warn("Found multiple camera in one scene. Use the fist one."),this._cameraList.push(e)):e instanceof cn&&this.lights.push(e),e.name&&(this._nodeRepository[e.name]=e)},removeFromScene:function(e){var t;e instanceof bn?(t=this._cameraList.indexOf(e))>=0&&this._cameraList.splice(t,1):e instanceof cn&&(t=this.lights.indexOf(e))>=0&&this.lights.splice(t,1),e.name&&delete this._nodeRepository[e.name]},getNode:function(e){return this._nodeRepository[e]},setMainCamera:function(e){var t=this._cameraList.indexOf(e);t>=0&&this._cameraList.splice(t,1),this._cameraList.unshift(e)},getMainCamera:function(){return this._cameraList[0]},getLights:function(){return this.lights},updateLights:function(){var e=this.lights;this._previousLightNumber=this._lightNumber;for(var t={},r=0;r0&&this._doUpdateRenderList(o,t,r,i,n)}},isFrustumCulled:(En=new wi,Dn=new hi,function(e,t,r){var i=e.boundingBox;if(i||(i=e.skeleton&&e.skeleton.boundingBox?e.skeleton.boundingBox:e.geometry.boundingBox),!i)return!1;if(Dn.array=r,En.transformFrom(i,Dn),e.castShadow&&this.viewBoundingBoxLastFrame.union(En),e.frustumCulling){if(!En.intersectBoundingBox(t.frustum.boundingBox))return!0;Dn.array=t.projectionMatrix.array,En.max.array[2]>0&&En.min.array[2]<0&&(En.max.array[2]=-1e-20),En.applyProjection(Dn);var n=En.min.array,a=En.max.array;if(a[0]<-1||n[0]>1||a[1]<-1||n[1]>1||a[2]<-1||n[2]>1)return!0}return!1}),_updateLightUniforms:function(){var e=this.lights;e.sort(Ln);var t=this._lightUniforms;for(var r in t)for(var i in t[r])t[r][i].value.length=0;for(var n=0;n1&&t.texParameterf(t.TEXTURE_CUBE_MAP,n.TEXTURE_MAX_ANISOTROPY_EXT,this.anisotropic),36193===i)&&(e.getGLExtension("OES_texture_half_float")||(i=Ze));if(this.mipmaps.length)for(var a=this.width,o=this.height,s=0;s0&&e.height>0}Object.defineProperty(Nn.prototype,"width",{get:function(){return this.image&&this.image.px?this.image.px.width:this._width},set:function(e){this.image&&this.image.px?console.warn("Texture from image can't set width"):(this._width!==e&&this.dirty(),this._width=e)}}),Object.defineProperty(Nn.prototype,"height",{get:function(){return this.image&&this.image.px?this.image.px.height:this._height},set:function(e){this.image&&this.image.px?console.warn("Texture from image can't set height"):(this._height!==e&&this.dirty(),this._height=e)}});var In=bn.extend({fov:50,aspect:1,near:.1,far:2e3},{updateProjectionMatrix:function(){var e=this.fov/180*Math.PI;this.projectionMatrix.perspective(e,this.aspect,this.near,this.far)},decomposeProjectionMatrix:function(){var e=this.projectionMatrix.array,t=2*Math.atan(1/e[5]);this.fov=t/Math.PI*180,this.aspect=e[5]/e[0],this.near=e[14]/(e[10]-1),this.far=e[14]/(e[10]+1)},clone:function(){var e=bn.prototype.clone.call(this);return e.fov=this.fov,e.aspect=this.aspect,e.near=this.near,e.far=this.far,e}}),Bn="framebuffer",zn="renderbuffer",Fn=zn+"_width",Gn=zn+"_height",Un=zn+"_attached",Hn="depthtexture_attached",Vn=dt,kn=ft,Wn=gt,jn=mt,Xn=xe.extend({depthBuffer:!0,viewport:null,_width:0,_height:0,_textures:null,_boundRenderer:null},function(){this._cache=new Bi,this._textures={}},{getTextureWidth:function(){return this._width},getTextureHeight:function(){return this._height},bind:function(e){if(e.__currentFrameBuffer){if(e.__currentFrameBuffer===this)return;console.warn("Renderer already bound with another framebuffer. Unbind it first")}e.__currentFrameBuffer=this;var t=e.gl;t.bindFramebuffer(Vn,this._getFrameBufferGL(e)),this._boundRenderer=e;var r=this._cache;r.put("viewport",e.viewport);var i,n,a=!1;for(var o in this._textures){a=!0;var s=this._textures[o];s&&(i=s.texture.width,n=s.texture.height,this._doAttach(e,s.texture,o,s.target))}this._width=i,this._height=n,!a&&this.depthBuffer&&console.error("Must attach texture before bind, or renderbuffer may have incorrect width and height."),this.viewport?e.setViewport(this.viewport):e.setViewport(0,0,i,n,1);var l=r.get("attached_textures");if(l)for(var o in l)if(!this._textures[o]){var h=l[o];this._doDetach(t,o,h)}if(!r.get(Hn)&&this.depthBuffer){r.miss(zn)&&r.put(zn,t.createRenderbuffer());var u=r.get(zn);i===r.get(Fn)&&n===r.get(Gn)||(t.bindRenderbuffer(kn,u),t.renderbufferStorage(kn,t.DEPTH_COMPONENT16,i,n),r.put(Fn,i),r.put(Gn,n),t.bindRenderbuffer(kn,null)),r.get(Un)||(t.framebufferRenderbuffer(Vn,Wn,kn,u),r.put(Un,!0))}},unbind:function(e){e.__currentFrameBuffer=null,e.gl.bindFramebuffer(Vn,null),this._boundRenderer=null,this._cache.use(e.__uid__);var t=this._cache.get("viewport");t&&e.setViewport(t),this.updateMipmap(e)},updateMipmap:function(e){var t=e.gl;for(var r in this._textures){var i=this._textures[r];if(i){var n=i.texture;if(!n.NPOT&&n.useMipmap&&n.minFilter===zi.LINEAR_MIPMAP_LINEAR){var a="textureCube"===n.textureType?lt:st;t.bindTexture(a,n.getWebGLTexture(e)),t.generateMipmap(a),t.bindTexture(a,null)}}}},checkStatus:function(e){return e.checkFramebufferStatus(Vn)},_getFrameBufferGL:function(e){var t=this._cache;return t.use(e.__uid__),t.miss(Bn)&&t.put(Bn,e.gl.createFramebuffer()),t.get(Bn)},attach:function(e,t,r){if(!e.width)throw new Error("The texture attached to color buffer is not a valid.");t=t||jn,r=r||st;var i,n=this._boundRenderer;if(n&&n.gl){var a=this._cache;a.use(n.__uid__),i=a.get("attached_textures")}var o=this._textures[t];if(!o||o.target!==r||o.texture!==e||!i||null==i[t]){var s=!0;n&&(s=this._doAttach(n,e,t,r),this.viewport||n.setViewport(0,0,e.width,e.height,1)),s&&(this._textures[t]=this._textures[t]||{},this._textures[t].texture=e,this._textures[t].target=r)}},_doAttach:function(e,t,r,i){var n=e.gl,a=t.getWebGLTexture(e),o=this._cache.get("attached_textures");if(o&&o[r]){var s=o[r];if(s.texture===t&&s.target===i)return}var l=!0;if(((r=+r)===Wn||r===vt)&&(e.getGLExtension("WEBGL_depth_texture")||(console.error("Depth texture is not supported by the browser"),l=!1),t.format!==Ye&&t.format!==pt&&(console.error("The texture attached to depth buffer is not a valid."),l=!1),l)){var h=this._cache.get(zn);h&&(n.framebufferRenderbuffer(Vn,Wn,kn,null),n.deleteRenderbuffer(h),this._cache.put(zn,!1)),this._cache.put(Un,!1),this._cache.put(Hn,!0)}return n.framebufferTexture2D(Vn,r,i,a,0),o||(o={},this._cache.put("attached_textures",o)),o[r]=o[r]||{},o[r].texture=t,o[r].target=i,l},_doDetach:function(e,t,r){e.framebufferTexture2D(Vn,t,r,null,0);var i=this._cache.get("attached_textures");i&&i[t]&&(i[t]=null),t!==Wn&&t!==vt||this._cache.put(Hn,!1)},detach:function(e,t){(this._textures[e]=null,this._boundRenderer)&&(this._cache.use(this._boundRenderer.__uid__),this._doDetach(this._boundRenderer.gl,e,t))},dispose:function(e){var t=e.gl,r=this._cache;r.use(e.__uid__);var i=r.get(zn);i&&t.deleteRenderbuffer(i);var n=r.get(Bn);n&&t.deleteFramebuffer(n),r.deleteContext(e.__uid__),this._textures={}}});Xn.DEPTH_ATTACHMENT=Wn,Xn.COLOR_ATTACHMENT0=jn,Xn.STENCIL_ATTACHMENT=_t,Xn.DEPTH_STENCIL_ATTACHMENT=vt;var qn=["px","nx","py","ny","pz","nz"],Zn=xe.extend(function(){var e={position:new Fr,far:1e3,near:.1,texture:null,shadowMapPass:null},t=e._cameras={px:new In({fov:90}),nx:new In({fov:90}),py:new In({fov:90}),ny:new In({fov:90}),pz:new In({fov:90}),nz:new In({fov:90})};return t.px.lookAt(Fr.POSITIVE_X,Fr.NEGATIVE_Y),t.nx.lookAt(Fr.NEGATIVE_X,Fr.NEGATIVE_Y),t.py.lookAt(Fr.POSITIVE_Y,Fr.POSITIVE_Z),t.ny.lookAt(Fr.NEGATIVE_Y,Fr.NEGATIVE_Z),t.pz.lookAt(Fr.POSITIVE_Z,Fr.NEGATIVE_Y),t.nz.lookAt(Fr.NEGATIVE_Z,Fr.NEGATIVE_Y),e._frameBuffer=new Xn,e},{getCamera:function(e){return this._cameras[e]},render:function(e,t,r){var i=e.gl;r||t.update();for(var n=this.texture.width,a=2*Math.atan(n/(n-.5))/Math.PI*180,o=0;o<6;o++){var s=qn[o],l=this._cameras[s];if(Fr.copy(l.position,this.position),l.far=this.far,l.near=this.near,l.fov=a,this.shadowMapPass){l.update();var h=t.getBoundingBox();h.applyTransform(l.viewMatrix),t.viewBoundingBoxLastFrame.copy(h),this.shadowMapPass.render(e,t,l,!0)}this._frameBuffer.attach(this.texture,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+o),this._frameBuffer.bind(e),e.render(t,l,!0),this._frameBuffer.unbind(e)}},dispose:function(e){this._frameBuffer.dispose(e)}}),Yn=$i.extend({dynamic:!1,widthSegments:1,heightSegments:1},function(){this.build()},{build:function(){for(var e=this.heightSegments,t=this.widthSegments,r=this.attributes,i=[],n=[],a=[],o=[],s=0;s<=e;s++)for(var l=s/e,h=0;h<=t;h++){var u=h/t;if(i.push([2*u-1,2*l-1,0]),n&&n.push([u,l]),a&&a.push([0,0,1]),h0?this.material.define("fragment","LOD"):this.material.undefine("fragment","LOD"),e.renderPass([this],r)}});function ea(e){return e.charCodeAt(0)+(e.charCodeAt(1)<<8)+(e.charCodeAt(2)<<16)+(e.charCodeAt(3)<<24)}var ta=ea("DXT1"),ra=ea("DXT3"),ia=ea("DXT5"),na=function(e,t){var r=new Int32Array(e,0,31);if(542327876!==r[0])return null;if(4&!r(20))return null;var i,n,a=r(21),o=r[4],s=r[3],l=512&r[28],h=131072&r[2];switch(a){case ta:i=8,n=zi.COMPRESSED_RGB_S3TC_DXT1_EXT;break;case ra:i=16,n=zi.COMPRESSED_RGBA_S3TC_DXT3_EXT;break;case ia:i=16,n=zi.COMPRESSED_RGBA_S3TC_DXT5_EXT;break;default:return null}var u=r[1]+4,c=l?6:1,d=1;h&&(d=Math.max(1,r[7]));for(var f=[],p=0;p0){var n=Math.pow(2,e[3]-128-8+i);t[r+0]=e[0]*n,t[r+1]=e[1]*n,t[r+2]=e[2]*n}else t[r+0]=0,t[r+1]=0,t[r+2]=0;return t[r+3]=1,t}function sa(e,t){t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3]}function la(e,t,r,i){for(var n=0,a=0,o=i;o>0;)if(e[a][0]=t[r++],e[a][1]=t[r++],e[a][2]=t[r++],e[a][3]=t[r++],1===e[a][0]&&1===e[a][1]&&1===e[a][2]){for(var s=e[a][3]<>>0;s>0;s--)sa(e[a-1],e[a]),a++,o--;n+=8}else a++,o--,n=0;return r}function ha(e,t,r,i){if(i<8|i>32767)return la(e,t,r,i);if(2!=(n=t[r++]))return la(e,t,r-1,i);if(e[0][1]=t[r++],e[0][2]=t[r++],n=t[r++],(e[0][2]<<8>>>0|n)>>>0!==i)return null;for(var n=0;n<4;n++)for(var a=0;a128){o=(127&o)>>>0;for(var s=t[r++];o--;)e[a++][n]=s}else for(;o--;)e[a++][n]=t[r++]}return r}var ua=function(e,t,r){null==r&&(r=0);var i=new Uint8Array(e),n=i.length;if("#?"===function(e,t,r){for(var i="",n=t;n=n)){a+=2;for(var o="";a20)return console.warn("Given image is not a height map"),e}var d,f,p,m;l%(4*i)==0?(d=o.data[l],p=o.data[l+4]):l%(4*i)==4*(i-1)?(d=o.data[l-4],p=o.data[l]):(d=o.data[l-4],p=o.data[l+4]),l<4*i?(f=o.data[l],m=o.data[l+4*i]):l>i*(n-1)*4?(f=o.data[l-4*i],m=o.data[l]):(f=o.data[l-4*i],m=o.data[l+4*i]),s.data[l]=d-p+127,s.data[l+1]=f-m+127,s.data[l+2]=255,s.data[l+3]=255}return a.putImageData(s,0,0),r},isHeightImage:function(e,t,r){if(!e||!e.width||!e.height)return!1;var i=document.createElement("canvas"),n=i.getContext("2d"),a=t||32;r=r||20,i.width=i.height=a,n.drawImage(e,0,0,a,a);for(var o=n.getImageData(0,0,a,a),s=0;sr)return!1}return!0},_fetchTexture:function(e,t,r){bt.request.get({url:e,responseType:"arraybuffer",onload:t,onerror:r})},createChessboard:function(e,t,r,i){e=e||512,t=t||64,r=r||"black",i=i||"white";var n=Math.ceil(e/t),a=document.createElement("canvas");a.width=e,a.height=e;var o=a.getContext("2d");o.fillStyle=i,o.fillRect(0,0,e,e),o.fillStyle=r;for(var s=0;s=0||(da.forEach(function(t){e.on(t,this[fa(t)],this)},this),this._meshes.push(e))},detachFromMesh:function(e){var t=this._meshes.indexOf(e);t>=0&&this._meshes.splice(t,1),da.forEach(function(t){e.off(t,this[fa(t)])},this)},dispose:function(){this._meshes.forEach(function(e){this.detachFromMesh(e)},this)}};var ma=bn.extend({left:-1,right:1,near:-1,far:1,top:1,bottom:-1},{updateProjectionMatrix:function(){this.projectionMatrix.ortho(this.left,this.right,this.bottom,this.top,this.near,this.far)},decomposeProjectionMatrix:function(){var e=this.projectionMatrix.array;this.left=(-1-e[12])/e[0],this.right=(1-e[12])/e[0],this.top=(1-e[13])/e[5],this.bottom=(-1-e[13])/e[5],this.near=-(-1-e[14])/e[10],this.far=-(1-e[14])/e[10]},clone:function(){var e=bn.prototype.clone.call(this);return e.left=this.left,e.right=this.right,e.near=this.near,e.far=this.far,e.top=this.top,e.bottom=this.bottom,e}});xr.import("\n@export clay.compositor.vertex\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nattribute vec3 position : POSITION;\nattribute vec2 texcoord : TEXCOORD_0;\nvarying vec2 v_Texcoord;\nvoid main()\n{\n v_Texcoord = texcoord;\n gl_Position = worldViewProjection * vec4(position, 1.0);\n}\n@end");var ga=new Yn,_a=new Fi({geometry:ga,frustumCulling:!1}),va=new ma,ya=xe.extend(function(){return{fragment:"",outputs:null,material:null,blendWithPrevious:!1,clearColor:!1,clearDepth:!0}},function(){var e=new xr(xr.source("clay.compositor.vertex"),this.fragment),t=new kt({shader:e});t.enableTexturesAll(),this.material=t},{setUniform:function(e,t){this.material.setUniform(e,t)},getUniform:function(e){var t=this.material.uniforms[e];if(t)return t.value},attachOutput:function(e,t){this.outputs||(this.outputs={}),t=t||mt,this.outputs[t]=e},detachOutput:function(e){for(var t in this.outputs)this.outputs[t]===e&&(this.outputs[t]=null)},bind:function(e,t){if(this.outputs)for(var r in this.outputs){var i=this.outputs[r];i&&t.attach(i,r)}t&&t.bind(e)},unbind:function(e,t){t.unbind(e)},render:function(e,t){var r=e.gl;if(t){this.bind(e,t);var i=e.getGLExtension("EXT_draw_buffers");if(i&&this.outputs){var n=[];for(var a in this.outputs)(a=+a)>=r.COLOR_ATTACHMENT0&&a<=r.COLOR_ATTACHMENT0+8&&n.push(a);i.drawBuffersEXT(n)}}this.trigger("beforerender",this,e);var o=this.clearDepth?r.DEPTH_BUFFER_BIT:0;if(r.depthMask(!0),this.clearColor){o|=r.COLOR_BUFFER_BIT,r.colorMask(!0,!0,!0,!0);var s=this.clearColor;Array.isArray(s)&&r.clearColor(s[0],s[1],s[2],s[3])}r.clear(o),this.blendWithPrevious?(r.enable(r.BLEND),this.material.transparent=!0):(r.disable(r.BLEND),this.material.transparent=!1),this.renderQuad(e),this.trigger("afterrender",this,e),t&&this.unbind(e,t)},renderQuad:function(e){_a.material=this.material,e.renderPass([_a],va)},dispose:function(e){}});var xa={},ba=["px","nx","py","ny","pz","nz"];xa.prefilterEnvironmentMap=function(e,t,r,i,n){n&&i||(i=xa.generateNormalDistribution(),n=xa.integrateBRDF(e,i));var a=(r=r||{}).width||64,o=r.height||64,s=r.type||t.type,l=new Nn({width:a,height:o,type:s,flipY:!1,mipmaps:[]});l.isPowerOfTwo()||console.warn("Width and height must be power of two to enable mipmap.");var h=Math.min(a,o),u=Math.log(h)/Math.log(2)+1,c=new kt({shader:new xr({vertex:xr.source("clay.skybox.vertex"),fragment:"#define SHADER_NAME prefilter\n#define SAMPLE_NUMBER 1024\n#define PI 3.14159265358979\nuniform mat4 viewInverse : VIEWINVERSE;\nuniform samplerCube environmentMap;\nuniform sampler2D normalDistribution;\nuniform float roughness : 0.5;\nvarying vec2 v_Texcoord;\nvarying vec3 v_WorldPosition;\n@import clay.util.rgbm\nvec3 importanceSampleNormal(float i, float roughness, vec3 N) {\n vec3 H = texture2D(normalDistribution, vec2(roughness, i)).rgb;\n vec3 upVector = abs(N.y) > 0.999 ? vec3(1.0, 0.0, 0.0) : vec3(0.0, 1.0, 0.0);\n vec3 tangentX = normalize(cross(N, upVector));\n vec3 tangentZ = cross(N, tangentX);\n return normalize(tangentX * H.x + N * H.y + tangentZ * H.z);\n}\nvoid main() {\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(v_WorldPosition - eyePos);\n vec3 N = V;\n vec3 prefilteredColor = vec3(0.0);\n float totalWeight = 0.0;\n float fMaxSampleNumber = float(SAMPLE_NUMBER);\n for (int i = 0; i < SAMPLE_NUMBER; i++) {\n vec3 H = importanceSampleNormal(float(i) / fMaxSampleNumber, roughness, N);\n vec3 L = reflect(-V, H);\n float NoL = clamp(dot(N, L), 0.0, 1.0);\n if (NoL > 0.0) {\n prefilteredColor += decodeHDR(textureCube(environmentMap, L)).rgb * NoL;\n totalWeight += NoL;\n }\n }\n gl_FragColor = encodeHDR(vec4(prefilteredColor / totalWeight, 1.0));\n}\n"})});c.set("normalDistribution",i),r.encodeRGBM&&c.define("fragment","RGBM_ENCODE"),r.decodeRGBM&&c.define("fragment","RGBM_DECODE");var d,f=new Cn;if("texture2D"===t.textureType){var p=new Nn({width:a,height:o,type:s===zi.FLOAT?zi.HALF_FLOAT:s});ca.panoramaToCubeMap(e,t,p,{encodeRGBM:r.decodeRGBM}),t=p}(d=new $n({scene:f,material:c})).material.set("environmentMap",t);var m=new Zn({texture:l});r.encodeRGBM&&(s=l.type=zi.UNSIGNED_BYTE);for(var g=new Vi({width:a,height:o,type:s}),_=new Xn({depthBuffer:!1}),v=bt[s===zi.UNSIGNED_BYTE?"Uint8Array":"Float32Array"],y=0;y 0.999 ? vec3(1.0, 0.0, 0.0) : vec3(0.0, 1.0, 0.0);\n vec3 tangentX = normalize(cross(N, upVector));\n vec3 tangentZ = cross(N, tangentX);\n return normalize(tangentX * H.x + N * H.y + tangentZ * H.z);\n}\nfloat G_Smith(float roughness, float NoV, float NoL) {\n float k = roughness * roughness / 2.0;\n float G1V = NoV / (NoV * (1.0 - k) + k);\n float G1L = NoL / (NoL * (1.0 - k) + k);\n return G1L * G1V;\n}\nvoid main() {\n vec2 uv = gl_FragCoord.xy / viewportSize;\n float NoV = uv.x;\n float roughness = uv.y;\n vec3 V;\n V.x = sqrt(1.0 - NoV * NoV);\n V.y = 0.0;\n V.z = NoV;\n float A = 0.0;\n float B = 0.0;\n for (int i = 0; i < SAMPLE_NUMBER; i++) {\n vec3 H = importanceSampleNormal(float(i) / fSampleNumber, roughness, N);\n vec3 L = reflect(-V, H);\n float NoL = clamp(L.z, 0.0, 1.0);\n float NoH = clamp(H.z, 0.0, 1.0);\n float VoH = clamp(dot(V, H), 0.0, 1.0);\n if (NoL > 0.0) {\n float G = G_Smith(roughness, NoV, NoL);\n float G_Vis = G * VoH / (NoH * NoV);\n float Fc = pow(1.0 - VoH, 5.0);\n A += (1.0 - Fc) * G_Vis;\n B += Fc * G_Vis;\n }\n }\n gl_FragColor = vec4(vec2(A, B) / fSampleNumber, 0.0, 1.0);\n}\n"}),n=new Vi({width:512,height:256,type:zi.HALF_FLOAT,wrapS:zi.CLAMP_TO_EDGE,wrapT:zi.CLAMP_TO_EDGE,minFilter:zi.NEAREST,magFilter:zi.NEAREST,useMipmap:!1});return i.setUniform("normalDistribution",t),i.setUniform("viewportSize",[512,256]),i.attachOutput(n),i.render(e,r),r.dispose(e),n},xa.generateNormalDistribution=function(e,t){for(var r=new Vi({width:e=e||256,height:t=t||1024,type:zi.FLOAT,minFilter:zi.NEAREST,magFilter:zi.NEAREST,wrapS:zi.CLAMP_TO_EDGE,wrapT:zi.CLAMP_TO_EDGE,useMipmap:!1}),i=new Float32Array(t*e*4),n=[],a=0;a>>16)>>>0;h=(((16711935&(h=((252645135&(h=((858993459&(h=((1431655765&h)<<1|(2863311530&h)>>>1)>>>0))<<2|(3435973836&h)>>>2)>>>0))<<4|(4042322160&h)>>>4)>>>0))<<8|(4278255360&h)>>>8)>>>0)/4294967296;var u=Math.sqrt((1-h)/(1+(s*s-1)*h));n[l]=u}for(l=0;l65535?Uint32Array:Uint16Array,v=this.indices=new _(t*e*6),y=this.radius,x=this.phiStart,b=this.phiLength,T=this.thetaStart,w=this.thetaLength,S=[],M=[],A=0,E=1/(y=this.radius);for(d=0;d<=e;d++)for(c=0;c<=t;c++)h=c/t,u=d/e,o=-y*Math.cos(x+h*b)*Math.sin(T+u*w),s=y*Math.cos(T+u*w),l=y*Math.sin(x+h*b)*Math.sin(T+u*w),S[0]=o,S[1]=s,S[2]=l,M[0]=h,M[1]=u,r.set(A,S),i.set(A,M),S[0]*=E,S[1]*=E,S[2]*=E,n.set(A,S),A++;var D=t+1,C=0;for(d=0;d=0&&l.splice(e,1)}),l.push(h),this.__zr&&this.__zr.animation.addAnimator(h),h},stopAnimation:function(e){this._animators=this._animators||[];for(var t=this._animators,r=t.length,i=0;i 0.) {\n vec4 lineColor = wireframeLineColor;\n#ifdef SRGB_DECODE\n lineColor = sRGBToLinear(lineColor);\n#endif\n\n gl_FragColor.rgb = mix(gl_FragColor.rgb, lineColor.rgb, (1.0 - edgeFactor()) * lineColor.a);\n }\n#endif\n@end\n\n\n\n\n@export ecgl.common.bumpMap.header\n\n#ifdef BUMPMAP_ENABLED\nuniform sampler2D bumpMap;\nuniform float bumpScale : 1.0;\n\n\nvec3 bumpNormal(vec3 surfPos, vec3 surfNormal, vec3 baseNormal)\n{\n vec2 dSTdx = dFdx(v_Texcoord);\n vec2 dSTdy = dFdy(v_Texcoord);\n\n float Hll = bumpScale * texture2D(bumpMap, v_Texcoord).x;\n float dHx = bumpScale * texture2D(bumpMap, v_Texcoord + dSTdx).x - Hll;\n float dHy = bumpScale * texture2D(bumpMap, v_Texcoord + dSTdy).x - Hll;\n\n vec3 vSigmaX = dFdx(surfPos);\n vec3 vSigmaY = dFdy(surfPos);\n vec3 vN = surfNormal;\n\n vec3 R1 = cross(vSigmaY, vN);\n vec3 R2 = cross(vN, vSigmaX);\n\n float fDet = dot(vSigmaX, R1);\n\n vec3 vGrad = sign(fDet) * (dHx * R1 + dHy * R2);\n return normalize(abs(fDet) * baseNormal - vGrad);\n\n}\n#endif\n\n@end\n\n@export ecgl.common.normalMap.vertexHeader\n\n#ifdef NORMALMAP_ENABLED\nattribute vec4 tangent : TANGENT;\nvarying vec3 v_Tangent;\nvarying vec3 v_Bitangent;\n#endif\n\n@end\n\n@export ecgl.common.normalMap.vertexMain\n\n#ifdef NORMALMAP_ENABLED\n if (dot(tangent, tangent) > 0.0) {\n v_Tangent = normalize((worldInverseTranspose * vec4(tangent.xyz, 0.0)).xyz);\n v_Bitangent = normalize(cross(v_Normal, v_Tangent) * tangent.w);\n }\n#endif\n\n@end\n\n\n@export ecgl.common.normalMap.fragmentHeader\n\n#ifdef NORMALMAP_ENABLED\nuniform sampler2D normalMap;\nvarying vec3 v_Tangent;\nvarying vec3 v_Bitangent;\n#endif\n\n@end\n\n@export ecgl.common.normalMap.fragmentMain\n#ifdef NORMALMAP_ENABLED\n if (dot(v_Tangent, v_Tangent) > 0.0) {\n vec3 normalTexel = texture2D(normalMap, v_DetailTexcoord).xyz;\n if (dot(normalTexel, normalTexel) > 0.0) { N = normalTexel * 2.0 - 1.0;\n mat3 tbn = mat3(v_Tangent, v_Bitangent, v_Normal);\n N = normalize(tbn * N);\n }\n }\n#endif\n@end\n\n\n\n@export ecgl.common.vertexAnimation.header\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nattribute vec3 prevNormal;\nuniform float percent;\n#endif\n\n@end\n\n@export ecgl.common.vertexAnimation.main\n\n#ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n vec3 norm = mix(prevNormal, normal, percent);\n#else\n vec3 pos = position;\n vec3 norm = normal;\n#endif\n\n@end\n\n\n@export ecgl.common.ssaoMap.header\n#ifdef SSAOMAP_ENABLED\nuniform sampler2D ssaoMap;\nuniform vec4 viewport : VIEWPORT;\n#endif\n@end\n\n@export ecgl.common.ssaoMap.main\n float ao = 1.0;\n#ifdef SSAOMAP_ENABLED\n ao = texture2D(ssaoMap, (gl_FragCoord.xy - viewport.xy) / viewport.zw).r;\n#endif\n@end\n\n\n\n\n@export ecgl.common.diffuseLayer.header\n\n#if (LAYER_DIFFUSEMAP_COUNT > 0)\nuniform float layerDiffuseIntensity[LAYER_DIFFUSEMAP_COUNT];\nuniform sampler2D layerDiffuseMap[LAYER_DIFFUSEMAP_COUNT];\n#endif\n\n@end\n\n@export ecgl.common.emissiveLayer.header\n\n#if (LAYER_EMISSIVEMAP_COUNT > 0)\nuniform float layerEmissionIntensity[LAYER_EMISSIVEMAP_COUNT];\nuniform sampler2D layerEmissiveMap[LAYER_EMISSIVEMAP_COUNT];\n#endif\n\n@end\n\n@export ecgl.common.layers.header\n@import ecgl.common.diffuseLayer.header\n@import ecgl.common.emissiveLayer.header\n@end\n\n@export ecgl.common.diffuseLayer.main\n\n#if (LAYER_DIFFUSEMAP_COUNT > 0)\n for (int _idx_ = 0; _idx_ < LAYER_DIFFUSEMAP_COUNT; _idx_++) {{\n float intensity = layerDiffuseIntensity[_idx_];\n vec4 texel2 = texture2D(layerDiffuseMap[_idx_], v_Texcoord);\n #ifdef SRGB_DECODE\n texel2 = sRGBToLinear(texel2);\n #endif\n albedoTexel.rgb = mix(albedoTexel.rgb, texel2.rgb * intensity, texel2.a);\n albedoTexel.a = texel2.a + (1.0 - texel2.a) * albedoTexel.a;\n }}\n#endif\n\n@end\n\n@export ecgl.common.emissiveLayer.main\n\n#if (LAYER_EMISSIVEMAP_COUNT > 0)\n for (int _idx_ = 0; _idx_ < LAYER_EMISSIVEMAP_COUNT; _idx_++)\n {{\n vec4 texel2 = texture2D(layerEmissiveMap[_idx_], v_Texcoord) * layerEmissionIntensity[_idx_];\n #ifdef SRGB_DECODE\n texel2 = sRGBToLinear(texel2);\n #endif\n float intensity = layerEmissionIntensity[_idx_];\n gl_FragColor.rgb += texel2.rgb * texel2.a * intensity;\n }}\n#endif\n\n@end\n"),xr.import("@export ecgl.color.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\n@import ecgl.common.uv.header\n\nattribute vec2 texcoord : TEXCOORD_0;\nattribute vec3 position: POSITION;\n\n@import ecgl.common.wireframe.vertexHeader\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n#endif\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nuniform float percent : 1.0;\n#endif\n\n#ifdef ATMOSPHERE_ENABLED\nattribute vec3 normal: NORMAL;\nuniform mat4 worldInverseTranspose : WORLDINVERSETRANSPOSE;\nvarying vec3 v_Normal;\n#endif\n\nvoid main()\n{\n#ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n#else\n vec3 pos = position;\n#endif\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n @import ecgl.common.uv.main\n\n#ifdef VERTEX_COLOR\n v_Color = a_Color;\n#endif\n\n#ifdef ATMOSPHERE_ENABLED\n v_Normal = normalize((worldInverseTranspose * vec4(normal, 0.0)).xyz);\n#endif\n\n @import ecgl.common.wireframe.vertexMain\n\n}\n\n@end\n\n@export ecgl.color.fragment\n\n#define LAYER_DIFFUSEMAP_COUNT 0\n#define LAYER_EMISSIVEMAP_COUNT 0\n\nuniform sampler2D diffuseMap;\nuniform sampler2D detailMap;\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\n#ifdef ATMOSPHERE_ENABLED\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform vec3 glowColor;\nuniform float glowPower;\nvarying vec3 v_Normal;\n#endif\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n@import ecgl.common.layers.header\n\n@import ecgl.common.uv.fragmentHeader\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.util.srgb\n\nvoid main()\n{\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(color);\n#else\n gl_FragColor = color;\n#endif\n\n#ifdef VERTEX_COLOR\n gl_FragColor *= v_Color;\n#endif\n\n @import ecgl.common.albedo.main\n\n @import ecgl.common.diffuseLayer.main\n\n gl_FragColor *= albedoTexel;\n\n#ifdef ATMOSPHERE_ENABLED\n float atmoIntensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor.rgb += glowColor * atmoIntensity;\n#endif\n\n @import ecgl.common.emissiveLayer.main\n\n @import ecgl.common.wireframe.fragmentMain\n\n}\n@end"),xr.import("/**\n * http: */\n\n@export ecgl.lambert.vertex\n\n@import ecgl.common.transformUniforms\n\n@import ecgl.common.uv.header\n\n\n@import ecgl.common.attributes\n\n@import ecgl.common.wireframe.vertexHeader\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n#endif\n\n\n@import ecgl.common.vertexAnimation.header\n\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nvoid main()\n{\n @import ecgl.common.uv.main\n\n @import ecgl.common.vertexAnimation.main\n\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n v_Normal = normalize((worldInverseTranspose * vec4(norm, 0.0)).xyz);\n v_WorldPosition = (world * vec4(pos, 1.0)).xyz;\n\n#ifdef VERTEX_COLOR\n v_Color = a_Color;\n#endif\n\n @import ecgl.common.wireframe.vertexMain\n}\n\n@end\n\n\n@export ecgl.lambert.fragment\n\n#define LAYER_DIFFUSEMAP_COUNT 0\n#define LAYER_EMISSIVEMAP_COUNT 0\n\n#define NORMAL_UP_AXIS 1\n#define NORMAL_FRONT_AXIS 2\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform sampler2D diffuseMap;\nuniform sampler2D detailMap;\n\n@import ecgl.common.layers.header\n\nuniform float emissionIntensity: 1.0;\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n#ifdef ATMOSPHERE_ENABLED\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform vec3 glowColor;\nuniform float glowPower;\n#endif\n\n#ifdef AMBIENT_LIGHT_COUNT\n@import clay.header.ambient_light\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n@import clay.header.ambient_sh_light\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n@import clay.header.directional_light\n#endif\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n\n@import ecgl.common.ssaoMap.header\n\n@import ecgl.common.bumpMap.header\n\n@import clay.util.srgb\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.plugin.compute_shadow_map\n\nvoid main()\n{\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(color);\n#else\n gl_FragColor = color;\n#endif\n\n#ifdef VERTEX_COLOR\n #ifdef SRGB_DECODE\n gl_FragColor *= sRGBToLinear(v_Color);\n #else\n gl_FragColor *= v_Color;\n #endif\n#endif\n\n @import ecgl.common.albedo.main\n\n @import ecgl.common.diffuseLayer.main\n\n gl_FragColor *= albedoTexel;\n\n vec3 N = v_Normal;\n#ifdef DOUBLE_SIDED\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n\n if (dot(N, V) < 0.0) {\n N = -N;\n }\n#endif\n\n float ambientFactor = 1.0;\n\n#ifdef BUMPMAP_ENABLED\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n ambientFactor = dot(v_Normal, N);\n#endif\n\n vec3 N2 = vec3(N.x, N[NORMAL_UP_AXIS], N[NORMAL_FRONT_AXIS]);\n\n vec3 diffuseColor = vec3(0.0, 0.0, 0.0);\n\n @import ecgl.common.ssaoMap.main\n\n#ifdef AMBIENT_LIGHT_COUNT\n for(int i = 0; i < AMBIENT_LIGHT_COUNT; i++)\n {\n diffuseColor += ambientLightColor[i] * ambientFactor * ao;\n }\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_SH_LIGHT_COUNT; _idx_++)\n {{\n diffuseColor += calcAmbientSHLight(_idx_, N2) * ambientSHLightColor[_idx_] * ao;\n }}\n#endif\n#ifdef DIRECTIONAL_LIGHT_COUNT\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n float shadowContribsDir[DIRECTIONAL_LIGHT_COUNT];\n if(shadowEnabled)\n {\n computeShadowOfDirectionalLights(v_WorldPosition, shadowContribsDir);\n }\n#endif\n for(int i = 0; i < DIRECTIONAL_LIGHT_COUNT; i++)\n {\n vec3 lightDirection = -directionalLightDirection[i];\n vec3 lightColor = directionalLightColor[i];\n\n float shadowContrib = 1.0;\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n if (shadowEnabled)\n {\n shadowContrib = shadowContribsDir[i];\n }\n#endif\n\n float ndl = dot(N, normalize(lightDirection)) * shadowContrib;\n\n diffuseColor += lightColor * clamp(ndl, 0.0, 1.0);\n }\n#endif\n\n gl_FragColor.rgb *= diffuseColor;\n\n#ifdef ATMOSPHERE_ENABLED\n float atmoIntensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor.rgb += glowColor * atmoIntensity;\n#endif\n\n @import ecgl.common.emissiveLayer.main\n\n @import ecgl.common.wireframe.fragmentMain\n}\n\n@end"),xr.import("@export ecgl.realistic.vertex\n\n@import ecgl.common.transformUniforms\n\n@import ecgl.common.uv.header\n\n@import ecgl.common.attributes\n\n\n@import ecgl.common.wireframe.vertexHeader\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n#endif\n\n#ifdef NORMALMAP_ENABLED\nattribute vec4 tangent : TANGENT;\nvarying vec3 v_Tangent;\nvarying vec3 v_Bitangent;\n#endif\n\n@import ecgl.common.vertexAnimation.header\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nvoid main()\n{\n\n @import ecgl.common.uv.main\n\n @import ecgl.common.vertexAnimation.main\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n v_Normal = normalize((worldInverseTranspose * vec4(norm, 0.0)).xyz);\n v_WorldPosition = (world * vec4(pos, 1.0)).xyz;\n\n#ifdef VERTEX_COLOR\n v_Color = a_Color;\n#endif\n\n#ifdef NORMALMAP_ENABLED\n v_Tangent = normalize((worldInverseTranspose * vec4(tangent.xyz, 0.0)).xyz);\n v_Bitangent = normalize(cross(v_Normal, v_Tangent) * tangent.w);\n#endif\n\n @import ecgl.common.wireframe.vertexMain\n\n}\n\n@end\n\n\n\n@export ecgl.realistic.fragment\n\n#define LAYER_DIFFUSEMAP_COUNT 0\n#define LAYER_EMISSIVEMAP_COUNT 0\n#define PI 3.14159265358979\n#define ROUGHNESS_CHANEL 0\n#define METALNESS_CHANEL 1\n\n#define NORMAL_UP_AXIS 1\n#define NORMAL_FRONT_AXIS 2\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform sampler2D diffuseMap;\n\nuniform sampler2D detailMap;\nuniform sampler2D metalnessMap;\nuniform sampler2D roughnessMap;\n\n@import ecgl.common.layers.header\n\nuniform float emissionIntensity: 1.0;\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nuniform float metalness : 0.0;\nuniform float roughness : 0.5;\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n#ifdef ATMOSPHERE_ENABLED\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform vec3 glowColor;\nuniform float glowPower;\n#endif\n\n#ifdef AMBIENT_LIGHT_COUNT\n@import clay.header.ambient_light\n#endif\n\n#ifdef AMBIENT_SH_LIGHT_COUNT\n@import clay.header.ambient_sh_light\n#endif\n\n#ifdef AMBIENT_CUBEMAP_LIGHT_COUNT\n@import clay.header.ambient_cubemap_light\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n@import clay.header.directional_light\n#endif\n\n@import ecgl.common.normalMap.fragmentHeader\n\n@import ecgl.common.ssaoMap.header\n\n@import ecgl.common.bumpMap.header\n\n@import clay.util.srgb\n\n@import clay.util.rgbm\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.plugin.compute_shadow_map\n\nvec3 F_Schlick(float ndv, vec3 spec) {\n return spec + (1.0 - spec) * pow(1.0 - ndv, 5.0);\n}\n\nfloat D_Phong(float g, float ndh) {\n float a = pow(8192.0, g);\n return (a + 2.0) / 8.0 * pow(ndh, a);\n}\n\nvoid main()\n{\n vec4 albedoColor = color;\n\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n#ifdef VERTEX_COLOR\n #ifdef SRGB_DECODE\n albedoColor *= sRGBToLinear(v_Color);\n #else\n albedoColor *= v_Color;\n #endif\n#endif\n\n @import ecgl.common.albedo.main\n\n @import ecgl.common.diffuseLayer.main\n\n albedoColor *= albedoTexel;\n\n float m = metalness;\n\n#ifdef METALNESSMAP_ENABLED\n float m2 = texture2D(metalnessMap, v_DetailTexcoord)[METALNESS_CHANEL];\n m = clamp(m2 + (m - 0.5) * 2.0, 0.0, 1.0);\n#endif\n\n vec3 baseColor = albedoColor.rgb;\n albedoColor.rgb = baseColor * (1.0 - m);\n vec3 specFactor = mix(vec3(0.04), baseColor, m);\n\n float g = 1.0 - roughness;\n\n#ifdef ROUGHNESSMAP_ENABLED\n float g2 = 1.0 - texture2D(roughnessMap, v_DetailTexcoord)[ROUGHNESS_CHANEL];\n g = clamp(g2 + (g - 0.5) * 2.0, 0.0, 1.0);\n#endif\n\n vec3 N = v_Normal;\n\n#ifdef DOUBLE_SIDED\n if (dot(N, V) < 0.0) {\n N = -N;\n }\n#endif\n\n float ambientFactor = 1.0;\n\n#ifdef BUMPMAP_ENABLED\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n ambientFactor = dot(v_Normal, N);\n#endif\n\n@import ecgl.common.normalMap.fragmentMain\n\n vec3 N2 = vec3(N.x, N[NORMAL_UP_AXIS], N[NORMAL_FRONT_AXIS]);\n\n vec3 diffuseTerm = vec3(0.0);\n vec3 specularTerm = vec3(0.0);\n\n float ndv = clamp(dot(N, V), 0.0, 1.0);\n vec3 fresnelTerm = F_Schlick(ndv, specFactor);\n\n @import ecgl.common.ssaoMap.main\n\n#ifdef AMBIENT_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_LIGHT_COUNT; _idx_++)\n {{\n diffuseTerm += ambientLightColor[_idx_] * ambientFactor * ao;\n }}\n#endif\n\n#ifdef AMBIENT_SH_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_SH_LIGHT_COUNT; _idx_++)\n {{\n diffuseTerm += calcAmbientSHLight(_idx_, N2) * ambientSHLightColor[_idx_] * ao;\n }}\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n float shadowContribsDir[DIRECTIONAL_LIGHT_COUNT];\n if(shadowEnabled)\n {\n computeShadowOfDirectionalLights(v_WorldPosition, shadowContribsDir);\n }\n#endif\n for(int _idx_ = 0; _idx_ < DIRECTIONAL_LIGHT_COUNT; _idx_++)\n {{\n vec3 L = -directionalLightDirection[_idx_];\n vec3 lc = directionalLightColor[_idx_];\n\n vec3 H = normalize(L + V);\n float ndl = clamp(dot(N, normalize(L)), 0.0, 1.0);\n float ndh = clamp(dot(N, H), 0.0, 1.0);\n\n float shadowContrib = 1.0;\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n if (shadowEnabled)\n {\n shadowContrib = shadowContribsDir[_idx_];\n }\n#endif\n\n vec3 li = lc * ndl * shadowContrib;\n\n diffuseTerm += li;\n specularTerm += li * fresnelTerm * D_Phong(g, ndh);\n }}\n#endif\n\n\n#ifdef AMBIENT_CUBEMAP_LIGHT_COUNT\n vec3 L = reflect(-V, N);\n L = vec3(L.x, L[NORMAL_UP_AXIS], L[NORMAL_FRONT_AXIS]);\n float rough2 = clamp(1.0 - g, 0.0, 1.0);\n float bias2 = rough2 * 5.0;\n vec2 brdfParam2 = texture2D(ambientCubemapLightBRDFLookup[0], vec2(rough2, ndv)).xy;\n vec3 envWeight2 = specFactor * brdfParam2.x + brdfParam2.y;\n vec3 envTexel2;\n for(int _idx_ = 0; _idx_ < AMBIENT_CUBEMAP_LIGHT_COUNT; _idx_++)\n {{\n envTexel2 = RGBMDecode(textureCubeLodEXT(ambientCubemapLightCubemap[_idx_], L, bias2), 8.12);\n specularTerm += ambientCubemapLightColor[_idx_] * envTexel2 * envWeight2 * ao;\n }}\n#endif\n\n gl_FragColor.rgb = albedoColor.rgb * diffuseTerm + specularTerm;\n gl_FragColor.a = albedoColor.a;\n\n#ifdef ATMOSPHERE_ENABLED\n float atmoIntensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor.rgb += glowColor * atmoIntensity;\n#endif\n\n#ifdef SRGB_ENCODE\n gl_FragColor = linearTosRGB(gl_FragColor);\n#endif\n\n @import ecgl.common.emissiveLayer.main\n\n @import ecgl.common.wireframe.fragmentMain\n}\n\n@end"),xr.import("@export ecgl.hatching.vertex\n\n@import ecgl.realistic.vertex\n\n@end\n\n\n@export ecgl.hatching.fragment\n\n#define NORMAL_UP_AXIS 1\n#define NORMAL_FRONT_AXIS 2\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform vec4 color : [0.0, 0.0, 0.0, 1.0];\nuniform vec4 paperColor : [1.0, 1.0, 1.0, 1.0];\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n#ifdef AMBIENT_LIGHT_COUNT\n@import clay.header.ambient_light\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n@import clay.header.ambient_sh_light\n#endif\n\n#ifdef DIRECTIONAL_LIGHT_COUNT\n@import clay.header.directional_light\n#endif\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\n\n@import ecgl.common.ssaoMap.header\n\n@import ecgl.common.bumpMap.header\n\n@import clay.util.srgb\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.plugin.compute_shadow_map\n\nuniform sampler2D hatch1;\nuniform sampler2D hatch2;\nuniform sampler2D hatch3;\nuniform sampler2D hatch4;\nuniform sampler2D hatch5;\nuniform sampler2D hatch6;\n\nfloat shade(in float tone) {\n vec4 c = vec4(1. ,1., 1., 1.);\n float step = 1. / 6.;\n vec2 uv = v_DetailTexcoord;\n if (tone <= step / 2.0) {\n c = mix(vec4(0.), texture2D(hatch6, uv), 12. * tone);\n }\n else if (tone <= step) {\n c = mix(texture2D(hatch6, uv), texture2D(hatch5, uv), 6. * tone);\n }\n if(tone > step && tone <= 2. * step){\n c = mix(texture2D(hatch5, uv), texture2D(hatch4, uv) , 6. * (tone - step));\n }\n if(tone > 2. * step && tone <= 3. * step){\n c = mix(texture2D(hatch4, uv), texture2D(hatch3, uv), 6. * (tone - 2. * step));\n }\n if(tone > 3. * step && tone <= 4. * step){\n c = mix(texture2D(hatch3, uv), texture2D(hatch2, uv), 6. * (tone - 3. * step));\n }\n if(tone > 4. * step && tone <= 5. * step){\n c = mix(texture2D(hatch2, uv), texture2D(hatch1, uv), 6. * (tone - 4. * step));\n }\n if(tone > 5. * step){\n c = mix(texture2D(hatch1, uv), vec4(1.), 6. * (tone - 5. * step));\n }\n\n return c.r;\n}\n\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\n\nvoid main()\n{\n#ifdef SRGB_DECODE\n vec4 inkColor = sRGBToLinear(color);\n#else\n vec4 inkColor = color;\n#endif\n\n#ifdef VERTEX_COLOR\n #ifdef SRGB_DECODE\n inkColor *= sRGBToLinear(v_Color);\n #else\n inkColor *= v_Color;\n #endif\n#endif\n\n vec3 N = v_Normal;\n#ifdef DOUBLE_SIDED\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n\n if (dot(N, V) < 0.0) {\n N = -N;\n }\n#endif\n\n float tone = 0.0;\n\n float ambientFactor = 1.0;\n\n#ifdef BUMPMAP_ENABLED\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n ambientFactor = dot(v_Normal, N);\n#endif\n\n vec3 N2 = vec3(N.x, N[NORMAL_UP_AXIS], N[NORMAL_FRONT_AXIS]);\n\n @import ecgl.common.ssaoMap.main\n\n#ifdef AMBIENT_LIGHT_COUNT\n for(int i = 0; i < AMBIENT_LIGHT_COUNT; i++)\n {\n tone += dot(ambientLightColor[i], w) * ambientFactor * ao;\n }\n#endif\n#ifdef AMBIENT_SH_LIGHT_COUNT\n for(int _idx_ = 0; _idx_ < AMBIENT_SH_LIGHT_COUNT; _idx_++)\n {{\n tone += dot(calcAmbientSHLight(_idx_, N2) * ambientSHLightColor[_idx_], w) * ao;\n }}\n#endif\n#ifdef DIRECTIONAL_LIGHT_COUNT\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n float shadowContribsDir[DIRECTIONAL_LIGHT_COUNT];\n if(shadowEnabled)\n {\n computeShadowOfDirectionalLights(v_WorldPosition, shadowContribsDir);\n }\n#endif\n for(int i = 0; i < DIRECTIONAL_LIGHT_COUNT; i++)\n {\n vec3 lightDirection = -directionalLightDirection[i];\n float lightTone = dot(directionalLightColor[i], w);\n\n float shadowContrib = 1.0;\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n if (shadowEnabled)\n {\n shadowContrib = shadowContribsDir[i];\n }\n#endif\n\n float ndl = dot(N, normalize(lightDirection)) * shadowContrib;\n\n tone += lightTone * clamp(ndl, 0.0, 1.0);\n }\n#endif\n\n gl_FragColor = mix(inkColor, paperColor, shade(clamp(tone, 0.0, 1.0)));\n }\n@end\n"),xr.import("@export ecgl.sm.depth.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nattribute vec3 position : POSITION;\nattribute vec2 texcoord : TEXCOORD_0;\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nuniform float percent : 1.0;\n#endif\n\nvarying vec4 v_ViewPosition;\nvarying vec2 v_Texcoord;\n\nvoid main(){\n\n#ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n#else\n vec3 pos = position;\n#endif\n\n v_ViewPosition = worldViewProjection * vec4(pos, 1.0);\n gl_Position = v_ViewPosition;\n\n v_Texcoord = texcoord;\n\n}\n@end\n\n\n\n@export ecgl.sm.depth.fragment\n\n@import clay.sm.depth.fragment\n\n@end");var Xa=Cn.prototype.addToScene,qa=Cn.prototype.removeFromScene;Cn.prototype.addToScene=function(e){if(Xa.call(this,e),this.__zr){var t=this.__zr;e.traverse(function(e){e.__zr=t,e.addAnimatorsToZr&&e.addAnimatorsToZr(t)})}},Cn.prototype.removeFromScene=function(e){qa.call(this,e),e.traverse(function(e){var t=e.__zr;e.__zr=null,t&&e.removeAnimatorsFromZr&&e.removeAnimatorsFromZr(t)})},kt.prototype.setTextureImage=function(e,t,r,i){if(this.shader){var n,a,o=r.getZr(),s=this;return s.autoUpdateTextureStatus=!1,s.disableTexture(e),(a=t)&&"none"!==a&&(n=Za.loadTexture(t,r,i,function(t){s.enableTexture(e),o&&o.refresh()}),s.set(e,n)),n}};var Za={};Za.Renderer=Br,Za.Node=Ei,Za.Mesh=Fi,Za.Shader=xr,Za.Material=kt,Za.Texture=zi,Za.Texture2D=Vi,Za.Geometry=$i,Za.SphereGeometry=La,Za.PlaneGeometry=Yn,Za.CubeGeometry=Qn,Za.AmbientLight=Pa,Za.DirectionalLight=Oa,Za.PointLight=Na,Za.SpotLight=Ra,Za.PerspectiveCamera=In,Za.OrthographicCamera=ma,Za.Vector2=Zt,Za.Vector3=Fr,Za.Vector4=Ia,Za.Quaternion=di,Za.Matrix2=Ga,Za.Matrix2d=Ha,Za.Matrix3=Va,Za.Matrix4=hi,Za.Plane=dn,Za.Ray=Qr,Za.BoundingBox=wi,Za.Frustum=yn;var Ya=null;function Ka(e){return Math.pow(2,Math.round(Math.log(e)/Math.LN2))}function Qa(e){if((e.wrapS===zi.REPEAT||e.wrapT===zi.REPEAT)&&e.image){var t=Ka(e.width),r=Ka(e.height);if(t!==e.width||r!==e.height){var i=document.createElement("canvas");i.width=t,i.height=r,i.getContext("2d").drawImage(e.image,0,0,t,r),e.image=i}}}Za.loadTexture=function(e,t,r,n){"function"==typeof r&&(n=r,r={}),r=r||{};for(var a=Object.keys(r).sort(),o="",s=0;s3?t[3]=e[3]:t[3]=1,t):((t=n(e||"#000",t)||[0,0,0,0])[0]/=255,t[1]/=255,t[2]/=255,t)},Za.directionFromAlphaBeta=function(e,t){var r=e/180*Math.PI+Math.PI/2,i=-t/180*Math.PI+Math.PI/2,n=[],a=Math.sin(r);return n[0]=a*Math.cos(i),n[1]=-Math.cos(r),n[2]=a*Math.sin(i),n},Za.getShadowResolution=function(e){var t=1024;switch(e){case"low":t=512;break;case"medium":break;case"high":t=2048;break;case"ultra":t=4096}return t},Za.COMMON_SHADERS=["lambert","color","realistic","hatching","shadow"],Za.createShader=function(e){"ecgl.shadow"===e&&(e="ecgl.displayShadow");var t=xr.source(e+".vertex"),r=xr.source(e+".fragment");t||console.error("Vertex shader of '%s' not exits",e),r||console.error("Fragment shader of '%s' not exits",e);var i=new xr(t,r);return i.name=e,i},Za.createMaterial=function(e,t){t instanceof Array||(t=[t]);var r=Za.createShader(e),i=new kt({shader:r});return t.forEach(function(e){"string"==typeof e&&i.define(e)}),i},Za.setMaterialFromModel=function(e,t,r,i){t.autoUpdateTextureStatus=!1;var n=r.getModel(e+"Material"),a=n.get("detailTexture"),o=Da(n.get("textureTiling"),1),s=Da(n.get("textureOffset"),0);"number"==typeof o&&(o=[o,o]),"number"==typeof s&&(s=[s,s]);var l=o[0]>1||o[1]>1?Za.Texture.REPEAT:Za.Texture.CLAMP_TO_EDGE,h={anisotropic:8,wrapS:l,wrapT:l};if("realistic"===e){var u=n.get("roughness"),c=n.get("metalness");null!=c?isNaN(c)&&(t.setTextureImage("metalnessMap",c,i,h),c=Da(n.get("metalnessAdjust"),.5)):c=0,null!=u?isNaN(u)&&(t.setTextureImage("roughnessMap",u,i,h),u=Da(n.get("roughnessAdjust"),.5)):u=.5;var d=n.get("normalTexture");t.setTextureImage("detailMap",a,i,h),t.setTextureImage("normalMap",d,i,h),t.set({roughness:u,metalness:c,detailUvRepeat:o,detailUvOffset:s})}else if("lambert"===e)t.setTextureImage("detailMap",a,i,h),t.set({detailUvRepeat:o,detailUvOffset:s});else if("color"===e)t.setTextureImage("detailMap",a,i,h),t.set({detailUvRepeat:o,detailUvOffset:s});else if("hatching"===e){var f=n.get("hatchingTextures")||[];f.length;for(var p=0;p<6;p++)t.setTextureImage("hatch"+(p+1),f[p],i,{anisotropic:8,wrapS:Za.Texture.REPEAT,wrapT:Za.Texture.REPEAT});t.set({detailUvRepeat:o,detailUvOffset:s})}},Za.updateVertexAnimation=function(e,t,r,i){var n=i.get("animation"),a=i.get("animationDurationUpdate"),o=i.get("animationEasingUpdate"),s=r.shadowDepthMaterial;if(n&&t&&a>0&&t.geometry.vertexCount===r.geometry.vertexCount){r.material.define("vertex","VERTEX_ANIMATION"),r.ignorePreZ=!0,s&&s.define("vertex","VERTEX_ANIMATION");for(var l=0;l=0&&this._viewsToDispose.splice(t,1),this.views.push(e),e.layer=this;var r=this.zr;e.scene.traverse(function(e){e.__zr=r,e.addAnimatorsToZr&&e.addAnimatorsToZr(r)})}},Ja.prototype.removeView=function(e){if(e.layer===this){var t=this.views.indexOf(e);t>=0&&(this.views.splice(t,1),e.scene.traverse($a,this),e.layer=null,this._viewsToDispose.push(e))}},Ja.prototype.removeViewsAll=function(){this.views.forEach(function(e){e.scene.traverse($a,this),e.layer=null,this._viewsToDispose.push(e)},this),this.views.length=0},Ja.prototype.resize=function(e,t){this.renderer.resize(e,t)},Ja.prototype.clear=function(){var e=this.renderer.gl,t=this._backgroundColor||[0,0,0,0];e.clearColor(t[0],t[1],t[2],t[3]),e.depthMask(!0),e.colorMask(!0,!0,!0,!0),e.clear(e.DEPTH_BUFFER_BIT|e.COLOR_BUFFER_BIT)},Ja.prototype.clearDepth=function(){var e=this.renderer.gl;e.clear(e.DEPTH_BUFFER_BIT)},Ja.prototype.clearColor=function(){var e=this.renderer.gl;e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)},Ja.prototype.needsRefresh=function(){this.zr.refresh()},Ja.prototype.refresh=function(e){this._backgroundColor=e?Za.parseColor(e):[0,0,0,0],this.renderer.clearColor=this._backgroundColor;for(var t=0;t20)){e=e.event;var i=this.pickObject(e.offsetX,e.offsetY);i&&(this._dispatchEvent(e.type,e,i),this._dispatchDataEvent(e.type,e,i));var n=this._clickToSetFocusPoint(e);if(n)n.view.setDOFFocusOnPoint(n.distance)&&this.zr.refresh()}}},Ja.prototype._clickToSetFocusPoint=function(e){for(var t=this.renderer,r=t.viewport,i=this.views.length-1;i>=0;i--){var n=this.views[i];if(n.hasDOF()&&n.containPoint(e.offsetX,e.offsetY)){this._picking.scene=n.scene,this._picking.camera=n.camera,t.viewport=n.viewport;var a=this._picking.pick(e.offsetX,e.offsetY,!0);if(a)return a.view=n,a}}t.viewport=r},Ja.prototype.onglobalout=function(e){var t=this._hovered;t&&this._dispatchEvent("mouseout",e,{target:t.target})},Ja.prototype.pickObject=function(e,t){for(var r=[],i=this.renderer,n=i.viewport,a=0;a=0&&(c.dataIndex=this._lastDataIndex,c.seriesIndex=this._lastSeriesIndex,this.zr.handler.dispatchToElement(u,"mouseout",t)),l=!0):null!=s&&s!==this._lastEventData&&(null!=this._lastEventData&&(c.eventData=this._lastEventData,this.zr.handler.dispatchToElement(u,"mouseout",t)),l=!0),this._lastEventData=s,this._lastDataIndex=n,this._lastSeriesIndex=a),c.eventData=s,c.dataIndex=n,c.seriesIndex=a,(null!=s||parseInt(n,10)>=0&&parseInt(a,10)>=0)&&(this.zr.handler.dispatchToElement(u,e,t),l&&this.zr.handler.dispatchToElement(u,"mouseover",t))},Ja.prototype._dispatchToView=function(e,t){for(var r=0;re&&o=0&&(!function(e){oo(e,"itemStyle"),oo(e,"lineStyle"),oo(e,"areaStyle"),oo(e,"label")}(t),"mapbox"===t.coordinateSystem&&(t.coordinateSystem="mapbox3D",e.mapbox3D=e.mapbox))}),so(e.xAxis3D),so(e.yAxis3D),so(e.zAxis3D),so(e.grid3D),oo(e.geo3D)});const ho={defaultOption:{viewControl:{projection:"perspective",autoRotate:!1,autoRotateDirection:"cw",autoRotateSpeed:10,autoRotateAfterStill:3,damping:.8,rotateSensitivity:1,zoomSensitivity:1,panSensitivity:1,panMouseButton:"middle",rotateMouseButton:"left",distance:150,minDistance:40,maxDistance:400,orthographicSize:150,maxOrthographicSize:400,minOrthographicSize:20,center:[0,0,0],alpha:0,beta:0,minAlpha:-90,maxAlpha:90}},setView:function(e){e=e||{},this.option.viewControl=this.option.viewControl||{},null!=e.alpha&&(this.option.viewControl.alpha=e.alpha),null!=e.beta&&(this.option.viewControl.beta=e.beta),null!=e.distance&&(this.option.viewControl.distance=e.distance),null!=e.center&&(this.option.viewControl.center=e.center)}},uo={defaultOption:{postEffect:{enable:!1,bloom:{enable:!0,intensity:.1},depthOfField:{enable:!1,focalRange:20,focalDistance:50,blurRadius:10,fstop:2.8,quality:"medium"},screenSpaceAmbientOcclusion:{enable:!1,radius:2,quality:"medium",intensity:1},screenSpaceReflection:{enable:!1,quality:"medium",maxRoughness:.8},colorCorrection:{enable:!0,exposure:0,brightness:0,contrast:1,saturation:1,lookupTexture:""},edge:{enable:!1},FXAA:{enable:!1}},temporalSuperSampling:{enable:"auto"}}},co={defaultOption:{light:{main:{shadow:!1,shadowQuality:"high",color:"#fff",intensity:1,alpha:0,beta:0},ambient:{color:"#fff",intensity:.2},ambientCubemap:{texture:null,exposure:1,diffuseIntensity:.5,specularIntensity:.5}}}};var fo=p.extend({type:"grid3D",dependencies:["xAxis3D","yAxis3D","zAxis3D"],defaultOption:{show:!0,zlevel:-10,left:0,top:0,width:"100%",height:"100%",environment:"auto",boxWidth:100,boxHeight:100,boxDepth:100,axisPointer:{show:!0,lineStyle:{color:"rgba(0, 0, 0, 0.8)",width:1},label:{show:!0,formatter:null,margin:8,textStyle:{fontSize:14,color:"#fff",backgroundColor:"rgba(0,0,0,0.5)",padding:3,borderRadius:3}}},axisLine:{show:!0,lineStyle:{color:"#333",width:2,type:"solid"}},axisTick:{show:!0,inside:!1,length:3,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,margin:8,textStyle:{fontSize:12}},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}},light:{main:{alpha:30,beta:40},ambient:{intensity:.4}},viewControl:{alpha:20,beta:40,autoRotate:!1,distance:200,minDistance:40,maxDistance:400}}});m(fo.prototype,ho),m(fo.prototype,uo),m(fo.prototype,co);var po=Da,mo={left:0,middle:1,right:2};function go(e){return e instanceof Array||(e=[e,e]),e}var _o=xe.extend(function(){return{zr:null,viewGL:null,_center:new Fr,minDistance:.5,maxDistance:1.5,maxOrthographicSize:300,minOrthographicSize:30,minAlpha:-90,maxAlpha:90,minBeta:-1/0,maxBeta:1/0,autoRotateAfterStill:0,autoRotateDirection:"cw",autoRotateSpeed:60,damping:.8,rotateSensitivity:1,zoomSensitivity:1,panSensitivity:1,panMouseButton:"middle",rotateMouseButton:"left",_mode:"rotate",_camera:null,_needsUpdate:!1,_rotating:!1,_phi:0,_theta:0,_mouseX:0,_mouseY:0,_rotateVelocity:new Zt,_panVelocity:new Zt,_distance:500,_zoomSpeed:0,_stillTimeout:0,_animators:[]}},function(){["_mouseDownHandler","_mouseWheelHandler","_mouseMoveHandler","_mouseUpHandler","_pinchHandler","_contextMenuHandler","_update"].forEach(function(e){this[e]=this[e].bind(this)},this)},{init:function(){var e=this.zr;e&&(e.on("mousedown",this._mouseDownHandler),e.on("globalout",this._mouseUpHandler),e.on("mousewheel",this._mouseWheelHandler),e.on("pinch",this._pinchHandler),e.animation.on("frame",this._update),e.dom.addEventListener("contextmenu",this._contextMenuHandler))},dispose:function(){var e=this.zr;e&&(e.off("mousedown",this._mouseDownHandler),e.off("mousemove",this._mouseMoveHandler),e.off("mouseup",this._mouseUpHandler),e.off("mousewheel",this._mouseWheelHandler),e.off("pinch",this._pinchHandler),e.off("globalout",this._mouseUpHandler),e.dom.removeEventListener("contextmenu",this._contextMenuHandler),e.animation.off("frame",this._update)),this.stopAllAnimation()},getDistance:function(){return this._distance},setDistance:function(e){this._distance=e,this._needsUpdate=!0},getOrthographicSize:function(){return this._orthoSize},setOrthographicSize:function(e){this._orthoSize=e,this._needsUpdate=!0},getAlpha:function(){return this._theta/Math.PI*180},getBeta:function(){return-this._phi/Math.PI*180},getCenter:function(){return this._center.toArray()},setAlpha:function(e){e=Math.max(Math.min(this.maxAlpha,e),this.minAlpha),this._theta=e/180*Math.PI,this._needsUpdate=!0},setBeta:function(e){e=Math.max(Math.min(this.maxBeta,e),this.minBeta),this._phi=-e/180*Math.PI,this._needsUpdate=!0},setCenter:function(e){this._center.setArray(e)},setViewGL:function(e){this.viewGL=e},getCamera:function(){return this.viewGL.camera},setFromViewControlModel:function(e,t){var r=(t=t||{}).baseDistance||0,i=t.baseOrthoSize||1,n=e.get("projection");"perspective"!==n&&"orthographic"!==n&&"isometric"!==n&&(n="perspective"),this._projection=n,this.viewGL.setProjection(n);var a=e.get("distance")+r,o=e.get("orthographicSize")+i;[["damping",.8],["autoRotate",!1],["autoRotateAfterStill",3],["autoRotateDirection","cw"],["autoRotateSpeed",10],["minDistance",30],["maxDistance",400],["minOrthographicSize",30],["maxOrthographicSize",300],["minAlpha",-90],["maxAlpha",90],["minBeta",-1/0],["maxBeta",1/0],["rotateSensitivity",1],["zoomSensitivity",1],["panSensitivity",1],["panMouseButton","left"],["rotateMouseButton","middle"]].forEach(function(t){this[t[0]]=po(e.get(t[0]),t[1])},this),this.minDistance+=r,this.maxDistance+=r,this.minOrthographicSize+=i,this.maxOrthographicSize+=i;var s=e.ecModel,l={};["animation","animationDurationUpdate","animationEasingUpdate"].forEach(function(t){l[t]=po(e.get(t),s&&s.get(t))});var h=po(t.alpha,e.get("alpha"))||0,u=po(t.beta,e.get("beta"))||0,c=po(t.center,e.get("center"))||[0,0,0];l.animation&&l.animationDurationUpdate>0&&this._notFirst?this.animateTo({alpha:h,beta:u,center:c,distance:a,orthographicSize:o,easing:l.animationEasingUpdate,duration:l.animationDurationUpdate}):(this.setDistance(a),this.setAlpha(h),this.setBeta(u),this.setCenter(c),this.setOrthographicSize(o)),this._notFirst=!0,this._validateProperties()},_validateProperties:function(){},animateTo:function(e){var t=this.zr,r=this,i={},n={};return null!=e.distance&&(i.distance=this.getDistance(),n.distance=e.distance),null!=e.orthographicSize&&(i.orthographicSize=this.getOrthographicSize(),n.orthographicSize=e.orthographicSize),null!=e.alpha&&(i.alpha=this.getAlpha(),n.alpha=e.alpha),null!=e.beta&&(i.beta=this.getBeta(),n.beta=e.beta),null!=e.center&&(i.center=this.getCenter(),n.center=e.center),this._addAnimator(t.animation.animate(i).when(e.duration||1e3,n).during(function(){null!=i.alpha&&r.setAlpha(i.alpha),null!=i.beta&&r.setBeta(i.beta),null!=i.distance&&r.setDistance(i.distance),null!=i.center&&r.setCenter(i.center),null!=i.orthographicSize&&r.setOrthographicSize(i.orthographicSize),r._needsUpdate=!0})).start(e.easing||"linear")},stopAllAnimation:function(){for(var e=0;e0},_update:function(e){if(this._rotating){var t=("cw"===this.autoRotateDirection?1:-1)*this.autoRotateSpeed/180*Math.PI;this._phi-=t*e/1e3,this._needsUpdate=!0}else this._rotateVelocity.len()>0&&(this._needsUpdate=!0);(Math.abs(this._zoomSpeed)>.1||this._panVelocity.len()>0)&&(this._needsUpdate=!0),this._needsUpdate&&(e=Math.min(e,50),this._updateDistanceOrSize(e),this._updatePan(e),this._updateRotate(e),this._updateTransform(),this.getCamera().update(),this.zr&&this.zr.refresh(),this.trigger("update"),this._needsUpdate=!1)},_updateRotate:function(e){var t=this._rotateVelocity;this._phi=t.y*e/20+this._phi,this._theta=t.x*e/20+this._theta,this.setAlpha(this.getAlpha()),this.setBeta(this.getBeta()),this._vectorDamping(t,Math.pow(this.damping,e/16))},_updateDistanceOrSize:function(e){"perspective"===this._projection?this._setDistance(this._distance+this._zoomSpeed*e/20):this._setOrthoSize(this._orthoSize+this._zoomSpeed*e/20),this._zoomSpeed*=Math.pow(this.damping,e/16)},_setDistance:function(e){this._distance=Math.max(Math.min(e,this.maxDistance),this.minDistance)},_setOrthoSize:function(e){this._orthoSize=Math.max(Math.min(e,this.maxOrthographicSize),this.minOrthographicSize);var t=this.getCamera(),r=this._orthoSize,i=r/this.viewGL.viewport.height*this.viewGL.viewport.width;t.left=-i/2,t.right=i/2,t.top=r/2,t.bottom=-r/2},_updatePan:function(e){var t=this._panVelocity,r=this._distance,i=this.getCamera(),n=i.worldTransform.y,a=i.worldTransform.x;this._center.scaleAndAdd(a,-t.x*r/200).scaleAndAdd(n,-t.y*r/200),this._vectorDamping(t,0)},_updateTransform:function(){var e=this.getCamera(),t=new Fr,r=this._theta+Math.PI/2,i=this._phi+Math.PI/2,n=Math.sin(r);t.x=n*Math.cos(i),t.y=-Math.cos(r),t.z=n*Math.sin(i),e.position.copy(this._center).scaleAndAdd(t,this._distance),e.rotation.identity().rotateY(-this._phi).rotateX(-this._theta)},_startCountingStill:function(){clearTimeout(this._stillTimeout);var e=this.autoRotateAfterStill,t=this;!isNaN(e)&&e>0&&(this._stillTimeout=setTimeout(function(){t._rotating=!0},1e3*e))},_vectorDamping:function(e,t){var r=e.len();(r*=t)<1e-4&&(r=0),e.normalize().scale(r)},_decomposeTransform:function(){if(this.getCamera()){this.getCamera().updateWorldTransform();var e=this.getCamera().worldTransform.z,t=Math.asin(e.y),r=Math.atan2(e.x,e.z);this._theta=t,this._phi=-r,this.setBeta(this.getBeta()),this.setAlpha(this.getAlpha()),this.getCamera().aspect?this._setDistance(this.getCamera().position.dist(this._center)):this._setOrthoSize(this.getCamera().top-this.getCamera().bottom)}},_mouseDownHandler:function(e){if(!e.target&&!this._isAnimating()){var t=e.offsetX,r=e.offsetY;this.viewGL&&!this.viewGL.containPoint(t,r)||(this.zr.on("mousemove",this._mouseMoveHandler),this.zr.on("mouseup",this._mouseUpHandler),e.event.targetTouches?1===e.event.targetTouches.length&&(this._mode="rotate"):e.event.button===mo[this.rotateMouseButton]?this._mode="rotate":e.event.button===mo[this.panMouseButton]?this._mode="pan":this._mode="",this._rotateVelocity.set(0,0),this._rotating=!1,this.autoRotate&&this._startCountingStill(),this._mouseX=e.offsetX,this._mouseY=e.offsetY)}},_mouseMoveHandler:function(e){if(!(e.target&&e.target.__isGLToZRProxy||this._isAnimating())){var t=go(this.panSensitivity),r=go(this.rotateSensitivity);"rotate"===this._mode?(this._rotateVelocity.y=(e.offsetX-this._mouseX)/this.zr.getHeight()*2*r[0],this._rotateVelocity.x=(e.offsetY-this._mouseY)/this.zr.getWidth()*2*r[1]):"pan"===this._mode&&(this._panVelocity.x=(e.offsetX-this._mouseX)/this.zr.getWidth()*t[0]*400,this._panVelocity.y=(-e.offsetY+this._mouseY)/this.zr.getHeight()*t[1]*400),this._mouseX=e.offsetX,this._mouseY=e.offsetY,e.event.preventDefault()}},_mouseWheelHandler:function(e){if(!this._isAnimating()){var t=e.event.wheelDelta||-e.event.detail;this._zoomHandler(e,t)}},_pinchHandler:function(e){this._isAnimating()||(this._zoomHandler(e,e.pinchScale>1?1:-1),this._mode="")},_zoomHandler:function(e,t){if(0!==t){var r,i=e.offsetX,n=e.offsetY;if(!this.viewGL||this.viewGL.containPoint(i,n))r="perspective"===this._projection?Math.max(Math.max(Math.min(this._distance-this.minDistance,this.maxDistance-this._distance))/20,.5):Math.max(Math.max(Math.min(this._orthoSize-this.minOrthographicSize,this.maxOrthographicSize-this._orthoSize))/20,.5),this._zoomSpeed=(t>0?-1:1)*r*this.zoomSensitivity,this._rotating=!1,this.autoRotate&&"rotate"===this._mode&&this._startCountingStill(),e.event.preventDefault()}},_mouseUpHandler:function(){this.zr.off("mousemove",this._mouseMoveHandler),this.zr.off("mouseup",this._mouseUpHandler)},_isRightMouseButtonUsed:function(){return"right"===this.rotateMouseButton||"right"===this.panMouseButton},_contextMenuHandler:function(e){this._isRightMouseButtonUsed()&&e.preventDefault()},_addAnimator:function(e){var t=this._animators;return t.push(e),e.done(function(){var r=t.indexOf(e);r>=0&&t.splice(r,1)}),e}});Object.defineProperty(_o.prototype,"autoRotate",{get:function(e){return this._autoRotate},set:function(e){this._autoRotate=e,this._rotating=e}});const vo={convertToDynamicArray:function(e){e&&this.resetOffset();var t=this.attributes;for(var r in t)e||!t[r].value?t[r].value=[]:t[r].value=Array.prototype.slice.call(t[r].value);e||!this.indices?this.indices=[]:this.indices=Array.prototype.slice.call(this.indices)},convertToTypedArray:function(){var e=this.attributes;for(var t in e)e[t].value&&e[t].value.length>0?e[t].value=new Float32Array(e[t].value):e[t].value=null;this.indices&&this.indices.length>0&&(this.indices=this.vertexCount>65535?new Uint32Array(this.indices):new Uint16Array(this.indices)),this.dirty()}},yo={vec2:qt,vec3:Mr,vec4:Jr,mat3:$r,mat4:Sr};var xo=yo.vec3,bo=[[0,0],[1,1]],To=$i.extend(function(){return{segmentScale:1,dynamic:!0,useNativeLine:!0,attributes:{position:new $i.Attribute("position","float",3,"POSITION"),positionPrev:new $i.Attribute("positionPrev","float",3),positionNext:new $i.Attribute("positionNext","float",3),prevPositionPrev:new $i.Attribute("prevPositionPrev","float",3),prevPosition:new $i.Attribute("prevPosition","float",3),prevPositionNext:new $i.Attribute("prevPositionNext","float",3),offset:new $i.Attribute("offset","float",1),color:new $i.Attribute("color","float",4,"COLOR")}}},{resetOffset:function(){this._vertexOffset=0,this._triangleOffset=0,this._itemVertexOffsets=[]},setVertexCount:function(e){var t=this.attributes;this.vertexCount!==e&&(t.position.init(e),t.color.init(e),this.useNativeLine||(t.positionPrev.init(e),t.positionNext.init(e),t.offset.init(e)),e>65535?this.indices instanceof Uint16Array&&(this.indices=new Uint32Array(this.indices)):this.indices instanceof Uint32Array&&(this.indices=new Uint16Array(this.indices)))},setTriangleCount:function(e){this.triangleCount!==e&&(this.indices=0===e?null:this.vertexCount>65535?new Uint32Array(3*e):new Uint16Array(3*e))},_getCubicCurveApproxStep:function(e,t,r,i){return 1/(xo.dist(e,t)+xo.dist(r,t)+xo.dist(i,r)+1)*this.segmentScale},getCubicCurveVertexCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?2*a:2*a+2},getCubicCurveTriangleCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?0:2*a},getLineVertexCount:function(){return this.getPolylineVertexCount(bo)},getLineTriangleCount:function(){return this.getPolylineTriangleCount(bo)},getPolylineVertexCount:function(e){var t;"number"==typeof e?t=e:t="number"!=typeof e[0]?e.length:e.length/3;return this.useNativeLine?2*(t-1):2*(t-1)+2},getPolylineTriangleCount:function(e){var t;"number"==typeof e?t=e:t="number"!=typeof e[0]?e.length:e.length/3;return this.useNativeLine?0:2*Math.max(t-1,0)},addCubicCurve:function(e,t,r,i,n,a){null==a&&(a=1);var o=e[0],s=e[1],l=e[2],h=t[0],u=t[1],c=t[2],d=r[0],f=r[1],p=r[2],m=i[0],g=i[1],_=i[2],v=this._getCubicCurveApproxStep(e,t,r,i),y=v*v,x=y*v,b=3*v,T=3*y,w=6*y,S=6*x,M=o-2*h+d,A=s-2*u+f,E=l-2*c+p,D=3*(h-d)-o+m,C=3*(u-f)-s+g,L=3*(c-p)-l+_,P=o,O=s,N=l,R=(h-o)*b+M*T+D*x,I=(u-s)*b+A*T+C*x,B=(c-l)*b+E*T+L*x,z=M*w+D*S,F=A*w+C*S,G=E*w+L*S,U=D*S,H=C*S,V=L*S,k=0,W=0,j=Math.ceil(1/v),X=new Float32Array(3*(j+1)),q=(X=[],0);for(W=0;W1&&(P=R>0?Math.min(P,m):Math.max(P,m),O=I>0?Math.min(O,g):Math.max(O,g),N=B>0?Math.min(N,_):Math.max(N,_));return this.addPolyline(X,n,a)},addLine:function(e,t,r,i){return this.addPolyline([e,t],r,i)},addPolyline:function(e,t,r,i,n){if(e.length){var a="number"!=typeof e[0];if(null==n&&(n=a?e.length:e.length/3),!(n<2)){null==i&&(i=0),null==r&&(r=1),this._itemVertexOffsets.push(this._vertexOffset);var o,s,l=(a="number"!=typeof e[0])?"number"!=typeof t[0]:t.length/4===n,h=this.attributes.position,u=this.attributes.positionPrev,c=this.attributes.positionNext,d=this.attributes.color,f=this.attributes.offset,p=this.indices,m=this._vertexOffset;r=Math.max(r,.01);for(var g=i;g1&&(h.copy(m,m-1),d.copy(m,m-1),m++):(g0&&(c.set(m-2,o),c.set(m-1,o)),h.set(m,o),h.set(m+1,o),d.set(m,s),d.set(m+1,s),f.set(m,r/2),f.set(m+1,-r/2),m+=2),this.useNativeLine)d.set(m,s),h.set(m,o),m++;else if(g>0){var y=3*this._triangleOffset;(p=this.indices)[y]=m-4,p[y+1]=m-3,p[y+2]=m-2,p[y+3]=m-3,p[y+4]=m-1,p[y+5]=m-2,this._triangleOffset+=2}}if(!this.useNativeLine){var x=this._vertexOffset,b=this._vertexOffset+2*n;u.copy(x,x+2),u.copy(x+1,x+3),c.copy(b-1,b-3),c.copy(b-2,b-4)}return this._vertexOffset=m,this._vertexOffset}}},setItemColor:function(e,t){for(var r=this._itemVertexOffsets[e],i=eo&&(n=this._x=0,a+=this._rowHeight+l,this._y=a,this._rowHeight=0),this._x+=t+l,this._rowHeight=Math.max(this._rowHeight,r),a+r+l>s)return null;e.x+=this.offsetX*this.dpr+n,e.y+=this.offsetY*this.dpr+a,this._zr.add(e);var h=[this.offsetX/this.width,this.offsetY/this.height];return[[n/o+h[0],a/s+h[1]],[(n+t)/o+h[0],(a+r)/s+h[1]]]},_fitElement:function(e,t,r){var i=e.getBoundingRect(),n=t/i.width,a=r/i.height;e.x=-i.x*n,e.y=-i.y*a,e.scaleX=n,e.scaleY=a,e.update()}},So.prototype={clear:function(){for(var e=0;e=e)){var n=(r+this._nodeWidth)*this._dpr,a=(i+this._nodeHeight)*this._dpr;try{this._zr.resize({width:n,height:a})}catch(s){this._canvas.width=n,this._canvas.height=a}var o=new wo(this._zr,r,i,this._nodeWidth,this._nodeHeight,this._gap,this._dpr);return this._textureAtlasNodes.push(o),o}},add:function(e,t,r){if(this._coords[e.id])return this._coords[e.id];var i=this._getCurrentNode().add(e,t,r);if(!i){var n=this._expand();if(!n)return;i=n.add(e,t,r)}return this._coords[e.id]=i,i},getCoordsScale:function(){var e=this._dpr;return[this._nodeWidth/this._canvas.width*e,this._nodeHeight/this._canvas.height*e]},getCoords:function(e){return this._coords[e]},dispose:function(){this._zr.dispose()}},Mo.prototype={constructor:Mo,setScene:function(e){this._scene=e,this._skybox&&this._skybox.attachScene(this._scene)},initLight:function(e){this._lightRoot=e,this.mainLight=new Za.DirectionalLight({shadowBias:.005}),this.ambientLight=new Za.AmbientLight,e.add(this.mainLight),e.add(this.ambientLight)},dispose:function(){this._lightRoot&&(this._lightRoot.remove(this.mainLight),this._lightRoot.remove(this.ambientLight))},updateLight:function(e){var t=this.mainLight,r=this.ambientLight,i=e.getModel("light"),n=i.getModel("main"),a=i.getModel("ambient");t.intensity=n.get("intensity"),r.intensity=a.get("intensity"),t.color=Za.parseColor(n.get("color")).slice(0,3),r.color=Za.parseColor(a.get("color")).slice(0,3);var o=n.get("alpha")||0,s=n.get("beta")||0;t.position.setArray(Za.directionFromAlphaBeta(o,s)),t.lookAt(Za.Vector3.ZERO),t.castShadow=n.get("shadow"),t.shadowResolution=Za.getShadowResolution(n.get("shadowQuality"))},updateAmbientCubemap:function(e,t,r){var i=t.getModel("light.ambientCubemap"),n=i.get("texture");if(n){this._cubemapLightsCache=this._cubemapLightsCache||{};var a=this._cubemapLightsCache[n];if(!a){var o=this;a=this._cubemapLightsCache[n]=Za.createAmbientCubemap(i.option,e,r,function(){o._isSkyboxFromAmbientCubemap&&o._skybox.setEnvironmentMap(a.specular.cubemap),r.getZr().refresh()})}this._lightRoot.add(a.diffuse),this._lightRoot.add(a.specular),this._currentCubemapLights=a}else this._currentCubemapLights&&(this._lightRoot.remove(this._currentCubemapLights.diffuse),this._lightRoot.remove(this._currentCubemapLights.specular),this._currentCubemapLights=null)},updateSkybox:function(e,t,r){var i=t.get("environment"),o=this;var s=(o._skybox=o._skybox||new $n,o._skybox);if(i&&"none"!==i)if("auto"===i)if(this._isSkyboxFromAmbientCubemap=!0,this._currentCubemapLights){var l=this._currentCubemapLights.specular.cubemap;s.setEnvironmentMap(l),this._scene&&s.attachScene(this._scene),s.material.set("lod",3)}else this._skybox&&this._skybox.detachScene();else if("object"==typeof i&&i.colorStops||"string"==typeof i&&n(i)){this._isSkyboxFromAmbientCubemap=!1;var h=new Za.Texture2D({anisotropic:8,flipY:!1});s.setEnvironmentMap(h);var u=h.image=document.createElement("canvas");u.width=u.height=16;var c=u.getContext("2d"),d=new a({shape:{x:0,y:0,width:16,height:16},style:{fill:i}});v(c,d),s.attachScene(this._scene)}else{this._isSkyboxFromAmbientCubemap=!1;h=Za.loadTexture(i,r,{anisotropic:8,flipY:!1});s.setEnvironmentMap(h),s.attachScene(this._scene)}else this._skybox&&this._skybox.detachScene(this._scene),this._skybox=null;var f=t.coordinateSystem;if(this._skybox)if(!f||!f.viewGL||"auto"===i||i.match&&i.match(/.hdr$/))this._skybox.material.undefine("fragment","SRGB_DECODE");else{var p=f.viewGL.isLinearSpace()?"define":"undefine";this._skybox.material[p]("fragment","SRGB_DECODE")}}};var Ao,Eo,Do,Co,Lo=yo.vec3,Po=$i.extend(function(){return{segmentScale:1,useNativeLine:!0,attributes:{position:new $i.Attribute("position","float",3,"POSITION"),normal:new $i.Attribute("normal","float",3,"NORMAL"),color:new $i.Attribute("color","float",4,"COLOR")}}},{resetOffset:function(){this._vertexOffset=0,this._faceOffset=0},setQuadCount:function(e){var t=this.attributes,r=this.getQuadVertexCount()*e,i=this.getQuadTriangleCount()*e;this.vertexCount!==r&&(t.position.init(r),t.normal.init(r),t.color.init(r)),this.triangleCount!==i&&(this.indices=r>65535?new Uint32Array(3*i):new Uint16Array(3*i))},getQuadVertexCount:function(){return 4},getQuadTriangleCount:function(){return 2},addQuad:(Ao=Lo.create(),Eo=Lo.create(),Do=Lo.create(),Co=[0,3,1,3,2,1],function(e,t){var r=this.attributes.position,i=this.attributes.normal,n=this.attributes.color;Lo.sub(Ao,e[1],e[0]),Lo.sub(Eo,e[2],e[1]),Lo.cross(Do,Ao,Eo),Lo.normalize(Do,Do);for(var a=0;a<4;a++)r.set(this._vertexOffset+a,e[a]),n.set(this._vertexOffset+a,t),i.set(this._vertexOffset+a,Do);var o=3*this._faceOffset;for(a=0;a<6;a++)this.indices[o+a]=Co[a]+this._vertexOffset;this._vertexOffset+=4,this._faceOffset+=2})});g(Po.prototype,vo);var Oo=Da,No={x:0,y:2,z:1};function Ro(e,t,r){this.rootNode=new Za.Node;var i=new Za.Mesh({geometry:new To({useNativeLine:!1}),material:t,castShadow:!1,ignorePicking:!0,$ignorePicking:!0,renderOrder:1}),n=new Za.Mesh({geometry:new Po,material:r,castShadow:!1,culling:!1,ignorePicking:!0,$ignorePicking:!0,renderOrder:0});this.rootNode.add(n),this.rootNode.add(i),this.faceInfo=e,this.plane=new Za.Plane,this.linesMesh=i,this.quadsMesh=n}Ro.prototype.update=function(e,t,r){var i=e.coordinateSystem,n=[i.getAxis(this.faceInfo[0]),i.getAxis(this.faceInfo[1])],a=this.linesMesh.geometry,o=this.quadsMesh.geometry;a.convertToDynamicArray(!0),o.convertToDynamicArray(!0),this._updateSplitLines(a,n,e,r),this._udpateSplitAreas(o,n,e,r),a.convertToTypedArray(),o.convertToTypedArray();var s=i.getAxis(this.faceInfo[2]);!function(e,t,r,i){var n=[0,0,0],a=i<0?r.getExtentMin():r.getExtentMax();n[No[r.dim]]=a,e.position.setArray(n),e.rotation.identity(),t.distance=-Math.abs(a),t.normal.set(0,0,0),"x"===r.dim?(e.rotation.rotateY(i*Math.PI/2),t.normal.x=-i):"z"===r.dim?(e.rotation.rotateX(-i*Math.PI/2),t.normal.y=-i):(i>0&&e.rotation.rotateY(Math.PI),t.normal.z=-i)}(this.rootNode,this.plane,s,this.faceInfo[3])},Ro.prototype._updateSplitLines=function(e,r,i,n){var a=n.getDevicePixelRatio();r.forEach(function(n,o){var s=n.model,l=r[1-o].getExtent();if(!n.scale.isBlank()){var h=s.getModel("splitLine",i.getModel("splitLine"));if(h.get("show")){var u=h.getModel("lineStyle"),c=u.get("color"),d=Oo(u.get("opacity"),1),f=Oo(u.get("width"),1);c=t(c)?c:[c];for(var p=n.getTicksCoords({tickModel:h}),m=0,g=0;g65535?new Uint32Array(3*r):new Uint16Array(3*r))},setSpriteAlign:function(e,t,r,i,n){var a,o,s,l;switch(null==r&&(r="left"),null==i&&(i="top"),n=n||0,r){case"left":a=n,s=t[0]+n;break;case"center":case"middle":a=-t[0]/2,s=t[0]/2;break;case"right":a=-t[0]-n,s=-n}switch(i){case"bottom":o=n,l=t[1]+n;break;case"middle":o=-t[1]/2,l=t[1]/2;break;case"top":o=-t[1]-n,l=-n}var h=4*e,u=this.attributes.offset;u.set(h,[a,l]),u.set(h+1,[s,l]),u.set(h+2,[s,o]),u.set(h+3,[a,o])},addSprite:function(e,t,r,i,n,a){var o=this._vertexOffset;this.setSprite(this._vertexOffset/4,e,t,r,i,n,a);for(var s=0;si[1]?0:1,o=this._faces[2*r+a],s=this._faces[2*r+1-a];o.rootNode.invisible=!0,s.rootNode.invisible=!1}},_updateAxisLinePosition:function(){var e=this._model.coordinateSystem,t=e.getAxis("x"),r=e.getAxis("y"),i=e.getAxis("z"),n=i.getExtentMax(),a=i.getExtentMin(),o=t.getExtentMin(),s=t.getExtentMax(),l=r.getExtentMax(),h=r.getExtentMin(),u=this._axes[0].rootNode,c=this._axes[1].rootNode,d=this._axes[2].rootNode,f=this._faces,p=f[4].rootNode.invisible?h:l,m=f[2].rootNode.invisible?n:a,g=f[0].rootNode.invisible?o:s,_=f[2].rootNode.invisible?n:a,v=f[0].rootNode.invisible?s:o,y=f[4].rootNode.invisible?h:l;u.rotation.identity(),c.rotation.identity(),d.rotation.identity(),f[4].rootNode.invisible&&(this._axes[0].flipped=!0,u.rotation.rotateX(Math.PI)),f[0].rootNode.invisible&&(this._axes[1].flipped=!0,c.rotation.rotateZ(Math.PI)),f[4].rootNode.invisible&&(this._axes[2].flipped=!0,d.rotation.rotateY(Math.PI)),u.position.set(0,m,p),c.position.set(g,_,0),d.position.set(v,0,y),u.update(),c.update(),d.update(),this._updateAxisLabelAlign()},_updateAxisLabelAlign:function(){var e=this._control.getCamera(),t=[new Za.Vector4,new Za.Vector4],r=new Za.Vector4;this.groupGL.getWorldPosition(r),r.w=1,r.transformMat4(e.viewMatrix).transformMat4(e.projectionMatrix),r.x/=r.w,r.y/=r.w,this._axes.forEach(function(i){var n=i.axisLineCoords;i.labelsMesh.geometry;for(var a=0;ar.y?"bottom":"top"):(s="middle",o=u>r.x?"left":"right"),i.setSpriteAlign(o,s,this._api)},this)},_doShowAxisPointer:function(){this._axisPointerLineMesh.invisible&&(this._axisPointerLineMesh.invisible=!1,this._axisPointerLabelsMesh.invisible=!1,this._api.getZr().refresh())},_doHideAxisPointer:function(){this._axisPointerLineMesh.invisible||(this._axisPointerLineMesh.invisible=!0,this._axisPointerLabelsMesh.invisible=!0,this._api.getZr().refresh())},_updateAxisPointer:function(e){var t=this._model.coordinateSystem,r=t.dataToPoint(e),i=this._axisPointerLineMesh.geometry,n=this._model.getModel("axisPointer"),a=this._api.getDevicePixelRatio();function o(e){return Da(e.model.get("axisPointer.show"),n.get("show"))}function s(e){var t=e.model.getModel("axisPointer",n).getModel("lineStyle"),r=Za.parseColor(t.get("color")),i=ko(t.get("width"),1),a=ko(t.get("opacity"),1);return r[3]*=a,{color:r,lineWidth:i}}i.convertToDynamicArray(!0);for(var l=0;l 0.0) {\n if (texture2D(alphaMap, v_Texcoord).a <= alphaCutoff) {\n discard;\n }\n }\n#ifdef USE_VSM\n depth = depth * 0.5 + 0.5;\n float moment1 = depth;\n float moment2 = depth * depth;\n #ifdef SUPPORT_STANDARD_DERIVATIVES\n float dx = dFdx(depth);\n float dy = dFdy(depth);\n moment2 += 0.25*(dx*dx+dy*dy);\n #endif\n gl_FragColor = vec4(moment1, moment2, 0.0, 1.0);\n#else\n #ifdef SUPPORT_STANDARD_DERIVATIVES\n float dx = dFdx(depth);\n float dy = dFdy(depth);\n depth += sqrt(dx*dx + dy*dy) * slopeScale + bias;\n #else\n depth += bias;\n #endif\n gl_FragColor = encodeFloat(depth * 0.5 + 0.5);\n#endif\n}\n@end\n@export clay.sm.debug_depth\nuniform sampler2D depthMap;\nvarying vec2 v_Texcoord;\n@import clay.util.decode_float\nvoid main() {\n vec4 tex = texture2D(depthMap, v_Texcoord);\n#ifdef USE_VSM\n gl_FragColor = vec4(tex.rgb, 1.0);\n#else\n float depth = decodeFloat(tex);\n gl_FragColor = vec4(depth, depth, depth, 1.0);\n#endif\n}\n@end\n@export clay.sm.distance.vertex\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform mat4 world : WORLD;\nattribute vec3 position : POSITION;\n@import clay.chunk.skinning_header\nvarying vec3 v_WorldPosition;\nvoid main (){\n vec4 P = vec4(position, 1.0);\n#ifdef SKINNING\n @import clay.chunk.skin_matrix\n P = skinMatrixWS * P;\n#endif\n#ifdef INSTANCING\n @import clay.chunk.instancing_matrix\n P = instanceMat * P;\n#endif\n gl_Position = worldViewProjection * P;\n v_WorldPosition = (world * P).xyz;\n}\n@end\n@export clay.sm.distance.fragment\nuniform vec3 lightPosition;\nuniform float range : 100;\nvarying vec3 v_WorldPosition;\n@import clay.util.encode_float\nvoid main(){\n float dist = distance(lightPosition, v_WorldPosition);\n#ifdef USE_VSM\n gl_FragColor = vec4(dist, dist * dist, 0.0, 0.0);\n#else\n dist = dist / range;\n gl_FragColor = encodeFloat(dist);\n#endif\n}\n@end\n@export clay.plugin.shadow_map_common\n@import clay.util.decode_float\nfloat tapShadowMap(sampler2D map, vec2 uv, float z){\n vec4 tex = texture2D(map, uv);\n return step(z, decodeFloat(tex) * 2.0 - 1.0);\n}\nfloat pcf(sampler2D map, vec2 uv, float z, float textureSize, vec2 scale) {\n float shadowContrib = tapShadowMap(map, uv, z);\n vec2 offset = vec2(1.0 / textureSize) * scale;\n#ifdef PCF_KERNEL_SIZE\n for (int _idx_ = 0; _idx_ < PCF_KERNEL_SIZE; _idx_++) {{\n shadowContrib += tapShadowMap(map, uv + offset * pcfKernel[_idx_], z);\n }}\n return shadowContrib / float(PCF_KERNEL_SIZE + 1);\n#else\n shadowContrib += tapShadowMap(map, uv+vec2(offset.x, 0.0), z);\n shadowContrib += tapShadowMap(map, uv+vec2(offset.x, offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(-offset.x, offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(0.0, offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(-offset.x, 0.0), z);\n shadowContrib += tapShadowMap(map, uv+vec2(-offset.x, -offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(offset.x, -offset.y), z);\n shadowContrib += tapShadowMap(map, uv+vec2(0.0, -offset.y), z);\n return shadowContrib / 9.0;\n#endif\n}\nfloat pcf(sampler2D map, vec2 uv, float z, float textureSize) {\n return pcf(map, uv, z, textureSize, vec2(1.0));\n}\nfloat chebyshevUpperBound(vec2 moments, float z){\n float p = 0.0;\n z = z * 0.5 + 0.5;\n if (z <= moments.x) {\n p = 1.0;\n }\n float variance = moments.y - moments.x * moments.x;\n variance = max(variance, 0.0000001);\n float mD = moments.x - z;\n float pMax = variance / (variance + mD * mD);\n pMax = clamp((pMax-0.4)/(1.0-0.4), 0.0, 1.0);\n return max(p, pMax);\n}\nfloat computeShadowContrib(\n sampler2D map, mat4 lightVPM, vec3 position, float textureSize, vec2 scale, vec2 offset\n) {\n vec4 posInLightSpace = lightVPM * vec4(position, 1.0);\n posInLightSpace.xyz /= posInLightSpace.w;\n float z = posInLightSpace.z;\n if(all(greaterThan(posInLightSpace.xyz, vec3(-0.99, -0.99, -1.0))) &&\n all(lessThan(posInLightSpace.xyz, vec3(0.99, 0.99, 1.0)))){\n vec2 uv = (posInLightSpace.xy+1.0) / 2.0;\n #ifdef USE_VSM\n vec2 moments = texture2D(map, uv * scale + offset).xy;\n return chebyshevUpperBound(moments, z);\n #else\n return pcf(map, uv * scale + offset, z, textureSize, scale);\n #endif\n }\n return 1.0;\n}\nfloat computeShadowContrib(sampler2D map, mat4 lightVPM, vec3 position, float textureSize) {\n return computeShadowContrib(map, lightVPM, position, textureSize, vec2(1.0), vec2(0.0));\n}\nfloat computeShadowContribOmni(samplerCube map, vec3 direction, float range)\n{\n float dist = length(direction);\n vec4 shadowTex = textureCube(map, direction);\n#ifdef USE_VSM\n vec2 moments = shadowTex.xy;\n float variance = moments.y - moments.x * moments.x;\n float mD = moments.x - dist;\n float p = variance / (variance + mD * mD);\n if(moments.x + 0.001 < dist){\n return clamp(p, 0.0, 1.0);\n }else{\n return 1.0;\n }\n#else\n return step(dist, (decodeFloat(shadowTex) + 0.0002) * range);\n#endif\n}\n@end\n@export clay.plugin.compute_shadow_map\n#if defined(SPOT_LIGHT_SHADOWMAP_COUNT) || defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT) || defined(POINT_LIGHT_SHADOWMAP_COUNT)\n#ifdef SPOT_LIGHT_SHADOWMAP_COUNT\nuniform sampler2D spotLightShadowMaps[SPOT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform mat4 spotLightMatrices[SPOT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform float spotLightShadowMapSizes[SPOT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\n#endif\n#ifdef DIRECTIONAL_LIGHT_SHADOWMAP_COUNT\n#if defined(SHADOW_CASCADE)\nuniform sampler2D directionalLightShadowMaps[1]:unconfigurable;\nuniform mat4 directionalLightMatrices[SHADOW_CASCADE]:unconfigurable;\nuniform float directionalLightShadowMapSizes[1]:unconfigurable;\nuniform float shadowCascadeClipsNear[SHADOW_CASCADE]:unconfigurable;\nuniform float shadowCascadeClipsFar[SHADOW_CASCADE]:unconfigurable;\n#else\nuniform sampler2D directionalLightShadowMaps[DIRECTIONAL_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform mat4 directionalLightMatrices[DIRECTIONAL_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\nuniform float directionalLightShadowMapSizes[DIRECTIONAL_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\n#endif\n#endif\n#ifdef POINT_LIGHT_SHADOWMAP_COUNT\nuniform samplerCube pointLightShadowMaps[POINT_LIGHT_SHADOWMAP_COUNT]:unconfigurable;\n#endif\nuniform bool shadowEnabled : true;\n#ifdef PCF_KERNEL_SIZE\nuniform vec2 pcfKernel[PCF_KERNEL_SIZE];\n#endif\n@import clay.plugin.shadow_map_common\n#if defined(SPOT_LIGHT_SHADOWMAP_COUNT)\nvoid computeShadowOfSpotLights(vec3 position, inout float shadowContribs[SPOT_LIGHT_COUNT] ) {\n float shadowContrib;\n for(int _idx_ = 0; _idx_ < SPOT_LIGHT_SHADOWMAP_COUNT; _idx_++) {{\n shadowContrib = computeShadowContrib(\n spotLightShadowMaps[_idx_], spotLightMatrices[_idx_], position,\n spotLightShadowMapSizes[_idx_]\n );\n shadowContribs[_idx_] = shadowContrib;\n }}\n for(int _idx_ = SPOT_LIGHT_SHADOWMAP_COUNT; _idx_ < SPOT_LIGHT_COUNT; _idx_++){{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#endif\n#if defined(DIRECTIONAL_LIGHT_SHADOWMAP_COUNT)\n#ifdef SHADOW_CASCADE\nvoid computeShadowOfDirectionalLights(vec3 position, inout float shadowContribs[DIRECTIONAL_LIGHT_COUNT]){\n float depth = (2.0 * gl_FragCoord.z - gl_DepthRange.near - gl_DepthRange.far)\n / (gl_DepthRange.far - gl_DepthRange.near);\n float shadowContrib;\n shadowContribs[0] = 1.0;\n for (int _idx_ = 0; _idx_ < SHADOW_CASCADE; _idx_++) {{\n if (\n depth >= shadowCascadeClipsNear[_idx_] &&\n depth <= shadowCascadeClipsFar[_idx_]\n ) {\n shadowContrib = computeShadowContrib(\n directionalLightShadowMaps[0], directionalLightMatrices[_idx_], position,\n directionalLightShadowMapSizes[0],\n vec2(1.0 / float(SHADOW_CASCADE), 1.0),\n vec2(float(_idx_) / float(SHADOW_CASCADE), 0.0)\n );\n shadowContribs[0] = shadowContrib;\n }\n }}\n for(int _idx_ = DIRECTIONAL_LIGHT_SHADOWMAP_COUNT; _idx_ < DIRECTIONAL_LIGHT_COUNT; _idx_++) {{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#else\nvoid computeShadowOfDirectionalLights(vec3 position, inout float shadowContribs[DIRECTIONAL_LIGHT_COUNT]){\n float shadowContrib;\n for(int _idx_ = 0; _idx_ < DIRECTIONAL_LIGHT_SHADOWMAP_COUNT; _idx_++) {{\n shadowContrib = computeShadowContrib(\n directionalLightShadowMaps[_idx_], directionalLightMatrices[_idx_], position,\n directionalLightShadowMapSizes[_idx_]\n );\n shadowContribs[_idx_] = shadowContrib;\n }}\n for(int _idx_ = DIRECTIONAL_LIGHT_SHADOWMAP_COUNT; _idx_ < DIRECTIONAL_LIGHT_COUNT; _idx_++) {{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#endif\n#endif\n#if defined(POINT_LIGHT_SHADOWMAP_COUNT)\nvoid computeShadowOfPointLights(vec3 position, inout float shadowContribs[POINT_LIGHT_COUNT] ){\n vec3 lightPosition;\n vec3 direction;\n for(int _idx_ = 0; _idx_ < POINT_LIGHT_SHADOWMAP_COUNT; _idx_++) {{\n lightPosition = pointLightPosition[_idx_];\n direction = position - lightPosition;\n shadowContribs[_idx_] = computeShadowContribOmni(pointLightShadowMaps[_idx_], direction, pointLightRange[_idx_]);\n }}\n for(int _idx_ = POINT_LIGHT_SHADOWMAP_COUNT; _idx_ < POINT_LIGHT_COUNT; _idx_++) {{\n shadowContribs[_idx_] = 1.0;\n }}\n}\n#endif\n#endif\n@end");var ts,rs,is,ns,as,os,ss,ls=xe.extend(function(){return{softShadow:ls.PCF,shadowBlur:1,lightFrustumBias:"auto",kernelPCF:new Float32Array([1,0,1,1,-1,1,0,1,-1,0,-1,-1,1,-1,0,-1]),precision:"highp",_lastRenderNotCastShadow:!1,_frameBuffer:new Xn,_textures:{},_shadowMapNumber:{POINT_LIGHT:0,DIRECTIONAL_LIGHT:0,SPOT_LIGHT:0},_depthMaterials:{},_distanceMaterials:{},_receivers:[],_lightsCastShadow:[],_lightCameras:{},_lightMaterials:{},_texturePool:new Zo}},function(){this._gaussianPassH=new ya({fragment:xr.source("clay.compositor.gaussian_blur")}),this._gaussianPassV=new ya({fragment:xr.source("clay.compositor.gaussian_blur")}),this._gaussianPassH.setUniform("blurSize",this.shadowBlur),this._gaussianPassH.setUniform("blurDir",0),this._gaussianPassV.setUniform("blurSize",this.shadowBlur),this._gaussianPassV.setUniform("blurDir",1),this._outputDepthPass=new ya({fragment:xr.source("clay.sm.debug_depth")})},{render:function(e,t,r,i){r||(r=t.getMainCamera()),this.trigger("beforerender",this,e,t,r),this._renderShadowPass(e,t,r,i),this.trigger("afterrender",this,e,t,r)},renderDebug:function(e,t){e.saveClear();var r=e.viewport,i=0,n=t||r.width/4,a=n;for(var o in this.softShadow===ls.VSM?this._outputDepthPass.material.define("fragment","USE_VSM"):this._outputDepthPass.material.undefine("fragment","USE_VSM"),this._textures){var s=this._textures[o];e.setViewport(i,0,n*s.width/s.height,a),this._outputDepthPass.setUniform("depthMap",s),this._outputDepthPass.render(e),i+=n*s.width/s.height}e.setViewport(r),e.restoreClear()},_updateReceivers:function(e,t){if(t.receiveShadow?(this._receivers.push(t),t.material.set("shadowEnabled",1),t.material.set("pcfKernel",this.kernelPCF)):t.material.set("shadowEnabled",0),this.softShadow===ls.VSM)t.material.define("fragment","USE_VSM"),t.material.undefine("fragment","PCF_KERNEL_SIZE");else{t.material.undefine("fragment","USE_VSM");var r=this.kernelPCF;r&&r.length?t.material.define("fragment","PCF_KERNEL_SIZE",r.length/2):t.material.undefine("fragment","PCF_KERNEL_SIZE")}},_update:function(e,t){var r=this;t.traverse(function(t){t.isRenderable()&&r._updateReceivers(e,t)});for(var i=0;i4){console.warn("Support at most 4 cascade");continue}p.shadowCascade>1&&(o=p),this.renderDirectionalLightShadow(e,t,r,p,c,u,h)}else"SPOT_LIGHT"===p.type?this.renderSpotLightShadow(e,t,p,l,s):"POINT_LIGHT"===p.type&&this.renderPointLightShadow(e,t,p,d);this._shadowMapNumber[p.type]++}for(var m in this._shadowMapNumber){var g=this._shadowMapNumber[m],_=m+"_SHADOWMAP_COUNT";for(f=0;f0?v.define("fragment",_,g):v.isDefined("fragment",_)&&v.undefine("fragment",_))}}for(f=0;f0){var x=h.map(S);if(y.directionalLightShadowMaps={value:h,type:"tv"},y.directionalLightMatrices={value:u,type:"m4v"},y.directionalLightShadowMapSizes={value:x,type:"1fv"},o){var b=c.slice(),T=c.slice();b.pop(),T.shift(),b.reverse(),T.reverse(),u.reverse(),y.shadowCascadeClipsNear={value:b,type:"1fv"},y.shadowCascadeClipsFar={value:T,type:"1fv"}}}if(s.length>0){var w=s.map(S);(y=t.shadowUniforms).spotLightShadowMaps={value:s,type:"tv"},y.spotLightMatrices={value:l,type:"m4v"},y.spotLightShadowMapSizes={value:w,type:"1fv"}}d.length>0&&(y.pointLightShadowMaps={value:d,type:"tv"})}function S(e){return e.height}},renderDirectionalLightShadow:(ts=new yn,rs=new hi,is=new wi,ns=new hi,as=new hi,os=new hi,ss=new hi,function(e,t,r,i,n,a,o){var s=this._getDepthMaterial(i),l={getMaterial:function(e){return e.shadowDepthMaterial||s},isMaterialChanged:es,getUniform:$o,ifRender:function(e){return e.castShadow},sortCompare:Br.opaqueSortCompare};if(!t.viewBoundingBoxLastFrame.isFinite()){var h=t.getBoundingBox();t.viewBoundingBoxLastFrame.copy(h).applyTransform(r.viewMatrix)}var u=Math.min(-t.viewBoundingBoxLastFrame.min.z,r.far),c=Math.max(-t.viewBoundingBoxLastFrame.max.z,r.near),d=this._getDirectionalLightCamera(i,t,r),f=os.array;ss.copy(d.projectionMatrix),Sr.invert(as.array,d.worldTransform.array),Sr.multiply(as.array,as.array,r.worldTransform.array),Sr.multiply(f,ss.array,as.array);for(var p=[],m=r instanceof In,g=(r.near+r.far)/(r.near-r.far),_=2*r.near*r.far/(r.near-r.far),v=0;v<=i.shadowCascade;v++){var y=c*Math.pow(u/c,v/i.shadowCascade),x=c+(u-c)*v/i.shadowCascade,b=y*i.cascadeSplitLogFactor+x*(1-i.cascadeSplitLogFactor);p.push(b),n.push(-(-b*g+_)/-b)}var T=this._getTexture(i,i.shadowCascade);o.push(T);var w=e.viewport,S=e.gl;for(this._frameBuffer.attach(T),this._frameBuffer.bind(e),S.clear(S.COLOR_BUFFER_BIT|S.DEPTH_BUFFER_BIT),v=0;vd?s>f?p[n>0?"px":"nx"]=!0:p[o>0?"pz":"nz"]=!0:d>f?p[a>0?"py":"ny"]=!0:p[o>0?"pz":"nz"]=!0}for(r=0;r0)this.outputs[e].keepLastFrame?(this._prevOutputTextures[e]&&this._compositor.releaseTexture(this._prevOutputTextures[e]),this._prevOutputTextures[e]=this._outputTextures[e]):this._compositor.releaseTexture(this._outputTextures[e])}}}),us=xe.extend(function(){return{nodes:[]}},{dirty:function(){this._dirty=!0},addNode:function(e){this.nodes.indexOf(e)>=0||(this.nodes.push(e),this._dirty=!0)},removeNode:function(e){"string"==typeof e&&(e=this.getNodeByName(e));var t=this.nodes.indexOf(e);t>=0&&(this.nodes.splice(t,1),this._dirty=!0)},getNodeByName:function(e){for(var t=0;t=r.COLOR_ATTACHMENT0&&u<=r.COLOR_ATTACHMENT0+8&&h.push(u);l.drawBuffersEXT(h)}e.saveClear(),e.clearBit=Se|Ae,t=e.render(this.scene,this.camera,!this.autoUpdateScene,this.preZ),e.restoreClear(),i.unbind(e)}else t=e.render(this.scene,this.camera,!this.autoUpdateScene,this.preZ);this.trigger("afterrender",t),this._rendering=!1,this._rendered=!0}}),fs=hs.extend(function(){return{texture:null,outputs:{color:{}}}},function(){},{getOutput:function(e,t){return this.texture},beforeFrame:function(){},afterFrame:function(){}}),ps=hs.extend(function(){return{name:"",inputs:{},outputs:null,shader:"",inputLinks:{},outputLinks:{},pass:null,_prevOutputTextures:{},_outputTextures:{},_outputReferences:{},_rendering:!1,_rendered:!1,_compositor:null}},function(){var e=new ya({fragment:this.shader});this.pass=e},{render:function(e,t){this.trigger("beforerender",e),this._rendering=!0;var r=e.gl;for(var i in this.inputLinks){var n=(c=this.inputLinks[i]).node.getOutput(e,c.pin);this.pass.setUniform(i,n)}if(this.outputs){this.pass.outputs={};var a={};for(var o in this.outputs){var s=this.updateParameter(o,e);isNaN(s.width)&&this.updateParameter(o,e);var l=this.outputs[o],h=this._compositor.allocateTexture(s);this._outputTextures[o]=h,"string"==typeof(u=l.attachment||r.COLOR_ATTACHMENT0)&&(u=r[u]),a[u]=h}for(var u in this._compositor.getFrameBuffer().bind(e),a)this._compositor.getFrameBuffer().attach(a[u],u);this.pass.render(e),this._compositor.getFrameBuffer().updateMipmap(e)}else this.pass.outputs=null,this._compositor.getFrameBuffer().unbind(e),this.pass.render(e,t);for(var i in this.inputLinks){var c;(c=this.inputLinks[i]).node.removeReference(c.pin)}this._rendering=!1,this._rendered=!0,this.trigger("afterrender",e)},updateParameter:function(e,t){var r,i,n=this.outputs[e],a=n.parameters,o=n._parametersCopy;if(o||(o=n._parametersCopy={}),a)for(var s in a)"width"!==s&&"height"!==s&&(o[s]=a[s]);return r="function"==typeof a.width?a.width.call(this,t):a.width,i="function"==typeof a.height?a.height.call(this,t):a.height,r=Math.ceil(r),i=Math.ceil(i),o.width===r&&o.height===i||this._outputTextures[e]&&this._outputTextures[e].dispose(t),o.width=r,o.height=i,o},setParameter:function(e,t){this.pass.setUniform(e,t)},getParameter:function(e){return this.pass.getUniform(e)},setParameters:function(e){for(var t in e)this.setParameter(t,e[t])},define:function(e,t){this.pass.material.define("fragment",e,t)},undefine:function(e){this.pass.material.undefine("fragment",e)},removeReference:function(e){(this._outputReferences[e]--,0===this._outputReferences[e])&&(this.outputs[e].keepLastFrame?(this._prevOutputTextures[e]&&this._compositor.releaseTexture(this._prevOutputTextures[e]),this._prevOutputTextures[e]=this._outputTextures[e]):this._compositor.releaseTexture(this._outputTextures[e]))},clear:function(){hs.prototype.clear.call(this),this.pass.material.disableTexturesAll()}});const ms="@export clay.compositor.kernel.gaussian_9\nfloat gaussianKernel[9];\ngaussianKernel[0] = 0.07;\ngaussianKernel[1] = 0.09;\ngaussianKernel[2] = 0.12;\ngaussianKernel[3] = 0.14;\ngaussianKernel[4] = 0.16;\ngaussianKernel[5] = 0.14;\ngaussianKernel[6] = 0.12;\ngaussianKernel[7] = 0.09;\ngaussianKernel[8] = 0.07;\n@end\n@export clay.compositor.kernel.gaussian_13\nfloat gaussianKernel[13];\ngaussianKernel[0] = 0.02;\ngaussianKernel[1] = 0.03;\ngaussianKernel[2] = 0.06;\ngaussianKernel[3] = 0.08;\ngaussianKernel[4] = 0.11;\ngaussianKernel[5] = 0.13;\ngaussianKernel[6] = 0.14;\ngaussianKernel[7] = 0.13;\ngaussianKernel[8] = 0.11;\ngaussianKernel[9] = 0.08;\ngaussianKernel[10] = 0.06;\ngaussianKernel[11] = 0.03;\ngaussianKernel[12] = 0.02;\n@end\n@export clay.compositor.gaussian_blur\n#define SHADER_NAME gaussian_blur\nuniform sampler2D texture;varying vec2 v_Texcoord;\nuniform float blurSize : 2.0;\nuniform vec2 textureSize : [512.0, 512.0];\nuniform float blurDir : 0.0;\n@import clay.util.rgbm\n@import clay.util.clamp_sample\nvoid main (void)\n{\n @import clay.compositor.kernel.gaussian_9\n vec2 off = blurSize / textureSize;\n off *= vec2(1.0 - blurDir, blurDir);\n vec4 sum = vec4(0.0);\n float weightAll = 0.0;\n for (int i = 0; i < 9; i++) {\n float w = gaussianKernel[i];\n vec4 texel = decodeHDR(clampSample(texture, v_Texcoord + float(i - 4) * off));\n sum += texel * w;\n weightAll += w;\n }\n gl_FragColor = encodeHDR(sum / max(weightAll, 0.01));\n}\n@end\n",gs="\n@export clay.compositor.lut\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform sampler2D lookup;\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n float blueColor = tex.b * 63.0;\n vec2 quad1;\n quad1.y = floor(floor(blueColor) / 8.0);\n quad1.x = floor(blueColor) - (quad1.y * 8.0);\n vec2 quad2;\n quad2.y = floor(ceil(blueColor) / 8.0);\n quad2.x = ceil(blueColor) - (quad2.y * 8.0);\n vec2 texPos1;\n texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.r);\n texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.g);\n vec2 texPos2;\n texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.r);\n texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * tex.g);\n vec4 newColor1 = texture2D(lookup, texPos1);\n vec4 newColor2 = texture2D(lookup, texPos2);\n vec4 newColor = mix(newColor1, newColor2, fract(blueColor));\n gl_FragColor = vec4(newColor.rgb, tex.w);\n}\n@end",_s="@export clay.compositor.output\n#define OUTPUT_ALPHA\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\n@import clay.util.rgbm\nvoid main()\n{\n vec4 tex = decodeHDR(texture2D(texture, v_Texcoord));\n gl_FragColor.rgb = tex.rgb;\n#ifdef OUTPUT_ALPHA\n gl_FragColor.a = tex.a;\n#else\n gl_FragColor.a = 1.0;\n#endif\n gl_FragColor = encodeHDR(gl_FragColor);\n#ifdef PREMULTIPLY_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif\n}\n@end",vs="@export clay.compositor.bright\nuniform sampler2D texture;\nuniform float threshold : 1;\nuniform float scale : 1.0;\nuniform vec2 textureSize: [512, 512];\nvarying vec2 v_Texcoord;\nconst vec3 lumWeight = vec3(0.2125, 0.7154, 0.0721);\n@import clay.util.rgbm\nvec4 median(vec4 a, vec4 b, vec4 c)\n{\n return a + b + c - min(min(a, b), c) - max(max(a, b), c);\n}\nvoid main()\n{\n vec4 texel = decodeHDR(texture2D(texture, v_Texcoord));\n#ifdef ANTI_FLICKER\n vec3 d = 1.0 / textureSize.xyx * vec3(1.0, 1.0, 0.0);\n vec4 s1 = decodeHDR(texture2D(texture, v_Texcoord - d.xz));\n vec4 s2 = decodeHDR(texture2D(texture, v_Texcoord + d.xz));\n vec4 s3 = decodeHDR(texture2D(texture, v_Texcoord - d.zy));\n vec4 s4 = decodeHDR(texture2D(texture, v_Texcoord + d.zy));\n texel = median(median(texel, s1, s2), s3, s4);\n#endif\n float lum = dot(texel.rgb , lumWeight);\n vec4 color;\n if (lum > threshold && texel.a > 0.0)\n {\n color = vec4(texel.rgb * scale, texel.a * scale);\n }\n else\n {\n color = vec4(0.0);\n }\n gl_FragColor = encodeHDR(color);\n}\n@end\n",ys="@export clay.compositor.downsample\nuniform sampler2D texture;\nuniform vec2 textureSize : [512, 512];\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\nfloat brightness(vec3 c)\n{\n return max(max(c.r, c.g), c.b);\n}\n@import clay.util.clamp_sample\nvoid main()\n{\n vec4 d = vec4(-1.0, -1.0, 1.0, 1.0) / textureSize.xyxy;\n#ifdef ANTI_FLICKER\n vec3 s1 = decodeHDR(clampSample(texture, v_Texcoord + d.xy)).rgb;\n vec3 s2 = decodeHDR(clampSample(texture, v_Texcoord + d.zy)).rgb;\n vec3 s3 = decodeHDR(clampSample(texture, v_Texcoord + d.xw)).rgb;\n vec3 s4 = decodeHDR(clampSample(texture, v_Texcoord + d.zw)).rgb;\n float s1w = 1.0 / (brightness(s1) + 1.0);\n float s2w = 1.0 / (brightness(s2) + 1.0);\n float s3w = 1.0 / (brightness(s3) + 1.0);\n float s4w = 1.0 / (brightness(s4) + 1.0);\n float oneDivideSum = 1.0 / (s1w + s2w + s3w + s4w);\n vec4 color = vec4(\n (s1 * s1w + s2 * s2w + s3 * s3w + s4 * s4w) * oneDivideSum,\n 1.0\n );\n#else\n vec4 color = decodeHDR(clampSample(texture, v_Texcoord + d.xy));\n color += decodeHDR(clampSample(texture, v_Texcoord + d.zy));\n color += decodeHDR(clampSample(texture, v_Texcoord + d.xw));\n color += decodeHDR(clampSample(texture, v_Texcoord + d.zw));\n color *= 0.25;\n#endif\n gl_FragColor = encodeHDR(color);\n}\n@end",xs="\n@export clay.compositor.upsample\n#define HIGH_QUALITY\nuniform sampler2D texture;\nuniform vec2 textureSize : [512, 512];\nuniform float sampleScale: 0.5;\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\n@import clay.util.clamp_sample\nvoid main()\n{\n#ifdef HIGH_QUALITY\n vec4 d = vec4(1.0, 1.0, -1.0, 0.0) / textureSize.xyxy * sampleScale;\n vec4 s;\n s = decodeHDR(clampSample(texture, v_Texcoord - d.xy));\n s += decodeHDR(clampSample(texture, v_Texcoord - d.wy)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord - d.zy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zw)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord )) * 4.0;\n s += decodeHDR(clampSample(texture, v_Texcoord + d.xw)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.wy)) * 2.0;\n s += decodeHDR(clampSample(texture, v_Texcoord + d.xy));\n gl_FragColor = encodeHDR(s / 16.0);\n#else\n vec4 d = vec4(-1.0, -1.0, +1.0, +1.0) / textureSize.xyxy;\n vec4 s;\n s = decodeHDR(clampSample(texture, v_Texcoord + d.xy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zy));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.xw));\n s += decodeHDR(clampSample(texture, v_Texcoord + d.zw));\n gl_FragColor = encodeHDR(s / 4.0);\n#endif\n}\n@end",bs="@export clay.compositor.hdr.composite\n#define TONEMAPPING\nuniform sampler2D texture;\n#ifdef BLOOM_ENABLED\nuniform sampler2D bloom;\n#endif\n#ifdef LENSFLARE_ENABLED\nuniform sampler2D lensflare;\nuniform sampler2D lensdirt;\n#endif\n#ifdef LUM_ENABLED\nuniform sampler2D lum;\n#endif\n#ifdef LUT_ENABLED\nuniform sampler2D lut;\n#endif\n#ifdef COLOR_CORRECTION\nuniform float brightness : 0.0;\nuniform float contrast : 1.0;\nuniform float saturation : 1.0;\n#endif\n#ifdef VIGNETTE\nuniform float vignetteDarkness: 1.0;\nuniform float vignetteOffset: 1.0;\n#endif\nuniform float exposure : 1.0;\nuniform float bloomIntensity : 0.25;\nuniform float lensflareIntensity : 1;\nvarying vec2 v_Texcoord;\n@import clay.util.srgb\nvec3 ACESToneMapping(vec3 color)\n{\n const float A = 2.51;\n const float B = 0.03;\n const float C = 2.43;\n const float D = 0.59;\n const float E = 0.14;\n return (color * (A * color + B)) / (color * (C * color + D) + E);\n}\nfloat eyeAdaption(float fLum)\n{\n return mix(0.2, fLum, 0.5);\n}\n#ifdef LUT_ENABLED\nvec3 lutTransform(vec3 color) {\n float blueColor = color.b * 63.0;\n vec2 quad1;\n quad1.y = floor(floor(blueColor) / 8.0);\n quad1.x = floor(blueColor) - (quad1.y * 8.0);\n vec2 quad2;\n quad2.y = floor(ceil(blueColor) / 8.0);\n quad2.x = ceil(blueColor) - (quad2.y * 8.0);\n vec2 texPos1;\n texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.r);\n texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.g);\n vec2 texPos2;\n texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.r);\n texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * color.g);\n vec4 newColor1 = texture2D(lut, texPos1);\n vec4 newColor2 = texture2D(lut, texPos2);\n vec4 newColor = mix(newColor1, newColor2, fract(blueColor));\n return newColor.rgb;\n}\n#endif\n@import clay.util.rgbm\nvoid main()\n{\n vec4 texel = vec4(0.0);\n vec4 originalTexel = vec4(0.0);\n#ifdef TEXTURE_ENABLED\n texel = decodeHDR(texture2D(texture, v_Texcoord));\n originalTexel = texel;\n#endif\n#ifdef BLOOM_ENABLED\n vec4 bloomTexel = decodeHDR(texture2D(bloom, v_Texcoord));\n texel.rgb += bloomTexel.rgb * bloomIntensity;\n texel.a += bloomTexel.a * bloomIntensity;\n#endif\n#ifdef LENSFLARE_ENABLED\n texel += decodeHDR(texture2D(lensflare, v_Texcoord)) * texture2D(lensdirt, v_Texcoord) * lensflareIntensity;\n#endif\n texel.a = min(texel.a, 1.0);\n#ifdef LUM_ENABLED\n float fLum = texture2D(lum, vec2(0.5, 0.5)).r;\n float adaptedLumDest = 3.0 / (max(0.1, 1.0 + 10.0*eyeAdaption(fLum)));\n float exposureBias = adaptedLumDest * exposure;\n#else\n float exposureBias = exposure;\n#endif\n#ifdef TONEMAPPING\n texel.rgb *= exposureBias;\n texel.rgb = ACESToneMapping(texel.rgb);\n#endif\n texel = linearTosRGB(texel);\n#ifdef LUT_ENABLED\n texel.rgb = lutTransform(clamp(texel.rgb,vec3(0.0),vec3(1.0)));\n#endif\n#ifdef COLOR_CORRECTION\n texel.rgb = clamp(texel.rgb + vec3(brightness), 0.0, 1.0);\n texel.rgb = clamp((texel.rgb - vec3(0.5))*contrast+vec3(0.5), 0.0, 1.0);\n float lum = dot(texel.rgb, vec3(0.2125, 0.7154, 0.0721));\n texel.rgb = mix(vec3(lum), texel.rgb, saturation);\n#endif\n#ifdef VIGNETTE\n vec2 uv = (v_Texcoord - vec2(0.5)) * vec2(vignetteOffset);\n texel.rgb = mix(texel.rgb, vec3(1.0 - vignetteDarkness), dot(uv, uv));\n#endif\n gl_FragColor = encodeHDR(texel);\n#ifdef DEBUG\n #if DEBUG == 1\n gl_FragColor = encodeHDR(decodeHDR(texture2D(texture, v_Texcoord)));\n #elif DEBUG == 2\n gl_FragColor = encodeHDR(decodeHDR(texture2D(bloom, v_Texcoord)) * bloomIntensity);\n #elif DEBUG == 3\n gl_FragColor = encodeHDR(decodeHDR(texture2D(lensflare, v_Texcoord) * lensflareIntensity));\n #endif\n#endif\n if (originalTexel.a <= 0.01 && gl_FragColor.a > 1e-5) {\n gl_FragColor.a = dot(gl_FragColor.rgb, vec3(0.2125, 0.7154, 0.0721));\n }\n#ifdef PREMULTIPLY_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif\n}\n@end",Ts="@export clay.compositor.blend\n#define SHADER_NAME blend\n#ifdef TEXTURE1_ENABLED\nuniform sampler2D texture1;\nuniform float weight1 : 1.0;\n#endif\n#ifdef TEXTURE2_ENABLED\nuniform sampler2D texture2;\nuniform float weight2 : 1.0;\n#endif\n#ifdef TEXTURE3_ENABLED\nuniform sampler2D texture3;\nuniform float weight3 : 1.0;\n#endif\n#ifdef TEXTURE4_ENABLED\nuniform sampler2D texture4;\nuniform float weight4 : 1.0;\n#endif\n#ifdef TEXTURE5_ENABLED\nuniform sampler2D texture5;\nuniform float weight5 : 1.0;\n#endif\n#ifdef TEXTURE6_ENABLED\nuniform sampler2D texture6;\nuniform float weight6 : 1.0;\n#endif\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\nvoid main()\n{\n vec4 tex = vec4(0.0);\n#ifdef TEXTURE1_ENABLED\n tex += decodeHDR(texture2D(texture1, v_Texcoord)) * weight1;\n#endif\n#ifdef TEXTURE2_ENABLED\n tex += decodeHDR(texture2D(texture2, v_Texcoord)) * weight2;\n#endif\n#ifdef TEXTURE3_ENABLED\n tex += decodeHDR(texture2D(texture3, v_Texcoord)) * weight3;\n#endif\n#ifdef TEXTURE4_ENABLED\n tex += decodeHDR(texture2D(texture4, v_Texcoord)) * weight4;\n#endif\n#ifdef TEXTURE5_ENABLED\n tex += decodeHDR(texture2D(texture5, v_Texcoord)) * weight5;\n#endif\n#ifdef TEXTURE6_ENABLED\n tex += decodeHDR(texture2D(texture6, v_Texcoord)) * weight6;\n#endif\n gl_FragColor = encodeHDR(tex);\n}\n@end",ws="@export clay.compositor.fxaa\nuniform sampler2D texture;\nuniform vec4 viewport : VIEWPORT;\nvarying vec2 v_Texcoord;\n#define FXAA_REDUCE_MIN (1.0/128.0)\n#define FXAA_REDUCE_MUL (1.0/8.0)\n#define FXAA_SPAN_MAX 8.0\n@import clay.util.rgbm\nvoid main()\n{\n vec2 resolution = 1.0 / viewport.zw;\n vec3 rgbNW = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( -1.0, -1.0 ) ) * resolution ) ).xyz;\n vec3 rgbNE = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( 1.0, -1.0 ) ) * resolution ) ).xyz;\n vec3 rgbSW = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( -1.0, 1.0 ) ) * resolution ) ).xyz;\n vec3 rgbSE = decodeHDR( texture2D( texture, ( gl_FragCoord.xy + vec2( 1.0, 1.0 ) ) * resolution ) ).xyz;\n vec4 rgbaM = decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution ) );\n vec3 rgbM = rgbaM.xyz;\n float opacity = rgbaM.w;\n vec3 luma = vec3( 0.299, 0.587, 0.114 );\n float lumaNW = dot( rgbNW, luma );\n float lumaNE = dot( rgbNE, luma );\n float lumaSW = dot( rgbSW, luma );\n float lumaSE = dot( rgbSE, luma );\n float lumaM = dot( rgbM, luma );\n float lumaMin = min( lumaM, min( min( lumaNW, lumaNE ), min( lumaSW, lumaSE ) ) );\n float lumaMax = max( lumaM, max( max( lumaNW, lumaNE) , max( lumaSW, lumaSE ) ) );\n vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n float dirReduce = max( ( lumaNW + lumaNE + lumaSW + lumaSE ) * ( 0.25 * FXAA_REDUCE_MUL ), FXAA_REDUCE_MIN );\n float rcpDirMin = 1.0 / ( min( abs( dir.x ), abs( dir.y ) ) + dirReduce );\n dir = min( vec2( FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max( vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * resolution;\n vec3 rgbA = decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * ( 1.0 / 3.0 - 0.5 ) ) ).xyz;\n rgbA += decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * ( 2.0 / 3.0 - 0.5 ) ) ).xyz;\n rgbA *= 0.5;\n vec3 rgbB = decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * -0.5 ) ).xyz;\n rgbB += decodeHDR( texture2D( texture, gl_FragCoord.xy * resolution + dir * 0.5 ) ).xyz;\n rgbB *= 0.25;\n rgbB += rgbA * 0.5;\n float lumaB = dot( rgbB, luma );\n if ( ( lumaB < lumaMin ) || ( lumaB > lumaMax ) )\n {\n gl_FragColor = vec4( rgbA, opacity );\n }\n else {\n gl_FragColor = vec4( rgbB, opacity );\n }\n}\n@end";var Ss;(Ss=xr).import("@export clay.compositor.coloradjust\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float brightness : 0.0;\nuniform float contrast : 1.0;\nuniform float exposure : 0.0;\nuniform float gamma : 1.0;\nuniform float saturation : 1.0;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord);\n vec3 color = clamp(tex.rgb + vec3(brightness), 0.0, 1.0);\n color = clamp( (color-vec3(0.5))*contrast+vec3(0.5), 0.0, 1.0);\n color = clamp( color * pow(2.0, exposure), 0.0, 1.0);\n color = clamp( pow(color, vec3(gamma)), 0.0, 1.0);\n float luminance = dot( color, w );\n color = mix(vec3(luminance), color, saturation);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.brightness\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float brightness : 0.0;\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord);\n vec3 color = tex.rgb + vec3(brightness);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.contrast\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float contrast : 1.0;\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord);\n vec3 color = (tex.rgb-vec3(0.5))*contrast+vec3(0.5);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.exposure\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float exposure : 0.0;\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n vec3 color = tex.rgb * pow(2.0, exposure);\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.gamma\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float gamma : 1.0;\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n vec3 color = pow(tex.rgb, vec3(gamma));\n gl_FragColor = vec4(color, tex.a);\n}\n@end\n@export clay.compositor.saturation\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float saturation : 1.0;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\nvoid main()\n{\n vec4 tex = texture2D(texture, v_Texcoord);\n vec3 color = tex.rgb;\n float luminance = dot(color, w);\n color = mix(vec3(luminance), color, saturation);\n gl_FragColor = vec4(color, tex.a);\n}\n@end"),Ss.import(ms),Ss.import("@export clay.compositor.hdr.log_lum\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\n@import clay.util.rgbm\nvoid main()\n{\n vec4 tex = decodeHDR(texture2D(texture, v_Texcoord));\n float luminance = dot(tex.rgb, w);\n luminance = log(luminance + 0.001);\n gl_FragColor = encodeHDR(vec4(vec3(luminance), 1.0));\n}\n@end\n@export clay.compositor.hdr.lum_adaption\nvarying vec2 v_Texcoord;\nuniform sampler2D adaptedLum;\nuniform sampler2D currentLum;\nuniform float frameTime : 0.02;\n@import clay.util.rgbm\nvoid main()\n{\n float fAdaptedLum = decodeHDR(texture2D(adaptedLum, vec2(0.5, 0.5))).r;\n float fCurrentLum = exp(encodeHDR(texture2D(currentLum, vec2(0.5, 0.5))).r);\n fAdaptedLum += (fCurrentLum - fAdaptedLum) * (1.0 - pow(0.98, 30.0 * frameTime));\n gl_FragColor = encodeHDR(vec4(vec3(fAdaptedLum), 1.0));\n}\n@end\n@export clay.compositor.lum\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nconst vec3 w = vec3(0.2125, 0.7154, 0.0721);\nvoid main()\n{\n vec4 tex = texture2D( texture, v_Texcoord );\n float luminance = dot(tex.rgb, w);\n gl_FragColor = vec4(vec3(luminance), 1.0);\n}\n@end"),Ss.import(gs),Ss.import("@export clay.compositor.vignette\n#define OUTPUT_ALPHA\nvarying vec2 v_Texcoord;\nuniform sampler2D texture;\nuniform float darkness: 1;\nuniform float offset: 1;\n@import clay.util.rgbm\nvoid main()\n{\n vec4 texel = decodeHDR(texture2D(texture, v_Texcoord));\n gl_FragColor.rgb = texel.rgb;\n vec2 uv = (v_Texcoord - vec2(0.5)) * vec2(offset);\n gl_FragColor = encodeHDR(vec4(mix(texel.rgb, vec3(1.0 - darkness), dot(uv, uv)), texel.a));\n}\n@end"),Ss.import(_s),Ss.import(vs),Ss.import(ys),Ss.import(xs),Ss.import(bs),Ss.import("@export clay.compositor.lensflare\n#define SAMPLE_NUMBER 8\nuniform sampler2D texture;\nuniform sampler2D lenscolor;\nuniform vec2 textureSize : [512, 512];\nuniform float dispersal : 0.3;\nuniform float haloWidth : 0.4;\nuniform float distortion : 1.0;\nvarying vec2 v_Texcoord;\n@import clay.util.rgbm\nvec4 textureDistorted(\n in vec2 texcoord,\n in vec2 direction,\n in vec3 distortion\n) {\n return vec4(\n decodeHDR(texture2D(texture, texcoord + direction * distortion.r)).r,\n decodeHDR(texture2D(texture, texcoord + direction * distortion.g)).g,\n decodeHDR(texture2D(texture, texcoord + direction * distortion.b)).b,\n 1.0\n );\n}\nvoid main()\n{\n vec2 texcoord = -v_Texcoord + vec2(1.0); vec2 textureOffset = 1.0 / textureSize;\n vec2 ghostVec = (vec2(0.5) - texcoord) * dispersal;\n vec2 haloVec = normalize(ghostVec) * haloWidth;\n vec3 distortion = vec3(-textureOffset.x * distortion, 0.0, textureOffset.x * distortion);\n vec4 result = vec4(0.0);\n for (int i = 0; i < SAMPLE_NUMBER; i++)\n {\n vec2 offset = fract(texcoord + ghostVec * float(i));\n float weight = length(vec2(0.5) - offset) / length(vec2(0.5));\n weight = pow(1.0 - weight, 10.0);\n result += textureDistorted(offset, normalize(ghostVec), distortion) * weight;\n }\n result *= texture2D(lenscolor, vec2(length(vec2(0.5) - texcoord)) / length(vec2(0.5)));\n float weight = length(vec2(0.5) - fract(texcoord + haloVec)) / length(vec2(0.5));\n weight = pow(1.0 - weight, 10.0);\n vec2 offset = fract(texcoord + haloVec);\n result += textureDistorted(offset, normalize(ghostVec), distortion) * weight;\n gl_FragColor = result;\n}\n@end"),Ss.import(Ts),Ss.import(ws);var Ms=/^#source\((.*?)\)/;function As(e,t){var r=new cs;t=t||{};var i={textures:{},parameters:{}};for(var n in e.parameters){var a=e.parameters[n];i.parameters[n]=Ls(a)}return function(e,t,r,i){if(!e.textures)return void i({});var n={},a=0,o=!1,s=r.textureRootPath;ye.each(e.textures,function(e,t){var r,l=e.path,h=Ls(e.parameters);if(Array.isArray(l)&&6===l.length)s&&(l=l.map(function(e){return ye.relative2absolute(e,s)})),r=new Nn(h);else{if("string"!=typeof l)return;s&&(l=ye.relative2absolute(l,s)),r=new Vi(h)}r.load(l),a++,r.once("success",function(){n[t]=r,0===--a&&(i(n),o=!0)})}),0!==a||o||i(n)}(e,0,t,function(n){i.textures=n,function(){for(var n=0;n0;)r+=i*(n%t),n=Math.floor(n/t),i/=t;return r}function Rs(e){for(var t=new Uint8Array(e*e*4),r=0,i=new Fr,n=0;n 0.99999) {\n gl_FragColor = vec4(1.0);\n return;\n }\n mat3 kernelBasis;\n#endif\n\n float z = depthTexel.r * 2.0 - 1.0;\n\n vec4 projectedPos = vec4(v_Texcoord * 2.0 - 1.0, z, 1.0);\n vec4 p4 = projectionInv * projectedPos;\n\n vec3 position = p4.xyz / p4.w;\n\n float ao = ssaoEstimator(position, kernelBasis);\n ao = clamp(1.0 - (1.0 - ao) * intensity, 0.0, 1.0);\n gl_FragColor = vec4(vec3(ao), 1.0);\n}\n\n@end\n\n\n@export ecgl.ssao.blur\n#define SHADER_NAME SSAO_BLUR\n\nuniform sampler2D ssaoTexture;\n\n#ifdef NORMALTEX_ENABLED\nuniform sampler2D normalTex;\n#endif\n\nvarying vec2 v_Texcoord;\n\nuniform vec2 textureSize;\nuniform float blurSize : 1.0;\n\nuniform int direction: 0.0;\n\n#ifdef DEPTHTEX_ENABLED\nuniform sampler2D depthTex;\nuniform mat4 projection;\nuniform float depthRange : 0.5;\n\nfloat getLinearDepth(vec2 coord)\n{\n float depth = texture2D(depthTex, coord).r * 2.0 - 1.0;\n return projection[3][2] / (depth * projection[2][3] - projection[2][2]);\n}\n#endif\n\nvoid main()\n{\n float kernel[5];\n kernel[0] = 0.122581;\n kernel[1] = 0.233062;\n kernel[2] = 0.288713;\n kernel[3] = 0.233062;\n kernel[4] = 0.122581;\n\n vec2 off = vec2(0.0);\n if (direction == 0) {\n off[0] = blurSize / textureSize.x;\n }\n else {\n off[1] = blurSize / textureSize.y;\n }\n\n vec2 coord = v_Texcoord;\n\n float sum = 0.0;\n float weightAll = 0.0;\n\n#ifdef NORMALTEX_ENABLED\n vec3 centerNormal = texture2D(normalTex, v_Texcoord).rgb * 2.0 - 1.0;\n#endif\n#if defined(DEPTHTEX_ENABLED)\n float centerDepth = getLinearDepth(v_Texcoord);\n#endif\n\n for (int i = 0; i < 5; i++) {\n vec2 coord = clamp(v_Texcoord + vec2(float(i) - 2.0) * off, vec2(0.0), vec2(1.0));\n\n float w = kernel[i];\n#ifdef NORMALTEX_ENABLED\n vec3 normal = texture2D(normalTex, coord).rgb * 2.0 - 1.0;\n w *= clamp(dot(normal, centerNormal), 0.0, 1.0);\n#endif\n#ifdef DEPTHTEX_ENABLED\n float d = getLinearDepth(coord);\n w *= (1.0 - smoothstep(abs(centerDepth - d) / depthRange, 0.0, 1.0));\n#endif\n\n weightAll += w;\n sum += texture2D(ssaoTexture, coord).r * w;\n }\n\n gl_FragColor = vec4(vec3(sum / weightAll), 1.0);\n}\n\n@end\n"),zs.prototype.setDepthTexture=function(e){this._depthTex=e},zs.prototype.setNormalTexture=function(e){this._normalTex=e,this._ssaoPass.material[e?"enableTexture":"disableTexture"]("normalTex"),this.setKernelSize(this._kernelSize)},zs.prototype.update=function(e,t,r){var i=e.getWidth(),n=e.getHeight(),a=this._ssaoPass,o=this._blurPass;a.setUniform("kernel",this._kernels[r%this._kernels.length]),a.setUniform("depthTex",this._depthTex),null!=this._normalTex&&a.setUniform("normalTex",this._normalTex),a.setUniform("depthTexSize",[this._depthTex.width,this._depthTex.height]);var s=new hi;hi.transpose(s,t.worldTransform),a.setUniform("projection",t.projectionMatrix.array),a.setUniform("projectionInv",t.invProjectionMatrix.array),a.setUniform("viewInverseTranspose",s.array);var l=this._ssaoTexture,h=this._blurTexture,u=this._blurTexture2;l.width=i/2,l.height=n/2,h.width=i,h.height=n,u.width=i,u.height=n,this._framebuffer.attach(l),this._framebuffer.bind(e),e.gl.clearColor(1,1,1,1),e.gl.clear(e.gl.COLOR_BUFFER_BIT),a.render(e),o.setUniform("textureSize",[i/2,n/2]),o.setUniform("projection",t.projectionMatrix.array),this._framebuffer.attach(h),o.setUniform("direction",0),o.setUniform("ssaoTexture",l),o.render(e),this._framebuffer.attach(u),o.setUniform("textureSize",[i,n]),o.setUniform("direction",1),o.setUniform("ssaoTexture",h),o.render(e),this._framebuffer.unbind(e);var c=e.clearColor;e.gl.clearColor(c[0],c[1],c[2],c[3])},zs.prototype.getTargetTexture=function(){return this._blurTexture2},zs.prototype.setParameter=function(e,t){"noiseTexSize"===e?this.setNoiseSize(t):"kernelSize"===e?this.setKernelSize(t):"intensity"===e?this._ssaoPass.material.set("intensity",t):this._ssaoPass.setUniform(e,t)},zs.prototype.setKernelSize=function(e){this._kernelSize=e,this._ssaoPass.material.define("fragment","KERNEL_SIZE",e),this._kernels=this._kernels||[];for(var t=0;t<30;t++)this._kernels[t]=Bs(e,t*e,!!this._normalTex)},zs.prototype.setNoiseSize=function(e){var t=this._ssaoPass.getUniform("noiseTex");t?(t.data=Rs(e),t.width=t.height=e,t.dirty()):(t=Is(e),this._ssaoPass.setUniform("noiseTex",Is(e))),this._ssaoPass.setUniform("noiseTexSize",[e,e])},zs.prototype.dispose=function(e){this._blurTexture.dispose(e),this._ssaoTexture.dispose(e),this._blurTexture2.dispose(e)};function Fs(e){e=e||{},this._ssrPass=new ya({fragment:xr.source("ecgl.ssr.main"),clearColor:[0,0,0,0]}),this._blurPass1=new ya({fragment:xr.source("ecgl.ssr.blur"),clearColor:[0,0,0,0]}),this._blurPass2=new ya({fragment:xr.source("ecgl.ssr.blur"),clearColor:[0,0,0,0]}),this._blendPass=new ya({fragment:xr.source("clay.compositor.blend")}),this._blendPass.material.disableTexturesAll(),this._blendPass.material.enableTexture(["texture1","texture2"]),this._ssrPass.setUniform("gBufferTexture1",e.normalTexture),this._ssrPass.setUniform("gBufferTexture2",e.depthTexture),this._blurPass1.setUniform("gBufferTexture1",e.normalTexture),this._blurPass1.setUniform("gBufferTexture2",e.depthTexture),this._blurPass2.setUniform("gBufferTexture1",e.normalTexture),this._blurPass2.setUniform("gBufferTexture2",e.depthTexture),this._blurPass2.material.define("fragment","VERTICAL"),this._blurPass2.material.define("fragment","BLEND"),this._ssrTexture=new Vi({type:zi.HALF_FLOAT}),this._texture2=new Vi({type:zi.HALF_FLOAT}),this._texture3=new Vi({type:zi.HALF_FLOAT}),this._prevTexture=new Vi({type:zi.HALF_FLOAT}),this._currentTexture=new Vi({type:zi.HALF_FLOAT}),this._frameBuffer=new Xn({depthBuffer:!1}),this._normalDistribution=null,this._totalSamples=256,this._samplePerFrame=4,this._ssrPass.material.define("fragment","SAMPLE_PER_FRAME",this._samplePerFrame),this._ssrPass.material.define("fragment","TOTAL_SAMPLES",this._totalSamples),this._downScale=1}xr.import("@export ecgl.ssr.main\n\n#define SHADER_NAME SSR\n#define MAX_ITERATION 20;\n#define SAMPLE_PER_FRAME 5;\n#define TOTAL_SAMPLES 128;\n\nuniform sampler2D sourceTexture;\nuniform sampler2D gBufferTexture1;\nuniform sampler2D gBufferTexture2;\nuniform sampler2D gBufferTexture3;\nuniform samplerCube specularCubemap;\nuniform float specularIntensity: 1;\n\nuniform mat4 projection;\nuniform mat4 projectionInv;\nuniform mat4 toViewSpace;\nuniform mat4 toWorldSpace;\n\nuniform float maxRayDistance: 200;\n\nuniform float pixelStride: 16;\nuniform float pixelStrideZCutoff: 50; \nuniform float screenEdgeFadeStart: 0.9; \nuniform float eyeFadeStart : 0.2; uniform float eyeFadeEnd: 0.8; \nuniform float minGlossiness: 0.2; uniform float zThicknessThreshold: 1;\n\nuniform float nearZ;\nuniform vec2 viewportSize : VIEWPORT_SIZE;\n\nuniform float jitterOffset: 0;\n\nvarying vec2 v_Texcoord;\n\n#ifdef DEPTH_DECODE\n@import clay.util.decode_float\n#endif\n\n#ifdef PHYSICALLY_CORRECT\nuniform sampler2D normalDistribution;\nuniform float sampleOffset: 0;\nuniform vec2 normalDistributionSize;\n\nvec3 transformNormal(vec3 H, vec3 N) {\n vec3 upVector = N.y > 0.999 ? vec3(1.0, 0.0, 0.0) : vec3(0.0, 1.0, 0.0);\n vec3 tangentX = normalize(cross(N, upVector));\n vec3 tangentZ = cross(N, tangentX);\n return normalize(tangentX * H.x + N * H.y + tangentZ * H.z);\n}\nvec3 importanceSampleNormalGGX(float i, float roughness, vec3 N) {\n float p = fract((i + sampleOffset) / float(TOTAL_SAMPLES));\n vec3 H = texture2D(normalDistribution,vec2(roughness, p)).rgb;\n return transformNormal(H, N);\n}\nfloat G_Smith(float g, float ndv, float ndl) {\n float roughness = 1.0 - g;\n float k = roughness * roughness / 2.0;\n float G1V = ndv / (ndv * (1.0 - k) + k);\n float G1L = ndl / (ndl * (1.0 - k) + k);\n return G1L * G1V;\n}\nvec3 F_Schlick(float ndv, vec3 spec) {\n return spec + (1.0 - spec) * pow(1.0 - ndv, 5.0);\n}\n#endif\n\nfloat fetchDepth(sampler2D depthTexture, vec2 uv)\n{\n vec4 depthTexel = texture2D(depthTexture, uv);\n return depthTexel.r * 2.0 - 1.0;\n}\n\nfloat linearDepth(float depth)\n{\n if (projection[3][3] == 0.0) {\n return projection[3][2] / (depth * projection[2][3] - projection[2][2]);\n }\n else {\n return (depth - projection[3][2]) / projection[2][2];\n }\n}\n\nbool rayIntersectDepth(float rayZNear, float rayZFar, vec2 hitPixel)\n{\n if (rayZFar > rayZNear)\n {\n float t = rayZFar; rayZFar = rayZNear; rayZNear = t;\n }\n float cameraZ = linearDepth(fetchDepth(gBufferTexture2, hitPixel));\n return rayZFar <= cameraZ && rayZNear >= cameraZ - zThicknessThreshold;\n}\n\n\nbool traceScreenSpaceRay(\n vec3 rayOrigin, vec3 rayDir, float jitter,\n out vec2 hitPixel, out vec3 hitPoint, out float iterationCount\n)\n{\n float rayLength = ((rayOrigin.z + rayDir.z * maxRayDistance) > -nearZ)\n ? (-nearZ - rayOrigin.z) / rayDir.z : maxRayDistance;\n\n vec3 rayEnd = rayOrigin + rayDir * rayLength;\n\n vec4 H0 = projection * vec4(rayOrigin, 1.0);\n vec4 H1 = projection * vec4(rayEnd, 1.0);\n\n float k0 = 1.0 / H0.w, k1 = 1.0 / H1.w;\n\n vec3 Q0 = rayOrigin * k0, Q1 = rayEnd * k1;\n\n vec2 P0 = (H0.xy * k0 * 0.5 + 0.5) * viewportSize;\n vec2 P1 = (H1.xy * k1 * 0.5 + 0.5) * viewportSize;\n\n P1 += dot(P1 - P0, P1 - P0) < 0.0001 ? 0.01 : 0.0;\n vec2 delta = P1 - P0;\n\n bool permute = false;\n if (abs(delta.x) < abs(delta.y)) {\n permute = true;\n delta = delta.yx;\n P0 = P0.yx;\n P1 = P1.yx;\n }\n float stepDir = sign(delta.x);\n float invdx = stepDir / delta.x;\n\n vec3 dQ = (Q1 - Q0) * invdx;\n float dk = (k1 - k0) * invdx;\n\n vec2 dP = vec2(stepDir, delta.y * invdx);\n\n float strideScaler = 1.0 - min(1.0, -rayOrigin.z / pixelStrideZCutoff);\n float pixStride = 1.0 + strideScaler * pixelStride;\n\n dP *= pixStride; dQ *= pixStride; dk *= pixStride;\n\n vec4 pqk = vec4(P0, Q0.z, k0);\n vec4 dPQK = vec4(dP, dQ.z, dk);\n\n pqk += dPQK * jitter;\n float rayZFar = (dPQK.z * 0.5 + pqk.z) / (dPQK.w * 0.5 + pqk.w);\n float rayZNear;\n\n bool intersect = false;\n\n vec2 texelSize = 1.0 / viewportSize;\n\n iterationCount = 0.0;\n\n for (int i = 0; i < MAX_ITERATION; i++)\n {\n pqk += dPQK;\n\n rayZNear = rayZFar;\n rayZFar = (dPQK.z * 0.5 + pqk.z) / (dPQK.w * 0.5 + pqk.w);\n\n hitPixel = permute ? pqk.yx : pqk.xy;\n hitPixel *= texelSize;\n\n intersect = rayIntersectDepth(rayZNear, rayZFar, hitPixel);\n\n iterationCount += 1.0;\n\n dPQK *= 1.2;\n\n if (intersect) {\n break;\n }\n }\n\n Q0.xy += dQ.xy * iterationCount;\n Q0.z = pqk.z;\n hitPoint = Q0 / pqk.w;\n\n return intersect;\n}\n\nfloat calculateAlpha(\n float iterationCount, float reflectivity,\n vec2 hitPixel, vec3 hitPoint, float dist, vec3 rayDir\n)\n{\n float alpha = clamp(reflectivity, 0.0, 1.0);\n alpha *= 1.0 - (iterationCount / float(MAX_ITERATION));\n vec2 hitPixelNDC = hitPixel * 2.0 - 1.0;\n float maxDimension = min(1.0, max(abs(hitPixelNDC.x), abs(hitPixelNDC.y)));\n alpha *= 1.0 - max(0.0, maxDimension - screenEdgeFadeStart) / (1.0 - screenEdgeFadeStart);\n\n float _eyeFadeStart = eyeFadeStart;\n float _eyeFadeEnd = eyeFadeEnd;\n if (_eyeFadeStart > _eyeFadeEnd) {\n float tmp = _eyeFadeEnd;\n _eyeFadeEnd = _eyeFadeStart;\n _eyeFadeStart = tmp;\n }\n\n float eyeDir = clamp(rayDir.z, _eyeFadeStart, _eyeFadeEnd);\n alpha *= 1.0 - (eyeDir - _eyeFadeStart) / (_eyeFadeEnd - _eyeFadeStart);\n\n alpha *= 1.0 - clamp(dist / maxRayDistance, 0.0, 1.0);\n\n return alpha;\n}\n\n@import clay.util.rand\n\n@import clay.util.rgbm\n\nvoid main()\n{\n vec4 normalAndGloss = texture2D(gBufferTexture1, v_Texcoord);\n\n if (dot(normalAndGloss.rgb, vec3(1.0)) == 0.0) {\n discard;\n }\n\n float g = normalAndGloss.a;\n#if !defined(PHYSICALLY_CORRECT)\n if (g <= minGlossiness) {\n discard;\n }\n#endif\n\n float reflectivity = (g - minGlossiness) / (1.0 - minGlossiness);\n\n vec3 N = normalize(normalAndGloss.rgb * 2.0 - 1.0);\n N = normalize((toViewSpace * vec4(N, 0.0)).xyz);\n\n vec4 projectedPos = vec4(v_Texcoord * 2.0 - 1.0, fetchDepth(gBufferTexture2, v_Texcoord), 1.0);\n vec4 pos = projectionInv * projectedPos;\n vec3 rayOrigin = pos.xyz / pos.w;\n vec3 V = -normalize(rayOrigin);\n\n float ndv = clamp(dot(N, V), 0.0, 1.0);\n float iterationCount;\n float jitter = rand(fract(v_Texcoord + jitterOffset));\n\n#ifdef PHYSICALLY_CORRECT\n vec4 color = vec4(vec3(0.0), 1.0);\n vec4 albedoMetalness = texture2D(gBufferTexture3, v_Texcoord);\n vec3 albedo = albedoMetalness.rgb;\n float m = albedoMetalness.a;\n vec3 diffuseColor = albedo * (1.0 - m);\n vec3 spec = mix(vec3(0.04), albedo, m);\n\n float jitter2 = rand(fract(v_Texcoord)) * float(TOTAL_SAMPLES);\n\n for (int i = 0; i < SAMPLE_PER_FRAME; i++) {\n vec3 H = importanceSampleNormalGGX(float(i) + jitter2, 1.0 - g, N);\n vec3 rayDir = normalize(reflect(-V, H));\n#else\n vec3 rayDir = normalize(reflect(-V, N));\n#endif\n vec2 hitPixel;\n vec3 hitPoint;\n\n bool intersect = traceScreenSpaceRay(rayOrigin, rayDir, jitter, hitPixel, hitPoint, iterationCount);\n\n float dist = distance(rayOrigin, hitPoint);\n\n vec3 hitNormal = texture2D(gBufferTexture1, hitPixel).rgb * 2.0 - 1.0;\n hitNormal = normalize((toViewSpace * vec4(hitNormal, 0.0)).xyz);\n#ifdef PHYSICALLY_CORRECT\n float ndl = clamp(dot(N, rayDir), 0.0, 1.0);\n float vdh = clamp(dot(V, H), 0.0, 1.0);\n float ndh = clamp(dot(N, H), 0.0, 1.0);\n vec3 litTexel = vec3(0.0);\n if (dot(hitNormal, rayDir) < 0.0 && intersect) {\n litTexel = texture2D(sourceTexture, hitPixel).rgb;\n litTexel *= pow(clamp(1.0 - dist / 200.0, 0.0, 1.0), 3.0);\n\n }\n else {\n #ifdef SPECULARCUBEMAP_ENABLED\n vec3 rayDirW = normalize(toWorldSpace * vec4(rayDir, 0.0)).rgb;\n litTexel = RGBMDecode(textureCubeLodEXT(specularCubemap, rayDirW, 0.0), 8.12).rgb * specularIntensity;\n#endif\n }\n color.rgb += ndl * litTexel * (\n F_Schlick(ndl, spec) * G_Smith(g, ndv, ndl) * vdh / (ndh * ndv + 0.001)\n );\n }\n color.rgb /= float(SAMPLE_PER_FRAME);\n#else\n #if !defined(SPECULARCUBEMAP_ENABLED)\n if (dot(hitNormal, rayDir) >= 0.0) {\n discard;\n }\n if (!intersect) {\n discard;\n }\n#endif\n float alpha = clamp(calculateAlpha(iterationCount, reflectivity, hitPixel, hitPoint, dist, rayDir), 0.0, 1.0);\n vec4 color = texture2D(sourceTexture, hitPixel);\n color.rgb *= alpha;\n\n#ifdef SPECULARCUBEMAP_ENABLED\n vec3 rayDirW = normalize(toWorldSpace * vec4(rayDir, 0.0)).rgb;\n alpha = alpha * (intersect ? 1.0 : 0.0);\n float bias = (1.0 -g) * 5.0;\n color.rgb += (1.0 - alpha)\n * RGBMDecode(textureCubeLodEXT(specularCubemap, rayDirW, bias), 8.12).rgb\n * specularIntensity;\n#endif\n\n#endif\n\n gl_FragColor = encodeHDR(color);\n}\n@end\n\n@export ecgl.ssr.blur\n\nuniform sampler2D texture;\nuniform sampler2D gBufferTexture1;\nuniform sampler2D gBufferTexture2;\nuniform mat4 projection;\nuniform float depthRange : 0.05;\n\nvarying vec2 v_Texcoord;\n\nuniform vec2 textureSize;\nuniform float blurSize : 1.0;\n\n#ifdef BLEND\n #ifdef SSAOTEX_ENABLED\nuniform sampler2D ssaoTex;\n #endif\nuniform sampler2D sourceTexture;\n#endif\n\nfloat getLinearDepth(vec2 coord)\n{\n float depth = texture2D(gBufferTexture2, coord).r * 2.0 - 1.0;\n return projection[3][2] / (depth * projection[2][3] - projection[2][2]);\n}\n\n@import clay.util.rgbm\n\n\nvoid main()\n{\n @import clay.compositor.kernel.gaussian_9\n\n vec4 centerNTexel = texture2D(gBufferTexture1, v_Texcoord);\n float g = centerNTexel.a;\n float maxBlurSize = clamp(1.0 - g, 0.0, 1.0) * blurSize;\n#ifdef VERTICAL\n vec2 off = vec2(0.0, maxBlurSize / textureSize.y);\n#else\n vec2 off = vec2(maxBlurSize / textureSize.x, 0.0);\n#endif\n\n vec2 coord = v_Texcoord;\n\n vec4 sum = vec4(0.0);\n float weightAll = 0.0;\n\n vec3 cN = centerNTexel.rgb * 2.0 - 1.0;\n float cD = getLinearDepth(v_Texcoord);\n for (int i = 0; i < 9; i++) {\n vec2 coord = clamp((float(i) - 4.0) * off + v_Texcoord, vec2(0.0), vec2(1.0));\n float w = gaussianKernel[i]\n * clamp(dot(cN, texture2D(gBufferTexture1, coord).rgb * 2.0 - 1.0), 0.0, 1.0);\n float d = getLinearDepth(coord);\n w *= (1.0 - smoothstep(abs(cD - d) / depthRange, 0.0, 1.0));\n\n weightAll += w;\n sum += decodeHDR(texture2D(texture, coord)) * w;\n }\n\n#ifdef BLEND\n float aoFactor = 1.0;\n #ifdef SSAOTEX_ENABLED\n aoFactor = texture2D(ssaoTex, v_Texcoord).r;\n #endif\n gl_FragColor = encodeHDR(\n sum / weightAll * aoFactor + decodeHDR(texture2D(sourceTexture, v_Texcoord))\n );\n#else\n gl_FragColor = encodeHDR(sum / weightAll);\n#endif\n}\n\n@end"),Fs.prototype.setAmbientCubemap=function(e,t){this._ssrPass.material.set("specularCubemap",e),this._ssrPass.material.set("specularIntensity",t);var r=e&&t;this._ssrPass.material[r?"enableTexture":"disableTexture"]("specularCubemap")},Fs.prototype.update=function(e,t,r,i){var n=e.getWidth(),a=e.getHeight(),o=this._ssrTexture,s=this._texture2,l=this._texture3;o.width=this._prevTexture.width=this._currentTexture.width=n/this._downScale,o.height=this._prevTexture.height=this._currentTexture.height=a/this._downScale,s.width=l.width=n,s.height=l.height=a;var h=this._frameBuffer,u=this._ssrPass,c=this._blurPass1,d=this._blurPass2,f=this._blendPass,p=new hi,m=new hi;hi.transpose(p,t.worldTransform),hi.transpose(m,t.viewMatrix),u.setUniform("sourceTexture",r),u.setUniform("projection",t.projectionMatrix.array),u.setUniform("projectionInv",t.invProjectionMatrix.array),u.setUniform("toViewSpace",p.array),u.setUniform("toWorldSpace",m.array),u.setUniform("nearZ",t.near);var g=i/this._totalSamples*this._samplePerFrame;if(u.setUniform("jitterOffset",g),u.setUniform("sampleOffset",i*this._samplePerFrame),c.setUniform("textureSize",[o.width,o.height]),d.setUniform("textureSize",[n,a]),d.setUniform("sourceTexture",r),c.setUniform("projection",t.projectionMatrix.array),d.setUniform("projection",t.projectionMatrix.array),h.attach(o),h.bind(e),u.render(e),this._physicallyCorrect&&(h.attach(this._currentTexture),f.setUniform("texture1",this._prevTexture),f.setUniform("texture2",o),f.material.set({weight1:i>=1?.95:0,weight2:i>=1?.05:1}),f.render(e)),h.attach(s),c.setUniform("texture",this._physicallyCorrect?this._currentTexture:o),c.render(e),h.attach(l),d.setUniform("texture",s),d.render(e),h.unbind(e),this._physicallyCorrect){var _=this._prevTexture;this._prevTexture=this._currentTexture,this._currentTexture=_}},Fs.prototype.getTargetTexture=function(){return this._texture3},Fs.prototype.setParameter=function(e,t){"maxIteration"===e?this._ssrPass.material.define("fragment","MAX_ITERATION",t):this._ssrPass.setUniform(e,t)},Fs.prototype.setPhysicallyCorrect=function(e){e?(this._normalDistribution||(this._normalDistribution=xa.generateNormalDistribution(64,this._totalSamples)),this._ssrPass.material.define("fragment","PHYSICALLY_CORRECT"),this._ssrPass.material.set("normalDistribution",this._normalDistribution),this._ssrPass.material.set("normalDistributionSize",[64,this._totalSamples])):this._ssrPass.material.undefine("fragment","PHYSICALLY_CORRECT"),this._physicallyCorrect=e},Fs.prototype.setSSAOTexture=function(e){var t=this._blurPass2;e?(t.material.enableTexture("ssaoTex"),t.material.set("ssaoTex",e)):t.material.disableTexture("ssaoTex")},Fs.prototype.isFinished=function(e){return!this._physicallyCorrect||e>this._totalSamples/this._samplePerFrame},Fs.prototype.dispose=function(e){this._ssrTexture.dispose(e),this._texture2.dispose(e),this._texture3.dispose(e),this._prevTexture.dispose(e),this._currentTexture.dispose(e),this._frameBuffer.dispose(e)};const Gs=[0,0,-.321585265978,-.154972575841,.458126042375,.188473391593,.842080129861,.527766490688,.147304551086,-.659453822776,-.331943915203,-.940619700594,.0479226680259,.54812163202,.701581552186,-.709825561388,-.295436780218,.940589268233,-.901489676764,.237713156085,.973570876096,-.109899459384,-.866792314779,-.451805525005,.330975007087,.800048655954,-.344275183665,.381779221166,-.386139432542,-.437418421534,-.576478634965,-.0148463392551,.385798197415,-.262426961053,-.666302061145,.682427250835,-.628010632582,-.732836215494,.10163141741,-.987658134403,.711995289051,-.320024291314,.0296005138058,.950296523438,.0130612307608,-.351024443122,-.879596633704,-.10478487883,.435712737232,.504254490347,.779203817497,.206477676721,.388264289969,-.896736162545,-.153106280781,-.629203242522,-.245517550697,.657969239148,.126830499058,.26862328493,-.634888119007,-.302301223431,.617074219636,.779817204925];function Us(e,t,r,i,n){var a=e.gl;t.setUniform(a,"1i",r,n),a.activeTexture(a.TEXTURE0+n),i.isRenderable()?i.bind(e):i.unbind(e)}function Hs(e,t,r,i,n){var a,o,s,l,h=e.gl;return function(n,u,c){if(!l||l.material!==n.material){var d=n.material,f=n.__program,p=d.get("roughness");null==p&&(p=1);var m=d.get("normalMap")||t,g=d.get("roughnessMap"),_=d.get("bumpMap"),v=d.get("uvRepeat"),y=d.get("uvOffset"),x=d.get("detailUvRepeat"),b=d.get("detailUvOffset"),T=!!_&&d.isTextureEnabled("bumpMap"),w=!!g&&d.isTextureEnabled("roughnessMap"),S=d.isDefined("fragment","DOUBLE_SIDED");_=_||r,g=g||i,c!==u?(u.set("normalMap",m),u.set("bumpMap",_),u.set("roughnessMap",g),u.set("useBumpMap",T),u.set("useRoughnessMap",w),u.set("doubleSide",S),null!=v&&u.set("uvRepeat",v),null!=y&&u.set("uvOffset",y),null!=x&&u.set("detailUvRepeat",x),null!=b&&u.set("detailUvOffset",b),u.set("roughness",p)):(f.setUniform(h,"1f","roughness",p),a!==m&&Us(e,f,"normalMap",m,0),o!==_&&_&&Us(e,f,"bumpMap",_,1),s!==g&&g&&Us(e,f,"roughnessMap",g,2),null!=v&&f.setUniform(h,"2f","uvRepeat",v),null!=y&&f.setUniform(h,"2f","uvOffset",y),null!=x&&f.setUniform(h,"2f","detailUvRepeat",x),null!=b&&f.setUniform(h,"2f","detailUvOffset",b),f.setUniform(h,"1i","useBumpMap",+T),f.setUniform(h,"1i","useRoughnessMap",+w),f.setUniform(h,"1i","doubleSide",+S)),a=m,o=_,s=g,l=n}}}function Vs(e){this._depthTex=new Vi({format:zi.DEPTH_COMPONENT,type:zi.UNSIGNED_INT}),this._normalTex=new Vi({type:zi.HALF_FLOAT}),this._framebuffer=new Xn,this._framebuffer.attach(this._normalTex),this._framebuffer.attach(this._depthTex,Xn.DEPTH_ATTACHMENT),this._normalMaterial=new kt({shader:new xr(xr.source("ecgl.normal.vertex"),xr.source("ecgl.normal.fragment"))}),this._normalMaterial.enableTexture(["normalMap","bumpMap","roughnessMap"]),this._defaultNormalMap=ca.createBlank("#000"),this._defaultBumpMap=ca.createBlank("#000"),this._defaultRoughessMap=ca.createBlank("#000"),this._debugPass=new ya({fragment:xr.source("clay.compositor.output")}),this._debugPass.setUniform("texture",this._normalTex),this._debugPass.material.undefine("fragment","OUTPUT_ALPHA")}function ks(e){e=e||{},this._edgePass=new ya({fragment:xr.source("ecgl.edge")}),this._edgePass.setUniform("normalTexture",e.normalTexture),this._edgePass.setUniform("depthTexture",e.depthTexture),this._targetTexture=new Vi({type:zi.HALF_FLOAT}),this._frameBuffer=new Xn,this._frameBuffer.attach(this._targetTexture)}xr.import("@export ecgl.normal.vertex\n\n@import ecgl.common.transformUniforms\n\n@import ecgl.common.uv.header\n\n@import ecgl.common.attributes\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\n@import ecgl.common.normalMap.vertexHeader\n\n@import ecgl.common.vertexAnimation.header\n\nvoid main()\n{\n\n @import ecgl.common.vertexAnimation.main\n\n @import ecgl.common.uv.main\n\n v_Normal = normalize((worldInverseTranspose * vec4(normal, 0.0)).xyz);\n v_WorldPosition = (world * vec4(pos, 1.0)).xyz;\n\n @import ecgl.common.normalMap.vertexMain\n\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n\n}\n\n\n@end\n\n\n@export ecgl.normal.fragment\n\n#define ROUGHNESS_CHANEL 0\n\nuniform bool useBumpMap;\nuniform bool useRoughnessMap;\nuniform bool doubleSide;\nuniform float roughness;\n\n@import ecgl.common.uv.fragmentHeader\n\nvarying vec3 v_Normal;\nvarying vec3 v_WorldPosition;\n\nuniform mat4 viewInverse : VIEWINVERSE;\n\n@import ecgl.common.normalMap.fragmentHeader\n@import ecgl.common.bumpMap.header\n\nuniform sampler2D roughnessMap;\n\nvoid main()\n{\n vec3 N = v_Normal;\n \n bool flipNormal = false;\n if (doubleSide) {\n vec3 eyePos = viewInverse[3].xyz;\n vec3 V = normalize(eyePos - v_WorldPosition);\n\n if (dot(N, V) < 0.0) {\n flipNormal = true;\n }\n }\n\n @import ecgl.common.normalMap.fragmentMain\n\n if (useBumpMap) {\n N = bumpNormal(v_WorldPosition, v_Normal, N);\n }\n\n float g = 1.0 - roughness;\n\n if (useRoughnessMap) {\n float g2 = 1.0 - texture2D(roughnessMap, v_DetailTexcoord)[ROUGHNESS_CHANEL];\n g = clamp(g2 + (g - 0.5) * 2.0, 0.0, 1.0);\n }\n\n if (flipNormal) {\n N = -N;\n }\n\n gl_FragColor.rgb = (N.xyz + 1.0) * 0.5;\n gl_FragColor.a = g;\n}\n@end"),Vs.prototype.getDepthTexture=function(){return this._depthTex},Vs.prototype.getNormalTexture=function(){return this._normalTex},Vs.prototype.update=function(e,t,r){var i=e.getWidth(),n=e.getHeight(),a=this._depthTex,o=this._normalTex,s=this._normalMaterial;a.width=i,a.height=n,o.width=i,o.height=n;var l=t.getRenderList(r).opaque;this._framebuffer.bind(e),e.gl.clearColor(0,0,0,0),e.gl.clear(e.gl.COLOR_BUFFER_BIT|e.gl.DEPTH_BUFFER_BIT),e.gl.disable(e.gl.BLEND),e.renderPass(l,r,{getMaterial:function(){return s},ifRender:function(e){return e.renderNormal},beforeRender:Hs(e,this._defaultNormalMap,this._defaultBumpMap,this._defaultRoughessMap,this._normalMaterial),sort:e.opaqueSortCompare}),this._framebuffer.unbind(e)},Vs.prototype.renderDebug=function(e){this._debugPass.render(e)},Vs.prototype.dispose=function(e){this._depthTex.dispose(e),this._normalTex.dispose(e)},ks.prototype.update=function(e,t,r,i){var n=e.getWidth(),a=e.getHeight(),o=this._targetTexture;o.width=n,o.height=a;var s=this._frameBuffer;s.bind(e),this._edgePass.setUniform("projectionInv",t.invProjectionMatrix.array),this._edgePass.setUniform("textureSize",[n,a]),this._edgePass.setUniform("texture",r),this._edgePass.render(e),s.unbind(e)},ks.prototype.getTargetTexture=function(){return this._targetTexture},ks.prototype.setParameter=function(e,t){this._edgePass.setUniform(e,t)},ks.prototype.dispose=function(e){this._targetTexture.dispose(e),this._frameBuffer.dispose(e)};const Ws={nodes:[{name:"source",type:"texture",outputs:{color:{}}},{name:"source_half",shader:"#source(clay.compositor.downsample)",inputs:{texture:"source"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"}},{name:"bright",shader:"#source(clay.compositor.bright)",inputs:{texture:"source_half"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{threshold:2,scale:4,textureSize:"expr([width * 1.0 / 2, height / 2])"}},{name:"bright_downsample_4",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 2, height / 2] )"}},{name:"bright_downsample_8",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright_downsample_4"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 4, height / 4] )"}},{name:"bright_downsample_16",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright_downsample_8"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 16)",height:"expr(height * 1.0 / 16)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 8, height / 8] )"}},{name:"bright_downsample_32",shader:"#source(clay.compositor.downsample)",inputs:{texture:"bright_downsample_16"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 32)",height:"expr(height * 1.0 / 32)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0 / 16, height / 16] )"}},{name:"bright_upsample_16_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_32"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 16)",height:"expr(height * 1.0 / 16)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 32, height / 32] )"}},{name:"bright_upsample_16_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_16_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 16)",height:"expr(height * 1.0 / 16)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 16, height * 1.0 / 16] )"}},{name:"bright_upsample_8_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_16"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 16, height * 1.0 / 16] )"}},{name:"bright_upsample_8_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_8_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 8, height * 1.0 / 8] )"}},{name:"bright_upsample_8_blend",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_8_blur_v",texture2:"bright_upsample_16_blur_v"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 8)",height:"expr(height * 1.0 / 8)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"bright_upsample_4_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_8"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 8, height * 1.0 / 8] )"}},{name:"bright_upsample_4_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_4_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 4, height * 1.0 / 4] )"}},{name:"bright_upsample_4_blend",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_4_blur_v",texture2:"bright_upsample_8_blend"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 4)",height:"expr(height * 1.0 / 4)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"bright_upsample_2_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_downsample_4"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 4, height * 1.0 / 4] )"}},{name:"bright_upsample_2_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_2_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0 / 2, height * 1.0 / 2] )"}},{name:"bright_upsample_2_blend",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_2_blur_v",texture2:"bright_upsample_4_blend"},outputs:{color:{parameters:{width:"expr(width * 1.0 / 2)",height:"expr(height * 1.0 / 2)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"bright_upsample_full_blur_h",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:0,textureSize:"expr( [width * 1.0 / 2, height * 1.0 / 2] )"}},{name:"bright_upsample_full_blur_v",shader:"#source(clay.compositor.gaussian_blur)",inputs:{texture:"bright_upsample_full_blur_h"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{blurSize:1,blurDir:1,textureSize:"expr( [width * 1.0, height * 1.0] )"}},{name:"bloom_composite",shader:"#source(clay.compositor.blend)",inputs:{texture1:"bright_upsample_full_blur_v",texture2:"bright_upsample_2_blend"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{weight1:.3,weight2:.7}},{name:"coc",shader:"#source(ecgl.dof.coc)",outputs:{color:{parameters:{minFilter:"NEAREST",magFilter:"NEAREST",width:"expr(width * 1.0)",height:"expr(height * 1.0)"}}},parameters:{focalDist:50,focalRange:30}},{name:"dof_far_blur",shader:"#source(ecgl.dof.diskBlur)",inputs:{texture:"source",coc:"coc"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"}},{name:"dof_near_blur",shader:"#source(ecgl.dof.diskBlur)",inputs:{texture:"source",coc:"coc"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"},defines:{BLUR_NEARFIELD:null}},{name:"dof_coc_blur",shader:"#source(ecgl.dof.diskBlur)",inputs:{texture:"coc"},outputs:{color:{parameters:{minFilter:"NEAREST",magFilter:"NEAREST",width:"expr(width * 1.0)",height:"expr(height * 1.0)"}}},parameters:{textureSize:"expr( [width * 1.0, height * 1.0] )"},defines:{BLUR_COC:null}},{name:"dof_composite",shader:"#source(ecgl.dof.composite)",inputs:{original:"source",blurred:"dof_far_blur",nearfield:"dof_near_blur",coc:"coc",nearcoc:"dof_coc_blur"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)",type:"HALF_FLOAT"}}}},{name:"composite",shader:"#source(clay.compositor.hdr.composite)",inputs:{texture:"source",bloom:"bloom_composite"},outputs:{color:{parameters:{width:"expr(width * 1.0)",height:"expr(height * 1.0)"}}},defines:{}},{name:"FXAA",shader:"#source(clay.compositor.fxaa)",inputs:{texture:"composite"}}]};function js(e,t){return{color:{parameters:{width:e,height:t}}}}xr.import(ms),xr.import(gs),xr.import(_s),xr.import(vs),xr.import(ys),xr.import(xs),xr.import(bs),xr.import(Ts),xr.import(ws),xr.import("@export ecgl.dof.coc\n\nuniform sampler2D depth;\n\nuniform float zNear: 0.1;\nuniform float zFar: 2000;\n\nuniform float focalDistance: 3;\nuniform float focalRange: 1;\nuniform float focalLength: 30;\nuniform float fstop: 2.8;\n\nvarying vec2 v_Texcoord;\n\n@import clay.util.encode_float\n\nvoid main()\n{\n float z = texture2D(depth, v_Texcoord).r * 2.0 - 1.0;\n\n float dist = 2.0 * zNear * zFar / (zFar + zNear - z * (zFar - zNear));\n\n float aperture = focalLength / fstop;\n\n float coc;\n\n float uppper = focalDistance + focalRange;\n float lower = focalDistance - focalRange;\n if (dist <= uppper && dist >= lower) {\n coc = 0.5;\n }\n else {\n float focalAdjusted = dist > uppper ? uppper : lower;\n\n coc = abs(aperture * (focalLength * (dist - focalAdjusted)) / (dist * (focalAdjusted - focalLength)));\n coc = clamp(coc, 0.0, 2.0) / 2.00001;\n\n if (dist < lower) {\n coc = -coc;\n }\n coc = coc * 0.5 + 0.5;\n }\n\n gl_FragColor = encodeFloat(coc);\n}\n@end\n\n\n@export ecgl.dof.composite\n\n#define DEBUG 0\n\nuniform sampler2D original;\nuniform sampler2D blurred;\nuniform sampler2D nearfield;\nuniform sampler2D coc;\nuniform sampler2D nearcoc;\nvarying vec2 v_Texcoord;\n\n@import clay.util.rgbm\n@import clay.util.float\n\nvoid main()\n{\n vec4 blurredColor = texture2D(blurred, v_Texcoord);\n vec4 originalColor = texture2D(original, v_Texcoord);\n\n float fCoc = decodeFloat(texture2D(coc, v_Texcoord));\n\n fCoc = abs(fCoc * 2.0 - 1.0);\n\n float weight = smoothstep(0.0, 1.0, fCoc);\n \n#ifdef NEARFIELD_ENABLED\n vec4 nearfieldColor = texture2D(nearfield, v_Texcoord);\n float fNearCoc = decodeFloat(texture2D(nearcoc, v_Texcoord));\n fNearCoc = abs(fNearCoc * 2.0 - 1.0);\n\n gl_FragColor = encodeHDR(\n mix(\n nearfieldColor, mix(originalColor, blurredColor, weight),\n pow(1.0 - fNearCoc, 4.0)\n )\n );\n#else\n gl_FragColor = encodeHDR(mix(originalColor, blurredColor, weight));\n#endif\n\n}\n\n@end\n\n\n\n@export ecgl.dof.diskBlur\n\n#define POISSON_KERNEL_SIZE 16;\n\nuniform sampler2D texture;\nuniform sampler2D coc;\nvarying vec2 v_Texcoord;\n\nuniform float blurRadius : 10.0;\nuniform vec2 textureSize : [512.0, 512.0];\n\nuniform vec2 poissonKernel[POISSON_KERNEL_SIZE];\n\nuniform float percent;\n\nfloat nrand(const in vec2 n) {\n return fract(sin(dot(n.xy ,vec2(12.9898,78.233))) * 43758.5453);\n}\n\n@import clay.util.rgbm\n@import clay.util.float\n\n\nvoid main()\n{\n vec2 offset = blurRadius / textureSize;\n\n float rnd = 6.28318 * nrand(v_Texcoord + 0.07 * percent );\n float cosa = cos(rnd);\n float sina = sin(rnd);\n vec4 basis = vec4(cosa, -sina, sina, cosa);\n\n#if !defined(BLUR_NEARFIELD) && !defined(BLUR_COC)\n offset *= abs(decodeFloat(texture2D(coc, v_Texcoord)) * 2.0 - 1.0);\n#endif\n\n#ifdef BLUR_COC\n float cocSum = 0.0;\n#else\n vec4 color = vec4(0.0);\n#endif\n\n\n float weightSum = 0.0;\n\n for (int i = 0; i < POISSON_KERNEL_SIZE; i++) {\n vec2 ofs = poissonKernel[i];\n\n ofs = vec2(dot(ofs, basis.xy), dot(ofs, basis.zw));\n\n vec2 uv = v_Texcoord + ofs * offset;\n vec4 texel = texture2D(texture, uv);\n\n float w = 1.0;\n#ifdef BLUR_COC\n float fCoc = decodeFloat(texel) * 2.0 - 1.0;\n cocSum += clamp(fCoc, -1.0, 0.0) * w;\n#else\n texel = texel;\n #if !defined(BLUR_NEARFIELD)\n float fCoc = decodeFloat(texture2D(coc, uv)) * 2.0 - 1.0;\n w *= abs(fCoc);\n #endif\n texel.rgb *= texel.a;\n color += texel * w;\n#endif\n\n weightSum += w;\n }\n\n#ifdef BLUR_COC\n gl_FragColor = encodeFloat(clamp(cocSum / weightSum, -1.0, 0.0) * 0.5 + 0.5);\n#else\n color /= weightSum;\n color.rgb /= (color.a + 0.0001);\n gl_FragColor = color;\n#endif\n}\n\n@end"),xr.import("@export ecgl.edge\n\nuniform sampler2D texture;\n\nuniform sampler2D normalTexture;\nuniform sampler2D depthTexture;\n\nuniform mat4 projectionInv;\n\nuniform vec2 textureSize;\n\nuniform vec4 edgeColor: [0,0,0,0.8];\n\nvarying vec2 v_Texcoord;\n\nvec3 packColor(vec2 coord) {\n float z = texture2D(depthTexture, coord).r * 2.0 - 1.0;\n vec4 p = vec4(v_Texcoord * 2.0 - 1.0, z, 1.0);\n vec4 p4 = projectionInv * p;\n\n return vec3(\n texture2D(normalTexture, coord).rg,\n -p4.z / p4.w / 5.0\n );\n}\n\nvoid main() {\n vec2 cc = v_Texcoord;\n vec3 center = packColor(cc);\n\n float size = clamp(1.0 - (center.z - 10.0) / 100.0, 0.0, 1.0) * 0.5;\n float dx = size / textureSize.x;\n float dy = size / textureSize.y;\n\n vec2 coord;\n vec3 topLeft = packColor(cc+vec2(-dx, -dy));\n vec3 top = packColor(cc+vec2(0.0, -dy));\n vec3 topRight = packColor(cc+vec2(dx, -dy));\n vec3 left = packColor(cc+vec2(-dx, 0.0));\n vec3 right = packColor(cc+vec2(dx, 0.0));\n vec3 bottomLeft = packColor(cc+vec2(-dx, dy));\n vec3 bottom = packColor(cc+vec2(0.0, dy));\n vec3 bottomRight = packColor(cc+vec2(dx, dy));\n\n vec3 v = -topLeft-2.0*top-topRight+bottomLeft+2.0*bottom+bottomRight;\n vec3 h = -bottomLeft-2.0*left-topLeft+bottomRight+2.0*right+topRight;\n\n float edge = sqrt(dot(h, h) + dot(v, v));\n\n edge = smoothstep(0.8, 1.0, edge);\n\n gl_FragColor = mix(texture2D(texture, v_Texcoord), vec4(edgeColor.rgb, 1.0), edgeColor.a * edge);\n}\n@end");var Xs=["composite","FXAA"];function qs(){this._width,this._height,this._dpr,this._sourceTexture=new Vi({type:zi.HALF_FLOAT}),this._depthTexture=new Vi({format:zi.DEPTH_COMPONENT,type:zi.UNSIGNED_INT}),this._framebuffer=new Xn,this._framebuffer.attach(this._sourceTexture),this._framebuffer.attach(this._depthTexture,Xn.DEPTH_ATTACHMENT),this._normalPass=new Vs,this._compositor=As(Ws);var e=this._compositor.getNodeByName("source");e.texture=this._sourceTexture;var t=this._compositor.getNodeByName("coc");this._sourceNode=e,this._cocNode=t,this._compositeNode=this._compositor.getNodeByName("composite"),this._fxaaNode=this._compositor.getNodeByName("FXAA"),this._dofBlurNodes=["dof_far_blur","dof_near_blur","dof_coc_blur"].map(function(e){return this._compositor.getNodeByName(e)},this),this._dofBlurKernel=0,this._dofBlurKernelSize=new Float32Array(0),this._finalNodesChain=Xs.map(function(e){return this._compositor.getNodeByName(e)},this);var r={normalTexture:this._normalPass.getNormalTexture(),depthTexture:this._normalPass.getDepthTexture()};this._ssaoPass=new zs(r),this._ssrPass=new Fs(r),this._edgePass=new ks(r)}function Zs(e){for(var t=[],r=0;r<30;r++)t.push([Ns(r,2),Ns(r,3)]);this._haltonSequence=t,this._frame=0,this._sourceTex=new Vi,this._sourceFb=new Xn,this._sourceFb.attach(this._sourceTex),this._prevFrameTex=new Vi,this._outputTex=new Vi;var i=this._blendPass=new ya({fragment:xr.source("clay.compositor.blend")});i.material.disableTexturesAll(),i.material.enableTexture(["texture1","texture2"]),this._blendFb=new Xn({depthBuffer:!1}),this._outputPass=new ya({fragment:xr.source("clay.compositor.output"),blendWithPrevious:!0}),this._outputPass.material.define("fragment","OUTPUT_ALPHA"),this._outputPass.material.blend=function(e){e.blendEquationSeparate(e.FUNC_ADD,e.FUNC_ADD),e.blendFuncSeparate(e.ONE,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA)}}function Ys(e){e=e||"perspective",this.layer=null,this.scene=new Cn,this.rootNode=this.scene,this.viewport={x:0,y:0,width:0,height:0},this.setProjection(e),this._compositor=new qs,this._temporalSS=new Zs,this._shadowMapPass=new ls;for(var t=[],r=0,i=0;i<30;i++){for(var n=[],a=0;a<6;a++)n.push(4*Ns(r,2)-2),n.push(4*Ns(r,3)-2),r++;t.push(n)}this._pcfKernels=t,this.scene.on("beforerender",function(e,t,r){this.needsTemporalSS()&&this._temporalSS.jitterProjection(e,r)},this)}qs.prototype.resize=function(e,t,r){e*=r=r||1,t*=r;var i=this._sourceTexture,n=this._depthTexture;i.width=e,i.height=t,n.width=e,n.height=t;var a={getWidth:function(){return e},getHeight:function(){return t},getDevicePixelRatio:function(){return r}};function o(e,t){if("function"==typeof e[t]){var r=e[t].__original||e[t];e[t]=function(e){return r.call(this,a)},e[t].__original=r}}this._compositor.nodes.forEach(function(e){for(var t in e.outputs){var r=e.outputs[t].parameters;r&&(o(r,"width"),o(r,"height"))}for(var i in e.parameters)o(e.parameters,i)}),this._width=e,this._height=t,this._dpr=r},qs.prototype.getWidth=function(){return this._width},qs.prototype.getHeight=function(){return this._height},qs.prototype._ifRenderNormalPass=function(){return this._enableSSAO||this._enableEdge||this._enableSSR},qs.prototype._getPrevNode=function(e){for(var t=Xs.indexOf(e.name)-1,r=this._finalNodesChain[t];r&&!this._compositor.getNodeByName(r.name);)t-=1,r=this._finalNodesChain[t];return r},qs.prototype._getNextNode=function(e){for(var t=Xs.indexOf(e.name)+1,r=this._finalNodesChain[t];r&&!this._compositor.getNodeByName(r.name);)t+=1,r=this._finalNodesChain[t];return r},qs.prototype._addChainNode=function(e){var t=this._getPrevNode(e),r=this._getNextNode(e);t&&(e.inputs.texture=t.name,r?(e.outputs=js(this.getWidth.bind(this),this.getHeight.bind(this)),r.inputs.texture=e.name):e.outputs=null,this._compositor.addNode(e))},qs.prototype._removeChainNode=function(e){var t=this._getPrevNode(e),r=this._getNextNode(e);t&&(r?(t.outputs=js(this.getWidth.bind(this),this.getHeight.bind(this)),r.inputs.texture=t.name):t.outputs=null,this._compositor.removeNode(e))},qs.prototype.updateNormal=function(e,t,r,i){this._ifRenderNormalPass()&&this._normalPass.update(e,t,r)},qs.prototype.updateSSAO=function(e,t,r,i){this._ssaoPass.update(e,r,i)},qs.prototype.enableSSAO=function(){this._enableSSAO=!0},qs.prototype.disableSSAO=function(){this._enableSSAO=!1},qs.prototype.enableSSR=function(){this._enableSSR=!0},qs.prototype.disableSSR=function(){this._enableSSR=!1},qs.prototype.getSSAOTexture=function(){return this._ssaoPass.getTargetTexture()},qs.prototype.getSourceFrameBuffer=function(){return this._framebuffer},qs.prototype.getSourceTexture=function(){return this._sourceTexture},qs.prototype.disableFXAA=function(){this._removeChainNode(this._fxaaNode)},qs.prototype.enableFXAA=function(){this._addChainNode(this._fxaaNode)},qs.prototype.enableBloom=function(){this._compositeNode.inputs.bloom="bloom_composite",this._compositor.dirty()},qs.prototype.disableBloom=function(){this._compositeNode.inputs.bloom=null,this._compositor.dirty()},qs.prototype.enableDOF=function(){this._compositeNode.inputs.texture="dof_composite",this._compositor.dirty()},qs.prototype.disableDOF=function(){this._compositeNode.inputs.texture="source",this._compositor.dirty()},qs.prototype.enableColorCorrection=function(){this._compositeNode.define("COLOR_CORRECTION"),this._enableColorCorrection=!0},qs.prototype.disableColorCorrection=function(){this._compositeNode.undefine("COLOR_CORRECTION"),this._enableColorCorrection=!1},qs.prototype.enableEdge=function(){this._enableEdge=!0},qs.prototype.disableEdge=function(){this._enableEdge=!1},qs.prototype.setBloomIntensity=function(e){this._compositeNode.setParameter("bloomIntensity",e)},qs.prototype.setSSAOParameter=function(e,t){switch(e){case"quality":var r={low:6,medium:12,high:32,ultra:62}[t]||12;this._ssaoPass.setParameter("kernelSize",r);break;case"radius":this._ssaoPass.setParameter(e,t),this._ssaoPass.setParameter("bias",t/200);break;case"intensity":this._ssaoPass.setParameter(e,t)}},qs.prototype.setDOFParameter=function(e,t){switch(e){case"focalDistance":case"focalRange":case"fstop":this._cocNode.setParameter(e,t);break;case"blurRadius":for(var r=0;r=this._haltonSequence.length},render:function(e,t,r){var i=this._blendPass;0===this._frame?(i.setUniform("weight1",0),i.setUniform("weight2",1)):(i.setUniform("weight1",.9),i.setUniform("weight2",.1)),i.setUniform("texture1",this._prevFrameTex),i.setUniform("texture2",t||this._sourceTex),this._blendFb.attach(this._outputTex),this._blendFb.bind(e),i.render(e),this._blendFb.unbind(e),r||(this._outputPass.setUniform("texture",this._outputTex),this._outputPass.render(e));var n=this._prevFrameTex;this._prevFrameTex=this._outputTex,this._outputTex=n,this._frame++},dispose:function(e){this._sourceFb.dispose(e),this._blendFb.dispose(e),this._prevFrameTex.dispose(e),this._outputTex.dispose(e),this._sourceTex.dispose(e),this._outputPass.dispose(e),this._blendPass.dispose(e)}},Ys.prototype.setProjection=function(e){var t=this.camera;t&&t.update(),"perspective"===e?this.camera instanceof In||(this.camera=new In,t&&this.camera.setLocalTransform(t.localTransform)):this.camera instanceof ma||(this.camera=new ma,t&&this.camera.setLocalTransform(t.localTransform)),this.camera.near=.1,this.camera.far=2e3},Ys.prototype.setViewport=function(e,t,r,i,n){this.camera instanceof In&&(this.camera.aspect=r/i),n=n||1,this.viewport.x=e,this.viewport.y=t,this.viewport.width=r,this.viewport.height=i,this.viewport.devicePixelRatio=n,this._compositor.resize(r*n,i*n),this._temporalSS.resize(r*n,i*n)},Ys.prototype.containPoint=function(e,t){var r=this.viewport;return t=this.layer.renderer.getHeight()-t,e>=r.x&&t>=r.y&&e<=r.x+r.width&&t<=r.y+r.height};var Ks=new Zt;function Qs(e,t){var r=e.getBoxLayoutParams(),i=E(r,{width:t.getWidth(),height:t.getHeight()});i.y=t.getHeight()-i.y-i.height,this.viewGL.setViewport(i.x,i.y,i.width,i.height,t.getDevicePixelRatio());var n=e.get("boxWidth"),a=e.get("boxHeight"),o=e.get("boxDepth");this.getAxis("x").setExtent(-n/2,n/2),this.getAxis("y").setExtent(o/2,-o/2),this.getAxis("z").setExtent(-a/2,a/2),this.size=[n,a,o]}function Js(e,t){var r={};e.eachSeries(function(e){if(e.coordinateSystem===this){var t=e.getData();["x","y","z"].forEach(function(e){t.mapDimensionsAll(e,!0).forEach(function(i){var n,a;n=e,a=t.getDataExtent(i,!0),r[n]=r[n]||[1/0,-1/0],r[n][0]=Math.min(a[0],r[n][0]),r[n][1]=Math.max(a[1],r[n][1])})})}},this),["xAxis3D","yAxis3D","zAxis3D"].forEach(function(t){e.eachComponent(t,function(e){var i=t.charAt(0),n=e.getReferringComponents("grid3D").models[0],a=n.coordinateSystem;if(a===this){var o=a.getAxis(i);if(!o){(o=new qo(i,D(r[i]||[1/0,-1/0],e))).type=e.get("type");var s="category"===o.type;o.onBand=s&&e.get("boundaryGap"),o.inverse=e.get("inverse"),e.axis=o,o.model=e,o.getLabelModel=function(){return e.getModel("axisLabel",n.getModel("axisLabel"))},o.getTickModel=function(){return e.getModel("axisTick",n.getModel("axisTick"))},a.addAxis(o)}}},this)},this),this.resize(this.model,t)}Ys.prototype.castRay=function(e,t,r){var i=this.layer.renderer,n=i.viewport;return i.viewport=this.viewport,i.screenToNDC(e,t,Ks),this.camera.castRay(Ks,r),i.viewport=n,r},Ys.prototype.prepareRender=function(){this.scene.update(),this.camera.update(),this.scene.updateLights();var e=this.scene.updateRenderList(this.camera);this._needsSortProgressively=!1;for(var t=0;t30},Ys.prototype._doRender=function(e,t,r){var i=this.scene,n=this.camera;r=r||0,this._updateTransparent(e,i,n,r),t||(this._shadowMapPass.kernelPCF=this._pcfKernels[0],this._shadowMapPass.render(e,i,n,!0)),this._updateShadowPCFKernel(r);var a,o=e.clearColor;(e.gl.clearColor(o[0],o[1],o[2],o[3]),this._enablePostEffect&&(this.needsTemporalSS()&&this._temporalSS.jitterProjection(e,n),this._compositor.updateNormal(e,i,n,this._temporalSS.getFrame())),this._updateSSAO(e,i,n,this._temporalSS.getFrame()),this._enablePostEffect)?((a=this._compositor.getSourceFrameBuffer()).bind(e),e.gl.clear(e.gl.DEPTH_BUFFER_BIT|e.gl.COLOR_BUFFER_BIT),e.render(i,n,!0,!0),a.unbind(e),this.needsTemporalSS()&&t?(this._compositor.composite(e,i,n,this._temporalSS.getSourceFrameBuffer(),this._temporalSS.getFrame()),e.setViewport(this.viewport),this._temporalSS.render(e)):(e.setViewport(this.viewport),this._compositor.composite(e,i,n,null,0))):this.needsTemporalSS()&&t?((a=this._temporalSS.getSourceFrameBuffer()).bind(e),e.saveClear(),e.clearBit=e.gl.DEPTH_BUFFER_BIT|e.gl.COLOR_BUFFER_BIT,e.render(i,n,!0,!0),e.restoreClear(),a.unbind(e),e.setViewport(this.viewport),this._temporalSS.render(e)):(e.setViewport(this.viewport),e.render(i,n,!0,!0))},Ys.prototype._updateTransparent=function(e,t,r,i){for(var n=new Fr,a=new hi,o=r.getWorldPosition(),s=t.getRenderList(r).transparent,l=0;lthis.camera.far||e80*r){i=a=e[0],n=o=e[1];for(var p=r;pa&&(a=s),l>o&&(o=l);h=Math.max(a-i,o-n)}return ml(d,f,r,i,n,h),f}function fl(e,t,r,i,n){var a,o;if(n===Rl(e,t,r,i)>0)for(a=t;a=t;a-=i)o=Pl(a,e[a],e[a+1],o);return o&&El(o,o.next)&&(Ol(o),o=o.next),o}function pl(e,t){if(!e)return e;t||(t=e);var r,i=e;do{if(r=!1,i.steiner||!El(i,i.next)&&0!==Al(i.prev,i,i.next))i=i.next;else{if(Ol(i),(i=t=i.prev)===i.next)return null;r=!0}}while(r||i!==t);return t}function ml(e,t,r,i,n,a,o){if(e){!o&&a&&function(e,t,r,i){var n=e;do{null===n.z&&(n.z=Tl(n.x,n.y,t,r,i)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,function(e){var t,r,i,n,a,o,s,l,h=1;do{for(r=e,e=null,a=null,o=0;r;){for(o++,i=r,s=0,t=0;t0||l>0&&i;)0!==s&&(0===l||!i||r.z<=i.z)?(n=r,r=r.nextZ,s--):(n=i,i=i.nextZ,l--),a?a.nextZ=n:e=n,n.prevZ=a,a=n;r=i}a.nextZ=null,h*=2}while(o>1)}(n)}(e,i,n,a);for(var s,l,h=e;e.prev!==e.next;)if(s=e.prev,l=e.next,a?_l(e,i,n,a):gl(e))t.push(s.i/r),t.push(e.i/r),t.push(l.i/r),Ol(e),e=l.next,h=l.next;else if((e=l)===h){o?1===o?ml(e=vl(e,t,r),t,r,i,n,a,2):2===o&&yl(e,t,r,i,n,a):ml(pl(e),t,r,i,n,a,1);break}}}function gl(e){var t=e.prev,r=e,i=e.next;if(Al(t,r,i)>=0)return!1;for(var n=e.next.next;n!==e.prev;){if(Sl(t.x,t.y,r.x,r.y,i.x,i.y,n.x,n.y)&&Al(n.prev,n,n.next)>=0)return!1;n=n.next}return!0}function _l(e,t,r,i){var n=e.prev,a=e,o=e.next;if(Al(n,a,o)>=0)return!1;for(var s=n.xa.x?n.x>o.x?n.x:o.x:a.x>o.x?a.x:o.x,u=n.y>a.y?n.y>o.y?n.y:o.y:a.y>o.y?a.y:o.y,c=Tl(s,l,t,r,i),d=Tl(h,u,t,r,i),f=e.nextZ;f&&f.z<=d;){if(f!==e.prev&&f!==e.next&&Sl(n.x,n.y,a.x,a.y,o.x,o.y,f.x,f.y)&&Al(f.prev,f,f.next)>=0)return!1;f=f.nextZ}for(f=e.prevZ;f&&f.z>=c;){if(f!==e.prev&&f!==e.next&&Sl(n.x,n.y,a.x,a.y,o.x,o.y,f.x,f.y)&&Al(f.prev,f,f.next)>=0)return!1;f=f.prevZ}return!0}function vl(e,t,r){var i=e;do{var n=i.prev,a=i.next.next;!El(n,a)&&Dl(n,i,i.next,a)&&Cl(n,a)&&Cl(a,n)&&(t.push(n.i/r),t.push(i.i/r),t.push(a.i/r),Ol(i),Ol(i.next),i=e=a),i=i.next}while(i!==e);return i}function yl(e,t,r,i,n,a){var o=e;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Ml(o,s)){var l=Ll(o,s);return o=pl(o,o.next),l=pl(l,l.next),ml(o,t,r,i,n,a),void ml(l,t,r,i,n,a)}s=s.next}o=o.next}while(o!==e)}function xl(e,t){return e.x-t.x}function bl(e,t){if(t=function(e,t){var r,i=t,n=e.x,a=e.y,o=-1/0;do{if(a<=i.y&&a>=i.next.y&&i.next.y!==i.y){var s=i.x+(a-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=n&&s>o){if(o=s,s===n){if(a===i.y)return i;if(a===i.next.y)return i.next}r=i.x=i.x&&i.x>=u&&n!==i.x&&Sl(ar.x)&&Cl(i,e)&&(r=i,d=l),i=i.next;return r}(e,t),t){var r=Ll(t,e);pl(r,r.next)}}function Tl(e,t,r,i,n){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-r)/n)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)/n)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function wl(e){var t=e,r=e;do{t.x=0&&(e-o)*(i-s)-(r-o)*(t-s)>=0&&(r-o)*(a-s)-(n-o)*(i-s)>=0}function Ml(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&Dl(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}(e,t)&&Cl(e,t)&&Cl(t,e)&&function(e,t){var r=e,i=!1,n=(e.x+t.x)/2,a=(e.y+t.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&n<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next}while(r!==e);return i}(e,t)}function Al(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function El(e,t){return e.x===t.x&&e.y===t.y}function Dl(e,t,r,i){return!!(El(e,t)&&El(r,i)||El(e,i)&&El(r,t))||Al(e,t,r)>0!=Al(e,t,i)>0&&Al(r,i,e)>0!=Al(r,i,t)>0}function Cl(e,t){return Al(e.prev,e,e.next)<0?Al(e,t,e.next)>=0&&Al(e,e.prev,t)>=0:Al(e,t,e.prev)<0||Al(e,e.next,t)<0}function Ll(e,t){var r=new Nl(e.i,e.x,e.y),i=new Nl(t.i,t.x,t.y),n=e.next,a=t.prev;return e.next=t,t.prev=e,r.next=n,n.prev=r,i.next=r,r.prev=i,a.next=i,i.prev=a,i}function Pl(e,t,r,i){var n=new Nl(e,t,r);return i?(n.next=i.next,n.prev=i,i.next.prev=n,i.next=n):(n.prev=n,n.next=n),n}function Ol(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Nl(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Rl(e,t,r,i){for(var n=0,a=t,o=r-i;al&&s.push({pivot:Math.floor((h+l)/2),left:l,right:h});var h;l=a[o].pivot+1;(h=a[o].right)>l&&s.push({pivot:Math.floor((h+l)/2),left:l,right:h})}a=this._parts=s}else for(o=0;o=2e4},doSortTriangles:function(e,t){var r=this.indices;if(0===t){var i=this.attributes.position;e=e.array;this._triangleZList&&this._triangleZList.length===this.triangleCount||(this._triangleZList=new Float32Array(this.triangleCount),this._sortedTriangleIndices=new Uint32Array(this.triangleCount),this._indicesTmp=new r.constructor(r.length),this._triangleZListTmp=new Float32Array(this.triangleCount));for(var n,a=0,o=0;o0,r={},i=0;i65535?new Uint32Array(3*o):new Uint16Array(3*o),d.material.shader!==t&&d.material.attachShader(t,!0),Za.setMaterialFromModel(t.__shading,d.material,e,r),s>0&&(this._linesMesh.geometry.resetOffset(),this._linesMesh.geometry.setVertexCount(s),this._linesMesh.geometry.setTriangleCount(l)),this._dataIndexOfVertex=new Uint32Array(a),this._vertexRangeOfDataIndex=new Uint32Array(2*(n-i))},_updateRegionMesh:function(e,t,r,i){for(var n=e.getData(),a=0,o=0,s=!1,l=this._polygonMesh,h=this._linesMesh,u=r;u0;T&&(b*=t.getDevicePixelRatio(),this._updateLinesGeometry(h.geometry,e,u,v,b,e.coordinateSystem.transform)),h.invisible=!T,h.material.set({color:g})}(l=this._polygonMesh).material.transparent=s,l.material.depthMask=!s,l.geometry.updateBoundingBox(),l.frontFace=this.extrudeY?Za.Mesh.CCW:Za.Mesh.CW,l.material.get("normalMap")&&l.geometry.generateTangents(),l.seriesIndex=e.seriesIndex,l.on("mousemove",this._onmousemove,this),l.on("mouseout",this._onmouseout,this)},_updateDebugWireframe:function(e){var t=e.getModel("debug.wireframe");if(t.get("show")){var r=Za.parseColor(t.get("lineStyle.color")||"rgba(0,0,0,0.5)"),i=Da(t.get("lineStyle.width"),1),n=this._polygonMesh;n.geometry.generateBarycentric(),n.material.define("both","WIREFRAME_TRIANGLE"),n.material.set("wireframeLineColor",r),n.material.set("wireframeLineWidth",i)}},_onmousemove:function(e){var t=this._dataIndexOfVertex[e.triangle[0]];null==t&&(t=-1),t!==this._lastHoverDataIndex&&(this.downplay(this._lastHoverDataIndex),this.highlight(t),this._labelsBuilder.updateLabels([t])),this._lastHoverDataIndex=t,this._polygonMesh.dataIndex=t},_onmouseout:function(e){e.target&&(this.downplay(this._lastHoverDataIndex),this._lastHoverDataIndex=-1,this._polygonMesh.dataIndex=-1),this._labelsBuilder.updateLabels([])},_updateGroundPlane:function(e,t,r){var i=e.getModel("groundPlane",e);if(this._groundMesh.invisible=!i.get("show",!0),!this._groundMesh.invisible){var n=e.get("shading"),a=this._groundMaterials[n];a||(a=this._groundMaterials.lambert),Za.setMaterialFromModel(n,a,i,r),a.get("normalMap")&&this._groundMesh.geometry.generateTangents(),this._groundMesh.material=a,this._groundMesh.material.set("color",Za.parseColor(i.get("color"))),this._groundMesh.scale.set(t.size[0],t.size[2],1)}},_triangulation:function(e,t,r){this._triangulationResults=[];for(var i=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0],a=e.coordinateSystem,o=t;o1?i:0,L[U][g]=A.points[V+2],l.set(n+U,L[U]),s?(R[0]=(A.points[V]*_[0]-v[0])/x,R[1]=(A.points[V+2]*_[g]-v[g])/x):(R[0]=(H?I:I+G)/x,R[1]=(L[U][m]*_[m]-v[m])/x),u.set(n+U,R)}ql.sub(P,L[1],L[0]),ql.sub(O,L[3],L[0]),ql.cross(N,P,O),ql.normalize(N,N);for(U=0;U<4;U++)h.set(n+U,N),f&&c.set(n+U,o);for(U=0;U<6;U++)p[3*a+U]=C[U]+n;n+=4,a+=2,I+=G}}return t.dirty(),{vertexOffset:n,triangleOffset:a}},_getRegionLinesInfo:function(e,t,r){var i=0,n=0;t.getRegionModel(e).getModel("itemStyle").get("borderWidth")>0&&t.getRegionPolygonCoords(e).forEach(function(e){var t=e.exterior,a=e.interiors;i+=r.getPolylineVertexCount(t),n+=r.getPolylineTriangleCount(t);for(var o=0;othis._endIndex)){t-=this._startIndex;for(var i=this._vertexRangeOfDataIndex[2*t];i0},_displacementChanged:!0,_displacementScale:0,updateDisplacementHash:function(){var e=this.getDisplacementTexture(),t=this.getDisplacemenScale();this._displacementChanged=this._displacementTexture!==e||this._displacementScale!==t,this._displacementTexture=e,this._displacementScale=t},isDisplacementChanged:function(){return this._displacementChanged}});m(oh.prototype,ho),m(oh.prototype,uo),m(oh.prototype,co),m(oh.prototype,hl);var sh=Math.PI,lh=Math.sin,hh=Math.cos,uh=Math.tan,ch=Math.asin,dh=Math.atan2,fh=sh/180;var ph=23.4397*fh;function mh(e,t){return dh(lh(e)*hh(ph)-uh(t)*lh(ph),hh(e))}function gh(e,t){return ch(lh(t)*hh(ph)+hh(t)*lh(ph)*lh(e))}function _h(e,t,r){return dh(lh(e),hh(e)*lh(t)-uh(r)*hh(t))}function vh(e,t,r){return ch(lh(t)*lh(r)+hh(t)*hh(r)*hh(e))}function yh(e){var t=function(e){return fh*(357.5291+.98560028*e)}(e),r=function(e){return e+fh*(1.9148*lh(e)+.02*lh(2*e)+3e-4*lh(3*e))+102.9372*fh+sh}(t);return{dec:gh(r,0),ra:mh(r,0)}}var xh={};xh.getPosition=function(e,t,r){var i=fh*-r,n=fh*t,a=function(e){return function(e){return e.valueOf()/864e5-.5+2440588}(e)-2451545}(e),o=yh(a),s=function(e,t){return fh*(280.16+360.9856235*e)-t}(a,i)-o.ra;return{azimuth:_h(s,n,o.dec),altitude:vh(s,n,o.dec)}};Za.Shader.import(Wa),Za.Shader.import("@export ecgl.atmosphere.vertex\nattribute vec3 position: POSITION;\nattribute vec3 normal : NORMAL;\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform mat4 normalMatrix : WORLDINVERSETRANSPOSE;\n\nvarying vec3 v_Normal;\n\nvoid main() {\n v_Normal = normalize((normalMatrix * vec4(normal, 0.0)).xyz);\n gl_Position = worldViewProjection * vec4(position, 1.0);\n}\n@end\n\n\n@export ecgl.atmosphere.fragment\nuniform mat4 viewTranspose: VIEWTRANSPOSE;\nuniform float glowPower;\nuniform vec3 glowColor;\n\nvarying vec3 v_Normal;\n\nvoid main() {\n float intensity = pow(1.0 - dot(v_Normal, (viewTranspose * vec4(0.0, 0.0, 1.0, 0.0)).xyz), glowPower);\n gl_FragColor = vec4(glowColor, intensity * intensity);\n}\n@end");const bh=T.extend({type:"globe",__ecgl__:!0,_displacementScale:0,init:function(e,t){this.groupGL=new Za.Node,this._sphereGeometry=new Za.SphereGeometry({widthSegments:200,heightSegments:100,dynamic:!0}),this._overlayGeometry=new Za.SphereGeometry({widthSegments:80,heightSegments:40}),this._planeGeometry=new Za.PlaneGeometry,this._earthMesh=new Za.Mesh({renderNormal:!0}),this._atmosphereMesh=new Za.Mesh,this._atmosphereGeometry=new Za.SphereGeometry({widthSegments:80,heightSegments:40}),this._atmosphereMaterial=new Za.Material({shader:new Za.Shader(Za.Shader.source("ecgl.atmosphere.vertex"),Za.Shader.source("ecgl.atmosphere.fragment")),transparent:!0}),this._atmosphereMesh.geometry=this._atmosphereGeometry,this._atmosphereMesh.material=this._atmosphereMaterial,this._atmosphereMesh.frontFace=Za.Mesh.CW,this._lightRoot=new Za.Node,this._sceneHelper=new Mo,this._sceneHelper.initLight(this._lightRoot),this.groupGL.add(this._atmosphereMesh),this.groupGL.add(this._earthMesh),this._control=new _o({zr:t.getZr()}),this._control.init(),this._layerMeshes={}},render:function(e,t,r){var i=e.coordinateSystem,n=e.get("shading");i.viewGL.add(this._lightRoot),e.get("show")?i.viewGL.add(this.groupGL):i.viewGL.remove(this.groupGL),this._sceneHelper.setScene(i.viewGL.scene),i.viewGL.setPostEffect(e.getModel("postEffect"),r),i.viewGL.setTemporalSuperSampling(e.getModel("temporalSuperSampling"));var a=this._earthMesh;a.geometry=this._sphereGeometry;var o="ecgl."+n;a.material&&a.material.shader.name===o||(a.material=Za.createMaterial(o)),Za.setMaterialFromModel(n,a.material,e,r),["roughnessMap","metalnessMap","detailMap","normalMap"].forEach(function(e){var t=a.material.get(e);t&&(t.flipY=!1)}),a.material.set("color",Za.parseColor(e.get("baseColor")));var s=.99*i.radius;if(a.scale.set(s,s,s),e.get("atmosphere.show")){a.material.define("both","ATMOSPHERE_ENABLED"),this._atmosphereMesh.invisible=!1,this._atmosphereMaterial.setUniforms({glowPower:e.get("atmosphere.glowPower")||6,glowColor:e.get("atmosphere.color")||"#ffffff"}),a.material.setUniforms({glowPower:e.get("atmosphere.innerGlowPower")||2,glowColor:e.get("atmosphere.color")||"#ffffff"});var l=e.get("atmosphere.offset")||5;this._atmosphereMesh.scale.set(s+l,s+l,s+l)}else a.material.undefine("both","ATMOSPHERE_ENABLED"),this._atmosphereMesh.invisible=!0;var h=a.material.setTextureImage("diffuseMap",e.get("baseTexture"),r,{flipY:!1,anisotropic:8});h&&h.surface&&h.surface.attachToMesh(a);var u=a.material.setTextureImage("bumpMap",e.get("heightTexture"),r,{flipY:!1,anisotropic:8});u&&u.surface&&u.surface.attachToMesh(a),a.material[e.get("postEffect.enable")?"define":"undefine"]("fragment","SRGB_DECODE"),this._updateLight(e,r),this._displaceVertices(e,r),this._updateViewControl(e,r),this._updateLayers(e,r)},afterRender:function(e,t,r,i){var n=i.renderer;this._sceneHelper.updateAmbientCubemap(n,e,r),this._sceneHelper.updateSkybox(n,e,r)},_updateLayers:function(e,t){var r=e.coordinateSystem,i=e.get("layers"),n=r.radius,a=[],o=[],s=[],h=[];l(i,function(e){var i=new y(e),l=i.get("type"),u=Za.loadTexture(i.get("texture"),t,{flipY:!1,anisotropic:8});if(u.surface&&u.surface.attachToMesh(this._earthMesh),"blend"===l){var c=i.get("blendTo"),d=Da(i.get("intensity"),1);"emission"===c?(s.push(u),h.push(d)):(a.push(u),o.push(d))}else{var f=i.get("id"),p=this._layerMeshes[f];p||(p=this._layerMeshes[f]=new Za.Mesh({geometry:this._overlayGeometry,castShadow:!1,ignorePicking:!0})),"lambert"===i.get("shading")?(p.material=p.__lambertMaterial||new Za.Material({autoUpdateTextureStatus:!1,shader:Za.createShader("ecgl.lambert"),transparent:!0,depthMask:!1}),p.__lambertMaterial=p.material):(p.material=p.__colorMaterial||new Za.Material({autoUpdateTextureStatus:!1,shader:Za.createShader("ecgl.color"),transparent:!0,depthMask:!1}),p.__colorMaterial=p.material),p.material.enableTexture("diffuseMap");var m=i.get("distance"),g=n+(null==m?r.radius/100:m);p.scale.set(g,g,g),n=g;var _=this._blankTexture||(this._blankTexture=Za.createBlankTexture("rgba(255, 255, 255, 0)"));p.material.set("diffuseMap",_),Za.loadTexture(i.get("texture"),t,{flipY:!1,anisotropic:8},function(e){e.surface&&e.surface.attachToMesh(p),p.material.set("diffuseMap",e),t.getZr().refresh()}),i.get("show")?this.groupGL.add(p):this.groupGL.remove(p)}},this);var u=this._earthMesh.material;u.define("fragment","LAYER_DIFFUSEMAP_COUNT",a.length),u.define("fragment","LAYER_EMISSIVEMAP_COUNT",s.length),u.set("layerDiffuseMap",a),u.set("layerDiffuseIntensity",o),u.set("layerEmissiveMap",s),u.set("layerEmissionIntensity",h);var c=e.getModel("debug.wireframe");if(c.get("show")){u.define("both","WIREFRAME_TRIANGLE");var d=Za.parseColor(c.get("lineStyle.color")||"rgba(0,0,0,0.5)"),f=Da(c.get("lineStyle.width"),1);u.set("wireframeLineWidth",f),u.set("wireframeLineColor",d)}else u.undefine("both","WIREFRAME_TRIANGLE")},_updateViewControl:function(e,t){var r=e.coordinateSystem,i=e.getModel("viewControl");r.viewGL.camera;var n=this;var a=this._control;a.setViewGL(r.viewGL);var o,s,l=i.get("targetCoord");null!=l&&(s=l[0]+90,o=l[1]),a.setFromViewControlModel(i,{baseDistance:r.radius,alpha:o,beta:s}),a.off("update"),a.on("update",function(){t.dispatchAction({type:"globeChangeCamera",alpha:a.getAlpha(),beta:a.getBeta(),distance:a.getDistance()-r.radius,center:a.getCenter(),from:n.uid,globeId:e.id})})},_displaceVertices:function(e,t){var r=e.get("displacementQuality"),i=e.get("debug.wireframe.show"),n=e.coordinateSystem;if(e.isDisplacementChanged()||r!==this._displacementQuality||i!==this._showDebugWireframe){this._displacementQuality=r,this._showDebugWireframe=i;var a=this._sphereGeometry,o={low:100,medium:200,high:400,ultra:800}[r]||200,s=o/2;(a.widthSegments!==o||i)&&(a.widthSegments=o,a.heightSegments=s,a.build()),this._doDisplaceVertices(a,n),i&&a.generateBarycentric()}},_doDisplaceVertices:function(e,t){var r=e.attributes.position.value,i=e.attributes.texcoord0.value,n=e.__originalPosition;n&&n.length===r.length||((n=new Float32Array(r.length)).set(r),e.__originalPosition=n);for(var a=t.displacementWidth,o=t.displacementHeight,s=t.displacementData,l=0;l50&&(a=1e3);var o=[];Rh.perspective(o,Bh,this.width/this.height,1,a),this.viewGL.camera.projectionMatrix.setArray(o),this.viewGL.camera.decomposeProjectionMatrix();o=Rh.identity([]);var s=this.dataToPoint(this.center);Rh.scale(o,o,[1,-1,1]),Rh.translate(o,o,[0,0,-e]),Rh.rotateX(o,o,t),Rh.rotateZ(o,o,-this.bearing/180*Math.PI),Rh.translate(o,o,[-s[0]*this.getScale()*Fh,-s[1]*this.getScale()*Fh,0]),this.viewGL.camera.viewMatrix.array=o;var l=[];Rh.invert(l,o),this.viewGL.camera.worldTransform.array=l,this.viewGL.camera.decomposeWorldTransform();var h,u=Ih*this.getScale();if(this.altitudeExtent&&!isNaN(this.boxHeight)){var c=this.altitudeExtent[1]-this.altitudeExtent[0];h=this.boxHeight/c*this.getScale()/Math.pow(2,this._initialZoom-this.zoomOffset)}else h=u/(2*Math.PI*6378e3*Math.abs(Math.cos(this.center[1]*(Math.PI/180))))*this.altitudeScale*Fh;this.viewGL.rootNode.scale.set(this.getScale()*Fh,this.getScale()*Fh,h)}},getScale:function(){return Math.pow(2,this.zoom-this.zoomOffset)},projectOnTile:function(e,t){return this.projectOnTileWithScale(e,this.getScale()*Ih,t)},projectOnTileWithScale:function(e,t,r){var i=e[0],n=e[1]*zh/180,a=t*(i*zh/180+zh)/(2*zh),o=t*(zh-Math.log(Math.tan(zh/4+.5*n)))/(2*zh);return(r=r||[])[0]=a,r[1]=o,r},unprojectFromTile:function(e,t){return this.unprojectOnTileWithScale(e,this.getScale()*Ih,t)},unprojectOnTileWithScale:function(e,t,r){var i=e[0],n=e[1],a=i/t*(2*zh)-zh,o=2*(Math.atan(Math.exp(zh-n/t*(2*zh)))-zh/4);return(r=r||[])[0]=180*a/zh,r[1]=180*o/zh,r},dataToPoint:function(e,t){return(t=this.projectOnTileWithScale(e,Ih,t))[0]-=this._origin[0],t[1]-=this._origin[1],t[2]=isNaN(e[2])?0:e[2],isNaN(e[2])||(t[2]=e[2],this.altitudeExtent&&(t[2]-=this.altitudeExtent[0])),t}},Uh.prototype=new Gh,Uh.prototype.constructor=Uh,Uh.prototype.type="mapbox3D";var Vh=Hh("mapbox3D",Uh,function(e){e.forEach(function(e){e.setCameraOption(e.model.getMapboxCameraOption())})});N(function(e){e.registerComponentModel(Ch),e.registerComponentView(Nh),e.registerCoordinateSystem("mapbox3D",Vh),e.registerAction({type:"mapbox3DChangeCamera",event:"mapbox3dcamerachanged",update:"mapbox3D:updateCamera"},function(e,t){t.eachComponent({mainType:"mapbox3D",query:e},function(t){t.setMapboxCameraOption(e)})})});var kh=["zoom","center","pitch","bearing"],Wh=p.extend({type:"maptalks3D",layoutMode:"box",coordinateSystem:null,defaultOption:{zlevel:-10,urlTemplate:"http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",attribution:'© OpenStreetMap contributors, © CARTO',center:[0,0],zoom:0,pitch:0,bearing:0,light:{main:{alpha:20,beta:30}},altitudeScale:1,boxHeight:"auto"},getMaptalksCameraOption:function(){var e=this;return kh.reduce(function(t,r){return t[r]=e.get(r),t},{})},setMaptalksCameraOption:function(e){null!=e&&kh.forEach(function(t){null!=e[t]&&(this.option[t]=e[t])},this)},getMaptalks:function(){return this._maptalks},setMaptalks:function(e){this._maptalks=e}});function jh(e,t,r,i){if(this.id=e,this.zr=t,this.dom=document.createElement("div"),this.dom.style.cssText="position:absolute;left:0;right:0;top:0;bottom:0;",!maptalks)throw new Error("Maptalks library must be included. See https://maptalks.org");this._maptalks=new maptalks.Map(this.dom,{center:r,zoom:i,doubleClickZoom:!1,fog:!1}),this._initEvents()}m(Wh.prototype,uo),m(Wh.prototype,co),jh.prototype.setUnpainted=function(){},jh.prototype.resize=function(){this._maptalks.checkSize()},jh.prototype.getMaptalks=function(){return this._maptalks},jh.prototype.clear=function(){},jh.prototype.refresh=function(){this._maptalks.checkSize()};var Xh=["mousedown","mouseup","click","dblclick","mousemove","mousewheel","DOMMouseScroll","touchstart","touchend","touchmove","touchcancel"];jh.prototype._initEvents=function(){var e=this.dom;this._handlers=this._handlers||{contextmenu:function(e){return e.preventDefault(),!1}},Xh.forEach(function(t){this._handlers[t]=function(r){var i={};for(var n in r)i[n]=r[n];i.bubbles=!1;var a=new r.constructor(r.type,i);"mousewheel"===t||"DOMMouseScroll"===t?e.dispatchEvent(a):e.firstElementChild.dispatchEvent(a)},this.zr.dom.addEventListener(t,this._handlers[t])},this),this.zr.dom.addEventListener("contextmenu",this._handlers.contextmenu)},jh.prototype.dispose=function(){Xh.forEach(function(e){this.zr.dom.removeEventListener(e,this._handlers[e])},this),this._maptalks.remove()},Za.Shader.import(Oh);const qh=T.extend({type:"maptalks3D",__ecgl__:!0,init:function(e,t){this._groundMesh=new Za.Mesh({geometry:new Za.PlaneGeometry,material:new Za.Material({shader:new Za.Shader({vertex:Za.Shader.source("ecgl.displayShadow.vertex"),fragment:Za.Shader.source("ecgl.displayShadow.fragment")}),depthMask:!1}),renderOrder:-100,culling:!1,castShadow:!1,$ignorePicking:!0,renderNormal:!0})},_initMaptalksLayer:function(e,t){var r=t.getZr();this._zrLayer=new jh("maptalks3D",r,e.get("center"),e.get("zoom")),r.painter.insertLayer(-1e3,this._zrLayer),this._lightRoot=new Za.Node,this._sceneHelper=new Mo(this._lightRoot),this._sceneHelper.initLight(this._lightRoot);var i=this._zrLayer.getMaptalks(),n=this._dispatchInteractAction.bind(this,t,i);["zoomend","zooming","zoomstart","dragrotating","pitch","pitchend","movestart","moving","moveend","resize","touchstart","touchmove","touchend","animating"].forEach(function(e){i.on(e,n)})},render:function(e,t,r){this._zrLayer||this._initMaptalksLayer(e,r);var i=this._zrLayer.getMaptalks(),n=e.get("urlTemplate"),a=i.getBaseLayer();n!==this._oldUrlTemplate&&(a?a.setOptions({urlTemplate:n,attribution:e.get("attribution")}):(a=new maptalks.TileLayer("maptalks-echarts-gl-baselayer",{urlTemplate:n,subdomains:["a","b","c"],attribution:e.get("attribution")}),i.setBaseLayer(a))),this._oldUrlTemplate=n,i.setCenter(e.get("center")),i.setZoom(e.get("zoom"),{animation:!1}),i.setPitch(e.get("pitch")),i.setBearing(e.get("bearing")),e.setMaptalks(i);var o=e.coordinateSystem;o.viewGL.scene.add(this._lightRoot),o.viewGL.add(this._groundMesh),this._updateGroundMesh(),this._sceneHelper.setScene(o.viewGL.scene),this._sceneHelper.updateLight(e),o.viewGL.setPostEffect(e.getModel("postEffect"),r),o.viewGL.setTemporalSuperSampling(e.getModel("temporalSuperSampling")),this._maptalks3DModel=e},afterRender:function(e,t,r,i){var n=i.renderer;this._sceneHelper.updateAmbientCubemap(n,e,r),this._sceneHelper.updateSkybox(n,e,r),e.coordinateSystem.viewGL.scene.traverse(function(e){e.material&&(e.material.define("fragment","NORMAL_UP_AXIS",2),e.material.define("fragment","NORMAL_FRONT_AXIS",1))})},updateCamera:function(e,t,r,i){e.coordinateSystem.setCameraOption(i),this._updateGroundMesh(),r.getZr().refresh()},_dispatchInteractAction:function(e,t,r){var i;e.dispatchAction({type:"maptalks3DChangeCamera",pitch:t.getPitch(),zoom:(i=t.getResolution(),19-Math.log(i/Zh)/Math.LN2+1),center:t.getCenter().toArray(),bearing:t.getBearing(),maptalks3DId:this._maptalks3DModel&&this._maptalks3DModel.id})},_updateGroundMesh:function(){if(this._maptalks3DModel){var e=this._maptalks3DModel.coordinateSystem,t=e.dataToPoint(e.center);this._groundMesh.position.set(t[0],t[1],-.001);var r=new Za.Plane(new Za.Vector3(0,0,1),0),i=e.viewGL.camera.castRay(new Za.Vector2(-1,-1)),n=e.viewGL.camera.castRay(new Za.Vector2(1,1)),a=i.intersectPlane(r),o=n.intersectPlane(r),s=a.dist(o)/e.viewGL.rootNode.scale.x;this._groundMesh.scale.set(s,s,1)}},dispose:function(e,t){this._zrLayer&&this._zrLayer.dispose(),t.getZr().painter.delLayer(-1e3)}}),Zh=12756274*Math.PI/(256*Math.pow(2,20));function Yh(){Gh.apply(this,arguments),this.maxPitch=85,this.zoomOffset=1}Yh.prototype=new Gh,Yh.prototype.constructor=Yh,Yh.prototype.type="maptalks3D";var Kh=Hh("maptalks3D",Yh,function(e){e.forEach(function(e){e.setCameraOption(e.model.getMaptalksCameraOption())})});N(function(e){e.registerComponentModel(Wh),e.registerComponentView(qh),e.registerCoordinateSystem("maptalks3D",Kh),e.registerAction({type:"maptalks3DChangeCamera",event:"maptalks3dcamerachanged",update:"maptalks3D:updateCamera"},function(e,t){t.eachComponent({mainType:"maptalks3D",query:e},function(t){t.setMaptalksCameraOption(e)})})});var Qh=yo.vec3,Jh=W.isDimensionStacked;function $h(e,t,r){for(var i=e.getDataExtent(t),n=e.getDataExtent(r),a=i[1]-i[0]||i[0],o=n[1]-n[0]||n[0],s=new Uint8Array(2500),l=0;l0&&d>0||c<0&&d<0)),m=["x","y","z"].map(function(t){return e.coordDimToDataDim(t)[0]}),g=Jh(i,m[2]),_=g?i.getCalculationInfo("stackResultDimension"):m[2];i.each(m,function(e,t,a,o){var s=i.get(_,o),l=g?s-a:p?0:f[0],h=r.dataToPoint([e,t,l]),u=r.dataToPoint([e,t,s]),c=Qh.dist(h,u),d=[0,u[1]"+t.join("
")}(a):X(q(a)),s=n.getName(r),h=Wl(n,r);Z(h)&&h.colorStops&&(h=(h.colorStops[0]||{}).color);var u=Y(h=h||"transparent"),c=e.name;return"\0-"===c&&(c=""),(c=c?X(c)+"
":"")+u+(s?X(s)+": "+o:o)}function ou(e,t,r){r=r||e.getSource();var i=t||Q(e.get("coordinateSystem"))||["x","y","z"],n=I(r,{dimensionsDefine:r.dimensionsDefine||e.get("dimensions"),encodeDefine:r.encodeDefine||e.get("encode"),coordDimensions:i.map(function(t){var r=e.getReferringComponents(t+"Axis3D").models[0];return{type:r&&"category"===r.get("type")?"ordinal":"float",name:t}})});"cartesian3D"===e.get("coordinateSystem")&&n.forEach(function(t){if(i.indexOf(t.coordDim)>=0){var r=e.getReferringComponents(t.coordDim+"Axis3D").models[0];r&&"category"===r.get("type")&&(t.ordinalMeta=r.getOrdinalMeta())}});var a=W.enableDataStack(e,n,{byIndex:!0,stackedCoordDimension:"z"}),o=new B(n,e);return o.setCalculationInfo(a),o.initData(r),o}nu.getFormattedLabel=function(e,t,r,i,n){r=r||"normal";var a=e.getData(i).getItemModel(t),o=e.getDataParams(t,i);null!=n&&o.value instanceof Array&&(o.value=o.value[n]);var s,l=a.get("normal"===r?["label","formatter"]:["emphasis","label","formatter"]);return null==l&&(l=a.get(["label","formatter"])),"function"==typeof l?(o.status=r,s=l(o)):"string"==typeof l&&(s=j(l,o)),s},nu.normalizeToArray=function(e){return e instanceof Array?e:null==e?[]:[e]};var su=J.extend({type:"series.bar3D",dependencies:["globe"],visualStyleAccessPathvisu:"itemStyle",getInitialData:function(e,t){return ou(this)},getFormattedLabel:function(e,t,r,i){var n=nu.getFormattedLabel(this,e,t,r,i);return null==n&&(n=this.getData().get("z",e)),n},formatTooltip:function(e){return au(this,e)},defaultOption:{coordinateSystem:"cartesian3D",globeIndex:0,grid3DIndex:0,zlevel:-10,bevelSize:0,bevelSmoothness:2,onGridPlane:"xy",shading:"color",minHeight:0,itemStyle:{opacity:1},label:{show:!1,distance:2,textStyle:{fontSize:14,color:"#000",backgroundColor:"rgba(255,255,255,0.7)",padding:3,borderRadius:3}},emphasis:{label:{show:!0}},animationDurationUpdate:500}});m(su.prototype,hl);var lu,hu,uu,cu,du,fu,pu,mu,gu=yo.vec3,_u=yo.mat3,vu=$i.extend(function(){return{attributes:{position:new $i.Attribute("position","float",3,"POSITION"),normal:new $i.Attribute("normal","float",3,"NORMAL"),color:new $i.Attribute("color","float",4,"COLOR"),prevPosition:new $i.Attribute("prevPosition","float",3),prevNormal:new $i.Attribute("prevNormal","float",3)},dynamic:!0,enableNormal:!1,bevelSize:1,bevelSegments:0,_dataIndices:null,_vertexOffset:0,_triangleOffset:0}},{resetOffset:function(){this._vertexOffset=0,this._triangleOffset=0},setBarCount:function(e){var t=this.enableNormal,r=this.getBarVertexCount()*e,i=this.getBarTriangleCount()*e;this.vertexCount!==r&&(this.attributes.position.init(r),t?this.attributes.normal.init(r):this.attributes.normal.value=null,this.attributes.color.init(r)),this.triangleCount!==i&&(this.indices=r>65535?new Uint32Array(3*i):new Uint16Array(3*i),this._dataIndices=new Uint32Array(r))},getBarVertexCount:function(){var e=this.bevelSize>0?this.bevelSegments:0;return e>0?this._getBevelBarVertexCount(e):this.enableNormal?24:8},getBarTriangleCount:function(){var e=this.bevelSize>0?this.bevelSegments:0;return e>0?this._getBevelBarTriangleCount(e):12},_getBevelBarVertexCount:function(e){return 4*(e+1)*(e+1)*2},_getBevelBarTriangleCount:function(e){return(4*e+3+1)*(2*e+1)*2+4},setColor:function(e,t){for(var r=this.getBarVertexCount(),i=r*(e+1),n=r*e;n0&&this.bevelSegments>0)this._addBevelBar(e,c,m,g,this.bevelSize,this.bevelSegments,_);else{gu.copy(n,c),gu.normalize(n,n),gu.cross(a,m,n),gu.normalize(a,a),gu.cross(i,n,a),gu.normalize(a,a),gu.negate(o,i),gu.negate(s,n),gu.negate(l,a),t(h[0],e,i,g[0]/2),t(h[0],h[0],a,g[2]/2),t(h[1],e,i,g[0]/2),t(h[1],h[1],l,g[2]/2),t(h[2],e,o,g[0]/2),t(h[2],h[2],l,g[2]/2),t(h[3],e,o,g[0]/2),t(h[3],h[3],a,g[2]/2),t(r,e,n,g[1]),t(h[4],r,i,g[0]/2),t(h[4],h[4],a,g[2]/2),t(h[5],r,i,g[0]/2),t(h[5],h[5],l,g[2]/2),t(h[6],r,o,g[0]/2),t(h[6],h[6],l,g[2]/2),t(h[7],r,o,g[0]/2),t(h[7],h[7],a,g[2]/2);var x=this.attributes;if(this.enableNormal){u[0]=i,u[1]=o,u[2]=n,u[3]=s,u[4]=a,u[5]=l;for(var b=this._vertexOffset,T=0;T0&&(f++,u[3]<.99&&(p=!0))}}),o.geometry.setBarCount(f);var m=r.getLayout("orient"),g=this._barIndexOfData=new Int32Array(r.count());f=0;r.each(function(e){if(r.hasValue(e)){var t=r.getItemLayout(e),i=t[0],n=t[1],o=t[2],s=4*e;u[0]=c[s++],u[1]=c[s++],u[2]=c[s++],u[3]=c[s++],u[3]>0&&(a._barMesh.geometry.addBar(i,n,m,o,u,e),g[e]=f++)}else g[e]=-1}),o.geometry.dirty(),o.geometry.updateBoundingBox();var _=o.material;_.transparent=p,_.depthMask=!p,o.geometry.sortTriangles=p,this._initHandler(e,t)},_initHandler:function(e,t){var r=e.getData(),i=this._barMesh,n="cartesian3D"===e.coordinateSystem.type;i.seriesIndex=e.seriesIndex;var a=-1;i.off("mousemove"),i.off("mouseout"),i.on("mousemove",function(e){var o=i.geometry.getDataIndexOfVertex(e.triangle[0]);o!==a&&(this._downplay(a),this._highlight(o),this._labelsBuilder.updateLabels([o]),n&&t.dispatchAction({type:"grid3DShowAxisPointer",value:[r.get("x",o),r.get("y",o),r.get("z",o,!0)]})),a=o,i.dataIndex=o},this),i.on("mouseout",function(e){this._downplay(a),this._labelsBuilder.updateLabels(),a=-1,i.dataIndex=-1,n&&t.dispatchAction({type:"grid3DHideAxisPointer"})},this)},_highlight:function(e){var t=this._data;if(t){var r=this._barIndexOfData[e];if(!(r<0)){var i=t.getItemModel(e).getModel("emphasis.itemStyle"),n=i.get("color"),a=i.get("opacity");if(null==n){var o=Wl(t,e);n=z(o,-.4)}null==a&&(a=jl(t,e));var s=Za.parseColor(n);s[3]*=a,this._barMesh.geometry.setColor(r,s),this._api.getZr().refresh()}}},_downplay:function(e){var t=this._data;if(t){var r=this._barIndexOfData[e];if(!(r<0)){var i=Wl(t,e),n=jl(t,e),a=Za.parseColor(i);a[3]*=n,this._barMesh.geometry.setColor(r,a),this._api.getZr().refresh()}}},highlight:function(e,t,r,i){this._toggleStatus("highlight",e,t,r,i)},downplay:function(e,t,r,i){this._toggleStatus("downplay",e,t,r,i)},_toggleStatus:function(e,t,r,i,n){var a=t.getData(),o=Ca(a,n),s=this;null!=o?l(nu.normalizeToArray(o),function(t){"highlight"===e?this._highlight(t):this._downplay(t)},this):a.each(function(t){"highlight"===e?s._highlight(t):s._downplay(t)})},remove:function(){this.groupGL.removeAll()},dispose:function(){this._labelsBuilder.dispose(),this.groupGL.removeAll()}});function bu(e){e.registerChartView(xu),e.registerSeriesModel(su),iu(e),e.registerProcessor(function(e,t){e.eachSeriesByType("bar3d",function(e){var t=e.getData();t.filterSelf(function(e){return t.hasValue(e)})})})}N(bu);var Tu=J.extend({type:"series.line3D",dependencies:["grid3D"],visualStyleAccessPath:"lineStyle",visualDrawType:"stroke",getInitialData:function(e,t){return ou(this)},formatTooltip:function(e){return au(this,e)},defaultOption:{coordinateSystem:"cartesian3D",zlevel:-10,grid3DIndex:0,lineStyle:{width:2},animationDurationUpdate:500}}),wu=yo.vec3;Za.Shader.import(Vo);const Su=$.extend({type:"line3D",__ecgl__:!0,init:function(e,t){this.groupGL=new Za.Node,this._api=t},render:function(e,t,r){var i=this._prevLine3DMesh;this._prevLine3DMesh=this._line3DMesh,this._line3DMesh=i,this._line3DMesh||(this._line3DMesh=new Za.Mesh({geometry:new To({useNativeLine:!1,sortTriangles:!0}),material:new Za.Material({shader:Za.createShader("ecgl.meshLines3D")}),renderOrder:10}),this._line3DMesh.geometry.pick=this._pick.bind(this)),this.groupGL.remove(this._prevLine3DMesh),this.groupGL.add(this._line3DMesh);var n=e.coordinateSystem;if(n&&n.viewGL){n.viewGL.add(this.groupGL);var a=n.viewGL.isLinearSpace()?"define":"undefine";this._line3DMesh.material[a]("fragment","SRGB_DECODE")}this._doRender(e,r),this._data=e.getData(),this._camera=n.viewGL.camera,this.updateCamera(),this._updateAnimation(e)},updateCamera:function(){this._updateNDCPosition()},_doRender:function(e,t){var r=e.getData(),i=this._line3DMesh;i.geometry.resetOffset();var n=r.getLayout("points"),a=[],o=new Float32Array(n.length/3*4),s=0,l=!1;r.each(function(e){var t=Wl(r,e),i=jl(r,e);null==i&&(i=1),Za.parseColor(t,a),a[3]*=i,o[s++]=a[0],o[s++]=a[1],o[s++]=a[2],o[s++]=a[3],a[3]<.99&&(l=!0)}),i.geometry.setVertexCount(i.geometry.getPolylineVertexCount(n)),i.geometry.setTriangleCount(i.geometry.getPolylineTriangleCount(n)),i.geometry.addPolyline(n,o,Da(e.get("lineStyle.width"),1)),i.geometry.dirty(),i.geometry.updateBoundingBox();var h=i.material;h.transparent=l,h.depthMask=!l;var u=e.getModel("debug.wireframe");u.get("show")?(i.geometry.createAttribute("barycentric","float",3),i.geometry.generateBarycentric(),i.material.set("both","WIREFRAME_TRIANGLE"),i.material.set("wireframeLineColor",Za.parseColor(u.get("lineStyle.color")||"rgba(0,0,0,0.5)")),i.material.set("wireframeLineWidth",Da(u.get("lineStyle.width"),1))):i.material.set("both","WIREFRAME_TRIANGLE"),this._points=n,this._initHandler(e,t)},_updateAnimation:function(e){Za.updateVertexAnimation([["prevPosition","position"],["prevPositionPrev","positionPrev"],["prevPositionNext","positionNext"]],this._prevLine3DMesh,this._line3DMesh,e)},_initHandler:function(e,t){var r=e.getData(),i=e.coordinateSystem,n=this._line3DMesh,a=-1;n.seriesIndex=e.seriesIndex,n.off("mousemove"),n.off("mouseout"),n.on("mousemove",function(e){var o=i.pointToData(e.point.array),s=r.indicesOfNearest("x",o[0])[0];s!==a&&(t.dispatchAction({type:"grid3DShowAxisPointer",value:[r.get("x",s),r.get("y",s),r.get("z",s)]}),n.dataIndex=s),a=s},this),n.on("mouseout",function(e){a=-1,n.dataIndex=-1,t.dispatchAction({type:"grid3DHideAxisPointer"})},this)},_updateNDCPosition:function(){var e=new hi,t=this._camera;hi.multiply(e,t.projectionMatrix,t.viewMatrix);var r=this._positionNDC,i=this._points,n=i.length/3;r&&r.length/2===n||(r=this._positionNDC=new Float32Array(2*n));for(var a=[],o=0;o=0){var g=3*l,_=new Fr(this._points[g],this._points[g+1],this._points[g+2]);a.push({dataIndex:l,point:_,pointWorld:_.clone(),target:this._line3DMesh,distance:this._camera.getWorldPosition().dist(_)})}},remove:function(){this.groupGL.removeAll()},dispose:function(){this.groupGL.removeAll()}});N(function(e){e.registerChartView(Su),e.registerSeriesModel(Tu),e.registerLayout(function(e,t){e.eachSeriesByType("line3D",function(e){var t=e.getData(),r=e.coordinateSystem;if(r){if("cartesian3D"!==r.type)return;var i=new Float32Array(3*t.count()),n=[],a=[],o=r.dimensions.map(function(t){return e.coordDimToDataDim(t)[0]});r&&t.each(o,function(e,t,o,s){n[0]=e,n[1]=t,n[2]=o,r.dataToPoint(n,a),i[3*s]=a[0],i[3*s+1]=a[1],i[3*s+2]=a[2]}),t.setLayout("points",i)}})})});const Mu=J.extend({type:"series.scatter3D",dependencies:["globe","grid3D","geo3D"],visualStyleAccessPath:"itemStyle",hasSymbolVisual:!0,getInitialData:function(e,t){return ou(this)},getFormattedLabel:function(e,t,r,i){var n=nu.getFormattedLabel(this,e,t,r,i);if(null==n){var a=this.getData(),o=a.dimensions[a.dimensions.length-1];n=a.get(o,e)}return n},formatTooltip:function(e){return au(this,e)},defaultOption:{coordinateSystem:"cartesian3D",zlevel:-10,progressive:1e5,progressiveThreshold:1e5,grid3DIndex:0,globeIndex:0,symbol:"circle",symbolSize:10,blendMode:"source-over",label:{show:!1,position:"right",distance:5,textStyle:{fontSize:14,color:"#000",backgroundColor:"rgba(255,255,255,0.7)",padding:3,borderRadius:3}},itemStyle:{opacity:.8},emphasis:{label:{show:!0}},animationDurationUpdate:500}});function Au(e,t,r){(t=t||document.createElement("canvas")).width=e,t.height=e;var i=t.getContext("2d");return r&&r(i),t}var Eu={getMarginByStyle:function(e){var t=e.minMargin||0,r=0;e.stroke&&"none"!==e.stroke&&(r=null==e.lineWidth?1:e.lineWidth);var i=e.shadowBlur||0,n=e.shadowOffsetX||0,a=e.shadowOffsetY||0,o={};return o.left=Math.max(r/2,-n+i,t),o.right=Math.max(r/2,n+i,t),o.top=Math.max(r/2,-a+i,t),o.bottom=Math.max(r/2,a+i,t),o},createSymbolSprite:function(e,r,i,n){var a=function(e,r,i,n){t(r)||(r=[r,r]);var a=Eu.getMarginByStyle(i,n),o=r[0]+a.left+a.right,s=r[1]+a.top+a.bottom,l=te(e,0,0,r[0],r[1]),h=Math.max(o,s);l.x=a.left,l.y=a.top,o>s?l.y+=(h-s)/2:l.x+=(h-o)/2;var u=l.getBoundingRect();return l.x-=u.x,l.y-=u.y,l.setStyle(i),l.update(),l.__size=h,l}(e,r,i),o=Eu.getMarginByStyle(i);return{image:Au(a.__size,n,function(e){v(e,a)}),margin:o}},createSDFFromCanvas:function(e,t,r,i){return Au(t,i,function(t){var i=e.getContext("2d").getImageData(0,0,e.width,e.height);t.putImageData(function(e,t,r){var i=t.width,n=t.height,a=e.canvas.width,o=e.canvas.height,s=i/a,l=n/o;function h(e){return e<128?1:-1}function u(e,a){var o=1/0;e=Math.floor(e*s);for(var u=(a=Math.floor(a*l))*i+e,c=h(t.data[4*u]),d=Math.max(a-r,0);d=2e4},doSortVertices:function(e,t){var r=this.indices,i=Du.create();if(!r){r=this.indices=this.vertexCount>65535?new Uint32Array(this.vertexCount):new Uint16Array(this.vertexCount);for(var n=0;n.05);else for(n=0;n<3;n++)this._progressiveQuickSort(3*t+n);this.dirtyIndices()},_simpleSort:function(e){var t=this._zList,r=this.indices;function i(e,r){return t[r]-t[e]}e?Array.prototype.sort.call(r,i):Fl.sort(r,i,0,r.length-1)},_progressiveQuickSort:function(e){var t=this._zList,r=this.indices;this._quickSort=this._quickSort||new Fl,this._quickSort.step(r,function(e,r){return t[r]-t[e]},e)}};var Lu=yo.vec4;Za.Shader.import("@export ecgl.sdfSprite.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform float elapsedTime : 0;\n\nattribute vec3 position : POSITION;\n\n#ifdef VERTEX_SIZE\nattribute float size;\n#else\nuniform float u_Size;\n#endif\n\n#ifdef VERTEX_COLOR\nattribute vec4 a_FillColor: COLOR;\nvarying vec4 v_Color;\n#endif\n\n#ifdef VERTEX_ANIMATION\nattribute vec3 prevPosition;\nattribute float prevSize;\nuniform float percent : 1.0;\n#endif\n\n\n#ifdef POSITIONTEXTURE_ENABLED\nuniform sampler2D positionTexture;\n#endif\n\nvarying float v_Size;\n\nvoid main()\n{\n\n#ifdef POSITIONTEXTURE_ENABLED\n gl_Position = worldViewProjection * vec4(texture2D(positionTexture, position.xy).xy, -10.0, 1.0);\n#else\n\n #ifdef VERTEX_ANIMATION\n vec3 pos = mix(prevPosition, position, percent);\n #else\n vec3 pos = position;\n #endif\n gl_Position = worldViewProjection * vec4(pos, 1.0);\n#endif\n\n#ifdef VERTEX_SIZE\n#ifdef VERTEX_ANIMATION\n v_Size = mix(prevSize, size, percent);\n#else\n v_Size = size;\n#endif\n#else\n v_Size = u_Size;\n#endif\n\n#ifdef VERTEX_COLOR\n v_Color = a_FillColor;\n #endif\n\n gl_PointSize = v_Size;\n}\n\n@end\n\n@export ecgl.sdfSprite.fragment\n\nuniform vec4 color: [1, 1, 1, 1];\nuniform vec4 strokeColor: [1, 1, 1, 1];\nuniform float smoothing: 0.07;\n\nuniform float lineWidth: 0.0;\n\n#ifdef VERTEX_COLOR\nvarying vec4 v_Color;\n#endif\n\nvarying float v_Size;\n\nuniform sampler2D sprite;\n\n@import clay.util.srgb\n\nvoid main()\n{\n gl_FragColor = color;\n\n vec4 _strokeColor = strokeColor;\n\n#ifdef VERTEX_COLOR\n gl_FragColor *= v_Color;\n #endif\n\n#ifdef SPRITE_ENABLED\n float d = texture2D(sprite, gl_PointCoord).r;\n gl_FragColor.a *= smoothstep(0.5 - smoothing, 0.5 + smoothing, d);\n\n if (lineWidth > 0.0) {\n float sLineWidth = lineWidth / 2.0;\n\n float outlineMaxValue0 = 0.5 + sLineWidth;\n float outlineMaxValue1 = 0.5 + sLineWidth + smoothing;\n float outlineMinValue0 = 0.5 - sLineWidth - smoothing;\n float outlineMinValue1 = 0.5 - sLineWidth;\n\n if (d <= outlineMaxValue1 && d >= outlineMinValue0) {\n float a = _strokeColor.a;\n if (d <= outlineMinValue1) {\n a = a * smoothstep(outlineMinValue0, outlineMinValue1, d);\n }\n else {\n a = a * smoothstep(outlineMaxValue1, outlineMaxValue0, d);\n }\n gl_FragColor.rgb = mix(gl_FragColor.rgb * gl_FragColor.a, _strokeColor.rgb, a);\n gl_FragColor.a = gl_FragColor.a * (1.0 - a) + a;\n }\n }\n#endif\n\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(gl_FragColor);\n#endif\n}\n@end");var Pu=Za.Mesh.extend(function(){var e=new Za.Geometry({dynamic:!0,attributes:{color:new Za.Geometry.Attribute("color","float",4,"COLOR"),position:new Za.Geometry.Attribute("position","float",3,"POSITION"),size:new Za.Geometry.Attribute("size","float",1),prevPosition:new Za.Geometry.Attribute("prevPosition","float",3),prevSize:new Za.Geometry.Attribute("prevSize","float",1)}});Object.assign(e,Cu);var t=new Za.Material({shader:Za.createShader("ecgl.sdfSprite"),transparent:!0,depthMask:!1});t.enableTexture("sprite"),t.define("both","VERTEX_COLOR"),t.define("both","VERTEX_SIZE");var r=new Za.Texture2D({image:document.createElement("canvas"),flipY:!1});return t.set("sprite",r),e.pick=this._pick.bind(this),{geometry:e,material:t,mode:Za.Mesh.POINTS,sizeScale:1}},{_pick:function(e,t,r,i,n,a){var o=this._positionNDC;if(o)for(var s=r.viewport,l=2/s.width,h=2/s.height,u=this.geometry.vertexCount-1;u>=0;u--){var c,d=o[2*(c=this.geometry.indices?this.geometry.indices[u]:u)],f=o[2*c+1],p=this.geometry.attributes.size.get(c)/this.sizeScale/2;if(e>d-p*l&&ef-p*h&&t2?(p=this._updateSymbolSprite(e,d,u,c),s.enableTexture("sprite")):s.disableTexture("sprite"),h.position.init(n-i);var m=[];if(f){s.undefine("VERTEX_SIZE"),s.undefine("VERTEX_COLOR");var g=function(e){const t=e.getVisual("style");if(t)return t[e.getVisual("drawType")]}(o),_=function(e){return e.getVisual("style").opacity}(o);Za.parseColor(g,m),m[3]*=_,s.set({color:m,u_Size:u.maxSize*this._sizeScale})}else s.set({color:[1,1,1,1]}),s.define("VERTEX_SIZE"),s.define("VERTEX_COLOR"),h.size.init(n-i),h.color.init(n-i),this._originalOpacity=new Float32Array(n-i);for(var v=o.getLayout("points"),y=h.position.value,x=0;x1?(n[0]=r.maxSize,n[1]=r.maxSize/r.aspect):(n[1]=r.maxSize,n[0]=r.maxSize*r.aspect),n[0]=n[0]||1,n[1]=n[1]||1,this._symbolType===r.type&&function(e,t){return e&&t&&e[0]===t[0]&&e[1]===t[1]}(this._symbolSize,n)&&this._lineWidth===t.lineWidth||(Eu.createSymbolSprite(r.type,n,{fill:"#fff",lineWidth:t.lineWidth,stroke:"transparent",shadowColor:"transparent",minMargin:Math.min(n[0]/2,10)},this._spriteImageCanvas),Eu.createSDFFromCanvas(this._spriteImageCanvas,Math.min(this._spriteImageCanvas.width,32),20,this._mesh.material.get("sprite").image),this._symbolType=r.type,this._symbolSize=n,this._lineWidth=t.lineWidth),this._spriteImageCanvas.width/r.maxSize*i},_updateMaterial:function(e,t){var r="lighter"===e.get("blendMode")?Za.additiveBlend:null,i=this._mesh.material;i.blend=r,i.set("lineWidth",t.lineWidth/20);var n=Za.parseColor(t.stroke);i.set("strokeColor",n),i.transparent=!0,i.depthMask=!1,i.depthTest=!this.is2D,i.sortVertices=!this.is2D},_updateLabelBuilder:function(e,t,r){var i=e.getData(),n=this._mesh.geometry,a=n.attributes.position.value,o=(t=this._startDataIndex,this._mesh.sizeScale);this._labelsBuilder.updateData(i,t,r),this._labelsBuilder.getLabelPosition=function(e,r,i){var n=3*(e-t);return[a[n],a[n+1],a[n+2]]},this._labelsBuilder.getLabelDistance=function(e,r,i){return n.attributes.size.get(e-t)/o/2+i},this._labelsBuilder.updateLabels()},_updateAnimation:function(e){Za.updateVertexAnimation([["prevPosition","position"],["prevSize","size"]],this._prevMesh,this._mesh,e)},_updateHandler:function(e,t,r){var i,n=e.getData(),a=this._mesh,o=this,s=-1,l=e.coordinateSystem&&"cartesian3D"===e.coordinateSystem.type;l&&(i=e.coordinateSystem.model),a.seriesIndex=e.seriesIndex,a.off("mousemove"),a.off("mouseout"),a.on("mousemove",function(t){var h=t.vertexIndex+o._startDataIndex;h!==s&&(this.highlightOnMouseover&&(this.downplay(n,s),this.highlight(n,h),this._labelsBuilder.updateLabels([h])),l&&r.dispatchAction({type:"grid3DShowAxisPointer",value:[n.get(e.coordDimToDataDim("x")[0],h),n.get(e.coordDimToDataDim("y")[0],h),n.get(e.coordDimToDataDim("z")[0],h)],grid3DIndex:i.componentIndex})),a.dataIndex=h,s=h},this),a.on("mouseout",function(e){var t=e.vertexIndex+o._startDataIndex;this.highlightOnMouseover&&(this.downplay(n,t),this._labelsBuilder.updateLabels()),s=-1,a.dataIndex=-1,l&&r.dispatchAction({type:"grid3DHideAxisPointer",grid3DIndex:i.componentIndex})},this)},updateLayout:function(e,t,r){var i=e.getData();if(this._mesh){var n=this._mesh.geometry.attributes.position.value,a=i.getLayout("points");if(this.is2D)for(var o=0;othis._endDataIndex||tthis._endDataIndex||t0?1:-1}Za.Shader.import("@export ecgl.trail2.vertex\nattribute vec3 position: POSITION;\nattribute vec3 positionPrev;\nattribute vec3 positionNext;\nattribute float offset;\nattribute float dist;\nattribute float distAll;\nattribute float start;\n\nattribute vec4 a_Color : COLOR;\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform vec4 viewport : VIEWPORT;\nuniform float near : NEAR;\n\nuniform float speed : 0;\nuniform float trailLength: 0.3;\nuniform float time;\nuniform float period: 1000;\n\nuniform float spotSize: 1;\n\nvarying vec4 v_Color;\nvarying float v_Percent;\nvarying float v_SpotPercent;\n\n@import ecgl.common.wireframe.vertexHeader\n\n@import ecgl.lines3D.clipNear\n\nvoid main()\n{\n @import ecgl.lines3D.expandLine\n\n gl_Position = currProj;\n\n v_Color = a_Color;\n\n @import ecgl.common.wireframe.vertexMain\n\n#ifdef CONSTANT_SPEED\n float t = mod((speed * time + start) / distAll, 1. + trailLength) - trailLength;\n#else\n float t = mod((time + start) / period, 1. + trailLength) - trailLength;\n#endif\n\n float trailLen = distAll * trailLength;\n\n v_Percent = (dist - t * distAll) / trailLen;\n\n v_SpotPercent = spotSize / distAll;\n\n }\n@end\n\n\n@export ecgl.trail2.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nuniform float spotIntensity: 5;\n\nvarying vec4 v_Color;\nvarying float v_Percent;\nvarying float v_SpotPercent;\n\n@import ecgl.common.wireframe.fragmentHeader\n\n@import clay.util.srgb\n\nvoid main()\n{\n if (v_Percent > 1.0 || v_Percent < 0.0) {\n discard;\n }\n\n float fade = v_Percent;\n\n#ifdef SRGB_DECODE\n gl_FragColor = sRGBToLinear(color * v_Color);\n#else\n gl_FragColor = color * v_Color;\n#endif\n\n @import ecgl.common.wireframe.fragmentMain\n\n if (v_Percent > (1.0 - v_SpotPercent)) {\n gl_FragColor.rgb *= spotIntensity;\n }\n\n gl_FragColor.a *= fade;\n}\n\n@end");const tc=Za.Mesh.extend(function(){var e=new Za.Material({shader:new Za.Shader(Za.Shader.source("ecgl.trail2.vertex"),Za.Shader.source("ecgl.trail2.fragment")),transparent:!0,depthMask:!1}),t=new To({dynamic:!0});return t.createAttribute("dist","float",1),t.createAttribute("distAll","float",1),t.createAttribute("start","float",1),{geometry:t,material:e,culling:!1,$ignorePicking:!0}},{updateData:function(e,t,r){var i=e.hostModel,n=this.geometry,a=i.getModel("effect"),o=a.get("trailWidth")*t.getDevicePixelRatio(),s=a.get("trailLength"),l=i.get("effect.constantSpeed"),h=1e3*i.get("effect.period"),u=null!=l;u?this.material.set("speed",l/1e3):this.material.set("period",h),this.material[u?"define":"undefine"]("vertex","CONSTANT_SPEED");var c=i.get("polyline");n.trailLength=s,this.material.set("trailLength",s),n.resetOffset(),["position","positionPrev","positionNext"].forEach(function(e){n.attributes[e].value=r.attributes[e].value});["dist","distAll","start","offset","color"].forEach(function(e){n.attributes[e].init(n.vertexCount)}),n.indices=r.indices;var d=[],f=a.get("trailColor"),p=a.get("trailOpacity"),m=null!=f,g=null!=p;this.updateWorldTransform();var _=this.worldTransform.x.len(),v=this.worldTransform.y.len(),y=this.worldTransform.z.len(),x=0,b=0;e.each(function(t){var i=e.getItemLayout(t),a=g?p:jl(e,t),s=Wl(e,t);null==a&&(a=1),(d=Za.parseColor(m?f:s,d))[3]*=a;for(var l=c?r.getPolylineVertexCount(i):r.getCubicCurveVertexCount(i[0],i[1],i[2],i[3]),T=0,w=[],S=[],M=x;Mx&&(T+=$u.dist(w,S)),n.attributes.dist.set(M,T),$u.copy(S,w);b=Math.max(b,T);var A=Math.random()*(u?T:h);for(M=x;M0;this._updateSurfaceMesh(this._surfaceMesh,e,u,f);var p=this._surfaceMesh.material;f?(p.define("WIREFRAME_QUAD"),p.set("wireframeLineWidth",d),p.set("wireframeLineColor",Za.parseColor(c.get("lineStyle.color")))):p.undefine("WIREFRAME_QUAD"),this._initHandler(e,r),this._updateAnimation(e)},_updateAnimation:function(e){Za.updateVertexAnimation([["prevPosition","position"],["prevNormal","normal"]],this._prevSurfaceMesh,this._surfaceMesh,e)},_createSurfaceMesh:function(){var e=new Za.Mesh({geometry:new Za.Geometry({dynamic:!0,sortTriangles:!0}),shadowDepthMaterial:new Za.Material({shader:new Za.Shader(Za.Shader.source("ecgl.sm.depth.vertex"),Za.Shader.source("ecgl.sm.depth.fragment"))}),culling:!1,renderOrder:10,renderNormal:!0});return e.geometry.createAttribute("barycentric","float",4),e.geometry.createAttribute("prevPosition","float",3),e.geometry.createAttribute("prevNormal","float",3),Object.assign(e.geometry,kl),e},_initHandler:function(e,t){var r=e.getData(),i=this._surfaceMesh,n=e.coordinateSystem;i.seriesIndex=e.seriesIndex;var a=-1;i.off("mousemove"),i.off("mouseout"),i.on("mousemove",function(e){var o=function(e,t){for(var r=1/0,n=-1,a=[],o=0;o=0){var s=[];i.geometry.attributes.position.get(o,s);for(var l=n.pointToData(s),h=1/0,u=-1,c=[],d=0;d65535?Uint32Array:Uint16Array)((p-1)*(m-1)*6),b=function(e,t,r){r[1]=e*m+t,r[0]=e*m+t+1,r[3]=(e+1)*m+t+1,r[2]=(e+1)*m+t},T=!1;if(l){var w=[],S=[],M=0;g?u.init(n.vertexCount):u.value=null;for(var A=[[],[],[]],E=[],D=[],C=lc.create(),L=function(e,t,r){var i=3*t;return r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],r},P=new Float32Array(o.length),O=new Float32Array(o.length/3*4),N=0;N0;){if(Math.floor(s/u)===s/u)return[u,s/u];u--}return[u=Math.floor(Math.sqrt(s)),u]},dispose:function(){this.groupGL.removeAll()},remove:function(){this.groupGL.removeAll()}});function cc(e,t){for(var r=[],i=0;i "+f)),u++)}var p=I(e,{coordDimensions:["value"]});(s=new B(p,r)).initData(e);var m=new B(["value"],r);return m.initData(h,l),n&&n(s,m),le({mainData:s,struct:a,structAttr:"graph",datas:{node:s,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a}(i,r,this,!0,function(e,r){e.wrapMethod("getItemModel",function(e){const t=n._categoriesModels[e.getShallow("category")];return t&&(t.parentModel=e.parentModel,e.parentModel=t),e});const i=t.getModel([]).getModel;function a(e,t){const r=i.call(this,e,t);return r.resolveParentPath=o,r}function o(e){if(e&&("label"===e[0]||"label"===e[1])){const t=e.slice();return"label"===e[0]?t[0]="edgeLabel":"label"===e[1]&&(t[1]="edgeLabel"),t}return e}r.wrapMethod("getItemModel",function(e){return e.resolveParentPath=o,e.getModel=a,e})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(e,t,r){if("edge"===r){var i=this.getData(),n=this.getDataParams(e,r),a=i.graph.getEdgeByIndex(e),o=i.getName(a.node1.dataIndex),s=i.getName(a.node2.dataIndex),l=[];return null!=o&&l.push(o),null!=s&&l.push(s),l=X(l.join(" > ")),n.value&&(l+=" : "+X(n.value)),l}return _c.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var e=(this.option.categories||[]).map(function(e){return null!=e.value?e:Object.assign({value:0},e)}),t=new B(["value"],this);t.initData(e),this._categoriesData=t,this._categoriesModels=t.mapArray(function(e){return t.getItemModel(e,!0)})},setView:function(e){null!=e.zoom&&(this.option.zoom=e.zoom),null!=e.offset&&(this.option.offset=e.offset)},setNodePosition:function(e){for(var t=0;t65535?this.indices instanceof Uint16Array&&(this.indices=new Uint32Array(this.indices)):this.indices instanceof Uint32Array&&(this.indices=new Uint16Array(this.indices)))},setTriangleCount:function(e){this.triangleCount!==e&&(this.indices=0===e?null:this.vertexCount>65535?new Uint32Array(3*e):new Uint16Array(3*e))},_getCubicCurveApproxStep:function(e,t,r,i){return 1/(vc.dist(e,t)+vc.dist(r,t)+vc.dist(i,r)+1)*this.segmentScale},getCubicCurveVertexCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?2*a:2*a+2},getCubicCurveTriangleCount:function(e,t,r,i){var n=this._getCubicCurveApproxStep(e,t,r,i),a=Math.ceil(1/n);return this.useNativeLine?0:2*a},getLineVertexCount:function(){return this.getPolylineVertexCount(yc)},getLineTriangleCount:function(){return this.getPolylineTriangleCount(yc)},getPolylineVertexCount:function(e){var t;"number"==typeof e?t=e:t="number"!=typeof e[0]?e.length:e.length/2;return this.useNativeLine?2*(t-1):2*(t-1)+2},getPolylineTriangleCount:function(e){var t;"number"==typeof e?t=e:t="number"!=typeof e[0]?e.length:e.length/2;return this.useNativeLine?0:2*(t-1)},addCubicCurve:function(e,t,r,i,n,a){null==a&&(a=1);var o=e[0],s=e[1],l=t[0],h=t[1],u=r[0],c=r[1],d=i[0],f=i[1],p=this._getCubicCurveApproxStep(e,t,r,i),m=p*p,g=m*p,_=3*p,v=3*m,y=6*m,x=6*g,b=o-2*l+u,T=s-2*h+c,w=3*(l-u)-o+d,S=3*(h-c)-s+f,M=o,A=s,E=(l-o)*_+b*v+w*g,D=(h-s)*_+T*v+S*g,C=b*y+w*x,L=T*y+S*x,P=w*x,O=S*x,N=0,R=0,I=Math.ceil(1/p),B=new Float32Array(3*(I+1)),z=(B=[],0);for(R=0;R1&&(M=E>0?Math.min(M,d):Math.max(M,d),A=D>0?Math.min(A,f):Math.max(A,f));this.addPolyline(B,n,a)},addLine:function(e,t,r,i){this.addPolyline([e,t],r,i)},addPolyline:function(){var e=vc.create(),t=vc.create(),r=vc.create(),i=vc.create(),n=[],a=[],o=[];return function(s,l,h,u,c){if(s.length){var d="number"!=typeof s[0];if(null==c&&(c=d?s.length:s.length/2),!(c<2)){null==u&&(u=0),null==h&&(h=1),this._itemVertexOffsets.push(this._vertexOffset);for(var f,p=d?"number"!=typeof l[0]:l.length/4===c,m=this.attributes.position,g=this.attributes.color,_=this.attributes.offset,v=this.attributes.normal,y=this.indices,x=this._vertexOffset,b=0;b1&&(m.copy(x,x-1),g.copy(x,x-1),x++);else{var S;if(b0){vc.sub(e,n,o),vc.sub(t,a,n),vc.normalize(e,e),vc.normalize(t,t),vc.add(i,e,t),vc.normalize(i,i);var M=h/2*Math.min(1/vc.dot(e,i),2);r[0]=-i[1],r[1]=i[0],S=M}else vc.sub(e,a,n),vc.normalize(e,e),r[0]=-e[1],r[1]=e[0],S=h/2}else vc.sub(e,n,o),vc.normalize(e,e),r[0]=-e[1],r[1]=e[0],S=h/2;v.set(x,r),v.set(x+1,r),_.set(x,S),_.set(x+1,-S),vc.copy(o,n),m.set(x,n),m.set(x+1,n),g.set(x,f),g.set(x+1,f),x+=2}if(this.useNativeLine)g.set(x,f),m.set(x,n),x++;else if(b>0){var A=3*this._faceOffset;(y=this.indices)[A]=x-4,y[A+1]=x-3,y[A+2]=x-2,y[A+3]=x-3,y[A+4]=x-1,y[A+5]=x-2,this._faceOffset+=2}}this._vertexOffset=x}}}}(),setItemColor:function(e,t){for(var r=this._itemVertexOffsets[e],i=e 0.0) {\n float factor = 0.0;\n if (preventOverlap) {\n float d = sqrt(d2);\n d = d - n0.w - n1.w;\n if (d > 0.0) {\n factor = scaling * n0.z * n1.z / (d * d);\n }\n else if (d < 0.0) {\n factor = scaling * 100.0 * n0.z * n1.z;\n }\n }\n else {\n factor = scaling * n0.z * n1.z / d2;\n }\n force += dir * factor;\n }\n }\n\n vec2 dir = gravityCenter - n0.xy;\n float d = 1.0;\n if (!strongGravityMode) {\n d = length(dir);\n }\n\n force += dir * n0.z * gravity / (d + 1.0);\n\n gl_FragColor = vec4(force, 0.0, 1.0);\n}\n@end\n\n@export ecgl.forceAtlas2.updateEdgeAttraction.vertex\n\nattribute vec2 node1;\nattribute vec2 node2;\nattribute float weight;\n\nuniform sampler2D positionTex;\nuniform float edgeWeightInfluence;\nuniform bool preventOverlap;\nuniform bool linLogMode;\n\nuniform vec2 windowSize: WINDOW_SIZE;\n\nvarying vec2 v_Force;\n\nvoid main() {\n\n vec4 n0 = texture2D(positionTex, node1);\n vec4 n1 = texture2D(positionTex, node2);\n\n vec2 dir = n1.xy - n0.xy;\n float d = length(dir);\n float w;\n if (edgeWeightInfluence == 0.0) {\n w = 1.0;\n }\n else if (edgeWeightInfluence == 1.0) {\n w = weight;\n }\n else {\n w = pow(weight, edgeWeightInfluence);\n }\n vec2 offset = vec2(1.0 / windowSize.x, 1.0 / windowSize.y);\n vec2 scale = vec2((windowSize.x - 1.0) / windowSize.x, (windowSize.y - 1.0) / windowSize.y);\n vec2 pos = node1 * scale * 2.0 - 1.0;\n gl_Position = vec4(pos + offset, 0.0, 1.0);\n gl_PointSize = 1.0;\n\n float factor;\n if (preventOverlap) {\n d = d - n1.w - n0.w;\n }\n if (d <= 0.0) {\n v_Force = vec2(0.0);\n return;\n }\n\n if (linLogMode) {\n factor = w * log(d) / d;\n }\n else {\n factor = w;\n }\n v_Force = dir * factor;\n}\n@end\n\n@export ecgl.forceAtlas2.updateEdgeAttraction.fragment\n\nvarying vec2 v_Force;\n\nvoid main() {\n gl_FragColor = vec4(v_Force, 0.0, 0.0);\n}\n@end\n\n@export ecgl.forceAtlas2.calcWeightedSum.vertex\n\nattribute vec2 node;\n\nvarying vec2 v_NodeUv;\n\nvoid main() {\n\n v_NodeUv = node;\n gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n gl_PointSize = 1.0;\n}\n@end\n\n@export ecgl.forceAtlas2.calcWeightedSum.fragment\n\nvarying vec2 v_NodeUv;\n\nuniform sampler2D positionTex;\nuniform sampler2D forceTex;\nuniform sampler2D forcePrevTex;\n\nvoid main() {\n vec2 force = texture2D(forceTex, v_NodeUv).rg;\n vec2 forcePrev = texture2D(forcePrevTex, v_NodeUv).rg;\n\n float mass = texture2D(positionTex, v_NodeUv).z;\n float swing = length(force - forcePrev) * mass;\n float traction = length(force + forcePrev) * 0.5 * mass;\n\n gl_FragColor = vec4(swing, traction, 0.0, 0.0);\n}\n@end\n\n@export ecgl.forceAtlas2.calcGlobalSpeed\n\nuniform sampler2D globalSpeedPrevTex;\nuniform sampler2D weightedSumTex;\nuniform float jitterTolerence;\n\nvoid main() {\n vec2 weightedSum = texture2D(weightedSumTex, vec2(0.5)).xy;\n float prevGlobalSpeed = texture2D(globalSpeedPrevTex, vec2(0.5)).x;\n float globalSpeed = jitterTolerence * jitterTolerence\n * weightedSum.y / weightedSum.x;\n if (prevGlobalSpeed > 0.0) {\n globalSpeed = min(globalSpeed / prevGlobalSpeed, 1.5) * prevGlobalSpeed;\n }\n gl_FragColor = vec4(globalSpeed, 0.0, 0.0, 1.0);\n}\n@end\n\n@export ecgl.forceAtlas2.updatePosition\n\nuniform sampler2D forceTex;\nuniform sampler2D forcePrevTex;\nuniform sampler2D positionTex;\nuniform sampler2D globalSpeedTex;\n\nvarying vec2 v_Texcoord;\n\nvoid main() {\n vec2 force = texture2D(forceTex, v_Texcoord).xy;\n vec2 forcePrev = texture2D(forcePrevTex, v_Texcoord).xy;\n vec4 node = texture2D(positionTex, v_Texcoord);\n\n float globalSpeed = texture2D(globalSpeedTex, vec2(0.5)).r;\n float swing = length(force - forcePrev);\n float speed = 0.1 * globalSpeed / (0.1 + globalSpeed * sqrt(swing));\n\n float df = length(force);\n if (df > 0.0) {\n speed = min(df * speed, 10.0) / df;\n\n gl_FragColor = vec4(node.xy + speed * force, node.zw);\n }\n else {\n gl_FragColor = node;\n }\n}\n@end\n\n@export ecgl.forceAtlas2.edges.vertex\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nattribute vec2 node;\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n\nuniform sampler2D positionTex;\n\nvoid main()\n{\n gl_Position = worldViewProjection * vec4(\n texture2D(positionTex, node).xy, -10.0, 1.0\n );\n v_Color = a_Color;\n}\n@end\n\n@export ecgl.forceAtlas2.edges.fragment\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nvarying vec4 v_Color;\nvoid main() {\n gl_FragColor = color * v_Color;\n}\n@end");var bc={repulsionByDegree:!0,linLogMode:!1,strongGravityMode:!1,gravity:1,scaling:1,edgeWeightInfluence:1,jitterTolerence:.1,preventOverlap:!1,dissuadeHubs:!1,gravityCenter:null};function Tc(e){var t={type:Za.Texture.FLOAT,minFilter:Za.Texture.NEAREST,magFilter:Za.Texture.NEAREST};this._positionSourceTex=new Za.Texture2D(t),this._positionSourceTex.flipY=!1,this._positionTex=new Za.Texture2D(t),this._positionPrevTex=new Za.Texture2D(t),this._forceTex=new Za.Texture2D(t),this._forcePrevTex=new Za.Texture2D(t),this._weightedSumTex=new Za.Texture2D(t),this._weightedSumTex.width=this._weightedSumTex.height=1,this._globalSpeedTex=new Za.Texture2D(t),this._globalSpeedPrevTex=new Za.Texture2D(t),this._globalSpeedTex.width=this._globalSpeedTex.height=1,this._globalSpeedPrevTex.width=this._globalSpeedPrevTex.height=1,this._nodeRepulsionPass=new ya({fragment:Za.Shader.source("ecgl.forceAtlas2.updateNodeRepulsion")}),this._positionPass=new ya({fragment:Za.Shader.source("ecgl.forceAtlas2.updatePosition")}),this._globalSpeedPass=new ya({fragment:Za.Shader.source("ecgl.forceAtlas2.calcGlobalSpeed")}),this._copyPass=new ya({fragment:Za.Shader.source("clay.compositor.output")});var r=function(e){e.blendEquation(e.FUNC_ADD),e.blendFunc(e.ONE,e.ONE)};this._edgeForceMesh=new Za.Mesh({geometry:new Za.Geometry({attributes:{node1:new Za.Geometry.Attribute("node1","float",2),node2:new Za.Geometry.Attribute("node2","float",2),weight:new Za.Geometry.Attribute("weight","float",1)},dynamic:!0,mainAttribute:"node1"}),material:new Za.Material({transparent:!0,shader:Za.createShader("ecgl.forceAtlas2.updateEdgeAttraction"),blend:r,depthMask:!1,depthText:!1}),mode:Za.Mesh.POINTS}),this._weightedSumMesh=new Za.Mesh({geometry:new Za.Geometry({attributes:{node:new Za.Geometry.Attribute("node","float",2)},dynamic:!0,mainAttribute:"node"}),material:new Za.Material({transparent:!0,shader:Za.createShader("ecgl.forceAtlas2.calcWeightedSum"),blend:r,depthMask:!1,depthText:!1}),mode:Za.Mesh.POINTS}),this._framebuffer=new Xn({depthBuffer:!1}),this._dummyCamera=new Za.OrthographicCamera({left:-1,right:1,top:1,bottom:-1,near:0,far:100}),this._globalSpeed=0}Tc.prototype.updateOption=function(e){for(var t in bc)this[t]=bc[t];var r=this._nodes.length;if(this.jitterTolerence=r>5e4?10:r>5e3?1:.1,this.scaling=r>100?2:10,e)for(var t in bc)null!=e[t]&&(this[t]=e[t]);if(this.repulsionByDegree)for(var i=this._positionSourceTex.pixels,n=0;ne},Tc.prototype._swapTexture=function(){var e=this._positionPrevTex;this._positionPrevTex=this._positionTex,this._positionTex=e;e=this._forcePrevTex;this._forcePrevTex=this._forceTex,this._forceTex=e;e=this._globalSpeedPrevTex;this._globalSpeedPrevTex=this._globalSpeedTex,this._globalSpeedTex=e},Tc.prototype._initFromSource=function(e){this._framebuffer.attach(this._positionPrevTex),this._framebuffer.bind(e),this._copyPass.setUniform("texture",this._positionSourceTex),this._copyPass.render(e),e.gl.clearColor(0,0,0,0),this._framebuffer.attach(this._forcePrevTex),e.gl.clear(e.gl.COLOR_BUFFER_BIT),this._framebuffer.attach(this._globalSpeedPrevTex),e.gl.clear(e.gl.COLOR_BUFFER_BIT),this._framebuffer.unbind(e)},Tc.prototype._resize=function(e,t){["_positionSourceTex","_positionTex","_positionPrevTex","_forceTex","_forcePrevTex"].forEach(function(r){this[r].width=e,this[r].height=t,this[r].dirty()},this)},Tc.prototype.dispose=function(e){this._framebuffer.dispose(e),this._copyPass.dispose(e),this._nodeRepulsionPass.dispose(e),this._positionPass.dispose(e),this._globalSpeedPass.dispose(e),this._edgeForceMesh.geometry.dispose(e),this._weightedSumMesh.geometry.dispose(e),this._positionSourceTex.dispose(e),this._positionTex.dispose(e),this._positionPrevTex.dispose(e),this._forceTex.dispose(e),this._forcePrevTex.dispose(e),this._weightedSumTex.dispose(e),this._globalSpeedTex.dispose(e),this._globalSpeedPrevTex.dispose(e)};var wc=function(){var e=function(){return new Float32Array(2)},t=function(e,t){var r=t[0]-e[0],i=t[1]-e[1];return Math.sqrt(r*r+i*i)},r=function(e){var t=e[0],r=e[1];return Math.sqrt(t*t+r*r)},i=function(e,t,r,i){return e[0]=t[0]+r[0]*i,e[1]=t[1]+r[1]*i,e},n=function(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e},a=function(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e},o=function(e,t){return e[0]=t[0],e[1]=t[1],e},s=function(e,t,r){return e[0]=t,e[1]=r,e};function l(){this.subRegions=[],this.nSubRegions=0,this.node=null,this.mass=0,this.centerOfMass=null,this.bbox=new Float32Array(4),this.size=0}var h=l.prototype;function u(){this.position=new Float32Array(2),this.force=e(),this.forcePrev=e(),this.mass=1,this.inDegree=0,this.outDegree=0}function c(e,t){this.source=e,this.target=t,this.weight=1}function d(){this.autoSettings=!0,this.barnesHutOptimize=!0,this.barnesHutTheta=1.5,this.repulsionByDegree=!0,this.linLogMode=!1,this.strongGravityMode=!1,this.gravity=1,this.scaling=1,this.edgeWeightInfluence=1,this.jitterTolerence=.1,this.preventOverlap=!1,this.dissuadeHubs=!1,this.rootRegion=new l,this.rootRegion.centerOfMass=e(),this.nodes=[],this.edges=[],this.bbox=new Float32Array(4),this.gravityCenter=null,this._massArr=null,this._swingingArr=null,this._sizeArr=null,this._globalSpeed=0}h.beforeUpdate=function(){for(var e=0;e=e&&this.bbox[1]<=t&&this.bbox[3]>=t},h.setBBox=function(e,t,r,i){this.bbox[0]=e,this.bbox[1]=t,this.bbox[2]=r,this.bbox[3]=i,this.size=(r-e+i-t)/2},h._newSubRegion=function(){var e=this.subRegions[this.nSubRegions];return e||(e=new l,this.subRegions[this.nSubRegions]=e),this.nSubRegions++,e},h._addNodeToSubRegion=function(e){var t=this.findSubRegion(e.position[0],e.position[1]),r=this.bbox;if(!t){var i=(r[0]+r[2])/2,n=(r[1]+r[3])/2,a=(r[2]-r[0])/2,o=(r[3]-r[1])/2,s=e.position[0]>=i?1:0,l=e.position[1]>=n?1:0;(t=this._newSubRegion()).setBBox(s*a+r[0],l*o+r[1],(s+1)*a+r[0],(l+1)*o+r[1])}t.addNode(e)},h._updateCenterOfMass=function(e){null==this.centerOfMass&&(this.centerOfMass=new Float32Array(2));var t=this.centerOfMass[0]*this.mass,r=this.centerOfMass[1]*this.mass;t+=e.position[0]*e.mass,r+=e.position[1]*e.mass,this.mass+=e.mass,this.centerOfMass[0]=t/this.mass,this.centerOfMass[1]=r/this.mass};var f=d.prototype;f.initNodes=function(e,t,r){var i=t.length;this.nodes.length=0;for(var n=void 0!==r,a=0;a0&&(this.strongGravityMode?this.applyNodeStrongGravity(u):this.applyNodeGravity(u))}for(l=0;l0&&(g=Math.min(g/this._globalSpeed,1.5)*this._globalSpeed),this._globalSpeed=g;for(l=0;l0&&(v=Math.min(y*v,10)/y,i(h.position,h.position,h.force,v))}},f.applyRegionToNodeRepulsion=function(){var t=e();return function(e,r){if(e.node)this.applyNodeToNodeRepulsion(e.node,r,!0);else{a(t,r.position,e.centerOfMass);var n=t[0]*t[0]+t[1]*t[1];if(n>this.barnesHutTheta*e.size*e.size){var o=this.scaling*r.mass*e.mass/n;i(r.force,r.force,t,o)}else for(var s=0;s0)s=this.scaling*e.mass*r.mass/(l*l);else{if(!(l<0))return;s=100*this.scaling*e.mass*r.mass}}else s=this.scaling*e.mass*r.mass/o;i(e.force,e.force,t,s),i(r.force,r.force,t,-s)}}}}(),f.applyEdgeAttraction=function(){var t=e();return function(e){var n=e.source,o=e.target;a(t,n.position,o.position);var s,l,h=r(t);s=0===this.edgeWeightInfluence?1:1===this.edgeWeightInfluence?e.weight:Math.pow(e.weight,this.edgeWeightInfluence),this.preventOverlap&&(h=h-n.size-o.size)<=0||(l=this.linLogMode?-s*Math.log(h+1)/(h+1):-s,i(n.force,n.force,t,l),i(o.force,o.force,t,-l))}}(),f.applyNodeGravity=function(){var t=e();return function(e){a(t,this.gravityCenter,e.position);var n=r(t);i(e.force,e.force,t,this.gravity*e.mass/(n+1))}}(),f.applyNodeStrongGravity=function(){var t=e();return function(e){a(t,this.gravityCenter,e.position),i(e.force,e.force,t,this.gravity*e.mass)}}(),f.updateBBox=function(){for(var e=1/0,t=1/0,r=-1/0,i=-1/0,n=0;n5e4?10:a>5e3?1:.1,t.scaling=a>100?2:10,t.barnesHutOptimize=a>1e3,e)for(var r in Sc)null!=e[r]&&(t[r]=e[r]);if(!t.gravityCenter){for(var o=[1/0,1/0],s=[-1/0,-1/0],l=0;le},Mc.prototype.getNodePosition=function(e,t){if(t||(t=new Float32Array(2*this._nodes.length)),this._positionArr)for(var r=0;r0?1.1:.9,a=Math.max(Math.min(this._zoom*n,this.maxZoom),this.minZoom);n=a/this._zoom;var o=this._convertPos(r,i),s=(o.x-this._dx)*(n-1),l=(o.y-this._dy)*(n-1);this._dx-=s,this._dy-=l,this._zoom=a,this._needsUpdate=!0}}},dispose:function(){var e=this.zr;e.off("mousedown",this._mouseDownHandler),e.off("mousemove",this._mouseMoveHandler),e.off("mouseup",this._mouseUpHandler),e.off("mousewheel",this._mouseWheelHandler),e.off("globalout",this._mouseUpHandler),e.animation.off("frame",this._update)}});var Ec=yo.vec2;Za.Shader.import("@export ecgl.lines2D.vertex\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nattribute vec2 position: POSITION;\nattribute vec4 a_Color : COLOR;\nvarying vec4 v_Color;\n\n#ifdef POSITIONTEXTURE_ENABLED\nuniform sampler2D positionTexture;\n#endif\n\nvoid main()\n{\n gl_Position = worldViewProjection * vec4(position, -10.0, 1.0);\n\n v_Color = a_Color;\n}\n\n@end\n\n@export ecgl.lines2D.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nvarying vec4 v_Color;\n\nvoid main()\n{\n gl_FragColor = color * v_Color;\n}\n@end\n\n\n@export ecgl.meshLines2D.vertex\n\nattribute vec2 position: POSITION;\nattribute vec2 normal;\nattribute float offset;\nattribute vec4 a_Color : COLOR;\n\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\nuniform vec4 viewport : VIEWPORT;\n\nvarying vec4 v_Color;\nvarying float v_Miter;\n\nvoid main()\n{\n vec4 p2 = worldViewProjection * vec4(position + normal, -10.0, 1.0);\n gl_Position = worldViewProjection * vec4(position, -10.0, 1.0);\n\n p2.xy /= p2.w;\n gl_Position.xy /= gl_Position.w;\n\n vec2 N = normalize(p2.xy - gl_Position.xy);\n gl_Position.xy += N * offset / viewport.zw * 2.0;\n\n gl_Position.xy *= gl_Position.w;\n\n v_Color = a_Color;\n}\n@end\n\n\n@export ecgl.meshLines2D.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\n\nvarying vec4 v_Color;\nvarying float v_Miter;\n\nvoid main()\n{\n gl_FragColor = color * v_Color;\n}\n\n@end");var Dc=1;const Cc=$.extend({type:"graphGL",__ecgl__:!0,init:function(e,t){this.groupGL=new Za.Node,this.viewGL=new Ys("orthographic"),this.viewGL.camera.left=this.viewGL.camera.right=0,this.viewGL.add(this.groupGL),this._pointsBuilder=new Ou(!0,t),this._forceEdgesMesh=new Za.Mesh({material:new Za.Material({shader:Za.createShader("ecgl.forceAtlas2.edges"),transparent:!0,depthMask:!1,depthTest:!1}),$ignorePicking:!0,geometry:new Za.Geometry({attributes:{node:new Za.Geometry.Attribute("node","float",2),color:new Za.Geometry.Attribute("color","float",4,"COLOR")},dynamic:!0,mainAttribute:"node"}),renderOrder:-1,mode:Za.Mesh.LINES}),this._edgesMesh=new Za.Mesh({material:new Za.Material({shader:Za.createShader("ecgl.meshLines2D"),transparent:!0,depthMask:!1,depthTest:!1}),$ignorePicking:!0,geometry:new xc({useNativeLine:!1,dynamic:!0}),renderOrder:-1,culling:!1}),this._layoutId=0,this._control=new Ac({zr:t.getZr(),viewGL:this.viewGL}),this._control.setTarget(this.groupGL),this._control.init(),this._clickHandler=this._clickHandler.bind(this)},render:function(e,t,r){this.groupGL.add(this._pointsBuilder.rootNode),this._model=e,this._api=r,this._initLayout(e,t,r),this._pointsBuilder.update(e,t,r),this._forceLayoutInstance instanceof Tc||this.groupGL.remove(this._forceEdgesMesh),this._updateCamera(e,r),this._control.off("update"),this._control.on("update",function(){r.dispatchAction({type:"graphGLRoam",seriesId:e.id,zoom:this._control.getZoom(),offset:this._control.getOffset()}),this._pointsBuilder.updateView(this.viewGL.camera)},this),this._control.setZoom(Da(e.get("zoom"),1)),this._control.setOffset(e.get("offset")||[0,0]);var i=this._pointsBuilder.getPointsMesh();if(i.off("mousemove",this._mousemoveHandler),i.off("mouseout",this._mouseOutHandler,this),r.getZr().off("click",this._clickHandler),this._pointsBuilder.highlightOnMouseover=!0,e.get("focusNodeAdjacency")){var n=e.get("focusNodeAdjacencyOn");"click"===n?r.getZr().on("click",this._clickHandler):"mouseover"===n&&(i.on("mousemove",this._mousemoveHandler,this),i.on("mouseout",this._mouseOutHandler,this),this._pointsBuilder.highlightOnMouseover=!1)}this._lastMouseOverDataIndex=-1},_clickHandler:function(e){if(!this._layouting){var t=this._pointsBuilder.getPointsMesh().dataIndex;t>=0?this._api.dispatchAction({type:"graphGLFocusNodeAdjacency",seriesId:this._model.id,dataIndex:t}):this._api.dispatchAction({type:"graphGLUnfocusNodeAdjacency",seriesId:this._model.id})}},_mousemoveHandler:function(e){if(!this._layouting){var t=this._pointsBuilder.getPointsMesh().dataIndex;t>=0?t!==this._lastMouseOverDataIndex&&this._api.dispatchAction({type:"graphGLFocusNodeAdjacency",seriesId:this._model.id,dataIndex:t}):this._mouseOutHandler(e),this._lastMouseOverDataIndex=t}},_mouseOutHandler:function(e){this._layouting||(this._api.dispatchAction({type:"graphGLUnfocusNodeAdjacency",seriesId:this._model.id}),this._lastMouseOverDataIndex=-1)},_updateForceEdgesGeometry:function(e,t){var r=this._forceEdgesMesh.geometry,i=t.getEdgeData(),n=0,a=this._forceLayoutInstance,o=2*i.count();r.attributes.node.init(o),r.attributes.color.init(o),i.each(function(t){var o=e[t];r.attributes.node.set(n,a.getNodeUV(o.node1)),r.attributes.node.set(n+1,a.getNodeUV(o.node2));var s=Wl(i,o.dataIndex),l=Za.parseColor(s);l[3]*=Da(jl(i,o.dataIndex),1),r.attributes.color.set(n,l),r.attributes.color.set(n+1,l),n+=2}),r.dirty()},_updateMeshLinesGeometry:function(){var e=this._model.getEdgeData(),t=this._edgesMesh.geometry,r=(e=this._model.getEdgeData(),this._model.getData().getLayout("points"));t.resetOffset(),t.setVertexCount(e.count()*t.getLineVertexCount()),t.setTriangleCount(e.count()*t.getLineTriangleCount());var i=[],n=[],a=["lineStyle","width"];this._originalEdgeColors=new Float32Array(4*e.count()),this._edgeIndicesMap=new Float32Array(e.count()),e.each(function(o){var s=e.graph.getEdgeByIndex(o),l=2*s.node1.dataIndex,h=2*s.node2.dataIndex;i[0]=r[l],i[1]=r[l+1],n[0]=r[h],n[1]=r[h+1];var u=Wl(e,s.dataIndex),c=Za.parseColor(u);c[3]*=Da(jl(e,s.dataIndex),1);var d=e.getItemModel(s.dataIndex),f=Da(d.get(a),1)*this._api.getDevicePixelRatio();t.addLine(i,n,c,f);for(var p=0;p<4;p++)this._originalEdgeColors[4*s.dataIndex+p]=c[p];this._edgeIndicesMap[s.dataIndex]=o},this),t.dirty()},_updateForceNodesGeometry:function(e){for(var t=this._pointsBuilder.getPointsMesh(),r=[],i=0;i=p&&(h._syncNodePosition(e),f=0),r.getZr().refresh(),s(function(){m(t)})})};s(function(){h._forceLayoutInstanceToDispose&&(h._forceLayoutInstanceToDispose.dispose(n.layer.renderer),h._forceLayoutInstanceToDispose=null),m(u)}),this._layouting=!0}}},stopLayout:function(e,t,r,i){i&&null!=i.from&&i.from!==this.uid||(this._layoutId=0,this.groupGL.remove(this._forceEdgesMesh),this.groupGL.add(this._edgesMesh),this._forceLayoutInstance&&this.viewGL.layer&&(i&&i.beforeLayout||(this._syncNodePosition(e),this._updateAfterLayout(e,t,r)),this._api.getZr().refresh(),this._layouting=!1))},_syncNodePosition:function(e){var t=this._forceLayoutInstance.getNodePosition(this.viewGL.layer.renderer);e.getData().setLayout("points",t),e.setNodePosition(t)},_updateAfterLayout:function(e,t,r){this._updateMeshLinesGeometry(),this._pointsBuilder.removePositionTexture(),this._pointsBuilder.updateLayout(e,t,r),this._pointsBuilder.updateView(this.viewGL.camera),this._pointsBuilder.updateLabels(),this._pointsBuilder.showLabels()},focusNodeAdjacency:function(e,t,r,i){var n=this._model.getData();this._downplayAll();var a=i.dataIndex,o=n.graph,s=[],l=o.getNodeByIndex(a);s.push(l),l.edges.forEach(function(e){e.dataIndex<0||(e.node1!==l&&s.push(e.node1),e.node2!==l&&s.push(e.node2))},this),this._pointsBuilder.fadeOutAll(.05),this._fadeOutEdgesAll(.05),s.forEach(function(e){this._pointsBuilder.highlight(n,e.dataIndex)},this),this._pointsBuilder.updateLabels(s.map(function(e){return e.dataIndex}));var h=[];l.edges.forEach(function(e){e.dataIndex>=0&&(this._highlightEdge(e.dataIndex),h.push(e))},this),this._focusNodes=s,this._focusEdges=h},unfocusNodeAdjacency:function(e,t,r,i){this._downplayAll(),this._pointsBuilder.fadeInAll(),this._fadeInEdgesAll(),this._pointsBuilder.updateLabels()},_highlightEdge:function(e){var t=this._model.getEdgeData().getItemModel(e),r=Za.parseColor(t.get("emphasis.lineStyle.color")||t.get("lineStyle.color")),i=Da(t.get("emphasis.lineStyle.opacity"),t.get("lineStyle.opacity"),1);r[3]*=i,this._edgesMesh.geometry.setItemColor(this._edgeIndicesMap[e],r)},_downplayAll:function(){this._focusNodes&&this._focusNodes.forEach(function(e){this._pointsBuilder.downplay(this._model.getData(),e.dataIndex)},this),this._focusEdges&&this._focusEdges.forEach(function(e){this._downplayEdge(e.dataIndex)},this)},_downplayEdge:function(e){var t=this._getColor(e,[]);this._edgesMesh.geometry.setItemColor(this._edgeIndicesMap[e],t)},_setEdgeFade:function(){var e=[];return function(t,r){this._getColor(t,e),e[3]*=r,this._edgesMesh.geometry.setItemColor(this._edgeIndicesMap[t],e)}}(),_getColor:function(e,t){for(var r=0;r<4;r++)t[r]=this._originalEdgeColors[4*e+r];return t},_fadeOutEdgesAll:function(e){this._model.getData().graph.eachEdge(function(t){this._setEdgeFade(t.dataIndex,e)},this)},_fadeInEdgesAll:function(){this._fadeOutEdgesAll(1)},_updateCamera:function(e,t){this.viewGL.setViewport(0,0,t.getWidth(),t.getHeight(),t.getDevicePixelRatio());for(var r=this.viewGL.camera,i=e.getData().getLayout("points"),n=Ec.create(1/0,1/0),a=Ec.create(-1/0,-1/0),o=[],s=0;sr.left&&hr.top)){var u=Math.max(a[0]-n[0],10),c=u/t.getWidth()*t.getHeight();u*=1.4,c*=1.4,n[0]-=.2*u,r.left=n[0],r.top=l-c/2,r.bottom=l+c/2,r.right=u+n[0],r.near=0,r.far=100}},dispose:function(){var e=this.viewGL.layer.renderer;this._forceLayoutInstance&&this._forceLayoutInstance.dispose(e),this.groupGL.removeAll(),this._layoutId=-1,this._pointsBuilder.dispose()},remove:function(){this.groupGL.removeAll(),this._control.dispose()}});function Lc(e){return e instanceof Array||(e=[e,e]),e}N(function(e){function t(){}e.registerChartView(Cc),e.registerSeriesModel(_c),e.registerVisual(function(e){const t={};e.eachSeriesByType("graphGL",function(e){var r=e.getCategoriesData(),i=e.getData(),n={};r.each(function(i){var a=r.getName(i);n["ec-"+a]=i;var o=r.getItemModel(i),s=o.getModel("itemStyle").getItemStyle();s.fill||(s.fill=e.getColorFromPalette(a,t)),r.setItemVisual(i,"style",s);var l=["symbol","symbolSize","symbolKeepAspect"];for(let e=0;e65535?new Uint32Array(3*i):new Uint16Array(3*i))},addLine:function(e){var t=this._vertexOffset;this.attributes.position.set(t,[e[0],e[1],1]),this.attributes.position.set(t+1,[e[0],e[1],-1]),this.attributes.position.set(t+2,[e[0],e[1],2]),this.attributes.position.set(t+3,[e[0],e[1],-2]),this.setTriangleIndices(this._faceOffset++,[t,t+1,t+2]),this.setTriangleIndices(this._faceOffset++,[t+1,t+2,t+3]),this._vertexOffset+=4}});xr.import("@export ecgl.vfParticle.particle.fragment\n\nuniform sampler2D particleTexture;\nuniform sampler2D spawnTexture;\nuniform sampler2D velocityTexture;\n\nuniform float deltaTime;\nuniform float elapsedTime;\n\nuniform float speedScaling : 1.0;\n\nuniform vec2 textureSize;\nuniform vec4 region : [0, 0, 1, 1];\nuniform float firstFrameTime;\n\nvarying vec2 v_Texcoord;\n\n\nvoid main()\n{\n vec4 p = texture2D(particleTexture, v_Texcoord);\n bool spawn = false;\n if (p.w <= 0.0) {\n p = texture2D(spawnTexture, fract(v_Texcoord + elapsedTime / 10.0));\n p.w -= firstFrameTime;\n spawn = true;\n }\n vec2 v = texture2D(velocityTexture, fract(p.xy * region.zw + region.xy)).xy;\n v = (v - 0.5) * 2.0;\n p.z = length(v);\n p.xy += v * deltaTime / 10.0 * speedScaling;\n p.w -= deltaTime;\n\n if (spawn || p.xy != fract(p.xy)) {\n p.z = 0.0;\n }\n p.xy = fract(p.xy);\n\n gl_FragColor = p;\n}\n@end\n\n@export ecgl.vfParticle.renderPoints.vertex\n\n#define PI 3.1415926\n\nattribute vec2 texcoord : TEXCOORD_0;\n\nuniform sampler2D particleTexture;\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nuniform float size : 1.0;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\nvoid main()\n{\n vec4 p = texture2D(particleTexture, texcoord);\n\n if (p.w > 0.0 && p.z > 1e-5) {\n gl_Position = worldViewProjection * vec4(p.xy * 2.0 - 1.0, 0.0, 1.0);\n }\n else {\n gl_Position = vec4(100000.0, 100000.0, 100000.0, 1.0);\n }\n\n v_Mag = p.z;\n v_Uv = p.xy;\n\n gl_PointSize = size;\n}\n\n@end\n\n@export ecgl.vfParticle.renderPoints.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nuniform sampler2D gradientTexture;\nuniform sampler2D colorTexture;\nuniform sampler2D spriteTexture;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\nvoid main()\n{\n gl_FragColor = color;\n#ifdef SPRITETEXTURE_ENABLED\n gl_FragColor *= texture2D(spriteTexture, gl_PointCoord);\n if (color.a == 0.0) {\n discard;\n }\n#endif\n#ifdef GRADIENTTEXTURE_ENABLED\n gl_FragColor *= texture2D(gradientTexture, vec2(v_Mag, 0.5));\n#endif\n#ifdef COLORTEXTURE_ENABLED\n gl_FragColor *= texture2D(colorTexture, v_Uv);\n#endif\n}\n\n@end\n\n@export ecgl.vfParticle.renderLines.vertex\n\n#define PI 3.1415926\n\nattribute vec3 position : POSITION;\n\nuniform sampler2D particleTexture;\nuniform sampler2D prevParticleTexture;\n\nuniform float size : 1.0;\nuniform vec4 vp: VIEWPORT;\nuniform mat4 worldViewProjection : WORLDVIEWPROJECTION;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\n@import clay.util.rand\n\nvoid main()\n{\n vec4 p = texture2D(particleTexture, position.xy);\n vec4 p2 = texture2D(prevParticleTexture, position.xy);\n\n p.xy = p.xy * 2.0 - 1.0;\n p2.xy = p2.xy * 2.0 - 1.0;\n\n if (p.w > 0.0 && p.z > 1e-5) {\n vec2 dir = normalize(p.xy - p2.xy);\n vec2 norm = vec2(dir.y / vp.z, -dir.x / vp.w) * sign(position.z) * size;\n if (abs(position.z) == 2.0) {\n gl_Position = vec4(p.xy + norm, 0.0, 1.0);\n v_Uv = p.xy;\n v_Mag = p.z;\n }\n else {\n gl_Position = vec4(p2.xy + norm, 0.0, 1.0);\n v_Mag = p2.z;\n v_Uv = p2.xy;\n }\n gl_Position = worldViewProjection * gl_Position;\n }\n else {\n gl_Position = vec4(100000.0, 100000.0, 100000.0, 1.0);\n }\n}\n\n@end\n\n@export ecgl.vfParticle.renderLines.fragment\n\nuniform vec4 color : [1.0, 1.0, 1.0, 1.0];\nuniform sampler2D gradientTexture;\nuniform sampler2D colorTexture;\n\nvarying float v_Mag;\nvarying vec2 v_Uv;\n\nvoid main()\n{\n gl_FragColor = color;\n #ifdef GRADIENTTEXTURE_ENABLED\n gl_FragColor *= texture2D(gradientTexture, vec2(v_Mag, 0.5));\n#endif\n#ifdef COLORTEXTURE_ENABLED\n gl_FragColor *= texture2D(colorTexture, v_Uv);\n#endif\n}\n\n@end\n");var Nc=function(){this.motionBlurFactor=.99,this.vectorFieldTexture=new Vi({type:zi.FLOAT,flipY:!1}),this.particleLife=[5,20],this._particleType="point",this._particleSize=1,this.particleColor=[1,1,1,1],this.particleSpeedScaling=1,this._thisFrameTexture=null,this._particlePass=null,this._spawnTexture=null,this._particleTexture0=null,this._particleTexture1=null,this._particlePointsMesh=null,this._surfaceFrameBuffer=null,this._elapsedTime=0,this._scene=null,this._camera=null,this._lastFrameTexture=null,this._supersampling=1,this._downsampleTextures=[],this._width=512,this._height=512,this.init()};Nc.prototype={constructor:Nc,init:function(){var e={type:zi.FLOAT,minFilter:zi.NEAREST,magFilter:zi.NEAREST,useMipmap:!1};this._spawnTexture=new Vi(e),this._particleTexture0=new Vi(e),this._particleTexture1=new Vi(e),this._frameBuffer=new Xn({depthBuffer:!1}),this._particlePass=new ya({fragment:xr.source("ecgl.vfParticle.particle.fragment")}),this._particlePass.setUniform("velocityTexture",this.vectorFieldTexture),this._particlePass.setUniform("spawnTexture",this._spawnTexture),this._downsamplePass=new ya({fragment:xr.source("clay.compositor.downsample")});var t=new Fi({renderOrder:10,material:new kt({shader:new xr(xr.source("ecgl.vfParticle.renderPoints.vertex"),xr.source("ecgl.vfParticle.renderPoints.fragment"))}),mode:Fi.POINTS,geometry:new $i({dynamic:!0,mainAttribute:"texcoord0"})}),r=new Fi({renderOrder:10,material:new kt({shader:new xr(xr.source("ecgl.vfParticle.renderLines.vertex"),xr.source("ecgl.vfParticle.renderLines.fragment"))}),geometry:new Oc,culling:!1}),i=new Fi({material:new kt({shader:new xr(xr.source("ecgl.color.vertex"),xr.source("ecgl.color.fragment"))}),geometry:new Yn});i.material.enableTexture("diffuseMap"),this._particlePointsMesh=t,this._particleLinesMesh=r,this._lastFrameFullQuadMesh=i,this._camera=new ma,this._thisFrameTexture=new Vi,this._lastFrameTexture=new Vi},setParticleDensity:function(e,t){for(var r=new Float32Array(4*(e*t)),i=0,n=this.particleLife,a=0;a0?e[e.length-1]:this._lastFrameTexture},setRegion:function(e){this._particlePass.setUniform("region",e)},resize:function(e,t){this._lastFrameTexture.width=e*this._supersampling,this._lastFrameTexture.height=t*this._supersampling,this._thisFrameTexture.width=e*this._supersampling,this._thisFrameTexture.height=t*this._supersampling,this._width=e,this._height=t},setParticleSize:function(e){var t=this._getParticleMesh();if(e<=2)return t.material.disableTexture("spriteTexture"),void(t.material.transparent=!1);this._spriteTexture||(this._spriteTexture=new Vi),this._spriteTexture.image&&this._spriteTexture.image.width===e||(this._spriteTexture.image=function(e){var t=document.createElement("canvas");t.width=t.height=e;var r=t.getContext("2d");return r.fillStyle="#fff",r.arc(e/2,e/2,e/2,0,2*Math.PI),r.fill(),t}(e),this._spriteTexture.dirty()),t.material.transparent=!0,t.material.enableTexture("spriteTexture"),t.material.set("spriteTexture",this._spriteTexture),this._particleSize=e},setGradientTexture:function(e){var t=this._getParticleMesh().material;t[e?"enableTexture":"disableTexture"]("gradientTexture"),t.setUniform("gradientTexture",e)},setColorTextureImage:function(e,t){this._getParticleMesh().material.setTextureImage("colorTexture",e,t,{flipY:!0})},setParticleType:function(e){this._particleType=e},clearFrame:function(e){var t=this._frameBuffer;t.attach(this._lastFrameTexture),t.bind(e),e.gl.clear(e.gl.DEPTH_BUFFER_BIT|e.gl.COLOR_BUFFER_BIT),t.unbind(e)},setSupersampling:function(e){this._supersampling=e,this.resize(this._width,this._height)},_updateDownsampleTextures:function(e,t){for(var r=this._downsampleTextures,i=Math.max(Math.floor(Math.log(this._supersampling/t.getDevicePixelRatio())/Math.log(2)),0),n=2,a=this._width*this._supersampling,o=this._height*this._supersampling,s=0;s=359&&(n[0]>0&&(n[0]=0),a[0]1?(t.material.shader!==this._meshLinesShader&&t.material.attachShader(this._meshLinesShader),t.mode=Za.Mesh.TRIANGLES):(t.material.shader!==this._nativeLinesShader&&t.material.attachShader(this._nativeLinesShader),t.mode=Za.Mesh.LINES),r=r||0,i=i||n.count(),s.resetOffset();var u=0,c=0,d=[],f=[],p=[],m=[],g=[],_=.3,v=.7;function y(){f[0]=d[0]*v+m[0]*_-(d[1]-m[1])*a,f[1]=d[1]*v+m[1]*_-(m[0]-d[0])*a,p[0]=d[0]*_+m[0]*v-(d[1]-m[1])*a,p[1]=d[1]*_+m[1]*v-(m[0]-d[0])*a}if(o||0!==a)for(var x=r;x{l=e._},e=>{a=e.u},e=>{s=e.d},e=>{u=e.u},e=>{n=e.a,_=e._},e=>{i=e.k,c=e.P,d=e.e,p=e.R,y=e.V,r=e.W,g=e.a3,o=e.S,j=e.U},e=>{v=e.dR},e=>{x=e.a5},e=>{m=e.a6,f=e.m,P=e.h},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){const t={class:"p-20px"},h={class:"w-180px"};e("default",i({__name:"expired",props:{data:{}},setup(e,{expose:i}){const{t:w}=c(),S=e,{rows:b}=S.data,H=u(),k=d({edate:null}),R=new Date;R.setHours(0,0,0,0);const M=e=>m(e,f(R,1)),C=async e=>{const t=k.edate?P(k.edate,"yyyy-MM-dd"):"0000-00-00";return await s({id:e.id,edate:t},!1)},U=()=>{H.setRefresh(!0),a({title:w("Site.PHP.index_71"),width:440,footer:!0,component:_,data:{title:w("Site.PHP.index_70"),data:b,status:"done",columns:[{key:"name",title:w("Site.TableRow.index_1"),ellipsis:{tooltip:{width:"trigger"}}}]}})};return i({onConfirm:({hide:e})=>{a({title:w("Site.PHP.index_70"),hideClose:!0,data:{title:w("Site.PHP.index_70"),api:C,data:b,callback:U},component:n}),e()}}),(e,a)=>{const s=x,u=v,n=l;return y(),p("div",t,[r(n,null,{default:g(()=>[r(u,{label:e.$t("Site.PHP.index_25"),"show-feedback":!1},{default:g(()=>[o("div",h,[r(s,{value:j(k).edate,"onUpdate:value":a[0]||(a[0]=e=>j(k).edate=e),type:"date",actions:null,"is-date-disabled":M},null,8,["value"])])]),_:1},8,["label"])]),_:1})])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./index-legacy84.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy14.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./index-legacy132.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy5.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy6.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy7.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy12.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy8.js?v=1762424784323","./index-legacy130.js?v=1762424784323","./php-legacy.js?v=1762424784323","./soft-legacy.js?v=1762424784323","./soft-legacy2.js?v=1762424784323","./useOperate-legacy.js?v=1762424784323","./useModal-legacy2.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy15.js?v=1762424784323","./index-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,t){"use strict";var l,a,s,u,n,_,i,c,d,p,y,r,g,o,j,v,x,m,f,P;return{setters:[e=>{l=e._},e=>{a=e.u},e=>{s=e.d},e=>{u=e.u},e=>{n=e.a,_=e._},e=>{i=e.k,c=e.P,d=e.e,p=e.R,y=e.V,r=e.W,g=e.a3,o=e.S,j=e.U},e=>{v=e.dR},e=>{x=e.a5},e=>{m=e.a4,f=e.m,P=e.h},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){const t={class:"p-20px"},h={class:"w-180px"};e("default",i({__name:"expired",props:{data:{}},setup(e,{expose:i}){const{t:w}=c(),S=e,{rows:b}=S.data,H=u(),k=d({edate:null}),R=new Date;R.setHours(0,0,0,0);const M=e=>m(e,f(R,1)),C=async e=>{const t=k.edate?P(k.edate,"yyyy-MM-dd"):"0000-00-00";return await s({id:e.id,edate:t},!1)},U=()=>{H.setRefresh(!0),a({title:w("Site.PHP.index_71"),width:440,footer:!0,component:_,data:{title:w("Site.PHP.index_70"),data:b,status:"done",columns:[{key:"name",title:w("Site.TableRow.index_1"),ellipsis:{tooltip:{width:"trigger"}}}]}})};return i({onConfirm:({hide:e})=>{a({title:w("Site.PHP.index_70"),hideClose:!0,data:{title:w("Site.PHP.index_70"),api:C,data:b,callback:U},component:n}),e()}}),(e,a)=>{const s=x,u=v,n=l;return y(),p("div",t,[r(n,null,{default:g(()=>[r(u,{label:e.$t("Site.PHP.index_25"),"show-feedback":!1},{default:g(()=>[o("div",h,[r(s,{value:j(k).edate,"onUpdate:value":a[0]||(a[0]=e=>j(k).edate=e),type:"date",actions:null,"is-date-disabled":M},null,8,["value"])])]),_:1},8,["label"])]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/expired.js b/BTPanel/static/vite/js/expired.js index ee2d2dcd..cb99382e 100644 --- a/BTPanel/static/vite/js/expired.js +++ b/BTPanel/static/vite/js/expired.js @@ -1 +1 @@ -import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{u as t}from"./public.js?v=1760428868419";import{d as s}from"./site.js?v=1760428868419";import{u as a}from"./index84.js?v=1760428868419";import{a as i,_ as p}from"./index.vue_vue_type_script_setup_true_lang14.js?v=1760428868419";import{k as o,P as r,e as _,R as u,V as n,W as d,a3 as l,S as m,U as c}from"./vue.js?v=1760428868419";import{dR as j}from"./naive.js?v=1760428868419";import{a5 as v}from"./page_layout.js?v=1760428868419";import{a6 as x,m as f,h as y}from"./common.js?v=1760428868419";import"./index133.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang12.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang8.js?v=1760428868419";import"./index131.js?v=1760428868419";import"./php.js?v=1760428868419";import"./soft.js?v=1760428868419";import"./soft2.js?v=1760428868419";import"./useOperate.js?v=1760428868419";import"./useModal2.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang15.js?v=1760428868419";import"./index.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const g={class:"p-20px"},P={class:"w-180px"},h=o({__name:"expired",props:{data:{}},setup(o,{expose:h}){const{t:w}=r(),b=o,{rows:H}=b.data,S=a(),k=_({edate:null}),R=new Date;R.setHours(0,0,0,0);const M=e=>x(e,f(R,1)),C=async e=>{const t=k.edate?y(k.edate,"yyyy-MM-dd"):"0000-00-00";return await s({id:e.id,edate:t},!1)},U=()=>{S.setRefresh(!0),t({title:w("Site.PHP.index_71"),width:440,footer:!0,component:p,data:{title:w("Site.PHP.index_70"),data:H,status:"done",columns:[{key:"name",title:w("Site.TableRow.index_1"),ellipsis:{tooltip:{width:"trigger"}}}]}})};return h({onConfirm:({hide:e})=>{t({title:w("Site.PHP.index_70"),hideClose:!0,data:{title:w("Site.PHP.index_70"),api:C,data:H,callback:U},component:i}),e()}}),(t,s)=>{const a=v,i=j,p=e;return n(),u("div",g,[d(p,null,{default:l(()=>[d(i,{label:t.$t("Site.PHP.index_25"),"show-feedback":!1},{default:l(()=>[m("div",P,[d(a,{value:c(k).edate,"onUpdate:value":s[0]||(s[0]=e=>c(k).edate=e),type:"date",actions:null,"is-date-disabled":M},null,8,["value"])])]),_:1},8,["label"])]),_:1})])}}});export{h as default}; +import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{u as t}from"./public.js?v=1762424784323";import{d as s}from"./site.js?v=1762424784323";import{u as a}from"./index84.js?v=1762424784323";import{a as i,_ as p}from"./index.vue_vue_type_script_setup_true_lang14.js?v=1762424784323";import{k as o,P as r,e as _,R as u,V as n,W as d,a3 as l,S as m,U as c}from"./vue.js?v=1762424784323";import{dR as j}from"./naive.js?v=1762424784323";import{a5 as v}from"./page_layout.js?v=1762424784323";import{a4 as x,m as f,h as y}from"./common.js?v=1762424784323";import"./index132.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang5.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang6.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang7.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang12.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang8.js?v=1762424784323";import"./index130.js?v=1762424784323";import"./php.js?v=1762424784323";import"./soft.js?v=1762424784323";import"./soft2.js?v=1762424784323";import"./useOperate.js?v=1762424784323";import"./useModal2.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang15.js?v=1762424784323";import"./index.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const g={class:"p-20px"},P={class:"w-180px"},h=o({__name:"expired",props:{data:{}},setup(o,{expose:h}){const{t:w}=r(),b=o,{rows:H}=b.data,S=a(),k=_({edate:null}),R=new Date;R.setHours(0,0,0,0);const M=e=>x(e,f(R,1)),C=async e=>{const t=k.edate?y(k.edate,"yyyy-MM-dd"):"0000-00-00";return await s({id:e.id,edate:t},!1)},U=()=>{S.setRefresh(!0),t({title:w("Site.PHP.index_71"),width:440,footer:!0,component:p,data:{title:w("Site.PHP.index_70"),data:H,status:"done",columns:[{key:"name",title:w("Site.TableRow.index_1"),ellipsis:{tooltip:{width:"trigger"}}}]}})};return h({onConfirm:({hide:e})=>{t({title:w("Site.PHP.index_70"),hideClose:!0,data:{title:w("Site.PHP.index_70"),api:C,data:H,callback:U},component:i}),e()}}),(t,s)=>{const a=v,i=j,p=e;return n(),u("div",g,[d(p,null,{default:l(()=>[d(i,{label:t.$t("Site.PHP.index_25"),"show-feedback":!1},{default:l(()=>[m("div",P,[d(a,{value:c(k).edate,"onUpdate:value":s[0]||(s[0]=e=>c(k).edate=e),type:"date",actions:null,"is-date-disabled":M},null,8,["value"])])]),_:1},8,["label"])]),_:1})])}}});export{h as default}; diff --git a/BTPanel/static/vite/js/export-legacy.js b/BTPanel/static/vite/js/export-legacy.js index 80a165da..5d139a4c 100644 --- a/BTPanel/static/vite/js/export-legacy.js +++ b/BTPanel/static/vite/js/export-legacy.js @@ -1 +1 @@ -System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419"],function(e,l){"use strict";var a,t,n,u,s,c,r,i,o,_,p,d,y,v,g,x;return{setters:[e=>{a=e._},e=>{t=e.cO,n=e.d,u=e.bg},e=>{s=e.k,c=e.P,r=e.e,i=e.R,o=e.V,_=e.W,p=e.a3,d=e.S,y=e.U,v=e.N},e=>{g=e.dR,x=e.dV},null,null,null],execute:function(){const l={class:"p-20px"},b={class:"w-210px"};e("default",s({__name:"export",props:{chain:{default:"ALL"}},setup(e,{expose:s}){const f=e,{t:j}=c(),m=r({chain:f.chain,rule:"port"}),w=[{label:j("Security.Firewall.Port.index_4"),value:"ALL"},{label:j("Security.Firewall.Port.index_5"),value:"INPUT"},{label:j("Security.Firewall.Port.index_6"),value:"OUTPUT"}];return s({onConfirm:async()=>{const{message:e}=await t(v(m));n(e)&&u(e.result)}}),(e,t)=>{const n=x,u=g,s=a;return o(),i("div",l,[_(s,null,{default:p(()=>[_(u,{label:e.$t("Security.Firewall.Port.index_42"),"show-feedback":!1},{default:p(()=>[d("div",b,[_(n,{value:y(m).chain,"onUpdate:value":t[0]||(t[0]=e=>y(m).chain=e),options:w},null,8,["value"])])]),_:1},8,["label"])]),_:1})])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323"],function(e,l){"use strict";var a,t,n,u,s,c,r,i,o,_,p,d,y,v,g,x;return{setters:[e=>{a=e._},e=>{t=e.cN,n=e.d,u=e.bg},e=>{s=e.k,c=e.P,r=e.e,i=e.R,o=e.V,_=e.W,p=e.a3,d=e.S,y=e.U,v=e.N},e=>{g=e.dR,x=e.dV},null,null,null],execute:function(){const l={class:"p-20px"},b={class:"w-210px"};e("default",s({__name:"export",props:{chain:{default:"ALL"}},setup(e,{expose:s}){const f=e,{t:j}=c(),m=r({chain:f.chain,rule:"port"}),w=[{label:j("Security.Firewall.Port.index_4"),value:"ALL"},{label:j("Security.Firewall.Port.index_5"),value:"INPUT"},{label:j("Security.Firewall.Port.index_6"),value:"OUTPUT"}];return s({onConfirm:async()=>{const{message:e}=await t(v(m));n(e)&&u(e.result)}}),(e,t)=>{const n=x,u=g,s=a;return o(),i("div",l,[_(s,null,{default:p(()=>[_(u,{label:e.$t("Security.Firewall.Port.index_42"),"show-feedback":!1},{default:p(()=>[d("div",b,[_(n,{value:y(m).chain,"onUpdate:value":t[0]||(t[0]=e=>y(m).chain=e),options:w},null,8,["value"])])]),_:1},8,["label"])]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/export-legacy2.js b/BTPanel/static/vite/js/export-legacy2.js index e5478895..0fa5ecc2 100644 --- a/BTPanel/static/vite/js/export-legacy2.js +++ b/BTPanel/static/vite/js/export-legacy2.js @@ -1 +1 @@ -System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419"],function(e,l){"use strict";var a,t,n,u,s,c,i,r,o,_,p,d,y,v,g,x;return{setters:[e=>{a=e._},e=>{t=e.cO,n=e.d,u=e.bg},e=>{s=e.k,c=e.P,i=e.e,r=e.R,o=e.V,_=e.W,p=e.a3,d=e.S,y=e.U,v=e.N},e=>{g=e.dR,x=e.dV},null,null,null],execute:function(){const l={class:"p-20px"},b={class:"w-210px"};e("default",s({__name:"export",props:{chain:{default:"ALL"}},setup(e,{expose:s}){const f=e,{t:j}=c(),m=i({chain:f.chain,rule:"ip"}),w=[{label:j("Security.Firewall.Port.index_4"),value:"ALL"},{label:j("Security.Firewall.Port.index_5"),value:"INPUT"},{label:j("Security.Firewall.Port.index_6"),value:"OUTPUT"}];return s({onConfirm:async()=>{const{message:e}=await t(v(m));n(e)&&u(e.result)}}),(e,t)=>{const n=x,u=g,s=a;return o(),r("div",l,[_(s,null,{default:p(()=>[_(u,{label:e.$t("Security.Firewall.Port.index_26"),"show-feedback":!1},{default:p(()=>[d("div",b,[_(n,{value:y(m).chain,"onUpdate:value":t[0]||(t[0]=e=>y(m).chain=e),options:w},null,8,["value"])])]),_:1},8,["label"])]),_:1})])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323"],function(e,l){"use strict";var a,t,n,u,s,c,i,r,o,_,p,d,y,v,g,x;return{setters:[e=>{a=e._},e=>{t=e.cN,n=e.d,u=e.bg},e=>{s=e.k,c=e.P,i=e.e,r=e.R,o=e.V,_=e.W,p=e.a3,d=e.S,y=e.U,v=e.N},e=>{g=e.dR,x=e.dV},null,null,null],execute:function(){const l={class:"p-20px"},b={class:"w-210px"};e("default",s({__name:"export",props:{chain:{default:"ALL"}},setup(e,{expose:s}){const f=e,{t:j}=c(),m=i({chain:f.chain,rule:"ip"}),w=[{label:j("Security.Firewall.Port.index_4"),value:"ALL"},{label:j("Security.Firewall.Port.index_5"),value:"INPUT"},{label:j("Security.Firewall.Port.index_6"),value:"OUTPUT"}];return s({onConfirm:async()=>{const{message:e}=await t(v(m));n(e)&&u(e.result)}}),(e,t)=>{const n=x,u=g,s=a;return o(),r("div",l,[_(s,null,{default:p(()=>[_(u,{label:e.$t("Security.Firewall.Port.index_26"),"show-feedback":!1},{default:p(()=>[d("div",b,[_(n,{value:y(m).chain,"onUpdate:value":t[0]||(t[0]=e=>y(m).chain=e),options:w},null,8,["value"])])]),_:1},8,["label"])]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/export-legacy3.js b/BTPanel/static/vite/js/export-legacy3.js index 497a88fe..2c81dbfd 100644 --- a/BTPanel/static/vite/js/export-legacy3.js +++ b/BTPanel/static/vite/js/export-legacy3.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./index-legacy99.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./setting-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,l){"use strict";var t,a,n,s,u,c,i,o,r,g,_,p,y,d,v,f,j,m;return{setters:[e=>{t=e._,a=e.i},e=>{n=e._},e=>{s=e.d,u=e.go},e=>{c=e.U},e=>{i=e.aC},e=>{o=e.k,r=e.r,g=e.R,_=e.V,p=e.W,y=e.S,d=e.ak,v=e.U,f=e.a3,j=e.j,m=e.a4},null,null],execute:function(){const l={class:"p-20px"},x={class:"mt-12px"};e("default",o({__name:"export",setup(e){const o=r(""),S=()=>{a(o.value)},$=()=>{u(o.value,"waf_config.json")};return(async()=>{const{message:e}=await c();s(e)&&(o.value=e.result)})(),(e,a)=>{const s=n,u=i,c=t;return _(),g("div",l,[p(s,{value:v(o),"onUpdate:value":a[0]||(a[0]=e=>d(o)?o.value=e:null),rows:14},null,8,["value"]),y("div",x,[p(u,{type:"primary",onClick:S},{default:f(()=>[j(m(e.$t("Public.Btn.Copy")),1)]),_:1}),p(u,{class:"ml-12px",onClick:$},{default:f(()=>[j(m(e.$t("Public.Btn.Download")),1)]),_:1})]),p(c,{class:"mt-16px"},{default:f(()=>[y("li",null,m(e.$t("Waf.Setting.index_19")),1),y("li",null,m(e.$t("Waf.Setting.index_20")),1),y("li",null,m(e.$t("Waf.Setting.index_21")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./index-legacy99.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./setting-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,l){"use strict";var t,a,n,s,u,c,i,o,r,g,_,p,y,d,v,f,j,m;return{setters:[e=>{t=e._,a=e.i},e=>{n=e._},e=>{s=e.d,u=e.gk},e=>{c=e.U},e=>{i=e.aC},e=>{o=e.k,r=e.r,g=e.R,_=e.V,p=e.W,y=e.S,d=e.ak,v=e.U,f=e.a3,j=e.j,m=e.a4},null,null],execute:function(){const l={class:"p-20px"},x={class:"mt-12px"};e("default",o({__name:"export",setup(e){const o=r(""),k=()=>{a(o.value)},S=()=>{u(o.value,"waf_config.json")};return(async()=>{const{message:e}=await c();s(e)&&(o.value=e.result)})(),(e,a)=>{const s=n,u=i,c=t;return _(),g("div",l,[p(s,{value:v(o),"onUpdate:value":a[0]||(a[0]=e=>d(o)?o.value=e:null),rows:14},null,8,["value"]),y("div",x,[p(u,{type:"primary",onClick:k},{default:f(()=>[j(m(e.$t("Public.Btn.Copy")),1)]),_:1}),p(u,{class:"ml-12px",onClick:S},{default:f(()=>[j(m(e.$t("Public.Btn.Download")),1)]),_:1})]),p(c,{class:"mt-16px"},{default:f(()=>[y("li",null,m(e.$t("Waf.Setting.index_19")),1),y("li",null,m(e.$t("Waf.Setting.index_20")),1),y("li",null,m(e.$t("Waf.Setting.index_21")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/export.js b/BTPanel/static/vite/js/export.js index 29e062f1..e87661b2 100644 --- a/BTPanel/static/vite/js/export.js +++ b/BTPanel/static/vite/js/export.js @@ -1 +1 @@ -import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{cO as e,d as s,bg as l}from"./page_layout.js?v=1760428868419";import{k as t,P as r,e as o,R as i,V as n,W as u,a3 as p,S as c,U as _,N as m}from"./vue.js?v=1760428868419";import{dR as d,dV as v}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./public.js?v=1760428868419";const f={class:"p-20px"},x={class:"w-210px"},b=t({__name:"export",props:{chain:{default:"ALL"}},setup(t,{expose:b}){const j=t,{t:w}=r(),y=o({chain:j.chain,rule:"port"}),P=[{label:w("Security.Firewall.Port.index_4"),value:"ALL"},{label:w("Security.Firewall.Port.index_5"),value:"INPUT"},{label:w("Security.Firewall.Port.index_6"),value:"OUTPUT"}];return b({onConfirm:async()=>{const{message:a}=await e(m(y));s(a)&&l(a.result)}}),(e,s)=>{const l=v,t=d,r=a;return n(),i("div",f,[u(r,null,{default:p(()=>[u(t,{label:e.$t("Security.Firewall.Port.index_42"),"show-feedback":!1},{default:p(()=>[c("div",x,[u(l,{value:_(y).chain,"onUpdate:value":s[0]||(s[0]=a=>_(y).chain=a),options:P},null,8,["value"])])]),_:1},8,["label"])]),_:1})])}}});export{b as default}; +import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{cN as e,d as s,bg as l}from"./page_layout.js?v=1762424784323";import{k as t,P as r,e as o,R as i,V as n,W as u,a3 as p,S as c,U as _,N as m}from"./vue.js?v=1762424784323";import{dR as d,dV as v}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./public.js?v=1762424784323";const f={class:"p-20px"},x={class:"w-210px"},b=t({__name:"export",props:{chain:{default:"ALL"}},setup(t,{expose:b}){const j=t,{t:w}=r(),y=o({chain:j.chain,rule:"port"}),P=[{label:w("Security.Firewall.Port.index_4"),value:"ALL"},{label:w("Security.Firewall.Port.index_5"),value:"INPUT"},{label:w("Security.Firewall.Port.index_6"),value:"OUTPUT"}];return b({onConfirm:async()=>{const{message:a}=await e(m(y));s(a)&&l(a.result)}}),(e,s)=>{const l=v,t=d,r=a;return n(),i("div",f,[u(r,null,{default:p(()=>[u(t,{label:e.$t("Security.Firewall.Port.index_42"),"show-feedback":!1},{default:p(()=>[c("div",x,[u(l,{value:_(y).chain,"onUpdate:value":s[0]||(s[0]=a=>_(y).chain=a),options:P},null,8,["value"])])]),_:1},8,["label"])]),_:1})])}}});export{b as default}; diff --git a/BTPanel/static/vite/js/export2.js b/BTPanel/static/vite/js/export2.js index 07dc3721..add2e5a1 100644 --- a/BTPanel/static/vite/js/export2.js +++ b/BTPanel/static/vite/js/export2.js @@ -1 +1 @@ -import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{cO as e,d as s,bg as l}from"./page_layout.js?v=1760428868419";import{k as t,P as r,e as i,R as o,V as n,W as u,a3 as p,S as c,U as _,N as m}from"./vue.js?v=1760428868419";import{dR as d,dV as v}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./public.js?v=1760428868419";const f={class:"p-20px"},x={class:"w-210px"},b=t({__name:"export",props:{chain:{default:"ALL"}},setup(t,{expose:b}){const j=t,{t:w}=r(),y=i({chain:j.chain,rule:"ip"}),P=[{label:w("Security.Firewall.Port.index_4"),value:"ALL"},{label:w("Security.Firewall.Port.index_5"),value:"INPUT"},{label:w("Security.Firewall.Port.index_6"),value:"OUTPUT"}];return b({onConfirm:async()=>{const{message:a}=await e(m(y));s(a)&&l(a.result)}}),(e,s)=>{const l=v,t=d,r=a;return n(),o("div",f,[u(r,null,{default:p(()=>[u(t,{label:e.$t("Security.Firewall.Port.index_26"),"show-feedback":!1},{default:p(()=>[c("div",x,[u(l,{value:_(y).chain,"onUpdate:value":s[0]||(s[0]=a=>_(y).chain=a),options:P},null,8,["value"])])]),_:1},8,["label"])]),_:1})])}}});export{b as default}; +import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{cN as e,d as s,bg as l}from"./page_layout.js?v=1762424784323";import{k as t,P as r,e as i,R as o,V as n,W as u,a3 as p,S as c,U as _,N as m}from"./vue.js?v=1762424784323";import{dR as d,dV as v}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./public.js?v=1762424784323";const f={class:"p-20px"},x={class:"w-210px"},b=t({__name:"export",props:{chain:{default:"ALL"}},setup(t,{expose:b}){const j=t,{t:w}=r(),y=i({chain:j.chain,rule:"ip"}),P=[{label:w("Security.Firewall.Port.index_4"),value:"ALL"},{label:w("Security.Firewall.Port.index_5"),value:"INPUT"},{label:w("Security.Firewall.Port.index_6"),value:"OUTPUT"}];return b({onConfirm:async()=>{const{message:a}=await e(m(y));s(a)&&l(a.result)}}),(e,s)=>{const l=v,t=d,r=a;return n(),o("div",f,[u(r,null,{default:p(()=>[u(t,{label:e.$t("Security.Firewall.Port.index_26"),"show-feedback":!1},{default:p(()=>[c("div",x,[u(l,{value:_(y).chain,"onUpdate:value":s[0]||(s[0]=a=>_(y).chain=a),options:P},null,8,["value"])])]),_:1},8,["label"])]),_:1})])}}});export{b as default}; diff --git a/BTPanel/static/vite/js/export3.js b/BTPanel/static/vite/js/export3.js index 643fc52c..9ed7a9d6 100644 --- a/BTPanel/static/vite/js/export3.js +++ b/BTPanel/static/vite/js/export3.js @@ -1 +1 @@ -import{_ as a,i as s}from"./public.js?v=1760428868419";import{_ as t}from"./index99.js?v=1760428868419";import{d as l,go as e}from"./page_layout.js?v=1760428868419";import{U as o}from"./setting.js?v=1760428868419";import{aC as n}from"./naive.js?v=1760428868419";import{k as i,r,R as u,V as m,W as p,S as c,ak as _,U as f,a3 as d,j,a4 as v}from"./vue.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const x={class:"p-20px"},g={class:"mt-12px"},y=i({__name:"export",setup(i){const y=r(""),$=()=>{s(y.value)},k=()=>{e(y.value,"waf_config.json")};return(async()=>{const{message:a}=await o();l(a)&&(y.value=a.result)})(),(s,l)=>{const e=t,o=n,i=a;return m(),u("div",x,[p(e,{value:f(y),"onUpdate:value":l[0]||(l[0]=a=>_(y)?y.value=a:null),rows:14},null,8,["value"]),c("div",g,[p(o,{type:"primary",onClick:$},{default:d(()=>[j(v(s.$t("Public.Btn.Copy")),1)]),_:1}),p(o,{class:"ml-12px",onClick:k},{default:d(()=>[j(v(s.$t("Public.Btn.Download")),1)]),_:1})]),p(i,{class:"mt-16px"},{default:d(()=>[c("li",null,v(s.$t("Waf.Setting.index_19")),1),c("li",null,v(s.$t("Waf.Setting.index_20")),1),c("li",null,v(s.$t("Waf.Setting.index_21")),1)]),_:1})])}}});export{y as default}; +import{_ as a,i as s}from"./public.js?v=1762424784323";import{_ as t}from"./index99.js?v=1762424784323";import{d as l,gk as e}from"./page_layout.js?v=1762424784323";import{U as o}from"./setting.js?v=1762424784323";import{aC as n}from"./naive.js?v=1762424784323";import{k as i,r,R as u,V as m,W as p,S as c,ak as _,U as f,a3 as d,j,a4 as v}from"./vue.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const x={class:"p-20px"},g={class:"mt-12px"},k=i({__name:"export",setup(i){const k=r(""),y=()=>{s(k.value)},$=()=>{e(k.value,"waf_config.json")};return(async()=>{const{message:a}=await o();l(a)&&(k.value=a.result)})(),(s,l)=>{const e=t,o=n,i=a;return m(),u("div",x,[p(e,{value:f(k),"onUpdate:value":l[0]||(l[0]=a=>_(k)?k.value=a:null),rows:14},null,8,["value"]),c("div",g,[p(o,{type:"primary",onClick:y},{default:d(()=>[j(v(s.$t("Public.Btn.Copy")),1)]),_:1}),p(o,{class:"ml-12px",onClick:$},{default:d(()=>[j(v(s.$t("Public.Btn.Download")),1)]),_:1})]),p(i,{class:"mt-16px"},{default:d(()=>[c("li",null,v(s.$t("Waf.Setting.index_19")),1),c("li",null,v(s.$t("Waf.Setting.index_20")),1),c("li",null,v(s.$t("Waf.Setting.index_21")),1)]),_:1})])}}});export{k as default}; diff --git a/BTPanel/static/vite/js/ext-prompt.js b/BTPanel/static/vite/js/ext-prompt.js deleted file mode 100644 index d71d3b26..00000000 --- a/BTPanel/static/vite/js/ext-prompt.js +++ /dev/null @@ -1,3162 +0,0 @@ -ace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/config","ace/lib/useragent"], function(require, exports, module){"use strict"; -var Renderer = require("../virtual_renderer").VirtualRenderer; -var Editor = require("../editor").Editor; -var Range = require("../range").Range; -var event = require("../lib/event"); -var lang = require("../lib/lang"); -var dom = require("../lib/dom"); -var nls = require("../config").nls; -var userAgent = require("./../lib/useragent"); -var getAriaId = function (index) { - return "suggest-aria-id:".concat(index); -}; -var popupAriaRole = userAgent.isSafari ? "menu" : "listbox"; -var optionAriaRole = userAgent.isSafari ? "menuitem" : "option"; -var ariaActiveState = userAgent.isSafari ? "aria-current" : "aria-selected"; -var $singleLineEditor = function (el) { - var renderer = new Renderer(el); - renderer.$maxLines = 4; - var editor = new Editor(renderer); - editor.setHighlightActiveLine(false); - editor.setShowPrintMargin(false); - editor.renderer.setShowGutter(false); - editor.renderer.setHighlightGutterLine(false); - editor.$mouseHandler.$focusTimeout = 0; - editor.$highlightTagPending = true; - return editor; -}; -var AcePopup = /** @class */ (function () { - function AcePopup(parentNode) { - var el = dom.createElement("div"); - var popup = $singleLineEditor(el); - if (parentNode) { - parentNode.appendChild(el); - } - el.style.display = "none"; - popup.renderer.content.style.cursor = "default"; - popup.renderer.setStyle("ace_autocomplete"); - popup.renderer.$textLayer.element.setAttribute("role", popupAriaRole); - popup.renderer.$textLayer.element.setAttribute("aria-roledescription", nls("autocomplete.popup.aria-roledescription", "Autocomplete suggestions")); - popup.renderer.$textLayer.element.setAttribute("aria-label", nls("autocomplete.popup.aria-label", "Autocomplete suggestions")); - popup.renderer.textarea.setAttribute("aria-hidden", "true"); - popup.setOption("displayIndentGuides", false); - popup.setOption("dragDelay", 150); - var noop = function () { }; - popup.focus = noop; - popup.$isFocused = true; - popup.renderer.$cursorLayer.restartTimer = noop; - popup.renderer.$cursorLayer.element.style.opacity = "0"; - popup.renderer.$maxLines = 8; - popup.renderer.$keepTextAreaAtCursor = false; - popup.setHighlightActiveLine(false); - popup.session.highlight(""); - popup.session.$searchHighlight.clazz = "ace_highlight-marker"; - popup.on("mousedown", function (e) { - var pos = e.getDocumentPosition(); - popup.selection.moveToPosition(pos); - selectionMarker.start.row = selectionMarker.end.row = pos.row; - e.stop(); - }); - var lastMouseEvent; - var hoverMarker = new Range(-1, 0, -1, Infinity); - var selectionMarker = new Range(-1, 0, -1, Infinity); - selectionMarker.id = popup.session.addMarker(selectionMarker, "ace_active-line", "fullLine"); - popup.setSelectOnHover = function (val) { - if (!val) { - hoverMarker.id = popup.session.addMarker(hoverMarker, "ace_line-hover", "fullLine"); - } - else if (hoverMarker.id) { - popup.session.removeMarker(hoverMarker.id); - hoverMarker.id = null; - } - }; - popup.setSelectOnHover(false); - popup.on("mousemove", function (e) { - if (!lastMouseEvent) { - lastMouseEvent = e; - return; - } - if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) { - return; - } - lastMouseEvent = e; - lastMouseEvent.scrollTop = popup.renderer.scrollTop; - popup.isMouseOver = true; - var row = lastMouseEvent.getDocumentPosition().row; - if (hoverMarker.start.row != row) { - if (!hoverMarker.id) - popup.setRow(row); - setHoverMarker(row); - } - }); - popup.renderer.on("beforeRender", function () { - if (lastMouseEvent && hoverMarker.start.row != -1) { - lastMouseEvent.$pos = null; - var row = lastMouseEvent.getDocumentPosition().row; - if (!hoverMarker.id) - popup.setRow(row); - setHoverMarker(row, true); - } - }); - popup.renderer.on("afterRender", function () { - var t = popup.renderer.$textLayer; - for (var row = t.config.firstRow, l = t.config.lastRow; row <= l; row++) { - var popupRowElement = /** @type {HTMLElement|null} */ (t.element.childNodes[row - t.config.firstRow]); - popupRowElement.setAttribute("role", optionAriaRole); - popupRowElement.setAttribute("aria-roledescription", nls("autocomplete.popup.item.aria-roledescription", "item")); - popupRowElement.setAttribute("aria-setsize", popup.data.length); - popupRowElement.setAttribute("aria-describedby", "doc-tooltip"); - popupRowElement.setAttribute("aria-posinset", row + 1); - var rowData = popup.getData(row); - if (rowData) { - var ariaLabel = "".concat(rowData.caption || rowData.value).concat(rowData.meta ? ", ".concat(rowData.meta) : ''); - popupRowElement.setAttribute("aria-label", ariaLabel); - } - var highlightedSpans = popupRowElement.querySelectorAll(".ace_completion-highlight"); - highlightedSpans.forEach(function (span) { - span.setAttribute("role", "mark"); - }); - } - }); - popup.renderer.on("afterRender", function () { - var row = popup.getRow(); - var t = popup.renderer.$textLayer; - var selected = /** @type {HTMLElement|null} */ (t.element.childNodes[row - t.config.firstRow]); - var el = document.activeElement; // Active element is textarea of main editor - if (selected !== popup.selectedNode && popup.selectedNode) { - dom.removeCssClass(popup.selectedNode, "ace_selected"); - popup.selectedNode.removeAttribute(ariaActiveState); - popup.selectedNode.removeAttribute("id"); - } - el.removeAttribute("aria-activedescendant"); - popup.selectedNode = selected; - if (selected) { - var ariaId = getAriaId(row); - dom.addCssClass(selected, "ace_selected"); - selected.id = ariaId; - t.element.setAttribute("aria-activedescendant", ariaId); - el.setAttribute("aria-activedescendant", ariaId); - selected.setAttribute(ariaActiveState, "true"); - } - }); - var hideHoverMarker = function () { setHoverMarker(-1); }; - var setHoverMarker = function (row, suppressRedraw) { - if (row !== hoverMarker.start.row) { - hoverMarker.start.row = hoverMarker.end.row = row; - if (!suppressRedraw) - popup.session._emit("changeBackMarker"); - popup._emit("changeHoverMarker"); - } - }; - popup.getHoveredRow = function () { - return hoverMarker.start.row; - }; - event.addListener(popup.container, "mouseout", function () { - popup.isMouseOver = false; - hideHoverMarker(); - }); - popup.on("hide", hideHoverMarker); - popup.on("changeSelection", hideHoverMarker); - popup.session.doc.getLength = function () { - return popup.data.length; - }; - popup.session.doc.getLine = function (i) { - var data = popup.data[i]; - if (typeof data == "string") - return data; - return (data && data.value) || ""; - }; - var bgTokenizer = popup.session.bgTokenizer; - bgTokenizer.$tokenizeRow = function (row) { - var data = popup.data[row]; - var tokens = []; - if (!data) - return tokens; - if (typeof data == "string") - data = { value: data }; - var caption = data.caption || data.value || data.name; - function addToken(value, className) { - value && tokens.push({ - type: (data.className || "") + (className || ""), - value: value - }); - } - var lower = caption.toLowerCase(); - var filterText = (popup.filterText || "").toLowerCase(); - var lastIndex = 0; - var lastI = 0; - for (var i = 0; i <= filterText.length; i++) { - if (i != lastI && (data.matchMask & (1 << i) || i == filterText.length)) { - var sub = filterText.slice(lastI, i); - lastI = i; - var index = lower.indexOf(sub, lastIndex); - if (index == -1) - continue; - addToken(caption.slice(lastIndex, index), ""); - lastIndex = index + sub.length; - addToken(caption.slice(index, lastIndex), "completion-highlight"); - } - } - addToken(caption.slice(lastIndex, caption.length), ""); - tokens.push({ type: "completion-spacer", value: " " }); - if (data.meta) - tokens.push({ type: "completion-meta", value: data.meta }); - if (data.message) - tokens.push({ type: "completion-message", value: data.message }); - return tokens; - }; - bgTokenizer.$updateOnChange = noop; - bgTokenizer.start = noop; - popup.session.$computeWidth = function () { - return this.screenWidth = 0; - }; - popup.isOpen = false; - popup.isTopdown = false; - popup.autoSelect = true; - popup.filterText = ""; - popup.isMouseOver = false; - popup.data = []; - popup.setData = function (list, filterText) { - popup.filterText = filterText || ""; - popup.setValue(lang.stringRepeat("\n", list.length), -1); - popup.data = list || []; - popup.setRow(0); - }; - popup.getData = function (row) { - return popup.data[row]; - }; - popup.getRow = function () { - return selectionMarker.start.row; - }; - popup.setRow = function (line) { - line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length - 1, line)); - if (selectionMarker.start.row != line) { - popup.selection.clearSelection(); - selectionMarker.start.row = selectionMarker.end.row = line || 0; - popup.session._emit("changeBackMarker"); - popup.moveCursorTo(line || 0, 0); - if (popup.isOpen) - popup._signal("select"); - } - }; - popup.on("changeSelection", function () { - if (popup.isOpen) - popup.setRow(popup.selection.lead.row); - popup.renderer.scrollCursorIntoView(); - }); - popup.hide = function () { - this.container.style.display = "none"; - popup.anchorPos = null; - popup.anchor = null; - if (popup.isOpen) { - popup.isOpen = false; - this._signal("hide"); - } - }; - popup.tryShow = function (pos, lineHeight, anchor, forceShow) { - if (!forceShow && popup.isOpen && popup.anchorPos && popup.anchor && - popup.anchorPos.top === pos.top && popup.anchorPos.left === pos.left && - popup.anchor === anchor) { - return true; - } - var el = this.container; - var scrollBarSize = this.renderer.scrollBar.width || 10; - var screenHeight = window.innerHeight - scrollBarSize; - var screenWidth = window.innerWidth - scrollBarSize; - var renderer = this.renderer; - var maxH = renderer.$maxLines * lineHeight * 1.4; - var dims = { top: 0, bottom: 0, left: 0 }; - var spaceBelow = screenHeight - pos.top - 3 * this.$borderSize - lineHeight; - var spaceAbove = pos.top - 3 * this.$borderSize; - if (!anchor) { - if (spaceAbove <= spaceBelow || spaceBelow >= maxH) { - anchor = "bottom"; - } - else { - anchor = "top"; - } - } - if (anchor === "top") { - dims.bottom = pos.top - this.$borderSize; - dims.top = dims.bottom - maxH; - } - else if (anchor === "bottom") { - dims.top = pos.top + lineHeight + this.$borderSize; - dims.bottom = dims.top + maxH; - } - var fitsX = dims.top >= 0 && dims.bottom <= screenHeight; - if (!forceShow && !fitsX) { - return false; - } - if (!fitsX) { - if (anchor === "top") { - renderer.$maxPixelHeight = spaceAbove; - } - else { - renderer.$maxPixelHeight = spaceBelow; - } - } - else { - renderer.$maxPixelHeight = null; - } - if (anchor === "top") { - el.style.top = ""; - el.style.bottom = (screenHeight + scrollBarSize - dims.bottom) + "px"; - popup.isTopdown = false; - } - else { - el.style.top = dims.top + "px"; - el.style.bottom = ""; - popup.isTopdown = true; - } - el.style.display = ""; - var left = pos.left; - if (left + el.offsetWidth > screenWidth) - left = screenWidth - el.offsetWidth; - el.style.left = left + "px"; - el.style.right = ""; - if (!popup.isOpen) { - popup.isOpen = true; - this._signal("show"); - lastMouseEvent = null; - } - popup.anchorPos = pos; - popup.anchor = anchor; - return true; - }; - popup.show = function (pos, lineHeight, topdownOnly) { - this.tryShow(pos, lineHeight, topdownOnly ? "bottom" : undefined, true); - }; - popup.goTo = function (where) { - var row = this.getRow(); - var max = this.session.getLength() - 1; - switch (where) { - case "up": - row = row <= 0 ? max : row - 1; - break; - case "down": - row = row >= max ? -1 : row + 1; - break; - case "start": - row = 0; - break; - case "end": - row = max; - break; - } - this.setRow(row); - }; - popup.getTextLeftOffset = function () { - return this.$borderSize + this.renderer.$padding + this.$imageSize; - }; - popup.$imageSize = 0; - popup.$borderSize = 1; - return popup; - } - return AcePopup; -}()); -dom.importCssString("\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #CAD6FA;\n z-index: 1;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #3a674e;\n}\n.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #abbffe;\n margin-top: -1px;\n background: rgba(233,233,253,0.4);\n position: absolute;\n z-index: 2;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid rgba(109, 150, 13, 0.8);\n background: rgba(58, 103, 78, 0.62);\n}\n.ace_completion-meta {\n opacity: 0.5;\n margin-left: 0.9em;\n}\n.ace_completion-message {\n margin-left: 0.9em;\n color: blue;\n}\n.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #2d69c7;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #93ca12;\n}\n.ace_editor.ace_autocomplete {\n width: 300px;\n z-index: 200000;\n border: 1px lightgray solid;\n position: fixed;\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n line-height: 1.4;\n background: #fefefe;\n color: #111;\n}\n.ace_dark.ace_editor.ace_autocomplete {\n border: 1px #484747 solid;\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\n line-height: 1.4;\n background: #25282c;\n color: #c1c1c1;\n}\n.ace_autocomplete .ace_text-layer {\n width: calc(100% - 8px);\n}\n.ace_autocomplete .ace_line {\n display: flex;\n align-items: center;\n}\n.ace_autocomplete .ace_line > * {\n min-width: 0;\n flex: 0 0 auto;\n}\n.ace_autocomplete .ace_line .ace_ {\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ace_autocomplete .ace_completion-spacer {\n flex: 1;\n}\n.ace_autocomplete.ace_loading:after {\n content: \"\";\n position: absolute;\n top: 0px;\n height: 2px;\n width: 8%;\n background: blue;\n z-index: 100;\n animation: ace_progress 3s infinite linear;\n animation-delay: 300ms;\n transform: translateX(-100%) scaleX(1);\n}\n@keyframes ace_progress {\n 0% { transform: translateX(-100%) scaleX(1) }\n 50% { transform: translateX(625%) scaleX(2) } \n 100% { transform: translateX(1500%) scaleX(3) } \n}\n@media (prefers-reduced-motion) {\n .ace_autocomplete.ace_loading:after {\n transform: translateX(625%) scaleX(2);\n animation: none;\n }\n}\n", "autocompletion.css?v=1760428868419", false); -exports.AcePopup = AcePopup; -exports.$singleLineEditor = $singleLineEditor; -exports.getAriaId = getAriaId; - -}); - -ace.define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"], function(require, exports, module){"use strict"; -var dom = require("./lib/dom"); -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var lang = require("./lib/lang"); -var Range = require("./range").Range; -var RangeList = require("./range_list").RangeList; -var HashHandler = require("./keyboard/hash_handler").HashHandler; -var Tokenizer = require("./tokenizer").Tokenizer; -var clipboard = require("./clipboard"); -var VARIABLES = { - CURRENT_WORD: function (editor) { - return editor.session.getTextRange(editor.session.getWordRange()); - }, - SELECTION: function (editor, name, indentation) { - var text = editor.session.getTextRange(); - if (indentation) - return text.replace(/\n\r?([ \t]*\S)/g, "\n" + indentation + "$1"); - return text; - }, - CURRENT_LINE: function (editor) { - return editor.session.getLine(editor.getCursorPosition().row); - }, - PREV_LINE: function (editor) { - return editor.session.getLine(editor.getCursorPosition().row - 1); - }, - LINE_INDEX: function (editor) { - return editor.getCursorPosition().row; - }, - LINE_NUMBER: function (editor) { - return editor.getCursorPosition().row + 1; - }, - SOFT_TABS: function (editor) { - return editor.session.getUseSoftTabs() ? "YES" : "NO"; - }, - TAB_SIZE: function (editor) { - return editor.session.getTabSize(); - }, - CLIPBOARD: function (editor) { - return clipboard.getText && clipboard.getText(); - }, - FILENAME: function (editor) { - return /[^/\\]*$/.exec(this.FILEPATH(editor))[0]; - }, - FILENAME_BASE: function (editor) { - return /[^/\\]*$/.exec(this.FILEPATH(editor))[0].replace(/\.[^.]*$/, ""); - }, - DIRECTORY: function (editor) { - return this.FILEPATH(editor).replace(/[^/\\]*$/, ""); - }, - FILEPATH: function (editor) { return "/not implemented.txt"; }, - WORKSPACE_NAME: function () { return "Unknown"; }, - FULLNAME: function () { return "Unknown"; }, - BLOCK_COMMENT_START: function (editor) { - var mode = editor.session.$mode || {}; - return mode.blockComment && mode.blockComment.start || ""; - }, - BLOCK_COMMENT_END: function (editor) { - var mode = editor.session.$mode || {}; - return mode.blockComment && mode.blockComment.end || ""; - }, - LINE_COMMENT: function (editor) { - var mode = editor.session.$mode || {}; - return mode.lineCommentStart || ""; - }, - CURRENT_YEAR: date.bind(null, { year: "numeric" }), - CURRENT_YEAR_SHORT: date.bind(null, { year: "2-digit" }), - CURRENT_MONTH: date.bind(null, { month: "numeric" }), - CURRENT_MONTH_NAME: date.bind(null, { month: "long" }), - CURRENT_MONTH_NAME_SHORT: date.bind(null, { month: "short" }), - CURRENT_DATE: date.bind(null, { day: "2-digit" }), - CURRENT_DAY_NAME: date.bind(null, { weekday: "long" }), - CURRENT_DAY_NAME_SHORT: date.bind(null, { weekday: "short" }), - CURRENT_HOUR: date.bind(null, { hour: "2-digit", hour12: false }), - CURRENT_MINUTE: date.bind(null, { minute: "2-digit" }), - CURRENT_SECOND: date.bind(null, { second: "2-digit" }) -}; -VARIABLES.SELECTED_TEXT = VARIABLES.SELECTION; -function date(dateFormat) { - var str = new Date().toLocaleString("en-us", dateFormat); - return str.length == 1 ? "0" + str : str; -} -var SnippetManager = /** @class */ (function () { - function SnippetManager() { - this.snippetMap = {}; - this.snippetNameMap = {}; - this.variables = VARIABLES; - } - SnippetManager.prototype.getTokenizer = function () { - return SnippetManager["$tokenizer"] || this.createTokenizer(); - }; - SnippetManager.prototype.createTokenizer = function () { - function TabstopToken(str) { - str = str.substr(1); - if (/^\d+$/.test(str)) - return [{ tabstopId: parseInt(str, 10) }]; - return [{ text: str }]; - } - function escape(ch) { - return "(?:[^\\\\" + ch + "]|\\\\.)"; - } - var formatMatcher = { - regex: "/(" + escape("/") + "+)/", - onMatch: function (val, state, stack) { - var ts = stack[0]; - ts.fmtString = true; - ts.guard = val.slice(1, -1); - ts.flag = ""; - return ""; - }, - next: "formatString" - }; - SnippetManager["$tokenizer"] = new Tokenizer({ - start: [ - { regex: /\\./, onMatch: function (val, state, stack) { - var ch = val[1]; - if (ch == "}" && stack.length) { - val = ch; - } - else if ("`$\\".indexOf(ch) != -1) { - val = ch; - } - return [val]; - } }, - { regex: /}/, onMatch: function (val, state, stack) { - return [stack.length ? stack.shift() : val]; - } }, - { regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken }, - { regex: /\$\{[\dA-Z_a-z]+/, onMatch: function (str, state, stack) { - var t = TabstopToken(str.substr(1)); - stack.unshift(t[0]); - return t; - }, next: "snippetVar" }, - { regex: /\n/, token: "newline", merge: false } - ], - snippetVar: [ - { regex: "\\|" + escape("\\|") + "*\\|", onMatch: function (val, state, stack) { - var choices = val.slice(1, -1).replace(/\\[,|\\]|,/g, function (operator) { - return operator.length == 2 ? operator[1] : "\x00"; - }).split("\x00").map(function (value) { - return { value: value }; - }); - stack[0].choices = choices; - return [choices[0]]; - }, next: "start" }, - formatMatcher, - { regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start" } - ], - formatString: [ - { regex: /:/, onMatch: function (val, state, stack) { - if (stack.length && stack[0].expectElse) { - stack[0].expectElse = false; - stack[0].ifEnd = { elseEnd: stack[0] }; - return [stack[0].ifEnd]; - } - return ":"; - } }, - { regex: /\\./, onMatch: function (val, state, stack) { - var ch = val[1]; - if (ch == "}" && stack.length) - val = ch; - else if ("`$\\".indexOf(ch) != -1) - val = ch; - else if (ch == "n") - val = "\n"; - else if (ch == "t") - val = "\t"; - else if ("ulULE".indexOf(ch) != -1) - val = { changeCase: ch, local: ch > "a" }; - return [val]; - } }, - { regex: "/\\w*}", onMatch: function (val, state, stack) { - var next = stack.shift(); - if (next) - next.flag = val.slice(1, -1); - this.next = next && next.tabstopId ? "start" : ""; - return [next || val]; - }, next: "start" }, - { regex: /\$(?:\d+|\w+)/, onMatch: function (val, state, stack) { - return [{ text: val.slice(1) }]; - } }, - { regex: /\${\w+/, onMatch: function (val, state, stack) { - var token = { text: val.slice(2) }; - stack.unshift(token); - return [token]; - }, next: "formatStringVar" }, - { regex: /\n/, token: "newline", merge: false }, - { regex: /}/, onMatch: function (val, state, stack) { - var next = stack.shift(); - this.next = next && next.tabstopId ? "start" : ""; - return [next || val]; - }, next: "start" } - ], - formatStringVar: [ - { regex: /:\/\w+}/, onMatch: function (val, state, stack) { - var ts = stack[0]; - ts.formatFunction = val.slice(2, -1); - return [stack.shift()]; - }, next: "formatString" }, - formatMatcher, - { regex: /:[\?\-+]?/, onMatch: function (val, state, stack) { - if (val[1] == "+") - stack[0].ifEnd = stack[0]; - if (val[1] == "?") - stack[0].expectElse = true; - }, next: "formatString" }, - { regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "formatString" } - ] - }); - return SnippetManager["$tokenizer"]; - }; - SnippetManager.prototype.tokenizeTmSnippet = function (str, startState) { - return this.getTokenizer().getLineTokens(str, startState).tokens.map(function (x) { - return x.value || x; - }); - }; - SnippetManager.prototype.getVariableValue = function (editor, name, indentation) { - if (/^\d+$/.test(name)) - return (this.variables.__ || {})[name] || ""; - if (/^[A-Z]\d+$/.test(name)) - return (this.variables[name[0] + "__"] || {})[name.substr(1)] || ""; - name = name.replace(/^TM_/, ""); - if (!this.variables.hasOwnProperty(name)) - return ""; - var value = this.variables[name]; - if (typeof value == "function") - value = this.variables[name](editor, name, indentation); - return value == null ? "" : value; - }; - SnippetManager.prototype.tmStrFormat = function (str, ch, editor) { - if (!ch.fmt) - return str; - var flag = ch.flag || ""; - var re = ch.guard; - re = new RegExp(re, flag.replace(/[^gim]/g, "")); - var fmtTokens = typeof ch.fmt == "string" ? this.tokenizeTmSnippet(ch.fmt, "formatString") : ch.fmt; - var _self = this; - var formatted = str.replace(re, function () { - var oldArgs = _self.variables.__; - _self.variables.__ = [].slice.call(arguments); - var fmtParts = _self.resolveVariables(fmtTokens, editor); - var gChangeCase = "E"; - for (var i = 0; i < fmtParts.length; i++) { - var ch = fmtParts[i]; - if (typeof ch == "object") { - fmtParts[i] = ""; - if (ch.changeCase && ch.local) { - var next = fmtParts[i + 1]; - if (next && typeof next == "string") { - if (ch.changeCase == "u") - fmtParts[i] = next[0].toUpperCase(); - else - fmtParts[i] = next[0].toLowerCase(); - fmtParts[i + 1] = next.substr(1); - } - } - else if (ch.changeCase) { - gChangeCase = ch.changeCase; - } - } - else if (gChangeCase == "U") { - fmtParts[i] = ch.toUpperCase(); - } - else if (gChangeCase == "L") { - fmtParts[i] = ch.toLowerCase(); - } - } - _self.variables.__ = oldArgs; - return fmtParts.join(""); - }); - return formatted; - }; - SnippetManager.prototype.tmFormatFunction = function (str, ch, editor) { - if (ch.formatFunction == "upcase") - return str.toUpperCase(); - if (ch.formatFunction == "downcase") - return str.toLowerCase(); - return str; - }; - SnippetManager.prototype.resolveVariables = function (snippet, editor) { - var result = []; - var indentation = ""; - var afterNewLine = true; - for (var i = 0; i < snippet.length; i++) { - var ch = snippet[i]; - if (typeof ch == "string") { - result.push(ch); - if (ch == "\n") { - afterNewLine = true; - indentation = ""; - } - else if (afterNewLine) { - indentation = /^\t*/.exec(ch)[0]; - afterNewLine = /\S/.test(ch); - } - continue; - } - if (!ch) - continue; - afterNewLine = false; - if (ch.fmtString) { - var j = snippet.indexOf(ch, i + 1); - if (j == -1) - j = snippet.length; - ch.fmt = snippet.slice(i + 1, j); - i = j; - } - if (ch.text) { - var value = this.getVariableValue(editor, ch.text, indentation) + ""; - if (ch.fmtString) - value = this.tmStrFormat(value, ch, editor); - if (ch.formatFunction) - value = this.tmFormatFunction(value, ch, editor); - if (value && !ch.ifEnd) { - result.push(value); - gotoNext(ch); - } - else if (!value && ch.ifEnd) { - gotoNext(ch.ifEnd); - } - } - else if (ch.elseEnd) { - gotoNext(ch.elseEnd); - } - else if (ch.tabstopId != null) { - result.push(ch); - } - else if (ch.changeCase != null) { - result.push(ch); - } - } - function gotoNext(ch) { - var i1 = snippet.indexOf(ch, i + 1); - if (i1 != -1) - i = i1; - } - return result; - }; - SnippetManager.prototype.getDisplayTextForSnippet = function (editor, snippetText) { - var processedSnippet = processSnippetText.call(this, editor, snippetText); - return processedSnippet.text; - }; - SnippetManager.prototype.insertSnippetForSelection = function (editor, snippetText, options) { - if (options === void 0) { options = {}; } - var processedSnippet = processSnippetText.call(this, editor, snippetText, options); - var range = editor.getSelectionRange(); - var end = editor.session.replace(range, processedSnippet.text); - var tabstopManager = new TabstopManager(editor); - var selectionId = editor.inVirtualSelectionMode && editor.selection.index; - tabstopManager.addTabstops(processedSnippet.tabstops, range.start, end, selectionId); - }; - SnippetManager.prototype.insertSnippet = function (editor, snippetText, options) { - if (options === void 0) { options = {}; } - var self = this; - if (editor.inVirtualSelectionMode) - return self.insertSnippetForSelection(editor, snippetText, options); - editor.forEachSelection(function () { - self.insertSnippetForSelection(editor, snippetText, options); - }, null, { keepOrder: true }); - if (editor.tabstopManager) - editor.tabstopManager.tabNext(); - }; - SnippetManager.prototype.$getScope = function (editor) { - var scope = editor.session.$mode.$id || ""; - scope = scope.split("/").pop(); - if (scope === "html" || scope === "php") { - if (scope === "php" && !editor.session.$mode.inlinePhp) - scope = "html"; - var c = editor.getCursorPosition(); - var state = editor.session.getState(c.row); - if (typeof state === "object") { - state = state[0]; - } - if (state.substring) { - if (state.substring(0, 3) == "js-") - scope = "javascript"; - else if (state.substring(0, 4) == "css-") - scope = "css"; - else if (state.substring(0, 4) == "php-") - scope = "php"; - } - } - return scope; - }; - SnippetManager.prototype.getActiveScopes = function (editor) { - var scope = this.$getScope(editor); - var scopes = [scope]; - var snippetMap = this.snippetMap; - if (snippetMap[scope] && snippetMap[scope].includeScopes) { - scopes.push.apply(scopes, snippetMap[scope].includeScopes); - } - scopes.push("_"); - return scopes; - }; - SnippetManager.prototype.expandWithTab = function (editor, options) { - var self = this; - var result = editor.forEachSelection(function () { - return self.expandSnippetForSelection(editor, options); - }, null, { keepOrder: true }); - if (result && editor.tabstopManager) - editor.tabstopManager.tabNext(); - return result; - }; - SnippetManager.prototype.expandSnippetForSelection = function (editor, options) { - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var before = line.substring(0, cursor.column); - var after = line.substr(cursor.column); - var snippetMap = this.snippetMap; - var snippet; - this.getActiveScopes(editor).some(function (scope) { - var snippets = snippetMap[scope]; - if (snippets) - snippet = this.findMatchingSnippet(snippets, before, after); - return !!snippet; - }, this); - if (!snippet) - return false; - if (options && options.dryRun) - return true; - editor.session.doc.removeInLine(cursor.row, cursor.column - snippet.replaceBefore.length, cursor.column + snippet.replaceAfter.length); - this.variables.M__ = snippet.matchBefore; - this.variables.T__ = snippet.matchAfter; - this.insertSnippetForSelection(editor, snippet.content); - this.variables.M__ = this.variables.T__ = null; - return true; - }; - SnippetManager.prototype.findMatchingSnippet = function (snippetList, before, after) { - for (var i = snippetList.length; i--;) { - var s = snippetList[i]; - if (s.startRe && !s.startRe.test(before)) - continue; - if (s.endRe && !s.endRe.test(after)) - continue; - if (!s.startRe && !s.endRe) - continue; - s.matchBefore = s.startRe ? s.startRe.exec(before) : [""]; - s.matchAfter = s.endRe ? s.endRe.exec(after) : [""]; - s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : ""; - s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : ""; - return s; - } - }; - SnippetManager.prototype.register = function (snippets, scope) { - var snippetMap = this.snippetMap; - var snippetNameMap = this.snippetNameMap; - var self = this; - if (!snippets) - snippets = []; - function wrapRegexp(src) { - if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src)) - src = "(?:" + src + ")"; - return src || ""; - } - function guardedRegexp(re, guard, opening) { - re = wrapRegexp(re); - guard = wrapRegexp(guard); - if (opening) { - re = guard + re; - if (re && re[re.length - 1] != "$") - re = re + "$"; - } - else { - re = re + guard; - if (re && re[0] != "^") - re = "^" + re; - } - return new RegExp(re); - } - function addSnippet(s) { - if (!s.scope) - s.scope = scope || "_"; - scope = s.scope; - if (!snippetMap[scope]) { - snippetMap[scope] = []; - snippetNameMap[scope] = {}; - } - var map = snippetNameMap[scope]; - if (s.name) { - var old = map[s.name]; - if (old) - self.unregister(old); - map[s.name] = s; - } - snippetMap[scope].push(s); - if (s.prefix) - s.tabTrigger = s.prefix; - if (!s.content && s.body) - s.content = Array.isArray(s.body) ? s.body.join("\n") : s.body; - if (s.tabTrigger && !s.trigger) { - if (!s.guard && /^\w/.test(s.tabTrigger)) - s.guard = "\\b"; - s.trigger = lang.escapeRegExp(s.tabTrigger); - } - if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard) - return; - s.startRe = guardedRegexp(s.trigger, s.guard, true); - s.triggerRe = new RegExp(s.trigger); - s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true); - s.endTriggerRe = new RegExp(s.endTrigger); - } - if (Array.isArray(snippets)) { - snippets.forEach(addSnippet); - } - else { - Object.keys(snippets).forEach(function (key) { - addSnippet(snippets[key]); - }); - } - this._signal("registerSnippets", { scope: scope }); - }; - SnippetManager.prototype.unregister = function (snippets, scope) { - var snippetMap = this.snippetMap; - var snippetNameMap = this.snippetNameMap; - function removeSnippet(s) { - var nameMap = snippetNameMap[s.scope || scope]; - if (nameMap && nameMap[s.name]) { - delete nameMap[s.name]; - var map = snippetMap[s.scope || scope]; - var i = map && map.indexOf(s); - if (i >= 0) - map.splice(i, 1); - } - } - if (snippets.content) - removeSnippet(snippets); - else if (Array.isArray(snippets)) - snippets.forEach(removeSnippet); - }; - SnippetManager.prototype.parseSnippetFile = function (str) { - str = str.replace(/\r/g, ""); - var list = [], /**@type{Snippet}*/ snippet = {}; - var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm; - var m; - while (m = re.exec(str)) { - if (m[1]) { - try { - snippet = JSON.parse(m[1]); - list.push(snippet); - } - catch (e) { } - } - if (m[4]) { - snippet.content = m[4].replace(/^\t/gm, ""); - list.push(snippet); - snippet = {}; - } - else { - var key = m[2], val = m[3]; - if (key == "regex") { - var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g; - snippet.guard = guardRe.exec(val)[1]; - snippet.trigger = guardRe.exec(val)[1]; - snippet.endTrigger = guardRe.exec(val)[1]; - snippet.endGuard = guardRe.exec(val)[1]; - } - else if (key == "snippet") { - snippet.tabTrigger = val.match(/^\S*/)[0]; - if (!snippet.name) - snippet.name = val; - } - else if (key) { - snippet[key] = val; - } - } - } - return list; - }; - SnippetManager.prototype.getSnippetByName = function (name, editor) { - var snippetMap = this.snippetNameMap; - var snippet; - this.getActiveScopes(editor).some(function (scope) { - var snippets = snippetMap[scope]; - if (snippets) - snippet = snippets[name]; - return !!snippet; - }, this); - return snippet; - }; - return SnippetManager; -}()); -oop.implement(SnippetManager.prototype, EventEmitter); -var processSnippetText = function (editor, snippetText, options) { - if (options === void 0) { options = {}; } - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var tabString = editor.session.getTabString(); - var indentString = line.match(/^\s*/)[0]; - if (cursor.column < indentString.length) - indentString = indentString.slice(0, cursor.column); - snippetText = snippetText.replace(/\r/g, ""); - var tokens = this.tokenizeTmSnippet(snippetText); - tokens = this.resolveVariables(tokens, editor); - tokens = tokens.map(function (x) { - if (x == "\n" && !options.excludeExtraIndent) - return x + indentString; - if (typeof x == "string") - return x.replace(/\t/g, tabString); - return x; - }); - var tabstops = []; - tokens.forEach(function (p, i) { - if (typeof p != "object") - return; - var id = p.tabstopId; - var ts = tabstops[id]; - if (!ts) { - ts = tabstops[id] = []; - ts.index = id; - ts.value = ""; - ts.parents = {}; - } - if (ts.indexOf(p) !== -1) - return; - if (p.choices && !ts.choices) - ts.choices = p.choices; - ts.push(p); - var i1 = tokens.indexOf(p, i + 1); - if (i1 === -1) - return; - var value = tokens.slice(i + 1, i1); - var isNested = value.some(function (t) { return typeof t === "object"; }); - if (isNested && !ts.value) { - ts.value = value; - } - else if (value.length && (!ts.value || typeof ts.value !== "string")) { - ts.value = value.join(""); - } - }); - tabstops.forEach(function (ts) { ts.length = 0; }); - var expanding = {}; - function copyValue(val) { - var copy = []; - for (var i = 0; i < val.length; i++) { - var p = val[i]; - if (typeof p == "object") { - if (expanding[p.tabstopId]) - continue; - var j = val.lastIndexOf(p, i - 1); - p = copy[j] || { tabstopId: p.tabstopId }; - } - copy[i] = p; - } - return copy; - } - for (var i = 0; i < tokens.length; i++) { - var p = tokens[i]; - if (typeof p != "object") - continue; - var id = p.tabstopId; - var ts = tabstops[id]; - var i1 = tokens.indexOf(p, i + 1); - if (expanding[id]) { - if (expanding[id] === p) { - delete expanding[id]; - Object.keys(expanding).forEach(function (parentId) { - ts.parents[parentId] = true; - }); - } - continue; - } - expanding[id] = p; - var value = ts.value; - if (typeof value !== "string") - value = copyValue(value); - else if (p.fmt) - value = this.tmStrFormat(value, p, editor); - tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p)); - if (ts.indexOf(p) === -1) - ts.push(p); - } - var row = 0, column = 0; - var text = ""; - tokens.forEach(function (t) { - if (typeof t === "string") { - var lines = t.split("\n"); - if (lines.length > 1) { - column = lines[lines.length - 1].length; - row += lines.length - 1; - } - else - column += t.length; - text += t; - } - else if (t) { - if (!t.start) - t.start = { row: row, column: column }; - else - t.end = { row: row, column: column }; - } - }); - return { - text: text, - tabstops: tabstops, - tokens: tokens - }; -}; -var TabstopManager = /** @class */ (function () { - function TabstopManager(editor) { - this.index = 0; - this.ranges = []; - this.tabstops = []; - if (editor.tabstopManager) - return editor.tabstopManager; - editor.tabstopManager = this; - this.$onChange = this.onChange.bind(this); - this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; - this.$onChangeSession = this.onChangeSession.bind(this); - this.$onAfterExec = this.onAfterExec.bind(this); - this.attach(editor); - } - TabstopManager.prototype.attach = function (editor) { - this.$openTabstops = null; - this.selectedTabstop = null; - this.editor = editor; - this.session = editor.session; - this.editor.on("change", this.$onChange); - this.editor.on("changeSelection", this.$onChangeSelection); - this.editor.on("changeSession", this.$onChangeSession); - this.editor.commands.on("afterExec", this.$onAfterExec); - this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - }; - TabstopManager.prototype.detach = function () { - this.tabstops.forEach(this.removeTabstopMarkers, this); - this.ranges.length = 0; - this.tabstops.length = 0; - this.selectedTabstop = null; - this.editor.off("change", this.$onChange); - this.editor.off("changeSelection", this.$onChangeSelection); - this.editor.off("changeSession", this.$onChangeSession); - this.editor.commands.off("afterExec", this.$onAfterExec); - this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); - this.editor.tabstopManager = null; - this.session = null; - this.editor = null; - }; - TabstopManager.prototype.onChange = function (delta) { - var isRemove = delta.action[0] == "r"; - var selectedTabstop = this.selectedTabstop || {}; - var parents = selectedTabstop.parents || {}; - var tabstops = this.tabstops.slice(); - for (var i = 0; i < tabstops.length; i++) { - var ts = tabstops[i]; - var active = ts == selectedTabstop || parents[ts.index]; - ts.rangeList.$bias = active ? 0 : 1; - if (delta.action == "remove" && ts !== selectedTabstop) { - var parentActive = ts.parents && ts.parents[selectedTabstop.index]; - var startIndex = ts.rangeList.pointIndex(delta.start, parentActive); - startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1; - var endIndex = ts.rangeList.pointIndex(delta.end, parentActive); - endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1; - var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex); - for (var j = 0; j < toRemove.length; j++) - this.removeRange(toRemove[j]); - } - ts.rangeList.$onChange(delta); - } - var session = this.session; - if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue()) - this.detach(); - }; - TabstopManager.prototype.updateLinkedFields = function () { - var ts = this.selectedTabstop; - if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked) - return; - this.$inChange = true; - var session = this.session; - var text = session.getTextRange(ts.firstNonLinked); - for (var i = 0; i < ts.length; i++) { - var range = ts[i]; - if (!range.linked) - continue; - var original = range.original; - var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor); - session.replace(range, fmt); - } - this.$inChange = false; - }; - TabstopManager.prototype.onAfterExec = function (e) { - if (e.command && !e.command.readOnly) - this.updateLinkedFields(); - }; - TabstopManager.prototype.onChangeSelection = function () { - if (!this.editor) - return; - var lead = this.editor.selection.lead; - var anchor = this.editor.selection.anchor; - var isEmpty = this.editor.selection.isEmpty(); - for (var i = 0; i < this.ranges.length; i++) { - if (this.ranges[i].linked) - continue; - var containsLead = this.ranges[i].contains(lead.row, lead.column); - var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column); - if (containsLead && containsAnchor) - return; - } - this.detach(); - }; - TabstopManager.prototype.onChangeSession = function () { - this.detach(); - }; - TabstopManager.prototype.tabNext = function (dir) { - var max = this.tabstops.length; - var index = this.index + (dir || 1); - index = Math.min(Math.max(index, 1), max); - if (index == max) - index = 0; - this.selectTabstop(index); - this.updateTabstopMarkers(); - if (index === 0) { - this.detach(); - } - }; - TabstopManager.prototype.selectTabstop = function (index) { - this.$openTabstops = null; - var ts = this.tabstops[this.index]; - if (ts) - this.addTabstopMarkers(ts); - this.index = index; - ts = this.tabstops[this.index]; - if (!ts || !ts.length) - return; - this.selectedTabstop = ts; - var range = ts.firstNonLinked || ts; - if (ts.choices) - range.cursor = range.start; - if (!this.editor.inVirtualSelectionMode) { - var sel = this.editor.multiSelect; - sel.toSingleRange(range); - for (var i = 0; i < ts.length; i++) { - if (ts.hasLinkedRanges && ts[i].linked) - continue; - sel.addRange(ts[i].clone(), true); - } - } - else { - this.editor.selection.fromOrientedRange(range); - } - this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - if (this.selectedTabstop && this.selectedTabstop.choices) - this.editor.execCommand("startAutocomplete", { matches: this.selectedTabstop.choices }); - }; - TabstopManager.prototype.addTabstops = function (tabstops, start, end) { - var useLink = this.useLink || !this.editor.getOption("enableMultiselect"); - if (!this.$openTabstops) - this.$openTabstops = []; - if (!tabstops[0]) { - var p = Range.fromPoints(end, end); - moveRelative(p.start, start); - moveRelative(p.end, start); - tabstops[0] = [p]; - tabstops[0].index = 0; - } - var i = this.index; - var arg = [i + 1, 0]; - var ranges = this.ranges; - var snippetId = this.snippetId = (this.snippetId || 0) + 1; - tabstops.forEach(function (ts, index) { - var dest = this.$openTabstops[index] || ts; - dest.snippetId = snippetId; - for (var i = 0; i < ts.length; i++) { - var p = ts[i]; - var range = Range.fromPoints(p.start, p.end || p.start); - movePoint(range.start, start); - movePoint(range.end, start); - range.original = p; - range.tabstop = dest; - ranges.push(range); - if (dest != ts) - dest.unshift(range); - else - dest[i] = range; - if (p.fmtString || (dest.firstNonLinked && useLink)) { - range.linked = true; - dest.hasLinkedRanges = true; - } - else if (!dest.firstNonLinked) - dest.firstNonLinked = range; - } - if (!dest.firstNonLinked) - dest.hasLinkedRanges = false; - if (dest === ts) { - arg.push(dest); - this.$openTabstops[index] = dest; - } - this.addTabstopMarkers(dest); - dest.rangeList = dest.rangeList || new RangeList(); - dest.rangeList.$bias = 0; - dest.rangeList.addList(dest); - }, this); - if (arg.length > 2) { - if (this.tabstops.length) - arg.push(arg.splice(2, 1)[0]); - this.tabstops.splice.apply(this.tabstops, arg); - } - }; - TabstopManager.prototype.addTabstopMarkers = function (ts) { - var session = this.session; - ts.forEach(function (range) { - if (!range.markerId) - range.markerId = session.addMarker(range, "ace_snippet-marker", "text"); - }); - }; - TabstopManager.prototype.removeTabstopMarkers = function (ts) { - var session = this.session; - ts.forEach(function (range) { - session.removeMarker(range.markerId); - range.markerId = null; - }); - }; - TabstopManager.prototype.updateTabstopMarkers = function () { - if (!this.selectedTabstop) - return; - var currentSnippetId = this.selectedTabstop.snippetId; - if (this.selectedTabstop.index === 0) { - currentSnippetId--; - } - this.tabstops.forEach(function (ts) { - if (ts.snippetId === currentSnippetId) - this.addTabstopMarkers(ts); - else - this.removeTabstopMarkers(ts); - }, this); - }; - TabstopManager.prototype.removeRange = function (range) { - var i = range.tabstop.indexOf(range); - if (i != -1) - range.tabstop.splice(i, 1); - i = this.ranges.indexOf(range); - if (i != -1) - this.ranges.splice(i, 1); - i = range.tabstop.rangeList.ranges.indexOf(range); - if (i != -1) - range.tabstop.splice(i, 1); - this.session.removeMarker(range.markerId); - if (!range.tabstop.length) { - i = this.tabstops.indexOf(range.tabstop); - if (i != -1) - this.tabstops.splice(i, 1); - if (!this.tabstops.length) - this.detach(); - } - }; - return TabstopManager; -}()); -TabstopManager.prototype.keyboardHandler = new HashHandler(); -TabstopManager.prototype.keyboardHandler.bindKeys({ - "Tab": function (editor) { - if (exports.snippetManager && exports.snippetManager.expandWithTab(editor)) - return; - editor.tabstopManager.tabNext(1); - editor.renderer.scrollCursorIntoView(); - }, - "Shift-Tab": function (editor) { - editor.tabstopManager.tabNext(-1); - editor.renderer.scrollCursorIntoView(); - }, - "Esc": function (editor) { - editor.tabstopManager.detach(); - } -}); -var movePoint = function (point, diff) { - if (point.row == 0) - point.column += diff.column; - point.row += diff.row; -}; -var moveRelative = function (point, start) { - if (point.row == start.row) - point.column -= start.column; - point.row -= start.row; -}; -dom.importCssString("\n.ace_snippet-marker {\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n background: rgba(194, 193, 208, 0.09);\n border: 1px dotted rgba(211, 208, 235, 0.62);\n position: absolute;\n}", "snippets.css?v=1760428868419", false); -exports.snippetManager = new SnippetManager(); -var Editor = require("./editor").Editor; -(function () { - this.insertSnippet = function (content, options) { - return exports.snippetManager.insertSnippet(this, content, options); - }; - this.expandSnippet = function (options) { - return exports.snippetManager.expandWithTab(this, options); - }; -}).call(Editor.prototype); - -}); - -ace.define("ace/autocomplete/inline_screenreader",["require","exports","module"], function(require, exports, module){"use strict"; -var AceInlineScreenReader = /** @class */ (function () { - function AceInlineScreenReader(editor) { - this.editor = editor; - this.screenReaderDiv = document.createElement("div"); - this.screenReaderDiv.classList.add("ace_screenreader-only"); - this.editor.container.appendChild(this.screenReaderDiv); - } - AceInlineScreenReader.prototype.setScreenReaderContent = function (content) { - if (!this.popup && this.editor.completer && /**@type{import("../autocomplete").Autocomplete}*/ (this.editor.completer).popup) { - this.popup = /**@type{import("../autocomplete").Autocomplete}*/ (this.editor.completer).popup; - this.popup.renderer.on("afterRender", function () { - var row = this.popup.getRow(); - var t = this.popup.renderer.$textLayer; - var selected = t.element.childNodes[row - t.config.firstRow]; - if (selected) { - var idString = "doc-tooltip "; - for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) { - idString += "ace-inline-screenreader-line-".concat(lineIndex, " "); - } - selected.setAttribute("aria-describedby", idString); - } - }.bind(this)); - } - while (this.screenReaderDiv.firstChild) { - this.screenReaderDiv.removeChild(this.screenReaderDiv.firstChild); - } - this._lines = content.split(/\r\n|\r|\n/); - var codeElement = this.createCodeBlock(); - this.screenReaderDiv.appendChild(codeElement); - }; - AceInlineScreenReader.prototype.destroy = function () { - this.screenReaderDiv.remove(); - }; - AceInlineScreenReader.prototype.createCodeBlock = function () { - var container = document.createElement("pre"); - container.setAttribute("id", "ace-inline-screenreader"); - for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) { - var codeElement = document.createElement("code"); - codeElement.setAttribute("id", "ace-inline-screenreader-line-".concat(lineIndex)); - var line = document.createTextNode(this._lines[lineIndex]); - codeElement.appendChild(line); - container.appendChild(codeElement); - } - return container; - }; - return AceInlineScreenReader; -}()); -exports.AceInlineScreenReader = AceInlineScreenReader; - -}); - -ace.define("ace/autocomplete/inline",["require","exports","module","ace/snippets","ace/autocomplete/inline_screenreader"], function(require, exports, module){"use strict"; -var snippetManager = require("../snippets").snippetManager; -var AceInlineScreenReader = require("./inline_screenreader").AceInlineScreenReader; -var AceInline = /** @class */ (function () { - function AceInline() { - this.editor = null; - } - AceInline.prototype.show = function (editor, completion, prefix) { - prefix = prefix || ""; - if (editor && this.editor && this.editor !== editor) { - this.hide(); - this.editor = null; - this.inlineScreenReader = null; - } - if (!editor || !completion) { - return false; - } - if (!this.inlineScreenReader) { - this.inlineScreenReader = new AceInlineScreenReader(editor); - } - var displayText = completion.snippet ? snippetManager.getDisplayTextForSnippet(editor, completion.snippet) : completion.value; - if (completion.hideInlinePreview || !displayText || !displayText.startsWith(prefix)) { - return false; - } - this.editor = editor; - this.inlineScreenReader.setScreenReaderContent(displayText); - displayText = displayText.slice(prefix.length); - if (displayText === "") { - editor.removeGhostText(); - } - else { - editor.setGhostText(displayText); - } - return true; - }; - AceInline.prototype.isOpen = function () { - if (!this.editor) { - return false; - } - return !!this.editor.renderer.$ghostText; - }; - AceInline.prototype.hide = function () { - if (!this.editor) { - return false; - } - this.editor.removeGhostText(); - return true; - }; - AceInline.prototype.destroy = function () { - this.hide(); - this.editor = null; - if (this.inlineScreenReader) { - this.inlineScreenReader.destroy(); - this.inlineScreenReader = null; - } - }; - return AceInline; -}()); -exports.AceInline = AceInline; - -}); - -ace.define("ace/autocomplete/util",["require","exports","module"], function(require, exports, module){"use strict"; -exports.parForEach = function (array, fn, callback) { - var completed = 0; - var arLength = array.length; - if (arLength === 0) - callback(); - for (var i = 0; i < arLength; i++) { - fn(array[i], function (result, err) { - completed++; - if (completed === arLength) - callback(result, err); - }); - } -}; -var ID_REGEX = /[a-zA-Z_0-9\$\-\u00A2-\u2000\u2070-\uFFFF]/; -exports.retrievePrecedingIdentifier = function (text, pos, regex) { - regex = regex || ID_REGEX; - var buf = []; - for (var i = pos - 1; i >= 0; i--) { - if (regex.test(text[i])) - buf.push(text[i]); - else - break; - } - return buf.reverse().join(""); -}; -exports.retrieveFollowingIdentifier = function (text, pos, regex) { - regex = regex || ID_REGEX; - var buf = []; - for (var i = pos; i < text.length; i++) { - if (regex.test(text[i])) - buf.push(text[i]); - else - break; - } - return buf; -}; -exports.getCompletionPrefix = function (editor) { - var pos = editor.getCursorPosition(); - var line = editor.session.getLine(pos.row); - var prefix; - editor.completers.forEach(function (completer) { - if (completer.identifierRegexps) { - completer.identifierRegexps.forEach(function (identifierRegex) { - if (!prefix && identifierRegex) - prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex); - }.bind(this)); - } - }.bind(this)); - return prefix || this.retrievePrecedingIdentifier(line, pos.column); -}; -exports.triggerAutocomplete = function (editor, previousChar) { - var previousChar = previousChar == null - ? editor.session.getPrecedingCharacter() - : previousChar; - return editor.completers.some(function (completer) { - if (completer.triggerCharacters && Array.isArray(completer.triggerCharacters)) { - return completer.triggerCharacters.includes(previousChar); - } - }); -}; - -}); - -ace.define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/inline","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/lang","ace/lib/dom","ace/snippets","ace/config","ace/lib/event","ace/lib/scroll"], function(require, exports, module){"use strict"; -var HashHandler = require("./keyboard/hash_handler").HashHandler; -var AcePopup = require("./autocomplete/popup").AcePopup; -var AceInline = require("./autocomplete/inline").AceInline; -var getAriaId = require("./autocomplete/popup").getAriaId; -var util = require("./autocomplete/util"); -var lang = require("./lib/lang"); -var dom = require("./lib/dom"); -var snippetManager = require("./snippets").snippetManager; -var config = require("./config"); -var event = require("./lib/event"); -var preventParentScroll = require("./lib/scroll").preventParentScroll; -var destroyCompleter = function (e, editor) { - editor.completer && editor.completer.destroy(); -}; -var Autocomplete = /** @class */ (function () { - function Autocomplete() { - this.autoInsert = false; - this.autoSelect = true; - this.autoShown = false; - this.exactMatch = false; - this.inlineEnabled = false; - this.keyboardHandler = new HashHandler(); - this.keyboardHandler.bindKeys(this.commands); - this.parentNode = null; - this.setSelectOnHover = false; - this.hasSeen = new Set(); - this.showLoadingState = false; - this.stickySelectionDelay = 500; - this.blurListener = this.blurListener.bind(this); - this.changeListener = this.changeListener.bind(this); - this.mousedownListener = this.mousedownListener.bind(this); - this.mousewheelListener = this.mousewheelListener.bind(this); - this.onLayoutChange = this.onLayoutChange.bind(this); - this.changeTimer = lang.delayedCall(function () { - this.updateCompletions(true); - }.bind(this)); - this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50); - this.popupTimer = lang.delayedCall(this.$updatePopupPosition.bind(this), 50); - this.stickySelectionTimer = lang.delayedCall(function () { - this.stickySelection = true; - }.bind(this), this.stickySelectionDelay); - this.$firstOpenTimer = lang.delayedCall(/**@this{Autocomplete}*/ function () { - var initialPosition = this.completionProvider && this.completionProvider.initialPosition; - if (this.autoShown || (this.popup && this.popup.isOpen) || !initialPosition || this.editor.completers.length === 0) - return; - this.completions = new FilteredList(Autocomplete.completionsForLoading); - this.openPopup(this.editor, initialPosition.prefix, false); - this.popup.renderer.setStyle("ace_loading", true); - }.bind(this), this.stickySelectionDelay); - } - Object.defineProperty(Autocomplete, "completionsForLoading", { - get: function () { - return [{ - caption: config.nls("autocomplete.loading", "Loading..."), - value: "" - }]; - }, - enumerable: false, - configurable: true - }); - Autocomplete.prototype.$init = function () { - this.popup = new AcePopup(this.parentNode || document.body || document.documentElement); - this.popup.on("click", function (e) { - this.insertMatch(); - e.stop(); - }.bind(this)); - this.popup.focus = this.editor.focus.bind(this.editor); - this.popup.on("show", this.$onPopupShow.bind(this)); - this.popup.on("hide", this.$onHidePopup.bind(this)); - this.popup.on("select", this.$onPopupChange.bind(this)); - event.addListener(this.popup.container, "mouseout", this.mouseOutListener.bind(this)); - this.popup.on("changeHoverMarker", this.tooltipTimer.bind(null, null)); - this.popup.renderer.on("afterRender", this.$onPopupRender.bind(this)); - return this.popup; - }; - Autocomplete.prototype.$initInline = function () { - if (!this.inlineEnabled || this.inlineRenderer) - return; - this.inlineRenderer = new AceInline(); - return this.inlineRenderer; - }; - Autocomplete.prototype.getPopup = function () { - return this.popup || this.$init(); - }; - Autocomplete.prototype.$onHidePopup = function () { - if (this.inlineRenderer) { - this.inlineRenderer.hide(); - } - this.hideDocTooltip(); - this.stickySelectionTimer.cancel(); - this.popupTimer.cancel(); - this.stickySelection = false; - }; - Autocomplete.prototype.$seen = function (completion) { - if (!this.hasSeen.has(completion) && completion && completion.completer && completion.completer.onSeen && typeof completion.completer.onSeen === "function") { - completion.completer.onSeen(this.editor, completion); - this.hasSeen.add(completion); - } - }; - Autocomplete.prototype.$onPopupChange = function (hide) { - if (this.inlineRenderer && this.inlineEnabled) { - var completion = hide ? null : this.popup.getData(this.popup.getRow()); - this.$updateGhostText(completion); - if (this.popup.isMouseOver && this.setSelectOnHover) { - this.tooltipTimer.call(null, null); - return; - } - this.popupTimer.schedule(); - this.tooltipTimer.schedule(); - } - else { - this.popupTimer.call(null, null); - this.tooltipTimer.call(null, null); - } - }; - Autocomplete.prototype.$updateGhostText = function (completion) { - var row = this.base.row; - var column = this.base.column; - var cursorColumn = this.editor.getCursorPosition().column; - var prefix = this.editor.session.getLine(row).slice(column, cursorColumn); - if (!this.inlineRenderer.show(this.editor, completion, prefix)) { - this.inlineRenderer.hide(); - } - else { - this.$seen(completion); - } - }; - Autocomplete.prototype.$onPopupRender = function () { - var inlineEnabled = this.inlineRenderer && this.inlineEnabled; - if (this.completions && this.completions.filtered && this.completions.filtered.length > 0) { - for (var i = this.popup.getFirstVisibleRow(); i <= this.popup.getLastVisibleRow(); i++) { - var completion = this.popup.getData(i); - if (completion && (!inlineEnabled || completion.hideInlinePreview)) { - this.$seen(completion); - } - } - } - }; - Autocomplete.prototype.$onPopupShow = function (hide) { - this.$onPopupChange(hide); - this.stickySelection = false; - if (this.stickySelectionDelay >= 0) - this.stickySelectionTimer.schedule(this.stickySelectionDelay); - }; - Autocomplete.prototype.observeLayoutChanges = function () { - if (this.$elements || !this.editor) - return; - window.addEventListener("resize", this.onLayoutChange, { passive: true }); - window.addEventListener("wheel", this.mousewheelListener); - var el = this.editor.container.parentNode; - var elements = []; - while (el) { - elements.push(el); - el.addEventListener("scroll", this.onLayoutChange, { passive: true }); - el = el.parentNode; - } - this.$elements = elements; - }; - Autocomplete.prototype.unObserveLayoutChanges = function () { - var _this = this; - window.removeEventListener("resize", this.onLayoutChange, { passive: true }); - window.removeEventListener("wheel", this.mousewheelListener); - this.$elements && this.$elements.forEach(function (el) { - el.removeEventListener("scroll", _this.onLayoutChange, { passive: true }); - }); - this.$elements = null; - }; - Autocomplete.prototype.onLayoutChange = function () { - if (!this.popup.isOpen) - return this.unObserveLayoutChanges(); - this.$updatePopupPosition(); - this.updateDocTooltip(); - }; - Autocomplete.prototype.$updatePopupPosition = function () { - var editor = this.editor; - var renderer = editor.renderer; - var lineHeight = renderer.layerConfig.lineHeight; - var pos = renderer.$cursorLayer.getPixelPosition(this.base, true); - pos.left -= this.popup.getTextLeftOffset(); - var rect = editor.container.getBoundingClientRect(); - pos.top += rect.top - renderer.layerConfig.offset; - pos.left += rect.left - editor.renderer.scrollLeft; - pos.left += renderer.gutterWidth; - var posGhostText = { - top: pos.top, - left: pos.left - }; - if (renderer.$ghostText && renderer.$ghostTextWidget) { - if (this.base.row === renderer.$ghostText.position.row) { - posGhostText.top += renderer.$ghostTextWidget.el.offsetHeight; - } - } - var editorContainerBottom = editor.container.getBoundingClientRect().bottom - lineHeight; - var lowestPosition = editorContainerBottom < posGhostText.top ? - { top: editorContainerBottom, left: posGhostText.left } : - posGhostText; - if (this.popup.tryShow(lowestPosition, lineHeight, "bottom")) { - return; - } - if (this.popup.tryShow(pos, lineHeight, "top")) { - return; - } - this.popup.show(pos, lineHeight); - }; - Autocomplete.prototype.openPopup = function (editor, prefix, keepPopupPosition) { - this.$firstOpenTimer.cancel(); - if (!this.popup) - this.$init(); - if (this.inlineEnabled && !this.inlineRenderer) - this.$initInline(); - this.popup.autoSelect = this.autoSelect; - this.popup.setSelectOnHover(this.setSelectOnHover); - var oldRow = this.popup.getRow(); - var previousSelectedItem = this.popup.data[oldRow]; - this.popup.setData(this.completions.filtered, this.completions.filterText); - if (this.editor.textInput.setAriaOptions) { - this.editor.textInput.setAriaOptions({ - activeDescendant: getAriaId(this.popup.getRow()), - inline: this.inlineEnabled - }); - } - editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - var newRow; - if (this.stickySelection) - newRow = this.popup.data.indexOf(previousSelectedItem); - if (!newRow || newRow === -1) - newRow = 0; - this.popup.setRow(this.autoSelect ? newRow : -1); - if (newRow === oldRow && previousSelectedItem !== this.completions.filtered[newRow]) - this.$onPopupChange(); - var inlineEnabled = this.inlineRenderer && this.inlineEnabled; - if (newRow === oldRow && inlineEnabled) { - var completion = this.popup.getData(this.popup.getRow()); - this.$updateGhostText(completion); - } - if (!keepPopupPosition) { - this.popup.setTheme(editor.getTheme()); - this.popup.setFontSize(editor.getFontSize()); - this.$updatePopupPosition(); - if (this.tooltipNode) { - this.updateDocTooltip(); - } - } - this.changeTimer.cancel(); - this.observeLayoutChanges(); - }; - Autocomplete.prototype.detach = function () { - if (this.editor) { - this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); - this.editor.off("changeSelection", this.changeListener); - this.editor.off("blur", this.blurListener); - this.editor.off("mousedown", this.mousedownListener); - this.editor.off("mousewheel", this.mousewheelListener); - } - this.$firstOpenTimer.cancel(); - this.changeTimer.cancel(); - this.hideDocTooltip(); - if (this.completionProvider) { - this.completionProvider.detach(); - } - if (this.popup && this.popup.isOpen) - this.popup.hide(); - if (this.popup && this.popup.renderer) { - this.popup.renderer.off("afterRender", this.$onPopupRender); - } - if (this.base) - this.base.detach(); - this.activated = false; - this.completionProvider = this.completions = this.base = null; - this.unObserveLayoutChanges(); - }; - Autocomplete.prototype.changeListener = function (e) { - var cursor = this.editor.selection.lead; - if (cursor.row != this.base.row || cursor.column < this.base.column) { - this.detach(); - } - if (this.activated) - this.changeTimer.schedule(); - else - this.detach(); - }; - Autocomplete.prototype.blurListener = function (e) { - var el = document.activeElement; - var text = this.editor.textInput.getElement(); - var fromTooltip = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget); - var container = this.popup && this.popup.container; - if (el != text && el.parentNode != container && !fromTooltip - && el != this.tooltipNode && e.relatedTarget != text) { - this.detach(); - } - }; - Autocomplete.prototype.mousedownListener = function (e) { - this.detach(); - }; - Autocomplete.prototype.mousewheelListener = function (e) { - if (this.popup && !this.popup.isMouseOver) - this.detach(); - }; - Autocomplete.prototype.mouseOutListener = function (e) { - if (this.popup.isOpen) - this.$updatePopupPosition(); - }; - Autocomplete.prototype.goTo = function (where) { - this.popup.goTo(where); - }; - Autocomplete.prototype.insertMatch = function (data, options) { - if (!data) - data = this.popup.getData(this.popup.getRow()); - if (!data) - return false; - if (data.value === "") // Explicitly given nothing to insert, e.g. "No suggestion state" - return this.detach(); - var completions = this.completions; - var result = this.getCompletionProvider().insertMatch(this.editor, data, completions.filterText, options); - if (this.completions == completions) - this.detach(); - return result; - }; - Autocomplete.prototype.showPopup = function (editor, options) { - if (this.editor) - this.detach(); - this.activated = true; - this.editor = editor; - if (editor.completer != this) { - if (editor.completer) - editor.completer.detach(); - editor.completer = this; - } - editor.on("changeSelection", this.changeListener); - editor.on("blur", this.blurListener); - editor.on("mousedown", this.mousedownListener); - editor.on("mousewheel", this.mousewheelListener); - this.updateCompletions(false, options); - }; - Autocomplete.prototype.getCompletionProvider = function (initialPosition) { - if (!this.completionProvider) - this.completionProvider = new CompletionProvider(initialPosition); - return this.completionProvider; - }; - Autocomplete.prototype.gatherCompletions = function (editor, callback) { - return this.getCompletionProvider().gatherCompletions(editor, callback); - }; - Autocomplete.prototype.updateCompletions = function (keepPopupPosition, options) { - if (keepPopupPosition && this.base && this.completions) { - var pos = this.editor.getCursorPosition(); - var prefix = this.editor.session.getTextRange({ start: this.base, end: pos }); - if (prefix == this.completions.filterText) - return; - this.completions.setFilter(prefix); - if (!this.completions.filtered.length) - return this.detach(); - if (this.completions.filtered.length == 1 - && this.completions.filtered[0].value == prefix - && !this.completions.filtered[0].snippet) - return this.detach(); - this.openPopup(this.editor, prefix, keepPopupPosition); - return; - } - if (options && options.matches) { - var pos = this.editor.getSelectionRange().start; - this.base = this.editor.session.doc.createAnchor(pos.row, pos.column); - this.base.$insertRight = true; - this.completions = new FilteredList(options.matches); - this.getCompletionProvider().completions = this.completions; - return this.openPopup(this.editor, "", keepPopupPosition); - } - var session = this.editor.getSession(); - var pos = this.editor.getCursorPosition(); - var prefix = util.getCompletionPrefix(this.editor); - this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length); - this.base.$insertRight = true; - var completionOptions = { - exactMatch: this.exactMatch, - ignoreCaption: this.ignoreCaption - }; - this.getCompletionProvider({ - prefix: prefix, - pos: pos - }).provideCompletions(this.editor, completionOptions, - function (err, completions, finished) { - var filtered = completions.filtered; - var prefix = util.getCompletionPrefix(this.editor); - this.$firstOpenTimer.cancel(); - if (finished) { - if (!filtered.length) { - var emptyMessage = !this.autoShown && this.emptyMessage; - if (typeof emptyMessage == "function") - emptyMessage = this.emptyMessage(prefix); - if (emptyMessage) { - var completionsForEmpty = [{ - caption: emptyMessage, - value: "" - } - ]; - this.completions = new FilteredList(completionsForEmpty); - this.openPopup(this.editor, prefix, keepPopupPosition); - this.popup.renderer.setStyle("ace_loading", false); - this.popup.renderer.setStyle("ace_empty-message", true); - return; - } - return this.detach(); - } - if (filtered.length == 1 && filtered[0].value == prefix - && !filtered[0].snippet) - return this.detach(); - if (this.autoInsert && !this.autoShown && filtered.length == 1) - return this.insertMatch(filtered[0]); - } - this.completions = !finished && this.showLoadingState ? - new FilteredList(Autocomplete.completionsForLoading.concat(filtered), completions.filterText) : - completions; - this.openPopup(this.editor, prefix, keepPopupPosition); - this.popup.renderer.setStyle("ace_empty-message", false); - this.popup.renderer.setStyle("ace_loading", !finished); - }.bind(this)); - if (this.showLoadingState && !this.autoShown && !(this.popup && this.popup.isOpen)) { - this.$firstOpenTimer.delay(this.stickySelectionDelay / 2); - } - }; - Autocomplete.prototype.cancelContextMenu = function () { - this.editor.$mouseHandler.cancelContextMenu(); - }; - Autocomplete.prototype.updateDocTooltip = function () { - var popup = this.popup; - var all = this.completions && this.completions.filtered; - var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]); - var doc = null; - if (!selected || !this.editor || !this.popup.isOpen) - return this.hideDocTooltip(); - var completersLength = this.editor.completers.length; - for (var i = 0; i < completersLength; i++) { - var completer = this.editor.completers[i]; - if (completer.getDocTooltip && selected.completerId === completer.id) { - doc = completer.getDocTooltip(selected); - break; - } - } - if (!doc && typeof selected != "string") - doc = selected; - if (typeof doc == "string") - doc = { docText: doc }; - if (!doc || !(doc.docHTML || doc.docText)) - return this.hideDocTooltip(); - this.showDocTooltip(doc); - }; - Autocomplete.prototype.showDocTooltip = function (item) { - if (!this.tooltipNode) { - this.tooltipNode = dom.createElement("div"); - this.tooltipNode.style.margin = "0"; - this.tooltipNode.style.pointerEvents = "auto"; - this.tooltipNode.style.overscrollBehavior = "contain"; - this.tooltipNode.tabIndex = -1; - this.tooltipNode.onblur = this.blurListener.bind(this); - this.tooltipNode.onclick = this.onTooltipClick.bind(this); - this.tooltipNode.id = "doc-tooltip"; - this.tooltipNode.setAttribute("role", "tooltip"); - this.tooltipNode.addEventListener("wheel", preventParentScroll); - } - var theme = this.editor.renderer.theme; - this.tooltipNode.className = "ace_tooltip ace_doc-tooltip " + - (theme.isDark ? "ace_dark " : "") + (theme.cssClass || ""); - var tooltipNode = this.tooltipNode; - if (item.docHTML) { - tooltipNode.innerHTML = item.docHTML; - } - else if (item.docText) { - tooltipNode.textContent = item.docText; - } - if (!tooltipNode.parentNode) - this.popup.container.appendChild(this.tooltipNode); - var popup = this.popup; - var rect = popup.container.getBoundingClientRect(); - var targetWidth = 400; - var targetHeight = 300; - var scrollBarSize = popup.renderer.scrollBar.width || 10; - var leftSize = rect.left; - var rightSize = window.innerWidth - rect.right - scrollBarSize; - var topSize = popup.isTopdown ? rect.top : window.innerHeight - scrollBarSize - rect.bottom; - var scores = [ - Math.min(rightSize / targetWidth, 1), - Math.min(leftSize / targetWidth, 1), - Math.min(topSize / targetHeight * 0.9), - ]; - var max = Math.max.apply(Math, scores); - var tooltipStyle = tooltipNode.style; - tooltipStyle.display = "block"; - if (max == scores[0]) { - tooltipStyle.left = (rect.right + 1) + "px"; - tooltipStyle.right = ""; - tooltipStyle.maxWidth = targetWidth * max + "px"; - tooltipStyle.top = rect.top + "px"; - tooltipStyle.bottom = ""; - tooltipStyle.maxHeight = Math.min(window.innerHeight - scrollBarSize - rect.top, targetHeight) + "px"; - } - else if (max == scores[1]) { - tooltipStyle.right = window.innerWidth - rect.left + "px"; - tooltipStyle.left = ""; - tooltipStyle.maxWidth = targetWidth * max + "px"; - tooltipStyle.top = rect.top + "px"; - tooltipStyle.bottom = ""; - tooltipStyle.maxHeight = Math.min(window.innerHeight - scrollBarSize - rect.top, targetHeight) + "px"; - } - else if (max == scores[2]) { - tooltipStyle.left = window.innerWidth - rect.left + "px"; - tooltipStyle.maxWidth = Math.min(targetWidth, window.innerWidth) + "px"; - if (popup.isTopdown) { - tooltipStyle.top = rect.bottom + "px"; - tooltipStyle.left = rect.left + "px"; - tooltipStyle.right = ""; - tooltipStyle.bottom = ""; - tooltipStyle.maxHeight = Math.min(window.innerHeight - scrollBarSize - rect.bottom, targetHeight) + "px"; - } - else { - tooltipStyle.top = popup.container.offsetTop - tooltipNode.offsetHeight + "px"; - tooltipStyle.left = rect.left + "px"; - tooltipStyle.right = ""; - tooltipStyle.bottom = ""; - tooltipStyle.maxHeight = Math.min(popup.container.offsetTop, targetHeight) + "px"; - } - } - }; - Autocomplete.prototype.hideDocTooltip = function () { - this.tooltipTimer.cancel(); - if (!this.tooltipNode) - return; - var el = this.tooltipNode; - if (!this.editor.isFocused() && document.activeElement == el) - this.editor.focus(); - this.tooltipNode = null; - if (el.parentNode) - el.parentNode.removeChild(el); - }; - Autocomplete.prototype.onTooltipClick = function (e) { - var a = e.target; - while (a && a != this.tooltipNode) { - if (a.nodeName == "A" && a.href) { - a.rel = "noreferrer"; - a.target = "_blank"; - break; - } - a = a.parentNode; - } - }; - Autocomplete.prototype.destroy = function () { - this.detach(); - if (this.popup) { - this.popup.destroy(); - var el = this.popup.container; - if (el && el.parentNode) - el.parentNode.removeChild(el); - } - if (this.editor && this.editor.completer == this) { - this.editor.off("destroy", destroyCompleter); - this.editor.completer = null; - } - this.inlineRenderer = this.popup = this.editor = null; - }; - Autocomplete.for = function (editor) { - if (editor.completer instanceof Autocomplete) { - return editor.completer; - } - if (editor.completer) { - editor.completer.destroy(); - editor.completer = null; - } - if (config.get("sharedPopups")) { - if (!Autocomplete["$sharedInstance"]) - Autocomplete["$sharedInstance"] = new Autocomplete(); - editor.completer = Autocomplete["$sharedInstance"]; - } - else { - editor.completer = new Autocomplete(); - editor.once("destroy", destroyCompleter); - } - return editor.completer; - }; - return Autocomplete; -}()); -Autocomplete.prototype.commands = { - "Up": function (editor) { editor.completer.goTo("up"); }, - "Down": function (editor) { editor.completer.goTo("down"); }, - "Ctrl-Up|Ctrl-Home": function (editor) { editor.completer.goTo("start"); }, - "Ctrl-Down|Ctrl-End": function (editor) { editor.completer.goTo("end"); }, - "Esc": function (editor) { editor.completer.detach(); }, - "Return": function (editor) { return editor.completer.insertMatch(); }, - "Shift-Return": function (editor) { editor.completer.insertMatch(null, { deleteSuffix: true }); }, - "Tab": function (editor) { - var result = editor.completer.insertMatch(); - if (!result && !editor.tabstopManager) - editor.completer.goTo("down"); - else - return result; - }, - "Backspace": function (editor) { - editor.execCommand("backspace"); - var prefix = util.getCompletionPrefix(editor); - if (!prefix && editor.completer) - editor.completer.detach(); - }, - "PageUp": function (editor) { editor.completer.popup.gotoPageUp(); }, - "PageDown": function (editor) { editor.completer.popup.gotoPageDown(); } -}; -Autocomplete.startCommand = { - name: "startAutocomplete", - exec: function (editor, options) { - var completer = Autocomplete.for(editor); - completer.autoInsert = false; - completer.autoSelect = true; - completer.autoShown = false; - completer.showPopup(editor, options); - completer.cancelContextMenu(); - }, - bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space" -}; -var CompletionProvider = /** @class */ (function () { - function CompletionProvider(initialPosition) { - this.initialPosition = initialPosition; - this.active = true; - } - CompletionProvider.prototype.insertByIndex = function (editor, index, options) { - if (!this.completions || !this.completions.filtered) { - return false; - } - return this.insertMatch(editor, this.completions.filtered[index], options); - }; - CompletionProvider.prototype.insertMatch = function (editor, data, options) { - if (!data) - return false; - editor.startOperation({ command: { name: "insertMatch" } }); - if (data.completer && data.completer.insertMatch) { - data.completer.insertMatch(editor, data); - } - else { - if (!this.completions) - return false; - var replaceBefore = this.completions.filterText.length; - var replaceAfter = 0; - if (data.range && data.range.start.row === data.range.end.row) { - replaceBefore -= this.initialPosition.prefix.length; - replaceBefore += this.initialPosition.pos.column - data.range.start.column; - replaceAfter += data.range.end.column - this.initialPosition.pos.column; - } - if (replaceBefore || replaceAfter) { - var ranges; - if (editor.selection.getAllRanges) { - ranges = editor.selection.getAllRanges(); - } - else { - ranges = [editor.getSelectionRange()]; - } - for (var i = 0, range; range = ranges[i]; i++) { - range.start.column -= replaceBefore; - range.end.column += replaceAfter; - editor.session.remove(range); - } - } - if (data.snippet) { - snippetManager.insertSnippet(editor, data.snippet); - } - else { - this.$insertString(editor, data); - } - if (data.completer && data.completer.onInsert && typeof data.completer.onInsert == "function") { - data.completer.onInsert(editor, data); - } - if (data.command && data.command === "startAutocomplete") { - editor.execCommand(data.command); - } - } - editor.endOperation(); - return true; - }; - CompletionProvider.prototype.$insertString = function (editor, data) { - var text = data.value || data; - editor.execCommand("insertstring", text); - }; - CompletionProvider.prototype.gatherCompletions = function (editor, callback) { - var session = editor.getSession(); - var pos = editor.getCursorPosition(); - var prefix = util.getCompletionPrefix(editor); - var matches = []; - this.completers = editor.completers; - var total = editor.completers.length; - editor.completers.forEach(function (completer, i) { - completer.getCompletions(editor, session, pos, prefix, function (err, results) { - if (completer.hideInlinePreview) - results = results.map(function (result) { - return Object.assign(result, { hideInlinePreview: completer.hideInlinePreview }); - }); - if (!err && results) - matches = matches.concat(results); - callback(null, { - prefix: util.getCompletionPrefix(editor), - matches: matches, - finished: (--total === 0) - }); - }); - }); - return true; - }; - CompletionProvider.prototype.provideCompletions = function (editor, options, callback) { - var processResults = function (results) { - var prefix = results.prefix; - var matches = results.matches; - this.completions = new FilteredList(matches); - if (options.exactMatch) - this.completions.exactMatch = true; - if (options.ignoreCaption) - this.completions.ignoreCaption = true; - this.completions.setFilter(prefix); - if (results.finished || this.completions.filtered.length) - callback(null, this.completions, results.finished); - }.bind(this); - var isImmediate = true; - var immediateResults = null; - this.gatherCompletions(editor, function (err, results) { - if (!this.active) { - return; - } - if (err) { - callback(err, [], true); - this.detach(); - } - var prefix = results.prefix; - if (prefix.indexOf(results.prefix) !== 0) - return; - if (isImmediate) { - immediateResults = results; - return; - } - processResults(results); - }.bind(this)); - isImmediate = false; - if (immediateResults) { - var results = immediateResults; - immediateResults = null; - processResults(results); - } - }; - CompletionProvider.prototype.detach = function () { - this.active = false; - this.completers && this.completers.forEach(function (completer) { - if (typeof completer.cancel === "function") { - completer.cancel(); - } - }); - }; - return CompletionProvider; -}()); -var FilteredList = /** @class */ (function () { - function FilteredList(array, filterText) { - this.all = array; - this.filtered = array; - this.filterText = filterText || ""; - this.exactMatch = false; - this.ignoreCaption = false; - } - FilteredList.prototype.setFilter = function (str) { - if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0) - var matches = this.filtered; - else - var matches = this.all; - this.filterText = str; - matches = this.filterCompletions(matches, this.filterText); - matches = matches.sort(function (a, b) { - return b.exactMatch - a.exactMatch || b.$score - a.$score - || (a.caption || a.value).localeCompare(b.caption || b.value); - }); - var prev = null; - matches = matches.filter(function (item) { - var caption = item.snippet || item.caption || item.value; - if (caption === prev) - return false; - prev = caption; - return true; - }); - this.filtered = matches; - }; - FilteredList.prototype.filterCompletions = function (items, needle) { - var results = []; - var upper = needle.toUpperCase(); - var lower = needle.toLowerCase(); - loop: for (var i = 0, item; item = items[i]; i++) { - if (item.skipFilter) { - item.$score = item.score; - results.push(item); - continue; - } - var caption = (!this.ignoreCaption && item.caption) || item.value || item.snippet; - if (!caption) - continue; - var lastIndex = -1; - var matchMask = 0; - var penalty = 0; - var index, distance; - if (this.exactMatch) { - if (needle !== caption.substr(0, needle.length)) - continue loop; - } - else { - var fullMatchIndex = caption.toLowerCase().indexOf(lower); - if (fullMatchIndex > -1) { - penalty = fullMatchIndex; - } - else { - for (var j = 0; j < needle.length; j++) { - var i1 = caption.indexOf(lower[j], lastIndex + 1); - var i2 = caption.indexOf(upper[j], lastIndex + 1); - index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2; - if (index < 0) - continue loop; - distance = index - lastIndex - 1; - if (distance > 0) { - if (lastIndex === -1) - penalty += 10; - penalty += distance; - matchMask = matchMask | (1 << j); - } - lastIndex = index; - } - } - } - item.matchMask = matchMask; - item.exactMatch = penalty ? 0 : 1; - item.$score = (item.score || 0) - penalty; - results.push(item); - } - return results; - }; - return FilteredList; -}()); -exports.Autocomplete = Autocomplete; -exports.CompletionProvider = CompletionProvider; -exports.FilteredList = FilteredList; - -}); - -ace.define("ace/ext/menu_tools/settings_menu.css?v=1760428868419",["require","exports","module"], function(require, exports, module){module.exports = "#ace_settingsmenu, #kbshortcutmenu {\n background-color: #F7F7F7;\n color: black;\n box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\n padding: 1em 0.5em 2em 1em;\n overflow: auto;\n position: absolute;\n margin: 0;\n bottom: 0;\n right: 0;\n top: 0;\n z-index: 9991;\n cursor: default;\n}\n\n.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\n box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\n background-color: rgba(255, 255, 255, 0.6);\n color: black;\n}\n\n.ace_optionsMenuEntry:hover {\n background-color: rgba(100, 100, 100, 0.1);\n transition: all 0.3s\n}\n\n.ace_closeButton {\n background: rgba(245, 146, 146, 0.5);\n border: 1px solid #F48A8A;\n border-radius: 50%;\n padding: 7px;\n position: absolute;\n right: -8px;\n top: -8px;\n z-index: 100000;\n}\n.ace_closeButton{\n background: rgba(245, 146, 146, 0.9);\n}\n.ace_optionsMenuKey {\n color: darkslateblue;\n font-weight: bold;\n}\n.ace_optionsMenuCommand {\n color: darkcyan;\n font-weight: normal;\n}\n.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\n vertical-align: middle;\n}\n\n.ace_optionsMenuEntry button[ace_selected_button=true] {\n background: #e7e7e7;\n box-shadow: 1px 0px 2px 0px #adadad inset;\n border-color: #adadad;\n}\n.ace_optionsMenuEntry button {\n background: white;\n border: 1px solid lightgray;\n margin: 0px;\n}\n.ace_optionsMenuEntry button:hover{\n background: #f0f0f0;\n}"; - -}); - -ace.define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/ext/menu_tools/overlay_page","ace/lib/dom","ace/ext/menu_tools/settings_menu.css?v=1760428868419"], function(require, exports, module){/** - * ## Overlay Page utility - * - * Provides modal overlay functionality for displaying editor extension interfaces. Creates a full-screen overlay with - * configurable backdrop behavior, keyboard navigation (ESC to close), and focus management. Used by various extensions - * to display menus, settings panels, and other interactive content over the editor interface. - * - * **Usage:** - * ```javascript - * var overlayPage = require('./overlay_page').overlayPage; - * var contentElement = document.createElement('div'); - * contentElement.innerHTML = '

Settings

'; - * - * var overlay = overlayPage(editor, contentElement, function() { - * console.log('Overlay closed'); - * }); - * ``` - * - * @module - */ -'use strict'; -var dom = require("../../lib/dom"); -var cssText = require("./settings_menu.css?v=1760428868419"); -dom.importCssString(cssText, "settings_menu.css?v=1760428868419", false); -module.exports.overlayPage = function overlayPage(editor, contentElement, callback) { - var closer = document.createElement('div'); - var ignoreFocusOut = false; - function documentEscListener(e) { - if (e.keyCode === 27) { - close(); - } - } - function close() { - if (!closer) - return; - document.removeEventListener('keydown', documentEscListener); - closer.parentNode.removeChild(closer); - if (editor) { - editor.focus(); - } - closer = null; - callback && callback(); - } - function setIgnoreFocusOut(ignore) { - ignoreFocusOut = ignore; - if (ignore) { - closer.style.pointerEvents = "none"; - contentElement.style.pointerEvents = "auto"; - } - } - closer.style.cssText = 'margin: 0; padding: 0; ' + - 'position: fixed; top:0; bottom:0; left:0; right:0;' + - 'z-index: 9990; ' + - (editor ? 'background-color: rgba(0, 0, 0, 0.3);' : ''); - closer.addEventListener('click', function (e) { - if (!ignoreFocusOut) { - close(); - } - }); - document.addEventListener('keydown', documentEscListener); - contentElement.addEventListener('click', function (e) { - e.stopPropagation(); - }); - closer.appendChild(contentElement); - document.body.appendChild(closer); - if (editor) { - editor.blur(); - } - return { - close: close, - setIgnoreFocusOut: setIgnoreFocusOut - }; -}; - -}); - -ace.define("ace/ext/modelist",["require","exports","module"], function(require, exports, module){/** - * ## File mode detection utility - * - * Provides automatic detection of editor syntax modes based on file paths and extensions. Maps file extensions to - * appropriate Ace Editor syntax highlighting modes for over 100 programming languages and file formats including - * JavaScript, TypeScript, HTML, CSS, Python, Java, C++, and many others. Supports complex extension patterns and - * provides fallback mechanisms for unknown file types. - * - * @module - */ -"use strict"; -var modes = []; -function getModeForPath(path) { - var mode = modesByName.text; - var fileName = path.split(/[\/\\]/).pop(); - for (var i = 0; i < modes.length; i++) { - if (modes[i].supportsFile(fileName)) { - mode = modes[i]; - break; - } - } - return mode; -} -var Mode = /** @class */ (function () { - function Mode(name, caption, extensions) { - this.name = name; - this.caption = caption; - this.mode = "ace/mode/" + name; - this.extensions = extensions; - var re; - if (/\^/.test(extensions)) { - re = extensions.replace(/\|(\^)?/g, function (a, b) { - return "$|" + (b ? "^" : "^.*\\."); - }) + "$"; - } - else { - re = "\\.(" + extensions + ")$"; - } - this.extRe = new RegExp(re, "gi"); - } - Mode.prototype.supportsFile = function (filename) { - return filename.match(this.extRe); - }; - return Mode; -}()); -var supportedModes = { - ABAP: ["abap"], - ABC: ["abc"], - ActionScript: ["as"], - ADA: ["ada|adb"], - Alda: ["alda"], - Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"], - Apex: ["apex|cls|trigger|tgr"], - AQL: ["aql"], - AsciiDoc: ["asciidoc|adoc"], - ASL: ["dsl|asl|asl.json"], - Assembly_ARM32: ["s"], - Assembly_x86: ["asm|a"], - Astro: ["astro"], - AutoHotKey: ["ahk"], - Basic: ["bas|bak"], - BatchFile: ["bat|cmd"], - BibTeX: ["bib"], - C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], - C9Search: ["c9search_results"], - Cirru: ["cirru|cr"], - Clojure: ["clj|cljs"], - Clue: ["clue"], - Cobol: ["CBL|COB"], - coffee: ["coffee|cf|cson|^Cakefile"], - ColdFusion: ["cfm|cfc"], - Crystal: ["cr"], - CSharp: ["cs"], - Csound_Document: ["csd"], - Csound_Orchestra: ["orc"], - Csound_Score: ["sco"], - CSS: ["css"], - CSV: ["csv"], - Curly: ["curly"], - Cuttlefish: ["conf"], - D: ["d|di"], - Dart: ["dart"], - Diff: ["diff|patch"], - Django: ["djt|html.djt|dj.html|djhtml"], - Dockerfile: ["^Dockerfile"], - Dot: ["dot"], - Drools: ["drl"], - Edifact: ["edi"], - Eiffel: ["e|ge"], - EJS: ["ejs"], - Elixir: ["ex|exs"], - Elm: ["elm"], - Erlang: ["erl|hrl"], - Flix: ["flix"], - Forth: ["frt|fs|ldr|fth|4th"], - Fortran: ["f|f90"], - FSharp: ["fsi|fs|ml|mli|fsx|fsscript"], - FSL: ["fsl"], - FTL: ["ftl"], - Gcode: ["gcode"], - Gherkin: ["feature"], - Gitignore: ["^.gitignore"], - Glsl: ["glsl|frag|vert"], - Gobstones: ["gbs"], - golang: ["go"], - GraphQLSchema: ["gql"], - Groovy: ["groovy"], - HAML: ["haml"], - Handlebars: ["hbs|handlebars|tpl|mustache"], - Haskell: ["hs"], - Haskell_Cabal: ["cabal"], - haXe: ["hx"], - Hjson: ["hjson"], - HTML: ["html|htm|xhtml|we|wpy"], - HTML_Elixir: ["eex|html.eex"], - HTML_Ruby: ["erb|rhtml|html.erb"], - INI: ["ini|conf|cfg|prefs"], - Io: ["io"], - Ion: ["ion"], - Jack: ["jack"], - Jade: ["jade|pug"], - Java: ["java"], - JavaScript: ["js|jsm|cjs|mjs"], - JEXL: ["jexl"], - JSON: ["json"], - JSON5: ["json5"], - JSONiq: ["jq"], - JSP: ["jsp"], - JSSM: ["jssm|jssm_state"], - JSX: ["jsx"], - Julia: ["jl"], - Kotlin: ["kt|kts"], - LaTeX: ["tex|latex|ltx|bib"], - Latte: ["latte"], - LESS: ["less"], - Liquid: ["liquid"], - Lisp: ["lisp"], - LiveScript: ["ls"], - Log: ["log"], - LogiQL: ["logic|lql"], - Logtalk: ["lgt"], - LSL: ["lsl"], - Lua: ["lua"], - LuaPage: ["lp"], - Lucene: ["lucene"], - Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], - Markdown: ["md|markdown"], - Mask: ["mask"], - MATLAB: ["matlab"], - Maze: ["mz"], - MediaWiki: ["wiki|mediawiki"], - MEL: ["mel"], - MIPS: ["s|asm"], - MIXAL: ["mixal"], - MUSHCode: ["mc|mush"], - MySQL: ["mysql"], - Nasal: ["nas"], - Nginx: ["nginx|conf"], - Nim: ["nim"], - Nix: ["nix"], - NSIS: ["nsi|nsh"], - Nunjucks: ["nunjucks|nunjs|nj|njk"], - ObjectiveC: ["m|mm"], - OCaml: ["ml|mli"], - Odin: ["odin"], - PartiQL: ["partiql|pql"], - Pascal: ["pas|p"], - Perl: ["pl|pm"], - pgSQL: ["pgsql"], - PHP: ["php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], - PHP_Laravel_blade: ["blade.php"], - Pig: ["pig"], - PLSQL: ["plsql"], - Powershell: ["ps1"], - Praat: ["praat|praatscript|psc|proc"], - Prisma: ["prisma"], - Prolog: ["plg|prolog"], - Properties: ["properties"], - Protobuf: ["proto"], - PRQL: ["prql"], - Puppet: ["epp|pp"], - Python: ["py"], - QML: ["qml"], - R: ["r"], - Raku: ["raku|rakumod|rakutest|p6|pl6|pm6"], - Razor: ["cshtml|asp"], - RDoc: ["Rd"], - Red: ["red|reds"], - RHTML: ["Rhtml"], - Robot: ["robot|resource"], - RST: ["rst"], - Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], - Rust: ["rs"], - SaC: ["sac"], - SASS: ["sass"], - SCAD: ["scad"], - Scala: ["scala|sbt"], - Scheme: ["scm|sm|rkt|oak|scheme"], - Scrypt: ["scrypt"], - SCSS: ["scss"], - SH: ["sh|bash|^.bashrc"], - SJS: ["sjs"], - Slim: ["slim|skim"], - Smarty: ["smarty|tpl"], - Smithy: ["smithy"], - snippets: ["snippets"], - Soy_Template: ["soy"], - Space: ["space"], - SPARQL: ["rq"], - SQL: ["sql"], - SQLServer: ["sqlserver"], - Stylus: ["styl|stylus"], - SVG: ["svg"], - Swift: ["swift"], - Tcl: ["tcl"], - Terraform: ["tf", "tfvars", "terragrunt"], - Tex: ["tex"], - Text: ["txt"], - Textile: ["textile"], - Toml: ["toml"], - TSV: ["tsv"], - TSX: ["tsx"], - Turtle: ["ttl"], - Twig: ["twig|swig"], - Typescript: ["ts|mts|cts|typescript|str"], - Vala: ["vala"], - VBScript: ["vbs|vb"], - Velocity: ["vm"], - Verilog: ["v|vh|sv|svh"], - VHDL: ["vhd|vhdl"], - Visualforce: ["vfp|component|page"], - Vue: ["vue"], - Wollok: ["wlk|wpgm|wtest"], - XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"], - XQuery: ["xq"], - YAML: ["yaml|yml"], - Zeek: ["zeek|bro"], - Zig: ["zig"] -}; -var nameOverrides = { - ObjectiveC: "Objective-C", - CSharp: "C#", - golang: "Go", - C_Cpp: "C and C++", - Csound_Document: "Csound Document", - Csound_Orchestra: "Csound", - Csound_Score: "Csound Score", - coffee: "CoffeeScript", - HTML_Ruby: "HTML (Ruby)", - HTML_Elixir: "HTML (Elixir)", - FTL: "FreeMarker", - PHP_Laravel_blade: "PHP (Blade Template)", - Perl6: "Perl 6", - AutoHotKey: "AutoHotkey / AutoIt" -}; -var modesByName = {}; -for (var name in supportedModes) { - var data = supportedModes[name]; - var displayName = (nameOverrides[name] || name).replace(/_/g, " "); - var filename = name.toLowerCase(); - var mode = new Mode(filename, displayName, data[0]); - modesByName[filename] = mode; - modes.push(mode); -} -exports.getModeForPath = getModeForPath; -exports.modes = modes; -exports.modesByName = modesByName; - -}); - -ace.define("ace/ext/prompt",["require","exports","module","ace/config","ace/range","ace/lib/dom","ace/autocomplete","ace/autocomplete/popup","ace/autocomplete/popup","ace/undomanager","ace/tokenizer","ace/ext/menu_tools/overlay_page","ace/ext/modelist"], function(require, exports, module){/** - * ## User Input Prompt extension - * - * Provides customizable modal prompts for gathering user input with support for autocompletion, validation, and - * specialized input types. Includes built-in prompt types for navigation (goto line), command palette, and mode - * selection, with extensible architecture for custom prompt implementations. - * - * **Built-in Prompt Types:** - * - `gotoLine`: Navigate to specific line numbers with selection support - * - `commands`: Command palette with searchable editor commands and shortcuts - * - `modes`: Language mode selector with filtering capabilities - * - * **Usage:** - * ```javascript - * // Basic prompt - * prompt(editor, "Default value", { - * placeholder: "Enter text...", - * onAccept: (data) => console.log(data.value) - * }); - * - * // Built-in prompts - * prompt.gotoLine(editor); - * prompt.commands(editor); - * prompt.modes(editor); - * ``` - * - * @module - */ -"use strict"; -var nls = require("../config").nls; -var Range = require("../range").Range; -var dom = require("../lib/dom"); -var FilteredList = require("../autocomplete").FilteredList; -var AcePopup = require('../autocomplete/popup').AcePopup; -var $singleLineEditor = require('../autocomplete/popup').$singleLineEditor; -var UndoManager = require("../undomanager").UndoManager; -var Tokenizer = require("../tokenizer").Tokenizer; -var overlayPage = require("./menu_tools/overlay_page").overlayPage; -var modelist = require("./modelist"); -var openPrompt; -function prompt(editor, message, options, callback) { - if (typeof message == "object") { - return prompt(editor, "", message, options); - } - if (openPrompt) { - var lastPrompt = openPrompt; - editor = lastPrompt.editor; - lastPrompt.close(); - if (lastPrompt.name && lastPrompt.name == options.name) - return; - } - if (options.$type) - return prompt[options.$type](editor, callback); - var cmdLine = $singleLineEditor(); - cmdLine.session.setUndoManager(new UndoManager()); - var el = dom.buildDom(["div", { class: "ace_prompt_container" + (options.hasDescription ? " input-box-with-description" : "") }]); - var overlay = overlayPage(editor, el, done); - el.appendChild(cmdLine.container); - if (editor) { - editor.cmdLine = cmdLine; - cmdLine.setOption("fontSize", editor.getOption("fontSize")); - } - if (message) { - cmdLine.setValue(message, 1); - } - if (options.selection) { - cmdLine.selection.setRange({ - start: cmdLine.session.doc.indexToPosition(options.selection[0]), - end: cmdLine.session.doc.indexToPosition(options.selection[1]) - }); - } - if (options.getCompletions) { - var popup = new AcePopup(); - popup.renderer.setStyle("ace_autocomplete_inline"); - popup.container.style.display = "block"; - popup.container.style.maxWidth = "600px"; - popup.container.style.width = "100%"; - popup.container.style.marginTop = "3px"; - popup.renderer.setScrollMargin(2, 2, 0, 0); - popup.autoSelect = false; - popup.renderer.$maxLines = 15; - popup.setRow(-1); - popup.on("click", function (e) { - var data = popup.getData(popup.getRow()); - if (!data["error"]) { - cmdLine.setValue(data.value || data["name"] || data); - accept(); - e.stop(); - } - }); - el.appendChild(popup.container); - updateCompletions(); - } - if (options.$rules) { - var tokenizer = new Tokenizer(options.$rules); - cmdLine.session.bgTokenizer.setTokenizer(tokenizer); - } - if (options.placeholder) { - cmdLine.setOption("placeholder", options.placeholder); - } - if (options.hasDescription) { - var promptTextContainer = dom.buildDom(["div", { class: "ace_prompt_text_container" }]); - dom.buildDom(options.prompt || "Press 'Enter' to confirm or 'Escape' to cancel", promptTextContainer); - el.appendChild(promptTextContainer); - } - overlay.setIgnoreFocusOut(options.ignoreFocusOut); - function accept() { - var val; - if (popup && popup.getCursorPosition().row > 0) { - val = valueFromRecentList(); - } - else { - val = cmdLine.getValue(); - } - var curData = popup ? popup.getData(popup.getRow()) : val; - if (curData && !curData["error"]) { - done(); - options.onAccept && options.onAccept({ - value: val, - item: curData - }, cmdLine); - } - } - var keys = { - "Enter": accept, - "Esc|Shift-Esc": function () { - options.onCancel && options.onCancel(cmdLine.getValue(), cmdLine); - done(); - } - }; - if (popup) { - Object.assign(keys, { - "Up": function (editor) { popup.goTo("up"); valueFromRecentList(); }, - "Down": function (editor) { popup.goTo("down"); valueFromRecentList(); }, - "Ctrl-Up|Ctrl-Home": function (editor) { popup.goTo("start"); valueFromRecentList(); }, - "Ctrl-Down|Ctrl-End": function (editor) { popup.goTo("end"); valueFromRecentList(); }, - "Tab": function (editor) { - popup.goTo("down"); - valueFromRecentList(); - }, - "PageUp": function (editor) { popup.gotoPageUp(); valueFromRecentList(); }, - "PageDown": function (editor) { popup.gotoPageDown(); valueFromRecentList(); } - }); - } - cmdLine.commands.bindKeys(keys); - function done() { - overlay.close(); - callback && callback(); - openPrompt = null; - } - cmdLine.on("input", function () { - options.onInput && options.onInput(); - updateCompletions(); - }); - function updateCompletions() { - if (options.getCompletions) { - var prefix; - if (options.getPrefix) { - prefix = options.getPrefix(cmdLine); - } - var completions = options.getCompletions(cmdLine); - popup.setData(completions, prefix); - popup.resize(true); - } - } - function valueFromRecentList() { - var current = popup.getData(popup.getRow()); - if (current && !current["error"]) - return current.value || current.caption || current; - } - cmdLine.resize(true); - if (popup) { - popup.resize(true); - } - cmdLine.focus(); - openPrompt = { - close: done, - name: options.name, - editor: editor - }; -} -prompt.gotoLine = function (editor, callback) { - function stringifySelection(selection) { - if (!Array.isArray(selection)) - selection = [selection]; - return selection.map(function (r) { - var cursor = r.isBackwards ? r.start : r.end; - var anchor = r.isBackwards ? r.end : r.start; - var row = anchor.row; - var s = (row + 1) + ":" + anchor.column; - if (anchor.row == cursor.row) { - if (anchor.column != cursor.column) - s += ">" + ":" + cursor.column; - } - else { - s += ">" + (cursor.row + 1) + ":" + cursor.column; - } - return s; - }).reverse().join(", "); - } - prompt(editor, ":" + stringifySelection(editor.selection.toJSON()), { - name: "gotoLine", - selection: [1, Number.MAX_VALUE], - onAccept: function (data) { - var value = data.value; - var _history = prompt.gotoLine["_history"]; - if (!_history) - prompt.gotoLine["_history"] = _history = []; - if (_history.indexOf(value) != -1) - _history.splice(_history.indexOf(value), 1); - _history.unshift(value); - if (_history.length > 20) - _history.length = 20; - var pos = editor.getCursorPosition(); - var ranges = []; - value.replace(/^:/, "").split(/,/).map(function (str) { - var parts = str.split(/([<>:+-]|c?\d+)|[^c\d<>:+-]+/).filter(Boolean); - var i = 0; - function readPosition() { - var c = parts[i++]; - if (!c) - return; - if (c[0] == "c") { - var index = parseInt(c.slice(1)) || 0; - return editor.session.doc.indexToPosition(index); - } - var row = pos.row; - var column = 0; - if (/\d/.test(c)) { - row = parseInt(c) - 1; - c = parts[i++]; - } - if (c == ":") { - c = parts[i++]; - if (/\d/.test(c)) { - column = parseInt(c) || 0; - } - } - return { row: row, column: column }; - } - pos = readPosition(); - var range = Range.fromPoints(pos, pos); - if (parts[i] == ">") { - i++; - range.end = readPosition(); - } - else if (parts[i] == "<") { - i++; - range.start = readPosition(); - } - ranges.unshift(range); - }); - editor.selection.fromJSON(ranges); - var scrollTop = editor.renderer.scrollTop; - editor.renderer.scrollSelectionIntoView(editor.selection.anchor, editor.selection.cursor, 0.5); - editor.renderer.animateScrolling(scrollTop); - }, - history: function () { - if (!prompt.gotoLine["_history"]) - return []; - return prompt.gotoLine["_history"]; - }, - getCompletions: function (cmdLine) { - var value = cmdLine.getValue(); - var m = value.replace(/^:/, "").split(":"); - var row = Math.min(parseInt(m[0]) || 1, editor.session.getLength()) - 1; - var line = editor.session.getLine(row); - var current = value + " " + line; - return [current].concat(this.history()); - }, - $rules: { - start: [{ - regex: /\d+/, - token: "string" - }, { - regex: /[:,><+\-c]/, - token: "keyword" - }] - } - }); -}; -prompt.commands = function (editor, callback) { - function normalizeName(name) { - return (name || "").replace(/^./, function (x) { - return x.toUpperCase(x); - }).replace(/[a-z][A-Z]/g, function (x) { - return x[0] + " " + x[1].toLowerCase(x); - }); - } - function getEditorCommandsByName(excludeCommands) { - var commandsByName = []; - var commandMap = {}; - editor.keyBinding.$handlers.forEach(function (handler) { - var platform = handler["platform"]; - var cbn = handler["byName"]; - for (var i in cbn) { - var key = cbn[i].bindKey; - if (typeof key !== "string") { - key = key && key[platform] || ""; - } - var commands = cbn[i]; - var description = commands.description || normalizeName(commands.name); - if (!Array.isArray(commands)) - commands = [commands]; - commands.forEach(function (command) { - if (typeof command != "string") - command = command.name; - var needle = excludeCommands.find(function (el) { - return el === command; - }); - if (!needle) { - if (commandMap[command]) { - commandMap[command].key += "|" + key; - } - else { - commandMap[command] = { key: key, command: command, description: description }; - commandsByName.push(commandMap[command]); - } - } - }); - } - }); - return commandsByName; - } - var excludeCommandsList = ["insertstring", "inserttext", "setIndentation", "paste"]; - var shortcutsArray = getEditorCommandsByName(excludeCommandsList); - shortcutsArray = shortcutsArray.map(function (item) { - return { value: item.description, meta: item.key, command: item.command }; - }); - prompt(editor, "", { - name: "commands", - selection: [0, Number.MAX_VALUE], - maxHistoryCount: 5, - onAccept: function (data) { - if (data.item) { - var commandName = data.item.command; - this.addToHistory(data.item); - editor.execCommand(commandName); - } - }, - addToHistory: function (item) { - var history = this.history(); - history.unshift(item); - delete item.message; - for (var i = 1; i < history.length; i++) { - if (history[i]["command"] == item.command) { - history.splice(i, 1); - break; - } - } - if (this.maxHistoryCount > 0 && history.length > this.maxHistoryCount) { - history.splice(history.length - 1, 1); - } - prompt.commands["history"] = history; - }, - history: function () { - return prompt.commands["history"] || []; - }, - getPrefix: function (cmdLine) { - var currentPos = cmdLine.getCursorPosition(); - var filterValue = cmdLine.getValue(); - return filterValue.substring(0, currentPos.column); - }, - getCompletions: function (cmdLine) { - function getFilteredCompletions(commands, prefix) { - var resultCommands = JSON.parse(JSON.stringify(commands)); - var filtered = new FilteredList(resultCommands); - return filtered.filterCompletions(resultCommands, prefix); - } - function getUniqueCommandList(commands, usedCommands) { - if (!usedCommands || !usedCommands.length) { - return commands; - } - var excludeCommands = []; - usedCommands.forEach(function (item) { - excludeCommands.push(item.command); - }); - var resultCommands = []; - commands.forEach(function (item) { - if (excludeCommands.indexOf(item.command) === -1) { - resultCommands.push(item); - } - }); - return resultCommands; - } - var prefix = this.getPrefix(cmdLine); - var recentlyUsedCommands = getFilteredCompletions(this.history(), prefix); - var otherCommands = getUniqueCommandList(shortcutsArray, recentlyUsedCommands); - otherCommands = getFilteredCompletions(otherCommands, prefix); - if (recentlyUsedCommands.length && otherCommands.length) { - recentlyUsedCommands[0].message = nls("prompt.recently-used", "Recently used"); - otherCommands[0].message = nls("prompt.other-commands", "Other commands"); - } - var completions = recentlyUsedCommands.concat(otherCommands); - return completions.length > 0 ? completions : [{ - value: nls("prompt.no-matching-commands", "No matching commands"), - error: 1 - }]; - } - }); -}; -prompt.modes = function (editor, callback) { - var modesArray = modelist.modes; - modesArray = modesArray.map(function (item) { - return { value: item.caption, mode: item.name }; - }); - prompt(editor, "", { - name: "modes", - selection: [0, Number.MAX_VALUE], - onAccept: function (data) { - if (data.item) { - var modeName = "ace/mode/" + data.item.mode; - editor.session.setMode(modeName); - } - }, - getPrefix: function (cmdLine) { - var currentPos = cmdLine.getCursorPosition(); - var filterValue = cmdLine.getValue(); - return filterValue.substring(0, currentPos.column); - }, - getCompletions: function (cmdLine) { - function getFilteredCompletions(modes, prefix) { - var resultCommands = JSON.parse(JSON.stringify(modes)); - var filtered = new FilteredList(resultCommands); - return filtered.filterCompletions(resultCommands, prefix); - } - var prefix = this.getPrefix(cmdLine); - var completions = getFilteredCompletions(modesArray, prefix); - return completions.length > 0 ? completions : [{ - "caption": "No mode matching", - "value": "No mode matching", - "error": 1 - }]; - } - }); -}; -dom.importCssString(".ace_prompt_container {\n max-width: 603px;\n width: 100%;\n margin: 20px auto;\n padding: 3px;\n background: white;\n border-radius: 2px;\n box-shadow: 0px 2px 3px 0px #555;\n}", "promtp.css?v=1760428868419", false); -exports.prompt = prompt; - -}); (function() { - ace.require(["ace/ext/prompt"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/BTPanel/static/vite/js/ext-searchbox.js b/BTPanel/static/vite/js/ext-searchbox.js deleted file mode 100644 index ab356d0c..00000000 --- a/BTPanel/static/vite/js/ext-searchbox.js +++ /dev/null @@ -1,385 +0,0 @@ -ace.define("ace/ext/searchbox-css",["require","exports","module"], function(require, exports, module){module.exports = "\n\n/* ------------------------------------------------------------------------------------------\n * Editor Search Form\n * --------------------------------------------------------------------------------------- */\n.ace_search {\n background-color: #ddd;\n color: #666;\n border: 1px solid #cbcbcb;\n border-top: 0 none;\n overflow: hidden;\n margin: 0;\n padding: 4px 6px 0 4px;\n position: absolute;\n top: 0;\n z-index: 99;\n white-space: normal;\n}\n.ace_search.left {\n border-left: 0 none;\n border-radius: 0px 0px 5px 0px;\n left: 0;\n}\n.ace_search.right {\n border-radius: 0px 0px 0px 5px;\n border-right: 0 none;\n right: 0;\n}\n\n.ace_search_form, .ace_replace_form {\n margin: 0 20px 4px 0;\n overflow: hidden;\n line-height: 1.9;\n}\n.ace_replace_form {\n margin-right: 0;\n}\n.ace_search_form.ace_nomatch {\n outline: 1px solid red;\n}\n\n.ace_search_field {\n border-radius: 3px 0 0 3px;\n background-color: white;\n color: black;\n border: 1px solid #cbcbcb;\n border-right: 0 none;\n outline: 0;\n padding: 0;\n font-size: inherit;\n margin: 0;\n line-height: inherit;\n padding: 0 6px;\n min-width: 17em;\n vertical-align: top;\n min-height: 1.8em;\n box-sizing: content-box;\n}\n.ace_searchbtn {\n border: 1px solid #cbcbcb;\n line-height: inherit;\n display: inline-block;\n padding: 0 6px;\n background: #fff;\n border-right: 0 none;\n border-left: 1px solid #dcdcdc;\n cursor: pointer;\n margin: 0;\n position: relative;\n color: #666;\n}\n.ace_searchbtn:last-child {\n border-radius: 0 3px 3px 0;\n border-right: 1px solid #cbcbcb;\n}\n.ace_searchbtn:disabled {\n background: none;\n cursor: default;\n}\n.ace_searchbtn:hover {\n background-color: #eef1f6;\n}\n.ace_searchbtn.prev, .ace_searchbtn.next {\n padding: 0px 0.7em\n}\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\n content: \"\";\n border: solid 2px #888;\n width: 0.5em;\n height: 0.5em;\n border-width: 2px 0 0 2px;\n display:inline-block;\n transform: rotate(-45deg);\n}\n.ace_searchbtn.next:after {\n border-width: 0 2px 2px 0 ;\n}\n.ace_searchbtn_close {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\n border-radius: 50%;\n border: 0 none;\n color: #656565;\n cursor: pointer;\n font: 16px/16px Arial;\n padding: 0;\n height: 14px;\n width: 14px;\n top: 9px;\n right: 7px;\n position: absolute;\n}\n.ace_searchbtn_close:hover {\n background-color: #656565;\n background-position: 50% 100%;\n color: white;\n}\n\n.ace_button {\n margin-left: 2px;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n overflow: hidden;\n opacity: 0.7;\n border: 1px solid rgba(100,100,100,0.23);\n padding: 1px;\n box-sizing: border-box!important;\n color: black;\n}\n\n.ace_button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_button:active {\n background-color: #ddd;\n}\n\n.ace_button.checked {\n border-color: #3399ff;\n opacity:1;\n}\n\n.ace_search_options{\n margin-bottom: 3px;\n text-align: right;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n clear: both;\n}\n\n.ace_search_counter {\n float: left;\n font-family: arial;\n padding: 0 8px;\n}"; - -}); - -ace.define("ace/ext/searchbox",["require","exports","module","ace/ext/searchbox","ace/ext/searchbox","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/ext/searchbox-css","ace/keyboard/hash_handler","ace/lib/keys","ace/config"], function(require, exports, module){/** - * ## Interactive search and replace UI extension for text editing - * - * Provides a floating search box interface with find/replace functionality including live search results, regex - * support, case sensitivity options, whole word matching, and scoped selection searching. Features keyboard shortcuts - * for quick access and navigation, with visual feedback for search matches and a counter showing current position - * in results. - * - * **Key Features:** - * - Real-time search with highlighted matches - * - Find and replace with individual or bulk operations - * - Advanced options: regex, case sensitivity, whole words, search in selection - * - Keyboard navigation and shortcuts - * - Visual match counter and no-match indicators - * - * **Usage:** - * ```javascript - * // Show search box - * require("ace/ext/searchbox").Search(editor); - * - * // Show with replace functionality - * require("ace/ext/searchbox").Search(editor, true); - * ``` - * - * @module - */ -"use strict"; -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var event = require("../lib/event"); -var searchboxCss = require("./searchbox-css"); -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var keyUtil = require("../lib/keys"); -var nls = require("../config").nls; -var MAX_COUNT = 999; -dom.importCssString(searchboxCss, "ace_searchbox", false); -var SearchBox = /** @class */ (function () { - function SearchBox(editor, range, showReplaceForm) { - this.activeInput; - this.element = dom.buildDom(["div", { class: "ace_search right" }, - ["span", { action: "hide", class: "ace_searchbtn_close" }], - ["div", { class: "ace_search_form" }, - ["input", { class: "ace_search_field", placeholder: nls("search-box.find.placeholder", "Search for"), spellcheck: "false" }], - ["span", { action: "findPrev", class: "ace_searchbtn prev" }, "\u200b"], - ["span", { action: "findNext", class: "ace_searchbtn next" }, "\u200b"], - ["span", { action: "findAll", class: "ace_searchbtn", title: "Alt-Enter" }, nls("search-box.find-all.text", "All")] - ], - ["div", { class: "ace_replace_form" }, - ["input", { class: "ace_search_field", placeholder: nls("search-box.replace.placeholder", "Replace with"), spellcheck: "false" }], - ["span", { action: "replaceAndFindNext", class: "ace_searchbtn" }, nls("search-box.replace-next.text", "Replace")], - ["span", { action: "replaceAll", class: "ace_searchbtn" }, nls("search-box.replace-all.text", "All")] - ], - ["div", { class: "ace_search_options" }, - ["span", { action: "toggleReplace", class: "ace_button", title: nls("search-box.toggle-replace.title", "Toggle Replace mode"), - style: "float:left;margin-top:-2px;padding:0 5px;" }, "+"], - ["span", { class: "ace_search_counter" }], - ["span", { action: "toggleRegexpMode", class: "ace_button", title: nls("search-box.toggle-regexp.title", "RegExp Search") }, ".*"], - ["span", { action: "toggleCaseSensitive", class: "ace_button", title: nls("search-box.toggle-case.title", "CaseSensitive Search") }, "Aa"], - ["span", { action: "toggleWholeWords", class: "ace_button", title: nls("search-box.toggle-whole-word.title", "Whole Word Search") }, "\\b"], - ["span", { action: "searchInSelection", class: "ace_button", title: nls("search-box.toggle-in-selection.title", "Search In Selection") }, "S"] - ] - ]); - this.setSession = this.setSession.bind(this); - this.$onEditorInput = this.onEditorInput.bind(this); - this.$init(); - this.setEditor(editor); - dom.importCssString(searchboxCss, "ace_searchbox", editor.container); - event.addListener(this.element, "touchstart", function (e) { e.stopPropagation(); }, editor); - } - SearchBox.prototype.setEditor = function (editor) { - editor.searchBox = this; - editor.renderer.scroller.appendChild(this.element); - this.editor = editor; - }; - SearchBox.prototype.setSession = function (e) { - this.searchRange = null; - this.$syncOptions(true); - }; - SearchBox.prototype.onEditorInput = function () { - this.find(false, false, true); - }; - SearchBox.prototype.$initElements = function (sb) { - this.searchBox = sb.querySelector(".ace_search_form"); - this.replaceBox = sb.querySelector(".ace_replace_form"); - this.searchOption = sb.querySelector("[action=searchInSelection]"); - this.replaceOption = sb.querySelector("[action=toggleReplace]"); - this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); - this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); - this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); - this.searchInput = this.searchBox.querySelector(".ace_search_field"); - this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); - this.searchCounter = sb.querySelector(".ace_search_counter"); - }; - SearchBox.prototype.$init = function () { - var sb = this.element; - this.$initElements(sb); - var _this = this; - event.addListener(sb, "mousedown", function (e) { - setTimeout(function () { - _this.activeInput.focus(); - }, 0); - event.stopPropagation(e); - }); - event.addListener(sb, "click", function (e) { - var t = e.target || e.srcElement; - var action = t.getAttribute("action"); - if (action && _this[action]) - _this[action](); - else if (_this.$searchBarKb.commands[action]) - _this.$searchBarKb.commands[action].exec(_this); - event.stopPropagation(e); - }); - event.addCommandKeyListener(sb, function (e, hashId, keyCode) { - var keyString = keyUtil.keyCodeToString(keyCode); - var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); - if (command && command.exec) { - command.exec(_this); - event.stopEvent(e); - } - }); - this.$onChange = lang.delayedCall(function () { - _this.find(false, false); - }); - event.addListener(this.searchInput, "input", function () { - _this.$onChange.schedule(20); - }); - event.addListener(this.searchInput, "focus", function () { - _this.activeInput = _this.searchInput; - _this.searchInput.value && _this.highlight(); - }); - event.addListener(this.replaceInput, "focus", function () { - _this.activeInput = _this.replaceInput; - _this.searchInput.value && _this.highlight(); - }); - }; - SearchBox.prototype.setSearchRange = function (range) { - this.searchRange = range; - if (range) { - this.searchRangeMarker = this.editor.session.addMarker(range, "ace_active-line"); - } - else if (this.searchRangeMarker) { - this.editor.session.removeMarker(this.searchRangeMarker); - this.searchRangeMarker = null; - } - }; - SearchBox.prototype.$syncOptions = function (preventScroll) { - dom.setCssClass(this.replaceOption, "checked", this.searchRange); - dom.setCssClass(this.searchOption, "checked", this.searchOption.checked); - this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+"; - dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); - dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); - dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); - var readOnly = this.editor.getReadOnly(); - this.replaceOption.style.display = readOnly ? "none" : ""; - this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? "" : "none"; - this.find(false, false, preventScroll); - }; - SearchBox.prototype.highlight = function (re) { - this.editor.session.highlight(re || this.editor.$search.$options.re); - this.editor.renderer.updateBackMarkers(); - }; - SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) { - if (!this.editor.session) - return; - var range = this.editor.find(this.searchInput.value, { - skipCurrent: skipCurrent, - backwards: backwards, - wrap: true, - regExp: this.regExpOption.checked, - caseSensitive: this.caseSensitiveOption.checked, - wholeWord: this.wholeWordOption.checked, - preventScroll: preventScroll, - range: this.searchRange - }); - var noMatch = !range && this.searchInput.value; - dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); - this.editor._emit("findSearchBox", { match: !noMatch }); - this.highlight(); - this.updateCounter(); - }; - SearchBox.prototype.updateCounter = function () { - var editor = this.editor; - var regex = editor.$search.$options.re; - var supportsUnicodeFlag = regex.unicode; - var all = 0; - var before = 0; - if (regex) { - var value = this.searchRange - ? editor.session.getTextRange(this.searchRange) - : editor.getValue(); - if (editor.$search.$isMultilineSearch(editor.getLastSearchOptions())) { - value = value.replace(/\r\n|\r|\n/g, "\n"); - editor.session.doc.$autoNewLine = "\n"; - } - var offset = editor.session.doc.positionToIndex(editor.selection.anchor); - if (this.searchRange) - offset -= editor.session.doc.positionToIndex(this.searchRange.start); - var last = regex.lastIndex = 0; - var m; - while ((m = regex.exec(value))) { - all++; - last = m.index; - if (last <= offset) - before++; - if (all > MAX_COUNT) - break; - if (!m[0]) { - regex.lastIndex = last += lang.skipEmptyMatch(value, last, supportsUnicodeFlag); - if (last >= value.length) - break; - } - } - } - this.searchCounter.textContent = nls("search-box.search-counter", "$0 of $1", [before, (all > MAX_COUNT ? MAX_COUNT + "+" : all)]); - }; - SearchBox.prototype.findNext = function () { - this.find(true, false); - }; - SearchBox.prototype.findPrev = function () { - this.find(true, true); - }; - SearchBox.prototype.findAll = function () { - var range = this.editor.findAll(this.searchInput.value, { - regExp: this.regExpOption.checked, - caseSensitive: this.caseSensitiveOption.checked, - wholeWord: this.wholeWordOption.checked - }); - var noMatch = !range && this.searchInput.value; - dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); - this.editor._emit("findSearchBox", { match: !noMatch }); - this.highlight(); - this.hide(); - }; - SearchBox.prototype.replace = function () { - if (!this.editor.getReadOnly()) - this.editor.replace(this.replaceInput.value); - }; - SearchBox.prototype.replaceAndFindNext = function () { - if (!this.editor.getReadOnly()) { - this.editor.replace(this.replaceInput.value); - this.findNext(); - } - }; - SearchBox.prototype.replaceAll = function () { - if (!this.editor.getReadOnly()) - this.editor.replaceAll(this.replaceInput.value); - }; - SearchBox.prototype.hide = function () { - this.active = false; - this.setSearchRange(null); - this.editor.off("changeSession", this.setSession); - this.editor.off("input", this.$onEditorInput); - this.element.style.display = "none"; - this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); - this.editor.focus(); - }; - SearchBox.prototype.show = function (value, isReplace) { - this.active = true; - this.editor.on("changeSession", this.setSession); - this.editor.on("input", this.$onEditorInput); - this.element.style.display = ""; - this.replaceOption.checked = isReplace; - if (this.editor.$search.$options.regExp) - value = lang.escapeRegExp(value); - if (value != undefined) - this.searchInput.value = value; - this.searchInput.focus(); - this.searchInput.select(); - this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); - this.$syncOptions(true); - }; - SearchBox.prototype.isFocused = function () { - var el = document.activeElement; - return el == this.searchInput || el == this.replaceInput; - }; - return SearchBox; -}()); -var $searchBarKb = new HashHandler(); -$searchBarKb.bindKeys({ - "Ctrl-f|Command-f": function (sb) { - var isReplace = sb.isReplace = !sb.isReplace; - sb.replaceBox.style.display = isReplace ? "" : "none"; - sb.replaceOption.checked = false; - sb.$syncOptions(); - sb.searchInput.focus(); - }, - "Ctrl-H|Command-Option-F": function (sb) { - if (sb.editor.getReadOnly()) - return; - sb.replaceOption.checked = true; - sb.$syncOptions(); - sb.replaceInput.focus(); - }, - "Ctrl-G|Command-G": function (sb) { - sb.findNext(); - }, - "Ctrl-Shift-G|Command-Shift-G": function (sb) { - sb.findPrev(); - }, - "esc": function (sb) { - setTimeout(function () { sb.hide(); }); - }, - "Return": function (sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findNext(); - }, - "Shift-Return": function (sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findPrev(); - }, - "Alt-Return": function (sb) { - if (sb.activeInput == sb.replaceInput) - sb.replaceAll(); - sb.findAll(); - }, - "Tab": function (sb) { - (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); - } -}); -$searchBarKb.addCommands([{ - name: "toggleRegexpMode", - bindKey: { win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/" }, - exec: function (sb) { - sb.regExpOption.checked = !sb.regExpOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleCaseSensitive", - bindKey: { win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I" }, - exec: function (sb) { - sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleWholeWords", - bindKey: { win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W" }, - exec: function (sb) { - sb.wholeWordOption.checked = !sb.wholeWordOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleReplace", - exec: function (sb) { - sb.replaceOption.checked = !sb.replaceOption.checked; - sb.$syncOptions(); - } - }, { - name: "searchInSelection", - exec: function (sb) { - sb.searchOption.checked = !sb.searchRange; - sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); - sb.$syncOptions(); - } - }]); -var $closeSearchBarKb = new HashHandler([{ - bindKey: "Esc", - name: "closeSearchBar", - exec: function (editor) { - editor.searchBox.hide(); - } - }]); -SearchBox.prototype.$searchBarKb = $searchBarKb; -SearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb; -exports.SearchBox = SearchBox; -exports.Search = function (editor, isReplace) { - var sb = editor.searchBox || new SearchBox(editor); - var range = editor.session.selection.getRange(); - var value = range.isMultiLine() ? "" : editor.session.getTextRange(range); - sb.show(value, isReplace); -}; - -}); (function() { - ace.require(["ace/ext/searchbox"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/BTPanel/static/vite/js/file-detail-legacy.js b/BTPanel/static/vite/js/file-detail-legacy.js index b4f03274..f10c3958 100644 --- a/BTPanel/static/vite/js/file-detail-legacy.js +++ b/BTPanel/static/vite/js/file-detail-legacy.js @@ -1 +1 @@ -System.register(["./page_layout-legacy.js?v=1760428868419","./index-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,t){"use strict";var l,a,i,n,o,d,u,c,s,_,r,m,f,p,y,b,x;return{setters:[e=>{l=e.a6,a=e.o,i=e.a7,n=e.a},e=>{o=e._},e=>{d=e.e},e=>{u=e.k,c=e.P,s=e.af,_=e.R,r=e.V,m=e.W,f=e.a3,p=e.j,y=e.a4,b=e.U,x=e._},null,null,null],execute:function(){const h={class:"p-[2rem]"};e("default",u({__name:"file-detail",props:{data:{}},setup(e){const u=x(()=>n(()=>t.import("./file-edit-legacy.js?v=1760428868419"),void 0)),{t:$}=c(),g=e,{data:S}=s(g),j=d($("Home.Security.index_8")),H=()=>{j.data.path=S.value.filepath,j.show=!0};return(e,t)=>{const n=l,d=a,c=i,s=o;return r(),_("div",h,[m(c,{bordered:"",size:"medium",column:2},{default:f(()=>[m(n,{label:e.$t("Component.SelectPath.index_3")},{default:f(()=>[p(y(b(S).filename),1)]),_:1},8,["label"]),m(n,{label:e.$t("Docker.LocalImage.index_22")},{default:f(()=>[p(y(b(S).filepath),1)]),_:1},8,["label"]),m(n,{label:"MD5"},{default:f(()=>[p(y(b(S).md5),1)]),_:1}),m(n,{label:e.$t("Home.Security.index_1")},{default:f(()=>[p(y(b(S).threat_type),1)]),_:1},8,["label"]),m(n,{label:e.$t("Home.Security.index_2")},{default:f(()=>[p(y(b(S).quarantined?e.$t("Account.Disk.disk_810348-10"):e.$t("Crontab.Script.index_13")),1)]),_:1},8,["label"]),m(n,{label:e.$t("Home.Security.index_3")},{default:f(()=>[m(d,{onClick:H},{default:f(()=>[p(y(e.$t("Mail.Email.index_5")),1)]),_:1})]),_:1},8,["label"]),m(n,{label:e.$t("Home.Security.index_4"),span:2},{default:f(()=>[p(y(e.$t("Home.Security.index_6")),1)]),_:1},8,["label"]),m(n,{label:e.$t("Home.Security.index_5"),span:2},{default:f(()=>[p(y(e.$t("Home.Security.index_7")),1)]),_:1},8,["label"])]),_:1}),m(s,{show:b(j).show,"onUpdate:show":t[0]||(t[0]=e=>b(j).show=e),title:b(j).title,data:b(j).data,width:700,footer:!1,component:b(u)},null,8,["show","title","data","component"])])}}}))}}}); +System.register(["./page_layout-legacy.js?v=1762424784323","./index-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,t){"use strict";var l,a,i,n,o,d,u,c,s,_,r,m,f,p,y,b,x;return{setters:[e=>{l=e.a6,a=e.o,i=e.a7,n=e.a},e=>{o=e._},e=>{d=e.e},e=>{u=e.k,c=e.P,s=e.af,_=e.R,r=e.V,m=e.W,f=e.a3,p=e.j,y=e.a4,b=e.U,x=e._},null,null,null],execute:function(){const h={class:"p-[2rem]"};e("default",u({__name:"file-detail",props:{data:{}},setup(e){const u=x(()=>n(()=>t.import("./file-edit-legacy.js?v=1762424784323"),void 0)),{t:$}=c(),g=e,{data:S}=s(g),j=d($("Home.Security.index_8")),H=()=>{j.data.path=S.value.filepath,j.show=!0};return(e,t)=>{const n=l,d=a,c=i,s=o;return r(),_("div",h,[m(c,{bordered:"",size:"medium",column:2},{default:f(()=>[m(n,{label:e.$t("Component.SelectPath.index_3")},{default:f(()=>[p(y(b(S).filename),1)]),_:1},8,["label"]),m(n,{label:e.$t("Docker.LocalImage.index_22")},{default:f(()=>[p(y(b(S).filepath),1)]),_:1},8,["label"]),m(n,{label:"MD5"},{default:f(()=>[p(y(b(S).md5),1)]),_:1}),m(n,{label:e.$t("Home.Security.index_1")},{default:f(()=>[p(y(b(S).threat_type),1)]),_:1},8,["label"]),m(n,{label:e.$t("Home.Security.index_2")},{default:f(()=>[p(y(b(S).quarantined?e.$t("Account.Disk.disk_810348-10"):e.$t("Crontab.Script.index_13")),1)]),_:1},8,["label"]),m(n,{label:e.$t("Home.Security.index_3")},{default:f(()=>[m(d,{onClick:H},{default:f(()=>[p(y(e.$t("Mail.Email.index_5")),1)]),_:1})]),_:1},8,["label"]),m(n,{label:e.$t("Home.Security.index_4"),span:2},{default:f(()=>[p(y(e.$t("Home.Security.index_6")),1)]),_:1},8,["label"]),m(n,{label:e.$t("Home.Security.index_5"),span:2},{default:f(()=>[p(y(e.$t("Home.Security.index_7")),1)]),_:1},8,["label"])]),_:1}),m(s,{show:b(j).show,"onUpdate:show":t[0]||(t[0]=e=>b(j).show=e),title:b(j).title,data:b(j).data,width:700,footer:!1,component:b(u)},null,8,["show","title","data","component"])])}}}))}}}); diff --git a/BTPanel/static/vite/js/file-detail.js b/BTPanel/static/vite/js/file-detail.js index 47fd8f9d..c406270f 100644 --- a/BTPanel/static/vite/js/file-detail.js +++ b/BTPanel/static/vite/js/file-detail.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/file-edit.js?v=1760428868419","js/page_layout.js?v=1760428868419","js/vue.js?v=1760428868419","js/__commonjsHelpers__.js?v=1760428868419","js/naive.js?v=1760428868419","js/common.js?v=1760428868419","js/public.js?v=1760428868419","css/public.css?v=1760428868419","css/page_layout.css?v=1760428868419"])))=>i.map(i=>d[i]); -import{a6 as e,o as a,a7 as t,a as l}from"./page_layout.js?v=1760428868419";import{_ as o}from"./index.js?v=1760428868419";import{e as i}from"./public.js?v=1760428868419";import{k as s,P as d,af as n,R as _,V as m,W as r,a3 as u,j as p,a4 as c,U as f,_ as b}from"./vue.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const x={class:"p-[2rem]"},h=s({__name:"file-detail",props:{data:{}},setup(s){const h=b(()=>l(()=>import("./file-edit.js?v=1760428868419"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))),{t:$}=d(),j=s,{data:y}=n(j),S=i($("Home.Security.index_8")),H=()=>{S.data.path=y.value.filepath,S.show=!0};return(l,i)=>{const s=e,d=a,n=t,b=o;return m(),_("div",x,[r(n,{bordered:"",size:"medium",column:2},{default:u(()=>[r(s,{label:l.$t("Component.SelectPath.index_3")},{default:u(()=>[p(c(f(y).filename),1)]),_:1},8,["label"]),r(s,{label:l.$t("Docker.LocalImage.index_22")},{default:u(()=>[p(c(f(y).filepath),1)]),_:1},8,["label"]),r(s,{label:"MD5"},{default:u(()=>[p(c(f(y).md5),1)]),_:1}),r(s,{label:l.$t("Home.Security.index_1")},{default:u(()=>[p(c(f(y).threat_type),1)]),_:1},8,["label"]),r(s,{label:l.$t("Home.Security.index_2")},{default:u(()=>[p(c(f(y).quarantined?l.$t("Account.Disk.disk_810348-10"):l.$t("Crontab.Script.index_13")),1)]),_:1},8,["label"]),r(s,{label:l.$t("Home.Security.index_3")},{default:u(()=>[r(d,{onClick:H},{default:u(()=>[p(c(l.$t("Mail.Email.index_5")),1)]),_:1})]),_:1},8,["label"]),r(s,{label:l.$t("Home.Security.index_4"),span:2},{default:u(()=>[p(c(l.$t("Home.Security.index_6")),1)]),_:1},8,["label"]),r(s,{label:l.$t("Home.Security.index_5"),span:2},{default:u(()=>[p(c(l.$t("Home.Security.index_7")),1)]),_:1},8,["label"])]),_:1}),r(b,{show:f(S).show,"onUpdate:show":i[0]||(i[0]=e=>f(S).show=e),title:f(S).title,data:f(S).data,width:700,footer:!1,component:f(h)},null,8,["show","title","data","component"])])}}});export{h as default}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/file-edit.js?v=1762424784323","js/page_layout.js?v=1762424784323","js/vue.js?v=1762424784323","js/__commonjsHelpers__.js?v=1762424784323","js/naive.js?v=1762424784323","js/common.js?v=1762424784323","js/public.js?v=1762424784323","css/public.css?v=1762424784323","css/page_layout.css?v=1762424784323"])))=>i.map(i=>d[i]); +import{a6 as e,o as a,a7 as t,a as l}from"./page_layout.js?v=1762424784323";import{_ as o}from"./index.js?v=1762424784323";import{e as i}from"./public.js?v=1762424784323";import{k as s,P as d,af as n,R as _,V as m,W as r,a3 as u,j as p,a4 as c,U as f,_ as b}from"./vue.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const x={class:"p-[2rem]"},h=s({__name:"file-detail",props:{data:{}},setup(s){const h=b(()=>l(()=>import("./file-edit.js?v=1762424784323"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))),{t:$}=d(),j=s,{data:y}=n(j),S=i($("Home.Security.index_8")),H=()=>{S.data.path=y.value.filepath,S.show=!0};return(l,i)=>{const s=e,d=a,n=t,b=o;return m(),_("div",x,[r(n,{bordered:"",size:"medium",column:2},{default:u(()=>[r(s,{label:l.$t("Component.SelectPath.index_3")},{default:u(()=>[p(c(f(y).filename),1)]),_:1},8,["label"]),r(s,{label:l.$t("Docker.LocalImage.index_22")},{default:u(()=>[p(c(f(y).filepath),1)]),_:1},8,["label"]),r(s,{label:"MD5"},{default:u(()=>[p(c(f(y).md5),1)]),_:1}),r(s,{label:l.$t("Home.Security.index_1")},{default:u(()=>[p(c(f(y).threat_type),1)]),_:1},8,["label"]),r(s,{label:l.$t("Home.Security.index_2")},{default:u(()=>[p(c(f(y).quarantined?l.$t("Account.Disk.disk_810348-10"):l.$t("Crontab.Script.index_13")),1)]),_:1},8,["label"]),r(s,{label:l.$t("Home.Security.index_3")},{default:u(()=>[r(d,{onClick:H},{default:u(()=>[p(c(l.$t("Mail.Email.index_5")),1)]),_:1})]),_:1},8,["label"]),r(s,{label:l.$t("Home.Security.index_4"),span:2},{default:u(()=>[p(c(l.$t("Home.Security.index_6")),1)]),_:1},8,["label"]),r(s,{label:l.$t("Home.Security.index_5"),span:2},{default:u(()=>[p(c(l.$t("Home.Security.index_7")),1)]),_:1},8,["label"])]),_:1}),r(b,{show:f(S).show,"onUpdate:show":i[0]||(i[0]=e=>f(S).show=e),title:f(S).title,data:f(S).data,width:700,footer:!1,component:f(h)},null,8,["show","title","data","component"])])}}});export{h as default}; diff --git a/BTPanel/static/vite/js/file-edit-legacy.js b/BTPanel/static/vite/js/file-edit-legacy.js index 082f832a..1ce30ae1 100644 --- a/BTPanel/static/vite/js/file-edit-legacy.js +++ b/BTPanel/static/vite/js/file-edit-legacy.js @@ -1 +1 @@ -System.register(["./page_layout-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419"],function(e,t){"use strict";var l,a,n,s,u,c,i,o;return{setters:[e=>{l=e.a},e=>{a=e.k,n=e.r,s=e.a2,u=e.V,c=e.ak,i=e.U,o=e._},null,null,null,null],execute:function(){e("default",a({__name:"file-edit",props:{path:{default:""}},setup(e){const a=o(()=>l(()=>t.import("./index-legacy100.js?v=1760428868419"),void 0)),p=n(e.path||"");return(e,t)=>(u(),s(i(a),{ref:"configRef",path:i(p),"onUpdate:path":t[0]||(t[0]=e=>c(p)?p.value=e:null),height:400,"show-tips":!1,init:""},null,8,["path"]))}}))}}}); +System.register(["./page_layout-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323"],function(e,t){"use strict";var l,a,n,s,u,c,i,o;return{setters:[e=>{l=e.a},e=>{a=e.k,n=e.r,s=e.a2,u=e.V,c=e.ak,i=e.U,o=e._},null,null,null,null],execute:function(){e("default",a({__name:"file-edit",props:{path:{default:""}},setup(e){const a=o(()=>l(()=>t.import("./index-legacy100.js?v=1762424784323"),void 0)),p=n(e.path||"");return(e,t)=>(u(),s(i(a),{ref:"configRef",path:i(p),"onUpdate:path":t[0]||(t[0]=e=>c(p)?p.value=e:null),height:400,"show-tips":!1,init:""},null,8,["path"]))}}))}}}); diff --git a/BTPanel/static/vite/js/file-edit.js b/BTPanel/static/vite/js/file-edit.js index 28594eea..27e164e9 100644 --- a/BTPanel/static/vite/js/file-edit.js +++ b/BTPanel/static/vite/js/file-edit.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/index100.js?v=1760428868419","js/index101.js?v=1760428868419","js/__commonjsHelpers__.js?v=1760428868419","js/page_layout.js?v=1760428868419","js/vue.js?v=1760428868419","js/naive.js?v=1760428868419","js/common.js?v=1760428868419","js/public.js?v=1760428868419","css/public.css?v=1760428868419","css/page_layout.css?v=1760428868419","js/file.js?v=1760428868419","js/theme-monokai.js?v=1760428868419","css/index16.css?v=1760428868419"])))=>i.map(i=>d[i]); -import{a}from"./page_layout.js?v=1760428868419";import{k as t,r as s,a2 as o,V as p,ak as e,U as i,_ as r}from"./vue.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./public.js?v=1760428868419";const m=t({__name:"file-edit",props:{path:{default:""}},setup(t){const m=r(()=>a(()=>import("./index100.js?v=1760428868419"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]))),n=s(t.path||"");return(a,t)=>(p(),o(i(m),{ref:"configRef",path:i(n),"onUpdate:path":t[0]||(t[0]=a=>e(n)?n.value=a:null),height:400,"show-tips":!1,init:""},null,8,["path"]))}});export{m as default}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/index100.js?v=1762424784323","js/theme-monokai.js?v=1762424784323","js/__commonjsHelpers__.js?v=1762424784323","js/page_layout.js?v=1762424784323","js/vue.js?v=1762424784323","js/naive.js?v=1762424784323","js/common.js?v=1762424784323","js/public.js?v=1762424784323","css/public.css?v=1762424784323","css/page_layout.css?v=1762424784323","js/file.js?v=1762424784323","css/index16.css?v=1762424784323"])))=>i.map(i=>d[i]); +import{a}from"./page_layout.js?v=1762424784323";import{k as t,r as s,a2 as o,V as p,ak as e,U as i,_ as r}from"./vue.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./public.js?v=1762424784323";const m=t({__name:"file-edit",props:{path:{default:""}},setup(t){const m=r(()=>a(()=>import("./index100.js?v=1762424784323"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11]))),n=s(t.path||"");return(a,t)=>(p(),o(i(m),{ref:"configRef",path:i(n),"onUpdate:path":t[0]||(t[0]=a=>e(n)?n.value=a:null),height:400,"show-tips":!1,init:""},null,8,["path"]))}});export{m as default}; diff --git a/BTPanel/static/vite/js/file-legacy.js b/BTPanel/static/vite/js/file-legacy.js index b8224031..e627f332 100644 --- a/BTPanel/static/vite/js/file-legacy.js +++ b/BTPanel/static/vite/js/file-legacy.js @@ -1 +1 @@ -System.register(["./page_layout-legacy.js?v=1760428868419"],function(e,t){"use strict";var s,i;return{setters:[e=>{s=e.t,i=e.i}],execute:function(){const{t:t}=i.global;e("b",e=>s.post("/files?action=GetDir",{...e,disk:!0})),e("a",e=>s.post("/files?action=DeleteFile",e,{requestOptions:{loading:t("WP.api.tamper_8"),successMessage:!0}})),e("e",()=>s.post("/files?action=Get_Recycle_bin")),e("g",e=>s.post("/files?action=GetFileBody",e)),e("s",e=>s.post("/files?action=SaveFileBody",e,{requestOptions:{loading:t("Site.Api.Index_2"),errorMessage:{close:!0}}})),e("u",(e,t)=>s.post("/files?action=upload",e,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:e=>{}})),e("c",(e,t)=>s.post("/files?action=upload",e,{headers:{"Content-Type":"multipart/form-data"},requestOptions:{isOriginalResult:!0},onUploadProgress:e=>{t?.(e)}})),e("d",e=>s.post("/files?action=DeleteFile",e,{requestOptions:{loading:"Deleting file, please wait...",successMessage:!0}}))}}}); +System.register(["./page_layout-legacy.js?v=1762424784323"],function(e,t){"use strict";var s,i;return{setters:[e=>{s=e.t,i=e.i}],execute:function(){const{t:t}=i.global;e("b",e=>s.post("/files?action=GetDir",{...e,disk:!0})),e("a",e=>s.post("/files?action=DeleteFile",e,{requestOptions:{loading:t("WP.api.tamper_8"),successMessage:!0}})),e("e",()=>s.post("/files?action=Get_Recycle_bin")),e("g",e=>s.post("/files?action=GetFileBody",e)),e("s",e=>s.post("/files?action=SaveFileBody",e,{requestOptions:{loading:t("Site.Api.Index_2"),errorMessage:{close:!0}}})),e("u",(e,t)=>s.post("/files?action=upload",e,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:e=>{}})),e("c",(e,t)=>s.post("/files?action=upload",e,{headers:{"Content-Type":"multipart/form-data"},requestOptions:{isOriginalResult:!0},onUploadProgress:e=>{t?.(e)}})),e("d",e=>s.post("/files?action=DeleteFile",e,{requestOptions:{loading:"Deleting file, please wait...",successMessage:!0}}))}}}); diff --git a/BTPanel/static/vite/js/file-legacy2.js b/BTPanel/static/vite/js/file-legacy2.js index 3fb8567b..8e214522 100644 --- a/BTPanel/static/vite/js/file-legacy2.js +++ b/BTPanel/static/vite/js/file-legacy2.js @@ -1 +1 @@ -System.register(["./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419"],function(e,t){"use strict";var c,a,o,n;return{setters:[e=>{c=e.a},e=>{a=e.u},e=>{o=e.P,n=e._}],execute:function(){e("i",function(e){return/^[a-zA-Z]:\\/.test(e)||/^\/[a-zA-Z0-9]*/.test(e)}),e("o",e=>{const{t:i}=o();a({title:i("Component.SelectPath.index_7"),width:720,height:540,footer:!0,data:{path:e.path||"/www/wwwroot",checkedType:e.checkedType||["dir"],callback:e.onCheckedSuccess},component:n(()=>c(()=>t.import("./index-legacy145.js?v=1760428868419"),void 0))})})}}}); +System.register(["./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323"],function(e,t){"use strict";var c,a,o,n;return{setters:[e=>{c=e.a},e=>{a=e.u},e=>{o=e.P,n=e._}],execute:function(){e("i",function(e){return/^[a-zA-Z]:\\/.test(e)||/^\/[a-zA-Z0-9]*/.test(e)}),e("o",e=>{const{t:i}=o();a({title:i("Component.SelectPath.index_7"),width:720,height:540,footer:!0,data:{path:e.path||"/www/wwwroot",checkedType:e.checkedType||["dir"],callback:e.onCheckedSuccess},component:n(()=>c(()=>t.import("./index-legacy144.js?v=1762424784323"),void 0))})})}}}); diff --git a/BTPanel/static/vite/js/file-version.js b/BTPanel/static/vite/js/file-version.js index 61f7b647..e545cebe 100644 --- a/BTPanel/static/vite/js/file-version.js +++ b/BTPanel/static/vite/js/file-version.js @@ -1 +1 @@ -1760428868419 \ No newline at end of file +1762424784323 \ No newline at end of file diff --git a/BTPanel/static/vite/js/file.js b/BTPanel/static/vite/js/file.js index d77c801d..4284dd32 100644 --- a/BTPanel/static/vite/js/file.js +++ b/BTPanel/static/vite/js/file.js @@ -1 +1 @@ -import{t as e,i as s}from"./page_layout.js?v=1760428868419";const{t:t}=s.global,a=s=>e.post("/files?action=GetDir",{...s,disk:!0}),o=s=>e.post("/files?action=DeleteFile",s,{requestOptions:{loading:t("WP.api.tamper_8"),successMessage:!0}}),i=()=>e.post("/files?action=Get_Recycle_bin"),l=s=>e.post("/files?action=GetFileBody",s),n=s=>e.post("/files?action=SaveFileBody",s,{requestOptions:{loading:t("Site.Api.Index_2"),errorMessage:{close:!0}}}),p=(s,t)=>e.post("/files?action=upload",s,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:e=>{}}),r=(s,t)=>e.post("/files?action=upload",s,{headers:{"Content-Type":"multipart/form-data"},requestOptions:{isOriginalResult:!0},onUploadProgress:e=>{null==t||t(e)}}),c=s=>e.post("/files?action=DeleteFile",s,{requestOptions:{loading:"Deleting file, please wait...",successMessage:!0}});export{o as a,a as b,r as c,c as d,i as e,l as g,n as s,p as u}; +import{t as e,i as s}from"./page_layout.js?v=1762424784323";const{t:t}=s.global,a=s=>e.post("/files?action=GetDir",{...s,disk:!0}),o=s=>e.post("/files?action=DeleteFile",s,{requestOptions:{loading:t("WP.api.tamper_8"),successMessage:!0}}),i=()=>e.post("/files?action=Get_Recycle_bin"),l=s=>e.post("/files?action=GetFileBody",s),n=s=>e.post("/files?action=SaveFileBody",s,{requestOptions:{loading:t("Site.Api.Index_2"),errorMessage:{close:!0}}}),p=(s,t)=>e.post("/files?action=upload",s,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:e=>{}}),r=(s,t)=>e.post("/files?action=upload",s,{headers:{"Content-Type":"multipart/form-data"},requestOptions:{isOriginalResult:!0},onUploadProgress:e=>{null==t||t(e)}}),c=s=>e.post("/files?action=DeleteFile",s,{requestOptions:{loading:"Deleting file, please wait...",successMessage:!0}});export{o as a,a as b,r as c,c as d,i as e,l as g,n as s,p as u}; diff --git a/BTPanel/static/vite/js/file2.js b/BTPanel/static/vite/js/file2.js index a20bcb72..2babdbd1 100644 --- a/BTPanel/static/vite/js/file2.js +++ b/BTPanel/static/vite/js/file2.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/index145.js?v=1760428868419","js/public.js?v=1760428868419","js/page_layout.js?v=1760428868419","js/vue.js?v=1760428868419","js/__commonjsHelpers__.js?v=1760428868419","js/naive.js?v=1760428868419","js/common.js?v=1760428868419","css/page_layout.css?v=1760428868419","css/public.css?v=1760428868419","js/file.js?v=1760428868419","css/index71.css?v=1760428868419"])))=>i.map(i=>d[i]); -import{a as t}from"./page_layout.js?v=1760428868419";import{u as e}from"./public.js?v=1760428868419";import{P as o,_ as a}from"./vue.js?v=1760428868419";const s=s=>{const{t:c}=o();e({title:c("Component.SelectPath.index_7"),width:720,height:540,footer:!0,data:{path:s.path||"/www/wwwroot",checkedType:s.checkedType||["dir"],callback:s.onCheckedSuccess},component:a(()=>t(()=>import("./index145.js?v=1760428868419"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])))})};function c(t){return/^[a-zA-Z]:\\/.test(t)||/^\/[a-zA-Z0-9]*/.test(t)}export{c as i,s as o}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/index144.js?v=1762424784323","js/public.js?v=1762424784323","js/page_layout.js?v=1762424784323","js/vue.js?v=1762424784323","js/__commonjsHelpers__.js?v=1762424784323","js/naive.js?v=1762424784323","js/common.js?v=1762424784323","css/page_layout.css?v=1762424784323","css/public.css?v=1762424784323","js/file.js?v=1762424784323","css/index71.css?v=1762424784323"])))=>i.map(i=>d[i]); +import{a as t}from"./page_layout.js?v=1762424784323";import{u as e}from"./public.js?v=1762424784323";import{P as o,_ as a}from"./vue.js?v=1762424784323";const s=s=>{const{t:c}=o();e({title:c("Component.SelectPath.index_7"),width:720,height:540,footer:!0,data:{path:s.path||"/www/wwwroot",checkedType:s.checkedType||["dir"],callback:s.onCheckedSuccess},component:a(()=>t(()=>import("./index144.js?v=1762424784323"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])))})};function c(t){return/^[a-zA-Z]:\\/.test(t)||/^\/[a-zA-Z0-9]*/.test(t)}export{c as i,s as o}; diff --git a/BTPanel/static/vite/js/filter-legacy.js b/BTPanel/static/vite/js/filter-legacy.js index 55b14fd7..cd3ea3de 100644 --- a/BTPanel/static/vite/js/filter-legacy.js +++ b/BTPanel/static/vite/js/filter-legacy.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./site-legacy3.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,l){"use strict";var a,i,t,n,u,r,s,o,c,f,d,m,g,p,x,_,y,v,C,S,W,N;return{setters:[e=>{a=e.c,i=e.f,t=e.h,n=e._},e=>{u=e.w,r=e.m},e=>{s=e.w,o=e.x,c=e.A},e=>{f=e.au,d=e.aC},e=>{m=e.k,g=e.P,p=e.e,x=e.R,_=e.V,y=e.S,v=e.W,C=e.U,S=e.a3,W=e.j,N=e.a4},null,null],execute:function(){const l={class:"p-20px"},j={class:"flex mb-16px"},h={class:"flex-1 mr-16px"},$={class:"w-230px mr-16px"},w="url_rule";e("default",m({__name:"filter",props:{siteName:{default:""}},setup(e){const m=e,{t:b}=g(),k=p({url:"",filter:""}),U=async()=>{""!==k.url.trim()&&""!==k.filter.trim()?(await c({siteName:m.siteName,ruleName:w,ruleUri:k.url,ruleValue:k.filter}),k.url="",k.filter="",V()):r.error(b("Waf.Site.Config.index_85"))},{table:P,columns:A,setLoading:B}=a([{key:"uri",title:b("Waf.Site.Config.index_86")},{key:"name",title:b("Waf.Site.Config.index_87")},i({width:80,options:(e,l)=>[{label:b("Public.Btn.Del"),onClick:async()=>{await s({index:l,siteName:m.siteName,ruleName:w}),V()}}]})]),V=async()=>{try{B(!0);const{siteName:e}=m,{message:l}=await o({siteName:e,ruleName:w});u(l)&&(P.data=l.map(([e,l,a])=>({uri:e,name:l,value:a})))}finally{B(!1)}};return V(),(e,a)=>{const i=f,u=d,r=t,s=n;return _(),x("div",l,[y("div",j,[y("div",h,[v(i,{value:C(k).url,"onUpdate:value":a[0]||(a[0]=e=>C(k).url=e),placeholder:e.$t("Waf.Site.Config.index_67")},null,8,["value","placeholder"])]),y("div",$,[v(i,{value:C(k).filter,"onUpdate:value":a[1]||(a[1]=e=>C(k).filter=e),placeholder:e.$t("Waf.Site.Config.index_79")},null,8,["value","placeholder"])]),v(u,{type:"primary",onClick:U},{default:S(()=>[W(N(e.$t("Public.Btn.Add")),1)]),_:1})]),v(r,{"max-height":230,loading:C(P).loading,data:C(P).data,columns:C(A)},null,8,["loading","data","columns"]),v(s,{class:"mt-16px"},{default:S(()=>[y("li",null,N(e.$t("Waf.Site.Config.index_80")),1),y("li",null,N(e.$t("Waf.Site.Config.index_81")),1),y("li",null,N(e.$t("Waf.Site.Config.index_82")),1),y("li",null,N(e.$t("Waf.Site.Config.index_83")),1),y("li",null,N(e.$t("Waf.Site.Config.index_84")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./site-legacy3.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,l){"use strict";var a,i,t,n,u,r,s,o,c,f,d,m,g,p,x,_,y,v,C,S,W,N;return{setters:[e=>{a=e.c,i=e.f,t=e.h,n=e._},e=>{u=e.w,r=e.m},e=>{s=e.w,o=e.x,c=e.A},e=>{f=e.au,d=e.aC},e=>{m=e.k,g=e.P,p=e.e,x=e.R,_=e.V,y=e.S,v=e.W,C=e.U,S=e.a3,W=e.j,N=e.a4},null,null],execute:function(){const l={class:"p-20px"},j={class:"flex mb-16px"},h={class:"flex-1 mr-16px"},$={class:"w-230px mr-16px"},w="url_rule";e("default",m({__name:"filter",props:{siteName:{default:""}},setup(e){const m=e,{t:b}=g(),k=p({url:"",filter:""}),U=async()=>{""!==k.url.trim()&&""!==k.filter.trim()?(await c({siteName:m.siteName,ruleName:w,ruleUri:k.url,ruleValue:k.filter}),k.url="",k.filter="",V()):r.error(b("Waf.Site.Config.index_85"))},{table:P,columns:A,setLoading:B}=a([{key:"uri",title:b("Waf.Site.Config.index_86")},{key:"name",title:b("Waf.Site.Config.index_87")},i({width:80,options:(e,l)=>[{label:b("Public.Btn.Del"),onClick:async()=>{await s({index:l,siteName:m.siteName,ruleName:w}),V()}}]})]),V=async()=>{try{B(!0);const{siteName:e}=m,{message:l}=await o({siteName:e,ruleName:w});u(l)&&(P.data=l.map(([e,l,a])=>({uri:e,name:l,value:a})))}finally{B(!1)}};return V(),(e,a)=>{const i=f,u=d,r=t,s=n;return _(),x("div",l,[y("div",j,[y("div",h,[v(i,{value:C(k).url,"onUpdate:value":a[0]||(a[0]=e=>C(k).url=e),placeholder:e.$t("Waf.Site.Config.index_67")},null,8,["value","placeholder"])]),y("div",$,[v(i,{value:C(k).filter,"onUpdate:value":a[1]||(a[1]=e=>C(k).filter=e),placeholder:e.$t("Waf.Site.Config.index_79")},null,8,["value","placeholder"])]),v(u,{type:"primary",onClick:U},{default:S(()=>[W(N(e.$t("Public.Btn.Add")),1)]),_:1})]),v(r,{"max-height":230,loading:C(P).loading,data:C(P).data,columns:C(A)},null,8,["loading","data","columns"]),v(s,{class:"mt-16px"},{default:S(()=>[y("li",null,N(e.$t("Waf.Site.Config.index_80")),1),y("li",null,N(e.$t("Waf.Site.Config.index_81")),1),y("li",null,N(e.$t("Waf.Site.Config.index_82")),1),y("li",null,N(e.$t("Waf.Site.Config.index_83")),1),y("li",null,N(e.$t("Waf.Site.Config.index_84")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/filter.js b/BTPanel/static/vite/js/filter.js index bd3a60d7..ed3d1ed2 100644 --- a/BTPanel/static/vite/js/filter.js +++ b/BTPanel/static/vite/js/filter.js @@ -1 +1 @@ -import{c as a,f as e,h as l,_ as i}from"./public.js?v=1760428868419";import{w as t,m as s}from"./page_layout.js?v=1760428868419";import{w as n,x as r,A as o}from"./site3.js?v=1760428868419";import{au as u,aC as m}from"./naive.js?v=1760428868419";import{k as f,P as d,e as p,R as c,V as x,S as _,W as g,U as v,a3 as C,j as S,a4 as W}from"./vue.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const y={class:"p-20px"},N={class:"flex mb-16px"},j={class:"flex-1 mr-16px"},h={class:"w-230px mr-16px"},$="url_rule",w=f({__name:"filter",props:{siteName:{default:""}},setup(f){const w=f,{t:b}=d(),k=p({url:"",filter:""}),U=async()=>{""!==k.url.trim()&&""!==k.filter.trim()?(await o({siteName:w.siteName,ruleName:$,ruleUri:k.url,ruleValue:k.filter}),k.url="",k.filter="",V()):s.error(b("Waf.Site.Config.index_85"))},{table:P,columns:A,setLoading:B}=a([{key:"uri",title:b("Waf.Site.Config.index_86")},{key:"name",title:b("Waf.Site.Config.index_87")},e({width:80,options:(a,e)=>[{label:b("Public.Btn.Del"),onClick:async()=>{await n({index:e,siteName:w.siteName,ruleName:$}),V()}}]})]),V=async()=>{try{B(!0);const{siteName:a}=w,{message:e}=await r({siteName:a,ruleName:$});t(e)&&(P.data=e.map(([a,e,l])=>({uri:a,name:e,value:l})))}finally{B(!1)}};return V(),(a,e)=>{const t=u,s=m,n=l,r=i;return x(),c("div",y,[_("div",N,[_("div",j,[g(t,{value:v(k).url,"onUpdate:value":e[0]||(e[0]=a=>v(k).url=a),placeholder:a.$t("Waf.Site.Config.index_67")},null,8,["value","placeholder"])]),_("div",h,[g(t,{value:v(k).filter,"onUpdate:value":e[1]||(e[1]=a=>v(k).filter=a),placeholder:a.$t("Waf.Site.Config.index_79")},null,8,["value","placeholder"])]),g(s,{type:"primary",onClick:U},{default:C(()=>[S(W(a.$t("Public.Btn.Add")),1)]),_:1})]),g(n,{"max-height":230,loading:v(P).loading,data:v(P).data,columns:v(A)},null,8,["loading","data","columns"]),g(r,{class:"mt-16px"},{default:C(()=>[_("li",null,W(a.$t("Waf.Site.Config.index_80")),1),_("li",null,W(a.$t("Waf.Site.Config.index_81")),1),_("li",null,W(a.$t("Waf.Site.Config.index_82")),1),_("li",null,W(a.$t("Waf.Site.Config.index_83")),1),_("li",null,W(a.$t("Waf.Site.Config.index_84")),1)]),_:1})])}}});export{w as default}; +import{c as a,f as e,h as l,_ as i}from"./public.js?v=1762424784323";import{w as t,m as s}from"./page_layout.js?v=1762424784323";import{w as n,x as r,A as o}from"./site3.js?v=1762424784323";import{au as u,aC as m}from"./naive.js?v=1762424784323";import{k as f,P as d,e as p,R as c,V as x,S as _,W as g,U as v,a3 as C,j as S,a4 as W}from"./vue.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const y={class:"p-20px"},N={class:"flex mb-16px"},j={class:"flex-1 mr-16px"},h={class:"w-230px mr-16px"},$="url_rule",w=f({__name:"filter",props:{siteName:{default:""}},setup(f){const w=f,{t:b}=d(),k=p({url:"",filter:""}),U=async()=>{""!==k.url.trim()&&""!==k.filter.trim()?(await o({siteName:w.siteName,ruleName:$,ruleUri:k.url,ruleValue:k.filter}),k.url="",k.filter="",V()):s.error(b("Waf.Site.Config.index_85"))},{table:P,columns:A,setLoading:B}=a([{key:"uri",title:b("Waf.Site.Config.index_86")},{key:"name",title:b("Waf.Site.Config.index_87")},e({width:80,options:(a,e)=>[{label:b("Public.Btn.Del"),onClick:async()=>{await n({index:e,siteName:w.siteName,ruleName:$}),V()}}]})]),V=async()=>{try{B(!0);const{siteName:a}=w,{message:e}=await r({siteName:a,ruleName:$});t(e)&&(P.data=e.map(([a,e,l])=>({uri:a,name:e,value:l})))}finally{B(!1)}};return V(),(a,e)=>{const t=u,s=m,n=l,r=i;return x(),c("div",y,[_("div",N,[_("div",j,[g(t,{value:v(k).url,"onUpdate:value":e[0]||(e[0]=a=>v(k).url=a),placeholder:a.$t("Waf.Site.Config.index_67")},null,8,["value","placeholder"])]),_("div",h,[g(t,{value:v(k).filter,"onUpdate:value":e[1]||(e[1]=a=>v(k).filter=a),placeholder:a.$t("Waf.Site.Config.index_79")},null,8,["value","placeholder"])]),g(s,{type:"primary",onClick:U},{default:C(()=>[S(W(a.$t("Public.Btn.Add")),1)]),_:1})]),g(n,{"max-height":230,loading:v(P).loading,data:v(P).data,columns:v(A)},null,8,["loading","data","columns"]),g(r,{class:"mt-16px"},{default:C(()=>[_("li",null,W(a.$t("Waf.Site.Config.index_80")),1),_("li",null,W(a.$t("Waf.Site.Config.index_81")),1),_("li",null,W(a.$t("Waf.Site.Config.index_82")),1),_("li",null,W(a.$t("Waf.Site.Config.index_83")),1),_("li",null,W(a.$t("Waf.Site.Config.index_84")),1)]),_:1})])}}});export{w as default}; diff --git a/BTPanel/static/vite/js/form-legacy.js b/BTPanel/static/vite/js/form-legacy.js index 0b04f6f2..2b461819 100644 --- a/BTPanel/static/vite/js/form-legacy.js +++ b/BTPanel/static/vite/js/form-legacy.js @@ -1 +1 @@ -System.register(["./index-legacy99.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./like-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,t){"use strict";var a,n,r,i,o,c,l,d,s,u,p,g,v,b,x,f,m,y,h,k,_,w,C,j,F,q,z,$,R,S;return{setters:[e=>{a=e._},e=>{n=e.p,r=e.dQ,i=e.d,o=e.dR},e=>{c=e.u},e=>{l=e.L},e=>{d=e.k,s=e.ae,u=e.a2,p=e.V,g=e.a3,v=e.S,b=e.R,x=e.F,f=e.O,m=e.H,y=e.a4,h=e.P,k=e.r,_=e.e,w=e.W,C=e.an,j=e.ak,F=e.U,q=e.j},e=>{z=e.da,$=e.dR,R=e.dW,S=e.aC},null,null],execute:function(){var t=document.createElement("style");t.textContent=".rating-item[data-v-c528e412]{width:40px;height:40px;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:2px;font-size:1.25rem;line-height:1.75rem;font-weight:700}.danger-item[data-v-c528e412]{--un-bg-opacity:1;background-color:rgb(247 207 206 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(239 133 129 / var(--un-text-opacity))}.danger-item[data-v-c528e412]:not(:last-child){border-right:1px solid #f8d7d6}.danger-item.active[data-v-c528e412],.danger-item[data-v-c528e412]:hover{border-style:none;--un-bg-opacity:1;background-color:rgb(255 0 0 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity));transform:scaleY(1.2)}.warning-item[data-v-c528e412]{--un-bg-opacity:1;background-color:rgb(247 230 206 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(247 190 86 / var(--un-text-opacity))}.warning-item[data-v-c528e412]:not(:last-child){border-right:1px solid #fceed3}.warning-item.active[data-v-c528e412],.warning-item[data-v-c528e412]:hover{border-style:none;--un-bg-opacity:1;background-color:rgb(255 170 44 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity));transform:scaleY(1.2)}.success-item[data-v-c528e412]{--un-bg-opacity:1;background-color:rgb(199 247 206 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(105 190 61 / var(--un-text-opacity))}.success-item[data-v-c528e412]:not(:last-child){border-right:1px solid #e4f5da}.success-item.active[data-v-c528e412],.success-item[data-v-c528e412]:hover{border-style:none;--un-bg-opacity:1;background-color:rgb(32 165 58 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity));transform:scaleY(1.2)}.rating-label[data-v-c528e412]{padding-top:10px;padding-bottom:10px;text-align:center;font-size:14px}.danger-text[data-v-c528e412]{--un-text-opacity:1;color:rgb(239 133 129 / var(--un-text-opacity));background:linear-gradient(to bottom,#ffdfdd,#fff)}.warning-text[data-v-c528e412]{--un-text-opacity:1;color:rgb(247 190 86 / var(--un-text-opacity));background:linear-gradient(to bottom,#fff7e6,#fff)}.success-text[data-v-c528e412]{--un-text-opacity:1;color:rgb(105 190 61 / var(--un-text-opacity));background:linear-gradient(to bottom,#d9f7d0,#fff)}.banner[data-v-0fe468ba]{position:relative;background:url(/static/vite/images/banner.png) no-repeat top center;width:100%;height:92px;background-size:100%}.banner .banner-title[data-v-0fe468ba]{position:absolute;left:32px;top:16px;font-size:17px;color:#fff}\n/*$vite$:1*/",document.head.appendChild(t);const U={class:"flex border-1px border-solid border-#f3adaa"},Y=["onClick"],E={class:"flex border-1px border-solid border-#f4cf8f"},P=["onClick"],W={class:"flex border-1px border-solid border-#b8e29f"},H=["onClick"],I=n(d({__name:"rating",props:{value:{},valueModifiers:{}},emits:["update:value"],setup(e){const t=s(e,"value"),a=e=>{t.value=e};return(e,n)=>{const r=z;return p(),u(r,{class:"justify-center! mb-16px",size:20},{default:g(()=>[v("div",null,[v("div",U,[(p(),b(x,null,f(6,e=>v("div",{key:e,class:m(["rating-item","danger-item",{active:t.value===e}]),onClick:t=>a(e)},[v("span",null,y(e),1)],10,Y)),64))]),n[0]||(n[0]=v("div",{class:"rating-label danger-text"},"No",-1))]),v("div",null,[v("div",E,[(p(),b(x,null,f(2,e=>v("div",{key:e+6,class:m(["rating-item","warning-item",{active:t.value===e+6}]),onClick:t=>a(e+6)},[v("span",null,y(e+6),1)],10,P)),64))]),n[1]||(n[1]=v("div",{class:"rating-label warning-text"},"Yes",-1))]),v("div",null,[v("div",W,[(p(),b(x,null,f(2,e=>v("div",{key:e+8,class:m(["rating-item","success-item",{active:t.value===e+8}]),onClick:t=>a(e+8)},[v("span",null,y(e+8),1)],10,H)),64))]),n[2]||(n[2]=v("div",{class:"rating-label success-text"},"Must",-1))])]),_:1})}}}),[["__scopeId","data-v-c528e412"]]),M={class:"banner"},N={class:"banner-title"},O={class:"ml-8px"},B={key:0,class:"px-24px"},J={class:"text-primary"},L={class:"flex justify-center my-20px"},Q=d({__name:"form",emits:["close"],setup(e,{emit:t}){const{t:n}=h(),d=k(0),s=t,m=_({}),z=_({}),U=k(null),Y=k([]),E=async()=>{await(U.value?.validate());const e={questions:JSON.stringify(Y.value.reduce((e,t)=>(e[t.id]=m[t.id],e),{})),rate:d.value,product_type:1};await o(e),s("close"),P()},P=()=>{const e=c({hideClose:!0,content:()=>w("div",{class:"flex-center flex-col w-230px h-124px bg-#F1F9F3"},[w("img",{class:"w-56px",src:l},null),w("div",{class:"mt-16px"},[n("Component.Feedback.index_6")])])});setTimeout(()=>{e.hide()},3e3)};return(async()=>{const{message:e}=await r();i(e)&&(Y.value=e.res,e.res.forEach(e=>{m[e.id]=""}),e.res.forEach(e=>{1===e.required&&(z[e.id]={required:!0,message:e.question,trigger:["blur","change"]})}))})(),(e,t)=>{const n=a,r=$,i=R,o=S;return p(),b("div",null,[v("div",M,[v("div",N,[v("span",O,y(e.$t("Component.Feedback.index_1")),1)])]),t[1]||(t[1]=v("div",{class:"text-center text-20px font-bold my-20px"},"Would you recommend aaPanel?",-1)),w(I,{value:F(d),"onUpdate:value":t[0]||(t[0]=e=>j(d)?d.value=e:null)},null,8,["value"]),F(d)?(p(),b("div",B,[w(i,{model:F(m),rules:F(z),ref_key:"formRef",ref:U},{default:g(()=>[(p(!0),b(x,null,f(F(Y),e=>(p(),u(r,{label:e.question,path:e.id,key:e.id},{default:g(()=>[w(n,{value:F(m)[e.id],"onUpdate:value":t=>F(m)[e.id]=t,placeholder:e.hint},null,8,["value","onUpdate:value","placeholder"])]),_:2},1032,["label","path"]))),128))]),_:1},8,["model","rules"]),v("div",J,y(e.$t("Component.Feedback.index_4")),1),v("div",L,[w(o,{type:"primary",class:"w-120px",onClick:E},{default:g(()=>[q(y(e.$t("Public.Btn.Submit")),1)]),_:1})])])):C("",!0)])}}});e("default",n(Q,[["__scopeId","data-v-0fe468ba"]]))}}}); +System.register(["./index-legacy99.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./like-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,t){"use strict";var a,n,r,i,o,c,l,d,s,u,p,g,v,b,x,f,m,y,h,k,_,w,C,j,F,q,z,$,P,S;return{setters:[e=>{a=e._},e=>{n=e.p,r=e.dP,i=e.d,o=e.dQ},e=>{c=e.u},e=>{l=e.L},e=>{d=e.k,s=e.ae,u=e.a2,p=e.V,g=e.a3,v=e.S,b=e.R,x=e.F,f=e.O,m=e.H,y=e.a4,h=e.P,k=e.r,_=e.e,w=e.W,C=e.an,j=e.ak,F=e.U,q=e.j},e=>{z=e.da,$=e.dR,P=e.dW,S=e.aC},null,null],execute:function(){var t=document.createElement("style");t.textContent=".rating-item[data-v-c528e412]{width:40px;height:40px;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:2px;font-size:1.25rem;line-height:1.75rem;font-weight:700}.danger-item[data-v-c528e412]{--un-bg-opacity:1;background-color:rgb(247 207 206 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(239 133 129 / var(--un-text-opacity))}.danger-item[data-v-c528e412]:not(:last-child){border-right:1px solid #f8d7d6}.danger-item.active[data-v-c528e412],.danger-item[data-v-c528e412]:hover{border-style:none;--un-bg-opacity:1;background-color:rgb(255 0 0 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity));transform:scaleY(1.2)}.warning-item[data-v-c528e412]{--un-bg-opacity:1;background-color:rgb(247 230 206 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(247 190 86 / var(--un-text-opacity))}.warning-item[data-v-c528e412]:not(:last-child){border-right:1px solid #fceed3}.warning-item.active[data-v-c528e412],.warning-item[data-v-c528e412]:hover{border-style:none;--un-bg-opacity:1;background-color:rgb(255 170 44 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity));transform:scaleY(1.2)}.success-item[data-v-c528e412]{--un-bg-opacity:1;background-color:rgb(199 247 206 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(105 190 61 / var(--un-text-opacity))}.success-item[data-v-c528e412]:not(:last-child){border-right:1px solid #e4f5da}.success-item.active[data-v-c528e412],.success-item[data-v-c528e412]:hover{border-style:none;--un-bg-opacity:1;background-color:rgb(32 165 58 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity));transform:scaleY(1.2)}.rating-label[data-v-c528e412]{padding-top:10px;padding-bottom:10px;text-align:center;font-size:14px}.danger-text[data-v-c528e412]{--un-text-opacity:1;color:rgb(239 133 129 / var(--un-text-opacity));background:linear-gradient(to bottom,#ffdfdd,#fff)}.warning-text[data-v-c528e412]{--un-text-opacity:1;color:rgb(247 190 86 / var(--un-text-opacity));background:linear-gradient(to bottom,#fff7e6,#fff)}.success-text[data-v-c528e412]{--un-text-opacity:1;color:rgb(105 190 61 / var(--un-text-opacity));background:linear-gradient(to bottom,#d9f7d0,#fff)}.banner[data-v-0fe468ba]{position:relative;background:url(/static/vite/images/banner.png) no-repeat top center;width:100%;height:92px;background-size:100%}.banner .banner-title[data-v-0fe468ba]{position:absolute;left:32px;top:16px;font-size:17px;color:#fff}\n/*$vite$:1*/",document.head.appendChild(t);const U={class:"flex border-1px border-solid border-#f3adaa"},Y=["onClick"],E={class:"flex border-1px border-solid border-#f4cf8f"},R=["onClick"],W={class:"flex border-1px border-solid border-#b8e29f"},H=["onClick"],I=n(d({__name:"rating",props:{value:{},valueModifiers:{}},emits:["update:value"],setup(e){const t=s(e,"value"),a=e=>{t.value=e};return(e,n)=>{const r=z;return p(),u(r,{class:"justify-center! mb-16px",size:20},{default:g(()=>[v("div",null,[v("div",U,[(p(),b(x,null,f(6,e=>v("div",{key:e,class:m(["rating-item","danger-item",{active:t.value===e}]),onClick:t=>a(e)},[v("span",null,y(e),1)],10,Y)),64))]),n[0]||(n[0]=v("div",{class:"rating-label danger-text"},"No",-1))]),v("div",null,[v("div",E,[(p(),b(x,null,f(2,e=>v("div",{key:e+6,class:m(["rating-item","warning-item",{active:t.value===e+6}]),onClick:t=>a(e+6)},[v("span",null,y(e+6),1)],10,R)),64))]),n[1]||(n[1]=v("div",{class:"rating-label warning-text"},"Yes",-1))]),v("div",null,[v("div",W,[(p(),b(x,null,f(2,e=>v("div",{key:e+8,class:m(["rating-item","success-item",{active:t.value===e+8}]),onClick:t=>a(e+8)},[v("span",null,y(e+8),1)],10,H)),64))]),n[2]||(n[2]=v("div",{class:"rating-label success-text"},"Must",-1))])]),_:1})}}}),[["__scopeId","data-v-c528e412"]]),M={class:"banner"},N={class:"banner-title"},O={class:"ml-8px"},B={key:0,class:"px-24px"},J={class:"text-primary"},L={class:"flex justify-center my-20px"},Q=d({__name:"form",emits:["close"],setup(e,{emit:t}){const{t:n}=h(),d=k(0),s=t,m=_({}),z=_({}),U=k(null),Y=k([]),E=async()=>{await(U.value?.validate());const e={questions:JSON.stringify(Y.value.reduce((e,t)=>(e[t.id]=m[t.id],e),{})),rate:d.value,product_type:1};await o(e),s("close"),R()},R=()=>{const e=c({hideClose:!0,content:()=>w("div",{class:"flex-center flex-col w-230px h-124px bg-#F1F9F3"},[w("img",{class:"w-56px",src:l},null),w("div",{class:"mt-16px"},[n("Component.Feedback.index_6")])])});setTimeout(()=>{e.hide()},3e3)};return(async()=>{const{message:e}=await r();i(e)&&(Y.value=e.res,e.res.forEach(e=>{m[e.id]=""}),e.res.forEach(e=>{1===e.required&&(z[e.id]={required:!0,message:e.question,trigger:["blur","change"]})}))})(),(e,t)=>{const n=a,r=$,i=P,o=S;return p(),b("div",null,[v("div",M,[v("div",N,[v("span",O,y(e.$t("Component.Feedback.index_1")),1)])]),t[1]||(t[1]=v("div",{class:"text-center text-20px font-bold my-20px"},"Would you recommend aaPanel?",-1)),w(I,{value:F(d),"onUpdate:value":t[0]||(t[0]=e=>j(d)?d.value=e:null)},null,8,["value"]),F(d)?(p(),b("div",B,[w(i,{model:F(m),rules:F(z),ref_key:"formRef",ref:U},{default:g(()=>[(p(!0),b(x,null,f(F(Y),e=>(p(),u(r,{label:e.question,path:e.id,key:e.id},{default:g(()=>[w(n,{value:F(m)[e.id],"onUpdate:value":t=>F(m)[e.id]=t,placeholder:e.hint},null,8,["value","onUpdate:value","placeholder"])]),_:2},1032,["label","path"]))),128))]),_:1},8,["model","rules"]),v("div",J,y(e.$t("Component.Feedback.index_4")),1),v("div",L,[w(o,{type:"primary",class:"w-120px",onClick:E},{default:g(()=>[q(y(e.$t("Public.Btn.Submit")),1)]),_:1})])])):C("",!0)])}}});e("default",n(Q,[["__scopeId","data-v-0fe468ba"]]))}}}); diff --git a/BTPanel/static/vite/js/form-legacy10.js b/BTPanel/static/vite/js/form-legacy10.js index 4f3ee087..41a22859 100644 --- a/BTPanel/static/vite/js/form-legacy10.js +++ b/BTPanel/static/vite/js/form-legacy10.js @@ -1 +1 @@ -System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,s){"use strict";var a,t,l,i,o,r,d,n,c,E,u,b,y,p,T,A,m,R,w,k,C;return{setters:[e=>{a=e._},e=>{t=e.fW,l=e.gT,i=e.d,o=e.gU},e=>{r=e.d},e=>{d=e.k,n=e.r,c=e.e,E=e.c,u=e.R,b=e.V,y=e.W,p=e.a3,T=e.U,A=e.a2,m=e.an,R=e.S},e=>{w=e.da,k=e.dR,C=e.dV},null,null],execute:function(){const s=[{key:"Data Permissions",label:"Data Permissions",description:"Data Permissions",select:!0,id:1,children:[{id:2,key:"SELECT",description:"SELECT--Allows users to query (read) data from the database.",select:!0,label:"Read Data"},{id:3,key:"INSERT",description:"INSERT--Allows users to insert new data into database tables.",select:!0,label:"Insert/Replace Data"},{id:4,key:"UPDATE",description:"UPDATE--Allows users to modify data in database tables.",select:!0,label:"Modify Data"},{id:5,key:"DELETE",description:"DELETE--Allows users to delete data from database tables.",select:!0,label:"Delete Data"},{key:"FILE",id:22,description:"Allows users to read or write files.",label:"File Read/Write"}]},{key:"Structure Permissions",label:"Structure Permissions",description:"Structure Permissions",select:!0,id:6,children:[{id:7,key:"CREATE",description:"Allows users to create new databases, tables, or indexes.",select:!0,label:"Create Database/Table"},{id:8,key:"ALTER",description:"Allows users to modify the structure of database tables (e.g., add or delete columns).",select:!0,label:"Modify Table Structure"},{id:9,key:"INDEX",description:"Allows users to create and delete indexes to improve query performance.",select:!0,label:"Create/Delete Index"},{id:10,key:"DROP",description:"Allows users to delete databases, tables, or indexes.",select:!0,label:"Delete Database/Table"},{id:11,key:"CREATE TEMPORARY TABLES",description:"Allows users to create temporary tables that are automatically deleted after the session ends.",select:!0,label:"Create Temporary Tables"},{id:12,key:"SHOW VIEW",description:"Allows users to view views in the database.",select:!0,label:"View Views"},{id:13,key:"CREATE ROUTINE",description:"Allows users to create stored procedures and functions.",select:!0,label:"Create Stored Procedure/Function"},{id:14,key:"ALTER ROUTINE",description:"Allows users to modify stored procedures and functions.",select:!0,label:"Modify Stored Procedure/Function"},{id:15,key:"EXECUTE",description:"Allows users to execute stored procedures and functions.",select:!0,label:"Execute Stored Procedure/Function"},{id:16,key:"CREATE VIEW",description:"Allows users to create views in the database.",select:!0,label:"Create View"},{id:17,key:"EVENT",description:"Allows users to create, modify, and delete database events.",select:!0,label:"Create/Modify/Delete Event"},{id:18,key:"TRIGGER",description:"Allows users to create and manage database triggers.",select:!0,label:"Create/Manage Trigger"}]},{key:"Management Permissions",label:"Management Permissions",description:"Management Permissions",include:!0,id:19,children:[{id:23,key:"SUPER",description:"Allows users to perform special operations, such as starting or stopping the database server.",label:"Kill Other User Processes When Max Connections Reached"},{id:24,key:"PROCESS",description:"Allows users to view the database connection processes of other users.",label:"View Other User Connections"},{id:25,key:"RELOAD",description:"Allows users to reload the database server configuration.",label:"Reload Database Configuration"},{id:26,key:"SHUTDOWN",description:"Allows users to shut down the database server.",label:"Shutdown Database Server"},{id:27,key:"SHOW DATABASES",description:"Allows users to view the list of available databases.",label:"View Available Databases"},{id:21,key:"LOCK TABLES",description:"Allows users to lock tables to control concurrent access.",select:!0,label:"Lock Tables"},{id:32,key:"REFERENCES",description:"Allows users to create and use foreign keys to maintain data integrity.",label:"Create/Use Foreign Keys"},{id:29,key:"REPLICATION CLIENT",description:"Allows users to connect as a replication client to a master-slave replication system.",label:"Connect as Replication Client to Master-Slave System"},{id:30,key:"REPLICATION SLAVE",description:"Allows users to connect as a replication slave to a master-slave replication system.",label:"Connect as Replication Slave to Master-Slave System"},{id:31,key:"CREATE USER",description:"Allows users to create, modify, and delete database user accounts.",label:"Create/Modify/Delete Database User"}]}],S=[{key:"Data Permissions",label:"Data Permissions",description:"Data Permissions",select:!0,id:1,children:[{id:2,key:"SELECT",description:"SELECT--Allows users to query (read) data from the database.",select:!0,label:"Read Data"},{id:3,key:"INSERT",description:"INSERT--Allows users to insert new data into database tables.",select:!0,label:"Insert/Replace Data"},{id:4,key:"UPDATE",description:"UPDATE--Allows users to modify data in database tables.",select:!0,label:"Modify Data"},{id:5,key:"DELETE",description:"DELETE--Allows users to delete data from database tables.",select:!0,label:"Delete Data"}]},{key:"Structure Permissions",label:"Structure Permissions",description:"Structure Permissions",select:!0,id:6,children:[{id:7,key:"CREATE",description:"Allows users to create new databases, tables, or indexes.",select:!0,label:"Create Database/Table"},{id:8,key:"ALTER",description:"Allows users to modify the structure of database tables (e.g., add or delete columns).",select:!0,label:"Modify Table Structure"},{id:9,key:"INDEX",description:"Allows users to create and delete indexes to improve query performance.",select:!0,label:"Create/Delete Index"},{id:10,key:"DROP",description:"Allows users to delete databases, tables, or indexes.",select:!0,label:"Delete Database/Table"},{id:11,key:"CREATE TEMPORARY TABLES",description:"Allows users to create temporary tables that are automatically deleted after the session ends.",select:!0,label:"Create Temporary Tables"},{id:12,key:"SHOW VIEW",description:"Allows users to view views in the database.",select:!0,label:"View Views"},{id:13,key:"CREATE ROUTINE",description:"Allows users to create stored procedures and functions.",select:!0,label:"Create Stored Procedure/Function"},{id:14,key:"ALTER ROUTINE",description:"Allows users to modify stored procedures and functions.",select:!0,label:"Modify Stored Procedure/Function"},{id:15,key:"EXECUTE",description:"Allows users to execute stored procedures and functions.",select:!0,label:"Execute Stored Procedure/Function"},{id:16,key:"CREATE VIEW",description:"Allows users to create views in the database.",select:!0,label:"Create View"},{id:17,key:"EVENT",description:"Allows users to create, modify, and delete database events.",select:!0,label:"Create/Modify/Delete Event"},{id:18,key:"TRIGGER",description:"Allows users to create and manage database triggers.",select:!0,label:"Create/Manage Trigger"}]},{key:"Management Permissions",label:"Management Permissions",description:"Management Permissions",include:!0,id:19,children:[{id:21,key:"LOCK TABLES",description:"Allows users to lock tables to control concurrent access.",select:!0,label:"Lock Tables"},{id:22,key:"REFERENCES",description:"Allows users to create and use foreign keys to maintain data integrity.",label:"Create/Use Foreign Keys"}]}],f={class:"p-16px"},D={class:"w-415px max-h-200px overflow-auto border border-solid p-12x border-#ccc"};e("default",d({__name:"form",props:{data:{}},setup(e,{expose:d}){const v=e,{getList:g,params:_}=v.data,h=n(null),L=c({db_name:"",tb_name:"",access:["SELECT","INSERT","UPDATE","DELETE","CREATE","ALTER","INDEX","DROP","CREATE TEMPORARY TABLES","SHOW VIEW","CREATE ROUTINE","ALTER ROUTINE","EXECUTE","CREATE VIEW","EVENT","TRIGGER","LOCK TABLES","REFERENCES"]}),P=n([]),I=n([]),O=(e,s)=>{L.db_name=e,s.tb_list.length?(I.value=s.tb_list.map(e=>({label:e.name,value:e.value,access_list:e.access_list})),U(I.value[0].value,I.value[0])):I.value=[]},U=(e,s)=>{L.tb_name=e,"*"!==e||"ALL PRIVILEGES"!==s.access_list[0]?"*"!==e||"USAGE"!==s.access_list[0]?L.access=s.access_list:L.access=[]:L.access=["SELECT","INSERT","UPDATE","DELETE","CREATE","ALTER","INDEX","DROP","CREATE TEMPORARY TABLES","SHOW VIEW","CREATE ROUTINE","ALTER ROUTINE","EXECUTE","CREATE VIEW","EVENT","TRIGGER","LOCK TABLES","REFERENCES"]},N=E(()=>"*"===L.db_name?s:"*"!==L.db_name&&"*"!==L.tb_name?S.find(e=>1===e.id)?.children||[]:S),{loading:x,setLoading:M}=r();return(async()=>{try{M(!0);const{message:e}=await l(_);i(e)&&(P.value=e.data.map(e=>({label:e.name,value:e.value,tb_list:e.tb_list})),O(P.value[0].value,P.value[0]))}finally{M(!1)}})(),d({onConfirm:async()=>{await(h.value?.validate()),await o({..._,db_name:L.db_name,tb_name:"*"===L.db_name?"*":L.tb_name,access:L.access.join(","),with_grant:0}),g?.()}}),(e,s)=>{const l=C,i=k,o=w,r=t,d=a;return b(),u("div",f,[y(d,{ref_key:"formRef",ref:h,model:T(L)},{default:p(()=>[y(o,null,{default:p(()=>[y(i,{label:e.$t("Database.Mysql.index_18")},{default:p(()=>[y(l,{class:"w-200px",loading:T(x),value:T(L).db_name,"onUpdate:value":[s[0]||(s[0]=e=>T(L).db_name=e),O],options:T(P)},null,8,["loading","value","options"])]),_:1},8,["label"]),y(i,{"show-label":!1},{default:p(()=>[T(I).length?(b(),A(l,{key:0,class:"w-200px",value:T(L).tb_name,"onUpdate:value":[s[1]||(s[1]=e=>T(L).tb_name=e),U],options:T(I)},null,8,["value","options"])):m("",!0)]),_:1})]),_:1}),y(i,{label:e.$t("Database.Mysql.index_19"),path:"access"},{default:p(()=>[R("div",D,[y(r,{"default-expand-all":"","block-line":"",cascade:"",checkable:"",selectable:!1,"check-strategy":"child","checked-keys":T(L).access,"onUpdate:checkedKeys":s[2]||(s[2]=e=>T(L).access=e),data:T(N),placeholder:e.$t("Database.Mysql.index_20")},null,8,["checked-keys","data","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,s){"use strict";var a,t,l,i,o,r,d,n,c,E,u,b,y,p,T,A,m,R,w,k,C;return{setters:[e=>{a=e._},e=>{t=e.gP,l=e.gQ,i=e.d,o=e.gR},e=>{r=e.d},e=>{d=e.k,n=e.r,c=e.e,E=e.c,u=e.R,b=e.V,y=e.W,p=e.a3,T=e.U,A=e.a2,m=e.an,R=e.S},e=>{w=e.da,k=e.dR,C=e.dV},null,null],execute:function(){const s=[{key:"Data Permissions",label:"Data Permissions",description:"Data Permissions",select:!0,id:1,children:[{id:2,key:"SELECT",description:"SELECT--Allows users to query (read) data from the database.",select:!0,label:"Read Data"},{id:3,key:"INSERT",description:"INSERT--Allows users to insert new data into database tables.",select:!0,label:"Insert/Replace Data"},{id:4,key:"UPDATE",description:"UPDATE--Allows users to modify data in database tables.",select:!0,label:"Modify Data"},{id:5,key:"DELETE",description:"DELETE--Allows users to delete data from database tables.",select:!0,label:"Delete Data"},{key:"FILE",id:22,description:"Allows users to read or write files.",label:"File Read/Write"}]},{key:"Structure Permissions",label:"Structure Permissions",description:"Structure Permissions",select:!0,id:6,children:[{id:7,key:"CREATE",description:"Allows users to create new databases, tables, or indexes.",select:!0,label:"Create Database/Table"},{id:8,key:"ALTER",description:"Allows users to modify the structure of database tables (e.g., add or delete columns).",select:!0,label:"Modify Table Structure"},{id:9,key:"INDEX",description:"Allows users to create and delete indexes to improve query performance.",select:!0,label:"Create/Delete Index"},{id:10,key:"DROP",description:"Allows users to delete databases, tables, or indexes.",select:!0,label:"Delete Database/Table"},{id:11,key:"CREATE TEMPORARY TABLES",description:"Allows users to create temporary tables that are automatically deleted after the session ends.",select:!0,label:"Create Temporary Tables"},{id:12,key:"SHOW VIEW",description:"Allows users to view views in the database.",select:!0,label:"View Views"},{id:13,key:"CREATE ROUTINE",description:"Allows users to create stored procedures and functions.",select:!0,label:"Create Stored Procedure/Function"},{id:14,key:"ALTER ROUTINE",description:"Allows users to modify stored procedures and functions.",select:!0,label:"Modify Stored Procedure/Function"},{id:15,key:"EXECUTE",description:"Allows users to execute stored procedures and functions.",select:!0,label:"Execute Stored Procedure/Function"},{id:16,key:"CREATE VIEW",description:"Allows users to create views in the database.",select:!0,label:"Create View"},{id:17,key:"EVENT",description:"Allows users to create, modify, and delete database events.",select:!0,label:"Create/Modify/Delete Event"},{id:18,key:"TRIGGER",description:"Allows users to create and manage database triggers.",select:!0,label:"Create/Manage Trigger"}]},{key:"Management Permissions",label:"Management Permissions",description:"Management Permissions",include:!0,id:19,children:[{id:23,key:"SUPER",description:"Allows users to perform special operations, such as starting or stopping the database server.",label:"Kill Other User Processes When Max Connections Reached"},{id:24,key:"PROCESS",description:"Allows users to view the database connection processes of other users.",label:"View Other User Connections"},{id:25,key:"RELOAD",description:"Allows users to reload the database server configuration.",label:"Reload Database Configuration"},{id:26,key:"SHUTDOWN",description:"Allows users to shut down the database server.",label:"Shutdown Database Server"},{id:27,key:"SHOW DATABASES",description:"Allows users to view the list of available databases.",label:"View Available Databases"},{id:21,key:"LOCK TABLES",description:"Allows users to lock tables to control concurrent access.",select:!0,label:"Lock Tables"},{id:32,key:"REFERENCES",description:"Allows users to create and use foreign keys to maintain data integrity.",label:"Create/Use Foreign Keys"},{id:29,key:"REPLICATION CLIENT",description:"Allows users to connect as a replication client to a master-slave replication system.",label:"Connect as Replication Client to Master-Slave System"},{id:30,key:"REPLICATION SLAVE",description:"Allows users to connect as a replication slave to a master-slave replication system.",label:"Connect as Replication Slave to Master-Slave System"},{id:31,key:"CREATE USER",description:"Allows users to create, modify, and delete database user accounts.",label:"Create/Modify/Delete Database User"}]}],S=[{key:"Data Permissions",label:"Data Permissions",description:"Data Permissions",select:!0,id:1,children:[{id:2,key:"SELECT",description:"SELECT--Allows users to query (read) data from the database.",select:!0,label:"Read Data"},{id:3,key:"INSERT",description:"INSERT--Allows users to insert new data into database tables.",select:!0,label:"Insert/Replace Data"},{id:4,key:"UPDATE",description:"UPDATE--Allows users to modify data in database tables.",select:!0,label:"Modify Data"},{id:5,key:"DELETE",description:"DELETE--Allows users to delete data from database tables.",select:!0,label:"Delete Data"}]},{key:"Structure Permissions",label:"Structure Permissions",description:"Structure Permissions",select:!0,id:6,children:[{id:7,key:"CREATE",description:"Allows users to create new databases, tables, or indexes.",select:!0,label:"Create Database/Table"},{id:8,key:"ALTER",description:"Allows users to modify the structure of database tables (e.g., add or delete columns).",select:!0,label:"Modify Table Structure"},{id:9,key:"INDEX",description:"Allows users to create and delete indexes to improve query performance.",select:!0,label:"Create/Delete Index"},{id:10,key:"DROP",description:"Allows users to delete databases, tables, or indexes.",select:!0,label:"Delete Database/Table"},{id:11,key:"CREATE TEMPORARY TABLES",description:"Allows users to create temporary tables that are automatically deleted after the session ends.",select:!0,label:"Create Temporary Tables"},{id:12,key:"SHOW VIEW",description:"Allows users to view views in the database.",select:!0,label:"View Views"},{id:13,key:"CREATE ROUTINE",description:"Allows users to create stored procedures and functions.",select:!0,label:"Create Stored Procedure/Function"},{id:14,key:"ALTER ROUTINE",description:"Allows users to modify stored procedures and functions.",select:!0,label:"Modify Stored Procedure/Function"},{id:15,key:"EXECUTE",description:"Allows users to execute stored procedures and functions.",select:!0,label:"Execute Stored Procedure/Function"},{id:16,key:"CREATE VIEW",description:"Allows users to create views in the database.",select:!0,label:"Create View"},{id:17,key:"EVENT",description:"Allows users to create, modify, and delete database events.",select:!0,label:"Create/Modify/Delete Event"},{id:18,key:"TRIGGER",description:"Allows users to create and manage database triggers.",select:!0,label:"Create/Manage Trigger"}]},{key:"Management Permissions",label:"Management Permissions",description:"Management Permissions",include:!0,id:19,children:[{id:21,key:"LOCK TABLES",description:"Allows users to lock tables to control concurrent access.",select:!0,label:"Lock Tables"},{id:22,key:"REFERENCES",description:"Allows users to create and use foreign keys to maintain data integrity.",label:"Create/Use Foreign Keys"}]}],f={class:"p-16px"},D={class:"w-415px max-h-200px overflow-auto border border-solid p-12x border-#ccc"};e("default",d({__name:"form",props:{data:{}},setup(e,{expose:d}){const v=e,{getList:g,params:_}=v.data,h=n(null),L=c({db_name:"",tb_name:"",access:["SELECT","INSERT","UPDATE","DELETE","CREATE","ALTER","INDEX","DROP","CREATE TEMPORARY TABLES","SHOW VIEW","CREATE ROUTINE","ALTER ROUTINE","EXECUTE","CREATE VIEW","EVENT","TRIGGER","LOCK TABLES","REFERENCES"]}),P=n([]),I=n([]),O=(e,s)=>{L.db_name=e,s.tb_list.length?(I.value=s.tb_list.map(e=>({label:e.name,value:e.value,access_list:e.access_list})),U(I.value[0].value,I.value[0])):I.value=[]},U=(e,s)=>{L.tb_name=e,"*"!==e||"ALL PRIVILEGES"!==s.access_list[0]?"*"!==e||"USAGE"!==s.access_list[0]?L.access=s.access_list:L.access=[]:L.access=["SELECT","INSERT","UPDATE","DELETE","CREATE","ALTER","INDEX","DROP","CREATE TEMPORARY TABLES","SHOW VIEW","CREATE ROUTINE","ALTER ROUTINE","EXECUTE","CREATE VIEW","EVENT","TRIGGER","LOCK TABLES","REFERENCES"]},N=E(()=>"*"===L.db_name?s:"*"!==L.db_name&&"*"!==L.tb_name?S.find(e=>1===e.id)?.children||[]:S),{loading:x,setLoading:M}=r();return(async()=>{try{M(!0);const{message:e}=await l(_);i(e)&&(P.value=e.data.map(e=>({label:e.name,value:e.value,tb_list:e.tb_list})),O(P.value[0].value,P.value[0]))}finally{M(!1)}})(),d({onConfirm:async()=>{await(h.value?.validate()),await o({..._,db_name:L.db_name,tb_name:"*"===L.db_name?"*":L.tb_name,access:L.access.join(","),with_grant:0}),g?.()}}),(e,s)=>{const l=C,i=k,o=w,r=t,d=a;return b(),u("div",f,[y(d,{ref_key:"formRef",ref:h,model:T(L)},{default:p(()=>[y(o,null,{default:p(()=>[y(i,{label:e.$t("Database.Mysql.index_18")},{default:p(()=>[y(l,{class:"w-200px",loading:T(x),value:T(L).db_name,"onUpdate:value":[s[0]||(s[0]=e=>T(L).db_name=e),O],options:T(P)},null,8,["loading","value","options"])]),_:1},8,["label"]),y(i,{"show-label":!1},{default:p(()=>[T(I).length?(b(),A(l,{key:0,class:"w-200px",value:T(L).tb_name,"onUpdate:value":[s[1]||(s[1]=e=>T(L).tb_name=e),U],options:T(I)},null,8,["value","options"])):m("",!0)]),_:1})]),_:1}),y(i,{label:e.$t("Database.Mysql.index_19"),path:"access"},{default:p(()=>[R("div",D,[y(r,{"default-expand-all":"","block-line":"",cascade:"",checkable:"",selectable:!1,"check-strategy":"child","checked-keys":T(L).access,"onUpdate:checkedKeys":s[2]||(s[2]=e=>T(L).access=e),data:T(N),placeholder:e.$t("Database.Mysql.index_20")},null,8,["checked-keys","data","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}}))}}}); diff --git a/BTPanel/static/vite/js/form-legacy2.js b/BTPanel/static/vite/js/form-legacy2.js index 101c29c6..43ec912c 100644 --- a/BTPanel/static/vite/js/form-legacy2.js +++ b/BTPanel/static/vite/js/form-legacy2.js @@ -1 +1 @@ -System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy20.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy11.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./alarm-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./index-legacy211.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,l){"use strict";var a,t,u,n,i,r,d,s,o,v,p,m,_,c,f,g,y,h,b,w,x,k,U,j,$,C,A,E,M,R,P,B,D,O,S,T,H,F,I,V,Y,G,L,W,q,z,J,K,N;return{setters:[e=>{a=e._},e=>{t=e._},e=>{u=e._},e=>{n=e.bf,i=e.k,r=e.u,d=e.d,s=e.w,o=e.cA},e=>{v=e.n,p=e.a,m=e.g},e=>{_=e.k,c=e.R,f=e.V,g=e.ad,y=e.ae,h=e.t,b=e.c,w=e.F,x=e.S,k=e.an,U=e.W,j=e.U,$=e.I,C=e.a4,A=e.a3,E=e.a2,M=e.j,R=e.O,P=e.a7,B=e.P,D=e.a0,O=e.r,S=e.e,T=e.x,H=e.ak,F=e.n},e=>{I=e.dV,V=e.av,Y=e.df,G=e.dY,L=e.dT,W=e.dU,q=e.dR},e=>{z=e._,J=e.d,K=e.b},e=>{N=e._},null,null],execute:function(){const l=_({__name:"form-template-field-none",props:{field:{}},setup:e=>(e,l)=>(f(),c("div"))}),Q={key:0,class:"ml-10px whitespace-pre"},X=_({__name:"form-template-field-select",props:g({field:{}},{value:{default:null},valueModifiers:{}}),emits:["update:value"],setup(e){const l=e,a=y(e,"value"),t=h(l,"field"),u=b(()=>t.value.items.map(e=>({label:`${e.title}${t.value.unit||""}`,value:e.value})));return(e,l)=>{const n=I;return f(),c(w,null,[x("div",{style:$({width:j(t).width?"160px":"260px"})},[U(n,{value:a.value,"onUpdate:value":l[0]||(l[0]=e=>a.value=e),disabled:j(t).disabled,options:j(u)},null,8,["value","disabled","options"])],4),j(t).suffix?(f(),c("div",Q,C(j(t).suffix),1)):k("",!0)],64)}}}),Z={key:0,class:"ml-10px whitespace-pre"},ee=_({__name:"form-template-field-number",props:g({field:{}},{value:{},valueModifiers:{}}),emits:["update:value"],setup(e){const l=h(e,"field"),a=y(e,"value"),t=()=>{a.value||(a.value=l.value.default)};return(e,u)=>{const n=Y,i=G,r=V;return f(),c(w,null,[x("div",null,[U(r,null,{default:A(()=>[U(n,{value:a.value,"onUpdate:value":u[0]||(u[0]=e=>a.value=e),class:"w-100px",min:1,"show-button":!1,placeholder:"",onBlur:t},null,8,["value"]),j(l).unit?(f(),E(i,{key:0,class:"min-w-52px text-center"},{default:A(()=>[M(C(j(l).unit),1)]),_:1})):k("",!0)]),_:1})]),j(l).suffix?(f(),c("span",Z,C(j(l).suffix),1)):k("",!0)],64)}}}),le=_({__name:"form-template-field-radio",props:g({field:{}},{value:{},valueModifiers:{}}),emits:["update:value"],setup(e){const l=e,a=y(e,"value"),t=h(l,"field");return(e,l)=>{const u=W,n=L;return f(),E(n,{value:a.value,"onUpdate:value":l[0]||(l[0]=e=>a.value=e)},{default:A(()=>[(f(!0),c(w,null,R(j(t).items,e=>(f(),E(u,{key:e.value,value:e.value},{default:A(()=>[M(C(e.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])}}}),ae=_({__name:"form-template-field-help",props:{field:{}},setup:e=>(e,l)=>{const a=z;return f(),E(a,null,{default:A(()=>[(f(!0),c(w,null,R(e.field.list,e=>(f(),c("li",{key:e},C(e),1))),128))]),_:1})}}),te=_({__name:"form-template-field",props:g({field:{}},{value:{},valueModifiers:{}}),emits:g(["change"],["update:value"]),setup(e,{emit:a}){const t=e,u=a,n=y(e,"value"),i=h(t,"field"),r=(()=>{switch(i.value.type){case"select":return X;case"number":return ee;case"radio":return le;case"help":return ae;default:return l}})(),d=e=>{u("change",e,i.value.attr)};return(e,l)=>(f(),E(P(j(r)),{value:n.value,"onUpdate:value":[l[0]||(l[0]=e=>n.value=e),d],field:j(i)},null,40,["value","field"]))}}),ue=_({__name:"form-template",props:g({type:{default:"none"},template:{default:()=>({field:[],sorted:[]})}},{value:{default:()=>({})},valueModifiers:{}}),emits:["update:value"],setup(e,{expose:l}){const a=e,{t:t}=B(),u=h(a,"type"),r=h(a,"template"),d=y(e,"value"),s=b(()=>{const{field:e,sorted:l}=r.value,a=[];return l.forEach(l=>{const t=[];l.forEach(l=>{const a=e.find(e=>e.attr===l);a&&t.push(a)}),a.push(t)}),a}),o=(e,l)=>{"system_disk"===u.value&&"cycle"===l&&v(),"project_status"===u.value&&"cycle"===l&&p()},v=()=>{const{cycle:e}=d.value;switch(e){case 1:r.value.field[2].unit="GB",r.value.field[2].name=t("Config.Alarm.index_26");break;case 2:r.value.field[2].unit="%",r.value.field[2].name=t("Config.Alarm.index_27")}},p=()=>{const{field:e}=r.value,[,l]=e,{all_items:a}=l;if(a&&n(d.value.cycle)){const e=a[i(d.value.cycle)-1];e.length>0?(l.items=e,d.value.project=e[0].value):(l.items=[],d.value.project=null)}},m=()=>{switch(u.value){case"system_disk":v();break;case"project_status":p()}};return m(),l({render:m}),(e,l)=>{const a=q;return f(!0),c(w,null,R(j(s),(e,l)=>(f(),c(w,null,[1===e.length?(f(!0),c(w,{key:0},R(e,e=>(f(),E(a,{key:`${j(u)}-${e.attr}`,label:e.name},{default:A(()=>[U(te,{value:d.value[e.attr],"onUpdate:value":l=>d.value[e.attr]=l,field:e,onChange:o},null,8,["value","onUpdate:value","field"])]),_:2},1032,["label"]))),128)):k("",!0),e.length>1?(f(),c("div",{key:`${j(u)}-${l+1}`,class:"flex"},[(f(!0),c(w,null,R(e,(e,l)=>(f(),E(a,{key:`${j(u)}-${e.attr}`,label:e.name,"label-width":0!==l?"auto":void 0},{default:A(()=>[U(te,{value:d.value[e.attr],"onUpdate:value":l=>d.value[e.attr]=l,field:e,onChange:o},null,8,["value","onUpdate:value","field"])]),_:2},1032,["label","label-width"]))),128))])):k("",!0)],64))),256)}}}),ne=_({__name:"form-advanced",props:g({config:{default:()=>({})},inverse:{type:Boolean,default:!1},timeRangeShow:{type:Boolean,default:!1}},{value:{default:()=>({day_num:0,total:0,send_interval:0,time_range:[]})},valueModifiers:{}}),emits:["update:value"],setup(e){const l=e,a=h(l,"config"),t=y(e,"value"),u=e=>l.inverse?!a.value[e]:a.value[e];return(e,l)=>{const a=Y,n=G,i=V,r=q,d=N;return f(),c(w,null,[u("day_num")?(f(),E(r,{key:0,label:e.$t("Config.Alarm.index_28"),path:"day_num"},{default:A(()=>[U(i,null,{default:A(()=>[U(a,{value:t.value.day_num,"onUpdate:value":l[0]||(l[0]=e=>t.value.day_num=e),class:"w-100px",min:0,"show-button":!1,placeholder:""},null,8,["value"]),U(n,{class:"min-w-52px text-center"},{default:A(()=>[M(C(e.$t("Public.Unit.Times")),1)]),_:1})]),_:1})]),_:1},8,["label"])):k("",!0),u("total")?(f(),E(r,{key:1,label:e.$t("Config.Alarm.index_30"),path:"total"},{default:A(()=>[U(i,null,{default:A(()=>[U(a,{value:t.value.total,"onUpdate:value":l[1]||(l[1]=e=>t.value.total=e),class:"w-100px",min:0,"show-button":!1,placeholder:""},null,8,["value"]),U(n,{class:"min-w-52px text-center"},{default:A(()=>[M(C(e.$t("Public.Unit.Times")),1)]),_:1})]),_:1})]),_:1},8,["label"])):k("",!0),u("send_interval")?(f(),E(r,{key:2,label:e.$t("Config.Alarm.index_31"),path:"send_interval"},{default:A(()=>[U(i,null,{default:A(()=>[U(a,{value:t.value.send_interval,"onUpdate:value":l[2]||(l[2]=e=>t.value.send_interval=e),class:"w-100px",min:0,"show-button":!1,placeholder:""},null,8,["value"]),U(n,{class:"min-w-52px text-center"},{default:A(()=>[M(C(e.$t("Public.Unit.Seconds")),1)]),_:1})]),_:1})]),_:1},8,["label"])):k("",!0),e.timeRangeShow?(f(),E(r,{key:3,label:e.$t("Config.Alarm.index_33"),path:"time_range","show-feedback":!1},{default:A(()=>[U(d,{value:t.value.time_range,"onUpdate:value":l[3]||(l[3]=e=>t.value.time_range=e)},null,8,["value"])]),_:1},8,["label"])):k("",!0)],64)}}}),ie={class:"px-20px py-24px"},re={class:"w-260px"},de={class:"w-260px"};e("default",_({__name:"form",props:{isEdit:{type:Boolean},row:{}},emits:["refresh"],setup(e,{expose:l,emit:i}){const _=e,g=r(),{isPro:y}=D(g),w=i,{t:k}=B(),$=h(_,"isEdit"),C=O(null),E=O(),R=O(!1),P=S({type:null,method:[],day_num:0,total:0,send_interval:0,time_range:[(new Date).setHours(0,0,0,0),(new Date).setHours(23,59,59,0)],template:{}}),V=S({day_num:{trigger:["input","blur"],validator:()=>!(!P.day_num&&0!==P.day_num)||(N.value.day_num||(R.value=!0),new Error(k("Config.Alarm.index_22")))},total:{trigger:["input","blur"],validator:()=>!(!P.total&&0!==P.total)||(N.value.total||(R.value=!0),new Error(k("Config.Alarm.index_23")))},send_interval:{trigger:["input","blur"],validator:()=>!(!P.send_interval&&0!==P.send_interval)||(N.value.send_interval||(R.value=!0),new Error(k("Config.Alarm.index_24")))},method:{trigger:["change"],validator:()=>0!==P.method.length||new Error(k("Config.Alarm.index_25"))}}),Y=T([]),G=b(()=>Y.value.map((e,l)=>({label:e.title,value:l,disabled:"80"===e.id&&!y.value,data:e}))),L=b(()=>{let e="none";const l=Y.value[P.type||0];return l&&(e=l.source),e}),W=e=>U("div",null,[U("span",null,[e.label,M(" ")]),14===e.value?U("span",{class:"float-right cursor-pointer color-#ffb800",onClick:()=>{K({source:323})}},[M("PRO")]):""]),z=O({field:[],sorted:[]}),N=O({}),Q=()=>Y.value[P.type||0],X=()=>{const e=Q();z.value=e.template,z.value.field.forEach(l=>{l.default?P.template[l.attr]=l.default:P.template[l.attr]=e.default[l.attr]}),P.day_num=0,P.total=0,P.send_interval=0;const l={},{advanced_default:a}=e;d(a)&&Object.entries(a).forEach(([e,a])=>{d(a)?Object.entries(a).forEach(([e,a])=>{l[e]=!0,ee(e,a)}):n(a)&&(l[e]=!0,ee(e,a))}),N.value=l},Z=["day_num","total","send_interval"],ee=(e,l)=>{Z.includes(e)&&(P[e]=l)},le=()=>{X(),F(()=>{E.value.render()})},{loading:ae,setLoading:te}=J(),se=e=>{const l=new Date,a=l.getFullYear(),t=l.getMonth(),u=l.getDate();return new Date(a,t,u).getTime()+1e3*e};return(async()=>{await(async()=>{try{te(!0);const{message:e}=await m();s(e)&&(Y.value=e,P.type=0,$.value||X())}finally{te(!1)}})();const{row:e}=_;$.value&&e&&(P.type=Y.value.findIndex(l=>l.id===e.template_id),X(),P.method=e.sender,e.number_rule&&(P.day_num=e.number_rule.day_num,P.total=e.number_rule.total),e.time_rule&&(P.send_interval=e.time_rule.send_interval,e.time_rule.time_range&&e.time_rule.time_range.length>0&&(P.time_range=[se(e.time_rule.time_range[0]),se(e.time_rule.time_range[1])])),Object.keys(P.template).forEach(l=>{e.task_data&&(P.template[l]=e.task_data[l])}),await F(),E.value.render())})(),l({onConfirm:async()=>{await(C.value?.validate());const{row:e}=_,l=(()=>{const e=Q();return{template_id:e.id,task_data:{task_data:{tid:e.id,type:e.source,title:e.title,status:!0,count:0,interval:600,project:"",...P.template},sender:P.method,number_rule:{day_num:P.day_num,total:P.total},time_rule:{send_interval:P.send_interval,time_range:[o(P.time_range[0]),o(P.time_range[1])]}}}})();$.value&&e?await v({...l,task_id:e.id}):await p(l),w("refresh")}}),(e,l)=>{const n=I,i=q,r=u,d=t,s=a;return f(),c("div",ie,[U(s,{ref_key:"formRef",ref:C,model:j(P),rules:j(V),"label-width":"140"},{default:A(()=>[U(i,{label:e.$t("Config.Alarm.index_19")},{default:A(()=>[x("div",re,[U(n,{value:j(P).type,"onUpdate:value":[l[0]||(l[0]=e=>j(P).type=e),le],options:j(G),loading:j(ae),"render-label":W},null,8,["value","options","loading"])])]),_:1},8,["label"]),U(ue,{ref_key:"templateRef",ref:E,value:j(P).template,"onUpdate:value":l[1]||(l[1]=e=>j(P).template=e),type:j(L),template:j(z)},null,8,["value","type","template"]),U(ne,{value:j(P),"onUpdate:value":l[2]||(l[2]=e=>H(P)?P.value=e:null),config:j(N)},null,8,["value","config"]),U(i,{label:e.$t("Config.Alarm.index_20"),path:"method"},{default:A(()=>[x("div",de,[U(r,{value:j(P).method,"onUpdate:value":l[3]||(l[3]=e=>j(P).method=e)},null,8,["value"])])]),_:1},8,["label"]),U(d,{show:j(R),"onUpdate:show":l[5]||(l[5]=e=>H(R)?R.value=e:null),title:e.$t("Config.Alarm.index_21")},{default:A(()=>[U(ne,{value:j(P),"onUpdate:value":l[4]||(l[4]=e=>H(P)?P.value=e:null),config:j(N),inverse:!0,"time-range-show":!0},null,8,["value","config"])]),_:1},8,["show","title"])]),_:1},8,["model","rules"])])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy20.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy11.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./alarm-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./index-legacy209.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,l){"use strict";var a,t,u,n,i,r,d,s,o,v,p,m,_,c,f,g,y,h,b,w,x,k,U,j,$,C,A,E,M,R,P,B,D,O,S,T,H,F,I,V,Y,z,G,L,W,q,J,K,N;return{setters:[e=>{a=e._},e=>{t=e._},e=>{u=e._},e=>{n=e.bf,i=e.k,r=e.u,d=e.d,s=e.w,o=e.cz},e=>{v=e.n,p=e.a,m=e.g},e=>{_=e.k,c=e.R,f=e.V,g=e.ad,y=e.ae,h=e.t,b=e.c,w=e.F,x=e.S,k=e.an,U=e.W,j=e.U,$=e.I,C=e.a4,A=e.a3,E=e.a2,M=e.j,R=e.O,P=e.a7,B=e.P,D=e.a0,O=e.r,S=e.e,T=e.x,H=e.ak,F=e.n},e=>{I=e.dV,V=e.av,Y=e.df,z=e.dY,G=e.dT,L=e.dU,W=e.dR},e=>{q=e._,J=e.d,K=e.b},e=>{N=e._},null,null],execute:function(){const l=_({__name:"form-template-field-none",props:{field:{}},setup:e=>(e,l)=>(f(),c("div"))}),Q={key:0,class:"ml-10px whitespace-pre"},X=_({__name:"form-template-field-select",props:g({field:{}},{value:{default:null},valueModifiers:{}}),emits:["update:value"],setup(e){const l=e,a=y(e,"value"),t=h(l,"field"),u=b(()=>t.value.items.map(e=>({label:`${e.title}${t.value.unit||""}`,value:e.value})));return(e,l)=>{const n=I;return f(),c(w,null,[x("div",{style:$({width:j(t).width?"160px":"260px"})},[U(n,{value:a.value,"onUpdate:value":l[0]||(l[0]=e=>a.value=e),disabled:j(t).disabled,options:j(u)},null,8,["value","disabled","options"])],4),j(t).suffix?(f(),c("div",Q,C(j(t).suffix),1)):k("",!0)],64)}}}),Z={key:0,class:"ml-10px whitespace-pre"},ee=_({__name:"form-template-field-number",props:g({field:{}},{value:{},valueModifiers:{}}),emits:["update:value"],setup(e){const l=h(e,"field"),a=y(e,"value"),t=()=>{a.value||(a.value=l.value.default)};return(e,u)=>{const n=Y,i=z,r=V;return f(),c(w,null,[x("div",null,[U(r,null,{default:A(()=>[U(n,{value:a.value,"onUpdate:value":u[0]||(u[0]=e=>a.value=e),class:"w-100px",min:1,"show-button":!1,placeholder:"",onBlur:t},null,8,["value"]),j(l).unit?(f(),E(i,{key:0,class:"min-w-52px text-center"},{default:A(()=>[M(C(j(l).unit),1)]),_:1})):k("",!0)]),_:1})]),j(l).suffix?(f(),c("span",Z,C(j(l).suffix),1)):k("",!0)],64)}}}),le=_({__name:"form-template-field-radio",props:g({field:{}},{value:{},valueModifiers:{}}),emits:["update:value"],setup(e){const l=e,a=y(e,"value"),t=h(l,"field");return(e,l)=>{const u=L,n=G;return f(),E(n,{value:a.value,"onUpdate:value":l[0]||(l[0]=e=>a.value=e)},{default:A(()=>[(f(!0),c(w,null,R(j(t).items,e=>(f(),E(u,{key:e.value,value:e.value},{default:A(()=>[M(C(e.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])}}}),ae=_({__name:"form-template-field-help",props:{field:{}},setup:e=>(e,l)=>{const a=q;return f(),E(a,null,{default:A(()=>[(f(!0),c(w,null,R(e.field.list,e=>(f(),c("li",{key:e},C(e),1))),128))]),_:1})}}),te=_({__name:"form-template-field",props:g({field:{}},{value:{},valueModifiers:{}}),emits:g(["change"],["update:value"]),setup(e,{emit:a}){const t=e,u=a,n=y(e,"value"),i=h(t,"field"),r=(()=>{switch(i.value.type){case"select":return X;case"number":return ee;case"radio":return le;case"help":return ae;default:return l}})(),d=e=>{u("change",e,i.value.attr)};return(e,l)=>(f(),E(P(j(r)),{value:n.value,"onUpdate:value":[l[0]||(l[0]=e=>n.value=e),d],field:j(i)},null,40,["value","field"]))}}),ue=_({__name:"form-template",props:g({type:{default:"none"},template:{default:()=>({field:[],sorted:[]})}},{value:{default:()=>({})},valueModifiers:{}}),emits:["update:value"],setup(e,{expose:l}){const a=e,{t:t}=B(),u=h(a,"type"),r=h(a,"template"),d=y(e,"value"),s=b(()=>{const{field:e,sorted:l}=r.value,a=[];return l.forEach(l=>{const t=[];l.forEach(l=>{const a=e.find(e=>e.attr===l);a&&t.push(a)}),a.push(t)}),a}),o=(e,l)=>{"system_disk"===u.value&&"cycle"===l&&v(),"project_status"===u.value&&"cycle"===l&&p()},v=()=>{const{cycle:e}=d.value;switch(e){case 1:r.value.field[2].unit="GB",r.value.field[2].name=t("Config.Alarm.index_26");break;case 2:r.value.field[2].unit="%",r.value.field[2].name=t("Config.Alarm.index_27")}},p=()=>{const{field:e}=r.value,[,l]=e,{all_items:a}=l;if(a&&n(d.value.cycle)){const e=a[i(d.value.cycle)-1];e.length>0?(l.items=e,d.value.project=e[0].value):(l.items=[],d.value.project=null)}},m=()=>{switch(u.value){case"system_disk":v();break;case"project_status":p()}};return m(),l({render:m}),(e,l)=>{const a=W;return f(!0),c(w,null,R(j(s),(e,l)=>(f(),c(w,null,[1===e.length?(f(!0),c(w,{key:0},R(e,e=>(f(),E(a,{key:`${j(u)}-${e.attr}`,label:e.name},{default:A(()=>[U(te,{value:d.value[e.attr],"onUpdate:value":l=>d.value[e.attr]=l,field:e,onChange:o},null,8,["value","onUpdate:value","field"])]),_:2},1032,["label"]))),128)):k("",!0),e.length>1?(f(),c("div",{key:`${j(u)}-${l+1}`,class:"flex"},[(f(!0),c(w,null,R(e,(e,l)=>(f(),E(a,{key:`${j(u)}-${e.attr}`,label:e.name,"label-width":0!==l?"auto":void 0},{default:A(()=>[U(te,{value:d.value[e.attr],"onUpdate:value":l=>d.value[e.attr]=l,field:e,onChange:o},null,8,["value","onUpdate:value","field"])]),_:2},1032,["label","label-width"]))),128))])):k("",!0)],64))),256)}}}),ne=_({__name:"form-advanced",props:g({config:{default:()=>({})},inverse:{type:Boolean,default:!1},timeRangeShow:{type:Boolean,default:!1}},{value:{default:()=>({day_num:0,total:0,send_interval:0,time_range:[]})},valueModifiers:{}}),emits:["update:value"],setup(e){const l=e,a=h(l,"config"),t=y(e,"value"),u=e=>l.inverse?!a.value[e]:a.value[e];return(e,l)=>{const a=Y,n=z,i=V,r=W,d=N;return f(),c(w,null,[u("day_num")?(f(),E(r,{key:0,label:e.$t("Config.Alarm.index_28"),path:"day_num"},{default:A(()=>[U(i,null,{default:A(()=>[U(a,{value:t.value.day_num,"onUpdate:value":l[0]||(l[0]=e=>t.value.day_num=e),class:"w-100px",min:0,"show-button":!1,placeholder:""},null,8,["value"]),U(n,{class:"min-w-52px text-center"},{default:A(()=>[M(C(e.$t("Public.Unit.Times")),1)]),_:1})]),_:1})]),_:1},8,["label"])):k("",!0),u("total")?(f(),E(r,{key:1,label:e.$t("Config.Alarm.index_30"),path:"total"},{default:A(()=>[U(i,null,{default:A(()=>[U(a,{value:t.value.total,"onUpdate:value":l[1]||(l[1]=e=>t.value.total=e),class:"w-100px",min:0,"show-button":!1,placeholder:""},null,8,["value"]),U(n,{class:"min-w-52px text-center"},{default:A(()=>[M(C(e.$t("Public.Unit.Times")),1)]),_:1})]),_:1})]),_:1},8,["label"])):k("",!0),u("send_interval")?(f(),E(r,{key:2,label:e.$t("Config.Alarm.index_31"),path:"send_interval"},{default:A(()=>[U(i,null,{default:A(()=>[U(a,{value:t.value.send_interval,"onUpdate:value":l[2]||(l[2]=e=>t.value.send_interval=e),class:"w-100px",min:0,"show-button":!1,placeholder:""},null,8,["value"]),U(n,{class:"min-w-52px text-center"},{default:A(()=>[M(C(e.$t("Public.Unit.Seconds")),1)]),_:1})]),_:1})]),_:1},8,["label"])):k("",!0),e.timeRangeShow?(f(),E(r,{key:3,label:e.$t("Config.Alarm.index_33"),path:"time_range","show-feedback":!1},{default:A(()=>[U(d,{value:t.value.time_range,"onUpdate:value":l[3]||(l[3]=e=>t.value.time_range=e)},null,8,["value"])]),_:1},8,["label"])):k("",!0)],64)}}}),ie={class:"px-20px py-24px"},re={class:"w-260px"},de={class:"w-260px"};e("default",_({__name:"form",props:{isEdit:{type:Boolean},row:{}},emits:["refresh"],setup(e,{expose:l,emit:i}){const _=e,g=r(),{isPro:y}=D(g),w=i,{t:k}=B(),$=h(_,"isEdit"),C=O(null),E=O(),R=O(!1),P=S({type:null,method:[],day_num:0,total:0,send_interval:0,time_range:[(new Date).setHours(0,0,0,0),(new Date).setHours(23,59,59,0)],template:{}}),V=S({day_num:{trigger:["input","blur"],validator:()=>!(!P.day_num&&0!==P.day_num)||(N.value.day_num||(R.value=!0),new Error(k("Config.Alarm.index_22")))},total:{trigger:["input","blur"],validator:()=>!(!P.total&&0!==P.total)||(N.value.total||(R.value=!0),new Error(k("Config.Alarm.index_23")))},send_interval:{trigger:["input","blur"],validator:()=>!(!P.send_interval&&0!==P.send_interval)||(N.value.send_interval||(R.value=!0),new Error(k("Config.Alarm.index_24")))},method:{trigger:["change"],validator:()=>0!==P.method.length||new Error(k("Config.Alarm.index_25"))}}),Y=T([]),z=b(()=>Y.value.map((e,l)=>({label:e.title,value:l,disabled:"80"===e.id&&!y.value,data:e}))),G=b(()=>{let e="none";const l=Y.value[P.type||0];return l&&(e=l.source),e}),L=e=>U("div",null,[U("span",null,[e.label,M(" ")]),14===e.value?U("span",{class:"float-right cursor-pointer color-#ffb800",onClick:()=>{K({source:323})}},[M("PRO")]):""]),q=O({field:[],sorted:[]}),N=O({}),Q=()=>Y.value[P.type||0],X=()=>{const e=Q();q.value=e.template,q.value.field.forEach(l=>{l.default?P.template[l.attr]=l.default:P.template[l.attr]=e.default[l.attr]}),P.day_num=0,P.total=0,P.send_interval=0;const l={},{advanced_default:a}=e;d(a)&&Object.entries(a).forEach(([e,a])=>{d(a)?Object.entries(a).forEach(([e,a])=>{l[e]=!0,ee(e,a)}):n(a)&&(l[e]=!0,ee(e,a))}),N.value=l},Z=["day_num","total","send_interval"],ee=(e,l)=>{Z.includes(e)&&(P[e]=l)},le=()=>{X(),F(()=>{E.value.render()})},{loading:ae,setLoading:te}=J(),se=e=>{const l=new Date,a=l.getFullYear(),t=l.getMonth(),u=l.getDate();return new Date(a,t,u).getTime()+1e3*e};return(async()=>{await(async()=>{try{te(!0);const{message:e}=await m();s(e)&&(Y.value=e,P.type=0,$.value||X())}finally{te(!1)}})();const{row:e}=_;$.value&&e&&(P.type=Y.value.findIndex(l=>l.id===e.template_id),X(),P.method=e.sender,e.number_rule&&(P.day_num=e.number_rule.day_num,P.total=e.number_rule.total),e.time_rule&&(P.send_interval=e.time_rule.send_interval,e.time_rule.time_range&&e.time_rule.time_range.length>0&&(P.time_range=[se(e.time_rule.time_range[0]),se(e.time_rule.time_range[1])])),Object.keys(P.template).forEach(l=>{e.task_data&&(P.template[l]=e.task_data[l])}),await F(),E.value.render())})(),l({onConfirm:async()=>{await(C.value?.validate());const{row:e}=_,l=(()=>{const e=Q();return{template_id:e.id,task_data:{task_data:{tid:e.id,type:e.source,title:e.title,status:!0,count:0,interval:600,project:"",...P.template},sender:P.method,number_rule:{day_num:P.day_num,total:P.total},time_rule:{send_interval:P.send_interval,time_range:[o(P.time_range[0]),o(P.time_range[1])]}}}})();$.value&&e?await v({...l,task_id:e.id}):await p(l),w("refresh")}}),(e,l)=>{const n=I,i=W,r=u,d=t,s=a;return f(),c("div",ie,[U(s,{ref_key:"formRef",ref:C,model:j(P),rules:j(V),"label-width":"140"},{default:A(()=>[U(i,{label:e.$t("Config.Alarm.index_19")},{default:A(()=>[x("div",re,[U(n,{value:j(P).type,"onUpdate:value":[l[0]||(l[0]=e=>j(P).type=e),le],options:j(z),loading:j(ae),"render-label":L},null,8,["value","options","loading"])])]),_:1},8,["label"]),U(ue,{ref_key:"templateRef",ref:E,value:j(P).template,"onUpdate:value":l[1]||(l[1]=e=>j(P).template=e),type:j(G),template:j(q)},null,8,["value","type","template"]),U(ne,{value:j(P),"onUpdate:value":l[2]||(l[2]=e=>H(P)?P.value=e:null),config:j(N)},null,8,["value","config"]),U(i,{label:e.$t("Config.Alarm.index_20"),path:"method"},{default:A(()=>[x("div",de,[U(r,{value:j(P).method,"onUpdate:value":l[3]||(l[3]=e=>j(P).method=e)},null,8,["value"])])]),_:1},8,["label"]),U(d,{show:j(R),"onUpdate:show":l[5]||(l[5]=e=>H(R)?R.value=e:null),title:e.$t("Config.Alarm.index_21")},{default:A(()=>[U(ne,{value:j(P),"onUpdate:value":l[4]||(l[4]=e=>H(P)?P.value=e:null),config:j(N),inverse:!0,"time-range-show":!0},null,8,["value","config"])]),_:1},8,["show","title"])]),_:1},8,["model","rules"])])}}}))}}}); diff --git a/BTPanel/static/vite/js/form-legacy3.js b/BTPanel/static/vite/js/form-legacy3.js index 1f9d8ccf..b809db59 100644 --- a/BTPanel/static/vite/js/form-legacy3.js +++ b/BTPanel/static/vite/js/form-legacy3.js @@ -1 +1 @@ -System.register(["./form.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./index-legacy263.js?v=1760428868419"],function(e,l){"use strict";return{setters:[l=>{l._,e("default",l._)},null,null,null,null,null,null,null,null],execute:function(){}}}); +System.register(["./form.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./index-legacy261.js?v=1762424784323"],function(e,l){"use strict";return{setters:[l=>{l._,e("default",l._)},null,null,null,null,null,null,null,null],execute:function(){}}}); diff --git a/BTPanel/static/vite/js/form-legacy4.js b/BTPanel/static/vite/js/form-legacy4.js index 1995a5ed..87f80dd8 100644 --- a/BTPanel/static/vite/js/form-legacy4.js +++ b/BTPanel/static/vite/js/form-legacy4.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./index-legacy99.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,l){"use strict";var r,a,t,o,i,s,u,c,d,n,p,f,m,_,v,y,w,b,h,P,S;return{setters:[e=>{r=e._},e=>{a=e._},e=>{t=e._},e=>{o=e.k,i=e.P,s=e.r,u=e.e,c=e.R,d=e.V,n=e.W,p=e.a3,f=e.l,m=e.S,_=e.U,v=e.v,y=e.a4},e=>{w=e.gc,b=e.gd},e=>{h=e.dR,P=e.dV,S=e.au},null,null],execute:function(){const l={class:"p-20px"},F={class:"w-240px"},g={class:"w-240px"},x={class:"w-240px"},U={class:"w-240px"},$={class:"w-240px"},j={class:"w-240px"},E={class:"w-240px"},T={class:"w-240px"};e("default",o({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(e,{expose:o,emit:I}){const C=e,k=I,{t:A}=i(),{isEdit:R,row:D}=C,N=s(null),O=u({protocol:"tcp",port:"",choose:"all",address:"",domain:"",types:"accept",chain:"INPUT",brief:""}),V={port:{trigger:["blur","input"],validator:()=>{const e=O.port.split(","),l=/^\d+$/;for(let r of e)if(l.test(r)){const e=parseInt(r,10);if(e<1||e>65535)return new Error(A("Security.Firewall.Port.form_15"))}else{if(!r.includes("-"))return""==r?new Error(A("Security.Firewall.Port.form_16")):new Error(A("Security.Firewall.Port.form_15"));{const e=r.split("-"),l=parseInt(e[0],10),a=parseInt(e[1],10);if(l<1||a>65535||l>a)return new Error(A("Security.Firewall.Port.form_15"))}}return!0}},address:{trigger:["blur","input"],validator:()=>!!("point"!==O.choose||""!==O.address.trim()&&O.address)||new Error(A("Security.Firewall.Port.form_18"))},domain:{trigger:["blur","input"],validator:()=>!!("domain"!==O.choose||""!==O.domain.trim()&&O.domain)||new Error(A("Security.Firewall.Port.form_19"))}},B=[{label:"TCP",value:"tcp"},{label:"UDP",value:"udp"},{label:"TCP/UDP",value:"all"}],H=[{label:A("Security.Firewall.Port.form_20"),value:"all"},{label:A("Security.Firewall.Port.form_5"),value:"point"}],W=[{label:A("Security.Firewall.Port.form_21"),value:"accept"},{label:A("Security.Firewall.Port.form_22"),value:"drop"}],q=[{label:A("Security.Firewall.Port.form_23"),value:"INPUT"},{label:A("Security.Firewall.Port.form_24"),value:"OUTPUT"}];return R&&D&&(O.protocol=D.Protocol,O.port=D.Port,O.choose="all"===D.Address?"all":""===D.domain?"point":"domain",O.address="all"===D.Address?"":D.Address,O.domain=D.domain,O.types=D.Strategy,O.chain=D.Chain,O.brief=D.brief),o({onConfirm:async()=>{await(N.value?.validate());const e=(()=>{let e={protocol:O.protocol,port:O.port,choose:O.choose,domain:"domain"===O.choose?O.domain:"",types:O.types,strategy:O.types,chain:O.chain,brief:O.brief};return"point"===e.choose&&(e=Object.assign(e,{address:O.address})),e})();R&&D?await w({new_data:e,old_data:D}):await b(e),k("refresh")}}),(e,o)=>{const i=P,s=h,u=S,w=t,b=a,I=r;return d(),c("div",l,[n(b,{ref_key:"formRef",ref:N,model:_(O),rules:V},{default:p(()=>[n(s,{label:e.$t("Security.Firewall.Port.form_1"),path:"protocol"},{default:p(()=>[m("div",F,[n(i,{value:_(O).protocol,"onUpdate:value":o[0]||(o[0]=e=>_(O).protocol=e),options:B},null,8,["value"])])]),_:1},8,["label"]),n(s,{label:e.$t("Security.Firewall.Port.form_2"),path:"port"},{default:p(()=>[m("div",g,[n(u,{value:_(O).port,"onUpdate:value":o[1]||(o[1]=e=>_(O).port=e),disabled:_(R),placeholder:e.$t("Security.Firewall.Port.form_3")},null,8,["value","disabled","placeholder"])])]),_:1},8,["label"]),n(s,{label:e.$t("Security.Firewall.Port.form_4"),path:"choose"},{default:p(()=>[m("div",x,[n(i,{value:_(O).choose,"onUpdate:value":o[2]||(o[2]=e=>_(O).choose=e),options:H},null,8,["value"])])]),_:1},8,["label"]),f(n(s,{label:e.$t("Security.Firewall.Port.form_5"),path:"address"},{default:p(()=>[m("div",U,[n(w,{value:_(O).address,"onUpdate:value":o[3]||(o[3]=e=>_(O).address=e),rows:3,placeholder:e.$t("Security.Firewall.Port.form_6")},null,8,["value","placeholder"])])]),_:1},8,["label"]),[[v,"point"===_(O).choose]]),f(n(s,{label:e.$t("Security.Firewall.Port.form_7"),path:"domain"},{default:p(()=>[m("div",$,[n(w,{value:_(O).domain,"onUpdate:value":o[4]||(o[4]=e=>_(O).domain=e),rows:3,placeholder:e.$t("Security.Firewall.Port.form_8")},null,8,["value","placeholder"])])]),_:1},8,["label"]),[[v,"domain"===_(O).choose]]),n(s,{label:e.$t("Security.Firewall.Port.form_9"),path:"types"},{default:p(()=>[m("div",j,[n(i,{value:_(O).types,"onUpdate:value":o[5]||(o[5]=e=>_(O).types=e),options:W},null,8,["value"])])]),_:1},8,["label"]),n(s,{label:e.$t("Security.Firewall.Port.form_10"),path:"types"},{default:p(()=>[m("div",E,[n(i,{value:_(O).chain,"onUpdate:value":o[6]||(o[6]=e=>_(O).chain=e),options:q},null,8,["value"])])]),_:1},8,["label"]),n(s,{label:e.$t("Security.Firewall.Port.form_11"),path:"brief","show-feedback":!1},{default:p(()=>[m("div",T,[n(u,{value:_(O).brief,"onUpdate:value":o[7]||(o[7]=e=>_(O).brief=e),placeholder:e.$t("Security.Firewall.Port.form_12")},null,8,["value","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"]),n(I,{class:"mt-20px ml-40px"},{default:p(()=>[m("li",null,y(e.$t("Security.Firewall.Port.form_13")),1),m("li",null,y(e.$t("Security.Firewall.Port.form_14")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./index-legacy99.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,l){"use strict";var r,a,t,o,i,s,u,c,d,n,p,f,m,_,v,y,w,b,h,P,S;return{setters:[e=>{r=e._},e=>{a=e._},e=>{t=e._},e=>{o=e.k,i=e.P,s=e.r,u=e.e,c=e.R,d=e.V,n=e.W,p=e.a3,f=e.l,m=e.S,_=e.U,v=e.v,y=e.a4},e=>{w=e.g8,b=e.g9},e=>{h=e.dR,P=e.dV,S=e.au},null,null],execute:function(){const l={class:"p-20px"},F={class:"w-240px"},g={class:"w-240px"},x={class:"w-240px"},U={class:"w-240px"},$={class:"w-240px"},j={class:"w-240px"},E={class:"w-240px"},T={class:"w-240px"};e("default",o({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(e,{expose:o,emit:I}){const C=e,k=I,{t:A}=i(),{isEdit:R,row:D}=C,N=s(null),O=u({protocol:"tcp",port:"",choose:"all",address:"",domain:"",types:"accept",chain:"INPUT",brief:""}),V={port:{trigger:["blur","input"],validator:()=>{const e=O.port.split(","),l=/^\d+$/;for(let r of e)if(l.test(r)){const e=parseInt(r,10);if(e<1||e>65535)return new Error(A("Security.Firewall.Port.form_15"))}else{if(!r.includes("-"))return""==r?new Error(A("Security.Firewall.Port.form_16")):new Error(A("Security.Firewall.Port.form_15"));{const e=r.split("-"),l=parseInt(e[0],10),a=parseInt(e[1],10);if(l<1||a>65535||l>a)return new Error(A("Security.Firewall.Port.form_15"))}}return!0}},address:{trigger:["blur","input"],validator:()=>!!("point"!==O.choose||""!==O.address.trim()&&O.address)||new Error(A("Security.Firewall.Port.form_18"))},domain:{trigger:["blur","input"],validator:()=>!!("domain"!==O.choose||""!==O.domain.trim()&&O.domain)||new Error(A("Security.Firewall.Port.form_19"))}},B=[{label:"TCP",value:"tcp"},{label:"UDP",value:"udp"},{label:"TCP/UDP",value:"all"}],H=[{label:A("Security.Firewall.Port.form_20"),value:"all"},{label:A("Security.Firewall.Port.form_5"),value:"point"}],W=[{label:A("Security.Firewall.Port.form_21"),value:"accept"},{label:A("Security.Firewall.Port.form_22"),value:"drop"}],q=[{label:A("Security.Firewall.Port.form_23"),value:"INPUT"},{label:A("Security.Firewall.Port.form_24"),value:"OUTPUT"}];return R&&D&&(O.protocol=D.Protocol,O.port=D.Port,O.choose="all"===D.Address?"all":""===D.domain?"point":"domain",O.address="all"===D.Address?"":D.Address,O.domain=D.domain,O.types=D.Strategy,O.chain=D.Chain,O.brief=D.brief),o({onConfirm:async()=>{await(N.value?.validate());const e=(()=>{let e={protocol:O.protocol,port:O.port,choose:O.choose,domain:"domain"===O.choose?O.domain:"",types:O.types,strategy:O.types,chain:O.chain,brief:O.brief};return"point"===e.choose&&(e=Object.assign(e,{address:O.address})),e})();R&&D?await w({new_data:e,old_data:D}):await b(e),k("refresh")}}),(e,o)=>{const i=P,s=h,u=S,w=t,b=a,I=r;return d(),c("div",l,[n(b,{ref_key:"formRef",ref:N,model:_(O),rules:V},{default:p(()=>[n(s,{label:e.$t("Security.Firewall.Port.form_1"),path:"protocol"},{default:p(()=>[m("div",F,[n(i,{value:_(O).protocol,"onUpdate:value":o[0]||(o[0]=e=>_(O).protocol=e),options:B},null,8,["value"])])]),_:1},8,["label"]),n(s,{label:e.$t("Security.Firewall.Port.form_2"),path:"port"},{default:p(()=>[m("div",g,[n(u,{value:_(O).port,"onUpdate:value":o[1]||(o[1]=e=>_(O).port=e),disabled:_(R),placeholder:e.$t("Security.Firewall.Port.form_3")},null,8,["value","disabled","placeholder"])])]),_:1},8,["label"]),n(s,{label:e.$t("Security.Firewall.Port.form_4"),path:"choose"},{default:p(()=>[m("div",x,[n(i,{value:_(O).choose,"onUpdate:value":o[2]||(o[2]=e=>_(O).choose=e),options:H},null,8,["value"])])]),_:1},8,["label"]),f(n(s,{label:e.$t("Security.Firewall.Port.form_5"),path:"address"},{default:p(()=>[m("div",U,[n(w,{value:_(O).address,"onUpdate:value":o[3]||(o[3]=e=>_(O).address=e),rows:3,placeholder:e.$t("Security.Firewall.Port.form_6")},null,8,["value","placeholder"])])]),_:1},8,["label"]),[[v,"point"===_(O).choose]]),f(n(s,{label:e.$t("Security.Firewall.Port.form_7"),path:"domain"},{default:p(()=>[m("div",$,[n(w,{value:_(O).domain,"onUpdate:value":o[4]||(o[4]=e=>_(O).domain=e),rows:3,placeholder:e.$t("Security.Firewall.Port.form_8")},null,8,["value","placeholder"])])]),_:1},8,["label"]),[[v,"domain"===_(O).choose]]),n(s,{label:e.$t("Security.Firewall.Port.form_9"),path:"types"},{default:p(()=>[m("div",j,[n(i,{value:_(O).types,"onUpdate:value":o[5]||(o[5]=e=>_(O).types=e),options:W},null,8,["value"])])]),_:1},8,["label"]),n(s,{label:e.$t("Security.Firewall.Port.form_10"),path:"types"},{default:p(()=>[m("div",E,[n(i,{value:_(O).chain,"onUpdate:value":o[6]||(o[6]=e=>_(O).chain=e),options:q},null,8,["value"])])]),_:1},8,["label"]),n(s,{label:e.$t("Security.Firewall.Port.form_11"),path:"brief","show-feedback":!1},{default:p(()=>[m("div",T,[n(u,{value:_(O).brief,"onUpdate:value":o[7]||(o[7]=e=>_(O).brief=e),placeholder:e.$t("Security.Firewall.Port.form_12")},null,8,["value","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"]),n(I,{class:"mt-20px ml-40px"},{default:p(()=>[m("li",null,y(e.$t("Security.Firewall.Port.form_13")),1),m("li",null,y(e.$t("Security.Firewall.Port.form_14")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/form-legacy5.js b/BTPanel/static/vite/js/form-legacy5.js index b2275a17..3c644168 100644 --- a/BTPanel/static/vite/js/form-legacy5.js +++ b/BTPanel/static/vite/js/form-legacy5.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./index-legacy99.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,l){"use strict";var a,r,t,i,s,u,d,c,o,n,p,f,y,_,m,v,w,b,h;return{setters:[e=>{a=e._},e=>{r=e._},e=>{t=e._},e=>{i=e.gf,s=e.gg},e=>{u=e.k,d=e.P,c=e.r,o=e.e,n=e.R,p=e.V,f=e.W,y=e.a3,_=e.S,m=e.U,v=e.a4},e=>{w=e.dR,b=e.dV,h=e.au},null,null],execute:function(){const l={class:"p-20px"},g={class:"w-200px"},P={class:"w-200px"},S={class:"w-200px"},I={class:"w-200px"};e("default",u({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(e,{expose:u,emit:F}){const x=e,j=F,{t:U}=d(),{isEdit:$,row:T}=x,k=c(null),E=o({address:"",types:"accept",chain:"INPUT",brief:""}),R={address:{trigger:["blur","input"],validator:()=>!(""===E.address.trim()||!E.address)||new Error(U("Security.Firewall.IP.form_10"))}},C=[{label:U("Security.Firewall.IP.form_11"),value:"accept"},{label:U("Security.Firewall.IP.form_12"),value:"drop"}],N=[{label:U("Security.Firewall.IP.form_13"),value:"INPUT"},{label:U("Security.Firewall.IP.form_14"),value:"OUTPUT"}];return $&&T&&(E.address=T.Address,E.types=T.Strategy,E.chain=T.Chain,E.brief=T.brief),u({onConfirm:async()=>{await(k.value?.validate());const e={address:E.address,types:E.types,strategy:E.types,chain:E.chain,brief:E.brief,family:"ipv4"};$&&T?await i({new_data:{...e,id:T.id},old_data:T}):await s(e),j("refresh")}}),(e,i)=>{const s=t,u=w,d=b,c=h,o=r,F=a;return p(),n("div",l,[f(o,{ref_key:"formRef",ref:k,model:m(E),rules:R},{default:y(()=>[f(u,{label:e.$t("Security.Firewall.IP.form_16"),path:"address"},{default:y(()=>[_("div",g,[f(s,{value:m(E).address,"onUpdate:value":i[0]||(i[0]=e=>m(E).address=e),rows:3,disabled:m($),placeholder:e.$t("Security.Firewall.IP.form_1")},null,8,["value","disabled","placeholder"])])]),_:1},8,["label"]),f(u,{label:e.$t("Security.Firewall.IP.form_2"),path:"types"},{default:y(()=>[_("div",P,[f(d,{value:m(E).types,"onUpdate:value":i[1]||(i[1]=e=>m(E).types=e),options:C},null,8,["value"])])]),_:1},8,["label"]),f(u,{label:e.$t("Security.Firewall.IP.form_3"),path:"chain"},{default:y(()=>[_("div",S,[f(d,{value:m(E).chain,"onUpdate:value":i[2]||(i[2]=e=>m(E).chain=e),options:N},null,8,["value"])])]),_:1},8,["label"]),f(u,{label:e.$t("Security.Firewall.IP.form_4"),path:"brief","show-feedback":!1},{default:y(()=>[_("div",I,[f(c,{value:m(E).brief,"onUpdate:value":i[3]||(i[3]=e=>m(E).brief=e),placeholder:e.$t("Security.Firewall.IP.form_5")},null,8,["value","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"]),f(F,{class:"mt-20px ml-40px"},{default:y(()=>[_("li",null,v(e.$t("Security.Firewall.IP.form_15")),1),_("li",null,v(e.$t("Security.Firewall.IP.form_8")),1),_("li",null,v(e.$t("Security.Firewall.IP.form_9")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./index-legacy99.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,l){"use strict";var a,r,t,i,s,u,d,c,o,n,p,f,y,_,m,v,w,b,h;return{setters:[e=>{a=e._},e=>{r=e._},e=>{t=e._},e=>{i=e.gb,s=e.gc},e=>{u=e.k,d=e.P,c=e.r,o=e.e,n=e.R,p=e.V,f=e.W,y=e.a3,_=e.S,m=e.U,v=e.a4},e=>{w=e.dR,b=e.dV,h=e.au},null,null],execute:function(){const l={class:"p-20px"},P={class:"w-200px"},g={class:"w-200px"},S={class:"w-200px"},I={class:"w-200px"};e("default",u({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(e,{expose:u,emit:F}){const x=e,j=F,{t:U}=d(),{isEdit:$,row:T}=x,k=c(null),E=o({address:"",types:"accept",chain:"INPUT",brief:""}),R={address:{trigger:["blur","input"],validator:()=>!(""===E.address.trim()||!E.address)||new Error(U("Security.Firewall.IP.form_10"))}},C=[{label:U("Security.Firewall.IP.form_11"),value:"accept"},{label:U("Security.Firewall.IP.form_12"),value:"drop"}],N=[{label:U("Security.Firewall.IP.form_13"),value:"INPUT"},{label:U("Security.Firewall.IP.form_14"),value:"OUTPUT"}];return $&&T&&(E.address=T.Address,E.types=T.Strategy,E.chain=T.Chain,E.brief=T.brief),u({onConfirm:async()=>{await(k.value?.validate());const e={address:E.address,types:E.types,strategy:E.types,chain:E.chain,brief:E.brief,family:"ipv4"};$&&T?await i({new_data:{...e,id:T.id},old_data:T}):await s(e),j("refresh")}}),(e,i)=>{const s=t,u=w,d=b,c=h,o=r,F=a;return p(),n("div",l,[f(o,{ref_key:"formRef",ref:k,model:m(E),rules:R},{default:y(()=>[f(u,{label:e.$t("Security.Firewall.IP.form_16"),path:"address"},{default:y(()=>[_("div",P,[f(s,{value:m(E).address,"onUpdate:value":i[0]||(i[0]=e=>m(E).address=e),rows:3,disabled:m($),placeholder:e.$t("Security.Firewall.IP.form_1")},null,8,["value","disabled","placeholder"])])]),_:1},8,["label"]),f(u,{label:e.$t("Security.Firewall.IP.form_2"),path:"types"},{default:y(()=>[_("div",g,[f(d,{value:m(E).types,"onUpdate:value":i[1]||(i[1]=e=>m(E).types=e),options:C},null,8,["value"])])]),_:1},8,["label"]),f(u,{label:e.$t("Security.Firewall.IP.form_3"),path:"chain"},{default:y(()=>[_("div",S,[f(d,{value:m(E).chain,"onUpdate:value":i[2]||(i[2]=e=>m(E).chain=e),options:N},null,8,["value"])])]),_:1},8,["label"]),f(u,{label:e.$t("Security.Firewall.IP.form_4"),path:"brief","show-feedback":!1},{default:y(()=>[_("div",I,[f(c,{value:m(E).brief,"onUpdate:value":i[3]||(i[3]=e=>m(E).brief=e),placeholder:e.$t("Security.Firewall.IP.form_5")},null,8,["value","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"]),f(F,{class:"mt-20px ml-40px"},{default:y(()=>[_("li",null,v(e.$t("Security.Firewall.IP.form_15")),1),_("li",null,v(e.$t("Security.Firewall.IP.form_8")),1),_("li",null,v(e.$t("Security.Firewall.IP.form_9")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/form-legacy6.js b/BTPanel/static/vite/js/form-legacy6.js index ae6adfec..ee98649c 100644 --- a/BTPanel/static/vite/js/form-legacy6.js +++ b/BTPanel/static/vite/js/form-legacy6.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(r,e){"use strict";var l,a,o,t,s,d,i,u,p,_,c,w,n,f,m,v,F,y,b;return{setters:[r=>{l=r._},r=>{a=r._},r=>{o=r.gh,t=r.gi,s=r.b3},r=>{d=r.k,i=r.P,u=r.r,p=r.e,_=r.R,c=r.V,w=r.W,n=r.a3,f=r.S,m=r.U,v=r.a4},r=>{F=r.dR,y=r.dV,b=r.au},null,null],execute:function(){const e={class:"p-20px"},S={class:"w-200px"},h={class:"w-200px"},g={class:"w-200px"},x={class:"w-200px"},$={class:"w-200px"};r("default",d({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(r,{expose:d,emit:P}){const j=r,U=P,{t:E}=i(),{isEdit:T,row:k}=j,C=u(null),R=p({protocol:"tcp",s_ports:"",d_address:"",d_ports:"",brief:""}),A={s_ports:{trigger:["blur","input"],validator:()=>""!==R.s_ports.trim()&&R.s_ports?!!s(R.s_ports)||new Error(E("Security.Firewall.Forward.form_12")):new Error(E("Security.Firewall.Forward.form_3"))},d_ports:{trigger:["blur","input"],validator:()=>""!==R.d_ports.trim()&&R.d_ports?!!s(R.d_ports)||new Error(E("Security.Firewall.Forward.form_12")):new Error(E("Security.Firewall.Forward.form_7"))}},V=[{label:"TCP",value:"tcp"},{label:"UDP",value:"udp"}];return T&&k&&(R.protocol=k.Protocol?k.Protocol.toLowerCase():"tcp",R.s_ports=k.S_Port||"",R.d_address=k.T_Address||"",R.d_ports=k.T_Port||"",R.brief=k.brief),d({onConfirm:async()=>{await(C.value?.validate());const r={protocol:R.protocol,S_Port:R.s_ports,T_Port:R.d_ports,T_Address:R.d_address,brief:R.brief};T&&k?await o({new_data:{...r,id:k.id},old_data:k}):await t(r),U("refresh")}}),(r,o)=>{const t=y,s=F,d=b,i=a,u=l;return c(),_("div",e,[w(i,{ref_key:"formRef",ref:C,model:m(R),rules:A},{default:n(()=>[w(s,{label:r.$t("Security.Firewall.Forward.form_1"),path:"protocol"},{default:n(()=>[f("div",S,[w(t,{value:m(R).protocol,"onUpdate:value":o[0]||(o[0]=r=>m(R).protocol=r),options:V},null,8,["value"])])]),_:1},8,["label"]),w(s,{label:r.$t("Security.Firewall.Forward.form_2"),path:"s_ports"},{default:n(()=>[f("div",h,[w(d,{value:m(R).s_ports,"onUpdate:value":o[1]||(o[1]=r=>m(R).s_ports=r),placeholder:r.$t("Security.Firewall.Forward.form_3")},null,8,["value","placeholder"])])]),_:1},8,["label"]),w(s,{label:r.$t("Security.Firewall.Forward.form_4"),path:"d_address"},{default:n(()=>[f("div",g,[w(d,{value:m(R).d_address,"onUpdate:value":o[2]||(o[2]=r=>m(R).d_address=r),placeholder:r.$t("Security.Firewall.Forward.form_5")},null,8,["value","placeholder"])])]),_:1},8,["label"]),w(s,{label:r.$t("Security.Firewall.Forward.form_6"),path:"d_ports"},{default:n(()=>[f("div",x,[w(d,{value:m(R).d_ports,"onUpdate:value":o[3]||(o[3]=r=>m(R).d_ports=r),placeholder:r.$t("Security.Firewall.Forward.form_7")},null,8,["value","placeholder"])])]),_:1},8,["label"]),w(s,{label:r.$t("Security.Firewall.Forward.form_8"),path:"brief","show-feedback":!1},{default:n(()=>[f("div",$,[w(d,{value:m(R).brief,"onUpdate:value":o[4]||(o[4]=r=>m(R).brief=r),placeholder:r.$t("Security.Firewall.Forward.form_9")},null,8,["value","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"]),w(u,{class:"mt-20px ml-40px"},{default:n(()=>[f("li",null,v(r.$t("Security.Firewall.Forward.form_10")),1),f("li",null,v(r.$t("Security.Firewall.Forward.form_11")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(r,e){"use strict";var l,a,o,t,s,d,i,u,p,_,c,w,n,f,m,v,F,y,b;return{setters:[r=>{l=r._},r=>{a=r._},r=>{o=r.gd,t=r.ge,s=r.b3},r=>{d=r.k,i=r.P,u=r.r,p=r.e,_=r.R,c=r.V,w=r.W,n=r.a3,f=r.S,m=r.U,v=r.a4},r=>{F=r.dR,y=r.dV,b=r.au},null,null],execute:function(){const e={class:"p-20px"},S={class:"w-200px"},g={class:"w-200px"},h={class:"w-200px"},x={class:"w-200px"},$={class:"w-200px"};r("default",d({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(r,{expose:d,emit:P}){const j=r,U=P,{t:E}=i(),{isEdit:T,row:k}=j,C=u(null),R=p({protocol:"tcp",s_ports:"",d_address:"",d_ports:"",brief:""}),A={s_ports:{trigger:["blur","input"],validator:()=>""!==R.s_ports.trim()&&R.s_ports?!!s(R.s_ports)||new Error(E("Security.Firewall.Forward.form_12")):new Error(E("Security.Firewall.Forward.form_3"))},d_ports:{trigger:["blur","input"],validator:()=>""!==R.d_ports.trim()&&R.d_ports?!!s(R.d_ports)||new Error(E("Security.Firewall.Forward.form_12")):new Error(E("Security.Firewall.Forward.form_7"))}},V=[{label:"TCP",value:"tcp"},{label:"UDP",value:"udp"}];return T&&k&&(R.protocol=k.Protocol?k.Protocol.toLowerCase():"tcp",R.s_ports=k.S_Port||"",R.d_address=k.T_Address||"",R.d_ports=k.T_Port||"",R.brief=k.brief),d({onConfirm:async()=>{await(C.value?.validate());const r={protocol:R.protocol,S_Port:R.s_ports,T_Port:R.d_ports,T_Address:R.d_address,brief:R.brief};T&&k?await o({new_data:{...r,id:k.id},old_data:k}):await t(r),U("refresh")}}),(r,o)=>{const t=y,s=F,d=b,i=a,u=l;return c(),_("div",e,[w(i,{ref_key:"formRef",ref:C,model:m(R),rules:A},{default:n(()=>[w(s,{label:r.$t("Security.Firewall.Forward.form_1"),path:"protocol"},{default:n(()=>[f("div",S,[w(t,{value:m(R).protocol,"onUpdate:value":o[0]||(o[0]=r=>m(R).protocol=r),options:V},null,8,["value"])])]),_:1},8,["label"]),w(s,{label:r.$t("Security.Firewall.Forward.form_2"),path:"s_ports"},{default:n(()=>[f("div",g,[w(d,{value:m(R).s_ports,"onUpdate:value":o[1]||(o[1]=r=>m(R).s_ports=r),placeholder:r.$t("Security.Firewall.Forward.form_3")},null,8,["value","placeholder"])])]),_:1},8,["label"]),w(s,{label:r.$t("Security.Firewall.Forward.form_4"),path:"d_address"},{default:n(()=>[f("div",h,[w(d,{value:m(R).d_address,"onUpdate:value":o[2]||(o[2]=r=>m(R).d_address=r),placeholder:r.$t("Security.Firewall.Forward.form_5")},null,8,["value","placeholder"])])]),_:1},8,["label"]),w(s,{label:r.$t("Security.Firewall.Forward.form_6"),path:"d_ports"},{default:n(()=>[f("div",x,[w(d,{value:m(R).d_ports,"onUpdate:value":o[3]||(o[3]=r=>m(R).d_ports=r),placeholder:r.$t("Security.Firewall.Forward.form_7")},null,8,["value","placeholder"])])]),_:1},8,["label"]),w(s,{label:r.$t("Security.Firewall.Forward.form_8"),path:"brief","show-feedback":!1},{default:n(()=>[f("div",$,[w(d,{value:m(R).brief,"onUpdate:value":o[4]||(o[4]=r=>m(R).brief=r),placeholder:r.$t("Security.Firewall.Forward.form_9")},null,8,["value","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"]),w(u,{class:"mt-20px ml-40px"},{default:n(()=>[f("li",null,v(r.$t("Security.Firewall.Forward.form_10")),1),f("li",null,v(r.$t("Security.Firewall.Forward.form_11")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/form-legacy7.js b/BTPanel/static/vite/js/form-legacy7.js index b95d14b0..892774ec 100644 --- a/BTPanel/static/vite/js/form-legacy7.js +++ b/BTPanel/static/vite/js/form-legacy7.js @@ -1 +1 @@ -System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419"],function(e,l){"use strict";var a,t,r,o,u,s,i,n,p,c,d,y,f,_,v,m,b,w,h,g,S,x,A,F,j;return{setters:[e=>{a=e._},e=>{t=e.k,r=e.P,o=e.r,u=e.e,s=e.R,i=e.V,n=e.W,p=e.a3,c=e.l,d=e.a2,y=e.an,f=e.S,_=e.U,v=e.v},e=>{m=e.gj,b=e.w,w=e.k,h=e.gk,g=e.gl,S=e.b3},e=>{x=e.dR,A=e.dV,F=e.df,j=e._},null,null,null],execute:function(){const l={class:"px-20px pt-24px pb-8px"},k={class:"w-240px"},U={class:"w-240px"},$={class:"w-240px"},E={class:"w-240px"};e("default",t({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(e,{expose:t,emit:C}){const H=e,P=C,{t:R}=r(),{isEdit:V,row:B}=H,I=o(null),W=u({types:"drop",choose:"all",ports:null,country:["United States"],is_update:!1}),q={country:{trigger:"change",validator:()=>0!==W.country.length||new Error(R("Security.Firewall.Area.form_8"))},ports:{trigger:["blur","input"],validator:()=>{if("point"===W.choose){if(!W.ports)return new Error(R("Security.Firewall.Area.form_9"));if(!S(`${W.ports}`))return new Error(R("Security.Firewall.Area.form_10"))}return!0}}},z=[{label:R("Security.Firewall.Area.form_11"),value:"all"},{label:R("Security.Firewall.Area.form_3"),value:"point"}],D=[{label:R("Security.Firewall.Area.form_12"),value:"drop"}],G=o(!1),J=o([]);return(async()=>{try{G.value=!0;const{message:e}=await m();b(e)&&(J.value=e.map(e=>({label:e.CH,value:e.CH,brief:e.brief})))}finally{G.value=!1}})(),V&&B&&(W.types=B.types,W.choose=B.ports?"point":"all",W.ports=B.ports?w(B.ports):null,W.country=B.country),t({onConfirm:async()=>{await(I.value?.validate());const e={types:W.types,choose:W.choose,ports:"point"===W.choose?`${W.ports||""}`:"",country:W.country,brief:"",is_update:W.is_update};V&&B?(e.brief=`${J.value.find(e=>e.label===B.country)?.brief||""}`,await h({...e,id:B.id})):await g(e),P("refresh")}}),(e,t)=>{const r=A,o=x,u=F,m=j,b=a;return i(),s("div",l,[n(b,{ref_key:"formRef",ref:I,model:_(W),rules:q},{default:p(()=>[n(o,{label:e.$t("Security.Firewall.Area.form_1"),path:"types"},{default:p(()=>[f("div",k,[n(r,{value:_(W).types,"onUpdate:value":t[0]||(t[0]=e=>_(W).types=e),options:D},null,8,["value"])])]),_:1},8,["label"]),n(o,{label:e.$t("Security.Firewall.Area.form_2"),path:"choose"},{default:p(()=>[f("div",U,[n(r,{value:_(W).choose,"onUpdate:value":t[1]||(t[1]=e=>_(W).choose=e),options:z},null,8,["value"])])]),_:1},8,["label"]),c(n(o,{label:e.$t("Security.Firewall.Area.form_3"),path:"ports"},{default:p(()=>[f("div",$,[n(u,{value:_(W).ports,"onUpdate:value":t[2]||(t[2]=e=>_(W).ports=e),min:1,max:65535,"show-button":!1,placeholder:e.$t("Security.Firewall.Area.form_4")},null,8,["value","placeholder"])])]),_:1},8,["label"]),[[v,"point"===_(W).choose]]),n(o,{label:e.$t("Security.Firewall.Area.form_5"),path:"country"},{default:p(()=>[f("div",E,[n(r,{value:_(W).country,"onUpdate:value":t[3]||(t[3]=e=>_(W).country=e),filterable:"","max-tag-count":"responsive",multiple:!_(V),loading:_(G),options:_(J)},null,8,["value","multiple","loading","options"])])]),_:1},8,["label"]),_(V)?y("",!0):(i(),d(o,{key:0,label:" "},{default:p(()=>[n(m,{checked:_(W).is_update,"onUpdate:checked":t[4]||(t[4]=e=>_(W).is_update=e),label:"Update IP Pool"},null,8,["checked"])]),_:1}))]),_:1},8,["model"])])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323"],function(e,l){"use strict";var a,t,r,o,u,s,i,n,p,c,d,y,f,_,v,m,b,w,h,g,S,x,A,F,j;return{setters:[e=>{a=e._},e=>{t=e.k,r=e.P,o=e.r,u=e.e,s=e.R,i=e.V,n=e.W,p=e.a3,c=e.l,d=e.a2,y=e.an,f=e.S,_=e.U,v=e.v},e=>{m=e.gf,b=e.w,w=e.k,h=e.gg,g=e.gh,S=e.b3},e=>{x=e.dR,A=e.dV,F=e.df,j=e._},null,null,null],execute:function(){const l={class:"px-20px pt-24px pb-8px"},U={class:"w-240px"},$={class:"w-240px"},k={class:"w-240px"},E={class:"w-240px"};e("default",t({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(e,{expose:t,emit:C}){const H=e,P=C,{t:R}=r(),{isEdit:V,row:B}=H,I=o(null),W=u({types:"drop",choose:"all",ports:null,country:["United States"],is_update:!1}),q={country:{trigger:"change",validator:()=>0!==W.country.length||new Error(R("Security.Firewall.Area.form_8"))},ports:{trigger:["blur","input"],validator:()=>{if("point"===W.choose){if(!W.ports)return new Error(R("Security.Firewall.Area.form_9"));if(!S(`${W.ports}`))return new Error(R("Security.Firewall.Area.form_10"))}return!0}}},z=[{label:R("Security.Firewall.Area.form_11"),value:"all"},{label:R("Security.Firewall.Area.form_3"),value:"point"}],D=[{label:R("Security.Firewall.Area.form_12"),value:"drop"}],G=o(!1),J=o([]);return(async()=>{try{G.value=!0;const{message:e}=await m();b(e)&&(J.value=e.map(e=>({label:e.CH,value:e.CH,brief:e.brief})))}finally{G.value=!1}})(),V&&B&&(W.types=B.types,W.choose=B.ports?"point":"all",W.ports=B.ports?w(B.ports):null,W.country=B.country),t({onConfirm:async()=>{await(I.value?.validate());const e={types:W.types,choose:W.choose,ports:"point"===W.choose?`${W.ports||""}`:"",country:W.country,brief:"",is_update:W.is_update};V&&B?(e.brief=`${J.value.find(e=>e.label===B.country)?.brief||""}`,await h({...e,id:B.id})):await g(e),P("refresh")}}),(e,t)=>{const r=A,o=x,u=F,m=j,b=a;return i(),s("div",l,[n(b,{ref_key:"formRef",ref:I,model:_(W),rules:q},{default:p(()=>[n(o,{label:e.$t("Security.Firewall.Area.form_1"),path:"types"},{default:p(()=>[f("div",U,[n(r,{value:_(W).types,"onUpdate:value":t[0]||(t[0]=e=>_(W).types=e),options:D},null,8,["value"])])]),_:1},8,["label"]),n(o,{label:e.$t("Security.Firewall.Area.form_2"),path:"choose"},{default:p(()=>[f("div",$,[n(r,{value:_(W).choose,"onUpdate:value":t[1]||(t[1]=e=>_(W).choose=e),options:z},null,8,["value"])])]),_:1},8,["label"]),c(n(o,{label:e.$t("Security.Firewall.Area.form_3"),path:"ports"},{default:p(()=>[f("div",k,[n(u,{value:_(W).ports,"onUpdate:value":t[2]||(t[2]=e=>_(W).ports=e),min:1,max:65535,"show-button":!1,placeholder:e.$t("Security.Firewall.Area.form_4")},null,8,["value","placeholder"])])]),_:1},8,["label"]),[[v,"point"===_(W).choose]]),n(o,{label:e.$t("Security.Firewall.Area.form_5"),path:"country"},{default:p(()=>[f("div",E,[n(r,{value:_(W).country,"onUpdate:value":t[3]||(t[3]=e=>_(W).country=e),filterable:"","max-tag-count":"responsive",multiple:!_(V),loading:_(G),options:_(J)},null,8,["value","multiple","loading","options"])])]),_:1},8,["label"]),_(V)?y("",!0):(i(),d(o,{key:0,label:" "},{default:p(()=>[n(m,{checked:_(W).is_update,"onUpdate:checked":t[4]||(t[4]=e=>_(W).is_update=e),label:"Update IP Pool"},null,8,["checked"])]),_:1}))]),_:1},8,["model"])])}}}))}}}); diff --git a/BTPanel/static/vite/js/form-legacy8.js b/BTPanel/static/vite/js/form-legacy8.js index 103b9c23..e63959e1 100644 --- a/BTPanel/static/vite/js/form-legacy8.js +++ b/BTPanel/static/vite/js/form-legacy8.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,a){"use strict";var l,s,i,n,t,u,r,o,p,d,_,m,c,v,h,y,f,g,S,k,b,w,D,x,P,L,j,I,A;return{setters:[e=>{l=e.d,s=e._,i=e.U,n=e.ar,t=e.as},e=>{u=e.o,r=e.S,o=e.w},e=>{p=e._},e=>{d=e.k,_=e.P,m=e.r,c=e.c,v=e.e,h=e.a2,y=e.V,f=e.a3,g=e.W,S=e.an,k=e.U,b=e.l,w=e.S,D=e.v,x=e.j,P=e.a4},e=>{L=e.dR,j=e.dj,I=e.dV,A=e.au},null,null],execute:function(){const a={class:"w-300px"},U={class:"w-300px"},$={class:"w-300px"};e("default",d({__name:"form",props:{row:{},isEdit:{type:Boolean}},emits:["refresh"],setup(e,{expose:d,emit:C}){const F=e,N=C,{isEdit:T,row:B}=F,{t:E}=_(),q=m(null),K=m([]),V=c(()=>"CloudFlareDns"===H.name),W=c(()=>"NameSiloDns"!==H.name&&"global"===H.permission),R=c(()=>"PorkBunDns"===H.name),H=v({name:"",api_user:"",api_key:"",alias:"",permission:"global",status:1}),z={api_user:{required:!0,trigger:"blur",validator:(e,a)=>!("CloudFlareDns"!==H.name&&!a)||new Error(E("SSL.Domain.index_1"))},api_key:{required:!0,trigger:"blur",message:E("SSL.Domain.index_2")},alias:{required:!0,trigger:"blur",message:E("SSL.Domain.index_6")}},G=e=>{"CloudFlareDns"!==e&&"limit"===H.permission&&(H.permission="global"),q.value?.restoreValidation()},J=m(""),M=m(!0),O=()=>{M.value&&(H.api_user="")},Q=()=>{!H.api_user&&M.value?H.api_user=J.value:H.api_user&&(M.value=!1)},X=()=>({id:T&&B?B.id:null,name:T&&B&&H.name===B.name?null:H.name,api_user:T&&B&&H.api_user===B.api_user?null:W.value?H.api_user:"",api_key:T&&B&&H.api_key===B.api_key?null:H.api_key,permission:T&&B&&H.permission===B.permission?null:"CloudFlareDns"===H.name?H.permission:"",status:T&&B&&H.status===B.status?null:H.status,alias:T&&B&&H.alias===B.alias?null:H.alias}),{loading:Y,setLoading:Z}=l();return(async()=>{try{Z(!0);const{message:e}=await t();o(e)&&e.length>0&&(H.name=e[0],K.value=e.map(e=>({label:e,value:e})))}finally{(()=>{const{row:e,isEdit:a}=F;a&&e&&(H.name=e.name,H.api_user=e.api_user,J.value=e.api_user,H.api_key=e.api_key,H.permission=e.permission,H.status=e.status,H.alias=e.alias)})(),Z(!1)}})(),d({onConfirm:async()=>{await(q.value?.validate()),T&&B?await i(X()):await n(X()),N("refresh")}}),(e,l)=>{const i=j,n=L,t=I,o=A,d=p,_=u,m=s,c=r;return y(),h(c,{class:"p-20px",show:k(Y)},{default:f(()=>[g(d,{ref_key:"formRef",ref:q,model:k(H),rules:z},{default:f(()=>[g(n,{label:e.$t("Public.Table.Status"),path:"status"},{default:f(()=>[g(i,{value:k(H).status,"onUpdate:value":l[0]||(l[0]=e=>k(H).status=e),"checked-value":1,"unchecked-value":0},null,8,["value"])]),_:1},8,["label"]),g(n,{label:e.$t("Config.Alarm.index_43"),path:"name"},{default:f(()=>[g(t,{class:"w-300px",value:k(H).name,"onUpdate:value":[l[1]||(l[1]=e=>k(H).name=e),G],options:k(K),disabled:k(T)},null,8,["value","options","disabled"])]),_:1},8,["label"]),k(W)?(y(),h(n,{key:0,label:k(R)?"Secret Key":"API User",path:"api_user"},{default:f(()=>[w("div",a,[g(o,{value:k(H).api_user,"onUpdate:value":l[2]||(l[2]=e=>k(H).api_user=e),placeholder:k(R)?"Please enter Secret Key":e.$t("SSL.Domain.index_1"),onFocus:O,onBlur:Q},null,8,["value","placeholder"])])]),_:1},8,["label"])):S("",!0),g(n,{label:"API Key",path:"api_key"},{default:f(()=>[w("div",U,[g(o,{value:k(H).api_key,"onUpdate:value":l[3]||(l[3]=e=>k(H).api_key=e),placeholder:e.$t("SSL.Domain.index_2")},null,8,["value","placeholder"])])]),_:1}),g(n,{label:e.$t("Config.Panel.index_36"),path:"alias"},{default:f(()=>[w("div",$,[g(o,{value:k(H).alias,"onUpdate:value":l[4]||(l[4]=e=>k(H).alias=e),placeholder:e.$t("SSL.Domain.index_6")},null,8,["value","placeholder"])])]),_:1},8,["label"]),b(g(n,{label:"API-Limit",path:"permission"},{default:f(()=>[g(i,{value:k(H).permission,"onUpdate:value":l[5]||(l[5]=e=>k(H).permission=e),"checked-value":"limit","unchecked-value":"global"},null,8,["value"])]),_:1},512),[[D,k(V)]])]),_:1},8,["model"]),k(V)?(y(),h(m,{key:0},{default:f(()=>[w("li",null,[g(_,{target:"_blank",href:"https://www.aapanel.com/docs/Function/Tutorial/DNS_API_Tutorial.html"},{default:f(()=>[x(P(e.$t("SSL.Domain.index_3")),1)]),_:1})])]),_:1})):S("",!0),"NameCheapDns"===k(H).name?(y(),h(m,{key:1},{default:f(()=>[l[6]||(l[6]=w("li",null," Namecheap API needs added in Whitelisted IPs (only IPv4): Profile > Tools menu > Namecheap API Access > Whitelisted IPs, please check: ",-1)),w("li",null,[g(_,{target:"_blank",href:"https://www.namecheap.com/support/api/intro/"},{default:f(()=>[x(P(e.$t("SSL.Domain.index_3")),1)]),_:1})])]),_:1,__:[6]})):S("",!0),"NameSiloDns"===k(H).name||"PorkBunDns"===k(H).name?(y(),h(m,{key:2},{default:f(()=>[w("li",null,[g(_,{target:"_blank",href:"https://www.aapanel.com/docs/Function/Tutorial/DNS_API_Tutorial.html"},{default:f(()=>[x(P(e.$t("SSL.Domain.index_3")),1)]),_:1})])]),_:1})):S("",!0)]),_:1},8,["show"])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,a){"use strict";var l,s,i,n,t,u,r,o,p,d,_,m,c,v,h,y,f,g,S,k,b,w,D,x,P,L,j,I,A;return{setters:[e=>{l=e.d,s=e._,i=e.U,n=e.ar,t=e.as},e=>{u=e.o,r=e.S,o=e.w},e=>{p=e._},e=>{d=e.k,_=e.P,m=e.r,c=e.c,v=e.e,h=e.a2,y=e.V,f=e.a3,g=e.W,S=e.an,k=e.U,b=e.l,w=e.S,D=e.v,x=e.j,P=e.a4},e=>{L=e.dR,j=e.dj,I=e.dV,A=e.au},null,null],execute:function(){const a={class:"w-300px"},U={class:"w-300px"},$={class:"w-300px"};e("default",d({__name:"form",props:{row:{},isEdit:{type:Boolean}},emits:["refresh"],setup(e,{expose:d,emit:C}){const F=e,N=C,{isEdit:T,row:B}=F,{t:E}=_(),q=m(null),K=m([]),V=c(()=>"CloudFlareDns"===H.name),W=c(()=>"NameSiloDns"!==H.name&&"global"===H.permission),R=c(()=>"PorkBunDns"===H.name),H=v({name:"",api_user:"",api_key:"",alias:"",permission:"global",status:1}),z={api_user:{required:!0,trigger:"blur",validator:(e,a)=>!("CloudFlareDns"!==H.name&&!a)||new Error(E("SSL.Domain.index_1"))},api_key:{required:!0,trigger:"blur",message:E("SSL.Domain.index_2")},alias:{required:!0,trigger:"blur",message:E("SSL.Domain.index_6")}},G=e=>{"CloudFlareDns"!==e&&"limit"===H.permission&&(H.permission="global"),q.value?.restoreValidation()},J=m(""),M=m(!0),O=()=>{M.value&&(H.api_user="")},Q=()=>{!H.api_user&&M.value?H.api_user=J.value:H.api_user&&(M.value=!1)},X=()=>({id:T&&B?B.id:null,name:T&&B&&H.name===B.name?null:H.name,api_user:T&&B&&H.api_user===B.api_user?null:W.value?H.api_user:"",api_key:T&&B&&H.api_key===B.api_key?null:H.api_key,permission:T&&B&&H.permission===B.permission?null:"CloudFlareDns"===H.name?H.permission:"",status:T&&B&&H.status===B.status?null:H.status,alias:T&&B&&H.alias===B.alias?null:H.alias}),{loading:Y,setLoading:Z}=l();return(async()=>{try{Z(!0);const{message:e}=await t();o(e)&&e.length>0&&(H.name=e[0],K.value=e.map(e=>({label:e,value:e})))}finally{(()=>{const{row:e,isEdit:a}=F;a&&e&&(H.name=e.name,H.api_user=e.api_user,J.value=e.api_user,H.api_key=e.api_key,H.permission=e.permission,H.status=e.status,H.alias=e.alias)})(),Z(!1)}})(),d({onConfirm:async()=>{await(q.value?.validate()),T&&B?await i(X()):await n(X()),N("refresh")}}),(e,l)=>{const i=j,n=L,t=I,o=A,d=p,_=u,m=s,c=r;return y(),h(c,{class:"p-20px",show:k(Y)},{default:f(()=>[g(d,{ref_key:"formRef",ref:q,model:k(H),rules:z},{default:f(()=>[g(n,{label:e.$t("Public.Table.Status"),path:"status"},{default:f(()=>[g(i,{value:k(H).status,"onUpdate:value":l[0]||(l[0]=e=>k(H).status=e),"checked-value":1,"unchecked-value":0},null,8,["value"])]),_:1},8,["label"]),g(n,{label:e.$t("Config.Alarm.index_43"),path:"name"},{default:f(()=>[g(t,{class:"w-300px",value:k(H).name,"onUpdate:value":[l[1]||(l[1]=e=>k(H).name=e),G],options:k(K),disabled:k(T)},null,8,["value","options","disabled"])]),_:1},8,["label"]),k(W)?(y(),h(n,{key:0,label:k(R)?"Secret Key":"API User",path:"api_user"},{default:f(()=>[w("div",a,[g(o,{value:k(H).api_user,"onUpdate:value":l[2]||(l[2]=e=>k(H).api_user=e),placeholder:k(R)?"Please enter Secret Key":e.$t("SSL.Domain.index_1"),onFocus:O,onBlur:Q},null,8,["value","placeholder"])])]),_:1},8,["label"])):S("",!0),g(n,{label:"API Key",path:"api_key"},{default:f(()=>[w("div",U,[g(o,{value:k(H).api_key,"onUpdate:value":l[3]||(l[3]=e=>k(H).api_key=e),placeholder:e.$t("SSL.Domain.index_2")},null,8,["value","placeholder"])])]),_:1}),g(n,{label:e.$t("Config.Panel.index_36"),path:"alias"},{default:f(()=>[w("div",$,[g(o,{value:k(H).alias,"onUpdate:value":l[4]||(l[4]=e=>k(H).alias=e),placeholder:e.$t("SSL.Domain.index_6")},null,8,["value","placeholder"])])]),_:1},8,["label"]),b(g(n,{label:"API-Limit",path:"permission"},{default:f(()=>[g(i,{value:k(H).permission,"onUpdate:value":l[5]||(l[5]=e=>k(H).permission=e),"checked-value":"limit","unchecked-value":"global"},null,8,["value"])]),_:1},512),[[D,k(V)]])]),_:1},8,["model"]),k(V)?(y(),h(m,{key:0},{default:f(()=>[w("li",null,[g(_,{target:"_blank",href:"https://www.aapanel.com/docs/Function/Tutorial/DNS_API_Tutorial.html"},{default:f(()=>[x(P(e.$t("SSL.Domain.index_3")),1)]),_:1})])]),_:1})):S("",!0),"NameCheapDns"===k(H).name?(y(),h(m,{key:1},{default:f(()=>[l[6]||(l[6]=w("li",null," Namecheap API needs added in Whitelisted IPs (only IPv4): Profile > Tools menu > Namecheap API Access > Whitelisted IPs, please check: ",-1)),w("li",null,[g(_,{target:"_blank",href:"https://www.namecheap.com/support/api/intro/"},{default:f(()=>[x(P(e.$t("SSL.Domain.index_3")),1)]),_:1})])]),_:1,__:[6]})):S("",!0),"NameSiloDns"===k(H).name||"PorkBunDns"===k(H).name?(y(),h(m,{key:2},{default:f(()=>[w("li",null,[g(_,{target:"_blank",href:"https://www.aapanel.com/docs/Function/Tutorial/DNS_API_Tutorial.html"},{default:f(()=>[x(P(e.$t("SSL.Domain.index_3")),1)]),_:1})])]),_:1})):S("",!0)]),_:1},8,["show"])}}}))}}}); diff --git a/BTPanel/static/vite/js/form-legacy9.js b/BTPanel/static/vite/js/form-legacy9.js index 734fd5dc..1c922933 100644 --- a/BTPanel/static/vite/js/form-legacy9.js +++ b/BTPanel/static/vite/js/form-legacy9.js @@ -1 +1 @@ -System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./term-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./common-legacy.js?v=1760428868419","./__commonjsHelpers__-legacy.js?v=1760428868419"],function(e,a){"use strict";var l,t,r,s,o,u,p,n,d,i,c,y,_,m,v,f,k,w,x,h,b,g,$,T,j;return{setters:[e=>{l=e._},e=>{t=e.f,r=e.h},e=>{s=e.d6,o=e.d},null,e=>{u=e.k,p=e.P,n=e.r,d=e.e,i=e.w,c=e.R,y=e.V,_=e.a2,m=e.an,v=e.W,f=e.U,k=e.a3,w=e.j},e=>{x=e.dk,h=e.da,b=e.dR,g=e.au,$=e.df,T=e.dT,j=e.dZ},null,null],execute:function(){const a={class:"p-20px"},U={key:1};e("default",u({__name:"form",props:{data:{}},setup(e,{expose:u}){const C=s(),{t:P}=p(),R=e,{isEdit:S,row:q,tips:I,localhost:D,onRefresh:E}=R.data,H=n(null),V=d({ip:"",port:22,account:"root",type:1,password:"",key:"",keyPassword:"",remark:""});i(()=>V.ip,e=>{S||(V.remark=e)});const W={ip:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]},port:{required:!0,type:"number",message:P("Security.Conf.Index_28"),trigger:["blur","input"]},account:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]},password:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]},key:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]}};return(async()=>{if(D)return V.ip="127.0.0.1",V.port=22,V.account="root",V.type=1,V.password="",V.key="",V.keyPassword="",void(V.remark="127.0.0.1");if(S&&q){const{message:e}=await r({host:q.host});o(e)&&(V.ip=e.host,V.port=e.port,V.account=e.username,V.type=e.password?1:2,V.password=e.password,V.key=e.pkey,V.keyPassword=e.pkey_passwd,V.remark=e.ps)}})(),u({onConfirm:async({hide:e})=>{await(H.value?.validate()),await t({host:V.ip,port:V.port,username:V.account,password:1===V.type?V.password:"",pkey:2===V.type?V.key:"",pkey_passwd:2===V.type?V.keyPassword:"",ps:V.remark}),C.setRefresh(!0),e(),E?.()}}),(e,t)=>{const r=x,s=g,o=b,u=$,p=h,n=j,d=T,i=l;return y(),c("div",a,[f(I)?(y(),_(r,{key:0,class:"mb-16px",type:"warning"},{default:k(()=>t[8]||(t[8]=[w(" Unable to authenticate automatically, please fill in the login information of the local server! ",-1)])),_:1,__:[8]})):m("",!0),v(i,{ref_key:"formRef",ref:H,model:f(V),rules:W},{default:k(()=>[v(p,null,{default:k(()=>[v(o,{label:e.$t("Term.index_8"),path:"ip"},{default:k(()=>[v(s,{class:"w-190px!",value:f(V).ip,"onUpdate:value":t[0]||(t[0]=e=>f(V).ip=e),placeholder:e.$t("Term.index_9")},null,8,["value","placeholder"])]),_:1},8,["label"]),v(o,{path:"port"},{default:k(()=>[v(u,{"show-button":!1,class:"w-80px!",value:f(V).port,"onUpdate:value":t[1]||(t[1]=e=>f(V).port=e),placeholder:e.$t("Docker.Container.create.index_7")},null,8,["value","placeholder"])]),_:1})]),_:1}),v(o,{label:e.$t("Term.index_10"),path:"account"},{default:k(()=>[v(s,{class:"w-280px!",value:f(V).account,"onUpdate:value":t[2]||(t[2]=e=>f(V).account=e),placeholder:e.$t("Term.index_11")},null,8,["value","placeholder"])]),_:1},8,["label"]),v(o,{label:e.$t("Term.index_12")},{default:k(()=>[v(d,{value:f(V).type,"onUpdate:value":t[3]||(t[3]=e=>f(V).type=e)},{default:k(()=>[v(n,{label:e.$t("Database.index_14"),value:1},null,8,["label"]),v(n,{label:e.$t("Term.index_13"),value:2},null,8,["label"])]),_:1},8,["value"])]),_:1},8,["label"]),1===f(V).type?(y(),_(o,{key:0,label:e.$t("Database.index_14"),path:"password"},{default:k(()=>[v(s,{class:"w-280px!",value:f(V).password,"onUpdate:value":t[4]||(t[4]=e=>f(V).password=e),placeholder:e.$t("Term.index_14")},null,8,["value","placeholder"])]),_:1},8,["label"])):(y(),c("div",U,[v(o,{label:e.$t("Term.index_13"),path:"key"},{default:k(()=>[v(s,{class:"w-280px!",type:"textarea",value:f(V).key,"onUpdate:value":t[5]||(t[5]=e=>f(V).key=e),placeholder:e.$t("Term.index_15")},null,8,["value","placeholder"])]),_:1},8,["label"]),v(o,{label:e.$t("Term.index_16")},{default:k(()=>[v(s,{class:"w-280px!",value:f(V).keyPassword,"onUpdate:value":t[6]||(t[6]=e=>f(V).keyPassword=e),placeholder:e.$t("Term.index_17")},null,8,["value","placeholder"])]),_:1},8,["label"])])),v(o,{label:"Remarks"},{default:k(()=>[v(s,{class:"w-280px!",value:f(V).remark,"onUpdate:value":t[7]||(t[7]=e=>f(V).remark=e),placeholder:e.$t("Term.index_18")},null,8,["value","placeholder"])]),_:1})]),_:1},8,["model"])])}}}))}}}); +System.register(["./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./term-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./public-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./common-legacy.js?v=1762424784323","./__commonjsHelpers__-legacy.js?v=1762424784323"],function(e,a){"use strict";var l,t,r,s,o,u,p,n,d,i,c,y,_,m,v,f,k,w,x,h,b,g,$,T,j;return{setters:[e=>{l=e._},e=>{t=e.f,r=e.h},e=>{s=e.d6,o=e.d},null,e=>{u=e.k,p=e.P,n=e.r,d=e.e,i=e.w,c=e.R,y=e.V,_=e.a2,m=e.an,v=e.W,f=e.U,k=e.a3,w=e.j},e=>{x=e.dk,h=e.da,b=e.dR,g=e.au,$=e.df,T=e.dT,j=e.dZ},null,null],execute:function(){const a={class:"p-20px"},U={key:1};e("default",u({__name:"form",props:{data:{}},setup(e,{expose:u}){const C=s(),{t:P}=p(),R=e,{isEdit:S,row:q,tips:I,localhost:D,onRefresh:E}=R.data,H=n(null),V=d({ip:"",port:22,account:"root",type:1,password:"",key:"",keyPassword:"",remark:""});i(()=>V.ip,e=>{S||(V.remark=e)});const W={ip:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]},port:{required:!0,type:"number",message:P("Security.Conf.Index_28"),trigger:["blur","input"]},account:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]},password:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]},key:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]}};return(async()=>{if(D)return V.ip="127.0.0.1",V.port=22,V.account="root",V.type=1,V.password="",V.key="",V.keyPassword="",void(V.remark="127.0.0.1");if(S&&q){const{message:e}=await r({host:q.host});o(e)&&(V.ip=e.host,V.port=e.port,V.account=e.username,V.type=e.password?1:2,V.password=e.password,V.key=e.pkey,V.keyPassword=e.pkey_passwd,V.remark=e.ps)}})(),u({onConfirm:async({hide:e})=>{await(H.value?.validate()),await t({host:V.ip,port:V.port,username:V.account,password:1===V.type?V.password:"",pkey:2===V.type?V.key:"",pkey_passwd:2===V.type?V.keyPassword:"",ps:V.remark}),C.setRefresh(!0),e(),E?.()}}),(e,t)=>{const r=x,s=g,o=b,u=$,p=h,n=j,d=T,i=l;return y(),c("div",a,[f(I)?(y(),_(r,{key:0,class:"mb-16px",type:"warning"},{default:k(()=>t[8]||(t[8]=[w(" Unable to authenticate automatically, please fill in the login information of the local server! ",-1)])),_:1,__:[8]})):m("",!0),v(i,{ref_key:"formRef",ref:H,model:f(V),rules:W},{default:k(()=>[v(p,null,{default:k(()=>[v(o,{label:e.$t("Term.index_8"),path:"ip"},{default:k(()=>[v(s,{class:"w-190px!",value:f(V).ip,"onUpdate:value":t[0]||(t[0]=e=>f(V).ip=e),placeholder:e.$t("Term.index_9")},null,8,["value","placeholder"])]),_:1},8,["label"]),v(o,{path:"port"},{default:k(()=>[v(u,{"show-button":!1,class:"w-80px!",value:f(V).port,"onUpdate:value":t[1]||(t[1]=e=>f(V).port=e),placeholder:e.$t("Docker.Container.create.index_7")},null,8,["value","placeholder"])]),_:1})]),_:1}),v(o,{label:e.$t("Term.index_10"),path:"account"},{default:k(()=>[v(s,{class:"w-280px!",value:f(V).account,"onUpdate:value":t[2]||(t[2]=e=>f(V).account=e),placeholder:e.$t("Term.index_11")},null,8,["value","placeholder"])]),_:1},8,["label"]),v(o,{label:e.$t("Term.index_12")},{default:k(()=>[v(d,{value:f(V).type,"onUpdate:value":t[3]||(t[3]=e=>f(V).type=e)},{default:k(()=>[v(n,{label:e.$t("Database.index_14"),value:1},null,8,["label"]),v(n,{label:e.$t("Term.index_13"),value:2},null,8,["label"])]),_:1},8,["value"])]),_:1},8,["label"]),1===f(V).type?(y(),_(o,{key:0,label:e.$t("Database.index_14"),path:"password"},{default:k(()=>[v(s,{class:"w-280px!",value:f(V).password,"onUpdate:value":t[4]||(t[4]=e=>f(V).password=e),placeholder:e.$t("Term.index_14")},null,8,["value","placeholder"])]),_:1},8,["label"])):(y(),c("div",U,[v(o,{label:e.$t("Term.index_13"),path:"key"},{default:k(()=>[v(s,{class:"w-280px!",type:"textarea",value:f(V).key,"onUpdate:value":t[5]||(t[5]=e=>f(V).key=e),placeholder:e.$t("Term.index_15")},null,8,["value","placeholder"])]),_:1},8,["label"]),v(o,{label:e.$t("Term.index_16")},{default:k(()=>[v(s,{class:"w-280px!",value:f(V).keyPassword,"onUpdate:value":t[6]||(t[6]=e=>f(V).keyPassword=e),placeholder:e.$t("Term.index_17")},null,8,["value","placeholder"])]),_:1},8,["label"])])),v(o,{label:"Remarks"},{default:k(()=>[v(s,{class:"w-280px!",value:f(V).remark,"onUpdate:value":t[7]||(t[7]=e=>f(V).remark=e),placeholder:e.$t("Term.index_18")},null,8,["value","placeholder"])]),_:1})]),_:1},8,["model"])])}}}))}}}); diff --git a/BTPanel/static/vite/js/form.js b/BTPanel/static/vite/js/form.js index cf7749ee..196b9be9 100644 --- a/BTPanel/static/vite/js/form.js +++ b/BTPanel/static/vite/js/form.js @@ -1 +1 @@ -import{_ as e}from"./index99.js?v=1760428868419";import{p as a,dQ as s,d as l,dR as t}from"./page_layout.js?v=1760428868419";import{u as i}from"./public.js?v=1760428868419";import{L as n}from"./like.js?v=1760428868419";import{k as r,ae as d,a2 as o,V as c,a3 as u,S as p,R as v,F as m,O as f,H as x,a4 as b,P as _,r as g,e as k,W as y,an as j,ak as C,U as h,j as w}from"./vue.js?v=1760428868419";import{da as F,dR as q,dW as R,aC as U}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const P={class:"flex border-1px border-solid border-#f3adaa"},S=["onClick"],W={class:"flex border-1px border-solid border-#f4cf8f"},$=["onClick"],E={class:"flex border-1px border-solid border-#b8e29f"},H=["onClick"],I=a(r({__name:"rating",props:{value:{},valueModifiers:{}},emits:["update:value"],setup(e){const a=d(e,"value"),s=e=>{a.value=e};return(e,l)=>{const t=F;return c(),o(t,{class:"justify-center! mb-16px",size:20},{default:u(()=>[p("div",null,[p("div",P,[(c(),v(m,null,f(6,e=>p("div",{key:e,class:x(["rating-item","danger-item",{active:a.value===e}]),onClick:a=>s(e)},[p("span",null,b(e),1)],10,S)),64))]),l[0]||(l[0]=p("div",{class:"rating-label danger-text"},"No",-1))]),p("div",null,[p("div",W,[(c(),v(m,null,f(2,e=>p("div",{key:e+6,class:x(["rating-item","warning-item",{active:a.value===e+6}]),onClick:a=>s(e+6)},[p("span",null,b(e+6),1)],10,$)),64))]),l[1]||(l[1]=p("div",{class:"rating-label warning-text"},"Yes",-1))]),p("div",null,[p("div",E,[(c(),v(m,null,f(2,e=>p("div",{key:e+8,class:x(["rating-item","success-item",{active:a.value===e+8}]),onClick:a=>s(e+8)},[p("span",null,b(e+8),1)],10,H)),64))]),l[2]||(l[2]=p("div",{class:"rating-label success-text"},"Must",-1))])]),_:1})}}}),[["__scopeId","data-v-c528e412"]]),M={class:"banner"},N={class:"banner-title"},O={class:"ml-8px"},z={key:0,class:"px-24px"},B={class:"text-primary"},J={class:"flex justify-center my-20px"},L=a(r({__name:"form",emits:["close"],setup(a,{emit:r}){const{t:d}=_(),x=g(0),F=r,P=k({}),S=k({}),W=g(null),$=g([]),E=async()=>{var e;await(null==(e=W.value)?void 0:e.validate());const a={questions:JSON.stringify($.value.reduce((e,a)=>(e[a.id]=P[a.id],e),{})),rate:x.value,product_type:1};await t(a),F("close"),H()},H=()=>{const e=i({hideClose:!0,content:()=>y("div",{class:"flex-center flex-col w-230px h-124px bg-#F1F9F3"},[y("img",{class:"w-56px",src:n},null),y("div",{class:"mt-16px"},[d("Component.Feedback.index_6")])])});setTimeout(()=>{e.hide()},3e3)};return(async()=>{const{message:e}=await s();l(e)&&($.value=e.res,e.res.forEach(e=>{P[e.id]=""}),e.res.forEach(e=>{1===e.required&&(S[e.id]={required:!0,message:e.question,trigger:["blur","change"]})}))})(),(a,s)=>{const l=e,t=q,i=R,n=U;return c(),v("div",null,[p("div",M,[p("div",N,[p("span",O,b(a.$t("Component.Feedback.index_1")),1)])]),s[1]||(s[1]=p("div",{class:"text-center text-20px font-bold my-20px"},"Would you recommend aaPanel?",-1)),y(I,{value:h(x),"onUpdate:value":s[0]||(s[0]=e=>C(x)?x.value=e:null)},null,8,["value"]),h(x)?(c(),v("div",z,[y(i,{model:h(P),rules:h(S),ref_key:"formRef",ref:W},{default:u(()=>[(c(!0),v(m,null,f(h($),e=>(c(),o(t,{label:e.question,path:e.id,key:e.id},{default:u(()=>[y(l,{value:h(P)[e.id],"onUpdate:value":a=>h(P)[e.id]=a,placeholder:e.hint},null,8,["value","onUpdate:value","placeholder"])]),_:2},1032,["label","path"]))),128))]),_:1},8,["model","rules"]),p("div",B,b(a.$t("Component.Feedback.index_4")),1),p("div",J,[y(n,{type:"primary",class:"w-120px",onClick:E},{default:u(()=>[w(b(a.$t("Public.Btn.Submit")),1)]),_:1})])])):j("",!0)])}}}),[["__scopeId","data-v-0fe468ba"]]);export{L as default}; +import{_ as e}from"./index99.js?v=1762424784323";import{p as a,dP as s,d as l,dQ as t}from"./page_layout.js?v=1762424784323";import{u as i}from"./public.js?v=1762424784323";import{L as n}from"./like.js?v=1762424784323";import{k as r,ae as d,a2 as o,V as c,a3 as u,S as p,R as v,F as m,O as f,H as x,a4 as b,P as _,r as g,e as k,W as y,an as j,ak as C,U as h,j as w}from"./vue.js?v=1762424784323";import{da as F,dR as q,dW as P,aC as U}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const R={class:"flex border-1px border-solid border-#f3adaa"},S=["onClick"],W={class:"flex border-1px border-solid border-#f4cf8f"},$=["onClick"],E={class:"flex border-1px border-solid border-#b8e29f"},H=["onClick"],I=a(r({__name:"rating",props:{value:{},valueModifiers:{}},emits:["update:value"],setup(e){const a=d(e,"value"),s=e=>{a.value=e};return(e,l)=>{const t=F;return c(),o(t,{class:"justify-center! mb-16px",size:20},{default:u(()=>[p("div",null,[p("div",R,[(c(),v(m,null,f(6,e=>p("div",{key:e,class:x(["rating-item","danger-item",{active:a.value===e}]),onClick:a=>s(e)},[p("span",null,b(e),1)],10,S)),64))]),l[0]||(l[0]=p("div",{class:"rating-label danger-text"},"No",-1))]),p("div",null,[p("div",W,[(c(),v(m,null,f(2,e=>p("div",{key:e+6,class:x(["rating-item","warning-item",{active:a.value===e+6}]),onClick:a=>s(e+6)},[p("span",null,b(e+6),1)],10,$)),64))]),l[1]||(l[1]=p("div",{class:"rating-label warning-text"},"Yes",-1))]),p("div",null,[p("div",E,[(c(),v(m,null,f(2,e=>p("div",{key:e+8,class:x(["rating-item","success-item",{active:a.value===e+8}]),onClick:a=>s(e+8)},[p("span",null,b(e+8),1)],10,H)),64))]),l[2]||(l[2]=p("div",{class:"rating-label success-text"},"Must",-1))])]),_:1})}}}),[["__scopeId","data-v-c528e412"]]),M={class:"banner"},N={class:"banner-title"},O={class:"ml-8px"},z={key:0,class:"px-24px"},B={class:"text-primary"},J={class:"flex justify-center my-20px"},L=a(r({__name:"form",emits:["close"],setup(a,{emit:r}){const{t:d}=_(),x=g(0),F=r,R=k({}),S=k({}),W=g(null),$=g([]),E=async()=>{var e;await(null==(e=W.value)?void 0:e.validate());const a={questions:JSON.stringify($.value.reduce((e,a)=>(e[a.id]=R[a.id],e),{})),rate:x.value,product_type:1};await t(a),F("close"),H()},H=()=>{const e=i({hideClose:!0,content:()=>y("div",{class:"flex-center flex-col w-230px h-124px bg-#F1F9F3"},[y("img",{class:"w-56px",src:n},null),y("div",{class:"mt-16px"},[d("Component.Feedback.index_6")])])});setTimeout(()=>{e.hide()},3e3)};return(async()=>{const{message:e}=await s();l(e)&&($.value=e.res,e.res.forEach(e=>{R[e.id]=""}),e.res.forEach(e=>{1===e.required&&(S[e.id]={required:!0,message:e.question,trigger:["blur","change"]})}))})(),(a,s)=>{const l=e,t=q,i=P,n=U;return c(),v("div",null,[p("div",M,[p("div",N,[p("span",O,b(a.$t("Component.Feedback.index_1")),1)])]),s[1]||(s[1]=p("div",{class:"text-center text-20px font-bold my-20px"},"Would you recommend aaPanel?",-1)),y(I,{value:h(x),"onUpdate:value":s[0]||(s[0]=e=>C(x)?x.value=e:null)},null,8,["value"]),h(x)?(c(),v("div",z,[y(i,{model:h(R),rules:h(S),ref_key:"formRef",ref:W},{default:u(()=>[(c(!0),v(m,null,f(h($),e=>(c(),o(t,{label:e.question,path:e.id,key:e.id},{default:u(()=>[y(l,{value:h(R)[e.id],"onUpdate:value":a=>h(R)[e.id]=a,placeholder:e.hint},null,8,["value","onUpdate:value","placeholder"])]),_:2},1032,["label","path"]))),128))]),_:1},8,["model","rules"]),p("div",B,b(a.$t("Component.Feedback.index_4")),1),p("div",J,[y(n,{type:"primary",class:"w-120px",onClick:E},{default:u(()=>[w(b(a.$t("Public.Btn.Submit")),1)]),_:1})])])):j("",!0)])}}}),[["__scopeId","data-v-0fe468ba"]]);export{L as default}; diff --git a/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang-legacy.js b/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang-legacy.js index fdbb18d6..016cd998 100644 --- a/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang-legacy.js +++ b/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang-legacy.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./index-legacy263.js?v=1760428868419","./naive-legacy.js?v=1760428868419"],function(e,a){"use strict";var t,s,l,o,r,d,p,n,u,_,b,i,c,v,h,x,m,g,w,f,D,y,$,j,k,q;return{setters:[e=>{t=e._},e=>{s=e._},e=>{l=e.k,o=e.P,r=e.a0,d=e.r,p=e.e,n=e.R,u=e.V,_=e.W,b=e.a3,i=e.a2,c=e.an,v=e.S,h=e.U,x=e.a4,m=e.N},e=>{g=e.bj,w=e.f4,f=e.f5,D=e.f6,y=e.de},e=>{$=e.v},e=>{j=e.dR,k=e.au,q=e.df}],execute:function(){const a={class:"p-20px"},U={class:"w-260px"},E={class:"w-260px"},R={class:"w-260px"},C={class:"w-260px"},N={class:"w-260px"},S={key:0};e("_",l({__name:"form",props:{data:{}},setup(e,{expose:l}){const{t:M}=o(),P=e,{row:V,isEdit:W}=P.data,z=g(),{type:A}=r(z),B=d(null),F=p({db_host:"",db_port:null,db_user:"root",db_password:"",db_ps:""}),G={db_host:{trigger:["blur","change"],validator:(e,a)=>""===a?new Error(M("Database.tools.index_53")):!(!D(a)&&!y(a))||new Error(M("Database.tools.index_54"))},db_port:$(),db_user:{required:!0,message:M("Database.tools.index_55"),trigger:["blur","change"]},db_password:{required:!0,message:M("Database.tools.index_56"),trigger:["blur","change"]}},H=e=>{F.db_ps=e},I=new Map([["mysql",{port:3306,username:"root"}],["sqlserver",{port:1433,username:"sa"}],["redis",{port:6379,username:"root"}],["mongodb",{port:27017,username:"root"}],["pgsql",{port:5432,username:"postgres"}]]);return(()=>{if(W&&V)F.db_host=`${V.db_host}`,F.db_port=V.db_port,F.db_user=`${V.db_user}`,F.db_password=`${V.db_password}`,F.db_ps=`${V.ps}`;else{const e=I.get(A.value);e&&(F.db_port=e.port,F.db_user=e.username)}})(),l({onConfirm:async({hide:e})=>{await(B.value?.validate());const a=(()=>{const{db_port:e}=F;if(null===e)throw new Error(M("Database.tools.index_57"));return{...m(F),db_port:e,type:A.value}})();W&&V&&await w(A.value,{id:V.id,...a}),W||await f(A.value,a),z.getRemote(),e()}}),(e,l)=>{const o=k,r=j,d=q,p=s,m=t;return u(),n("div",a,[_(p,{ref_key:"formRef",ref:B,model:h(F),rules:G},{default:b(()=>[_(r,{label:e.$t("Database.tools.index_42"),path:"db_host"},{default:b(()=>[v("div",U,[_(o,{value:h(F).db_host,"onUpdate:value":[l[0]||(l[0]=e=>h(F).db_host=e),H],placeholder:e.$t("Database.tools.index_43"),"input-props":{name:"host"}},null,8,["value","placeholder"])])]),_:1},8,["label"]),_(r,{label:e.$t("Docker.Container.create.index_7"),path:"db_port"},{default:b(()=>[v("div",E,[_(d,{value:h(F).db_port,"onUpdate:value":l[1]||(l[1]=e=>h(F).db_port=e),min:1,max:65535,"show-button":!1,"input-props":{name:"port"},placeholder:e.$t("Database.tools.index_44")},null,8,["value","placeholder"])])]),_:1},8,["label"]),"redis"!==h(A)?(u(),i(r,{key:0,label:e.$t("Database.index_13"),path:"db_user"},{default:b(()=>[v("div",R,[_(o,{value:h(F).db_user,"onUpdate:value":l[2]||(l[2]=e=>h(F).db_user=e),placeholder:e.$t("Database.tools.index_45"),"input-props":{name:"username"}},null,8,["value","placeholder"])])]),_:1},8,["label"])):c("",!0),_(r,{label:e.$t("Database.index_14"),path:"db_password"},{default:b(()=>[v("div",C,[_(o,{value:h(F).db_password,"onUpdate:value":l[3]||(l[3]=e=>h(F).db_password=e),placeholder:e.$t("Database.tools.index_46"),"input-props":{name:"password"}},null,8,["value","placeholder"])])]),_:1},8,["label"]),_(r,{label:"Notes",path:"db_ps","show-feedback":!1},{default:b(()=>[v("div",N,[_(o,{value:h(F).db_ps,"onUpdate:value":l[4]||(l[4]=e=>h(F).db_ps=e),placeholder:e.$t("Database.tools.index_48"),"input-props":{name:"ps"}},null,8,["value","placeholder"])])]),_:1})]),_:1},8,["model"]),_(m,{class:"mt-24px"},{default:b(()=>["mysql"===h(A)?(u(),n("li",S,x(e.$t("Database.tools.index_49")),1)):c("",!0),v("li",null,x(e.$t("Database.tools.index_50")),1),v("li",null,x(e.$t("Database.tools.index_51")),1),v("li",null,x(e.$t("Database.tools.index_52")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./index-legacy261.js?v=1762424784323","./naive-legacy.js?v=1762424784323"],function(e,a){"use strict";var t,s,l,o,r,d,p,n,u,_,b,i,c,v,h,x,m,g,w,f,D,y,$,j,k,q;return{setters:[e=>{t=e._},e=>{s=e._},e=>{l=e.k,o=e.P,r=e.a0,d=e.r,p=e.e,n=e.R,u=e.V,_=e.W,b=e.a3,i=e.a2,c=e.an,v=e.S,h=e.U,x=e.a4,m=e.N},e=>{g=e.bj,w=e.f3,f=e.f4,D=e.f5,y=e.de},e=>{$=e.v},e=>{j=e.dR,k=e.au,q=e.df}],execute:function(){const a={class:"p-20px"},U={class:"w-260px"},E={class:"w-260px"},R={class:"w-260px"},C={class:"w-260px"},N={class:"w-260px"},S={key:0};e("_",l({__name:"form",props:{data:{}},setup(e,{expose:l}){const{t:M}=o(),P=e,{row:V,isEdit:W}=P.data,z=g(),{type:A}=r(z),B=d(null),F=p({db_host:"",db_port:null,db_user:"root",db_password:"",db_ps:""}),G={db_host:{trigger:["blur","change"],validator:(e,a)=>""===a?new Error(M("Database.tools.index_53")):!(!D(a)&&!y(a))||new Error(M("Database.tools.index_54"))},db_port:$(),db_user:{required:!0,message:M("Database.tools.index_55"),trigger:["blur","change"]},db_password:{required:!0,message:M("Database.tools.index_56"),trigger:["blur","change"]}},H=e=>{F.db_ps=e},I=new Map([["mysql",{port:3306,username:"root"}],["sqlserver",{port:1433,username:"sa"}],["redis",{port:6379,username:"root"}],["mongodb",{port:27017,username:"root"}],["pgsql",{port:5432,username:"postgres"}]]);return(()=>{if(W&&V)F.db_host=`${V.db_host}`,F.db_port=V.db_port,F.db_user=`${V.db_user}`,F.db_password=`${V.db_password}`,F.db_ps=`${V.ps}`;else{const e=I.get(A.value);e&&(F.db_port=e.port,F.db_user=e.username)}})(),l({onConfirm:async({hide:e})=>{await(B.value?.validate());const a=(()=>{const{db_port:e}=F;if(null===e)throw new Error(M("Database.tools.index_57"));return{...m(F),db_port:e,type:A.value}})();W&&V&&await w(A.value,{id:V.id,...a}),W||await f(A.value,a),z.getRemote(),e()}}),(e,l)=>{const o=k,r=j,d=q,p=s,m=t;return u(),n("div",a,[_(p,{ref_key:"formRef",ref:B,model:h(F),rules:G},{default:b(()=>[_(r,{label:e.$t("Database.tools.index_42"),path:"db_host"},{default:b(()=>[v("div",U,[_(o,{value:h(F).db_host,"onUpdate:value":[l[0]||(l[0]=e=>h(F).db_host=e),H],placeholder:e.$t("Database.tools.index_43"),"input-props":{name:"host"}},null,8,["value","placeholder"])])]),_:1},8,["label"]),_(r,{label:e.$t("Docker.Container.create.index_7"),path:"db_port"},{default:b(()=>[v("div",E,[_(d,{value:h(F).db_port,"onUpdate:value":l[1]||(l[1]=e=>h(F).db_port=e),min:1,max:65535,"show-button":!1,"input-props":{name:"port"},placeholder:e.$t("Database.tools.index_44")},null,8,["value","placeholder"])])]),_:1},8,["label"]),"redis"!==h(A)?(u(),i(r,{key:0,label:e.$t("Database.index_13"),path:"db_user"},{default:b(()=>[v("div",R,[_(o,{value:h(F).db_user,"onUpdate:value":l[2]||(l[2]=e=>h(F).db_user=e),placeholder:e.$t("Database.tools.index_45"),"input-props":{name:"username"}},null,8,["value","placeholder"])])]),_:1},8,["label"])):c("",!0),_(r,{label:e.$t("Database.index_14"),path:"db_password"},{default:b(()=>[v("div",C,[_(o,{value:h(F).db_password,"onUpdate:value":l[3]||(l[3]=e=>h(F).db_password=e),placeholder:e.$t("Database.tools.index_46"),"input-props":{name:"password"}},null,8,["value","placeholder"])])]),_:1},8,["label"]),_(r,{label:"Notes",path:"db_ps","show-feedback":!1},{default:b(()=>[v("div",N,[_(o,{value:h(F).db_ps,"onUpdate:value":l[4]||(l[4]=e=>h(F).db_ps=e),placeholder:e.$t("Database.tools.index_48"),"input-props":{name:"ps"}},null,8,["value","placeholder"])])]),_:1})]),_:1},8,["model"]),_(m,{class:"mt-24px"},{default:b(()=>["mysql"===h(A)?(u(),n("li",S,x(e.$t("Database.tools.index_49")),1)):c("",!0),v("li",null,x(e.$t("Database.tools.index_50")),1),v("li",null,x(e.$t("Database.tools.index_51")),1),v("li",null,x(e.$t("Database.tools.index_52")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang-legacy2.js b/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang-legacy2.js index 14d0c935..8530aac4 100644 --- a/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang-legacy2.js +++ b/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang-legacy2.js @@ -1 +1 @@ -System.register(["./public-legacy.js?v=1760428868419","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1760428868419","./page_layout-legacy.js?v=1760428868419","./site-legacy.js?v=1760428868419","./naive-legacy.js?v=1760428868419","./vue-legacy.js?v=1760428868419"],function(e,t){"use strict";var a,l,i,s,u,n,r,d,_,o,c,p,f,x,m,v,g,h,b,y,S,k;return{setters:[e=>{a=e._},e=>{l=e._},e=>{i=e.d},e=>{s=e.aG,u=e.Y},e=>{n=e.dR,r=e.au,d=e._,_=e.aC},e=>{o=e.k,c=e.P,p=e.t,f=e.r,x=e.e,m=e.R,v=e.V,g=e.W,h=e.U,b=e.a3,y=e.S,S=e.j,k=e.a4}],execute:function(){const t={class:"w-300px"},w={class:"w-300px"},$={class:"w-300px"},j={class:"flex flex-col"};e("_",o({__name:"form",props:{site:{}},emits:["changeHotlink"],setup(e,{expose:o,emit:C}){const{t:R}=c(),U=C,E=p(e,"site"),L=f(null),H=x({fix:"",domains:"",return_rule:"",status:!1,http_status:!1}),z={fix:{trigger:["blur","change"],validator:()=>""!==H.fix.trim()||new Error(R("Site.RulesError.index_330"))},return_rule:{trigger:["blur","change"],validator:()=>""!==H.return_rule.trim()||new Error(R("Site.RulesError.index_330"))}},G=()=>{V()},P=()=>{V()},V=async()=>{await(L.value?.validate()),await s({id:E.value.id,name:E.value.name,fix:H.fix,domains:H.domains.trim().split("\n").join(","),return_rule:H.return_rule,status:H.status,http_status:H.http_status}),U("changeHotlink",H.status),W()},W=async()=>{const{message:e}=await u({id:E.value.id,name:E.value.name});i(e)&&(H.fix=e.fix,H.domains=e.domains.split(",").join("\n"),H.return_rule=e.return_rule,H.status=e.status,H.http_status="true"===e.http_status||!0===e.http_status)};return W(),o({init:W}),(e,i)=>{const s=r,u=n,o=d,c=_,p=l,f=a;return v(),m("div",null,[g(p,{ref_key:"formRef",ref:L,class:"px-8px",model:h(H),rules:z},{default:b(()=>[g(u,{label:e.$t("Site.Lable.index_6"),path:"fix"},{default:b(()=>[y("div",t,[g(s,{value:h(H).fix,"onUpdate:value":i[0]||(i[0]=e=>h(H).fix=e),disabled:h(H).status,placeholder:""},null,8,["value","disabled"])])]),_:1},8,["label"]),g(u,{label:e.$t("Site.Lable.index_7")},{default:b(()=>[y("div",w,[g(s,{value:h(H).domains,"onUpdate:value":i[1]||(i[1]=e=>h(H).domains=e),type:"textarea",autosize:{minRows:6,maxRows:6},placeholder:""},null,8,["value"])])]),_:1},8,["label"]),g(u,{label:e.$t("Site.Lable.index_13"),path:"return_rule"},{default:b(()=>[y("div",$,[g(s,{value:h(H).return_rule,"onUpdate:value":i[2]||(i[2]=e=>h(H).return_rule=e),disabled:h(H).status,placeholder:""},null,8,["value","disabled"])])]),_:1},8,["label"]),g(u,{label:" "},{default:b(()=>[y("div",j,[g(o,{checked:h(H).status,"onUpdate:checked":[i[3]||(i[3]=e=>h(H).status=e),G]},{default:b(()=>[S(k(e.$t("Site.Config.index_94")),1)]),_:1},8,["checked"]),g(o,{checked:h(H).http_status,"onUpdate:checked":[i[4]||(i[4]=e=>h(H).http_status=e),P],class:"mt-16px"},{default:b(()=>[S(k(e.$t("Site.Config.index_95")),1)]),_:1},8,["checked"])])]),_:1}),g(u,{label:" ","show-feedback":!1},{default:b(()=>[g(c,{type:"primary",onClick:V},{default:b(()=>[S(k(e.$t("Site.Cert.index_60")),1)]),_:1})]),_:1})]),_:1},8,["model"]),g(f,{class:"mt-20px"},{default:b(()=>[y("li",null,[S(k(e.$t("Site.Config.index_96")),1),i[5]||(i[5]=y("br",null,null,-1)),S(" "+k(e.$t("Site.Config.index_97")),1)]),y("li",null,k(e.$t("Site.Config.index_98")),1),y("li",null,k(e.$t("Site.Config.index_99")),1)]),_:1})])}}}))}}}); +System.register(["./public-legacy.js?v=1762424784323","./index.vue_vue_type_script_setup_true_lang-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323","./site-legacy.js?v=1762424784323","./naive-legacy.js?v=1762424784323","./vue-legacy.js?v=1762424784323"],function(e,t){"use strict";var a,l,i,s,u,n,r,d,_,o,c,p,f,x,m,v,g,h,b,y,S,k;return{setters:[e=>{a=e._},e=>{l=e._},e=>{i=e.d},e=>{s=e.aG,u=e.Y},e=>{n=e.dR,r=e.au,d=e._,_=e.aC},e=>{o=e.k,c=e.P,p=e.t,f=e.r,x=e.e,m=e.R,v=e.V,g=e.W,h=e.U,b=e.a3,y=e.S,S=e.j,k=e.a4}],execute:function(){const t={class:"w-300px"},w={class:"w-300px"},$={class:"w-300px"},j={class:"flex flex-col"};e("_",o({__name:"form",props:{site:{}},emits:["changeHotlink"],setup(e,{expose:o,emit:C}){const{t:R}=c(),U=C,E=p(e,"site"),L=f(null),H=x({fix:"",domains:"",return_rule:"",status:!1,http_status:!1}),z={fix:{trigger:["blur","change"],validator:()=>""!==H.fix.trim()||new Error(R("Site.RulesError.index_330"))},return_rule:{trigger:["blur","change"],validator:()=>""!==H.return_rule.trim()||new Error(R("Site.RulesError.index_330"))}},G=()=>{V()},P=()=>{V()},V=async()=>{await(L.value?.validate()),await s({id:E.value.id,name:E.value.name,fix:H.fix,domains:H.domains.trim().split("\n").join(","),return_rule:H.return_rule,status:H.status,http_status:H.http_status}),U("changeHotlink",H.status),W()},W=async()=>{const{message:e}=await u({id:E.value.id,name:E.value.name});i(e)&&(H.fix=e.fix,H.domains=e.domains.split(",").join("\n"),H.return_rule=e.return_rule,H.status=e.status,H.http_status="true"===e.http_status||!0===e.http_status)};return W(),o({init:W}),(e,i)=>{const s=r,u=n,o=d,c=_,p=l,f=a;return v(),m("div",null,[g(p,{ref_key:"formRef",ref:L,class:"px-8px",model:h(H),rules:z},{default:b(()=>[g(u,{label:e.$t("Site.Lable.index_6"),path:"fix"},{default:b(()=>[y("div",t,[g(s,{value:h(H).fix,"onUpdate:value":i[0]||(i[0]=e=>h(H).fix=e),disabled:h(H).status,placeholder:""},null,8,["value","disabled"])])]),_:1},8,["label"]),g(u,{label:e.$t("Site.Lable.index_7")},{default:b(()=>[y("div",w,[g(s,{value:h(H).domains,"onUpdate:value":i[1]||(i[1]=e=>h(H).domains=e),type:"textarea",autosize:{minRows:6,maxRows:6},placeholder:""},null,8,["value"])])]),_:1},8,["label"]),g(u,{label:e.$t("Site.Lable.index_13"),path:"return_rule"},{default:b(()=>[y("div",$,[g(s,{value:h(H).return_rule,"onUpdate:value":i[2]||(i[2]=e=>h(H).return_rule=e),disabled:h(H).status,placeholder:""},null,8,["value","disabled"])])]),_:1},8,["label"]),g(u,{label:" "},{default:b(()=>[y("div",j,[g(o,{checked:h(H).status,"onUpdate:checked":[i[3]||(i[3]=e=>h(H).status=e),G]},{default:b(()=>[S(k(e.$t("Site.Config.index_94")),1)]),_:1},8,["checked"]),g(o,{checked:h(H).http_status,"onUpdate:checked":[i[4]||(i[4]=e=>h(H).http_status=e),P],class:"mt-16px"},{default:b(()=>[S(k(e.$t("Site.Config.index_95")),1)]),_:1},8,["checked"])])]),_:1}),g(u,{label:" ","show-feedback":!1},{default:b(()=>[g(c,{type:"primary",onClick:V},{default:b(()=>[S(k(e.$t("Site.Cert.index_60")),1)]),_:1})]),_:1})]),_:1},8,["model"]),g(f,{class:"mt-20px"},{default:b(()=>[y("li",null,[S(k(e.$t("Site.Config.index_96")),1),i[5]||(i[5]=y("br",null,null,-1)),S(" "+k(e.$t("Site.Config.index_97")),1)]),y("li",null,k(e.$t("Site.Config.index_98")),1),y("li",null,k(e.$t("Site.Config.index_99")),1)]),_:1})])}}}))}}}); diff --git a/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang.js b/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang.js index 803c6e4e..a3f7acb3 100644 --- a/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang.js +++ b/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang.js @@ -1 +1 @@ -import{_ as a}from"./public.js?v=1760428868419";import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{k as s,P as t,a0 as o,r as l,e as r,R as d,V as p,W as n,a3 as u,a2 as _,an as b,S as i,U as c,a4 as m,N as v}from"./vue.js?v=1760428868419";import{bj as h,f4 as x,f5 as f,f6 as w,de as g}from"./page_layout.js?v=1760428868419";import{v as D}from"./index263.js?v=1760428868419";import{dR as $,au as y,df as j}from"./naive.js?v=1760428868419";const k={class:"p-20px"},q={class:"w-260px"},U={class:"w-260px"},E={class:"w-260px"},R={class:"w-260px"},C={class:"w-260px"},N={key:0},M=s({__name:"form",props:{data:{}},setup(s,{expose:M}){const{t:P}=t(),S=s,{row:V,isEdit:W}=S.data,z=h(),{type:A}=o(z),B=l(null),F=r({db_host:"",db_port:null,db_user:"root",db_password:"",db_ps:""}),G={db_host:{trigger:["blur","change"],validator:(a,e)=>""===e?new Error(P("Database.tools.index_53")):!(!w(e)&&!g(e))||new Error(P("Database.tools.index_54"))},db_port:D(),db_user:{required:!0,message:P("Database.tools.index_55"),trigger:["blur","change"]},db_password:{required:!0,message:P("Database.tools.index_56"),trigger:["blur","change"]}},H=a=>{F.db_ps=a},I=new Map([["mysql",{port:3306,username:"root"}],["sqlserver",{port:1433,username:"sa"}],["redis",{port:6379,username:"root"}],["mongodb",{port:27017,username:"root"}],["pgsql",{port:5432,username:"postgres"}]]);return(()=>{if(W&&V)F.db_host="".concat(V.db_host),F.db_port=V.db_port,F.db_user="".concat(V.db_user),F.db_password="".concat(V.db_password),F.db_ps="".concat(V.ps);else{const a=I.get(A.value);a&&(F.db_port=a.port,F.db_user=a.username)}})(),M({onConfirm:async({hide:a})=>{var e;await(null==(e=B.value)?void 0:e.validate());const s=(()=>{const{db_port:a}=F;if(null===a)throw new Error(P("Database.tools.index_57"));return{...v(F),db_port:a,type:A.value}})();W&&V&&await x(A.value,{id:V.id,...s}),W||await f(A.value,s),z.getRemote(),a()}}),(s,t)=>{const o=y,l=$,r=j,v=e,h=a;return p(),d("div",k,[n(v,{ref_key:"formRef",ref:B,model:c(F),rules:G},{default:u(()=>[n(l,{label:s.$t("Database.tools.index_42"),path:"db_host"},{default:u(()=>[i("div",q,[n(o,{value:c(F).db_host,"onUpdate:value":[t[0]||(t[0]=a=>c(F).db_host=a),H],placeholder:s.$t("Database.tools.index_43"),"input-props":{name:"host"}},null,8,["value","placeholder"])])]),_:1},8,["label"]),n(l,{label:s.$t("Docker.Container.create.index_7"),path:"db_port"},{default:u(()=>[i("div",U,[n(r,{value:c(F).db_port,"onUpdate:value":t[1]||(t[1]=a=>c(F).db_port=a),min:1,max:65535,"show-button":!1,"input-props":{name:"port"},placeholder:s.$t("Database.tools.index_44")},null,8,["value","placeholder"])])]),_:1},8,["label"]),"redis"!==c(A)?(p(),_(l,{key:0,label:s.$t("Database.index_13"),path:"db_user"},{default:u(()=>[i("div",E,[n(o,{value:c(F).db_user,"onUpdate:value":t[2]||(t[2]=a=>c(F).db_user=a),placeholder:s.$t("Database.tools.index_45"),"input-props":{name:"username"}},null,8,["value","placeholder"])])]),_:1},8,["label"])):b("",!0),n(l,{label:s.$t("Database.index_14"),path:"db_password"},{default:u(()=>[i("div",R,[n(o,{value:c(F).db_password,"onUpdate:value":t[3]||(t[3]=a=>c(F).db_password=a),placeholder:s.$t("Database.tools.index_46"),"input-props":{name:"password"}},null,8,["value","placeholder"])])]),_:1},8,["label"]),n(l,{label:"Notes",path:"db_ps","show-feedback":!1},{default:u(()=>[i("div",C,[n(o,{value:c(F).db_ps,"onUpdate:value":t[4]||(t[4]=a=>c(F).db_ps=a),placeholder:s.$t("Database.tools.index_48"),"input-props":{name:"ps"}},null,8,["value","placeholder"])])]),_:1})]),_:1},8,["model"]),n(h,{class:"mt-24px"},{default:u(()=>["mysql"===c(A)?(p(),d("li",N,m(s.$t("Database.tools.index_49")),1)):b("",!0),i("li",null,m(s.$t("Database.tools.index_50")),1),i("li",null,m(s.$t("Database.tools.index_51")),1),i("li",null,m(s.$t("Database.tools.index_52")),1)]),_:1})])}}});export{M as _}; +import{_ as a}from"./public.js?v=1762424784323";import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{k as s,P as t,a0 as o,r as l,e as r,R as d,V as p,W as n,a3 as u,a2 as _,an as b,S as i,U as c,a4 as m,N as v}from"./vue.js?v=1762424784323";import{bj as h,f3 as x,f4 as f,f5 as w,de as g}from"./page_layout.js?v=1762424784323";import{v as D}from"./index261.js?v=1762424784323";import{dR as $,au as y,df as j}from"./naive.js?v=1762424784323";const k={class:"p-20px"},q={class:"w-260px"},U={class:"w-260px"},E={class:"w-260px"},R={class:"w-260px"},C={class:"w-260px"},N={key:0},M=s({__name:"form",props:{data:{}},setup(s,{expose:M}){const{t:P}=t(),S=s,{row:V,isEdit:W}=S.data,z=h(),{type:A}=o(z),B=l(null),F=r({db_host:"",db_port:null,db_user:"root",db_password:"",db_ps:""}),G={db_host:{trigger:["blur","change"],validator:(a,e)=>""===e?new Error(P("Database.tools.index_53")):!(!w(e)&&!g(e))||new Error(P("Database.tools.index_54"))},db_port:D(),db_user:{required:!0,message:P("Database.tools.index_55"),trigger:["blur","change"]},db_password:{required:!0,message:P("Database.tools.index_56"),trigger:["blur","change"]}},H=a=>{F.db_ps=a},I=new Map([["mysql",{port:3306,username:"root"}],["sqlserver",{port:1433,username:"sa"}],["redis",{port:6379,username:"root"}],["mongodb",{port:27017,username:"root"}],["pgsql",{port:5432,username:"postgres"}]]);return(()=>{if(W&&V)F.db_host="".concat(V.db_host),F.db_port=V.db_port,F.db_user="".concat(V.db_user),F.db_password="".concat(V.db_password),F.db_ps="".concat(V.ps);else{const a=I.get(A.value);a&&(F.db_port=a.port,F.db_user=a.username)}})(),M({onConfirm:async({hide:a})=>{var e;await(null==(e=B.value)?void 0:e.validate());const s=(()=>{const{db_port:a}=F;if(null===a)throw new Error(P("Database.tools.index_57"));return{...v(F),db_port:a,type:A.value}})();W&&V&&await x(A.value,{id:V.id,...s}),W||await f(A.value,s),z.getRemote(),a()}}),(s,t)=>{const o=y,l=$,r=j,v=e,h=a;return p(),d("div",k,[n(v,{ref_key:"formRef",ref:B,model:c(F),rules:G},{default:u(()=>[n(l,{label:s.$t("Database.tools.index_42"),path:"db_host"},{default:u(()=>[i("div",q,[n(o,{value:c(F).db_host,"onUpdate:value":[t[0]||(t[0]=a=>c(F).db_host=a),H],placeholder:s.$t("Database.tools.index_43"),"input-props":{name:"host"}},null,8,["value","placeholder"])])]),_:1},8,["label"]),n(l,{label:s.$t("Docker.Container.create.index_7"),path:"db_port"},{default:u(()=>[i("div",U,[n(r,{value:c(F).db_port,"onUpdate:value":t[1]||(t[1]=a=>c(F).db_port=a),min:1,max:65535,"show-button":!1,"input-props":{name:"port"},placeholder:s.$t("Database.tools.index_44")},null,8,["value","placeholder"])])]),_:1},8,["label"]),"redis"!==c(A)?(p(),_(l,{key:0,label:s.$t("Database.index_13"),path:"db_user"},{default:u(()=>[i("div",E,[n(o,{value:c(F).db_user,"onUpdate:value":t[2]||(t[2]=a=>c(F).db_user=a),placeholder:s.$t("Database.tools.index_45"),"input-props":{name:"username"}},null,8,["value","placeholder"])])]),_:1},8,["label"])):b("",!0),n(l,{label:s.$t("Database.index_14"),path:"db_password"},{default:u(()=>[i("div",R,[n(o,{value:c(F).db_password,"onUpdate:value":t[3]||(t[3]=a=>c(F).db_password=a),placeholder:s.$t("Database.tools.index_46"),"input-props":{name:"password"}},null,8,["value","placeholder"])])]),_:1},8,["label"]),n(l,{label:"Notes",path:"db_ps","show-feedback":!1},{default:u(()=>[i("div",C,[n(o,{value:c(F).db_ps,"onUpdate:value":t[4]||(t[4]=a=>c(F).db_ps=a),placeholder:s.$t("Database.tools.index_48"),"input-props":{name:"ps"}},null,8,["value","placeholder"])])]),_:1})]),_:1},8,["model"]),n(h,{class:"mt-24px"},{default:u(()=>["mysql"===c(A)?(p(),d("li",N,m(s.$t("Database.tools.index_49")),1)):b("",!0),i("li",null,m(s.$t("Database.tools.index_50")),1),i("li",null,m(s.$t("Database.tools.index_51")),1),i("li",null,m(s.$t("Database.tools.index_52")),1)]),_:1})])}}});export{M as _}; diff --git a/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang2.js b/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang2.js index a87f04f4..0b9974f9 100644 --- a/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang2.js +++ b/BTPanel/static/vite/js/form.vue_vue_type_script_setup_true_lang2.js @@ -1 +1 @@ -import{_ as e}from"./public.js?v=1760428868419";import{_ as t}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{d as a}from"./page_layout.js?v=1760428868419";import{aG as l,Y as s}from"./site.js?v=1760428868419";import{dR as i,au as u,_ as r,aC as n}from"./naive.js?v=1760428868419";import{k as d,P as o,t as _,r as p,e as f,R as m,V as c,W as x,U as v,a3 as h,S as b,j as g,a4 as S}from"./vue.js?v=1760428868419";const k={class:"w-300px"},w={class:"w-300px"},$={class:"w-300px"},j={class:"flex flex-col"},C=d({__name:"form",props:{site:{}},emits:["changeHotlink"],setup(d,{expose:C,emit:y}){const{t:R}=o(),U=y,E=_(d,"site"),L=p(null),H=f({fix:"",domains:"",return_rule:"",status:!1,http_status:!1}),z={fix:{trigger:["blur","change"],validator:()=>""!==H.fix.trim()||new Error(R("Site.RulesError.index_330"))},return_rule:{trigger:["blur","change"],validator:()=>""!==H.return_rule.trim()||new Error(R("Site.RulesError.index_330"))}},G=()=>{V()},P=()=>{V()},V=async()=>{var e;await(null==(e=L.value)?void 0:e.validate()),await l({id:E.value.id,name:E.value.name,fix:H.fix,domains:H.domains.trim().split("\n").join(","),return_rule:H.return_rule,status:H.status,http_status:H.http_status}),U("changeHotlink",H.status),W()},W=async()=>{const{message:e}=await s({id:E.value.id,name:E.value.name});a(e)&&(H.fix=e.fix,H.domains=e.domains.split(",").join("\n"),H.return_rule=e.return_rule,H.status=e.status,H.http_status="true"===e.http_status||!0===e.http_status)};return W(),C({init:W}),(a,l)=>{const s=u,d=i,o=r,_=n,p=t,f=e;return c(),m("div",null,[x(p,{ref_key:"formRef",ref:L,class:"px-8px",model:v(H),rules:z},{default:h(()=>[x(d,{label:a.$t("Site.Lable.index_6"),path:"fix"},{default:h(()=>[b("div",k,[x(s,{value:v(H).fix,"onUpdate:value":l[0]||(l[0]=e=>v(H).fix=e),disabled:v(H).status,placeholder:""},null,8,["value","disabled"])])]),_:1},8,["label"]),x(d,{label:a.$t("Site.Lable.index_7")},{default:h(()=>[b("div",w,[x(s,{value:v(H).domains,"onUpdate:value":l[1]||(l[1]=e=>v(H).domains=e),type:"textarea",autosize:{minRows:6,maxRows:6},placeholder:""},null,8,["value"])])]),_:1},8,["label"]),x(d,{label:a.$t("Site.Lable.index_13"),path:"return_rule"},{default:h(()=>[b("div",$,[x(s,{value:v(H).return_rule,"onUpdate:value":l[2]||(l[2]=e=>v(H).return_rule=e),disabled:v(H).status,placeholder:""},null,8,["value","disabled"])])]),_:1},8,["label"]),x(d,{label:" "},{default:h(()=>[b("div",j,[x(o,{checked:v(H).status,"onUpdate:checked":[l[3]||(l[3]=e=>v(H).status=e),G]},{default:h(()=>[g(S(a.$t("Site.Config.index_94")),1)]),_:1},8,["checked"]),x(o,{checked:v(H).http_status,"onUpdate:checked":[l[4]||(l[4]=e=>v(H).http_status=e),P],class:"mt-16px"},{default:h(()=>[g(S(a.$t("Site.Config.index_95")),1)]),_:1},8,["checked"])])]),_:1}),x(d,{label:" ","show-feedback":!1},{default:h(()=>[x(_,{type:"primary",onClick:V},{default:h(()=>[g(S(a.$t("Site.Cert.index_60")),1)]),_:1})]),_:1})]),_:1},8,["model"]),x(f,{class:"mt-20px"},{default:h(()=>[b("li",null,[g(S(a.$t("Site.Config.index_96")),1),l[5]||(l[5]=b("br",null,null,-1)),g(" "+S(a.$t("Site.Config.index_97")),1)]),b("li",null,S(a.$t("Site.Config.index_98")),1),b("li",null,S(a.$t("Site.Config.index_99")),1)]),_:1})])}}});export{C as _}; +import{_ as e}from"./public.js?v=1762424784323";import{_ as t}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{d as a}from"./page_layout.js?v=1762424784323";import{aG as l,Y as s}from"./site.js?v=1762424784323";import{dR as i,au as u,_ as r,aC as n}from"./naive.js?v=1762424784323";import{k as d,P as o,t as _,r as p,e as f,R as m,V as c,W as x,U as v,a3 as h,S as b,j as g,a4 as S}from"./vue.js?v=1762424784323";const k={class:"w-300px"},w={class:"w-300px"},$={class:"w-300px"},j={class:"flex flex-col"},C=d({__name:"form",props:{site:{}},emits:["changeHotlink"],setup(d,{expose:C,emit:y}){const{t:R}=o(),U=y,E=_(d,"site"),L=p(null),H=f({fix:"",domains:"",return_rule:"",status:!1,http_status:!1}),z={fix:{trigger:["blur","change"],validator:()=>""!==H.fix.trim()||new Error(R("Site.RulesError.index_330"))},return_rule:{trigger:["blur","change"],validator:()=>""!==H.return_rule.trim()||new Error(R("Site.RulesError.index_330"))}},G=()=>{V()},P=()=>{V()},V=async()=>{var e;await(null==(e=L.value)?void 0:e.validate()),await l({id:E.value.id,name:E.value.name,fix:H.fix,domains:H.domains.trim().split("\n").join(","),return_rule:H.return_rule,status:H.status,http_status:H.http_status}),U("changeHotlink",H.status),W()},W=async()=>{const{message:e}=await s({id:E.value.id,name:E.value.name});a(e)&&(H.fix=e.fix,H.domains=e.domains.split(",").join("\n"),H.return_rule=e.return_rule,H.status=e.status,H.http_status="true"===e.http_status||!0===e.http_status)};return W(),C({init:W}),(a,l)=>{const s=u,d=i,o=r,_=n,p=t,f=e;return c(),m("div",null,[x(p,{ref_key:"formRef",ref:L,class:"px-8px",model:v(H),rules:z},{default:h(()=>[x(d,{label:a.$t("Site.Lable.index_6"),path:"fix"},{default:h(()=>[b("div",k,[x(s,{value:v(H).fix,"onUpdate:value":l[0]||(l[0]=e=>v(H).fix=e),disabled:v(H).status,placeholder:""},null,8,["value","disabled"])])]),_:1},8,["label"]),x(d,{label:a.$t("Site.Lable.index_7")},{default:h(()=>[b("div",w,[x(s,{value:v(H).domains,"onUpdate:value":l[1]||(l[1]=e=>v(H).domains=e),type:"textarea",autosize:{minRows:6,maxRows:6},placeholder:""},null,8,["value"])])]),_:1},8,["label"]),x(d,{label:a.$t("Site.Lable.index_13"),path:"return_rule"},{default:h(()=>[b("div",$,[x(s,{value:v(H).return_rule,"onUpdate:value":l[2]||(l[2]=e=>v(H).return_rule=e),disabled:v(H).status,placeholder:""},null,8,["value","disabled"])])]),_:1},8,["label"]),x(d,{label:" "},{default:h(()=>[b("div",j,[x(o,{checked:v(H).status,"onUpdate:checked":[l[3]||(l[3]=e=>v(H).status=e),G]},{default:h(()=>[g(S(a.$t("Site.Config.index_94")),1)]),_:1},8,["checked"]),x(o,{checked:v(H).http_status,"onUpdate:checked":[l[4]||(l[4]=e=>v(H).http_status=e),P],class:"mt-16px"},{default:h(()=>[g(S(a.$t("Site.Config.index_95")),1)]),_:1},8,["checked"])])]),_:1}),x(d,{label:" ","show-feedback":!1},{default:h(()=>[x(_,{type:"primary",onClick:V},{default:h(()=>[g(S(a.$t("Site.Cert.index_60")),1)]),_:1})]),_:1})]),_:1},8,["model"]),x(f,{class:"mt-20px"},{default:h(()=>[b("li",null,[g(S(a.$t("Site.Config.index_96")),1),l[5]||(l[5]=b("br",null,null,-1)),g(" "+S(a.$t("Site.Config.index_97")),1)]),b("li",null,S(a.$t("Site.Config.index_98")),1),b("li",null,S(a.$t("Site.Config.index_99")),1)]),_:1})])}}});export{C as _}; diff --git a/BTPanel/static/vite/js/form10.js b/BTPanel/static/vite/js/form10.js index 7c8dffc5..c85d8103 100644 --- a/BTPanel/static/vite/js/form10.js +++ b/BTPanel/static/vite/js/form10.js @@ -1 +1 @@ -import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{fW as s,gT as a,d as t,gU as l}from"./page_layout.js?v=1760428868419";import{d as i}from"./public.js?v=1760428868419";import{k as o,r,e as d,c as n,R as c,V as E,W as u,a3 as b,U as p,a2 as m,an as y,S as T}from"./vue.js?v=1760428868419";import{da as A,dR as R,dV as w}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const k=[{key:"Data Permissions",label:"Data Permissions",description:"Data Permissions",select:!0,id:1,children:[{id:2,key:"SELECT",description:"SELECT--Allows users to query (read) data from the database.",select:!0,label:"Read Data"},{id:3,key:"INSERT",description:"INSERT--Allows users to insert new data into database tables.",select:!0,label:"Insert/Replace Data"},{id:4,key:"UPDATE",description:"UPDATE--Allows users to modify data in database tables.",select:!0,label:"Modify Data"},{id:5,key:"DELETE",description:"DELETE--Allows users to delete data from database tables.",select:!0,label:"Delete Data"},{key:"FILE",id:22,description:"Allows users to read or write files.",label:"File Read/Write"}]},{key:"Structure Permissions",label:"Structure Permissions",description:"Structure Permissions",select:!0,id:6,children:[{id:7,key:"CREATE",description:"Allows users to create new databases, tables, or indexes.",select:!0,label:"Create Database/Table"},{id:8,key:"ALTER",description:"Allows users to modify the structure of database tables (e.g., add or delete columns).",select:!0,label:"Modify Table Structure"},{id:9,key:"INDEX",description:"Allows users to create and delete indexes to improve query performance.",select:!0,label:"Create/Delete Index"},{id:10,key:"DROP",description:"Allows users to delete databases, tables, or indexes.",select:!0,label:"Delete Database/Table"},{id:11,key:"CREATE TEMPORARY TABLES",description:"Allows users to create temporary tables that are automatically deleted after the session ends.",select:!0,label:"Create Temporary Tables"},{id:12,key:"SHOW VIEW",description:"Allows users to view views in the database.",select:!0,label:"View Views"},{id:13,key:"CREATE ROUTINE",description:"Allows users to create stored procedures and functions.",select:!0,label:"Create Stored Procedure/Function"},{id:14,key:"ALTER ROUTINE",description:"Allows users to modify stored procedures and functions.",select:!0,label:"Modify Stored Procedure/Function"},{id:15,key:"EXECUTE",description:"Allows users to execute stored procedures and functions.",select:!0,label:"Execute Stored Procedure/Function"},{id:16,key:"CREATE VIEW",description:"Allows users to create views in the database.",select:!0,label:"Create View"},{id:17,key:"EVENT",description:"Allows users to create, modify, and delete database events.",select:!0,label:"Create/Modify/Delete Event"},{id:18,key:"TRIGGER",description:"Allows users to create and manage database triggers.",select:!0,label:"Create/Manage Trigger"}]},{key:"Management Permissions",label:"Management Permissions",description:"Management Permissions",include:!0,id:19,children:[{id:23,key:"SUPER",description:"Allows users to perform special operations, such as starting or stopping the database server.",label:"Kill Other User Processes When Max Connections Reached"},{id:24,key:"PROCESS",description:"Allows users to view the database connection processes of other users.",label:"View Other User Connections"},{id:25,key:"RELOAD",description:"Allows users to reload the database server configuration.",label:"Reload Database Configuration"},{id:26,key:"SHUTDOWN",description:"Allows users to shut down the database server.",label:"Shutdown Database Server"},{id:27,key:"SHOW DATABASES",description:"Allows users to view the list of available databases.",label:"View Available Databases"},{id:21,key:"LOCK TABLES",description:"Allows users to lock tables to control concurrent access.",select:!0,label:"Lock Tables"},{id:32,key:"REFERENCES",description:"Allows users to create and use foreign keys to maintain data integrity.",label:"Create/Use Foreign Keys"},{id:29,key:"REPLICATION CLIENT",description:"Allows users to connect as a replication client to a master-slave replication system.",label:"Connect as Replication Client to Master-Slave System"},{id:30,key:"REPLICATION SLAVE",description:"Allows users to connect as a replication slave to a master-slave replication system.",label:"Connect as Replication Slave to Master-Slave System"},{id:31,key:"CREATE USER",description:"Allows users to create, modify, and delete database user accounts.",label:"Create/Modify/Delete Database User"}]}],f=[{key:"Data Permissions",label:"Data Permissions",description:"Data Permissions",select:!0,id:1,children:[{id:2,key:"SELECT",description:"SELECT--Allows users to query (read) data from the database.",select:!0,label:"Read Data"},{id:3,key:"INSERT",description:"INSERT--Allows users to insert new data into database tables.",select:!0,label:"Insert/Replace Data"},{id:4,key:"UPDATE",description:"UPDATE--Allows users to modify data in database tables.",select:!0,label:"Modify Data"},{id:5,key:"DELETE",description:"DELETE--Allows users to delete data from database tables.",select:!0,label:"Delete Data"}]},{key:"Structure Permissions",label:"Structure Permissions",description:"Structure Permissions",select:!0,id:6,children:[{id:7,key:"CREATE",description:"Allows users to create new databases, tables, or indexes.",select:!0,label:"Create Database/Table"},{id:8,key:"ALTER",description:"Allows users to modify the structure of database tables (e.g., add or delete columns).",select:!0,label:"Modify Table Structure"},{id:9,key:"INDEX",description:"Allows users to create and delete indexes to improve query performance.",select:!0,label:"Create/Delete Index"},{id:10,key:"DROP",description:"Allows users to delete databases, tables, or indexes.",select:!0,label:"Delete Database/Table"},{id:11,key:"CREATE TEMPORARY TABLES",description:"Allows users to create temporary tables that are automatically deleted after the session ends.",select:!0,label:"Create Temporary Tables"},{id:12,key:"SHOW VIEW",description:"Allows users to view views in the database.",select:!0,label:"View Views"},{id:13,key:"CREATE ROUTINE",description:"Allows users to create stored procedures and functions.",select:!0,label:"Create Stored Procedure/Function"},{id:14,key:"ALTER ROUTINE",description:"Allows users to modify stored procedures and functions.",select:!0,label:"Modify Stored Procedure/Function"},{id:15,key:"EXECUTE",description:"Allows users to execute stored procedures and functions.",select:!0,label:"Execute Stored Procedure/Function"},{id:16,key:"CREATE VIEW",description:"Allows users to create views in the database.",select:!0,label:"Create View"},{id:17,key:"EVENT",description:"Allows users to create, modify, and delete database events.",select:!0,label:"Create/Modify/Delete Event"},{id:18,key:"TRIGGER",description:"Allows users to create and manage database triggers.",select:!0,label:"Create/Manage Trigger"}]},{key:"Management Permissions",label:"Management Permissions",description:"Management Permissions",include:!0,id:19,children:[{id:21,key:"LOCK TABLES",description:"Allows users to lock tables to control concurrent access.",select:!0,label:"Lock Tables"},{id:22,key:"REFERENCES",description:"Allows users to create and use foreign keys to maintain data integrity.",label:"Create/Use Foreign Keys"}]}],C={class:"p-16px"},S={class:"w-415px max-h-200px overflow-auto border border-solid p-12x border-#ccc"},v=o({__name:"form",props:{data:{}},setup(o,{expose:v}){const D=o,{getList:_,params:h}=D.data,L=r(null),g=d({db_name:"",tb_name:"",access:["SELECT","INSERT","UPDATE","DELETE","CREATE","ALTER","INDEX","DROP","CREATE TEMPORARY TABLES","SHOW VIEW","CREATE ROUTINE","ALTER ROUTINE","EXECUTE","CREATE VIEW","EVENT","TRIGGER","LOCK TABLES","REFERENCES"]}),P=r([]),I=r([]),O=(e,s)=>{g.db_name=e,s.tb_list.length?(I.value=s.tb_list.map(e=>({label:e.name,value:e.value,access_list:e.access_list})),U(I.value[0].value,I.value[0])):I.value=[]},U=(e,s)=>{g.tb_name=e,"*"!==e||"ALL PRIVILEGES"!==s.access_list[0]?"*"!==e||"USAGE"!==s.access_list[0]?g.access=s.access_list:g.access=[]:g.access=["SELECT","INSERT","UPDATE","DELETE","CREATE","ALTER","INDEX","DROP","CREATE TEMPORARY TABLES","SHOW VIEW","CREATE ROUTINE","ALTER ROUTINE","EXECUTE","CREATE VIEW","EVENT","TRIGGER","LOCK TABLES","REFERENCES"]},N=n(()=>{var e;return"*"===g.db_name?k:"*"!==g.db_name&&"*"!==g.tb_name?(null==(e=f.find(e=>1===e.id))?void 0:e.children)||[]:f}),{loading:x,setLoading:M}=i();(async()=>{try{M(!0);const{message:e}=await a(h);t(e)&&(P.value=e.data.map(e=>({label:e.name,value:e.value,tb_list:e.tb_list})),O(P.value[0].value,P.value[0]))}finally{M(!1)}})();return v({onConfirm:async()=>{var e;await(null==(e=L.value)?void 0:e.validate()),await l({...h,db_name:g.db_name,tb_name:"*"===g.db_name?"*":g.tb_name,access:g.access.join(","),with_grant:0}),null==_||_()}}),(a,t)=>{const l=w,i=R,o=A,r=s,d=e;return E(),c("div",C,[u(d,{ref_key:"formRef",ref:L,model:p(g)},{default:b(()=>[u(o,null,{default:b(()=>[u(i,{label:a.$t("Database.Mysql.index_18")},{default:b(()=>[u(l,{class:"w-200px",loading:p(x),value:p(g).db_name,"onUpdate:value":[t[0]||(t[0]=e=>p(g).db_name=e),O],options:p(P)},null,8,["loading","value","options"])]),_:1},8,["label"]),u(i,{"show-label":!1},{default:b(()=>[p(I).length?(E(),m(l,{key:0,class:"w-200px",value:p(g).tb_name,"onUpdate:value":[t[1]||(t[1]=e=>p(g).tb_name=e),U],options:p(I)},null,8,["value","options"])):y("",!0)]),_:1})]),_:1}),u(i,{label:a.$t("Database.Mysql.index_19"),path:"access"},{default:b(()=>[T("div",S,[u(r,{"default-expand-all":"","block-line":"",cascade:"",checkable:"",selectable:!1,"check-strategy":"child","checked-keys":p(g).access,"onUpdate:checkedKeys":t[2]||(t[2]=e=>p(g).access=e),data:p(N),placeholder:a.$t("Database.Mysql.index_20")},null,8,["checked-keys","data","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}});export{v as default}; +import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{gP as s,gQ as a,d as t,gR as l}from"./page_layout.js?v=1762424784323";import{d as i}from"./public.js?v=1762424784323";import{k as o,r,e as d,c as n,R as c,V as E,W as u,a3 as b,U as p,a2 as m,an as y,S as T}from"./vue.js?v=1762424784323";import{da as A,dR as R,dV as w}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const k=[{key:"Data Permissions",label:"Data Permissions",description:"Data Permissions",select:!0,id:1,children:[{id:2,key:"SELECT",description:"SELECT--Allows users to query (read) data from the database.",select:!0,label:"Read Data"},{id:3,key:"INSERT",description:"INSERT--Allows users to insert new data into database tables.",select:!0,label:"Insert/Replace Data"},{id:4,key:"UPDATE",description:"UPDATE--Allows users to modify data in database tables.",select:!0,label:"Modify Data"},{id:5,key:"DELETE",description:"DELETE--Allows users to delete data from database tables.",select:!0,label:"Delete Data"},{key:"FILE",id:22,description:"Allows users to read or write files.",label:"File Read/Write"}]},{key:"Structure Permissions",label:"Structure Permissions",description:"Structure Permissions",select:!0,id:6,children:[{id:7,key:"CREATE",description:"Allows users to create new databases, tables, or indexes.",select:!0,label:"Create Database/Table"},{id:8,key:"ALTER",description:"Allows users to modify the structure of database tables (e.g., add or delete columns).",select:!0,label:"Modify Table Structure"},{id:9,key:"INDEX",description:"Allows users to create and delete indexes to improve query performance.",select:!0,label:"Create/Delete Index"},{id:10,key:"DROP",description:"Allows users to delete databases, tables, or indexes.",select:!0,label:"Delete Database/Table"},{id:11,key:"CREATE TEMPORARY TABLES",description:"Allows users to create temporary tables that are automatically deleted after the session ends.",select:!0,label:"Create Temporary Tables"},{id:12,key:"SHOW VIEW",description:"Allows users to view views in the database.",select:!0,label:"View Views"},{id:13,key:"CREATE ROUTINE",description:"Allows users to create stored procedures and functions.",select:!0,label:"Create Stored Procedure/Function"},{id:14,key:"ALTER ROUTINE",description:"Allows users to modify stored procedures and functions.",select:!0,label:"Modify Stored Procedure/Function"},{id:15,key:"EXECUTE",description:"Allows users to execute stored procedures and functions.",select:!0,label:"Execute Stored Procedure/Function"},{id:16,key:"CREATE VIEW",description:"Allows users to create views in the database.",select:!0,label:"Create View"},{id:17,key:"EVENT",description:"Allows users to create, modify, and delete database events.",select:!0,label:"Create/Modify/Delete Event"},{id:18,key:"TRIGGER",description:"Allows users to create and manage database triggers.",select:!0,label:"Create/Manage Trigger"}]},{key:"Management Permissions",label:"Management Permissions",description:"Management Permissions",include:!0,id:19,children:[{id:23,key:"SUPER",description:"Allows users to perform special operations, such as starting or stopping the database server.",label:"Kill Other User Processes When Max Connections Reached"},{id:24,key:"PROCESS",description:"Allows users to view the database connection processes of other users.",label:"View Other User Connections"},{id:25,key:"RELOAD",description:"Allows users to reload the database server configuration.",label:"Reload Database Configuration"},{id:26,key:"SHUTDOWN",description:"Allows users to shut down the database server.",label:"Shutdown Database Server"},{id:27,key:"SHOW DATABASES",description:"Allows users to view the list of available databases.",label:"View Available Databases"},{id:21,key:"LOCK TABLES",description:"Allows users to lock tables to control concurrent access.",select:!0,label:"Lock Tables"},{id:32,key:"REFERENCES",description:"Allows users to create and use foreign keys to maintain data integrity.",label:"Create/Use Foreign Keys"},{id:29,key:"REPLICATION CLIENT",description:"Allows users to connect as a replication client to a master-slave replication system.",label:"Connect as Replication Client to Master-Slave System"},{id:30,key:"REPLICATION SLAVE",description:"Allows users to connect as a replication slave to a master-slave replication system.",label:"Connect as Replication Slave to Master-Slave System"},{id:31,key:"CREATE USER",description:"Allows users to create, modify, and delete database user accounts.",label:"Create/Modify/Delete Database User"}]}],f=[{key:"Data Permissions",label:"Data Permissions",description:"Data Permissions",select:!0,id:1,children:[{id:2,key:"SELECT",description:"SELECT--Allows users to query (read) data from the database.",select:!0,label:"Read Data"},{id:3,key:"INSERT",description:"INSERT--Allows users to insert new data into database tables.",select:!0,label:"Insert/Replace Data"},{id:4,key:"UPDATE",description:"UPDATE--Allows users to modify data in database tables.",select:!0,label:"Modify Data"},{id:5,key:"DELETE",description:"DELETE--Allows users to delete data from database tables.",select:!0,label:"Delete Data"}]},{key:"Structure Permissions",label:"Structure Permissions",description:"Structure Permissions",select:!0,id:6,children:[{id:7,key:"CREATE",description:"Allows users to create new databases, tables, or indexes.",select:!0,label:"Create Database/Table"},{id:8,key:"ALTER",description:"Allows users to modify the structure of database tables (e.g., add or delete columns).",select:!0,label:"Modify Table Structure"},{id:9,key:"INDEX",description:"Allows users to create and delete indexes to improve query performance.",select:!0,label:"Create/Delete Index"},{id:10,key:"DROP",description:"Allows users to delete databases, tables, or indexes.",select:!0,label:"Delete Database/Table"},{id:11,key:"CREATE TEMPORARY TABLES",description:"Allows users to create temporary tables that are automatically deleted after the session ends.",select:!0,label:"Create Temporary Tables"},{id:12,key:"SHOW VIEW",description:"Allows users to view views in the database.",select:!0,label:"View Views"},{id:13,key:"CREATE ROUTINE",description:"Allows users to create stored procedures and functions.",select:!0,label:"Create Stored Procedure/Function"},{id:14,key:"ALTER ROUTINE",description:"Allows users to modify stored procedures and functions.",select:!0,label:"Modify Stored Procedure/Function"},{id:15,key:"EXECUTE",description:"Allows users to execute stored procedures and functions.",select:!0,label:"Execute Stored Procedure/Function"},{id:16,key:"CREATE VIEW",description:"Allows users to create views in the database.",select:!0,label:"Create View"},{id:17,key:"EVENT",description:"Allows users to create, modify, and delete database events.",select:!0,label:"Create/Modify/Delete Event"},{id:18,key:"TRIGGER",description:"Allows users to create and manage database triggers.",select:!0,label:"Create/Manage Trigger"}]},{key:"Management Permissions",label:"Management Permissions",description:"Management Permissions",include:!0,id:19,children:[{id:21,key:"LOCK TABLES",description:"Allows users to lock tables to control concurrent access.",select:!0,label:"Lock Tables"},{id:22,key:"REFERENCES",description:"Allows users to create and use foreign keys to maintain data integrity.",label:"Create/Use Foreign Keys"}]}],C={class:"p-16px"},S={class:"w-415px max-h-200px overflow-auto border border-solid p-12x border-#ccc"},v=o({__name:"form",props:{data:{}},setup(o,{expose:v}){const D=o,{getList:_,params:h}=D.data,g=r(null),L=d({db_name:"",tb_name:"",access:["SELECT","INSERT","UPDATE","DELETE","CREATE","ALTER","INDEX","DROP","CREATE TEMPORARY TABLES","SHOW VIEW","CREATE ROUTINE","ALTER ROUTINE","EXECUTE","CREATE VIEW","EVENT","TRIGGER","LOCK TABLES","REFERENCES"]}),P=r([]),I=r([]),O=(e,s)=>{L.db_name=e,s.tb_list.length?(I.value=s.tb_list.map(e=>({label:e.name,value:e.value,access_list:e.access_list})),U(I.value[0].value,I.value[0])):I.value=[]},U=(e,s)=>{L.tb_name=e,"*"!==e||"ALL PRIVILEGES"!==s.access_list[0]?"*"!==e||"USAGE"!==s.access_list[0]?L.access=s.access_list:L.access=[]:L.access=["SELECT","INSERT","UPDATE","DELETE","CREATE","ALTER","INDEX","DROP","CREATE TEMPORARY TABLES","SHOW VIEW","CREATE ROUTINE","ALTER ROUTINE","EXECUTE","CREATE VIEW","EVENT","TRIGGER","LOCK TABLES","REFERENCES"]},N=n(()=>{var e;return"*"===L.db_name?k:"*"!==L.db_name&&"*"!==L.tb_name?(null==(e=f.find(e=>1===e.id))?void 0:e.children)||[]:f}),{loading:x,setLoading:M}=i();(async()=>{try{M(!0);const{message:e}=await a(h);t(e)&&(P.value=e.data.map(e=>({label:e.name,value:e.value,tb_list:e.tb_list})),O(P.value[0].value,P.value[0]))}finally{M(!1)}})();return v({onConfirm:async()=>{var e;await(null==(e=g.value)?void 0:e.validate()),await l({...h,db_name:L.db_name,tb_name:"*"===L.db_name?"*":L.tb_name,access:L.access.join(","),with_grant:0}),null==_||_()}}),(a,t)=>{const l=w,i=R,o=A,r=s,d=e;return E(),c("div",C,[u(d,{ref_key:"formRef",ref:g,model:p(L)},{default:b(()=>[u(o,null,{default:b(()=>[u(i,{label:a.$t("Database.Mysql.index_18")},{default:b(()=>[u(l,{class:"w-200px",loading:p(x),value:p(L).db_name,"onUpdate:value":[t[0]||(t[0]=e=>p(L).db_name=e),O],options:p(P)},null,8,["loading","value","options"])]),_:1},8,["label"]),u(i,{"show-label":!1},{default:b(()=>[p(I).length?(E(),m(l,{key:0,class:"w-200px",value:p(L).tb_name,"onUpdate:value":[t[1]||(t[1]=e=>p(L).tb_name=e),U],options:p(I)},null,8,["value","options"])):y("",!0)]),_:1})]),_:1}),u(i,{label:a.$t("Database.Mysql.index_19"),path:"access"},{default:b(()=>[T("div",S,[u(r,{"default-expand-all":"","block-line":"",cascade:"",checkable:"",selectable:!1,"check-strategy":"child","checked-keys":p(L).access,"onUpdate:checkedKeys":t[2]||(t[2]=e=>p(L).access=e),data:p(N),placeholder:a.$t("Database.Mysql.index_20")},null,8,["checked-keys","data","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"])])}}});export{v as default}; diff --git a/BTPanel/static/vite/js/form2.js b/BTPanel/static/vite/js/form2.js index b0e989e7..32549c1b 100644 --- a/BTPanel/static/vite/js/form2.js +++ b/BTPanel/static/vite/js/form2.js @@ -1 +1 @@ -import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang20.js?v=1760428868419";import{_ as l}from"./index.vue_vue_type_script_setup_true_lang11.js?v=1760428868419";import{bf as t,k as u,u as n,d as s,w as r,cA as i}from"./page_layout.js?v=1760428868419";import{n as o,a as d,g as v}from"./alarm.js?v=1760428868419";import{k as m,R as p,V as _,ad as f,ae as c,t as g,c as y,F as h,S as b,an as w,W as x,U as k,I as U,a4 as j,a3 as C,a2 as A,j as E,O as $,a7 as M,P as R,a0 as P,r as B,e as D,x as O,ak as S,n as T}from"./vue.js?v=1760428868419";import{dV as H,av as F,df as I,dY as V,dT as Y,dU as G,dR as L}from"./naive.js?v=1760428868419";import{_ as W,d as q,b as z}from"./public.js?v=1760428868419";import{_ as J}from"./index211.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const K=m({__name:"form-template-field-none",props:{field:{}},setup:e=>(e,a)=>(_(),p("div"))}),N={key:0,class:"ml-10px whitespace-pre"},Q=m({__name:"form-template-field-select",props:f({field:{}},{value:{default:null},valueModifiers:{}}),emits:["update:value"],setup(e){const a=e,l=c(e,"value"),t=g(a,"field"),u=y(()=>t.value.items.map(e=>({label:"".concat(e.title).concat(t.value.unit||""),value:e.value})));return(e,a)=>{const n=H;return _(),p(h,null,[b("div",{style:U({width:k(t).width?"160px":"260px"})},[x(n,{value:l.value,"onUpdate:value":a[0]||(a[0]=e=>l.value=e),disabled:k(t).disabled,options:k(u)},null,8,["value","disabled","options"])],4),k(t).suffix?(_(),p("div",N,j(k(t).suffix),1)):w("",!0)],64)}}}),X={key:0,class:"ml-10px whitespace-pre"},Z=m({__name:"form-template-field-number",props:f({field:{}},{value:{},valueModifiers:{}}),emits:["update:value"],setup(e){const a=g(e,"field"),l=c(e,"value"),t=()=>{l.value||(l.value=a.value.default)};return(e,u)=>{const n=I,s=V,r=F;return _(),p(h,null,[b("div",null,[x(r,null,{default:C(()=>[x(n,{value:l.value,"onUpdate:value":u[0]||(u[0]=e=>l.value=e),class:"w-100px",min:1,"show-button":!1,placeholder:"",onBlur:t},null,8,["value"]),k(a).unit?(_(),A(s,{key:0,class:"min-w-52px text-center"},{default:C(()=>[E(j(k(a).unit),1)]),_:1})):w("",!0)]),_:1})]),k(a).suffix?(_(),p("span",X,j(k(a).suffix),1)):w("",!0)],64)}}}),ee=m({__name:"form-template-field-radio",props:f({field:{}},{value:{},valueModifiers:{}}),emits:["update:value"],setup(e){const a=e,l=c(e,"value"),t=g(a,"field");return(e,a)=>{const u=G,n=Y;return _(),A(n,{value:l.value,"onUpdate:value":a[0]||(a[0]=e=>l.value=e)},{default:C(()=>[(_(!0),p(h,null,$(k(t).items,e=>(_(),A(u,{key:e.value,value:e.value},{default:C(()=>[E(j(e.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])}}}),ae=m({__name:"form-template-field-help",props:{field:{}},setup:e=>(e,a)=>{const l=W;return _(),A(l,null,{default:C(()=>[(_(!0),p(h,null,$(e.field.list,e=>(_(),p("li",{key:e},j(e),1))),128))]),_:1})}}),le=m({__name:"form-template-field",props:f({field:{}},{value:{},valueModifiers:{}}),emits:f(["change"],["update:value"]),setup(e,{emit:a}){const l=e,t=a,u=c(e,"value"),n=g(l,"field"),s=(()=>{switch(n.value.type){case"select":return Q;case"number":return Z;case"radio":return ee;case"help":return ae;default:return K}})(),r=e=>{t("change",e,n.value.attr)};return(e,a)=>(_(),A(M(k(s)),{value:u.value,"onUpdate:value":[a[0]||(a[0]=e=>u.value=e),r],field:k(n)},null,40,["value","field"]))}}),te=m({__name:"form-template",props:f({type:{default:"none"},template:{default:()=>({field:[],sorted:[]})}},{value:{default:()=>({})},valueModifiers:{}}),emits:["update:value"],setup(e,{expose:a}){const l=e,{t:n}=R(),s=g(l,"type"),r=g(l,"template"),i=c(e,"value"),o=y(()=>{const{field:e,sorted:a}=r.value,l=[];return a.forEach(a=>{const t=[];a.forEach(a=>{const l=e.find(e=>e.attr===a);l&&t.push(l)}),l.push(t)}),l}),d=(e,a)=>{"system_disk"===s.value&&"cycle"===a&&v(),"project_status"===s.value&&"cycle"===a&&m()},v=()=>{const{cycle:e}=i.value;switch(e){case 1:r.value.field[2].unit="GB",r.value.field[2].name=n("Config.Alarm.index_26");break;case 2:r.value.field[2].unit="%",r.value.field[2].name=n("Config.Alarm.index_27")}},m=()=>{const{field:e}=r.value,[,a]=e,{all_items:l}=a;if(l&&t(i.value.cycle)){const e=l[u(i.value.cycle)-1];e.length>0?(a.items=e,i.value.project=e[0].value):(a.items=[],i.value.project=null)}},f=()=>{switch(s.value){case"system_disk":v();break;case"project_status":m()}};return f(),a({render:f}),(e,a)=>{const l=L;return _(!0),p(h,null,$(k(o),(e,a)=>(_(),p(h,null,[1===e.length?(_(!0),p(h,{key:0},$(e,e=>(_(),A(l,{key:"".concat(k(s),"-").concat(e.attr),label:e.name},{default:C(()=>[x(le,{value:i.value[e.attr],"onUpdate:value":a=>i.value[e.attr]=a,field:e,onChange:d},null,8,["value","onUpdate:value","field"])]),_:2},1032,["label"]))),128)):w("",!0),e.length>1?(_(),p("div",{key:"".concat(k(s),"-").concat(a+1),class:"flex"},[(_(!0),p(h,null,$(e,(e,a)=>(_(),A(l,{key:"".concat(k(s),"-").concat(e.attr),label:e.name,"label-width":0!==a?"auto":void 0},{default:C(()=>[x(le,{value:i.value[e.attr],"onUpdate:value":a=>i.value[e.attr]=a,field:e,onChange:d},null,8,["value","onUpdate:value","field"])]),_:2},1032,["label","label-width"]))),128))])):w("",!0)],64))),256)}}}),ue=m({__name:"form-advanced",props:f({config:{default:()=>({})},inverse:{type:Boolean,default:!1},timeRangeShow:{type:Boolean,default:!1}},{value:{default:()=>({day_num:0,total:0,send_interval:0,time_range:[]})},valueModifiers:{}}),emits:["update:value"],setup(e){const a=e,l=g(a,"config"),t=c(e,"value"),u=e=>a.inverse?!l.value[e]:l.value[e];return(e,a)=>{const l=I,n=V,s=F,r=L,i=J;return _(),p(h,null,[u("day_num")?(_(),A(r,{key:0,label:e.$t("Config.Alarm.index_28"),path:"day_num"},{default:C(()=>[x(s,null,{default:C(()=>[x(l,{value:t.value.day_num,"onUpdate:value":a[0]||(a[0]=e=>t.value.day_num=e),class:"w-100px",min:0,"show-button":!1,placeholder:""},null,8,["value"]),x(n,{class:"min-w-52px text-center"},{default:C(()=>[E(j(e.$t("Public.Unit.Times")),1)]),_:1})]),_:1})]),_:1},8,["label"])):w("",!0),u("total")?(_(),A(r,{key:1,label:e.$t("Config.Alarm.index_30"),path:"total"},{default:C(()=>[x(s,null,{default:C(()=>[x(l,{value:t.value.total,"onUpdate:value":a[1]||(a[1]=e=>t.value.total=e),class:"w-100px",min:0,"show-button":!1,placeholder:""},null,8,["value"]),x(n,{class:"min-w-52px text-center"},{default:C(()=>[E(j(e.$t("Public.Unit.Times")),1)]),_:1})]),_:1})]),_:1},8,["label"])):w("",!0),u("send_interval")?(_(),A(r,{key:2,label:e.$t("Config.Alarm.index_31"),path:"send_interval"},{default:C(()=>[x(s,null,{default:C(()=>[x(l,{value:t.value.send_interval,"onUpdate:value":a[2]||(a[2]=e=>t.value.send_interval=e),class:"w-100px",min:0,"show-button":!1,placeholder:""},null,8,["value"]),x(n,{class:"min-w-52px text-center"},{default:C(()=>[E(j(e.$t("Public.Unit.Seconds")),1)]),_:1})]),_:1})]),_:1},8,["label"])):w("",!0),e.timeRangeShow?(_(),A(r,{key:3,label:e.$t("Config.Alarm.index_33"),path:"time_range","show-feedback":!1},{default:C(()=>[x(i,{value:t.value.time_range,"onUpdate:value":a[3]||(a[3]=e=>t.value.time_range=e)},null,8,["value"])]),_:1},8,["label"])):w("",!0)],64)}}}),ne={class:"px-20px py-24px"},se={class:"w-260px"},re={class:"w-260px"},ie=m({__name:"form",props:{isEdit:{type:Boolean},row:{}},emits:["refresh"],setup(u,{expose:m,emit:f}){const c=u,h=n(),{isPro:w}=P(h),U=f,{t:j}=R(),A=g(c,"isEdit"),$=B(null),M=B(),F=B(!1),I=D({type:null,method:[],day_num:0,total:0,send_interval:0,time_range:[(new Date).setHours(0,0,0,0),(new Date).setHours(23,59,59,0)],template:{}}),V=D({day_num:{trigger:["input","blur"],validator:()=>!(!I.day_num&&0!==I.day_num)||(N.value.day_num||(F.value=!0),new Error(j("Config.Alarm.index_22")))},total:{trigger:["input","blur"],validator:()=>!(!I.total&&0!==I.total)||(N.value.total||(F.value=!0),new Error(j("Config.Alarm.index_23")))},send_interval:{trigger:["input","blur"],validator:()=>!(!I.send_interval&&0!==I.send_interval)||(N.value.send_interval||(F.value=!0),new Error(j("Config.Alarm.index_24")))},method:{trigger:["change"],validator:()=>0!==I.method.length||new Error(j("Config.Alarm.index_25"))}}),Y=O([]),G=y(()=>Y.value.map((e,a)=>({label:e.title,value:a,disabled:"80"===e.id&&!w.value,data:e}))),W=y(()=>{let e="none";const a=Y.value[I.type||0];return a&&(e=a.source),e}),J=e=>x("div",null,[x("span",null,[e.label,E(" ")]),14===e.value?x("span",{class:"float-right cursor-pointer color-#ffb800",onClick:()=>{z({source:323})}},[E("PRO")]):""]),K=B({field:[],sorted:[]}),N=B({}),Q=()=>Y.value[I.type||0],X=()=>{const e=Q();K.value=e.template,K.value.field.forEach(a=>{a.default?I.template[a.attr]=a.default:I.template[a.attr]=e.default[a.attr]}),I.day_num=0,I.total=0,I.send_interval=0;const a={},{advanced_default:l}=e;s(l)&&Object.entries(l).forEach(([e,l])=>{s(l)?Object.entries(l).forEach(([e,l])=>{a[e]=!0,ee(e,l)}):t(l)&&(a[e]=!0,ee(e,l))}),N.value=a},Z=["day_num","total","send_interval"],ee=(e,a)=>{Z.includes(e)&&(I[e]=a)},ae=()=>{X(),T(()=>{M.value.render()})},{loading:le,setLoading:ie}=q(),oe=e=>{const a=new Date,l=a.getFullYear(),t=a.getMonth(),u=a.getDate();return new Date(l,t,u).getTime()+1e3*e};return(async()=>{await(async()=>{try{ie(!0);const{message:e}=await v();r(e)&&(Y.value=e,I.type=0,A.value||X())}finally{ie(!1)}})();const{row:e}=c;A.value&&e&&(I.type=Y.value.findIndex(a=>a.id===e.template_id),X(),I.method=e.sender,e.number_rule&&(I.day_num=e.number_rule.day_num,I.total=e.number_rule.total),e.time_rule&&(I.send_interval=e.time_rule.send_interval,e.time_rule.time_range&&e.time_rule.time_range.length>0&&(I.time_range=[oe(e.time_rule.time_range[0]),oe(e.time_rule.time_range[1])])),Object.keys(I.template).forEach(a=>{e.task_data&&(I.template[a]=e.task_data[a])}),await T(),M.value.render())})(),m({onConfirm:async()=>{var e;await(null==(e=$.value)?void 0:e.validate());const{row:a}=c,l=(()=>{const e=Q();return{template_id:e.id,task_data:{task_data:{tid:e.id,type:e.source,title:e.title,status:!0,count:0,interval:600,project:"",...I.template},sender:I.method,number_rule:{day_num:I.day_num,total:I.total},time_rule:{send_interval:I.send_interval,time_range:[i(I.time_range[0]),i(I.time_range[1])]}}}})();A.value&&a?await o({...l,task_id:a.id}):await d(l),U("refresh")}}),(t,u)=>{const n=H,s=L,r=l,i=a,o=e;return _(),p("div",ne,[x(o,{ref_key:"formRef",ref:$,model:k(I),rules:k(V),"label-width":"140"},{default:C(()=>[x(s,{label:t.$t("Config.Alarm.index_19")},{default:C(()=>[b("div",se,[x(n,{value:k(I).type,"onUpdate:value":[u[0]||(u[0]=e=>k(I).type=e),ae],options:k(G),loading:k(le),"render-label":J},null,8,["value","options","loading"])])]),_:1},8,["label"]),x(te,{ref_key:"templateRef",ref:M,value:k(I).template,"onUpdate:value":u[1]||(u[1]=e=>k(I).template=e),type:k(W),template:k(K)},null,8,["value","type","template"]),x(ue,{value:k(I),"onUpdate:value":u[2]||(u[2]=e=>S(I)?I.value=e:null),config:k(N)},null,8,["value","config"]),x(s,{label:t.$t("Config.Alarm.index_20"),path:"method"},{default:C(()=>[b("div",re,[x(r,{value:k(I).method,"onUpdate:value":u[3]||(u[3]=e=>k(I).method=e)},null,8,["value"])])]),_:1},8,["label"]),x(i,{show:k(F),"onUpdate:show":u[5]||(u[5]=e=>S(F)?F.value=e:null),title:t.$t("Config.Alarm.index_21")},{default:C(()=>[x(ue,{value:k(I),"onUpdate:value":u[4]||(u[4]=e=>S(I)?I.value=e:null),config:k(N),inverse:!0,"time-range-show":!0},null,8,["value","config"])]),_:1},8,["show","title"])]),_:1},8,["model","rules"])])}}});export{ie as default}; +import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang20.js?v=1762424784323";import{_ as l}from"./index.vue_vue_type_script_setup_true_lang11.js?v=1762424784323";import{bf as t,k as u,u as n,d as s,w as r,cz as i}from"./page_layout.js?v=1762424784323";import{n as o,a as d,g as v}from"./alarm.js?v=1762424784323";import{k as m,R as p,V as _,ad as f,ae as c,t as g,c as y,F as h,S as b,an as w,W as x,U as k,I as U,a4 as j,a3 as C,a2 as A,j as E,O as $,a7 as M,P as R,a0 as P,r as B,e as D,x as O,ak as S,n as T}from"./vue.js?v=1762424784323";import{dV as H,av as F,df as I,dY as V,dT as Y,dU as z,dR as G}from"./naive.js?v=1762424784323";import{_ as L,d as W,b as q}from"./public.js?v=1762424784323";import{_ as J}from"./index209.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const K=m({__name:"form-template-field-none",props:{field:{}},setup:e=>(e,a)=>(_(),p("div"))}),N={key:0,class:"ml-10px whitespace-pre"},Q=m({__name:"form-template-field-select",props:f({field:{}},{value:{default:null},valueModifiers:{}}),emits:["update:value"],setup(e){const a=e,l=c(e,"value"),t=g(a,"field"),u=y(()=>t.value.items.map(e=>({label:"".concat(e.title).concat(t.value.unit||""),value:e.value})));return(e,a)=>{const n=H;return _(),p(h,null,[b("div",{style:U({width:k(t).width?"160px":"260px"})},[x(n,{value:l.value,"onUpdate:value":a[0]||(a[0]=e=>l.value=e),disabled:k(t).disabled,options:k(u)},null,8,["value","disabled","options"])],4),k(t).suffix?(_(),p("div",N,j(k(t).suffix),1)):w("",!0)],64)}}}),X={key:0,class:"ml-10px whitespace-pre"},Z=m({__name:"form-template-field-number",props:f({field:{}},{value:{},valueModifiers:{}}),emits:["update:value"],setup(e){const a=g(e,"field"),l=c(e,"value"),t=()=>{l.value||(l.value=a.value.default)};return(e,u)=>{const n=I,s=V,r=F;return _(),p(h,null,[b("div",null,[x(r,null,{default:C(()=>[x(n,{value:l.value,"onUpdate:value":u[0]||(u[0]=e=>l.value=e),class:"w-100px",min:1,"show-button":!1,placeholder:"",onBlur:t},null,8,["value"]),k(a).unit?(_(),A(s,{key:0,class:"min-w-52px text-center"},{default:C(()=>[E(j(k(a).unit),1)]),_:1})):w("",!0)]),_:1})]),k(a).suffix?(_(),p("span",X,j(k(a).suffix),1)):w("",!0)],64)}}}),ee=m({__name:"form-template-field-radio",props:f({field:{}},{value:{},valueModifiers:{}}),emits:["update:value"],setup(e){const a=e,l=c(e,"value"),t=g(a,"field");return(e,a)=>{const u=z,n=Y;return _(),A(n,{value:l.value,"onUpdate:value":a[0]||(a[0]=e=>l.value=e)},{default:C(()=>[(_(!0),p(h,null,$(k(t).items,e=>(_(),A(u,{key:e.value,value:e.value},{default:C(()=>[E(j(e.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])}}}),ae=m({__name:"form-template-field-help",props:{field:{}},setup:e=>(e,a)=>{const l=L;return _(),A(l,null,{default:C(()=>[(_(!0),p(h,null,$(e.field.list,e=>(_(),p("li",{key:e},j(e),1))),128))]),_:1})}}),le=m({__name:"form-template-field",props:f({field:{}},{value:{},valueModifiers:{}}),emits:f(["change"],["update:value"]),setup(e,{emit:a}){const l=e,t=a,u=c(e,"value"),n=g(l,"field"),s=(()=>{switch(n.value.type){case"select":return Q;case"number":return Z;case"radio":return ee;case"help":return ae;default:return K}})(),r=e=>{t("change",e,n.value.attr)};return(e,a)=>(_(),A(M(k(s)),{value:u.value,"onUpdate:value":[a[0]||(a[0]=e=>u.value=e),r],field:k(n)},null,40,["value","field"]))}}),te=m({__name:"form-template",props:f({type:{default:"none"},template:{default:()=>({field:[],sorted:[]})}},{value:{default:()=>({})},valueModifiers:{}}),emits:["update:value"],setup(e,{expose:a}){const l=e,{t:n}=R(),s=g(l,"type"),r=g(l,"template"),i=c(e,"value"),o=y(()=>{const{field:e,sorted:a}=r.value,l=[];return a.forEach(a=>{const t=[];a.forEach(a=>{const l=e.find(e=>e.attr===a);l&&t.push(l)}),l.push(t)}),l}),d=(e,a)=>{"system_disk"===s.value&&"cycle"===a&&v(),"project_status"===s.value&&"cycle"===a&&m()},v=()=>{const{cycle:e}=i.value;switch(e){case 1:r.value.field[2].unit="GB",r.value.field[2].name=n("Config.Alarm.index_26");break;case 2:r.value.field[2].unit="%",r.value.field[2].name=n("Config.Alarm.index_27")}},m=()=>{const{field:e}=r.value,[,a]=e,{all_items:l}=a;if(l&&t(i.value.cycle)){const e=l[u(i.value.cycle)-1];e.length>0?(a.items=e,i.value.project=e[0].value):(a.items=[],i.value.project=null)}},f=()=>{switch(s.value){case"system_disk":v();break;case"project_status":m()}};return f(),a({render:f}),(e,a)=>{const l=G;return _(!0),p(h,null,$(k(o),(e,a)=>(_(),p(h,null,[1===e.length?(_(!0),p(h,{key:0},$(e,e=>(_(),A(l,{key:"".concat(k(s),"-").concat(e.attr),label:e.name},{default:C(()=>[x(le,{value:i.value[e.attr],"onUpdate:value":a=>i.value[e.attr]=a,field:e,onChange:d},null,8,["value","onUpdate:value","field"])]),_:2},1032,["label"]))),128)):w("",!0),e.length>1?(_(),p("div",{key:"".concat(k(s),"-").concat(a+1),class:"flex"},[(_(!0),p(h,null,$(e,(e,a)=>(_(),A(l,{key:"".concat(k(s),"-").concat(e.attr),label:e.name,"label-width":0!==a?"auto":void 0},{default:C(()=>[x(le,{value:i.value[e.attr],"onUpdate:value":a=>i.value[e.attr]=a,field:e,onChange:d},null,8,["value","onUpdate:value","field"])]),_:2},1032,["label","label-width"]))),128))])):w("",!0)],64))),256)}}}),ue=m({__name:"form-advanced",props:f({config:{default:()=>({})},inverse:{type:Boolean,default:!1},timeRangeShow:{type:Boolean,default:!1}},{value:{default:()=>({day_num:0,total:0,send_interval:0,time_range:[]})},valueModifiers:{}}),emits:["update:value"],setup(e){const a=e,l=g(a,"config"),t=c(e,"value"),u=e=>a.inverse?!l.value[e]:l.value[e];return(e,a)=>{const l=I,n=V,s=F,r=G,i=J;return _(),p(h,null,[u("day_num")?(_(),A(r,{key:0,label:e.$t("Config.Alarm.index_28"),path:"day_num"},{default:C(()=>[x(s,null,{default:C(()=>[x(l,{value:t.value.day_num,"onUpdate:value":a[0]||(a[0]=e=>t.value.day_num=e),class:"w-100px",min:0,"show-button":!1,placeholder:""},null,8,["value"]),x(n,{class:"min-w-52px text-center"},{default:C(()=>[E(j(e.$t("Public.Unit.Times")),1)]),_:1})]),_:1})]),_:1},8,["label"])):w("",!0),u("total")?(_(),A(r,{key:1,label:e.$t("Config.Alarm.index_30"),path:"total"},{default:C(()=>[x(s,null,{default:C(()=>[x(l,{value:t.value.total,"onUpdate:value":a[1]||(a[1]=e=>t.value.total=e),class:"w-100px",min:0,"show-button":!1,placeholder:""},null,8,["value"]),x(n,{class:"min-w-52px text-center"},{default:C(()=>[E(j(e.$t("Public.Unit.Times")),1)]),_:1})]),_:1})]),_:1},8,["label"])):w("",!0),u("send_interval")?(_(),A(r,{key:2,label:e.$t("Config.Alarm.index_31"),path:"send_interval"},{default:C(()=>[x(s,null,{default:C(()=>[x(l,{value:t.value.send_interval,"onUpdate:value":a[2]||(a[2]=e=>t.value.send_interval=e),class:"w-100px",min:0,"show-button":!1,placeholder:""},null,8,["value"]),x(n,{class:"min-w-52px text-center"},{default:C(()=>[E(j(e.$t("Public.Unit.Seconds")),1)]),_:1})]),_:1})]),_:1},8,["label"])):w("",!0),e.timeRangeShow?(_(),A(r,{key:3,label:e.$t("Config.Alarm.index_33"),path:"time_range","show-feedback":!1},{default:C(()=>[x(i,{value:t.value.time_range,"onUpdate:value":a[3]||(a[3]=e=>t.value.time_range=e)},null,8,["value"])]),_:1},8,["label"])):w("",!0)],64)}}}),ne={class:"px-20px py-24px"},se={class:"w-260px"},re={class:"w-260px"},ie=m({__name:"form",props:{isEdit:{type:Boolean},row:{}},emits:["refresh"],setup(u,{expose:m,emit:f}){const c=u,h=n(),{isPro:w}=P(h),U=f,{t:j}=R(),A=g(c,"isEdit"),$=B(null),M=B(),F=B(!1),I=D({type:null,method:[],day_num:0,total:0,send_interval:0,time_range:[(new Date).setHours(0,0,0,0),(new Date).setHours(23,59,59,0)],template:{}}),V=D({day_num:{trigger:["input","blur"],validator:()=>!(!I.day_num&&0!==I.day_num)||(N.value.day_num||(F.value=!0),new Error(j("Config.Alarm.index_22")))},total:{trigger:["input","blur"],validator:()=>!(!I.total&&0!==I.total)||(N.value.total||(F.value=!0),new Error(j("Config.Alarm.index_23")))},send_interval:{trigger:["input","blur"],validator:()=>!(!I.send_interval&&0!==I.send_interval)||(N.value.send_interval||(F.value=!0),new Error(j("Config.Alarm.index_24")))},method:{trigger:["change"],validator:()=>0!==I.method.length||new Error(j("Config.Alarm.index_25"))}}),Y=O([]),z=y(()=>Y.value.map((e,a)=>({label:e.title,value:a,disabled:"80"===e.id&&!w.value,data:e}))),L=y(()=>{let e="none";const a=Y.value[I.type||0];return a&&(e=a.source),e}),J=e=>x("div",null,[x("span",null,[e.label,E(" ")]),14===e.value?x("span",{class:"float-right cursor-pointer color-#ffb800",onClick:()=>{q({source:323})}},[E("PRO")]):""]),K=B({field:[],sorted:[]}),N=B({}),Q=()=>Y.value[I.type||0],X=()=>{const e=Q();K.value=e.template,K.value.field.forEach(a=>{a.default?I.template[a.attr]=a.default:I.template[a.attr]=e.default[a.attr]}),I.day_num=0,I.total=0,I.send_interval=0;const a={},{advanced_default:l}=e;s(l)&&Object.entries(l).forEach(([e,l])=>{s(l)?Object.entries(l).forEach(([e,l])=>{a[e]=!0,ee(e,l)}):t(l)&&(a[e]=!0,ee(e,l))}),N.value=a},Z=["day_num","total","send_interval"],ee=(e,a)=>{Z.includes(e)&&(I[e]=a)},ae=()=>{X(),T(()=>{M.value.render()})},{loading:le,setLoading:ie}=W(),oe=e=>{const a=new Date,l=a.getFullYear(),t=a.getMonth(),u=a.getDate();return new Date(l,t,u).getTime()+1e3*e};return(async()=>{await(async()=>{try{ie(!0);const{message:e}=await v();r(e)&&(Y.value=e,I.type=0,A.value||X())}finally{ie(!1)}})();const{row:e}=c;A.value&&e&&(I.type=Y.value.findIndex(a=>a.id===e.template_id),X(),I.method=e.sender,e.number_rule&&(I.day_num=e.number_rule.day_num,I.total=e.number_rule.total),e.time_rule&&(I.send_interval=e.time_rule.send_interval,e.time_rule.time_range&&e.time_rule.time_range.length>0&&(I.time_range=[oe(e.time_rule.time_range[0]),oe(e.time_rule.time_range[1])])),Object.keys(I.template).forEach(a=>{e.task_data&&(I.template[a]=e.task_data[a])}),await T(),M.value.render())})(),m({onConfirm:async()=>{var e;await(null==(e=$.value)?void 0:e.validate());const{row:a}=c,l=(()=>{const e=Q();return{template_id:e.id,task_data:{task_data:{tid:e.id,type:e.source,title:e.title,status:!0,count:0,interval:600,project:"",...I.template},sender:I.method,number_rule:{day_num:I.day_num,total:I.total},time_rule:{send_interval:I.send_interval,time_range:[i(I.time_range[0]),i(I.time_range[1])]}}}})();A.value&&a?await o({...l,task_id:a.id}):await d(l),U("refresh")}}),(t,u)=>{const n=H,s=G,r=l,i=a,o=e;return _(),p("div",ne,[x(o,{ref_key:"formRef",ref:$,model:k(I),rules:k(V),"label-width":"140"},{default:C(()=>[x(s,{label:t.$t("Config.Alarm.index_19")},{default:C(()=>[b("div",se,[x(n,{value:k(I).type,"onUpdate:value":[u[0]||(u[0]=e=>k(I).type=e),ae],options:k(z),loading:k(le),"render-label":J},null,8,["value","options","loading"])])]),_:1},8,["label"]),x(te,{ref_key:"templateRef",ref:M,value:k(I).template,"onUpdate:value":u[1]||(u[1]=e=>k(I).template=e),type:k(L),template:k(K)},null,8,["value","type","template"]),x(ue,{value:k(I),"onUpdate:value":u[2]||(u[2]=e=>S(I)?I.value=e:null),config:k(N)},null,8,["value","config"]),x(s,{label:t.$t("Config.Alarm.index_20"),path:"method"},{default:C(()=>[b("div",re,[x(r,{value:k(I).method,"onUpdate:value":u[3]||(u[3]=e=>k(I).method=e)},null,8,["value"])])]),_:1},8,["label"]),x(i,{show:k(F),"onUpdate:show":u[5]||(u[5]=e=>S(F)?F.value=e:null),title:t.$t("Config.Alarm.index_21")},{default:C(()=>[x(ue,{value:k(I),"onUpdate:value":u[4]||(u[4]=e=>S(I)?I.value=e:null),config:k(N),inverse:!0,"time-range-show":!0},null,8,["value","config"])]),_:1},8,["show","title"])]),_:1},8,["model","rules"])])}}});export{ie as default}; diff --git a/BTPanel/static/vite/js/form3.js b/BTPanel/static/vite/js/form3.js index 052ef476..16f366ef 100644 --- a/BTPanel/static/vite/js/form3.js +++ b/BTPanel/static/vite/js/form3.js @@ -1 +1 @@ -import{_ as t}from"./form.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import"./public.js?v=1760428868419";import"./page_layout.js?v=1760428868419";import"./vue.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import"./index263.js?v=1760428868419";export{t as default}; +import{_ as t}from"./form.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import"./public.js?v=1762424784323";import"./page_layout.js?v=1762424784323";import"./vue.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import"./index261.js?v=1762424784323";export{t as default}; diff --git a/BTPanel/static/vite/js/form4.js b/BTPanel/static/vite/js/form4.js index ed546362..58928ee8 100644 --- a/BTPanel/static/vite/js/form4.js +++ b/BTPanel/static/vite/js/form4.js @@ -1 +1 @@ -import{_ as e}from"./public.js?v=1760428868419";import{_ as l}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{_ as r}from"./index99.js?v=1760428868419";import{k as a,P as o,r as t,e as i,R as s,V as u,W as d,a3 as p,l as c,S as n,U as m,v as f,a4 as _}from"./vue.js?v=1760428868419";import{gc as v,gd as w}from"./page_layout.js?v=1760428868419";import{dR as y,dV as b,au as h}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const P={class:"p-20px"},S={class:"w-240px"},F={class:"w-240px"},x={class:"w-240px"},U={class:"w-240px"},$={class:"w-240px"},g={class:"w-240px"},j={class:"w-240px"},E={class:"w-240px"},T=a({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(a,{expose:T,emit:I}){const C=a,k=I,{t:A}=o(),{isEdit:R,row:D}=C,N=t(null),O=i({protocol:"tcp",port:"",choose:"all",address:"",domain:"",types:"accept",chain:"INPUT",brief:""}),V={port:{trigger:["blur","input"],validator:()=>{const e=O.port.split(","),l=/^\d+$/;for(let r of e)if(l.test(r)){const e=parseInt(r,10);if(e<1||e>65535)return new Error(A("Security.Firewall.Port.form_15"))}else{if(!r.includes("-"))return""==r?new Error(A("Security.Firewall.Port.form_16")):new Error(A("Security.Firewall.Port.form_15"));{const e=r.split("-"),l=parseInt(e[0],10),a=parseInt(e[1],10);if(l<1||a>65535||l>a)return new Error(A("Security.Firewall.Port.form_15"))}}return!0}},address:{trigger:["blur","input"],validator:()=>!!("point"!==O.choose||""!==O.address.trim()&&O.address)||new Error(A("Security.Firewall.Port.form_18"))},domain:{trigger:["blur","input"],validator:()=>!!("domain"!==O.choose||""!==O.domain.trim()&&O.domain)||new Error(A("Security.Firewall.Port.form_19"))}},B=[{label:"TCP",value:"tcp"},{label:"UDP",value:"udp"},{label:"TCP/UDP",value:"all"}],H=[{label:A("Security.Firewall.Port.form_20"),value:"all"},{label:A("Security.Firewall.Port.form_5"),value:"point"}],W=[{label:A("Security.Firewall.Port.form_21"),value:"accept"},{label:A("Security.Firewall.Port.form_22"),value:"drop"}],q=[{label:A("Security.Firewall.Port.form_23"),value:"INPUT"},{label:A("Security.Firewall.Port.form_24"),value:"OUTPUT"}];return R&&D&&(O.protocol=D.Protocol,O.port=D.Port,O.choose="all"===D.Address?"all":""===D.domain?"point":"domain",O.address="all"===D.Address?"":D.Address,O.domain=D.domain,O.types=D.Strategy,O.chain=D.Chain,O.brief=D.brief),T({onConfirm:async()=>{var e;await(null==(e=N.value)?void 0:e.validate());const l=(()=>{let e={protocol:O.protocol,port:O.port,choose:O.choose,domain:"domain"===O.choose?O.domain:"",types:O.types,strategy:O.types,chain:O.chain,brief:O.brief};return"point"===e.choose&&(e=Object.assign(e,{address:O.address})),e})();R&&D?await v({new_data:l,old_data:D}):await w(l),k("refresh")}}),(a,o)=>{const t=b,i=y,v=h,w=r,T=l,I=e;return u(),s("div",P,[d(T,{ref_key:"formRef",ref:N,model:m(O),rules:V},{default:p(()=>[d(i,{label:a.$t("Security.Firewall.Port.form_1"),path:"protocol"},{default:p(()=>[n("div",S,[d(t,{value:m(O).protocol,"onUpdate:value":o[0]||(o[0]=e=>m(O).protocol=e),options:B},null,8,["value"])])]),_:1},8,["label"]),d(i,{label:a.$t("Security.Firewall.Port.form_2"),path:"port"},{default:p(()=>[n("div",F,[d(v,{value:m(O).port,"onUpdate:value":o[1]||(o[1]=e=>m(O).port=e),disabled:m(R),placeholder:a.$t("Security.Firewall.Port.form_3")},null,8,["value","disabled","placeholder"])])]),_:1},8,["label"]),d(i,{label:a.$t("Security.Firewall.Port.form_4"),path:"choose"},{default:p(()=>[n("div",x,[d(t,{value:m(O).choose,"onUpdate:value":o[2]||(o[2]=e=>m(O).choose=e),options:H},null,8,["value"])])]),_:1},8,["label"]),c(d(i,{label:a.$t("Security.Firewall.Port.form_5"),path:"address"},{default:p(()=>[n("div",U,[d(w,{value:m(O).address,"onUpdate:value":o[3]||(o[3]=e=>m(O).address=e),rows:3,placeholder:a.$t("Security.Firewall.Port.form_6")},null,8,["value","placeholder"])])]),_:1},8,["label"]),[[f,"point"===m(O).choose]]),c(d(i,{label:a.$t("Security.Firewall.Port.form_7"),path:"domain"},{default:p(()=>[n("div",$,[d(w,{value:m(O).domain,"onUpdate:value":o[4]||(o[4]=e=>m(O).domain=e),rows:3,placeholder:a.$t("Security.Firewall.Port.form_8")},null,8,["value","placeholder"])])]),_:1},8,["label"]),[[f,"domain"===m(O).choose]]),d(i,{label:a.$t("Security.Firewall.Port.form_9"),path:"types"},{default:p(()=>[n("div",g,[d(t,{value:m(O).types,"onUpdate:value":o[5]||(o[5]=e=>m(O).types=e),options:W},null,8,["value"])])]),_:1},8,["label"]),d(i,{label:a.$t("Security.Firewall.Port.form_10"),path:"types"},{default:p(()=>[n("div",j,[d(t,{value:m(O).chain,"onUpdate:value":o[6]||(o[6]=e=>m(O).chain=e),options:q},null,8,["value"])])]),_:1},8,["label"]),d(i,{label:a.$t("Security.Firewall.Port.form_11"),path:"brief","show-feedback":!1},{default:p(()=>[n("div",E,[d(v,{value:m(O).brief,"onUpdate:value":o[7]||(o[7]=e=>m(O).brief=e),placeholder:a.$t("Security.Firewall.Port.form_12")},null,8,["value","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"]),d(I,{class:"mt-20px ml-40px"},{default:p(()=>[n("li",null,_(a.$t("Security.Firewall.Port.form_13")),1),n("li",null,_(a.$t("Security.Firewall.Port.form_14")),1)]),_:1})])}}});export{T as default}; +import{_ as e}from"./public.js?v=1762424784323";import{_ as l}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{_ as r}from"./index99.js?v=1762424784323";import{k as a,P as o,r as t,e as i,R as s,V as u,W as d,a3 as p,l as c,S as n,U as m,v as f,a4 as _}from"./vue.js?v=1762424784323";import{g8 as v,g9 as w}from"./page_layout.js?v=1762424784323";import{dR as y,dV as b,au as h}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const P={class:"p-20px"},S={class:"w-240px"},F={class:"w-240px"},x={class:"w-240px"},U={class:"w-240px"},$={class:"w-240px"},g={class:"w-240px"},j={class:"w-240px"},E={class:"w-240px"},T=a({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(a,{expose:T,emit:I}){const C=a,k=I,{t:A}=o(),{isEdit:R,row:D}=C,N=t(null),O=i({protocol:"tcp",port:"",choose:"all",address:"",domain:"",types:"accept",chain:"INPUT",brief:""}),V={port:{trigger:["blur","input"],validator:()=>{const e=O.port.split(","),l=/^\d+$/;for(let r of e)if(l.test(r)){const e=parseInt(r,10);if(e<1||e>65535)return new Error(A("Security.Firewall.Port.form_15"))}else{if(!r.includes("-"))return""==r?new Error(A("Security.Firewall.Port.form_16")):new Error(A("Security.Firewall.Port.form_15"));{const e=r.split("-"),l=parseInt(e[0],10),a=parseInt(e[1],10);if(l<1||a>65535||l>a)return new Error(A("Security.Firewall.Port.form_15"))}}return!0}},address:{trigger:["blur","input"],validator:()=>!!("point"!==O.choose||""!==O.address.trim()&&O.address)||new Error(A("Security.Firewall.Port.form_18"))},domain:{trigger:["blur","input"],validator:()=>!!("domain"!==O.choose||""!==O.domain.trim()&&O.domain)||new Error(A("Security.Firewall.Port.form_19"))}},B=[{label:"TCP",value:"tcp"},{label:"UDP",value:"udp"},{label:"TCP/UDP",value:"all"}],H=[{label:A("Security.Firewall.Port.form_20"),value:"all"},{label:A("Security.Firewall.Port.form_5"),value:"point"}],W=[{label:A("Security.Firewall.Port.form_21"),value:"accept"},{label:A("Security.Firewall.Port.form_22"),value:"drop"}],q=[{label:A("Security.Firewall.Port.form_23"),value:"INPUT"},{label:A("Security.Firewall.Port.form_24"),value:"OUTPUT"}];return R&&D&&(O.protocol=D.Protocol,O.port=D.Port,O.choose="all"===D.Address?"all":""===D.domain?"point":"domain",O.address="all"===D.Address?"":D.Address,O.domain=D.domain,O.types=D.Strategy,O.chain=D.Chain,O.brief=D.brief),T({onConfirm:async()=>{var e;await(null==(e=N.value)?void 0:e.validate());const l=(()=>{let e={protocol:O.protocol,port:O.port,choose:O.choose,domain:"domain"===O.choose?O.domain:"",types:O.types,strategy:O.types,chain:O.chain,brief:O.brief};return"point"===e.choose&&(e=Object.assign(e,{address:O.address})),e})();R&&D?await v({new_data:l,old_data:D}):await w(l),k("refresh")}}),(a,o)=>{const t=b,i=y,v=h,w=r,T=l,I=e;return u(),s("div",P,[d(T,{ref_key:"formRef",ref:N,model:m(O),rules:V},{default:p(()=>[d(i,{label:a.$t("Security.Firewall.Port.form_1"),path:"protocol"},{default:p(()=>[n("div",S,[d(t,{value:m(O).protocol,"onUpdate:value":o[0]||(o[0]=e=>m(O).protocol=e),options:B},null,8,["value"])])]),_:1},8,["label"]),d(i,{label:a.$t("Security.Firewall.Port.form_2"),path:"port"},{default:p(()=>[n("div",F,[d(v,{value:m(O).port,"onUpdate:value":o[1]||(o[1]=e=>m(O).port=e),disabled:m(R),placeholder:a.$t("Security.Firewall.Port.form_3")},null,8,["value","disabled","placeholder"])])]),_:1},8,["label"]),d(i,{label:a.$t("Security.Firewall.Port.form_4"),path:"choose"},{default:p(()=>[n("div",x,[d(t,{value:m(O).choose,"onUpdate:value":o[2]||(o[2]=e=>m(O).choose=e),options:H},null,8,["value"])])]),_:1},8,["label"]),c(d(i,{label:a.$t("Security.Firewall.Port.form_5"),path:"address"},{default:p(()=>[n("div",U,[d(w,{value:m(O).address,"onUpdate:value":o[3]||(o[3]=e=>m(O).address=e),rows:3,placeholder:a.$t("Security.Firewall.Port.form_6")},null,8,["value","placeholder"])])]),_:1},8,["label"]),[[f,"point"===m(O).choose]]),c(d(i,{label:a.$t("Security.Firewall.Port.form_7"),path:"domain"},{default:p(()=>[n("div",$,[d(w,{value:m(O).domain,"onUpdate:value":o[4]||(o[4]=e=>m(O).domain=e),rows:3,placeholder:a.$t("Security.Firewall.Port.form_8")},null,8,["value","placeholder"])])]),_:1},8,["label"]),[[f,"domain"===m(O).choose]]),d(i,{label:a.$t("Security.Firewall.Port.form_9"),path:"types"},{default:p(()=>[n("div",g,[d(t,{value:m(O).types,"onUpdate:value":o[5]||(o[5]=e=>m(O).types=e),options:W},null,8,["value"])])]),_:1},8,["label"]),d(i,{label:a.$t("Security.Firewall.Port.form_10"),path:"types"},{default:p(()=>[n("div",j,[d(t,{value:m(O).chain,"onUpdate:value":o[6]||(o[6]=e=>m(O).chain=e),options:q},null,8,["value"])])]),_:1},8,["label"]),d(i,{label:a.$t("Security.Firewall.Port.form_11"),path:"brief","show-feedback":!1},{default:p(()=>[n("div",E,[d(v,{value:m(O).brief,"onUpdate:value":o[7]||(o[7]=e=>m(O).brief=e),placeholder:a.$t("Security.Firewall.Port.form_12")},null,8,["value","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"]),d(I,{class:"mt-20px ml-40px"},{default:p(()=>[n("li",null,_(a.$t("Security.Firewall.Port.form_13")),1),n("li",null,_(a.$t("Security.Firewall.Port.form_14")),1)]),_:1})])}}});export{T as default}; diff --git a/BTPanel/static/vite/js/form5.js b/BTPanel/static/vite/js/form5.js index 26b25f79..e875d101 100644 --- a/BTPanel/static/vite/js/form5.js +++ b/BTPanel/static/vite/js/form5.js @@ -1 +1 @@ -import{_ as e}from"./public.js?v=1760428868419";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{_ as l}from"./index99.js?v=1760428868419";import{gf as r,gg as s}from"./page_layout.js?v=1760428868419";import{k as t,P as i,r as o,e as d,R as u,V as p,W as f,a3 as c,S as m,U as n,a4 as _}from"./vue.js?v=1760428868419";import{dR as v,dV as y,au as w}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const b={class:"p-20px"},h={class:"w-200px"},P={class:"w-200px"},I={class:"w-200px"},S={class:"w-200px"},F=t({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(t,{expose:F,emit:x}){const g=t,j=x,{t:U}=i(),{isEdit:$,row:T}=g,k=o(null),E=d({address:"",types:"accept",chain:"INPUT",brief:""}),R={address:{trigger:["blur","input"],validator:()=>!(""===E.address.trim()||!E.address)||new Error(U("Security.Firewall.IP.form_10"))}},C=[{label:U("Security.Firewall.IP.form_11"),value:"accept"},{label:U("Security.Firewall.IP.form_12"),value:"drop"}],N=[{label:U("Security.Firewall.IP.form_13"),value:"INPUT"},{label:U("Security.Firewall.IP.form_14"),value:"OUTPUT"}];return $&&T&&(E.address=T.Address,E.types=T.Strategy,E.chain=T.Chain,E.brief=T.brief),F({onConfirm:async()=>{var e;await(null==(e=k.value)?void 0:e.validate());const a={address:E.address,types:E.types,strategy:E.types,chain:E.chain,brief:E.brief,family:"ipv4"};$&&T?await r({new_data:{...a,id:T.id},old_data:T}):await s(a),j("refresh")}}),(r,s)=>{const t=l,i=v,o=y,d=w,F=a,x=e;return p(),u("div",b,[f(F,{ref_key:"formRef",ref:k,model:n(E),rules:R},{default:c(()=>[f(i,{label:r.$t("Security.Firewall.IP.form_16"),path:"address"},{default:c(()=>[m("div",h,[f(t,{value:n(E).address,"onUpdate:value":s[0]||(s[0]=e=>n(E).address=e),rows:3,disabled:n($),placeholder:r.$t("Security.Firewall.IP.form_1")},null,8,["value","disabled","placeholder"])])]),_:1},8,["label"]),f(i,{label:r.$t("Security.Firewall.IP.form_2"),path:"types"},{default:c(()=>[m("div",P,[f(o,{value:n(E).types,"onUpdate:value":s[1]||(s[1]=e=>n(E).types=e),options:C},null,8,["value"])])]),_:1},8,["label"]),f(i,{label:r.$t("Security.Firewall.IP.form_3"),path:"chain"},{default:c(()=>[m("div",I,[f(o,{value:n(E).chain,"onUpdate:value":s[2]||(s[2]=e=>n(E).chain=e),options:N},null,8,["value"])])]),_:1},8,["label"]),f(i,{label:r.$t("Security.Firewall.IP.form_4"),path:"brief","show-feedback":!1},{default:c(()=>[m("div",S,[f(d,{value:n(E).brief,"onUpdate:value":s[3]||(s[3]=e=>n(E).brief=e),placeholder:r.$t("Security.Firewall.IP.form_5")},null,8,["value","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"]),f(x,{class:"mt-20px ml-40px"},{default:c(()=>[m("li",null,_(r.$t("Security.Firewall.IP.form_15")),1),m("li",null,_(r.$t("Security.Firewall.IP.form_8")),1),m("li",null,_(r.$t("Security.Firewall.IP.form_9")),1)]),_:1})])}}});export{F as default}; +import{_ as e}from"./public.js?v=1762424784323";import{_ as a}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{_ as l}from"./index99.js?v=1762424784323";import{gb as r,gc as s}from"./page_layout.js?v=1762424784323";import{k as t,P as i,r as o,e as d,R as u,V as p,W as c,a3 as f,S as m,U as n,a4 as _}from"./vue.js?v=1762424784323";import{dR as v,dV as y,au as w}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const b={class:"p-20px"},h={class:"w-200px"},P={class:"w-200px"},I={class:"w-200px"},S={class:"w-200px"},F=t({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(t,{expose:F,emit:x}){const j=t,U=x,{t:$}=i(),{isEdit:g,row:T}=j,k=o(null),E=d({address:"",types:"accept",chain:"INPUT",brief:""}),R={address:{trigger:["blur","input"],validator:()=>!(""===E.address.trim()||!E.address)||new Error($("Security.Firewall.IP.form_10"))}},C=[{label:$("Security.Firewall.IP.form_11"),value:"accept"},{label:$("Security.Firewall.IP.form_12"),value:"drop"}],N=[{label:$("Security.Firewall.IP.form_13"),value:"INPUT"},{label:$("Security.Firewall.IP.form_14"),value:"OUTPUT"}];return g&&T&&(E.address=T.Address,E.types=T.Strategy,E.chain=T.Chain,E.brief=T.brief),F({onConfirm:async()=>{var e;await(null==(e=k.value)?void 0:e.validate());const a={address:E.address,types:E.types,strategy:E.types,chain:E.chain,brief:E.brief,family:"ipv4"};g&&T?await r({new_data:{...a,id:T.id},old_data:T}):await s(a),U("refresh")}}),(r,s)=>{const t=l,i=v,o=y,d=w,F=a,x=e;return p(),u("div",b,[c(F,{ref_key:"formRef",ref:k,model:n(E),rules:R},{default:f(()=>[c(i,{label:r.$t("Security.Firewall.IP.form_16"),path:"address"},{default:f(()=>[m("div",h,[c(t,{value:n(E).address,"onUpdate:value":s[0]||(s[0]=e=>n(E).address=e),rows:3,disabled:n(g),placeholder:r.$t("Security.Firewall.IP.form_1")},null,8,["value","disabled","placeholder"])])]),_:1},8,["label"]),c(i,{label:r.$t("Security.Firewall.IP.form_2"),path:"types"},{default:f(()=>[m("div",P,[c(o,{value:n(E).types,"onUpdate:value":s[1]||(s[1]=e=>n(E).types=e),options:C},null,8,["value"])])]),_:1},8,["label"]),c(i,{label:r.$t("Security.Firewall.IP.form_3"),path:"chain"},{default:f(()=>[m("div",I,[c(o,{value:n(E).chain,"onUpdate:value":s[2]||(s[2]=e=>n(E).chain=e),options:N},null,8,["value"])])]),_:1},8,["label"]),c(i,{label:r.$t("Security.Firewall.IP.form_4"),path:"brief","show-feedback":!1},{default:f(()=>[m("div",S,[c(d,{value:n(E).brief,"onUpdate:value":s[3]||(s[3]=e=>n(E).brief=e),placeholder:r.$t("Security.Firewall.IP.form_5")},null,8,["value","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"]),c(x,{class:"mt-20px ml-40px"},{default:f(()=>[m("li",null,_(r.$t("Security.Firewall.IP.form_15")),1),m("li",null,_(r.$t("Security.Firewall.IP.form_8")),1),m("li",null,_(r.$t("Security.Firewall.IP.form_9")),1)]),_:1})])}}});export{F as default}; diff --git a/BTPanel/static/vite/js/form6.js b/BTPanel/static/vite/js/form6.js index 332353e2..52dd1914 100644 --- a/BTPanel/static/vite/js/form6.js +++ b/BTPanel/static/vite/js/form6.js @@ -1 +1 @@ -import{_ as r}from"./public.js?v=1760428868419";import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{gh as a,gi as l,b3 as o}from"./page_layout.js?v=1760428868419";import{k as t,P as s,r as d,e as i,R as p,V as _,W as u,a3 as c,S as w,U as f,a4 as m}from"./vue.js?v=1760428868419";import{dR as n,dV as v,au as F}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const b={class:"p-20px"},y={class:"w-200px"},S={class:"w-200px"},h={class:"w-200px"},x={class:"w-200px"},$={class:"w-200px"},P=t({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(t,{expose:P,emit:g}){const j=t,U=g,{t:E}=s(),{isEdit:T,row:k}=j,C=d(null),R=i({protocol:"tcp",s_ports:"",d_address:"",d_ports:"",brief:""}),A={s_ports:{trigger:["blur","input"],validator:()=>""!==R.s_ports.trim()&&R.s_ports?!!o(R.s_ports)||new Error(E("Security.Firewall.Forward.form_12")):new Error(E("Security.Firewall.Forward.form_3"))},d_ports:{trigger:["blur","input"],validator:()=>""!==R.d_ports.trim()&&R.d_ports?!!o(R.d_ports)||new Error(E("Security.Firewall.Forward.form_12")):new Error(E("Security.Firewall.Forward.form_7"))}},V=[{label:"TCP",value:"tcp"},{label:"UDP",value:"udp"}];return T&&k&&(R.protocol=k.Protocol?k.Protocol.toLowerCase():"tcp",R.s_ports=k.S_Port||"",R.d_address=k.T_Address||"",R.d_ports=k.T_Port||"",R.brief=k.brief),P({onConfirm:async()=>{var r;await(null==(r=C.value)?void 0:r.validate());const e={protocol:R.protocol,S_Port:R.s_ports,T_Port:R.d_ports,T_Address:R.d_address,brief:R.brief};T&&k?await a({new_data:{...e,id:k.id},old_data:k}):await l(e),U("refresh")}}),(a,l)=>{const o=v,t=n,s=F,d=e,i=r;return _(),p("div",b,[u(d,{ref_key:"formRef",ref:C,model:f(R),rules:A},{default:c(()=>[u(t,{label:a.$t("Security.Firewall.Forward.form_1"),path:"protocol"},{default:c(()=>[w("div",y,[u(o,{value:f(R).protocol,"onUpdate:value":l[0]||(l[0]=r=>f(R).protocol=r),options:V},null,8,["value"])])]),_:1},8,["label"]),u(t,{label:a.$t("Security.Firewall.Forward.form_2"),path:"s_ports"},{default:c(()=>[w("div",S,[u(s,{value:f(R).s_ports,"onUpdate:value":l[1]||(l[1]=r=>f(R).s_ports=r),placeholder:a.$t("Security.Firewall.Forward.form_3")},null,8,["value","placeholder"])])]),_:1},8,["label"]),u(t,{label:a.$t("Security.Firewall.Forward.form_4"),path:"d_address"},{default:c(()=>[w("div",h,[u(s,{value:f(R).d_address,"onUpdate:value":l[2]||(l[2]=r=>f(R).d_address=r),placeholder:a.$t("Security.Firewall.Forward.form_5")},null,8,["value","placeholder"])])]),_:1},8,["label"]),u(t,{label:a.$t("Security.Firewall.Forward.form_6"),path:"d_ports"},{default:c(()=>[w("div",x,[u(s,{value:f(R).d_ports,"onUpdate:value":l[3]||(l[3]=r=>f(R).d_ports=r),placeholder:a.$t("Security.Firewall.Forward.form_7")},null,8,["value","placeholder"])])]),_:1},8,["label"]),u(t,{label:a.$t("Security.Firewall.Forward.form_8"),path:"brief","show-feedback":!1},{default:c(()=>[w("div",$,[u(s,{value:f(R).brief,"onUpdate:value":l[4]||(l[4]=r=>f(R).brief=r),placeholder:a.$t("Security.Firewall.Forward.form_9")},null,8,["value","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"]),u(i,{class:"mt-20px ml-40px"},{default:c(()=>[w("li",null,m(a.$t("Security.Firewall.Forward.form_10")),1),w("li",null,m(a.$t("Security.Firewall.Forward.form_11")),1)]),_:1})])}}});export{P as default}; +import{_ as r}from"./public.js?v=1762424784323";import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{gd as a,ge as l,b3 as o}from"./page_layout.js?v=1762424784323";import{k as t,P as s,r as d,e as i,R as p,V as _,W as u,a3 as c,S as w,U as f,a4 as m}from"./vue.js?v=1762424784323";import{dR as n,dV as v,au as F}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const b={class:"p-20px"},y={class:"w-200px"},S={class:"w-200px"},h={class:"w-200px"},x={class:"w-200px"},$={class:"w-200px"},P=t({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(t,{expose:P,emit:g}){const j=t,U=g,{t:E}=s(),{isEdit:T,row:k}=j,C=d(null),R=i({protocol:"tcp",s_ports:"",d_address:"",d_ports:"",brief:""}),A={s_ports:{trigger:["blur","input"],validator:()=>""!==R.s_ports.trim()&&R.s_ports?!!o(R.s_ports)||new Error(E("Security.Firewall.Forward.form_12")):new Error(E("Security.Firewall.Forward.form_3"))},d_ports:{trigger:["blur","input"],validator:()=>""!==R.d_ports.trim()&&R.d_ports?!!o(R.d_ports)||new Error(E("Security.Firewall.Forward.form_12")):new Error(E("Security.Firewall.Forward.form_7"))}},V=[{label:"TCP",value:"tcp"},{label:"UDP",value:"udp"}];return T&&k&&(R.protocol=k.Protocol?k.Protocol.toLowerCase():"tcp",R.s_ports=k.S_Port||"",R.d_address=k.T_Address||"",R.d_ports=k.T_Port||"",R.brief=k.brief),P({onConfirm:async()=>{var r;await(null==(r=C.value)?void 0:r.validate());const e={protocol:R.protocol,S_Port:R.s_ports,T_Port:R.d_ports,T_Address:R.d_address,brief:R.brief};T&&k?await a({new_data:{...e,id:k.id},old_data:k}):await l(e),U("refresh")}}),(a,l)=>{const o=v,t=n,s=F,d=e,i=r;return _(),p("div",b,[u(d,{ref_key:"formRef",ref:C,model:f(R),rules:A},{default:c(()=>[u(t,{label:a.$t("Security.Firewall.Forward.form_1"),path:"protocol"},{default:c(()=>[w("div",y,[u(o,{value:f(R).protocol,"onUpdate:value":l[0]||(l[0]=r=>f(R).protocol=r),options:V},null,8,["value"])])]),_:1},8,["label"]),u(t,{label:a.$t("Security.Firewall.Forward.form_2"),path:"s_ports"},{default:c(()=>[w("div",S,[u(s,{value:f(R).s_ports,"onUpdate:value":l[1]||(l[1]=r=>f(R).s_ports=r),placeholder:a.$t("Security.Firewall.Forward.form_3")},null,8,["value","placeholder"])])]),_:1},8,["label"]),u(t,{label:a.$t("Security.Firewall.Forward.form_4"),path:"d_address"},{default:c(()=>[w("div",h,[u(s,{value:f(R).d_address,"onUpdate:value":l[2]||(l[2]=r=>f(R).d_address=r),placeholder:a.$t("Security.Firewall.Forward.form_5")},null,8,["value","placeholder"])])]),_:1},8,["label"]),u(t,{label:a.$t("Security.Firewall.Forward.form_6"),path:"d_ports"},{default:c(()=>[w("div",x,[u(s,{value:f(R).d_ports,"onUpdate:value":l[3]||(l[3]=r=>f(R).d_ports=r),placeholder:a.$t("Security.Firewall.Forward.form_7")},null,8,["value","placeholder"])])]),_:1},8,["label"]),u(t,{label:a.$t("Security.Firewall.Forward.form_8"),path:"brief","show-feedback":!1},{default:c(()=>[w("div",$,[u(s,{value:f(R).brief,"onUpdate:value":l[4]||(l[4]=r=>f(R).brief=r),placeholder:a.$t("Security.Firewall.Forward.form_9")},null,8,["value","placeholder"])])]),_:1},8,["label"])]),_:1},8,["model"]),u(i,{class:"mt-20px ml-40px"},{default:c(()=>[w("li",null,m(a.$t("Security.Firewall.Forward.form_10")),1),w("li",null,m(a.$t("Security.Firewall.Forward.form_11")),1)]),_:1})])}}});export{P as default}; diff --git a/BTPanel/static/vite/js/form7.js b/BTPanel/static/vite/js/form7.js index 4d24e446..6584e06f 100644 --- a/BTPanel/static/vite/js/form7.js +++ b/BTPanel/static/vite/js/form7.js @@ -1 +1 @@ -import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{k as a,P as l,r,e as t,R as o,V as s,W as i,a3 as u,l as p,a2 as n,an as c,S as d,U as f,v as m}from"./vue.js?v=1760428868419";import{gj as y,w as v,k as _,gk as b,gl as w,b3 as h}from"./page_layout.js?v=1760428868419";import{dR as g,dV as x,df as S,_ as A}from"./naive.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";import"./common.js?v=1760428868419";import"./public.js?v=1760428868419";const F={class:"px-20px pt-24px pb-8px"},j={class:"w-240px"},k={class:"w-240px"},U={class:"w-240px"},E={class:"w-240px"},$=a({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(a,{expose:$,emit:C}){const H=a,P=C,{t:R}=l(),{isEdit:V,row:B}=H,I=r(null),W=t({types:"drop",choose:"all",ports:null,country:["United States"],is_update:!1}),q={country:{trigger:"change",validator:()=>0!==W.country.length||new Error(R("Security.Firewall.Area.form_8"))},ports:{trigger:["blur","input"],validator:()=>{if("point"===W.choose){if(!W.ports)return new Error(R("Security.Firewall.Area.form_9"));if(!h("".concat(W.ports)))return new Error(R("Security.Firewall.Area.form_10"))}return!0}}},z=[{label:R("Security.Firewall.Area.form_11"),value:"all"},{label:R("Security.Firewall.Area.form_3"),value:"point"}],D=[{label:R("Security.Firewall.Area.form_12"),value:"drop"}],G=r(!1),J=r([]);return(async()=>{try{G.value=!0;const{message:e}=await y();v(e)&&(J.value=e.map(e=>({label:e.CH,value:e.CH,brief:e.brief})))}finally{G.value=!1}})(),V&&B&&(W.types=B.types,W.choose=B.ports?"point":"all",W.ports=B.ports?_(B.ports):null,W.country=B.country),$({onConfirm:async()=>{var e,a;await(null==(e=I.value)?void 0:e.validate());const l={types:W.types,choose:W.choose,ports:"point"===W.choose?"".concat(W.ports||""):"",country:W.country,brief:"",is_update:W.is_update};V&&B?(l.brief="".concat((null==(a=J.value.find(e=>e.label===B.country))?void 0:a.brief)||""),await b({...l,id:B.id})):await w(l),P("refresh")}}),(a,l)=>{const r=x,t=g,y=S,v=A,_=e;return s(),o("div",F,[i(_,{ref_key:"formRef",ref:I,model:f(W),rules:q},{default:u(()=>[i(t,{label:a.$t("Security.Firewall.Area.form_1"),path:"types"},{default:u(()=>[d("div",j,[i(r,{value:f(W).types,"onUpdate:value":l[0]||(l[0]=e=>f(W).types=e),options:D},null,8,["value"])])]),_:1},8,["label"]),i(t,{label:a.$t("Security.Firewall.Area.form_2"),path:"choose"},{default:u(()=>[d("div",k,[i(r,{value:f(W).choose,"onUpdate:value":l[1]||(l[1]=e=>f(W).choose=e),options:z},null,8,["value"])])]),_:1},8,["label"]),p(i(t,{label:a.$t("Security.Firewall.Area.form_3"),path:"ports"},{default:u(()=>[d("div",U,[i(y,{value:f(W).ports,"onUpdate:value":l[2]||(l[2]=e=>f(W).ports=e),min:1,max:65535,"show-button":!1,placeholder:a.$t("Security.Firewall.Area.form_4")},null,8,["value","placeholder"])])]),_:1},8,["label"]),[[m,"point"===f(W).choose]]),i(t,{label:a.$t("Security.Firewall.Area.form_5"),path:"country"},{default:u(()=>[d("div",E,[i(r,{value:f(W).country,"onUpdate:value":l[3]||(l[3]=e=>f(W).country=e),filterable:"","max-tag-count":"responsive",multiple:!f(V),loading:f(G),options:f(J)},null,8,["value","multiple","loading","options"])])]),_:1},8,["label"]),f(V)?c("",!0):(s(),n(t,{key:0,label:" "},{default:u(()=>[i(v,{checked:f(W).is_update,"onUpdate:checked":l[4]||(l[4]=e=>f(W).is_update=e),label:"Update IP Pool"},null,8,["checked"])]),_:1}))]),_:1},8,["model"])])}}});export{$ as default}; +import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{k as a,P as l,r,e as t,R as o,V as s,W as i,a3 as u,l as p,a2 as n,an as c,S as d,U as f,v as m}from"./vue.js?v=1762424784323";import{gf as y,w as v,k as _,gg as b,gh as w,b3 as h}from"./page_layout.js?v=1762424784323";import{dR as g,dV as x,df as S,_ as A}from"./naive.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";import"./common.js?v=1762424784323";import"./public.js?v=1762424784323";const F={class:"px-20px pt-24px pb-8px"},j={class:"w-240px"},U={class:"w-240px"},k={class:"w-240px"},E={class:"w-240px"},$=a({__name:"form",props:{row:{},isEdit:{type:Boolean,default:!1}},emits:["refresh"],setup(a,{expose:$,emit:C}){const H=a,P=C,{t:R}=l(),{isEdit:V,row:B}=H,I=r(null),W=t({types:"drop",choose:"all",ports:null,country:["United States"],is_update:!1}),q={country:{trigger:"change",validator:()=>0!==W.country.length||new Error(R("Security.Firewall.Area.form_8"))},ports:{trigger:["blur","input"],validator:()=>{if("point"===W.choose){if(!W.ports)return new Error(R("Security.Firewall.Area.form_9"));if(!h("".concat(W.ports)))return new Error(R("Security.Firewall.Area.form_10"))}return!0}}},z=[{label:R("Security.Firewall.Area.form_11"),value:"all"},{label:R("Security.Firewall.Area.form_3"),value:"point"}],D=[{label:R("Security.Firewall.Area.form_12"),value:"drop"}],G=r(!1),J=r([]);return(async()=>{try{G.value=!0;const{message:e}=await y();v(e)&&(J.value=e.map(e=>({label:e.CH,value:e.CH,brief:e.brief})))}finally{G.value=!1}})(),V&&B&&(W.types=B.types,W.choose=B.ports?"point":"all",W.ports=B.ports?_(B.ports):null,W.country=B.country),$({onConfirm:async()=>{var e,a;await(null==(e=I.value)?void 0:e.validate());const l={types:W.types,choose:W.choose,ports:"point"===W.choose?"".concat(W.ports||""):"",country:W.country,brief:"",is_update:W.is_update};V&&B?(l.brief="".concat((null==(a=J.value.find(e=>e.label===B.country))?void 0:a.brief)||""),await b({...l,id:B.id})):await w(l),P("refresh")}}),(a,l)=>{const r=x,t=g,y=S,v=A,_=e;return s(),o("div",F,[i(_,{ref_key:"formRef",ref:I,model:f(W),rules:q},{default:u(()=>[i(t,{label:a.$t("Security.Firewall.Area.form_1"),path:"types"},{default:u(()=>[d("div",j,[i(r,{value:f(W).types,"onUpdate:value":l[0]||(l[0]=e=>f(W).types=e),options:D},null,8,["value"])])]),_:1},8,["label"]),i(t,{label:a.$t("Security.Firewall.Area.form_2"),path:"choose"},{default:u(()=>[d("div",U,[i(r,{value:f(W).choose,"onUpdate:value":l[1]||(l[1]=e=>f(W).choose=e),options:z},null,8,["value"])])]),_:1},8,["label"]),p(i(t,{label:a.$t("Security.Firewall.Area.form_3"),path:"ports"},{default:u(()=>[d("div",k,[i(y,{value:f(W).ports,"onUpdate:value":l[2]||(l[2]=e=>f(W).ports=e),min:1,max:65535,"show-button":!1,placeholder:a.$t("Security.Firewall.Area.form_4")},null,8,["value","placeholder"])])]),_:1},8,["label"]),[[m,"point"===f(W).choose]]),i(t,{label:a.$t("Security.Firewall.Area.form_5"),path:"country"},{default:u(()=>[d("div",E,[i(r,{value:f(W).country,"onUpdate:value":l[3]||(l[3]=e=>f(W).country=e),filterable:"","max-tag-count":"responsive",multiple:!f(V),loading:f(G),options:f(J)},null,8,["value","multiple","loading","options"])])]),_:1},8,["label"]),f(V)?c("",!0):(s(),n(t,{key:0,label:" "},{default:u(()=>[i(v,{checked:f(W).is_update,"onUpdate:checked":l[4]||(l[4]=e=>f(W).is_update=e),label:"Update IP Pool"},null,8,["checked"])]),_:1}))]),_:1},8,["model"])])}}});export{$ as default}; diff --git a/BTPanel/static/vite/js/form8.js b/BTPanel/static/vite/js/form8.js index 4c7f76fc..2d9986ed 100644 --- a/BTPanel/static/vite/js/form8.js +++ b/BTPanel/static/vite/js/form8.js @@ -1 +1 @@ -import{d as a,_ as e,U as l,ar as s,as as i}from"./public.js?v=1760428868419";import{o as n,S as t,w as u}from"./page_layout.js?v=1760428868419";import{_ as r}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{k as o,P as p,r as m,c as d,e as _,a2 as c,V as v,a3 as h,W as f,an as k,U as y,l as S,S as b,v as w,j as g,a4 as D}from"./vue.js?v=1760428868419";import{dR as x,dj as P,dV as L,au as j}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const I={class:"w-300px"},A={class:"w-300px"},U={class:"w-300px"},$=o({__name:"form",props:{row:{},isEdit:{type:Boolean}},emits:["refresh"],setup(o,{expose:$,emit:C}){const F=o,N=C,{isEdit:T,row:B}=F,{t:E}=p(),q=m(null),K=m([]),V=d(()=>"CloudFlareDns"===H.name),W=d(()=>"NameSiloDns"!==H.name&&"global"===H.permission),R=d(()=>"PorkBunDns"===H.name),H=_({name:"",api_user:"",api_key:"",alias:"",permission:"global",status:1}),z={api_user:{required:!0,trigger:"blur",validator:(a,e)=>!("CloudFlareDns"!==H.name&&!e)||new Error(E("SSL.Domain.index_1"))},api_key:{required:!0,trigger:"blur",message:E("SSL.Domain.index_2")},alias:{required:!0,trigger:"blur",message:E("SSL.Domain.index_6")}},G=a=>{var e;"CloudFlareDns"!==a&&"limit"===H.permission&&(H.permission="global"),null==(e=q.value)||e.restoreValidation()},J=m(""),M=m(!0),O=()=>{M.value&&(H.api_user="")},Q=()=>{!H.api_user&&M.value?H.api_user=J.value:H.api_user&&(M.value=!1)},X=()=>({id:T&&B?B.id:null,name:T&&B&&H.name===B.name?null:H.name,api_user:T&&B&&H.api_user===B.api_user?null:W.value?H.api_user:"",api_key:T&&B&&H.api_key===B.api_key?null:H.api_key,permission:T&&B&&H.permission===B.permission?null:"CloudFlareDns"===H.name?H.permission:"",status:T&&B&&H.status===B.status?null:H.status,alias:T&&B&&H.alias===B.alias?null:H.alias}),{loading:Y,setLoading:Z}=a();return(async()=>{try{Z(!0);const{message:a}=await i();u(a)&&a.length>0&&(H.name=a[0],K.value=a.map(a=>({label:a,value:a})))}finally{(()=>{const{row:a,isEdit:e}=F;e&&a&&(H.name=a.name,H.api_user=a.api_user,J.value=a.api_user,H.api_key=a.api_key,H.permission=a.permission,H.status=a.status,H.alias=a.alias)})(),Z(!1)}})(),$({onConfirm:async()=>{var a;await(null==(a=q.value)?void 0:a.validate()),T&&B?await l(X()):await s(X()),N("refresh")}}),(a,l)=>{const s=P,i=x,u=L,o=j,p=r,m=n,d=e,_=t;return v(),c(_,{class:"p-20px",show:y(Y)},{default:h(()=>[f(p,{ref_key:"formRef",ref:q,model:y(H),rules:z},{default:h(()=>[f(i,{label:a.$t("Public.Table.Status"),path:"status"},{default:h(()=>[f(s,{value:y(H).status,"onUpdate:value":l[0]||(l[0]=a=>y(H).status=a),"checked-value":1,"unchecked-value":0},null,8,["value"])]),_:1},8,["label"]),f(i,{label:a.$t("Config.Alarm.index_43"),path:"name"},{default:h(()=>[f(u,{class:"w-300px",value:y(H).name,"onUpdate:value":[l[1]||(l[1]=a=>y(H).name=a),G],options:y(K),disabled:y(T)},null,8,["value","options","disabled"])]),_:1},8,["label"]),y(W)?(v(),c(i,{key:0,label:y(R)?"Secret Key":"API User",path:"api_user"},{default:h(()=>[b("div",I,[f(o,{value:y(H).api_user,"onUpdate:value":l[2]||(l[2]=a=>y(H).api_user=a),placeholder:y(R)?"Please enter Secret Key":a.$t("SSL.Domain.index_1"),onFocus:O,onBlur:Q},null,8,["value","placeholder"])])]),_:1},8,["label"])):k("",!0),f(i,{label:"API Key",path:"api_key"},{default:h(()=>[b("div",A,[f(o,{value:y(H).api_key,"onUpdate:value":l[3]||(l[3]=a=>y(H).api_key=a),placeholder:a.$t("SSL.Domain.index_2")},null,8,["value","placeholder"])])]),_:1}),f(i,{label:a.$t("Config.Panel.index_36"),path:"alias"},{default:h(()=>[b("div",U,[f(o,{value:y(H).alias,"onUpdate:value":l[4]||(l[4]=a=>y(H).alias=a),placeholder:a.$t("SSL.Domain.index_6")},null,8,["value","placeholder"])])]),_:1},8,["label"]),S(f(i,{label:"API-Limit",path:"permission"},{default:h(()=>[f(s,{value:y(H).permission,"onUpdate:value":l[5]||(l[5]=a=>y(H).permission=a),"checked-value":"limit","unchecked-value":"global"},null,8,["value"])]),_:1},512),[[w,y(V)]])]),_:1},8,["model"]),y(V)?(v(),c(d,{key:0},{default:h(()=>[b("li",null,[f(m,{target:"_blank",href:"https://www.aapanel.com/docs/Function/Tutorial/DNS_API_Tutorial.html"},{default:h(()=>[g(D(a.$t("SSL.Domain.index_3")),1)]),_:1})])]),_:1})):k("",!0),"NameCheapDns"===y(H).name?(v(),c(d,{key:1},{default:h(()=>[l[6]||(l[6]=b("li",null," Namecheap API needs added in Whitelisted IPs (only IPv4): Profile > Tools menu > Namecheap API Access > Whitelisted IPs, please check: ",-1)),b("li",null,[f(m,{target:"_blank",href:"https://www.namecheap.com/support/api/intro/"},{default:h(()=>[g(D(a.$t("SSL.Domain.index_3")),1)]),_:1})])]),_:1,__:[6]})):k("",!0),"NameSiloDns"===y(H).name||"PorkBunDns"===y(H).name?(v(),c(d,{key:2},{default:h(()=>[b("li",null,[f(m,{target:"_blank",href:"https://www.aapanel.com/docs/Function/Tutorial/DNS_API_Tutorial.html"},{default:h(()=>[g(D(a.$t("SSL.Domain.index_3")),1)]),_:1})])]),_:1})):k("",!0)]),_:1},8,["show"])}}});export{$ as default}; +import{d as a,_ as e,U as l,ar as s,as as i}from"./public.js?v=1762424784323";import{o as n,S as t,w as u}from"./page_layout.js?v=1762424784323";import{_ as r}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{k as o,P as p,r as m,c as d,e as _,a2 as c,V as v,a3 as h,W as f,an as k,U as y,l as S,S as b,v as w,j as g,a4 as D}from"./vue.js?v=1762424784323";import{dR as x,dj as P,dV as L,au as j}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const I={class:"w-300px"},A={class:"w-300px"},U={class:"w-300px"},$=o({__name:"form",props:{row:{},isEdit:{type:Boolean}},emits:["refresh"],setup(o,{expose:$,emit:C}){const F=o,N=C,{isEdit:T,row:B}=F,{t:E}=p(),q=m(null),K=m([]),V=d(()=>"CloudFlareDns"===H.name),W=d(()=>"NameSiloDns"!==H.name&&"global"===H.permission),R=d(()=>"PorkBunDns"===H.name),H=_({name:"",api_user:"",api_key:"",alias:"",permission:"global",status:1}),z={api_user:{required:!0,trigger:"blur",validator:(a,e)=>!("CloudFlareDns"!==H.name&&!e)||new Error(E("SSL.Domain.index_1"))},api_key:{required:!0,trigger:"blur",message:E("SSL.Domain.index_2")},alias:{required:!0,trigger:"blur",message:E("SSL.Domain.index_6")}},G=a=>{var e;"CloudFlareDns"!==a&&"limit"===H.permission&&(H.permission="global"),null==(e=q.value)||e.restoreValidation()},J=m(""),M=m(!0),O=()=>{M.value&&(H.api_user="")},Q=()=>{!H.api_user&&M.value?H.api_user=J.value:H.api_user&&(M.value=!1)},X=()=>({id:T&&B?B.id:null,name:T&&B&&H.name===B.name?null:H.name,api_user:T&&B&&H.api_user===B.api_user?null:W.value?H.api_user:"",api_key:T&&B&&H.api_key===B.api_key?null:H.api_key,permission:T&&B&&H.permission===B.permission?null:"CloudFlareDns"===H.name?H.permission:"",status:T&&B&&H.status===B.status?null:H.status,alias:T&&B&&H.alias===B.alias?null:H.alias}),{loading:Y,setLoading:Z}=a();return(async()=>{try{Z(!0);const{message:a}=await i();u(a)&&a.length>0&&(H.name=a[0],K.value=a.map(a=>({label:a,value:a})))}finally{(()=>{const{row:a,isEdit:e}=F;e&&a&&(H.name=a.name,H.api_user=a.api_user,J.value=a.api_user,H.api_key=a.api_key,H.permission=a.permission,H.status=a.status,H.alias=a.alias)})(),Z(!1)}})(),$({onConfirm:async()=>{var a;await(null==(a=q.value)?void 0:a.validate()),T&&B?await l(X()):await s(X()),N("refresh")}}),(a,l)=>{const s=P,i=x,u=L,o=j,p=r,m=n,d=e,_=t;return v(),c(_,{class:"p-20px",show:y(Y)},{default:h(()=>[f(p,{ref_key:"formRef",ref:q,model:y(H),rules:z},{default:h(()=>[f(i,{label:a.$t("Public.Table.Status"),path:"status"},{default:h(()=>[f(s,{value:y(H).status,"onUpdate:value":l[0]||(l[0]=a=>y(H).status=a),"checked-value":1,"unchecked-value":0},null,8,["value"])]),_:1},8,["label"]),f(i,{label:a.$t("Config.Alarm.index_43"),path:"name"},{default:h(()=>[f(u,{class:"w-300px",value:y(H).name,"onUpdate:value":[l[1]||(l[1]=a=>y(H).name=a),G],options:y(K),disabled:y(T)},null,8,["value","options","disabled"])]),_:1},8,["label"]),y(W)?(v(),c(i,{key:0,label:y(R)?"Secret Key":"API User",path:"api_user"},{default:h(()=>[b("div",I,[f(o,{value:y(H).api_user,"onUpdate:value":l[2]||(l[2]=a=>y(H).api_user=a),placeholder:y(R)?"Please enter Secret Key":a.$t("SSL.Domain.index_1"),onFocus:O,onBlur:Q},null,8,["value","placeholder"])])]),_:1},8,["label"])):k("",!0),f(i,{label:"API Key",path:"api_key"},{default:h(()=>[b("div",A,[f(o,{value:y(H).api_key,"onUpdate:value":l[3]||(l[3]=a=>y(H).api_key=a),placeholder:a.$t("SSL.Domain.index_2")},null,8,["value","placeholder"])])]),_:1}),f(i,{label:a.$t("Config.Panel.index_36"),path:"alias"},{default:h(()=>[b("div",U,[f(o,{value:y(H).alias,"onUpdate:value":l[4]||(l[4]=a=>y(H).alias=a),placeholder:a.$t("SSL.Domain.index_6")},null,8,["value","placeholder"])])]),_:1},8,["label"]),S(f(i,{label:"API-Limit",path:"permission"},{default:h(()=>[f(s,{value:y(H).permission,"onUpdate:value":l[5]||(l[5]=a=>y(H).permission=a),"checked-value":"limit","unchecked-value":"global"},null,8,["value"])]),_:1},512),[[w,y(V)]])]),_:1},8,["model"]),y(V)?(v(),c(d,{key:0},{default:h(()=>[b("li",null,[f(m,{target:"_blank",href:"https://www.aapanel.com/docs/Function/Tutorial/DNS_API_Tutorial.html"},{default:h(()=>[g(D(a.$t("SSL.Domain.index_3")),1)]),_:1})])]),_:1})):k("",!0),"NameCheapDns"===y(H).name?(v(),c(d,{key:1},{default:h(()=>[l[6]||(l[6]=b("li",null," Namecheap API needs added in Whitelisted IPs (only IPv4): Profile > Tools menu > Namecheap API Access > Whitelisted IPs, please check: ",-1)),b("li",null,[f(m,{target:"_blank",href:"https://www.namecheap.com/support/api/intro/"},{default:h(()=>[g(D(a.$t("SSL.Domain.index_3")),1)]),_:1})])]),_:1,__:[6]})):k("",!0),"NameSiloDns"===y(H).name||"PorkBunDns"===y(H).name?(v(),c(d,{key:2},{default:h(()=>[b("li",null,[f(m,{target:"_blank",href:"https://www.aapanel.com/docs/Function/Tutorial/DNS_API_Tutorial.html"},{default:h(()=>[g(D(a.$t("SSL.Domain.index_3")),1)]),_:1})])]),_:1})):k("",!0)]),_:1},8,["show"])}}});export{$ as default}; diff --git a/BTPanel/static/vite/js/form9.js b/BTPanel/static/vite/js/form9.js index 6fa153ab..1c1f2d10 100644 --- a/BTPanel/static/vite/js/form9.js +++ b/BTPanel/static/vite/js/form9.js @@ -1 +1 @@ -import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1760428868419";import{f as a,h as l}from"./term.js?v=1760428868419";import{d6 as r,d as t}from"./page_layout.js?v=1760428868419";import"./public.js?v=1760428868419";import{k as s,P as o,r as p,e as u,w as d,R as n,V as i,a2 as c,an as m,W as _,U as y,a3 as f,j as v}from"./vue.js?v=1760428868419";import{dk as k,da as w,dR as x,au as h,df as b,dT as g,dZ as $}from"./naive.js?v=1760428868419";import"./common.js?v=1760428868419";import"./__commonjsHelpers__.js?v=1760428868419";const T={class:"p-20px"},j={key:1},U=s({__name:"form",props:{data:{}},setup(s,{expose:U}){const C=r(),{t:P}=o(),R=s,{isEdit:q,row:I,tips:S,localhost:D,onRefresh:E}=R.data,H=p(null),V=u({ip:"",port:22,account:"root",type:1,password:"",key:"",keyPassword:"",remark:""});d(()=>V.ip,e=>{q||(V.remark=e)});const W={ip:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]},port:{required:!0,type:"number",message:P("Security.Conf.Index_28"),trigger:["blur","input"]},account:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]},password:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]},key:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]}};return(async()=>{if(D)return V.ip="127.0.0.1",V.port=22,V.account="root",V.type=1,V.password="",V.key="",V.keyPassword="",void(V.remark="127.0.0.1");if(q&&I){const{message:e}=await l({host:I.host});t(e)&&(V.ip=e.host,V.port=e.port,V.account=e.username,V.type=e.password?1:2,V.password=e.password,V.key=e.pkey,V.keyPassword=e.pkey_passwd,V.remark=e.ps)}})(),U({onConfirm:async({hide:e})=>{var l;await(null==(l=H.value)?void 0:l.validate()),await a({host:V.ip,port:V.port,username:V.account,password:1===V.type?V.password:"",pkey:2===V.type?V.key:"",pkey_passwd:2===V.type?V.keyPassword:"",ps:V.remark}),C.setRefresh(!0),e(),null==E||E()}}),(a,l)=>{const r=k,t=h,s=x,o=b,p=w,u=$,d=g,U=e;return i(),n("div",T,[y(S)?(i(),c(r,{key:0,class:"mb-16px",type:"warning"},{default:f(()=>l[8]||(l[8]=[v(" Unable to authenticate automatically, please fill in the login information of the local server! ",-1)])),_:1,__:[8]})):m("",!0),_(U,{ref_key:"formRef",ref:H,model:y(V),rules:W},{default:f(()=>[_(p,null,{default:f(()=>[_(s,{label:a.$t("Term.index_8"),path:"ip"},{default:f(()=>[_(t,{class:"w-190px!",value:y(V).ip,"onUpdate:value":l[0]||(l[0]=e=>y(V).ip=e),placeholder:a.$t("Term.index_9")},null,8,["value","placeholder"])]),_:1},8,["label"]),_(s,{path:"port"},{default:f(()=>[_(o,{"show-button":!1,class:"w-80px!",value:y(V).port,"onUpdate:value":l[1]||(l[1]=e=>y(V).port=e),placeholder:a.$t("Docker.Container.create.index_7")},null,8,["value","placeholder"])]),_:1})]),_:1}),_(s,{label:a.$t("Term.index_10"),path:"account"},{default:f(()=>[_(t,{class:"w-280px!",value:y(V).account,"onUpdate:value":l[2]||(l[2]=e=>y(V).account=e),placeholder:a.$t("Term.index_11")},null,8,["value","placeholder"])]),_:1},8,["label"]),_(s,{label:a.$t("Term.index_12")},{default:f(()=>[_(d,{value:y(V).type,"onUpdate:value":l[3]||(l[3]=e=>y(V).type=e)},{default:f(()=>[_(u,{label:a.$t("Database.index_14"),value:1},null,8,["label"]),_(u,{label:a.$t("Term.index_13"),value:2},null,8,["label"])]),_:1},8,["value"])]),_:1},8,["label"]),1===y(V).type?(i(),c(s,{key:0,label:a.$t("Database.index_14"),path:"password"},{default:f(()=>[_(t,{class:"w-280px!",value:y(V).password,"onUpdate:value":l[4]||(l[4]=e=>y(V).password=e),placeholder:a.$t("Term.index_14")},null,8,["value","placeholder"])]),_:1},8,["label"])):(i(),n("div",j,[_(s,{label:a.$t("Term.index_13"),path:"key"},{default:f(()=>[_(t,{class:"w-280px!",type:"textarea",value:y(V).key,"onUpdate:value":l[5]||(l[5]=e=>y(V).key=e),placeholder:a.$t("Term.index_15")},null,8,["value","placeholder"])]),_:1},8,["label"]),_(s,{label:a.$t("Term.index_16")},{default:f(()=>[_(t,{class:"w-280px!",value:y(V).keyPassword,"onUpdate:value":l[6]||(l[6]=e=>y(V).keyPassword=e),placeholder:a.$t("Term.index_17")},null,8,["value","placeholder"])]),_:1},8,["label"])])),_(s,{label:"Remarks"},{default:f(()=>[_(t,{class:"w-280px!",value:y(V).remark,"onUpdate:value":l[7]||(l[7]=e=>y(V).remark=e),placeholder:a.$t("Term.index_18")},null,8,["value","placeholder"])]),_:1})]),_:1},8,["model"])])}}});export{U as default}; +import{_ as e}from"./index.vue_vue_type_script_setup_true_lang.js?v=1762424784323";import{f as a,h as l}from"./term.js?v=1762424784323";import{d6 as r,d as t}from"./page_layout.js?v=1762424784323";import"./public.js?v=1762424784323";import{k as s,P as o,r as p,e as u,w as d,R as n,V as i,a2 as c,an as m,W as _,U as y,a3 as f,j as v}from"./vue.js?v=1762424784323";import{dk as k,da as w,dR as x,au as h,df as b,dT as g,dZ as $}from"./naive.js?v=1762424784323";import"./common.js?v=1762424784323";import"./__commonjsHelpers__.js?v=1762424784323";const T={class:"p-20px"},j={key:1},U=s({__name:"form",props:{data:{}},setup(s,{expose:U}){const C=r(),{t:P}=o(),R=s,{isEdit:q,row:I,tips:S,localhost:D,onRefresh:E}=R.data,H=p(null),V=u({ip:"",port:22,account:"root",type:1,password:"",key:"",keyPassword:"",remark:""});d(()=>V.ip,e=>{q||(V.remark=e)});const W={ip:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]},port:{required:!0,type:"number",message:P("Security.Conf.Index_28"),trigger:["blur","input"]},account:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]},password:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]},key:{required:!0,message:P("Security.Conf.Index_28"),trigger:["blur","input"]}};return(async()=>{if(D)return V.ip="127.0.0.1",V.port=22,V.account="root",V.type=1,V.password="",V.key="",V.keyPassword="",void(V.remark="127.0.0.1");if(q&&I){const{message:e}=await l({host:I.host});t(e)&&(V.ip=e.host,V.port=e.port,V.account=e.username,V.type=e.password?1:2,V.password=e.password,V.key=e.pkey,V.keyPassword=e.pkey_passwd,V.remark=e.ps)}})(),U({onConfirm:async({hide:e})=>{var l;await(null==(l=H.value)?void 0:l.validate()),await a({host:V.ip,port:V.port,username:V.account,password:1===V.type?V.password:"",pkey:2===V.type?V.key:"",pkey_passwd:2===V.type?V.keyPassword:"",ps:V.remark}),C.setRefresh(!0),e(),null==E||E()}}),(a,l)=>{const r=k,t=h,s=x,o=b,p=w,u=$,d=g,U=e;return i(),n("div",T,[y(S)?(i(),c(r,{key:0,class:"mb-16px",type:"warning"},{default:f(()=>l[8]||(l[8]=[v(" Unable to authenticate automatically, please fill in the login information of the local server! ",-1)])),_:1,__:[8]})):m("",!0),_(U,{ref_key:"formRef",ref:H,model:y(V),rules:W},{default:f(()=>[_(p,null,{default:f(()=>[_(s,{label:a.$t("Term.index_8"),path:"ip"},{default:f(()=>[_(t,{class:"w-190px!",value:y(V).ip,"onUpdate:value":l[0]||(l[0]=e=>y(V).ip=e),placeholder:a.$t("Term.index_9")},null,8,["value","placeholder"])]),_:1},8,["label"]),_(s,{path:"port"},{default:f(()=>[_(o,{"show-button":!1,class:"w-80px!",value:y(V).port,"onUpdate:value":l[1]||(l[1]=e=>y(V).port=e),placeholder:a.$t("Docker.Container.create.index_7")},null,8,["value","placeholder"])]),_:1})]),_:1}),_(s,{label:a.$t("Term.index_10"),path:"account"},{default:f(()=>[_(t,{class:"w-280px!",value:y(V).account,"onUpdate:value":l[2]||(l[2]=e=>y(V).account=e),placeholder:a.$t("Term.index_11")},null,8,["value","placeholder"])]),_:1},8,["label"]),_(s,{label:a.$t("Term.index_12")},{default:f(()=>[_(d,{value:y(V).type,"onUpdate:value":l[3]||(l[3]=e=>y(V).type=e)},{default:f(()=>[_(u,{label:a.$t("Database.index_14"),value:1},null,8,["label"]),_(u,{label:a.$t("Term.index_13"),value:2},null,8,["label"])]),_:1},8,["value"])]),_:1},8,["label"]),1===y(V).type?(i(),c(s,{key:0,label:a.$t("Database.index_14"),path:"password"},{default:f(()=>[_(t,{class:"w-280px!",value:y(V).password,"onUpdate:value":l[4]||(l[4]=e=>y(V).password=e),placeholder:a.$t("Term.index_14")},null,8,["value","placeholder"])]),_:1},8,["label"])):(i(),n("div",j,[_(s,{label:a.$t("Term.index_13"),path:"key"},{default:f(()=>[_(t,{class:"w-280px!",type:"textarea",value:y(V).key,"onUpdate:value":l[5]||(l[5]=e=>y(V).key=e),placeholder:a.$t("Term.index_15")},null,8,["value","placeholder"])]),_:1},8,["label"]),_(s,{label:a.$t("Term.index_16")},{default:f(()=>[_(t,{class:"w-280px!",value:y(V).keyPassword,"onUpdate:value":l[6]||(l[6]=e=>y(V).keyPassword=e),placeholder:a.$t("Term.index_17")},null,8,["value","placeholder"])]),_:1},8,["label"])])),_(s,{label:"Remarks"},{default:f(()=>[_(t,{class:"w-280px!",value:y(V).remark,"onUpdate:value":l[7]||(l[7]=e=>y(V).remark=e),placeholder:a.$t("Term.index_18")},null,8,["value","placeholder"])]),_:1})]),_:1},8,["model"])])}}});export{U as default}; diff --git a/BTPanel/static/vite/js/ftp-legacy.js b/BTPanel/static/vite/js/ftp-legacy.js index a17793e5..03e61525 100644 --- a/BTPanel/static/vite/js/ftp-legacy.js +++ b/BTPanel/static/vite/js/ftp-legacy.js @@ -1 +1 @@ -System.register(["./page_layout-legacy.js?v=1760428868419"],function(s,t){"use strict";var e,o;return{setters:[s=>{e=s.t,o=s.i}],execute:function(){const{t:t}=o.global;s("g",s=>e.post("/data?action=getData",{...s,table:"ftps"})),s("i",s=>e.post("/ftp?action=AddUser",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("h",s=>e.post("/ftp?action=setPort",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("s",s=>e.post("/ftp?action=SetStatus",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("a",s=>e.post("/data?action=setPs",{...s,table:"ftps"},{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("t",s=>e.post("/ftp?action=SetUserPassword",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("r",s=>e.post("/ftp?action=set_user_home",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("d",(s,o=!0)=>e.post("/ftp?action=DeleteUser",s,{requestOptions:{loading:o?t("Ftp.Api.Index_1"):"",successMessage:o}})),s("b",()=>e.post("/logs/ftp/set_ftp_log",{exec_name:"getlog"},{requestOptions:{loading:t("Ftp.Api.Index_1"),errorMessage:{close:!0}}})),s("c",()=>e.post("/logs/ftp/set_ftp_log",{exec_name:"start"},{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("f",s=>e.post("/logs/ftp/get_login_log",s)),s("e",s=>e.post("/logs/ftp/get_action_log",s)),s("l",()=>e.post("/logs/ftp/ftp_users")),s("k",()=>e.post("/logs/ftp/get_analysis_config")),s("j",s=>e.post("/logs/ftp/set_analysis_config",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("F",s=>e.post("/logs/ftp/log_analysis",s,{requestOptions:{loading:t("Ftp.Api.Index_1")}})),s("m",s=>e.post("/logs/ftp/set_cron_task",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("o",()=>e.post("/logs/ftp/get_white_list")),s("n",s=>e.post("/logs/ftp/set_white_list",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("q",s=>e.post("/ftp?action=SetStatus",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("p",s=>e.post("/ftp?action=DeleteUser",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}}))}}}); +System.register(["./page_layout-legacy.js?v=1762424784323"],function(s,t){"use strict";var e,o;return{setters:[s=>{e=s.t,o=s.i}],execute:function(){const{t:t}=o.global;s("g",s=>e.post("/data?action=getData",{...s,table:"ftps"})),s("i",s=>e.post("/ftp?action=AddUser",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("h",s=>e.post("/ftp?action=setPort",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("s",s=>e.post("/ftp?action=SetStatus",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("a",s=>e.post("/data?action=setPs",{...s,table:"ftps"},{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("t",s=>e.post("/ftp?action=SetUserPassword",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("r",s=>e.post("/ftp?action=set_user_home",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("d",(s,o=!0)=>e.post("/ftp?action=DeleteUser",s,{requestOptions:{loading:o?t("Ftp.Api.Index_1"):"",successMessage:o}})),s("b",()=>e.post("/logs/ftp/set_ftp_log",{exec_name:"getlog"},{requestOptions:{loading:t("Ftp.Api.Index_1"),errorMessage:{close:!0}}})),s("c",()=>e.post("/logs/ftp/set_ftp_log",{exec_name:"start"},{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("f",s=>e.post("/logs/ftp/get_login_log",s)),s("e",s=>e.post("/logs/ftp/get_action_log",s)),s("l",()=>e.post("/logs/ftp/ftp_users")),s("k",()=>e.post("/logs/ftp/get_analysis_config")),s("j",s=>e.post("/logs/ftp/set_analysis_config",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("F",s=>e.post("/logs/ftp/log_analysis",s,{requestOptions:{loading:t("Ftp.Api.Index_1")}})),s("m",s=>e.post("/logs/ftp/set_cron_task",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("o",()=>e.post("/logs/ftp/get_white_list")),s("n",s=>e.post("/logs/ftp/set_white_list",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("q",s=>e.post("/ftp?action=SetStatus",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}})),s("p",s=>e.post("/ftp?action=DeleteUser",s,{requestOptions:{loading:t("Ftp.Api.Index_1"),successMessage:!0}}))}}}); diff --git a/BTPanel/static/vite/js/ftp.js b/BTPanel/static/vite/js/ftp.js index c0e8be56..6e7111fd 100644 --- a/BTPanel/static/vite/js/ftp.js +++ b/BTPanel/static/vite/js/ftp.js @@ -1 +1 @@ -import{t as s,i as t}from"./page_layout.js?v=1760428868419";const{t:e}=t.global,o=t=>s.post("/data?action=getData",{...t,table:"ftps"}),p=t=>s.post("/ftp?action=AddUser",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),a=t=>s.post("/ftp?action=setPort",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),i=t=>s.post("/ftp?action=SetStatus",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),n=t=>s.post("/data?action=setPs",{...t,table:"ftps"},{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),g=t=>s.post("/ftp?action=SetUserPassword",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),l=t=>s.post("/ftp?action=set_user_home",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),c=(t,o=!0)=>s.post("/ftp?action=DeleteUser",t,{requestOptions:{loading:o?e("Ftp.Api.Index_1"):"",successMessage:o}}),_=()=>s.post("/logs/ftp/set_ftp_log",{exec_name:"getlog"},{requestOptions:{loading:e("Ftp.Api.Index_1"),errorMessage:{close:!0}}}),d=()=>s.post("/logs/ftp/set_ftp_log",{exec_name:"start"},{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),u=t=>s.post("/logs/ftp/get_login_log",t),r=t=>s.post("/logs/ftp/get_action_log",t),f=()=>s.post("/logs/ftp/ftp_users"),x=()=>s.post("/logs/ftp/get_analysis_config"),q=t=>s.post("/logs/ftp/set_analysis_config",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),A=t=>s.post("/logs/ftp/log_analysis",t,{requestOptions:{loading:e("Ftp.Api.Index_1")}}),F=t=>s.post("/logs/ftp/set_cron_task",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),I=()=>s.post("/logs/ftp/get_white_list"),O=t=>s.post("/logs/ftp/set_white_list",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),M=t=>s.post("/ftp?action=SetStatus",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),m=t=>s.post("/ftp?action=DeleteUser",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}});export{A as F,n as a,_ as b,d as c,c as d,r as e,u as f,o as g,a as h,p as i,q as j,x as k,f as l,F as m,O as n,I as o,m as p,M as q,l as r,i as s,g as t}; +import{t as s,i as t}from"./page_layout.js?v=1762424784323";const{t:e}=t.global,o=t=>s.post("/data?action=getData",{...t,table:"ftps"}),p=t=>s.post("/ftp?action=AddUser",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),a=t=>s.post("/ftp?action=setPort",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),i=t=>s.post("/ftp?action=SetStatus",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),n=t=>s.post("/data?action=setPs",{...t,table:"ftps"},{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),g=t=>s.post("/ftp?action=SetUserPassword",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),l=t=>s.post("/ftp?action=set_user_home",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),c=(t,o=!0)=>s.post("/ftp?action=DeleteUser",t,{requestOptions:{loading:o?e("Ftp.Api.Index_1"):"",successMessage:o}}),_=()=>s.post("/logs/ftp/set_ftp_log",{exec_name:"getlog"},{requestOptions:{loading:e("Ftp.Api.Index_1"),errorMessage:{close:!0}}}),d=()=>s.post("/logs/ftp/set_ftp_log",{exec_name:"start"},{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),u=t=>s.post("/logs/ftp/get_login_log",t),r=t=>s.post("/logs/ftp/get_action_log",t),f=()=>s.post("/logs/ftp/ftp_users"),x=()=>s.post("/logs/ftp/get_analysis_config"),q=t=>s.post("/logs/ftp/set_analysis_config",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),A=t=>s.post("/logs/ftp/log_analysis",t,{requestOptions:{loading:e("Ftp.Api.Index_1")}}),F=t=>s.post("/logs/ftp/set_cron_task",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),I=()=>s.post("/logs/ftp/get_white_list"),O=t=>s.post("/logs/ftp/set_white_list",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),M=t=>s.post("/ftp?action=SetStatus",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}}),m=t=>s.post("/ftp?action=DeleteUser",t,{requestOptions:{loading:e("Ftp.Api.Index_1"),successMessage:!0}});export{A as F,n as a,_ as b,d as c,c as d,r as e,u as f,o as g,a as h,p as i,q as j,x as k,f as l,F as m,O as n,I as o,m as p,M as q,l as r,i as s,g as t}; diff --git a/BTPanel/static/vite/js/git-ps-legacy.js b/BTPanel/static/vite/js/git-ps-legacy.js new file mode 100644 index 00000000..fb5294d8 --- /dev/null +++ b/BTPanel/static/vite/js/git-ps-legacy.js @@ -0,0 +1 @@ +System.register([],function(t,e){"use strict";return{execute:function(){t("g","/static/vite/images/git-ps.png")}}}); diff --git a/BTPanel/static/vite/js/git-ps.js b/BTPanel/static/vite/js/git-ps.js new file mode 100644 index 00000000..9b16c6ad --- /dev/null +++ b/BTPanel/static/vite/js/git-ps.js @@ -0,0 +1 @@ +const t="/static/vite/images/git-ps.png";export{t as g}; diff --git a/BTPanel/static/vite/js/hooks-legacy.js b/BTPanel/static/vite/js/hooks-legacy.js index ae338f16..afb13824 100644 --- a/BTPanel/static/vite/js/hooks-legacy.js +++ b/BTPanel/static/vite/js/hooks-legacy.js @@ -1 +1 @@ -System.register(["./page_layout-legacy.js?v=1760428868419","./public-legacy.js?v=1760428868419"],function(t,e){"use strict";var s,o;return{setters:[t=>{s=t.bj,o=t.i},null],execute:function(){t("g",function(t){const o=s();let n="--";switch(t.db_type){case 0:n=e("Database.tools.index_67");break;case 1:n=`${e("Database.tools.index_68")} (${t.conn_config?.db_host||""}:${t.conn_config?.db_port||""})`;break;case 2:for(let s=0;s{s=t.bj,o=t.i},null],execute:function(){t("g",function(t){const o=s();let n="--";switch(t.db_type){case 0:n=e("Database.tools.index_67");break;case 1:n=`${e("Database.tools.index_68")} (${t.conn_config?.db_host||""}:${t.conn_config?.db_port||""})`;break;case 2:for(let s=0;s{e=A.a,r=A.c,n=A.g},A=>{i=A.a}],execute:function(){function o(A,t){for(var e=0;er[t]})}}return Object.freeze(Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}))}function s(t){return A("_",s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(A){return typeof A}:function(A){return A&&"function"==typeof Symbol&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A}),s(t)}A("_",s);var a={exports:{}},c=Uint8Array,u=Uint16Array,l=Int32Array,h=new c([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),f=new c([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),d=new c([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),p=function(A,t){for(var e=new u(31),r=0;r<31;++r)e[r]=t+=1<>1|(21845&C)<<1;Q=(61680&(Q=(52428&Q)>>2|(13107&Q)<<2))>>4|(3855&Q)<<4,b[C]=((65280&Q)>>8|(255&Q)<<8)>>1}var F=function(A,t,e){for(var r=A.length,n=0,i=new u(t);n>a]=c}else for(o=new u(r),n=0;n>15-A[n]);return o},U=new c(288);for(C=0;C<144;++C)U[C]=8;for(C=144;C<256;++C)U[C]=9;for(C=256;C<280;++C)U[C]=7;for(C=280;C<288;++C)U[C]=8;var L=new c(32);for(C=0;C<32;++C)L[C]=5;var x=F(U,9,0),I=F(U,9,1),E=F(L,5,0),S=F(L,5,1),j=function(A){for(var t=A[0],e=1;et&&(t=A[e]);return t},H=function(A,t,e){var r=t/8|0;return(A[r]|A[r+1]<<8)>>(7&t)&e},_=function(A,t){var e=t/8|0;return(A[e]|A[e+1]<<8|A[e+2]<<16)>>(7&t)},N=function(A){return(A+7)/8|0},P=function(A,t,e){return(null==e||e>A.length)&&(e=A.length),new c(A.subarray(t,e))},k=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],D=function(A,t,e){var r=new Error(t||k[A]);if(r.code=A,Error.captureStackTrace&&Error.captureStackTrace(r,D),!e)throw r;return r},O=function(A,t,e){e<<=7&t;var r=t/8|0;A[r]|=e,A[r+1]|=e>>8},M=function(A,t,e){e<<=7&t;var r=t/8|0;A[r]|=e,A[r+1]|=e>>8,A[r+2]|=e>>16},K=function(A,t){for(var e=[],r=0;rd&&(d=i[r].s);var p=new u(d+1),g=T(e[h-1],p,0);if(g>t){r=0;var B=0,w=g-t,m=1<t))break;B+=m-(1<>=w;B>0;){var v=i[r].s;p[v]=0&&B;--r){var b=i[r].s;p[b]==t&&(--p[b],++B)}g=t}return{t:new c(p),l:g}},T=function(A,t,e){return-1==A.s?Math.max(T(A.l,t,e+1),T(A.r,t,e+1)):t[A.s]=e},R=function(A){for(var t=A.length;t&&!A[--t];);for(var e=new u(++t),r=0,n=A[0],i=1,o=function(A){e[r++]=A},s=1;s<=t;++s)if(A[s]==n&&s!=t)++i;else{if(!n&&i>2){for(;i>138;i-=138)o(32754);i>2&&(o(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(o(n),--i;i>6;i-=6)o(8304);i>2&&(o(i-3<<5|8208),i=0)}for(;i--;)o(n);i=1,n=A[s]}return{c:e.subarray(0,r),n:t}},G=function(A,t){for(var e=0,r=0;r>8,A[n+2]=255^A[n],A[n+3]=255^A[n+1];for(var i=0;i4&&!N[d[k-1]];--k);var D,T,q,W,J=c+5<<3,X=G(n,U)+G(i,L)+o,z=G(n,g)+G(i,m)+o+14+3*k+G(j,N)+2*j[16]+3*j[17]+7*j[18];if(a>=0&&J<=X&&J<=z)return V(t,l,A.subarray(a,a+c));if(O(t,l,1+(z15&&(O(t,l,AA[H]>>5&127),l+=AA[H]>>12)}}}else D=x,T=U,q=E,W=L;for(H=0;H255){M(t,l,D[257+(tA=eA>>18&31)]),l+=T[tA+257],tA>7&&(O(t,l,eA>>23&31),l+=h[tA]);var rA=31&eA;M(t,l,q[rA]),l+=W[rA],rA>3&&(M(t,l,eA>>5&8191),l+=f[rA])}else M(t,l,D[eA]),l+=T[eA]}return M(t,l,D[256]),l+T[256]},W=new l([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),J=new c(0),X=function(){var A=1,t=0;return{p:function(e){for(var r=A,n=t,i=0|e.length,o=0;o!=i;){for(var s=Math.min(o+2655,i);o>16),n=(65535&n)+15*(n>>16)}A=r,t=n},d:function(){return(255&(A%=65521))<<24|(65280&A)<<8|(255&(t%=65521))<<8|t>>8}}},z=function(A,t,e,r,n){if(!n&&(n={l:1},t.dictionary)){var i=t.dictionary.subarray(-32768),o=new c(i.length+A.length);o.set(i),o.set(A,i.length),A=o,n.w=i.length}return function(A,t,e,r,n,i){var o=i.z||A.length,s=new c(r+o+5*(1+Math.ceil(o/7e3))+n),a=s.subarray(r,s.length-n),d=i.l,p=7&(i.r||0);if(t){p&&(a[0]=i.r>>3);for(var g=W[t-1],B=g>>13,m=8191&g,y=(1<7e3||H>24576)&&(K>423||!d)){p=q(A,a,0,L,x,I,S,H,k,j-k,p),H=E=S=0,k=j;for(var T=0;T<286;++T)x[T]=0;for(T=0;T<30;++T)I[T]=0}var R=2,G=0,J=m,X=O-M&32767;if(K>2&&D==U(j-X))for(var z=Math.min(B,K)-1,Y=Math.min(32767,j),Z=Math.min(258,K);X<=Y&&--J&&O!=M;){if(A[j+R]==A[j+R-X]){for(var $=0;$R){if(R=$,G=X,$>z)break;var AA=Math.min(X,$-2),tA=0;for(T=0;TtA&&(tA=rA,M=eA)}}}X+=(O=M)-(M=b[O])&32767}if(G){L[H++]=268435456|w[R]<<18|v[G];var nA=31&w[R],iA=31&v[G];S+=h[nA]+f[iA],++x[257+nA],++I[iA],_=j+R,++E}else L[H++]=A[j],++x[A[j]]}}for(j=Math.max(j,_);j=o&&(a[p/8|0]=d,oA=o),p=V(a,p+1,A.subarray(j,oA))}i.i=o}return P(s,0,r+N(p)+n)}(A,null==t.level?6:t.level,null==t.mem?n.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(A.length)))):20:12+t.mem,e,r,n)},Y=function(A,t,e){for(;e;++t)A[t]=e,e>>>=8};function Z(A,t){t||(t={});var e=X();e.p(A);var r=z(A,t,t.dictionary?6:2,4);return function(A,t){var e=t.level,r=0==e?0:e<6?1:9==e?3:2;if(A[0]=120,A[1]=r<<6|(t.dictionary&&32),A[1]|=31-(A[0]<<8|A[1])%31,t.dictionary){var n=X();n.p(t.dictionary),Y(A,2,n.d())}}(r,t),Y(r,r.length-4,e.d()),r}function $(A,t){return function(A,t,e,r){var n=A.length;if(!n||t.f&&!t.l)return e||new c(0);var i=!e,o=i||2!=t.i,s=t.i;i&&(e=new c(3*n));var a=function(A){var t=e.length;if(A>t){var r=new c(Math.max(2*t,A));r.set(e),e=r}},u=t.f||0,l=t.p||0,p=t.b||0,g=t.l,w=t.d,m=t.m,v=t.n,b=8*n;do{if(!g){u=H(A,l,1);var C=H(A,l+1,3);if(l+=3,!C){var Q=A[(G=N(l)+4)-4]|A[G-3]<<8,U=G+Q;if(U>n){s&&D(0);break}o&&a(p+Q),e.set(A.subarray(G,U),p),t.b=p+=Q,t.p=l=8*U,t.f=u;continue}if(1==C)g=I,w=S,m=9,v=5;else if(2==C){var L=H(A,l,31)+257,x=H(A,l+10,15)+4,E=L+H(A,l+5,31)+1;l+=14;for(var k=new c(E),O=new c(19),M=0;M>4)<16)k[M++]=G;else{var q=0,W=0;for(16==G?(W=3+H(A,l,3),l+=2,q=k[M-1]):17==G?(W=3+H(A,l,7),l+=3):18==G&&(W=11+H(A,l,127),l+=7);W--;)k[M++]=q}}var J=k.subarray(0,L),X=k.subarray(L);m=j(J),v=j(X),g=F(J,m,1),w=F(X,v,1)}else D(1);if(l>b){s&&D(0);break}}o&&a(p+131072);for(var z=(1<>4;if((l+=15&q)>b){s&&D(0);break}if(q||D(2),$<256)e[p++]=$;else{if(256==$){Z=l,g=null;break}var AA=$-254;if($>264){var tA=h[M=$-257];AA=H(A,l,(1<>4;if(eA||D(3),l+=15&eA,X=y[rA],rA>3&&(tA=f[rA],X+=_(A,l)&(1<b){s&&D(0);break}o&&a(p+131072);var nA=p+AA;if(p>4>7||(A[0]<<8|A[1])%31)&&D(6,"invalid zlib data"),1==(A[1]>>5&1)&&D(6,"invalid zlib data: "+(32&A[1]?"need":"unexpected")+" dictionary"),2+(A[1]>>3&4)}(A),-4),{i:2},t,t)}var AA="undefined"!=typeof TextDecoder&&new TextDecoder;try{AA.decode(J,{stream:!0})}catch(Ct){}var tA=function(){return"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this}();function eA(){tA.console&&"function"==typeof tA.console.log&&tA.console.log.apply(tA.console,arguments)}var rA={log:eA,warn:function(A){tA.console&&("function"==typeof tA.console.warn?tA.console.warn.apply(tA.console,arguments):eA.call(null,arguments))},error:function(A){tA.console&&("function"==typeof tA.console.error?tA.console.error.apply(tA.console,arguments):eA(A))}};function nA(A,t,e){var r=new XMLHttpRequest;r.open("GET",A),r.responseType="blob",r.onload=function(){cA(r.response,t,e)},r.onerror=function(){rA.error("could not download file")},r.send()}function iA(A){var t=new XMLHttpRequest;t.open("HEAD",A,!1);try{t.send()}catch(A){}return t.status>=200&&t.status<=299}function oA(A){try{A.dispatchEvent(new MouseEvent("click"))}catch(e){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),A.dispatchEvent(t)}}var sA,aA,cA=tA.saveAs||("object"!==("undefined"==typeof window?"undefined":s(window))||window!==tA?function(){}:"undefined"!=typeof HTMLAnchorElement&&"download"in HTMLAnchorElement.prototype?function(A,t,e){var r=tA.URL||tA.webkitURL,n=document.createElement("a");t=t||A.name||"download",n.download=t,n.rel="noopener","string"==typeof A?(n.href=A,n.origin!==location.origin?iA(n.href)?nA(A,t,e):oA(n,n.target="_blank"):oA(n)):(n.href=r.createObjectURL(A),setTimeout(function(){r.revokeObjectURL(n.href)},4e4),setTimeout(function(){oA(n)},0))}:"msSaveOrOpenBlob"in navigator?function(A,t,e){if(t=t||A.name||"download","string"==typeof A)if(iA(A))nA(A,t,e);else{var r=document.createElement("a");r.href=A,r.target="_blank",setTimeout(function(){oA(r)})}else navigator.msSaveOrOpenBlob(function(A,t){return void 0===t?t={autoBom:!1}:"object"!==s(t)&&(rA.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(A.type)?new Blob([String.fromCharCode(65279),A],{type:A.type}):A}(A,e),t)}:function(A,t,e,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),"string"==typeof A)return nA(A,t,e);var n="application/octet-stream"===A.type,i=/constructor/i.test(tA.HTMLElement)||tA.safari,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||n&&i)&&"object"===("undefined"==typeof FileReader?"undefined":s(FileReader))){var a=new FileReader;a.onloadend=function(){var A=a.result;A=o?A:A.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=A:location=A,r=null},a.readAsDataURL(A)}else{var c=tA.URL||tA.webkitURL,u=c.createObjectURL(A);r?r.location=u:location.href=u,r=null,setTimeout(function(){c.revokeObjectURL(u)},4e4)}}); +System.register(["./__commonjsHelpers__-legacy.js?v=1762424784323","./page_layout-legacy.js?v=1762424784323"],function(A,t){"use strict";var e,r,n,i;return{setters:[A=>{e=A.a,r=A.c,n=A.g},A=>{i=A.a}],execute:function(){function o(A,t){for(var e=0;er[t]})}}return Object.freeze(Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}))}function s(t){return A("_",s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(A){return typeof A}:function(A){return A&&"function"==typeof Symbol&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A}),s(t)}A("_",s);var a={exports:{}},c=Uint8Array,u=Uint16Array,l=Int32Array,h=new c([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),f=new c([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),d=new c([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),p=function(A,t){for(var e=new u(31),r=0;r<31;++r)e[r]=t+=1<>1|(21845&C)<<1;Q=(61680&(Q=(52428&Q)>>2|(13107&Q)<<2))>>4|(3855&Q)<<4,b[C]=((65280&Q)>>8|(255&Q)<<8)>>1}var F=function(A,t,e){for(var r=A.length,n=0,i=new u(t);n>a]=c}else for(o=new u(r),n=0;n>15-A[n]);return o},U=new c(288);for(C=0;C<144;++C)U[C]=8;for(C=144;C<256;++C)U[C]=9;for(C=256;C<280;++C)U[C]=7;for(C=280;C<288;++C)U[C]=8;var L=new c(32);for(C=0;C<32;++C)L[C]=5;var x=F(U,9,0),I=F(U,9,1),E=F(L,5,0),S=F(L,5,1),j=function(A){for(var t=A[0],e=1;et&&(t=A[e]);return t},H=function(A,t,e){var r=t/8|0;return(A[r]|A[r+1]<<8)>>(7&t)&e},_=function(A,t){var e=t/8|0;return(A[e]|A[e+1]<<8|A[e+2]<<16)>>(7&t)},N=function(A){return(A+7)/8|0},P=function(A,t,e){return(null==e||e>A.length)&&(e=A.length),new c(A.subarray(t,e))},k=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],D=function(A,t,e){var r=new Error(t||k[A]);if(r.code=A,Error.captureStackTrace&&Error.captureStackTrace(r,D),!e)throw r;return r},O=function(A,t,e){e<<=7&t;var r=t/8|0;A[r]|=e,A[r+1]|=e>>8},M=function(A,t,e){e<<=7&t;var r=t/8|0;A[r]|=e,A[r+1]|=e>>8,A[r+2]|=e>>16},K=function(A,t){for(var e=[],r=0;rd&&(d=i[r].s);var p=new u(d+1),g=T(e[h-1],p,0);if(g>t){r=0;var B=0,w=g-t,m=1<t))break;B+=m-(1<>=w;B>0;){var v=i[r].s;p[v]=0&&B;--r){var b=i[r].s;p[b]==t&&(--p[b],++B)}g=t}return{t:new c(p),l:g}},T=function(A,t,e){return-1==A.s?Math.max(T(A.l,t,e+1),T(A.r,t,e+1)):t[A.s]=e},R=function(A){for(var t=A.length;t&&!A[--t];);for(var e=new u(++t),r=0,n=A[0],i=1,o=function(A){e[r++]=A},s=1;s<=t;++s)if(A[s]==n&&s!=t)++i;else{if(!n&&i>2){for(;i>138;i-=138)o(32754);i>2&&(o(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(o(n),--i;i>6;i-=6)o(8304);i>2&&(o(i-3<<5|8208),i=0)}for(;i--;)o(n);i=1,n=A[s]}return{c:e.subarray(0,r),n:t}},G=function(A,t){for(var e=0,r=0;r>8,A[n+2]=255^A[n],A[n+3]=255^A[n+1];for(var i=0;i4&&!N[d[k-1]];--k);var D,T,q,W,J=c+5<<3,X=G(n,U)+G(i,L)+o,z=G(n,g)+G(i,m)+o+14+3*k+G(j,N)+2*j[16]+3*j[17]+7*j[18];if(a>=0&&J<=X&&J<=z)return V(t,l,A.subarray(a,a+c));if(O(t,l,1+(z15&&(O(t,l,AA[H]>>5&127),l+=AA[H]>>12)}}}else D=x,T=U,q=E,W=L;for(H=0;H255){M(t,l,D[257+(tA=eA>>18&31)]),l+=T[tA+257],tA>7&&(O(t,l,eA>>23&31),l+=h[tA]);var rA=31&eA;M(t,l,q[rA]),l+=W[rA],rA>3&&(M(t,l,eA>>5&8191),l+=f[rA])}else M(t,l,D[eA]),l+=T[eA]}return M(t,l,D[256]),l+T[256]},W=new l([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),J=new c(0),X=function(){var A=1,t=0;return{p:function(e){for(var r=A,n=t,i=0|e.length,o=0;o!=i;){for(var s=Math.min(o+2655,i);o>16),n=(65535&n)+15*(n>>16)}A=r,t=n},d:function(){return(255&(A%=65521))<<24|(65280&A)<<8|(255&(t%=65521))<<8|t>>8}}},z=function(A,t,e,r,n){if(!n&&(n={l:1},t.dictionary)){var i=t.dictionary.subarray(-32768),o=new c(i.length+A.length);o.set(i),o.set(A,i.length),A=o,n.w=i.length}return function(A,t,e,r,n,i){var o=i.z||A.length,s=new c(r+o+5*(1+Math.ceil(o/7e3))+n),a=s.subarray(r,s.length-n),d=i.l,p=7&(i.r||0);if(t){p&&(a[0]=i.r>>3);for(var g=W[t-1],B=g>>13,m=8191&g,y=(1<7e3||H>24576)&&(K>423||!d)){p=q(A,a,0,L,x,I,S,H,k,j-k,p),H=E=S=0,k=j;for(var T=0;T<286;++T)x[T]=0;for(T=0;T<30;++T)I[T]=0}var R=2,G=0,J=m,X=O-M&32767;if(K>2&&D==U(j-X))for(var z=Math.min(B,K)-1,Y=Math.min(32767,j),Z=Math.min(258,K);X<=Y&&--J&&O!=M;){if(A[j+R]==A[j+R-X]){for(var $=0;$R){if(R=$,G=X,$>z)break;var AA=Math.min(X,$-2),tA=0;for(T=0;TtA&&(tA=rA,M=eA)}}}X+=(O=M)-(M=b[O])&32767}if(G){L[H++]=268435456|w[R]<<18|v[G];var nA=31&w[R],iA=31&v[G];S+=h[nA]+f[iA],++x[257+nA],++I[iA],_=j+R,++E}else L[H++]=A[j],++x[A[j]]}}for(j=Math.max(j,_);j=o&&(a[p/8|0]=d,oA=o),p=V(a,p+1,A.subarray(j,oA))}i.i=o}return P(s,0,r+N(p)+n)}(A,null==t.level?6:t.level,null==t.mem?n.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(A.length)))):20:12+t.mem,e,r,n)},Y=function(A,t,e){for(;e;++t)A[t]=e,e>>>=8};function Z(A,t){t||(t={});var e=X();e.p(A);var r=z(A,t,t.dictionary?6:2,4);return function(A,t){var e=t.level,r=0==e?0:e<6?1:9==e?3:2;if(A[0]=120,A[1]=r<<6|(t.dictionary&&32),A[1]|=31-(A[0]<<8|A[1])%31,t.dictionary){var n=X();n.p(t.dictionary),Y(A,2,n.d())}}(r,t),Y(r,r.length-4,e.d()),r}function $(A,t){return function(A,t,e,r){var n=A.length;if(!n||t.f&&!t.l)return e||new c(0);var i=!e,o=i||2!=t.i,s=t.i;i&&(e=new c(3*n));var a=function(A){var t=e.length;if(A>t){var r=new c(Math.max(2*t,A));r.set(e),e=r}},u=t.f||0,l=t.p||0,p=t.b||0,g=t.l,w=t.d,m=t.m,v=t.n,b=8*n;do{if(!g){u=H(A,l,1);var C=H(A,l+1,3);if(l+=3,!C){var Q=A[(G=N(l)+4)-4]|A[G-3]<<8,U=G+Q;if(U>n){s&&D(0);break}o&&a(p+Q),e.set(A.subarray(G,U),p),t.b=p+=Q,t.p=l=8*U,t.f=u;continue}if(1==C)g=I,w=S,m=9,v=5;else if(2==C){var L=H(A,l,31)+257,x=H(A,l+10,15)+4,E=L+H(A,l+5,31)+1;l+=14;for(var k=new c(E),O=new c(19),M=0;M>4)<16)k[M++]=G;else{var q=0,W=0;for(16==G?(W=3+H(A,l,3),l+=2,q=k[M-1]):17==G?(W=3+H(A,l,7),l+=3):18==G&&(W=11+H(A,l,127),l+=7);W--;)k[M++]=q}}var J=k.subarray(0,L),X=k.subarray(L);m=j(J),v=j(X),g=F(J,m,1),w=F(X,v,1)}else D(1);if(l>b){s&&D(0);break}}o&&a(p+131072);for(var z=(1<>4;if((l+=15&q)>b){s&&D(0);break}if(q||D(2),$<256)e[p++]=$;else{if(256==$){Z=l,g=null;break}var AA=$-254;if($>264){var tA=h[M=$-257];AA=H(A,l,(1<>4;if(eA||D(3),l+=15&eA,X=y[rA],rA>3&&(tA=f[rA],X+=_(A,l)&(1<b){s&&D(0);break}o&&a(p+131072);var nA=p+AA;if(p>4>7||(A[0]<<8|A[1])%31)&&D(6,"invalid zlib data"),1==(A[1]>>5&1)&&D(6,"invalid zlib data: "+(32&A[1]?"need":"unexpected")+" dictionary"),2+(A[1]>>3&4)}(A),-4),{i:2},t,t)}var AA="undefined"!=typeof TextDecoder&&new TextDecoder;try{AA.decode(J,{stream:!0})}catch(Ct){}var tA=function(){return"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this}();function eA(){tA.console&&"function"==typeof tA.console.log&&tA.console.log.apply(tA.console,arguments)}var rA={log:eA,warn:function(A){tA.console&&("function"==typeof tA.console.warn?tA.console.warn.apply(tA.console,arguments):eA.call(null,arguments))},error:function(A){tA.console&&("function"==typeof tA.console.error?tA.console.error.apply(tA.console,arguments):eA(A))}};function nA(A,t,e){var r=new XMLHttpRequest;r.open("GET",A),r.responseType="blob",r.onload=function(){cA(r.response,t,e)},r.onerror=function(){rA.error("could not download file")},r.send()}function iA(A){var t=new XMLHttpRequest;t.open("HEAD",A,!1);try{t.send()}catch(A){}return t.status>=200&&t.status<=299}function oA(A){try{A.dispatchEvent(new MouseEvent("click"))}catch(e){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),A.dispatchEvent(t)}}var sA,aA,cA=tA.saveAs||("object"!==("undefined"==typeof window?"undefined":s(window))||window!==tA?function(){}:"undefined"!=typeof HTMLAnchorElement&&"download"in HTMLAnchorElement.prototype?function(A,t,e){var r=tA.URL||tA.webkitURL,n=document.createElement("a");t=t||A.name||"download",n.download=t,n.rel="noopener","string"==typeof A?(n.href=A,n.origin!==location.origin?iA(n.href)?nA(A,t,e):oA(n,n.target="_blank"):oA(n)):(n.href=r.createObjectURL(A),setTimeout(function(){r.revokeObjectURL(n.href)},4e4),setTimeout(function(){oA(n)},0))}:"msSaveOrOpenBlob"in navigator?function(A,t,e){if(t=t||A.name||"download","string"==typeof A)if(iA(A))nA(A,t,e);else{var r=document.createElement("a");r.href=A,r.target="_blank",setTimeout(function(){oA(r)})}else navigator.msSaveOrOpenBlob(function(A,t){return void 0===t?t={autoBom:!1}:"object"!==s(t)&&(rA.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(A.type)?new Blob([String.fromCharCode(65279),A],{type:A.type}):A}(A,e),t)}:function(A,t,e,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),"string"==typeof A)return nA(A,t,e);var n="application/octet-stream"===A.type,i=/constructor/i.test(tA.HTMLElement)||tA.safari,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||n&&i)&&"object"===("undefined"==typeof FileReader?"undefined":s(FileReader))){var a=new FileReader;a.onloadend=function(){var A=a.result;A=o?A:A.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=A:location=A,r=null},a.readAsDataURL(A)}else{var c=tA.URL||tA.webkitURL,u=c.createObjectURL(A);r?r.location=u:location.href=u,r=null,setTimeout(function(){c.revokeObjectURL(u)},4e4)}}); /** * A class to parse color values * @author Stoyan Stefanov @@ -32,7 +32,7 @@ System.register(["./__commonjsHelpers__-legacy.js?v=1760428868419","./page_layou * https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt * https://github.com/foliojs/pdfkit/blob/master/lib/security.js * http://www.fpdf.org/en/script/script37.php - */var UA={print:4,modify:8,copy:16,"annot-forms":32};function LA(A,t,e,r){this.v=1,this.r=2;var n=192;A.forEach(function(A){if(void 0!==UA.perm)throw new Error("Invalid permission: "+A);n+=UA[A]}),this.padding="(¿N^NuŠAd\0NVÿú\b..\0¶Ðh>€/\f©þdSiz";var i=(t+this.padding).substr(0,32),o=(e+this.padding).substr(0,32);this.O=this.processOwnerPassword(i,o),this.P=-(1+(255^n)),this.encryptionKey=bA(i+this.O+this.lsbFirstWord(this.P)+this.hexToBytes(r)).substr(0,5),this.U=FA(this.encryptionKey,this.padding)}function xA(A){if(/[^\u0000-\u00ff]/.test(A))throw new Error("Invalid PDF Name Object: "+A+", Only accept ASCII characters.");for(var t="",e=A.length,r=0;r126?"#"+("0"+n.toString(16)).slice(-2):A[r]}return t}function IA(A){if("object"!==s(A))throw new Error("Invalid Context passed to initialize PubSub (jsPDF-module)");var t={};this.subscribe=function(A,e,r){if(r=r||!1,"string"!=typeof A||"function"!=typeof e||"boolean"!=typeof r)throw new Error("Invalid arguments passed to PubSub.subscribe (jsPDF-module)");t.hasOwnProperty(A)||(t[A]={});var n=Math.random().toString(35);return t[A][n]=[e,!!r],n},this.unsubscribe=function(A){for(var e in t)if(t[e][A])return delete t[e][A],0===Object.keys(t[e]).length&&delete t[e],!0;return!1},this.publish=function(e){if(t.hasOwnProperty(e)){var r=Array.prototype.slice.call(arguments,1),n=[];for(var i in t[e]){var o=t[e][i];try{o[0].apply(A,r)}catch(e){tA.console&&rA.error("jsPDF PubSub Error",e.message,e)}o[1]&&n.push(i)}n.length&&n.forEach(this.unsubscribe)}},this.getTopics=function(){return t}}function EA(A){if(!(this instanceof EA))return new EA(A);var t="opacity,stroke-opacity".split(",");for(var e in A)A.hasOwnProperty(e)&&t.indexOf(e)>=0&&(this[e]=A[e]);this.id="",this.objectNumber=-1}function SA(A,t){this.gState=A,this.matrix=t,this.id="",this.objectNumber=-1}function jA(A,t,e,r,n){if(!(this instanceof jA))return new jA(A,t,e,r,n);this.type="axial"===A?2:3,this.coords=t,this.colors=e,SA.call(this,r,n)}function HA(A,t,e,r,n){if(!(this instanceof HA))return new HA(A,t,e,r,n);this.boundingBox=A,this.xStep=t,this.yStep=e,this.stream="",this.cloneIndex=0,SA.call(this,r,n)}function _A(A){var t,e="string"==typeof arguments[0]?arguments[0]:"p",r=arguments[1],n=arguments[2],i=arguments[3],o=[],a=1,c=16,u="S",l=null;"object"===s(A=A||{})&&(e=A.orientation,r=A.unit||r,n=A.format||n,i=A.compress||A.compressPdf||i,null!==(l=A.encryption||null)&&(l.userPassword=l.userPassword||"",l.ownerPassword=l.ownerPassword||"",l.userPermissions=l.userPermissions||[]),a="number"==typeof A.userUnit?Math.abs(A.userUnit):1,void 0!==A.precision&&(t=A.precision),void 0!==A.floatPrecision&&(c=A.floatPrecision),u=A.defaultPathOperation||"S"),o=A.filters||(!0===i?["FlateEncode"]:o),r=r||"mm",e=(""+(e||"P")).toLowerCase();var h=A.putOnlyUsedFonts||!1,f={},d={internal:{},__private__:{}};d.__private__.PubSub=IA;var p="1.3",g=d.__private__.getPdfVersion=function(){return p};d.__private__.setPdfVersion=function(A){p=A};var B={a0:[2383.94,3370.39],a1:[1683.78,2383.94],a2:[1190.55,1683.78],a3:[841.89,1190.55],a4:[595.28,841.89],a5:[419.53,595.28],a6:[297.64,419.53],a7:[209.76,297.64],a8:[147.4,209.76],a9:[104.88,147.4],a10:[73.7,104.88],b0:[2834.65,4008.19],b1:[2004.09,2834.65],b2:[1417.32,2004.09],b3:[1000.63,1417.32],b4:[708.66,1000.63],b5:[498.9,708.66],b6:[354.33,498.9],b7:[249.45,354.33],b8:[175.75,249.45],b9:[124.72,175.75],b10:[87.87,124.72],c0:[2599.37,3676.54],c1:[1836.85,2599.37],c2:[1298.27,1836.85],c3:[918.43,1298.27],c4:[649.13,918.43],c5:[459.21,649.13],c6:[323.15,459.21],c7:[229.61,323.15],c8:[161.57,229.61],c9:[113.39,161.57],c10:[79.37,113.39],dl:[311.81,623.62],letter:[612,792],"government-letter":[576,756],legal:[612,1008],"junior-legal":[576,360],ledger:[1224,792],tabloid:[792,1224],"credit-card":[153,243]};d.__private__.getPageFormats=function(){return B};var w=d.__private__.getPageFormat=function(A){return B[A]};n=n||"a4";var m="compat",y="advanced",v=m;function b(){this.saveGraphicsState(),Z(new GA(wA,0,0,-wA,0,be()*wA).toString()+" cm"),this.setFontSize(this.getFontSize()/wA),u="n",v=y}function C(){this.restoreGraphicsState(),u="S",v=m}var Q=d.__private__.combineFontStyleAndFontWeight=function(A,t){if("bold"==A&&"normal"==t||"bold"==A&&400==t||"normal"==A&&"italic"==t||"bold"==A&&"italic"==t)throw new Error("Invalid Combination of fontweight and fontstyle");return t&&(A=400==t||"normal"===t?"italic"===A?"italic":"normal":700!=t&&"bold"!==t||"normal"!==A?(700==t?"bold":t)+""+A:"bold"),A};d.advancedAPI=function(A){var t=v===m;return t&&b.call(this),"function"!=typeof A||(A(this),t&&C.call(this)),this},d.compatAPI=function(A){var t=v===y;return t&&C.call(this),"function"!=typeof A||(A(this),t&&b.call(this)),this},d.isAdvancedAPI=function(){return v===y};var F,U=function(A){if(v!==y)throw new Error(A+" is only available in 'advanced' API mode. You need to call advancedAPI() first.")},L=d.roundToPrecision=d.__private__.roundToPrecision=function(A,e){var r=t||e;if(isNaN(A)||isNaN(r))throw new Error("Invalid argument passed to jsPDF.roundToPrecision");return A.toFixed(r).replace(/0+$/,"")};F=d.hpf=d.__private__.hpf="number"==typeof c?function(A){if(isNaN(A))throw new Error("Invalid argument passed to jsPDF.hpf");return L(A,c)}:"smart"===c?function(A){if(isNaN(A))throw new Error("Invalid argument passed to jsPDF.hpf");return L(A,A>-1&&A<1?16:5)}:function(A){if(isNaN(A))throw new Error("Invalid argument passed to jsPDF.hpf");return L(A,16)};var x=d.f2=d.__private__.f2=function(A){if(isNaN(A))throw new Error("Invalid argument passed to jsPDF.f2");return L(A,2)},I=d.__private__.f3=function(A){if(isNaN(A))throw new Error("Invalid argument passed to jsPDF.f3");return L(A,3)},E=d.scale=d.__private__.scale=function(A){if(isNaN(A))throw new Error("Invalid argument passed to jsPDF.scale");return v===m?A*wA:v===y?A:void 0},S=function(A){return E(function(A){return v===m?be()-A:v===y?A:void 0}(A))};d.__private__.setPrecision=d.setPrecision=function(A){"number"==typeof parseInt(A,10)&&(t=parseInt(A,10))};var j,H="00000000000000000000000000000000",_=d.__private__.getFileId=function(){return H},N=d.__private__.setFileId=function(A){return H=void 0!==A&&/^[a-fA-F0-9]{32}$/.test(A)?A.toUpperCase():H.split("").map(function(){return"ABCDEF0123456789".charAt(Math.floor(16*Math.random()))}).join(""),null!==l&&(jt=new LA(l.userPermissions,l.userPassword,l.ownerPassword,H)),H};d.setFileId=function(A){return N(A),this},d.getFileId=function(){return _()};var P=d.__private__.convertDateToPDFDate=function(A){var t=A.getTimezoneOffset(),e=t<0?"+":"-",r=Math.floor(Math.abs(t/60)),n=Math.abs(t%60),i=[e,K(r),"'",K(n),"'"].join("");return["D:",A.getFullYear(),K(A.getMonth()+1),K(A.getDate()),K(A.getHours()),K(A.getMinutes()),K(A.getSeconds()),i].join("")},k=d.__private__.convertPDFDateToDate=function(A){var t=parseInt(A.substr(2,4),10),e=parseInt(A.substr(6,2),10)-1,r=parseInt(A.substr(8,2),10),n=parseInt(A.substr(10,2),10),i=parseInt(A.substr(12,2),10),o=parseInt(A.substr(14,2),10);return new Date(t,e,r,n,i,o,0)},D=d.__private__.setCreationDate=function(A){var t;if(void 0===A&&(A=new Date),A instanceof Date)t=P(A);else{if(!/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\+0[0-9]|\+1[0-4]|-0[0-9]|-1[0-1])'(0[0-9]|[1-5][0-9])'?$/.test(A))throw new Error("Invalid argument passed to jsPDF.setCreationDate");t=A}return j=t},O=d.__private__.getCreationDate=function(A){var t=j;return"jsDate"===A&&(t=k(j)),t};d.setCreationDate=function(A){return D(A),this},d.getCreationDate=function(A){return O(A)};var M,K=d.__private__.padd2=function(A){return("0"+parseInt(A)).slice(-2)},T=d.__private__.padd2Hex=function(A){return("00"+(A=A.toString())).substr(A.length)},R=0,G=[],V=[],q=0,W=[],J=[],X=!1,z=V;d.__private__.setCustomOutputDestination=function(A){X=!0,z=A};var Y=function(A){X||(z=A)};d.__private__.resetCustomOutputDestination=function(){X=!1,z=V};var Z=d.__private__.out=function(A){return A=A.toString(),q+=A.length+1,z.push(A),z},$=d.__private__.write=function(A){return Z(1===arguments.length?A.toString():Array.prototype.join.call(arguments," "))},AA=d.__private__.getArrayBuffer=function(A){for(var t=A.length,e=new ArrayBuffer(t),r=new Uint8Array(e);t--;)r[t]=A.charCodeAt(t);return e},eA=[["Helvetica","helvetica","normal","WinAnsiEncoding"],["Helvetica-Bold","helvetica","bold","WinAnsiEncoding"],["Helvetica-Oblique","helvetica","italic","WinAnsiEncoding"],["Helvetica-BoldOblique","helvetica","bolditalic","WinAnsiEncoding"],["Courier","courier","normal","WinAnsiEncoding"],["Courier-Bold","courier","bold","WinAnsiEncoding"],["Courier-Oblique","courier","italic","WinAnsiEncoding"],["Courier-BoldOblique","courier","bolditalic","WinAnsiEncoding"],["Times-Roman","times","normal","WinAnsiEncoding"],["Times-Bold","times","bold","WinAnsiEncoding"],["Times-Italic","times","italic","WinAnsiEncoding"],["Times-BoldItalic","times","bolditalic","WinAnsiEncoding"],["ZapfDingbats","zapfdingbats","normal",null],["Symbol","symbol","normal",null]];d.__private__.getStandardFonts=function(){return eA};var nA=A.fontSize||16;d.__private__.setFontSize=d.setFontSize=function(A){return nA=v===y?A/wA:A,this};var iA,oA=d.__private__.getFontSize=d.getFontSize=function(){return v===m?nA:nA*wA},sA=A.R2L||!1;d.__private__.setR2L=d.setR2L=function(A){return sA=A,this},d.__private__.getR2L=d.getR2L=function(){return sA};var lA,hA=d.__private__.setZoomMode=function(A){if(/^(?:\d+\.\d*|\d*\.\d+|\d+)%$/.test(A))iA=A;else if(isNaN(A)){if(-1===[void 0,null,"fullwidth","fullheight","fullpage","original"].indexOf(A))throw new Error('zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. "'+A+'" is not recognized.');iA=A}else iA=parseInt(A,10)};d.__private__.getZoomMode=function(){return iA};var fA,dA=d.__private__.setPageMode=function(A){if(-1==[void 0,null,"UseNone","UseOutlines","UseThumbs","FullScreen"].indexOf(A))throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. "'+A+'" is not recognized.');lA=A};d.__private__.getPageMode=function(){return lA};var pA=d.__private__.setLayoutMode=function(A){if(-1==[void 0,null,"continuous","single","twoleft","tworight","two"].indexOf(A))throw new Error('Layout mode must be one of continuous, single, twoleft, tworight. "'+A+'" is not recognized.');fA=A};d.__private__.getLayoutMode=function(){return fA},d.__private__.setDisplayMode=d.setDisplayMode=function(A,t,e){return hA(A),pA(t),dA(e),this};var gA={title:"",subject:"",author:"",keywords:"",creator:""};d.__private__.getDocumentProperty=function(A){if(-1===Object.keys(gA).indexOf(A))throw new Error("Invalid argument passed to jsPDF.getDocumentProperty");return gA[A]},d.__private__.getDocumentProperties=function(){return gA},d.__private__.setDocumentProperties=d.setProperties=d.setDocumentProperties=function(A){for(var t in gA)gA.hasOwnProperty(t)&&A[t]&&(gA[t]=A[t]);return this},d.__private__.setDocumentProperty=function(A,t){if(-1===Object.keys(gA).indexOf(A))throw new Error("Invalid arguments passed to jsPDF.setDocumentProperty");return gA[A]=t};var BA,wA,mA,yA,vA,bA={},CA={},QA=[],FA={},UA={},SA={},NA={},PA=null,kA=0,DA=[],OA=new IA(d),MA=A.hotfixes||[],KA={},TA={},RA=[],GA=function A(t,e,r,n,i,o){if(!(this instanceof A))return new A(t,e,r,n,i,o);isNaN(t)&&(t=1),isNaN(e)&&(e=0),isNaN(r)&&(r=0),isNaN(n)&&(n=1),isNaN(i)&&(i=0),isNaN(o)&&(o=0),this._matrix=[t,e,r,n,i,o]};Object.defineProperty(GA.prototype,"sx",{get:function(){return this._matrix[0]},set:function(A){this._matrix[0]=A}}),Object.defineProperty(GA.prototype,"shy",{get:function(){return this._matrix[1]},set:function(A){this._matrix[1]=A}}),Object.defineProperty(GA.prototype,"shx",{get:function(){return this._matrix[2]},set:function(A){this._matrix[2]=A}}),Object.defineProperty(GA.prototype,"sy",{get:function(){return this._matrix[3]},set:function(A){this._matrix[3]=A}}),Object.defineProperty(GA.prototype,"tx",{get:function(){return this._matrix[4]},set:function(A){this._matrix[4]=A}}),Object.defineProperty(GA.prototype,"ty",{get:function(){return this._matrix[5]},set:function(A){this._matrix[5]=A}}),Object.defineProperty(GA.prototype,"a",{get:function(){return this._matrix[0]},set:function(A){this._matrix[0]=A}}),Object.defineProperty(GA.prototype,"b",{get:function(){return this._matrix[1]},set:function(A){this._matrix[1]=A}}),Object.defineProperty(GA.prototype,"c",{get:function(){return this._matrix[2]},set:function(A){this._matrix[2]=A}}),Object.defineProperty(GA.prototype,"d",{get:function(){return this._matrix[3]},set:function(A){this._matrix[3]=A}}),Object.defineProperty(GA.prototype,"e",{get:function(){return this._matrix[4]},set:function(A){this._matrix[4]=A}}),Object.defineProperty(GA.prototype,"f",{get:function(){return this._matrix[5]},set:function(A){this._matrix[5]=A}}),Object.defineProperty(GA.prototype,"rotation",{get:function(){return Math.atan2(this.shx,this.sx)}}),Object.defineProperty(GA.prototype,"scaleX",{get:function(){return this.decompose().scale.sx}}),Object.defineProperty(GA.prototype,"scaleY",{get:function(){return this.decompose().scale.sy}}),Object.defineProperty(GA.prototype,"isIdentity",{get:function(){return 1===this.sx&&0===this.shy&&0===this.shx&&1===this.sy&&0===this.tx&&0===this.ty}}),GA.prototype.join=function(A){return[this.sx,this.shy,this.shx,this.sy,this.tx,this.ty].map(F).join(A)},GA.prototype.multiply=function(A){var t=A.sx*this.sx+A.shy*this.shx,e=A.sx*this.shy+A.shy*this.sy,r=A.shx*this.sx+A.sy*this.shx,n=A.shx*this.shy+A.sy*this.sy,i=A.tx*this.sx+A.ty*this.shx+this.tx,o=A.tx*this.shy+A.ty*this.sy+this.ty;return new GA(t,e,r,n,i,o)},GA.prototype.decompose=function(){var A=this.sx,t=this.shy,e=this.shx,r=this.sy,n=this.tx,i=this.ty,o=Math.sqrt(A*A+t*t),s=(A/=o)*e+(t/=o)*r;e-=A*s,r-=t*s;var a=Math.sqrt(e*e+r*r);return s/=a,A*(r/=a)>16&255,r=c>>8&255,n=255&c}if(void 0===r||void 0===i&&e===r&&r===n)t="string"==typeof e?e+" "+o[0]:2===A.precision?x(e/255)+" "+o[0]:I(e/255)+" "+o[0];else if(void 0===i||"object"===s(i)){if(i&&!isNaN(i.a)&&0===i.a)return["1.","1.","1.",o[1]].join(" ");t="string"==typeof e?[e,r,n,o[1]].join(" "):2===A.precision?[x(e/255),x(r/255),x(n/255),o[1]].join(" "):[I(e/255),I(r/255),I(n/255),o[1]].join(" ")}else t="string"==typeof e?[e,r,n,i,o[2]].join(" "):2===A.precision?[x(e),x(r),x(n),x(i),o[2]].join(" "):[I(e),I(r),I(n),I(i),o[2]].join(" ");return t},rt=d.__private__.getFilters=function(){return o},nt=d.__private__.putStream=function(A){var t=(A=A||{}).data||"",e=A.filters||rt(),r=A.alreadyAppliedFilters||[],n=A.addLength1||!1,i=t.length,o=A.objectId,s=function(A){return A};if(null!==l&&void 0===o)throw new Error("ObjectId must be passed to putStream for file encryption");null!==l&&(s=jt.encryptor(o,0));var a={};!0===e&&(e=["FlateEncode"]);var c=A.additionalKeyValues||[],u=(a=void 0!==_A.API.processDataByFilters?_A.API.processDataByFilters(t,e):{data:t,reverseChain:[]}).reverseChain+(Array.isArray(r)?r.join(" "):r.toString());if(0!==a.data.length&&(c.push({key:"Length",value:a.data.length}),!0===n&&c.push({key:"Length1",value:i})),0!=u.length)if(u.split("/").length-1==1)c.push({key:"Filter",value:u});else{c.push({key:"Filter",value:"["+u+"]"});for(var h=0;h>"),0!==a.data.length&&(Z("stream"),Z(s(a.data)),Z("endstream"))},it=d.__private__.putPage=function(A){var t=A.number,e=A.data,r=A.objId,n=A.contentsObjId;YA(r,!0),Z("<>"),Z("endobj");var i=e.join("\n");return v===y&&(i+="\nQ"),YA(n,!0),nt({data:i,filters:rt(),objectId:n}),Z("endobj"),r},ot=d.__private__.putPages=function(){var A,t,e=[];for(A=1;A<=kA;A++)DA[A].objId=zA(),DA[A].contentsObjId=zA();for(A=1;A<=kA;A++)e.push(it({number:A,data:J[A],objId:DA[A].objId,contentsObjId:DA[A].contentsObjId,mediaBox:DA[A].mediaBox,cropBox:DA[A].cropBox,bleedBox:DA[A].bleedBox,trimBox:DA[A].trimBox,artBox:DA[A].artBox,userUnit:DA[A].userUnit,rootDictionaryObjId:$A,resourceDictionaryObjId:At}));YA($A,!0),Z("<>"),Z("endobj"),OA.publish("postPutPages")},st=function(A){OA.publish("putFont",{font:A,out:Z,newObject:XA,putStream:nt}),!0!==A.isAlreadyPutted&&(A.objectNumber=XA(),Z("<<"),Z("/Type /Font"),Z("/BaseFont /"+xA(A.postScriptName)),Z("/Subtype /Type1"),"string"==typeof A.encoding&&Z("/Encoding /"+A.encoding),Z("/FirstChar 32"),Z("/LastChar 255"),Z(">>"),Z("endobj"))},at=function(A){A.objectNumber=XA();var t=[];t.push({key:"Type",value:"/XObject"}),t.push({key:"Subtype",value:"/Form"}),t.push({key:"BBox",value:"["+[F(A.x),F(A.y),F(A.x+A.width),F(A.y+A.height)].join(" ")+"]"}),t.push({key:"Matrix",value:"["+A.matrix.toString()+"]"});var e=A.pages[1].join("\n");nt({data:e,additionalKeyValues:t,objectId:A.objectNumber}),Z("endobj")},ct=function(A,t){t||(t=21);var e=XA(),r=function(A,t){var e,r=[],n=1/(t-1);for(e=0;e<1;e+=n)r.push(e);if(r.push(1),0!=A[0].offset){var i={offset:0,color:A[0].color};A.unshift(i)}if(1!=A[A.length-1].offset){var o={offset:1,color:A[A.length-1].color};A.push(o)}for(var s="",a=0,c=0;cA[a+1].offset;)a++;var u=A[a].offset,l=(e-u)/(A[a+1].offset-u),h=A[a].color,f=A[a+1].color;s+=T(Math.round((1-l)*h[0]+l*f[0]).toString(16))+T(Math.round((1-l)*h[1]+l*f[1]).toString(16))+T(Math.round((1-l)*h[2]+l*f[2]).toString(16))}return s.trim()}(A.colors,t),n=[];n.push({key:"FunctionType",value:"0"}),n.push({key:"Domain",value:"[0.0 1.0]"}),n.push({key:"Size",value:"["+t+"]"}),n.push({key:"BitsPerSample",value:"8"}),n.push({key:"Range",value:"[0.0 1.0 0.0 1.0 0.0 1.0]"}),n.push({key:"Decode",value:"[0.0 1.0 0.0 1.0 0.0 1.0]"}),nt({data:r,additionalKeyValues:n,alreadyAppliedFilters:["/ASCIIHexDecode"],objectId:e}),Z("endobj"),A.objectNumber=XA(),Z("<< /ShadingType "+A.type),Z("/ColorSpace /DeviceRGB");var i="/Coords ["+F(parseFloat(A.coords[0]))+" "+F(parseFloat(A.coords[1]))+" ";2===A.type?i+=F(parseFloat(A.coords[2]))+" "+F(parseFloat(A.coords[3])):i+=F(parseFloat(A.coords[2]))+" "+F(parseFloat(A.coords[3]))+" "+F(parseFloat(A.coords[4]))+" "+F(parseFloat(A.coords[5])),Z(i+="]"),A.matrix&&Z("/Matrix ["+A.matrix.toString()+"]"),Z("/Function "+e+" 0 R"),Z("/Extend [true true]"),Z(">>"),Z("endobj")},ut=function(A,t){var e=zA(),r=XA();t.push({resourcesOid:e,objectOid:r}),A.objectNumber=r;var n=[];n.push({key:"Type",value:"/Pattern"}),n.push({key:"PatternType",value:"1"}),n.push({key:"PaintType",value:"1"}),n.push({key:"TilingType",value:"1"}),n.push({key:"BBox",value:"["+A.boundingBox.map(F).join(" ")+"]"}),n.push({key:"XStep",value:F(A.xStep)}),n.push({key:"YStep",value:F(A.yStep)}),n.push({key:"Resources",value:e+" 0 R"}),A.matrix&&n.push({key:"Matrix",value:"["+A.matrix.toString()+"]"}),nt({data:A.stream,additionalKeyValues:n,objectId:A.objectNumber}),Z("endobj")},lt=function(A){for(var t in A.objectNumber=XA(),Z("<<"),A)switch(t){case"opacity":Z("/ca "+x(A[t]));break;case"stroke-opacity":Z("/CA "+x(A[t]))}Z(">>"),Z("endobj")},ht=function(A){YA(A.resourcesOid,!0),Z("<<"),Z("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"),function(){for(var A in Z("/Font <<"),bA)bA.hasOwnProperty(A)&&(!1===h||!0===h&&f.hasOwnProperty(A))&&Z("/"+A+" "+bA[A].objectNumber+" 0 R");Z(">>")}(),function(){if(Object.keys(FA).length>0){for(var A in Z("/Shading <<"),FA)FA.hasOwnProperty(A)&&FA[A]instanceof jA&&FA[A].objectNumber>=0&&Z("/"+A+" "+FA[A].objectNumber+" 0 R");OA.publish("putShadingPatternDict"),Z(">>")}}(),function(A){if(Object.keys(FA).length>0){for(var t in Z("/Pattern <<"),FA)FA.hasOwnProperty(t)&&FA[t]instanceof d.TilingPattern&&FA[t].objectNumber>=0&&FA[t].objectNumber>")}}(A.objectOid),function(){if(Object.keys(SA).length>0){var A;for(A in Z("/ExtGState <<"),SA)SA.hasOwnProperty(A)&&SA[A].objectNumber>=0&&Z("/"+A+" "+SA[A].objectNumber+" 0 R");OA.publish("putGStateDict"),Z(">>")}}(),function(){for(var A in Z("/XObject <<"),KA)KA.hasOwnProperty(A)&&KA[A].objectNumber>=0&&Z("/"+A+" "+KA[A].objectNumber+" 0 R");OA.publish("putXobjectDict"),Z(">>")}(),Z(">>"),Z("endobj")},ft=function(){var A=[];(function(){for(var A in bA)bA.hasOwnProperty(A)&&(!1===h||!0===h&&f.hasOwnProperty(A))&&st(bA[A])})(),function(){var A;for(A in SA)SA.hasOwnProperty(A)&<(SA[A])}(),function(){for(var A in KA)KA.hasOwnProperty(A)&&at(KA[A])}(),function(A){var t;for(t in FA)FA.hasOwnProperty(t)&&(FA[t]instanceof jA?ct(FA[t]):FA[t]instanceof HA&&ut(FA[t],A))}(A),OA.publish("putResources"),A.forEach(ht),ht({resourcesOid:At,objectOid:Number.MAX_SAFE_INTEGER}),OA.publish("postPutResources")},dt=function(A){CA[A.fontName]=CA[A.fontName]||{},CA[A.fontName][A.fontStyle]=A.id},pt=function(A,t,e,r,n){var i={id:"F"+(Object.keys(bA).length+1).toString(10),postScriptName:A,fontName:t,fontStyle:e,encoding:r,isStandardFont:n||!1,metadata:{}};return OA.publish("addFont",{font:i,instance:this}),bA[i.id]=i,dt(i),i.id},gt=d.__private__.pdfEscape=d.pdfEscape=function(A,t){return function(A,t){var e,r,n,i,o,s,a,c,u;if(n=(t=t||{}).sourceEncoding||"Unicode",o=t.outputEncoding,(t.autoencode||o)&&bA[BA].metadata&&bA[BA].metadata[n]&&bA[BA].metadata[n].encoding&&(i=bA[BA].metadata[n].encoding,!o&&bA[BA].encoding&&(o=bA[BA].encoding),!o&&i.codePages&&(o=i.codePages[0]),"string"==typeof o&&(o=i[o]),o)){for(a=!1,s=[],e=0,r=A.length;e>8&&(a=!0);A=s.join("")}for(e=A.length;void 0===a&&0!==e;)A.charCodeAt(e-1)>>8&&(a=!0),e--;if(!a)return A;for(s=t.noBOM?[]:[254,255],e=0,r=A.length;e>8)>>8)throw new Error("Character at position "+e+" of string '"+A+"' exceeds 16bits. Cannot be encoded into UCS-2 BE");s.push(u),s.push(c-(u<<8))}return String.fromCharCode.apply(void 0,s)}(A,t).replace(/\\/g,"\\\\").replace(/\(/g,"\\(").replace(/\)/g,"\\)")},Bt=d.__private__.beginPage=function(A){J[++kA]=[],DA[kA]={objId:0,contentsObjId:0,userUnit:Number(a),artBox:null,bleedBox:null,cropBox:null,trimBox:null,mediaBox:{bottomLeftX:0,bottomLeftY:0,topRightX:Number(A[0]),topRightY:Number(A[1])}},yt(kA),Y(J[M])},wt=function(A,t){var r,i,o;switch(e=t||e,"string"==typeof A&&(r=w(A.toLowerCase()),Array.isArray(r)&&(i=r[0],o=r[1])),Array.isArray(A)&&(i=A[0]*wA,o=A[1]*wA),isNaN(i)&&(i=n[0],o=n[1]),(i>14400||o>14400)&&(rA.warn("A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400"),i=Math.min(14400,i),o=Math.min(14400,o)),n=[i,o],e.substr(0,1)){case"l":o>i&&(n=[o,i]);break;case"p":i>o&&(n=[o,i])}Bt(n),Zt(zt),Z(oe),0!==he&&Z(he+" J"),0!==fe&&Z(fe+" j"),OA.publish("addPage",{pageNumber:kA})},mt=function(A){A>0&&A<=kA&&(J.splice(A,1),DA.splice(A,1),kA--,M>kA&&(M=kA),this.setPage(M))},yt=function(A){A>0&&A<=kA&&(M=A)},vt=d.__private__.getNumberOfPages=d.getNumberOfPages=function(){return J.length-1},bt=function(A,t,e){var r,n=void 0;return e=e||{},A=void 0!==A?A:bA[BA].fontName,t=void 0!==t?t:bA[BA].fontStyle,r=A.toLowerCase(),void 0!==CA[r]&&void 0!==CA[r][t]?n=CA[r][t]:void 0!==CA[A]&&void 0!==CA[A][t]?n=CA[A][t]:!1===e.disableWarning&&rA.warn("Unable to look up font label for font '"+A+"', '"+t+"'. Refer to getFontList() for available fonts."),n||e.noFallback||null==(n=CA.times[t])&&(n=CA.times.normal),n},Ct=d.__private__.putInfo=function(){var A=XA(),t=function(A){return A};for(var e in null!==l&&(t=jt.encryptor(A,0)),Z("<<"),Z("/Producer ("+gt(t("jsPDF "+_A.version))+")"),gA)gA.hasOwnProperty(e)&&gA[e]&&Z("/"+e.substr(0,1).toUpperCase()+e.substr(1)+" ("+gt(t(gA[e]))+")");Z("/CreationDate ("+gt(t(j))+")"),Z(">>"),Z("endobj")},Qt=d.__private__.putCatalog=function(A){var t=(A=A||{}).rootDictionaryObjId||$A;switch(XA(),Z("<<"),Z("/Type /Catalog"),Z("/Pages "+t+" 0 R"),iA||(iA="fullwidth"),iA){case"fullwidth":Z("/OpenAction [3 0 R /FitH null]");break;case"fullheight":Z("/OpenAction [3 0 R /FitV null]");break;case"fullpage":Z("/OpenAction [3 0 R /Fit]");break;case"original":Z("/OpenAction [3 0 R /XYZ null null 1]");break;default:var e=""+iA;"%"===e.substr(e.length-1)&&(iA=parseInt(iA)/100),"number"==typeof iA&&Z("/OpenAction [3 0 R /XYZ null null "+x(iA)+"]")}switch(fA||(fA="continuous"),fA){case"continuous":Z("/PageLayout /OneColumn");break;case"single":Z("/PageLayout /SinglePage");break;case"two":case"twoleft":Z("/PageLayout /TwoColumnLeft");break;case"tworight":Z("/PageLayout /TwoColumnRight")}lA&&Z("/PageMode /"+lA),OA.publish("putCatalog"),Z(">>"),Z("endobj")},Ft=d.__private__.putTrailer=function(){Z("trailer"),Z("<<"),Z("/Size "+(R+1)),Z("/Root "+R+" 0 R"),Z("/Info "+(R-1)+" 0 R"),null!==l&&Z("/Encrypt "+jt.oid+" 0 R"),Z("/ID [ <"+H+"> <"+H+"> ]"),Z(">>")},Ut=d.__private__.putHeader=function(){Z("%PDF-"+p),Z("%ºß¬à")},Lt=d.__private__.putXRef=function(){var A="0000000000";Z("xref"),Z("0 "+(R+1)),Z("0000000000 65535 f ");for(var t=1;t<=R;t++)"function"==typeof G[t]?Z((A+G[t]()).slice(-10)+" 00000 n "):void 0!==G[t]?Z((A+G[t]).slice(-10)+" 00000 n "):Z("0000000000 00000 n ")},xt=d.__private__.buildDocument=function(){R=0,q=0,V=[],G=[],W=[],$A=zA(),At=zA(),Y(V),OA.publish("buildDocument"),Ut(),ot(),function(){OA.publish("putAdditionalObjects");for(var A=0;A"),Z("/O <"+jt.toHexString(jt.O)+">"),Z("/P "+jt.P),Z(">>"),Z("endobj")),Ct(),Qt();var A=q;return Lt(),Ft(),Z("startxref"),Z(""+A),Z("%%EOF"),Y(J[M]),V.join("\n")},It=d.__private__.getBlob=function(A){return new Blob([AA(A)],{type:"application/pdf"})},Et=d.output=d.__private__.output=(JA=function(A,t){switch("string"==typeof(t=t||{})?t={filename:t}:t.filename=t.filename||"generated.pdf",A){case void 0:return xt();case"save":d.save(t.filename);break;case"arraybuffer":return AA(xt());case"blob":return It(xt());case"bloburi":case"bloburl":if(void 0!==tA.URL&&"function"==typeof tA.URL.createObjectURL)return tA.URL&&tA.URL.createObjectURL(It(xt()))||void 0;rA.warn("bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.");break;case"datauristring":case"dataurlstring":var e="",r=xt();try{e=aA(r)}catch(A){e=aA(unescape(encodeURIComponent(r)))}return"data:application/pdf;filename="+t.filename+";base64,"+e;case"pdfobjectnewwindow":if("[object Window]"===Object.prototype.toString.call(tA)){var n="https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js?v=1760428868419",i=' integrity="sha512-4ze/a9/4jqu+tX9dfOqJYSvyYd5M6qum/3HpCLr+/Jqf0whc37VUbkpNGHR7/8pSnCFw47T1fmIpwBV7UySh3g==" crossorigin="anonymous"';t.pdfObjectUrl&&(n=t.pdfObjectUrl,i="");var o=' - - - - - - - - - - + + + + + + + + + + @@ -55,7 +55,7 @@
- - + + diff --git a/class/acme_v2.py b/class/acme_v2.py index 93aa4fc7..12a6d8d1 100755 --- a/class/acme_v2.py +++ b/class/acme_v2.py @@ -272,7 +272,7 @@ class acme_v2: self.get_kid() account = self._config['account'][k] account['email'] = self._config['email'] - self.set_crond() + # self.set_crond() self.set_crond_v2() return account except Exception as ex: @@ -518,8 +518,9 @@ class acme_v2: except: return False else: - import panelSite - auth_to = find['path'] + '/' + panelSite.panelSite().GetRunPath(public.to_dict_obj({"id": site_id})) + from panel_site_v2 import panelSite + run_path = panelSite().GetRunPath(public.to_dict_obj({"id": site_id}))["message"].get("result", "") + auth_to = find['path'] + '/' + run_path auth_to = auth_to.replace("//", "/") if auth_to[-1] == '/': auth_to = auth_to[:-1] @@ -851,8 +852,9 @@ if ( $well_known != "" ) { if auth_to.find('|') == -1: raise Exception('dns_name or account or token is empty') dns_name, account, token = auth_to.split('|') - if not dns_name or not token: # account may be empty, cf limit - raise Exception('dns_name or account or token is empty') + if dns_name != "aaPanelDns": + if not dns_name or not token: # account may be empty, cf limit + raise Exception('dns_name or account or token is empty') try: root, _ = self.extract_zone(domain) provider = DnsDomainProvider.objects.filter( @@ -861,7 +863,7 @@ if ( $well_known != "" ) { if provider: # v2 self._dns_class = provider.dns_obj - self._dns_class.create_dns_record(public.de_punycode(root), dns_value) + self._dns_class.create_dns_record(public.de_punycode(domain), dns_value) else: # 旧调用方式 import panelDnsapi @@ -869,7 +871,7 @@ if ( $well_known != "" ) { cf_limit_api = "/www/server/panel/data/cf_limit_api.pl" limit = True if os.path.exists(cf_limit_api) else False self._dns_class = getattr(panelDnsapi, dns_name)(key, secret, limit) - self._dns_class.create_dns_record(public.de_punycode(root), dns_value) + self._dns_class.create_dns_record(public.de_punycode(domain), dns_value) self._dns_domains.append( {"domain": domain, "dns_value": dns_value} @@ -952,6 +954,9 @@ if ( $well_known != "" ) { s_type="TXT", task_part=one_part, ) + elif auth['type'] == 'http': # 尝试提前验证http + self.check_http(auth=auth) + self.respond_to_challenge(auth) # 检查验证结果 @@ -961,6 +966,21 @@ if ( $well_known != "" ) { ['valid', 'invalid'] ) self._config['orders'][index]['status'] = 'valid' + # auth = self._config['orders'][index]['auths'][i] + # self.logger("|-Verifying domain name: {}".format(auth['domain'])) + # check_res = self.check_auth_status( + # auth['url'], ['valid', 'invalid'] + # ) + # s_json = check_res.json() + # self._config['orders'][index]['auths'][i]['status'] = s_json['status'] + # if s_json['status'] != 'valid': + # error = s_json['error'] + # e_msg = "Verification failed: {} >>>> {}".format(auth['domain'], self.get_error(json.dumps(error))) + # self.logger(e_msg) + # raise Exception(e_msg) + # + # self._config['orders'][index]['status'] = 'valid' + # self.logger("|-Verification successful!") # 验证单个域名 def auth_domain_api(self, get): @@ -1399,9 +1419,8 @@ fullchain.pem Paste into certificate input box try: to_issuer_o = to_cert_init.get('issuer_O', '') cert_issuer_o = cert_init.get('issuer_O', '') - is_let_cert = "Let's Encrypt" in cert_issuer_o - is_same_brand = to_issuer_o == cert_issuer_o - if not is_let_cert and not is_same_brand: + # 仅替换同品牌证书 + if to_issuer_o != cert_issuer_o: continue except: continue @@ -1418,10 +1437,8 @@ fullchain.pem Paste into certificate input box if not is_copy: continue # 替换新的证书文件和基本信息 - public.writeFile( - to_pem_file, public.readFile(pem_file, 'rb'), 'wb') - public.writeFile( - to_key_file, public.readFile(key_file, 'rb'), 'wb') + public.writeFile(to_pem_file, public.readFile(pem_file, 'rb'), 'wb') + public.writeFile(to_key_file, public.readFile(key_file, 'rb'), 'wb') public.writeFile(to_info, json.dumps(cert_init)) self.logger( '|-Detected that the certificate under {} ' @@ -1542,6 +1559,32 @@ fullchain.pem Paste into certificate input box self.logger("|-Local authentication failed!") return True + # 检查http验证 + def check_http(self, auth: dict) -> bool: + self.logger(f"|-Waiting for web server to reload and self-checking URL: {auth['url']}") + n = 0 + check_url = f"http://{auth['domain']}/.well-known/acme-challenge/{auth['token']}" + while n < 5: + self.logger("|-Self-check attempt number: {}".format(n + 1)) + try: + response = requests.get(check_url, timeout=10, verify=False) + if response.status_code == 200 and response.text.strip() == auth['acme_keyauthorization']: + self.logger(f"|-Self-check successful for {check_url}") + return True + else: + time.sleep(3) + self.logger(f"|-Warning: Self-check failed for '{check_url}' " + f"Status: {response.status_code}," + f" Body: '{response.text[:100]}'. Will proceed anyway.") + except Exception as e: + self.logger(f"|-Http01 self-check failed: {e}") + + n += 1 + time.sleep(3) + + self.logger(f"|-Self-check failed after {n} attempts for {check_url}.") + return False + # 创建CSR # noinspection PyUnresolvedReferences def create_csr(self, index): diff --git a/class/apache.py b/class/apache.py index 13141d08..e1600e60 100644 --- a/class/apache.py +++ b/class/apache.py @@ -51,7 +51,8 @@ class apache: self.GetProcessCpuPercent(proc.pid,process_cpu) time.sleep(0.5) - + if not result: + raise Exception("Get Apache Status False, Please Check Apache Status") # 计算启动时间 Uptime = re.search(r"ServerUptimeSeconds:\s+(.*)",result) if not Uptime: diff --git a/class/common.py b/class/common.py index b695d7ab..13f53e40 100755 --- a/class/common.py +++ b/class/common.py @@ -48,7 +48,7 @@ class panelSetup: if ua.find('spider') != -1 or g.ua.find('bot') != -1: return abort(403) - g.version = '7.53.0' + g.version = '7.55.0' g.title = public.GetConfigValue('title') g.uri = request.path g.debug = os.path.exists('data/debug.pl') diff --git a/class/config.py b/class/config.py index 76d2ce32..89936f50 100755 --- a/class/config.py +++ b/class/config.py @@ -722,31 +722,35 @@ class config: def getFpmConfig(self,get): version = get.version file = public.GetConfigValue('setup_path')+"/php/"+version+"/etc/php-fpm.conf" + if not os.path.exists(file): + return public.return_msg_gettext(False, "The PHP-FPM configuration file does not exist.") conf = public.readFile(file) + if not conf: + return public.return_msg_gettext(False, "Failed to read the PHP-FPM configuration file.") data = {} rep = r"\s*pm.max_children\s*=\s*([0-9]+)\s*" - tmp = re.search(rep, conf).groups() - data['max_children'] = tmp[0] + tmp = re.search(rep, conf) + data['max_children'] = tmp.groups()[0] if tmp else '' rep = r"\s*pm.start_servers\s*=\s*([0-9]+)\s*" - tmp = re.search(rep, conf).groups() - data['start_servers'] = tmp[0] + tmp = re.search(rep, conf) + data['start_servers'] = tmp.groups()[0] if tmp else '' rep = r"\s*pm.min_spare_servers\s*=\s*([0-9]+)\s*" - tmp = re.search(rep, conf).groups() - data['min_spare_servers'] = tmp[0] + tmp = re.search(rep, conf) + data['min_spare_servers'] = tmp.groups()[0] if tmp else '' rep = r"\s*pm.max_spare_servers \s*=\s*([0-9]+)\s*" - tmp = re.search(rep, conf).groups() - data['max_spare_servers'] = tmp[0] + tmp = re.search(rep, conf) + data['max_spare_servers'] = tmp.groups()[0] if tmp else '' rep = r"\s*pm\s*=\s*(\w+)\s*" - tmp = re.search(rep, conf).groups() - data['pm'] = tmp[0] + tmp = re.search(rep, conf) + data['pm'] = tmp.groups()[0] if tmp else 'static' rep = r"\s*listen.allowed_clients\s*=\s*([\w\.,/]+)\s*" - tmp = re.search(rep, conf).groups() - data['allowed'] = tmp[0] + tmp = re.search(rep, conf) + data['allowed'] = tmp.groups()[0] if tmp else '' data['unix'] = 'unix' @@ -3012,64 +3016,7 @@ class config: settings = '{}/BTPanel/languages/settings.json'.format(public.get_panel_path()) custom = '{}/BTPanel/static/vite/lang/my-MY'.format(public.get_panel_path()) if not os.path.exists(settings): - data = { - "default": "en", - "languages": [ - { - "name": "cht", - "google": "zh-tw", - "title": "繁體中文", - "cn": "繁體中文" - }, - { - "name": "en", - "google": "en", - "title": "English", - "cn": "英语" - }, - { - "name": "de", - "google": "de", - "title": "Deutsch", - "cn": "德语" - }, - { - "name": "fra", - "google": "fr", - "title": "Français", - "cn": "法语" - }, - { - "name": "spa", - "google": "es", - "title": "Español", - "cn": "西班牙语" - }, - { - "name": "pt", - "google": "pt", - "title": "Português", - "cn": "葡萄牙语" - }, - { - "name": "vie", - "google": "vi", - "title": "Tiếng Việt", - "cn": "越南语" - }, - { - "name": "ind", - "google": "id", - "title": "Bahasa Indonesia", - "cn": "印尼语" - }, { - "name": "ru", - "google": "ru", - "title": "Русский", - "cn": "俄语" - } - ] - } + data = public.default_languages_config() public.writeFile(settings, json.dumps(data)) data = json.loads(public.readFile(settings)) diff --git a/class/database.py b/class/database.py index 466d3485..7bc3f80b 100644 --- a/class/database.py +++ b/class/database.py @@ -302,9 +302,8 @@ class database(datatool.datatools): return public.return_msg_gettext(False, public.lang("SSL is not enabled in the database, please open it in the Mysql manager first")) data_name = get['name'].strip().lower() if not data_name: return public.return_msg_gettext(False, public.lang("The database name cannot be empty")) - if self.CheckRecycleBin(data_name): return public.return_msg_gettext(False, - 'Database [{}] already at the recycle bin, please recover from the recycle bin!', - (data_name,)) + if self.CheckRecycleBin(data_name): + return public.return_msg_gettext(False,'Database [{}] already at the recycle bin, please recover from the recycle bin!', (data_name,)) if len(data_name) > 64: return public.return_msg_gettext(False, public.lang("Database name cannot be more than 16 characters!")) reg = r"^[\w\.-]+$" username = get.db_user.strip() @@ -340,15 +339,18 @@ class database(datatool.datatools): # 添加MYSQL self.sid = get.get('sid/d', 0) mysql_obj = public.get_mysql_obj_by_sid(self.sid) - if not mysql_obj: return public.returnMsg(False, public.lang("Failed to connect to the specified database")) + if not mysql_obj: + return public.returnMsg(False, public.lang("Failed to connect to the specified database")) # 从MySQL验证是否存在 - if self.database_exists_for_mysql(mysql_obj, data_name): return public.return_msg_gettext(False, public.lang("The specified database already exists in MySQL, please change the name!")) + if self.database_exists_for_mysql(mysql_obj, data_name): + return public.return_msg_gettext(False, public.lang("The specified database already exists in MySQL, please change the name!")) result = mysql_obj.execute( "create database `" + data_name + "` DEFAULT CHARACTER SET " + codeing + " COLLATE " + codeStr) isError = self.IsSqlError(result) - if isError is not None: return isError + if isError is not None: + return isError mysql_obj.execute("drop user '" + username + "'@'localhost'") for a in address.split(','): mysql_obj.execute("drop user '" + username + "'@'" + a + "'") @@ -694,7 +696,10 @@ SetLink return public.return_msg_gettext(True, public.lang("Successfully deleted")) else: if os.path.exists(filename): - data = json.loads(public.readFile(filename + '/config.json')) + try: + data = json.loads(public.readFile(os.path.join(filename, "config.json"))) + except: + return public.returnMsg(False, public.lang("Recycle Bin does not exist for this database!")) else: return public.returnMsg(False, public.lang("Recycle Bin does not exist for this database!")) @@ -1680,4 +1685,4 @@ SetLink slist['data'] = sorted(result, key=lambda x: x['score'], reverse=True) slist['db_size'] = self.get_average_num(db_list_size) - return slist \ No newline at end of file + return slist diff --git a/class/files.py b/class/files.py index 68b6cd6f..2f2815d2 100644 --- a/class/files.py +++ b/class/files.py @@ -189,7 +189,6 @@ session.save_handler = files'''.format(path, sess_path, sess_path) # 上传文件 def UploadFile(self, get): - from werkzeug.utils import secure_filename from BTPanel import request if sys.version_info[0] == 2: get.path = get.path.encode('utf-8') @@ -267,9 +266,20 @@ session.save_handler = files'''.format(path, sess_path, sess_path) args.f_name = args.f_name.encode('utf-8') args.f_path = args.f_path.encode('utf-8') try: - if self.get_real_len(args.f_name) > 256: return public.return_msg_gettext(False, public.lang("The file name contains more than 256 bytes")) + if self.get_real_len(args.f_name) > 256: + return public.return_msg_gettext(False, public.lang("The file name contains more than 256 bytes")) except: pass + try: + temp_filename = args.f_name + '.' + str(int(args.f_size)) + '.upload.tmp' + if len(temp_filename.encode('utf-8')) > 255: + return public.return_message(-1, 0, public.lang("The file name is too long (over 255 bytes).")) + save_path = os.path.join(args.f_path, temp_filename) + if len(save_path.encode('utf-8')) > 4096: + return public.return_message(-1, 0, public.lang("The full path is too long (over 4096 bytes).")) + except Exception as e: + return public.fail_v2(public.lang("Failed to check file path: {}", str(e))) + if not self.f_name_check(args.f_name): return public.return_msg_gettext(False, public.lang("No special characters can be included in the file name!")) if args.f_path == '/': @@ -1607,9 +1617,9 @@ session.save_handler = files'''.format(path, sess_path, sess_path) self.remove_file_ps(get) public.add_security_logs("Del file", "Delete file: " + get.path) return public.return_msg_gettext(True, public.lang('File moved to recycle bin!')) + public.write_log_gettext('File manager', 'Successfully permanent deleted file: [{}]!', (get.path,)) os.remove(get.path) self.site_path_safe(get) - public.write_log_gettext('File manager', 'Successfully permanent deleted file: [{}]!', (get.path,)) public.add_security_logs("Del file", "Delete file: " + get.path) self.remove_file_ps(get) return public.return_msg_gettext(True, public.lang('Successfully deleted file!')) diff --git a/class/jobs.py b/class/jobs.py index df53d783..7c6609fa 100755 --- a/class/jobs.py +++ b/class/jobs.py @@ -142,7 +142,7 @@ def acme_crond_reinit(): if not os.path.exists(lets_config_file): return import acme_v2 - acme_v2.acme_v2().set_crond() + # acme_v2.acme_v2().set_crond() acme_v2.acme_v2().set_crond_v2() except: pass @@ -401,6 +401,50 @@ def sql_pacth(): )''' sql.execute(csql,()) + if not sql.table('sqlite_master').where('type=? AND name=?', ('table', 'git_sites_auth')).count(): + csql = r""" + CREATE TABLE IF NOT EXISTS `git_sites_auth` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `site_id` INTEGER, + `auth_type` REAL, + `oauth_access_token` REAL, + `oauth_scope` REAL, + `oauth_token_type` REAL, + `branch` REAL, + `repo` REAL, + `number_copies` INTEGER DEFAULT 5 +)""" + sql.execute(csql, ()) + + if not sql.table('sqlite_master').where('type=? AND name=?', ('table', 'site_deploy_status')).count(): + csql = r""" + CREATE TABLE IF NOT EXISTS `site_deploy_status` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `site_id` INTEGER, + `status` INTEGER, + `deploy_status` INTEGER, + `script_path` REAL, + `log_path` REAL, + `deployment_time` REAL, + `execut_time` REAL, + `commit_hash` REAL, + `commit_hash_short` REAL, + `msg` REAL, + `author_name` REAL, + `committed_time` REAL + )""" + sql.execute(csql, ()) + + if not sql.table('sqlite_master').where('type=? AND name=?', ('table', 'site_deploy_script')).count(): + csql = r""" + CREATE TABLE IF NOT EXISTS `site_deploy_script` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `site_id` INTEGER, + `title` REAL, + `script_path` REAL, + `is_webhook` INTEGER DEFAULT 0 + )""" + sql.execute(csql, ()) if not sql.table('sqlite_master').where('type=? AND name=?', ('table', 'messages')).count(): csql = '''CREATE TABLE IF NOT EXISTS `messages` ( diff --git a/class/panelSite.py b/class/panelSite.py index 46fddb71..8b95c444 100644 --- a/class/panelSite.py +++ b/class/panelSite.py @@ -5020,11 +5020,11 @@ location %s siteName = site['name'] sitePath = site['path'] if not siteName or os.path.isfile(sitePath): return {"runPath":"/",'dirs':[]} + path = sitePath # 兼容多服务 webserver = public.get_webserver() if public.get_multi_webservice_status(): webserver = site['service_type'] if site['service_type'] else 'nginx' - if webserver == 'nginx': filename = self.setupPath + '/panel/vhost/nginx/' + siteName + '.conf' if os.path.exists(filename): diff --git a/class/public.py b/class/public.py deleted file mode 100755 index f463138d..00000000 --- a/class/public.py +++ /dev/null @@ -1,7173 +0,0 @@ -# coding: utf-8 -# +------------------------------------------------------------------- -# | 宝塔Linux面板 -# +------------------------------------------------------------------- -# | Copyright (c) 2015-2099 宝塔软件(http://bt.cn) All rights reserved. -# +------------------------------------------------------------------- -# | Author: hwliang -# +------------------------------------------------------------------- - -# -------------------------------- -# 宝塔公共库 -# -------------------------------- - -import json,os,sys,time,re,socket,importlib,binascii,base64,io,string,psutil -import gettext -es = gettext.translation('en', localedir='/www/server/panel/BTPanel/static/language', languages=['en']) -es.install() -_ = es.gettext -from random import choice -_LAN_PUBLIC = None -_LAN_LOG = None -_LAN_TEMPLATE = None - -if sys.version_info[0] == 2: - reload(sys) - sys.setdefaultencoding('utf8') -else: - from importlib import reload - -def M(table): - """ - @name 访问面板数据库 - @author hwliang - @table 被访问的表名(必需) - @return db.Sql object - - ps: 默认访问data/default.db - """ - import db - with db.Sql() as sql: - #sql = db.Sql() - return sql.table(table) - -def HttpGet(url,timeout = 6,headers = {}): - """ - @name 发送GET请求 - @author hwliang - @url 被请求的URL地址(必需) - @timeout 超时时间默认60秒 - @return string - """ - if url.find('GetAuthToken') == -1: - if is_local(): return False - # rep_home_host() - import http_requests - res = http_requests.get(url,timeout=timeout,headers = headers,verify=False) - if res.status_code == 0: - if headers: return False - s_body = res.text - return s_body - s_body = res.text - del res - return s_body - -def http_get_home(url,timeout,ex): - """ - @name Get方式使用优选节点访问官网 - @author hwliang - @param url 当前官网URL地址 - @param timeout 用于测试超时时间 - @param ex 上一次错误的响应内容 - @return string 响应内容 - - 如果已经是优选节点,将直接返回ex - """ - try: - home = 'www.bt.cn' - if url.find(home) == -1: return ex - hosts_file = "config/hosts.json" - if not os.path.exists(hosts_file): return ex - hosts = json.loads(readFile(hosts_file)) - headers = {"host":home} - for host in hosts: - new_url = url.replace(home,host) - res = HttpGet(new_url,timeout,headers) - if res: - writeFile("data/home_host.pl",host) - # set_home_host(host) - return res - return ex - except: return ex - - -# def set_home_host(host): -# """ -# @name 设置官网hosts -# @author hwliang -# @param host IP地址 -# @return void -# """ -# ExecShell('sed -i "/www.bt.cn/d" /etc/hosts') -# ExecShell("echo '' >> /etc/hosts") -# ExecShell("echo '%s www.bt.cn' >> /etc/hosts" % host) -# ExecShell('sed -i "/^\s*$/d" /etc/hosts') - -def httpGet(url,timeout=6): - return HttpGet(url,timeout) - -def HttpPost(url,data,timeout = 6,headers = {}): - """ - 发送POST请求 - @url 被请求的URL地址(必需) - @data POST参数,可以是字符串或字典(必需) - @timeout 超时时间默认60秒 - return string - """ - if url.find('GetAuthToken') == -1: - if is_local(): return False - # rep_home_host() - import http_requests - res = http_requests.post(url,data=data,timeout=timeout,headers = headers) - if res.status_code == 0: - if headers: return False - s_body = res.text - return s_body - s_body = res.text - return s_body - -def httpPost(url,data,headers={},timeout=6): - """ - @name 发送POST请求 - @author hwliang - @param url 被请求的URL地址(必需) - @param data POST参数,可以是字符串或字典(必需) - @param timeout 超时时间默认60秒 - @return string - """ - return HttpPost(url,data,timeout,headers) - -def check_home(): - return True - -def Md5(strings): - """ - @name 生成MD5 - @author hwliang - @param strings 要被处理的字符串 - @return string(32) - """ - if type(strings) != bytes: - strings = strings.encode() - import hashlib - m = hashlib.md5() - m.update(strings) - return m.hexdigest() - -def md5(strings): - return Md5(strings) - -def FileMd5(filename): - """ - @name 生成文件的MD5 - @author hwliang - @param filename 文件名 - @return string(32) or False - """ - if not os.path.isfile(filename): return False - import hashlib - my_hash = hashlib.md5() - f = open(filename,'rb') - while True: - b = f.read(8096) - if not b : - break - my_hash.update(b) - f.close() - return my_hash.hexdigest() - -def GetRandomString(length): - """ - @name 取随机字符串 - @author hwliang - @param length 要获取的长度 - @return string(length) - """ - from random import Random - strings = '' - chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789' - chrlen = len(chars) - 1 - random = Random() - for i in range(length): - strings += chars[random.randint(0, chrlen)] - return strings - -def ReturnJson(status,msg,args=()): - """ - @name 取通用Json返回 - @author hwliang - @param status 返回状态 - @param msg 返回消息 - @return string(json) - """ - # return GetJson(ReturnMsg(status, msg, args)) - return GetJson(return_msg_gettext(status,msg,args)) - -def returnJson(status,msg,args=()): - """ - @name 取通用Json返回 - @author hwliang - @param status 返回状态 - @param msg 返回消息 - @return string(json) - """ - return ReturnJson(status,msg,args) - -def ReturnMsg(status,msg,args = ()): - """ - @name 取通用dict返回 - @author hwliang - @param status 返回状态 - @param msg 返回消息 - @return dict {"status":bool,"msg":string} - """ - try: - log_message = json.loads(ReadFile('BTPanel/static/language/' + GetLanguage() + '/public.json')) - except: - log_message = {} - keys = log_message.keys() - if type(msg) == str: - if msg in keys: - msg = log_message[msg] - for i in range(len(args)): - rep = '{'+str(i+1)+'}' - msg = msg.replace(rep,args[i]) - return {'status':status,'msg':msg} - -def return_msg_gettext(status,msg,args = ()): - """ - @name 取通用dict返回 - @author hwliang - @date 2022.9.20 - """ - msg = gettext_msg(msg,args) - return {'status':status,'msg':msg} - -def returnMsg(status,msg,args = ()): - """ - @name 取通用dict返回 - @author hwliang - @param status 返回状态 - @param msg 返回消息 - @return dict {"status":bool,"msg":string} - """ - return ReturnMsg(status,msg,args) - - -def GetFileMode(filename): - """ - @name 取文件权限字符串 - @author hwliang - @param filename 文件全路径 - @return string 如:644/777/755 - """ - stat = os.stat(filename) - accept = str(oct(stat.st_mode)[-3:]) - return accept - -def get_mode_and_user(path): - '''取文件或目录权限信息''' - import pwd - data = {} - if not os.path.exists(path): return None - stat = os.stat(path) - data['mode'] = str(oct(stat.st_mode)[-3:]) - try: - data['user'] = pwd.getpwuid(stat.st_uid).pw_name - except: - data['user'] = str(stat.st_uid) - return data - - -class ijson: - def loads(self, data): - return json.loads(data) - - def dumps(self, data): - try: - try: - return json.dumps(data) - except: - return json.dumps(data, ensure_ascii=False) - except: - return json.dumps({'status':False,'msg':"wrong response: %s" % str(data)}) - - -def GetJson(data): - """ - 将对象转换为JSON - @data 被转换的对象(dict/list/str/int...) - """ - if data == bytes: data = data.decode('utf-8') - ijson_obj = ijson() - data = ijson_obj.dumps(data) - del(ijson_obj) - return data - -def getJson(data): - return GetJson(data) - -def ReadFile(filename,mode = 'r'): - """ - 读取文件内容 - @filename 文件名 - return string(bin) 若文件不存在,则返回None - """ - import os - if not os.path.exists(filename): return False - fp = None - try: - fp = open(filename, mode) - f_body = fp.read() - except Exception as ex: - if sys.version_info[0] != 2: - try: - fp = open(filename, mode,encoding="utf-8",errors='ignore') - f_body = fp.read() - except: - fp = open(filename, mode,encoding="GBK",errors='ignore') - f_body = fp.read() - else: - return False - finally: - if fp and not fp.closed: - fp.close() - return f_body - -def readFile(filename,mode='r'): - ''' - @name 读取指定文件数据 - @author hwliang<2021-06-09> - @param filename 文件名 - @param mode 文件打开模式,默认r - @return string or bytes or False 如果返回False则说明读取失败 - ''' - return ReadFile(filename,mode) - -def WriteFile(filename,s_body,mode='w+'): - """ - 写入文件内容 - @filename 文件名 - @s_body 欲写入的内容 - return bool 若文件不存在则尝试自动创建 - """ - try: - fp = open(filename, mode) - fp.write(s_body) - fp.close() - return True - except: - try: - fp = open(filename, mode,encoding="utf-8") - fp.write(s_body) - fp.close() - return True - except: - return False - -def writeFile(filename,s_body,mode='w+'): - ''' - @name 写入到指定文件 - @author hwliang<2021-06-09> - @param filename 文件名 - @param s_boey 被写入的内容,字节或字符串 - @param mode 文件打开模式,默认w+ - @return bool - ''' - return WriteFile(filename,s_body,mode) - -def gettext_msg(msg,args=()): - try: - msg = _(msg).format(*args) - except: - pass - finally: - return msg - -def write_log_gettext(type, logmsg, args=(), not_web = False): - #写日志 - logmsg = gettext_msg(logmsg,args) - try: - import time,db,json - username = 'system' - uid = 1 - tmp_msg = '' - if not not_web: - try: - from BTPanel import session - if 'username' in session: - username = session['username'] - uid = session['uid'] - if session.get('debug') == 1: return - except: - pass - sql = db.Sql() - mDate = time.strftime('%Y-%m-%d %X',time.localtime()) - data = (uid,username,_(type),xssencode2(logmsg + tmp_msg),mDate) - result = sql.table('logs').add('uid,username,type,log,addtime',data) - except: - pass - -def WriteLog(type,logMsg,args=(),not_web = False): - #写日志 - try: - import time,db,json - username = 'system' - uid = 1 - tmp_msg = '' - if not not_web: - try: - from BTPanel import session - if 'username' in session: - username = session['username'] - uid = session['uid'] - if session.get('debug') == 1: return - except: - pass - global _LAN_LOG - if not _LAN_LOG: - _LAN_LOG = json.loads(ReadFile('BTPanel/static/language/' + GetLanguage() + '/log.json')) - keys = _LAN_LOG.keys() - if logMsg in keys: - logMsg = _LAN_LOG[logMsg] - for i in range(len(args)): - rep = '{'+str(i+1)+'}' - logMsg = logMsg.replace(rep,args[i]) - if type in keys: type = _LAN_LOG[type] - - try: - if 'login_address' in session: - logMsg = '{} {}'.format(session['login_address'], logMsg) - except:pass - - sql = db.Sql() - mDate = time.strftime('%Y-%m-%d %X',time.localtime()) - data = (uid,username,type,logMsg + tmp_msg,mDate) - result = sql.table('logs').add('uid,username,type,log,addtime',data) - return result - except: - return None - -def GetLanguage(): - ''' - 取语言 - ''' - return GetConfigValue("language") - -def get_language(): - return GetLanguage() - -def GetConfigValue(key): - ''' - 取配置值 - ''' - config = GetConfig() - if not key in config.keys(): - if key == 'download': return 'http://node.aapanel.com' - return None - return config[key] - -def SetConfigValue(key,value): - config = GetConfig() - config[key] = value - WriteConfig(config) - -def GetConfig(): - ''' - 取所有配置项 - ''' - path = "config/config.json" - if not os.path.exists(path): return {} - f_body = ReadFile(path) - if not f_body: return {} - return json.loads(f_body) - -def WriteConfig(config): - path = "config/config.json" - WriteFile(path, json.dumps(config)) - - -def GetLan(key): - """ - 取提示消息 - """ - global _LAN_TEMPLATE - if not _LAN_TEMPLATE: - _LAN_TEMPLATE = json.loads(ReadFile('BTPanel/static/language/' + GetLanguage() + '/template.json')) - keys = _LAN_TEMPLATE.keys() - msg = None - if key in keys: - msg = _LAN_TEMPLATE[key] - return msg -def getLan(key): - return GetLan(key) - -def GetMsg(key,args = ()): - try: - global _LAN_PUBLIC - if not _LAN_PUBLIC: - _LAN_PUBLIC = json.loads(ReadFile('BTPanel/static/language/' + GetLanguage() + '/public.json')) - keys = _LAN_PUBLIC.keys() - msg = None - if key in keys: - msg = _LAN_PUBLIC[key] - for i in range(len(args)): - rep = '{'+str(i+1)+'}' - msg = msg.replace(rep,args[i]) - return msg - except: - return key - -def get_msg_gettext(msg,args = ()): - return gettext_msg(msg,args) - -def getMsg(key,args = ()): - return GetMsg(key,args) - - -# 获取Web服务器 -def GetWebServer(): - if os.path.exists('{}/apache/bin/apachectl'.format(get_setup_path())): - webserver = 'apache' - elif os.path.exists('/usr/local/lsws/bin/lswsctrl'): - webserver = 'openlitespeed' - else: - webserver = 'nginx' - return webserver - -def get_webserver(): - return GetWebServer() - -def ServiceReload(): - #重载Web服务配置 - if os.path.exists('{}/nginx/sbin/nginx'.format(get_setup_path())): - result = ExecShell('/etc/init.d/nginx reload') - if result[1].find('nginx.pid') != -1: - ExecShell('pkill -9 nginx && sleep 1') - ExecShell('/etc/init.d/nginx start') - elif os.path.exists('{}/apache/bin/apachectl'.format(get_setup_path())): - result = ExecShell('/etc/init.d/httpd reload') - else: - result = ExecShell('rm -f /tmp/lshttpd/*.sock* && /usr/local/lsws/bin/lswsctrl restart') - return result - -def serviceReload(): - return ServiceReload() - - - -def get_preexec_fn(run_user): - ''' - @name 获取指定执行用户预处理函数 - @author hwliang<2021-08-19> - @param run_user 运行用户 - @return 预处理函数 - ''' - import pwd - pid = pwd.getpwnam(run_user) - uid = pid.pw_uid - gid = pid.pw_gid - - def _exec_rn(): - os.setgid(gid) - os.setuid(uid) - return _exec_rn - - -def ExecShell(cmdstring, timeout=None, shell=True,cwd=None,env=None,user = None): - ''' - @name 执行命令 - @author hwliang<2021-08-19> - @param cmdstring 命令 [必传] - @param timeout 超时时间 - @param shell 是否通过shell运行 - @param cwd 进入的目录 - @param env 环境变量 - @param user 执行用户名 - @return 命令执行结果 - ''' - a = '' - e = '' - import subprocess,tempfile - preexec_fn = None - tmp_dir = '/dev/shm' - if user: - preexec_fn = get_preexec_fn(user) - tmp_dir = '/tmp' - try: - rx = md5(cmdstring) - succ_f = tempfile.SpooledTemporaryFile(max_size=4096,mode='wb+',suffix='_succ',prefix='btex_' + rx ,dir=tmp_dir) - err_f = tempfile.SpooledTemporaryFile(max_size=4096,mode='wb+',suffix='_err',prefix='btex_' + rx ,dir=tmp_dir) - sub = subprocess.Popen(cmdstring, close_fds=True, shell=shell,bufsize=128,stdout=succ_f,stderr=err_f,cwd=cwd,env=env,preexec_fn=preexec_fn) - if timeout: - s = 0 - d = 0.01 - while sub.poll() == None: - time.sleep(d) - s += d - if s >= timeout: - if not err_f.closed: err_f.close() - if not succ_f.closed: succ_f.close() - return 'Timed out' - else: - sub.wait() - - err_f.seek(0) - succ_f.seek(0) - a = succ_f.read() - e = err_f.read() - if not err_f.closed: err_f.close() - if not succ_f.closed: succ_f.close() - except: - return '',get_error_info() - try: - #编码修正 - if type(a) == bytes: a = a.decode('utf-8') - if type(e) == bytes: e = e.decode('utf-8') - except: - a = str(a) - e = str(e) - - return a,e - -def GetLocalIp(): - # 取本地外网IP - try: - filename = 'data/iplist.txt' - ipaddress = readFile(filename) - if not ipaddress: - url = 'https://ifconfig.me/ip' - m_str = HttpGet(url) - if isinstance(m_str,bytes): - ipaddress = re.search(r"^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$", m_str.decode('utf-8')).group(0) - else: - ipaddress = re.search(r"^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$", m_str).group(0) - WriteFile(filename,ipaddress) - c_ip = check_ip(ipaddress) - if not c_ip: return GetHost() - return ipaddress - except Exception as e: - try: - url = 'https://www.aapanel.com/api/common/getClientIP' - ipaddress = HttpGet(url) - WriteFile(filename, ipaddress) - return ipaddress - except: - return GetHost() - -def is_ipv4(ip): - ''' - @name 是否是IPV4地址 - @author hwliang - @param ip IP地址 - @return True/False - ''' - #验证基本格式 - if not re.match(r"^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$", ip): - return False - - # 验证每个段是否在合理范围 - try: - socket.inet_pton(socket.AF_INET, ip) - except AttributeError: - try: - socket.inet_aton(ip) - except socket.error: - return False - except socket.error: - return False - return True - - -def is_ipv6(ip): - ''' - @name 是否为IPv6地址 - @author hwliang - @param ip 地址 - @return True/False - ''' - # 验证基本格式 - if not re.match(r"^[\w:]+$", ip): - return False - - # 验证IPv6地址 - try: - socket.inet_pton(socket.AF_INET6, ip) - except socket.error: - return False - return True - - -def check_ip(ip): - return is_ipv4(ip) or is_ipv6(ip) - -def GetHost(port = False): - from flask import request - host_tmp = request.headers.get('host') - - # 验证基本格式 - if host_tmp: - if not re.match("^[\w\.\:\-]+$", host_tmp): - host_tmp = '' - - if not host_tmp: - if request.url_root: - tmp = re.findall(r"(https|http)://([\w:\.-]+)",request.url_root) - if tmp: host_tmp = tmp[0][1] - if not host_tmp: - host_tmp = '127.0.0.1:' + readFile('data/port.pl').strip() - try: - if host_tmp.find(':') == -1: host_tmp += ':80' - except: - host_tmp = "127.0.0.1:7800" - h = host_tmp.split(':') - if port: return h[-1] - return ':'.join(h[0:-1]) - -def GetClientIp(): - from flask import request - ipaddr = request.remote_addr.replace('::ffff:','') - if not check_ip(ipaddr): return 'Unknown IP address' - return ipaddr - -def get_client_ip(): - return GetClientIp() - -def phpReload(version): - #重载PHP配置 - import os - if os.path.exists(get_setup_path()+'/php/' + version + '/libphp5.so'): - ExecShell('/etc/init.d/httpd reload') - else: - ExecShell('/etc/init.d/php-fpm-'+version+' reload') - ExecShell("/etc/init.d/php-fpm-{} start".format(version)) - - -def get_timeout(url,timeout=3): - try: - start = time.time() - result = int(httpGet(url,timeout)) - return result,int((time.time() - start) * 1000 - 500) - except: return 0,False - -def get_url(timeout = 0.5): - return 'https://node.aapanel.com' - - import json - try: - pkey = 'node_url' - node_url = cache_get(pkey) - if node_url: return node_url - nodeFile = 'data/node.json' - node_list = json.loads(readFile(nodeFile)) - mnode1 = [] - mnode2 = [] - mnode3 = [] - new_node_list = {} - for node in node_list: - node['net'],node['ping'] = get_timeout(node['protocol'] + node['address'] + ':' + node['port'] + '/net_test',1) - new_node_list[node['address']] = node['ping'] - if not node['ping']: continue - if node['ping'] < 100: #当响应时间<100ms且可用带宽大于1500KB时 - if node['net'] > 1500: - mnode1.append(node) - elif node['net'] > 1000: - mnode3.append(node) - else: - if node['net'] > 1000: #当响应时间>=100ms且可用带宽大于1000KB时 - mnode2.append(node) - if node['ping'] < 100: - if node['net'] > 3000: break #有节点可用带宽大于3000时,不再检查其它节点 - if mnode1: #优选低延迟高带宽 - mnode = sorted(mnode1,key= lambda x:x['net'],reverse=True) - elif mnode3: #备选低延迟,中等带宽 - mnode = sorted(mnode3,key= lambda x:x['net'],reverse=True) - else: #终选中等延迟,中等带宽 - mnode = sorted(mnode2,key= lambda x:x['ping'],reverse=False) - - if not mnode: return 'https://node.aapanel.com' - - new_node_keys = new_node_list.keys() - for i in range(len(node_list)): - if node_list[i]['address'] in new_node_keys: - node_list[i]['ping'] = new_node_list[node_list[i]['address']] - else: - node_list[i]['ping'] = 500 - - new_node_list = sorted(node_list,key=lambda x: x['ping'],reverse=False) - writeFile(nodeFile,json.dumps(new_node_list)) - node_url = mnode[0]['protocol'] + mnode[0]['address'] + ':' + mnode[0]['port'] - cache_set(pkey,node_url,86400) - return node_url - except: - return 'https://node.aapanel.com' - - -#过滤输入 -def checkInput(data): - if not data: return data - if type(data) != str: return data - checkList = [ - {'d':'<','r':'<'}, - {'d':'>','r':'>'}, - {'d':'\'','r':'‘'}, - {'d':'"','r':'“'}, - {'d':'&','r':'&'}, - {'d':'#','r':'#'}, - {'d':'<','r':'<'} - ] - for v in checkList: - data = data.replace(v['d'],v['r']) - return data - -#取文件指定尾行数 -def GetNumLines(path,num,p=1): - if not os.path.exists(path): return "" - if isinstance(num,str) and not re.match("\d+",num): - return "" - - pyVersion = sys.version_info[0] - max_len = 1024*1024*10 - try: - - start_line = (p - 1) * num - count = start_line + num - fp = open(path,'rb') - buf = "" - fp.seek(-1, 2) - if fp.read(1) == "\n": fp.seek(-1, 2) - data = [] - total_len = 0 - b = True - n = 0 - for i in range(count): - while True: - newline_pos = str.rfind(str(buf), "\n") - pos = fp.tell() - if newline_pos != -1: - if n >= start_line: - line = buf[newline_pos + 1:] - line_len = len(line) - total_len += line_len - sp_len = total_len - max_len - if sp_len > 0: - line = line[sp_len:] - try: - data.insert(0,line) - except: pass - buf = buf[:newline_pos] - n += 1 - break - else: - if pos == 0: - b = False - break - to_read = min(4096, pos) - fp.seek(-to_read, 1) - t_buf = fp.read(to_read) - if pyVersion == 3: - t_buf = t_buf.decode('utf-8',errors='ignore') - - buf = t_buf + buf - fp.seek(-to_read, 1) - if pos - to_read == 0: - buf = "\n" + buf - if total_len >= max_len: break - if not b: break - fp.close() - result = "\n".join(data) - except: - if re.match("[`\$\&\;]+",path): return "" - result = ExecShell("tail -n {} {}".format(num,path))[0] - if len(result) > max_len: - result = result[-max_len:] - - try: - try: - result = json.dumps(result) - return json.loads(result).strip() - except: - if pyVersion == 2: - result = result.decode('utf8',errors='ignore') - else: - result = result.encode('utf-8',errors='ignore').decode("utf-8",errors="ignore") - return result.strip() - except: return "" - -#验证证书 -def CheckCert(certPath = 'ssl/certificate.pem'): - try: - return get_cert_data(certPath) - except: - openssl = '/usr/local/openssl/bin/openssl' - if not os.path.exists(openssl): openssl = 'openssl' - certPem = readFile(certPath) - s = "\n-----BEGIN CERTIFICATE-----" - tmp = certPem.strip().split(s) - res = True - for tmp1 in tmp: - if tmp1.find('-----BEGIN CERTIFICATE-----') == -1: tmp1 = s + tmp1 - writeFile(certPath,tmp1) - result = ExecShell(openssl + " x509 -in "+certPath+" -noout -subject") - if result[1].find('-bash:') != -1: res = True - if len(result[1]) > 2: res = False - if result[0].find('error:') != -1: res = False - return res - - -# 获取面板地址 -def getPanelAddr(): - from flask import request - protocol = 'https://' if os.path.exists("data/ssl.pl") else 'http://' - return protocol + request.headers.get('host') - - -# 字节单位转换 -def to_size(size): - if not size: return '0.00 b' - size = float(size) - d = ('b','KB','MB','GB','TB') - s = d[0] - for b in d: - if size < 1024: return ("%.2f" % size) + ' ' + b - size = size / 1024 - s = b - return ("%.2f" % size) + ' ' + b - - -def checkCode(code, outime=120): - # 校验验证码 - from BTPanel import session, cache - try: - codeStr = cache.get('codeStr') - cache.delete('codeStr') - if not codeStr: - session['login_error'] = GetMsg('CODE_TIMEOUT') - return False - - if md5(code.lower()) != codeStr: - session['login_error'] = GetMsg('CODE_ERR') - return False - return True - except: - session['login_error'] = GetMsg('CODE_NOT_EXISTS') - return False - -#写进度 -def writeSpeed(title,used,total,speed = 0): - import json - if not title: - data = {'title': None, 'progress': 0, 'total': 0, 'used': 0, 'speed': 0} - else: - try: - progress = int((100.0 * used / total)) - except: - progress = 0 - data = {'title': title, 'progress': progress, 'total': total, 'used': used, 'speed': speed} - writeFile('/tmp/panelSpeed.pl', json.dumps(data)) - return True - -#取进度 -def getSpeed(): - import json - data = readFile('/tmp/panelSpeed.pl') - if not data: - data = json.dumps({'title': None, 'progress': 0, 'total': 0, 'used': 0, 'speed': 0}) - writeFile('/tmp/panelSpeed.pl', data) - return json.loads(data) - -def get_requests_headers(): - return {"Content-type":"application/x-www-form-urlencoded","User-Agent":"BT-Panel"} - -def downloadFile(url,filename): - try: - if sys.version_info[0] == 2: - import requests - headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36'} - r = requests.get(url, headers=headers,verify=False) - with open(filename,"wb") as f: - f.write(r.content) - else: - import urllib.request - import ssl - ssl._create_default_https_context = ssl._create_unverified_context - opener = urllib.request.build_opener() - opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36')] - urllib.request.install_opener(opener) - urllib.request.urlretrieve(url, filename=filename) - except: - ExecShell("wget -O --no-check-certificate {} {}".format(filename,url)) - -def exists_args(args,get): - ''' - @name 检查参数是否存在 - @author hwliang<2021-06-08> - @param args 参数列表 允许是列表或字符串 - @param get 参数对像 - @return bool 都存在返回True,否则抛出KeyError异常 - ''' - if type(args) == str: - args = args.split(',') - for arg in args: - if not arg in get: - raise KeyError('Required parameters are missing:{}'.format(arg)) - return True - - -def get_error_info(): - import traceback - errorMsg = traceback.format_exc() - return errorMsg - - -def get_plugin_replace_rules(): - ''' - @name 获取插件文件内容替换规则 - @author hwliang<2021-06-28> - @return list - ''' - return [ - { - "find":"[PATH]", - "replace": "[PATH]" - } - ] - - -def get_plugin_title(plugin_name): - ''' - @name 获取插件标题 - @author hwliang<2021-06-24> - @param plugin_name 插件名称 - @return string - ''' - - info_file = '{}/{}/info.json'.format(get_plugin_path(),plugin_name) - try: - return json.loads(readFile(info_file))['title'] - except: - return plugin_name - - -def get_error_object(plugin_title = None,plugin_name = None): - ''' - @name 获取格式化错误响应对像 - @author hwliang<2021-06-21> - @return Resp - ''' - if not plugin_title: plugin_title = get_plugin_title(plugin_name) - try: - from BTPanel import request,Resp - is_cli = False - except: - is_cli = True - - if is_cli: - raise get_error_info() - ss = '''404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. - -During handling of the above exception, another exception occurred:''' - error_info = get_error_info().strip().split(ss)[-1].strip() - request_info = '''REQUEST_DATE: {request_date} - PAN_VERSION: {panel_version} - OS_VERSION: {os_version} - REMOTE_ADDR: {remote_addr} - REQUEST_URI: {method} {full_path} -REQUEST_FORM: {request_form} - USER_AGENT: {user_agent}'''.format( - request_date = getDate(), - remote_addr = GetClientIp(), - method = request.method, - full_path = url_encode(xsssec(request.full_path)), - request_form = xsssec(str(request.form.to_dict())), - user_agent = xsssec(request.headers.get('User-Agent')), - panel_version = version(), - os_version = get_os_version() -) - - result =readFile('{}/BTPanel/templates/default/plugin_error.html'.format(get_panel_path())).format( - plugin_name=plugin_title, - request_info=request_info, - error_title=error_info.split("\n")[-1], - error_msg=error_info - ) - return Resp(result,500) - -# 搜索数据中是否存在 -def inArray(arrays, searchStr): - for key in arrays: - if key == searchStr: return True - - return False - -#格式化指定时间戳 -def format_date(format="%Y-%m-%d %H:%M:%S",times = None): - if not times: times = int(time.time()) - time_local = time.localtime(times) - return time.strftime(format, time_local) - - -# 检查Web服务器配置文件是否有错误 -def checkWebConfig(): - f1 = '{}/'.format(get_vhost_path()) - f2 = '{}/'.format(get_plugin_path()) - setup_path = get_setup_path() - if not os.path.exists(f2 + 'btwaf'): - f3 = f1 + 'nginx/btwaf.conf' - if os.path.exists(f3): os.remove(f3) - # if not os.path.exists(f2 + 'btwaf_httpd'): - # f3 = f1 + 'apache/btwaf.conf' - # if os.path.exists(f3): os.remove(f3) - - if not os.path.exists(f2 + 'total'): - f3 = f1 + 'apache/total.conf' - if os.path.exists(f3): os.remove(f3) - f3 = f1 + 'nginx/total.conf' - if os.path.exists(f3): os.remove(f3) - else: - if os.path.exists(setup_path + '/apache/modules/mod_lua.so'): - writeFile(f1 + 'apache/btwaf.conf','LoadModule lua_module modules/mod_lua.so') - writeFile(f1 + 'apache/total.conf','LuaHookLog {}/total/httpd_log.lua run_logs'.format(setup_path)) - else: - f3 = f1 + 'apache/total.conf' - if os.path.exists(f3): os.remove(f3) - - if get_webserver() == 'nginx': - result = ExecShell("ulimit -n 8192 ; {setup_path}/nginx/sbin/nginx -t -c {setup_path}/nginx/conf/nginx.conf".format(setup_path = setup_path)) - searchStr = 'successful' - elif get_webserver() == 'apache': - # else: - result = ExecShell("ulimit -n 8192 ; {setup_path}/apache/bin/apachectl -t".format(setup_path = setup_path)) - searchStr = 'Syntax OK' - else: - result = ["1","1"] - searchStr = "1" - if result[1].find(searchStr) == -1: - WriteLog("TYPE_SOFT", 'CONF_CHECK_ERR', (result[1],)) - return result[1] - return True - -# 错误收集适配 -# #检查Web服务器配置文件是否有错误 -# def checkWebConfig(repair_num=2): -# f1 = '{}/'.format(get_vhost_path()) -# f2 = '{}/'.format(get_plugin_path()) -# setup_path = get_setup_path() -# if not os.path.exists(f2 + 'btwaf'): -# f3 = f1 + 'nginx/btwaf.conf' -# if os.path.exists(f3): os.remove(f3) -# # if not os.path.exists(f2 + 'btwaf_httpd'): -# # f3 = f1 + 'apache/btwaf.conf' -# # if os.path.exists(f3): os.remove(f3) -# -# if not os.path.exists(f2 + 'total'): -# f3 = f1 + 'apache/total.conf' -# if os.path.exists(f3): os.remove(f3) -# f3 = f1 + 'nginx/total.conf' -# if os.path.exists(f3): os.remove(f3) -# else: -# if os.path.exists(setup_path + '/apache/modules/mod_lua.so'): -# writeFile(f1 + 'apache/btwaf.conf','LoadModule lua_module modules/mod_lua.so') -# writeFile(f1 + 'apache/total.conf','LuaHookLog {}/total/httpd_log.lua run_logs'.format(setup_path)) -# else: -# f3 = f1 + 'apache/total.conf' -# if os.path.exists(f3): os.remove(f3) -# -# web_s = get_webserver() -# if web_s == 'nginx': -# result = ExecShell("ulimit -n 8192 ; {setup_path}/nginx/sbin/nginx -t -c {setup_path}/nginx/conf/nginx.conf".format(setup_path = setup_path)) -# searchStr = 'successful' -# nginx_version = ExecShell("{}/nginx/sbin/nginx -v".format(setup_path)) -# version_info = nginx_version[1] -# elif web_s == 'apache': -# # else: -# result = ExecShell("ulimit -n 8192 ; {setup_path}/apache/bin/apachectl -t".format(setup_path = setup_path)) -# searchStr = 'Syntax OK' -# apache_version = ExecShell("{}/apache/bin/httpd -v".format(setup_path)) -# version_info = apache_version[1] -# else: -# result = ["1","1"] -# searchStr = "1" -# version_info = "Unknow" -# -# if result[1].find('the "listen ... http2" directive is deprecated, use the "http2" directive instead') != -1 and web_s == "nginx" and is_change_nginx_http2(): -# if repair_num > 0: -# repair_num -= 1 -# change_nginx_http2() -# return checkWebConfig(repair_num) -# -# if result[1].find(searchStr) == -1: -# if result[1].find('[emerg] unknown directive "http2"') != -1 and web_s == "nginx" and is_change_nginx_old_http2(): -# if repair_num > 0: -# repair_num -= 1 -# change_nginx_old_http2() -# return checkWebConfig(repair_num) -# -# if result[1].find('[emerg] invalid parameter "quic" in') != -1 and web_s == "nginx" and not is_nginx_http3(): -# if repair_num > 0: -# repair_num -= 1 -# remove_nginx_quic() -# return checkWebConfig(repair_num) -# -# WriteLog("TYPE_SOFT", 'CONF_CHECK_ERR', (result[1],)) -# try: -# match = re.search(r"in (.*):(\d+)", result[1]) -# if match: -# err_infos = read_file_lines_range(match.group(1), int(match.group(2)) - 5, int(match.group(2)) + 5) if int(match.group(2)) >= 5 else read_file_lines_range(match.group(1), 1, int(match.group(2))) -# err_collect("{} \n 报错信息: \n {} \n 版本信息:{} \n报错文件路径:{}:{}".format( -# err_infos, result[1], version_info, match.group(1), match.group(2)), -# 0, result[1].split("\n")[0].strip()) -# except Exception as e: -# err_collect(result[1], 0, result[1].split("\n")[0].strip()) -# return result[1] -# return True -# -# def err_collect(error_info, type, error_id): -# ''' -# @error_info 错误信息 -# @type 错误类型 -# @error_id 错误ID -# ''' -# -# from flask import redirect, request, Response -# _form = request.form.to_dict() -# if 'username' in _form: _form['username'] = '******' -# if 'password' in _form: _form['password'] = '******' -# if 'phone' in _form: _form['phone'] = '******' -# -# # 错误信息 -# error_infos = { -# "REQUEST_DATE": getDate(), # 请求时间 -# "PANEL_VERSION": version(), # 面板版本 -# "OS_VERSION": get_os_version(), # 操作系统版本 -# "REMOTE_ADDR": GetClientIp(), # 请求IP -# "REQUEST_URI": request.method + request.full_path, # 请求URI -# "REQUEST_FORM": xsssec(str(_form)), # 请求表单 -# "USER_AGENT": xsssec(request.headers.get('User-Agent')), # 客户端连接信息 -# "ERROR_INFO": error_info, # 错误信息 -# "PACK_TIME": readFile("/www/server/panel/config/update_time.pl") if os.path.exists("/www/server/panel/config/update_time.pl") else getDate(), # 打包时间 -# "TYPE": type, -# "ERROR_ID": error_id, -# } -# pkey = Md5(error_infos["ERROR_ID"]) -# -# # 提交异常报告 -# if not cache_get(pkey): -# try: -# run_thread(httpPost, ("https://api.bt.cn/bt_error/index.php", error_infos)) -# cache_set(pkey, 1, 1800) -# except Exception as e: -# pass # 错误信息 -############################### 错误收集适配 ^^上方 -# 检查是否为IPv4地址 -def checkIp(ip): - p = re.compile(r'^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$') - if p.match(ip): - return True - else: - return False - -#检查端口是否合法 -def checkPort(port): - if not re.match("^\d+$",port): return False - ports = ['21','25','443','8080','888','8888','8443','7800'] - if port in ports: return False - intport = int(port) - if intport < 1 or intport > 65535: return False - return True - -#字符串取中间 -def getStrBetween(startStr,endStr,srcStr): - start = srcStr.find(startStr) - if start == -1: return None - end = srcStr.find(endStr) - if end == -1: return None - return srcStr[start + 1:end] - -#取CPU类型 -def getCpuType(): - cpuinfo = open('/proc/cpuinfo', 'r').read() - rep = "model\s+name\s+:\s+(.+)" - tmp = re.search(rep,cpuinfo,re.I) - cpuType = '' - if tmp: - cpuType = tmp.groups()[0] - else: - cpuinfo = ExecShell('LANG="en_US.UTF-8" && lscpu')[0] - rep = "Model\s+name:\s+(.+)" - tmp = re.search(rep, cpuinfo, re.I) - if tmp: cpuType = tmp.groups()[0] - return cpuType - - -# 检查是否允许重启 -def IsRestart(): - num = M('tasks').where('status!=?',('1',)).count() - if num > 0: return False - return True - -#加密密码字符 -def hasPwd(password): - import crypt - return crypt.crypt(password,password) - -def getDate(format='%Y-%m-%d %X'): - # 取格式时间 - return time.strftime(format, time.localtime()) - - -# 处理MySQL配置文件 -def CheckMyCnf(): - import os - confFile = '/etc/my.cnf' - if os.path.exists(confFile): - conf = readFile(confFile) - if conf.find('[mysqld]') != -1: return True - versionFile = get_setup_path() + '/mysql/version.pl' - if not os.path.exists(versionFile): return False - - versions = ['5.1','5.5','5.6','5.7','8.0','AliSQL'] - version = readFile(versionFile) - for key in versions: - if key in version: - version = key - break - - shellStr = ''' -#!/bin/bash -PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin -export PATH - -# CF='node.aapanel.com' -# HK='download.bt.cn' -# HK2='103.224.251.67' -# US='128.1.164.196' -# sleep 0.5; -# CN_PING=`ping -c 1 -w 1 $CF|grep time=|awk '{print $7}'|sed "s/time=//"` -# HK_PING=`ping -c 1 -w 1 $HK|grep time=|awk '{print $7}'|sed "s/time=//"` -# HK2_PING=`ping -c 1 -w 1 $HK2|grep time=|awk '{print $7}'|sed "s/time=//"` -# US_PING=`ping -c 1 -w 1 $US|grep time=|awk '{print $7}'|sed "s/time=//"` -# -# echo "$HK_PING $HK" > ping.pl -# echo "$HK2_PING $HK2" >> ping.pl -# echo "$US_PING $US" >> ping.pl -# echo "$CF_PING $CF" >> ping.pl -# nodeAddr=`sort -V ping.pl|sed -n '1p'|awk '{print $2}'` -# if [ "$nodeAddr" == "" ];then -# nodeAddr=$CF -# fi - -Download_Url=https://node.aapanel.com - - -MySQL_Opt() -{ - MemTotal=`free -m | grep Mem | awk '{print $2}'` - if [[ ${MemTotal} -gt 1024 && ${MemTotal} -lt 2048 ]]; then - sed -i "s#^key_buffer_size.*#key_buffer_size = 32M#" /etc/my.cnf - sed -i "s#^table_open_cache.*#table_open_cache = 128#" /etc/my.cnf - sed -i "s#^sort_buffer_size.*#sort_buffer_size = 768K#" /etc/my.cnf - sed -i "s#^read_buffer_size.*#read_buffer_size = 768K#" /etc/my.cnf - sed -i "s#^myisam_sort_buffer_size.*#myisam_sort_buffer_size = 8M#" /etc/my.cnf - sed -i "s#^thread_cache_size.*#thread_cache_size = 16#" /etc/my.cnf - sed -i "s#^query_cache_size.*#query_cache_size = 16M#" /etc/my.cnf - sed -i "s#^tmp_table_size.*#tmp_table_size = 32M#" /etc/my.cnf - sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = 128M#" /etc/my.cnf - sed -i "s#^innodb_log_file_size.*#innodb_log_file_size = 32M#" /etc/my.cnf - elif [[ ${MemTotal} -ge 2048 && ${MemTotal} -lt 4096 ]]; then - sed -i "s#^key_buffer_size.*#key_buffer_size = 64M#" /etc/my.cnf - sed -i "s#^table_open_cache.*#table_open_cache = 256#" /etc/my.cnf - sed -i "s#^sort_buffer_size.*#sort_buffer_size = 1M#" /etc/my.cnf - sed -i "s#^read_buffer_size.*#read_buffer_size = 1M#" /etc/my.cnf - sed -i "s#^myisam_sort_buffer_size.*#myisam_sort_buffer_size = 16M#" /etc/my.cnf - sed -i "s#^thread_cache_size.*#thread_cache_size = 32#" /etc/my.cnf - sed -i "s#^query_cache_size.*#query_cache_size = 32M#" /etc/my.cnf - sed -i "s#^tmp_table_size.*#tmp_table_size = 64M#" /etc/my.cnf - sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = 256M#" /etc/my.cnf - sed -i "s#^innodb_log_file_size.*#innodb_log_file_size = 64M#" /etc/my.cnf - elif [[ ${MemTotal} -ge 4096 && ${MemTotal} -lt 8192 ]]; then - sed -i "s#^key_buffer_size.*#key_buffer_size = 128M#" /etc/my.cnf - sed -i "s#^table_open_cache.*#table_open_cache = 512#" /etc/my.cnf - sed -i "s#^sort_buffer_size.*#sort_buffer_size = 2M#" /etc/my.cnf - sed -i "s#^read_buffer_size.*#read_buffer_size = 2M#" /etc/my.cnf - sed -i "s#^myisam_sort_buffer_size.*#myisam_sort_buffer_size = 32M#" /etc/my.cnf - sed -i "s#^thread_cache_size.*#thread_cache_size = 64#" /etc/my.cnf - sed -i "s#^query_cache_size.*#query_cache_size = 64M#" /etc/my.cnf - sed -i "s#^tmp_table_size.*#tmp_table_size = 64M#" /etc/my.cnf - sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = 512M#" /etc/my.cnf - sed -i "s#^innodb_log_file_size.*#innodb_log_file_size = 128M#" /etc/my.cnf - elif [[ ${MemTotal} -ge 8192 && ${MemTotal} -lt 16384 ]]; then - sed -i "s#^key_buffer_size.*#key_buffer_size = 256M#" /etc/my.cnf - sed -i "s#^table_open_cache.*#table_open_cache = 1024#" /etc/my.cnf - sed -i "s#^sort_buffer_size.*#sort_buffer_size = 4M#" /etc/my.cnf - sed -i "s#^read_buffer_size.*#read_buffer_size = 4M#" /etc/my.cnf - sed -i "s#^myisam_sort_buffer_size.*#myisam_sort_buffer_size = 64M#" /etc/my.cnf - sed -i "s#^thread_cache_size.*#thread_cache_size = 128#" /etc/my.cnf - sed -i "s#^query_cache_size.*#query_cache_size = 128M#" /etc/my.cnf - sed -i "s#^tmp_table_size.*#tmp_table_size = 128M#" /etc/my.cnf - sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = 1024M#" /etc/my.cnf - sed -i "s#^innodb_log_file_size.*#innodb_log_file_size = 256M#" /etc/my.cnf - elif [[ ${MemTotal} -ge 16384 && ${MemTotal} -lt 32768 ]]; then - sed -i "s#^key_buffer_size.*#key_buffer_size = 512M#" /etc/my.cnf - sed -i "s#^table_open_cache.*#table_open_cache = 2048#" /etc/my.cnf - sed -i "s#^sort_buffer_size.*#sort_buffer_size = 8M#" /etc/my.cnf - sed -i "s#^read_buffer_size.*#read_buffer_size = 8M#" /etc/my.cnf - sed -i "s#^myisam_sort_buffer_size.*#myisam_sort_buffer_size = 128M#" /etc/my.cnf - sed -i "s#^thread_cache_size.*#thread_cache_size = 256#" /etc/my.cnf - sed -i "s#^query_cache_size.*#query_cache_size = 256M#" /etc/my.cnf - sed -i "s#^tmp_table_size.*#tmp_table_size = 256M#" /etc/my.cnf - sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = 2048M#" /etc/my.cnf - sed -i "s#^innodb_log_file_size.*#innodb_log_file_size = 512M#" /etc/my.cnf - elif [[ ${MemTotal} -ge 32768 ]]; then - sed -i "s#^key_buffer_size.*#key_buffer_size = 1024M#" /etc/my.cnf - sed -i "s#^table_open_cache.*#table_open_cache = 4096#" /etc/my.cnf - sed -i "s#^sort_buffer_size.*#sort_buffer_size = 16M#" /etc/my.cnf - sed -i "s#^read_buffer_size.*#read_buffer_size = 16M#" /etc/my.cnf - sed -i "s#^myisam_sort_buffer_size.*#myisam_sort_buffer_size = 256M#" /etc/my.cnf - sed -i "s#^thread_cache_size.*#thread_cache_size = 512#" /etc/my.cnf - sed -i "s#^query_cache_size.*#query_cache_size = 512M#" /etc/my.cnf - sed -i "s#^tmp_table_size.*#tmp_table_size = 512M#" /etc/my.cnf - sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = 4096M#" /etc/my.cnf - sed -i "s#^innodb_log_file_size.*#innodb_log_file_size = 1024M#" /etc/my.cnf - fi -} - -wget -O /etc/my.cnf $Download_Url/install/conf/mysql-%s.conf -T 5 -chmod 644 /etc/my.cnf -MySQL_Opt -''' % (version,) - ExecShell(shellStr) - #判断是否迁移目录 - if os.path.exists('data/datadir.pl'): - newPath = readFile('data/datadir.pl') - if os.path.exists(newPath): - mycnf = readFile('/etc/my.cnf') - mycnf = mycnf.replace('/www/server/data',newPath) - writeFile('/etc/my.cnf',mycnf) - WriteLog('TYPE_SOFE', 'MYSQL_CHECK_ERR') - return True - - -def GetSSHPort(): - try: - file = '/etc/ssh/sshd_config' - conf = ReadFile(file) - rep = "#*Port\s+([0-9]+)\s*\n" - port = re.search(rep, conf).groups(0)[0] - return int(port) - except: - return 22 - -def get_sshd_port(): - ''' - @name 获取sshd端口 - @author hwliang - @return int - ''' - # 先尝试从进程中获取当前实际的监听端口 - sshd_port = 22 - is_ok = 0 - pid = get_sshd_pid_of_pidfile() - if not pid: pid = get_sshd_pid_of_binfile() - if pid: - try: - import psutil - p = psutil.Process(pid) - for conn in p.connections(): - if conn.status == 'LISTEN': - sshd_port = conn.laddr[1] - is_ok = 1 - break - except:pass - - # 如果从进程获取失败,则尝试从配置文件获取 - if not is_ok: sshd_port = GetSSHPort() - - return sshd_port - - - -def get_sshd_pid_of_pidfile(): - ''' - @name 通过PID文件获取SSH状态 - @author hwliang - @return int 0:关闭 pid:开启 - ''' - sshd_pid_list =['/run/sshd.pid','/var/run/sshd.pid','/run/ssh.pid','/var/run/ssh.pid'] - sshd_pid_file = None - for spid_file in sshd_pid_list: - if os.path.exists(spid_file): - sshd_pid_file = spid_file - break - - if sshd_pid_file: - sshd_pid = readFile(sshd_pid_file) - if not sshd_pid: return 0 - try: - sshd_pid = int(sshd_pid) - if not sshd_pid: return 0 - if pid_exists(sshd_pid): - return sshd_pid - except: - pass - return 0 - -def get_sshd_pid_of_binfile(): - ''' - @name 通过执行文件获取SSH状态 - @author hwliang - @return int 进程pid - ''' - sshd_bin_list = ['/usr/sbin/sshd', '/usr/bin/sshd','/usr/sbin/ssh','/usr/bin/ssh'] - sshd_bin = None - pid = 0 - for sbin in sshd_bin_list: - if os.path.exists(sbin): - sshd_bin = sbin - break - - if sshd_bin: - pid = get_process_pid(sshd_bin.split('/')[-1],sshd_bin,'-D') - - return pid - -def GetSSHStatus(): - ''' - @name 获取SSH状态 - @author hwliang - @return bool - ''' - if get_sshd_pid_of_pidfile(): - return True - elif get_sshd_pid_of_binfile(): - return True - return False - - -def get_sshd_status(): - ''' - @name 获取SSH状态 - @author hwliang - @return bool - ''' - return GetSSHStatus() - - -#检查端口是否合法 -def CheckPort(port,other=None): - if type(port) == str: port = int(port) - if port < 1 or port > 65535: return False - if other: - checks = [22, 20, 21, 8888, 3306, 11211, 888, 25,7800] - if port in checks: return False - return True - -#获取Token -def GetToken(): - try: - from json import loads - tokenFile = 'data/token.json' - if not os.path.exists(tokenFile): return False - token = loads(readFile(tokenFile)) - return token - except: - return False - -def to_btint(string): - m_list = [] - for s in string: - m_list.append(ord(s)) - return m_list - -def load_module(pluginCode): - from imp import new_module - from BTPanel import cache - p_tk = 'data/%s' % md5(pluginCode + get_uuid()) - pluginInfo = None - skey = md5(pluginCode+'code') - if cache: pluginInfo = cache.get(skey) - if not pluginInfo: - import panelAuth - pdata = panelAuth.panelAuth().create_serverid(None) - pdata['pid'] = pluginCode - url = GetConfigValue('home') + '/api/panel/get_py_module' - pluginTmp = httpPost(url, pdata) - try: - pluginInfo = json.loads(pluginTmp) - except: - if not os.path.exists(p_tk): return False - pluginInfo = json.loads(ReadFile(p_tk)) - if pluginInfo['status'] == False: return False - WriteFile(p_tk,json.dumps(pluginInfo)) - os.chmod(p_tk,384) - if cache: cache.set(skey,pluginInfo,1800) - - mod = sys.modules.setdefault(pluginCode, new_module(pluginCode)) - code = compile(pluginInfo['msg'].encode('utf-8'), pluginCode, 'exec') - mod.__file__ = pluginCode - mod.__package__ = '' - exec (code, mod.__dict__) - return mod - -#解密数据 -def auth_decode(data): - token = GetToken() - #是否有生成Token - if not token: return returnMsg(False,'REQUEST_ERR') - - #校验access_key是否正确 - if token['access_key'] != data['btauth_key']: return returnMsg(False,'REQUEST_ERR') - - #解码数据 - import binascii,hashlib,urllib,hmac,json - tdata = binascii.unhexlify(data['data']) - - #校验signature是否正确 - signature = binascii.hexlify(hmac.new(token['secret_key'], tdata, digestmod=hashlib.sha256).digest()) - if signature != data['signature']: return returnMsg(False,'REQUEST_ERR') - - #返回 - return json.loads(urllib.unquote(tdata)) - - -#数据加密 -def auth_encode(data): - token = GetToken() - pdata = {} - - #是否有生成Token - if not token: return returnMsg(False,'REQUEST_ERR') - - #生成signature - import binascii,hashlib,urllib,hmac,json - tdata = urllib.quote(json.dumps(data)) - #公式 hex(hmac_sha256(data)) - pdata['signature'] = binascii.hexlify(hmac.new(token['secret_key'], tdata, digestmod=hashlib.sha256).digest()) - - #加密数据 - pdata['btauth_key'] = token['access_key'] - pdata['data'] = binascii.hexlify(tdata) - pdata['timestamp'] = time.time() - - #返回 - return pdata - -#检查Token -def checkToken(get): - tempFile = 'data/tempToken.json' - if not os.path.exists(tempFile): return False - import json, time - tempToken = json.loads(readFile(tempFile)) - if time.time() > tempToken['timeout']: return False - if get.token != tempToken['token']: return False - return True - -#获取识别码 -def get_uuid(): - import uuid - return uuid.UUID(int=uuid.getnode()).hex[-12:] - -#取计算机名 -def get_hostname(): - import socket - return socket.gethostname() - - -#取mysql datadir -def get_datadir(): - mycnf_file = '/etc/my.cnf' - if not os.path.exists(mycnf_file): return '' - mycnf = readFile(mycnf_file) - import re - tmp = re.findall(r"datadir\s*=\s*(.+)",mycnf) - if not tmp: return '' - return tmp[0] - - -#进程是否存在 -def process_exists(pname,exe = None,cmdline = None): - try: - import psutil - pids = psutil.pids() - for pid in pids: - try: - p = psutil.Process(pid) - if p.name() == pname: - if not exe and not cmdline: - return True - else: - if exe: - if p.exe() == exe: return True - if cmdline: - if cmdline in p.cmdline(): return True - except: - pass - return False - except: return True - -def get_process_pid(pname,exe = None,cmdline = None): - ''' - @name 通过进程名获取进程PID - @author hwliang - @param pname 进程名 - @param exe 进程路径 - @param cmdline 进程任意命令行参数 - @return int 返回进程PID - ''' - import psutil - pids = psutil.pids() - for pid in pids: - try: - p = psutil.Process(pid) - if p.name() == pname: - if not exe and not cmdline: - return pid - else: - if exe: - if p.exe() == exe: - if not cmdline: - return pid - return 0 - if cmdline: - if cmdline in p.cmdline(): return pid - except:pass - return 0 - -#pid是否存在 -def pid_exists(pid): - if os.path.exists('/proc/{}/exe'.format(pid)): - return True - return False - - -# 重启面板 -def restart_panel(): - import system - return system.system().ReWeb(None) - -#获取mac -def get_mac_address(): - import uuid - mac = uuid.UUID(int=uuid.getnode()).hex[-12:] - return ":".join([mac[e:e + 2] for e in range(0, 11, 2)]) - - -# 转码 -def to_string(lites): - if type(lites) != list: lites = [lites] - m_str = '' - for mu in lites: - if sys.version_info[0] == 2: - m_str += unichr(mu).encode('utf-8') - else: - m_str += chr(mu) - return m_str - -#解码 -def to_ord(string): - o = [] - for s in string: - o.append(ord(s)) - return o - -#xss 防御 -def xssencode(text): - try: - from cgi import html - list=['`','~','&','#','/','*','$','@','<','>','\"','\'',';','%',',','.','\\u'] - ret=[] - for i in text: - if i in list: - i='' - ret.append(i) - str_convert = ''.join(ret) - text2=html.escape(str_convert, quote=True) - return text2 - except: - return text.replace('&', '&').replace('"', '"').replace('<', '<').replace('>', '>') - -def html_decode(text): - ''' - @name HTML解码 - @author hwliang - @param text 要解码的HTML - @return string 返回解码后的HTML - ''' - try: - from cgi import html - text2=html.unescape(text) - return text2 - except: - return text - -def html_encode(text): - ''' - @name HTML编码 - @author hwliang - @param text 要编码的HTML - @return string 返回编码后的HTML - ''' - try: - from cgi import html - text2=html.escape(text) - return text2 - except: - return text - -#xss 防御 -def xsssec(text): - return text.replace('&', '&').replace('"', '"').replace('<', '<').replace('>', '>') - -#xss 防御 -def xsssec2(text): - return text.replace('<', '<').replace('>', '>') - -#xss version -def xss_version(text): - try: - if not text or not isinstance(text,str): return text - text = text.strip() - list=['`','~','&','#','/','*','$','@','<','>','\"','\'',';','%',',','\\u'] - ret=[] - for i in text: - if i in list: - i='' - ret.append(i) - str_convert = ''.join(ret) - return str_convert - except: - return text.replace('&', '&').replace('"', '"').replace('<', '<').replace('>', '>') - -#获取数据库配置信息 -def get_mysql_info(): - data = {} - try: - CheckMyCnf() - myfile = '/etc/my.cnf' - mycnf = readFile(myfile) - rep = "datadir\s*=\s*(.+)\n" - data['datadir'] = re.search(rep,mycnf).groups()[0] - rep = "port\s*=\s*([0-9]+)\s*\n" - data['port'] = re.search(rep,mycnf).groups()[0] - except: - data['datadir'] = '/www/server/data' - data['port'] = '3306' - return data - - -#xss 防御 -def xssencode2(text): - try: - from cgi import html - text2=html.escape(text, quote=True) - return text2 - except: - return text.replace('&', '&').replace('"', '"').replace('<', '<').replace('>', '>') -# 取缓存 -def cache_get(key): - from BTPanel import cache - return cache.get(key) - -def add_security_logs(type,log,is_ip=True): - try: - if is_ip: - from flask import request - log=GetClientIp() + ":" + str(request.environ.get('REMOTE_PORT')) + log - M('security').add('type,log,addtime', (type,log,time.strftime('%Y-%m-%d %X',time.localtime()))) - except: - pass - -# 设置缓存 -def cache_set(key,value,timeout = None): - from BTPanel import cache - if value=='check': - admin_path="/www/server/panel/data/admin_path.pl" - path=ReadFile(admin_path) - if path and len(path)>3: - if not cache.get(GetClientIp()+'admin_path_info'): - add_security_logs("Security entrance correct", "Successfully accessed the security entrance") - cache.set(GetClientIp() + 'admin_path_info', 1, 60) - return cache.set(key,value,timeout) - -# 删除缓存 -def cache_remove(key): - from BTPanel import cache - return cache.delete(key) - -# 取session值 -def sess_get(key): - from BTPanel import session - if key in session: return session[key] - return None - -# 设置或修改session值 -def sess_set(key, value): - from BTPanel import session - session[key] = value - return True - -# 删除指定session值 -def sess_remove(key): - from BTPanel import session - if key in session: del (session[key]) - return True - -# 构造分页 -def get_page(count,p=1,rows=12,callback='',result='1,2,3,4,5,8'): - import page - try: - from BTPanel import request - uri = url_encode(request.full_path) - except: - uri = '' - page = page.Page() - info = { 'count':count, 'row':rows, 'p':p, 'return_js':callback ,'uri':uri} - data = { 'page': page.GetPage(info,result), 'shift': str(page.SHIFT), 'row': str(page.ROW) } - return data - -# 取面板版本 -def version(): - try: - comm = ReadFile('{}/common.py'.format(get_class_path())) - return re.search("g\.version\s*=\s*'(\d+\.\d+\.\d+)'",comm).groups()[0] - except: - return get_panel_version() - -def get_panel_version(): - comm = ReadFile('{}/common.py'.format(get_class_path())) - s_key = 'g.version = ' - s_len = len(s_key) - s_leff = comm.find(s_key) + s_len - version = comm[s_leff:s_leff+10].strip().strip("'") - return version - - -def get_os_version(): - ''' - @name 取操作系统版本 - @author hwliang<2021-08-07> - @return string - ''' - p_file = '/etc/.productinfo' - if os.path.exists(p_file): - s_tmp = readFile(p_file).split("\n") - if s_tmp[0].find('Kylin') != -1 and len(s_tmp) > 1: - version = s_tmp[0] + ' ' + s_tmp[1].split('/')[0].strip() - else: - version = readFile('/etc/redhat-release') - if not version: - version = readFile('/etc/issue').strip().split("\n")[0].replace('\\n','').replace('\l','').strip() - else: - version = version.replace('release ','').replace('Linux','').replace('(Core)','').strip() - v_info = sys.version_info - try: - version = "{} {}(Py{}.{}.{})".format(version,os.uname().machine,v_info.major,v_info.minor,v_info.micro) - except: - version = "{} (Py{}.{}.{})".format(version,v_info.major,v_info.minor,v_info.micro) - return xsssec(version) - -#取文件或目录大小 -def get_path_size(path, exclude=[]): - """根据排除目录获取路径的总大小 - - :path 目标路径 - :exclude 排除路径单个字符串或者多个列表。匹配路径是基于path的相对路径,规则是 - tar命令的--exclude规则的子集。 - """ - import fnmatch - if not os.path.exists(path): return 0 - if os.path.isfile(path): return os.path.getsize(path) - if type(exclude) != type([]): - exclude = [exclude] - - path = path[0:-1] if path[-1] == "/" else path - path = os.path.normcase(path) - # print("path:"+ path) - # print("exclude:"+ str(exclude)) - _exclude = exclude[0:] - for i, e in enumerate(_exclude): - if not e.startswith(path): - basename = os.path.basename(path) - if not e.startswith(basename): - exclude.append(os.path.join(path, e)) - else: - new_exc = e.replace(basename+"/", "") - new_exc = os.path.join(path, new_exc) - exclude.append(new_exc) - - # print(exclude) - total_size = 0 - count = 0 - for root, dirs, files in os.walk(path, topdown=True): - # filter path - for exc in exclude: - for d in dirs: - sub_dir = os.path.normcase(root+os.path.sep+d) - if fnmatch.fnmatch(sub_dir, exc) or d==exc: - # print("排除目录:"+sub_dir) - dirs.remove(d) - count += 1 - for f in files: - to_exclude = False - count += 1 - filename = os.path.normcase(root+os.path.sep+f) - if not os.path.exists(filename): continue - if os.path.islink(filename): continue - # filter file - norm_filename = os.path.normcase(filename) - for fexc in exclude: - if fnmatch.fnmatch(norm_filename, fexc) or fexc==f: - to_exclude = True - # print("排除文件:"+norm_filename) - break - if to_exclude: - continue - total_size += os.path.getsize(filename) - return total_size - -#写关键请求日志 -def write_request_log(reques = None): - try: - from BTPanel import request,g,session - if session.get('debug') == 1: return - log_path = '{}/logs/request'.format(get_panel_path()) - log_file = getDate(format='%Y-%m-%d') + '.json' - if not os.path.exists(log_path): os.makedirs(log_path) - - log_data = [] - log_data.append(getDate()) - log_data.append(GetClientIp() + ':' + str(request.environ.get('REMOTE_PORT'))) - log_data.append(request.method) - log_data.append(request.full_path) - log_data.append(request.headers.get('User-Agent')) - if request.method == 'POST': - args = request.form.to_dict() - for k in args.keys(): - if k.find('pass') != -1 or k.find('user') != -1: - args[k] = '******' - if len(args[k]) > 4096: - args[k] = args[k][0:1024] + " -- >4096" - log_data.append(str(args)) - else: - log_data.append('{}') - log_data.append(int((time.time() - g.request_time) * 1000)) - log_data.append(g.response.status_code) - log_data.append(g.response.content_length) - log_data.append(g.response.headers.get('Content-Type')) - log_data.append(request.headers.get('Host')) - log_data.append(str(reques)) - log_msg = json.dumps(log_data) + "\n" - WriteFile(log_path + '/' + log_file,log_msg,'a+') - rep_sys_path() - except: - pass - -#重载模块 -def mod_reload(mode): - if not mode: return False - try: - if sys.version_info[0] == 2: - reload(mode) - else: - import imp - imp.reload(mode) - return True - except: return False - -#设置权限 -def set_mode(filename,mode): - if not os.path.exists(filename): return False - mode = int(str(mode),8) - try: - os.chmod(filename,mode) - except: - return False - return True - -def create_linux_user(user,group): - ''' - @name 创建系统用户 - @author hwliang<2022-01-15> - @param user 用户名 - @param group 所属组 - @return bool - ''' - ExecShell("groupadd {}".format(group)) - ExecShell('useradd -s /sbin/nologin -g {} {}'.format(user,group)) - return True - -#设置用户组 -def set_own(filename,user,group=None): - if not os.path.exists(filename): return False - from pwd import getpwnam - try: - user_info = getpwnam(user) - user = user_info.pw_uid - if group: - user_info = getpwnam(group) - group = user_info.pw_gid - except: - if user == 'www': create_linux_user(user,group) - #如果指定用户或组不存在,则使用www - try: - user_info = getpwnam('www') - except: - create_linux_user(user,group) - user_info = getpwnam('www') - user = user_info.pw_uid - group = user_info.pw_gid - os.chown(filename, user, group) - return True - -#校验路径安全 -def path_safe_check(path,force=True): - if len(path) > 256: return False - checks = ['..','./','\\','%','$','^','&','*','~','"',"'",';','|','{','}','`'] - for c in checks: - if path.find(c) != -1: return False - if force: - rep = r"^[\w\s\.\/-]+$" - if not re.match(rep,path): return False - return True - -#取数据库字符集 -def get_database_character(db_name): - try: - db_obj = get_mysql_obj(db_name) - tmp = db_obj.query("show create database `%s`" % db_name.strip()) - c_type = str(re.findall(r"SET\s+([\w\d-]+)\s",tmp[0][1])[0]) - c_types = ['utf8','utf-8','gbk','big5','utf8mb4'] - if not c_type.lower() in c_types: return 'utf8' - return c_type - except: - return 'utf8' - -# 取mysql数据库对象 -def get_mysql_obj(db_name): - is_cloud_db = False - if db_name: - db_find = M('databases').where("name=?" ,db_name).find() - if db_find['sid']: - return get_mysql_obj_by_sid(db_find['sid']) - is_cloud_db = db_find['db_type'] in ['1',1] - if is_cloud_db: - import db_mysql - db_obj = db_mysql.panelMysql() - conn_config = json.loads(db_find['conn_config']) - try: - db_obj = db_obj.set_host(conn_config['db_host'],conn_config['db_port'],conn_config['db_name'],conn_config['db_user'],conn_config['db_password']) - except Exception as e: - raise PanelError(GetMySQLError(e)) - else: - import panelMysql - db_obj = panelMysql.panelMysql() - return db_obj - -# 取mysql数据库对像 By sid -def get_mysql_obj_by_sid(sid = 0,conn_config = None): - if sid in ['0','']: sid = 0 - if sid: - if not conn_config: conn_config = M('database_servers').where("id=?" ,sid).find() - import db_mysql - db_obj = db_mysql.panelMysql() - try: - db_obj = db_obj.set_host(conn_config['db_host'],conn_config['db_port'],None,conn_config['db_user'],conn_config['db_password']) - except Exception as e: - raise PanelError(GetMySQLError(e)) - else: - import panelMysql - db_obj = panelMysql.panelMysql() - return db_obj - -def GetMySQLError(e): - res = '' - if e.args[0] == 1045: - res = get_msg_gettext('Database username or password is wrong!') - if e.args[0] == 1049: - res = get_msg_gettext('database does not exist!') - if e.args[0] == 1044: - res = get_msg_gettext('No permission, or the specified database does not exist!') - if e.args[0] == 1062: - res = get_msg_gettext('Database already exists!') - if e.args[0] == 1146: - res = get_msg_gettext('Table does not exist!') - if e.args[0] == 2003: - res = get_msg_gettext('Database server connection failed!') - if e.args[0] == 1142: - res = get_msg_gettext('Insufficient user rights!') - if res: - res = res + "
" + str(e) + "
" - else: - res = str(e) - return res - - -def get_database_codestr(codeing): - wheres = { - 'utf8' : 'utf8_general_ci', - 'utf8mb4' : 'utf8mb4_general_ci', - 'gbk' : 'gbk_chinese_ci', - 'big5' : 'big5_chinese_ci' - } - return wheres[codeing] - - -def get_database_size(name=None): - """ - @获取数据库大小 - """ - data = {} - try: - mysql_obj = get_mysql_obj(name) - tables = mysql_obj.query("select table_schema, (sum(DATA_LENGTH)+sum(INDEX_LENGTH)) as data from information_schema.TABLES group by table_schema") - if type(tables) == list: - for x in tables: - if len(x) < 2:continue - if x[1] == None:continue - data[x[0]] = int(x[1]) - except: return data - return data - -def get_database_size_by_name(name): - """ - @获取数据库大小 - """ - data = 0 - try: - mysql_obj = get_mysql_obj(name) - tables = mysql_obj.query("select table_schema, (sum(DATA_LENGTH)+sum(INDEX_LENGTH)) as data from information_schema.TABLES WHERE table_schema='{}' group by table_schema".format(name)) - data = tables[0][1] - if not data: data = 0 - except: return data - return data - -def get_database_size_by_id(id): - """ - @获取数据库大小 - """ - data = 0 - try: - name = M('databases').where('id=?',id).getField('name') - mysql_obj = get_mysql_obj(name) - tables = mysql_obj.query("select table_schema, (sum(DATA_LENGTH)+sum(INDEX_LENGTH)) as data from information_schema.TABLES WHERE table_schema='{}' group by table_schema".format(name)) - data = tables[0][1] - if not data: data = 0 - except: - return data - return data - - -def en_punycode(domain): - if sys.version_info[0] == 2: - domain = domain.encode('utf8') - tmp = domain.split('.') - newdomain = '' - for dkey in tmp: - if dkey == '*': continue - #匹配非ascii字符 - match = re.search(u"[\x80-\xff]+",dkey) - if not match: match = re.search(u"[\u4e00-\u9fa5]+",dkey) - if not match: - newdomain += dkey + '.' - else: - if sys.version_info[0] == 2: - newdomain += 'xn--' + dkey.decode('utf-8').encode('punycode') + '.' - else: - newdomain += 'xn--' + dkey.encode('punycode').decode('utf-8') + '.' - if tmp[0] == '*': newdomain = "*." + newdomain - return newdomain[0:-1] - - - -#punycode 转中文 -def de_punycode(domain): - tmp = domain.split('.') - newdomain = '' - for dkey in tmp: - if dkey.find('xn--') >=0: - newdomain += dkey.replace('xn--','').encode('utf-8').decode('punycode') + '.' - else: - newdomain += dkey + '.' - return newdomain[0:-1] - -#取计划任务文件路径 -def get_cron_path(): - u_file = '/var/spool/cron/crontabs/root' - if not os.path.exists(u_file): - file = '/var/spool/cron/root' - else: - file = u_file - return file - -#加密字符串 -def en_crypt(key,strings): - try: - if type(strings) != bytes: strings = strings.encode('utf-8') - from cryptography.fernet import Fernet - f = Fernet(key) - result = f.encrypt(strings) - return result.decode('utf-8') - except: - #print(get_error_info()) - return strings - -#解密字符串 -def de_crypt(key,strings): - try: - if type(strings) != bytes: strings = strings.decode('utf-8') - from cryptography.fernet import Fernet - f = Fernet(key) - result = f.decrypt(strings).decode('utf-8') - return result - except: - #print(get_error_info()) - return strings - - -#获取IP限制列表 -def get_limit_ip(): - iplong_list = [] - try: - ip_file = 'data/limitip.conf' - if not os.path.exists(ip_file): return iplong_list - - from BTPanel import cache - ikey = 'limit_ip' - iplong_list = cache.get(ikey) - if iplong_list: return iplong_list - - iplong_list = [] - iplist = ReadFile(ip_file) - if not iplist:return iplong_list - iplist = iplist.strip() - for limit_ip in iplist.split(','): - if not limit_ip: continue - limit_ip = limit_ip.split('-') - iplong = {} - iplong['min'] = ip2long(limit_ip[0]) - if len(limit_ip) > 1: - iplong['max'] = ip2long(limit_ip[1]) - else: - iplong['max'] = iplong['min'] - iplong_list.append(iplong) - - cache.set(ikey,iplong_list,3600) - except:pass - return iplong_list - - -def is_api_limit_ip(ip_list,client_ip): - ''' - @name 判断IP是否在限制列表中 - @author hwliang<2022-02-10> - @param ip_list 限制IP列表 - @param client_ip 客户端IP - @return bool - ''' - iplong_list = [] - for limit_ip in ip_list: - if not limit_ip: continue - if limit_ip in ['*','all','0.0.0.0','0.0.0.0/0','0.0.0.0/24','0.0.0.0/32']: return True - limit_ip = limit_ip.split('-') - iplong = {} - iplong['min'] = ip2long(limit_ip[0]) - if len(limit_ip) > 1: - iplong['max'] = ip2long(limit_ip[1]) - else: - iplong['max'] = iplong['min'] - iplong_list.append(iplong) - - client_ip_long = ip2long(client_ip) - for limit_ip in iplong_list: - if client_ip_long >= limit_ip['min'] and client_ip_long <= limit_ip['max']: - return True - return False - - - - - -#检查IP白名单 -def check_ip_panel(): - iplong_list = get_limit_ip() - if not iplong_list: return False - client_ip = GetClientIp() - if client_ip in ['127.0.0.1','localhost','::1']: return False - client_ip_long = ip2long(client_ip) - for limit_ip in iplong_list: - if client_ip_long >= limit_ip['min'] and client_ip_long <= limit_ip['max']: - return False - - # errorStr = ReadFile('./BTPanel/templates/' + GetConfigValue('template') + '/error2.html') - # try: - # errorStr = errorStr.format(getMsg('PAGE_ERR_TITLE'),getMsg('PAGE_ERR_IP_H1'),getMsg('PAGE_ERR_IP_P1',(GetClientIp(),)),getMsg('PAGE_ERR_IP_P2'),getMsg('PAGE_ERR_IP_P3'),getMsg('NAME'),getMsg('PAGE_ERR_HELP')) - # except IndexError:pass - # return error_not_login(errorStr,True) - return error_403(None) - -#检查面板域名 -def check_domain_panel(): - tmp = GetHost() - domain = ReadFile('data/domain.conf') - if domain: - client_ip = GetClientIp() - if client_ip in ['127.0.0.1','localhost','::1']: return False - if tmp.strip().lower() != domain.strip().lower(): - if check_client_info(): - try: - from flask import render_template - return render_template('error2.html') - except:pass - - return error_403(None) - return False - -#是否离线模式 -def is_local(): - s_file = '{}/data/not_network.pl'.format(get_panel_path()) - return os.path.exists(s_file) - - -#自动备份面板数据 -def auto_backup_panel(): - try: - panel_paeh = get_panel_path() - paths = panel_paeh + '/data/not_auto_backup.pl' - if os.path.exists(paths): return False - b_path = '{}/panel'.format(get_backup_path()) - day_date = format_date('%Y-%m-%d') - backup_path = b_path + '/' + day_date - backup_file = backup_path + '.zip' - if os.path.exists(backup_path) or os.path.exists(backup_file): return True - ignore_default = '' - ignore_system = '' - max_size = 100 * 1024 * 1024 - if os.path.getsize('{}/data/default.db'.format(panel_paeh)) > max_size: - ignore_default = 'default.db' - if os.path.getsize('{}/data/system.db'.format(panel_paeh)) > max_size: - ignore_system = 'system.db' - os.makedirs(backup_path,384) - import shutil - shutil.copytree(panel_paeh + '/data',backup_path + '/data',ignore = shutil.ignore_patterns(ignore_system,ignore_default)) - shutil.copytree(panel_paeh + '/config',backup_path + '/config') - shutil.copytree(panel_paeh + '/vhost',backup_path + '/vhost') - ExecShell("cd {} && zip {} -r {}/".format(b_path,backup_file,day_date)) - ExecShell("chmod -R 600 {path};chown -R root.root {path}".format(path=backup_file)) - if os.path.exists(backup_path): shutil.rmtree(backup_path) - - time_now = time.time() - (86400 * 30) - for f in os.listdir(b_path): - if f.endswith(".zip") and time.mktime(time.strptime(f, "%Y-%m-%d.zip")) < time_now: - path = b_path + '/' + f - b_file = path #+ '.zip' - #if os.path.exists(path): - #shutil.rmtree(path) - if os.path.exists(b_file): - os.remove(b_file) - set_php_cli_env() - except:pass - - - -def set_php_cli_env(): - ''' - @name 重新设置php-cli.ini配置 - ''' - import jobs - jobs.set_php_cli_env() - - - - -#检查端口状态 -def check_port_stat(port,localIP = '127.0.0.1'): - import socket - temp = {} - temp['port'] = port - temp['local'] = True - try: - s = socket.socket() - s.settimeout(0.15) - s.connect((localIP,port)) - s.close() - except: - temp['local'] = False - - result = 0 - if temp['local']: result +=2 - return result - - -#同步时间 -def sync_date(): - tip_file = "/dev/shm/last_sync_time.pl" - s_time = int(time.time()) - try: - if os.path.exists(tip_file): - if s_time - int(readFile(tip_file)) < 60: return False - os.remove(tip_file) - time_str = HttpGet(GetConfigValue('home') + '/api/index/get_time') - new_time = int(time_str) - time_arr = time.localtime(new_time) - date_str = time.strftime("%Y-%m-%d %H:%M:%S", time_arr) - ExecShell('date -s "%s"' % date_str) - writeFile(tip_file,str(s_time)) - return True - except: - if os.path.exists(tip_file): os.remove(tip_file) - return False - - -#重载模块 -def reload_mod(mod_name = None): - #是否重载指定模块 - modules = [] - if mod_name: - if type(mod_name) == str: - mod_names = mod_name.split(',') - - for mod_name in mod_names: - if mod_name in sys.modules: - print(mod_name) - try: - if sys.version_info[0] == 2: - reload(sys.modules[mod_name]) - else: - importlib.reload(sys.modules[mod_name]) - modules.append([mod_name,True]) - except: - modules.append([mod_name,False]) - else: - modules.append([mod_name,False]) - return modules - - #重载所有模块 - for mod_name in sys.modules.keys(): - if mod_name in ['BTPanel']: continue - f = getattr(sys.modules[mod_name],'__file__',None) - if f: - try: - if f.find('panel/') == -1: continue - if sys.version_info[0] == 2: - reload(sys.modules[mod_name]) - else: - importlib.reload(sys.modules[mod_name]) - modules.append([mod_name,True]) - except: - modules.append([mod_name,False]) - return modules - - -def de_hexb(data): - if sys.version_info[0] != 2: - if type(data) == str: data = data.encode('utf-8') - pdata = base64.b64encode(data) - if sys.version_info[0] != 2: - if type(pdata) == str: pdata = pdata.encode('utf-8') - return binascii.hexlify(pdata) - -def en_hexb(data): - if sys.version_info[0] != 2: - if type(data) == str: data = data.encode('utf-8') - result = base64.b64decode(binascii.unhexlify(data)) - if type(result) != str: result = result.decode('utf-8') - return result - -# def upload_file_url(filename): -# try: -# if os.path.exists(filename): -# data = ExecShell('/usr/bin/curl https://scanner.baidu.com/enqueue -F archive=@%s' % filename) -# data = json.loads(data[0]) -# time.sleep(1) -# import requests -# default_headers = { -# 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' -# } -# data_list = requests.get(url=data['url'], headers=default_headers, verify=False) -# return (data_list.json()) -# else: -# return False -# except: -# return False - -#直接请求到PHP-FPM -#version php版本 -#uri 请求uri -#filename 要执行的php文件 -#args 请求参数 -#method 请求方式 -def request_php(version,uri,document_root,method='GET',pdata=b''): - import panelPHP - if type(pdata) == dict: pdata = url_encode(pdata) - fpm_address = get_fpm_address(version) - p = panelPHP.FPM(fpm_address,document_root) - result = p.load_url_public(uri,pdata,method) - return result - - -def get_fpm_address(php_version,bind=False): - ''' - @name 获取FPM请求地址 - @author hwliang<2020-10-23> - @param php_version string PHP版本 - @return tuple or string - ''' - fpm_address = '/tmp/php-cgi-{}.sock'.format(php_version) - php_fpm_file = '{}/php/{}/etc/php-fpm.conf'.format(get_setup_path(),php_version) - try: - fpm_conf = readFile(php_fpm_file) - tmp = re.findall(r"listen\s*=\s*(.+)",fpm_conf) - if not tmp: return fpm_address - if tmp[0].find('sock') != -1: return fpm_address - if tmp[0].find(':') != -1: - listen_tmp = tmp[0].split(':') - if bind: - fpm_address = (listen_tmp[0],int(listen_tmp[1])) - else: - fpm_address = ('127.0.0.1',int(listen_tmp[1])) - else: - fpm_address = ('127.0.0.1',int(tmp[0])) - return fpm_address - except: - return fpm_address - - -def get_php_proxy(php_version,webserver = 'nginx'): - ''' - @name 获取PHP代理地址 - @author hwliang<2020-10-24> - @param php_version string php版本 (52|53|54|55|56|70|71|72|73|74) - @param webserver string web服务器类型 (nginx|apache|ols) - return string - ''' - php_address = get_fpm_address(php_version) - if isinstance(php_address,str): - if webserver == 'nginx': - return 'unix:{}'.format(php_address) - elif webserver == 'apache': - return 'unix:{}|fcgi://localhost'.format(php_address) - else: - if webserver == 'nginx': - return '{}:{}'.format(php_address[0],php_address[1]) - elif webserver == 'apache': - return 'fcgi://{}:{}'.format(php_address[0],php_address[1]) - -def get_php_version_conf(conf): - ''' - @name 从指定配置文件获取PHP版本 - @author hwliang<2020-10-24> - @param conf string 配置文件内容 - @return string - ''' - if not conf: return '00' - if conf.find('enable-php-') != -1: - rep = r"enable-php-(\w{2,5})[-\w]*\.conf" - tmp = re.findall(rep,conf) - if not tmp: return '00' - elif conf.find('/usr/local/lsws/lsphp') != -1: - rep = r"path\s*/usr/local/lsws/lsphp(\d+)/bin/lsphp" - tmp = re.findall(rep,conf) - if not tmp: return '00' - else: - rep = r"php-cgi-([0-9]{2,3})\.sock" - tmp = re.findall(rep,conf) - if not tmp: - rep = r'\d+\.\d+\.\d+\.\d+:10(\d{2,2})1' - tmp = re.findall(rep,conf) - if not tmp: - return '00' - return tmp[0] - - -def get_site_php_version(siteName): - ''' - @name 获取指定网站当前使用的PHP版本 - @author hwliang<2020-10-24> - @param siteName string 网站名称 - @return string - ''' - web_server = get_webserver() - vhost_path = get_vhost_path() - conf = readFile(vhost_path + '/'+web_server+'/'+siteName+'.conf') - if web_server == 'openlitespeed': - conf = readFile(vhost_path + '/' + web_server + '/detail/' + siteName + '.conf') - return get_php_version_conf(conf) - - -def check_tcp(ip,port): - ''' - @name 使用TCP的方式检测指定IP:端口是否能连接 - @author hwliang<2021-06-01> - @param ip IP地址 - @param port 端口 - @return bool - ''' - import socket - try: - s = socket.socket() - s.settimeout(5) - s.connect((ip.strip(),int(port))) - s.close() - except: - return False - return True - - -def sub_php_address(conf_file,rep,tsub,php_version): - ''' - @name 替换新的PHP配置到配置文件 - @author hwliang<2020-10-24> - @param conf_file string 配置文件全路径 - @param rep string 用于查找目标替换内容的正则表达式 - @param tsub string 新的内容 - @param php_version string 指定PHP版本 - @return bool - ''' - if not os.path.isfile(conf_file): return False - if not os.path.exists(conf_file): return False - conf = readFile(conf_file) - if not conf: return False - #if conf.find('#PHP') == -1 and conf.find('pathinfo.conf') == -1: return False - if conf_file.split('-')[-1].find(php_version+".") != 0: - phpv = get_php_version_conf(conf) - if phpv != php_version: return False - - tmp = re.search(rep,conf) - if not tmp: return False - if tmp.group() == tsub: return False - conf = conf.replace(tmp.group(),tsub) #re.sub(rep,php_proxy,conf) - writeFile(conf_file,conf) - return True - - -def sync_all_address(): - ''' - @name 同步所有PHP版本配置到配置文件 - @author hwliang<2020-10-24> - @return void - ''' - php_versions = get_php_versions() - for phpv in php_versions: - sync_php_address(phpv) - -def sync_php_address(php_version): - ''' - @name 同步PHP版本配置到所有配置文件 - @author hwliang<2020-10-24> - @param php_version string PHP版本 - @return void - ''' - if not os.path.exists('{}/php/{}/bin/php'.format(get_setup_path(),php_version)): # 指定PHP版本是否安装 - return False - ngx_rep = r"(unix:/tmp/php-cgi.*\.sock|\d+\.\d+\.\d+\.\d+:\d+)" - apa_rep = r"(unix:/tmp/php-cgi.*\.sock\|fcgi://localhost|fcgi://\d+\.\d+\.\d+\.\d+:\d+)" - ngx_proxy = get_php_proxy(php_version,'nginx') - apa_proxy = get_php_proxy(php_version,'apache') - is_write = False - - #nginx的PHP配置文件 - nginx_conf_path = '{}/nginx/conf'.format(get_setup_path()) - - if os.path.exists(nginx_conf_path): - for f_name in os.listdir(nginx_conf_path): - if f_name.find('enable-php') != -1: - conf_file = '/'.join((nginx_conf_path,f_name)) - if sub_php_address(conf_file,ngx_rep,ngx_proxy,php_version): - is_write = True - #nginx的phpmyadmin - # conf_file = '/www/server/nginx/conf/nginx.conf' - # if os.path.exists(conf_file): - # if sub_php_address(conf_file,ngx_rep,ngx_proxy,php_version): - # is_write = True - - #apache的网站配置文件 - apache_conf_path = '{}/apache'.format(get_vhost_path()) - if os.path.exists(apache_conf_path): - for f_name in os.listdir(apache_conf_path): - conf_file = '/'.join((apache_conf_path,f_name)) - if sub_php_address(conf_file,apa_rep,apa_proxy,php_version): - is_write = True - #apache的phpmyadmin - conf_file = '{}/apache/conf/extra/httpd-vhosts.conf'.format(get_setup_path()) - if os.path.exists(conf_file): - if sub_php_address(conf_file,apa_rep,apa_proxy,php_version): - is_write = True - - if is_write: serviceReload() - return True - - - - -def url_encode(data): - if type(data) != str: return data - if sys.version_info[0] != 2: - import urllib.parse - pdata = urllib.parse.quote(data) - else: - import urllib - pdata = urllib.urlencode(data) - return pdata - -def url_decode(data): - if type(data) != str: return data - if sys.version_info[0] != 2: - import urllib.parse - pdata = urllib.parse.unquote(data) - else: - import urllib - pdata = urllib.urldecode(data) - return pdata - - -def unicode_encode(data): - try: - if sys.version_info[0] == 2: - result = unicode(data,errors='ignore') - else: - result = data.encode('utf8',errors='ignore') - return result - except: return data - -def unicode_decode(data,charset = 'utf8'): - try: - if sys.version_info[0] == 2: - result = unicode(data,errors='ignore') - else: - result = data.decode('utf8',errors='ignore') - return result - except: return data - -def import_cdn_plugin(): - plugin_path = 'plugin/static_cdn' - if not os.path.exists(plugin_path): return True - try: - import static_cdn_main - except: - package_path_append(plugin_path) - import static_cdn_main - - -def get_cdn_hosts(): - try: - if import_cdn_plugin(): return [] - import static_cdn_main - return static_cdn_main.static_cdn_main().get_hosts(None) - except: - return [] - -def get_cdn_url(): - try: - if os.path.exists('plugin/static_cdn/not_open.pl'): - return False - from BTPanel import cache - cdn_url = cache.get('cdn_url') - if cdn_url: return cdn_url - if import_cdn_plugin(): return False - import static_cdn_main - cdn_url = static_cdn_main.static_cdn_main().get_url(None) - cache.set('cdn_url',cdn_url,3) - return cdn_url - except: - return False - -def set_cdn_url(cdn_url): - if not cdn_url: return False - import_cdn_plugin() - get = dict_obj() - get.cdn_url = cdn_url - import static_cdn_main - static_cdn_main.static_cdn_main().set_url(get) - return True - -def get_python_bin(): - bin_file = '{}/pyenv/bin/python3'.format(get_panel_path()) - if os.path.exists(bin_file): - return bin_file - return '/usr/bin/python' - -def get_pip_bin(): - bin_file = '{}/pyenv/bin/pip'.format(get_panel_path()) - if os.path.exists(bin_file): - return bin_file - return '/usr/bin/pip' - -def aes_encrypt(data,key): - import panelAes - if sys.version_info[0] == 2: - aes_obj = panelAes.aescrypt_py2(key) - return aes_obj.aesencrypt(data) - else: - aes_obj = panelAes.aescrypt_py3(key) - return aes_obj.aesencrypt(data) - -def aes_decrypt(data,key): - import panelAes - if sys.version_info[0] == 2: - aes_obj = panelAes.aescrypt_py2(key) - return aes_obj.aesdecrypt(data) - else: - aes_obj = panelAes.aescrypt_py3(key) - return aes_obj.aesdecrypt(data) - -#清理大日志文件 -def clean_max_log(log_file,max_size = 100,old_line = 100): - if not os.path.exists(log_file): return False - max_size = 1024 * 1024 * max_size - if os.path.getsize(log_file) > max_size: - try: - old_body = GetNumLines(log_file,old_line) - writeFile(log_file,old_body) - except: - print(get_error_info()) - -#获取证书哈希 -def get_cert_data(path): - import panelSSL - get = dict_obj() - get.certPath = path - data = panelSSL.panelSSL().GetCertName(get) - return data - -# 获取系统发行版 -def get_linux_distribution(): - distribution = 'ubuntu' - redhat_file = '/etc/redhat-release' - if os.path.exists(redhat_file): - try: - tmp = readFile(redhat_file).split()[3][0] - distribution = 'centos{}'.format(tmp) - except: - distribution = 'centos7' - return distribution - -def long2ip(ips): - ''' - @name 将整数转换为IP地址 - @author hwliang<2020-06-11> - @param ips string(ip地址整数) - @return ipv4 - ''' - i1 = int(ips / (2 ** 24)) - i2 = int((ips - i1 * ( 2 ** 24 )) / ( 2 ** 16 )) - i3 = int(((ips - i1 * ( 2 ** 24 )) - i2 * ( 2 ** 16 )) / ( 2 ** 8)) - i4 = int(((ips - i1 * ( 2 ** 24 )) - i2 * ( 2 ** 16 )) - i3 * ( 2 ** 8)) - return "{}.{}.{}.{}".format(i1,i2,i3,i4) - -def ip2long(ip): - ''' - @name 将IP地址转换为整数 - @author hwliang<2020-06-11> - @param ip string(ipv4) - @return long - ''' - ips = ip.split('.') - if len(ips) != 4: return 0 - iplong = 2 ** 24 * int(ips[0]) + 2 ** 16 * int(ips[1]) + 2 ** 8 * int(ips[2]) + int(ips[3]) - return iplong - -def is_local_ip(ip): - ''' - @name 判断是否为本地(内网)IP地址 - @author hwliang<2021-03-26> - @param ip string(ipv4) - @return bool - ''' - patt = r"^(192\.168|127|10|172\.(16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31))\." - if re.match(patt,ip): return True - return False - -#获取debug日志 -def get_debug_log(): - from BTPanel import request - return GetClientIp() +':'+ str(request.environ.get('REMOTE_PORT')) + '|' + str(int(time.time())) + '|' + get_error_info() - -#获取sessionid -def get_session_id(): - from BTPanel import request,app - session_id = request.cookies.get(app.config['SESSION_COOKIE_NAME'],'') - if not re.findall(r"^([\w\.-]{64,64})$",session_id): - return GetRandomString(64) - return session_id - -#尝试自动恢复面板数据库 -def rep_default_db(): - db_path = '{}/data/'.format(get_panel_path()) - db_file = db_path + 'default.db' - db_tmp_backup = db_path + 'default_' + format_date("%Y%m%d_%H%M%S") + ".db" - - panel_backup = '{}/panel'.format(get_backup_path()) - bak_list = os.listdir(panel_backup) - if not bak_list: return False - bak_list = sorted(bak_list,reverse=True) - db_bak_file = '' - for d_name in bak_list: - db_bak_file = panel_backup + '/' + d_name + '/data/default.db' - if not os.path.exists(db_bak_file): continue - if os.path.getsize(db_bak_file) < 17408: continue - break - - if not db_bak_file: return False - ExecShell("\cp -arf {} {}".format(db_file,db_tmp_backup)) - ExecShell("\cp -arf {} {}".format(db_bak_file,db_file)) - return True - - - -def chdck_salt(): - ''' - @name 检查所有用户密码是否加盐,若没有则自动加上 - @author hwliang<2020-07-08> - @return void - ''' - - if not M('sqlite_master').where('type=? AND name=? AND sql LIKE ?', ('table', 'users','%salt%')).count(): - M('users').execute("ALTER TABLE 'users' ADD 'salt' TEXT",()) - u_list = M('users').where('salt is NULL',()).field('id,username,password,salt').select() - if isinstance(u_list,str): - if u_list.find('no such table: users') != -1: - rep_default_db() - if not M('sqlite_master').where('type=? AND name=? AND sql LIKE ?', ('table', 'users','%salt%')).count(): - M('users').execute("ALTER TABLE 'users' ADD 'salt' TEXT",()) - u_list = M('users').where('salt is NULL',()).field('id,username,password,salt').select() - - for u_info in u_list: - salt = GetRandomString(12) #12位随机 - pdata = {} - pdata['password'] = md5(md5(u_info['password']+'_bt.cn') + salt) - pdata['salt'] = salt - M('users').where('id=?',(u_info['id'],)).update(pdata) - - -def get_login_token(): - token_s = readFile('{}/data/login_token.pl'.format(get_panel_path())) - if not token_s: return GetRandomString(32) - return token_s - -def get_sess_key(): - return md5(get_login_token() + get_csrf_sess_html_token_value()) - - -def password_salt(password,username=None,uid=None): - ''' - @name 为指定密码加盐 - @author hwliang<2020-07-08> - @param password string(被md5加密一次的密码) - @param username string(用户名) 可选 - @param uid int(uid) 可选 - @return string - ''' - chdck_salt() - if not uid: - if not username: - raise Exception('username或uid必需传一项') - uid = M('users').where('username=?',(username,)).getField('id') - salt = M('users').where('id=?',(uid,)).getField('salt') - return md5(md5(password+'_bt.cn')+salt) - -# 备份配置文件 -def back_file(file, act=None): - """ - @name 备份配置文件 - @author zhwen - @param file 需要备份的文件 - @param act 如果存在,则备份一份作为默认配置 - """ - file_type = "_bak" - if act: - file_type = "_def" - ExecShell("/usr/bin/cp -p {0} {1}".format(file, file + file_type)) - -# 还原配置文件 -def restore_file(file, act=None): - """ - @name 还原配置文件 - @author zhwen - @param file 需要还原的文件 - @param act 如果存在,则还原默认配置 - """ - file_type = "_bak" - if act: - file_type = "_def" - ExecShell("/usr/bin/cp -p {1} {0}".format(file, file + file_type)) - - -def package_path_append(path): - if not path in sys.path: - sys.path.insert(0, path) - - -def rep_sys_path(): - sys_path = [] - for p in sys.path: - if p in sys_path: continue - sys_path.append(p) - sys.path = sys_path - - -def get_ssh_port(): - ''' - @name 获取本机SSH端口 - @author hwliang<2020-08-07> - @return int - ''' - s_file = '/etc/ssh/sshd_config' - conf = readFile(s_file) - if not conf: conf = '' - port_all = re.findall(r".*Port\s+[0-9]+",conf) - ssh_port = 22 - for p in port_all: - rep = r"^\s*Port\s+([0-9]+)\s*" - tmp1 = re.findall(rep,p) - if tmp1: - ssh_port = int(tmp1[0]) - - return ssh_port - -def set_error_num(key,empty = False,expire=3600): - ''' - @name 设置失败次数(每调用一次+1) - @author hwliang<2020-08-21> - @param key 索引 - @param empty 是否清空计数 - @param expire 计数器生命周期(秒) - @return bool - ''' - from BTPanel import cache - key = md5(key) - num = cache.get(key) - if not num: - num = 0 - else: - if empty: - cache.delete(key) - return True - cache.set(key,num + 1,expire) - return True - -def get_error_num(key,limit=False): - ''' - @name 获取失败次数 - @author hwliang<2020-08-21> - @param key 索引 - @param limit 如果为False,则直接返回失败次数,否则与失败次数比较,若大于失败次数返回True,否则返回False - @return int or bool - ''' - from BTPanel import cache - key = md5(key) - num = cache.get(key) - if not num: num = 0 - if not limit: - return num - if limit > num: - return True - return False - - -def get_menus(): - ''' - @name 获取菜单列表 - @author hwliang<2020-08-31> - @return list - ''' - from BTPanel import session - data = json.loads(ReadFile('config/menu.json')) - hide_menu = ReadFile('config/hide_menu.json') - debug = session.get('debug') - if hide_menu: - hide_menu = json.loads(hide_menu) - show_menu = [] - for i in range(len(data)): - if data[i]['id'] in hide_menu: continue - if data[i]['id'] == "memuAxterm": - if debug: continue - show_menu.append(data[i]) - data = show_menu - del(hide_menu) - del(show_menu) - menus = sorted(data, key=lambda x: x['sort']) - return menus - - -#取CURL路径 -def get_curl_bin(): - ''' - @name 取CURL执行路径 - @author hwliang<2020-09-01> - @return string - ''' - c_bin = ['/usr/local/curl2/bin/curl','/usr/local/curl/bin/curl','/usr/bin/curl'] - for cb in c_bin: - if os.path.exists(cb): return cb - return 'curl' - - -#设置防跨站配置 -def set_open_basedir(): - try: - fastcgi_file = '{}/nginx/conf/fastcgi.conf'.format(get_setup_path()) - - if os.path.exists(fastcgi_file): - fastcgi_body = readFile(fastcgi_file) - if fastcgi_body.find('bt_safe_dir') == -1: - fastcgi_body = fastcgi_body + "\n"+'fastcgi_param PHP_ADMIN_VALUE "$bt_safe_dir=$bt_safe_open";' - writeFile(fastcgi_file,fastcgi_body) - - proxy_file = '{}/nginx/conf/proxy.conf'.format(get_setup_path()) - if os.path.exists(proxy_file): - proxy_body = readFile(proxy_file) - if proxy_body.find('bt_safe_dir') == -1: - proxy_body = proxy_body + "\n"+'''map "baota_dir" $bt_safe_dir { - default "baota_dir"; -} -map "baota_open" $bt_safe_open { - default "baota_open"; -} ''' - writeFile(proxy_file,proxy_body) - - open_basedir_path = '{}/open_basedir/nginx'.format(get_vhost_path()) - if not os.path.exists(open_basedir_path): - os.makedirs(open_basedir_path,384) - - site_list = M('sites').field('id,name,path').select() - for site_info in site_list: - set_site_open_basedir_nginx(site_info['name']) - except: return - - -#处理指定站点的防跨站配置 for Nginx -def set_site_open_basedir_nginx(siteName): - try: - return - open_basedir_path = '/www/server/panel/vhost/open_basedir/nginx' - if not os.path.exists(open_basedir_path): - os.makedirs(open_basedir_path,384) - config_file = '/www/server/panel/vhost/nginx/{}.conf'.format(siteName) - open_basedir_file = "/".join( - (open_basedir_path,'{}.conf'.format(siteName)) - ) - if not os.path.exists(config_file): return - if not os.path.exists(open_basedir_file): - writeFile(open_basedir_file,'') - config_body = readFile(config_file) - if config_body.find(open_basedir_path) == -1: - config_body = config_body.replace("include enable-php","include {};\n\t\tinclude enable-php".format(open_basedir_file)) - writeFile(config_file,config_body) - - root_path = re.findall(r"root\s+(.+);",config_body)[0] - if not root_path: return - userini_file = root_path + '/.user.ini' - if not os.path.exists(userini_file): - writeFile(open_basedir_file,'') - return - userini_body = readFile(userini_file) - if not userini_body: return - if userini_body.find('open_basedir') == -1: - writeFile(open_basedir_file,'') - return - - open_basedir_conf = re.findall("open_basedir=(.+)",userini_body) - if not open_basedir_conf: return - open_basedir_conf = open_basedir_conf[0] - open_basedir_body = '''set $bt_safe_dir "open_basedir"; -set $bt_safe_open "{}";'''.format(open_basedir_conf) - writeFile(open_basedir_file,open_basedir_body) - except: return - - -def run_thread(fun,args = (),daemon=False): - ''' - @name 使用线程执行指定方法 - @author hwliang<2020-10-27> - @param fun {def} 函数对像 - @param args {tuple} 参数元组 - @param daemon {bool} 是否守护线程 - @return bool - ''' - import threading - p = threading.Thread(target=fun,args=args) - p.setDaemon(daemon) - p.start() - return True - -def check_domain_cloud(domain): - run_thread(cloud_check_domain,(domain,)) - -def count_wp(): - run_thread(httpPost('http://brandnew.aapanel.com/api/setupCount/setupWP',{})) - -def cloud_check_domain(domain): - ''' - @name 从云端验证域名的可访问性,并将结果保存到文件 - @author hwliang<2020-12-10> - @param domain {string} 被验证的域名 - @return void - ''' - try: - check_domain_path = '{}/data/check_domain/'.format(get_panel_path()) - if not os.path.exists(check_domain_path): - os.makedirs(check_domain_path,384) - pdata = get_user_info() - pdata['domain'] = domain - result = httpPost('https://www.aapanel.com/api/panel/checkDomain',{"domain":domain}) - cd_file = check_domain_path + domain +'.pl' - writeFile(cd_file,result) - except: - pass - -def get_mac_address(): - import uuid - mac=uuid.UUID(int = uuid.getnode()).hex[-12:] - return ":".join([mac[e:e+2] for e in range(0,11,2)]) - -def get_user_info(): - user_file = '{}/data/userInfo.json'.format(get_panel_path()) - if not os.path.exists(user_file): return {} - userInfo = {} - try: - userTmp = json.loads(readFile(user_file)) - userInfo['uid'] = userTmp['id'] - userInfo['username'] = userTmp['username'] - userInfo['serverid'] = userTmp['serverid'] - userInfo['oem'] = get_oem_name() - userInfo['o'] = userInfo['oem'] - except: pass - return userInfo - - - - -def send_file(data,fname='',mimetype = ''): - ''' - @name 以文件流的形式返回 - @author heliang<2020-10-27> - @param data {bytes|string} 文件数据或路径 - @param mimetype {string} 文件类型 - @param fname {string} 文件名 - @return Response - ''' - d_type = type(data) - from io import BytesIO,StringIO - from flask import send_file as send_to - if d_type == bytes: - fp = BytesIO(data) - else: - if len(data) < 128: - if os.path.exists(data): - fp = data - if not fname: - fname = os.path.basename(fname) - else: - fp = StringIO(data) - else: - fp = StringIO(data) - - if not mimetype: mimetype = "application/octet-stream" - if not fname: fname = 'doan.txt' - - import flask - if flask.__version__ < "2.1.0": - return send_to(fp, - mimetype=mimetype, - as_attachment=True, - add_etags=True, - conditional=True, - attachment_filename=fname, - cache_timeout=0) - else: - return send_to(fp, - mimetype=mimetype, - as_attachment=True, - etag=True, - conditional=True, - download_name=fname, - max_age=0) - -def gen_password(length=8,chars=string.ascii_letters+string.digits): - from random import choice - return ''.join([choice(chars) for i in range(length)]) - -def get_ipaddress(): - ''' - @name 获取本机IP地址 - @author hwliang<2020-11-24> - @return list - ''' - ipa_tmp = ExecShell("ip a |grep inet|grep -v inet6|grep -v 127.0.0.1|grep -v 'inet 192.168.'|grep -v 'inet 10.'|awk '{print $2}'|sed 's#/[0-9]*##g'")[0].strip() - iplist = ipa_tmp.split('\n') - return iplist - -def get_oem_name(): - ''' - @name 获取OEM名称 - @author hwliang<2021-03-24> - @return string - ''' - oem = '' - oem_file = '{}/data/o.pl'.format(get_panel_path()) - if os.path.exists(oem_file): - oem = readFile(oem_file) - if oem: oem = oem.strip() - return oem - -def get_pdata(): - ''' - @name 构造POST基础参数 - @author hwliang<2021-03-24> - @return dict - ''' - import panelAuth - pdata = panelAuth.panelAuth().create_serverid(None) - pdata['oem'] = get_oem_name() - return pdata - - -# 名称输入系列化 -def xssdecode(text): - try: - cs = {""":'"',"'":"'"} - for c in cs.keys(): - text = text.replace(c,cs[c]) - - str_convert = text - if sys.version_info[0] == 3: - import html - text2 = html.unescape(str_convert) - else: - text2 = cgi.unescape(str_convert) - return text2 - except: - return text - -def fetch_disk_SN(): - r,e = ExecShell("fdisk -l |grep 'Disk identifier' |awk {'print $3'}") - if r: - return r.split('\n')[0] - -def fetch_cpu_ID(): - r, e = ExecShell("cat /proc/cpuinfo|grep microcode|awk -F':' '{print $2}'") - if r: - return r.split('\n')[0] - -def get_hostname(): - import socket - return socket.getfqdn(socket.gethostname()) - -def get_platform(): - import platform - return platform.platform() - -def get_memory(): - import psutil - return psutil.virtual_memory().total - -def fetch_env_info(): - import panelAuth - userInfo = panelAuth.panelAuth().create_serverid(None) - try: - return {'ip': GetLocalIp(), - 'is_ipv6': 0, - 'os': get_platform(), - 'mac': get_mac_address(), - 'hdid': fetch_disk_SN(), - 'ramid': get_memory(), - 'cpuid': fetch_cpu_ID(), - 'server_name': get_hostname(), - 'install_code': userInfo['server_id'] - } - except: - return {} - -def arequests(method,url,data=None,timeout=3): - import threading - if method == 'post': - method = httpPost - else: - method = httpGet - threading.Thread(target=method, args=(url,data,timeout)).start() - -#取通用对象 -re_key_match = re.compile(r'^[\w\s\[\]\-\.]+$') -re_key_match2 = re.compile(r'^\.?__[\w\s[\]\-]+__\.?$') -key_filter_list = ['get','set','get_items','exists','__contains__','__setitem__','__getitem__','__delitem__','__delattr__','__setattr__','__getattr__','__class__'] -class dict_obj: - def __contains__(self, key): - return getattr(self,key,None) - def __setitem__(self, key, value): - if key in key_filter_list: - raise PanelError("wrong field name") - if not re_key_match.match(key) or re_key_match2.match(key): - raise PanelError("wrong field name") - setattr(self,key,value) - def __getitem__(self, key): return getattr(self,key,None) - def __delitem__(self,key): delattr(self,key) - def __delattr__(self, key): delattr(self,key) - def get_items(self): return self - def exists(self,keys): - return exists_args(keys,self) - def set(self,key,value): - if not isinstance(value,str) or not isinstance(key,str): return False - if key in key_filter_list: - raise PanelError("wrong field name") - if not re_key_match.match(key) or re_key_match2.match(key): - raise PanelError("wrong field name") - return setattr(self,key,value) - - def get(self,key,default='',format='',limit = []): - ''' - @name 获取指定参数 - @param key 参数名称,允许在/后面限制参数格式,请参考参数值格式(format) - @param default 默认值,默认空字符串 - @param format 参数值格式(int|str|port|float|json|xss|path|url|ip|ipv4|ipv6|letter|mail|phone|正则表达式|>1|<1|=1),默认为空 - @param limit 限制参数值内容 - @param return mixed - ''' - if key.find('/') != -1: - key,format = key.split('/') - result = getattr(self,key,default) - if isinstance(result,str): result = result.strip() - if format: - if format in ['str','string','s']: - result = str(result) - elif format in ['int','d']: - try: - result = int(result) - except: - raise ValueError("Parameters: {}, requires int type data".format(key)) - elif format in ['float','f']: - try: - result = float(result) - except: - raise ValueError("Parameters: {}, float type data required".format(key)) - elif format in ['json','j']: - try: - result = json.loads(result) - except: - raise ValueError("Parameters: {}, requires JSON string".format(key)) - elif format in ['xss','x']: - result = xssencode(result) - elif format in ['path','p']: - if not path_safe_check(result): - raise ValueError("Parameters: {}, the correct path format is required".format(key)) - result = result.replace('//','/') - elif format in ['url','u']: - regex = re.compile( - r'^(?:http|ftp)s?://' - r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' - r'localhost|' - r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' - r'(?::\d+)?' - r'(?:/?|[/?]\S+)$', re.IGNORECASE) - if not re.match(regex,result): - raise ValueError('Parameters: {}, the correct URL format is required'.format(key)) - elif format in ['ip','ipaddr','i','ipv4','ipv6']: - if format == 'ipv4': - if not is_ipv4(result): - raise ValueError('Parameters: {}, the correct ipv4 address is required'.format(key)) - elif format == 'ipv6': - if not is_ipv6(result): - raise ValueError('Parameters: {}, the correct ipv6 address is required'.format(key)) - else: - if not is_ipv4(result) and not is_ipv6(result): - raise ValueError('Parameters: {}, the correct ipv4/ipv6 address is required'.format(key)) - elif format in ['w','letter']: - if not re.match(r'^\w+$',result): - raise ValueError('Parameters: {}, the requirement can only be composed of English letters'.format(key)) - elif format in ['email','mail','m']: - if not re.match(r"^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$",result): - raise ValueError("Parameters: {}, the correct email address format is required".format(key)) - elif format in ['phone','mobile','m']: - if not re.match("^[0-9]{11,11}$",result): - raise ValueError("Parameters: {}, mobile phone number format required".format(key)) - elif format in ['port']: - result_port = int(result) - if result_port > 65535 or result_port < 0: - raise ValueError("Parameters: {}, the required port number is 0-65535".format(key)) - result = result_port - elif re.match(r"^[<>=]\d+$",result): - operator = format[0] - length = int(format[1:].strip()) - result_len = len(result) - error_obj = ValueError("Parameters: {}, the required length is {}".format(key,format)) - if operator == '=': - if result_len != length: - raise error_obj - elif operator == '>': - if result_len < length: - raise error_obj - else: - if result_len > length: - raise error_obj - elif format[0] in ['^','(','[','\\','.'] or format[-1] in ['$',')',']','+','}']: - if not re.match(format,result): - raise ValueError("The format of the specified parameter is incorrect, {}:{}".format(key,format)) - - if limit: - if not result in limit: - raise ValueError("The specified parameter value range is incorrect, {}:{}".format(key,limit)) - return result - -#实例化定目录下的所有模块 -class get_modules: - - def __contains__(self, key): - return self.get_attr(key) - - def __setitem__(self, key, value): - setattr(self,key,value) - - def get_attr(self,key): - ''' - 尝试获取模块,若为字符串,则尝试实例化模块,否则直接返回模块对像 - ''' - res = getattr(self,key) - if isinstance(res,str): - try: - tmp_obj = __import__(key) - reload(tmp_obj) - setattr(self,key,tmp_obj) - return tmp_obj - except: - raise Exception(get_error_info()) - return res - - def __getitem__(self, key): - return self.get_attr(key) - - def __delitem__(self,key): - delattr(self,key) - - def __delattr__(self, key): - delattr(self,key) - - def get_items(self): - return self - - def __init__(self,path = "class",limit = None): - ''' - @name 加载指定目录下的模块 - @author hwliang<2020-08-03> - @param path 指定目录,可指定绝对目录,也可指定相对于/www/server/panel的相对目录 默认加载class目录 - @param limit 指定限定加载的模块名称,默认加载path目录下的所有模块 - @param object - - @example - p = get_modules('class') - if 'public' in p: - md5_str = p.public.md5('test') - md5_str = p['public'].md5('test') - md5_str = getattr(p['public'],'md5')('test') - else: - print(p.__dict__) - ''' - os.chdir(get_panel_path()) - exp_files = ['__init__.py','__pycache__'] - if not path in sys.path: - sys.path.insert(0,path) - for fname in os.listdir(path): - if fname in exp_files: continue - filename = '/'.join([path,fname]) - if os.path.isfile(filename): - if not fname[-3:] in ['.py','.so']: continue - mod_name = fname[:-3] - else: - c_file = '/'.join((filename,'__init__.py')) - if not os.path.exists(c_file): - continue - mod_name = fname - - if limit: - if not isinstance(limit,list) and not isinstance(limit,tuple): - limit = (limit,) - if not mod_name in limit: - continue - - setattr(self,mod_name,mod_name) - -#检查App和小程序的绑定 -def check_app(check='app'): - path=get_panel_path() + '/' - if check=='app': - try: - if not os.path.exists("/www/server/panel/plugin/btapp/btapp_main.py"): return False - if not os.path.exists(path+'config/api.json'):return False - if os.path.exists(path+'config/api.json'): - btapp_info = json.loads(readFile(path+'config/api.json')) - if not btapp_info['open']:return False - if not 'apps' in btapp_info:return False - if not btapp_info['apps']:return False - return True - return False - except: - return False - elif check=='app_bind': - if not cache_get(Md5(os.uname().version)):return False - if not os.path.exists("/www/server/panel/plugin/btapp/btapp_main.py"):return False - if not os.path.exists(path + 'config/api.json'):return False - btapp_info = json.loads(readFile(path +'config/api.json')) - if not btapp_info: return False - if not btapp_info['open']: return False - return True - elif check=='wxapp': - if not os.path.exists(path+'plugin/app/user.json'):return False - app_info = json.loads(readFile(path+'plugin/app/user.json')) - if not app_info: return False - return True - -# #宝塔邮件报警 -# def send_mail(title,body,is_logs=False,is_type="aapanel login reminder"): -# if is_logs: -# try: -# import send_mail -# send_mail22 = send_mail.send_mail() -# tongdao = send_mail22.get_settings() -# if tongdao['user_mail']['mail_list']==0:return False -# if not tongdao['user_mail']['info']: return False -# if len(tongdao['user_mail']['mail_list'])==1: -# send_mail=tongdao['user_mail']['mail_list'][0] -# send_mail22.qq_smtp_send(send_mail, title=title, body=body) -# else: -# send_mail22.qq_smtp_send(tongdao['user_mail']['mail_list'], title=title, body=body) -# if is_logs: -# WriteLog2(is_type, body) -# except: -# return False -# else: -# try: -# import send_mail -# send_mail22 = send_mail.send_mail() -# tongdao = send_mail22.get_settings() -# if tongdao['user_mail']['mail_list'] == 0: return False -# if not tongdao['user_mail']['info']: return False -# if len(tongdao['user_mail']['mail_list']) == 1: -# send_mail = tongdao['user_mail']['mail_list'][0] -# return send_mail22.qq_smtp_send(send_mail, title=title, body=body) -# else: -# return send_mail22.qq_smtp_send(tongdao['user_mail']['mail_list'], title=title, body=body) -# except: -# return False - -#宝塔邮件报警 -def send_mail(title,body,is_logs=False,is_type="aapanel login reminder"): - try: - import panelPush - msg_data = { - "msg": body.replace("\n", "
"), - "title": title - } - if is_logs: WriteLog2(is_type,body) - return panelPush.panelPush().push_message_immediately({"mail":msg_data}) - except Exception as ex: - return returnMsg(False,'Failed to send: {}'.format(ex)) - -#发送钉钉告警 -def send_dingding(body,is_logs=False,is_type="aapanel login reminder"): - try: - import panelPush - if is_logs: WriteLog2(is_type,body) - return panelPush.panelPush().push_message_immediately({"dingding":{"msg":body}}) - except Exception as ex: - return returnMsg(False,'Failed to send: {}'.format(ex)) - -# 发送微信告警 -def send_weixin(body,is_logs=False,is_type="aapanel login reminder"): - try: - import panelPush - if is_logs: WriteLog2(is_type,body) - return panelPush.panelPush().push_message_immediately({"weixin":{"msg":body}}) - except Exception as ex: - return returnMsg(False,'Failed to send: {}'.format(ex)) - -# 发送飞书告警 -def send_feishu(body,is_logs=False,is_type="aapanel login reminder"): - try: - import panelPush - if is_logs: WriteLog2(is_type,body) - return panelPush.panelPush().push_message_immediately({"feishu":{"msg":body}}) - except Exception as ex: - return returnMsg(False,'Failed to send: {}'.format(ex)) - -# 发送除短信以外的所有告警通道 -def send_all(body,title=None): - try: - import panelPush - msg_dict = {"msg":body} - msg_all = { - "feishu":msg_dict, - "weixin":msg_dict, - "dingding":msg_dict, - "mail":{ - "msg": body.replace("\n", "
"), - "title": title - } - } - return panelPush.panelPush().push_message_immediately(msg_all) - except Exception as ex: - return returnMsg(False,'Failed to send: {}'.format(ex)) - - - -#获取服务器IP -def get_ip(): - iplist_file = '{}/data/iplist.txt'.format(get_panel_path()) - if os.path.exists(iplist_file): - data=ReadFile(iplist_file) - return data.strip() - else:return '127.0.0.1' - -#获取服务器内网Ip -def get_local_ip(): - try: - ret=ExecShell("ip addr | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -E -v \"^127\.|^255\.|^0\.\" | head -n 1") - local_ip=ret[0].strip() - return local_ip - except:return '127.0.0.1' - -def create_logs(): - import db - sql = db.Sql() - if not sql.table('sqlite_master').where('type=? AND name=?', ('table', 'logs2')).count(): - csql = '''CREATE TABLE `logs2` ( - `id` INTEGER PRIMARY KEY AUTOINCREMENT, - `type` TEXT, - `log` TEXT, - `addtime` TEXT -, uid integer DEFAULT '1', username TEXT DEFAULT 'system')''' - sql.execute(csql, ()) - -def WriteLog2(type,logMsg,args=(),not_web = False): - import db - create_logs() - username = 'system' - uid = 1 - tmp_msg = '' - sql = db.Sql() - mDate = time.strftime('%Y-%m-%d %X',time.localtime()) - data = (uid,username,type,logMsg + tmp_msg,mDate) - result = sql.table('logs2').add('uid,username,type,log,addtime',data) - -def check_ip_white(path,ip): - if os.path.exists(path): - try: - path_json=json.loads(ReadFile(path)) - except: - WriteFile(path,'[]') - return False - if ip in path_json:return True - else:return False - else: - return False - - -def check_login_area(login_ip,login_type = 'panel'): - """ - @name 检测登录地区 - @login_type 登录类型 panel:宝塔面板登录, ssh:ssh登录 - """ - - login_ip_area = '' - ip_info = get_ips_area([login_ip]) - - if 'status' in ip_info: - login_ip_area = '****(Pro exclusive)' - else : - ip_info = ip_info[login_ip] - if not 'city' in ip_info: - login_ip_area = ip_info['info'] - - data = {} - status = False - sfile = '{}/data/{}_login_area.pl'.format(get_panel_path(),login_type) - s_conf = '{}/data/{}_login_area.json'.format(get_panel_path(),login_type) - if os.path.exists(sfile): - status = True - - data = {} - try: - data = json.loads(readFile(s_conf)) - except:pass - - if not login_ip_area and 'city' in ip_info: - city = ip_info['city'] - login_ip_area = ip_info['info'] - - if not city in data: - data[city] = 0 - - if data[city] < 3: - login_ip_area += '(异地)' - data[city] += 1 - - writeFile(s_conf,json.dumps(data)) - - data['login_ip_area'] = login_ip_area - return status,data - -def get_free_ips_area(ips): - ''' - @name 免费IP库 获取ip地址所在地 - @author cjxin - @param ips - @return list - ''' - import PluginLoader - args = dict_obj() - args.model_index = 'safe' - args.ips = ips - res = PluginLoader.module_run("freeip","get_ip_area",args) - return res - - -def get_free_ip_info(address): - ''' - @name 免费IP库 获取ip地址所在地 - @param ip - @return dict - ''' - ip = address.split(':')[0] - if not is_ipv4(ip): - return {'info':'unknow'} - if is_local_ip(ip): - return {'info':'intranet','local':True} - - ip_info = {} - sfile = '{}/data/ip_area.json'.format(get_panel_path()) - try: - ip_info = json.loads(readFile(sfile)) - except: pass - - if ip in ip_info: - return ip_info[ip] - try: - param = get_user_info() - param['ip'] = address - res = json.loads(httpPost('https://www.bt.cn/api/ip/info',param)) - - if address in res: - info = res[address] - ip_info[ip] = info - ip_info[ip]['info'] = '{} {} {} {}'.format(info['carrier'],info['country'],info['province'],info['city']).strip() - ip_info[ip]['ip'] = ip - writeFile(sfile,json.dumps(ip_info)) - return res[address] - except: pass - - return {'info':'Unknown'} - -#使用免费IP库获取IP地区 -def free_login_area(login_ip,login_type = 'panel'): - """ - @name 使用免费IP库获取IP地区 - @login_type 登录类型 panel:宝塔面板登录, ssh:ssh登录 - """ - #判断是否开启免费IP库 - if os.path.exists('{}/data/{}_login_area.pl'.format(get_panel_path(),'btpanel')): - return False,{} - login_ip_area = '' - ip_info = get_free_ips_area([login_ip]) - if not login_ip in ip_info: - return False,{} - ip_info = ip_info[login_ip] - if not 'city' in ip_info: - login_ip_area = ip_info['info'] - status = True - s_conf = '{}/data/{}_login_area.json'.format(get_panel_path(),login_type) - data = {} - try: - data = json.loads(readFile(s_conf)) - except: - pass - if not login_ip_area and 'city' in ip_info: - city = ip_info['city'] - login_ip_area = ip_info['info'] - if len(city)>=1 and not city in data: - data[city] = 0 - if data[city] < 3: - if city=='Local': - login_ip_area += '(Intranet)' - else: - login_ip_area += '(Abnormal login)' - data[city] += 1 - writeFile(s_conf,json.dumps(data)) - data['login_ip_area'] = login_ip_area - return status,data - - -#登陆告警 -def login_send_body(is_type,username,login_ip,port): - send_type = "" - panel_path = get_panel_path() - login_send_type_conf = "/www/server/panel/data/panel_login_send.pl" - if os.path.exists(login_send_type_conf): - send_type=ReadFile(login_send_type_conf).strip() - else: - # 兼容之前的 - if os.path.exists("/www/server/panel/data/login_send_type.pl"): - send_type = readFile("/www/server/panel/data/login_send_type.pl") - else: - if os.path.exists('/www/server/panel/data/login_send_mail.pl'): - send_type = "mail" - if os.path.exists('/www/server/panel/data/login_send_dingding.pl'): - send_type = "dingding" - - #增加异地登录告警 - server_ip_area = login_ip+":"+port - login_aera_status,login_aera = free_login_area(login_ip=server_ip_area,login_type = 'panel') - if login_aera_status: - login_ip_area = ">Location:" + login_aera['login_ip_area'] - #如果存在归属地则修改日志内容 - time.sleep(0.2) - if cache_get(server_ip_area): - id=cache_get(server_ip_area) - logs=M("logs").where("id=?",id).getField("log") - data=M("logs").where("id=?",id).setField("log",logs+login_ip_area) - else: - login_ip_area = '' - - add_security_logs('login successful',server_ip_area + login_ip_area, False) - if not send_type: - return False - - object = init_msg(send_type.strip()) - if not object:return - - send_login_white = '{}/data/send_login_white.json'.format(panel_path) - if check_ip_white(send_login_white, login_ip): - return False - - if send_type == 'sms': - data={} - data['ip'] = get_server_ip() - data['local_ip'] = get_network_ip() - #不加内网IP,否则短信模板参数长度超过限制 - ip="{}(外)".format(data['ip']) - sm_args = {'name': '[' + ip+ ']', 'time': time.strftime('%Y-%m-%d %X',time.localtime()), 'type': '[' + is_type + ']', - 'user': username} - rdata = object.send_msg('login_panel', check_sms_argv(sm_args)) - else: - if login_ip_area: - plist = [ - ">Login type:" + is_type, - ">Account:" + username , - ">IP address:" + login_ip + ":" + port , - login_ip_area, - ">Login status:Success" - ] - else: - plist = [ - ">Login type:" + is_type, - ">Account:" + username, - ">IP address:" + login_ip + ":" + port, - ">Login status:Success" - ] - info = get_push_info("Panel Login Alert", plist) - object.push_data(info) - - - - # if send_type == "dingding": - # msg = "#### 堡塔登录提醒\n\n > 服务器 :"+get_ip()+"\n\n > 登录方式:"+is_type+"\n\n > 登录账号:"+username+"\n\n > 登录IP:"+login_ip+":"+port+"\n\n > 登录时间:"+time.strftime('%Y-%m-%d %X',time.localtime())+'\n\n > 登录状态: 成功' - # send_dingding(msg, False) - # elif send_type == "weixin": - # msg = "#### 堡塔登录提醒\n\n > 服务器 :"+get_ip()+"\n\n > 登录方式:"+is_type+"\n\n > 登录账号:"+username+"\n\n > 登录IP:"+login_ip+":"+port+"\n\n > 登录时间:"+time.strftime('%Y-%m-%d %X',time.localtime())+'\n\n > 登录状态: 成功' - # send_weixin(msg, False) - # elif send_type == "feishu": - # msg = "堡塔登录提醒\n > 服务器 :"+get_ip()+"\n > 登录方式:"+is_type+"\n > 登录账号:"+username+"\n > 登录IP:"+login_ip+":"+port+"\n > 登录时间:"+time.strftime('%Y-%m-%d %X',time.localtime())+'\n > 登录状态: 成功' - # send_feishu(msg, False) - -#普通模式下调用发送消息【设置登陆告警后的设置】 -#title= 发送的title -#body= 发送的body -#is_logs= 是否记录日志 -#is_type=发送告警的类型 -def send_to_body(title,body,is_logs=False,is_type="aaPanel email alert"): - login_send_mail = "{}/data/login_send_mail.pl".format(get_panel_path()) - login_send_dingding = "{}/data/login_send_dingding.pl".format(get_panel_path()) - if os.path.exists(login_send_mail): - if is_logs: - send_mail(title, body,True,is_type) - send_mail(title,body) - - if os.path.exists(login_send_dingding): - if is_logs: - send_dingding(body,True,is_type) - send_dingding(body) - -#普通发送消息 -#send_type= ["mail","dingding"] -#title =发送的头 -#body= 发送消息的内容 -def send_body_words(send_type,title,body): - if send_type=='mail': - return send_mail(title,body) - if send_type=='dingding': - return send_dingding(body) - -def return_is_send_info(): - import send_mail - send_mail22 = send_mail.send_mail() - tongdao = send_mail22.get_settings() - ret={} - ret['mail']=tongdao['user_mail']['user_name'] - ret['dingding']=tongdao['dingding']['dingding'] - return ret - - -def get_sys_path(): - ''' - @name 关键目录 - @author hwliang<2021-06-11> - @return tuple - ''' - a = ['/www','/usr','/','/dev','/home','/media','/mnt','/opt','/tmp','/var'] - c = ['/www/.Recycle_bin/','/www/backup/','/www/php_session/','/www/wwwlogs/','/www/server/','/etc/','/usr/','/var/','/boot/','/proc/','/sys/','/tmp/','/root/','/lib/','/bin/','/sbin/','/run/','/lib64/','/lib32/','/srv/'] - return a,c - - -def check_site_path(site_path): - ''' - @name 检查网站根目录是否为系统关键目录 - @author hwliang<2021-05-31> - @param site_path 网站根目录全路径 - @return bool - ''' - try: - if site_path in ['/','/usr','/dev','/home','/media','/mnt','/opt','/tmp','/var']: - return False - whites = ['/www/server/tomcat','/www/server/stop','/www/server/phpmyadmin'] - for w in whites: - if site_path.find(w) == 0: return True - a,error_paths = get_sys_path() - site_path = site_path.strip() - if site_path[-1] == '/': site_path = site_path[:-1] - if site_path in a: - return False - site_path += '/' - for ep in error_paths: - if site_path.find(ep) == 0: return False - return True - except: - return False - -def is_debug(): - debug_file = "{}/data/debug.pl".format(get_panel_path()) - return os.path.exists(debug_file) - - -class PanelError(Exception): - ''' - @name 宝塔通用异常对像 - @author hwliang<2021-06-25> - ''' - def __init__(self, value): - self.value = value - - def __str__(self): - return ("An error occurred while the panel was running: {}".format(str(self.value))) - -def sys_path_append(path): - ''' - @name 追加引用路径 - @author hwliang<2021-07-07> - @param path 路径 - @return void - ''' - try: - if not path in sys.path: - sys.path.insert(0,path) - except: pass - -def get_sysbit(): - ''' - @name 获取操作系统位数 - @author hwliang<2021-07-07> - @return int 32 or 64 - ''' - import struct - return struct.calcsize('P') * 8 - -def get_setup_path(): - ''' - @name 获取安装路径 - @author hwliang<2021-07-22> - @return string - ''' - return '/www/server' - -def get_panel_path(): - ''' - @name 取面板根目录 - @author hwliang<2021-07-14> - @return string - ''' - return '{}/panel'.format(get_setup_path()) - -def get_plugin_path(plugin_name = None): - ''' - @name 取指定插件目录 - @author hwliang<2021-07-14> - @param plugin_name 插件名称 不传则返回插件根目录 - @return string - ''' - - root_path = "{}/plugin".format(get_panel_path()) - if not plugin_name: return root_path - return "{}/{}".format(root_path,plugin_name) - -def get_class_path(): - ''' - @name 取类库所在路径 - @author hwliang<2021-07-14> - @return string - ''' - return "{}/class".format(get_panel_path()) - -def decode_data(srcBody): - """ - 遍历解码字符串 - """ - arrs = ['utf-8', 'GBK', 'ANSI', 'BIG5'] - for encoding in arrs: - try: - data = srcBody.decode(encoding) - return encoding, data - except: - pass - return False, None - -def get_logs_path(): - ''' - @name 取日志目录 - @author hwliang<2021-07-14> - @return string - ''' - return '/www/wwwlogs' - -def get_vhost_path(): - ''' - @name 取虚拟主机目录 - @author hwliang<2021-08-14> - @return string - ''' - return '{}/vhost'.format(get_panel_path()) - - -def get_backup_path(): - ''' - @name 取备份目录 - @author hwliang<2021-07-14> - @return string - ''' - default_backup_path = '/www/backup' - backup_path = M('config').where("id=?",(1,)).getField('backup_path') - if not backup_path: return default_backup_path - if os.path.exists(backup_path): return backup_path - return default_backup_path - -def get_site_path(): - ''' - @name 取站点默认存储目录 - @author hwliang<2021-07-14> - @return string - ''' - default_site_path = '/www/wwwroot' - site_path = M('config').where("id=?",(1,)).getField('sites_path') - if not site_path: return default_site_path - if os.path.exists(site_path): return site_path - return default_site_path - - -def read_config(config_name,ext_name = 'json'): - ''' - @name 读取指定配置文件 - @author hwliang<2021-07-14> - @param config_name 配置文件名称(不含扩展名) - @param ext_name 配置文件扩展名,默认为json - @return string 如果发生错误,将抛出PanelError异常 - ''' - config_file = "{}/config/{}.{}".format(get_panel_path(),config_name,ext_name) - if not os.path.exists(config_file): - raise PanelError('The specified configuration file {} does not exist'.format(config_name)) - - config_str = readFile(config_file) - if ext_name == 'json': - try: - config_body = json.loads(config_str) - except Exception as ex: - raise PanelError('Configuration files are not standard parsable JSON content!\n{}'.format(ex)) - return config_body - return config_str - -def save_config(config_name,config_body,ext_name = 'json'): - ''' - @name 保存配置文件 - @author hwliang<2021-07-14> - @param config_name 配置文件名称(不含扩展名) - @param config_body 被保存的内容, ext_name为json,请传入可解析为json的参数类型,如list,dict,int,str等 - @param ext_name 配置文件扩展名,默认为json - @return string 如果发生错误,将抛出PanelError异常 - ''' - - config_file = "{}/config/{}.{}".format(get_panel_path(),config_name,ext_name) - if ext_name == 'json': - try: - config_body = json.dumps(config_body) - except Exception as ex: - raise PanelError('The configuration content cannot be converted to json format!\n{}'.format(ex)) - - return writeFile(config_file,config_body) - -def get_config_value(config_name,key,default='',ext_name='json'): - ''' - @name 获取指定配置文件的指定配置项 - @author hwliang<2021-07-14> - @param config_name 配置文件名称(不含扩展名) - @param key 配置项 - @param default 获不存在则返回的默认值,默认为空字符串 - @param ext_name 配置文件扩展名,默认为json - @return mixed 如果发生错误,将抛出PanelError异常 - ''' - config_data = read_config(config_name,ext_name) - return config_data.get(key,default) - -def set_config_value(config_name,key,value,ext_name='json'): - ''' - @name 设置指定配置文件的指定配置项 - @author hwliang<2021-07-14> - @param config_name 配置文件名称(不含扩展名) - @param key 配置项 - @param value 配置值 - @param ext_name 配置文件扩展名,默认为json - @return mixed 如果发生错误,将抛出PanelError异常 - ''' - config_data = read_config(config_name,ext_name) - config_data[key] = value - return save_config(config_name,config_data,ext_name) - - -def return_data(status,data = {},status_code=None,error_msg = None): - ''' - @name 格式化响应内容 - @author hwliang<2021-07-14> - @param status 状态 - @param data 响应数据 - @param status_code 状态码 - @param error_msg 错误消息内容 - @return dict - - ''' - if status_code == None: - status_code = 1 if status else 0 - if error_msg == None: - error_msg = '' if status else 'unknown error' - - result = { - 'status':status, - "status_code":status_code, - 'error_msg':str(error_msg), - 'data':data - } - return result - - -def return_error(error_msg,status_code = -1,data = []): - ''' - @name 格式化错误响应内容 - @author hwliang<2021-07-15> - @param error_msg 错误消息 - @param status_code 状态码,默认为-1 - @param data 响应数据 - @return dict - ''' - if not data: data = error_msg - return return_data(False,data,status_code,str(error_msg)) - - -def error(error_msg,status_code = -1,data = []): - ''' - @name 格式化错误响应内容 - @author hwliang<2021-07-15> - @param error_msg 错误消息 - @param status_code 状态码,默认为-1 - @param data 响应数据 - @return dict - ''' - if not data: data = error_msg - return return_error(error_msg,status_code,data) - -def success(data = [],status_code = 1,error_msg = ''): - ''' - @name 格式化成功响应内容 - @author hwliang<2021-07-15> - @param data 响应数据 - @param status_code 状态码,默认为0 - @return dict - ''' - return return_data(True,data,status_code,error_msg) - - -def return_status_code(status_code,format_body,data = []): - ''' - @name 按状态码返回 - @author hwliang<2021-07-15> - @param status_code 状态码 - @param format_body 错误内容 - @param data 响应数据 - @return dict - ''' - error_msg = get_config_value('status_code',str(status_code)) - if not error_msg: raise PanelError('指定状态码不存在!') - return return_data(error_msg[0],data,status_code,error_msg[1].format(format_body)) - - -def to_dict_obj(data): - ''' - @name 将dict转换为dict_obj - @author hwliang<2021-07-15> - @param data 要被转换的数据 - @return dict_obj - ''' - if not isinstance(data,dict): - raise PanelError('错误的数据类型,只支持将dict转换为dict_obj') - pdata = dict_obj() - for key in data.keys(): - pdata[key] = data[key] - return pdata - -def get_script_object(filename): - ''' - @name 从脚本文件获取对像 - @author hwliang<2021-07-19> - @param filename 文件名 - @return object - ''' - _obj = sys.modules.get(filename,None) - if _obj: return _obj - from types import ModuleType - _obj = sys.modules.setdefault(filename, ModuleType(filename)) - _code = readFile(filename) - _code_object = compile(_code,filename, 'exec') - _obj.__file__ = filename - _obj.__package__ = '' - exec(_code_object, _obj.__dict__) - return _obj - -def check_hooks(): - ''' - @name 自动注册HOOK - @author hwliang<2021-07-19> - @return void - ''' - hooks_path = '{}/hooks'.format(get_panel_path()) - if not os.path.exists(hooks_path): - return - for hook_name in os.listdir(hooks_path): - if hook_name[-3:] != '.py': continue - filename = os.path.join(hooks_path,hook_name) - _obj = get_script_object(filename) - _main = getattr(_obj,'main',None) - if not _main: continue - _main() - -def register_hook(hook_index, hook_def): - ''' - @name 注册HOOK - @author hwliang<2021-07-15> - @param hook_index HOOK位置 - @param hook_def HOOK函数对像 - @return void - ''' - from BTPanel import hooks - hook_keys = hooks.keys() - if not hook_index in hook_keys: - hooks[hook_index] = [] - if not hook_def in hooks[hook_index]: - hooks[hook_index].append(hook_def) - -def exec_hook(hook_index, data): - ''' - @name 执行HOOk - @author hwliang<2021-07-15> - @param hook_index HOOK索引位置,格式限制:^\w+$ - @param data 运行数据 - @return mixed - ''' - - from BTPanel import hooks - hook_keys = hooks.keys() - if not hook_index in hook_keys: - return data - - for hook_def in hooks[hook_index]: - data = hook_def(data) - return data - -def get_hook_index(mod_name, def_name): - ''' - @name 获取HOOK位置 - @author hwliang<2021-07-19> - @param mod_name 模块名称 - @param def_name 方法名称 - @return tuple - ''' - mod_name = mod_name.upper() - def_name = def_name.upper() - last_index = '{}_{}_LAST'.format(mod_name, def_name) - end_index = '{}_{}_END'.format(mod_name, def_name) - return last_index, end_index - - -def flush_plugin_list(): - ''' - @name 刷新插件列表 - @author hwliang<2021-07-22> - @return bool - ''' - skey = 'TNaMJdG3mDHKRS6Y' - from BTPanel import cache - # from pluginAuth import Plugin - import PluginLoader - if cache.get(skey): cache.delete(skey) - PluginLoader.get_plugin_list(1) - return True - - -def get_session_timeout(): - ''' - @name 获取session过期时间 - @author hwliang<2021-07-28> - @return int - ''' - from BTPanel import cache - skey = 'session_timeout' - session_timeout = cache.get(skey) - if not session_timeout == None: return session_timeout - - sess_out_path = '{}/data/session_timeout.pl'.format(get_panel_path()) - session_timeout = 86400 - if not os.path.exists(sess_out_path): - return session_timeout - try: - session_timeout = int(readFile(sess_out_path)) - except: - session_timeout = 86400 - cache.set(skey,session_timeout,3600) - return session_timeout - - -def get_login_token_auth(): - ''' - @name 获取登录token - @author hwliang<2021-07-28> - @return string - ''' - from BTPanel import cache - skey = 'login_token' - login_token = cache.get(skey) - if not login_token == None: return login_token - - login_token_file = '{}/data/login_token.pl'.format(get_panel_path()) - login_token = '1234567890' - if not os.path.exists(login_token_file): - return login_token - login_token = readFile(login_token_file) - cache.set(skey,login_token,3600) - return login_token - - -def listen_ipv6(): - ''' - @name 是否监听ipv6 - @author hwliang<2021-08-12> - @return bool - ''' - ipv6_file = '{}/data/ipv6.pl'.format(get_panel_path()) - return os.path.exists(ipv6_file) - -def get_panel_log_file(): - ''' - @name 获取panel日志文件 - @author hwliang<2021-08-12> - @return string - ''' - return "{}/logs/error.log".format(get_panel_path()) - - -def print_log(_info,_level = 'DEBUG'): - ''' - @name 写入日志 - @author hwliang<2021-08-12> - @param _info 要写入到日志文件的信息 - @param _level 日志级别 - @return void - ''' - if type(_info) == dict: - _info = json.dumps(_info) - log_body = "[{}][{}] - {}\n".format(format_date(),_level.upper(),_info) - return WriteFile(get_panel_log_file(),log_body,'a+') - - -def print_error(): - ''' - @name 打印错误信息到日志文件 - @author hwliang - @return void - ''' - print_log(get_error_info(),'ERROR') - - -def to_date(format = "%Y-%m-%d %H:%M:%S",times = None): - ''' - @name 格式时间转时间戳 - @author hwliang<2021-08-17> - @param format 时间格式 - @param times 时间 - @return int - ''' - if times: - if isinstance(times,int): return times - if isinstance(times,float): return int(times) - if re.match("^\d+$",times): return int(times) - else: return 0 - ts = time.strptime(times, format) - return time.mktime(ts) - - -def get_glibc_version(): - ''' - @name 获取glibc版本 - @author hwliang<2021-08-17> - @return string - ''' - try: - cmd_result = ExecShell("ldd --version")[0] - if not cmd_result: return '' - glibc_version = cmd_result.split("\n")[0].split()[-1] - except: - return '' - return glibc_version - - -def is_apache_nginx(): - ''' - @name 是否是apache或nginx - @author hwliang<2021-08-17> - @return bool - ''' - setup_path = get_setup_path() - return os.path.exists(setup_path + '/apache') or os.path.exists(setup_path + '/nginx') - -def error_not_login(e=None, _src=None): - ''' - @name 未登录时且未输入正确的安全入口时的响应 - @author hwliang<2021-12-16> - @return Response - ''' - from BTPanel import Response, render_template, redirect, request - client_status = check_client_info() - x_http_token = request.headers.get('x-http-token') - if client_status == 1: - if x_http_token: - result = {"status": False, "code": -8888, "redirect": get_admin_path(), - "msg": "The current login session has been invalid, please login again!"} - return Response(json.dumps(result), mimetype='application/json', status=200) - return redirect(get_admin_path()) - elif client_status == 2: - if x_http_token: - result = {"status": False, "code": -8888, "redirect": "/login", "msg": "The current login session has been invalid, please login again!"} - return Response(json.dumps(result), mimetype='application/json', status=200) - return render_template('autherr.html') - - try: - abort_code = read_config('abort') - if not abort_code in [None, 1, 0, '0', '1']: - if abort_code == 404: return error_404(e) - if abort_code == 403: return error_403(e) - return Response(status=int(abort_code)) - except: - pass - - if e in ['/login']: - return redirect(e) - - if _src: - return e - else: - return error_404(e) - -def error_403(e): - from BTPanel import Response,session - # if not session.get('login',None): return error_not_login() - errorStr = ''' -403 Forbidden - -

403 Forbidden

-
nginx
- -''' - headers = { - "Content-Type": "text/html" - } - return Response(errorStr, status=403, headers=headers) - -def error_404(e): - from BTPanel import Response,session - # if not session.get('login',None): return error_not_login() - errorStr = ''' -404 Not Found - -

404 Not Found

-
nginx
- -''' - headers = { - "Content-Type": "text/html" - } - return Response(errorStr, status=404, headers=headers) - - -def get_password_config(): - ''' - @name 获取密码安全配置 - @author hwliang<2021-10-18> - @return int - ''' - import config - return config.config().get_password_config(None) - - -def password_expire_check(): - ''' - @name 密码过期检查 - @author hwliang<2021-10-18> - @return bool - ''' - p_config = get_password_config() - if p_config['expire'] == 0: return True - if time.time() > p_config['expire_time']: return False - return True - -def stop_status_mvore(): - flag=False - try: - nginx_path='/www/server/panel/vhost/nginx/btwaf.conf' - if os.path.exists(nginx_path): - ExecShell('mv %s %s.bak'%(nginx_path,nginx_path)) - flag=True - nginx_path='/www/server/panel/vhost/nginx/free_waf.conf' - if os.path.exists(nginx_path): - ExecShell('mv %s %s.bak'%(nginx_path,nginx_path)) - flag=True - apache_path='/www/server/panel/vhost/apache/btwaf.conf' - if os.path.exists(apache_path): - ExecShell('chattr -i %s && mv %s %s.bak'%(apache_path,apache_path,apache_path)) - flag=True - if flag: - serviceReload() - except: - pass - -def is_error_path(): - if os.path.exists("/www/server/panel/data/error_pl.pl"): - stop_status_mvore() - return True - return False - -def get_php_versions(reverse=False): - ''' - @name 取PHP版本列表 - @author hwliang<2021-12-16> - @param reverse 是否降序 - @return list - ''' - _file = get_panel_path() + '/config/php_versions.json' - if os.path.exists(_file): - version_list = json.loads(readFile(_file)) - else: - version_list = ['52','53','54','55','56','70','71','72','73','74','80','81','82','83','84'] - - return sorted(version_list,reverse=reverse) - -def get_full_session_file(): - ''' - @name 获取临时SESSION文件 - @author hwliang<2021-12-28> - @return string - ''' - from BTPanel import app - full_session_key = app.config['SESSION_KEY_PREFIX'] + get_session_id() - sess_path = get_panel_path() + '/data/session/' - return sess_path + '/' + md5(full_session_key) - - - -def install_mysql_client(): - ''' - @name 安装mysql客户端 - @author hwliang<2022-01-14> - @return void - ''' - if os.path.exists('/usr/bin/yum'): - os.system("yum install mariadb -y") - if not os.path.exists('/usr/bin/mysql'): - os.system("yum reinstall mariadb -y") - elif os.path.exists('/usr/bin/apt-get'): - os.system('apt-get install mariadb-client -y') - if not os.path.exists('/usr/bin/mysql'): - os.system('apt-get reinstall mariadb-client* -y') - -def get_mysqldump_bin(): - ''' - @name 获取mysqldump路径 - @author hwliang<2022-01-14> - @return string - ''' - bin_files = [ - '{}/mysql/bin/mysqldump'.format(get_setup_path()), - '/usr/bin/mysqldump', - '/usr/local/bin/mysqldump', - '/usr/sbin/mysqldump', - '/usr/local/sbin/mysqldump' - ] - - for bin_file in bin_files: - if os.path.exists(bin_file): - return bin_file - - install_mysql_client() - - for bin_file in bin_files: - if os.path.exists(bin_file): - return bin_file - - return bin_files[0] - -def get_mysql_bin(): - ''' - @name 获取mysql路径 - @author hwliang<2022-01-14> - @return string - ''' - bin_files = [ - '{}/mysql/bin/mysql'.format(get_setup_path()), - '/usr/bin/mysql', - '/usr/local/bin/mysql', - '/usr/sbin/mysql', - '/usr/local/sbin/mysql' - ] - - for bin_file in bin_files: - if os.path.exists(bin_file): - return bin_file - - install_mysql_client() - - for bin_file in bin_files: - if os.path.exists(bin_file): - return bin_file - return bin_files[0] - -def error_conn_cloud(text): - ''' - @name 连接云端失败 - @author hwliang<2021-12-18> - @return void - ''' - code_msg = '' - if text.find("502 Bad Gateway") != -1: - code_msg = '502 Bad Gateway' - if text.find("504 Bad Gateway") != -1: - code_msg = '504 Bad Gateway' - elif text.find("Connection refused") != -1: - code_msg = 'Connection refused' - elif text.find("Connection timed out") != -1: - code_msg = 'Connection timed out' - elif text.find("Connection reset by peer") != -1: - code_msg = 'Connection reset by peer' - elif text.find("Name or service not known") != -1: - code_msg = 'Name or service not known' - elif text.find("No route to host") != -1: - code_msg = 'No route to host' - elif text.find("No such file or directory") != -1: - code_msg = 'No such file or directory' - elif text.find("404 Not Found") != -1: - code_msg = '404 Not Found' - elif text.find("403 Forbidden") != -1: - code_msg = '403 Forbidden' - elif text.find("401 Unauthorized") != -1: - code_msg = '401 Unauthorized' - elif text.find("400 Bad Request") != -1: - code_msg = '400 Bad Request' - elif text.find("Remote end closed connection without response") != -1: - code_msg = 'Remote end closed connection' - err_template_file = '{}/BTPanel/templates/default/error_connect.html'.format(get_panel_path()) - msg = readFile(err_template_file) - msg = msg.format(code=code_msg) - return PanelError(msg) - -def get_mountpoint_list(): - ''' - @name 获取挂载点列表 - @author hwliang<2021-12-18> - @return list - ''' - import psutil - mount_list = [] - for mount in psutil.disk_partitions(): - mountpoint = mount.mountpoint if mount.mountpoint[-1] == '/' else mount.mountpoint + '/' - mount_list.append(mountpoint) - # 根据挂载点字符长度排序 - mount_list.sort(key=lambda i: len(i), reverse=True) - return mount_list - - -def get_path_in_mountpoint(path): - ''' - @name 获取文件或目录目录所在挂载点 - @author hwliang<2022-03-30> - @param path 文件或目录路径 - @return string - ''' - # 判断是否是绝对路径 - if path.find('./') != -1 or path[0] != '/': raise PanelError("不能使用相对路径") - if not path: raise PanelError("文件或目录路径不能为空") - - # 在目录尾加/ - if os.path.isdir(path): - path = path if path[-1] == '/' else path + '/' - - # 匹配挂载点 - mount_list = get_mountpoint_list() - for mountpoint in mount_list: - if path.startswith(mountpoint): - return mountpoint - - # 没有匹配到挂载点 - return '/' - -def get_recycle_bin_path(path): - ''' - @name 获取指定文件或目录的回收站路径 - @author hwliang<2022-03-30> - @param path 文件或目录路径 - @return string - ''' - mountpoint = get_path_in_mountpoint(path) - recycle_bin_path = '{}/.Recycle_bin/'.format(mountpoint) - try: - if not os.path.exists(recycle_bin_path): - os.mkdir(recycle_bin_path, 384) - except: - return '/www/.Recycle_bin/' - return recycle_bin_path - - -def get_recycle_bin_list(): - ''' - @name 获取回收站列表 - @author hwliang<2022-03-30> - @return list - ''' - # 旧的回收站重命名为.Recycle_bin - default_path = '/www/.Recycle_bin' - default_path_src = '/www/Recycle_bin' - if os.path.exists(default_path_src) and not os.path.exists(default_path): - try: - os.rename(default_path_src,default_path) - except: - ExecShell("mv {} {}".format(default_path_src,default_path)) - - if not os.path.exists(default_path): - os.makedirs(default_path,384) - - # 获取回收站列表 - recycle_bin_list = [] - mtime_list = [] # 修改时间 - for mountpoint in get_mountpoint_list(): - recycle_bin_path = '{}.Recycle_bin/'.format(mountpoint) - - try: - if not os.path.exists(recycle_bin_path): - os.mkdir(recycle_bin_path,384) - if not os.path.exists(recycle_bin_path): continue - mtime = os.path.getmtime(recycle_bin_path) - if mtime in mtime_list: continue # 通过修改时间去重 - mtime_list.append(mtime) - recycle_bin_list.append(recycle_bin_path) - except: - continue - - # 包含默认回收站路径? - if not default_path + '/' in recycle_bin_list: - recycle_bin_list.append(default_path + '/') - - return recycle_bin_list - - -def check_password(password): - """ - 密码强度: - 0 弱 - 1 中 - 2 强 - """ - l = 0 - low = False - up = False - symbol = False - digit = False - p_len = len(password) - if p_len < 8: - return l - for i in password: - if i.islower(): - low = True - if i.isupper(): - up = True - if i in ['~','!','@','#','$','%','^','&','*','(',')','_','-','=','+','<','>',',','.','/','"','|','\\',"'",'?']: - symbol = True - if i.isdigit(): - digit = True - # 判断重复出现 - tmp = len(set([i for i in password])) - if tmp >= 2: - if low and up and symbol and digit: - l = 2 - if p_len >= 11: - l = 1 - return l - -def set_module_logs(mod_name, fun_name, count=1): - """ - @模块使用次数 - @mod_name 模块名称 - @fun_name 函数名 - """ - import datetime - data = {} - path = '{}/data/mod_log.json'.format(get_panel_path()) - if os.path.exists(path): - try: - data = json.loads(readFile(path)) - except: - pass - - if type(data) != dict: - data = {} - - key = datetime.datetime.now().strftime("%Y-%m-%d") - if not key in data: data[key] = {} - - if not mod_name in data[key]: - data[key][mod_name] = {} - - if not fun_name in data[key][mod_name]: - data[key][mod_name][fun_name] = 0 - - data[key][mod_name][fun_name] += count - - writeFile(path, json.dumps(data)) - return True - - - -headers_filter_rules = None -def filter_headers(): - ''' - @name 过滤请求头 - @author hwliang<2021-12-18> - @return dict - ''' - global headers_filter_rules - - # 预编译过滤规则 - if not headers_filter_rules: - headers_filter_rules = { - 'host': re.compile(r'^[\w\.\-\:]+$'), - 'accept': re.compile(r'^[\w\s\.\-\*\/\,\=\;\+]+$'), - 'accept-encoding': re.compile(r'^[\w\s\.\-\*\/\,]+$'), - 'accept-language': re.compile(r'^[\w\s\.\-\*\/\,\=\:\;]+$'), - 'cache-control': re.compile(r'^[\w\s\.\-\=\;]+$'), - 'connection': re.compile(r'^[\w\s\.\-]+$'), - 'content-length': re.compile(r'^[\d]+$'), - 'cookie': re.compile(r'^[\w\s\=\%\+\&\;\:\@\$\,\.\-\_\*\/\?\!\~\#]+$'), - 'origin': re.compile(r'^(http|https)://[\w\.\-\?\=\&\/\:]+$'), - 'pragma': re.compile(r'^[\w\s\.\-]+$'), - 'referer': re.compile(r'^(http|https)://[\w\.\-\?\=\&\/\:\%\#\~\!\*\+\@]+$'), - 'user-agent': re.compile(r'^[\w\s\.\-\*\/\,\(\)\=\+\;\:\@\$\,\.\-\_\~\#]+$'), - 'x-cookie-token': re.compile(r'^\w+$'), - 'x-http-token': re.compile(r'^\w+$'), - 'X-KL-Ajax-Request': re.compile(r'^\w+$'), - 'X-Requested-With': re.compile(r'^\w+$') - } - from flask import request - headers = request.headers - skeys = headers_filter_rules.keys() - - for k in skeys: - v = headers.get(k,None) - if not v: continue - if not headers_filter_rules[k].match(v): - return False - return True - -def trim(data): - """ - @去除所有空格 - """ - return data.replace(' ','').strip() - - -def get_os(_os='windows'): - """ - @验证系统版本 - """ - src_os = 'windows' - if os.path.exists('/www/server/panel'): src_os = 'linux' - if src_os == _os: return True - return False - - -def get_file_list(path, flist): - """ - 递归获取目录所有文件列表 - @path 目录路径 - @flist 返回文件列表 - """ - if os.path.exists(path): - files = os.listdir(path) - flist.append(path) - for file in files: - if os.path.isdir(path + '/' + file): - get_file_list(path + '/' + file, flist) - else: - flist.append(path + '/' + file) - - -def writeFile2(filename, s_body, mode='w+'): - """ - 写入字节文件内容 - @filename 文件名 - @s_body 欲写入的内容 - - """ - try: - fp = open(filename, mode); - fp.write(s_body) - fp.close() - return True - except: - return False - - -def check_obj_upgrade(_obj,filename = None): - ''' - @name 检查指定模块是否修改 - @author hwliang - @param 文件名 - @param 模块对象 - @return void - ''' - - # 引用缓存 - try: - from BTPanel import cache - except: - return - - # 是否传递文件名? - if not filename: - filename = _obj.__file__ - - # 获取文件修改时间 - skey = "obj_up_{}".format(md5(filename)) - mtime = os.path.getmtime(filename) # 当前 - old_mtime = cache.get(skey) # 旧的 - - # 直接设置当前修改时间 - if not old_mtime: - cache.set(skey,mtime) - return - - # 检查是否修改 - if old_mtime == mtime: - return - - # 重新加载模块 - import importlib - importlib.reload(_obj) - cache.set(skey,mtime) - - -def version_to_tuple(version): - ''' - @name 将版本号转为元组 - @version 字符串版本号 - @return 元组版本号 - ''' - if not version: - return () - if not isinstance(version, str): - return version - version = re.sub(r"[^\.\d]+","",version) - version = version.split('.') - version = tuple(map(int, version)) - return version - - -def set_search_history(mod_name,key,val): - """ - @保存搜索历史 - @mod_name 模块名称 - @key 关键字 - @val string 搜索内容 - """ - if not val: return False - - max = 10 - p_file = get_panel_path() - m_file = p_file + '/data/search.limit' - d_file = p_file + '/data/search.json' - try: - sdata = int(readFile(m_file)) - if sdata: max = sdata - except: pass - - result = {} - try: - result = json.loads(readFile(d_file)) - except :pass - - if not mod_name in result: result[mod_name] = {} - if not key in result[mod_name]: result[mod_name][key] = [] - - n_list = [] - for item in result[mod_name][key]: - if item['val'].strip() != val.strip(): n_list.append(item) - - n_list.append({'val':val,'time':int(time.time())}) - - result[mod_name][key] = n_list[len(n_list) - max:] - - - writeFile(d_file,json.dumps(result)) - return True - -def get_search_history(mod_name,key): - """ - @获取搜索历史 - @mod_name string 模块名称 - @key string 关键字 - """ - print(mod_name,key) - result = [] - d_file = get_panel_path() + '/data/search.json' - try: - result = json.loads(readFile(d_file))[mod_name][key] - except :pass - - result = sorted(result, key=lambda x: x['time'], reverse=True) - - return result - - -def set_dir_history(mod_name,key,val): - """ - @设置目录打开历史 - @mod_name string 模块名称 - @key string 函数名 - @val string 路径 - """ - if not val: return False - - max = 10 - result = {} - d_file = get_panel_path() + '/data/dir_history.json' - try: - result = json.loads(readFile(d_file)) - except :pass - - if not mod_name in result: result[mod_name] = {} - if not key in result[mod_name]: result[mod_name][key] = [] - - data = result[mod_name][key] - for info in data: - if val.find(info['val']) >= 0: - if time.time() - info['time'] < 15: - data.remove(info) - - data.append({'val':val,'time':int(time.time())}) - result[mod_name][key] = data[0:max] - writeFile(d_file,json.dumps(result)) - return True - - -def get_dir_history(mod_name,key): - """ - @获取目录打开历史 - @mod_name string 模块名称 - @key string 关键字 - """ - result = [] - d_file = get_panel_path() + '/data/dir_history.json' - try: - result = json.loads(readFile(d_file))[mod_name][key] - except :pass - return result - -def get_run_pip(): - pass - -def install_pip(shell): - """ - @name 安装pip模块 - @author cjxin - @param shell 安装命令 - """ - if get_os('windows'): - os.system(get_run_pip(shell.replace('pip','[PIP]'))) - else: - os.system(shell.replace('pip','btpip')) - - -def is_domain(domain): - """ - @验证是否域名 - """ - reg = "^([\w\-\*]{1,100}\.){1,10}([\w\-]{1,24}|[\w\-]{1,24}\.[\w\-]{1,24})$"; - if re.match(reg, domain): return True - return False - -def init_msg(module): - """ - 初始化消息通道 - @module 消息通道模块名称 - """ - import os, sys - if not os.path.exists('class/msg'): os.makedirs('class/msg') - panelPath = get_panel_path() - - sfile = 'class/msg/{}_msg.py'.format(module) - if not os.path.exists(sfile): return False - sys.path.insert(0, "{}/class/msg".format(panelPath)) - - msg_main = __import__('{}_msg'.format(module)) - try: - mod_reload(msg_main) - except: - pass - return eval('msg_main.{}_msg()'.format(module)) - - -def push_argv(msg): - """ - @处理短信参数,否则会被拦截 - """ - if is_ipv4(msg): - tmp1 = msg.split('.') - msg = '{}.***.***.{}'.format(tmp1[0], tmp1[3]) - else: - if is_domain(msg): - msg = msg.replace('.', '_') - return msg - - -def check_sms_argv(data): - """ - @批量处理短信参数,否则会被拦截 - """ - for key in data: - val = data[key] - if type(val) == str: - data[key] = push_argv(val) - return data - -""" -@获取推送ip -""" -def get_push_address(): - ip = push_argv(GetLocalIp()) - return ip - - -def get_ips_area(ips): - ''' - @name 获取ip地址所在地 - @author cjxin - @param ips - @return list - ''' - import PluginLoader - - args = dict_obj() - args.model_index = 'safe' - args.ips = ips - - res = PluginLoader.module_run("ips","get_ip_area",args) - return res - -def return_area(result,key): - """ - @name 格式化返回带IP归属地的数组 - @param result 数据数组 - @param key ip所在字段 - @return list - """ - tmps = [] - for data in result: - data['area'] = '' - tmps.append(data[key]) - - res = get_ips_area(tmps) - if 'status' in res: return result - - for data in result: - if data[key] in res: - data['area'] = res[data[key]] - return result - -def get_network_ip(): - """ - @name 获取本机ip - @return string - """ - - import socket - try: - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - s.connect(('8.8.8.8', 80)) - ip = s.getsockname()[0] - return ip - finally: - s.close() - return '127.0.0.1' - -def get_server_ip(): - """ - @获取服务器外网ip - """ - - user_file = '{}/data/userInfo.json'.format(get_panel_path()) - if os.path.exists(user_file): - try: - userTmp = json.loads(readFile(user_file)) - return userTmp['address'] - except: pass - - return GetLocalIp() - - -def get_push_info(title,slist = []): - """ - @name 获取推送信息 - @param title 推送标题 - @param slist 推送追加的列表 - 如:slist = ['>发送内容:xxx'] - @return dict - """ - data = {} - data['title'] = title - data['ip'] = get_server_ip() - - data['local_ip'] = get_network_ip() - data['time'] = format_date() - data['server_name'] = GetConfigValue('title') - - dlist = [ - "#### {}".format(data['title']), - ">ServerHost: "+ data['server_name'] , - ">IP Address: {}(Internet) {}(Internal)".format(data['ip'],data['local_ip']) , - ">Send Time: " + data['time'] - ] - dlist.extend(slist) - msg = "\n\n".join(dlist) - data['msg'] = msg - data['list'] = dlist - return data - -def write_push_log(module,msg,res): - """ - @name 写推送日志 - @module string 模块名称 - @msg string 消息内容 - @res dict 推送结果 - """ - user = '' - for key in res: - status = 'Success' - if res[key] == 0: status = 'Fail' - user += '[ {}:{} ] '.format(key,status) - - if not user: user = '[ Default ] ' - try: - msg_obj = init_msg(module) - if msg_obj: module = msg_obj.get_version_info(None)['title'] - except:pass - - log = 'Title:[{}],method to informe:[{}],recipient:{}'.format(xsssec(msg),module,user) - WriteLog('Alarm notification',log) - return True - -def push_msg(module,data): - """ - @name 推送消息 - @param module 模块名称 - @param msg 消息内容 - @return dict - """ - msg_obj = init_msg(module) - if not msg_obj: - returnMsg(False,'Module {} does not exist!'.format(module)) - - res = msg_obj.push_data(data) - return res - -def check_chinese(data): - """ - @name 判断字符串是否包含中文 - """ - if re.search('[\u4e00-\u9fa5]',data): - return True - return False - -def is_ssl(): - ''' - @name 是否开启SSL - @author hwliang - @return bool - ''' - return os.path.exists(get_panel_path() + '/data/ssl.pl') - -def get_cookie(key,default=None): - ''' - @name 获取指定Cookie值 - @author hwliang - @param key Cookie键 - @param default 默认值 - @return str - ''' - from flask import request - return request.cookies.get(key,default) - -def get_csrf_cookie_token_key(): - ''' - @name 获取CSRF Cookie Key - @author hwliang - @return string - ''' - if is_ssl(): - token_key = 'request_token' - else: - token_key = 'request_token' - return token_key - - -def get_csrf_cookie_token_value(): - ''' - @name 获取CSRF Cookie Value - @author hwliang - @return string - ''' - token_key = get_csrf_cookie_token_key() - return get_cookie(token_key) - - -def get_csrf_html_token_key(): - ''' - @name 获取CSRF HTML Key - @author hwliang - @return string - ''' - if is_ssl(): - token_key = 'request_token_head' - else: - token_key = 'request_token_head' - return token_key - -def get_csrf_html_token_value(): - ''' - @name 获取CSRF HTML Value - @author hwliang - @return string - ''' - token_key = get_csrf_html_token_key() - return get_cookie(token_key) - -def get_csrf_sess_html_token_value(): - ''' - @name 从SESSION获取CSRF HTML value - @author hwliang - @return string - ''' - from flask import session - return session.get(get_csrf_html_token_key(),"") - -def get_csrf_sess_cookie_token_value(): - ''' - @name 从SESSION获取CSRF Cookie value - @author hwliang - @return string - ''' - from flask import session - return session.get(get_csrf_cookie_token_key(),"") - -def get_sys_install_bin(): - ''' - @name 获取系统包管理器命令 - @author hwliang - @return string - ''' - install_bins = ['/usr/bin/yum','/usr/bin/apt-get','/usr/bin/dnf'] - for bin in install_bins: - if os.path.exists(bin): - return bin - return '' - - - -def get_firewall_status(): - ''' - @name 获取系统防火墙状态 - @author hwliang - @return int 0.关闭 1.开启 -1.未安装 - ''' - import psutil - firewall_files = {'/usr/sbin/firewalld':"pid",'/usr/bin/firewalld':"pid",'/usr/sbin/ufw':"/usr/sbin/ufw status|grep 'Status: active'",'/sbin/ufw':"/sbin/ufw status |grep 'Status: active'",'/usr/sbin/iptables':"service iptables status|grep 'Chain INPUT'"} - for f in firewall_files.keys(): - if not os.path.exists(f): continue - _cmd = firewall_files[f] - if _cmd != "pid": - res = ExecShell(_cmd) - if res[0].strip(): - return 1 - else: - return 0 - for pid in psutil.pids(): - try: - p = psutil.Process(pid) - if f in p.cmdline(): - return 1 - except: pass - return 0 - return -1 - -def get_panel_port(): - ''' - @name 获取面板端口 - @author hwliang - @return int - ''' - port_file = '{}/data/port.pl'.format(get_panel_path()) - if not os.path.exists(port_file): - return 8888 - try: - return int(readFile(port_file)) - except: - return 8888 - -def install_sys_firewall(): - ''' - @name 安装系统防火墙 - @author hwliang - @return bool - ''' - if get_firewall_status() != -1: return True - - install_bin = get_sys_install_bin() - if not install_bin: return False - if install_bin.find('apt-get') != -1: - ExecShell("{} install -y ufw".format(install_bin)) - if get_firewall_status() != -1: - _cmd = '''ufw allow 20/tcp -ufw allow 21/tcp -ufw allow 22/tcp -ufw allow 80/tcp -ufw allow 443/tcp -ufw allow ${panelPort}/tcp -ufw allow ${sshPort}/tcp -ufw allow 39000:40000/tcp -ufw_status=`ufw status` -echo y|ufw enable -ufw default deny -ufw reload -'''.format(panelPort=get_panel_port(),sshPort=get_ssh_port()) - ExecShell(_cmd) - elif install_bin.find('yum') != -1 or install_bin.find('dnf') != -1: - ExecShell("{} install -y firewalld".format(install_bin)) - if get_firewall_status() != -1: - _cmd = '''systemctl enable firewalld - systemctl start firewalld - firewall-cmd --set-default-zone=public > /dev/null 2>&1 - firewall-cmd --permanent --zone=public --add-port=20/tcp > /dev/null 2>&1 - firewall-cmd --permanent --zone=public --add-port=21/tcp > /dev/null 2>&1 - firewall-cmd --permanent --zone=public --add-port=22/tcp > /dev/null 2>&1 - firewall-cmd --permanent --zone=public --add-port=80/tcp > /dev/null 2>&1 - firewall-cmd --permanent --zone=public --add-port=443/tcp > /dev/null 2>&1 - firewall-cmd --permanent --zone=public --add-port={panelPort}/tcp > /dev/null 2>&1 - firewall-cmd --permanent --zone=public --add-port={sshPort}/tcp > /dev/null 2>&1 - firewall-cmd --permanent --zone=public --add-port=39000-40000/tcp > /dev/null 2>&1 - firewall-cmd --reload -'''.format(panelPort = get_panel_port(),sshPort = get_ssh_port()) - ExecShell(_cmd) - - return False - - -def check_firewall_rule(port): - ''' - @name 检测防火墙是否已经添加规则 - @author cjxin - @param port int 端口号 - ''' - - args = dict_obj() - args.model_index = 'safe' - args.port = port - - import PluginLoader - res = PluginLoader.module_run("firewall","check_firewall_rule",args) - return res - -def add_firewall_rule(port,protocol = 'tcp',types = 'accept',address = '0.0.0.0/0',brief = None): - """ - @name 添加防火墙规则 - @author cjxin - @param port int 端口号 - @param protocol string 协议类型 tcp udp - @param types string 添加类型 accept reject - @param address string 地址 - @param brief string 描述 - """ - - args = dict_obj() - args.model_index = 'safe' - args.port = port - args.protocol = protocol - args.types = types - args.address = address - args.brief = brief - if not brief: args.brief = str(port) - - import PluginLoader - res = PluginLoader.module_run("firewall","create_rules",args) - return res - -def del_firewall_rule(port,protocol = 'tcp',types = 'accept',address = '0.0.0.0/0'): - ''' - @name 删除防火墙规则 - @author cjxin - @param port int 端口号 - @param protocol str 协议 - @param types str 类型 - @param address str 地址 - ''' - - - args = dict_obj() - args.model_index = 'safe' - args.port = port - args.protocol = protocol - args.types = types - args.address = address - import PluginLoader - res = PluginLoader.module_run("firewall","remove_rules",args) - return res - - -def is_aarch(): - ''' - @name 是否是arm架构 - @author hwliang - @return bool - ''' - uname = None - if hasattr(os,'uname'): uname = os.uname() - aarch_list = ['aarch64','aarch'] - try: - return uname.machine in aarch_list - except: - if uname: - return uname[-1] in aarch_list - return False - -def is_process_exists_by_cmdline(_cmd): - ''' - @name 根据命令行参数查找进程是否存在 - @author hwliang - @param _cmd 命令行 - @return bool - ''' - if isinstance(_cmd,str): - _cmd = [_cmd] - if not isinstance(_cmd,list): - return False - for pid in psutil.pids(): - try: - p = psutil.Process(pid) - cmd_line = p.cmdline() - for _c in _cmd: - if _c in cmd_line: - return True - except: - continue - return False - -def is_process_exists_by_exe(_exe): - ''' - @name 根据执行文件路径查找进程是否存在 - @author hwliang - @param _exe 命令行 - @return bool - ''' - if isinstance(_exe,str): - _exe = [_exe] - if not isinstance(_exe,list): - return False - - for process in psutil.process_iter(): - try: - _exe_bin = process.exe() - for _e in _exe: - if _exe_bin.find(_e) != -1: return True - except: - continue - return False - -def is_process_exists_by_name(_name): - ''' - @name 根据进程名查找进程是否存在 - @author hwliang - @param _name 命令行 - @return bool - ''' - if isinstance(_name,str): - _name = [_name] - if not isinstance(_name,list): - return False - for pid in psutil.pids(): - try: - p = psutil.Process(pid) - name = p.name() - for _n in _name: - if name == _n: return True - except: - continue - return False - - -def is_mysql_process_exists(): - ''' - @name 检查mysql进程是否存在 - @author hwliang - @return bool - ''' - _exe = ['server/mysql/bin/mysqld_safe','server/mysql/bin/mariadbd','server/mysql/bin/mysqld'] - return is_process_exists_by_exe(_exe) - -def is_redis_process_exists(): - ''' - @name 检查redis进程是否存在 - @author hwliang - @return bool - ''' - _exe = ['server/redis/src/redis-server'] - return is_process_exists_by_exe(_exe) - -def is_pure_ftpd_process_exists(): - ''' - @name 检查pure-ftpd进程是否存在 - @author hwliang - @return bool - ''' - _exe = ['server/pure-ftpd/sbin/pure-ftpd'] - return is_process_exists_by_exe(_exe) - -def is_php_fpm_process_exists(name): - ''' - @name 检查php-fpm进程是否存在 - @author hwliang - @return bool - ''' - _php_version = name.split('-')[-1] - _exe = ['server/php/{}/sbin/php-fpm'.format(_php_version)] - return is_process_exists_by_exe(_exe) - -def is_nginx_process_exists(): - ''' - @name 检查nginx进程是否存在 - @author hwliang - @return bool - ''' - _exe = ('server/nginx/sbin/nginx', 'server/nginx/nginx/sbin/nginx') - for i in _exe: - result = is_process_exists_by_exe(i) - if result: return result - return False - -def is_httpd_process_exists(): - ''' - @name 检查httpd进程是否存在 - @author hwliang - @return bool - ''' - _exe = ['server/apache/bin/httpd'] - return is_process_exists_by_exe(_exe) - -def is_memcached_process_exists(): - ''' - @name 检查memcached进程是否存在 - @author hwliang - @return bool - ''' - _exe = ['/usr/local/memcached/bin/memcached'] - return is_process_exists_by_exe(_exe) - -def is_mongodb_process_exists(): - ''' - @name 检查mongodb进程是否存在 - @author hwliang - @return bool - ''' - _exe = ['server/mongodb/bin/mongod'] - return is_process_exists_by_exe(_exe) - -def check_auth_ip(): - """ - @name 检测api和www的服务器ip是否一致 - @auther cjxin 2022-09-13 - @return bool - """ - import http_requests - result = {'www':'','api':''} - res = http_requests.post('https://www.bt.cn/api/getIpAddress', data={}, timeout=5, headers={}) - if res.status_code == 200: - result['www'] = res.text - - res1 = http_requests.post('https://api.bt.cn/api/getIpAddress', data={}, timeout=5, headers={}) - if res1.status_code == 200: - result['api'] = res1.text - - return result - -def set_func(key,count = 0): - """ - 设置指定key的操作时间 - @key 面板访问函数 - """ - path = 'data/func.json' - data = {} - try: - data = json.loads(readFile(path)) - except: - pass - if not key in data: - data[key] = {} - data[key]['time'] = 0 - data[key]['count'] = 0 - data[key]['time'] = int(time.time()) - - if count > 0: - data[key]['count'] = count - else: - data[key]['count'] += 1 - writeFile(path, json.dumps(data)) - - -def get_func(key): - """ - 获取指定功能的操作时间 - @key 面板函数 - """ - path = 'data/func.json' - ret = {} - ret['count'] = 0 - ret['time'] = 0 - if not os.path.exists(path): return ret - data = {} - try: - data = json.loads(readFile(path)) - except: - pass - if not key in data: return ret - return data[key] - - -def set_cache_func(key,info): - """ - 设置指定key的操作时间 - @key 缓存的key函数 - """ - data = {} - path = '{}/data/cache_func.json'.format(get_panel_path()) - - try: - data = json.loads(readFile(path)) - except: - pass - if not key in data: data[key] = {} - - data[key]['time'] = int(time.time()) - data[key]['data'] = info - - writeFile(path, json.dumps(data)) - - -def get_cache_func(key): - """ - 获取指定功能的操作时间 - @key 缓存的key函数 - """ - - ret = {} - data = {} - ret['data'] = '' - ret['time'] = 0 - path = '{}/data/cache_func.json'.format(get_panel_path()) - if not os.path.exists(path): - return ret - try: - data = json.loads(readFile(path)) - except: - pass - if not key in data: return ret - return data[key] - - - -def set_split_logs(path,status = 1,info = None): - """ - @name 添加日志切割 - @path 日志路径, - @data dict - { - 'type':'day/size' - 'limit': 180,保留份数 - 'size': 日志超过多少进行切割,type=size时生效 - 'callback': 回调命令,部分日志切割后需要重启服务 - } - """ - - data = {} - sfile = '{}/data/cutting_log.json'.format(get_panel_path()) - if os.path.exists(sfile): - try: - data = json.loads(readFile(sfile)) - except:pass - - if path in data: - del data[path] - - if status: - if not info: - return False - if not 'type' in info or not 'limit' in info: - return False - data[path] = info - writeFile(sfile,json.dumps(data)) - - #计划任务切割 - echo = md5(md5('set_split_logs')) - find = M('crontab').where('echo=?',(echo,)).find() - - try: - import crontab - args_obj = dict_obj() - - if not find: - cronPath = GetConfigValue('setup_path') + '/cron/' + echo - shell = '{} -u /www/server/panel/script/logSplit.py'.format(sys.executable) - writeFile(cronPath,shell) - - args_obj.id = M('crontab').add('name,type,where1,where_hour,where_minute,echo,addtime,status,save,backupTo,sType,sName,sBody,urladdress',("[删除]切割日志文件",'minute-n','10','0','0',echo,time.strftime('%Y-%m-%d %X',time.localtime()),0,'','localhost','toShell','',shell,'')) - crontab.crontab().set_cron_status(args_obj) - else: - cron_path = get_cron_path() - if os.path.exists(cron_path): - cron_s = readFile(cron_path) - if cron_s.find(echo) == -1: - M('crontab').where('echo=?',(echo,)).setField('status',0) - args_obj.id = find['id'] - crontab.crontab().set_cron_status(args_obj) - return True - except: - pass - - return False - - - -def get_admin_path(): - ''' - @name 取安全入口 - @author hwliang - @return string - ''' - login_path = '/login' - path = '{}/data/admin_path.pl'.format(get_panel_path()) - if not os.path.exists(path): return login_path - admin_path = readFile(path) - if not admin_path: return login_path - admin_path = admin_path.strip() - if admin_path in ['','/']: - return login_path - if admin_path[-1] == '/': admin_path = admin_path[:-1] - return admin_path - - - -def get_improvement(): - ''' - @name 获取用户体验改进计划状态 - @author hwliang - @return bool - ''' - tip_file = '{}/data/improvement.pl'.format(get_panel_path()) - tip_file_set = '{}/data/is_set_improvement.pl'.format(get_panel_path()) - if not os.path.exists(tip_file_set): - return True - return os.path.exists(tip_file) - - - -def is_spider(): - ''' - @name 判断是否为爬虫 - @return bool - ''' - from BTPanel import request - import panelDefense - p = panelDefense.bot_safe() - return not p.spider(request.headers.get('User-Agent'),request.remote_addr) - - - -# def get_rsa_public_key_file(): -# ''' -# @name 获取RSA公钥文件路径 -# @author hwliang -# @return str -# ''' -# return '{}/data/rsa_public_key.pem'.format(get_panel_path()) - -# def get_rsa_private_key_file(): -# ''' -# @name 获取RSA私钥文件路径 -# @author hwliang -# @return str -# ''' -# return '{}/data/rsa_private_key.pem'.format(get_panel_path()) - - -def get_rsa_public_key(): - ''' - @name 获取RSA公钥内容 - @author hwliang - @return str - ''' - from BTPanel import session - pub_key = 'rsa_public_key' - public_key = session.get(pub_key) - if not public_key: - create_rsa_key() - public_key = session.get(pub_key) - return public_key - - # path = get_rsa_public_key_file() - # if not os.path.exists(path): create_rsa_key() - # if not os.path.exists(path): return '' - # return readFile(path) - - -def get_rsa_private_key(): - ''' - @name 获取RSA私钥内容 - @author hwliang - @return str - ''' - from BTPanel import session - prv_key = 'rsa_private_key' - private_key = session.get(prv_key) - if not private_key: - create_rsa_key() - private_key = session.get(prv_key) - return private_key - - -def create_rsa_key(): - ''' - @name 创建RSA密钥 - @author hwliang - @return bool - ''' - try: - # private_key_file = get_rsa_private_key_file() - # public_key_file = get_rsa_public_key_file() - # if os.path.exists(private_key_file) and os.path.exists(public_key_file): return True - from BTPanel import session - pub_key = 'rsa_public_key' - prv_key = 'rsa_private_key' - if pub_key in session and prv_key in session: - return True - try: - from Crypto.PublicKey import RSA - key = RSA.generate(1024) - private_key = key.exportKey("PEM") - public_key = key.publickey().exportKey("PEM") - except: - is_re_install = '{}/data/pycryptodome_re_install.pl'.format(get_panel_path()) - if not os.path.exists(is_re_install): - os.system("nohup btpip install pycryptodome -I &> /dev/null &") - writeFile(is_re_install,'True') - - priv_pem = '/tmp/private.pem' - pub_pem = '/tmp/public.pem' - ExecShell("openssl genrsa -out {} 1024".format(priv_pem)) - ExecShell("openssl rsa -pubout -in {} -out {}".format(priv_pem,pub_pem)) - if not os.path.exists(priv_pem) or not os.path.exists(pub_pem): - return False - - private_key = readFile(priv_pem,'rb') - public_key = readFile(pub_pem,'rb') - - if os.path.exists(priv_pem): os.remove(priv_pem) - if os.path.exists(pub_pem): os.remove(pub_pem) - - session[pub_key] = public_key.decode('utf-8').replace("\n","") - session[prv_key] = private_key.decode('utf-8') - - # writeFile(private_key_file,private_key,'wb+') - # writeFile(public_key_file,public_key,'wb+') - return True - except: - print_log(get_error_info()) - return False - - - -def rsa_encrypt(data): - ''' - @name RSA加密数据 - @param data str 要加密的数据 - @return str - ''' - # 分片长度 1024 / 8 - 11 = 117 - split_length = 117 - try: - from Crypto.PublicKey import RSA - from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs - - # 初始化RSA加密对象 - public_key = get_rsa_public_key() - cipher_public = Cipher_pkcs.new(RSA.importKey(public_key)) - - # 分片加密 - data = data.encode('utf-8') - encrypted_arr = [] - for i in range(0,len(data),split_length): - d = data[i:i+split_length] - encrypted_data = cipher_public.encrypt(d) - encrypted_base64 = base64.b64encode(encrypted_data).decode() - encrypted_arr.append(encrypted_base64) - - # 用换行符拼接 - return "\n".join(encrypted_arr) - except: - print_log(get_error_info()) - return '' - -def rsa_decrypt(data): - ''' - @name RSA解密数据 - @param data str 要解密的数据 - @return str - ''' - try: - from Crypto.PublicKey import RSA - from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs - - # 初始化RSA解密对象 - private_key = get_rsa_private_key() - cipher_private = Cipher_pkcs.new(RSA.importKey(private_key)) - - # 分片解密 - decrypted_str = b"" - for d in data.split("\n"): - if not d: continue - res = base64.b64decode(d) - if not res: continue - decrypted_data = cipher_private.decrypt(res, None) - decrypted_str += decrypted_data - return decrypted_str.decode('utf-8') - except: - print_log(get_error_info()) - return '' - - -def rsa_encrypt_for_private_key(data): - ''' - @name RSA私钥加密数据 - @author hwliang - @param data str 要加密的数据 - @return str - ''' - # 分片长度 1024 / 8 - 11 = 117 - split_length = 117 - try: - from Crypto.PublicKey import RSA - from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs - - # 初始化RSA加密对象 - private_key = get_rsa_private_key() - cipher_private = Cipher_pkcs.new(RSA.importKey(private_key)) - - # 分片加密 - data = data.encode('utf-8') - encrypted_arr = [] - for i in range(0,len(data),split_length): - d = data[i:i+split_length] - encrypted_data = cipher_private.encrypt(d) - encrypted_base64 = base64.b64encode(encrypted_data).decode() - encrypted_arr.append(encrypted_base64) - - # 用换行符拼接 - return "\n".join(encrypted_arr) - except: - print_log(get_error_info()) - return '' - -def get_client_hash(): - ''' - @name 获取客户端HASH - @author hwliang - @return str - ''' - from flask import session,request - is_tmp_login = session.get('tmp_login') - if is_tmp_login: - client_hash = md5(request.remote_addr) - else: - skey = 'client_ips' - ckey = 'client_sync_count' - client_ips = session.get(skey,[]) - client_sync_count = session.get(ckey,0) - - # 是否唯一IP - if len(client_ips) <= 1: - # 唯一IP连续访问次数超过100次,使用IP+UA生成HASH - r_max = 101 - if client_sync_count >= r_max-1: - client_hash = md5(request.remote_addr) - if client_sync_count < r_max: - session['client_hash'] = client_hash - client_sync_count += 1 - session[ckey] = client_sync_count - return client_hash - - # 记录IP - if not request.remote_addr in client_ips: - client_ips.append(request.remote_addr) - session[skey] = client_ips - - # 记录访问次数 - client_sync_count += 1 - session[ckey] = client_sync_count - - # 非唯一IP,使用UA生成HASH - client_hash = md5('') - - return client_hash - -def check_client_hash(): - ''' - @name 验证客户端HASH - @author hwliang - @return bool - ''' - # 是否关闭验证 - not_tip = '{}/data/not_check_ip.pl'.format(get_panel_path()) - if os.path.exists(not_tip): return True - from BTPanel import session,request - # 如果未开启SSL,不验证 - if request.scheme == 'https': return True - skey = 'client_hash' - client_hash = get_client_hash() - if not skey in session: - session[skey] = client_hash - return True - - if session[skey] != client_hash: - WriteLog('User login', 'Client HASH verification failed, has been forced to log out!') - return False - return True - -def shell_quote(cmd): - ''' - @name shell转义 - @author hwliang - @param cmd str 要转义的命令 - @return str - ''' - if not cmd: return '' - if isinstance(cmd,bytes): cmd = cmd.decode('utf-8') - if not isinstance(cmd,str): return cmd - try: - import shlex - return shlex.quote(cmd) - except: - try: - import pipes - return pipes.quote(cmd) - except: - return cmd - - -def get_div(div): - sql = M('sqlite_master') - if not sql.where('type=? AND name=? AND sql LIKE ?', ('table', 'div_list','%div%')).count(): - sql_str = '''CREATE TABLE IF NOT EXISTS `div_list` ( -`id` INTEGER PRIMARY KEY AUTOINCREMENT, -`div` TEXT -)''' - sql.execute(sql_str) - my_div = sql.table('div_list').where('id=1',()).getField('div') - if not my_div: - sql.table('div_list').insert({'div': div}) - my_div = div - return my_div - - -def set_tasks_run(data): - ''' - @name 设置运行时间 - @param data dict 数据 - @param data.type int 类型 1:面板 2:插件 - @param data.time int 执行时间(必传) - @param data.name str 插件名称、模块名称(必传) - @param data.title str 插件中文名(必传) - @param data.fun str 执行方法(必传) - @param data.args dict 参数 - - ''' - spath = '{}/data/tasks'.format(get_panel_path()) - if not os.path.exists(spath): os.makedirs(spath,384) - - task_file = '{}/{}'.format(spath,md5(str(time.time()))) - writeFile(task_file,json.dumps(data)) - return returnMsg(True,task_file) - - -def Get_ip_info(get_speed=False, get_user=True): - ''' - 获取bt官网ip归属地列表 - @author wzz - @return: list[dict{}] - ''' - host_list = json.loads(readFile("config/hosts_dict.json")) - print("host_list: ",host_list) - - # 推荐,一般,较差,不推荐,不测速时,ipv6,用户服务器IP - level = (1, 2, 3, 4, 5, 6, 0) - user_server_ipaddress = [] - if get_user: - user_server_ipaddress = get_user_server_ipaddress(host_list, level) - bt_host = get_bt_hosts(get_speed, host_list, level) - ips_result = user_server_ipaddress + bt_host - if ips_result: return ips_result - -def get_user_server_ipaddress(host_list, level): - ''' - 获取服务器公网ip归属地信息 - @param host_list: host列表 - @param level: 等级元组 - @return: - ''' - ips_result = [] - headers = {"host": "www.bt.cn"} - for host in host_list: - try: - new_url = "https://{}/Api/getIpAddress".format(host["ip"]) - m_str = HttpGet(new_url, 1, headers=headers) - ipaddress = re.search(r"^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$", m_str).group(0) - s_ip_info = get_free_ip_info("{}".format(ipaddress)) - if "ip" in s_ip_info.keys(): - s_ip_info["info"] = "本服务器公网IP归属地信息" - s_ip_info["level"] = level[-1] - ips_result.append(s_ip_info) - return ips_result - except: - continue - if not ips_result: - return [{'continent': '', 'country': '未知地区', 'province': '', 'city': '', 'region': '', 'carrier': '', - 'division': '', 'en_country': '', 'en_short_code': '', 'longitude': '', - 'latitude': '', 'info': '本服务器公网IP归属地信息', 'ip': GetLocalIp(), 'level': 0}] - -def get_bt_hosts(get_speed, host_list, level): - ''' - 获取bt官网ip归属地列表 - @param get_speed: 是否测速 - @param host_list: 传host列表 - @param level: 传等级元组 - @return: - ''' - ips_result = [] - - for ip in host_list: - ipv6 = { - "continent": "", - "country": "", - "province": "", - "city": "ipv6 地址", - "region": "", - "carrier": "", - "division": "", - "en_country": "", - "en_short_code": "", - "longitude": "", - "latitude": "", - "info": "该节点为ipv6地址,若服务器无ipv6请勿选择!", - "ip": "", - "level": None - } - try: - # 获取节点响应延迟 - if get_speed: n_net, n_ping = get_timeout("https://{}".format(ip["ip"]) + ':80/net_test', 1) - if not is_ipv4(ip["ip"]): - ipv6['ip'] = ip["ip"] - # ipv6地址默认一般推荐 - ipv6['level'] = level[-2] - if get_speed: ipv6['speed'] = "" - ips_result.append(ipv6) - continue - ip_result = get_free_ip_info("{}".format(ip["ip"])) - if "ip" in ip_result.keys(): - ip_result['level'] = level[-3] - if get_speed: - if int(n_ping) < 100: ip_result['level'] = level[0] - if 100 < int(n_ping) < 500: ip_result['level'] = level[1] - if int(n_ping) > 500: ip_result['level'] = level[2] - ip_result["speed"] = n_ping + 500 - ips_result.append(ip_result) - continue - if "info" in ip_result.keys(): - if ip_result["info"] == "未知归属地": - ipv6['ip'] = ip["ip"] - ipv6["city"] = ip["area"] - ipv6['level'] = level[1] - if get_speed: ipv6['speed'] = "" - ipv6["info"] = "节点无法测速,请选择离您服务器最近的尝试!" - ips_result.append(ipv6) - except: - continue - if len(ips_result) < 2 and ips_result[-1]["city"] == "ipv6 地址": ips_result.pop(-1) - return ips_result - -def set_home_host2(host): - """ - @name 设置官网hosts - @author wzz - @param host IP地址 - @return void - """ - msg = "请尝试点击【清理旧节点】,如果仍然不行,请联系堡塔运维! https://www.bt.cn/bbs" - www_set = ExecShell("echo \"{} www.bt.cn\" >> /etc/hosts".format(host)) - api_set = ExecShell("echo \"{} api.bt.cn\" >> /etc/hosts".format(host)) - if not www_set[1] and not api_set[1]: return returnMsg(True, "节点设置成功") - if www_set[1]: return returnMsg(False, "节点设置失败: {}, {}".format(www_set[1],msg)) - if api_set[1]: return returnMsg(False, "节点设置失败: {}, {}".format(api_set[1],msg)) - return returnMsg(False, "节点设置失败: {}".format(msg)) - -def Clean_bt_host(): - ''' - 删除bt.cn相关的hosts绑定信息 - @author wzz - @return: - ''' - check_hosts = ExecShell("grep \"bt.cn\" /etc/hosts") - if check_hosts[0]: - result = ExecShell("sed -i \"/bt.cn/d\" /etc/hosts") - if result[1]: return returnMsg(False, "旧节点清理失败: {}".format(result[1])) - return returnMsg(True, "旧节点已清理") - return returnMsg(True, "hosts没有绑定旧节点无需清理") - -def Set_bt_host(ip=None): - ''' - 设置bt官网(www && api)指定hosts节点 - @author wzz - @param get: 手动设置 get.ip 官网传ip地址,从public.Get_ip_info方法获取 | 自动设置 - @return: - ''' - Clean_bt_host() - - if ip: return set_home_host2(ip) - # 如果不传ip则自动设置 - ips_info = Get_ip_info(get_user=False) - headers = {"host": "www.bt.cn"} - for host in ips_info: - new_url = "https://{}".format(host['ip']) - res = HttpGet(new_url, 1, headers=headers) - if res: - writeFile("{}/data/home_host.pl".format(get_panel_path()), host["ip"]) - result = set_home_host2(host["ip"]) - if result["status"]: - return returnMsg(True, "已自动选择为{}{}的最优节点,运营商是: {}" - .format(host['province'],host['city'], host['carrier'])) - return returnMsg(False, "自动选择节点失败,请尝试手动设置") - - -def set_ownership( directory, user): - ''' - 设置指定目录及目录下所有文件、子目录所属为user - @param directory: - @param user: - @return: - ''' - import pwd - uid = pwd.getpwnam(user).pw_uid - gid = pwd.getpwnam(user).pw_gid - - os.chown(directory, uid, gid) - - for root, dirs, files in os.walk(directory): - for d in dirs: - dir_path = os.path.join(root, d) - os.chown(dir_path, uid, gid) - for f in files: - file_path = os.path.join(root, f) - os.chown(file_path, uid, gid) - -def set_permissions(directory, permissions): - ''' - 设置指定目录及目录下所有文件、子目录权限为permissions - @param directory: - @param permissions: 传八进制,如0o755 - @return: - ''' - os.chmod(directory, permissions) - - for root, dirs, files in os.walk(directory): - for d in dirs: - dir_path = os.path.join(root, d) - os.chmod(dir_path, permissions) - for f in files: - file_path = os.path.join(root, f) - os.chmod(file_path, permissions) - -def check_ssl_verify(certPath = 'ssl/ca.pem'): - ''' - 校验面板设置SSL双向认证证书格式 - @param certPath: - @return: - ''' - if "crl.pem" in certPath: - certKey = readFile(certPath) - if "-----BEGIN X509 CRL-----" not in certKey: - return False - return True - - res = False - openssl = '/usr/local/openssl/bin/openssl' - if not os.path.exists(openssl): openssl = 'openssl' - certPem = readFile(certPath) - if "-----BEGIN CERTIFICATE-----" in certPem and "Certificate" in certPem: - result = ExecShell(openssl + " x509 -in "+certPath+" -noout -subject") - res = True - if len(result[1]) > 2: res = False - if result[0].find('error:') != -1: res = False - return res - -def is_write_file(): - ''' - @name 测试是否能写入文件 - @return void - ''' - test_file = '/etc/init.d/bt_10000100.pl' - writeFile(test_file, 'True') - if os.path.exists(test_file): - if readFile(test_file) == 'True': - os.remove(test_file) - return True - os.remove(test_file) - return False - -def stop_syssafe(): - ''' - @name 临时停用系统加固 - @return bool - ''' - # 检测是否可写 - ret = is_write_file() - is_stop_syssafe_file = '{}/data/is_stop_syssafe.pl'.format(get_panel_path()) - # 如果不可写,则尝试停用系统加固 - if not ret: - syssafe_path = get_plugin_path('syssafe') - if os.path.exists(syssafe_path): - writeFile(is_stop_syssafe_file, 'True') - ExecShell("/etc/init.d/bt_syssafe stop") - - # 停用系统加固后再检测一次 - ret = is_write_file() - return ret - - return ret - -def start_syssafe(): - ''' - @name 恢复系统加固的运行状态 - @return void - ''' - is_stop_syssafe_file = '{}/data/is_stop_syssafe.pl'.format(get_panel_path()) - if os.path.exists(is_stop_syssafe_file): - ExecShell("/etc/init.d/bt_syssafe start") - if os.path.exists(is_stop_syssafe_file): - os.remove(is_stop_syssafe_file) - - -def check_sys_write(): - ''' - @name 检查关键目录是否可写 - @return bool - ''' - return stop_syssafe() - - -def get_root_domain(domain_name): - ''' - @name 根据域名查询根域名和记录值 - @author cjxin<2020-12-17> - @param domain {string} 被验证的根域名 - @return void - ''' - top_domain_list = ['.ac.cn', '.ah.cn', '.bj.cn', '.com.cn', '.cq.cn', '.fj.cn', '.gd.cn', - '.gov.cn', '.gs.cn', '.gx.cn', '.gz.cn', '.ha.cn', '.hb.cn', '.he.cn', - '.hi.cn', '.hk.cn', '.hl.cn', '.hn.cn', '.jl.cn', '.js.cn', '.jx.cn', - '.ln.cn', '.mo.cn', '.net.cn', '.nm.cn', '.nx.cn', '.org.cn', '.cn.com'] - old_domain_name = domain_name - top_domain = "." + ".".join(domain_name.rsplit('.')[-2:]) - new_top_domain = "." + top_domain.replace(".", "") - is_tow_top = False - if top_domain in top_domain_list: - is_tow_top = True - domain_name = domain_name[:-len(top_domain)] + new_top_domain - - if domain_name.count(".") > 1: - zone, middle, last = domain_name.rsplit(".", 2) - if is_tow_top: - last = top_domain[1:] - root = ".".join([middle, last]) - else: - zone = "" - root = old_domain_name - return root, zone - -def check_area_panel(): - ''' - @name: 检查地区限制 - @return: - ''' - import contextlib - areas_dict = get_limit_area() - - # 关闭状态直接返回false - if areas_dict["limit_area_status"] == "false": return False - # 2024/1/3 下午 2:23 兼容配置文件如果为空或者地区为空或配置文件异常,则直接跳过验证 - if len(areas_dict["limit_area"]) == 0: return False - if len(areas_dict["limit_area"]["city"]) == 0: - if "province" in areas_dict["limit_area"] and len(areas_dict["limit_area"]["province"]) == 0: - if "country" in areas_dict["limit_area"] and len(areas_dict["limit_area"]["country"]) == 0: - return False - - client_ip = GetClientIp() - # 本地访问直接返回false - if client_ip in ['127.0.0.1', 'localhost', '::1']: return False - ip_area_dict = get_ip_location(client_ip) - # 没有查询到地区返回false,内网地址直接返回false - if not ip_area_dict: return False - if ip_area_dict.raw["country"]["country"] == "Internal network address": return False - try: - error_str = "

{}

{}
{}
{}".format( - getMsg('PAGE_ERR_IP_AREA_H1'), - getMsg('PAGE_ERR_IP_AREA_P1', ("{} {} {}".format( - ip_area_dict.raw["country"]["country"], - ip_area_dict.raw["country"]["province"], - ip_area_dict.raw["country"]["city"] - ),)), - getMsg('PAGE_ERR_IP_AREA_P2'), - getMsg('PAGE_ERR_IP_AREA_P3') - ) - - # 仅允许allow列表中的地区,其他地区都不可以访问 - if areas_dict["limit_type"] == "allow": - for city in areas_dict["limit_area"]["city"]: - if len(ip_area_dict.raw["country"]["city"].strip()) == 0: - break - - if ip_area_dict.raw["country"]["city"].strip() in city["name"]: - return False - - for province in areas_dict["limit_area"]["province"]: - if len(ip_area_dict.raw["country"]["province"].strip()) == 0: - break - - if ip_area_dict.raw["country"]["province"].strip() in province["name"]: - return False - - for country in areas_dict["limit_area"]["country"]: - if len(ip_area_dict.raw["country"]["country"].strip()) == 0: - break - - if ip_area_dict.raw["country"]["country"].strip() in country["name"]: - return False - - return error_str - - # 仅禁止deny列表中的地区,其他地区都可以访问 - if areas_dict["limit_type"] == "deny": - for city in areas_dict["limit_area"]["city"]: - if len(ip_area_dict.raw["country"]["city"].strip()) == 0: - break - - if ip_area_dict.raw["country"]["city"].strip() in city["name"]: - return error_str - - for province in areas_dict["limit_area"]["province"]: - if len(ip_area_dict.raw["country"]["province"].strip()) == 0: - break - - if ip_area_dict.raw["country"]["province"].strip() in province["name"]: - return error_str - - for country in areas_dict["limit_area"]["country"]: - if len(ip_area_dict.raw["country"]["country"].strip()) == 0: - break - - if ip_area_dict.raw["country"]["country"].strip() in country["name"]: - return error_str - except: - import traceback - print(traceback.format_exc()) - return False - - -def get_ip_location(ip_address): - ''' - 获取ip地址的地理位置 - @param ip_address: - @return: - ''' - try: - from geoip2 import database - except: - ExecShell("{}/pyenv/bin/pip install -U pip".format(get_panel_path())) - ExecShell("{}/pyenv/bin/pip install geoip2".format(get_panel_path())) - writeFile('data/restart.pl', 'True') - from geoip2 import database - - data_path = '{}/config/GeoLite2-City.mmdb'.format(get_panel_path()) - reader = database.Reader(data_path) - response = reader.city(ip_address) - reader.close() - return response - - -def get_limit_area(): - ''' - 获取地区限制列表 - @return: - ''' - empty_content = { - "limit_area": { - "city": [], - "province": [], - "country": [] - }, - "limit_area_status": "false", - "limit_type": "deny" - } - try: - areas_file = 'data/limit_area.json' - if not os.path.exists(areas_file): return empty_content - - try: - areas_dict = json.loads(ReadFile(areas_file)) - except json.decoder.JSONDecodeError: - return empty_content - - return areas_dict - except: - public.get_error_info() - return empty_content - -# 密码复杂度验证 -def check_password_safe(password: str) -> bool: - ''' - @name 密码复杂度验证 - @param password(string) 密码 - @return bool - ''' - # 是否检测密码复杂度 - - # 密码长度验证 - if len(password) < 8: return False - - num = 0 - # 密码是否包含数字 - if re.search(r'[0-9]+', password): num += 1 - # 密码是否包含小写字母 - if re.search(r'[a-z]+', password): num += 1 - # 密码是否包含大写字母 - if re.search(r'[A-Z]+', password): num += 1 - # 密码是否包含特殊字符 - if re.search(r'[^\w\s]+', password): num += 1 - # 密码是否包含以上任意3种组合 - if num < 3: return False - return True - - -def show_menu(menu_id, status): - """ - 设置显示隐藏菜单 - :param menu_id: 菜单id - :param status: 0 | 1 - :return: - """ - - show_menu_file = '/www/server/panel/config/show_menu.json' - hide_menu_file = '/www/server/panel/config/hide_menu.json' - defanlt_data = ['memuA', 'memuAsite', 'memuAftp', 'memuAdatabase', 'memuDocker', 'memuAcontrol', 'memuAfirewall', 'memuAfiles', 'memuAlogs', 'memuAxterm', 'memuAcrontab', 'memuAsoft', - 'memuAconfig', 'dologin'] - show_menu_data = defanlt_data - if os.path.exists(show_menu_file): - show_menu_data = json.loads(ReadFile(show_menu_file)) - - # 获取之前设置的隐藏页面 - try: - if os.path.exists(hide_menu_file): - hide_menu = ReadFile(hide_menu_file) - show_menu_data = [i for i in show_menu_data if i not in hide_menu] - ExecShell("rm -rf {}".format(hide_menu_file)) - WriteFile(show_menu_file, json.dumps(show_menu_data)) - except: - pass - if status == 1 and menu_id not in show_menu_data: - show_menu_data.append(menu_id) - elif status == 0 and menu_id in show_menu_data: - show_menu_data.remove(menu_id) - WriteFile(show_menu_file, json.dumps(show_menu_data)) - return returnMsg(True, '设置成功') - -def task_service_status(): - ''' - @name 检查后台任务服务状态 - @return bool - ''' - pid_file = '{}/logs/task.pid'.format(get_panel_path()) - if not os.path.exists(pid_file): return False - pid = readFile(pid_file) - if not pid: return False - if not os.path.exists('/proc/{}'.format(pid)): return False - return True - - -def reload_panel(): - ''' - @name 重载面板 - @return void - ''' - - # 重载面板 - WriteFile('{}/data/reload.pl'.format(get_panel_path()), 'True') - if not task_service_status(): - ExecShell("bash {}/init.sh start") - - -# 2024/1/24 上午 10:38 通用响应对象 -def returnResult(code=0, status=True, msg="OK", data=None, timestamp=None, args=None): - ''' - 通用响应对象 - @param code: 0:成功 1:失败 2:警告 ... - @param status: - @param msg: 只传msg,不传需要前端处理的数据 - @param data: 只传需要前端处理的数据 - @param timestamp: 秒级时间戳 - @return: - - 使用示例: - 成功:return dp.returnResult(data=data) - 失败:return dp.returnResult(code=1, status=False, msg="获取失败!", data=[]) - 失败:return dp.returnResult(code=1, status=False, msg="获取失败!") - 警告:return dp.returnResult(code=2, status=False, msg="警告,xxxxxxxxxxx!") - ... - ''' - import time - if timestamp is None: - timestamp = int(time.time()) - - log_message = json.loads(ReadFile('BTPanel/static/language/' + GetLanguage() + '/public.json')) - keys = log_message.keys() - if type(msg) == str: - if msg in keys: - msg = log_message[msg] - for i in range(len(args)): - rep = '{' + str(i + 1) + '}' - msg = msg.replace(rep, args[i]) - - return { - "code": code, - "status": status, - "msg": msg, - "data": data, - "timestamp": timestamp - } - - -# 2024/1/24 上午 11:56 取指定模型目录 -def get_mod_path(mod_name=None): - ''' - @name 取指定插件目录 - @author hwliang<2021-07-14> - @param mod_name 模型名称 不传则返回模型根目录 - @return string - ''' - - root_path = "{}/mod/project".format(get_panel_path()) - if not mod_name: return root_path - return "{}/{}".format(root_path, mod_name) - - -def get_client_info_db_obj(): - ''' - @name 获取客户端信息数据库对象 - @return object - ''' - db_path = '{}/data/db'.format(get_panel_path()) - db_file = '{}/client_info.db'.format(db_path) - if not os.path.exists(db_path): os.makedirs(db_path, 384) - db_obj = M('') - db_obj._Sql__DB_FILE = db_file - # 如果数据库文件不存在则创建 - if not os.path.exists(db_file): - db_obj.execute('''CREATE TABLE client_info ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - remote_addr VARCHAR(50) NOT NULL, - remote_port INTEGER DEFAULT 0, - session_id VARCHAR(32) NOT NULL, - user_agent TEXT NOT NULL, - login_time INTEGER DEFAULT 0 - )''') - - # 创建索引 - db_obj.execute('CREATE INDEX client_ip_index ON client_info(client_ip)') - db_obj.execute('CREATE INDEX session_id_index ON client_info(session_id)') - db_obj.execute('CREATE INDEX login_time_index ON client_info(login_time)') - return db_obj - - -def record_client_info(): - ''' - @name 记录客户端信息 - @return void - ''' - from flask import request - from BTPanel import cache - db_obj = get_client_info_db_obj() - remote_addr = request.environ.get('REMOTE_ADDR', '0.0.0.0') - user_agent = request.headers.get('User-Agent', '') - pdata = { - 'remote_addr': remote_addr, - 'remote_port': request.environ.get('REMOTE_PORT'), - 'session_id': md5(remote_addr + user_agent), - 'user_agent': user_agent, - 'login_time': int(time.time()) - } - db_obj.table('client_info').insert(pdata) - db_obj.close() - - # 设置缓存 - cache.set('last_client_session_id', pdata['session_id'], 86400 * 2) - - -def check_client_info(): - ''' - @name 检查客户端信息 - @return int 0:陌生IP,1:上次登录的IP且UA一致,2:近30天内登录过的IP - ''' - from flask import request - from BTPanel import cache - remote_addr = request.environ.get('REMOTE_ADDR', '0.0.0.0') - # 如果是本地访问或为未来IP则当作陌生IP - if remote_addr in ['0.0.0.0', '127.0.0.1', '::1', '::']: return 0 - user_agent = request.headers.get('User-Agent', '') - # 如果UA不是浏览器则当作陌生IP - if user_agent.find('Mozilla') == -1: return 0 - - session_id = md5(remote_addr + user_agent) - if cache.get('last_client_session_id') == session_id: return 1 - - db_obj = get_client_info_db_obj() - if not db_obj: return 0 - - last_login_info = db_obj.table('client_info').order('id desc').field('remote_addr,session_id,login_time').find() - if not last_login_info: return 0 - - # 如果上次登录的IP且UA一致 - now_time = int(time.time()) - if last_login_info['session_id'] == session_id: - s_time = now_time - last_login_info['login_time'] - if s_time < (86400 * 2): - cache.set('last_client_session_id', session_id, 86400 * 2 - s_time) - return 1 - if s_time < (86400 * 30): return 2 - return 0 - - # 如果近30天内登录过的IP - if remote_addr == last_login_info['remote_addr'] and now_time - last_login_info['login_time'] < 2592000: return 2 - if db_obj.table('client_info').where('remote_addr=?', remote_addr).count(): return 2 - - # 陌生IP - return 0 - - -def redirect_to_login(default_callback_def=None): - ''' - @name 重定向到登录页面 - @return void - ''' - from flask import redirect, request, Response - client_status = check_client_info() - # 获取请求头 - x_http_token = request.headers.get('x-http-token', '') - if client_status == 0: - if default_callback_def: - return default_callback_def(None) - return error_404(None) - elif client_status == 1: - if x_http_token: - result = {"status": False, "code": -8888, "redirect": get_admin_path(), - "msg": "The current login session has been invalid, please login again!"} - return Response(json.dumps(result), mimetype='application/json', status=200) - return redirect(get_admin_path()) - elif client_status == 2: - if x_http_token: - result = {"status": False, "code": -8888, "redirect": "/login", "msg": "The current login session has been invalid, please login again!"} - return Response(json.dumps(result), mimetype='application/json', status=200) - return redirect('/login') - - if default_callback_def: - return default_callback_def(None) - return error_404(None) - - -def ws_send(data: str): - try: - if '/www/server/panel' not in sys.path: - sys.path.insert(0, '/www/server/panel') - from BTPanel import WS_OBJ - ws_obj = {i: j for i, j in WS_OBJ.items() if j['timeout'] > int(time.time())} - if ws_obj == {}: return False - for i, j in ws_obj.items(): - j['ws_obj'].send(data) - return True - except: - return False - - diff --git a/class/public/aaModel/__init__.py b/class/public/aaModel/__init__.py index c89e7b02..d39de1e5 100644 --- a/class/public/aaModel/__init__.py +++ b/class/public/aaModel/__init__.py @@ -1,17 +1,14 @@ # coding: utf-8 from .fields import * -from .manager import Q, QueryProperty +from .manager import Q from .model import aaModel -# from .file_model import * - __version__ = "1.1.3" __all__ = [ "__version__", # "DictFileModel", # "ListFileModel", - "QueryProperty", "aaModel", "Q", ] + fields.__all__ diff --git a/class/public/aaModel/manager.py b/class/public/aaModel/manager.py index 473c3f57..143f8c19 100644 --- a/class/public/aaModel/manager.py +++ b/class/public/aaModel/manager.py @@ -11,7 +11,7 @@ from public.aaModel.fields import COMPARE from public.exceptions import HintException, PanelError from public.sqlite_easy import Db -__all__ = ["aaManager", "Q", "QueryProperty"] +__all__ = ["aaManager", "Q"] M = TypeVar("M", bound="aaModel") @@ -59,16 +59,14 @@ else: # ==================== Patch End ================== - -class QueryProperty: - def __init__(self, func): - self.func = func - - def __get__(self, instance, owner): - return self.func(owner) - - class Operator: + SIMPLE_OP = { + "gt": ">", "lt": "<", "gte": ">=", "lte": "<=", "ne": "!=", + } + LIKE_OP = { + "like": "%{}%", "startswith": "{}%", "endswith": "%{}", + } + def __init__(self, model_class: M, query: Db.query): self._model_class: M = model_class self._query = query @@ -153,15 +151,6 @@ class Operator: return False return False - def __check_js_type(self, key: str, val: Any) -> None: - for t in [str, int]: - if isinstance(val, t): - break - else: - raise HintException( - "%s's fields %s is not support compare value type: %s" % (self._model_class.__name__, key, val) - ) - def __generate_road(self, road): path = "$" for r in road: @@ -172,9 +161,6 @@ class Operator: return path def __is_json(self, val: Any): - if isinstance(val, (dict, list)): - return True, json.dumps(val) - if isinstance(val, str): val_str = val.strip() if val_str.startswith(("{", "[")) and val_str.endswith(("}", "]")): @@ -183,6 +169,8 @@ class Operator: return True, val except json.JSONDecodeError: pass + if isinstance(val, (dict, list)): + return True, json.dumps(val) return False, val def __navigate_path(self, json_data: Any, road: List[str]) -> tuple[Any, bool]: @@ -220,20 +208,13 @@ class Operator: params.append(json.dumps(item)) return f" {connector} ".join(conditions), params - operators = { - "gt": (f"{key} > ?", [val]), - "lt": (f"{key} < ?", [val]), - "gte": (f"{key} >= ?", [val]), - "lte": (f"{key} <= ?", [val]), - "ne": (f"{key} != ?", [val]), - "like": (f"{key} LIKE ?", [f"%{val}%"]), - "startswith": (f"{key} LIKE ?", [f"{val}%"]), - "endswith": (f"{key} LIKE ?", [f"%{val}"]), - } - if compare in operators: + if compare in self.SIMPLE_OP: if compare == "ne" and self._flag and is_json: return f"NOT (json({key}) = json(?))", [val] - return operators[compare] + return f"{key} {self.SIMPLE_OP[compare]} ?", [val] + + elif compare in self.LIKE_OP: + return f"{key} LIKE ?", [self.LIKE_OP[compare].format(val)] elif compare in ("contains", "any_contains"): if is_json: @@ -243,21 +224,10 @@ class Operator: pass if not isinstance(val, list): val = [val] - # list - if isinstance(val, list): - if compare == "contains": - return __contains_and_or(val, "AND") - else: - return __contains_and_or(val, "OR") - - # single - elif self._flag is True and not isinstance(val, (dict, list)): - # simple val - return f"EXISTS(SELECT 1 FROM json_each({key}) WHERE value = ?)", [val] - + if compare == "contains": + return __contains_and_or(val, "AND") else: - # other | complicated val - return f"instr({key}, ?) > 0", [json.dumps(val)] + return __contains_and_or(val, "OR") elif compare in ("in", "not_in"): if is_json: @@ -290,17 +260,25 @@ class Operator: is_json, val = self.__is_json(val) if not road: sql, params = self.__compare_operator( - f"{self._tb}.{key}", compare, val, is_json, sp_compare + key=f"{self._tb}.{key}", + compare=compare, + val=val, + is_json=is_json, + sp_compare=sp_compare ) return sql, params else: if self._flag: - path = self.__generate_road(road) sql, params = self.__compare_operator( - f"json_extract({self._tb}.{key}, '{path}')", compare, val, is_json, sp_compare + key=f"json_extract({self._tb}.{key}, '{self.__generate_road(road)}')", + compare=compare, + val=val, + is_json=is_json, + sp_compare=sp_compare ) return sql, params + # 退化分支 if is_json: try: val = json.loads(val) @@ -360,6 +338,8 @@ class Operator: return f"json_extract({self._tb}.{key}, ?) = ?", [path, val] return f"json_extract({self._tb}.{key}, ?) IS NULL", [path] + + # 退化分支 pk_name = self._model_class.__primary_key__ q_fork = self._query.fork() q_fork._SqliteEasy__OPT_LIMIT.clear() @@ -750,6 +730,7 @@ class aaObjects(Generic[M]): """ 管理器 """ + _queryset_class = QuerySet __m_map__ = {} def __new__(cls, args): @@ -761,6 +742,15 @@ class aaObjects(Generic[M]): self._model = model self.__q = None + # @classmethod + # def _as_manager(cls): + # """自定义管理器""" + # return aaManager(obj_cls=cls) + + def _get_queryset(self) -> "QuerySet[M]": + """获取管理器关联的QuerySet""" + return self._queryset_class(self._model, self._query.fork()) + @property def _query(self) -> Db.query: if not self.__q: @@ -818,7 +808,7 @@ class aaObjects(Generic[M]): :kwargs dict :return: QuerySet | None """ - return QuerySet(self._model, self._query.fork()).filter(**kwargs).first() + return self._get_queryset().filter(**kwargs).first() def filter(self, *args, **kwargs) -> "QuerySet[M]": """ @@ -826,14 +816,14 @@ class aaObjects(Generic[M]): :kwargs dict :return: QuerySet """ - return QuerySet(self._model, self._query.fork()).filter(*args, **kwargs) + return self._get_queryset().filter(*args, **kwargs) def all(self) -> "QuerySet[M]": """ 所有数据 return: QuerySet """ - return QuerySet(self._model, self._query.fork()) + return self._get_queryset() class aaMigrate: @@ -1017,13 +1007,23 @@ class aaMigrate: class aaManager: + def __init__(self, obj_cls=aaObjects, qs_cls=QuerySet): + self._objects_class = obj_cls + self._queryset_class = qs_cls + self._cache = {} + def __get__(self, instance, cls: M): - if instance is None: - try: - return aaObjects(cls) - except Exception: - import traceback - raise PanelError(traceback.format_exc()) - raise RuntimeError( - f"object manager can't accessible from '{cls.__name__}' instances" - ) + if instance is not None: + raise RuntimeError( + f"object manager can't accessible from '{cls.__name__}' instances" + ) + try: + manager = self._cache.get(cls) + if manager is None: + manager = self._objects_class(cls) + setattr(manager, "_queryset_class", self._queryset_class) + self._cache[cls] = manager + return manager + except Exception: + import traceback + raise PanelError(traceback.format_exc()) diff --git a/class/public/common.py b/class/public/common.py index 37ba0ab8..b3b6acea 100644 --- a/class/public/common.py +++ b/class/public/common.py @@ -36,6 +36,74 @@ from .validate import Param, trim_filter aap_t_simple_result = aap_t_simple_result aap_t_mysql_dump_info = aap_t_mysql_dump_info +# 默认语言配置 新增语言时请同步更新 +def default_languages_config(): + return { + "default": "en", + "languages": [ + { + "name": "en", + "google": "en", + "title": "English", + "cn": "英语" + }, + { + "name": "de", + "google": "de", + "title": "Deutsch", + "cn": "德语" + }, + { + "name": "fra", + "google": "fr", + "title": "Français", + "cn": "法语" + }, + { + "name": "spa", + "google": "es", + "title": "Español", + "cn": "西班牙语" + }, + { + "name": "pt", + "google": "pt", + "title": "Português", + "cn": "葡萄牙语" + }, + { + "name": "vie", + "google": "vi", + "title": "Tiếng Việt", + "cn": "越南语" + }, + { + "name": "ind", + "google": "id", + "title": "Bahasa Indonesia", + "cn": "印尼语" + }, { + "name": "ru", + "google": "ru", + "title": "Русский", + "cn": "俄语" + }, + { + "name": "zh", + "google": "zh-cn", + "title": "简体中文", + "cn": "简体中文" + }, + { + "name": "cht", + "google": "zh-tw", + "title": "繁體中文", + "cn": "繁體中文" + } + ] + } + + path = "/www/server/panel/BTPanel/languages/language.pl" if os.path.exists(path): with open(path, 'r', encoding='utf-8') as data: @@ -49,65 +117,70 @@ if os.path.exists(path): settings = json.loads(file.read()) # 修复空文件 if not settings.get('languages', None): - settings = { - "default": "en", - "languages": [ - { - "name": "cht", - "google": "zh-tw", - "title": "繁體中文", - "cn": "繁體中文" - }, - { - "name": "en", - "google": "en", - "title": "English", - "cn": "英语" - }, - { - "name": "de", - "google": "de", - "title": "Deutsch", - "cn": "德语" - }, - { - "name": "fra", - "google": "fr", - "title": "Français", - "cn": "法语" - }, - { - "name": "spa", - "google": "es", - "title": "Español", - "cn": "西班牙语" - }, - { - "name": "pt", - "google": "pt", - "title": "Português", - "cn": "葡萄牙语" - }, - { - "name": "vie", - "google": "vi", - "title": "Tiếng Việt", - "cn": "越南语" - }, - { - "name": "ind", - "google": "id", - "title": "Bahasa Indonesia", - "cn": "印尼语" - }, { - "name": "ru", - "google": "ru", - "title": "Русский", - "cn": "俄语" - } - ] -} - +# settings = { +# "default": "en", +# "languages": [ +# { +# "name": "en", +# "google": "en", +# "title": "English", +# "cn": "英语" +# }, +# { +# "name": "de", +# "google": "de", +# "title": "Deutsch", +# "cn": "德语" +# }, +# { +# "name": "fra", +# "google": "fr", +# "title": "Français", +# "cn": "法语" +# }, +# { +# "name": "spa", +# "google": "es", +# "title": "Español", +# "cn": "西班牙语" +# }, +# { +# "name": "pt", +# "google": "pt", +# "title": "Português", +# "cn": "葡萄牙语" +# }, +# { +# "name": "vie", +# "google": "vi", +# "title": "Tiếng Việt", +# "cn": "越南语" +# }, +# { +# "name": "ind", +# "google": "id", +# "title": "Bahasa Indonesia", +# "cn": "印尼语" +# }, { +# "name": "ru", +# "google": "ru", +# "title": "Русский", +# "cn": "俄语" +# },{ +# "name": "zh", +# "google": "zh-cn", +# "title": "简体中文", +# "cn": "简体中文" +# }, +# { +# "name": "cht", +# "google": "zh-tw", +# "title": "繁體中文", +# "cn": "繁體中文" +# } +# ] +# } + settings = default_languages_config() settings['default'] = lang with open(settings_file, 'w', encoding='utf-8') as file: file.write(json.dumps(settings, indent=4)) @@ -414,7 +487,17 @@ def return_message(status, types, message, args=(), play="", requests=()): @return dict {"status":0/-1,"message":any}/下载对象 """ from flask import g - g.return_message = True + # g.return_message = True + + # 只有在应用上下文中才操作 g,否则跳过 + try: + if hasattr(g, 'return_message'): # 检查是否存在 + g.return_message = True + except Exception: + # 不在上下文中,忽略即可 + pass + + # 非文件下载 if types == 0: return_message = {'status': status, "timestamp": int(time.time()), "message": {}} @@ -798,7 +881,8 @@ def ServiceReload(): ), ( "/usr/local/lsws/bin/lswsctrl", - "rm -f /tmp/lshttpd/*.sock* && /usr/local/lsws/bin/lswsctrl restart", + # "rm -f /tmp/lshttpd/*.sock* && /usr/local/lsws/bin/lswsctrl restart", + "/usr/local/lsws/bin/lswsctrl reload", None ) ] @@ -1864,10 +1948,10 @@ def checkPort(port): intport = int(port) if intport < 1 or intport > 65535: return False - # 判断端口占用,避免多服务崩溃 - res = ExecShell(f'lsof -i :{port} -P -n -l -F pnc') - if res[0] and port != '80': - return False + # # 判断端口占用,避免多服务崩溃 + # res = ExecShell(f'lsof -i :{port} -P -n -l -F pnc') + # if res[0] and port != '80': + # return False return True @@ -9250,6 +9334,16 @@ def ensure_unique_db_name(db_name: str) -> str: return db_name +# 优先使用新名称 +def ensure_unique_db_name2(db_name: str) -> str: + while True: + new_db_name = '{}_{}'.format( + db_name[:9], + GetRandomString(6) + ) + + if not S('databases').where('name', new_db_name).exists(): + return new_db_name def pkcs7_padding(data: bytes, block_size: int = 16) -> bytes: length = len(data) @@ -9564,7 +9658,7 @@ def webservice_operation(service: str, type = 'restart') -> bool: type 类型:关闭,重启,开启 """ try: - import system_v2 + from class_v2 import system_v2 server_restart = system_v2.system() get = public.to_dict_obj({ 'name': service, diff --git a/class/public/websitemgr.py b/class/public/websitemgr.py index 91010366..6863c786 100644 --- a/class/public/websitemgr.py +++ b/class/public/websitemgr.py @@ -120,7 +120,7 @@ def del_bak(bak_file: str) -> aap_t_simple_result: # 创建PHP站点 -def create_php_site_with_mysql(domain: str, site_path: str, php_ver_short: str, db_user: str, db_pwd: str, another_domains: typing.List = ()) -> aap_t_simple_site_info: +def create_php_site_with_mysql(domain: str, site_path: str, php_ver_short: str, db_user: str, db_pwd: str, another_domains: typing.List = (), is_clone=False) -> aap_t_simple_site_info: """ :param domain: str 网站主域名 :param site_path: str 网站根目录(绝对路径) @@ -146,6 +146,7 @@ def create_php_site_with_mysql(domain: str, site_path: str, php_ver_short: str, 'datapassword': db_pwd, 'codeing': 'utf8mb4', 'ps': domain.replace('.', '_').replace('-', '_'), + 'is_clone' : is_clone })) if int(data.get('status', 0)) != 0: raise HintException(data.get('message', {})['result']) diff --git a/class/userLang.py b/class/userLang.py index a0d2d21b..7b316803 100644 --- a/class/userLang.py +++ b/class/userLang.py @@ -30,64 +30,7 @@ class userLang: settings = '{}/BTPanel/languages/settings.json'.format(public.get_panel_path()) custom = '{}/BTPanel/static/vite/lang/my-MY'.format(public.get_panel_path()) if not os.path.exists(settings): - data = { - "default": "en", - "languages": [ - { - "name": "cht", - "google": "zh-tw", - "title": "繁體中文", - "cn": "繁體中文" - }, - { - "name": "en", - "google": "en", - "title": "English", - "cn": "英语" - }, - { - "name": "de", - "google": "de", - "title": "Deutsch", - "cn": "德语" - }, - { - "name": "fra", - "google": "fr", - "title": "Français", - "cn": "法语" - }, - { - "name": "spa", - "google": "es", - "title": "Español", - "cn": "西班牙语" - }, - { - "name": "pt", - "google": "pt", - "title": "Português", - "cn": "葡萄牙语" - }, - { - "name": "vie", - "google": "vi", - "title": "Tiếng Việt", - "cn": "越南语" - }, - { - "name": "ind", - "google": "id", - "title": "Bahasa Indonesia", - "cn": "印尼语" - }, { - "name": "ru", - "google": "ru", - "title": "Русский", - "cn": "俄语" - } - ] - } + data = public.default_languages_config() public.writeFile(settings, json.dumps(data)) settings_content = public.readFile(settings) diff --git a/class_v2/ajax_v2.py b/class_v2/ajax_v2.py index 2cc85dd1..668b9dc6 100644 --- a/class_v2/ajax_v2.py +++ b/class_v2/ajax_v2.py @@ -1772,10 +1772,25 @@ class ajax: php_ini = php_path + php_version + '/etc/php.ini' if not os.path.exists('/etc/redhat-release') and public.get_webserver() == 'openlitespeed': php_ini = php_path + php_version + '/etc/php/'+args.php_version+'/litespeed/php.ini' + if not os.path.exists(php_ini) and not os.path.exists(php_bin): + return public.return_message(-1, 0, public.lang("Requested PHP version does NOT exist!")) tmp = public.ExecShell(php_bin + ' -c {} /www/server/panel/class/php_info.php'.format(php_ini))[0] if tmp.find('Warning: JIT is incompatible') != -1: tmp = tmp.strip().split('\n')[-1] - result = json.loads(tmp) + try: + result = json.loads(tmp) + result['phpinfo'] = {} + if "modules" not in result: + result['modules'] = [] + if 'php_version' in result: + result['phpinfo']['php_version'] = result['php_version'] + except Exception: + result = { + 'php_version': php_version, + 'phpinfo': {}, + 'modules': [], + 'ini': '' + } result['phpinfo'] = {} result['phpinfo']['php_version'] = result['php_version'] result['phpinfo']['php_path'] = php_path diff --git a/class_v2/apache_v2.py b/class_v2/apache_v2.py index 729f2dc6..28c3e534 100644 --- a/class_v2/apache_v2.py +++ b/class_v2/apache_v2.py @@ -50,7 +50,8 @@ class apache: time.sleep(0.5) data = {} - + if not result: + raise public.exceptions.HintException("Get Apache Status False, Please Check Apache Status") # 计算启动时间 Uptime = re.search(r"ServerUptimeSeconds:\s+(.*)",result) if not Uptime: diff --git a/class_v2/btdockerModelV2/containerModel.py b/class_v2/btdockerModelV2/containerModel.py index 7c4ea53e..d1fcee87 100644 --- a/class_v2/btdockerModelV2/containerModel.py +++ b/class_v2/btdockerModelV2/containerModel.py @@ -29,6 +29,7 @@ class main(dockerBase): self.alter_table() if public.M('sqlite_master').db('docker_log_split').where('type=? AND name=?', ('table', 'docker_log_split')).count(): # if public.M('sqlite_master').where('type=? AND name=?',('table', 'docker_log_split')).count(): + #if dp.sql('sqlite_master').where('type=? AND name=?',('table', 'docker_log_split')).count(): p = crontab.crontab() llist = p.GetCrontab(None) @@ -115,6 +116,7 @@ class main(dockerBase): if d in get.cmd: return public.return_message(-1, 0, public.lang('There are danger symbols: [{}],Execution is not allowed!',d)) + get.cmd = get.cmd.replace("\n", "").replace("\r", "").replace("\\", " ") os.system("echo -n > {}".format(self._rCmd_log)) os.system("nohup {} >> {} 2>&1 && echo 'bt_successful' >> {} || echo 'bt_failed' >> {} &".format( get.cmd, @@ -140,10 +142,6 @@ class main(dockerBase): :param get: :return: """ - # {"name": "cgroupg1", "image": "nginx:1.19.6", "publish_all_ports": "0", "ports": "", "network": "", - # "ip_address": "", "command": "", "entrypoint": "", "auto_remove": "0", "privileged": "0", - # "restart_policy": {"Name": ""}, "mem_reservation": "8855MB", "cpu_quota": 6, "mem_limit": "15555MB", - # "labels": "", "environment": ""} # 校验参数 try: @@ -266,6 +264,18 @@ class main(dockerBase): network_info = get.network_info if hasattr(get, "network_info") and get.network_info != "" else [] + device_request = [] + gpus = str(get.get("gpus", "0")) + if gpus != "0": + count = 0 + if gpus == "all": + count = -1 + else: + count = int(gpus) + + from docker.types import DeviceRequest + device_request.append(DeviceRequest(driver="nvidia",count=count,capabilities=[["gpu"]])) + try: res = self.docker_client(self._url).containers.create( name=get.name, @@ -287,6 +297,7 @@ class main(dockerBase): privileged=True if "privileged" in get and get.privileged != "0" else False, environment=dp.set_kv(get.environment), # "HOME=/value\nHOME11=value1" labels=dp.set_kv(get.labels), # "key=value\nkey1=value1" + device_requests=device_request ) except docker.errors.APIError as e: @@ -329,10 +340,6 @@ class main(dockerBase): return public.return_message(-1, 0, public.lang("Container failed to run! {}", str(a))) if res: - # print(res.status) - # print(res.id) - # dk_config = self.docker_client(self._url).containers.get(res.id) - # print(dk_config.attrs['NetworkSettings']['Networks'][network]['IPAddress']) # 将容器的ip改成用户指定的ip pdata = { "cpu_limit": str(get.cpu_quota), @@ -359,10 +366,10 @@ class main(dockerBase): get.tmp_ip_address = network["ip_address"] get.tmp_ip_addressv6 = network["ip_addressv6"] net_result = self.connent_network(get) - if not net_result["status"]: + if net_result["status"] == -1: return net_result - # 返回包含容器的id和name + res.start() return public.return_message(0, 0, { "status": True, "result": "Successfully created!", @@ -370,15 +377,74 @@ class main(dockerBase): "name": dp.rename(res.name), }) - # return public.return_message(0, 0, public.lang("容器创建成功!")) return public.return_message(-1, 0, public.lang("Creation failure!")) + # 2024/11/12 17:15 创建并启动容器 + def create_some_container(self, get, new_name=None): + ''' + @name 创建并启动容器 + ''' + container = new_name if not new_name is None else get.new_container_config["name"] + network_info = get.network_info if "network_info" in get and get.network_info != "" else [] + try: + get.new_container = self.docker_client(self._url).containers.create( + name=container, + image=get.new_container_config["image"], + detach=get.new_container_config["detach"], + cpu_quota=get.new_container_config["cpu_quota"], + mem_limit=get.new_container_config["mem_limit"], + tty=get.new_container_config["tty"], + stdin_open=get.new_container_config["stdin_open"], + publish_all_ports=True if get.new_container_config["publish_all_ports"] == "1" else False, + ports=get.new_container_config["ports"], + command=get.new_container_config["command"], + entrypoint=get.new_container_config["entrypoint"], + environment=get.new_container_config["environment"], + labels=get.new_container_config["labels"], + auto_remove=get.new_container_config["auto_remove"], + privileged=get.new_container_config["privileged"], + volumes=get.new_container_config["volumes"], + volume_driver=get.new_container_config["volume_driver"], + mem_reservation=get.new_container_config["mem_reservation"], + restart_policy=get.new_container_config["restart_policy"], + device_requests=get.new_container_config["device_requests"] + ) + except Exception as e: + if "Read timed out" in str(e): + return public.return_message(-1, 0, public.lang("Editing failed, connection to docker timed out, please restart docker and try again!")) + return public.return_message(-1, 0, public.lang("Update failed!{}",str(e))) + if not "upgrade" in get or get.upgrade != "1": + if len(network_info) > 0: + self.docker_client(self._url).networks.get("bridge").disconnect(get.new_container.id) + for temp in network_info: + get.net_name = temp["network"] + get.new_container_id = get.new_container.id + get.tmp_ip_address = temp["ip_address"] + get.tmp_ip_addressv6 = temp["ip_addressv6"] + net_result = self.connent_network(get) + if net_result["status"] == -1: + get.new_container.remove() + return net_result + else: + self.docker_client(self._url).networks.get("bridge").disconnect(get.new_container.id) + for net_name, net_settings in get.old_container_config["networking_config"].items(): + get.net_name = net_name + get.new_container_id = get.new_container.id + get.tmp_ip_address = net_settings["IPAddress"] + get.tmp_ip_addressv6 = net_settings["GlobalIPv6Address"] + net_result = self.connent_network(get) + if net_result["status"] == -1: + get.new_container.remove() + return net_result + + get.new_container.start() def upgrade_container(self, get): """ 更新正在运行的容器镜像(重建) @param get: @return: """ + public.set_module_logs('docker', 'upgrade_container', 1) try: if "id" not in get: return public.return_message(-1, 0, public.lang("Container ID is abnormal")) @@ -409,64 +475,68 @@ class main(dockerBase): new_container_config = self.structure_new_container_conf(get) if new_container_config['status']==-1: return public.return_message(-1, 0, public.lang( new_container_config['message'])) - network_info = get.network_info if "network_info" in get and get.network_info != "" else [] + get.new_container_config = new_container_config + + # 2024/11/12 17:05 旧的容器停止掉,以便后面创建新的容器 container.stop() - container.remove() + + # 2024/11/12 17:04 创建一个当前时间戳的新容器,测试是否可以正常运行 + new_name_time = int(time.time()) + new_name = "{}_{}".format(new_container_config["name"], new_name_time) + result = self.create_some_container(get, new_name=new_name) + if result: + container = self.docker_client(self._url).containers.get(get.id) + container.start() + + if "No such image" in result["msg"]: + return public.return_message(-1, 0, public.lang("The image [{}] does not exist, please try to check [Force pull image] and try again!", get.new_container_config["image"])) + return public.return_message(-1, 0, public.lang("The new container was not created successfully, and the old container has been restored. {}", str(result["msg"]))) + + + from btdockerModelV2.dockerSock import container + sk_container = container.dockerContainer() + + # 2024/11/12 17:05 循环检测10次,每次1秒,看是否能获取到新容器的状态,并且必须是running运行中,否则判定为新容器创建失败,然后回滚旧容器 + is_break = False + for i in range(10): + sk_container_info = sk_container.get_container_inspect(get.new_container.attrs["Id"]) + state_n = sk_container_info["State"] + if "running" in state_n["Status"] and state_n["Running"]: + is_break = True + get.new_container.stop() + get.new_container.remove() + time.sleep(1) + + # 2024/11/12 17:06 验证了新的配置文件没有问题,可以正常启动,删掉旧容器,开始创建新的容器 + container = self.docker_client(self._url).containers.get(get.id) + container.remove() + result = self.create_some_container(get) + if result: return result + + # 2024/11/12 17:07 再次检查新的容器状态,如果已经是运行中,则返回编辑成功,否则失败 + for i in range(10): + new_sk_container_info = sk_container.get_container_inspect(get.new_container.attrs["Id"]) + if "message" in new_sk_container_info: + time.sleep(1) + continue + + state_n = new_sk_container_info["State"] + if "running" in state_n["Status"] and state_n["Running"]: + return public.return_message(0, 0, public.lang("Update successful!")) + + time.sleep(1) + + if is_break: break + time.sleep(1) + try: - new_container = self.docker_client(self._url).containers.create( - name=new_container_config["name"], - image=new_container_config["image"], - detach=new_container_config["detach"], - cpu_quota=new_container_config["cpu_quota"], - mem_limit=new_container_config["mem_limit"], - tty=new_container_config["tty"], - stdin_open=new_container_config["stdin_open"], - publish_all_ports=True if new_container_config["publish_all_ports"] == "1" else False, - ports=new_container_config["ports"], - command=new_container_config["command"], - entrypoint=new_container_config["entrypoint"], - environment=new_container_config["environment"], - labels=new_container_config["labels"], - auto_remove=new_container_config["auto_remove"], - privileged=new_container_config["privileged"], - volumes=new_container_config["volumes"], - volume_driver=new_container_config["volume_driver"], - mem_reservation=new_container_config["mem_reservation"], - restart_policy=new_container_config["restart_policy"], - ) - except Exception as e: - public.print_log(traceback.format_exc()) - public.print_log("修改 创建新容器报错--") - - if "Read timed out" in str(e): - return public.return_message(-1, 0, public.lang("Container editing failed and the connection to docker timed out.")) - # print(traceback.format_exc()) + container = self.docker_client(self._url).containers.get(get.id) + container.start() + except: return public.return_message(-1, 0, public.lang("Update failed!{}", str(e))) - if not "upgrade" in get or get.upgrade != "1": - if len(network_info) > 0: - self.docker_client(self._url).networks.get("bridge").disconnect(new_container.id) - for temp in network_info: - get.net_name = temp["network"] - get.new_container_id = new_container.id - get.tmp_ip_address = temp["ip_address"] - get.tmp_ip_addressv6 = temp["ip_addressv6"] - net_result = self.connent_network(get) - if not net_result["status"]: - return net_result - else: - self.docker_client(self._url).networks.get("bridge").disconnect(new_container.id) - for net_name, net_settings in get.old_container_config["networking_config"].items(): - get.net_name = net_name - get.new_container_id = new_container.id - get.tmp_ip_address = net_settings["IPAddress"] - get.tmp_ip_addressv6 = net_settings["GlobalIPv6Address"] - net_result = self.connent_network(get) - if not net_result["status"]: - return net_result - new_container.start() - return public.return_message(0, 0, public.lang("Update successfully!")) + return public.return_message(0, 0, public.lang("Update failed! The container state has been restored")) except docker.errors.NotFound as e: if "No such container" in str(e): return public.return_message(-1, 0, public.lang("Container does not exist!")) @@ -527,8 +597,8 @@ class main(dockerBase): "GlobalIPv6Address": net_settings["GlobalIPv6Address"], "GlobalIPv6PrefixLen": net_settings["GlobalIPv6PrefixLen"], "DriverOpts": net_settings["DriverOpts"], - "DNSNames": net_settings["DNSNames"], } + if "DNSNames" in net_settings: network_config[net_name]["DNSNames"] = net_settings["DNSNames"] return public.return_message(0, 0,{ "image": container.attrs['Config']['Image'], @@ -606,6 +676,18 @@ class main(dockerBase): new_restart_policy = get.new_restart_policy if hasattr(get, "new_restart_policy") and get.new_restart_policy else get.old_container_config["restart_policy"] new_network = get.new_network if hasattr(get, "new_network") and get.new_network else get.old_container_config["network"] + device_request = [] + gpus = str(get.get("gpus", "0")) + if gpus != "0": + count = 0 + if gpus == "all": + count = -1 + else: + count = int(gpus) + + from docker.types import DeviceRequest + device_request.append(DeviceRequest(driver="nvidia", count=count, capabilities=[["gpu"]])) + return public.return_message(0, 0, { "image": new_image, "name": new_name, @@ -626,6 +708,7 @@ class main(dockerBase): "volume_driver": new_volume_driver, "mem_reservation": new_mem_reservation, "restart_policy": new_restart_policy, + "device_requests":device_request }) def commit(self, get): @@ -678,7 +761,6 @@ class main(dockerBase): :param get: :return: """ - # {"id": "b414fd6b5d5a1e36e3246dc8bb4b4518bd0adbcd62180abc0e146ccc4b8731db", "shell": "bash", "sudo_i": 1} try: get.validate([ Param('id').Require().String(), @@ -691,15 +773,6 @@ class main(dockerBase): public.print_log("error info: {}".format(ex)) return public.return_message(-1, 0, ex) try: - # if "id" not in get: - # return public.return_message(-1, 0, public.lang("The container ID is abnormal, please refresh the page and try again!")) - - # shell_list = ('bash', 'sh') - # if "shell" not in get: - # return public.return_message(-1, 0, public.lang("Select the shell type!")) - - # if get.shell not in shell_list: - # return public.return_message(-1, 0, public.lang("This shell is not supported-choose bash or sh!")) user_root = "-u root" if hasattr(get, "sudo_i") else "" @@ -740,21 +813,6 @@ class main(dockerBase): @param get: @return: """ - # try: - # # 删除站点 - # a = public.M('sites').find() - # b = public.M('domain').find() - # - # # 删除数据库记录 - # c = dp.sql('dk_domain').find() - # d = dp.sql('dk_sites').find() - # except Exception as e: - # public.print_log(traceback.format_exc()) - # - # public.print_log("a| {}".format(a)) - # public.print_log("b| {}".format(b)) - # public.print_log("c| {}".format(c)) - # public.print_log("d| {}".format(d)) try: get.validate([ @@ -792,8 +850,6 @@ class main(dockerBase): # todo 此处导入注意适配 info返回已改 info = main().get_proxy_info(get)['message'] if info and 'name' in info and 'id' in info: - print(info['name']) - print(info['id']) args = public.to_dict_obj({ 'id': info['id'], 'webname': info['name'] @@ -820,7 +876,7 @@ class main(dockerBase): if not all_data: public.M("docker_log_split").execute('drop table if exists docker_log_split') - containers_list = self.get_list(get)['message'] + containers_list = self._get_list(get) if not containers_list["container_list"]: public.M("docker_log_split").execute('drop table if exists docker_log_split') @@ -843,6 +899,8 @@ class main(dockerBase): return public.return_message(0, 0, public.lang("Successfully deleted!")) except Exception as e: + if "operation not permitted" in str(e): + return public.return_message(-1, 0, public.lang("Please turn off the [Tamper-proof for Enterprise] before trying!")) return public.return_message(-1, 0, public.lang("Delete failed! {}", str(e))) # 设置容器状态 @@ -1118,9 +1176,17 @@ class main(dockerBase): if "No such container" in str(sk_container_info): return public.return_message(-1, 0, public.lang("The container doesn't exist!")) - info_path = "/var/lib/docker/containers/{}/container_info.json".format(get.id) + info_path = "/var/lib/docker/containers/{}/container_info.json".format(sk_container_info["Id"]) public.writeFile(info_path, json.dumps(sk_container_info, indent=3)) sk_container_info['container_info'] = info_path + # 计算GPU数量 + device_requests = sk_container_info["HostConfig"].get('DeviceRequests', []) + sk_container_info["gpu_count"] = 0 + if device_requests is not None and len(device_requests) != 0: + for item in device_requests: + if item["Driver"] == "nvidia": + sk_container_info["gpu_count"] = item["Count"] + break return public.return_message(0, 0, sk_container_info) except Exception as e: if "No such container" in str(e): @@ -1240,37 +1306,7 @@ class main(dockerBase): :param get :return: """ - from btdockerModelV2.dockerSock import container - sk_container = container.dockerContainer() - sk_container_list = sk_container.get_container() - - container_to_top = self._get_container_to_top() - - data = { - "online_cpus": dp.get_cpu_count(), - "mem_total": dp.get_mem_info(), - "container_list": [], - } - - container_detail = list() - grouped_by_status = dict() - for sk_c in sk_container_list: - struct_container = self.struct_container_list(sk_c, container_to_top) - status = struct_container['status'] - grouped_by_status.setdefault(status, []).append(struct_container) - container_detail.append(struct_container) - - if container_to_top: - container_detail = sorted(container_detail, key=lambda x: (x['is_top'], x['created_time']), reverse=True) - for key in grouped_by_status: - grouped_by_status[key] = sorted(grouped_by_status[key], key=lambda x: (x['is_top'], x['created_time']), reverse=True) - else: - container_detail = sorted(container_detail, key=lambda x: x['created_time'], reverse=True) - for key in grouped_by_status: - grouped_by_status[key] = sorted(grouped_by_status[key], key=lambda x: x['created_time'], reverse=True) - - data['grouped_by_status'] = grouped_by_status - data['container_list'] = container_detail + data = self._get_list(get) return public.return_message(0, 0, data) def _get_list(self, get): @@ -1284,11 +1320,17 @@ class main(dockerBase): sk_container_list = sk_container.get_container() container_to_top = self._get_container_to_top() - + #获取gpu数量 + try: + from mod.project.docker.app.gpu.nvidia import NVIDIA + gpu_count = NVIDIA().device_count + except: + gpu_count = 0 data = { "online_cpus": dp.get_cpu_count(), "mem_total": dp.get_mem_info(), "container_list": [], + "gpu": gpu_count } container_detail = list() @@ -1318,7 +1360,7 @@ class main(dockerBase): return [container_info.attrs for container_info in c_list] # 获取容器日志 - def get_logs(self, get): + def get_logs11(self, get): """ 获取指定容器日志 :param get: @@ -1392,6 +1434,61 @@ class main(dockerBase): except Exception: return public.return_message(0, 0, res) + + def get_logs(self, get): + """ + 获取指定容器日志 + :param get: + :return: + """ + res = { + "logs": "", + } + + try: + # 获取容器信息 名称 日志路径 大小 + container_info = self.docker_client(self._url).containers.get(get.id) + + if not os.path.exists(container_info.attrs['LogPath']): + return public.return_message(0, 0, "") + + since = "" + until = "" + tail = "" + if hasattr(get, 'time_search') and get.time_search != '': + time_search = json.loads(str(get.time_search)) + since = int(time_search[0]) + until = int(time_search[1]) + size = os.stat(container_info.attrs['LogPath']).st_size + if size > 1048576: + tail = int(get.tail) if "tail" in get else 10000 + + options = { + "since": since, + "until": until, + "tail": tail + } + from btdockerModelV2.dockerSock import container + + sk_container = container.dockerContainer() + sk_container_logs = sk_container.get_container_logs(get.id,options) + if hasattr(get, 'search') and get.search != '': + if get.search: + sk_container_logs = sk_container_logs.split("\n") + sk_container_logs = [i for i in sk_container_logs if get.search in i] + sk_container_logs = "\n".join(sk_container_logs) + + res["logs"] = sk_container_logs + res['id'] = get.id + res['name'] = dp.rename(container_info.attrs['Name'][1:]) + res['logs_path'] = container_info.attrs['LogPath'] + res['size'] = os.stat(container_info.attrs['LogPath']).st_size + + return public.return_message(0, 0, res) + + except Exception: + return public.return_message(0, 0, res) + def get_logs_all(self, get): """ 获取所有容器的日志 @@ -1719,115 +1816,92 @@ class main(dockerBase): @return: """ if not hasattr(get, 'ws_callback'): - return public.return_message(-1, 0, public.lang( 'Parameter error, Please pass in: ws_callback!')) + return public.return_message(-1, 0, public.lang('Parameter error, Please pass in: ws_callback!')) if not hasattr(get, '_ws'): - return public.return_message(-1, 0, public.lang( 'Parameter error, Please pass in: _ws!')) - - from system import system - syst = system() - data = dict() - data["cpu_info"] = syst.GetCpuInfo() - data["mem_info"] = syst.GetMemInfo() - - get._ws.send(public.getJson( - { - "data": data, - "ws_callback": get.ws_callback, - "msg": "Start getting the cpu and memory usage of all containers!", - "status": True, - "end": False, - })) + return public.return_message(-1, 0, public.lang('Parameter error, Please pass in: _ws!')) try: + result = { + "container_list": {}, + } # 获取所有容器列表 container_list = self._get_list(get)["container_list"] + for container in container_list: + result["container_list"][container["name"]] = { + "id": container["id"], + "name": container["name"], + "image": container["image"], + "created_time": container["created_time"], + "status": container["status"], + "memory_usage": "", + "cpu_usage": "", + "pids": "", + } + + get._ws.send(public.getJson( + { + "data": result, + "ws_callback": get.ws_callback, + "msg": "Start getting CPU and memory usage for all containers!", + "status": True, + "end": False, + })) while True: docker_stats_result = public.ExecShell( - "docker stats --no-stream --format " + "docker stats --all --no-stream --format " "'{{.ID}},{{.Name}},{{.CPUPerc}},{{.MemUsage}},{{.MemPerc}},{{.NetIO}},{{.BlockIO}},{{.PIDs}};'" )[0] - data["cpu_info"] = syst.GetCpuInfo() - data["mem_info"] = syst.GetMemInfo() - if not docker_stats_result: get._ws.send(public.getJson( { "data": {}, "ws_callback": get.ws_callback, - "msg": "No running container resource information has been obtained yet!", + "msg": "I haven't received any information about the running container resources!", "status": True, "end": True, })) return - container_stats_data = list() - for i in docker_stats_result.split(";"): if not i: continue tmp = i.strip().split(",") if len(tmp) == 0: continue if len(tmp) == 1 and not tmp[0]: continue + container_name = dp.rename(tmp[1]) + if container_name not in result["container_list"]: + continue - # 获取容器使用的image - id = image = create_time = "" - - for cl in container_list: - if cl["name"] in dp.rename(tmp[1]): - id = cl["id"] - image = cl["image"] - create_time = cl["created_time"] - break - - container_stats_data.append({ - "id": id, - "name": dp.rename(tmp[1]), - "image": image, - "create_time": create_time, - "cpu_usage": tmp[2].strip("%"), - "mem_percent": tmp[4].strip("%"), - "mem_usage": { - "mem_usage": dp.byte_conversion(tmp[3].split("/")[0]), - "mem_limit": dp.byte_conversion(tmp[3].split("/")[1]), - }, - "net_io": { - "net_in": dp.byte_conversion(tmp[5].split("/")[0]), - "net_out": dp.byte_conversion(tmp[5].split("/")[1]), - }, - "block_io": { - "block_in": dp.byte_conversion(tmp[6].split("/")[0]), - "block_out": dp.byte_conversion(tmp[6].split("/")[1]), - }, - "pids": tmp[7], - }) - - data["container_stats_data"] = container_stats_data - data["container_count"] = len(container_stats_data) - end = False - msg = "Obtaining the cpu and memory usage of all containers was successful!" - if len(container_stats_data) == 0: - end = True - msg = "No running container resource information has been obtained yet!" + result["container_list"][container_name]["cpu_usage"] = tmp[2].strip("%") + result["container_list"][container_name]["mem_percent"] = tmp[4].strip("%") + result["container_list"][container_name]["memory_usage"] = { + "mem_usage": dp.byte_conversion(tmp[3].split("/")[0]), + "mem_limit": dp.byte_conversion(tmp[3].split("/")[1]), + } + result["container_list"][container_name]["pids"] = tmp[7] get._ws.send(public.getJson( { - "data": data, + "data": result, "ws_callback": get.ws_callback, - "msg": msg, + "msg": "Get CPU and memory usage for all containers successfully!", "status": True, - "end": end, + "end": False, })) time.sleep(0.1) - except: - public.print_log(traceback.format_exc()) + + except Exception as ex: + # import traceback + # public.print_log(traceback.format_exc()) + # public.print_log("error info: {}".format(ex)) get._ws.send(public.getJson( { "data": {}, "ws_callback": get.ws_callback, - "msg": "Failed to get cpu and memory usage of all containers!", + "msg": "Failed to get CPU and memory usage for all containers!", "status": True, "end": True, })) diff --git a/class_v2/btdockerModelV2/dk_public.py b/class_v2/btdockerModelV2/dk_public.py index 2d27ec22..aab488bb 100644 --- a/class_v2/btdockerModelV2/dk_public.py +++ b/class_v2/btdockerModelV2/dk_public.py @@ -67,7 +67,7 @@ def docker_client_low(url="unix:///var/run/docker.sock"): try: import docker except: - public.ExecShell("btpip install docker") + public.ExecShell("btpip install --upgrade docker") import docker try: @@ -126,12 +126,16 @@ def get_mem_info(): def byte_conversion(data): data = data.lower() # 将数据转换为小写字母形式 + if "tib" in data: + return float(data.replace('tib', '')) * 1024 * 1024 * 1024 *1024 if "gib" in data: return float(data.replace('gib', '')) * 1024 * 1024 * 1024 elif "mib" in data: return float(data.replace('mib', '')) * 1024 * 1024 elif "kib" in data: return float(data.replace('kib', '')) * 1024 + elif "tb" in data: + return float(data.replace('tb', '')) * 1024 * 1024 * 1024 *1024 elif "gb" in data: return float(data.replace('gb', '')) * 1024 * 1024 * 1024 elif "mb" in data: @@ -218,7 +222,7 @@ def get_process_id(pname, cmd_line): def write_log(log_data): - public.WriteLog("Docker module", log_data) + public.WriteLog("Docker", log_data) def check_socket(port): diff --git a/class_v2/btdockerModelV2/dkgroupModel.py b/class_v2/btdockerModelV2/dkgroupModel.py index e2ac5ade..756ed25d 100644 --- a/class_v2/btdockerModelV2/dkgroupModel.py +++ b/class_v2/btdockerModelV2/dkgroupModel.py @@ -1,8 +1,8 @@ # coding: utf-8 # ------------------------------------------------------------------- -# 宝塔Linux面板 +# aaPanel # ------------------------------------------------------------------- -# Copyright (c) 2015-2099 宝塔软件(http://bt.cn) All rights reserved. +# Copyright (c) 2015-2099 aaPanel(www.aapanel.com) All rights reserved. # ------------------------------------------------------------------- # Author: # ------------------------------------------------------------------- diff --git a/class_v2/btdockerModelV2/dockerSock/container.py b/class_v2/btdockerModelV2/dockerSock/container.py index bd78f054..9554fc6b 100644 --- a/class_v2/btdockerModelV2/dockerSock/container.py +++ b/class_v2/btdockerModelV2/dockerSock/container.py @@ -8,6 +8,8 @@ # ------------------------------------------------------------------- # docker模型sock 封装库 容器库 # ------------------------------------------------------------------- +import socket +import select import json import public @@ -30,8 +32,15 @@ class dockerContainer(base): return json.loads(public.ExecShell("curl -s --unix-socket {} http:/{}/containers/json?all=1".format(self._sock, self.get_api_version()))[0]) except Exception as e: - print(public.get_error_info()) - return [] + try: + c_list = public.ExecShell("whereis curl | awk 'print {$1}'")[0].split(" ") + for c in c_list: + if not c.endswith("/curl"): continue + res, err = public.ExecShell("{} -s --unix-socket {} http:/{}/containers/json?all=1".format(c, self._sock, self.get_api_version())) + if not err: return json.loads(res) + return [] + except: + return [] # 2024/3/28 下午 11:37 获取指定容器的inspect def get_container_inspect(self, container_id: str): @@ -44,5 +53,91 @@ class dockerContainer(base): return json.loads(public.ExecShell("curl -s --unix-socket {} http:/{}/containers/{}/json" .format(self._sock, self.get_api_version(), container_id))[0]) except Exception as e: - print(public.get_error_info()) - return [] + try: + c_list = public.ExecShell("whereis curl | awk 'print {$1}'")[0].split(" ") + for c in c_list: + if not c.endswith("/curl"): continue + res, err = public.ExecShell("{} -s --unix-socket {} http:/{}/containers/{}/json".format(c, self._sock, self.get_api_version(), container_id)) + if not err: return json.loads(res) + return [] + except: + return [] + + # 2025/1/18 11:05 构造返回日志 + def structure_docker_logs(self, log_data: str) -> list: + """ + @name: 清理 Docker 日志并转换为 JSON 格式 + @param: raw_logs: 原始日志字符串 + @return: 日志对象列表 + """ + formatted_logs = [] + + # 逐行处理日志 + for line in log_data.split('\n'): + line = line.strip() + + if line: + # 只处理包含日期时间戳的行,去除其它无用的字符 + parts = line.split(' ', 1) # 按第一个空格分割时间戳和日志内容 + if len(parts) > 1: + timestamp = parts[0] + message = parts[1] + formatted_logs.append(message) + + # 返回格式化后的日志 + return "\n".join(formatted_logs) + + # 2025/1/18 10:26 获取容器日志 + def get_container_logs(self, container_id: str, options: dict) -> list: + ''' + @name 获取容器日志 + @param container_id: 容器id + @return dict{"status":True/False,"msg":"提示信息"} + ''' + # 定义 Docker API 请求路径 + url = f"/containers/{container_id}/logs?stdout=true&stderr=true×tamps=true" + + if options: + if "since" in options and options["since"] != "": + url += "&since={}".format(options['since']) + if "until" in options and options["until"] != "": + url += "&until={}".format(options['until']) + if "tail" in options and options["tail"] != "": + url += "&tail={}".format(options['tail']) + + # 设置 Unix socket 地址 + unix_socket = "/var/run/docker.sock" + + # 连接到 Docker 的 UNIX socket + with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as client_socket: + client_socket.settimeout(1) + client_socket.connect(unix_socket) + + # 构建 HTTP 请求 + http_request = f"GET {url} HTTP/1.1\r\n" + http_request += "Host: localhost\r\n" + http_request += "Accept: application/json\r\n" + http_request += "Content-Type: application/json\r\n" + http_request += "Connection: close\r\n\r\n" + + # 发送请求 + client_socket.sendall(http_request.encode()) + + # 接收响应 + response = b"" + while True: + data = client_socket.recv(4096) + if not data: + break + response += data + + # 从响应中分割出 HTTP 头部和响应体 + headers, body = response.split(b"\r\n\r\n", 1) + + # 只保留日志部分,解码并忽略无法解码的字符 + log_data = body.decode('utf-8', errors='replace') + + result = self.structure_docker_logs(log_data) + + # 返回日志内容 + return result diff --git a/class_v2/btdockerModelV2/dockerSock/image.py b/class_v2/btdockerModelV2/dockerSock/image.py index 8215e872..dddbd356 100644 --- a/class_v2/btdockerModelV2/dockerSock/image.py +++ b/class_v2/btdockerModelV2/dockerSock/image.py @@ -30,8 +30,15 @@ class dockerImage(base): return json.loads(public.ExecShell("curl -s --unix-socket {} http:/{}/images/json?all=1" .format(self._sock, self.get_api_version()))[0]) except Exception as e: - print(public.get_error_info()) - return [] + try: + c_list = public.ExecShell("whereis curl | awk 'print {$1}'")[0].split(" ") + for c in c_list: + if not c.endswith("/curl"): continue + res, err = public.ExecShell("{} -s --unix-socket {} http:/{}/images/json?all=1".format(c, self._sock, self.get_api_version())) + if not err: return json.loads(res) + return [] + except: + return [] # 2023/12/13 上午 11:08 镜像搜索 def search(self, name): @@ -45,10 +52,15 @@ class dockerImage(base): return json.loads(public.ExecShell("curl -s --unix-socket {} http:/{}/images/search?term={}" .format(self._sock, self.get_api_version(), name))[0],) except Exception as e: - # if os.path.exists('data/debug.pl'): - # print(public.get_error_info()) - # public.print_log(public.get_error_info()) - return [] + try: + c_list = public.ExecShell("whereis curl | awk 'print {$1}'")[0].split(" ") + for c in c_list: + if not c.endswith("/curl"): continue + res, err = public.ExecShell("{} -s --unix-socket {} http:/{}/images/search?term={}".format(c, self._sock, self.get_api_version(), name)) + if not err: return json.loads(res) + return [] + except: + return [] # 2024/4/1 下午 2:47 image load def load_image(self, path): @@ -58,11 +70,9 @@ class dockerImage(base): @return dict{"status":True/False,"msg":"提示信息"} ''' try: - return json.loads(public.ExecShell("curl -s --unix-socket {} -X POST http:/{}/images/load -H \"Content-Type: application/x-tar\" --data-binary @{}" - .format(self._sock, self.get_api_version(), path))[0]) + return json.loads(public.ExecShell("curl -s --unix-socket {} -X POST http:/{}/images/load -H \"Content-Type: application/x-tar\" --upload-file {}".format(self._sock, self.get_api_version(), path))[0]) except Exception as e: - print(public.get_error_info()) - return False + return {} # 2024/4/16 上午11:39 获取指定image的inspect信息 def inspect(self, image): @@ -75,6 +85,24 @@ class dockerImage(base): return json.loads(public.ExecShell("curl -s --unix-socket {} http:/{}/images/{}/json" .format(self._sock, self.get_api_version(), image))[0]) except Exception as e: - print(public.get_error_info()) - return {} + try: + c_list = public.ExecShell("whereis curl | awk 'print {$1}'")[0].split(" ") + for c in c_list: + if not c.endswith("/curl"): continue + res, err = public.ExecShell("{} -s --unix-socket {} http:/{}/images/{}/json".format(c, self._sock, self.get_api_version(), image)) + if not err: return json.loads(res) + return {} + except: + return {} + # 2024/10/31 22:43 清理所有构建缓存 + def build_prune(self): + ''' + @name 清理所有构建缓存 + @return dict{"status":True/False,"msg":"提示信息"} + ''' + try: + return json.loads(public.ExecShell("curl -s --unix-socket {} -X POST http:/{}/build/prune?all=1" + .format(self._sock, self.get_api_version()))[0]) + except Exception as e: + return False diff --git a/class_v2/btdockerModelV2/dockerSock/network.py b/class_v2/btdockerModelV2/dockerSock/network.py new file mode 100644 index 00000000..4d4b0d35 --- /dev/null +++ b/class_v2/btdockerModelV2/dockerSock/network.py @@ -0,0 +1,91 @@ +# coding: utf-8 +# ------------------------------------------------------------------- +# aaPanel +# ------------------------------------------------------------------- +# Copyright (c) 2015-2099 aaPanel(www.aapanel.com) All rights reserved. +# ------------------------------------------------------------------- +# Author: wzz +# ------------------------------------------------------------------- +# docker模型sock 封装库 网络库 +# ------------------------------------------------------------------- +import json + +import public +from btdockerModelV2.dockerSock.sockBase import base + + +class dockerNetWork(base): + def __init__(self): + super(dockerNetWork, self).__init__() + + # 2024/11/27 14:31 list network + def list_network(self): + ''' + @name list network + ''' + try: + return json.loads(public.ExecShell("curl -s --unix-socket {} http:/{}/networks".format(self._sock, self.get_api_version()))[0]) + except Exception as e: + try: + c_list = public.ExecShell("whereis curl | awk 'print {$1}'")[0].split(" ") + for c in c_list: + if not c.endswith("/curl"): continue + res, err = public.ExecShell("{} -s --unix-socket {} http:/{}/networks".format(c, self._sock, self.get_api_version())) + if not err: return json.loads(res) + return [] + except: + return [] + + # 2024/11/27 14:33 inspect a network + def inspect_network(self, get): + ''' + @name inspect a network + ''' + try: + return json.loads(public.ExecShell("curl -s --unix-socket {} http:/{}/networks/{}".format(self._sock, self.get_api_version(), get.id))[0]) + except Exception as e: + try: + c_list = public.ExecShell("whereis curl | awk 'print {$1}'")[0].split(" ") + for c in c_list: + if not c.endswith("/curl"): continue + res, err = public.ExecShell("{} -s --unix-socket {} http:/{}/networks/{}".format(c, self._sock, self.get_api_version(), get.id)) + if not err: return json.loads(res) + return {} + except: + return {} + + # 2024/11/27 14:34 remove network + def remove_network(self, get): + ''' + @name remove network + ''' + try: + return json.loads(public.ExecShell("curl -s -X DELETE --unix-socket {} http:/{}/networks/{}".format(self._sock, self.get_api_version(), get.id))[0]) + except Exception as e: + try: + c_list = public.ExecShell("whereis curl | awk 'print {$1}'")[0].split(" ") + for c in c_list: + if not c.endswith("/curl"): continue + res, err = public.ExecShell("{} -s -X DELETE --unix-socket {} http:/{}/networks/{}".format(c, self._sock, self.get_api_version(), get.id)) + if not err: return json.loads(res) + return {} + except: + return {} + + # 2024/11/27 14:34 create network + def create_network(self, get): + ''' + @name create network + ''' + try: + return json.loads(public.ExecShell("curl -s -X POST --unix-socket {} http:/{}/networks/create -H \"Content-Type: application/json\" -d '{}'".format(self._sock, self.get_api_version(), json.dumps(get.post_data)))[0]) + except Exception as e: + try: + c_list = public.ExecShell("whereis curl | awk 'print {$1}'")[0].split(" ") + for c in c_list: + if not c.endswith("/curl"): continue + res, err = public.ExecShell("{} -s -X POST --unix-socket {} http:/{}/networks/create -H \"Content-Type: application/json\" -d '{}'".format(c, self._sock, self.get_api_version(), json.dumps(get.post_data))) + if not err: return json.loads(res) + return {} + except: + return {} diff --git a/class_v2/btdockerModelV2/dockerSock/system.py b/class_v2/btdockerModelV2/dockerSock/system.py new file mode 100644 index 00000000..21892c77 --- /dev/null +++ b/class_v2/btdockerModelV2/dockerSock/system.py @@ -0,0 +1,39 @@ +# coding: utf-8 +# ------------------------------------------------------------------- +# aaPanel +# ------------------------------------------------------------------- +# Copyright (c) 2015-2099 aaPanel(www.aapanel.com) All rights reserved. +# ------------------------------------------------------------------- +# Author: wzz +# ------------------------------------------------------------------- +# docker模型sock 封装库 系统信息库 +# ------------------------------------------------------------------- + + +import json +import public +from btdockerModelV2.dockerSock.sockBase import base + + +class dockerSystem(base): + def __init__(self): + super(dockerSystem, self).__init__() + + # 2024/12/16 17:47 获取系统信息 + def get_system_info(self): + ''' + @name 获取系统信息 + ''' + try: + return json.loads(public.ExecShell("curl -s --unix-socket {} http:/{}/info".format(self._sock, self.get_api_version()))[0]) + except Exception as e: + try: + c_list = public.ExecShell("whereis curl | awk 'print {$1}'")[0].split(" ") + for c in c_list: + if not c.endswith("/curl"): continue + res, err = public.ExecShell("{} -s --unix-socket {} http:/{}/info".format(c, self._sock, self.get_api_version())) + if not err: return json.loads(res) + return [] + except: + return [] + diff --git a/class_v2/btdockerModelV2/dockerSock/volume.py b/class_v2/btdockerModelV2/dockerSock/volume.py index 43f16dac..536ab887 100644 --- a/class_v2/btdockerModelV2/dockerSock/volume.py +++ b/class_v2/btdockerModelV2/dockerSock/volume.py @@ -30,5 +30,12 @@ class dockerVolume(base): return json.loads(public.ExecShell("curl -s --unix-socket {} http:/{}/volumes" .format(self._sock, self.get_api_version()))[0]) except Exception as e: - print(public.get_error_info()) - return [] + try: + c_list = public.ExecShell("whereis curl | awk 'print {$1}'")[0].split(" ") + for c in c_list: + if not c.endswith("/curl"): continue + res, err = public.ExecShell("{} -s --unix-socket {} http:/{}/volumes".format(c, self._sock, self.get_api_version())) + if not err: return json.loads(res) + return [] + except: + return [] diff --git a/class_v2/btdockerModelV2/imageModel.py b/class_v2/btdockerModelV2/imageModel.py index 00677d03..b2e611d2 100644 --- a/class_v2/btdockerModelV2/imageModel.py +++ b/class_v2/btdockerModelV2/imageModel.py @@ -51,12 +51,6 @@ class main(dockerBase): return public.return_message(-1, 0, str(ex)) try: - # if "name" not in get or get.name == "": - # return public.return_message(-1, 0, public.lang("Image name cannot be empty")) - # if "path" not in get or get.path == "": - # return public.return_message(-1, 0, public.lang("Mirror path cannot be empty")) - # if "id" not in get or get.id == "": - # return public.return_message(-1, 0, public.lang("Image ID cannot be empty")) if "/" in get.name: return public.return_message(-1, 0, public.lang("The image name cannot contain /")) @@ -115,7 +109,12 @@ class main(dockerBase): from btdockerModelV2.dockerSock import image sk_image = image.dockerImage() - sk_image.load_image(get.path) + result = sk_image.load_image(get.path) + if "error" in result: + if "Read timed out" in result["error"]: + return public.return_message(-1, 0, public.lang("Failed to import the image, the connection to docker timed out, please try to restart docker and try again!")) + if "no such file or directory" in result["error"]: + return public.return_message(-1, 0, public.lang("If the image import fails and the temporary container directory is not created, check whether the protection software has an interception record.")) dp.write_log("Image [{}] imported successfully!".format(get.path)) return public.return_message(0, 0, public.lang("Image import was successful!{}", get.path)) @@ -141,25 +140,13 @@ class main(dockerBase): from btdockerModelV2.dockerSock import container sk_container = container.dockerContainer() container_list = sk_container.get_container() - # if not container_list: - # return public.return_message(0, 0, data) - data = list() - # public.print_log("data000 : {}".format(data)) - # public.print_log("sk_images_镜像列表 sk_images_list: {}".format(sk_images_list)) for image in sk_images_list: - # public.print_log("image if111111: {}".format(image)) - # {'Containers': -1, 'Created': 1717026901, - # 'Id': 'sha256:4f67c83422ec747235357c04556616234e66fc3fa39cb4f40b2d4441ddd8f100', - # 'Labels': {'maintainer': 'NGINX Docker Maintainers '}, 'ParentId': '', - # 'RepoDigests': ['nginx@sha256:0f04e4f646a3f14bf31d8bc8d885b6c951fdcf42589d06845f64d18aec6a3c4d'], - # 'RepoTags': ['nginx:latest'], 'SharedSize': -1, 'Size': 187667860} if image is None: continue if image['RepoTags'] is not None and len(image['RepoTags']) != 0: - # public.print_log("data2 if111111: {}".format(data)) for tag in image['RepoTags']: tmp = { "id": image['Id'], @@ -172,18 +159,13 @@ class main(dockerBase): "used": 0, "containers": [], } - # public.print_log("tmp tmp tmp: {}".format(tmp)) - # {'id': 'sha256:4f67c83422ec747235357c04556616234e66fc3fa39cb4f40b2d4441ddd8f100', - # 'tags': 'nginx:latest', 'name': 'nginx:latest', - # 'digest': 'sha256:0f04e4f646a3f14bf31d8bc8d885b6c951fdcf42589d06845f64d18aec6a3c4d', - # 'time': 1717026901, 'size': 187667860, 'created_at': 1717026901, 'used': 0, 'containers': []} - # public.print_log("container_list if: {}".format(container_list)) + self.structure_images_list(container_list, tmp) - # public.print_log("data jhshs哈666666 if: {}".format(data)) + data.append(tmp) - # public.print_log("data2 if: {}".format(data)) + else: - # public.print_log("data2 if: {}".format(data)) + tmp = { "id": image['Id'], "tags": "", @@ -197,16 +179,15 @@ class main(dockerBase): } self.structure_images_list(container_list, tmp) - # public.print_log("data2333 if: {}".format(data)) + data.append(tmp) - # public.print_log("data2 else : {}".format(data)) - # public.print_log("data2kjefa : {}".format(type(data))) + + return public.return_message(0, 0, data) except Exception as ex: import traceback - # public.print_log("尺码个| info: {}".format(ex)) public.print_log(traceback.format_exc()) return public.return_message(0, 0, data) @@ -260,17 +241,6 @@ class main(dockerBase): :return: """ - # # 校验参数 - # try: - # get.validate([ - # Param('path').Require().SafePath(), - # ], [ - # public.validate.trim_filter(), - # ]) - # except Exception as ex: - # public.print_log("error info: {}".format(ex)) - # return public.return_message(-1, 0, str(ex)) - public.writeFile(self._log_path, "Start building the image!") if not hasattr(get, "pull"): get.pull = False @@ -440,13 +410,13 @@ class main(dockerBase): if "/" in get.tag: return public.return_message(-1, 0, public.lang("The pushed image cannot contain [/], please use the following format: image:v1 (image name: version)")) - if ":" not in get.tag: - get.tag = "{}:latest".format(get.tag) + # if ":" not in get.tag: + # get.tag = "{}:latest".format(get.tag) public.writeFile(self._log_path, "Start pushing the image!\n") from btdockerModelV2 import registryModel as dr - r_info = dr.main().registry_info(get.name) + r_info = dr.main().registry_info(get) r_info['username'] = public.aes_decrypt(r_info['username'], self.aes_key) r_info['password'] = public.aes_decrypt(r_info['password'], self.aes_key) @@ -464,7 +434,6 @@ class main(dockerBase): "password": r_info['password'], "registry": r_info['url'] } - # repository namespace/image repository = r_info['url'] reg_name = r_info['reg_name'] if "reg_name" in r_info and r_info["reg_name"] != "" else r_info["name"] @@ -508,13 +477,61 @@ class main(dockerBase): tag=tag_ver ) return public.return_message(0, 0, public.lang("Successfully set!")) + def __parse_progress(self, progress_detail, progress_str): + """ + 解析 progressDetail 字典和 progress 字符串,返回当前值和总值(均以字节为单位)。 + """ + current = progress_detail.get('current', 0) + try: + current = float(current) + except (ValueError, TypeError): + current = 0 - def pull(self, get): + import re + # 使用正则表达式提取数值和单位 + match = re.match(r'(\d+(?:\.\d+)?)\s*([kBMGT]?B)', progress_str.strip(), re.IGNORECASE) + if match: + total = float(match.group(1)) + unit = match.group(2).upper() + else: + # 如果无法匹配,使用 current 作为总值,并假设单位为 B + total = current + unit = 'B' + return current, total, unit + + def __convert_to_bytes(self, value, unit): + """ + 将值转换为字节。 + 支持的单位: B, kB, MB, GB, TB + """ + units = {'B': 1, 'KB': 1024, 'MB': 1024 ** 2, 'GB': 1024 ** 3, 'TB': 1024 ** 4} + return value * units.get(unit, 1) + + def __display_progress_bar(self, current, total, last_progress, bar_length=50): + """ + 在终端中显示进度条。 + """ + try: + if total == 0: + percent = 0 + else: + percent = current / total + if last_progress[0] == 1.0: last_progress[0] = 0.0 + if percent > last_progress[0]: + filled_length = int(bar_length * percent) + content = '=' * filled_length + '>' + ' ' * (bar_length - filled_length - 1) + last_progress[0] = percent # 更新上一次的百分比 + return "[{}] {:.2f}%".format(content, percent * 100) + else: + return "" + except: + return "" + def pull_11(self, get): """ :param image :param url :param registry - :param username 拉取私有镜像时填写 1 + :param username 拉取私有镜像时填写 :param password 拉取私有镜像时填写 :param get: :return: @@ -522,26 +539,36 @@ class main(dockerBase): # try: get._ws.send(public.lang("Pulling the image, please wait...\r\n")) - import docker.errors import time time.sleep(0.1) # get._ws.send(public.lang("Pull or search for images...\r\n")) + + auth_data = { + "username": get.username, + "password": get.password, + "registry": get.registry if get.registry else None + } + auth_conf = auth_data if get.username else None + + if get.registry == "docker.io": + get.image = '{}:latest'.format(get.image) if ':' not in get.image else get.image + + if not hasattr(get, "tag"): get.tag = get.image.split(":")[-1] + + if get.registry != "docker.io": + get.image = "{}/{}/{}:{}".format(get.registry, get.namespace, get.name, get.image) + + if get.get("registry_mirrors","") != "": + if "//" in get.registry_mirrors or "/" in get.registry_mirrors: + get.registry_mirrors = get.registry_mirrors.replace("https://", "").replace("http://", "").replace("/","") + + if not "/" in get.image: + get.image = "{}/library/{}".format(get.registry_mirrors, get.image) + else: + get.image = "{}/{}".format(get.registry_mirrors, get.image) + + get._ws.send("Pulling: {}\r\n".format(get.image)) try: - auth_data = { - "username": get.username, - "password": get.password, - "registry": get.registry if get.registry else None - } - auth_conf = auth_data if get.username else None - - if get.registry == "docker.io": - get.image = '{}:latest'.format(get.image) if ':' not in get.image else get.image - - if not hasattr(get, "tag"): get.tag = get.image.split(":")[-1] - - if get.registry != "docker.io": - get.image = "{}/{}/{}:{}".format(get.registry, get.namespace, get.name, get.image) - ret = dp.docker_client_low(self._url).pull( repository=get.image.split(":")[0], auth_config=auth_conf, @@ -550,10 +577,11 @@ class main(dockerBase): ) if not ret: - get._ws.send("failed," + public.lang("pull failed!\r\n")) + get._ws.send("failed, pull failed!\r\n") return last_result = None - last_progress_str = None + output_str = None + last_progress = [0.0] while True: try: output = next(ret) @@ -646,10 +674,112 @@ class main(dockerBase): return get._ws.send("failed," + public.lang("pull failed!{}\r\n",e)) return + def pull(self, get): + """ + :param image + :param url + :param registry + :param username 拉取私有镜像时填写 + :param password 拉取私有镜像时填写 + :param get: + :return: + """ + get._ws.send("Pulling the image, please wait...\r\n") - # except Exception as e: - # # public.print_log("拉取镜像 -- {}".format(e)) - # public.print_log(traceback.format_exc()) + import time + time.sleep(0.1) + get._ws.send("Pull or search for the image...\r\n") + auth_data = { + "username": get.username, + "password": get.password, + "registry": get.registry if get.registry else None + } + auth_conf = auth_data if get.username else None + + if get.registry == "docker.io": + get.image = '{}:latest'.format(get.image) if ':' not in get.image else get.image + + if not hasattr(get, "tag"): get.tag = get.image.split(":")[-1] + + if get.registry != "docker.io": + get.image = "{}/{}/{}:{}".format(get.registry, get.namespace, get.name, get.image) + + if get.get("registry_mirrors","") != "": + if "//" in get.registry_mirrors or "/" in get.registry_mirrors: + get.registry_mirrors = get.registry_mirrors.replace("https://", "").replace("http://", "").replace("/","") + + if not "/" in get.image: + get.image = "{}/library/{}".format(get.registry_mirrors, get.image) + else: + get.image = "{}/{}".format(get.registry_mirrors, get.image) + + get._ws.send("Pulling:{}\r\n".format(get.image)) + try: + ret = dp.docker_client_low(self._url).pull( + repository=get.image.split(":")[0], + auth_config=auth_conf, + tag=get.tag, + stream=True + ) + + if not ret: + get._ws.send("Failed,The pull failed!\r\n") + return + last_result = None + output_str = None + last_progress = [0.0] + while True: + try: + output = next(ret) + output = json.loads(output) + try: + # 状态 + output_status = output.get('status', "") + progress_detail = output.get('progressDetail', {}) + + if output_status in ["Downloading", "Extracting"] and progress_detail: + progress = output.get('progress', "") + current, total, unit = self.__parse_progress(progress_detail, progress) + + if total == 0: + continue + total_bytes = self.__convert_to_bytes(total, unit) + output_str = self.__display_progress_bar(current, total_bytes, last_progress) + else: + output_str = output_status + except: + continue + + if output_str != last_result and output_str: + get._ws.send(output_str + "\r\n") + last_result = output_str + time.sleep(0.1) + except StopIteration: + get._ws.send("successful, The mirror pull [{}] succeeded\r\n".format(get.image)) + return public.returnMsg(True, "The pull image succeeds!") + except ValueError: + get._ws.send("failed, The pull failed!\r\n") + return public.returnMsg(False, "The pull failed!") + except docker.errors.ImageNotFound as e: + if "pull access denied for" in str(e): + get._ws.send("failed, The pull failed,The image does not exist, or the image may be private, and you need to enter the dockerhub account password!\r\n") + return + get._ws.send("failed, The pull failed!{}\r\n".format(e)) + return + + except docker.errors.NotFound as e: + if "not found: manifest unknown" in str(e): + get._ws.send("failed, The pull failed, there is no mirror image in the warehouse!\r\n") + return + get._ws.send("failed, The pull failed!{}\r\n".format(e)) + return + + except docker.errors.APIError as e: + if "invalid tag format" in str(e): + get._ws.send("failed, The pull failed,Image format errors, such as: nginx:v 1!\r\n") + return + get._ws.send("failed, The pull failed!{}\r\n".format(e)) + return # 拉取镜像 def pull_high_api(self, get): @@ -738,7 +868,6 @@ class main(dockerBase): ''' for r in results: - # public.print_log("is_pullvis_pull {}".format(r)) r["is_pull"] = 0 r['id'] = "" for image in sk_images_list: @@ -752,7 +881,7 @@ class main(dockerBase): return sorted(results, key=lambda x: x['star_count'], reverse=True) - # 2023/12/13 上午 11:08 镜像搜索 todo 关键字查询调用ws接口 暂时没查到 + # 2023/12/13 上午 11:08 镜像搜索 def search(self, get): ''' @name 镜像搜索,docker hub官方镜像列表 @@ -766,6 +895,9 @@ class main(dockerBase): ''' try: get.name = get.get("name/s", "") + keywords_to_exclude = ["开心版", "习近平", "xijinping", "xijinping615"] + if get.name in keywords_to_exclude: return [] + from btdockerModelV2.dockerSock import image sk_image = image.dockerImage() sk_images_list = sk_image.get_images() @@ -773,7 +905,6 @@ class main(dockerBase): if get.name == "": # 2024/3/20 上午 10:10 如果get.name是空,则返回docker_hub_repos.db中results表的所有镜像 import db, os - sql = db.Sql() sql.dbfile('{}/class_v2/btdockerModelV2/config/docker_hub_repos.db'.format(public.get_panel_path())) # 2024/3/20 上午 10:24 按照star_count排序 @@ -804,3 +935,145 @@ class main(dockerBase): get.wsLogTitle = "Start executing the command, please wait..." get._log_path = self._rCmd_log return self.get_ws_log(get) + + def format_time(self,timestr): + """ + 格式化时间字符串为xxx天前、xxx小时前、xxx分钟前或xxx秒前 + :param timestr: ISO格式的时间字符串 + """ + from datetime import datetime, timezone + dt = datetime.fromisoformat(timestr).astimezone(timezone.utc) + now = datetime.now(timezone.utc) + delta = now - dt + total_seconds = delta.total_seconds() + + if total_seconds < 60: + str_t = public.lang("seconds ago") + return f"{int(total_seconds)} {str_t}" + elif total_seconds < 3600: + str_t = public.lang("minutes ago") + return f"{int(total_seconds // 60)} {str_t}" + elif total_seconds < 86400: + str_t = public.lang("hours ago") + return f"{int(total_seconds // 3600)} {str_t}" + else: + str_t = public.lang("days ago") + return f"{int(total_seconds // 86400)} {str_t}" + + def get_image_detail(self, get): + """ + 获取镜像详情 + :param get: + :return: + """ + + if not hasattr(get, "image") or not get.image: + return public.return_message(-1, 0, public.lang("The mirror name cannot be empty!")) + + import requests + if "/" not in get.image: + get.image = "library/{}".format(get.image) + + params = { + 'repositories': get.image, + } + + response = requests.get('https://1ms.run/api/v1/registry/get_detail', params=params).json() + public.set_module_logs('docker', 'get_image_detail', 1) + if response["code"] != 0: + return public.return_message(-1, 0, []) + from datetime import datetime + dt = datetime.fromisoformat(response["data"]["last_updated"].split("T")[0]) + response["data"]["last_updated"] = dt.strftime('%Y/%m/%d') + return public.return_message(0, 0, response["data"]) + + + + def get_image_detail_official(self, get): + """ + 获取镜像详情(使用 Docker Hub 官方 API) + :param get: 必须包含 get.image 镜像名 + :return: 镜像详情或错误信息 + """ + + # 检查镜像名是否为空 + if not hasattr(get, "image") or not get.image: + return public.return_message(-1, 0, public.lang("The mirror name cannot be empty!")) + import requests + + image_name = get.image.strip() + + # 处理官方镜像(library/xxx) + if "/" not in image_name: + image_name = "library/{}".format(image_name) + + # 分割仓库名和镜像名,例如: library/nginx -> name=library, image=nginx + parts = image_name.split("/", 1) + if len(parts) == 1: + namespace = "library" + repo_name = parts[0] + else: + namespace, repo_name = parts + + # Docker Hub Registry API v2 Endpoint + url = f"https://hub.docker.com/v2/repositories/{namespace}/{repo_name}/" + + try: + response = requests.get(url, timeout=10) + if response.status_code == 404: + return public.return_message(-1, 0, "镜像不存在或仓库未公开") + elif response.status_code != 200: + return public.return_message(-1, 0, f"请求失败,状态码: {response.status_code}") + + result = response.json() + + # 记录日志 + public.set_module_logs('docker', 'get_image_detail', 1) + + return public.return_message(0, 0, result) + + except requests.exceptions.RequestException as e: + return public.return_message(-1, 0, f"网络请求失败: {str(e)}") + except Exception as e: + return public.return_message(-1, 0, f"解析数据失败: {str(e)}") + + + + def get_image_tags(self, get): + """ + 获取镜像标签 + :param get: 包含镜像名称和其他参数的对象 + :return: 返回镜像标签列表或错误信息 + """ + + if not hasattr(get, "image") or not get.image: + return public.return_message(-1, 0, public.lang("The mirror name cannot be empty!")) + + import requests + url = "https://1ms.run/api/v1/registry/get_tags" + public.set_module_logs('docker', 'get_image_tags', 1) + query = { + "id":get.get("id",""), + "repositories": public.xssencode2(get.image), + "page_size": 50, + "search": get.get("search",""), + "page": 1 + } + response = requests.get(url, params=query, timeout=5).json() + + if response["code"] != 0: + return public.return_message(-1, 0, []) + + tags = [] + for item in response["data"]["list"]: + tag_name = item["tag_name"] + last_update = item["last_updated"] + last_updated = self.format_time(last_update) + digest = item["digest"] + tags.append({ + "tag_name": tag_name, + "last_update": last_update, + "last_updated": last_updated, + "digest": digest + }) + return public.return_message(0, 0, tags) \ No newline at end of file diff --git a/class_v2/btdockerModelV2/networkModel.py b/class_v2/btdockerModelV2/networkModel.py index 522d08b5..49b03df0 100644 --- a/class_v2/btdockerModelV2/networkModel.py +++ b/class_v2/btdockerModelV2/networkModel.py @@ -303,3 +303,82 @@ class main(dockerBase): if "network" in str(e) and "Not Found" in str(e): return public.return_message(-1, 0, public.lang("Network ID: {}, does not exist!", get.id)) return public.return_message(-1, 0, public.lang("Failed to connect to network! {}", str(e))) + # 2024/11/27 14:37 创建网络 + def create_network(self, get): + ''' + @name 创建网络 + ''' + get.subnet = get.get("subnet", "") + get.gateway = get.get("gateway", "") + get.iprange = get.get("iprange", "") + get.subnet_v6 = get.get("subnet_v6", "") + get.gateway_v6 = get.get("gateway_v6", "") + get.v6_status = get.get("status", 0) + + get.name = get.get("name", None) + if get.name is None: return public.return_message(-1, 0, public.lang("The network name cannot be empty!")) + + get.driver = get.get("driver", "bridge") + get.options = get.get("options", "") + + ipam_pool4 = {} + ipam_pool6 = {} + if get.subnet != "": + if get.gateway == "": return public.return_message(-1, 0, public.lang("Gateways can't be empty!")) + if get.iprange == "": return public.return_message(-1, 0, public.lang("IP ranges cannot be empty!")) + + ipam_pool4 = { + "subnet": get.subnet, + "gateway": get.gateway, + "iprange": get.iprange + } + + if get.v6_status != 0: + ipam_pool6 = { + "subnet": get.subnet_v6, + "gateway": get.gateway_v6, + } + + if not ipam_pool4 and not ipam_pool6: + get.ipam = None + elif not ipam_pool6: + get.ipam = { + "Driver": "default", + "Config": [{ + "Subnet": get.subnet, + "Gateway": get.gateway, + "IPRange": get.iprange + }] + } + else: + get.ipam = { + "Driver": "default", + "Config": [{ + "Subnet": get.subnet, + "Gateway": get.gateway, + "IPRange": get.iprange + }, { + "Subnet": get.subnet_v6, + "Gateway": get.gateway_v6, + }] + } + + get.post_data = { + "name": get.name, + "options": None, + "driver": get.driver, + "ipam": get.ipam, + "enable_ipv6": bool(get.v6_status), + } + + from btdockerModelV2.dockerSock import network + sk_network = network.dockerNetWork() + create_network = sk_network.create_network(get) + + if not create_network: + return public.return_message(-1, 0, public.lang("Creating a network failed!")) + if "message" in create_network: + if "already exists" in create_network["message"]: + return public.return_message(-1, 0, public.lang("Network name: [{}] already exists!".format(get.name))) + return public.return_message(-1, 0, create_network["message"]) + return public.return_message(0, 0, public.lang("Create a network successfully!")) diff --git a/class_v2/btdockerModelV2/projectModel.py b/class_v2/btdockerModelV2/projectModel.py index fd809e2b..aeffe1ad 100644 --- a/class_v2/btdockerModelV2/projectModel.py +++ b/class_v2/btdockerModelV2/projectModel.py @@ -91,25 +91,7 @@ class main(dockerBase): @param get: @return: ''' - project_info = [] - try: - if not os.path.exists(self.info_path): - down_info = self.__download_info(self.info_path) - if not down_info["status"]: - return public.return_message(0, 0, project_info) - - project_info = json.loads(public.readFile(self.info_path)) - project_info.sort(key=lambda x: x["sort"]) - - if not os.path.exists(self.__first_pl): - sync_result = self.__first_sync_item(project_info) - for result in sync_result: - if result.get("successes") and result["successes"] <= 0: - return public.return_message(0, 0, project_info) - public.ExecShell("echo \"first\" > {}".format(self.__first_pl)) - - except Exception as e: - project_info = [] + project_info = self._get_project_list(get) return public.return_message(0, 0, project_info) diff --git a/class_v2/btdockerModelV2/registryModel.py b/class_v2/btdockerModelV2/registryModel.py index 365bad72..6225321f 100644 --- a/class_v2/btdockerModelV2/registryModel.py +++ b/class_v2/btdockerModelV2/registryModel.py @@ -56,6 +56,7 @@ class main(dockerBase): if not args.registry: args.registry = "docker.io" res = self.login(self._url, args.registry, args.username, args.password) + if not res['status']: return public.return_message(-1, 0, res['msg']) r_list = self.registry_list(args) @@ -75,7 +76,8 @@ class main(dockerBase): "password": public.aes_encrypt(args.password, self.aes_key), "remark": public.xsssec(args.remark) } - dp.sql("registry").insert(pdata) + aa = dp.sql("registry").insert(pdata) + dp.write_log("Added repository [{}] [{}] success!".format(args.name, args.registry)) return public.return_message(0, 0, public.lang("successfully added!")) @@ -211,6 +213,7 @@ class main(dockerBase): res = [] for r in res: + if "reg_name" not in r: continue if r["name"] == "" or not r["name"] or r["name"] is None: r["name"] = r["reg_name"] @@ -221,35 +224,7 @@ class main(dockerBase): 获取仓库列表 :return: """ - db_obj = dp.sql("registry") - # 2024/1/3 下午 6:00 检测数据库是否存在并且表健康 - search_result = db_obj.where('id=? or name=?', (1, "Docker public repository")).select() - # search_result = db_obj.where('id=? ', (1)).select() - # if db_obj.ERR_INFO: - # return public.return_message(0, 0, []) - - - if len(search_result) == 0: - dp.sql("registry").insert({ - "name": "Docker public repository", - "url": "docker.io", - "username": "", - "password": "", - "namespace": "", - "remark": "Docker public repository" - }) - if "error: no such table: registry" in search_result or len(search_result) == 0: - # public.ExecShell("mv -f /www/server/panel/data/docker.db /www/server/panel/data/db/docker.db") - public.ExecShell("mv -f /www/server/panel/data/db/docker.db /www/server/panel/data/docker.db") - dp.check_db() - - res = dp.sql("registry").select() - if not isinstance(res, list): - res = [] - - for r in res: - if r["name"] == "" or not r["name"] or r["name"] is None: - r["name"] = r["reg_name"] + res = self.registry_list(get) return public.return_message(0, 0, res) # 2024/5/24 下午6:09 设置备注 def set_remark(self, get): @@ -285,15 +260,6 @@ class main(dockerBase): "registry.cn-hangzhou.aliyuncs.com": "Alibaba Cloud Mirror Station (Hangzhou)" } - # # https://node.aapanel.com/src/com_registry.json - # public.ExecShell("rm -f {}".format(com_registry_file)) - # public.downloadFile("{}/src/com_registry.json".format(public.get_url()), com_registry_file) - # try: - # com_registry = json.loads(public.readFile(com_registry_file)) - # except: - # com_registry = { - # "https://mirror.ccs.tencentyun.com": "腾讯云镜像加速站", - # } return public.return_message(0, 0, com_registry) # todo 检查字段新增reg_name def registry_info(self, get): @@ -315,7 +281,7 @@ class main(dockerBase): :param args: :return: """ - import docker.errors + try: res = self.docker_client(url).login( registry=registry, @@ -323,7 +289,7 @@ class main(dockerBase): password=password, reauth=False ) - # public.print_log(" 仓库登录测试 -- {}".format(res)) + return public.returnMsg(True, str(res)) except: public.print_log(public.get_error_info()) @@ -340,14 +306,17 @@ class main(dockerBase): @name 检查表registry 字段 reg_name remark是否存在 @return dict{"status":True/False,"msg":"提示信息"} ''' - # if not dp.sql('sqlite_master').where('type=? AND name=?', ('table', 'dk_backup')).count(): - # dp.sql('dk_backup').execute( - # "CREATE TABLE `dk_backup` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `type` INTEGER, `name` TEXT, `container_id` TEXT, `container_name` TEXT, `filename` TEXT, `size` INTEGER, `addtime` TEXT, `ps` STRING DEFAULT 'none', `cron_id` INTEGER DEFAULT 0 )", - # ()) - create_table_str = public.M('sqlite_master').where('type=? AND name=?', ('table', 'registry')).getField('sql') + # if public.M('sqlite_master').where('type=? AND name=?', ('table', 'docker_log_split')).count(): + # create_table_str = public.M('sqlite_master').where('type=? AND name=?', ('table', 'docker_log_split')).getField('sql') + # + # if dp.sql('sqlite_master').where('type=? AND name=?', ('table', 'docker_log_split')).count(): + # create_table_str = dp.sql('sqlite_master').where('type=? AND name=?', ('table', 'docker_log_split')).getField('sql') + + + create_table_str = dp.sql('sqlite_master').where('type=? AND name=?', ('table', 'registry')).getField('sql') if create_table_str and 'reg_name' not in create_table_str: - public.M('registry').execute('ALTER TABLE `registry` ADD COLUMN `reg_name` VARCHAR default "";') + dp.sql('registry').execute('ALTER TABLE `registry` ADD COLUMN `reg_name` VARCHAR default "";') if create_table_str and 'remark' not in create_table_str: - public.M('registry').execute('ALTER TABLE `registry` ADD COLUMN `remark` VARCHAR default "";') \ No newline at end of file + dp.sql('registry').execute('ALTER TABLE `registry` ADD COLUMN `remark` VARCHAR default "";') \ No newline at end of file diff --git a/class_v2/btdockerModelV2/securityModel.py b/class_v2/btdockerModelV2/securityModel.py index ea66f91e..613746d3 100644 --- a/class_v2/btdockerModelV2/securityModel.py +++ b/class_v2/btdockerModelV2/securityModel.py @@ -8,7 +8,11 @@ # ------------------------------------------------------------------- import fnmatch import os, sys, time +import json +import subprocess from _stat import S_ISREG, S_ISDIR, S_ISLNK +from gevent.lock import BoundedSemaphore +import contextlib # ------------------------------ # Docker安全检测 @@ -32,6 +36,259 @@ def auto_progress(func): return wrapper +class DockerImageInspector: + def __init__(self): + self.image_info = None + self.image_id = None + self._container_lock = BoundedSemaphore(1) + self._active_containers = set() + + def open_image_by_id(self, image_id): + """打开指定ID的镜像""" + self.image_id = image_id + return self + + def get_image_info(self): + """获取镜像详细信息""" + try: + cmd = f"docker inspect {self.image_id}" + result = subprocess.run(cmd.split(), capture_output=True, text=True) + # public.print_log("|===========result:{}".format(result)) + if result.returncode == 0: + self.image_info = json.loads(result.stdout)[0] + return self.image_info + return None + except Exception as e: + print(f"获取镜像信息失败: {str(e)}") + return None + + def ocispec_v1(self): + """ + 获取镜像的OCI规范信息 + 返回包含配置和历史记录的字典 + """ + if not self.image_info: + self.get_image_info() + + if not self.image_info: + return {} + try: + # 获取配置信息 + config = self.image_info.get('Config', {}) + + # 构造OCI规范格式 + oci_spec = { + 'created': self.image_info.get('Created'), + 'architecture': self.image_info.get('Platform', 'amd64'), # 默认amd64 + 'os': self.image_info.get('Platform', 'linux'), # 默认linux + 'config': { + 'Env': config.get('Env', []), + 'Cmd': config.get('Cmd', []), + 'WorkingDir': config.get('WorkingDir', ''), + 'Entrypoint': config.get('Entrypoint', []), + 'ExposedPorts': config.get('ExposedPorts', {}), + 'Volumes': config.get('Volumes', {}), + }, + 'history': [] + } + + # 使用docker history命令获取历史记录 + try: + cmd = f"docker history --no-trunc --format '{{{{.CreatedBy}}}}' {self.image_id}" + result = subprocess.run(cmd, shell=True, capture_output=True, text=True) + if result.returncode == 0: + history_lines = result.stdout.strip().split('\n') + for line in history_lines: + if line: # 跳过空行 + history_entry = { + 'created': '', # 历史记录中可能没有具体时间 + 'created_by': line, + 'empty_layer': line.startswith('#(nop)') # 判断是否为空层 + } + oci_spec['history'].append(history_entry) + except Exception as e: + print(f"获取历史记录失败: {str(e)}") + + return oci_spec + + except Exception as e: + print(f"获取OCI规范信息失败: {str(e)}") + return {} + + def reporefs(self): + """获取镜像的仓库引用名称列表""" + if not self.image_info: + self.get_image_info() + + refs = [] + if self.image_info and 'RepoTags' in self.image_info: + refs.extend(self.image_info['RepoTags']) + return refs + + def id(self): + """获取镜像ID""" + return self.image_id + + @contextlib.contextmanager + def _temp_container(self): + """创建临时容器的上下文管理器""" + container_id = None + try: + with self._container_lock: + # 创建临时容器 + cmd = f"docker create {self.image_id}" + result = subprocess.run(cmd.split(), capture_output=True, text=True) + if result.returncode != 0: + raise Exception(f"Failing to create a temporary container: {result.stderr}") + + container_id = result.stdout.strip() + self._active_containers.add(container_id) + + yield container_id + + finally: + if container_id: + with self._container_lock: + try: + # 清理临时容器 + subprocess.run(['docker', 'rm', container_id], + capture_output=True, + check=True) + self._active_containers.remove(container_id) + except Exception as e: + # public.print_log(f"清理临时容器失败 {container_id}: {str(e)}") + pass + + def listdir(self, path): + """列出指定路径下的所有文件和目录""" + try: + with self._temp_container() as container_id: + cmd = f"docker export {container_id} | tar -t" + result = subprocess.run(cmd, shell=True, capture_output=True, text=True) + + files = set() + for line in result.stdout.splitlines(): + line = line.strip().strip('/') + if not line: + continue + + rel_path = os.path.relpath(line, path.strip('/')) + if rel_path.startswith('..'): + continue + + parts = rel_path.split('/') + if len(parts) == 1: + files.add(parts[0]) + + return list(files) + + except Exception as e: + return [] + + def walk(self, top): + """遍历目录树""" + try: + with self._temp_container() as container_id: + cmd = f"docker export {container_id} | tar -t" + result = subprocess.run(cmd, shell=True, capture_output=True, text=True) + + dir_tree = {} + for line in result.stdout.splitlines(): + line = line.strip().strip('/') + if not line or not line.startswith(top.strip('/')): + continue + + parts = line.split('/') + current_path = '' + for i, part in enumerate(parts): + parent_path = current_path + current_path = os.path.join(current_path, part) if current_path else part + + if current_path not in dir_tree: + dir_tree[current_path] = {'dirs': set(), 'files': set()} + + if i < len(parts) - 1: + dir_tree[parent_path]['dirs'].add(part) + else: + dir_tree[parent_path]['files'].add(part) + + for dirpath in sorted(dir_tree.keys()): + if not dirpath.startswith(top.strip('/')): + continue + + full_path = '/' + dirpath + dirs = sorted(dir_tree[dirpath]['dirs']) + files = sorted(dir_tree[dirpath]['files']) + yield full_path, dirs, files + + except Exception as e: + yield top, [], [] + + def stat(self, path): + """获取文件状态信息""" + try: + with self._temp_container() as container_id: + cmd = f"docker export {container_id} | tar -tvf - {path.lstrip('/')}" + result = subprocess.run(cmd, shell=True, capture_output=True, text=True) + + if result.returncode != 0: + raise Exception("The file does not exist") + + info = result.stdout.strip().split(None, 5)[0:5] + mode, uid, gid, size = info[0], info[2], info[3], info[4] + + class StatResult: + def __init__(self, mode, size, uid, gid): + self.st_mode = int(mode, 8) + self.st_size = int(size) + self.st_uid = int(uid) + self.st_gid = int(gid) + + return StatResult(mode, size, uid, gid) + + except Exception as e: + raise + + def open(self, path, mode="rb"): + """打开文件""" + try: + with self._temp_container() as container_id: + cmd = f"docker export {container_id} | tar -xOf - {path.lstrip('/')}" + result = subprocess.run(cmd, shell=True, capture_output=True) + + if result.returncode != 0: + raise Exception("Unable to read the file") + + class FileWrapper: + def __init__(self, data): + self.data = data + self.position = 0 + + def read(self): + return self.data + + def close(self): + pass + + return FileWrapper(result.stdout) + + except Exception as e: + raise + + def cleanup(self): + """清理所有活动的临时容器""" + with self._container_lock: + for container_id in list(self._active_containers): + try: + subprocess.run(['docker', 'rm', container_id], + capture_output=True, + check=True) + self._active_containers.remove(container_id) + except Exception as e: + # public.print_log(f"Cleaning up temporary containers failed {container_id}: {str(e)}") + pass + + class main(dockerBase): progress_percent = 0 # 扫描进度条 ids_percent = 0 @@ -133,6 +390,50 @@ class main(dockerBase): return 0 return self.scan_score + def fix_libdl_dependency(self): + """修复libdl.so依赖""" + try: + # 检查系统中的libdl文件 + result, _ = public.ExecShell("find /usr/lib /usr/lib64 /lib /lib64 -name 'libdl.so*' 2>/dev/null") + libdl_files = [x for x in result.strip().split('\n') if x] + + if not libdl_files: + # 如果没有找到任何libdl.so文件,需要安装 + sys_ver = public.get_os_version() + if "Ubuntu" in sys_ver or "Debian" in sys_ver: + public.ExecShell("apt-get update && apt-get install -y libc6-dev") + elif "CentOS" in sys_ver: + public.ExecShell("yum install -y glibc-devel") + + # 重新检查 + result, _ = public.ExecShell("find /usr/lib /usr/lib64 /lib /lib64 -name 'libdl.so*' 2>/dev/null") + libdl_files = [x for x in result.strip().split('\n') if x] + + if not libdl_files: + return False + + # 找到libdl.so.2文件 + libdl_so2 = None + for f in libdl_files: + if 'libdl.so.2' in f: + libdl_so2 = f + break + + if not libdl_so2: + return False + + # 创建软链接 + target_dirs = ['/usr/lib', '/usr/lib64', '/lib', '/lib64'] + for dir_path in target_dirs: + if os.path.exists(dir_path): + link_path = os.path.join(dir_path, 'libdl.so') + if not os.path.exists(link_path): + public.ExecShell(f"ln -sf {libdl_so2} {link_path}") + + return True + except Exception as e: + return False + def image_safe_scan(self, get): """ @name 镜像安全扫描入口函数 @@ -150,87 +451,32 @@ class main(dockerBase): image_id = get.image_id # 初始化时间 self.send_time = time.time() - - # 初始化安装检测SDK try: - from veinmind import docker - except Exception as e: - public.print_log("Importing veinmind failed:{}".format(e)) - # requirements_list = ["veinmind"] - self.send_image_ws(get, msg=public.lang("The detection engine is being initialized. The first load may take a long time...."), status=1) - shell_command = "btpip install --no-dependencies {}".format("veinmind") - public.ExecShell(shell_command) - sys_ver = public.get_os_version() - if "Ubuntu" in sys_ver or "Debian" in sys_ver: - public.WriteFile("/etc/apt/sources.list.d/libveinmind.list", - "deb [trusted=yes] https://download.veinmind.tech/libveinmind/apt/ ./") - self.send_image_ws(get, msg=public.lang("Apt-get is being updated. The first load may take a long time...."), status=1) - public.ExecShell("apt-get update") - time.sleep(1) - self.send_image_ws(get, msg=public.lang("Detection engine being installed, first execution may take thousands of years..."), status=1) - public.ExecShell("apt-get install -y libveinmind-dev") - time.sleep(1) - elif "CentOS" in sys_ver: - public.WriteFile("/etc/yum.repos.d/libveinmind.repo", """[libveinmind] -name=libVeinMind SDK yum repository -baseurl=https://download.veinmind.tech/libveinmind/yum/ -enabled=1 -gpgcheck=0""") - self.send_image_ws(get, msg=public.lang("The yum cache is being updated. The first load may take a long time...."), status=1) - public.ExecShell("yum makecache") - self.send_image_ws(get, msg=public.lang("Detection engine being installed, first execution may take thousands of years..."), status=1) - public.ExecShell("yum install -y libveinmind-devel") + # 自定义一个新的DockerImageInspector + docker_obj = DockerImageInspector() + # 打开镜像 + image = docker_obj.open_image_by_id(image_id=image_id) + # 获取ref镜像名 + refs = image.reporefs() + if len(refs) > 0: + self.image_name = refs[0] else: - self.send_image_ws(get, msg=public.lang("Unsupported system version {}",sys_ver), status=1) - return public.returnMsg(False, public.lang("Unsupported system version {}\nCurrently only supports Debian, Ubuntu, Centos", sys_ver)) - self.send_image_ws(get, msg=public.lang("Checking libdl.so dependent libraries..."), status=1) - result, err = public.ExecShell("whereis libdl.so") - result = result.strip().split(" ") - # public.print_log("The situation of libdl.so library:{}".format(result)) - if len(result) <= 1: - # public.print_log("Missing libdl.so library") - result, err = public.ExecShell("whereis libdl.so.2") - result = result.strip().split(" ") - # public.print_log("The situation of libdl.so.2 library:{}".format(result)) - if len(result) <= 1: - public.print_log("Missing libdl.so library,Requires libdl.so or libdl.so2 to be installed") - public.returnMsg(False, "Missing libdl.so library,Requires libdl.so or libdl.so2 to be installed") - else: - # 建立libdl.so软链接至libdl.so.2 - for lib in result[1:]: - ln_command = "ln -s {} {}".format(lib, lib[:-2]) - # public.print_log("Soft link in progress:{}".format(ln_command)) - public.ExecShell(ln_command) - from veinmind import docker + self.image_name = image.id() + public.print_log("Detecting:{}".format(self.image_name)) + self.send_image_ws(get, msg=public.lang("Scanning {} exception history command", self.image_name)) + self.scan_history(get, image) + self.send_image_ws(get, msg=public.lang("Scanning {} sensitive information", self.image_name)) + self.scan_sensitive(get, image) + self.send_image_ws(get, msg=public.lang("Scanning {} backdoor", self.image_name)) + self.scan_backdoor(get, image) + self.send_image_ws(get, msg=public.lang("Scanning {} container escapes")) + self.scan_escape(get, image) + self.send_image_ws(get, msg=public.lang("{}Scan completed", self.image_name), end=True) + + except Exception as e: + self.send_image_ws(get, msg=public.lang("Scanning the image failed:{}", str(e)), end=True) + - # 开始检测 - # 获取docker对象 - docker_obj = docker.Docker() - # # 获取所有镜像id - # ids = docker_obj.list_image_ids() - # # 计算镜像进度占比 - # self.ids_percent = math.floor(100 / len(ids)) - # # 计算每个镜像扫描进度占比 - # self.scan_percent = math.floor(self.ids_percent / 3) - # 开始镜像检测 - # for key, id in enumerate(ids): - image = docker_obj.open_image_by_id(image_id=image_id) - # 获取ref镜像名 - refs = image.reporefs() - if len(refs) > 0: - self.image_name = refs[0] - else: - self.image_name = image.id() - public.print_log("Detecting:{}".format(self.image_name)) - self.send_image_ws(get, msg=public.lang("Scanning {} exception history command",self.image_name)) - self.scan_history(get, image) - self.send_image_ws(get, msg=public.lang("Scanning {} sensitive information",self.image_name)) - self.scan_sensitive(get, image) - self.send_image_ws(get, msg=public.lang("Scanning {} backdoor",self.image_name)) - self.scan_backdoor(get, image) - self.send_image_ws(get, msg=public.lang("Scanning {} container escapes")) - self.scan_escape(get, image) - self.send_image_ws(get, msg=public.lang("{}Scan completed",self.image_name), end=True) def scan_history(self, get, image): """ @@ -243,8 +489,13 @@ gpgcheck=0""") "WORKDIR", "ARG", "ONBUILD", "STOPSIGNAL", "HEALTHCHECK", "SHELL") rules = { "rules": [{"description": "Miner Repo", "instruct": "RUN", "match": ".*(xmrig|ethminer|miner)\\.git.*"}, - {"description": "Unsafe Path", "instruct": "ENV", "match": "PATH=.*(|:)(/tmp|/dev/shm)"}]} - + {"description": "Unsafe Path", "instruct": "ENV", "match": "PATH=.*(|:)(/tmp|/dev/shm)"}, + { + "description": "MySQL Shell Installation", + "instruct": "CMD" + } + ] + } ocispec = image.ocispec_v1() if 'history' in ocispec.keys() and len(ocispec['history']) > 0: for history in ocispec['history']: @@ -258,10 +509,21 @@ gpgcheck=0""") if len(command_split) == 2: instruct = command_split[0] command_content = command_split[1] + # 如果是JSON格式的字符串,尝试解析 + if command_content.startswith('[') and command_content.endswith(']'): + import json + parsed_content = json.loads(command_content) + if isinstance(parsed_content, list): + command_content = ' '.join(parsed_content) + + # 移除引号和方括号 + command_content = command_content.strip('[]"\' ') + + # command_content = " ".join(command_split[1:]) for r in rules["rules"]: if r["instruct"] == instruct: if re.match(r["match"], command_content): - self.send_image_ws(get, msg=public.lang("Suspicious abnormal history command found"), detail=public.lang("It was found that the image has an abnormal historical command [{}], which may implant malware or code into the host system when the container is running, causing security risks.",self.short_string(command_content)), repair=public.lang("1.It is recommended to check whether the command is required for normal business
2.It is recommended to choose official and reliable infrastructure to avoid unnecessary losses.")) + self.send_image_ws(get,status=0, msg=public.lang("Suspicious abnormal history command found"), detail=public.lang("It was found that the image has an abnormal historical command [{}], which may implant malware or code into the host system when the container is running, causing security risks.",self.short_string(command_content)), repair=public.lang("1.It is recommended to check whether the command is required for normal business
2.It is recommended to choose official and reliable infrastructure to avoid unnecessary losses.")) break else: instruct = command_split[0] @@ -269,7 +531,7 @@ gpgcheck=0""") for r in rules["rules"]: if r["instruct"] == instruct: if re.match(r["match"], command_content): - self.send_image_ws(get, msg=public.lang("Suspicious abnormal history command found"), detail=public.lang("It was found that the image has an abnormal historical command [{}], which may implant malware or code into the host system when the container is running, causing security risks.",self.short_string(command_content)), repair=public.lang("1.It is recommended to check whether the command is required for normal business
2.It is recommended to choose official and reliable infrastructure to avoid unnecessary losses.")) + self.send_image_ws(get,status=0, msg=public.lang("Suspicious abnormal history command found"), detail=public.lang("It was found that the image has an abnormal historical command [{}], which may implant malware or code into the host system when the container is running, causing security risks.",self.short_string(command_content)), repair=public.lang("1.It is recommended to check whether the command is required for normal business
2.It is recommended to choose official and reliable infrastructure to avoid unnecessary losses.")) break else: command_split = created_by.split() @@ -277,13 +539,13 @@ gpgcheck=0""") for r in rules["rules"]: if r["instruct"] == command_split[0]: if re.match(r["match"], " ".join(command_split[1:])): - self.send_image_ws(get, msg=public.lang("Suspicious abnormal history command found"), detail=public.lang("It was found that the image has an abnormal historical command [{}], which may implant malware or code into the host system when the container is running, causing security risks.",self.short_string(" ".join(command_split[1:]))), repair=public.lang("1.It is recommended to check whether the command is required for normal business
2.It is recommended to choose official and reliable infrastructure to avoid unnecessary losses.")) + self.send_image_ws(get,status=0, msg=public.lang("Suspicious abnormal history command found"), detail=public.lang("It was found that the image has an abnormal historical command [{}], which may implant malware or code into the host system when the container is running, causing security risks.",self.short_string(" ".join(command_split[1:]))), repair=public.lang("1.It is recommended to check whether the command is required for normal business
2.It is recommended to choose official and reliable infrastructure to avoid unnecessary losses.")) break else: for r in rules["rules"]: if r["instruct"] == "RUN": if re.match(r["match"], created_by): - self.send_image_ws(get, msg=public.lang("Suspicious abnormal history command found"), detail=public.lang("It was found that the image has an abnormal historical command [{}], which may implant malware or code into the host system when the container is running, causing security risks.",self.short_string(created_by)), repair=public.lang("1.It is recommended to check whether the command is required for normal business
2.It is recommended to choose official and reliable infrastructure to avoid unnecessary losses.")) + self.send_image_ws(get,status=0, msg=public.lang("Suspicious abnormal history command found"), detail=public.lang("It was found that the image has an abnormal historical command [{}], which may implant malware or code into the host system when the container is running, causing security risks.",self.short_string(created_by)), repair=public.lang("1.It is recommended to check whether the command is required for normal business
2.It is recommended to choose official and reliable infrastructure to avoid unnecessary losses.")) break def scan_sensitive(self, get, image): @@ -582,160 +844,113 @@ gpgcheck=0""") {"id": 131, "name": "prefect-api-token", "description": "Prefect API token", "match": "pnu_[a-z0-9]{36}", "level": "medium"}]} - # refs = image.reporefs() - # if len(refs) > 0: - # ref = refs[0] - # else: - # ref = image.id() - # public.print_log("start scan sensitive: " + ref) + # 排除系统目录 + EXCLUDE_DIRS = { + "usr", "lib", "lib32", "lib64", "boot", "run", "media", + "proc", "sys", "dev", "bin", "sbin", "home" + } - # 检测docker历史(另外有扫描项) - # ocispec = image.ocispec_v1() - # if 'history' in ocispec.keys() and len(ocispec['history']) > 0: - # for history in ocispec['history']: - # command_content = history['created_by'] - # report_rule_list = [] - # for r in rules["rules"]: - # # 正则选择 可以选择docker history的正则是由哪些模块检测 - # for i in ['env', 'match', 'filepath']: - # regexp_s = r.get(i) - # if not regexp_s: - # continue - # if re.search(regexp_s, command_content, re.IGNORECASE): - # self.send_image_ws(get, msg="镜像OCI存在敏感信息", detail=r["description"]+"镜像OCI存在敏感信息{}".format(command_content), repair="使用此镜像可能存在危险,建议更换同类型镜像或是部署容器时清理敏感信息", status=2) - # if not report_rule_list: - # continue - # 检测env环境变量 - # ocispec = image.ocispec_v1() - # if 'config' in ocispec.keys() and 'Env' in ocispec['config'].keys(): - # env_list = image.ocispec_v1()['config']['Env'] - # for env in env_list: - # env_split = env.split("=") - # if len(env_split) >= 2: - # for r in rules["rules"]: - # if "env" in r.keys(): - # env_regex = r["env"] - # if re.match(env_regex, env, re.IGNORECASE): - # self.send_image_ws(get, msg="镜像OCI存在敏感信息", detail=r["description"]+"\nenv存在敏感信息,可能会造成数据泄露", repair="使用该镜像部署容器时,及时修改默认密码或者鉴权值,防止被黑客利用入侵", status=2) - # break - # 排除大型项目 - large_dir = ["usr", "lib"] - sensitive_dirs = [] + def get_scan_dirs(): + """获取需要扫描的目录列表""" + try: + root_contents = image.listdir("/") + return ["/" + d for d in root_contents if d not in EXCLUDE_DIRS] + except Exception as e: + return ["/"] + + def check_file_content(filepath, content, rules): + """检查文件内容是否匹配敏感规则""" + try: + text_content = content.decode('utf-8', errors='ignore') + for rule in rules["rules"]: + if "match" in rule and re.search(rule["match"], text_content): + self.send_image_ws( + get, + msg=f"Discover sensitive information: {filepath}", + detail=f"{rule['description']}: Sensitive information was found in the file {filepath}.", + repair="1. Check and clean up sensitive information \n 2. Use environment variables or a secure key management system", + status=2 + ) + return True + return False + except: + return False + + def check_path_pattern(path, rules): + """检查路径是否匹配敏感规则""" + for rule in rules["rules"]: + if "filepath" in rule and re.match(rule["filepath"], path): + self.send_image_ws( + get, + msg=f"Discover sensitive {'a directory' if os.path.isdir(path) else 'a file'}: {path}", + detail=f"{rule['description']}: A sensitive path {path} has been detected, which may pose a security risk", + repair="1. Check and delete unnecessary sensitive files/directories\n2. Limit access permissions\n3. Encrypt the storage of sensitive information", + status=2 + ) + return True + return False try: - for filename in image.listdir("/"): - if filename not in large_dir: - sensitive_dirs.append("/"+filename) - except Exception as e: - public.print_log("Failed to obtain mirror directory{}".format(e)) - sensitive_dirs = ["/"] + # 1. 获取待扫描目录 + scan_dirs = get_scan_dirs() - # 检测存在敏感数据的路径 - for sensitive_dir in sensitive_dirs: - for root, dirs, files in image.walk(sensitive_dir): - # 短暂停留0.004s,防止占用太高影响其他接口响应 - time.sleep(0.004) - # 遍历深度不超过3 - if len(root.split("/")) > 3: - self.send_image_ws(get, msg=self.short_string1(public.lang("Scanning:{}",root))) - # public.print_log("跳过{}".format(root)) + # 2. 遍历每个目录 + for base_dir in scan_dirs: + try: + for root, dirs, files in image.walk(base_dir): + # 控制遍历深度 + if len(root.split("/")) > 3: + continue + + # 发送进度消息 + self.send_image_ws(get, msg=f"Scanning: {root}") + + # 跳过空目录 + if not dirs and not files: + continue + + # 检查目录 + for dirname in dirs[:]: # 使用切片创建副本 + dirpath = os.path.join(root, dirname) + check_path_pattern(dirpath, rules) + + # 检查文件 + for filename in files: + try: + filepath = os.path.join(root, filename) + + # 跳过白名单文件 + if any(fnmatch.fnmatch(filepath, wp) for wp in rules["whitelist"]["paths"]): + continue + + # 检查文件状态 + try: + f_stat = image.stat(filepath) + if not S_ISREG(f_stat.st_mode) or f_stat.st_size > 10 * 1024 * 1024: + continue + + # 读取文件内容 + with image.open(filepath, mode="rb") as f: + content = f.read() + if not content: # 跳过空文件 + continue + + # 检查文件路径和内容 + if check_path_pattern(filepath, rules): + continue + check_file_content(filepath, content, rules) + + except Exception as e: + continue + + except Exception as e: + continue + + except Exception as e: continue - for dir in dirs: - try: - dirpath = os.path.join(root, dir) - self.send_image_ws(get, msg=public.lang("Scanning:{}...",dirpath)) - # public.print_log("扫描目录{}".format(dirpath)) - # detect filepath or filename - for r in rules["rules"]: - if "filepath" in r.keys(): - filepath_match_regex = r["filepath"] - if re.match(filepath_match_regex, dirpath): - self.send_image_ws(get, msg=public.lang("Sensitive directories found{}", dirpath), detail=public.lang("The image exists in a sensitive directory:{}, may be used by attackers to steal sensitive data or source code, leading to further security issues.",dirpath), repair=public.lang("1. Enter the container deployed using the image and delete the directory without affecting the business
2. If it cannot be deleted, restrict access to the directory",dirpath), status=2) - break - except Exception as e: - pass - # public.print_log("Match sensitive information to catch exceptions{}".format(e)) - for filename in files: - try: - filepath = os.path.join(root, filename) - self.send_image_ws(get, msg=public.lang("Scanning:{}...",filename)) - # public.print_log("扫描文件{}".format(filepath)) - # 跳过白名单 - whitelist = rules["whitelist"] - white_match = False - white_paths = whitelist["paths"] - for wp in white_paths: - if fnmatch.filter([filepath], wp): - white_match = True - break - if white_match: - continue - - try: - # 跳过非常规文件,超过10m - f_stat = image.stat(filepath) - if not S_ISREG(f_stat.st_mode): - continue - if f_stat.st_size > 10 * 1024 * 1024: - continue - - f = image.open(filepath, mode="rb") - f_content_byte = f.read() - except FileNotFoundError as e: - # public.print_log("Error while traversing sensitive files:{}".format(e)) - continue - # except BaseException as e: - # public.print_log("Error while traversing sensitive files:{}".format(e)) - # continue - # 检测文件路径及文件名 - match = False - for r in rules["rules"]: - if "filepath" in r.keys(): - filepath_match_regex = r["filepath"] - if re.match(filepath_match_regex, filepath): - match = True - self.send_image_ws(get, msg=public.lang("Sensitive files found{}",filepath), detail=r["description"] + ":
It was found that the image contains sensitive files {}, which may cause leakage.".format(filepath), repair="1. Enter the container deployed using the image, and it is recommended to delete the file if it does not affect the business
2. If it cannot be deleted, restrict the access rights of the file
3. Use a password to protect sensitive files from being easily accessed read", status=2) - break - if match: - continue - # chardet_guess = chardet.detect(f_content_byte[0:64]) - # if chardet_guess["encoding"] != None: - # try: - # f_content = f_content_byte.decode(chardet_guess["encoding"]) - # except: - # continue - # else: - # f_content = str(f_content_byte) - # mime_guess = magic.from_buffer(f_content_byte, mime=True) - # for r in rules["rules"]: - # # mime - # mime_find = False - # if "mime" in r.keys(): - # if r["mime"] == mime_guess: - # mime_find = True - # else: - # if mime_guess.startswith("text/"): - # mime_find = True - # if mime_find: - # if "match" in r.keys(): - # match = r["match"] - # if match.startswith("$contains:"): - # keyword = match.lstrip("$contains:") - # if keyword in f_content: - # file_stat = image.stat(filepath) - # self.send_image_ws(get, msg="镜像路径{}存在敏感信息".format(filepath), - # repair="建议使用该镜像部署容器后,检查该文件是否有用,无用则清理", - # status=2) - # - # else: - # if re.match(match, f_content): - # file_stat = image.stat(filepath) - # self.send_image_ws(get, msg="镜像路径{}存在敏感信息".format(filepath), - # repair="建议使用该镜像部署容器后,检查该文件是否有用,无用则清理", - # status=2) - except Exception as e: - pass - # public.print_log("Error while traversing sensitive files:{}".format(e)) + except Exception as e: + # public.print_log(f"|===========扫描失败: {str(e)}") + pass def scan_backdoor(self, get, image): """ @name 扫描后门 @@ -778,7 +993,6 @@ gpgcheck=0""") continue except BaseException: pass - # public.print_log(e) def crontab(): """ @@ -869,7 +1083,6 @@ gpgcheck=0""") continue except BaseException: pass - # public.print_log(e) def sshd(): """ diff --git a/class_v2/btdockerModelV2/setupModel.py b/class_v2/btdockerModelV2/setupModel.py index 3b902462..03560a4b 100644 --- a/class_v2/btdockerModelV2/setupModel.py +++ b/class_v2/btdockerModelV2/setupModel.py @@ -13,6 +13,9 @@ import json import os +import shutil +import time +from typing import Dict, Callable, Any import public from btdockerModelV2 import dk_public as dp @@ -20,8 +23,30 @@ from btdockerModelV2.dockerBase import dockerBase from public.validate import Param - class main(dockerBase): + __CONFIG_FILE = "/etc/docker/daemon.json" + + def __init__(self): + if not os.path.exists(self.__CONFIG_FILE): + public.writeFile(self.__CONFIG_FILE, '{}') + + def get_docker_compose_version(self): + try: + key = "dk_compose_version" + if public.get_cache_func(key)['data']: + if int(time.time()) - public.get_cache_func(key)["time"] < 86400: + return public.get_cache_func(key)["data"] + + stdout, stderr = public.ExecShell("docker compose version --short") + if stderr != "": + stdout, stderr = public.ExecShell("docker-compose version --short") + if stderr != "": + return "" + public.set_cache_func(key, stdout.strip()) + return stdout.strip() + except: + return "" + def get_config(self, get): """ 获取设置配置信息 @@ -34,6 +59,7 @@ class main(dockerBase): if not installing: installing = public.M('tasks').where('name=? and status=?', ("Install Docker Service", "-1")).count() except: + public.print_log(public.get_error_info()) installing = 0 # if not os.path.exists("/www/server/panel/data/db/docker.db"): @@ -41,20 +67,25 @@ class main(dockerBase): if not os.path.exists("/www/server/panel/data/docker.db"): public.ExecShell("mv -f /www/server/panel/data/db/docker.db /www/server/panel/data/docker.db") - + # 检查docker服务状态 service_status = self.get_service_status() if not service_status: service_status = self.get_service_status() + # 获取 Docker 守护进程文件配置 + daemon_config = self._get_daemon_config() - ipv6_file = "/etc/docker/daemon.json" + # # 获取docker-compose版本 + docker_compose_version = self.get_docker_compose_version() - try: - data = json.loads(public.readFile(ipv6_file)) - ipv6_status = data["ipv6"] - ipv6_addr = data["fixed-cidr-v6"] - except: - ipv6_addr = "" - ipv6_status = False + # ipv6_file = "/etc/docker/daemon.json" + + # try: + # data = json.loads(public.readFile(self.__CONFIG_FILE)) + # ipv6_status = data["ipv6"] + # ipv6_addr = data["fixed-cidr-v6"] + # except: + # ipv6_addr = "" + # ipv6_status = False try: bad_registry = os.path.exists("/www/server/panel/config/bad_registry.pl") @@ -66,22 +97,81 @@ class main(dockerBase): bad_registry = False bad_registry_path = "" - data = { + # 应用商店路径 + from mod.project.docker.app.base import App + dk_project_path = App.dk_project_path + install_path = os.path.join(dk_project_path, 'dk_app', 'installed.json') + allow_update_install_path = True + if os.path.exists(install_path): + try: + installed_apps = json.loads(public.readFile(install_path)) + for type, apps in installed_apps.items(): + if len(apps) > 0: + allow_update_install_path = False + except: + allow_update_install_path = False + + data = { "service_status": service_status, "docker_installed": self.check_docker_service(), "docker_compose_installed": check_docker_compose[0], "docker_compose_path": check_docker_compose[1], "monitor_status": self.get_monitor_status(), "monitor_save_date": dp.docker_conf()['SAVE'], - "daemon_path": "/etc/docker/daemon.json", + "daemon_path": self.__CONFIG_FILE, "installing": installing, - "ipv6_status": ipv6_status, - "ipv6_addr": ipv6_addr, + **daemon_config, + "docker_compose_version": docker_compose_version, "bad_registry": bad_registry, "bad_registry_path": bad_registry_path, + "dk_project_path": dk_project_path, + "allow_update_install_path": allow_update_install_path } return public.return_message(0, 0, data) + @classmethod + def _get_daemon_config(cls): + """获取 Docker 守护进程配置""" + default_config = { + "warehouse": [], + "log_cutting": {}, + "iptables": True, + "live_restore": False, + "driver": ["native.cgroupdriver=systemd"], + "socket": "unix:///var/run/docker.sock", + "ipv6_status": False, + "ipv6_addr": "", + "proxy": {}, + "data-root": "/var/lib/docker" + } + + try: + data = json.loads(public.readFile(cls.__CONFIG_FILE)) + + proxy = { + "http_proxy": data.get("http-proxy"), + "https_proxy": data.get("https-proxy"), + "no_proxy": data.get("no-proxy") + } if data.get("http-proxy", "") else default_config["proxy"] + driver = data.get("exec-opts", 0) + if not driver or len(driver) == 0: + driver = default_config["driver"] + return { + "warehouse": data.get("insecure-registries", default_config["warehouse"]), + "log_cutting": data.get("log-opts", default_config["log_cutting"]), + "iptables": data.get("iptables", default_config["iptables"]), + "live_restore": data.get("live-restore", default_config["live_restore"]), + "driver": driver[0], + "socket": data.get("hosts", default_config["socket"]), + "ipv6_status": data.get("ipv6", default_config["ipv6_status"]), + "ipv6_addr": data.get("fixed-cidr-v6", default_config["ipv6_addr"]), + "proxy": proxy, + "data-root": data.get("data-root", default_config["data-root"]) + } + except: + # public.print_log(public.get_error_info()) + return default_config + @staticmethod def _get_com_registry_mirrors(): """ @@ -97,9 +187,6 @@ class main(dockerBase): try: com_reg_mirror = json.loads(public.readFile(com_reg_mirror_file)) except: - # com_reg_mirror = { - # "https://mirror.ccs.tencentyun.com": "腾讯云镜像加速站", - # } com_reg_mirror = { "https://docker.m.daocloud.io": "Third party image accelerator", } @@ -131,7 +218,8 @@ class main(dockerBase): except: return public.return_message(-1, 0, public.lang("The monitoring save time needs to be a positive integer!")) if save_date > 999: - return public.return_message(-1, 0, public.lang("Monitoring data cannot be retained for more than 999 days!")) + return public.return_message(-1, 0, + public.lang("Monitoring data cannot be retained for more than 999 days!")) if not docker_conf: docker_conf = "SAVE={}".format(save_date) public.writeFile(conf_path, docker_conf) @@ -144,6 +232,20 @@ class main(dockerBase): def get_service_status(self): sock = '/var/run/docker.pid' + + # Nas镜像标识文件 + tagfile = "/www/server/panel/data/o.pl" + if os.path.exists(tagfile) and self.check_docker_service(): + try: + if public.cache_get(tagfile): + return True + content = public.readFile(tagfile).strip() + if content == "docker_bt_nas": + public.cache_set(tagfile, 1, 86400) + return True + except: + pass + if os.path.exists(sock): try: client = dp.docker_client() @@ -162,7 +264,7 @@ class main(dockerBase): :param get: :return: """ - import public + act_dict = {'start': 'start', 'stop': 'stop', 'restart': 'restart'} if get.act not in act_dict: return public.return_message(-1, 0, public.lang("There's no way to do that")) @@ -171,19 +273,22 @@ class main(dockerBase): exec_str += ";systemctl {} docker.socket".format(get.act) stdout, stderr = public.ExecShell(exec_str) if stderr and not "but it can still be activated by:\n docker.socket\n" in stderr: - dp.write_log("Setting the Docker service status to [{}] failed, failure reason:{}".format(act_dict[get.act], stderr)) + dp.write_log( + "Setting the Docker service status to [{}] failed, failure reason:{}".format(act_dict[get.act], stderr)) - jou_stdout, jou_stderr = public.ExecShell("journalctl -xe -u docker -n 100 --no-pager|grep libusranalyse.so") + jou_stdout, jou_stderr = public.ExecShell( + "journalctl -xe -u docker -n 100 --no-pager|grep libusranalyse.so") if jou_stdout != "": - return public.return_message(-1, 0, public.lang("Docker service setup failed, please turn off aapanel anti-intrusion and try again!")) + return public.return_message(-1, 0, public.lang( + "Docker service setup failed, please turn off aapanel anti-intrusion and try again!")) if "Can't operate. Failed to connect to bus" in stderr: wsl_cmd = "/etc/init.d/docker {}".format(get.act) wsl_stdout, wsl_stderr = public.ExecShell(wsl_cmd) if not wsl_stderr: return public.return_message(0, 0, public.lang("Setup Successful!")) - return public.return_message(-1, 0, public.lang("Setup failed! Failure reason:{}",wsl_stderr)) - return public.return_message(-1, 0, public.lang("Setup failed! Failure reason:{}",stderr)) + return public.return_message(-1, 0, public.lang("Setup failed! Failure reason:{}", wsl_stderr)) + return public.return_message(-1, 0, public.lang("Setup failed! Failure reason:{}", stderr)) if get.act != "stop": service_status = self.get_service_status() @@ -205,15 +310,16 @@ class main(dockerBase): @return: """ try: - if not os.path.exists('/etc/docker/daemon.json'): + if not os.path.exists(self.__CONFIG_FILE): reg_mirrors = [] else: # 修复文件为空报错 conf = {} - # con = public.readFile('/etc/docker/daemon.json') - # if con: - # conf = json.loads() - conf = json.loads(public.readFile('/etc/docker/daemon.json')) + con = public.readFile(self.__CONFIG_FILE) + if con: + conf = json.loads(con) + + # conf = json.loads(public.readFile(self.__CONFIG_FILE)) if "registry-mirrors" not in conf: reg_mirrors = [] @@ -222,12 +328,11 @@ class main(dockerBase): except: reg_mirrors = [] - com_reg_mirrors = self._get_com_registry_mirrors() - - # return { - # "registry_mirrors": reg_mirrors, - # "com_reg_mirrors": com_reg_mirrors - # } + # 缓存一天获取列表 不用每次都去请求 + com_reg_mirrors = public.cache_get("com_reg_mirrors") + if not com_reg_mirrors: + com_reg_mirrors = self._get_com_registry_mirrors() + public.cache_set("com_reg_mirrors", com_reg_mirrors, 86400) data = { "registry_mirrors": reg_mirrors, @@ -261,19 +366,7 @@ class main(dockerBase): import re try: get.registry_mirrors_address = get.get("registry_mirrors_address/s", "") - conf = {} - if os.path.exists('/etc/docker/daemon.json'): - try: - # con = public.readFile('/etc/docker/daemon.json') - # if con: - # conf = json.loads() - conf = json.loads(public.readFile('/etc/docker/daemon.json')) - except Exception as e: - public.print_log(public.get_error_info()) - return public.return_message(-1, 0, public.lang("Global configuration file error, please check {}!", str(e))) - else: - public.ExecShell("mkdir -p /etc/docker") - public.ExecShell("touch /etc/docker/daemon.json") + conf = self.get_daemon_json() if not get.registry_mirrors_address.strip(): if "registry-mirrors" in conf: @@ -286,13 +379,15 @@ class main(dockerBase): del (conf['registry-mirrors']) else: if not re.search('https?://', registry_mirrors): - return public.return_message(-1, 0, public.lang("Speedup address [ {}] Format error
Reference: https://mirror.ccs.tencentyun.com", registry_mirrors)) + return public.return_message(-1, 0, public.lang( + "Speedup address [ {}] Format error
Reference: https://mirror.ccs.tencentyun.com", + registry_mirrors)) conf['registry-mirrors'] = public.xsssec2(registry_mirrors) if isinstance(conf['registry-mirrors'], str): conf['registry-mirrors'] = [conf['registry-mirrors']] - public.writeFile('/etc/docker/daemon.json', json.dumps(conf, indent=2)) + public.writeFile(self.__CONFIG_FILE, json.dumps(conf, indent=2)) self.update_com_registry_mirrors(get) dp.write_log("Setup Docker acceleration successful!") get.act = "restart" @@ -300,7 +395,8 @@ class main(dockerBase): return public.return_message(0, 0, public.lang("successfully set")) except: - return public.return_message(-1, 0, public.lang("Setup failed! Failure reason :{}", public.get_error_info())) + return public.return_message(-1, 0, + public.lang("Setup failed! Failure reason :{}", public.get_error_info())) def update_com_registry_mirrors(self, get): """ @@ -318,7 +414,7 @@ class main(dockerBase): except: com_reg_mirror = { "https://docker.m.daocloud.io": "Third party image accelerator", - #"https://mirror.ccs.tencentyun.com": "腾讯云镜像加速站", + # "https://mirror.ccs.tencentyun.com": "腾讯云镜像加速站", } if get.registry_mirrors_address in com_reg_mirror: @@ -548,7 +644,8 @@ fi """ docker_compose = "/usr/bin/docker-compose" - docker_compose_path = "{}/class_v2/btdockerModelV2/config/docker_compose_path.pl".format(public.get_panel_path()) + docker_compose_path = "{}/class_v2/btdockerModelV2/config/docker_compose_path.pl".format( + public.get_panel_path()) if os.path.exists(docker_compose_path): docker_compose = public.readFile(docker_compose_path).strip() @@ -590,13 +687,16 @@ fi public.ExecShell("chmod +x {}".format(docker_compose_file)) cmd_result = public.ExecShell("{} --version".format(docker_compose_file)) if not cmd_result[0]: - return public.return_message(-1, 0, public.lang("docker-compose file is not executable or is not a docker-compose file!")) + return public.return_message(-1, 0, public.lang( + "docker-compose file is not executable or is not a docker-compose file!")) - docker_compose_path = "{}/class_v2/btdockerModelV2/config/docker_compose_path.pl".format(public.get_panel_path()) + docker_compose_path = "{}/class_v2/btdockerModelV2/config/docker_compose_path.pl".format( + public.get_panel_path()) public.writeFile(docker_compose_path, docker_compose_file) dp.write_log("Set docker-compose path successfully!") return public.return_message(0, 0, public.lang("Successfully set!")) + # 2024/9/2 下午2:22 检查本机公网IP归属地是否为中国大陆IP def check_area(self, get): ''' @@ -608,14 +708,13 @@ fi try: client_ip = public.get_server_ip() c_area = public.get_free_ip_info(client_ip) - public.print_log(c_area) if ("中国" in c_area["country"] and "中国" in c_area["info"] and "CN" in c_area["en_short_code"] and not "local" in c_area): - if "腾讯" in c_area["carrier"]: + if "腾讯云" in c_area["carrier"]: flag = "2" - elif "阿里" in c_area["carrier"]: + elif "阿里云" in c_area["carrier"]: flag = "3" else: flag = "1" @@ -653,7 +752,8 @@ fi # 2024/3/28 上午 10:36 检测是否已存在安装任务 if public.M('tasks').where('name=? and status=?', ("Install Docker Service", "-1")).count(): - return public.return_message(-1, 0, public.lang("The installation task already exists, please do not add it again!")) + return public.return_message(-1, 0, public.lang( + "The installation task already exists, please do not add it again!")) mmsg = "Install Docker Service" if type == 0 and url == "": @@ -666,9 +766,11 @@ fi "bash /tmp/docker_install.sh install {} ").format(public.get_url(), url.strip('"')) else: # 二进制安装 - execstr = "/bin/bash /www/server/panel/install/install_soft.sh 0 install docker_bin " + execstr = "wget -O /tmp/docker_bin.sh {}/install/0/docker_bin.sh && bash /tmp/docker_bin.sh install".format( + public.get_url()) - sid_result = public.M('tasks').add('id,name,type,status,addtime,execstr', (None, mmsg, 'execshell', '0', time.strftime('%Y-%m-%d %H:%M:%S'), execstr)) + sid_result = public.M('tasks').add('id,name,type,status,addtime,execstr', + (None, mmsg, 'execshell', '0', time.strftime('%Y-%m-%d %H:%M:%S'), execstr)) # 暂时没 # from panelPlugin import panelPlugin # panelPlugin().create_install_wait_msg(sid_result, mmsg, False) @@ -690,6 +792,7 @@ fi return public.return_message(0, 0, public.lang("The installation task has been added to the queue!")) + @staticmethod def uninstall_status(self, get): """ 检测docker是否可以卸载 @@ -701,8 +804,9 @@ fi from btdockerModelV2 import imageModel images_list = imageModel.main().image_list(get)['message'] if len(images_list) > 0 or len(docker_list["container_list"]) > 0: - return public.return_message(0, 0, public.lang("Please delete all containers and images before uninstalling docker!")) - return public.return_message(0, 0, public.lang("Can be uninstalled!")) + return public.return_message(0, 0, public.lang( + "Please delete all containers and images before uninstalling docker!")) + return public.return_message(0, 0, public.lang("Can be uninstalled!")) def uninstall_docker_program(self, get): """ @@ -722,7 +826,7 @@ fi )) public.ExecShell("rm -rf /usr/bin/docker-compose") - return public.return_message(0, 0, public.lang("Uninstall successful!")) + return public.return_message(0, 0, public.lang("Uninstall successful!")) def repair_docker(self, get): """ @@ -743,21 +847,23 @@ fi # }, 3) return public.return_message(0, 0, public.lang("The repair task has been added to the queue!")) - def get_daemon_json(self, get): + def get_daemon_json(self): """ 获取daemon.json配置信息 @param get: @return: """ - daemon_json = "/etc/docker/daemon.json" - if not os.path.exists(daemon_json): - return public.return_message(0, 0, "") + + if not os.path.exists(self.__CONFIG_FILE): + public.ExecShell("mkdir -p /etc/docker") + public.ExecShell("touch /etc/docker/daemon.json") + return {} try: - return public.return_message(0, 0, json.loads(public.readFile(daemon_json))) + return json.loads(public.readFile(self.__CONFIG_FILE)) except Exception as e: print(e) - return public.return_message(-1, 0, "") + return {} def save_daemon_json(self, get): """ @@ -765,23 +871,296 @@ fi @param get: @return: """ - daemon_json = "/etc/docker/daemon.json" + if getattr(get, "daemon_json", "") == "": - public.ExecShell("rm -f {}".format(daemon_json)) + public.ExecShell("rm -f {}".format(self.__CONFIG_FILE)) return public.return_message(0, 0, public.lang("Saved successfully!")) try: conf = json.loads(get.daemon_json) - public.writeFile(daemon_json, json.dumps(conf, indent=2)) + public.writeFile(self.__CONFIG_FILE, json.dumps(conf, indent=2)) dp.write_log("Save daemon.json configuration successfully!") return public.return_message(0, 0, public.lang("Saved successfully!")) except Exception as e: public.print_log("err: {}".format(e)) if "Expecting property name enclosed in double quotes" in str(e): - return public.return_message(-1, 0, public.lang("Saving failed, reason: daemon.json configuration file format error!")) + return public.return_message(-1, 0, public.lang( + "Saving failed, reason: daemon.json configuration file format error!")) return public.return_message(-1, 0, public.lang("Save failed, reason: {}", e)) + def set_docker_global(self, get): + ''' + docker全局配置接口 + 根据传值进行不同操作的写入/etc/docker/daemon.json + 全局设置后都需要重启docker生效 + ''' + + # 配置项与对应的处理方法的映射 + ''' + 加速URL 默认 https://docker.1ms.run + 私有仓库 warehouse + 日志切割 log_cutting {"max-file":"2","max-size":"10m"} 保留份数 文件大小, 关闭功能:log_cutting {} + iptables 是否自动管理iptables规则 默认True + live-restore docker实时恢复 默认False + driver方式 指定容器运行参数 默认systemd + 全局开启ipv6 + ''' + config_actions: Dict[str, Callable[[Any], Any]] = { + 'registry_mirrors_address': self.set_registry_mirrors, + 'warehouse': self.set_warehouse, + 'log_cutting': self.set_log_cutting, + 'iptables': self.set_iptables, + 'live_restore': self.set_live_restore, + 'driver': self.set_drive, + 'status': self.set_ipv6_global, + 'proxy_settings': self.set_proxy, + "docker_root_dir": self.set_docker_root_dir + } + + # 遍历每个配置项,调用相应的方法 + for key, func_name in config_actions.items(): + if hasattr(get, key): + result = func_name(get) + return result + + return public.return_message(-1, 0, public.lang("A configuration item that doesn't exist!")) + + def set_docker_root_dir(self, get): + ''' + 设置docker根目录 + @param get: docker_root_dir + @return: + ''' + try: + # 停止docker服务 + get.act = "stop" + self.docker_service(get) + + # 获取当前和目标Docker根目录 + data = self.get_daemon_json() + current_root_dir = data.get("data-root", "/var/lib/docker") + new_root_dir = get.get("docker_root_dir", "") + + if not new_root_dir: + return public.return_message(-1, 0, public.lang("The Docker root cannot be empty!")) + + if current_root_dir == new_root_dir: + return public.return_message(0, 0, public.lang("The current Docker root directory is the target directory and does not need to be changed!")) + + # 检查是否需要移动现有的Docker数据 + move_data = get.get("move_data", False) + + if move_data and os.path.exists(current_root_dir): + try: + # 检查当前目录大小 + current_size = sum(os.path.getsize(os.path.join(dirpath, filename)) + for dirpath, dirnames, filenames in os.walk(current_root_dir) + for filename in filenames) + + # 使用shutil.copytree进行拷贝 + shutil.copytree(current_root_dir, new_root_dir) + + # 检查新目录大小 + new_size = sum(os.path.getsize(os.path.join(dirpath, filename)) + for dirpath, dirnames, filenames in os.walk(new_root_dir) + for filename in filenames) + + if current_size != new_size: + raise Exception("File size mismatch, data loss is possible!") + + # 拷贝成功后删除源目录 + shutil.rmtree(current_root_dir) + + except Exception as e: + # 如果移动失败,恢复原来的配置并返回错误 + data = self.get_daemon_json() + data["data-root"] = current_root_dir + public.writeFile(self.__CONFIG_FILE, json.dumps(data, indent=2)) + + # 重启docker服务 + get.act = "start" + self.docker_service(get) + + return public.return_message(-1, 0, public.lang( + "The move failed, the original configuration has been restored, the reason:{}", e)) + + # 写入新的Docker根目录到配置文件 + data["data-root"] = new_root_dir + public.writeFile(self.__CONFIG_FILE, json.dumps(data, indent=2)) + + # 重启docker服务 + get.act = "start" + self.docker_service(get) + return public.return_message(0, 0, public.lang("Setup successful!")) + except Exception as e: + return public.return_message(-1, 0, public.lang("Setup failed!{}", e)) + + def set_proxy(self, get): + ''' + 设置全局代理 + @param get: proxy_settings + @return: + ''' + try: + # 从 JSON 字符串中解析代理设置 + try: + proxy_settings = json.loads(get.get("proxy_settings", "{}")) + http_proxy = proxy_settings.get("http_proxy", "").strip() + https_proxy = proxy_settings.get("https_proxy", "").strip() + no_proxy = proxy_settings.get("no_proxy", "localhost,127.0.0.1").strip() + except json.JSONDecodeError: + return public.return_message(-1, 0, public.lang("The JSON format of the proxy settings is wrong!")) + + data = self.get_daemon_json() + + if not proxy_settings and "http-proxy" in data: + del data["http-proxy"] + del data["https-proxy"] + del data["no-proxy"] + else: + data["http-proxy"] = http_proxy + data["https-proxy"] = https_proxy + data["no-proxy"] = no_proxy + + public.writeFile(self.__CONFIG_FILE, json.dumps(data, indent=2)) + + # 重载全局配置文件 + self.reload_global_config() + + # 重启docker服务 + get.act = "restart" + self.docker_service(get) + return public.return_message(0, 0, public.lang("Proxy setup successful!")) + except Exception as e: + return public.return_message(-1, 0, public.lang("Setup failed!{}", e)) + + def set_warehouse(self, get): + ''' + 设置私有仓库 + @param get: warehouse + @return: + ''' + try: + warehouse = get.get("warehouse", "").strip() + data = self.get_daemon_json() + + if warehouse == "" and "insecure-registries" in data: + del data["insecure-registries"] + else: + warehouse = [i.strip() for i in warehouse.split(",")] + data["insecure-registries"] = warehouse + + public.writeFile(self.__CONFIG_FILE, json.dumps(data, indent=2)) + + # 重启docker服务 + get.act = "restart" + self.docker_service(get) + return public.return_message(0, 0, public.lang("Setup successful!")) + except Exception as e: + return public.return_message(-1, 0, public.lang("Setup failed!{}", e)) + + def set_log_cutting(self, get): + ''' + 设置日志切割 + @param get: log_cutting + @return: + ''' + try: + log_cutting = get.get("log_cutting", {}) + if isinstance(log_cutting, str): + try: + log_cutting = json.loads(log_cutting) + except: + log_cutting = {} + + # 确保 log_cutting 里的所有值都转换为字符串 + if isinstance(log_cutting, dict): + log_cutting = {k: str(v) for k, v in log_cutting.items()} + + data = self.get_daemon_json() + if not log_cutting and "log-opts" in data: + del data["log-opts"] + else: + data["log-opts"] = log_cutting + + public.writeFile(self.__CONFIG_FILE, json.dumps(data, indent=2)) + + # 重启docker服务 + get.act = "restart" + self.docker_service(get) + return public.return_message(0, 0, public.lang("Setup successful!")) + except Exception as e: + return public.return_message(-1, 0, public.lang("Setup failed!{}", e)) + + def set_iptables(self, get): + ''' + 设置 Docker 对 iptables 规则的自动配置 + @param get:a + @return: dict + ''' + try: + iptables = get.get("iptables/d", "") + data = self.get_daemon_json() + data["iptables"] = True if iptables == 1 else False + public.writeFile(self.__CONFIG_FILE, json.dumps(data, indent=2)) + + # 重启docker服务 + get.act = "restart" + self.docker_service(get) + return public.return_message(0, 0, public.lang("Setup successful!")) + except Exception as e: + return public.return_message(-1, 0, public.lang("Setup failed!{}", e)) + + def set_live_restore(self, get): + ''' + 设置 docker实时恢复容器 + 允许在 Docker 守护进程发生意外停机或崩溃时保留正在运行的容器状态 + @param get: + @return: dict + ''' + try: + live_restore = get.get("live_restore/d", "") + + data = self.get_daemon_json() + data["live-restore"] = True if live_restore == 1 else False + + public.writeFile(self.__CONFIG_FILE, json.dumps(data, indent=2)) + + # 重启docker服务 + get.act = "restart" + self.docker_service(get) + return public.return_message(0, 0, public.lang("Setup successful!")) + except Exception as e: + return public.return_message(-1, 0, public.lang("Setup failed!{}", e)) + + def set_drive(self, get): + ''' + 设置docker driver方式 + @param get: + @return: dict + ''' + try: + drive = get.get("driver", "") + + data = self.get_daemon_json() + + if drive == "systemd": + data["exec-opts"] = ["native.cgroupdriver=systemd"] + elif drive == "cgroupfs": + data["exec-opts"] = ["native.cgroupdriver=cgroupfs"] + elif drive == "" and "exec-opts" in data: + del data["exec-opts"] + + public.writeFile(self.__CONFIG_FILE, json.dumps(data, indent=2)) + + # 重启docker服务 + get.act = "restart" + self.docker_service(get) + return public.return_message(0, 0, public.lang("Setup successful!")) + except Exception as e: + return public.return_message(-1, 0, public.lang("Setup failed!{}", e)) + def set_ipv6_global(self, get): ''' @@ -789,35 +1168,36 @@ fi @param get: @return: dict ''' - status = get.get("status/d", 0) - ipaddr = get.get("ipaddr", "") - if not os.path.exists("/etc/docker"): public.ExecShell("mkdir -p /etc/docker") - ipv6_file = "/etc/docker/daemon.json" - - if status == 1: - if ipaddr == "": - subnet = self.random_ipv6_subnet() - public.writeFile(ipv6_file, json.dumps({"ipv6": True, "fixed-cidr-v6": subnet}, indent=2)) + try: + status = get.get("status/d", 0) + ipaddr = get.get("ipaddr", "") + if not os.path.exists("/etc/docker"): public.ExecShell("mkdir -p /etc/docker") + data = self.get_daemon_json() + if status == 1: + data["ipv6"] = True + if ipaddr == "": + subnet = self.random_ipv6_subnet() + data["fixed-cidr-v6"] = subnet + else: + if not self.is_valid_ipv6_subnet(ipaddr): + return public.return_message(-1, 0, public.lang("Please enter the correct I Pv 6 address!")) + data["fixed-cidr-v6"] = ipaddr else: - if not self.is_valid_ipv6_subnet(ipaddr): - return public.return_message(-1, 0, public.lang("Please enter the correct I Pv 6 address!")) - public.writeFile(ipv6_file, json.dumps({"ipv6": True, "fixed-cidr-v6": ipaddr}, indent=2)) - else: - try: - data = json.loads(public.readFile(ipv6_file)) + if "ipv6" in data and data["ipv6"]: del data["ipv6"] if "fixed-cidr-v6" in data and data["fixed-cidr-v6"]: del data["fixed-cidr-v6"] - public.writeFile(ipv6_file, json.dumps(data)) - except: - pass - # 重启docker服务 - get.act = "restart" - self.docker_service(get) + public.writeFile(self.__CONFIG_FILE, json.dumps(data, indent=2)) - return public.return_message(0, 0, public.lang("Setup Successful!")) + # 重启docker服务 + get.act = "restart" + self.docker_service(get) + + return public.return_message(0, 0, public.lang("Setup Successful!")) + except Exception as e: + return public.return_message(-1, 0, public.lang("Setup failed!{}", e)) def random_ipv6_subnet(self): """ @@ -827,7 +1207,9 @@ fi """ import random prefix = "2001:db8:" - hextets = ["".join(random.choice("123456789abcdef") + ''.join(random.choice("0123456789abcdef") for _ in range(3))) for _ in range(6)] + hextets = [ + "".join(random.choice("123456789abcdef") + ''.join(random.choice("0123456789abcdef") for _ in range(3))) for + _ in range(6)] return prefix + ":".join(hextets) + "/64" def is_valid_ipv6_subnet(self, subnet): @@ -839,3 +1221,152 @@ fi except (ipaddress.AddressValueError, ValueError) as e: # 解析失败,不是合法的IPv6子网 return False + + # 2024/12/16 17:49 获取系统信息 + def get_system_info(self, get): + ''' + @name 获取系统信息 + ''' + from btdockerModelV2.dockerSock.system import dockerSystem + import psutil + system_info = dockerSystem().get_system_info() + + if not system_info: + try: + if os.path.exists("/etc/redhat-release"): + OperatingSystem = public.readFile("/etc/redhat-release").strip() + elif os.path.exists("/etc/issue"): + OperatingSystem = public.readFile("/etc/issue").strip() + else: + OperatingSystem = public.ExecShell(". /etc/os-release && echo $VERSION")[0].strip() + except: + OperatingSystem = "Linux system, the version number cannot be obtained correctly!" + + system_info = { + "Name": public.ExecShell("hostname")[0].strip(), + "OperatingSystem": OperatingSystem, + "Architecture": public.ExecShell("uname -m")[0].strip(), + "KernelVersion": public.ExecShell("uname -r")[0].strip(), + "NCPU": public.ExecShell("nproc")[0].strip(), + "MemTotal": psutil.virtual_memory().total, + "ServerVersion": "", + "DockerRootDir": "", + } + return public.return_message(0, 0, system_info) + # return public.returnResult(True, data=system_info) + + def update_compose(self, get): + ''' + 升级docker-compose版本 + ''' + try: + pid_file = "/tmp/update_dk-compose.pid" + log_file = "/tmp/update_dk-compose.log" + try: + import psutil + p = psutil.Process(int(public.readFile(pid_file))) + if p.is_running(): + return public.return_message(0, 0, public.lang( + "The upgrade process PID is being executed, please wait for it to complete!")) + except: + pass + + if os.path.exists(log_file): + public.writeFile(log_file, "") + + if os.path.exists(pid_file): + os.remove(pid_file) + # 获取当前compose版本 + key = "dk_compose_version" + skey = "dk_compose_github_version" + + compose_version, stderr = public.ExecShell("docker compose version --short") + if stderr != "": + compose_version, stderr = public.ExecShell("docker-compose version --short") + if stderr != "": + return public.return_message(-1, 0, public.lang( + "Getting the current compose version failed! Reasons for failure:{}", stderr)) + + # 写入缓存compose version 版本文件 + public.set_cache_func(key, compose_version.strip()) + + github_version = public.cache_get(skey) + if not public.cache_get(skey): + # 获取github最新compose版本 + github_version, stderr = public.ExecShell( + ''' + curl -s https://api.github.com/repos/docker/compose/releases/latest | awk -F'"' '/"tag_name":/ {print $4}' | sed 's/^v//' + ''' + ) + if stderr != "": + return public.return_message(-1, 0, public.lang( + "Getting the latest compose version on github failed! Reasons for failure:{}", stderr)) + # 写入缓存github version 版本 + public.cache_set(skey, github_version.strip(), 86400) + + if compose_version.strip() == github_version.strip(): + return public.return_message(-1, 0, public.lang( + "The current compose version is consistent with the latest version on github, no upgrade required!")) + + if compose_version.strip() < github_version.strip(): + # 删除旧版本 + try: + if os.path.exists("/usr/bin/docker-compose"): + os.remove("/usr/bin/docker-compose") + if os.path.exists("/usr/local/lib/docker/cli-plugins/docker-compose"): + os.remove("/usr/local/lib/docker/cli-plugins/docker-compose") + except: + pass + + public.ExecShell( + ''' + nohup bash -c ' + sudo curl -L "https://1ms.run/install/docker-compose/latest/$(uname -s)/$(uname -m)" -o /usr/local/bin/docker-compose && + sudo chmod +x /usr/local/bin/docker-compose && + sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose && + sudo ln -sf /usr/local/bin/docker-compose /usr/libexec/docker/cli-plugins/docker-compose + ' >{log_file} 2>&1 && echo 'bt_successful' >> {log_file} || echo 'bt_failed' >> {log_file} & + echo $! > {pid_file} + '''.format(log_file=log_file, pid_file=pid_file) + ) + + return public.return_message(0, 0, public.lang( + "Upgrading docker-compose version, check the logs later! Latest Version:{}", github_version.strip())) + + except Exception as e: + return public.return_message(-1, 0, public.lang("Upgrade failed! Reasons for failure:{}", e)) + + @staticmethod + def reload_global_config(): + ''' + 重载全局配置文件 + ''' + try: + # 执行重载命令 + stdout, stderr = public.ExecShell("systemctl reload docker") + if stderr: + return public.return_message(-1, 0, public.lang("Overload fails due to:{}", stderr)) + return public.return_message(0, 0, public.lang("Reload successful!")) + except Exception as e: + error_message = "Global profile overload failed:{}".format(e) + dp.write_log(error_message) + return public.return_message(-1, 0, public.lang("Global profile overload failed:{}", e)) + + def set_dk_project_path(self, get): + ''' + @name 设置docker项目路径 + @param "data":{"参数名":""} <数据类型> 参数描述 + @return dict{"status":True/False,"msg":"提示信息"} + ''' + if not hasattr(get, 'path') and get.path is None and get.path == "": + return public.return_message(-1, 0, public.lang("Wrong parameter, path parameter!")) + + if get.path.strip() == "": + get.path = "/www/dk_project" + + project_path_file = "{}/class_v2/btdockerModelV2/config/project_path.pl".format(public.get_panel_path()) + + res = public.writeFile(project_path_file, get.path) + if not res: + return public.return_message(-1, 0, public.lang("Setup failed!")) + return public.return_message(0, 0, public.lang("Setup successful!")) diff --git a/class_v2/btdockerModelV2/statusModel.py b/class_v2/btdockerModelV2/statusModel.py index 5ee7e70d..19d0b83c 100644 --- a/class_v2/btdockerModelV2/statusModel.py +++ b/class_v2/btdockerModelV2/statusModel.py @@ -7,6 +7,8 @@ # Author: wzz # ------------------------------------------------------------------- import gettext +import json + _ = gettext.gettext import time @@ -182,7 +184,7 @@ class main(dockerBase): from pygments import highlight, lexers, formatters formatted_json = json.dumps(stats, indent=3) colorful_json = highlight(formatted_json.encode('utf-8'), lexers.JsonLexer(), formatters.TerminalFormatter()) - print(colorful_json) + # print(colorful_json) self.io_stats(stats, write) self.net_stats(stats, cache, write) self.cpu_stats(stats, write) @@ -256,3 +258,60 @@ class main(dockerBase): return public.return_message(0, 0, len(self.docker_client(self._url).containers.list())) # 获取监控容器资源并记录每分钟 + + # 获取Docker总览信息 + def get_docker_system_info(self, get): + result = { + "containers": {"usage": "-", "total": "-", "size": "-"}, + "images": {"usage": "-", "total": "-", "size": "-"}, + "volumes": {"usage": "-", "total": "-", "size": "-"}, + "networks": {"usage": 0, "total": 0}, + "composes": {"usage": 0, "total": 0}, + "mirrors": 0, + } + + try: + # 获取 mirrors + system_info = self.docker_client(self._url).info() + result["mirrors"] = len(system_info.get("RegistryConfig", {}).get("IndexConfigs", {})) + + # 解析 docker system df + dfs, err = public.ExecShell("docker system df --format json") + + for line in dfs.strip().split('\n'): + line = line.strip() + if not line: + continue + try: + df = json.loads(line) + df_type = df.get("Type") + if df_type == "Images": + result["images"]["usage"] = df.get("Active", 0) + result["images"]["total"] = df.get("TotalCount", 0) + result["images"]["size"] = df.get("Size", "0B") + elif df_type == "Containers": + result["containers"]["usage"] = df.get("Active", 0) + result["containers"]["total"] = df.get("TotalCount", 0) + result["containers"]["size"] = df.get("Size", "0B") + elif df_type == "Local Volumes": + result["volumes"]["usage"] = df.get("Active", 0) + result["volumes"]["total"] = df.get("TotalCount", 0) + result["volumes"]["size"] = df.get("Size", "0B") + except Exception as e: + public.print_log('Docker', 'Parse docker system df failed: {}, error: {}'.format(line, str(e))) + continue + + # Networks + network_info = self.docker_client(self._url).networks.list() + result["networks"]["total"] = len(network_info) + + # Compose + from mod.project.docker.composeMod import main as Compose + dk_compose = Compose() + compose_list = dk_compose.ls(get) + result["composes"]["total"] = len(compose_list) + + except Exception as e: + public.print_log('Docker', 'Get system info failed: {}'.format(str(e))) + + return public.return_message(0, 0, result) \ No newline at end of file diff --git a/class_v2/config_v2.py b/class_v2/config_v2.py index 1daa7e40..f1277b78 100644 --- a/class_v2/config_v2.py +++ b/class_v2/config_v2.py @@ -19,7 +19,6 @@ try: g, request, cache, - PANEL_DEFAULT_ASSET, ) import send_mail except: @@ -412,20 +411,31 @@ class config: return public.return_message(0, 0, data) def setPassword(self, get): + if not public.M('users').where("username=?", (session['username'],)).find(): + return public.return_message(-1, 0, public.lang("Setup fail! Please try logging in again.")) get.password1 = public.url_decode(public.rsa_decrypt(get.password1)) get.password2 = public.url_decode(public.rsa_decrypt(get.password2)) - if get.password1 != get.password2: return public.return_message(-1, 0, public.lang("The passwords entered twice are inconsistent, please try again!")) - if len(get.password1) < 5: return public.return_message(-1, 0, public.lang("Password cannot be less than 5 characters!")) - if not self.check_password_safe(get.password1): return public.return_message(-1, 0, public.lang("The password must be at least eight characters in length and contain at least three combinations of digits, uppercase letters, lowercase letters, and special characters")) - public.M('users').where("username=?", (session['username'],)).setField('password', public.password_salt( - public.md5(get.password1.strip()), username=session['username'])) + if get.password1 != get.password2: + return public.return_message(-1, 0, public.lang("The passwords entered twice are inconsistent, please try again!")) + if len(get.password1) < 5: + return public.return_message(-1, 0, public.lang("Password cannot be less than 5 characters!")) + if not self.check_password_safe(get.password1): + return public.return_message(-1, 0, public.lang("The password must be at least eight characters in length and contain at least three combinations of digits, uppercase letters, lowercase letters, and special characters")) + + if get.password1: + public.M('users').where("username=?", (session['username'],)).setField( + 'password', + public.password_salt(public.md5(get.password1.strip()), username=session['username']) + ) public.write_log_gettext('Panel configuration', 'Successfully modified password for user [{0}]!', (session['username'],)) + self.reload_session() # 密码过期时间 expire_time_file = public.get_panel_path() + '/data/password_expire_time.pl' - if os.path.exists(expire_time_file): os.remove(expire_time_file) + if os.path.exists(expire_time_file): + os.remove(expire_time_file) self.get_password_config(None) if session.get('password_expire', False): session['password_expire'] = False @@ -916,31 +926,35 @@ class config: def getFpmConfig(self, get): version = get.version file = public.GetConfigValue('setup_path') + "/php/" + version + "/etc/php-fpm.conf" + if not os.path.exists(file): + return public.fail_v2("The PHP-FPM configuration file does not exist.") conf = public.readFile(file) + if not conf: + return public.fail_v2("Failed to read the PHP-FPM configuration file.") data = {} rep = r"\s*pm.max_children\s*=\s*([0-9]+)\s*" - tmp = re.search(rep, conf).groups() - data['max_children'] = tmp[0] + tmp = re.search(rep, conf) + data['max_children'] = tmp.groups()[0] if tmp else '' rep = r"\s*pm.start_servers\s*=\s*([0-9]+)\s*" - tmp = re.search(rep, conf).groups() - data['start_servers'] = tmp[0] + tmp = re.search(rep, conf) + data['start_servers'] = tmp.groups()[0] if tmp else '' rep = r"\s*pm.min_spare_servers\s*=\s*([0-9]+)\s*" - tmp = re.search(rep, conf).groups() - data['min_spare_servers'] = tmp[0] + tmp = re.search(rep, conf) + data['min_spare_servers'] = tmp.groups()[0] if tmp else '' rep = r"\s*pm.max_spare_servers \s*=\s*([0-9]+)\s*" - tmp = re.search(rep, conf).groups() - data['max_spare_servers'] = tmp[0] + tmp = re.search(rep, conf) + data['max_spare_servers'] = tmp.groups()[0] if tmp else '' rep = r"\s*pm\s*=\s*(\w+)\s*" - tmp = re.search(rep, conf).groups() - data['pm'] = tmp[0] + tmp = re.search(rep, conf) + data['pm'] = tmp.groups()[0] if tmp else 'static' rep = r"\s*listen.allowed_clients\s*=\s*([\w\.,/]+)\s*" - tmp = re.search(rep, conf).groups() - data['allowed'] = tmp[0] + tmp = re.search(rep, conf) + data['allowed'] = tmp.groups()[0] if tmp else '' data['unix'] = 'unix' data['port'] = '' @@ -2776,12 +2790,19 @@ class config: public.writeFile(site_total_install, 'true') execstr="curl https://node.aapanel.com/site_total/install.sh|bash" public.ExecShell(execstr) + if not os.path.exists("/etc/systemd/system/site_total.service"): + return public.return_message(-1, 0, 'Free website monitoring installation failed!') else:#卸载免费网站监控 if os.path.exists(site_total_install): os.remove(site_total_install) public.writeFile(site_total_uninstall, 'true') execstr="bash /www/server/site_total/scripts/uninstall.sh" public.ExecShell(execstr) + if os.path.exists("/www/server/apache/bin/httpd"): + public.ExecShell("rm -f /www/server/panel/vhost/apache/extension/*/site_total.conf") + public.ExecShell('pkill -9 httpd') + public.ExecShell('/etc/init.d/httpd start') + time.sleep(0.5) if os.path.exists("/etc/systemd/system/site_total.service"): return public.return_message(-1, 0, "Setup failed, please manually uninstall the site_total_monitor!") @@ -3717,64 +3738,19 @@ class config: settings = '{}/BTPanel/languages/settings.json'.format(public.get_panel_path()) custom = '{}/BTPanel/static/vite/lang/my-MY'.format(public.get_panel_path()) - data = { - "default": "en", - "languages": [ - { - "name": "cht", - "google": "zh-tw", - "title": "繁體中文", - "cn": "繁體中文" - }, - { - "name": "en", - "google": "en", - "title": "English", - "cn": "英语" - }, - { - "name": "de", - "google": "de", - "title": "Deutsch", - "cn": "德语" - }, - { - "name": "fra", - "google": "fr", - "title": "Français", - "cn": "法语" - }, - { - "name": "spa", - "google": "es", - "title": "Español", - "cn": "西班牙语" - }, - { - "name": "pt", - "google": "pt", - "title": "Português", - "cn": "葡萄牙语" - }, - { - "name": "vie", - "google": "vi", - "title": "Tiếng Việt", - "cn": "越南语" - }, - { - "name": "ind", - "google": "id", - "title": "Bahasa Indonesia", - "cn": "印尼语" - }, { - "name": "ru", - "google": "ru", - "title": "Русский", - "cn": "俄语" - } - ] - } + default_data = public.default_languages_config() + + file_content = public.readFile(settings) + if not file_content: + public.writeFile(settings, json.dumps(default_data)) + data = default_data + else: + try: + data = json.loads(file_content) + except json.JSONDecodeError: + public.writeFile(settings, json.dumps(default_data)) + data = default_data + setlang = "/www/server/panel/BTPanel/languages/language.pl" if os.path.exists(setlang): @@ -3782,13 +3758,6 @@ class config: if olang: data['default'] = olang - if not os.path.exists(settings): - public.writeFile(settings, json.dumps(data)) - else: - if not public.readFile(settings): - public.writeFile(settings, json.dumps(data)) - - data = json.loads(public.readFile(settings)) if os.path.exists(custom): data['languages'].append({ "name": "my", @@ -3957,6 +3926,7 @@ class config: if cache: cache.delete("panel_asset_config") + from BTPanel import PANEL_DEFAULT_ASSET # 定义允许的配置字段映射 allowed_fields = set(PANEL_DEFAULT_ASSET.keys()) try: @@ -3988,10 +3958,33 @@ class config: except Exception as e: public.print_log(f"get_panel_asset cache error: {e}") - # 合法的字段和默认值 - default_values = { - k: v for k, v in PANEL_DEFAULT_ASSET.items() - } + try: + from BTPanel import PANEL_DEFAULT_ASSET + # 合法的字段和默认值 + default_values = { + k: v for k, v in PANEL_DEFAULT_ASSET.items() + } + except: + default_values = { + 'favicon': '/static/favicon.ico', # 默认网站favicon图标 + 'show_login_logo': True, # 默认不显示登录logo + 'show_login_bg_images': False, # 默认不显示登录背景图片 + 'login_logo': '/static/icons/logo-green.svg', # 默认登录logo图片 + 'login_bg_images': '', # 默认登录背景图片 + 'login_bg_images_opacity': 100, # 默认登录背景图片透明度 + 'show_main_bg_images': True, # 默认不显示主界面背景图 + 'main_bg_images': '/static/icons/main_bg.png', # 主界面背景图 + 'main_bg_images_opacity': 100, # 主界面背景图透明度 + 'main_content_opacity': 100, # 主界面内容透明度 + 'main_shadow_color': '#000000', # 主界面阴影颜色 + 'main_shadow_opacity': 5, # 主界面阴影透明度 + 'menu_logo': '/static/icons/menu_logo.png', # 菜单栏顶部logo图标 + 'menu_bg_opacity': 100, # 默认侧边栏背景透明度 + 'theme_color': '#3c444d', # 默认主色 + 'theme_name': 'default', # 默认主题名称 + 'home_state_font_size': 24, # 首页概览字体大小 + 'main_bg_images_dark': '/static/icons/main_bg_dark.png', # 这个是用来搞黑暗模式的 + } # 旧字段与新字段的映射 old_to_new = { 'bg_images': 'login_bg_images', diff --git a/class_v2/data_v2.py b/class_v2/data_v2.py index bbe57087..6a09bee6 100644 --- a/class_v2/data_v2.py +++ b/class_v2/data_v2.py @@ -1304,145 +1304,179 @@ class data: def find_stored_favicons(self): - cur_time = int(time.time()) - last_find_stored_favicons_time = cache.get('last_find_stored_favicons_time') + try: + cur_time = int(time.time()) + last_find_stored_favicons_time = cache.get('last_find_stored_favicons_time') - if last_find_stored_favicons_time and cur_time - last_find_stored_favicons_time < 3600: - return + if last_find_stored_favicons_time and cur_time - last_find_stored_favicons_time < 3600: + return - import requests - import base64 + import requests + import base64 + failed_domains = cache.get('favicon_failed_domains') if cache.get('favicon_failed_domains') else {} + site_favs_root = os.path.join(public.get_panel_path(), "data/site_favs") - site_favs_root = os.path.join(public.get_panel_path(), "data/site_favs") + if not os.path.exists(site_favs_root): + os.makedirs(site_favs_root, 0o755) - if not os.path.exists(site_favs_root): - os.makedirs(site_favs_root, 0o755) + sites = public.S('sites').field('id', 'name', 'path').select() - sites = public.S('sites').field('id', 'name', 'path').select() + reg_obj = re.compile( + r']*>') - reg_obj = re.compile(r']*>') + for site in sites: + site_name = site['name'] + site_path = site['path'] + ico_path = os.path.join(site_path, "favicon.ico") + stored_ico_path = os.path.join(site_favs_root, site_name + '.ico') - for site in sites: - site_name = site['name'] - site_path = site['path'] - ico_path = os.path.join(site_path, "favicon.ico") - stored_ico_path = os.path.join(site_favs_root, site_name + '.ico') + if not os.path.exists(ico_path) and (not os.path.exists(stored_ico_path) or os.path.getmtime(stored_ico_path) < cur_time - 86400): + # 尝试请求favicon.ico + domains = public.S('domain').where('pid=?', (site['id'],)).field('name', 'port').select() + # 只在前2个域名中查找 + if len(domains) > 2: + domains = domains[:2] - if not os.path.exists(ico_path) and (not os.path.exists(stored_ico_path) or os.path.getmtime(stored_ico_path) < cur_time - 86400): - # 尝试请求favicon.ico - domains = public.S('domain').where('pid=?', (site['id'],)).field('name', 'port').select() - for domain in domains: - domain_name = domain['name'] - port = domain['port'] if domain['port'] else 80 - protocol = 'https' if port == 443 else 'http' - url = "{}://127.0.0.1{}/".format(protocol, ':{}'.format(port) if port not in [80, 443] else '') + for domain in domains: + domain_name = domain['name'] - # public.print_log('url: {} {}'.format(domain, url)) + # 跳过上次获取失败的域名,2小时内不重试 + if domain_name in failed_domains and cur_time - failed_domains[domain_name] < 3600*2: + continue - try: - # 首先尝试直接请求favicon.ico - ico_url = "{}/favicon.ico".format(url.strip('/')) + port = domain['port'] if domain['port'] else 80 + protocol = 'https' if port == 443 else 'http' + url = "{}://127.0.0.1{}/".format(protocol, ':{}'.format(port) if port not in [80, 443] else '') - # public.print_log('ico_url: {}'.format(ico_url)) - - # 等待500ms - time.sleep(0.5) + # public.print_log('url: {} {}'.format(domain, url)) try: - ico_response = requests.get(ico_url, headers={ - 'host': domain_name, - 'user-agent': 'aaPanel', - }, verify=False, timeout=15) + # 首先尝试直接请求favicon.ico + ico_url = "{}/favicon.ico".format(url.strip('/')) - if ico_response.status_code == 200 and ico_response.headers.get('Content-Type', '').lower() == 'image/x-icon': - ico_content = ico_response.content - with open(stored_ico_path, 'wb') as f: - f.write(ico_content) - # public.print_log('Successfully fetched favicon.ico from {}'.format(ico_url)) - break - except: - pass + # public.print_log('ico_url: {}'.format(ico_url)) - # 等待500ms - time.sleep(0.5) + # 等待1s + time.sleep(1) - max_redirects = 5 + try: + ico_response = requests.get(ico_url, headers={ + 'host': domain_name, + 'user-agent': 'aaPanel', + }, verify=False, timeout=15) - for _ in range(max_redirects): - # 无法获取favicon.ico,尝试从首页中获取 - response = requests.get(url, headers={ - 'host': domain_name, - 'user-agent': 'aaPanel', - }, verify=False, timeout=15) + if ico_response.status_code == 200 and ico_response.headers.get('Content-Type','').lower() == 'image/x-icon': + ico_content = ico_response.content + with open(stored_ico_path, 'wb') as f: + f.write(ico_content) + # public.print_log('Successfully fetched favicon.ico from {}'.format(ico_url)) + break + except: + pass - # 检查是否重定向 - if response.status_code >= 300 and response.status_code < 400: - new_url = response.headers.get('location') + # 等待500ms + time.sleep(1) - # 从new_url中提取域名和端口 - if new_url: - # public.print_log('Redirected to: {}'.format(new_url)) - parsed_url = requests.utils.urlparse(new_url) - domain_name = parsed_url.netloc.split(':')[0] + max_redirects = 2 + + for _ in range(max_redirects): + # 无法获取favicon.ico,尝试从首页中获取 + response = requests.get(url, headers={ + 'host': domain_name, + 'user-agent': 'aaPanel', + }, verify=False, timeout=15) + + # 检查是否重定向 + if response.status_code >= 300 and response.status_code < 400: + new_url = response.headers.get('location') + + # 从new_url中提取域名和端口 + if new_url: + # public.print_log('Redirected to: {}'.format(new_url)) + parsed_url = requests.utils.urlparse(new_url) + domain_name = parsed_url.netloc.split(':')[0] + continue + + # 等待500ms + time.sleep(0.5) continue - # 等待500ms - time.sleep(0.5) - continue + break - break + if response.status_code == 200: + # 尝试从首页中获取favicon.ico + m = reg_obj.search(response.text) - if response.status_code == 200: - # 尝试从首页中获取favicon.ico - m = reg_obj.search(response.text) + # public.print_log('matched ico_url: {}'.format(m.group(1) if m else 'None')) - # public.print_log('matched ico_url: {}'.format(m.group(1) if m else 'None')) - - if m: - ico_url = m.group(1) - headers = { + if m: + ico_url = m.group(1) + headers = { 'user-agent': 'aaPanel', } - if not ico_url.startswith('http'): - headers['host'] = domain_name - # 如果favicon.ico是相对路径,拼接完整URL - if ico_url.startswith('//') and ico_url[2:].startswith(domain_name): - ico_url = url + ico_url[2:].split('/', 2)[-1] - else: - ico_url = url + ico_url.lstrip('/') + if not ico_url.startswith('http'): + headers['host'] = domain_name + # 如果favicon.ico是相对路径,拼接完整URL + if ico_url.startswith('//') and ico_url[2:].startswith(domain_name): + ico_url = url + ico_url[2:].split('/', 2)[-1] + else: + ico_url = url + ico_url.lstrip('/') - # 等待500ms - time.sleep(0.5) + # 等待500ms + time.sleep(0.5) - try: - ico_response = requests.get(ico_url, headers=headers, verify=False, timeout=15) - if ico_response.status_code == 200: - ico_content = ico_response.content - with open(stored_ico_path, 'wb') as f: - f.write(ico_content) - break # 成功获取favicon.ico后跳出循环 - except requests.RequestException as e: - public.print_log("Error fetching favicon from {}: {}".format(ico_url, str(e)), _level='error') + try: + ico_response = requests.get(ico_url, headers=headers, verify=False, timeout=15) + if ico_response.status_code == 200: + ico_content = ico_response.content + # 校验图片格式 + is_valid = False + # 检查是否为.ico + if len(ico_content) >= 4 and ico_content[:4] == b'\x00\x00\x01\x00': + is_valid = True + # 检查是否为PNG + elif len(ico_content) >= 8 and ico_content[:8] == b'\x89PNG\r\n\x1a\n': + is_valid = True + # 检查是否为JPG + elif len(ico_content) >= 3 and ico_content[:3] == b'\xff\xd8\xff': + is_valid = True + # 检查是否为GIF + elif len(ico_content) >= 6 and ( + ico_content[:6] == b'GIF87a' or ico_content[:6] == b'GIF89a'): + is_valid = True - break # 成功获取favicon.ico后跳出循环 - except requests.RequestException as e: - public.print_log("Error fetching favicon for {}: {}".format(domain_name, str(e)), _level='error') + if is_valid: + with open(stored_ico_path, 'wb') as f: + f.write(ico_content) + break + except requests.RequestException as e: + failed_domains[domain_name] = cur_time + public.print_log("Error fetching favicon from {}: {}".format(ico_url, str(e)), + _level='error') - if not os.path.exists(ico_path): - # 如果仍然没有favicon.ico,尝试从存储的favicon中读取 - if os.path.exists(stored_ico_path): - ico_path = stored_ico_path + break # 成功获取favicon.ico后跳出循环 + except requests.RequestException as e: + public.print_log("Error fetching favicon for {}: {}".format(domain_name, str(e)), + _level='error') - if os.path.exists(ico_path): - try: - with open(ico_path, 'rb') as f: - ico_content = f.read() - base64_ico = "data:image/x-icon;base64," + base64.b64encode(ico_content).decode('utf-8') - public.writeFile(os.path.join(site_favs_root, site_name + '.b64'), base64_ico) - except Exception as e: - public.print_log("Error storing favicon for {}: {}".format(site_name, str(e)), _level='error') + if not os.path.exists(ico_path): + # 如果仍然没有favicon.ico,尝试从存储的favicon中读取 + if os.path.exists(stored_ico_path): + ico_path = stored_ico_path - cache.set('last_find_stored_favicons_time', cur_time, timeout=3600 * 2) + if os.path.exists(ico_path): + try: + with open(ico_path, 'rb') as f: + ico_content = f.read() + base64_ico = "data:image/x-icon;base64," + base64.b64encode(ico_content).decode('utf-8') + public.writeFile(os.path.join(site_favs_root, site_name + '.b64'), base64_ico) + except Exception as e: + public.print_log("Error storing favicon for {}: {}".format(site_name, str(e)), _level='error') + + cache.set('favicon_failed_domains', failed_domains, timeout=3600 * 2) + cache.set('last_find_stored_favicons_time', cur_time, timeout=3600 * 2) + except Exception as e: + public.print_log(str(e)) # 获取wp类型 def get_wp_classification(self, get=None): diff --git a/class_v2/files_v2.py b/class_v2/files_v2.py index 27218be0..c2d6c6cf 100644 --- a/class_v2/files_v2.py +++ b/class_v2/files_v2.py @@ -17,6 +17,7 @@ import pwd import cgi import shutil import re +import html import sqlite3 from BTPanel import session, request from public.validate import Param @@ -235,6 +236,11 @@ session.save_handler = files'''.format(path, sess_path, sess_path) @return dict ''' filename = args.filename.strip() + try: + filename = filename.encode('utf-8').decode('latin-1') + except UnicodeEncodeError: + return public.return_message(0, 0, public.lang("The filename contains illegal characters")) + if not os.path.exists(filename): return public.return_message(-1, 0, public.lang("File does not exist!")) file_info = {} @@ -242,7 +248,34 @@ session.save_handler = files'''.format(path, sess_path, sess_path) file_info['size'] = _stat.st_size file_info['mtime'] = int(_stat.st_mtime) file_info['isfile'] = os.path.isfile(filename) - return public.return_message(0, 0,file_info) + return public.return_message(0, 0, file_info) + # 上传前批量检查文件是否存在 + def upload_files_exists(self, args): + ''' + @name 上传前批量检查文件是否存在 + @param files 文件列表,多个用\n分隔 + @return dict + ''' + check_files = [] + if hasattr(args, 'files'): + check_files = args.files.split('\n') + file_list = [] + for filename in check_files: + try: + if not os.path.exists(filename): + file_list.append({'filename': filename, 'exists': False, 'size': 0, 'mtime': 0, 'isfile': False}) + continue + _stat = os.stat(filename) + file_list.append({ + 'filename': filename, + 'exists': True, + 'size': _stat.st_size, + 'mtime': int(_stat.st_mtime), + 'isfile': os.path.isfile(filename) + }) + except: + file_list.append({'filename': filename, 'exists': False, 'size': 0, 'mtime': 0, 'isfile': False}) + return public.return_message(0, 0, file_list) def get_real_len(self, string): ''' @@ -257,120 +290,7 @@ session.save_handler = files'''.format(path, sess_path, sess_path) real_len += 1 return real_len - # 上传文件2 最新 暂未使用 - def upload_new(self, args): - from BTPanel import request - if not 'f_name' in args: - args.f_name = request.form.get('f_name').strip() - args.f_path = request.form.get('f_path').strip() - args.f_size = request.form.get('f_size') - args.f_start = request.form.get('f_start') - if sys.version_info[0] == 2: - args.f_name = args.f_name.encode('utf-8') - args.f_path = args.f_path.encode('utf-8') - - try: - save_path = os.path.join(args.f_name + '.' + str(int(args.f_size)) + '.upload.tmp') - max_filename_length = os.pathconf(args.f_path, "PC_NAME_MAX") - # if self.get_real_len(save_path) > max_filename_length: return public.returnMsg(False, '文件名长度超过{}字节'.format(max_filename_length)) - if len(save_path.encode('utf-8')) > max_filename_length: return public.return_message(-1, 0, public.lang("The file name contains more than 256 bytes")) - except: - pass - - if not self.f_name_check(args.f_name): return public.return_message(-1, 0, public.lang("No special characters can be included in the file name!")) - - if args.f_path == '/': - return public.return_message(-1, 0, public.lang("Cannot upload files to the system document root!")) - - if args.f_name.find('./') != -1 or args.f_path.find('./') != -1: - return public.return_message(-1, 0, public.lang("Wrong parameter")) - # 判断是否存在同名文件 - # if pathlib.Path(args.f_path).is_file(): - # return public.return_message(-1, 0, public.lang("There is a file with the same name as the uploaded folder. Please check and try again")) - - if not os.path.exists(args.f_path): - try: - os.makedirs(args.f_path, 493) - except PermissionError: - return public.fail_v2( public.lang("当前用户没有足够的权限去访问或者修改{}".format(args.f_path))) - except OSError as e: - if 'Read-only' in str(e): - return public.fail_v2( public.lang("当前目录为只读权限")) - else: - return public.fail_v2(public.lang("上传失败:{}",str(e))) - if not 'dir_mode' in args or not 'file_mode' in args: - self.set_mode(args.f_path) - - save_path = os.path.join( - args.f_path, args.f_name + '.' + str(int(args.f_size)) + '.upload.tmp') - d_size = 0 - if os.path.exists(save_path): - d_size = os.path.getsize(save_path) - - if d_size != int(args.f_start): - return d_size - - try: - f = open(save_path, 'ab') - if 'b64_data' in args: - import base64 - b64_data = base64.b64decode(args.b64_data) - f.write(b64_data) - else: - upload_files = request.files.getlist("blob") - for tmp_f in upload_files: - f.write(tmp_f.read()) - f.close() - except Exception as ex: - ex = str(ex) - if ex.find('No space left on device') != -1: - return public.fail_v2(public.lang('磁盘空间不足')) - if os.path.exists(save_path): - f_size = os.path.getsize(save_path) - else: - f_size = 0 - if f_size is not None and f_size != int(args.f_size): - if f_size > int(args.f_size): - return public.fail_v2(public.lang("文件上传发生错误请删除临时文件【{}】后重试",save_path)) - return f_size - - new_name = os.path.join(args.f_path, args.f_name) - if os.path.exists(new_name): - if new_name.find('.user.ini') != -1: - public.ExecShell("chattr -i " + new_name) - # try: - # os.remove(new_name) - # except: - # public.ExecShell("rm -f %s" % new_name) - # 判断是否存在同名目录 - # if pathlib.Path(new_name).is_dir(): - # return public.fail_v2( public.lang("存在与上传文件同名的文件夹请检查后重试")) - try: - os.renames(save_path, new_name) - except PermissionError: - os.remove(save_path) - return public.fail_v2(public.lang('当前用户没有足够的权限去访问或者修改')) - - if 'dir_mode' in args and 'file_mode' in args: - mode_tmp1 = args.dir_mode.split(',') - public.set_mode(args.f_path, mode_tmp1[0]) - public.set_own(args.f_path, mode_tmp1[1]) - mode_tmp2 = args.file_mode.split(',') - public.set_mode(new_name, mode_tmp2[0]) - public.set_own(new_name, mode_tmp2[1]) - - else: - if os.path.exists(new_name): - self.set_mode(new_name) - - if new_name.find('.user.ini') != -1: - public.ExecShell("chattr +i " + new_name) - - public.WriteLog('TYPE_FILE', 'FILE_UPLOAD_SUCCESS', - (args.f_name, args.f_path)) - - return public.success_v2(public.lang('Successfully uploaded!')) def upload(self, args): if not 'f_name' in args: args.f_name = request.form.get('f_name').strip() @@ -383,10 +303,21 @@ session.save_handler = files'''.format(path, sess_path, sess_path) args.f_path = args.f_path.encode('utf-8') try: - if self.get_real_len(args.f_name) > 256: return public.return_message(-1, 0, public.lang("The file name contains more than 256 bytes")) + if self.get_real_len(args.f_name) > 256: + return public.return_message(-1, 0, public.lang("The file name contains more than 256 bytes")) except: pass + try: + temp_filename = args.f_name + '.' + str(int(args.f_size)) + '.upload.tmp' + if len(temp_filename.encode('utf-8')) > 255: + return public.return_message(-1, 0, public.lang("The file name is too long (over 255 bytes).")) + save_path = os.path.join(args.f_path, temp_filename) + if len(save_path.encode('utf-8')) > 4096: + return public.return_message(-1, 0, public.lang("The full path is too long (over 4096 bytes).")) + except Exception as e: + return public.fail_v2(public.lang("Failed to check file path: {}", str(e))) + if not self.f_name_check(args.f_name): return public.return_message(-1, 0, public.lang("No special characters can be included in the file name!")) if args.f_path == '/': @@ -401,7 +332,8 @@ session.save_handler = files'''.format(path, sess_path, sess_path) self.set_mode(args.f_path) save_path = os.path.join( - args.f_path, args.f_name + '.' + str(int(args.f_size)) + '.upload.tmp') + args.f_path, args.f_name + '.' + str(int(args.f_size)) + '.upload.tmp' + ) d_size = 0 if os.path.exists(save_path): d_size = os.path.getsize(save_path) @@ -580,7 +512,7 @@ session.save_handler = files'''.format(path, sess_path, sess_path) except: pass - nlist.append((entry.name, sort_val)) + nlist.append((entry.name, sort_val, entry.is_dir())) # 计数 count += 1 @@ -589,14 +521,18 @@ session.save_handler = files'''.format(path, sess_path, sess_path) if sort_key == 0: # 按文件名排序 - nlist = sorted(nlist, key=lambda x: x[0], reverse=reverse) + nlist = sorted(nlist, key=lambda x: [int(text) if text.isdigit() else text.lower() for text in re.split(r'(\d+)', x[0])], reverse=reverse) elif sort_key > 0: # 按指定字段排序 nlist = sorted(nlist, key=lambda x: x[1], reverse=reverse) else: # 否则文件数量小于10000时,按文件名排序 if count < 10000: - nlist = sorted(nlist, key=lambda x: x[0], reverse=reverse) + nlist = sorted(nlist, key=lambda x: [int(text) if text.isdigit() else text.lower() for text in + re.split(r'(\d+)', x[0])], reverse=False) + else: + nlist = sorted(nlist, key=lambda x: x[0], reverse=False) + nlist = sorted(nlist, key=lambda x: x[2], reverse=True) return count, nlist @@ -753,8 +689,10 @@ session.save_handler = files'''.format(path, sess_path, sess_path) if hasattr(get, 'tojs'): info['return_js'] = get.tojs if hasattr(get, 'showRow'): - info['row'] = int(get.showRow) - + try: + info['row'] = int(get.showRow) + except: + info['row'] = 500 # 获取分页数据 data = {} data['PAGE'] = page.GetPage(info, '1,2,3,4,5,6,7,8') @@ -1365,8 +1303,8 @@ session.save_handler = files'''.format(path, sess_path, sess_path) public.write_log_gettext('File manager', 'Set the file name [{}], notes: {}', (f_name, ps_body)) else: if os.path.exists(f_key): - os.remove(f_key) public.write_log_gettext('File manager', 'Clear file notes [{}]', (f_name)) + os.remove(f_key) return public.return_message(0, 0, public.lang("Setup successfully!")) def check_file_sort(self, sort): @@ -1592,11 +1530,14 @@ session.save_handler = files'''.format(path, sess_path, sess_path) if not os.path.exists(path): return 0 i = 0 - for name in os.listdir(path): - if search: - if name.lower().find(search) == -1: - continue - i += 1 + try: + for name in os.listdir(path): + if search: + if name.lower().find(search) == -1: + continue + i += 1 + except: + return 0 return i # 创建文件 @@ -1746,7 +1687,7 @@ session.save_handler = files'''.format(path, sess_path, sess_path) get.path = get.path.encode('utf-8') if os.path.basename(get.path) in ['Recycle_bin', '.Recycle_bin']: return public.return_message(-1, 0, public.lang("Recovery failed!")) - if not os.path.exists(get.path): + if not os.path.exists(get.path) and not os.path.islink(get.path): return public.return_message(-1, 0, public.lang("Requested directory does not exist")) # 检查是否敏感目录 @@ -1771,11 +1712,14 @@ session.save_handler = files'''.format(path, sess_path, sess_path) self.remove_file_ps(get) public.add_security_logs("Del dir", "Delete directory: " + get.path) return public.return_message(0, 0, public.lang("Directory moved to recycle bin!")) - - import shutil - shutil.rmtree(get.path) - self.site_path_safe(get) public.add_security_logs("Del dir", "Delete directory: " + get.path) + if os.path.islink(get.path): + os.remove(get.path) + else: + import shutil + shutil.rmtree(get.path) + self.site_path_safe(get) + public.write_log_gettext('File manager', 'Successfully deleted directory [{}]!', (get.path,)) self.remove_file_ps(get) return public.return_message(0, 0, public.lang(" Successfully deleted directory!")) @@ -1831,9 +1775,10 @@ session.save_handler = files'''.format(path, sess_path, sess_path) pass public.add_security_logs("Del file", "Delete file: " + get.path) return public.return_message(0, 0, public.lang("File moved to recycle bin")) + + public.WriteLog('File manager', 'Successfully permanent deleted file: [{}]!'.format(get.path)) os.remove(get.path) self.site_path_safe(get) - public.write_log_gettext('File manager', 'Successfully permanent deleted file: [{}]!', (get.path,)) public.add_security_logs("Del file", "Delete file: " + get.path) self.remove_file_ps(get) return public.return_message(0, 0, public.lang("Successfully deleted file")) @@ -1851,6 +1796,8 @@ session.save_handler = files'''.format(path, sess_path, sess_path) # 移动到回收站 def Mv_Recycle_bin(self, get): + if not os.path.islink(get.path): + get.path = os.path.realpath(get.path) rPath = public.get_recycle_bin_path(get.path) rFile = os.path.join(rPath, get.path.replace('/', '_bt_') + '_t_' + str(time.time())) try: @@ -1990,7 +1937,7 @@ session.save_handler = files'''.format(path, sess_path, sess_path) os.remove(filename) except: public.ExecShell("rm -f " + filename) - + public.WriteLog('File manager', 'Delete the files {} in the Recycle Bin.'.format(tfile)) return public.return_message(0, 0, public.lang('Parmanently deleted {} from recycle bin!', tfile)) # 清空回收站 @@ -2067,6 +2014,15 @@ session.save_handler = files'''.format(path, sess_path, sess_path) os.chmod(get.dfile, stat.st_mode) os.chown(get.dfile, stat.st_uid, stat.st_gid) return public.return_message(0, 0, public.lang("Successfully copied file!")) + except shutil.SameFileError: + return public.return_message(0, 0, public.lang("Successfully copied file!")) + except PermissionError: + return public.return_message(-1, 0, public.lang("If the folder fails to be copied, check whether the directory is locked or tamper-proof is turned on")) + except OSError as e: + if 'Read-only' in str(e): + return public.return_message(-1, 0, public.lang("The current directory is read-only")) + else: + return public.return_message(-1, 0, public.lang("Folder copy failed:{}", str(e))) except: return public.return_message(-1, 0, public.lang("Failed to copy file!")) @@ -2094,6 +2050,13 @@ session.save_handler = files'''.format(path, sess_path, sess_path) public.write_log_gettext('File manager', 'Successfully copied directory!', (get.sfile, get.dfile)) return public.return_message(0, 0, public.lang("Successfully copied directory!")) + except PermissionError: + return public.return_message(-1, 0, public.lang("If the folder fails to be copied, check whether the directory is locked or tamper-proof is turned on")) + except OSError as e: + if 'Read-only' in str(e): + return public.return_message(-1, 0, public.lang("The current directory is read-only")) + else: + return public.return_message(-1, 0, public.lang("Folder copy failed:{}", str(e))) except: return public.return_message(-1, 0, public.lang("Failed to copy directory!")) @@ -2159,6 +2122,7 @@ session.save_handler = files'''.format(path, sess_path, sess_path) tmp['filename'] = fn tmp['size'] = os.path.getsize(filename) tmp['mtime'] = str(int(stat.st_mtime)) + tmp['is_dir'] = os.path.isdir(filename) data.append(tmp) return data @@ -2169,9 +2133,10 @@ session.save_handler = files'''.format(path, sess_path, sess_path) # 获取文件内容 def GetFileBody(self, get): + if not hasattr(get, "path"): + return public.return_message(-1, 0, public.lang("Parameters are missing! path")) if sys.version_info[0] == 2: get.path = get.path.encode('utf-8') - get.path = self.xssdecode(get.path) if get.path.find('/rewrite/null/') != -1: @@ -2238,6 +2203,10 @@ session.save_handler = files'''.format(path, sess_path, sess_path) return public.return_message(-1, 0, public.lang("Failed to open file, file may be occupied by other processes!")) if hasattr(get, 'filename'): get.path = get.filename + + if not os.path.exists(get.path): + return public.return_message(-1, 0, public.lang("The file does not exist")) + data['historys'] = self.get_history(get.path) data['auto_save'] = self.get_auto_save(get.path) data['st_mtime'] = str(int(os.stat(get.path).st_mtime)) @@ -2248,29 +2217,21 @@ session.save_handler = files'''.format(path, sess_path, sess_path) return public.return_message(return_status, 0, data) def last_lines(self, filename, lines=1): - block_size = 3145928 - block = '' - nl_count = 0 - start = 0 - fsock = open(filename, 'rU') - try: - fsock.seek(0, 2) - curpos = fsock.tell() - while (curpos > 0): - curpos -= (block_size + len(block)) - if curpos < 0: curpos = 0 - fsock.seek(curpos) - try: - block = fsock.read() - except: - continue - nl_count = block.count('\n') - if nl_count >= lines: break - for n in range(nl_count - lines + 1): - start = block.find('\n', start) + 1 - finally: - fsock.close() - return block[start:] + ''' + @name 获取文件最后几行 + @param filename str 文件名 + @param lines int 行数 + @return str + ''' + max_len = 512 * lines + with open(filename, 'rb') as f: + f.seek(0, 2) + pos = f.tell() + max_size = min(pos, max_len) + f.seek(-max_size,1) + data = f.read(max_size) + + return data.decode('utf-8', errors='ignore') # 保存文件 def SaveFileBody(self, get): @@ -2300,15 +2261,14 @@ session.save_handler = files'''.format(path, sess_path, sess_path) str3 = public.lang('To modify the 404 config, find the following config location') # return public.return_message(-1, 0, public.lang("Failed to save the configuration file:

Do not modify the 404 rule commented in the SSL config

To modify the 404 config, find the following config location:

#ERROR-PAGE-START  Error page configuration, allowed to be commented
")) - return public.return_message(-1, 0, - '{}:

{}

:

#ERROR-PAGE-START  Error page configuration, allowed to be commented
'.format( + return public.return_message(-1, 0,'{}:

{}

:

#ERROR-PAGE-START  Error page configuration, allowed to be commented
'.format( str1, str2, str3)) if 'st_mtime' in get: - st_mtime = str(int(os.stat(get.path).st_mtime)) - if st_mtime != get['st_mtime']: return public.return_message(-1, 0, - 'Failed to save, {} file has been changed, please refresh the content and modify it again.'.format( - get.path)) + if not 'force' in get or get['force'] != '1': + st_mtime = str(int(os.stat(get.path).st_mtime)) + if st_mtime != get['st_mtime']: + return public.return_message(-1, 0,'Failed to save, {} file has been changed, please refresh the content and modify it again.'.format(get.path)) his_path = '/www/backup/file_history/' if get.path.find(his_path) != -1: @@ -2318,7 +2278,10 @@ session.save_handler = files'''.format(path, sess_path, sess_path) import base64 get.data = base64.b64decode(get.data) isConf = -1 - if os.path.exists('/etc/init.d/nginx') or os.path.exists('/etc/init.d/httpd'): + skip_conf_check = False + if "skip_conf_check" in get and get.skip_conf_check in ("1", 1, "true", "True", True): + skip_conf_check = True + if not skip_conf_check and (os.path.exists('/etc/init.d/nginx') or os.path.exists('/etc/init.d/httpd')): isConf = get.path.find('nginx') if isConf == -1: isConf = get.path.find('apache') @@ -2341,7 +2304,7 @@ session.save_handler = files'''.format(path, sess_path, sess_path) except: pass - if get.encoding == 'ascii': + if get.encoding == 'ascii' or get.encoding == 'ansi': get.encoding = 'utf-8' self.save_history(get.path) try: @@ -2466,6 +2429,14 @@ session.save_handler = files'''.format(path, sess_path, sess_path) # 读取指定历史副本 def read_history(self, args): + if not hasattr(args, "filename"): + return public.return_message(-1, 0, public.lang("The parameter filename is missing")) + + if not hasattr(args, "history"): + return public.return_message(-1, 0, public.lang("Missing parameter history")) + + if not os.path.exists(args.filename): + return public.return_message(-1, 0, public.lang('The file does not exist!')) save_path = ('/www/backup/file_history/' + args.filename).replace('//', '/') args.path = save_path + '/' + args.history @@ -2479,7 +2450,15 @@ session.save_handler = files'''.format(path, sess_path, sess_path) if not os.path.exists(args.path): return public.return_message(-1, 0, public.lang("The specified historical copy does not exist!")) import shutil - shutil.copyfile(args.path, args.filename) + if not os.path.exists(args.filename): + return public.return_message(-1, 0, public.lang("The specified file does not exist!")) + try: + shutil.copyfile(args.path, args.filename) + except PermissionError as e: + if e.errno == 13: + return public.return_message(-1, 0, public.lang("Not having enough permissions to manipulate files or directories!")) + except: + return public.return_message(-1, 0, public.lang("Restore historical copy failed!")) return self.GetFileBody(args) # 自动保存配置 @@ -2654,6 +2633,8 @@ session.save_handler = files'''.format(path, sess_path, sess_path) # 取目录大小 def GetDirSize(self, get): + if not hasattr(get, "path"): + return public.return_message(-1, 0, public.lang("Parameters are missing! path")) if sys.version_info[0] == 2: get.path = get.path.encode('utf-8') return public.to_size(public.get_path_size(get.path)) @@ -2664,13 +2645,19 @@ session.save_handler = files'''.format(path, sess_path, sess_path) get.path = get.path.encode('utf-8') data = {} data['path'] = get.path - data['size'] = public.get_path_size(get.path) + + if os.path.exists(get.path): + size = public.get_path_size(get.path) + else: + size = 0 + data['size'] = size return data def CloseLogs(self, get): get.path = public.GetConfigValue('root_path') public.ExecShell('rm -f ' + public.GetConfigValue('logs_path') + '/*') public.ExecShell('rm -rf ' + public.GetConfigValue('logs_path') + '/history_backups/*') + public.ExecShell('rm -rf ' + public.GetConfigValue('logs_path') + '/request/*') public.ExecShell('rm -f ' + public.GetConfigValue('logs_path') + '/pm2/*.log') if public.get_webserver() == 'nginx': public.ExecShell( @@ -2691,6 +2678,7 @@ session.save_handler = files'''.format(path, sess_path, sess_path) return public.return_message(0, 0, public.lang("Successfully marked, please click Paste All button in the target directory!")) elif get.type == '3': for key in json.loads(get.data): + key = html.unescape(key) try: if sys.version_info[0] == 2: key = key.encode('utf-8') @@ -2716,12 +2704,15 @@ session.save_handler = files'''.format(path, sess_path, sess_path) i = 0 args = public.dict_obj() for key in get.data: + key = html.unescape(key) try: if sys.version_info[0] == 2: key = key.encode('utf-8') filename = path + '/' + key get.path = filename if not os.path.exists(filename): + # 软连接目标文件丢失会检测不到 + os.remove(filename) continue i += 1 public.writeSpeed(key, i, l) @@ -2731,8 +2722,16 @@ session.save_handler = files'''.format(path, sess_path, sess_path) public.ExecShell("chattr -R -i " + filename) if isRecyle: self.Mv_Recycle_bin(get) + elif os.path.islink(filename): + os.remove(filename) else: shutil.rmtree(filename) + elif os.path.islink(filename): + public.ExecShell('chattr -i ' + filename) + if isRecyle: + self.Mv_Recycle_bin(get) + else: + os.remove(filename) else: if key == '.user.ini': if l > 1: @@ -2884,6 +2883,7 @@ session.save_handler = files'''.format(path, sess_path, sess_path) def DownloadFile(self, get): import panelTask task_obj = panelTask.bt_task() + get.filename = public.xsssec2(get.filename) task_obj.create_task(public.get_msg_gettext('Download file'), 1, get.url, get.path + '/' + get.filename) # if sys.version_info[0] == 2: get.path = get.path.encode('utf-8'); # import db,time @@ -2923,6 +2923,7 @@ session.save_handler = files'''.format(path, sess_path, sess_path) id = get.id else: id = None + sql.table('tasks').add('id,name,type,status,addtime,execstr', (None, 'Install [' + get.name + '-' + get.version + ']', 'execshell', '0', @@ -3261,9 +3262,11 @@ cd %s if not 'p' in get: get.p = 1 + if not 'limit' in get: + get.limit = 12 if not 'collback' in get: get.collback = '' - data = public.get_page(count, int(get.p), 12, get.collback) + data = public.get_page(count, int(get.p), get.limit, get.collback) data['data'] = public.M(my_table).order('id desc').field( 'id,filename,token,expire,ps,total,password,addtime').limit(data['shift'] + ',' + data['row']).select() return public.return_message(0, 0, data) @@ -3339,14 +3342,17 @@ cd %s "filename": get.filename, # 文件名 "token": public.GetRandomString(12), # 12位随机密钥,用于URL "expire": mtime + (int(get.expire) * 3600), # 过期时间 - "ps": get.ps, # 备注 + "ps": "ps:{}".format(get.ps), # 备注 "total": 0, # 下载计数 "password": str(get.password), # 提取密码 "addtime": mtime # 添加时间 } exts = os.path.basename(get.filename).split('.') if len(exts) > 1: - pdata['token'] += "." + exts[-1] + if str(get.filename).lower().endswith(".tar.gz"): + pdata['token'] += ".tar.gz" + else: + pdata['token'] += "." + exts[-1] if len(pdata['password']) < 4 and len(pdata['password']) > 0: return public.return_message(-1, 0, public.lang(" Please do not enter the following special characters [ ~ ` / = ]")) if not re.match(r'^\w+$', pdata['password']) and pdata['password']: @@ -3361,7 +3367,10 @@ cd %s else: id = public.M(my_table).insert(pdata) pdata['id'] = id - + # 添加关键数据统计 + public.set_module_logs('linux_down', 'create_download_url', 1) + pdata["is_file"] = os.path.isfile(get.filename) + pdata['expire'] = public.format_date(times=pdata['expire']) return public.return_message(0, 0, pdata) # 取PHP-CLI执行命令 @@ -3387,15 +3396,13 @@ cd %s if not php_v: return '' # 处理PHP-CLI-INI配置文件 php_ini = '/www/server/panel/tmp/composer_php_cli_' + php_v + '.ini' - if not os.path.exists(php_ini): - # 如果不存在,则从PHP安装目录下复制一份 - src_php_ini = php_path + php_v + '/etc/php.ini' - import shutil - shutil.copy(src_php_ini, php_ini) - # 解除所有禁用函数 - php_ini_body = public.readFile(php_ini) - php_ini_body = re.sub(r"disable_functions\s*=.*", "disable_functions = ", php_ini_body) - public.writeFile(php_ini, php_ini_body) + src_php_ini = php_path + php_v + '/etc/php.ini' + import shutil + shutil.copy(src_php_ini, php_ini) + # 解除所有禁用函数 + php_ini_body = public.readFile(php_ini) + php_ini_body = re.sub(r"disable_functions\s*=.*", "disable_functions = ", php_ini_body) + public.writeFile(php_ini, php_ini_body) return php_path + php_v + '/bin/php -c ' + php_ini # 执行git @@ -3523,6 +3530,9 @@ cd %s if not os.path.exists(get.path + '/composer.json'): data['message']['comp_json'] = public.lang( '[Composer.json] configuration file is not found in the specified directory!') + data['message']['file_path'] = "" + else: + data['message']['file_path'] = get.path+"/composer.json" if os.path.exists(get.path + '/composer.lock'): data['message']['comp_lock'] = public.lang( '[Composer.lock] file exists in the specified directory, please delete it before executing') @@ -4370,30 +4380,3 @@ CREATE TABLE index_tb( }) - # 上传前批量检查文件是否存在 - def upload_files_exists(self, args): - ''' - @name 上传前批量检查文件是否存在 - @param files 文件列表,多个用\n分隔 - @return dict - ''' - check_files = [] - if hasattr(args, 'files'): - check_files = args.files.split('\n') - file_list = [] - for filename in check_files: - try: - if not os.path.exists(filename): - file_list.append({'filename': filename, 'exists': False, 'size': 0, 'mtime': 0, 'isfile': False}) - continue - _stat = os.stat(filename) - file_list.append({ - 'filename': filename, - 'exists': True, - 'size': _stat.st_size, - 'mtime': int(_stat.st_mtime), - 'isfile': os.path.isfile(filename) - }) - except: - file_list.append({'filename': filename, 'exists': False, 'size': 0, 'mtime': 0, 'isfile': False}) - return public.return_message(0, 0, file_list) diff --git a/class_v2/firewallModelV2/comModel.py b/class_v2/firewallModelV2/comModel.py index 9cb69403..3bfe8156 100644 --- a/class_v2/firewallModelV2/comModel.py +++ b/class_v2/firewallModelV2/comModel.py @@ -800,7 +800,7 @@ class main(Base): args1.address = address result = self.more_prot_rule(args1) if not result['status']: - return public.fail_v2(result['msg']) + return public.fail_v2(result.get("msg", "Failed, please check and try again")) elif get.address != "all" and "\n" in get.address: args2 = public.to_dict_obj(deepcopy(get.get_items())) address_list = get.address.split("\n") @@ -808,11 +808,11 @@ class main(Base): args2.address = address result = self.more_prot_rule(args2) if not result['status']: - return public.fail_v2(result['msg']) + return public.fail_v2(result.get("msg", "Failed, please check and try again")) else: result = self.more_prot_rule(get) if not result['status']: - return public.fail_v2(result['msg']) + return public.fail_v2(result.get("msg", "Failed, please check and try again")) if self._isFirewalld and get.reload == "1": self.firewall.reload() diff --git a/class_v2/git_tools.py b/class_v2/git_tools.py new file mode 100644 index 00000000..7562665a --- /dev/null +++ b/class_v2/git_tools.py @@ -0,0 +1,996 @@ +QRASP55VO/1DQ98p1csw9A== +I8MGJUwtjfcKc5w4E0SmjHtl5KRuv0WI7NyW3SlEwCrZmcmaREiC99KS4CzwW5Su330khbLdQaeuAWr4x/NqQCTep2zIARzdXiKXPh1Fe+M= +dBZyCsfrbwqvA0sbdGrIGg== +I8MGJUwtjfcKc5w4E0SmjHtl5KRuv0WI7NyW3SlEwCrZmcmaREiC99KS4CzwW5Su330khbLdQaeuAWr4x/NqQCTep2zIARzdXiKXPh1Fe+M= +n+0ptngHIPIjFuMNQ53bfoMbif5SSuhU+ED0z8LQ0uRP+8tAmQ/sx0zSKtQtV+DZAsSdFCQjtILVBd7FvDmtwc6THtaa0pvFowRX+Q+yEWI= +I8MGJUwtjfcKc5w4E0SmjHtl5KRuv0WI7NyW3SlEwCrZmcmaREiC99KS4CzwW5Su330khbLdQaeuAWr4x/NqQCTep2zIARzdXiKXPh1Fe+M= +b/RfwRit/grmlk8PYenztXeHoDAnb7cbbCMOquJ1d7Qzs+fOvj6Rs81ybh3k1jdi +I8MGJUwtjfcKc5w4E0SmjHtl5KRuv0WI7NyW3SlEwCrZmcmaREiC99KS4CzwW5Su330khbLdQaeuAWr4x/NqQCTep2zIARzdXiKXPh1Fe+M= +1u+XjG/2+GSQRv6EzCaWRQ== +I8MGJUwtjfcKc5w4E0SmjHwLsErBQ84ek459TV1n0Iir/P4mdpfwDI34s6+8CBN0 +oJmRip7wPjMZoK6DWTZ5QhLdKXx15rHOjo4rZMWBQ9I= +I8MGJUwtjfcKc5w4E0SmjHwLsErBQ84ek459TV1n0Iir/P4mdpfwDI34s6+8CBN0 +iOUsBGgOHEqzdAdQgfAp4hCVMJQVjPNjfYh3Thqf4L0= +xR6fRUqpQVYbqROwFmCXIfD94AH3xLqlvi5n8KFgDh0= +rpy88ff5JnVuJqXSNlYf+CQ4VKHExseR2LosMAdYEeHGNm80vDZH+2U6FEAnuapk +1u+XjG/2+GSQRv6EzCaWRQ== +8NNIDGOF0re2kgXSaFy5kpbAmOuUvjKYAxYWqmNd20k= +/c7jKMTBTCBZ+JWfu0bexkfTXepOoUvpKP91ASrZEK4+ACLH4M2zsj9WFukxOgwk +fLZM/RGmP+s9+r2xACLRrb8BDhI6fHBf6o1rqaMUV0BITgsGen1zTw5nJlzfHM9z +1u+XjG/2+GSQRv6EzCaWRQ== +9GxZpCRwMRDPejWR2Vvf+LKn0tNtFKp8Eh2tnr4Da9U= +4pAE6YEWm35svDGlDOnR1psIa+mzljJyC/fZ6F8qQBJhffSqzvIRP4w0imfZPjESN76bwCLdhOVa+CWrcTdg4Lp+jxHuHHbO5KOscOGiC2g= +D+NJdw0B5Rx509qysWAVrzhEBazGKVY+E88tiDkVOhLdam5xNTjlzDRFbidgFI3POcaXc5XX75PK8RWmRsHue3FFsqhjlGgUgIR5ZT9b4IE= +yqw5QtaWyzGezg4Vccp78hNuN8c4A4f2x6ZMk9M/JzWnscQJA6r9+6aeeKV8xz1cLNB998rd1zdMpqgZuxgdeXg+sHgiHFWRCZvoLOLj9AbSEJF+4R8L6Uosu9RtkAfoSoxe8ZiGft8K7hZu7PpIkQ== +wgR07xfoapmx6eEnFHXXYrIeMJaP3Lg2M3zaGXD/L9jMR9SdCGXoRS1F21qr5fOVNlgHsX0gt4mSOUDRyKmUMg== +NqhMbY8+EQI8zhTG6Zh2I8nMS5vRNHUMfJAXdyssu1hox3wWClqERYe6a3luBz4g1xBBZxQroZnqrc2c4DwuiMVOTh//qm/oXnR8qGkOQGc= +JPjq3Houak+XBY2X3mfPih2FHmONgqzX9O00TZ8MFR5faucpdT6vwZaHhDKa5ftmPftegsV3FYF2FuOirK6/+p8L6Z8IU64lAu4F9r5ak2g= +1u+XjG/2+GSQRv6EzCaWRQ== +u7MbwlTBVqkMsjxHUNDh1S3AtVDKKgYYY0SNjdvsf2U= +TDYxsJRe7KQ7HxQ3mZJhBr6hbspFmrEvuwCAFDZ5Zfut6f7Q3UVX8VDL5JTAfE7v +faP3BDqznvpMXEZXXpQPikUOn26c5/0k/2jg6NNqeBnyebY4bjSJABOeZgE2RsTRAaYlgk5zAHkqMSADWGFlnQ== +8kRE670xnzCrfejdlxoFHVAIUHxvsJ8YS3JsvvqqcjHyGQAamAqLW1SeOvmjOclW +wElA3opDQ52PWGn7tf+g0joOzpv3EgzB6OpFtvv08c0= +l2FJPs4YkAmmok1ulDRuSA== +wElA3opDQ52PWGn7tf+g0qxJ0gFPPXVedadtBu5G/feuzhOMpOpGm6PR+sjrI3c/ +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz4508AjLEo5hLQ8uuK/gOvz6NQzBi+hvEuJ57pOu13u9A== +1u+XjG/2+GSQRv6EzCaWRQ== +UHareEuCnf4j7DI89P3gp6EfM86/mJ28h6DWNjj0WMs= +Eg9bMGC46p86xWzMkaze6actMoCRwmzw5nK3AnhFP5ezH9B8znPqhD6wSe01FQwl +MzOj4ZiBOJDNVP8vi/lFQGRx+qAWE2Oe5D+dXLMo7hM= +L0eUthVnpkGsmKFAX6d+uMfCKxbeZE5XF/T3qfhxdVg= +1u+XjG/2+GSQRv6EzCaWRQ== +eLcpLeV/+9uVlQTwkhqIj0nRm5Ki5hLhTMVpzQvu144rT6aS09+2X/WWPn7AuNAM +FdhmMQpbnOGRip2E1zcOFcLqn9vbv1HQ8B47J+w2b+lCJ2pma+94ZrGiMVKePTuJ63eYOsVsjTq0Vt/92Y82dw== +xWoGNWjKGPfI4gq8aHoTfB6zdszK77yu6Q9ACIofe6J8n/a34ajapvg1sr0+GDYaXu7riVEr/jRrttSEtllAUA== +l2FJPs4YkAmmok1ulDRuSA== +lOh2GtzHjjMM8E9J40AuOWo7iSH0P5z8Y9QjLJCJBGhum2DLkEnOxwcYOVYRz3JPjfGd5tC21oWrXMLTBAp7cQ== +1u+XjG/2+GSQRv6EzCaWRQ== +84Vymj90Wzn5yYuvz1pUuO1HSlxhpFv8TtH2VReQ67uWpuywjrrWJYpC12b+nmap +VmVrGQo2zRokW/ZuO9bN6+8Z7TpabL3QP28zOzKbdjaiqg7JJOZFdbxd4YOkF1cAoULr3rzMKX52yJPRorzBdA== +1u+XjG/2+GSQRv6EzCaWRQ== +uTEK8Ng11d3ix2pA+DD/acZ/3rYewNnA4dPmO9dEdfiNSQDvdBsKD/QUl81a3Rp7ReuG7iSIVq8oo65WMXhOcA== +L0eUthVnpkGsmKFAX6d+uKdLEGlEXm+o7O9zcmHr26U= +1u+XjG/2+GSQRv6EzCaWRQ== +guSZID0bFQuDFoWO2uxAJoOpitq6s6c9ladjgxAHqGE= +1u+XjG/2+GSQRv6EzCaWRQ== +xcYQwihF702yPR6+KSyipyNnBjAhS+kP5DRSsoyTPhru2ipd2roKX/GPPQGjWn0BsGEmK8NU8aYvZQ1xIZJb6w== +TC/LaX35Eb0V/GmW3Zr2Um/1QlEUd0yYyQJrg+e5RSaXiiJDMApKOhbVVpyQVYWl +XgiGplPvWDL6t4jyCm4YBY7i6uzCG7OZYVequC75mw4QuONF85y5Zxj48FXc4EEv +wgR07xfoapmx6eEnFHXXYrIeMJaP3Lg2M3zaGXD/L9jYtQHv5AZtA7mr2kHFFaMuPy799ApSbuS0lXGmwF8Xet9wG6SuaqC1X3uQGpFwgtPBB/ljfMcqA0cQnJSlixSB +o6QhOIN2Sc4SHELnst17ucZEhQfEUee5E6C4gEbgFRPwXR5ACL7cDkkMmWotq7RS +VmVrGQo2zRokW/ZuO9bN60/iMbR1rXyqm4PITi7orT1gh/nxCyr5M3wWglu74v7w +VmVrGQo2zRokW/ZuO9bN6wU8d3vkEdVuRud81DHYsSWVkvNieq89/NDSUau4ggvP +VmVrGQo2zRokW/ZuO9bN6/g6VB/QkUgFptEkZ7LiCkTa+jksbv/+BbXSsC1VrEBC +VmVrGQo2zRokW/ZuO9bN61Q2b2sPJ7CoJKYjQEYfsW8= +WkdOTmNzZ21sEcWP1kpcHFSxW7HK4W35+6ILWolbUq8= +1u+XjG/2+GSQRv6EzCaWRQ== +PWKGbNEPxxxpGpe8THO246H03K9bJE8lL2k+ZelvBjLdQeYhoZj03Y10rUtVe8mItUESEcQyw2kiKoLPniATlw== +VmVrGQo2zRokW/ZuO9bN6zM/X2hHBCd+n2OGnnATmrSuY4P/AlnqUWfNJ3Nv+yymIkZ7WmZFKCQ6w9rdD77KLtfyFMDojD0Bq79gGS5gSBPV1LAaDychky2nf1YNIUxXH5r/LdASWlqIGtbVKtmVG73YLoEAmWd8rlbfFoUoaf6wtAk9k/IX/I5oieEWw+ox +1u+XjG/2+GSQRv6EzCaWRQ== +rWUQK5drq2FAykvoqvdEF4wFqOp0LdDHN8eBleGuhY0lzJug25R2j7oT+KUt/pBv +mxmz6Osv8lAy1dg5a7TFrPe55ILfdt2u9UZ5Lxrz8eHcwtVp/B9+qN9CjexZ/WJy +mxmz6Osv8lAy1dg5a7TFrCA3R8tlwb/rfHP87jV8EpMr/1rA6zQyV+CiYGdE+Ykw +1u+XjG/2+GSQRv6EzCaWRQ== +QyjJSVXubWkoQ48A1gWIPPdyh/DEi4QE/COj7xh9NcQuojDAQeL/m1XkZtSEYlJIuej8fQ6J4oiHU+gWBYZ1aw== +1u+XjG/2+GSQRv6EzCaWRQ== +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz5vRQyWGEDn4NV8LxklpdLv9cLW3fAXy7UTkQzcWnLVeQ== +1u+XjG/2+GSQRv6EzCaWRQ== +S7guLg+WCNyNOGZhJKU2JabrwHsALpCYa9FyH1eJU9I= +IJcTCnKYyLf9T0jIWvylWyCD5j14OoAWyL2+EOVmXDY26fEfDl6rZd0oK0puls+n +ewMPic4oY8KA6fNbX11t2ac6pvQBdZ/brZ6zxY+WDEY= +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN616YEs6o8UaynlYH0LZEQXwGk42+paXandqiU60ocVvQ +VmVrGQo2zRokW/ZuO9bN6wt9qmWtoSh0TDf5b9XOHpQgd9jWW0IrUKd0XbPZ1qIf +VmVrGQo2zRokW/ZuO9bN62qsLYoE0B2swxXUP1htOTbYbKW1SsF/78LCgzjKnBWY +VmVrGQo2zRokW/ZuO9bN69iUoiqcsLojhHElowtLuQWnOtMtCVR3WmpzSYMYV60F +VmVrGQo2zRokW/ZuO9bN610bna5zGU36RkFB2sl64rjBe3zXl36rfsu0ajMXyxEL +VmVrGQo2zRokW/ZuO9bN618DMkhtBHHAMQY+Oc+x0YAU0ClJLeVowTaYJU62IOZhCcrm9KCHCxKCsEbb6sPHng== +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +IXE5utwGYOdlZaZ+BFyYQXdLTEIBi1EjVqe7j+93p4DYiF7iDqn0jAt3zWf3C7Uf +1u+XjG/2+GSQRv6EzCaWRQ== +uTEK8Ng11d3ix2pA+DD/aS3JYobpZC++Nhk5gXo8bS88Q9DBzPxuB3mGTUOF6Q9P +mG4WxLOsQ3e8HrREEjwO6/prVuHQ14Fb/+kDWNK+sTg= +1V2v8QerKOmubvSxgB4eTBBWyyzrUt4vqEu0h4KlXKBaBDt1ASOk4IZHAZJTo/G+ +VmVrGQo2zRokW/ZuO9bN6zM/X2hHBCd+n2OGnnATmrSuY4P/AlnqUWfNJ3Nv+yym+23XOt/VtAFjI4+uaZ37LTnxH/YKBV9PbzGl6ZGF90I1ykIJarxUh1Ktb8AHVeiMK723OpBKFfaQ34Dli5uYa45gA0xsNnwjKY98Qk1ntP2N0dYmqD6mfoVbqqw+4DXg +1u+XjG/2+GSQRv6EzCaWRQ== +pL0fy2Pm7iZLBV6YOaFzdhLBU0mHAGB16ZHehXKCYscgX6kjfGfSfV1RKDCqWH8I +TQRmC0vOvJ1P+lfyS3Os4WeTpEHuz+qF/TUNXz4mLKcyLxiQn5+w+7Er3rhIGOJ2aiPSN+vHhgP7ZYqrONbtlypPcimIJlhxu3QXQszd/j7/zkTD2p0QjQHFKoJsxLYv +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqfB+ZOQdqyS9a1Ya5tRojZokOrhH78ARx3bKCaQOJvxXJVuoz4lIuAlj7T1hxw0USdJPYudYilxt0ONpTvFDaVdZlreQUj2E+Q4S4UFrXsCA= +1u+XjG/2+GSQRv6EzCaWRQ== +yBZOkXnzauCHBf6JZDcSuesMG3qp0WJYMNv/m0FbReA= +pHO5j+XfjoQBHQFq+CDhtlJrzVv/VhwJWvprL3UIHh3xjts5FTMp5XB1LhKP3AdZVIv8UTtJ35QQaHRx2stCvQ== +wgR07xfoapmx6eEnFHXXYp8QPW/Rny7GxLHpvcjeLGzUbpHDP8C0uOxX52WcP87r +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqepc3SomvfxrCVWQUgLORNWCZ0v47Qtmkxkh7EhNQxZGHN6NngtI3f/+ZwrZ6vJ7Sh1JbT+vnoOlMRJ4hYBNEQNzKmqgQV/LSDlm+xTc52is= +nmagz3tQsynDwT78oLFy2Tf60e2f5vlA0LASCc1HcP0hwdh3dNPIIbUHM5igKRR8 +HsAWvMYMSx/J5RClq6sSm9hncU/as4rTT+HHv3ppn0XHZJxCcW52lLBcm3c3FsL9mowV6LmCngr3h+CDjHFziw== +ACEEdgL/kNbx7RaZcSRxZHSi6If2UXntKbXM0TCxrJc= +VmVrGQo2zRokW/ZuO9bN67WcUz1a8Tc39Xal7bCcX2PRDHFsWbHhFNwU08DJiUxaNFFOkMMG7ocspO2/oTgAvuZvVIz1UzG2KPLySZUEaM4= +VmVrGQo2zRokW/ZuO9bN6y1I47Lsjes5Xkzm/KZ2HUj6vOCoGShzUiscvkZRGEAKQJ5ExlE2X8qSRFTlvUTm6ru1oq2iYf4jEcr7m+4AI7ilVh+z1YAAt9jfguzJqZ3Tqmb8N6IvoGM1EA22ONp9VA== +l2FJPs4YkAmmok1ulDRuSA== +ACEEdgL/kNbx7RaZcSRxZHSi6If2UXntKbXM0TCxrJc= +VmVrGQo2zRokW/ZuO9bN68Oy81qTE9pAfhzOXBatzn4ekDhTjO/Jwcao1uxnanJV+UGxEEGQBrJ6hACpN2GZ0Q== +VmVrGQo2zRokW/ZuO9bN6+TwWBKhesZii2AkvRjLbNQgRJWEVWNzxZdcmw8PHjz1 +VmVrGQo2zRokW/ZuO9bN6xF1SJaAm3VttartJvhccJkmwYMI5okeZ9MvESXeh9CQ +VmVrGQo2zRokW/ZuO9bN62HWtxZ2I/oCwtyWP0WSTIg= +VmVrGQo2zRokW/ZuO9bN62A//fHAg9nR/VIcVeJeqinMEiczUv1y1Vi9eIW5VEhHaWle7RotO7u37VnaUTHzZw== +VmVrGQo2zRokW/ZuO9bN62Ecc1RBTEPwfkDZFC/GmOzVZz7FXUIrAtF2qgOJomkK +VmVrGQo2zRokW/ZuO9bN63uJE/tpFbjT3DEuNY62HULv+WvZ8W2XdKmnRUn84dLfZJNYPrVVdTUK1AEc9K3LK4gcLxngHKfIR0IpUzht0GXRkgOpsUg47XsR1PaFnpl2WnvuPYF7/myurG0UTRY6wab17rTLqDc4VE8vqgOMkyU= +1u+XjG/2+GSQRv6EzCaWRQ== +VmVrGQo2zRokW/ZuO9bN63zFN5O/w1krXKBn8bzERXc= +VmVrGQo2zRokW/ZuO9bN68LL+bM5Ds+VE/RXUfzvQjqG0q3buQA/f1vsOC/WuPwR +VmVrGQo2zRokW/ZuO9bN63jU+XEf5ff8P7z9TBBfViEw6s6m3gBB4kq5JlqaRH9kQDgZTbqGhq74fgcN4MpPFA== +VmVrGQo2zRokW/ZuO9bN67C8R2BqtiOVDd4j9LKAl9jIrhfGKuHG1dk904wB14ZZzWDpDviljNdAs0N4a7EEbK2AhI0V5JfS7i00PhhVr+w= +VmVrGQo2zRokW/ZuO9bN6+su+vQiAF8ZWhuqfspcX8Q4CvmbkaZI7cBBxsRTmPSjFpGIY0W+iUnJBT3gqvxOaw== +VmVrGQo2zRokW/ZuO9bN6/xDysL+wsJSb13AswERz4dbP32z4nnYwOYj0CDjnhOh +VmVrGQo2zRokW/ZuO9bN6y1I47Lsjes5Xkzm/KZ2HUj6vOCoGShzUiscvkZRGEAKQJ5ExlE2X8qSRFTlvUTm6kr+0k2vuXpOVxmVsXoyApGY7gfV4cnxhnhXFiBVtUcBej3/EUbMWurDSb2nDE8oEQ== +1u+XjG/2+GSQRv6EzCaWRQ== +VmVrGQo2zRokW/ZuO9bN63zFN5O/w1krXKBn8bzERXc= +VmVrGQo2zRokW/ZuO9bN684ehqpwxtlh5PoulYJQlzw2PX9tyqIxaJvsQekqfcMZQ+OnO99WQq2ZtUo3vFpxag== +VmVrGQo2zRokW/ZuO9bN69Sdn21/aLrj5fnclUk1hSlIJxBLw2x4JXq8BRwOtwBe +VmVrGQo2zRokW/ZuO9bN6yFz2TASbNnnYADFFhy8h9QiiQZ/IrLrLqeECE2xmHTq +VmVrGQo2zRokW/ZuO9bN6y9gJpeQzSpY2tOMi1/cCos59OjsEK1Whmo/JhUdncWB42O11vUVTrWMzPTeOW5r9RK2WCzTzq97TaSarWPxDAI= +VmVrGQo2zRokW/ZuO9bN65IXwezOBysQYImHrruOu5hQGjCr0q4rcPJan0zqO8hXAXDmeC8QItaHR86w1vUA/g== +VmVrGQo2zRokW/ZuO9bN6/xDysL+wsJSb13AswERz4dbP32z4nnYwOYj0CDjnhOh +VmVrGQo2zRokW/ZuO9bN69+TQShIO2wJpIwY13ScEAZzw+rVZVwJeeSUC6f/10F0T3Rg+YKGGu+a7WB+JyIABw== +VmVrGQo2zRokW/ZuO9bN6+Jo5ivz38i7RP6l8sAH22HVmMqJkMGlqcF96Xu/8yI7zSGdCW6hgSAZrvIROaLEvQ== +VmVrGQo2zRokW/ZuO9bN6y1I47Lsjes5Xkzm/KZ2HUj6vOCoGShzUiscvkZRGEAKQJ5ExlE2X8qSRFTlvUTm6kr+0k2vuXpOVxmVsXoyApFNxOxu4/J29ks8hc4LLfWC1yj1EkfcjxIfxb7BzXX/QL5EhiR0I27fD+a9cg1RP1I= +1u+XjG/2+GSQRv6EzCaWRQ== +b4OJVZe8QyIpjuTpKXDL9A== +n4H1VJDnDMAEjEl/x/jM47ZmsxiyNVrTVR4Dl9B8v0Y= +EFBFgJDcvthaVbYohI7UmjbgDbryepRW+5ziRnvDyKv+ZUv+rfTA3uE/kY80Q+zW +O3CUgrw2GJfB+mDjH5+NdlLfWzGGcVjxsShvfey0MCzJNveaJootUcZMvsCBsekd +VmVrGQo2zRokW/ZuO9bN6zM/X2hHBCd+n2OGnnATmrSuY4P/AlnqUWfNJ3Nv+yym+23XOt/VtAFjI4+uaZ37LaB5rRm5EX66q73htuB41qv/eddN7PQ2NhhKOqPEbTC/2Umuf0lVEh5txUWbl5nezMmeb8jIonXvv+BoJW2+Yv0HISjIF5xZ3hbKAHQGvgK0 +1u+XjG/2+GSQRv6EzCaWRQ== +po4gDbkGtZGvsVkqlQC6ZtzW2KGUWUfbRJtGZkgFsfI= +bjpI32qzKze0nfrRYYQXm52fISpL2LoprdZaLiVsZflnfTWfR7poMOL9/KmAbMqN +f6i+lsi35nURDz6EJdx9zHkEwXP+oTAogJyWuMcbY+ZZ6yMs+3M1VW68XyQtgqTEszR2+utJag/6ZEkEyXREIDjG1OPGbAYVC8u9gu898hMVAxDbCuY0DTUWKAe+VUFpfecUyxUWezW5mIRnu5Cc2seM8cvptglcz1qt7cMsAJQJn64dDiaM3LEsFvITk8cZuPCPDovOlPHiBqQgsW3FCQ== +1u+XjG/2+GSQRv6EzCaWRQ== +yx4jtgR9zogTFauTn1AZ83+Im1UVzMyIsn3AZxAdE1A= +XrDYKvoK/BzpXJ6MTPsBnj1aMxMC3QxgHZeYsjQLKZU= +VmVrGQo2zRokW/ZuO9bN6wPwfuk6lCbrKvoof1idWOZrzEIQ9nDF6PvD25sgKTVlgd/2xUONQ3SF1/2z2CAF7kkkhsm8f+OnwnTTLSa7qUk= +VmVrGQo2zRokW/ZuO9bN693+yJc1zYIhfLiOw2BNXtkaZyITDiPVibtW+5hmj1xP +VmVrGQo2zRokW/ZuO9bN651fViHBZjT009x4RJVPRTw= +VmVrGQo2zRokW/ZuO9bN65v5KEXr08RBj7XPEWCRteAikNVxyFshY24XTFqzvNGO +1PNpySato8UYteTtqAx/0A== +XrDYKvoK/BzpXJ6MTPsBngSfQy892zv2dLVRGGqAlrYjkvQ8URYR9Yf7UjWfummNoeAfiQ6LBdUxsQcrZNEqJYqtt592w2gdGJdvMCJtJIc= +ltIZHHUgft++nMUXBsBkixDVHTvyg/N1SEZrhaAkSOHttWWTR0KfIbVjm/N02Eph +VmVrGQo2zRokW/ZuO9bN6zM/X2hHBCd+n2OGnnATmrSuY4P/AlnqUWfNJ3Nv+yymIkZ7WmZFKCQ6w9rdD77KLqgQ6aRWX51DBqCCD7S8WogCmoa5BKi23Upmlg8na7VLpK6iYQYasdE4TrHzaY37aK4QrmOchhnmrRTUcQilrLHlxAI4tKoX68ylgD7IAj8L4IUKEcmSpz9bPdIoVaSGfA== +xWoGNWjKGPfI4gq8aHoTfOAhJ9RsP3gx+Kkvlbii3AcFOwm5GZOC0ugkWuFAb1m9S092QPAppuL0hfuEpnEEC+psQ7phZ0BHwIuAFQSfVCY= +J1UGlXkKhKXD36OrXXhN8O09NfoDAnduZvxJfECpea86hKeHbTljbnFWrv15EqBi6ktLnOd80BqnjzMxmX8LNsALedR8xz6mlE04jdkyPW2iKLUe0y2GBZtUl20enT79 +VmVrGQo2zRokW/ZuO9bN63/+88H66P6TYX9U+MJaZneDW2Q0crllAh6+11tfppwy +1u+XjG/2+GSQRv6EzCaWRQ== +f6qFdnNudmV1tQ3gCzLqza8AIAcv2Ge5W9LRV4dCfpM= +e5BuMOd4b1PCrKxUNUXSv+OcwD1rls+LizuAa+jLXIlK2fONKo62fgpGqenVJzy/TfS7oPAvGqZ1tcaFCApNIGog16TXNL+3CEwrI89iYivVNovMk0vyK9i8XFr8wj2c +2EfdZawMIsiz5cxkigbzGmcuR0P9+nkVxvBBOCgHGQ47mW4iPN0aiEmdZv8z+QJ3PJ1Xn3Ar7cJpFyh8wWrD7a14tDYVUm6Ii1nYIvtT31REVP25vql+VVzIytJsGepJPLT7Wyaib50Wj5LVKPxS7w== +Vn/F9tGazMZc2e1bR4ro2tDnCtiZn68qd64P40dudmBwmRacw2JsHGwN3huUCrd2 +Yp2CN00+Kg3MK/CvbmvZdZ75JYqLGf5be7k38OP0/BgzMOqfOsB1uF1HrLUyHu96kxOt0yBQF6GzD+CT953mAMjOpBwGNAe5vVrnzfDAqnM= +uZ4WptKDDVprOsDtb46jIplwuOAYB1Erf/I8DzRHEMc= +Yp2CN00+Kg3MK/CvbmvZdXj6ni3fstL5Hb8bv6m5SPcBUue4WVcfQFItZvRmYGgr/J9z6TFnr3fg7rHVEGsadQ== +JEQphHHb4fhyvivSKkGI0bZpjpfBMuPKclS/+r5ra8o= +mlOjw/YIbKSF9C2u0mt01wM/tt66t3qqQuKxKWIu1AE3+/rq4G9Eol7NRzgOPwxj +Yp2CN00+Kg3MK/CvbmvZdcQUXGMP9+jGtukgv50w/hg= +Yp2CN00+Kg3MK/CvbmvZdZ75JYqLGf5be7k38OP0/BgzMOqfOsB1uF1HrLUyHu96A2GyT/CQdsJNtLRFQFKOGmuLfdu5vcJGNZT6S3ZdpFA= +1u+XjG/2+GSQRv6EzCaWRQ== +nXHLJs+jc9UGwRbqbBpdlv7RIwv7OTNY8ZNgm6Q8rv4= +32pdC9DD05OE2l0oXazDFKNPx6ZKw6mVkHhc9cys9JCYmrBrjpV8MjXMrP5xvSJWV4DCBiE8hUWlrry5GIJHsA== +32pdC9DD05OE2l0oXazDFGCAOv2jQbVvvltdcsVmmxJsbnbYfA/HDWZTG+IPqLAj +1u+XjG/2+GSQRv6EzCaWRQ== +8i88MKADknh6ve+bU8Ezbzk5fjilgrwbCJkZMaCHp427cay1Q0tiNSjEkRZY1N+b +xWoGNWjKGPfI4gq8aHoTfLGwcK6lSi0s7PJ/4qXBduIfw3TrbSUOJov6tReWxobLZ/FtjlES23Uh1Z4EBFUdmoU/So+QQZIVsAFYOpdm81HOZdbEs3A33H0lPCFaBLqjhwFeoSqRWskbTettcHEhSvCIod7uq7SIJ8F4ZZYD3fo= +1u+XjG/2+GSQRv6EzCaWRQ== +nXHLJs+jc9UGwRbqbBpdlsmRlgZVo5dGtkCHRjPf9+Y= +89eRayX3G8tCX3FDU5IcjU6ggiH+2JFjy7LW5i9P26w6rQyi0WZZvmRY8DMLq52Q +VmVrGQo2zRokW/ZuO9bN67XKiXTToYD4Xj8EJf9tU1+G0DDYHo9+c8BkhKhpt52Q +xWoGNWjKGPfI4gq8aHoTfEof00xZubKgl7GPVFGSDVfhBXf9BbIEEvWCvtwAy0lN8oBNpDlNtNlUoK/JRXLM2lGek4qdNc59sXxgSezQSWo= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWp0a+HHASOchzN3A0zmq8U+DuwqV4P2YR8MFSSneVp4cEC1aXMNB87NM0SETaIN5u9XWuQj5k1KKJ4h78rx/+AmFvTY53ogeC0iDc+/7XY1w== +A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ= +0lw70HdtadWjSAJofUF/7koslNVenqveC2HH8WivNZA= +O3CUgrw2GJfB+mDjH5+NdijG6Qf2lxLDJbGEt3y+2qy0izkETBSmieJV7CdfitbP +VmVrGQo2zRokW/ZuO9bN6/iNdDN8IESxwaAnfCvFXySAOZQV7CBkR2Olk+kSSF/b +gC7pmugJ3/w5trYRkDiKMXJOiCkaiyZ1QSYOvdea1+Wt3+TS6ZM8XXrtEZvDD+x7 +O3CUgrw2GJfB+mDjH5+Nds1va4BQoaWAeyYLUYi1O65tDIujwOMkQKjPCBPSc9l4 +VmVrGQo2zRokW/ZuO9bN6+8Z7TpabL3QP28zOzKbdjZPBivb261umNQay+2XehwP3K/NF0yHCqEhpYNwlDRWqQ== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqnwi25PsOOZEeOpBsWKUhtDsUtDjGcE4SS3Pqmfia1oJTR+idmpHiaIv+1zThPH3E +1u+XjG/2+GSQRv6EzCaWRQ== +wQUovUczEM6viPVoMZT3ac+pwc2dznC43L2ZkGfoTYY= +oolpdG10nXHvj9v02g+VY4ZOCoxxOkoh4zgacBi30L6yb811PIxrgp1aa3WYRckn +qWkxaUZo22FfNDJbaPGcys8jvd4QAlZvVCjDBndvHG8= +1fJQT/DUCSC5OJLtjPsdmY++hE/ugC1fzQql/IoUceV125cSJil5cMRT1gv1hffl +1fJQT/DUCSC5OJLtjPsdmW+Jw3+KUhl+648k2S9V3+7lrjtsIdmFC7+nTHxfL5Fu +v3SgWE/qTpfP4OqDj9UXdw== +2D/cvP3WZkjLIqgvyuGbwqEcNrPbvAJiTO4K8WgRfsla0oAwbEgR0maT67wv1sy8TmI+yx49tYGpJINjwFiPUw== +U+s0jpdXmLpuqC6PETcUdvuSpwVmFgdMX56ZNtqBTTB+CCMjg1wgoYo1fCwRM0fWdlO8rSIpQdp35AUJPfB0m3EOC4eV3uUuz3aZP2ckA5s= +CMKtd2m/qJ9i2WN2rqsr51mK35MiAoMtH8/RVBKm1es= +3iLgbOjdwb2NJRX0BUpwUNhg/mYQONszCfoglWYQ2+M= +1u+XjG/2+GSQRv6EzCaWRQ== +rni+90kUgJNfczou48wq7GaJZVzx1cm4CdwQcdx0hXEK2yhwY3az756/TsJP7NlRucnrRhoeGEE4Gf1YJ2Jn9q0ldk7MUOipnp/SvVOT4yR4sOx9UkFr7pwC81AkJhypE8Ib9saGD5prQZrUD82TCA== +Xdkrq12DpWSksDo6+v/cpM51tbARsHDygtn7nxplKFE= +1u+XjG/2+GSQRv6EzCaWRQ== +I3DKkXKcbF5ewQyeMror4JQfuE5gFbP5dLs8UD39VbfFdj/VgWuDxGrHxmwTUAJD +OfZccHc6OH8xUbcsPLWTQafIvjsRX3g23I1OaECRSCpOvE7zodT/nzptUu3iT4PWiw7K2b7rdqNY8t2YaiXpUg== +9pFjNx+sSYPx0qmL7sN2Wosl5W4tSK+7O9TZ+Psd3XTBm/b3TDibJT4sbtxpUIco +OfZccHc6OH8xUbcsPLWTQafIvjsRX3g23I1OaECRSCreYhOZlmqgyinyJ6Vs49Qb +l2FJPs4YkAmmok1ulDRuSA== +L0eUthVnpkGsmKFAX6d+uKdLEGlEXm+o7O9zcmHr26U= +1u+XjG/2+GSQRv6EzCaWRQ== +b4OJVZe8QyIpjuTpKXDL9A== +BF9SSV7XEXvO+l5vwt2DVk4v6NauXPI8r8K8lTH3yoP1EhbnZR6tsQR3OfBAwHRM +hy0P42EdUgeeptYosmZKRHQdvZk6m1MQlsSxg6Y4nfY//lCYfefwMc70jyxDxpFDc8/DWdEg/++AvaoCtr17tA== +wlLHv6kT3Q/RmtMBN4nDAbNvMdMyccCWrzyfLhFE85mqcEBNEwHaxLt/BlkqSFqu +VmVrGQo2zRokW/ZuO9bN6xkXZr0DU+hX7HwOR9kMcL9/2EbRe910KBucpP56mBHU +VmVrGQo2zRokW/ZuO9bN689cjjEQ6kfmV3rGX7EDS9tz5Gk9+PiYWmgMmxYQU3qJPTu+zKbwQqtnQcQXdIIAgA== +VmVrGQo2zRokW/ZuO9bN6wYmHd0xRMqsT1eIbah+gKGKNAiD715CLA3Zmp+FqlsD +VmVrGQo2zRokW/ZuO9bN6zZcpHqbLPCfucCocPyjGlY= +1u+XjG/2+GSQRv6EzCaWRQ== +nXHLJs+jc9UGwRbqbBpdlpD6IsnfM9P5TfLs6M8sMj1Wtii9rhWUCKqrMbr7jA1c +zb0+0xjmdffDC2YRGramVnfktr+pq7TWvSb/dkREtBI= +1V2v8QerKOmubvSxgB4eTNkb8urgbpPpqcTKiR/w23w9rupt7SmZC/8DFSdUu2Vo +VmVrGQo2zRokW/ZuO9bN6yTX0QcCgQy3ICAFWb+ZwXBClxbrwaIcN7M6NbF/Q1gJTKhqL1QwH/aEGT4ATqscOFM7Z/5/sohilWCifYgEDKI= +VmVrGQo2zRokW/ZuO9bN63T+QbO85qmVeCvRB7XCf5hGX/+jweiwRJDegPocoCDQlKl/N7c65UUn5AzVThNohA== +1u+XjG/2+GSQRv6EzCaWRQ== +VmVrGQo2zRokW/ZuO9bN6/p/LMcGxbCGft9sbg0Av2fy0EXCF6kDuqr86JzG8daZawTVewR71iU4oM46md+3qA== +VmVrGQo2zRokW/ZuO9bN65Q0CpCBKS/1rctW7spbTQsEpjDwpcjrKE44J6FsVK5d +VmVrGQo2zRokW/ZuO9bN69WtyiBFrCb8H6S3p8OcbcZZQAavh+ODr+3xqenRZJTC +VmVrGQo2zRokW/ZuO9bN6/lkhz8XFvL8Fl3khNdqqfSO1d9AzyG4rngQNRk26ldE1un7/0qr9kMwsqWnp1QtkQ== +VmVrGQo2zRokW/ZuO9bN66U9Dc7W7xlfxVwHA9sPguicn8hkAiiLb+iit0lB/T3F +VmVrGQo2zRokW/ZuO9bN6/05aqvCWvmctkPn4M7PPpqz4gwY5dLtcbgHWz+2NuDV +A50UO/kAI17YP7MCbTvBkDYvwux2sT03hNoDnVKQvXo= +L0eUthVnpkGsmKFAX6d+uKdLEGlEXm+o7O9zcmHr26U= +1u+XjG/2+GSQRv6EzCaWRQ== +eNjcG3qFLHDPHZkz9AuN4bdxl9RECz/7/PR+KYNeCXeA2ZckcvpD//abXaSxSZqB/s6qihR9RMgwwFMb6jjF3xynjI+1gc6v8oQ/wx6ukK3WPaNm3ZdhLjRa6y79qr7FCX5k9r/Vc5UYfWyvAi9UfQ== +j9SGYf2exabOvn5YdJUvqJR5TzLReP0WD3Z459pyaKk= +rvAGK/kimBbKkyEF0v84Y4TajTvX1d7b67ZRfDmLijOJMWwRIsa21NNgJhKEv0k6 +eNjcG3qFLHDPHZkz9AuN4Y3RvMoHLhAApb//Btx47SyD4xr5UE2Af1tDFd1vAUyn +MY2Dof+4qv0xUJn9hZBr/16tFv6tD2lj/AiJyAzc5r/8XTGDMJO93N7iSfg7w+7t +1u+XjG/2+GSQRv6EzCaWRQ== +3JZa4z0CLHV1VrS/MyG9zk5+pSnpLqQ2hm4XrywiZUYwRDhAsW46HslleFL6j+P4RP+XyHhyTGi4gvMUtKBIOg== +dsJJtxVZEtafSbPhWgJZYLy3WEzb1s+DnI/zC06nwJM1Zkv00ZHXQkt0qe/80zW3 +1u+XjG/2+GSQRv6EzCaWRQ== +Sgq5UjzDFxqKLmpW5b2c3dBSgg1jIGbm1t8a4JKTKKwQlk3pC18xgqc62XrqLHrM +yisP9bnsS89PFbBRJbtYnGv5Z6Xvjv45Ua7PKI9Qnk/f06aGA/3SSzbgVjdOFsJl +cPd0Xz1CDSa8p3M9VeoUO3MwAsv4Vqz5aqdBniN7PWouyXie0LDMBy8ZsjoHJHpP +cPd0Xz1CDSa8p3M9VeoUO5ImE/Yy52vL+VBPwCjvVGiNZto8fTbFCOuJ7SuC4vRz +IJ/w8xUSmqW1yA39pmd9tehN/afU6sA0AAKObqA9Np2gc457gANsquyzm9w8l77r2UNHO458LaEct36awmZPlg== +h4b3KD3fQO4zdua2HIN3JnItG7SGcf2vTIGiJq1CyAw= +jIYtewpcL6elNlf4btqXRw== +1u+XjG/2+GSQRv6EzCaWRQ== +1u+XjG/2+GSQRv6EzCaWRQ== +jqLgr2pCRYMnJO97GIZ3S0A0nyrtJ5qaetedwa0UlOFW268wClyW1z2rl96+Ausq +Op7dMInM34qViT7DuPSGGaaXBtVf2qb4PKK5TnvUa7YY2mmMzBQYacZ/6Y07tWuo +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN616YEs6o8UaynlYH0LZEQXwGk42+paXandqiU60ocVvQ +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +H/MhTmO8bRfoMqZpuPssdzoslvnUtHYmA4lKVUKxEGbQGczUd+LwaHJ/W5hAjMpSJI2nJhbj6X5WukwLIUkF4N+BhO1tLk51HiVRYpuXDZz3ZHcK7nxMfkON5ggv0X6BEEeIfVZFIKam7bjaSANNrw== +ncUn2TP8ZQ4fZMBYk+CUrQfSSPY5BQFPM2gQtDKRi7o= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWBwpo+4fTZav1LCJNMu5TQybYEvqUfOfyr6Qb90Q2rKQ== +1u+XjG/2+GSQRv6EzCaWRQ== ++2nfbLk5D5iq+1VEMwptd8Lea+ifbSQIcivYf9AsWrJqZYz7mxE1zD7wQEXEF1h3MdpVBoX2VsBUChlwEkH34Q== +XjaThuoLoCU77zkaNRPq20mCQRPBkdQ9oZj6p7EHCdY= +TQRmC0vOvJ1P+lfyS3Os4WeTpEHuz+qF/TUNXz4mLKfbQCS8mppeKF1H1YoJ5zHBrfNbq6eTBT/UsP249XcnhXRYjpX+CCBjkNpNagKN/wfNwQxIcPT51lBKCoOswPlEOYs+d66VIdrJlAs6sgpYKA== +wviPW+SHXn5CELvbZpyCzexNkRt7TaKzI2qSSktw1Ws= +1u+XjG/2+GSQRv6EzCaWRQ== +8EDoYyuU1t+OySYhLebWDqYH+uWbbT+9vp7LUatBA6k= +Gc4bx7lRaIrnC4+MqApDnJKwquBDbJnfxxt7w2rjU8OFg4SgB7LKz9Yi1JP46uuC +Wx+8bkPPKedJtjnvOdgs371EKtLn7gAJRVA7RItRhTM= +661hZf7vhUQ+50okfwfTXw== +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz6hPfkxrKXEvAkeqm+3F99xAUKmCh7g85F6qKhGtmzo/w== +1u+XjG/2+GSQRv6EzCaWRQ== +u7MbwlTBVqkMsjxHUNDh1RqKLBnfaVzaIcVQlv2wGzlRprdh45Ub95mYSsUbqPeq +Op7dMInM34qViT7DuPSGGUlUkAIntnQSwTkwrIqwXj7mM2YbN+D5otyYJF+8DfVX +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN616YEs6o8UaynlYH0LZEQXwGk42+paXandqiU60ocVvQ +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +F6sB81JoKkHaj4jvXPj8cqCH3ZCgoPme7Kq7hHY0jn1KDVyNK0A25aZL8gJOSuVN1emN2PsuyT17KBem8+lzIRSQGj1dDsxFbpTr3yiay7cFWXkABqD9xZwXpEwgru7R +1u+XjG/2+GSQRv6EzCaWRQ== +MLQHpKXoETFpqOkOu5m/gAboHW5/eyeNnswSoBJJvcE= +FLMbt5iAjw12yzW85KcCsqtOYHBsnYKHP9oGJWAdR/idkc2xYhRx7jsilsAp2+2GEv1OolLYCtGQH4CrmNOcyVAHITQPXWybaMvvKWsXLgc= +1u+XjG/2+GSQRv6EzCaWRQ== +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz43RHYDMPcdlyPyrGzYs3kc0n2ucrQS/zDv94we5GOs1w== +1u+XjG/2+GSQRv6EzCaWRQ== +2iCmkqROcWHtdpKCBKSgMm+FuSpzxULYKOURnul7I2qHl+jw+ghsjXkjMu5ELbTJ +/nnCGCYwhHppFCBEQhYHYps6sarqxdjz347QgnVCxz/zExp5s9BeBTkTSm0VgGAH +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN616YEs6o8UaynlYH0LZEQXwGk42+paXandqiU60ocVvQ +VmVrGQo2zRokW/ZuO9bN618DMkhtBHHAMQY+Oc+x0YBV4D7uGvN3Tqg3RCc3F4+jYAT7lLE/tg0bU5WLLVK1Cg== +VmVrGQo2zRokW/ZuO9bN64JSldGvo13EAG1kADESiCE5CXbMTaCiZAsNKPpmG5ma +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +AKR+OhMsr76k2SU3CFoUddWPibTbi98EH/ZD+KjqfUHircWtOlWh+o52szssarfMnIo+dCQMtbDEWB57qof2SYWUoIQJva6Pj1wS7tCnrKULdr3jaBA6HgM4XsDkagpm +uTEK8Ng11d3ix2pA+DD/aS59VL6WaJawxL94sTB39KI= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqLGq5JBuZjIZ38HYgA4Ou/LSxsMAqnWKRcmIKawE4Fi3cE5vgH5PB2YHqqGv8Yatp +1u+XjG/2+GSQRv6EzCaWRQ== +HkpWIIscVPpexsx6eTOLEidOiyFexh+1whGsSgEaO2D4ilZLQj2ansWITnzxdvsO8YxnGBXCbKUjdYJwmS7mPp59HECVwk8W7yxAg55ZVzJtPUiSNzz6pFkGNg7POI9py24rI0cNt07DYb4TKCfjYMc8cd+ArgVVIvdZqORVlJc= +qq4yIoPisa0yoUJe+GfvFHJsgTa9O8Y85M6rGzt9NHw= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqX/8JDaO3YMkUn8ksLmNJ7F/GtrNwcxdThcZjMzbrly7lWyQg0PbrwcNdFmJKIu+B +1u+XjG/2+GSQRv6EzCaWRQ== +ZWYLB6giBcfPwbBWTCuUixHpg51+VzNx7hKnXisczHDKJCUojg+0d3qRLiZZ+PRwFyAcJSExTPDCeFb7Ry/K6OUZUzpKMsUggS5fuB3cWsI= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqLGq5JBuZjIZ38HYgA4Ou/CJD8MnV9naKKiUUxQZ75lOShUV9pmnM32mg0OHAUKJQBmPaknbykejf2ynWyrIUAw== +1u+XjG/2+GSQRv6EzCaWRQ== +XdtEyBM3Mm5sMRdUDFrxBxWMJj1je/E1yISUhLuQK8jNXubzKRJg1M2CIvBtup+CAyjxp2rFwxI/Uhs8OrsMIcQDJdnBaEdlnqmIukinAoXwkzSO+QsoM8YV8jbXTzsnXvI4heOgTu6Sq3uoXdhbqA== +IhuisKim47k91RVt8z8qtCWP1w/3eC5+zx+Xp2Tb7+4d9F3zH72QOlZO2KouW4JpimYshoo3vZOwYj3XlADOsA== +1u+XjG/2+GSQRv6EzCaWRQ== +ia8+eC8+w4kAKqFUfldoNFleuIMkfmmQe5GeJOrtP07fH35cCJ0lRt+N4lt+KxXjcUK/ilwNVx9cNfZwpKK4jmKwKJFf1rQhszdMSVvNqUo/oY+f7Csj73lcP+8I9NLZy1v5rUu40a3wPeEkSmZi0w== +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz5hpBsh8hAiHlG1sneppVPpJ7S/sRFE4bp8E7MDoOs3gQxGUOi9h8I9iYIhEg4KFBw= +1u+XjG/2+GSQRv6EzCaWRQ== +n2xTWOlQAnA3rBTz6lITc5+TwdTitv8DQedFjx+sWDNadZAtFsactSySm11KY0p8 +k8gtFPMwmhTd6A+SBcYDoBnaSdZZDm1jHhpFmhXEDmtd4FYMrsnPFzq3QqsVZr2l +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN64VGnz/0BtY4uOFRLsh5ICs4Zw5pqYOyA5g2K/6yYHk9 +VmVrGQo2zRokW/ZuO9bN618DMkhtBHHAMQY+Oc+x0YBV4D7uGvN3Tqg3RCc3F4+jYAT7lLE/tg0bU5WLLVK1Cg== +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +5++GSTypxH+5sPkSDE2GU4ejrQNJGg1r6KDLsx6X8YNSjmAgHJ+CWsLTXuEvlOJUww3PxZqvDcz5s6e8FI1f/WJ3QhQYneS2RBNg9F74l5dmgBLeuueP+wqXBIg0U9j2 +uTEK8Ng11d3ix2pA+DD/acQS2l97zooUzn3H5myHPzA= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqX/8JDaO3YMkUn8ksLmNJ7Is+up9M/WwIK0iw3xdKjly/afcccBYqQh6K+ah+YxHP +1u+XjG/2+GSQRv6EzCaWRQ== +ZWYLB6giBcfPwbBWTCuUixHpg51+VzNx7hKnXisczHA9n+KCLXutiw50unhysFCI +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqLGq5JBuZjIZ38HYgA4Ou/OJM5ia0IMWxhIgRmRRf8K+NY4y0gM17w/C8a1fl50C2 +1u+XjG/2+GSQRv6EzCaWRQ== +IhuisKim47k91RVt8z8qtMLXRtjh8My+bFusm3lUhNNK9+OAswP4N2RTq8nyNr3H+lqC3ROSgIY3w59v0+kDpTwIMoQE8XSw/UD+HQsNNIo= +1u+XjG/2+GSQRv6EzCaWRQ== +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz5hpBsh8hAiHlG1sneppVPpJ7S/sRFE4bp8E7MDoOs3gQxGUOi9h8I9iYIhEg4KFBw= +1u+XjG/2+GSQRv6EzCaWRQ== +zSgw5iwuKBBYvEsMxy1Bdf0JHtDAWqQyP5W/61pdulPARmtVUgBx6wT8uTh5+ZIr +ECIyfgRrrLMx2EAJLxzNiFSw3oxr10FwowsDjA8LeIQ= +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN64VGnz/0BtY4uOFRLsh5ICs4Zw5pqYOyA5g2K/6yYHk9 +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +5++GSTypxH+5sPkSDE2GU4ejrQNJGg1r6KDLsx6X8YNSjmAgHJ+CWsLTXuEvlOJUww3PxZqvDcz5s6e8FI1f/T5jmTcRPRxJDArA6dxUkYM= +uTEK8Ng11d3ix2pA+DD/acQS2l97zooUzn3H5myHPzA= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqX/8JDaO3YMkUn8ksLmNJ7Is+up9M/WwIK0iw3xdKjly/afcccBYqQh6K+ah+YxHP +1u+XjG/2+GSQRv6EzCaWRQ== +XdtEyBM3Mm5sMRdUDFrxB86dC6nX05xleZMnlvO7M6EE10Bt/rfS/r6q0Lfjaeck +WHkOzVx7seuLmxs5Hu+l/iDmKuVKi/pTW+c8evqV+TMVEqGxxzIStmDwxFwASXBI +gC7pmugJ3/w5trYRkDiKMa4wy3wNAyxBC4iwucpU9NHSblxG30+nRRiXYwmugESa +1u+XjG/2+GSQRv6EzCaWRQ== +ia8+eC8+w4kAKqFUfldoNFleuIMkfmmQe5GeJOrtP042TSO5irB56vOWZwfJFQ5TaDkP30qQ7iepTxCbSEz7CLPAXkC5aXr1GWjeCZzWe8dG/UYBO51Y8SxF+bjkVqbB +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz58avbqYsniTxyFVEuATf4Ju/vSRII35oqLqGw06Q+30w== +1u+XjG/2+GSQRv6EzCaWRQ== +Mc+Kq3bHQ6YZDAImTjZaZbv5ZkwNZlzJvpBTyyhAyD4= +cCKGdtIe7qSNBJ/C7EH9qxST+7J/bCjJVNT5dqoFpRcmiB8hJS3VpBUHLs0yryJQ +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN69psrOzmSHfgHQ0m4OkmGSS2sNx3G47P0E2KFJ+7GzGe +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +dG/vjuhnCW6wEnc8IwrWG9ZZEQ8PDo0VZlbJQIMN4ugu5g6ncJ0mpNn4WDQ31TID8uMYihSUq3PHBuUz7T9VZ6NJTaprg8HxGwmvuD5Pdee9cy4uGoviN73c01gPgaiHZtXq3NnBAVrBmMMUT6g0wA== +R6mwUlV6cpv59cm04/ZUpPcngVh4eC+ADO52w9QOrgI= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqK/SC/xF1CSxgFFveqoHoMIUl7jHVs0ihAslxXRbcw8I= +1u+XjG/2+GSQRv6EzCaWRQ== +cT4npJZXK7oYuz572wlKg83PfXSzeV4NI8CX7dj5DdXzLaSf5hAydnFP8hhRnXUk +R6mwUlV6cpv59cm04/ZUpFhEMjAC7CLwAE4lPLUHgJI= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqT7N0wui41INzBNJitlZcSySsquAe2tqxx2XvfTDSFPi5gpHLMkmC0D0LskaGVd7h +1u+XjG/2+GSQRv6EzCaWRQ== +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz7C+vMdHwADTW6VTL/2Mb5i +1u+XjG/2+GSQRv6EzCaWRQ== +kwN/uy+dbQdKnZH0sDnaWz+9MI+CCyRhq+OIc00gFmY= +KozxWDY5XbHOIFnGs8W1/xAUlUZ7SFfSowvWQbkTpx/feO6Y0Y/0bnZ9ew/aK+AC +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN616YEs6o8UaynlYH0LZEQXwGk42+paXandqiU60ocVvQ +VmVrGQo2zRokW/ZuO9bN64VGnz/0BtY4uOFRLsh5ICsetI/LOuQcoB6v34M623l7 +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +aP+mRmZ+hss6a4TaWhfstUVBxrqlfWaqKZJOOEQCk5M= +5++GSTypxH+5sPkSDE2GU6Rh7s109vQ90lPWweoDYnVbgBeL2ajXuJjhfbxYL+iFfj4yZiCLvc9dpytJhK3AtcrBVI6pWFrY3VvR7hFxp1U= +Fc9rS7r7I87l9qmg5I8U+nCNjdYY+/bjYKexgTYOBDimWH+1zQYyetsjnqPnJZYIaNXF+tQg3LrN7mFg4tbgmH+2EHa3a0YDZ6yy0C6Bfpf4kPSgr81JKwK736kJTzvQ +uTEK8Ng11d3ix2pA+DD/aRL+QEgGbgejevlKgCeq+K50LiH9Th0kVBRxXjXFrkiw +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqX/8JDaO3YMkUn8ksLmNJ7Hu1FTXFWntrm62+o7BecA7tqZiHZtkO+2GcRB6iQQJnZYcm/gmh+E+yEueQhzY81YAt6gJNAyO6e0VTqIOI+G0= +1u+XjG/2+GSQRv6EzCaWRQ== +lJgqMWQOcMupuFbxaGf9RosCDJhgn9hICwhDkEZEFcbB2sGkfn6FZTl4nfFp3XbU5NxdPPNPeMahkDr+4vPm1oyzad0KLi5mDcqVvMag+BSRg7OvxdJxtN4tLkTLL7i/ +uTEK8Ng11d3ix2pA+DD/ac3UtcNkoEXZDJ3bB8AwVYE= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqLGq5JBuZjIZ38HYgA4Ou/GVwtWU/V6utmBxCBWUVSIms1tzFfimz+fQ94fKv3HrB +1u+XjG/2+GSQRv6EzCaWRQ== +pL0fy2Pm7iZLBV6YOaFzdtQq8aD04lNCpyOCIYbiJgYy66Ui7jG3ISildZ6SHYI2rY7/WkWb3ABYC8c+eLpHfw== +eVhRU7bkfrticEbBd3VexZS1+IsX6f2ER92+fI6DNPw= +XPgXe6FZ0sLa7wpVbhSogDTf52WM8GsrsiAiJlPKZZTQyMHJS5pue5RQsdbba6yOTFJ5LpC8C5j/CGRxoKnNlw== +0i0amYmV0nmdLf7r+ZauQxRcRJqsFUQlzhEr3HSTtOg9ydGCR2IVZ/ptARc6hNFjrwc27z662of2GDkMttfOXRUWaeleIaFjssa/K7eYVPB1ti+5OMu0EK5jQpUseLWjF4nOzIb0xGVJsoJ7Jm4BWQ== +1u+XjG/2+GSQRv6EzCaWRQ== +/coXaQQs/oP8ny7lR5gCcacom5Mf5CGQ+Uj9IENqpx0BLCXfVeJbJEeYAgr6yBmf +oCQ+R9TVccVZ6EH4ieVaY4YwZlFE9YhsQ2cUwrpOBFs= +1u+XjG/2+GSQRv6EzCaWRQ== +IXE5utwGYOdlZaZ+BFyYQc4dgjiGmT/i+tbiC+vUSCFISjp6l2FoHNGwhhFIdOAy8bDS5mmZTOZt3krWjCxfTA== +QEAlLAZyDf/2LU2ljSLUvPPojl0kQmqnqPV5duN+2UxXFOEg9f5QVesItlPLeYa8VM63CwikTJmTLTA+SggvGVtRqi9AsRpm/78KPESCD9U= +h9U6jl4cZ4C22C1wpKu8vTltB0HwFwynaKIvMpoAWVSrKpnxFm2hUF3jpvFfxT9x7gBtBBbBT8DyJysLaAH1svAnHcOA+cx7GbtTVL6eo3BThxUIJ1xUt+mfJJ7SxY0SgT2B09vYnoT8GqkvPXLPXmhNrdhX4jRdWAtAgThFR03BDVZZGfxy0yUjwak62wyakedySHlvoI6+kX2WguH9QQ== +1u+XjG/2+GSQRv6EzCaWRQ== +41246uGOr2u5+uVxu5nu7V6VJ/VYWZwJRdCs3cASYptI84Z+KI4NmPYIDPLjkvTSQtKqmVIeriSJsTQ5+qkWTzS46uW4wO01RB5VVl5Mx6s= +wgR07xfoapmx6eEnFHXXYiiI+V7bNxFnSFuOcQ3qPhnhe8yrEaesWBax40ntP+7z +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWVop5QiXXk9dYxx1ikj7prDP2ouliXd/MltfVegFDg6jfD98gwpJtmSy5h1dWHJY0BlEq+Wjq9bsnF2ITg0UKdjHkahnJmqOvGLxpR6y5rOQ== +1u+XjG/2+GSQRv6EzCaWRQ== +W3A5Dt+8AxWSKsTYeXZoLwKwsKhK29Dy9oR2UhlaTkSVI5Xg2mbf6vsKgFplag4y0bJqRmDU83hjAAlL6eXd8g== +xWoGNWjKGPfI4gq8aHoTfGkj8fdNxZp0ljoTwCdCs2JICYmCaBATyim6dm59quma0hVvLiQ2gkGmiBzzMQEzKg13QMJw+yiM4VlQRMTs6BsXXnBobWUE9R7HOPSBVDMklomafciUwCzgyBkreqgOjrOm3D8A17ccz7Rkx9BdBqo= +1u+XjG/2+GSQRv6EzCaWRQ== +w+ihC6Dx5EZdjtaesUlAr9LX3vNF55KUCBSoNI9MKB7jkM5DRQ+DHRxJyYE7Vnk4pbD725dH6tBXz80/QlIUUQg4ci9314Ps0ghnLkllFVPxut7d9NrOKvpsYuRDSOch7SlR96DrP32QoOf31MIn2wYnURb5lEz/3/kgzlY5BZ2MXKkedKbiG5XpsT6z9URHif3j2/aah+/lMYLQferUNw== +h+/CeQURF9gTASUBTdQY8pfOLXT3nT7DOVjSpAuN7uBLNMSIwtQp/Zbr+DfmeYPj0Yh86uJeEZPuApTaPlHQQA== +1u+XjG/2+GSQRv6EzCaWRQ== +JPjq3Houak+XBY2X3mfPih2FHmONgqzX9O00TZ8MFR7QmsRciXcXfMbE/LOKW8Q+SXzIQKSfNLVfzYgjV3Y5sw== +1u+XjG/2+GSQRv6EzCaWRQ== +6IBX/NbikFfeTGpcH6P73droZ71B3z2J+30IAePtxBk= +9t+thg0aJq3fYTqUFk3cIsA9geQKdfpDngPiUUgUfOJnuPq7hRsjkt5Hl33HdR3QWE8l2xhQE1+ozseb0L4DsdvcHx4bKfHB6x7ooBkxXmXq4cBB3hIrRSti1T5RA1rm +RVO1KO3+tDyNwC5Hc4BcgafQHVJbm39xCi28l877UUTc+S3wFEty3ZOm1WlYww9JrlyfUYLyjDbBc5x4eMMlf1JjoBqS8Jsh2ywx3YJEe00= +VmVrGQo2zRokW/ZuO9bN68EOPIf1qY9GoAZrIdQH5H8eh25zfdankySF4w26kLl/ +VmVrGQo2zRokW/ZuO9bN615AXqcvXGpY/6uYh0Ff5lv/xrKcuO2KlxZ3EKmLYiYU +VmVrGQo2zRokW/ZuO9bN67GrGV/mNcC7HdG2JK5qig37EssC0TnKZUkVLwTGJMtO +VmVrGQo2zRokW/ZuO9bN61Y9zQmgNzVrTMAGRJ4ga96MhsXcAMbbFW2QaGh1QEY2 +peDDeJk0jgp/O4n4lFI0duwljvQonYTG9nVD26BKzgZ1l86WboJ3/AADAidKzMdwXHnk64yKuomB8zUkgSNkiu0xOgxh+DX3JWucCXal8eU= +1u+XjG/2+GSQRv6EzCaWRQ== +RVO1KO3+tDyNwC5Hc4BcgaTRyOvRjCHjn4cQpG5ZJVmO499ddGUmOIMcpeqBbX9XO9Iiw/ASfCCnKZzJLkCYHmzQFq7pCI4rZ+3P4w94tos= +X2RKUDs3hIec8G7NnGFkr3dLMCwYMP2KOnOPwISsAUB3z7xEHJbRs04R4FnzRtzfTNKi6eL2Q4yoEEOAFevfLA== +Y7kjmMv/OdZpPA/SrzQCG8oCng7rPWr+9lb0YmyENMs= +RVO1KO3+tDyNwC5Hc4BcgRzlY+3BawPfB1ITvbUyV7bTPCty7tHGLFIzJPmVhMMU434BNcV8rubzAy0iU4nTvA== +FVyxPIZ/wXERtnpKKOuSYv9SRlWOP39xhAzud1DjARw= +topgAunkM89n84cH9D9pHB30TBBacwzoZMqq+yV3LskP6GnUqp6fLlah6+bEUxmhmI3YmZXCDDc7Mjq33SOQFA== +RLudrgIl0906M1AaCtTo7ZvJYUps57WTLFrpMpPtQf4= +topgAunkM89n84cH9D9pHB30TBBacwzoZMqq+yV3LsmHfi+PPUcV/2BAbNQ7zmkDbX0ifEzPw7u4Hrh5gkPuwA== +1u+XjG/2+GSQRv6EzCaWRQ== +vHIJSPck4q5M3z1dHL2j1I9GJ67DCx4tOlkBJ+dm2uE= +jKYEBRCjO6+ncQxXKj15zl2S8+M7ck1W2cmJm421BzJ1VtA8FkAGe7bmrBwshNYfEgoylZXqMU/Y3zdiD38bIw== +2qQ1+UjgiO2OZgsc3LuuhjXTF2eYw9jwi+wqGv1cPgM= +phCI6T9adFO3Wc/DVsBsqQ== +kgVyqIIC9nAzezbKoMMO/s4NUsgpd5URWLKWaqgaU4w= +1u+XjG/2+GSQRv6EzCaWRQ== +423QZ5M5u8A1qyMDnjgTGBQZQI3LEZvFc29K5ggfmzxLpr7xaKVAB55Q0atzqPad +1u+XjG/2+GSQRv6EzCaWRQ== +G9yUriC5Ir6qliAdP9N/sEAYFY615PxdZHXZUJBvbJ4= +RVO1KO3+tDyNwC5Hc4BcgTs0TOx0iKZW8vZnNXyPvarcOTwU9ezFDzJlJNTL17Di +IhuisKim47k91RVt8z8qtHz19VAeMCUt4+dvtwHGM4WZoYvhqZOVJC7oM3uVSB/v4cdxD/1c2YveRcG9UUA+fZUAwjgWiBdFvuFSE5DWNx8= +1u+XjG/2+GSQRv6EzCaWRQ== +yBZOkXnzauCHBf6JZDcSuWt5P6VTpOpEBdR+Pea8LcA= +JPjq3Houak+XBY2X3mfPih2FHmONgqzX9O00TZ8MFR5IGgklO9sGI8LBpUBzVcPT +1u+XjG/2+GSQRv6EzCaWRQ== +yKFHarejMtTR3VAfcoQdnh36UJNU3T9R8ZPYQLWyNqg= +2tOYNLLpvGfh8CFAK0Re/bPqlH1tCDaK2mM2rWRULaK6epi7yN9q91QhUsFtQV9t9GP3UkWr26t4h6U1I5jQQA== +o3kxTO4RwuXO7GZ9wpXG+RbGejn8Nb2dSOE3tskA9HM= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWVop5QiXXk9dYxx1ikj7prxUiU6tUmHOYWHM1e5eRwyDfBuhv9vdyYoyZOXCwwlOh4C4CisqYwCulO+LJimqSN81EHTCRe78S103tgdYqOywELWCeJ+JDISUVZO5kDfTJzwiuM7Bm0GCJoz+bt7Sc3iu+gdRmtnVj1JU7AK6KMkA== +1u+XjG/2+GSQRv6EzCaWRQ== +yBZOkXnzauCHBf6JZDcSuelGrOgFiFgP4EcV6KD4AOo= +A4bdFMcLUmMgWD57stKpQo6fC0Fi3TOXeQm7iM3444c= +32pdC9DD05OE2l0oXazDFHNGqlHRAZmnvfGzJYkJbUZhgf4XCwSxb8FCnQ5UWBBdz5QeOHW+2svOPMjxIJeEDA== +1u+XjG/2+GSQRv6EzCaWRQ== +j3IZFeoSyta22Sc6TM8RF6z20Z1zltkKr2gXv1SxcRY= +RYh271YU+b9JCbO1AfQGf6BwmRnuludy5WeEiGMD+cmSY5wVYxjTYwL7ay0CZS67VLuf4y0JSTEQtb+cHqWZKg== +b4OJVZe8QyIpjuTpKXDL9A== +fzRV9Q/APwRo7qMwI5yV83tHN0nUjNBJRG0bihSsADw7ei8HhNsuTPnXOLOUeOxOsJUcBx29XTxOd8b1qi7xnrY7t4tGez9I7DO94+zVG2VdHH6KLoyXnbpDoGmmcR8Q +1uX/FcffmAufUMpgGK3cQcReDSXLYLeDYXi/wxWvagluHkxc5csObEGLh0aFZz5q9KLTTDe/p7Wl/QEFEoipXLoR71qofIUh0eEAr6WyGvE= +mfT8DrNbUmxQ2BnZ1bZFTLh9MEuZKOpmAfF70OnZ9TU= +s6ChnXH5zaR4nss2Jj7ULBibRmB/kmin0eYU9S2eTfU= +1u+XjG/2+GSQRv6EzCaWRQ== +2KB6FUymfVlSXKS0i/5ug7uWIm2Z3R3JrZI6eIYMPH8= +ia8+eC8+w4kAKqFUfldoNJRnTrB3HujZpVo1w/olmQe8SwR9hOJRqQG6XUe0YJt/WSnx8godWdiIb5fsqPvX7Bis+qBddNIvq8Mi1g6yjBE5VCZ48Cc7z/iLs8AwzUQ2WDTyJCCVenRcoK52/aRYqDtI6/uiMUxIyos50p8syqw= +ia8+eC8+w4kAKqFUfldoNJRnTrB3HujZpVo1w/olmQcEAU0FmbKTfCzOiFcoGlVpS819vTdMOn3yoeK4C0jNMLYRAZpFvDN6XbrRuBB14eP8sQn1bPKdfM4W3kTRbccQYwUrWO53IZsyjMv1f2laoUROR3syBz4b8iIuJigok0HWwv6pdC7G56sMQTjIyyK7OYPvfVyw6SdRKEQwJ+k7HlcX5MYW0zc2zMunmWFbPbzIFLUw9SIBh/8wqXj9HRZB +VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6HknvkzCEhsRIgidJTMQcDwfRsX75QNdg484WZo1DZOCQhEZBfvVTPVTmsto08LawNjIEr69itLTR6k2btMD0tpaedmA9RhBySUyiLdXDIKK2cBg0dACKjhxu5pLZP9sB7ly1HyuzG+TDAtpoWgDnS+WEplTKapQh7V7nXj8KKCIBF3WmDzjdX0nd0FuUrOMFcB4WLIjh5RIpQS7MxugqOJdD6rNNaI2AEoEd+nRd6cmnq57B+NxB5tYzHDIz1mByLwausIxm0Js265pTWMm8LyHF +1u+XjG/2+GSQRv6EzCaWRQ== +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz7VqRniVn5pHNudjK7C5oLs +VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6Hkn+6wdcK24t2GfH1rVf/aw0lsvfm3x5G47Balr75+0NNS8YSUtS8KSZ0PMyacid5bqoIILIdfJfJlUm+qWRK+4H7BGOTExJ/NoTdM15rKQ2QrWUE+5/bYvtIrNuv9YlQxQ= +1u+XjG/2+GSQRv6EzCaWRQ== +jqLgr2pCRYMnJO97GIZ3S1FwvlKNLCsqDPl0u76XdBI= +moB/nyGYZ75KEW44UgSJgCbKzkfrA3wVjwL3Ci8Lpp0v3OgsuoUZngYdIP76k9gU +vY+hOrsxnLfs6nD2WaMAyjnYTTNdk34yA7pku0ny0zXKHUJwFI890rgznkKTCF+U0XQrwF9XeicXisI5YqxWtw== +jBFbuFLWzVvzxJ8SXKI0Rq5KSA4pa6zfCMDu0lTzmyRLcv04XT7GTjBMkGpSWKCmDe6bPzpS+fJawokHQ+CUjg== +7PAOTihuiyx8HjohYQQI8rOsWMlmhf5lg1OyHzrrtobml8+804w1BXmSHlVq1akq +tM+wBKzQAjsCT1cieAkzGJKlVzEduFYv2kgDi7xw29Oil073Z77k23nsVceF9x5w +1u+XjG/2+GSQRv6EzCaWRQ== +yBZOkXnzauCHBf6JZDcSuQfrsfM9iBtRU9cVs6YP4tU= +o3kxTO4RwuXO7GZ9wpXG+QxVUt0SnAgx/W4T5QbH9vVJJBZT2Jf5iQMwtcVaojrJ +D57kV+ftjbtB8HPaHfRK48m8vl2z80xCMPhc7IM3FgBKfrvof/Q1bXqWN3xzjdck +VmVrGQo2zRokW/ZuO9bN6/stb0OaAgDdvGMCXk/bABM= +xWoGNWjKGPfI4gq8aHoTfO2qok4PugNiRxu5BawYMC55EVZ4y4vsnD+TuT4OHb6Z0+7txKiRlj+zWiZgkOb1AQnKCqtJG4QQ5FM6LaHghbNRqafuIACJqy1+olDhaOSB +Z3TTnRjaf+68c4mQaPk6wsAMogyPW4+B92JMBTJnSFUUI2SEIDWLRdrH3kRYWX9NRqVSxEq6nCdD5szjx6Lkog== +czKRuF/oikvnUOrcx2+OjSgJtFGGzeOSM0uZBYq7+nG/FSIHKI5hxWDI8+Om3HrIkyr1/DyCiMLxWE+9Wb/Lfg== +1u+XjG/2+GSQRv6EzCaWRQ== +OoTjg/m6SCtc2tiWjbe6jyavt1+fzt+fCeYWllW3h4A= +6qxaljiIIPzJ1RhE5iUnRSntc3d3AIOlsoiaGlBnNxz3WRnHxRLGF1aj0+LI4qHh +aLwgkGEOIdbi1NNBuhnqa9ynSKnCwErnKnBwuLKs2jRp8bFeLFHCb+U0yYRqCLmL39+dZ59rYz3GK9cM8nO8Tw== +WvyWJj1hrCEXxqZLjwynLM8XOxD+gY/WxipIf6pOJrUl1YwB3BRJeuXhWf2CaRUpLLUd0wOVosHi8incH3mGZjfP7W8kH8y//svM4L7Y5UCpWZ/v6AGzwJN9REprP3IwpBmbeu3SzFw7TNctqR+4g0rtZbORLCSTzaQwU6Aoo0g= +ciHIKg4HGsBKmwIex5HaLQQFtmPIOQtJDE0qpXPybL0= +744+BgzK3LVsSzMxY5sSrw== +I7Hu5Qsrk+SRs5D2RQ8ynHloYg8G1sr80DUgj+aIyoC7vAoq1NTxylW/fCj9W4Y0MPxKfkZaSu5RdLOUsg8xrg== +CGtXn+NIKmFYVmV5CSdrUFMZoynl6EhrtrAfZj9Zv2AWVgDBy5Ca+QQ3vCPgWSX5 +uHWmSQqlkf1t9WaL7fJ2JbSC/oRZ9uZCNHZnlB7XLAZXJXAjNB+3PNBTy1W4vf2L +1u+XjG/2+GSQRv6EzCaWRQ== +uTEK8Ng11d3ix2pA+DD/aXh1EkibRkqhI7f5Y3ImDhgJzYefycVaA+s6pKoFJLDM +L0eUthVnpkGsmKFAX6d+uIwh5dNhu3qfFXQw4bkQcLU= +1u+XjG/2+GSQRv6EzCaWRQ== +2tOYNLLpvGfh8CFAK0Re/QD4VBS3+WIeDVqF5aLUqqM= +hiWZK3dGWUUJRGj86ed1SOyvq0bU3jxRqi1JiRIFIQOY5ad0zpqGgM/euDCrkLMw +aDrqk5T4YrZRF3nbGXehgHgCACebl/10/W+0uADBmTtV7txx1Dl7TFPWUSZADWC/ +661hZf7vhUQ+50okfwfTXw== +LpF5Nv1xS9lXjkSGXxhRv5kBqhKfT+kKDGgvrCq/fOg8WDoOI5CffAWGhucX45Mk +84Vymj90Wzn5yYuvz1pUuMy7lr/u1aBIBuI8iBW/p2o= +VmVrGQo2zRokW/ZuO9bN69GT8jbGo6G/oFkQMvKvtlPyE7qF+sjPN/2Ihdi/hgh70shhiwUgq1rK9oAgFyFPTA== +VmVrGQo2zRokW/ZuO9bN67wbge5UUNA1t/X2AVGsHS7bL6iKvvEBvOhu8hxd0wTrpGLrJPglpMdwiqjDRjlxew== +1u+XjG/2+GSQRv6EzCaWRQ== +auZi0vV8Th1M5xUz1rxru/ig3NQYdeexqe43ltrjbnc= +1u+XjG/2+GSQRv6EzCaWRQ== +rJq3IyL4WHj3ANQUjfoAA1EqNx7UF3kPslP1/SXMGiM= +7O99HA06y6DDBP/tFe031CGMYiiATNcqaBI5eRdFeOTY5+56mdRNcXsWmFzH9xet/jKiRyWYfXKBG9kQ1wZxlw== +Z8UsPk1Q7HtwjRd4g01ryw== +YnQ9XoGjUYuOx6MPhg2msSQPhfyDSXvyFP8qy64UTunNRVsh9CxUoenb0QMEyGPD +WLkT6KP2hJRlDfsZ6zo34N+8xXkOzHu1RBAdIn8DWAoB0MqedyqUGAmTFuZwzgmS +WLkT6KP2hJRlDfsZ6zo34GYCZV93cxesj14Dz0nZn/0bY9SY9Da2gp9gYc2uXx930iXkWpL4NVwTpO9en/qm1g== +Ys4bozvJBgtB7q16qcvtB6Yqtk42dTsLd66Y9gvJ1Lfwn4PKe4gGWyNvxklJ8MkZassS9suHzr2Aon4TzbjmYA== +Z8UsPk1Q7HtwjRd4g01ryw== +9iCijEd9eeDr21NoCtcnyorHIfEdbICNV6PM5pg0gIWuwyO7IN8sv34kgySLOUfC +++UEsZKFQlps/cn/nWEU3S8iUIqFn0lEYXThZsGuzss= +ahNL8znG5cy0q/Or0UzYuyoh+jL5nDGhe0UE/IqAk4A= +cO4jD3idfQ+xMrs/HROF85dftq8xTl1KTG1a4NRCMzk= +J1F4oRrGPmtYDYfoydr8FNcDKeQ+6NyYuM6EVLXjZMQ= +L1xLychVFmA4HntLgioAW/M9wI4NKo28U75rvUmS/RWXdpptKXliBTPmpNTP595Q +SmSFktMP5ueEVh7WXndJ3CE8oE12c5Wr41GPPnIiKRQ1CGj2WxyO/uSFdNSYRhor +ytkimN6aekNd1L8EZNLtgzGXgdMHh5J+f3ZJQJarsZw+q1UfWql3J+JZhif2fzrx +zZH9WzBWODR9GICcXcp+1xNbvs4FaHDwKJhYOHiIu23cB25b1Exkfsl8D/LbyflE +EKTAxuhrSmMPcDONatFnMt+rfKCHfaLFdqI922ihjlM= +F7oLCZ2Gt9fVh0UnmhBjnlOzHcvTsa1C3rBn6AnJ3I8= +AS1/+c2yHhg2rbpZUjBiCbPF+OydbjGADfLGDrKe6aJF8MVnm+du/YzBcNNI96xT +1SbkTSil8XzgXK/aUkDPBlPXE0PeWh/5mI+WwH8JIgNa7ocR0JFrOj4i9ZCqFcpc +J1F4oRrGPmtYDYfoydr8FKL/6FNX8AtuiuRqGk/nRYA= +nuQO1if3lMKUHCYi1j17dXUBxvu9LXX2lszf3cX67A4= ++yU+Ggeqr8dhV8N2OZxVfjv+zl4r0w+yZfm5xp7/LaQ= +SD9EW8owZN/g0DiiCqp2L0lX0blabzbb+r7bLVKtTE0= +SlCuOWJODpUJxmXW4SlrHo4RbtnWD2zmmeyl1DFLb3k= +4E0YNxQKZtqIoiEqkAJApA== +1u+XjG/2+GSQRv6EzCaWRQ== +CBtgUGfDUfkQGIdbPg18S3x5LSm+Yw5NAguGSa2cDObWpXdbqKGiB2OEuibVux4L5SAw1A5aflJQHzZCY6XB/w== +CBtgUGfDUfkQGIdbPg18S+BSK4nc6A+3nH6u4iTSoYQFr84Uf4lBOmsrweBcGP5q +1u+XjG/2+GSQRv6EzCaWRQ== +JLgq6GlZ7WP60ahqprRletuGL69OH6VHJ8FeW5NvgZnvYaoxMihMrCtUY7KBlGll +n/Vg/an64od1JqfYD8zjtufiMkezu0OljHJc9GqWdPUCTvr0+l64F6nmPqHNmkKXXNrH6CnrMGG+ftR7IC8q0Q== +VmVrGQo2zRokW/ZuO9bN62MfsXcOvwqz+fqqVra8pB4KVinnWc5hLqSXfA8O59jmUQsCodOGJH1uAULVhgUS4w== +VmVrGQo2zRokW/ZuO9bN65TzVBWAeCBq5TcommFw7+kfVs32RxWmxzPfmrHD++36 +sobCGpmMf4/g7+HpPqBjC6hatZ6rUY3AAzqC73FJ58Q= +VmVrGQo2zRokW/ZuO9bN60467wagq2C+toWl5WAZ6b5jxZ2RmtS5OoAguFmoJbFg +VmVrGQo2zRokW/ZuO9bN65TzVBWAeCBq5TcommFw7+kfVs32RxWmxzPfmrHD++36 +1u+XjG/2+GSQRv6EzCaWRQ== +j0nHfRDI8Pz5+OiXquSupr0jVOeqKUO/R/5QFkHoyYPDPSWvaFH3Nqoe2jGfKAk1 +guSZID0bFQuDFoWO2uxAJoOpitq6s6c9ladjgxAHqGE= +1u+XjG/2+GSQRv6EzCaWRQ== +HxLxqeSq/jI2KS4DBbdB3JU+MQgbU2k0lLRs5El6TpI= +vTI3ODUeWeM8u4dqSVcbAGASTZewOzQyky0T4XITqGsqGg9hBgpu/U5oDNkeX/g+ +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN69psrOzmSHfgHQ0m4OkmGSS2sNx3G47P0E2KFJ+7GzGe +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +mqLOOC+GaTVcknzju+Rrpxsu94t2LBET8RveHPcpufCYBrrH2yppvCOmPJQXgvVQWHCC1BkBi//m8kiSP/iBtmOFPrjQBZs73N0TmSfZBNxig6XJaGhdU27JyS2oV6P0 +ncUn2TP8ZQ4fZMBYk+CUrZBYB8riMrerZr0WlBEVsrQ= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqLGq5JBuZjIZ38HYgA4Ou/FlOx8UZ8UFRwsLb+xq1BRiCgUrTzzVXQ4a/zBlQcEyqz+BQR5/voK1yhazL7aLsJg== +1u+XjG/2+GSQRv6EzCaWRQ== +j3z18CzDmGnE2CAl4L3GDf9eeu4d4MYmNE+sgp+RmvROkpEqBqQ86OyzH0keleIr +41246uGOr2u5+uVxu5nu7XkyrdqaQSHe2IDx8kQMGgOf/bH/sy2IDPKgGlTiqJW7jivhhsf7gYzFsXQbnxOAIQ== +8940BoBNMjNY9gLywfR9OgBBYH5/GNMewm5zAiPuOkmeyAIW8181d1mfWD8eXh/H +wgR07xfoapmx6eEnFHXXYiiI+V7bNxFnSFuOcQ3qPhlDfWKuUwanzDuE+9UtptAjbEY1sVofb4E+TUq5mVxRCQ== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqBWorhOh9sZY03q6eKAPoDQED5d2Ar1JsC4YlJ0S5ioTotHIFhyH/HADKbQ9qsoF0cpkPaKa7XnowOOMTut/n1g== +sV2BMz3qoSZgP7XLsV0u8DT+7gp/12ByxpqKj90X2iQ= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqFVvkZUvWVqsP/0xk4/MPu8zCrQqlTbYhoAabXzmpzNmcc2FcNCILRjPumTD3o3vEefmwPtRXt0cowf4K60N06g== +1u+XjG/2+GSQRv6EzCaWRQ== +ojcUvW+Z2ehEJ6yMJpmY+0Qi1PuGvKbtYIl8YcNfHPrSgXkunXtRdk6RKceC9yF/ +5++GSTypxH+5sPkSDE2GU6Rh7s109vQ90lPWweoDYnVbgBeL2ajXuJjhfbxYL+iFa7uFc3ppUiF7jzT6NnwP5xLaaJR7E8dvkTUHOPJI5hw= +uTEK8Ng11d3ix2pA+DD/acQS2l97zooUzn3H5myHPzA= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqfnifeKMrqIgIpv0mkoOEzyXPi094/MsX2ZcebmNH/4e7mQTHdwhwLGbMFZTywN/vqg45V7TNlW9MhFq3aZQQnA== +1u+XjG/2+GSQRv6EzCaWRQ== +IXE5utwGYOdlZaZ+BFyYQc4dgjiGmT/i+tbiC+vUSCFhosI8l3l5SRpjI/IvwbKq +SZR9uqHu6OvWFXKdtOAjtEEiAT9/+ZTDcecuBlcI2WI= +1u+XjG/2+GSQRv6EzCaWRQ== +IZj4TYq2HlScfSdRkI+QPzK3mOCgI91YcUmtx4mcXhv/yvlusT7yyMXwztWJdhaVe/To2AL5yLQTvoz4iviKhtApTnIvjwD8eP16dSBAKAP1djVXHtm2UuXLZsx6KzKI +0fjphPar6MvaWY1z8klo3O0UBqfXSbeIul5O7EocFOGoK45DtCkcuLxgR4vihYEh +xWoGNWjKGPfI4gq8aHoTfFwPjaTsnZEg7H28BLssI5QDFIDK3O3/8bliyzVlUgXpM8AOEEJeCKkEpKY8/R+T53og/761YBQRBJxF1YNjj/Y= +QQCfHyc1A2j+U0sc4EugLuIZUNrrR1AdLjyoTZF6gqdkaShix3FiN6Cgnsa3J1nC +1u+XjG/2+GSQRv6EzCaWRQ== +ZsvG3ZN3+idRwcMdSaMA7wwEL/iTJwqat+hoVEavTU8= +dCSrVYdKU3chXq96oEA4UnHzUm2Bwm+u2ecykBFUpHY= +6qxaljiIIPzJ1RhE5iUnRWtsdPHgkt+g25AMwawhMCQ= +aLwgkGEOIdbi1NNBuhnqa57HPlFRNtrIEUTp6uW9fZDJJak2R9812fH3n/41Y3LVjtzNISZn4I9vSSIly9u6cA== +aLwgkGEOIdbi1NNBuhnqa80kHSWdXEpx2UPu/gZendhIIsvdYrJmPFOj3C7Ax2lI +UT9PbhyAC3R1xrPsJUEeLs8TIYK74fW+4Abhcxq2snc8dif+OlKOJaSGXxFGx8l9 +4E0YNxQKZtqIoiEqkAJApA== +q5eSn5PPP+NICWHj6d1U+8j3hD1yXkdO+8Z6UWgb23XWL2Ru2TYslnWL+JR+yxCl +1u+XjG/2+GSQRv6EzCaWRQ== +b4OJVZe8QyIpjuTpKXDL9A== +Lm/p3X3M1A0al4VUCVlRjVfBPiNrVZ9DqDOPW5MI7yI= +kGLqK3UPs3WHPS2t0weZY+BwZNitcFQnrH4cPyEIw9bu49I8lWHMx/TwLQMUO1lhLLE2fbIS6maPw16jb6I04g== +J1UGlXkKhKXD36OrXXhN8B6/1g6bOXKr7ouGQNrHDR8= +VmVrGQo2zRokW/ZuO9bN60XDhImAVN87ksKCReta0oZXQlgP8zdqz/sQX0yPJf5HtB2eJTDY5o6qzuNO7htc0w== +J1UGlXkKhKXD36OrXXhN8B6/1g6bOXKr7ouGQNrHDR8= +VmVrGQo2zRokW/ZuO9bN6x/ke0+NMxdi9MVoq0VbHZ8Phrf44aLVp6SGHfyPqUewOP7USf5wZSn//0f9TYafBQ== +A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ= +RC4oLQdoxG5aIiNkrooBbj+hFABCM0hcfEIkQOJM1F329D314gHH9x+PkP4k1Mp8KEu7JA1+Gb7dQeLZiBspyWvJR4LnbPdIea5q5ElpleY= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqcU9NTLVxTO/Q+RQhbkFnWg== +1u+XjG/2+GSQRv6EzCaWRQ== +04Bagrrz4wMkx1oKD1iR6isxKR6alUMi723C1i902kI= +2qQ1+UjgiO2OZgsc3LuuhmsgZO67GRqoPTOWMBuD6aGQvaS+R5WAzGkV5Vq86b6inCSv76TcpZzhHDjQ0pPb6g== +UkQQaGHg2Aow1Gtc9bKBau0euapoYTSumuYNb1Ly8sk= +Lm/p3X3M1A0al4VUCVlRjSni6GW1Mc+quca8ofwMQVyYSuewhiIbHYxalPYrMQhJjOnoTGQgeyYA3wFKtK87Hph5vkPcIMITgyWBKg0bqjXOM9wDLsY76Y8QLfziw9Ov +l2FJPs4YkAmmok1ulDRuSA== +Lm/p3X3M1A0al4VUCVlRjSni6GW1Mc+quca8ofwMQVyYSuewhiIbHYxalPYrMQhJu06Dc2CZybfpr59jwvegGHxiVlYTi8VgCQ3CynHFcjE= +1u+XjG/2+GSQRv6EzCaWRQ== +/R3RsIyyuJzgF1BbtmZTiH4/c9KhrXLe8R0Nkvl+yRemCyJi5vxd8fSCsaJ5Q7I9 +ia8+eC8+w4kAKqFUfldoNJRnTrB3HujZpVo1w/olmQe8SwR9hOJRqQG6XUe0YJt/WSnx8godWdiIb5fsqPvX7K4RJfX3ThEgn31OaV2xRYyBGWr25chg3YhHs7M/mPAJatw3X45iPllMx30gyyfRJCn+olhWuTr7c6RTTgHEYWk= +ia8+eC8+w4kAKqFUfldoNJRnTrB3HujZpVo1w/olmQfit7CNvQLJiMcSG8c3cllSznbMuEdWm0k5WUVye17TW/wMngaEwo4jgSIEtxByQQvVCKdI+xSc/EFyYLG2BjikvUTQ0ulgDVAVLY46OMVjKQ== +1u+XjG/2+GSQRv6EzCaWRQ== +04Bagrrz4wMkx1oKD1iR6s1RlMNlWnqEbOoHr1Vd2u/Og/M+mssuGrJrvYKbtfef +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz4ltwF+Lof/H5zBCfn7L/OBQSew92Sn8lx0cGeiv6COjg== +1u+XjG/2+GSQRv6EzCaWRQ== +WA9lfHrj5irC/G12+lJEytf4qwHN/xyOMSXDRrC/wz4= +Op7dMInM34qViT7DuPSGGbGTf7xytx0L7ro2HSVjtAtu23SKUMyP00U7cSoklTM0 +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN69psrOzmSHfgHQ0m4OkmGSS2sNx3G47P0E2KFJ+7GzGe +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +mqLOOC+GaTVcknzju+Rrpxsu94t2LBET8RveHPcpufCYBrrH2yppvCOmPJQXgvVQWHCC1BkBi//m8kiSP/iBtmOFPrjQBZs73N0TmSfZBNxig6XJaGhdU27JyS2oV6P0 +ncUn2TP8ZQ4fZMBYk+CUrZBYB8riMrerZr0WlBEVsrQ= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqLGq5JBuZjIZ38HYgA4Ou/FlOx8UZ8UFRwsLb+xq1BRiCgUrTzzVXQ4a/zBlQcEyqz+BQR5/voK1yhazL7aLsJg== +1u+XjG/2+GSQRv6EzCaWRQ== +/mRF/5xAE14Tvdjwzky/EA1EZlAAFL5Wrjvw/cnmzzkBg3OgHmsOwm2EWiv8z7Nn +Mn/RM/cTTjL3FgH6peQLh+Bx49NvvTfU6yYA2E6LfGK5vVBJSKupqNfg2yfloyEz +1u+XjG/2+GSQRv6EzCaWRQ== +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz6LAlFwDloXwkV7bAd2FBlc8KOdCEPrUTzhDtAQe2JFvA== +1u+XjG/2+GSQRv6EzCaWRQ== +jqLgr2pCRYMnJO97GIZ3Swi2T9DqgjT3Iw39d87dNXMe/uRlHF4AsIxbhA/GnIly +cCKGdtIe7qSNBJ/C7EH9q3SI4oDrw3L/XdmmVnUXGRH5E7vQFzTPBchBitWVl+fh +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN616YEs6o8UaynlYH0LZEQXwGk42+paXandqiU60ocVvQ +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +b4OJVZe8QyIpjuTpKXDL9A== +EFBFgJDcvthaVbYohI7UmjbgDbryepRW+5ziRnvDyKv+ZUv+rfTA3uE/kY80Q+zW +kgF2/6843W+vdtmAWZoAPRCKPOwwuQvNVH4v1ErtX4OA13NjwiBNZ5dIlPQSUmhoSBGEHoXC+uB3UkdCAQKjwdaiLJbSnX1T7bYHEvnGIu+8n1V/UCa61lIzdgHDfDexhEnd/0wxadfDg4h+WnPaozuRgVaCaP3rypah4DRpwUEZ782OjKXKhAg5UJ/dqoDS +1u+XjG/2+GSQRv6EzCaWRQ== +lOh2GtzHjjMM8E9J40AuOXxijY9iVaoSvvDFpb+qBsE= +VmVrGQo2zRokW/ZuO9bN61jMcj//yjYDrQ5nqAtk1JsPxPAsTtDF0V3ICvjVe3YN +YH231WTDnzQG3bFilBiqIg== +1u+XjG/2+GSQRv6EzCaWRQ== +FLMbt5iAjw12yzW85KcCslxJjQ9afxwV23IZn6mdwWWl3k0YspJ+PJhiPYxH0azcbaSik9LxxiEFEgav97W6KhSXvQHsJvfc49/iT86lJ5q3XlWR1fTxoPwB99HMnekd +ynmt6S+38NUiCOOHWGlzR+hxcjK+PauWcwEYGp27nTaS0No1/TsEtvE+Rtg+3t9yAUk+cBB75l5xIPePA4ywUaGYjtcXRwLVIXyZGrJlmGxh+exteCsCtELgzubzO5P5 +1V2v8QerKOmubvSxgB4eTA3IG3BTPF2DOa4G4Bd/idM= +VmVrGQo2zRokW/ZuO9bN6zM/X2hHBCd+n2OGnnATmrTtYOgvvgMETdI2RzUBkb1VpwpXlQvXPrRsOyk/7zmtMA== +1u+XjG/2+GSQRv6EzCaWRQ== +kvyEVdzDa29snyoMmjL/my7AT/wdgfsdWRl+bXVGfoIn2kEQYUN4K8Tn63B57/abOtQ5RtFUZ5aP0r0ZhKSTaR9/m9UhIfaxkqefplvAsb8clHLRFYOSMfKGXrQwpTlxiu7ZEZgT2ZNOgDSs9UpHeHnCG5udRLHhhi9lHvnOV5nGGY8ULSH4ObfaUaDAv24l +1V2v8QerKOmubvSxgB4eTKYaUen0jzvqRM1TKkcY+YD1Ss1toKYXPvkNf0dFSvYF +VmVrGQo2zRokW/ZuO9bN64uqnK0mhyvSu9fahVGVs5V7okAzwJoMBSp2d5jVxbZP +1u+XjG/2+GSQRv6EzCaWRQ== +lOh2GtzHjjMM8E9J40AuOXxijY9iVaoSvvDFpb+qBsE= +VmVrGQo2zRokW/ZuO9bN6/g0dxJHjBVeSj80YkF58gfqffk9JpjhEMGgHc8J24fG +VmVrGQo2zRokW/ZuO9bN64a1fkHCSRJkGFUUJ25vWIFNf3uIWEMc1V2DHJU/75KZ +VmVrGQo2zRokW/ZuO9bN64JzTyLBdG8WBMqvvcdvnlEYmaQeLjSDoy4l6zQeAfyJc7sjnpj/QsoghJsRM1vEFg== +VmVrGQo2zRokW/ZuO9bN6yRUewAxyw93mE4K8pjKNSW5X+2oltBXFSTgx5ssUfYpeCuuUoK5dAnBLtdEZuJB5Q== +VmVrGQo2zRokW/ZuO9bN62x1OfnV2vgA0wtAZ0nEmeBbNwBJ7pR8IAeAcmnyE83b +VmVrGQo2zRokW/ZuO9bN6+XGNEXLVTlaeIE7SuKv7BFtxkQb+LvnCk1FajzZ3R4AtQbB8/JZ7GjE81vANqq80l59kIks2MQtBQQdKWH7wRU= +VmVrGQo2zRokW/ZuO9bN63sIPHadiDAnsvlgqcnKRWdDzhOQju+FUV4R8ILz0j5W +VmVrGQo2zRokW/ZuO9bN6+yQrRo2SUuthJ21onrPKiGxjV1/I4+vjCU7TvAzXI+8N3L2lSGjom1DET1xiMkjRQ== +VmVrGQo2zRokW/ZuO9bN60V6+Yd+yf0asH/FplvTZ1nLw/ECgyPvNcQJCtmUTJl8a9u3M8TRZb95WHJ1nVZRmQ== +YH231WTDnzQG3bFilBiqIg== +1u+XjG/2+GSQRv6EzCaWRQ== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmVwUNnD6r3KVu8Vwh9GQgneA7ScOXSUWlgiYmM3jcVamw== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +tclBYP4gfsnd+7S+S8Wa1GRXxjeqw65pp/aE5YM61wXRk1RRSQROC/60vFOnpnq+ +u6oUTvchXcdYHObBRgEpUOkn53EJZxU9O7pTLfWp9yvCliZchC/t2dFgpQRBUE0M +Z8UsPk1Q7HtwjRd4g01ryw== +yyhz47aqKc/0Tr9tJtDztvepPEGXCF5A16WHDY7km9BCb5gjYQha1F1cg8RaLIUd+p59+Sjqz83cEzHJqyYhQA== +yyhz47aqKc/0Tr9tJtDztp4e5yvRoametENpRPv3ggO0N95mL4HYbyVAY6XTQPwEJaMMTa7dAQHB5kRhPPk0aA== +Z8UsPk1Q7HtwjRd4g01ryw== +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN616YEs6o8UaynlYH0LZEQXwGk42+paXandqiU60ocVvQ +1u+XjG/2+GSQRv6EzCaWRQ== +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +PVU0dYxC2LF5MXKWNmqLj2OGq0UuWvbOqJ1heCW8WC94pG7CmQCLHmsTFbg14grqNYBLV4Vzj5YA/kh3cefaIw== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +5++GSTypxH+5sPkSDE2GU6Rh7s109vQ90lPWweoDYnVbgBeL2ajXuJjhfbxYL+iFfj4yZiCLvc9dpytJhK3AtcrBVI6pWFrY3VvR7hFxp1U= +uTEK8Ng11d3ix2pA+DD/acQS2l97zooUzn3H5myHPzA= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqLGq5JBuZjIZ38HYgA4Ou/LSxsMAqnWKRcmIKawE4Fi0aGkFvF5FlDGBkex3TAc9/ +1u+XjG/2+GSQRv6EzCaWRQ== +2KB6FUymfVlSXKS0i/5ug3UBE9WCR8xLwVwW6pVaOVQFOq2oAOdRSvAjue7FwbBd +U3aloSavc0+TVYDfN5FVlnfe8fLt0Z/S+MxLGTtzzNs= +1u+XjG/2+GSQRv6EzCaWRQ== +p9oVsBgcyiBMjDb8CcPOqJWLtR+Zprxpy4qFzqAxUY/yf+qnLGvepBlpCQ84NI2E +bL4YtibJryv00qN5AvKB0uHtsNsut8U8GdCFvf7dJfbAsOJk6V62o/kFSJTwaw7C1WcXlEDPLrQy9uliWYeoWtZ0EIbP+Aj9xryAbZ+NMNE= +VmVrGQo2zRokW/ZuO9bN6zM/X2hHBCd+n2OGnnATmrSuY4P/AlnqUWfNJ3Nv+yymIkZ7WmZFKCQ6w9rdD77KLhYEAPj0mjw9nYf7Zs8LbF89w1YXvVW/U8SyMbucGW6yPha9slnS1m5wWEQ7Dk2SVyn+V3qt+QGwjXts33x+fle2J929OO5BbXJRWT50/s4t +1u+XjG/2+GSQRv6EzCaWRQ== +FLMbt5iAjw12yzW85KcCslxJjQ9afxwV23IZn6mdwWWl3k0YspJ+PJhiPYxH0azcbaSik9LxxiEFEgav97W6KhSXvQHsJvfc49/iT86lJ5q3XlWR1fTxoPwB99HMnekd +1V2v8QerKOmubvSxgB4eTA3IG3BTPF2DOa4G4Bd/idM= +VmVrGQo2zRokW/ZuO9bN6zM/X2hHBCd+n2OGnnATmrSuY4P/AlnqUWfNJ3Nv+yymIkZ7WmZFKCQ6w9rdD77KLqIfA5O/7hV4PpaTBigx6hAFNfpTlk7oDwVW2wKqiZw2Pmycg5/Vvk1Q83pLqz+3f/J5wo8nMFbCM2XhjmdPvog= +xWoGNWjKGPfI4gq8aHoTfLGwcK6lSi0s7PJ/4qXBduJQOqD8prmPA4XGArsXq5tm+q4NVmYKi5jZ9cFqFHfMbrk6CqdLWtHnKMjNHVjtzh9ykJhBjnmi9upw/yaKpLipX7rz89xMEu2g9Vb/JVhblx5ipd3Cr9QBHBoKv/eB0ug= +1u+XjG/2+GSQRv6EzCaWRQ== +2KB6FUymfVlSXKS0i/5ug4I0g8t5ZNhgeAaMtfqbIwI= +0fjphPar6MvaWY1z8klo3OIdIfL3R7PTNj69zmFx6aCL0UpUV7XIfcanfQn36lL2 +I5csN8e3J/KIFkMa5t+SJMVz5/t3Y67rkCbQwUizTAJ0Dzn8uRvvdq42sfecxkNHQIO/sjjS1fLBRa5Ld8GqSFKc2apFhv8nSi6Jp2dfjds= +tGntjndaGSYuMBtjg5/VcagjzHWsEbDZOkSE02Fd7xGZu4AfB3tmpqpLlv1QXIy1 +1u+XjG/2+GSQRv6EzCaWRQ== +6K6zXmJJNC0xAXfJ6TCmfTWObiTApAQGUiCh3EjQnss7DyLXBzgj/oNQ2EbsgAz+ +tGntjndaGSYuMBtjg5/VcdCDANGCrJoHi0Ft+4gx2qY= +rsnFHqHoghCds1UZuWibuj5jurYsP9IoIv6TVfM2hLTx6aP0hgc+D5h3k4Vpr2A4dld49nKJa6kjbzHN55pY3g== +wlLHv6kT3Q/RmtMBN4nDAQPL8fRGSJ7ywN4wBg+SJh/aeUGRAvz5pRv0h+WJ9/Qj +VmVrGQo2zRokW/ZuO9bN680cvVaHPq9Fp1ZPySaYwnkxAD2xrYZQg405hywPpG+/ePX63RTCS2KlpwJCsjOzIwUhrs1b86et89++elRrWT8= +VmVrGQo2zRokW/ZuO9bN696D9qy01yOv2Fmpelb7+tsCa0rkOHSEhXOMAP/d47OPmmjhta9SenKKKmUKSwvXSsp3m20pUxwLykngh72uFzIXKh/v3F15AqfKtasb5+IXQelO71KtXqMd+sJRLPvZgw== +VmVrGQo2zRokW/ZuO9bN6zZcpHqbLPCfucCocPyjGlY= +1u+XjG/2+GSQRv6EzCaWRQ== +1V2v8QerKOmubvSxgB4eTANgeqY8+s0PyFIZgzLlAc6y+T+ZuPOPHtO6u4RhaYfQ//aVtd+Is35282Fo5MlSmvrqcjZ4d5WCHCPoxDiadOA= +VmVrGQo2zRokW/ZuO9bN6zM/X2hHBCd+n2OGnnATmrSuY4P/AlnqUWfNJ3Nv+yymIkZ7WmZFKCQ6w9rdD77KLkXG4fLYsvt9pzZDO7/hvg2sdqh5YUncyBYJqPMRuCVPRr4MpPrIK11oCpQZGZDzYp6SlcqgJF3vwJtRoz5k9bxG50na0E/+uYqXydsyvKQm +1u+XjG/2+GSQRv6EzCaWRQ== +lTLlgCoqofnya1u8s4t+TIra2OL3CZUakWENlZZFADq19jYKfWlweD3RbqixYumI +kvyEVdzDa29snyoMmjL/mypKMB8zU3KH1iMX0RDdp9WL+FFmpx1yrEBZoTDT0P23i23XwUcneDnmhbwT8YodUBzt1p4rZmOAROL+DLL7elAxvTpitV0gneXUoFvdTUWdLREpeKeT+aT+j9XMV0WVGmSFIbsc5AnjQvH7ECFGRQk= +1V2v8QerKOmubvSxgB4eTJM+2fWJt+F7Q+kgaQoTW6FOofy2S9BYYqdlLC74I2P+ +VmVrGQo2zRokW/ZuO9bN6zM/X2hHBCd+n2OGnnATmrSuY4P/AlnqUWfNJ3Nv+yymIkZ7WmZFKCQ6w9rdD77KLppy+gH4hU7vD/kF2KwAKoh3dmCvPkZkmfm9UWV1TQbKus5F16YAhK4KLraq6EnVPA== +1u+XjG/2+GSQRv6EzCaWRQ== +xWoGNWjKGPfI4gq8aHoTfC3KA3EbEdlv+iIkntTuij6MZVjWKB4OHATyRC2xjhTLBlYHBcCPFPD+5YFnP8FNuUkCpr2Ne8hUj+2wRrJRJV8= +1u+XjG/2+GSQRv6EzCaWRQ== +yx4jtgR9zogTFauTn1AZ86P0DSq3/on9cE2QGMS03fUyliNPgvLE8zFqjXsLj2rPGCtBBY6KT08b9ny25UVpZg== +xWoGNWjKGPfI4gq8aHoTfLteyvBnOd/o+Rfqrb6BwihKRe+GIpwwfNP1oMSmr7O9mYzDIMkE0UV9CTZBdfmsUbrN13PkKYWm1SyPMJS6uY9fS3AVYaG/QgzyuBo1qS7CSji5sDWCA8LTDrr6C1/cNA== +8i88MKADknh6ve+bU8Ezb4jvt92tXNIms+ZwEsSOKWD1lSGfxzea3BvwAMvwd8m2 +xWoGNWjKGPfI4gq8aHoTfLteyvBnOd/o+Rfqrb6BwihKRe+GIpwwfNP1oMSmr7O96wf29fBHkXEmFnPWtn8aW/k6aiHU+3w511Hf/0TFd8L1h5xJl8ISX0Vpdm3iMfrsgTWPspRuUlvhNX0Dn5V4Bg== +1u+XjG/2+GSQRv6EzCaWRQ== +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz4KpSABaS2TFB4Zv5Vx7Jdy0iKiUcrGPJIAdfUSYOMIOGnyMHqgiHzVMyYFfq+CY/k= +1u+XjG/2+GSQRv6EzCaWRQ== +DGXTHHGMyAoT3KKeglnjs3VykcmsOnlZfyQzwhuTPWU= +iQmg32Nw5dpQI0revJls5/pUe1vlE40ZNd/wkNtgICGc6AigTP0r24yLxm9t5akG +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN616YEs6o8UaynlYH0LZEQXwGk42+paXandqiU60ocVvQ +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +Ok7/pyXurdp+IyZCH/4JsgHYy2BgTEHLxCdv3ts0M/NuzEH2Ssm6oJ4/uDDWHyr780e9gqxEXbwRhhg7+FN9Bg== +ia8+eC8+w4kAKqFUfldoND4D8i2xzjqESPJFeYkV2QdV/tlAML1a+3JBiZ4x/8ebNTBXCdAyg21gbus8oVvvdU9NS6Pj+Pv/JHnwquiGH28= +41246uGOr2u5+uVxu5nu7SfzGWjMeF0T87TRm8i7BSHMq0CYYGvr0O4ct31ZnnLjcmDBxMoL097URUKFuwSAl+Mtg+k3zzJNvOnbK0Ou2Z7wKhKwYIHac3k+I0JV2RL9IOPfqDIhSWAx178NddodnA== +wxy8cqoe6Att7rEHgetYY6Ruq6MOE9JKdUC77LkVqZ1ViRpJIz4DlqrRTsIMHoKMJCCijHqoNXQx0d+MoUokrzZInST5OuF8wEKRvTcVy63dnRn1HOJq+G9qvRxaq6Iz +1u+XjG/2+GSQRv6EzCaWRQ== +Ok7/pyXurdp+IyZCH/4Jsk8reRz4iaNBrilIgEqq/Vs= +mrrJAWErD017AeqhC5F1/W9OrvhCp8mKGUbnvT6Lk00= +O3CUgrw2GJfB+mDjH5+Ndl0/l7nBT/GqchMCUR6r29jq+OqdtRe5SZpWaPTuL8z1HtCg06WEfcbl3OvNHXDM3g== +VmVrGQo2zRokW/ZuO9bN6/PGXkWadftzEB0lJpeTiZupatw2+HCDRPQE0/S0r3yb1kbHlrUZ2Yd0Zs1ITxhsQw== +1u+XjG/2+GSQRv6EzCaWRQ== +Ok7/pyXurdp+IyZCH/4JspyVw6BabqNaVBftYpaZ3Hw= +5axnsqfwTuIasPw5sPqbM+bWFJi7aFPVQsOb9NukuXHVyame3IPx7sY+w1uPiKcx +kvyEVdzDa29snyoMmjL/m8olu6OCDmcwtWuPMlsqFRk0RYzk7uY7bnvG1SNVl/jbgPQmjK18Om1okqjvnaS0oQ== +topgAunkM89n84cH9D9pHEjtoDCV9arpF0d6g1XmHjsERYzqQmsu5CNuGGqTc4l6 +O3CUgrw2GJfB+mDjH5+Ndl0/l7nBT/GqchMCUR6r29hPUbHTx7IIT9OVHUbs73d5 +VmVrGQo2zRokW/ZuO9bN6/PGXkWadftzEB0lJpeTiZv5v2ubz4Cd7To/jSoTlPUH +O3CUgrw2GJfB+mDjH5+NdkkEd9P97hGK1RTeRfwhysDbJp7YFMNp2mQtrJAOzaaA +VmVrGQo2zRokW/ZuO9bN6zIAdj3QEBTKTHDl270h9dv1S+1BY3XdSPpTGMV5SLXr +1u+XjG/2+GSQRv6EzCaWRQ== +5++GSTypxH+5sPkSDE2GU6Rh7s109vQ90lPWweoDYnVbgBeL2ajXuJjhfbxYL+iF6YGlZGVW63KRiX+I6tYL4q13TsGW7gH/tettKZcfNZ1CfOUYwtxSbLrIUTj803Zh +S+cdoxTTzDuqEzaiFGXU9IJhzbLJz2uzKLYIeEiHIo0= +wElA3opDQ52PWGn7tf+g0szIBA5PrmC4xk8IiOKqwCL3Fk2hhXXswCs0+4OcsJU6fGef5hvNgBjN6O+M4WLIJw== +O3CUgrw2GJfB+mDjH5+NdtKodFaPNHOF4076Mgx6HZNO2Ux+CEXuPIO2WlxWZFPb +VmVrGQo2zRokW/ZuO9bN60LJxkDaYMm+5ZaN+eYmkhJ2q0Gl5TLh1dPVUat/58q6 +1u+XjG/2+GSQRv6EzCaWRQ== +Ok7/pyXurdp+IyZCH/4JsrKsA3C/dXY3ej/61aegQsM= +lBa6bx71EJIwuFvSfXMAu/kIyZ+bvBvbSF/KDqHK601WwQfxzA0+M08FkLD7RPZKOovHRKPd57enCbop8kNvzkw9AW6iXtaxAMWtpk+83cI= +1u+XjG/2+GSQRv6EzCaWRQ== +EfRe9mf74UfK+9Ag3xivJHypK8sAsQkvRrh9djAYd3U= +ia8+eC8+w4kAKqFUfldoNJRnTrB3HujZpVo1w/olmQcgDkhauLDwevq6HDxIQfj+MwPKHEN1nwlG38s7H8bVQLq2cW2sKojGhmXRt5gQS7pl9vSkmZUukYbtYIwlH2ar +ia8+eC8+w4kAKqFUfldoNFleuIMkfmmQe5GeJOrtP06Ujpm2XMH2wThJkg+8rbpsNIDDOSEt+3Shc89ehPQ+X1I6XXzelprnw3587zIBc0+fJ7tdk9mLmmJlfMB/y5ED +1u+XjG/2+GSQRv6EzCaWRQ== +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz4KpSABaS2TFB4Zv5Vx7JdyBp4zC8v/0Ax2mJznU4Qgr3Fkai//qLjPqC2FyAjNfaGXOdPa6fyYsdmGfSckqxXY +1u+XjG/2+GSQRv6EzCaWRQ== +VZTaBnPon5oSD+1tnXcGPKQH/HmCmJ1ZaGtmiwUM96qyGCvRfMyvxnt9o5QkTfxt +tsy2kpHYj4+ekqxIuRBOShDbI1Sq80lOVqpajnmxkLNCLYlL+J7zyGrQoiu6cAAs +H/MhTmO8bRfoMqZpuPssdzoslvnUtHYmA4lKVUKxEGbQGczUd+LwaHJ/W5hAjMpSJI2nJhbj6X5WukwLIUkF4I9P4cqIPwGfAsXysxBwO4CD8lu9mJH5UjjlnIwS9WoK19/49sgHoTip/A5rbaGdJA== +ncUn2TP8ZQ4fZMBYk+CUrQfSSPY5BQFPM2gQtDKRi7o= +L0eUthVnpkGsmKFAX6d+uKdLEGlEXm+o7O9zcmHr26U= +1u+XjG/2+GSQRv6EzCaWRQ== +zY8E7PPnV8leGrujF1aHb0UfhsJRIoYrBb2c/ZZf+5LNUuA4acj/40Hl/Dw7aUqzuF8ii0Z+sAWDGDntCQQFL9y/v6Fc+1xbrbUlceZ2De4= +mqLOOC+GaTVcknzju+Rrp+tX0T/RzXvlCuYzPMrrlbk= +XbO8wq8dAnnb0SizGWQkY1X9dXXI2d6CW1kr74ARLlgqlw9f/MiBofoy4TW/7IwY +TgjK3GrBHwrMgSgUIZQiZ1yAyY4wnv0O1uKheLfdBEv+dUwOn8UaBPuTEvGAQNxV +1u+XjG/2+GSQRv6EzCaWRQ== +Ok7/pyXurdp+IyZCH/4JshH+joaNyH1HfGj22uhBkZtAmo79cDoWUwDCDr4OCeHp +XdtEyBM3Mm5sMRdUDFrxB4Yr5vpXWmFioUnCsS1wjUhP2yruA+I0p29XkL/uJSNi +dG/vjuhnCW6wEnc8IwrWGxlsIKwmCS/yJ4dB2Dk8R5jOEMbVE/eMmOpJSghECm+I +WHkOzVx7seuLmxs5Hu+l/iDmKuVKi/pTW+c8evqV+TMVEqGxxzIStmDwxFwASXBI +gC7pmugJ3/w5trYRkDiKMa4wy3wNAyxBC4iwucpU9NHSblxG30+nRRiXYwmugESa +WHkOzVx7seuLmxs5Hu+l/vA1+zvyq6uL/pTdJ68c9WrHktkhnpUT9pEiBMcqCEn+ +gC7pmugJ3/w5trYRkDiKMY4HdC0yjfMFUChjjo4PoV/t4VidWz13ci0r8VL2Ka6L +1u+XjG/2+GSQRv6EzCaWRQ== +ia8+eC8+w4kAKqFUfldoNJRnTrB3HujZpVo1w/olmQe9BYfcAv4AF0ydtinmria8QUEgK/VLq22GnF+vQRhr5x4aYWxeiMQoWy/gddJQWD4= +guSZID0bFQuDFoWO2uxAJoOpitq6s6c9ladjgxAHqGE= +1u+XjG/2+GSQRv6EzCaWRQ== +JdXhSviJbm0Up2sao7vq36of8Uy3vcwi7Iu3gLOwxoQA8G37CS1jGGWgI7Y9yMBa +gZEyVc5r8H9k9NIycesvy6cIGWnTRYmpMVJjQDcafBMSO+y7Qxy8wrm7NWiM+d1p +TislWrT38qg22HF2lZAEhagYNX3EynlpqoKEbS1dDXF+oNU/3eatoGc6JW6WD8J/SqiHoKw5cEyGOhTIsL9XMQ== +e/2fgt4rjVffGu044FpqO+5QWEyihbAAow0Ra6R+pvY= +1u+XjG/2+GSQRv6EzCaWRQ== +x4FyTeL29MhPrjitCk954P4oY2tTgV0B7ily10sS7lA3QSATWhGTrZHEvYjIkcA3cYDroPmUb9I4c9W+zlYL/fWixAVp6YyOoIzQB+tsymP5KmZ1eXhjyfLQIBR01Ql1 +DBvDjzGRl865Dx9THC/LzGLnOMDcJE56tt3ln1imOuEaiIRtk1/miyiqoaKKwqHa +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmUSzH3RhIXAObag6JAiSvcYDl3/FMg26+76xPeFVSVUzRSORDcMswfPeb+Id+7icdDPpmpYTnfmA9erFwV3QtD8vdLD6G2AnMWO2BcBPqVwpw== +1u+XjG/2+GSQRv6EzCaWRQ== +pL0fy2Pm7iZLBV6YOaFzdtmedKx1BbcWRqJJa8fm5u94vXBV2iff1kMPUyWz0ATPi/lMZ8H5fnDtn+u3fmhr6w== +D9nFoWE/zqXaNxfAecYXRz3EllaUhpm+wR8/epm3L4IorLfyubItOExAJtPRq/6LU601LdhPENygNm/2a6j3Zg== +i1rK72mGq0NbxYhFyYQqfEhcqBTR6uhCqEmlvWeON2h+rkP0z3pxcTSUuNjT0vUAob+myoqvcMQQLh91iPlJBkmuUeIu01iGUcz0f2yAaqKc3zlvWGq6RfDrYIp5/k9Qjed6iR1nef/ivYf29zsxdQ== +i1rK72mGq0NbxYhFyYQqfADRXEuVO1CrDnojKo2maUPzhu8zWXJFG/NmmfHj2f4XalavcEL0jNqKMsbCd/K5PVGIK9A7pmhCz8TrSe1S/O9agTHaiSoa6fq2UHQmbAF72Y+o7WdYyhLgCKiliJnLMiTzo56PYm4TnoXRdCrmyPU= +R65WfMhum3uW9cFR5COFLN7Wc6ZLG/OjI03kAXUMXDy4hSav7fJAxj/HJphWMueHpmyZheHoJNP96MN0qTOK/A== +1V2v8QerKOmubvSxgB4eTAc55FTpe8E9wukj9//MQhZnPuWp10+nkx5PxupDA99KmT8i1GtRXQoaaWcDRyIHVBenDGWhUhOmFRZL6Y3eVLmJgnK3zrHTM26iCyOaR9b0Vc3DhY7AmF0+wr1P4VDmVw== +VmVrGQo2zRokW/ZuO9bN6zM/X2hHBCd+n2OGnnATmrSuY4P/AlnqUWfNJ3Nv+yymkvsgpH5W/0SYmPhdqMVhkH/dHQgCzTEE1GqrqvYqrgRxxh7hMZvcYDZ40U2v+LsTpNnUSYJFX3MqadmmbBlAlY8Q75naXGM5+g8Rc4uo+H9LExXN9m8zr2uma/6FIf97uRFy7tNTqH23K+xK+UoEGQ== +1u+XjG/2+GSQRv6EzCaWRQ== +ojcUvW+Z2ehEJ6yMJpmY+2Wn/f8jriXeCO/n+xjQSDo= +se9Dh4zFq1MFzB7L76dqbK54LynI4rnsxoEGjtrxmSx+39h/gyjwfR32pKzeOvN7WMqe2slgQ6nz61p3GG83Sw== +x4FyTeL29MhPrjitCk954KmR28KomxwtUfjAKmMQtrCEcpMIHg4/xhCeXHG0AJpd +1u+XjG/2+GSQRv6EzCaWRQ== +pL0fy2Pm7iZLBV6YOaFzdowJAQ8/opIPZZ+HkGXl3gc= +C12I2xikRrWbRI7C4wywGvuQaSJVHEQ2o24Z/HyoQD3Y5qoRmp1VDTnjSuYNUdmk +eUiH0D2G7OX/BBtLbyAxKeDtyLoKqLYl5O0s9y7QPfs= +IZ4I+7EmYS7/1XOeZ6CWDdD+oqQ5wmL7TAgUmn//LgqZPHhMS7Qyj1oag8ZCV22FflVgEWkB03JOTGt1xpelUw== +VmVrGQo2zRokW/ZuO9bN62l5TSQZ6X27Bpsgwwt4vKVuDwdHgalLHvyq/LOG/7j9JiOgoSY3atBGlGmuid1mIN0jt3Kw1/8F65Be+k9A7LXNoZSysmPp8tloYfXSthEv +VmVrGQo2zRokW/ZuO9bN65dMN54jAddfOSx4n7idcxjvr+zeJ9IpE76uykKPEfJH +1u+XjG/2+GSQRv6EzCaWRQ== +CUJhbbEPyvQGJkcEyQDCCVBthLNxRzKu1jez+UIsYvsGQ4YRZV8vgvKm/mUK2C4e +aNslf0GOl/Rm2EuTBVXekEvQbURQUp6iWYjzRs7ioG4XWOdPs0QmbQkXLcCZq9RRY6N1GWqTYzD6W4TtbB1D4i4lN7+VOyerDQyXUaEujh7Lhjbdd+MNP+G3NqQBXQyyCVwtwOUW1m6nMgpEoYcWpA== +jaf2dBsAcKRFnK0qPMZEAgjw66AeWrlqZKQtSG4FxDnPUf3XBvPRm19t8CCNH+0TwEvVg0IPJ/BeQB3KxZx/NvhOxRyxeEPrw1epLlUvE5meRvuGPNvUI6IM6G4EpwQtt/g3K0/wl5Vl0L8Q2+UZDcgyrOOwuPvQlL0c0J8o78fxxdta5Hb6Xkt+7l6X5EWl +rsnFHqHoghCds1UZuWibuj5jurYsP9IoIv6TVfM2hLTx6aP0hgc+D5h3k4Vpr2A4dld49nKJa6kjbzHN55pY3g== +wlLHv6kT3Q/RmtMBN4nDAQPL8fRGSJ7ywN4wBg+SJh/aeUGRAvz5pRv0h+WJ9/Qj +VmVrGQo2zRokW/ZuO9bN680cvVaHPq9Fp1ZPySaYwnmW5gpunRIaW4FPoCCjx2xBP4JxbHT2yBu4i2/sFTKfBQ== +VmVrGQo2zRokW/ZuO9bN6+J5oncvigHCKS60Q3AUCcW3G8FV0USzV4NzRnyvzBO2QLwVwDW0qIpVpoxoStvtDkPZ7wCicCvvpkg0PIK08c9PsWv1brGlHo3AfbIdO8UAltrN6W4sZOUJzy+4N4R9Iw== +VmVrGQo2zRokW/ZuO9bN609kWAnPr5zJCUC70Boi+F/mqxZTy+Tam5TsJYc5dAHg +1u+XjG/2+GSQRv6EzCaWRQ== +4hdB7RJambPsQ0dtPl5R2R2cbNN2oigWOYu+sXAe6NE= +1u+XjG/2+GSQRv6EzCaWRQ== +Z3g6uL9S/9ntt9MPzO5YUnZGBlfJbV6yNqtriMuLq1wLMTZjN3IVDiCN0wA78uiv1/o/g/jEpC9/ilsSUDsmJ+iK3TNF2cWwmc8iTN8jONI= +sdaG6pI/oKv54ne2hoRWEXiBKfLIa8liaOXRpBh6zK5hWlQeA+Xb+2u4zkCBww38 +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN616YEs6o8UaynlYH0LZEQXwGk42+paXandqiU60ocVvQ +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +5++GSTypxH+5sPkSDE2GU6Rh7s109vQ90lPWweoDYnVbgBeL2ajXuJjhfbxYL+iFfj4yZiCLvc9dpytJhK3AtcrBVI6pWFrY3VvR7hFxp1U= +uTEK8Ng11d3ix2pA+DD/acQS2l97zooUzn3H5myHPzA= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqK/SC/xF1CSxgFFveqoHoMIUl7jHVs0ihAslxXRbcw8I= +1u+XjG/2+GSQRv6EzCaWRQ== +se9Dh4zFq1MFzB7L76dqbK54LynI4rnsxoEGjtrxmSx+39h/gyjwfR32pKzeOvN7WMqe2slgQ6nz61p3GG83Sw== +x4FyTeL29MhPrjitCk954KmR28KomxwtUfjAKmMQtrCEcpMIHg4/xhCeXHG0AJpd +C12I2xikRrWbRI7C4wywGvuQaSJVHEQ2o24Z/HyoQD3Y5qoRmp1VDTnjSuYNUdmk +eUiH0D2G7OX/BBtLbyAxKeDtyLoKqLYl5O0s9y7QPfs= +IZ4I+7EmYS7/1XOeZ6CWDdD+oqQ5wmL7TAgUmn//LgqP8ZrcWYL8thFQmeyEFYzXKIXeeZfoqBw8sa/taDW3Pg== +VmVrGQo2zRokW/ZuO9bN6w1seSZpf8xmjVvAaqSi9OGpqOi+7pU1abeYrsYqu6Sr +VmVrGQo2zRokW/ZuO9bN64KR8jEPy55X1u2bC9cxVIZNrd5QT24FOFdxRo+4kz4rBNusOCYV/b9abOdJuFaU9Fhtd85XghUj5uGNoogO7VSlRZXSISshcsypWdeKMozcvTYlQ+wam0ao/1CmYv6hmw== +VmVrGQo2zRokW/ZuO9bN6+i0JMdAmwxc644d5b1nMO1O9M31hX59or83v/Xn1k+L +VmVrGQo2zRokW/ZuO9bN6y1I47Lsjes5Xkzm/KZ2HUj6vOCoGShzUiscvkZRGEAKQJ5ExlE2X8qSRFTlvUTm6sNBolE1DsX5r1eM/0iFH2q8le22nIC+BEIRup+3CVjvFVPJzGDGjoD+TanrBFwRDQ== +VmVrGQo2zRokW/ZuO9bN62w+jOkDSGqY5PZ/7RoBHYCOjhlYm2uHRUdkCQL794CVnBBIprrss+Ls7mct7vhLefkRzSz920aqkN5QuSRsFDE1Vj5fsFIGeL5Uo39XkqbBCtOgPkUVWMlXbpjFetHpnw== +1u+XjG/2+GSQRv6EzCaWRQ== +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz4KpSABaS2TFB4Zv5Vx7JdyLgctR9EwtNuBbmc2ypq6eFI1qHJ/XVrVBNd/KftiLMs= +1u+XjG/2+GSQRv6EzCaWRQ== +miur89QK7nEpQAwfRIYK4Ho/PKjy3TwNrkmgw6DwvKc= +tHew/DCQwNb+3qGL45H/hui4I8tYgHYabVCK4f+xkztWjuTkjSdyk3gb534ZCyGX +Z8UsPk1Q7HtwjRd4g01ryw== +cTbzG7/k3XiDdutCNmF/2ks1/43SpLaYL57rY7HQJW5UC90fcrRNw2puWFsT5TOZ +Hv+1tS7TXtg+/Dt2lMoBazAaKhfe5CjWDgT2LR+okHHL6AqzeuS15g1KCKIbc/aWGSgBa/b4ornDXC2yx/hDtcQzYSaWH/SZ8e6hWLNzXa0= +Hv+1tS7TXtg+/Dt2lMoBa5UN7dQtOqzvgLRJRfQ0wIgWvLzImOmZBSOvCqAsYaVq6Z8EjEyTb6+XtfXvkTlRcGN2fOJPDr5ZzWZOy7W4EK4= +RH2ZsQzhJ3O1j5zk/csTIpGUJv1Nyr3nY1sr5b2ccfSlBxgd1E+rOnnK1137dQmcgFZHQfpjC4vv7w6k+4YcOg== +Ys4bozvJBgtB7q16qcvtB4Ixr76Ej3ifdpC0HxiGUCyDlnsItfNC2SJxPuOma/3BuWFIS/yug8iBMo/j4/o0uA== +Z8UsPk1Q7HtwjRd4g01ryw== +wgR07xfoapmx6eEnFHXXYo4se8cEG3Kpe+KryARC+58c1jICgdZ/yfiiPJOB8osn +L0eUthVnpkGsmKFAX6d+uKdLEGlEXm+o7O9zcmHr26U= +1u+XjG/2+GSQRv6EzCaWRQ== +b4OJVZe8QyIpjuTpKXDL9A== +rwlGq64HahoUAdeXLAM7SwtaN4ZWM8og0bUMJ0NOmU4eIVo7WleY9L/fLW6KUrpZdr6e/amzK77khjWDUbfjVw== +xWoGNWjKGPfI4gq8aHoTfAADDENfGBZZa4P7NhxPqflMBxHMm3KM11FqaWXQnDiE +1u+XjG/2+GSQRv6EzCaWRQ== +wlLHv6kT3Q/RmtMBN4nDARSvjo+wUq8H5LIXqfx3uLBuLVx/iYuuFhvdRQjNiCC3mGcWQoQaGaUxtEXGhHPGUA== +VmVrGQo2zRokW/ZuO9bN62MHMdRT/bo2KCQA5a/iHh44aQSYamPFipFLgUnPpDTI +VmVrGQo2zRokW/ZuO9bN65crVWaUEGqKrycaQzlEBnED3RstWpT+t2TgBw6hCEFm +VmVrGQo2zRokW/ZuO9bN6xE8/gF2oIPkoiMICIAd1AKNVZTFozyqJzCvZhdQZhkTI6ud+w3iwu4CeP+jk8kVjA== +VmVrGQo2zRokW/ZuO9bN678V/LY1w0LrNWJYeJxFuv8lPAmy8z657fU29X0DvzVg +1u+XjG/2+GSQRv6EzCaWRQ== +VmVrGQo2zRokW/ZuO9bN68hDV0hJZ+h75mNR6HWpX8cUNh6q7XH0JCXxtTr9+QNg +VmVrGQo2zRokW/ZuO9bN67S2cMjHZWxVQqcQnMkuijxEX+y/oW/H/mJdfoFY36lh +VmVrGQo2zRokW/ZuO9bN668pafzJX6WTiPOMiH/eHNkYzNyWDCR0H49V5dGZeObgg9Mxc11aqcwcZNuJwV7hKg== +VmVrGQo2zRokW/ZuO9bN65a1lvAsgN8t7bU4ymW4veAMoQQiFQxTmXuKyQ0W0d6b +1u+XjG/2+GSQRv6EzCaWRQ== +L0eUthVnpkGsmKFAX6d+uMfCKxbeZE5XF/T3qfhxdVg= +A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ= +L0eUthVnpkGsmKFAX6d+uKdLEGlEXm+o7O9zcmHr26U= +1u+XjG/2+GSQRv6EzCaWRQ== +r4H+8Po5vfX+mQNpyyNfqYE2cMlQeHfO5OGO44DPDIM= +4mP/WAowVG+2xbZZEAnATgiimeR9zGwCqEnz0DwvD6Ntk+04ONPxUX5Jofrg3lvJ +b4OJVZe8QyIpjuTpKXDL9A== +OO/dMlOTxBikYSnUTxYxGoo1e4d9a2dJZTGtQemHKj8= +VmVrGQo2zRokW/ZuO9bN616YEs6o8UaynlYH0LZEQXwGk42+paXandqiU60ocVvQ +YdSR6pyH4bNMAFEsS23H+Q0wLdDp3qS2XQEA+Pt5gvQ= +VmVrGQo2zRokW/ZuO9bN61NtX+W4Z81vyIgNc7bfj8ScGuujW22yH0T8YtIQEhHl +CVRTg4gcJQueLD3Ni7+7eA== +A50UO/kAI17YP7MCbTvBkF1QxWGO4d7iFEjQyMKkG7Et7gIkhal1mvZiTsAv76s9 +xWoGNWjKGPfI4gq8aHoTfCvmCdiXBxNOXqLgrzMPQ6YpjxbqlA6+KifkyBYEhUnLM4EqaRP0uxbk2Gj0m0Rw7w== +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqzcS5swPR9eX3Xw0rx13vEw== +1u+XjG/2+GSQRv6EzCaWRQ== +5++GSTypxH+5sPkSDE2GU6Rh7s109vQ90lPWweoDYnXHuuPNnDfWqqjxV0CdTlQvAf9kkY7zU/mcin41BuJ64NPd4yq22kwojKaLsCQLrE4= +uTEK8Ng11d3ix2pA+DD/acQS2l97zooUzn3H5myHPzA= +L0eUthVnpkGsmKFAX6d+uDz5ZRBys3d0SQKK5GYgSmWghjKa4Bx/9hwfBJOgnWLqK/SC/xF1CSxgFFveqoHoMIUl7jHVs0ihAslxXRbcw8I= +1u+XjG/2+GSQRv6EzCaWRQ== +ojcUvW+Z2ehEJ6yMJpmY+2Wn/f8jriXeCO/n+xjQSDo= +se9Dh4zFq1MFzB7L76dqbK54LynI4rnsxoEGjtrxmSx+39h/gyjwfR32pKzeOvN7WMqe2slgQ6nz61p3GG83Sw== +x4FyTeL29MhPrjitCk954KmR28KomxwtUfjAKmMQtrCEcpMIHg4/xhCeXHG0AJpd +1u+XjG/2+GSQRv6EzCaWRQ== +pL0fy2Pm7iZLBV6YOaFzdowJAQ8/opIPZZ+HkGXl3gc= +C12I2xikRrWbRI7C4wywGvuQaSJVHEQ2o24Z/HyoQD3Y5qoRmp1VDTnjSuYNUdmk +eUiH0D2G7OX/BBtLbyAxKeDtyLoKqLYl5O0s9y7QPfs= +IZ4I+7EmYS7/1XOeZ6CWDdD+oqQ5wmL7TAgUmn//LgqP8ZrcWYL8thFQmeyEFYzXKIXeeZfoqBw8sa/taDW3Pg== +VmVrGQo2zRokW/ZuO9bN6x/YT5slPgkQ0GZxbm2QEWnzpL719J8GTLSmhR4fRCb4wGJcDqnLIVKyWcBD3g7a50296Cq5m/n/BgxhUSqYclghEiE7ONsAoyfBaGROVRpB +VmVrGQo2zRokW/ZuO9bN6zM/X2hHBCd+n2OGnnATmrTGW+VwmHBYIXijdBPs10gzyrzRQoj78D3egv8vuHO02AFN6p7MI+MoNSaVEZl22uM= +96orka/uERLyRst14azQwnND1LaAMeJ6hPF2g6RNEz66k7o51h35S83aP/2V6PvQ +1u+XjG/2+GSQRv6EzCaWRQ== +tHz0aRebX9i8AbCMccCKRFg7xRKDpLjw5cUxl4u9/iw= +AnS4WlQEZYbtLPgfDV/iDg== +1u+XjG/2+GSQRv6EzCaWRQ== +1u+XjG/2+GSQRv6EzCaWRQ== diff --git a/class_v2/one_key_wp_v2.py b/class_v2/one_key_wp_v2.py index be47cd4c..982e22a0 100644 --- a/class_v2/one_key_wp_v2.py +++ b/class_v2/one_key_wp_v2.py @@ -821,6 +821,7 @@ class one_key_wp: version php版本 sitename 完整名 act disable/enable 开启关闭缓存 + is_cache 附加字段:指定开启的缓存类型,nginx,ols """ # 校验参数 try: @@ -918,7 +919,7 @@ class one_key_wp: return public.return_message(-1, 0, public.lang("Apache cache is currently only supported under Multi-WebServer Hosting")) # 添加ols缓存 - if webserver == "openlitespeed": + if webserver == "openlitespeed" or get.get('is_cache','') == 'ols': from wp_toolkit import wpmgr wpmgr_obj = wpmgr(site['id']) @@ -1437,35 +1438,42 @@ class one_key_wp: optimize_db().self_db_cache(get) # 设置fastcgi缓存 - if int(get.enable_cache) == 1 and public.get_webserver() == 'nginx': - from wp_toolkit import wpmgr, wpfastcgi_cache + if int(get.enable_cache) == 1: + # 多服务下,开启ols缓存 + if public.get_multi_webservice_status() or public.get_webserver() == 'openlitespeed': + self.set_fastcgi_cache(public.to_dict_obj( + {"version": values['php_version'], "sitename": values['site_name'], "act": "enable","is_cache":"ols"})) - self.write_logs('|-WP Plugin nginx-helper installing...') - wpmgr(s_id).init_plugin_nginx_helper() - self.write_logs('|-WP Plugin nginx-helper installation succeeded') + # 单服务下,支持nginx与ols缓存 + elif public.get_webserver() == 'nginx': + from wp_toolkit import wpmgr, wpfastcgi_cache - # 配置Nginx-fastcgi-cache - wpfastcgi_cache().set_fastcgi(values['site_path'], values['site_name'], values['php_version']) + self.write_logs('|-WP Plugin nginx-helper installing...') + wpmgr(s_id).init_plugin_nginx_helper() + self.write_logs('|-WP Plugin nginx-helper installation succeeded') - # if self.__IS_PRO_MEMBER: - # from wp_toolkit import wpmgr, wpfastcgi_cache - # - # # 配置Nginx-fastcgi-cache - # wpfastcgi_cache().set_fastcgi(values['site_path'], values['site_name'], values['php_version']) - # - # self.write_logs('|-WP Plugin nginx-helper installing...') - # wpmgr(s_id).init_plugin_nginx_helper() - # self.write_logs('|-WP Plugin nginx-helper installation succeeded') - # else: - # # 安装nginxHelper - # # slug nginx-helper - # values['slug'] = "nginx-helper" - # values['wp_action'] = "install-plugin" - # self.install_plugin(values) - # self.act_nginx_helper_active(values) - # - # # 安装并启用nginx-helper插件 - # self.set_nginx_helper(get) + # 配置Nginx-fastcgi-cache + wpfastcgi_cache().set_fastcgi(values['site_path'], values['site_name'], values['php_version']) + + # if self.__IS_PRO_MEMBER: + # from wp_toolkit import wpmgr, wpfastcgi_cache + # + # # 配置Nginx-fastcgi-cache + # wpfastcgi_cache().set_fastcgi(values['site_path'], values['site_name'], values['php_version']) + # + # self.write_logs('|-WP Plugin nginx-helper installing...') + # wpmgr(s_id).init_plugin_nginx_helper() + # self.write_logs('|-WP Plugin nginx-helper installation succeeded') + # else: + # # 安装nginxHelper + # # slug nginx-helper + # values['slug'] = "nginx-helper" + # values['wp_action'] = "install-plugin" + # self.install_plugin(values) + # self.act_nginx_helper_active(values) + # + # # 安装并启用nginx-helper插件 + # self.set_nginx_helper(get) # 设置登录入口保护 if int(get.get('enable_whl', 0)) == 1: diff --git a/class_v2/panelModelV2/publicModel.py b/class_v2/panelModelV2/publicModel.py index 141a2f5b..6cc108b2 100644 --- a/class_v2/panelModelV2/publicModel.py +++ b/class_v2/panelModelV2/publicModel.py @@ -158,6 +158,22 @@ class main(panelBase): if os.path.exists(site_total_monitor_path): data['site_total_monitor'] = {"is_install":True} + #获取多用户授权状态 + data['account_limit'] = 0 + #处理多用户授权 + try: + import base64 + from Crypto.Cipher import AES + from Crypto.Util.Padding import unpad + aes_key = b'FB8upo8XMgP5by54' + aes_iv = b'lOrrq3lNEURZNdK7' + ciphertext = base64.b64decode(public.load_soft_list(False,3).get('aln', "0")) + cipher = AES.new(aes_key, AES.MODE_CBC, aes_iv) + plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size) + data['account_limit']=int(plaintext.decode('utf-8')) + except Exception as e: + public.print_log(str(e)) + return public.return_message(0, 0, data) #统计面板备份占用空间 diff --git a/class_v2/panel_auth_v2.py b/class_v2/panel_auth_v2.py index 99156c2f..e366e89c 100644 --- a/class_v2/panel_auth_v2.py +++ b/class_v2/panel_auth_v2.py @@ -835,7 +835,7 @@ class panelAuth: resp = self.send_cloud('{}/api/order/{}/status'.format(public.OfficialApiBase(), args.order_id), {}) # 订单支付成功时,刷新授权信息 - if int(resp.get('message', {}).get('res', 0)) == 1: + if int((resp.get('message', {}) if isinstance(resp.get('message', {}), dict) else {}).get('res', 0)) == 1: # 刷新授权状态 public.load_soft_list() public.refresh_pd() diff --git a/class_v2/panel_plugin_v2.py b/class_v2/panel_plugin_v2.py index d47d831f..38b9c53e 100644 --- a/class_v2/panel_plugin_v2.py +++ b/class_v2/panel_plugin_v2.py @@ -714,6 +714,10 @@ class panelPlugin: self.set_pyenv(pluginPath + '/install.sh') public.ExecShell('/bin/bash ' + pluginPath + '/install.sh uninstall') + # 监控报表补丁, 同步删除网站配置 + if get.sName == 'monitor': + self.clear_site_config() + if os.path.exists(pluginPath): public.ExecShell('rm -rf ' + pluginPath) public.write_log_gettext('Installer','Successfully uninstalled software [{}]',(pluginInfo['title'],)) return public.return_message(0, 0, public.lang("Uninstallaton succeeded")) @@ -3344,3 +3348,106 @@ class panelPlugin: def __ensure_plugin_list_obtained(self, force: bool = False): if force or not self.__plugin_list: self.__plugin_list = public.load_soft_list(force) + +###################监控报表补丁 start############################### + # 删除监控报表配置 + def clear_site_config(self, args=None): + ''' + @name 清理网站配置文件(apache,nginx) + @return void + ''' + # 清理自定义日志格式配置文件 + if public.get_webserver() != "nginx": + monitor_log_format = "{}/vhost/nginx/0.monitor_log_format.conf".format(public.get_panel_path()) + else: # apache的情况 + monitor_log_format = "{}/vhost/apache/0.monitor_log_format.conf".format(public.get_panel_path()) + if os.path.exists(monitor_log_format): os.remove(monitor_log_format) + + is_reload = False + + # 获取网站列表 + site_list = public.M('sites').field('name,project_type').select() + + # 遍历网站列表 + for i in site_list: + SiteName = i['name'] + project_type = i['project_type'] + if self.del_site_config(SiteName, False, project_type): + is_reload = True + + # 若为apache需要关闭logio模块 + if public.get_webserver() == "apache": + self.close_apache_logio_module() + is_reload = True + + if is_reload: public.serviceReload() + + if args: return public.returnMsg(True, 'Configuration cleanup completed!') + + def del_site_config(self, SiteName, is_reload=True, project_type="PHP"): + ''' + @name 删除nginx网站配置 + @param SiteName 站点名称 + @return void + ''' + if public.get_webserver() != "nginx": + if project_type == "PHP" or project_type == "docker" or project_type == "WP2": + config_file = '{}/vhost/nginx/{}.conf'.format(public.get_panel_path(), SiteName) + elif project_type == 'proxy': + config_file = '{}/vhost/nginx/{}.conf'.format(public.get_panel_path(), SiteName) + else: + config_file = '{}/vhost/nginx/{}_{}.conf'.format(public.get_panel_path(), project_type.lower(), + SiteName) + else: + if project_type == "PHP" or project_type == "docker" or project_type == "WP2": + config_file = '{}/vhost/apache/{}.conf'.format(public.get_panel_path(), SiteName) + elif project_type == 'proxy': + config_file = '{}/vhost/apache/{}.conf'.format(public.get_panel_path(), SiteName) + else: + config_file = '{}/vhost/apache/{}_{}.conf'.format(public.get_panel_path(), project_type.lower(), + SiteName) + + if not os.path.exists(config_file): return False + config = public.readFile(config_file) + if not config: return False + config = config.strip() + + # 检查是否存在配置 + if config.find('Monitor-Config') == -1: return False + + # 清理配置 + config = re.sub(r'\s*#\s*Monitor-Config-Start.*?#Monitor-Config-End', '', config, flags=re.S) + config = config.strip() + + # 写入配置 + public.writeFile(config_file, config) + + if is_reload: public.serviceReload() + return True + + def close_apache_logio_module(self): + ''' + @name 关闭apache logio模块 + @return bool 成功True,失败False + ''' + apache_config_file = public.get_setup_path() + "/apache/conf/httpd.conf" + mod_logio = "LoadModule logio_module modules/mod_logio.so" + # 前提文件存在 + if os.path.exists(apache_config_file): + # 判断logio模块原本是否是关闭的状态 + if os.path.exists("{}/default_logio.pl".format(public.get_plugin_path('monitor'))): + apache_config = public.ReadFile(apache_config_file) + # 直接给所有mod_logio加上注释# + new_apache_config = apache_config.replace(mod_logio, "#" + mod_logio) + + # 写入新配置 + public.WriteFile(apache_config_file, new_apache_config) + config_err = self.is_config_error() + # 错误则恢复旧配置 + if config_err: + public.writeFile(apache_config_file, apache_config) + return False + return True + else: + return False +###################监控报表补丁 end############################### diff --git a/class_v2/panel_site_v2.py b/class_v2/panel_site_v2.py index 6204ec86..fda68fa3 100644 --- a/class_v2/panel_site_v2.py +++ b/class_v2/panel_site_v2.py @@ -572,6 +572,32 @@ include /www/server/panel/vhost/openlitespeed/proxy/BTSITENAME/*.conf public.print_log("error info: {}".format(ex)) return public.return_message(-1, 0, str(ex)) + # git部署,测试连接 + if get.get('deploy_type') == 'ssh': + get.is_create_default_file = False + from git_tools import GitTools + git = GitTools() + # 关闭ssh测试 + # repo = get.get('repo') + # if not git.test_ssh(repo): + # return public.return_message(-1, 0, public.lang('Failed to connect to the remote repository. Please make sure the key is configured correctly!')) + + from panel_plugin_v2 import panelPlugin + Plugin = panelPlugin() + webhook_status = Plugin.get_soft_find(public.to_dict_obj({'sName': 'webhook'})) + if webhook_status['status'] != 0: + return public.return_message(-1, 0, public.lang("Please install the webhook plugin first!")) + + # 判断是否安装webhook,没有则自动安装 + if not webhook_status['message']['status']: + Plugin.install_plugin(public.to_dict_obj({'sName': 'webhook', 'version': '1.4', 'type': '1'})) + Plugin.input_zip( + public.to_dict_obj({'plugin_name': 'webhook', 'tmp_path': '/www/server/panel/temp/webhook'})) + time.sleep(2) # 等待2秒确保安装成功 + if not Plugin.get_soft_find(public.to_dict_obj({'sName': 'webhook'}))['message']['status']: + return public.return_message(-1, 0, public.lang( + "Automatic installation of the webhook plugin failed, please install it manually!")) + parse_list = [] main_domain = {} if hasattr(get, "parse_list"): @@ -858,10 +884,13 @@ include /www/server/panel/vhost/openlitespeed/proxy/BTSITENAME/*.conf get.sql = 'false' if get.sql == 'true' or get.sql == 'MySQL': import database - if len(get.datauser) > 16: get.datauser = get.datauser[:16] + # if len(get.datauser) > 16: get.datauser = get.datauser[:16] # 取消长度限制,由上游控制 # 生成不重复的数据库用户名 - db_name = public.ensure_unique_db_name(get.datauser) + if get.get('is_clone', False): + db_name = get.datauser + else: + db_name = public.ensure_unique_db_name(get.datauser) get.name = db_name get.db_user = db_name @@ -906,6 +935,29 @@ include /www/server/panel/vhost/openlitespeed/proxy/BTSITENAME/*.conf from public import websitemgr websitemgr.remove_site(get.pid) + # ================ git satrt ====================== + if data['status'] == 0 and get.get('deploy_type') in ['ssh', 'github']: + dict_obj = { + 'site_id': data['message']['siteId'], + 'site_path': get.path, + 'branch': get.get('branch'), + 'repo': get.get('repo'), + 'coverage_data': True, + 'deploy_script': get.get('deploy_script', ''), + } + if get.get('deploy_type') == 'ssh': + # 校验目录文件 + dir_contents = os.listdir(get.path) + if not (len(dir_contents) == 2 and '.user.ini' in dir_contents): + self.DeleteSite(public.to_dict_obj({'id': dict_obj.get('site_id'), 'webname': self.siteName,'database':1,'path':1,'ftp':1})) + return public.return_message(-1,0,'The directory is not empty') + + data = git.add_key_repository(public.to_dict_obj(dict_obj)) + # 删除网站 + if data['status'] != 0 and dict_obj.get('site_id'): + self.DeleteSite(public.to_dict_obj({'id': dict_obj.get('site_id'), 'webname': self.siteName,'database':1,'path':1,'ftp':1})) + # ================ git end ====================== + return data except Exception as e: return data @@ -1635,6 +1687,11 @@ include /www/server/panel/vhost/openlitespeed/proxy/BTSITENAME/*.conf if os.path.exists(vhost_proxy_file): public.ExecShell('rm -rf {}*'.format(vhost_proxy_file)) + # 删除免费版监控报表站点配置文件 + site_total_dir = "/www/server/panel/vhost/nginx/extension/{}".format(siteName) + if os.path.exists(site_total_dir): + public.ExecShell('rm -rf {}'.format(site_total_dir)) + # 删除openlitespeed监听配置 self._del_ols_listen_conf(siteName) @@ -1680,6 +1737,9 @@ include /www/server/panel/vhost/openlitespeed/proxy/BTSITENAME/*.conf public.M('binding').where("pid=?", (id,)).delete() public.M('domain').where("pid=?", (id,)).delete() public.M('wordpress_onekey').where("s_id=?", (id,)).delete() + # 删除git数据 + from git_tools import GitTools + GitTools().del_site_git(public.to_dict_obj({'site_id': id})) public.write_log_gettext('Site manager', 'Successfully deleted site {}!', (siteName,)) # 是否删除关联数据库 @@ -2676,7 +2736,7 @@ listener Default%s{ prot = '8190' conf = """ -listener SSL443 { +listener SSL443 {{ map BTSITENAME BTDOMAIN address *:{prot} secure 1 @@ -2691,7 +2751,7 @@ listener SSL443 { enableSpdy 15 enableStapling 1 ocspRespMaxAge 86400 -} +}} """.format(prot=prot) else: @@ -3146,9 +3206,14 @@ listener SSL443 { get.validate([ Param('siteName').String(), Param('updateOf').Integer(), + Param('reload').Integer(), ], [ public.validate.trim_filter(), ]) + if not hasattr(get, "reload"): + get.reload = 1 + else: + get.reload = int(get.reload) except Exception as ex: public.print_log("error info: {}".format(ex)) return public.return_message(-1, 0, str(ex)) @@ -3232,8 +3297,8 @@ listener SSL443 { if os.path.exists(p_file): public.ExecShell('rm -f ' + p_file) public.write_log_gettext('Site manager', 'Site [{}] turned off SSL successfully!', (siteName,)) - public.serviceReload() - + if hasattr(get, "reload") and int(get.reload) == 1: + public.serviceReload() # ================== domian ssl v2 part ========================= try: from ssl_domainModelV2.model import DnsDomainSSL @@ -3591,6 +3656,12 @@ listener SSL443 { public.writeFile(file, conf) public.M('sites').where("id=?", (id,)).setField('status', '0') + + # 添加清除站点缓存,仅wp2 + project_type = public.M('sites').where("id=?", (id,)).getField('project_type') + if project_type == 'WP2': + self.purge_all_cache(public.to_dict_obj({'s_id': id})) + if not multiple: public.serviceReload() public.write_log_gettext('Site manager', 'Site [{}] stopped!', (get.name,)) @@ -4562,8 +4633,6 @@ server else: continue data.append(tmp) - - data = sorted(data, key=lambda x: x['version'], reverse=True) if is_http: return public.return_message(0, 0, data) return data @@ -4600,7 +4669,7 @@ server site_webserver = public.M('sites').where('name=?', (siteName,)).getField('service_type') if (public.get_multi_webservice_status() and site_webserver == 'openlitespeed') or public.get_webserver() == 'openlitespeed': ols_php_path = os.path.join('/usr/local/lsws','lsphp' + data['phpversion']) - if not os.path.exists(ols_php_path): + if not os.path.exists(ols_php_path) and '00' not in data['phpversion']: return public.return_message(-1, 0, public.lang("Warning: {} version has not been installed yet, " "which may affect website access to the ols service. Please try reinstalling this version or switching to the PHP version!", 'PHP'+data['phpversion'])) @@ -7461,6 +7530,14 @@ RewriteRule \.(BTPFILE)$ /404.html [R,NC] i['name'] = public.xss_version(i['name']) return public.return_message(0, 0, data) + # 取网站列表 + def get_site_list(self, get): + sql = public.M('sites') + if hasattr(get, 'search'): + sql = sql.where("project_type !='Node' and name like ? ",('%{search}%'.format(search=get.search),)) + data = sql.field("id,name").order("id asc").select() + return public.return_message(0, 0, data) + # 添加网站分类 def add_site_type(self, get): # 校验参数 @@ -11487,19 +11564,29 @@ RewriteRule \.(BTPFILE)$ /404.html [R,NC] if os.path.exists(bar): shutil.move(bar, bar + '.bar') - # 修改虚拟主机端口配置 - site_name = public.M('sites').field('name,project_type').select() - for name in site_name: - # 判断是否是Node项目 - if name['project_type'] == 'Node': - self.check_node_project(name['name'], status) - path = os.path.join(public.get_panel_path(), 'vhost', 'apache', name['name'] + '.conf') + # 修改虚拟主机端口配置,匹配所有网站配置文件,避免漏网之鱼 + site_path_list = self.get_apache_site_conf() + for path in site_path_list: if os.path.exists(path): content = public.readFile(path) content = content.replace(f'*:{port_80}', f'*:{new_port_80}') content = content.replace(f'*:{port_443}', f'*:{new_port_443}') + content = content.replace(f'[::]:{port_80}', f'[::]:{new_port_80}') + content = content.replace(f'[::]:{port_443}', f'[::]:{new_port_443}') public.writeFile(path, content) + # 处理node + site_name = public.M('sites').where('project_type = ?','Node').field('name').select() + for name in site_name: + self.check_node_project(name, status) + + # path = os.path.join(public.get_panel_path(), 'vhost', 'apache', name['name'] + '.conf') + # if os.path.exists(path): + # content = public.readFile(path) + # content = content.replace(f'*:{port_80}', f'*:{new_port_80}') + # content = content.replace(f'*:{port_443}', f'*:{new_port_443}') + # public.writeFile(path, content) + if os.path.exists(main_config): content = public.readFile(main_config) content = content.replace(f'Listen {port_80}', f'Listen {new_port_80}') @@ -11512,6 +11599,8 @@ RewriteRule \.(BTPFILE)$ /404.html [R,NC] content = content.replace(f'Listen {port_888}', f'Listen {new_port_888}') content = content.replace(f'*:{port_888}', f'*:{new_port_888}') content = content.replace(f'*:{port_80}', f'*:{new_port_80}') + content = content.replace(f'[::]:{port_888}', f'[::]:{new_port_888}') + content = content.replace(f'[::]:{port_80}', f'[::]:{new_port_80}') public.writeFile(httpd_vhosts, content) if os.path.exists(httpd_ssl): @@ -11767,6 +11856,7 @@ RewriteRule \.(BTPFILE)$ /404.html [R,NC] if action == 'delete': new_content = pattern.sub('', content) + public.writeFile(file_path, new_content) elif action == 'add': if pattern.search(content): @@ -11787,7 +11877,7 @@ if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FOR """ new_content = content[:match.start()] + code_to_add + content[match.start():] - public.writeFile(file_path,new_content) + public.writeFile(file_path,new_content) return True except: return False @@ -12046,7 +12136,9 @@ if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FOR # 服务安装统计 def service_install_count(self, get): - if get.get('type', '') == 'install': + if get.get('type', '') == 'multi': + public.set_module_logs('WebServer-install', f'multi_service_install_count') + elif get.get('type', '') == 'single': public.set_module_logs('WebServer-install', f'service_install_count') return public.return_message(0, 0,'') @@ -12178,4 +12270,19 @@ if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FOR public.writeFile(config_path, content) return True - # ======================网站多服务 end============================== \ No newline at end of file + + # 获取apache所有网站配置文件 + def get_apache_site_conf(self): + pata =os.path.join(public.get_panel_path() , 'vhost' ,'apache') + if not os.path.exists(pata): + return [] + + conf_files = [] + for entry in os.listdir(pata): + full_path = os.path.join(pata, entry) + + if os.path.isfile(full_path) and entry.endswith('.conf'): + conf_files.append(full_path) + + return conf_files + # ======================网站多服务 end============================== diff --git a/class_v2/panel_ssl_v2.py b/class_v2/panel_ssl_v2.py index 3da7dc20..2fbc1ba0 100644 --- a/class_v2/panel_ssl_v2.py +++ b/class_v2/panel_ssl_v2.py @@ -1206,7 +1206,6 @@ class panelSSL: public.writeFile(csrpath, result['fullchain']) import panel_site_v2 as panelSite panelSite.panelSite().SetSSLConf(get) - public.serviceReload() return public.return_message(0, 0, public.lang("Setup successfully!")) except Exception as ex: import traceback diff --git a/class_v2/plugin_deployment_v2.py b/class_v2/plugin_deployment_v2.py index 54292b4b..715fe541 100644 --- a/class_v2/plugin_deployment_v2.py +++ b/class_v2/plugin_deployment_v2.py @@ -531,14 +531,14 @@ class plugin_deployment: pinfo = { "username": "", "ps": "Free and Open Source Webmail Software", - "php": "56,70,71,72,73,74,80", + "php": "72,73,74,80", "run": "", "name": "roundcube", "title": "Roundcube", "type": 6, "chmod": "", "ext": "pathinfo,exif", - "version": "1.5.0", + "version": "1.6.11", "install": "", "download": "https://node.aapanel.com/install/package/roundcubemail.zip", "password": "", @@ -548,9 +548,10 @@ class plugin_deployment: # 检查本地包 self.WriteLogs( - json.dumps({'name': public.GetMsg("VERIFYING_PACKAGE"), 'total': 0, 'used': 0, 'pre': 0, 'speed': 0})) + json.dumps({'name': "Verifying package...", 'total': 0, 'used': 0, 'pre': 0, 'speed': 0})) # 安装包 packageZip = 'plugin/mail_sys/' + name + '.zip' + isDownload = False if os.path.exists(packageZip): md5str = self.GetFileMd5(packageZip) @@ -561,20 +562,22 @@ class plugin_deployment: # 删除多余文件 rm_file = path + '/index.html' - if os.path.exists(rm_file): os.remove(rm_file) + if os.path.exists(rm_file): + os.remove(rm_file) # 下载文件 if isDownload: self.WriteLogs( - json.dumps({'name': public.GetMsg("DOWNLOAD"), 'total': 0, 'used': 0, 'pre': 0, 'speed': 0})) + json.dumps({'name': "Download", 'total': 0, 'used': 0, 'pre': 0, 'speed': 0})) self.DownloadFile(pinfo['download'], packageZip) if not os.path.exists(packageZip): return public.returnMsg(False, public.lang("File download failed!")) - self.WriteLogs(json.dumps({'name': public.GetMsg("UNPACKING"), 'total': 0, 'used': 0, 'pre': 0, 'speed': 0})) + self.WriteLogs(json.dumps({'name': "Unpacking the package...", 'total': 0, 'used': 0, 'pre': 0, 'speed': 0})) public.ExecShell('unzip -o ' + packageZip + ' -d ' + path + '/') + # 设置权限 self.WriteLogs( json.dumps({'name': public.GetMsg("SET_PERMISSION"), 'total': 0, 'used': 0, 'pre': 0, 'speed': 0})) @@ -615,6 +618,8 @@ class plugin_deployment: public.ExecShell('cd ' + path + ' && bash ' + 'install.sh') public.ExecShell('rm -f ' + path + '/install.sh') + + # 是否执行Composer if os.path.exists(path + '/composer.json'): self.WriteLogs(json.dumps({'name': 'Execute Composer', 'total': 0, 'used': 0, 'pre': 0, 'speed': 0})) @@ -660,6 +665,7 @@ class plugin_deployment: if os.path.exists(path + '/import.sql'): databaseInfo = public.M('databases').where('pid=?', (find['id'],)).field('username,password').find() + if databaseInfo: public.ExecShell('/www/server/mysql/bin/mysql -u' + databaseInfo['username'] + ' -p' + databaseInfo[ 'password'] + ' ' + databaseInfo['username'] + ' < ' + path + '/import.sql') diff --git a/class_v2/projectModelV2/nodejsModel.py b/class_v2/projectModelV2/nodejsModel.py index a9eee131..b3b2f163 100644 --- a/class_v2/projectModelV2/nodejsModel.py +++ b/class_v2/projectModelV2/nodejsModel.py @@ -181,7 +181,18 @@ class main(projectBase): return public.return_message(-1,0, return_message) package_file = '{}/package.json'.format(project_cwd) if not os.path.exists(package_file): return public.return_message(0,0,{}) - package_info = json.loads(public.readFile(package_file)) + + package_content = public.readFile(package_file) + if not package_content: + return public.return_message(0, 0, {}) + + try: + package_info = json.loads(package_content) + except json.JSONDecodeError: + return public.return_message(0, 0, {}) + + # package_info = json.loads(public.readFile(package_file)) + if not 'scripts' in package_info: return public.return_message(0,0,{}) if not package_info['scripts']: return public.return_message(0,0,{}) return public.return_message(0,0,package_info['scripts']) diff --git a/class_v2/ssl_dnsV2/__init__.py b/class_v2/ssl_dnsV2/__init__.py new file mode 100644 index 00000000..b154fa85 --- /dev/null +++ b/class_v2/ssl_dnsV2/__init__.py @@ -0,0 +1,12 @@ +# coding: utf-8 +# ------------------------------------------------------------------- +# aaPanel +# ------------------------------------------------------------------- +# Copyright (c) 2014-2099 aaPanel(www.aapanel.com) All rights reserved. +# ------------------------------------------------------------------- +# Author: aapanel +# ------------------------------------------------------------------- + +# ------------------------------ +# xxx app +# ------------------------------ diff --git a/class_v2/ssl_dnsV2/api.py b/class_v2/ssl_dnsV2/api.py new file mode 100644 index 00000000..f4b4b450 --- /dev/null +++ b/class_v2/ssl_dnsV2/api.py @@ -0,0 +1,222 @@ +# coding: utf-8 +# ------------------------------------------------------------------- +# aaPanel +# ------------------------------------------------------------------- +# Copyright (c) 2014-2099 aaPanel(www.aapanel.com) All rights reserved. +# ------------------------------------------------------------------- +# Author: aapanel +# ------------------------------------------------------------------- + +# ------------------------------ +# aaDNS api +# ------------------------------ + +from public.exceptions import HintException +from public.validate import Param +from ssl_domainModelV2.service import DomainValid +from .dns_manager import DnsManager +from .helper import * + + +class DnsApiObject: + def __init__(self): + pass + + def install_bind(self, get): + log = f"{public.get_panel_path()}/logs/install_bind.log" + if os.path.exists(log): + public.ExecShell(f"rm -f {log}") + install_script = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "bind_script.sh" + ) + public.ExecShell("chmod +x {}".format(install_script)) + public.ExecShell("nohup bash {} install >>{} 2>&1 &".format(install_script, log)) + return public.success_v2(public.lang("Installing...")) + + def install_pdns(self, get): + log = f"{public.get_panel_path()}/logs/install_pdns.log" + if os.path.exists(log): + public.ExecShell(f"rm -f {log}") + install_script = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "pdns_script.sh" + ) + public.ExecShell("chmod +x {}".format(install_script)) + public.ExecShell("nohup bash {} install >>{} 2>&1 &".format(install_script, log)) + return public.success_v2(public.lang("Installing...")) + + def get_status(self, get): + config_obj = aaDnsConfig() + service_name = config_obj.service_path.get("service_name") + a = False + if service_name: + a, e = public.ExecShell(f"ps -ef | grep '{service_name}' | grep -v grep") + return public.success_v2({ + "service": config_obj.install_service, + "status": True if a else False + }) + + @staticmethod + def check_base_params(func): + def wrapper(self, get): + # domain + check_domain = ["domain", "ns1domain", "ns2domain", "soa"] + for key in check_domain: + if hasattr(get, key) and getattr(get, key) and not DomainValid.is_valid_domain(getattr(get, key)): + raise HintException("invalid {}: {}".format(key, getattr(get, key))) + # ip + check_ip = ["ip", "domain_ip"] + for key2 in check_ip: + if hasattr(get, key2) and getattr(get, key2): + if not DomainValid.is_ip4(getattr(get, key2)) and not DomainValid.is_ip6(getattr(get, key2)): + raise HintException("invalid ip address: {}".format(getattr(get, key2))) + # ttl, priority + check_int_type = ["ttl", "priority"] + for key3 in check_int_type: + if hasattr(get, key3) and getattr(get, key3): + try: + int(getattr(get, key3)) + except: + raise HintException("{} must be an digit.".format(key3)) + return func(self, get) + + return wrapper + + @check_base_params + def add_zone(self, get): + """添加zone信息""" + try: + get.validate([ + Param("domain").String().Require(), + Param("ns1domain").String(), + Param("ns2domain").String(), + Param("soa").String(), + Param("domain_ip").String(), + ], [ + public.validate.trim_filter(), + ]) + except Exception as ex: + public.print_log("error info: {}".format(ex)) + return public.fail_v2(str(ex)) + domain = get.domain + ns1 = "ns1.{}".format(domain) + ns2 = "ns2.{}".format(domain) + soa = "ns1.{}".format(domain) + ip = "127.0.0.1" + + if hasattr(get, "ns1") and get.ns1: + ns1 = get.ns1 + if hasattr(get, "ns2") and get.ns2: + ns2 = get.ns2 + if hasattr(get, "soa") and get.soa: + soa = get.soa + if hasattr(get, "domain_ip") and get.domain_ip: + ip = get.domain_ip + + DnsManager().add_zone(domain, ns1, ns2, soa, ip) + return public.success_v2(public.lang("Successfully added zone.")) + + @check_base_params + def del_zone(self, get): + try: + get.validate([ + Param("domain").String().Require(), + ], [ + public.validate.trim_filter(), + ]) + except Exception as ex: + public.print_log("error info: {}".format(ex)) + return public.fail_v2(str(ex)) + DnsManager().delete_zone(get.domain) + return public.success_v2(public.lang("Successfully deleted zone.")) + + # 不用 + @check_base_params + def resolve_record(self, get): + """操作解析记录""" + try: + get.validate([ + Param("domain").String().Require(), + Param("act").String("in", ["create", "update", "delete"]).Require(), + Param("type").String().Require(), + Param("host").String().Require(), + Param("ttl").String().Require(), + Param("value").String().Require(), + Param("priority").String(), + ], [ + public.validate.trim_filter(), + ]) + except Exception as ex: + public.print_log("error info: {}".format(ex)) + return public.fail_v2(str(ex)) + + kw = { + "name": get.host, + "type": get.type.upper(), + "value": get.value, + "ttl": get.ttl if hasattr(get, "ttl") and get.ttl else 600, + } + if hasattr(get, "priority") and get.priority: + kw["priority"] = get.priority + + manager = DnsManager() + if get.act == "create": + manager.add_record(get.domain, **kw) + elif get.act == "update": + manager.update_record(get.domain, **kw) + elif get.act == "delete": + manager.delete_record(get.domain, **kw) + + return public.success_v2(public.lang("Successfully!")) + + def get_zones(self, get): + """获取所有已添加的域名列表""" + try: + get.validate([ + Param("domain").String(), + ], [ + public.validate.trim_filter(), + ]) + except Exception as ex: + public.print_log("error info: {}".format(ex)) + return public.fail_v2(str(ex)) + domains = DnsParser().get_zones(get.domain) + return public.success_v2(domains) + + # 不用 + def get_zones_records(self, get): + """获取zones信息记录列表""" + try: + get.validate([ + Param("domain").String().Require(), + ], [ + public.validate.trim_filter(), + ]) + except Exception as ex: + public.print_log("error info: {}".format(ex)) + return public.fail_v2(str(ex)) + domain = get.domain + zone_dict_list = DnsParser().get_zones_records(domain=domain) + return public.success_v2(zone_dict_list.get(domain, [])) + + def restart_service(self, get): + try: + get.validate([ + Param("service_name").String("in", ["bind", "pdns"]), + ], [ + public.validate.trim_filter(), + ]) + except Exception as ex: + public.print_log("error info: {}".format(ex)) + return public.fail_v2(str(ex)) + if not hasattr(get, "service_name"): + service_name = "pdns" + else: + service_name = get.service_name + DnsManager().reload_service() + return public.success_v2(public.lang("Successfully restarted aaDNS service.")) + + def set_nameserver(self, get): + ... + + def dns_logger(self, get): + ... diff --git a/class_v2/ssl_dnsV2/bind_script.sh b/class_v2/ssl_dnsV2/bind_script.sh new file mode 100644 index 00000000..a2777980 --- /dev/null +++ b/class_v2/ssl_dnsV2/bind_script.sh @@ -0,0 +1,170 @@ +#!/bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH + +Install_Bind() +{ + if command -v yum >/dev/null 2>&1; then + # CentOS/RHEL + echo "Detected yum, installing BIND..." + yum install bind bind-chroot -y + # chroot 环境配置 + mkdir -p /var/named/chroot/etc + mkdir -p /var/named/chroot/var/named/data + mkdir -p /var/named/chroot/var/named/dynamic + + if [ ! -f /var/named/chroot/etc/named.rfc1912.zones ];then + if [ -d '/usr/share/doc/bind/sample/var/named/' ];then + cp -R /usr/share/doc/bind/sample/var/named/* /var/named/chroot/var/named/ + else + cp -R /usr/share/doc/bind-*/sample/var/named/* /var/named/chroot/var/named/ + fi + # 复制所有配置文件 + echo "Configuring BIND for the first time..." + cp -p /etc/named.* /var/named/chroot/etc/ + touch /var/named/chroot/var/named/data/cache_dump.db + touch /var/named/chroot/var/named/data/named_stats.txt + touch /var/named/chroot/var/named/data/named_mem_stats.txt + touch /var/named/chroot/var/named/data/named.run + touch /var/named/chroot/var/named/dynamic/managed-keys.bind + # 修改默认值 + NAMED_CONF_PATH="/var/named/chroot/etc/named.conf" + sed -i 's/listen-on port 53 .*/listen-on port 53 { any; };/' "$NAMED_CONF_PATH" + sed -i 's/allow-query .*/allow-query { any; };/' "$NAMED_CONF_PATH" + sed -i 's/recursion yes;/recursion no;/' "$NAMED_CONF_PATH" + fi + + # 设置权限 + chown -R named:named /var/named/chroot + + SERVICE_NAME="named" + if systemctl list-unit-files | grep -q "named-chroot.service"; then + SERVICE_NAME="named-chroot" + fi + + systemctl disable pdns >/dev/null 2>&1 + systemctl stop pdns >/dev/null 2>&1 + systemctl restart "$SERVICE_NAME" + systemctl enable "$SERVICE_NAME" + echo "bind" > /www/server/panel/class_v2/ssl_dnsV2/aadns.pl + echo "BIND installed and configured for CentOS/RHEL." + echo "Installed Success!" + + elif command -v apt-get >/dev/null 2>&1; then + # Debian/Ubuntu + echo "Detected apt, installing BIND9..." + apt-get update + apt-get install bind9 bind9utils -y + systemctl stop bind9 + + # 创建用户组 + if ! getent group named >/dev/null; then groupadd named; fi + if ! id -u named >/dev/null 2>&1; then useradd -g named -s /sbin/nologin -d /var/named named; fi + + # chroot 环境配置 + CHROOT_DIR="/var/named/chroot" + mkdir -p "$CHROOT_DIR/etc" + mkdir -p "$CHROOT_DIR/dev" + mkdir -p "$CHROOT_DIR/var/named/data" + mkdir -p "$CHROOT_DIR/var/named/dynamic" + mkdir -p "$CHROOT_DIR/var/cache/bind" + mkdir -p "$CHROOT_DIR/var/run/named" + + # 移动配置文件并创建符号链接 + if [ -d /etc/bind ] && [ ! -L /etc/bind ]; then + mv /etc/bind "$CHROOT_DIR/etc/" + ln -s "$CHROOT_DIR/etc/bind" /etc/bind + fi + + # 以chroot模式启动 + if [ -f /etc/default/named ]; then + # -u: user, -t: chroot directory + sed -i "s/OPTIONS=.*/OPTIONS=\"-u named -t \/var\/named\/chroot\"/" /etc/default/named + fi + + # chroot所需的设备文件 + if [ ! -c "$CHROOT_DIR/dev/null" ]; then mknod "$CHROOT_DIR/dev/null" c 1 3; fi + if [ ! -c "$CHROOT_DIR/dev/random" ]; then mknod "$CHROOT_DIR/dev/random" c 1 8; fi + chmod 666 "$CHROOT_DIR/dev/null" "$CHROOT_DIR/dev/random" + + echo "\$AddUnixListenSocket $CHROOT_DIR/dev/log" > /etc/rsyslog.d/bind-chroot.conf + systemctl restart rsyslog + + # 首次配置时修改配置 + NAMED_CONF_OPTIONS_PATH="$CHROOT_DIR/etc/bind/named.conf.options" + if ! grep -q "listen-on { any; };" "$NAMED_CONF_OPTIONS_PATH"; then + echo "Configuring BIND options for the first time..." +# sed -i '/^\s*listen-on\s/c\listen-on { any; };' "$NAMED_CONF_OPTIONS_PATH" +# sed -i '/^\s*listen-on-v6\s/c\listen-on-v6 { none; };' "$NAMED_CONF_OPTIONS_PATH" +# sed -i '/^\s*allow-query\s/c\allow-query { any; };' "$NAMED_CONF_OPTIONS_PATH" +# sed -i '/^\s*recursion\s/c\recursion no;' "$NAMED_CONF_OPTIONS_PATH" + cat > "$NAMED_CONF_OPTIONS_PATH" </dev/null 2>&1 + systemctl stop pdns >/dev/null 2>&1 + + systemctl daemon-reload + systemctl restart bind9 + systemctl enable bind9 + echo "bind" > /www/server/panel/class_v2/ssl_dnsV2/aadns.pl + echo "BIND9 with chroot installed and configured for Debian/Ubuntu." + echo "Installed Success!" + else + echo "Error: Neither yum nor apt-get found. Cannot install BIND." + exit 1 + fi +} + +Install_aaDns() +{ + Install_Bind +} + +Uninstall_aaDns() +{ + if command -v yum >/dev/null 2>&1; then + SERVICE_NAME="named" + if systemctl list-unit-files | grep -q "named-chroot.service"; then + SERVICE_NAME="named-chroot" + fi + systemctl stop "$SERVICE_NAME" + systemctl disable "$SERVICE_NAME" + echo "BIND uninstalled from CentOS/RHEL." + elif command -v apt-get >/dev/null 2>&1; then + systemctl stop bind9 + systemctl disable bind9 + echo "BIND9 uninstalled from Debian/Ubuntu." + else + echo "Error: Neither yum nor apt-get found. Cannot uninstall BIND." + exit 1 + fi +} + +if [ "${1}" == "install" ];then + Install_aaDns +fi \ No newline at end of file diff --git a/class_v2/ssl_dnsV2/conf.py b/class_v2/ssl_dnsV2/conf.py new file mode 100644 index 00000000..f3f92ffd --- /dev/null +++ b/class_v2/ssl_dnsV2/conf.py @@ -0,0 +1,108 @@ +# coding: utf-8 +# ------------------------------------------------------------------- +# aaPanel +# ------------------------------------------------------------------- +# Copyright (c) 2014-2099 aaPanel(www.aapanel.com) All rights reserved. +# ------------------------------------------------------------------- +# Author: aapanel +# ------------------------------------------------------------------- + +# ------------------------------ +# aaDNS config +# ------------------------------ +import os +import re + +__all__ = [ + "aaDnsConfig", + "zone_pattern", + "file_pattern", + "record_pattern", + "ZONES_DIR", + "ZONES", + "APP_DIR", + "APP_LOG", + "SERVICE_INSTALL_NAME", +] + +zone_pattern = re.compile(r'zone\s+"[^"]+"\s*(?:IN)?\s*\{[\s\S]*?};', re.MULTILINE) +file_pattern = re.compile(r'file\s+"([^"]+)"') +record_pattern = re.compile(r'^(\S+)\s+(?:(\d+)\s+)?(?:(IN)\s+)?(\S+)\s+(.*)$') + +ZONES_DIR = "/var/named/chroot/var/named/" +ZONES = "/var/named/chroot/etc/named.rfc1912.zones" +APP_DIR = os.path.dirname(os.path.abspath(__file__)) +SERVICE_INSTALL_NAME = f"{APP_DIR}/aadns.pl" +APP_LOG = f"{APP_DIR}/aadns.log" + + +class aaDnsConfig: + def __init__(self): + self.os_type = None + self.package = None + self.install_service = None + self.bind_service_name = "named" + self.pnds_service_name = "pdns" + self._check_env() + + def _check_env(self): + if os.path.exists("/etc/redhat-release"): + self.os_type = "redhat" # centos + self.package = "yum" + # RHEL/CentOS,检查 bind-chroot 服务具体名称 + if os.path.exists("/usr/lib/systemd/system/named-chroot.service"): + self.bind_service_name = "named-chroot" + else: + self.os_type = "ubuntu" # debian + self.package = "apt" + self.bind_service_name = "named" + + if os.path.exists(SERVICE_INSTALL_NAME): + with open(SERVICE_INSTALL_NAME, "r") as f: + self.install_service = f.read().strip() + if self.install_service not in ["bind", "pdns"]: + try: + os.remove(SERVICE_INSTALL_NAME) + except: + pass + self.install_service = None + + @property + def pdns_paths(self): + if self.os_type == "ubuntu": # debian + return { + "config": "/etc/powerdns/pdns.conf", + "zones": ZONES, + "zone_dir": ZONES_DIR, + "service_name": self.pnds_service_name, + "package_name": "pdns-server", + } + else: # redhat, centos + return { + "config": "/etc/pdns/pdns.conf", + "zones": ZONES, + "zone_dir": ZONES_DIR, + "service_name": self.pnds_service_name, + "package_name": "bind-chroot" if self.os_type == "redhat" else "bind9", + "main": "/var/named/chroot/etc/named.conf", + } + + @property + def bind_paths(self): + return { + "config": "/var/named/chroot/etc/named.conf", + "zones": "/var/named/chroot/etc/named.conf.local", + "zone_dir": ZONES_DIR, + "service_name": self.bind_service_name, + "package_name": "bind-chroot" if self.os_type == "redhat" else "bind9", + "main": "/var/named/chroot/etc/named.conf", + } + + @property + def service_path(self): + if self.install_service == "bind": + return self.bind_paths + elif self.install_service == "pdns": + return self.pdns_paths + else: + return {} diff --git a/class_v2/ssl_dnsV2/dns_manager.py b/class_v2/ssl_dnsV2/dns_manager.py new file mode 100644 index 00000000..8fc8ca52 --- /dev/null +++ b/class_v2/ssl_dnsV2/dns_manager.py @@ -0,0 +1,504 @@ +# coding: utf-8 +# ------------------------------------------------------------------- +# aaPanel +# ------------------------------------------------------------------- +# Copyright (c) 2014-2099 aaPanel(www.aapanel.com) All rights reserved. +# ------------------------------------------------------------------- +# Author: aapanel +# ------------------------------------------------------------------- +# ------------------------------ +# aaDNS app +# ------------------------------ +import os +import sys +import time +from typing import Optional + +sys.path.insert(0, '/www/server/panel/class_v2') +import public +from .helper import DnsParser +from .conf import ZONES, ZONES_DIR, record_pattern +from public.exceptions import HintException +from ssl_domainModelV2.service import DomainValid, SyncService +from ssl_domainModelV2.model import DnsDomainProvider + +PANEL_PATH = public.get_panel_path() + + +def backup_file(path: str, suffix: str = None) -> None: + """创建 pdns的备份文件""" + if not os.path.exists(path): + return + if suffix is None: + if path == ZONES: + suffix = "bak" + elif path.startswith(ZONES_DIR): + suffix = "def" + else: + suffix = "bak" + backup_path = f"{path}_{suffix}" + public.ExecShell(f"cp -a {path} {backup_path}") + + +def pdns_rollback(path: str) -> None: + """根据 pdns文件路径回滚自己得备份文件""" + if path.startswith(ZONES_DIR): + suffix = "def" + else: + suffix = "bak" + backup_path = f"{path}_{suffix}" + if os.path.exists(backup_path): + public.ExecShell(f"cp -a {backup_path} {path}") + + +class Templater: + @staticmethod + def generate_zone(domain: str) -> str: + template = """ +zone "%s" IN { + type master; + file "/var/named/chroot/var/named/%s.zone"; + allow-update { none; }; +}; +""" % (domain, domain) + public.writeFile(ZONES, template, "a+") + return template + + @staticmethod + def generate_record(domain: str, ns1: str, ns2: str, soa: str, ip: str, **kwargs) -> str: + ttl = str(kwargs.get("ttl", "600")) + priority = str(kwargs.get("priority", "10")) + r_type = "A" if ":" not in ip else "AAAA" + serial = time.strftime("%Y%m%d", time.localtime()) + "01" + + template = f"""$TTL 86400 +{domain}. IN SOA {soa} admin.{domain}. ( + {serial} ; serial + 7200 ; refresh + 3600 ; retry + 1209600 ; expire + 180 ) ; minimum +{domain}. 86400 IN NS {ns1}. +{domain}. 86400 IN NS {ns2}. +{domain}. {ttl} IN {r_type} {ip} +{domain}. {ttl} IN MX {priority} mail.{domain}. +{domain}. {ttl} IN CAA 0 issue "letsencrypt.org" +www {ttl} IN {r_type} {ip} +mail {ttl} IN {r_type} {ip} +ns1 {ttl} IN {r_type} {ip} +ns2 {ttl} IN {r_type} {ip} +""" + public.writeFile(os.path.join(ZONES_DIR, f"{domain}.zone"), template) + return template + + +class DnsManager: + def __init__(self): + self.parser = DnsParser() + self.config = self.parser.config + if self.config.install_service in ["bind", "pdns"]: + self.makesuer_port() + + def makesuer_port(self) -> None: + if not public.S("firewall_new").where( + "ports = ? AND protocol = ?", ("53", "tcp/udp") + ).count(): + try: + from firewallModelV2.comModel import main as firewall_main + get = public.dict_obj() + get.protocol = "all" + get.port = "53" + get.choose = "all" + get.types = "accept" + get.strategy = "accept" + get.chain = "INPUT" + get.brief = "DNS Service Port" + get.operation = "add" + firewall_main().set_port_rule(get) + except Exception as e: + public.print_log("add firewall port 53 error: {}".format(e)) + + def validate_with_resolver(self, action: str, domain: str, **kwargs): + # 本地校验dns记录 + if not action: + return + try: + import dns.resolver + except ImportError: + public.print_log("dnspython not installed, skipping DNS validation.") + return + + record_data = kwargs + if action == "update" and "new_record" in kwargs: + record_data = kwargs["new_record"] + + record_type = record_data.get("type", "A").upper() + name = record_data.get("name", "@") + if name == "@": + q_name = domain + elif name.endswith("."): + q_name = name + else: + q_name = f"{name}.{domain}" + + resolver = dns.resolver.Resolver() + resolver.nameservers = ["127.0.0.1"] + try: + time.sleep(1) + answers = resolver.resolve(q_name, record_type, raise_on_no_answer=False) + if action in ["create", "update"]: + if answers.rrset is None: + raise HintException( + f"Validation failed: Record {q_name} ({record_type}) not found after {action}." + ) + return + + if action == "delete": + if answers.rrset is not None: + value_to_delete = kwargs.get("value") + for item in answers: + if value_to_delete in str(item): + raise HintException( + f"Validation failed: Record {q_name} ({record_type}) still exists after deletion." + ) + return + + except dns.resolver.NXDOMAIN: + # 域名不存在,对于删除是正常的,对于创建/更新是失败的 + if action in ["create", "update"]: + raise HintException(f"Validation failed: Domain {q_name} not found after {action}.") + except Exception as e: + # 捕获其他DNS查询异常 + raise HintException(f"DNS validation failed for {q_name}: {e}") + + def __reload_bind(self): + # 关闭pdns服务 + a, e = public.ExecShell(f"ps -ef|grep {self.config.pdns_paths['service_name']}|grep -v grep") + if a: + public.ExecShell(f"systemctl stop {self.config.pdns_paths['service_name']}") + # 验证配置文件正确性 + check_cmd = f"named-checkconf {self.config.bind_paths['main']}" + res, err = public.ExecShell(check_cmd) + if err: + return public.fail_v2("Reload failed error: {}".format(err)) + # 重启bind服务 + public.ExecShell(f"systemctl restart {self.config.bind_paths["service_name"]}") + return public.success_v2(public.lang("Successfully!")) + + def __reload_pdns(self): + # 关闭bind服务 + a, e = public.ExecShell(f"ps -ef|grep {self.config.bind_paths['service_name']}|grep -v grep") + if a: + public.ExecShell(f"systemctl stop {self.config.bind_paths['service_name']}") + # 重启pdns服务 + a, e = public.ExecShell(f"systemctl restart {self.config.pdns_paths['service_name']}") + if a: + raise HintException("Reload failed error: {} DNS config maybe wrong".format(a)) + if e: + raise HintException("Reload failed error: {}".format(e)) + + def __name_checkconf(self): + a, e = public.ExecShell(f"named-checkconf {ZONES}") + if e: + raise Exception(f"Configuration check failed zone block: {e}") + + def reload_service(self, service_name: str = "pdns") -> bool: + if service_name == "pdns": + self.__reload_pdns() + return True + elif service_name == "bind": + self.__reload_bind() + return True + return False + + def add_zone(self, domain: str, ns1: str, ns2: str, soa: str, ip: str = "127.0.0.1"): + if domain in self.parser.get_zones(): + raise HintException("Zone Already Exists!") + + zone_file = os.path.join(ZONES_DIR, f"{domain}.zone") + backup_file(ZONES) # 备份主配置文件 + try: + Templater.generate_zone(domain) # 追加zone 配置 + Templater.generate_record(domain, ns1, ns2, soa, ip) # 生成zone区域文件 + self.__name_checkconf() + self.reload_service() + except Exception as e: + pdns_rollback(ZONES) + if os.path.exists(zone_file): + try: + os.remove(zone_file) # 移除异常的区域文件 + os.remove(f"{zone_file}_def") # 移除其备份 + except: + pass + self.reload_service() + raise HintException("Add zone failed error: {}".format(e)) + finally: + # 同步DNS服务 + provider = DnsDomainProvider.objects.filter(name="aaPanelDns").first() + if provider: + SyncService(provider.id).process() + + def delete_zone(self, domain: str): + if domain not in self.parser.get_zones(): + raise HintException("Domian Not Found!") + zone_file = os.path.join(ZONES_DIR, f"{domain}.zone") + # 备份主配置文件和区域文件 + backup_file(ZONES) + backup_file(zone_file) + try: + zones_content = public.readFile(ZONES) or "" + lines = zones_content.splitlines() + new_lines: list = [] + in_block_to_delete = False + brace_count = 0 + for line in lines: + stripped_line = line.strip() + if stripped_line.startswith(f'zone "{domain}"'): + in_block_to_delete = True + if in_block_to_delete: # 配对大括号 + brace_count += line.count("{") + brace_count -= line.count("}") + if brace_count <= 0: + in_block_to_delete = False + continue + # 只保留一个换行 + if not stripped_line and new_lines and not new_lines[-1].strip(): + continue + new_lines.append(line) + + # 只保留一个换行 + while new_lines and not new_lines[-1].strip(): + new_lines.pop() + final_content = "\n".join(new_lines) + if final_content: + final_content += "\n" + + public.writeFile(ZONES, final_content) + self.__name_checkconf() + try: + os.remove(zone_file) + os.remove(zone_file + "_def") + except Exception as ex: + public.print_log(f"Error removing zone file {zone_file}: {ex}") + self.reload_service() + except Exception as e: + import traceback + public.print_log(traceback.format_exc()) + pdns_rollback(ZONES) + pdns_rollback(zone_file) + self.reload_service() + raise HintException("Delete zone failed error: {}".format(e)) + finally: + # 同步DNS服务 + provider = DnsDomainProvider.objects.filter(name="aaPanelDns").first() + if provider: + SyncService(provider.id).process() + + def _update_soa_serial(self, lines: list) -> bool: + """更新SOA序列号""" + for i, line in enumerate(lines): + if "IN SOA" in line: # SOA 行开始 + go_on = lines[i:] + for j, soa_line in enumerate(go_on): + # '; serial' 注释结尾, (看模板) + if ";" in soa_line and "serial" in soa_line: + serial_str = soa_line.split(';')[0].strip() + if serial_str.isdigit(): + today_prefix = time.strftime("%Y%m%d", time.localtime()) + if serial_str.startswith(today_prefix): + new_serial = str(int(serial_str) + 1) + else: + new_serial = today_prefix + "01" + # SOA 序列号替换 + lines[i + j] = soa_line.replace(serial_str, new_serial, 1) + return True + break + return False + + def _build_record_line(self, domain: str, **kwargs) -> str: + """构建DNS记录行""" + + def _get_params(kwargs): + name = kwargs.get("name", "@") + ttl = kwargs.get("ttl", "600") + ttl = "600" if int(ttl) == 1 else str(ttl) + record_type = kwargs.get("type", "A").upper() + value = kwargs.get("value") + priority = kwargs.get("priority", -1), + if not value: + raise HintException("value is required!") + return name, record_type, ttl, value, priority + + name, record_type, ttl, value, priority = _get_params(kwargs) + if "new_record" in kwargs: + name, record_type, ttl, value, priority = _get_params(kwargs["new_record"]) + + # === 仅校验 === + if record_type == "A" and not DomainValid.is_ip4(value): + raise HintException(f"Invalid A record value: {value}") + + elif record_type == "AAAA" and not DomainValid.is_ip6(value): + raise HintException(f"Invalid AAAA record value: {value}") + + elif record_type in ["CNAME", "NS"] and not DomainValid.is_valid_domain(value): + raise HintException(f"Invalid {record_type} record value: {value}") + + elif record_type == "CAA": + parts = value.split(None, 2) + if len(parts) != 3: + raise HintException(f"Invalid CAA record format: {value}") + flags, tag, ca_value = parts + if not flags.isdigit() or not (0 <= int(flags) <= 255): + raise HintException(f"Invalid CAA flags: {flags}. Must be 0-255.") + if tag not in ["issue", "issuewild", "iodef"]: + raise HintException(f"Invalid CAA tag: {tag}. Must be 'issue', 'issuewild', or 'iodef'.") + ca_value = ca_value.strip('"') + if tag == "iodef": + if not (ca_value.startswith("mailto:") or DomainValid.is_valid_domain(ca_value)): + raise HintException(f"Invalid CAA iodef value: {ca_value}") + elif not DomainValid.is_valid_domain(ca_value): + raise HintException(f"Invalid CAA domain value: {ca_value}") + + elif record_type == "TXT": + # TXT 记录值如果包含空格,使用引号包裹 + if " " in value and not (value.startswith('"') and value.endswith('"')): + value = f'"{value}"' + + # === 参数追加尾部作为 整体value 写入 conf === + elif record_type == "SRV": + priority = kwargs.get("priority", "10") + weight = kwargs.get("weight", "5") + port = kwargs.get("port") + if not port: + raise HintException("SRV record requires a 'port'.") + if not all(str(p).isdigit() for p in [priority, weight, port]): + raise HintException("SRV priority, weight, and port must be integers.") + if not DomainValid.is_valid_domain(value): + raise HintException(f"Invalid SRV target domain: {value}") + value = f"{priority} {weight} {port} {value}" + + record_name = name + if record_type == "MX": + if not DomainValid.is_valid_domain(value): + raise HintException(f"Invalid MX record value: {value}") + # 如果value不是完全限定域名FQDN(不以.结尾),则补充主域名 + if not value.endswith("."): + value = f"{value}.{domain}." + + if record_name != "@" and not record_name.endswith("."): + record_name = f"{record_name}.{domain}" + # record_type = f"{record_type} {kwargs.get("priority", "10")}" + value = f"{kwargs.get('priority', '10')} {value}" + + # 构造兼容旧格式 + return f"{record_name}\t{ttl}\tIN\t{record_type}\t{value}" + + def _find_record_line_index(self, action: str, lines: list, **kwargs) -> Optional[int]: + """查找DNS记录行索引""" + name = kwargs.get("name", "@") + record_type = kwargs.get("type", "A").upper() + value = kwargs.get("value") + for i, line in enumerate(lines): + match = record_pattern.match(line) + if match: + r_name, _, _, r_type, r_value = match.groups() + r_value = r_value.split(';', 1)[0].strip() + # todo 更多类型的特殊处理 + if r_type == "MX": + try: + _, r_value = r_value.split(None, 1) + except (ValueError, IndexError): + pass + + if action != "delete": + if r_name == name and r_type.upper() == record_type and r_value == value: + return i + else: # 删除操作暂时仅判断name 和 type + if r_name == name and r_type.upper() == record_type: + return i + return None + + def _modify_record(self, domain: str, action: str, **kwargs) -> bool: + # C, U, D + if domain not in self.parser.get_zones(): + raise HintException("Domian Not Found!") + zone_file = os.path.join(ZONES_DIR, f"{domain}.zone") + if not os.path.exists(zone_file): + raise HintException("Zone file not found!") + # 开事务 + backup_file(zone_file) + try: + content = public.readFile(zone_file) + # 移除末尾可能存在的空行 + lines = content.rstrip("\n").split("\n") if content else [] + # 更新SOA序列号 + if not self._update_soa_serial(lines): + raise HintException("SOA record not found, cannot update serial number.") + modify = False + line_index = self._find_record_line_index(action, lines, **kwargs) + + if action.lower() == "create": + if line_index is not None: + public.print_log("Record already exists, skipping creation.") + return True + + new_record_line = self._build_record_line(domain, **kwargs) + lines.append(new_record_line) + modify = True + + elif action.lower() in ["update", "delete"]: + if line_index is None: + raise HintException("Record not found!") + + if action.lower() == "delete": + lines.pop(line_index) + modify = True + elif action.lower() == "update": + updated_line = self._build_record_line(domain, **kwargs) + lines[line_index] = updated_line + modify = True + + if modify: + public.writeFile(zone_file, "\n".join(lines) + "\n") + return True + + return False + except Exception as e: + pdns_rollback(zone_file) + import traceback + public.print_log(traceback.format_exc()) + raise HintException(e) + + def __apply_and_validate_change(self, action: str, domain: str, **kwargs) -> None: + """配置变动和验证管理""" + zone_file = os.path.join(ZONES_DIR, f"{domain}.zone") + try: + if not self._modify_record(domain, action, **kwargs): + return + self.reload_service() + self.validate_with_resolver(action, domain, **kwargs) + # 校验后对区域文件进行备份稳定版本 + backup_file(zone_file) + except Exception as e: + import traceback + public.print_log(traceback.format_exc()) + pdns_rollback(zone_file) + self.reload_service() + raise HintException(f"Record {action} failed and was rolled back: {e}") + + def add_record(self, domain: str, **kwargs) -> bool: + self.__apply_and_validate_change("create", domain, **kwargs) + return True + + def delete_record(self, domain: str, **kwargs) -> bool: + self.__apply_and_validate_change("delete", domain, **kwargs) + return True + + def update_record(self, domain: str, **kwargs) -> bool: + if not kwargs.get("new_record"): + raise HintException("update record is required for update operation.") + self.__apply_and_validate_change("update", domain, **kwargs) + return True + + def get_domains(self) -> list: + return self.parser.get_zones() or [] diff --git a/class_v2/ssl_dnsV2/helper.py b/class_v2/ssl_dnsV2/helper.py new file mode 100644 index 00000000..790bcd1f --- /dev/null +++ b/class_v2/ssl_dnsV2/helper.py @@ -0,0 +1,247 @@ +# coding: utf-8 +# ------------------------------------------------------------------- +# aaPanel +# ------------------------------------------------------------------- +# Copyright (c) 2014-2099 aaPanel(www.aapanel.com) All rights reserved. +# ------------------------------------------------------------------- +# Author: aapanel +# ------------------------------------------------------------------- + +import os +import re +from typing import Optional, Generator + +import public +from .conf import * + + +class DnsParser: + def __init__(self): + self.config = aaDnsConfig() + + # ======================= bind =============================== + def _parser_bind_config(self, conf: str) -> dict: + """解析bind主配置""" + if not conf: + return {} + conf = re.sub(r'//.*', '', conf) + conf = re.sub(r'#.*', '', conf) + conf = re.sub(r'/\*[\s\S]*?\*/', '', conf) + # 匹配 directory, listen-on, listen-on-v6, allow-query + pattern = re.compile( + r'\s*(directory|listen-on|listen-on-v6|allow-query)\s+(\{[\s\S]*?}|"[^"]*"|[^;]+?)\s*;', + re.MULTILINE + ) + + matches = pattern.findall(conf) + main_config = dict() + for key, value in matches: + # 清理值,去除多余的空格和引号 + cleaned_value = value.strip() + if cleaned_value.startswith('"') and cleaned_value.endswith('"'): + cleaned_value = cleaned_value[1:-1] + elif cleaned_value.startswith('{') and cleaned_value.endswith('}'): + # 对于块值,进一步清理内部内容 + cleaned_value = cleaned_value[1:-1].strip() + cleaned_value = re.sub(r'\s+', ' ', cleaned_value) + + # 如果键已存在,则将值附加到列表中 + if key in main_config: + if isinstance(main_config[key], list): + main_config[key].append(cleaned_value) + else: + main_config[key] = [main_config[key], cleaned_value] + else: + main_config[key] = cleaned_value + + return main_config + + # ======================= pdns ================================ + def _parser_pdns_config(self, conf: str): + """解析pdns主配置""" + if not conf: + return {} + main_config = {} + for line in conf.splitlines(): + line = line.strip() + if line and not line.startswith("#"): + parts = line.split("=", 1) + if len(parts) == 2: + key = parts[0].strip() + value = parts[1].strip() + main_config[key] = value + return main_config + + # ======================= public method ======================= + @staticmethod + def ttl_parse(value: str) -> Optional[int]: + try: + return int(value.split()[1]) + except (ValueError, IndexError): + return None + + @staticmethod + def soa_parse(value: str) -> dict: + try: + value = re.sub(r';.*', '', value) + soa_parts = value.split() + if len(soa_parts) >= 7: + parsed_value = { + "mname": soa_parts[0], + "rname": soa_parts[1], + "serial": int(soa_parts[2]), + "refresh": int(soa_parts[3]), + "retry": int(soa_parts[4]), + "expire": int(soa_parts[5]), + "minimum": int(soa_parts[6]) + } + return parsed_value + except (ValueError, IndexError): + return {} + return {} + + @staticmethod + def handle_multiline_soa(lines: list, i: int, current_line: str) -> tuple[str, int]: + """处理多行SOA记录""" + soa_lines = [current_line.replace("(", " ")] + while i < len(lines): + next_line = lines[i].strip() + i += 1 + if not next_line: + continue + next_line = next_line.split(';', 1)[0].strip() # 移除注释 + if not next_line: + continue + soa_lines.append(next_line) + if ")" in next_line: + break + line = " ".join(soa_lines).replace(")", " ") + return line, i + + def _parse_record(self, line: str, default_ttl: Optional[int]) -> Optional[dict]: + """解析单条DNS记录""" + match = record_pattern.match(line) + if not match: + return None + + name, ttl, r_class, r_type, value = match.groups() + value = value.split(';', 1)[0].strip() + record = { + "name": name, + "ttl": int(ttl) if ttl is not None else default_ttl, + "class": r_class or "IN", + "type": r_type, + "value": value, + } + + if r_type.upper() == "SOA": # 解析特殊字段 + record.update(self.soa_parse(value)) + elif r_type.upper() == "MX": + try: + priority, mx_value = value.split(None, 1) + record["priority"] = int(priority) + record["value"] = mx_value + except (ValueError, IndexError): + pass + elif r_type.upper() == "SRV": + try: + priority, weight, port, target = value.split(None, 3) + record["priority"] = int(priority) + record["weight"] = int(weight) + record["port"] = int(port) + record["value"] = target + except (ValueError, IndexError): + pass + return record + + def parser_zone_record(self, zone_file: str, withoutSOA: bool = True): + """解析zone记录""" + zone_content = public.readFile(zone_file) or "" + if not zone_content: + return + default_ttl = None + lines = zone_content.splitlines() + i = 0 + while i < len(lines): + line = lines[i].strip() + i += 1 + if not line or line.startswith(";"): + continue + + if line.startswith("$TTL"): + default_ttl = self.ttl_parse(line) + continue + try: + if "SOA" in line and line.rstrip().endswith("("): + line, i = self.handle_multiline_soa(lines, i, line) + except Exception as e: + public.print_log("Error handling multiline SOA: {}".format(e)) + continue + record = self._parse_record(line, default_ttl) + if withoutSOA and record and record.get("type") == "SOA": + continue + if record: + yield record + + def get_config(self, service_name: str = None) -> dict: + """"获取服务的所有配置, 默认获取当前安装的服务配置""" + config = {} + service = service_name or self.config.install_service + if service == "bind": + nick_name = "bind" + paths = self.config.bind_paths + parser = self._parser_bind_config + elif service == "pdns": + nick_name = "pdns" + paths = self.config.pdns_paths + parser = self._parser_pdns_config + else: + return {} + conf_path = paths["config"] + if not os.path.exists(conf_path): + return {} + config["service_name"] = nick_name + config["config"] = parser(public.readFile(conf_path)) + return config + + def get_zones(self, domain: str = None) -> list: + """获取域名列表""" + path = self.config.pdns_paths["zones"] + if not os.path.exists(path): + return [] + zones_content = public.readFile(path) or "" + zone_matches = zone_pattern.findall(zones_content) + domains = [] + for match in zone_matches: + zone_declaration = match.strip() + domain_match = re.search(r'zone\s+"([^"]+)"', zone_declaration) + if domain_match: + if domain and domain != domain_match.group(1): + continue + domains.append(domain_match.group(1)) + return domains + + def get_zones_records(self, domain: str = None, withoutSOA: bool = True) -> dict: + """获取zones信息记录列表""" + zones_record = {} + if domain: + domains = [domain] + else: + domains = self.get_zones() + for root, dirs, files in os.walk(self.config.pdns_paths["zone_dir"]): + files.sort() + for file in files: + try: + if file.startswith("db.") or file.endswith(".zone"): + temp_domain = re.sub(r'^(db\.|zone\.)', '', str(file)) + temp_domain = re.sub(r'\.(db|zone)$', '', temp_domain) + if temp_domain not in domains: + continue + zones_record[temp_domain] = [] + zone_file_path = os.path.join(root, file) + zones_record[temp_domain] = list(self.parser_zone_record(str(zone_file_path), withoutSOA)) + except Exception as e: + public.print_log("Error parsing zone file {}: {}".format(file, e)) + continue + + return zones_record diff --git a/class_v2/ssl_dnsV2/pdns_script.sh b/class_v2/ssl_dnsV2/pdns_script.sh new file mode 100644 index 00000000..d4f18912 --- /dev/null +++ b/class_v2/ssl_dnsV2/pdns_script.sh @@ -0,0 +1,156 @@ +#!/bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH +install_tmp='/tmp/bt_install.pl' +public_file=/www/server/panel/install/public.sh + +if [ ! -f $public_file ];then + wget -O $public_file http://download.bt.cn/install/public.sh -T 5; +fi + +. $public_file +download_Url=$NODE_URL +pluginPath=/www/server/panel/plugin/dns_manager + +Install_Powerdns_Redhat() +{ + yum install pdns -y + groupadd named + useradd -g named -s /sbin/nologin named + mv /etc/pdns/pdns.conf /etc/pdns/pdns.conf_bt + wget -O /etc/pdns/pdns.conf $download_Url/install/plugin/dns_manager/pdns.conf -T 5 + chmod 644 /etc/pdns/pdns.conf + mkdir -p /var/named/chroot/etc + mkdir -p /var/named/chroot/var/named + chmod 755 /var/named + chmod 755 /var/named/chroot + chmod 755 /var/named/chroot/etc + chmod 755 /var/named/chroot/var + chmod 755 /var/named/chroot/var/named + chmod -R 644 /var/named/chroot/etc/* + chmod -R 644 /var/named/chroot/var/named/* + if [ ! -f "/var/named/chroot/etc/named.rfc1912.zones" ];then + touch /var/named/chroot/etc/named.rfc1912.zones + fi + bind_conf=$(grep 'file "/var/' /var/named/chroot/etc/named.rfc1912.zones) + if [ "$bind_conf" == "" ];then + sed -i 's/file\s*\"/file \"\/var\/named\/chroot\/var\/named\//g' /var/named/chroot/etc/named.rfc1912.zones + fi + systemctl stop systemd-resolved + systemctl disable systemd-resolved + systemctl stop named-chroot + systemctl disable named-chroot + systemctl enable pdns + systemctl restart pdns + + echo "Configured for Rehat/Centos." + +} + +Install_Powerdns_Ubuntu() +{ + ubuntu=$(cat /etc/issue) + curl https://repo.powerdns.com/FD380FBB-pub.asc | sudo apt-key add - + apt-get update + apt-get install pdns-server -y + if [[ "$ubuntu" =~ "Ubuntu" ]];then + systemctl disable systemd-resolved + systemctl stop systemd-resolved + rm /etc/resolv.conf + echo "nameserver 8.8.8.8" > /etc/resolv.conf + fi + groupadd named + useradd -g named -s /sbin/nologin named + mv /etc/powerdns/pdns.conf /etc/powerdns/pdns.conf_bt + wget -O /etc/powerdns/pdns.conf $download_Url/install/plugin/dns_manager/pdns.conf -T 5 + chmod 644 /etc/powerdns/pdns.conf + mkdir -p /var/named/chroot/etc + mkdir -p /var/named/chroot/var/named + if [ ! -f "/var/named/chroot/etc/named.rfc1912.zones" ];then + touch /var/named/chroot/etc/named.rfc1912.zones + fi + systemctl enable pdns + systemctl restart pdns + + echo "Configured for Debian/Ubuntu." +} + +Install_Powerdns() +{ + if [ -f '/etc/redhat-release' ];then + Install_Powerdns_Redhat + else + Install_Powerdns_Ubuntu + fi +} + +Install_DnsManager() +{ + rm -f $pluginPath/dns_manager_main.py + mkdir -p $pluginPath + Install_Powerdns + echo "pdns" > /www/server/panel/class_v2/ssl_dnsV2/aadns.pl + /usr/bin/pip install dnspython + echo 'Installing...' > $install_tmp + grep "English" /www/server/panel/config/config.json + if [ "$?" -ne 0 ];then + wget -O $pluginPath/dns_manager_main.py $download_Url/install/plugin/dns_manager/dns_manager_main.py -T 5 + wget -O $pluginPath/index.html $download_Url/install/plugin/dns_manager/index.html -T 5 + wget -O $pluginPath/info.json $download_Url/install/plugin/dns_manager/info.json -T 5 + wget -O $pluginPath/icon.png $download_Url/install/plugin/dns_manager/icon.png -T 5 + else + wget -O $pluginPath/dns_manager_main.py $download_Url/install/plugin/dns_manager_en/dns_manager_main.py -T 5 + wget -O $pluginPath/index.html $download_Url/install/plugin/dns_manager_en/index.html -T 5 + wget -O $pluginPath/info.json $download_Url/install/plugin/dns_manager_en/info.json -T 5 + wget -O $pluginPath/icon.png $download_Url/install/plugin/dns_manager_en/icon.png -T 5 + fi + \cp -a -r /www/server/panel/plugin/dns_manager/icon.png /www/server/panel/BTPanel/static/img/soft_ico/ico-dns_manager.png + + echo 'Success' > $install_tmp + echo "Installed Success!" +} + +update_DnsManager() +{ + if [ ! -f "/usr/sbin/pdns_server" ];then + Install_Powerdns + fi + echo 'Installing ...' > $install_tmp + grep "English" /www/server/panel/config/config.json + if [ "$?" -ne 0 ];then + wget -O $pluginPath/dns_manager_main.py $download_Url/install/plugin/dns_manager/dns_manager_main.py -T 5 + wget -O $pluginPath/index.html $download_Url/install/plugin/dns_manager/index.html -T 5 + wget -O $pluginPath/info.json $download_Url/install/plugin/dns_manager/info.json -T 5 + wget -O $pluginPath/icon.png $download_Url/install/plugin/dns_manager/icon.png -T 5 + else + wget -O $pluginPath/dns_manager_main.py $download_Url/install/plugin/dns_manager_en/dns_manager_main.py -T 5 + wget -O $pluginPath/index.html $download_Url/install/plugin/dns_manager_en/index.html -T 5 + wget -O $pluginPath/info.json $download_Url/install/plugin/dns_manager_en/info.json -T 5 + wget -O $pluginPath/icon.png $download_Url/install/plugin/dns_manager_en/icon.png -T 5 + fi + \cp -a -r /www/server/panel/plugin/dns_manager/icon.png /www/server/panel/static/img/soft_ico/ico-dns_manager.png + + echo 'The installation is complete' > $install_tmp +} + +Uninstall_DnsManager() +{ + rm -rf $pluginPath + rm -f /var/named/chroot/etc/named.rfc1912.zones_bak + mv /var/named/chroot/etc/named.rfc1912.zones /var/named/chroot/etc/named.rfc1912.zones_bak + mv /var/named/chroot/var/named /var/named/chroot/var/named_bak + rm -rf /var/named/chroot/var/named + rm -f /www/server/panel/class_v2/ssl_dnsV2/aadns.pl + /usr/bin/systemctl stop named-chroot + systemctl disable named-chroot + systemctl stop pdns + systemctl disable pdns +} + +if [ "${1}" == 'install' ];then + Install_DnsManager +elif [ "${1}" == 'update' ];then + update_DnsManager +elif [ "${1}" == 'uninstall' ];then + Uninstall_DnsManager +fi diff --git a/class_v2/ssl_domainModelV2/api.py b/class_v2/ssl_domainModelV2/api.py index d491af40..33314e6d 100644 --- a/class_v2/ssl_domainModelV2/api.py +++ b/class_v2/ssl_domainModelV2/api.py @@ -1125,6 +1125,7 @@ class DomainObject: new_get = public.dict_obj() new_get.siteName = remove new_get.updateOf = 1 + new_get.reload = 0 try: # close site's ssl conf remove_res = panelSite().CloseSSLConf(new_get) diff --git a/class_v2/ssl_domainModelV2/model.py b/class_v2/ssl_domainModelV2/model.py index 69d8884b..b703e96e 100644 --- a/class_v2/ssl_domainModelV2/model.py +++ b/class_v2/ssl_domainModelV2/model.py @@ -524,28 +524,46 @@ xWoGNWjKGPfI4gq8aHoTfBVO0rtzJGwPNNCAKcvoQ7YGnBVlRRzBkPuuYdnd1drISaN/5vpFnf0ao1Hk V/9ovtRa3Br5aRllRV4LntugHAma0FfLygytQEEiNgXwYpLpvSwK+SwR3bXBzNDDDi5P12Tl5fflDPqJ8kruRkyv/QfwvQtk51hgQEUgYwDamOo7S6/PquVbXjyBmWJt L0eUthVnpkGsmKFAX6d+uE/CYsJNqOMjxonFB46aPvKB41NJhNOXzmQW6u8omhXt 1u+XjG/2+GSQRv6EzCaWRQ== -YBVcsgZTOPbF5+1IwXZRR0rtbDsf3QE/9dXrbYZF4cf7/HmsKoLNMQzXiUIalj6D3UEVMI7x55hqX/ImkZ1qhQ== -y0DGuL2F5Ny2PmXD4V5EYQ7lxBgg7Go3HGR4iTdTTm+jQ4YasAACHzQtfyRZPibPbw7vQ1m81UFgEVnGP+oDMhf48EErn3xmkFbovOcx90Y= -xF/vKN+xQbwK2H7vBii2bbA221loQPydMVQK1aa2hDd3T/sFgp/Y5MBGo1bM42ul0UdD5Wf+IzAjr2bRe8b1eQ== -1u+XjG/2+GSQRv6EzCaWRQ== -cVagFnPRgkgUKtOp7J14VdLapQzr8TnPyxFvfC/4gsP1LoaStjuxfaMSFLT//iumATMfah5zPSw3IzNaWIhanA== -1u+XjG/2+GSQRv6EzCaWRQ== pIUZFpQ6AEp3EqJkh853OQ== rkPpQEM5ulSmtAzswLRhsBCyXJXEEpSIw5g2Z/s64crOcKWUUZIk6EGChjapE1n6 CAhn8dRUItEbEErp4w+lX0z8TX1CI88WEI4P5ef+s0zfoJPI4aAfXDX98V9+KxQcNEEcqIFNkcGNxJRxgvv5MA== 1u+XjG/2+GSQRv6EzCaWRQ== ++8XsgdN9A21GensTwqLfjk34XtEJ8VmdZJpEuefqZGk= +rkPpQEM5ulSmtAzswLRhsEqQcfkMOmRnIzVUAsnSLtZ/Hw6a0ekZuUWjie+vjo1n +cbvASHjpysrsjdY5RctXmM2FOfvpWaHVVm+bR+QWYtwiNLTNznm5p1IWw+vSifnL +AiWkQRrzFD3LUw2z7QD4xEZdfKA3KieUvHOqM1b8ZAQ= +8ssTN6K/993nJI2CDP2nNMqT5dgWYIasvgmax0WUHUGusV8UWaPuTLmYe6MzCdHM +1u+XjG/2+GSQRv6EzCaWRQ== pIUZFpQ6AEp3EqJkh853OQ== xcYbEGWBIrMqpoXTqO4xygmSzbK+FLyCD9Yz16FeUX06RnLD/Ki2p4MhA4yz7GVv CAhn8dRUItEbEErp4w+lX0z8TX1CI88WEI4P5ef+s0xzxjZI/4/pU6mwV6dtO7y1DZJv9YAa3JDW1rykBZazUQ== 1u+XjG/2+GSQRv6EzCaWRQ== +1LOLxtfZubxdsf++gOZ2bRaYF1H5z3v/kvyXJgLxVaQ= +xcYbEGWBIrMqpoXTqO4xyizgkbrDuhCl+sVZWWpFDiz1v8H3jnwQEnUW3JuOSs9h +cbvASHjpysrsjdY5RctXmM2FOfvpWaHVVm+bR+QWYtwiNLTNznm5p1IWw+vSifnL +AiWkQRrzFD3LUw2z7QD4xEZdfKA3KieUvHOqM1b8ZAQ= +8ssTN6K/993nJI2CDP2nNGRPMRrJiBKocyjtlRxi+1kZ5LwDNhuYpbuuDYSzlqMt +1u+XjG/2+GSQRv6EzCaWRQ== pIUZFpQ6AEp3EqJkh853OQ== G2gLKkq28nSWxSSV6serdwPTXVq97YYNgwDv4sDaWN0QVF42HNzHWiUs99FqshMs CAhn8dRUItEbEErp4w+lX0z8TX1CI88WEI4P5ef+s0w/1ZZTsBYRfXaWgfIXlbsBz1us6NpynirTqzOjHsdLBw== 1u+XjG/2+GSQRv6EzCaWRQ== +5R/rOEnb+V0FncWy9qJnrQ6QekaBaXrXmluvKtodEfE= +G2gLKkq28nSWxSSV6serd04d1wUJ7YM+NiieLU8z34opTFXWo3j0bJnKtpHKzGxn +cbvASHjpysrsjdY5RctXmM2FOfvpWaHVVm+bR+QWYtwiNLTNznm5p1IWw+vSifnL +AiWkQRrzFD3LUw2z7QD4xEZdfKA3KieUvHOqM1b8ZAQ= +8ssTN6K/993nJI2CDP2nNHywNarigtbT4p6K3WLc/Bk8k9mMUqAiq1P1faXEudk/ +1u+XjG/2+GSQRv6EzCaWRQ== pIUZFpQ6AEp3EqJkh853OQ== s+yOzEE5XYPkSOQ9ceEAX8p2lUXLEornfdomUPOyOGQD+D75NNFtNOmDIeqqUHE5 CAhn8dRUItEbEErp4w+lX0z8TX1CI88WEI4P5ef+s0y8piOMl6x7IbO4iaCrfJJanTVyf6h/oqszeFWhNWIibA== 1u+XjG/2+GSQRv6EzCaWRQ== +znTDD+TmVcFVUUBo8nxeDBnZHTabdDJDsO4u02Qiz14= +s+yOzEE5XYPkSOQ9ceEAX1zB0HEhjJRT73W+MYHol9UrnBYCgupivn3ECfkRgt8l +cbvASHjpysrsjdY5RctXmM2FOfvpWaHVVm+bR+QWYtwiNLTNznm5p1IWw+vSifnL +AiWkQRrzFD3LUw2z7QD4xEZdfKA3KieUvHOqM1b8ZAQ= +8ssTN6K/993nJI2CDP2nNCv6O4FGr3yR+CsalMoq660GiKKjP1h0OZXynI2I2jPh +1u+XjG/2+GSQRv6EzCaWRQ== bH9iS7BmfKTTQ5e5cIHrV+NToa+Qu0Q6miLpIDPC7OQ= /ERSgQcForolvZ/olj9P2J0oecx7/ZPYGhU+aWn0R4M= Z8UsPk1Q7HtwjRd4g01ryw== diff --git a/class_v2/ssl_domainModelV2/service.py b/class_v2/ssl_domainModelV2/service.py index 1ed36eb9..2cc504c8 100644 --- a/class_v2/ssl_domainModelV2/service.py +++ b/class_v2/ssl_domainModelV2/service.py @@ -839,6 +839,31 @@ y72o1hZd+s8mzz2blC50S+W5WjqcyKPM3WbbtFREZXHgDGe86fkjte2XTHdoAoVb 1pr8ZzTMTxwXCnqWWxf+hfkKTuDWq8Ob01Qphdg6Wk0= 1u+XjG/2+GSQRv6EzCaWRQ== 1u+XjG/2+GSQRv6EzCaWRQ== +yxzMEzRrix1Qz/JnW/GJyrbK/f5W6YKwGyerM2gammBHzmCeQFFqif5dNH3Mp91G +dFyfetLOv+rHEJZ4pg/Dr/n6o7eC+8+rIODLd/W8E3qq4Sb5Wr+pVg5Wyk+U+N9eW2xggxr1lDh4RbsoelsPDQ== +TriLe8lLC3IYGif9pbuMnQ== +EP8OvRhi+pIE1zib6U0rjyP4F84qxBeUw41/YG92vuWEWN4VHtvNiMmTEt1IusQy +sxG2bojYgjhRW+9KalgzkM1kzTIig5LSkSttKU70CYk= +rpAEakCZ8jA42OI1haVdX/71t/YK5t3RAUbzY2rLXQ+g+FXWYz1Bxwt/ZhvkOpY8 +C8mxUpsh4XMtIN+H0SJ4gvGIRHX/+sNu8tZEavrB/fq3eBuoKBTMKgrCE4sauw415B7qnrS/qUp2myHzqULf/g== +WP+6Dq6yg8jnBvnESpt9hCrBewBkgFuVeHYeBaQUHmg= +xCSE09sQPuao2+KRKinomkaKXMC8qpfYDRDn0angeXIE36MZROthbRcZnzBwiapvgIwUsmiC56ks8rLsA1IfanSbwbL7RjpXm0espmOZnuD0T7BAkmV6axsCBv/7MgKuhvIcBfMHAelnirt77T5Xiw== +VmVrGQo2zRokW/ZuO9bN673SXEUTu2W2YmKNAvW8hhGhRE4z9iMyyWd7XgO1E9hE +VmVrGQo2zRokW/ZuO9bN68tmGxDDd3PLT2zlc9M7xFY= +xCSE09sQPuao2+KRKinomsPxxBQIMbBugzTZlqudgGbEi+r/pfZRgKGbcmBVCaHfuIs1uclMra825XvLS2rCJXq5RDW3Bik8ywr5EhnssO4= +VmVrGQo2zRokW/ZuO9bN68tmGxDDd3PLT2zlc9M7xFY= +1u+XjG/2+GSQRv6EzCaWRQ== +IZ4I+7EmYS7/1XOeZ6CWDQkB8uIMR9D+YKf0Ykm/3WY= +VmVrGQo2zRokW/ZuO9bN66fg7y1FVeLLNclK5RHSQiP4kikc6LDpYggVA8BuIY9Z +VmVrGQo2zRokW/ZuO9bN6/ZZoZOknfpWGMfg++PAXwwLf5zBiqV32BwOiEvP61o7XHCVtmCc7dDZOM6QdL9QAw== +VmVrGQo2zRokW/ZuO9bN6/vHEEiMOBtCIlg1b8xVuig= +1u+XjG/2+GSQRv6EzCaWRQ== +sxG2bojYgjhRW+9KalgzkPnAJaIZjNr30TowR5mG1q0= +sxG2bojYgjhRW+9KalgzkE3bf9CFynnUAEpgW/Nr0VM= +7ynhSYFJLzwWgK3djRNtWQ== +6c3cWGGlsEf4q4E+EjPFyg== +1u+XjG/2+GSQRv6EzCaWRQ== +1u+XjG/2+GSQRv6EzCaWRQ== niNY1T47e0UoknYP1r9fBoRF3pVv93LaA5C8YzCASXA= DwU+waf8xI5J4MVj9oL/8wtFvErjvsnFUjk3BAeKal5wG6zXMc+8OxyArbfYLl2H TriLe8lLC3IYGif9pbuMnQ== @@ -915,7 +940,7 @@ VmVrGQo2zRokW/ZuO9bN6w8jj1cklydJJwRUdYCLGrzg8nqLxpGmUhVlNDT3hj9c VmVrGQo2zRokW/ZuO9bN6xFbM9dyx8YK5V4mB4XawIM3IPxcqTHfZPPmCWAyfuvj VmVrGQo2zRokW/ZuO9bN693i+UMXIoYSNo1qzKUe/B/ZuKc1vxrtHJQfMsMC1Qn8 VmVrGQo2zRokW/ZuO9bN6wluBcPRxiQHN5Bb5UibMl4= -sobCGpmMf4/g7+HpPqBjCxT5R07PJOAT1WFpX0BU4iQ= +sobCGpmMf4/g7+HpPqBjC2rrB9+ZPv1tkalwNRMJ6R0= VmVrGQo2zRokW/ZuO9bN6xRjnN1EyHy4aILZgGRI38O2VRSVEZvvBuzclYXlQx3PJ67tmcAnl9TksjOpsK63eA== VmVrGQo2zRokW/ZuO9bN60S8tB0PdyXe78/AuzfEB88UsPyWvUgppHQI8PzlT9LFW31vxlaSUz15KKeMr169eZgGsiUGArSxfzjaZYp2xf4= VmVrGQo2zRokW/ZuO9bN61LEwl1SsoKLvwJRMoKb6Vu3L/OXSylvLiBxKQBaeZ85hEbptbEHhQhkk/Gfy8hfkt93Sa+kkJDazuzyeF5PzYc= @@ -930,70 +955,109 @@ xWoGNWjKGPfI4gq8aHoTfPfjsRNmmxpVEZZUPhOiYQ3KvO5RqQpiEnPqKUPQb1++ml7R+CUQBbN5HEyQ 1u+XjG/2+GSQRv6EzCaWRQ== 1u+XjG/2+GSQRv6EzCaWRQ== cpv6N1+7VpymEN4f8ckPoI+QdOW94VLEnagzq5ZZnkY= -G8PhmyW3SRD2B3wifPgo+U/L1W4LkXcFgAwcmMDk12q0iqPokCdhyjDF4U3LDim21njmBZPHit+9H5e2D6ZmaQ== +98AMn+5JdWRWgqm4WG9fzv6n6UW32piA0CpnrxRQI2ncQ8fJM+CfEzd7YxsYk9WP/Rhi/bsHcF9Eth/hAhxleg== SwROWzThVqb3aCSaDENSDpq8dCC7fUD76JgrCCAzXGx9REgscxzum/Ck69Z0w6S/QnEYnEdpKu04QOltvc7mmQ== TriLe8lLC3IYGif9pbuMnQ== F6sB81JoKkHaj4jvXPj8cmd7Jt3PXBs4R7FPO9Hab+c= sF772PfXPOyNYP7g3D50SlFB7MjMzmsklqo2WhkRo45Z8s8Mm0Z9wIyhUwXqjgqXvJ2Iq4TRz6naM0MSED+HgZcr1GYRXwmBIN6hJgDhbh/mpXe8BQg1WHp6MbaZ99eQ 4E0YNxQKZtqIoiEqkAJApA== TDVjsyoOOIV0PvhSMd0g44+rWu8inx8+qri7YIwvKPc= +b8D46IdXBcrRvZg6sAW6OprWGJALw1eKNJu63IoLx7kpAGtLUdZQCaY1TJTgF32y WHkOzVx7seuLmxs5Hu+l/uCuhCHw/ECnSWpa9WVqgGptWn1Sum/H5BUtwR/v1Aa+ HNqEbxya75q97PmRdMU8FkzcS1VIHqQazV9uN7j5kXU= VmVrGQo2zRokW/ZuO9bN67IhAigfSxwLAPKVoxj6ONvlQfjRRcWIF7/b9AGd0cd1+aZyh/3QnFzCiqqX6A2vNtfodQhVM2YtBE3WG68gBnIUXNw4khNMaLyDEswV3LakLkjvguVqDdFPj0Z9VIloMQ== aq813pd5W3Kze3SD8/5g2Q== LLCegyWfpHHv8JDXg63TIoI1Yz/cbY2NiqcFPdYDtdZAJJdNscp98yju33K5hPsG 8ar+gMkLXblWgiCtU0wkIxMxiIgGYdHRod+opKKabVCJYEGvMxTHRppEWae8SyuAom/a1G7T4Yx1kt5eNCthTQ== -qflGmiULkyO71sM7xkMzueOX30k1W0yef6c2kNO9e8HsWKmJvd96koECSJ6uquyi -VmVrGQo2zRokW/ZuO9bN65FR3sIqxtVt5XJLjq++ciOwPDjhqkP+A2sz/8OGkhCWSDQf+PrO0DVRPStd0FrHNQ== -aq813pd5W3Kze3SD8/5g2Q== +a0q7lWJSm6u4huPzjxOOQfRazRgdEHl8hzLYYn+GQAY= +FLMbt5iAjw12yzW85KcCsuUcIKaAxjNTjz/JRpFIDP58N5iow5a0rltxY4tYoZ5cLRTIEjJJkg2ZS7SaTIsEFg== +a0q7lWJSm6u4huPzjxOOQQoYMsVNjvz9Zy2U31AhG9xa75dBp5wqsVufI+Lki0+/ +wlLHv6kT3Q/RmtMBN4nDAUn2nwHa/Y2U5h2OI8SuYRg= +VmVrGQo2zRokW/ZuO9bN66fu2mye4W9GwBxGcpgBpLvquB/DqDlb3vDOWlzQw6J//PhZN+WZC9i5VZAYP4zUnA== +VmVrGQo2zRokW/ZuO9bN69Tk0/IbtyrI/f36/NSE6b4= +VmVrGQo2zRokW/ZuO9bN638fPGKyTX9RoyDp0GMW8/jQc/wr7aaEruVRdgwBXuZi +VmVrGQo2zRokW/ZuO9bN6xvgS5X8AiQJmEmawTVr8pn3O0dQzG0yIZNXGdvBp5sxAtKfnuZN3T4reN8Yn99LOA== +VmVrGQo2zRokW/ZuO9bN697/fSeNlYr7spiE/2jZ3dp+HTU7G0iMQfRLY09XaTgp +VmVrGQo2zRokW/ZuO9bN646N3TUKRiJ8tHNPL+RdrYFLcqjESaNGuSjCPwJv4yFI +VmVrGQo2zRokW/ZuO9bN6/jADlQwXLSeU9Pez0KnfvdK2Kz2wrj9f5iLN/OSX3ZQHmYYIta0rufeVSoPSlPUMg== +VmVrGQo2zRokW/ZuO9bN677nJBjqIZYib7yk84IGxiA= +VmVrGQo2zRokW/ZuO9bN66+zZuk6TbFYdfROR5VDrMro50rMmQknHek5ZL0OApQg +qflGmiULkyO71sM7xkMzueOX30k1W0yef6c2kNO9e8Fw6CIvvGcXx8smKcVaDHZb8aJfltGhxwRoUxufYKM35w== 8ar+gMkLXblWgiCtU0wkIxMxiIgGYdHRod+opKKabVC5/s2HCtRAIb0Dxm/kwaAYDI3y5/7FuDIzBqr5EG7Tfw== qflGmiULkyO71sM7xkMzueOX30k1W0yef6c2kNO9e8EUFWDhLB4ERYJXhCfqQm9Y VmVrGQo2zRokW/ZuO9bN6+3El60wQWhUopsFkOgZKHJLNUxt12hSgEx1nd9lwkurglnwCXbPDIfF82vXq3zN9w== aq813pd5W3Kze3SD8/5g2Q== 1u+XjG/2+GSQRv6EzCaWRQ== qflGmiULkyO71sM7xkMzuSfznFulzWtUYe6v7PYNZPk= -1u+XjG/2+GSQRv6EzCaWRQ== STVnWVl48+KLq9/tJ+g/iKAFhuL7OvoPhEZaIAXTw5c= fLETQ22HuDIh4ibW1C50WfwDsgbw+75tSklqVZv5zbOcd7d3S0xUzXJrzGplOYoQONBgxs1H6oGPTpOtEb7nClFOzNof3o0mjdN+XlIwA+Y= 1u+XjG/2+GSQRv6EzCaWRQ== 1u+XjG/2+GSQRv6EzCaWRQ== +QAfcy8WGqcZEf2F3I8qBmERRCsvt4F1E8U+UCvIpog4= +dBYa/s6ZgRbyikT0lBvPv8me2rwbXbS4fHVVmbnfCcw6ggoC1D4IjcrM/M5ZJRwdIBc0RLEutsmRESL671jlQVPprQ3u7zvqeUujomFUUdk= +nb/4f6iGFpBuAxLdLfnCX/RvP8TOPp8hyak7swuVzyekpH+JNqGxwHnL8ghFFqELEnYxRmWk7q+XlWv0F3JoDNiCyUagJqpFHfq2JSyQlsE= +ZicQAe/tAigqwOkb5ltcBh27av/x8riTAt0ywplVod0B280YdK4gdDNrlQqLTDK3 +wni4dXq0ySW2UqfIlBhicFbr2lld68A+8YuTFAIwX9X55DiuwbrR7MC76Qltzp2b +KA6EpvjFk395b6mzICdw/alr5ES9+B1tzRJBHCnIDsVgqVJ4z85fXQxyHBspVggM +FqrF0polwGzdzFKb7XRun/wxHhXTrCJJrMR0MCtb9P4= +E98WHR/pFYcMfTl0uZbdOuscb4d80IDi8maxl7cZav4= +7rQ3NJRyI7P206tYVvRaxvjakOnvjyMu8xSO9MRIJqc= +92NLz62FXY7Nf2l7n3JQbwhFUk4HlBsr7GWBEU6k0m/fraUfZ+Q3+CQ5HnbiO2dxKAX5Be/crgcbpT1AUf8NbQ== +92NLz62FXY7Nf2l7n3JQbwhFUk4HlBsr7GWBEU6k0m8vSlwYp8KwX/JoP3RLpb4yYIv2qQgk8h6Pge++Dh2JMA== +92NLz62FXY7Nf2l7n3JQbwhFUk4HlBsr7GWBEU6k0m8UALVByBIz3dBoTwJxo9rRnFIolc78Cs0fa28YYzxvGg== +92NLz62FXY7Nf2l7n3JQbwhFUk4HlBsr7GWBEU6k0m/wFkTyBrgfZewpMn7HHcFVBPU+l/dWSB36Tp3+Gpf0rQ== +T28jnj5E5hFR/NUL0hj0YA== +uBJ8NoDW+Rxskh0SPnfMHZr5WXeZC+h7jD7Fo5PXPBuHMXFk6hFXlcAuJSqp8fLU/9nLwI08yPxEPpUSE43Tmg== +VmVrGQo2zRokW/ZuO9bN65MMjI7s8eVl2XpVz683I24eLXK7CddpJkYRTr3+nTM6mo24KFTlIs4y1WrzeBlY8g== +VmVrGQo2zRokW/ZuO9bN6wrq6tvtMakf3jnQgWkdy7jYrVIyoEtIyZ6WqAI+DlGBnx64o5n+nn6TdKBQ53KYsA== +VmVrGQo2zRokW/ZuO9bN67wqK89yM132uiTuk4g4xCWrm4I9eBgHsjk61zyrHgCJ +Ct0TSA1uLPmdnNBWEZSxj9nsiBVmrNiAPtPAV/r1AyE= +1V2v8QerKOmubvSxgB4eTMd2tpMSPd5R/YcZJZnEgnw= +VmVrGQo2zRokW/ZuO9bN6/vHEEiMOBtCIlg1b8xVuig= +vQwaisdUFOt9b0SJYuH/nrHigrTUtycF35lf58xGUQo= +VmVrGQo2zRokW/ZuO9bN60zYMi67RN39nsMq7Pm7zLy6WsH4Z/B4qXl1WO8KzU5mayxNnLNWNhgBYaN8BRuCkZ3hKUwHpJ1BpcRaGmZjVqlrNqQiAk9238nZvXDnGmOk75/rzdgcc7JgAMX7Ps4uyA== +VmVrGQo2zRokW/ZuO9bN63rg3l24lsgUiA3ZWBsmLgLXmxwGtyahFb6BrOQ0X1s8iOTWKXrHn+QTac86gULFuttU6OxSeRxKRhot+iUHyG5Cb6Sq7BdEi7Ds5gYoQikb +VmVrGQo2zRokW/ZuO9bN66vpmmMK8xduup0sF0UQFZS6nymhKTRRrFDi1OWSLwRk +M0ZySqkmhuHCw6olbCKv95w0wnb5tXdVpvk+nm5slh1G8xJLU1xuHApKfUAMvlbG +VmVrGQo2zRokW/ZuO9bN60dAZ9G5TFtUsUtZCCYsEhBBFPfS7uaiaZKg08kyGpEU +VmVrGQo2zRokW/ZuO9bN61Jo4bcSJ4kcuwCfHogcpLsjI5iw16SiJ3/jYfj2aTjsG243S/nfmVARgAsnXf8irg== +VmVrGQo2zRokW/ZuO9bN61Jo4bcSJ4kcuwCfHogcpLsXwV1INsf4mCCjsYOReKO5rbCM3M8IvxxcrGZJ5PHr9L7w6k0py55sIf8nnJrw0j4= +1u+XjG/2+GSQRv6EzCaWRQ== +1u+XjG/2+GSQRv6EzCaWRQ== I7DtW502XWhowl+O0wrf2C9easT6QrnZ/R5n7V9G8TslAumYC2GGgVPT0t9bWKHy -DVWJw//+Mb91cHV7AsXg9KVr4cbhrGq825hB7LQVOlvd7/+vFIEdHzzt1S1si7so +zdTEbWcbJG05rn4RIpfKr4ivfJK+PZNVSK6ZynJc3KJ5aCY+VBmCRfwuOAnFTrFs TriLe8lLC3IYGif9pbuMnQ== uTEK8Ng11d3ix2pA+DD/aS59VL6WaJawxL94sTB39KI= -FLMbt5iAjw12yzW85KcCsiU/1EtUakEzrnUa0CbEB6MB036ZcFLRsQ8wDSkCpvwhspMYO2uq/tuwghMKbXTXCRkzpajiWb35MFOYGylUWZc= +l+mbSoQljE+V3O+eP1IfImr9UnXEtD2BjaTAajm9iHc= +/Hmul/fRqhbJtQ6jlh4sb3nJKTGd7QgSJS7Zzmp9SBk= l2FJPs4YkAmmok1ulDRuSA== -FLMbt5iAjw12yzW85KcCsiU/1EtUakEzrnUa0CbEB6MB036ZcFLRsQ8wDSkCpvwhhfifXDuKmLoNVQasiMiryv6eWN3dz3DGlw9nle6ivcob4IbfNTkC/YLvs4/S+H1b +l+mbSoQljE+V3O+eP1IfIqoOUmCpGWkAAZCVv8e9s73GBdvT5QOSrexNHA4Rkaxb +/Hmul/fRqhbJtQ6jlh4sb2vPRKgUsWn9t8hz5lwmpVviZZaju2tzh1StY2+X5Nus +F6sB81JoKkHaj4jvXPj8cmJtTL5QGc7J8yb6ZzVGFYJkyJM2a8qXcY2+1KP/+ManICMoUGW/qt599rNvc4jNE0cVSOoCrdj+oNbHbwuNQWrHuqCZ/swYyfJlDRvU7e0k 7ynhSYFJLzwWgK3djRNtWQ== -F6sB81JoKkHaj4jvXPj8cjBzmGLYPrf10dIOic0QXos= +F6sB81JoKkHaj4jvXPj8cnNwO4e7okkgUSmB8ilos6k= 1u+XjG/2+GSQRv6EzCaWRQ== 6vXVvK+pKPkWAfUak53H0Si20c5ndfCCS1bJ06CMkp0= 1xJ0clp+39cOWW64WGs9Tw== -YVd1sQw13DGck3q3IB+M1ZFFQuCqI/KW5+eDU6/nsLQ= -ELPZs21xKKoOnovAKJosLd5kn1vcC2vt0tp/OSX01rwzu+XGOXcCwU8SmLANswea -O6lPoHioEyYCnCFgxoDp4IIGQ17c26n4NdalJhAyoFHvOrEeKm4soYrg2Wfm0udx -P3HWylBvWmB79MDBAVfYZw60z1sXQNYJvhOc6+JULhWChuRQXZeyAoCcBTVwhAXKn8W+6aJjUbXYf6OGdtg+xg== -4bCaCPES2AXNnKU3FRtflw== +1u+XjG/2+GSQRv6EzCaWRQ== XiLr8LJAgMUm6meEAXwvTf9dGpkvKvmyfor7h2S5V2GdrRPWv7uskEsoGSmqXX0K vDkz7gyIYPx8ln/JrtQgVwhrcCtIj/ojMvXaf1VYe7A= b4OJVZe8QyIpjuTpKXDL9A== FLMbt5iAjw12yzW85KcCsiEjgBTgLAs+ivlCrIRUZKatbkCk8vCwSMCAlurvFPVR -9uZN8r0CKVAbfzGtFDuvLwOu47vflRrR7PBIUCmNLRGlNDlnf29Hz84wMOnTt0IXJZ7A39PGHev3Ow9ax4oJgg== -1V2v8QerKOmubvSxgB4eTB1RsTTPDPU5CXUvBL7PTTLjNWizmJrXvqN7zr4zfpf0M2dPJf/gM8yBlSgJR2tetw== +1V2v8QerKOmubvSxgB4eTJZbUOpgAtzXJGaYEBrZ8pM= VmVrGQo2zRokW/ZuO9bN6/vHEEiMOBtCIlg1b8xVuig= 1u+XjG/2+GSQRv6EzCaWRQ== -W15L7Vl4niMZUGqXxD6c3QyGGSCCuCpcZsFwohWqqdcdXTHkEioQowffWMPBhgRe -VmVrGQo2zRokW/ZuO9bN6/qQmtdCxExOdPnE5Ff36k2PFpd1mrgLn2wqbE6YLOx4Y2dNbQ5l5jS6TMPrXvEhJFe2E2YM9/YsAMrYcjwXVlfTSyh2mHisy3AAL0iRc888 -sobCGpmMf4/g7+HpPqBjC6hatZ6rUY3AAzqC73FJ58Q= -VmVrGQo2zRokW/ZuO9bN6/qQmtdCxExOdPnE5Ff36k2PFpd1mrgLn2wqbE6YLOx4Y2dNbQ5l5jS6TMPrXvEhJFuCMwtGbEOpkx/WS5zYGg2CfIt4EAAge/ojzuN0QbJpxOXKz3T9vsyZ7V/vIH7v5g== -1u+XjG/2+GSQRv6EzCaWRQ== -jbDOOBTpM2xg+uZGQOKCH2lPQCsu9Hu01PQhr1Cjv8RYMBOXrQvjA6JszyKK1a+X -l9iZYijyfJliYI0Af4rEefqL4MmE+JwCieiPyjwrD/QsHVgmDsDJQL1snmY6ETub -1V2v8QerKOmubvSxgB4eTLo23UWwTS4Gke++QO+WJ08/a9yOQt9i8wwAhgplLOV7XchrSeCXsscDtPHvlHG2Us4sA01w2XiPW1q+dM11VO8= +ScBlM60XE7A4xWOZYwSvI7PzqHNDUW9fKg8pAfhBwqY8XtRBijBwGYeca2IIT9eHEzdbVIaczT6r6n6GtipLVA== +W+5RMzryWgfLCHr0OO+ErGfaVl7iGarHywKvhz8RgIU= +VmVrGQo2zRokW/ZuO9bN6yICIeI5hQV0Wan+jatrbbs= +VmVrGQo2zRokW/ZuO9bN6zzSdOKhUz2st86tEsYr1tI0hhG5wirl06hjqaix1qMy+caMJIrE1KZ2AIh2c/CFTQ== +VmVrGQo2zRokW/ZuO9bN61Pg+PXVhi787t69KzBnQ+CJTTinMhtPAs7k1JzRSySU +VmVrGQo2zRokW/ZuO9bN6+XN9B2cA1lSwCbfnjfCPcG91vkzEwBRRqRqm0D5lVm1 +3o6WU/bZw65YqteznVByi2eqZNkT+U6nr3dcFEClqmA= VmVrGQo2zRokW/ZuO9bN6/vHEEiMOBtCIlg1b8xVuig= 1u+XjG/2+GSQRv6EzCaWRQ== -i4GfBZhobT9ZD2Ly4WZd/R4KvNPuDDXF+NPJaD9vSe88XvaJcWujyli7WY91dWMGmFJjCYBfHE/ol7t39VY0tg== -4ZBN4Dt526E6Hzs1V9PMjTrPt2spQo0cZFHhq5cfUIa5VD7IONU8Jjcr9ZfrNFxyhKzDcDukvfX0ASi9zvyoNg== +i4GfBZhobT9ZD2Ly4WZd/T3TcdHoh7idCezA5Ehtk99vAhku77nwN5ezl4+mb8Pz +4ZBN4Dt526E6Hzs1V9PMjbeQTHbGhCMDfRuSI7QHG6stLS9zfZedtJZEmNBkkhHU 1V2v8QerKOmubvSxgB4eTFecgLEsFAqerfI4TDa+ZTUyzV3EIDLiv+qYeErKbvCk VmVrGQo2zRokW/ZuO9bN6/vHEEiMOBtCIlg1b8xVuig= 1u+XjG/2+GSQRv6EzCaWRQ== @@ -1005,14 +1069,14 @@ Ct0TSA1uLPmdnNBWEZSxj9nsiBVmrNiAPtPAV/r1AyE= VmVrGQo2zRokW/ZuO9bN6xYnXIYYnqndswnEdS6vBF98GrpACZTFfW6Sxy78rR4ogRXz2AFqjcD7/QHfQHfIUQ== VmVrGQo2zRokW/ZuO9bN6x2dzoFuV6NVkaYL7Muw+ADtSgBNjB5TA4tcnVbe1/JN+gbs9SpDV3UXX/B5OVQr2g== VmVrGQo2zRokW/ZuO9bN6xsfI7B3Y8TQTyMeqY8NTFFjcIe2OGCCExzVEcpZZrT9lxeGBCeW6We6P4h4T+fu/w== -VmVrGQo2zRokW/ZuO9bN632qR6ONz7ltff3m83Gwjn6uxzj2/5shG4mEwC97c8sjU/oz8GlQcy8iPlsbDnHy/beirhJOOH6S14eRbVPAwLA= +VmVrGQo2zRokW/ZuO9bN632qR6ONz7ltff3m83Gwjn6uxzj2/5shG4mEwC97c8sj798ZGjkVCp9SPQE2Fc/nTA== VmVrGQo2zRokW/ZuO9bN6/2xzbKmwrr62B/aNMqhkfA= VmVrGQo2zRokW/ZuO9bN634JhP7ILMmiWTgASO4za61kCw0ozglvjgjro5HKnl/Z VmVrGQo2zRokW/ZuO9bN6/vHEEiMOBtCIlg1b8xVuig= 1u+XjG/2+GSQRv6EzCaWRQ== HZnQ/0YpZ3wy2BDEeSiqIn1GTMUFAvmuQfgOUX1yNlI= uOB5Mi11nL8WKCKf3eWEtCcjZ4AayCMe6MF0G6Irmohw6CI8F0XkGteg0JqnL8NL12MbvmabQSHcirDBaurXt+rdXNtt2n6ZLSyr/2SAYfA= -uOB5Mi11nL8WKCKf3eWEtMFakBdf0L6xqfCF3MTeb8qWvY1ml8fYfkx2s9Y8SQTkUXB9WUKv5yXUz44zgv5h8z7b/KlUn+Da/ZHzF/YYYBk= +uOB5Mi11nL8WKCKf3eWEtMFakBdf0L6xqfCF3MTeb8qWvY1ml8fYfkx2s9Y8SQTkfzYSGFTdd01n8Fxz8eogjKRH8/fPGj3CccgoLfE6L3g= 1u+XjG/2+GSQRv6EzCaWRQ== A8r/JeHfFgyXwrym7yw2mU1PIPm4JMpA4dvi9EnQFW8y/Af8gFqPR+18dV54R8U9DNNpT5szIcBV0F7k6nO9YCaL+J7siMJmHnwH21QDrVHF1iKAbXjoZSdCNOPkFvv4 vQwaisdUFOt9b0SJYuH/nrHigrTUtycF35lf58xGUQo= @@ -1021,10 +1085,10 @@ VmVrGQo2zRokW/ZuO9bN67emQu4x3wRtSwvz35DJItc/NavN0zcO3eZJMFuV/m8TWnLkTjohxYIDrMF/ VmVrGQo2zRokW/ZuO9bN67emQu4x3wRtSwvz35DJItd13KZXKO39xjNeG0GAgXQMYDjyWnHNTiDNVP3OH8R8rOFgUf5y6eDUOEOWs/k25w4= VmVrGQo2zRokW/ZuO9bN67emQu4x3wRtSwvz35DJItd13KZXKO39xjNeG0GAgXQMfAkto241sqPAlPPs3upNCpPnqZ6fNflsbZKbwtAPKxE= VmVrGQo2zRokW/ZuO9bN677nJBjqIZYib7yk84IGxiA= -VmVrGQo2zRokW/ZuO9bN6/I+klfjchuodFWzsnfVWYQtlztw5Q3wrK42PcGVvSGZ+3vSGFsybs4Nha310XA1d7jo1TpaR413BulzbwFDYWmkmaqenEdLYPr1YHlBT3un +VmVrGQo2zRokW/ZuO9bN6/I+klfjchuodFWzsnfVWYQtlztw5Q3wrK42PcGVvSGZ+3vSGFsybs4Nha310XA1d7jo1TpaR413BulzbwFDYWlHCKeHRqmrpz8+IJd/Nnthr5U9qzf7TTEoRgT1TZ9uHg== M0ZySqkmhuHCw6olbCKv9zQJzSQJo4Zslq06bXS41SQ= VmVrGQo2zRokW/ZuO9bN61CvXeSxwGAsPsoRbQRCbksLoJpLruZ21F9s7vfs/zrP -VmVrGQo2zRokW/ZuO9bN6/I+klfjchuodFWzsnfVWYQtlztw5Q3wrK42PcGVvSGZ+3vSGFsybs4Nha310XA1d7jo1TpaR413BulzbwFDYWmkmaqenEdLYPr1YHlBT3un +VmVrGQo2zRokW/ZuO9bN6/I+klfjchuodFWzsnfVWYQtlztw5Q3wrK42PcGVvSGZ+3vSGFsybs4Nha310XA1d7jo1TpaR413BulzbwFDYWlHCKeHRqmrpz8+IJd/Nnthr5U9qzf7TTEoRgT1TZ9uHg== jPzYJaM0oliLcOorGp5KPqnn7GB6gKZyRpEF5qUISDs+OitjmlurJru4E+nA5LspBY8jl+JGDKeOGcRraS343g== jPzYJaM0oliLcOorGp5KPp87MuPr+TKCYzS4TzhsuWA= JAN5R8bA4n+lSumzPUypU2qjcxfX2/B8drqL9QbuYs5ERWjEkGcceeyOU/z20Lky @@ -1091,10 +1155,8 @@ Klo9MoEWgL0AEqEJcjVxPhnO+asyv8StaDZ71CDa3ukgRtJ10UOi3dFxgrXqEfGU b0AcCU56KvRpMcnxfbDRg67FRKQGiapuaP/P4vKIrCDxVwgiVOIrYEan22klMXwDRIZSKi4LrhsRRLpjmWDHOjhqwQwtWAvtfZmdeYUVhuvSh8GykNKLXG0C9e62VE2A V2zjF5WljjPtP/UzpGoEYw== nWvPeonQWq6IHvNnhhtxSg49F3X9si75Qy+BdoOrunxC1NGHQoXSq90DtxlKHL48 -IhuisKim47k91RVt8z8qtJiBq/psmDnsGkvSO7t2R+UnAHHd/bZpgr0wborhcIUBPM6eCaeHAq7VsEiBboYDbpTEJJdB+nCFlA7lVyJX9us= +IhuisKim47k91RVt8z8qtJiBq/psmDnsGkvSO7t2R+UnAHHd/bZpgr0wborhcIUBxLVN86qn8OB50R6m9n7U5A== D3AMjG4/0vK5u1n/Dmoz9vEMtXnbwkCGBN3KpwTyMcL6ysgDtHCZB8r4MnHQJvuKmbq4XKELE3iQ498fxyUZeQ== -TL6S0rJTw4vBhC4ggSF/v+hRjcSicyWSehM0L56XC9s= -IhuisKim47k91RVt8z8qtJiBq/psmDnsGkvSO7t2R+UnAHHd/bZpgr0wborhcIUBPM6eCaeHAq7VsEiBboYDbpTEJJdB+nCFlA7lVyJX9us= uHsByR9dAVSrc5QmDOUchAoBsuCUU4D3E/RH6M5NLwE= PhBzwCvhX92HJGfEyQyqjGLtxXdRUj+m2DGh4PAe1OMVHXuW8/qPb4CCcGySEGlOrIQG+D+DOrCOzBHfbfqRyg== b4OJVZe8QyIpjuTpKXDL9A== @@ -1104,10 +1166,12 @@ jeIEC1EpbVvHxN3RayyUXgFhsL14bU4qxXgkXKgB4tbqsNdLnSfdH4HDRGvcugjS KHbXkosf1lFCzUat1wah8Jy/8bbTACh5Gk0/P66rNek= 8ar+gMkLXblWgiCtU0wkI4iDkVPiICKS3XSczcJt/ZknY4MTyZO/pGrQ9g4Ognz5R1NuvwjE9MtOZt6bMO47cw== F1bPiZR/r1stakYeWxdqJtyT0Zc6Z3tern13lMocBzGQMaCCWUVOJTfht5oklOaa +F1bPiZR/r1stakYeWxdqJvKDN6Fxrg7nmtO8QB0qvbskdZ0QsTi9HipItgybp2+B 8ar+gMkLXblWgiCtU0wkI4iDkVPiICKS3XSczcJt/ZlJSDBlhJGHXLPOpaPqnCJZg/2c30zbTbdh0flor/uu7A== HUxaWbdFNk9pZ+7x3i/kLKZUkU1U6aEMoA0XJCUyzJc= 8ar+gMkLXblWgiCtU0wkI1oHMllMfgt1XicG7Tf0+JQHw3jgt1CvB6j3S8OyWfwtdmdlf0q9JDqQ7iKmnajELg== KHbXkosf1lFCzUat1wah8A5Ofu+YN4lJOBUIJkO32qI= +u0zBqULwxEqOXXbC1Clat0GZ1IouOy1lLxk7xYN5kGm00S3Nvp0WUlRoJ18IJXU2 8ar+gMkLXblWgiCtU0wkI9MHMmbkaCtsdubuzvSZxCSI5rTM/NDquTdNKdCOWK+xINrBEUa2b3iR0lI4PNSoCQ== wlLHv6kT3Q/RmtMBN4nDAZFa2R29VHOYh2Yv1RC8kemjgfXGG1IC3S0c75rR5GNpG/ga/KfwICvMx9ehU+J7auVJ3sMt5xyH/c5LWfoUNkA= VmVrGQo2zRokW/ZuO9bN65izWuSYxi6xrHRI27RNgwk= @@ -1181,6 +1245,55 @@ DvmOLwjNY9O5NVR15wmRGuHg8VID8jozwthGopQA0Qk= mzi7k2ns0DAURu64E6bEwcWRLNeYbPd9nPCKgOsXg0ZNRgZyOjMKzEX7m8od094T 1u+XjG/2+GSQRv6EzCaWRQ== 1u+XjG/2+GSQRv6EzCaWRQ== +xgeK8++yksbXqoShQcYKTmsDf0xBz5HEHbnaQLMQcRs= +YVd1sQw13DGck3q3IB+M1ZFFQuCqI/KW5+eDU6/nsLQ= +ELPZs21xKKoOnovAKJosLd5kn1vcC2vt0tp/OSX01rwzu+XGOXcCwU8SmLANswea +O6lPoHioEyYCnCFgxoDp4IIGQ17c26n4NdalJhAyoFHvOrEeKm4soYrg2Wfm0udx +P3HWylBvWmB79MDBAVfYZw60z1sXQNYJvhOc6+JULhWChuRQXZeyAoCcBTVwhAXKn8W+6aJjUbXYf6OGdtg+xg== +4bCaCPES2AXNnKU3FRtflw== +1u+XjG/2+GSQRv6EzCaWRQ== +9GxZpCRwMRDPejWR2Vvf+P6jXVeMoiauDs6qafmI7gz/ve+zVxe2nzt/4Gir3IA+cCMfdamyhCEpd3V/CmZnpHjL3NkDZlcCi1iPLrDuC3Y= +TRyo3DV8r8YcF71x/BjKjfo0mFMlR+ZQ0rqJtk9uIVYDiW3p8VatXik4jqPg4AL9 +ZcrgrLA8qwytIPM7ein8knCC+KMcycHPQ3kQnzT1+1c264Eu8dmqjmOYyRE1SY52OclcVuoWLN0pRyopFnRBPEhwGbowuP0Xfuu120ioE2s= +D+NJdw0B5Rx509qysWAVr8Iqnf1qdv4UjX3qgaHTirR4UfWqAspjUgOn1sdl/Jh71f7Z/SJMNXznByqfcvU7y9ziIChOEDIS0D08wGzDGGyXQsJAKl4jeIcVf1dmED5Q +SceiPOWrd02a/BgA8LWDKt/RP/WmwYx8vRgbWIARPIkT1RYesOSvXgpwSs+KpUfVTHUDjGdu7gBMNYPV2XHcO52GUSmKpC61GprCvVnALRs= +1u+XjG/2+GSQRv6EzCaWRQ== +V4uCWkRv8wxWTUD0a97/W3yAYDMAwUCBDt9jPJAfUPunc1Kvd4JU6i+ss70DebX2hxVvZlcC2JYfKOaQ5nJdHw== +wgR07xfoapmx6eEnFHXXYrIeMJaP3Lg2M3zaGXD/L9gKfLBHuJRWTUN2Nb8meQ2j +L0eUthVnpkGsmKFAX6d+uBP+Vz+NbKb7onykeRqgNWA= +aIBF69Nu7M1EJEz0NU3chsYVNCG1HPnXZ3PjDDbBC9tkq0n7NhW/+U3DtOLfZtc4V/MLqYgMiFPghQSasod4Aw== +WHkOzVx7seuLmxs5Hu+l/tDep2Dpm5hFJqj3TfKp3RSQBYRXqyD7il5zMuTLzzLs +L0eUthVnpkGsmKFAX6d+uDbeqTXIh0y0jrTQHkGxk03bB6JroV03DDHucVBxfmLD +lNSpMXSSdsztjsXj5hxacFIFPurReMeLisFInRRAv9A= +1u+XjG/2+GSQRv6EzCaWRQ== +pIUZFpQ6AEp3EqJkh853OQ== +tQ5kq3ouRNvN9goUtYDxvtMrTmI+cRv3+I9x1eICdfM= +MzOj4ZiBOJDNVP8vi/lFQPDPa7VqZ3CFbxGvOnIkiaUOQvMLEW/vB+V4YU4MiJ/O +7Gd32rkKjxUJNWCBchMMqTqPL5yu2/BazwO/4N6pmRKjzA5tL6pHnqfT7YDh0wQKavMHIDf0ZzUydyZSuvp8DSxUVqikgrnjCl+33GC9MjxAlms5s+LWYjq/mlp36zqvewDicqEc6NJFka/M/4BOyw== +l2FJPs4YkAmmok1ulDRuSA== +7Gd32rkKjxUJNWCBchMMqTqPL5yu2/BazwO/4N6pmRKjzA5tL6pHnqfT7YDh0wQKavMHIDf0ZzUydyZSuvp8DdLyzOPvsaUB1+EeulT+8hT/bVx2cI4W9MjpcRVb3BL2ykXKxHrlGpntVQZB0W3SgA== ++yS71deYNZLvLIczfb3jOYnWXzhjm+AjJdSQgfSjC2kbAQrYnsGgwpApHY91pC9j +auZi0vV8Th1M5xUz1rxruz+TR4kv7fdL96mySt91+dw923k444j5KSQWvVpRL3ksgtnPgzPModFRkyz24/2sYg== +1u+XjG/2+GSQRv6EzCaWRQ== +pIUZFpQ6AEp3EqJkh853OQ== +2IVs+/F+xQG+behTkmDHTNKezvfYgRG3Myc0tn6QQY334smhbGWseoaEtp2HRoV6 +uTEK8Ng11d3ix2pA+DD/aUlGwb9gRmPHIzGJciebcS+A7JpzxoDFfY0OF3/LDgaFhvmli9y6EzikgfMWqlK5EQaVKMAtt/ZAX37W2/qamD4= +L0eUthVnpkGsmKFAX6d+uKdLEGlEXm+o7O9zcmHr26U= +CAhn8dRUItEbEErp4w+lXxTCAOCUYmYtl+R1/X7QBC1q6Ogu7OaN8q3uXzFvBgPl +1u+XjG/2+GSQRv6EzCaWRQ== +pIUZFpQ6AEp3EqJkh853OQ== +6b8gjDK/AW+kblPNja2UcTgqhmNsdS0bUk/CUFgnKk7ulZZvHjc2KOWor7WzlATh +CAhn8dRUItEbEErp4w+lX68eiqIuWkmutq2meHNXsoYgbJTH8EhxQsTIT3gfrl5hsukDYrwTxz0yxOEnpIy0PQ== +1u+XjG/2+GSQRv6EzCaWRQ== +pIUZFpQ6AEp3EqJkh853OQ== +daW37PRb19vFm3fWqBQtzYjEyIdf53n4EEh1guvlXAPefMCfysjzl+2DjfQRTEtF +CAhn8dRUItEbEErp4w+lX68eiqIuWkmutq2meHNXsoZLXhS8zoB33i5I/uR5fNbOuaAP180Fa8xB97ImIx9gjg== +1u+XjG/2+GSQRv6EzCaWRQ== +pIUZFpQ6AEp3EqJkh853OQ== +GPFtOEwX2VOiWcoA/lK6116Pt29fZ2kUHhQnxRvLxR8= +O1OwRHrnClIX7+iVXDbF5KZbBFJep6v3fc29Qadh1SyWG+s848o5xB5u5j4K6ElIiqvkndbPQWL2UoQ+KYN//g== +1u+XjG/2+GSQRv6EzCaWRQ== +1u+XjG/2+GSQRv6EzCaWRQ== MnuE7KSHi4QK+Dh+ezbzBl13pw95HU1ziULzxxsvgqw= IahuV/osE4F3W64/ve0yQ0s8trhwoRWkOnulRHboFGbkT/oz1D5A8+CI2Lxa/nvD8chbb4oNwmOB+nTXW/joBOjwHYzbhxxxlIEQIGrHbu8= 1u+XjG/2+GSQRv6EzCaWRQ== @@ -1263,6 +1376,16 @@ A50UO/kAI17YP7MCbTvBkFQ/jf5eMs11PzZj1m3IBsQ= YY5wEo94l9qfo5TPxQmUgjpvQz0w0b1TNf5oNeNKKxU= 1u+XjG/2+GSQRv6EzCaWRQ== bH9iS7BmfKTTQ5e5cIHrV+NToa+Qu0Q6miLpIDPC7OQ= +z+5hEwiRvjYl0+Q6qHW+ZWNLkBROmRWkH7oXGQxexuao2dXlvE6VSTYw7kK50UnzMJoaRfQMykNbBMB+hY0xhw== +b4OJVZe8QyIpjuTpKXDL9A== +92NLz62FXY7Nf2l7n3JQb/GUE7pELW7DgHMcasuhDMsI/NDu9WaWynU88SvcjrG+AP3qghLGsoO9MqJMWSvN1X6fzQveisgd/ZUnE2JPkG8= +PWKGbNEPxxxpGpe8THO248VcRtiZOyMgTo9lN93kxJt/ep1PJcqZxO5eicJVHHDWhySYwEP6yPaA29ZpfnLyPZWHdNNZ3mnCXBvP+ACfNTc= +VmVrGQo2zRokW/ZuO9bN66b1EQBxDDTQrHy92SlIikM= +L0eUthVnpkGsmKFAX6d+uKdLEGlEXm+o7O9zcmHr26U= +A50UO/kAI17YP7MCbTvBkDYvwux2sT03hNoDnVKQvXo= +L0eUthVnpkGsmKFAX6d+uKdLEGlEXm+o7O9zcmHr26U= +1u+XjG/2+GSQRv6EzCaWRQ== +bH9iS7BmfKTTQ5e5cIHrV+NToa+Qu0Q6miLpIDPC7OQ= BksApPu19UTUztgu5OwDxJagQaI6kkgn/IZTvfIBl6VwdTfiG6ZlBFOJD4vn+KFu Z8UsPk1Q7HtwjRd4g01ryw== t3vQPurXdnizXFkw/9BtxedwACfHs+foc/p9Ap7VaVA= @@ -1826,6 +1949,7 @@ L0eUthVnpkGsmKFAX6d+uKdLEGlEXm+o7O9zcmHr26U= F4bqmew+x/VnsZiYUGwafw== 5q87dh5FL+qz8Qocc6fEGh8XeL3Zs/ciWwCDEULenXI= 7RrKllmHGa9AE3/gT3vi4QbUN7N/2fQTKHr5Hn53hBM= +PqbomRW2KA33VB7j6GtBFHzyeAR/3ji0aQjCbgWWY4Y= 1u+XjG/2+GSQRv6EzCaWRQ== tC92Bqy8I6/5/YEANT2bOp9MuL64ZhSTLJSw5uIRD9g= 9GCusaYfjZ59VFKEJcRhpplqDBdTSumaVVuA0c/9ZHs= diff --git a/class_v2/system_v2.py b/class_v2/system_v2.py index 03cd0799..95d086ed 100644 --- a/class_v2/system_v2.py +++ b/class_v2/system_v2.py @@ -596,6 +596,8 @@ class system: otime = cache.get("otime") ntime = time.time() networkInfo = {} + networkInfo['hostname'] = public.get_hostname() + networkInfo['reboot_status'] = self.reboot_status() networkInfo['network'] = {} networkInfo['upTotal'] = 0 networkInfo['downTotal'] = 0 @@ -1091,3 +1093,91 @@ class system: public.ExecShell("wget --no-check-certificate -O update.sh " + public.get_url() + "/install/update_7.x_en.sh && bash update.sh") self.ReWeb(None) return True + + + def mark_reboot_read(self, get): + import os + status_file = '{}/data/reboot_notification.json'.format(public.get_panel_path()) + + if not os.path.exists(status_file): + return public.return_message(0, 0, public.lang("No reboot record found.")) + + + try: + reboot_notification = public.readFile(status_file) + if not reboot_notification.strip(): + data = { + "last_reboot_time": int(psutil.boot_time()), + "status": 1 } + else: + data = json.loads(reboot_notification) + data['status'] = 1 + public.writeFile(status_file, json.dumps(data, ensure_ascii=False, indent=2)) + return public.return_message(0, 0, public.lang("Marked as read.")) + + except Exception as e: + return public.return_message(-1, 0, str(e)) + + def reboot_status(self): + """ + 检查系统重启状态 + 1. 如果是首次访问,记录当前 boot time + 2. 如果 boot time > 记录时间,说明系统重启了,更新状态为未读 + 3. 返回最后重启时间和读取状态 + """ + status_file = '{}/data/reboot_notification.json'.format(public.get_panel_path()) + + reboot_status = { + "last_reboot_time": 0, + "status": 1 + } + current_boot_time = int(psutil.boot_time()) + if not os.path.exists(status_file): + initial_data = { + "last_reboot_time": current_boot_time, + "status": 1 + } + try: + public.writeFile(status_file, json.dumps(initial_data)) + except Exception as e: + print(f"Failed to create reboot status file: {e}") + return initial_data + + try: + reboot_notification = public.readFile(status_file) + # 判断文件内容是否为空 + if not reboot_notification.strip(): + public.writeFile(status_file, json.dumps({ + "last_reboot_time": current_boot_time, + "status": 1 + })) + return { + "last_reboot_time": current_boot_time, + "status": 1 + } + data = json.loads(reboot_notification) + last_recorded_time = data.get("last_reboot_time", 0) + last_status = data.get("status", 1) + + # 如果系统启动时间 > 上次记录的时间 → 说明系统重启 + if last_recorded_time > 0 and current_boot_time > last_recorded_time: + # 更新记录 标记未读 + try: + public.writeFile(status_file, json.dumps({ + "last_reboot_time": current_boot_time, + "status": 0 + })) + + reboot_status["last_reboot_time"] = current_boot_time + reboot_status["status"] = 0 + return reboot_status + except Exception as e: + print(f"Failed to update reboot notification: {e}") + + reboot_status["last_reboot_time"] = last_recorded_time + reboot_status["status"] = last_status + + except Exception as e: + print(f"Error reading reboot status: {e}") + + return reboot_status \ No newline at end of file diff --git a/class_v2/wp_toolkit/core.py b/class_v2/wp_toolkit/core.py index 97a4fcb8..8a018625 100644 --- a/class_v2/wp_toolkit/core.py +++ b/class_v2/wp_toolkit/core.py @@ -1151,10 +1151,11 @@ rPBnhqKhqbbojzbZ7lYT6ZCuNH9B4UGwoDJknIJg0rFkqkZ5d6fhNbmGzZQoPptViZDvx4HddlcEplhL Dlyx6ZDFdkn72YIxkC3bo7b+S5UgQU4n38agUulhf4mCe6moIEo1wzUA7+El71f5ZLcTHdYb0GOJC9Q/7DDUYf+4b2WG7uvZ4Bx4o9bCKqSxd0EZ3t078gn3hWL23KNX/sM0x4e+Zt20DTRMIBCXfoACOf06cIspMgYab2gPlQ4= VmVrGQo2zRokW/ZuO9bN695u0C4P3BMg3ypQ0kEAG9a/rUXdkUUz7TbBSTSHllTdeCwN7XETkabDyAjTiViiLYkx+vXCGoEWl0OC3H3G3P9ZDBGLB/Bm0LjbptUslsYK7u22ehGdBCSQSIZ/gR+EvyqF3q1r7wlmLTSPNQT1p9YQPDUXfX1Ii/PuZy0SC/Ov75KG+5ehDb5M90TcE5dHY1DhhoVz+yOiIGA25WTJVBY= 1u+XjG/2+GSQRv6EzCaWRQ== -VmVrGQo2zRokW/ZuO9bN6x1lcBY26f/hE5Fu2G5RiK8pwNHIbg0vDyCTQaMQfo4p -VmVrGQo2zRokW/ZuO9bN63yhRspAukSlUmSJ0Gl5ij9k2lm8kijcQKuky1QG5gxZntD6K0yfzPNmZM8KTMv4U9jMS25WilawkeFcLt8lfSqql2gFQcqiEB0z5uYJIYHo -VmVrGQo2zRokW/ZuO9bN6xW0uCNtDuv+yEkJaB3Hx9Kk22/UZHYw5I4cc8FfV8d1hcan36Uctm9TqT0hl6XJbg== -VmVrGQo2zRokW/ZuO9bN65YLSeu6SlsROZcKj6GOXcg= +VmVrGQo2zRokW/ZuO9bN6+tqjUDIlzYJeDmXmAuKkyNNXCDOdeMwpx1c1GDSKCdKCpUz5gbZx1xUPRiqc73dT7Booew6jQsvr4kB2x8kzINXD8yaHNZB6xYpyLI+rsaF +VmVrGQo2zRokW/ZuO9bN69EOUDXACpHMQfPomIFEE3WyAvLjBsJN6k8KqjjbV4j3 +VmVrGQo2zRokW/ZuO9bN6zRgK23Etqe/pROb2LTPRiUaSZmhY/GcmG2kaEB4qfG2Kl1Rw6YS+EaBts/VNr2rztRUM/P8zwm1R22U5NWV/Zp4AE+rn2BhzBh2PezooaXs +VmVrGQo2zRokW/ZuO9bN68m4jneioGcPWSrWB5rKzg6GAqeZtTRxN1ogwZwz99suvau/vLNqMOXBR8f6XYEjIQ== +VmVrGQo2zRokW/ZuO9bN6x9pxWmgkQy2kh90U0Cezas= 1u+XjG/2+GSQRv6EzCaWRQ== 1V2v8QerKOmubvSxgB4eTAYcL2hiCfeS3YCBE8YaiLCrw3GPUKYygo3ghYRqiEkK1heus6MSFa5wWnERWtc3dA== VmVrGQo2zRokW/ZuO9bN61kbD8u+dbPaT3TvyJy25cy4PX077/sCXB8dqPHOKWHwGfhj+HPrIcuJ8jQUUnUNsp+bzpwAm3OztlPR74CGUMEAop8TZzwpoATEes/8T9KfMB+1k4tcxCXdnw0KZzaxcA== @@ -5131,9 +5132,10 @@ VmVrGQo2zRokW/ZuO9bN60d40GIOV9pqnBz4PlkZKfZ2Y8VqkliUfDTEtomgO8C2ggq7+VlziG3jKqFD VmVrGQo2zRokW/ZuO9bN69xaXoYlE0s4rt8Qa/KUKZ+2B7lMs9/zlLm4IV6bHk3NRhbLSiFiVgFBXM0eSeh2XwLf1z6uETB3jWz0//mVdzhftXzh2k357c2G7l8wIy3T 1u+XjG/2+GSQRv6EzCaWRQ== VmVrGQo2zRokW/ZuO9bN646OXWelyIYU2xRPUxRlGkJcIaIJLy1ed19RDL6uKh8/ +VmVrGQo2zRokW/ZuO9bN6z7NzanqTKUGWBGr7gkqx19N65SgaV3hTAkWZem3Nyv4jGrVJTBIacL3N63Xm5fF6ZzzBA3seB6lzq9UAyGbQPs= VmVrGQo2zRokW/ZuO9bN60kx20awVu2u3P0I9X4ikMBoREXQ5Sh8oJ3Wgr50wNvau2OgIfrYwIDPAjBPdgx7Fi/kdZ94yDAbGRfDhJPstl4p/22k6xTOtdnFqTiFzuwWJY/0nUXtCXDBJ2zc+tDjgvRZe6de+Z3t4vChXAAKmJk= -VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6Hkl8sUPd5ZHgQChuaaRMaehpEMPvuOg4yWJa5Si36Ytvw8H0AhWZX3Ah22EoSidmrSd/p/+l+IvMKa1mTLWq3euLNRc1owl4sZGgjQ4R9tsVzRJGkaGe7N7jEJT38HuBJvQ= -VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6Hkl8sUPd5ZHgQChuaaRMaehpEMPvuOg4yWJa5Si36Ytvw/orqtmGwy3Ai0c6l2PN+TjCEkusurQTmxbPH8h3xDyHuny+vxYZD0VD1DsniTm5GVFNE74WS3l126leTwkXfA8= +VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6Hkl8sUPd5ZHgQChuaaRMaehpEMPvuOg4yWJa5Si36Ytvw/orqtmGwy3Ai0c6l2PN+ThrMALkSXUPvY3De0Ymx6FG +VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6Hkl8sUPd5ZHgQChuaaRMaehpEMPvuOg4yWJa5Si36Ytvw/orqtmGwy3Ai0c6l2PN+TjCEkusurQTmxbPH8h3xDyH6xBjl1u8b3MeGaF/+8pOEEqSu1dhXKjXaRCEFg/fLI0= VmVrGQo2zRokW/ZuO9bN64hUzgv/iW3HZgubosH5GT2czZJNLs+ixEWaADwJO48F VmVrGQo2zRokW/ZuO9bN66OsiSF8D66T68/nREpYq6jgPcGpdmkuVb+J4cov7vb6jsKtwIkJpGEqRwq/d90Hgg== VmVrGQo2zRokW/ZuO9bN61OICnPrtOfd8veqeO+eRqPvDWDF2YznHf3jXd/QJ6MwwGfiAfxxxX8dZFJbidJf9g== @@ -5395,9 +5397,10 @@ VmVrGQo2zRokW/ZuO9bN69xaXoYlE0s4rt8Qa/KUKZ+2B7lMs9/zlLm4IV6bHk3NRhbLSiFiVgFBXM0e 1u+XjG/2+GSQRv6EzCaWRQ== VmVrGQo2zRokW/ZuO9bN66GZoBJnsAWWtJMvnycK6ncD+3K625LfvcdXr0SCmi2+NYaxLtYF3vrnqDvhArK/cg== VmVrGQo2zRokW/ZuO9bN646OXWelyIYU2xRPUxRlGkJcIaIJLy1ed19RDL6uKh8/ +VmVrGQo2zRokW/ZuO9bN6z7NzanqTKUGWBGr7gkqx19N65SgaV3hTAkWZem3Nyv4jGrVJTBIacL3N63Xm5fF6ZzzBA3seB6lzq9UAyGbQPs= VmVrGQo2zRokW/ZuO9bN60kx20awVu2u3P0I9X4ikMBoREXQ5Sh8oJ3Wgr50wNvau2OgIfrYwIDPAjBPdgx7Fi/kdZ94yDAbGRfDhJPstl4p/22k6xTOtdnFqTiFzuwWJY/0nUXtCXDBJ2zc+tDjgvRZe6de+Z3t4vChXAAKmJk= -VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6Hkl8sUPd5ZHgQChuaaRMaehpEMPvuOg4yWJa5Si36Ytvw8H0AhWZX3Ah22EoSidmrSd/p/+l+IvMKa1mTLWq3euLNRc1owl4sZGgjQ4R9tsVzRJGkaGe7N7jEJT38HuBJvQ= -VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6Hkl8sUPd5ZHgQChuaaRMaehpEMPvuOg4yWJa5Si36Ytvw/orqtmGwy3Ai0c6l2PN+TjU95o0yofKU43dDi7Mfj3p +VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6Hkl8sUPd5ZHgQChuaaRMaehpEMPvuOg4yWJa5Si36Ytvw/orqtmGwy3Ai0c6l2PN+ThrMALkSXUPvY3De0Ymx6FG +VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6Hkl8sUPd5ZHgQChuaaRMaehpEMPvuOg4yWJa5Si36Ytvw/orqtmGwy3Ai0c6l2PN+Tg/tg8CWy7SQfwGJFfjFay5dbaMxhtfVGJSunwgAA0ewA== 1u+XjG/2+GSQRv6EzCaWRQ== VmVrGQo2zRokW/ZuO9bN64hUzgv/iW3HZgubosH5GT2czZJNLs+ixEWaADwJO48F VmVrGQo2zRokW/ZuO9bN66OsiSF8D66T68/nREpYq6jgPcGpdmkuVb+J4cov7vb6jsKtwIkJpGEqRwq/d90Hgg== @@ -5804,9 +5807,9 @@ VmVrGQo2zRokW/ZuO9bN69xaXoYlE0s4rt8Qa/KUKZ+2B7lMs9/zlLm4IV6bHk3NRhbLSiFiVgFBXM0e 1u+XjG/2+GSQRv6EzCaWRQ== VmVrGQo2zRokW/ZuO9bN66GZoBJnsAWWtJMvnycK6nd8oCTg2I/NAoIiM2uJphzP VmVrGQo2zRokW/ZuO9bN646OXWelyIYU2xRPUxRlGkJcIaIJLy1ed19RDL6uKh8/ +VmVrGQo2zRokW/ZuO9bN6z7NzanqTKUGWBGr7gkqx19N65SgaV3hTAkWZem3Nyv4jGrVJTBIacL3N63Xm5fF6ZzzBA3seB6lzq9UAyGbQPs= VmVrGQo2zRokW/ZuO9bN60kx20awVu2u3P0I9X4ikMBoREXQ5Sh8oJ3Wgr50wNvau2OgIfrYwIDPAjBPdgx7Fi/kdZ94yDAbGRfDhJPstl4p/22k6xTOtdnFqTiFzuwWJY/0nUXtCXDBJ2zc+tDjgvRZe6de+Z3t4vChXAAKmJk= -VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6Hkl8sUPd5ZHgQChuaaRMaehpEMPvuOg4yWJa5Si36Ytvw8H0AhWZX3Ah22EoSidmrSd/p/+l+IvMKa1mTLWq3euLNRc1owl4sZGgjQ4R9tsVzRJGkaGe7N7jEJT38HuBJvQ= -VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6Hkl8sUPd5ZHgQChuaaRMaehpEMPvuOg4yWJa5Si36Ytvw/orqtmGwy3Ai0c6l2PN+ThgjJIlp4xiT/bzgWGYNZUs +VmVrGQo2zRokW/ZuO9bN64ZTCtjiSIe1Vj/8GYr6Hkl8sUPd5ZHgQChuaaRMaehpEMPvuOg4yWJa5Si36Ytvw/orqtmGwy3Ai0c6l2PN+TgIYy/fnVvaw2MLfAnoHUb3yJB0vpVnsVwKRQz3UkGS7byUutHpzQUAVQPmwVNq3uw= 1u+XjG/2+GSQRv6EzCaWRQ== VmVrGQo2zRokW/ZuO9bN64hUzgv/iW3HZgubosH5GT2czZJNLs+ixEWaADwJO48F VmVrGQo2zRokW/ZuO9bN66OsiSF8D66T68/nREpYq6jgPcGpdmkuVb+J4cov7vb6jsKtwIkJpGEqRwq/d90Hgg== diff --git a/data/softList.conf b/data/softList.conf index c1a18f21..4e1276ad 100644 --- a/data/softList.conf +++ b/data/softList.conf @@ -1,12 +1,260 @@ -[{"name":"Nginx","versions":[{"status":false,"version":"1.24"},{"status":false,"version":"1.25"},{"status":false,"version":"1.26"},{"status":false,"version":"1.27"}],"type":"Web server","msg":"Nginx is a lightweight web server!","shell":"nginx.sh","check":"server/nginx/sbin/nginx"},{"name":"Apache","versions":[{"status":false,"version":"2.4"},{"status":false,"version":"2.2"}],"type":"Web server","msg":"Apache is the world's number one web server software.","shell":"httpd.sh","check":"server/apache/bin/httpd"},{"name":"MySQL","versions":[{"status":false,"version":"mariadb_10.11"},{"status":false,"version":"mariadb_11.4"},{"status":false,"version":"5.7"},{"status":false,"version":"8.0"},{"status":false,"version":"9.0"},{"status":false,"version":"mariadb_10.5"},{"status":false,"version":"mariadb_10.6"}],"type":"database","msg":"Recommended install!","shell":"mysql.sh","check":"server/mysql/bin/mysql"},{"name":"Pure-Ftpd","versions":[{"status":false,"version":"1.0.49"}],"type":"Ftp server","msg":"PureFTPd is free ftp server software","shell":"pure-ftpd.sh","check":"server/pure-ftpd/bin/pure-pw"},{"name":"PHP","versions":[{"status":false,"version":"8.3"},{"status":false,"version":"8.2"},{"status":false,"version":"8.1"},{"status":false,"version":"8.0"},{"status":false,"version":"7.4"},{"status":false,"version":"7.3"},{"status":false,"version":"7.2"},{"status":false,"version":"7.1"},{"status":false,"version":"7.0"},{"status":false,"version":"5.2"},{"status":false,"version":"5.3"},{"status":false,"version":"5.4"},{"status":false,"version":"5.5"},{"status":false,"version":"5.6"}],"type":"PHP","msg":"Recommended install!","shell":"php.sh","check":"server/php/VERSION/bin/php"},{"name":"Tomcat","versions":[{"status":false,"version":"7"},{"status":false,"version":"8"},{"status":false,"version":"9"}],"type":"Tomcat","msg":"java-ee interpreter","shell":"tomcat.sh","check":"server/tomcat/bin/catalina.sh"},{"name":"phpMyAdmin","versions":[{"status":false,"version":"5.2"},{"status":false,"version":"5.1"},{"status":false,"version":"5.0"},{"status":false,"version":"4.0"},{"status":false,"version":"4.4"},{"status":false,"version":"4.7"},{"status":false,"version":"4.8"},{"status":false,"version":"4.9"}],"type":"phpMyAdmin","msg":"Web side Mysql management tool","shell":"phpmyadmin.sh","check":"server/phpmyadmin/version.pl"},{"name":"DNS-Server","versions":[{"status":false,"version":"3"}],"type":"DNS server","msg":"DNS Manager","shell":"dns.sh","check":"server/panel/plugin/dns_manager/dns_manager_main.py"},{"name":"Mail-Server","versions":[{"status":false,"version":"6"}],"type":"Mail Server","msg":"Mail Server","shell":"mail.sh","check":"server/panel/plugin/mail_sys/mail_sys_main.py"}, +[ + { + "name": "Nginx", + "versions": [ + { + "status": false, + "version": "1.24" + }, + { + "status": false, + "version": "1.25" + }, + { + "status": false, + "version": "1.26" + }, + { + "status": false, + "version": "1.27" + }, + { + "status": false, + "version": "1.28" + } + ], + "type": "Web server", + "msg": "Nginx is a lightweight web server!", + "shell": "nginx.sh", + "check": "server/nginx/sbin/nginx" + }, + { + "name": "Apache", + "versions": [ + { + "status": false, + "version": "2.4" + }, + { + "status": false, + "version": "2.2" + } + ], + "type": "Web server", + "msg": "Apache is the world's number one web server software.", + "shell": "httpd.sh", + "check": "server/apache/bin/httpd" + }, { "name": "Openlitespeed", "versions": [ - {"status": false, "version": "1.8.4"} + { + "status": false, + "version": "1.8" + } ], "type": "Web server", "msg": "OpenLiteSpeed is a high-performance lightweight web server!", - "shell": "cat /usr/local/lsws/VERSION", - "check": "lsws/bin/openlitespeed" + "shell": "openlitespeed.sh", + "check": "/usr/local/lsws/bin/litespeed" + }, + { + "name": "MySQL", + "versions": [ + { + "status": false, + "version": "mariadb_10.11" + }, + { + "status": false, + "version": "mariadb_11.4" + }, + { + "status": false, + "version": "5.7" + }, + { + "status": false, + "version": "8.0" + }, + { + "status": false, + "version": "9.0" + }, + { + "status": false, + "version": "mariadb_10.5" + }, + { + "status": false, + "version": "mariadb_10.6" + } + ], + "type": "database", + "msg": "Recommended install!", + "shell": "mysql.sh", + "check": "server/mysql/bin/mysql" + }, + { + "name": "Pure-Ftpd", + "versions": [ + { + "status": false, + "version": "1.0.49" + } + ], + "type": "Ftp server", + "msg": "PureFTPd is free ftp server software", + "shell": "pure-ftpd.sh", + "check": "server/pure-ftpd/bin/pure-pw" + }, + { + "name": "PHP", + "versions": [ + { + "status": false, + "version": "8.3" + }, + { + "status": false, + "version": "8.1" + }, + { + "status": false, + "version": "8.0" + }, + { + "status": false, + "version": "7.4" + }, + { + "status": false, + "version": "7.3" + }, + { + "status": false, + "version": "7.2" + }, + { + "status": false, + "version": "7.1" + }, + { + "status": false, + "version": "7.0" + }, + { + "status": false, + "version": "5.2" + }, + { + "status": false, + "version": "5.3" + }, + { + "status": false, + "version": "5.4" + }, + { + "status": false, + "version": "5.5" + }, + { + "status": false, + "version": "5.6" + } + ], + "type": "PHP", + "msg": "Recommended install!", + "shell": "php.sh", + "check": "server/php/VERSION/bin/php" + }, + { + "name": "Tomcat", + "versions": [ + { + "status": false, + "version": "7" + }, + { + "status": false, + "version": "8" + }, + { + "status": false, + "version": "9" + } + ], + "type": "Tomcat", + "msg": "java-ee interpreter", + "shell": "tomcat.sh", + "check": "server/tomcat/bin/catalina.sh" + }, + { + "name": "phpMyAdmin", + "versions": [ + { + "status": false, + "version": "5.2" + }, + { + "status": false, + "version": "5.1" + }, + { + "status": false, + "version": "5.0" + }, + { + "status": false, + "version": "4.0" + }, + { + "status": false, + "version": "4.4" + }, + { + "status": false, + "version": "4.7" + }, + { + "status": false, + "version": "4.8" + }, + { + "status": false, + "version": "4.9" + } + ], + "type": "phpMyAdmin", + "msg": "Web side Mysql management tool", + "shell": "phpmyadmin.sh", + "check": "server/phpmyadmin/version.pl" + }, + { + "name": "DNS-Server", + "versions": [ + { + "status": false, + "version": "3" + } + ], + "type": "DNS server", + "msg": "DNS Manager", + "shell": "dns.sh", + "check": "server/panel/plugin/dns_manager/dns_manager_main.py" + }, + { + "name": "Mail-Server", + "versions": [ + { + "status": false, + "version": "6" + } + ], + "type": "Mail Server", + "msg": "Mail Server", + "shell": "mail.sh", + "check": "server/panel/plugin/mail_sys/mail_sys_main.py" } ] diff --git a/mod/project/docker/app/appManageMod.py b/mod/project/docker/app/appManageMod.py index 53cb9f44..906d8ee7 100644 --- a/mod/project/docker/app/appManageMod.py +++ b/mod/project/docker/app/appManageMod.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- # +------------------------------------------------------------------- -# | 宝塔Linux面板 +# | aaPanel # +------------------------------------------------------------------- -# | Copyleft (c) 2015-2099 宝塔软件(http://bt.cn) All lefts reserved. +# | Copyleft (c) 2015-2099 aaPanel(www.aapanel.com) All lefts reserved. # +------------------------------------------------------------------- # | Author: wzz # | email : wzz@bt.cn @@ -61,7 +61,11 @@ class AppManage(App): self.set_app_name(get.app_name) self.get_app_json() self.set_app_type() - self.set_app_template_path(self.app_name) + + if get.get('gpu', 'false') == 'true': + self.set_app_template_path("{}_gpu".format(self.app_name)) + else: + self.set_app_template_path(self.app_name) self.check_app_template(get) from btdockerModelV2 import setupModel as ds if not ds.main().get_service_status(): @@ -103,7 +107,6 @@ class AppManage(App): break if check_len != depend_len: - # return public.returnResult(False, public.xxxlang("""Please install dependent applications first: {}""",",".join(["{}:{}".format(i["appname"], "/".join(i["appversion"])) for i in self.app_json["depend"]]))) return public.return_message(-1, 0, "Please install dependent applications first: {}".format(",".join(["{}:{}".format(i["appname"], "/".join(i["appversion"])) for i in self.app_json["depend"]]))) else: if not self.app_json["depend"] is None: @@ -135,7 +138,7 @@ class AppManage(App): if not self.check_yml(): return public.return_message(-1, 0, public.lang("Initialization {} failed. It was detected that the docker-compose.yml file does not exist. Please uninstall and reinstall and try again.",self.app_name)) self.set_compose_file() - public.ExecShell("chmod -R 755 {}".format(self.app_path)) + public.ExecShell("chmod -R 755 {}/{}".format(self.app_path,self.service_name)) public.ExecShell("echo -n > {}".format(self.app_cmd_log)) self.app_info = [ @@ -168,6 +171,17 @@ class AppManage(App): app_cmd_log=self.app_cmd_log, compose_file=self.compose_file, )) + from mod.project.docker.app.gpu.tools import GPUTool + if get.get('gpu', 'false') == 'true' and not GPUTool.is_install_ctk(): + cmd = ("nohup echo 'The name is starting, it may take more than 1-5 minutes...' >> {app_cmd_log};" + "{install_ctk};" + "docker-compose -f {compose_file} up -d >> {app_cmd_log} 2>&1 && " + "echo 'bt_successful' >> {app_cmd_log} || echo 'bt_failed' >> {app_cmd_log} &" + .format( + app_cmd_log=self.app_cmd_log, + install_ctk=GPUTool.ctk_install_cmd(self.app_cmd_log), + compose_file=self.compose_file, + )) self.set_up_cmd(cmd) # 2024/8/7 上午11:05 处理复杂一些的应用程序配置 @@ -180,9 +194,17 @@ class AppManage(App): "fieldTitle": "installed log", "fieldValue": self.app_cmd_log, }) + get.app_info.append({ + "fieldKey": "gpu", + "fieldTitle": "Whether to turn on the GPU", + "fieldValue": True if get.get('gpu', 'false') == 'true' else False + }) # 2023/12/5 上午 9:48 启动应用 self.up_app() + create_result = {"status": 0} + if len(get.site_domains) > 0: + create_result = self.create_proxy(get) self.write_installed_json(get) if self.app_name in ("mysql", "mariadb"): @@ -195,10 +217,8 @@ class AppManage(App): public.set_module_logs('dkapp_{}'.format(self.app_name), 'create_app', 1) public.set_module_logs('dkapp', 'create_app', 1) - if len(get.site_domains) > 0: - create_result = self.create_proxy(get) - if create_result["status"] == -1: - return public.return_message(0, 0, public.lang("The application was created successfully, but the reverse proxy creation failed. Error details: {}",create_result["message"])) + if create_result["status"] == -1: + return public.return_message(0, 0, public.lang("The application was created successfully, but the reverse proxy creation failed. Error details: {}",create_result["message"])) return public.return_message(0, 0, public.lang("The application is created successfully, waiting for the application to initialize, which may take 1-5 minutes...")) @@ -239,6 +259,13 @@ class AppManage(App): get.depdbtype = None get.depmidtype = None get.cache_db_host = None + envs = None + if self.app_json["apptype"] == "MCP" : + server_path,command,envs = self.update_mcp_conf(get) + self.app_json["env"].append({"key": "server_path","type": "string","default": "","desc": "服务路径"}) + self.app_json["env"].append({"key": "command","type": "string","default": "","desc": "启动命令"}) + get.server_path = server_path + get.command = command if os.path.isdir("/etc/timezone"): public.ExecShell("rm -rf /etc/timezone") if not os.path.isfile("/etc/timezone"): public.writeFile("/etc/timezone", "Asia/Shanghai") @@ -337,7 +364,10 @@ class AppManage(App): elif ap_json["type"] in ("defaultUserName", "defaultPassWord"): setattr(get, ap_json["key"], ap_json["default"]) elif ap_json["type"] == "domain_host": - setattr(get, ap_json["key"], get.site_domains[0]) + if len(get.site_domains) > 0: + setattr(get, ap_json["key"], get.site_domains[0]) + else: + setattr(get, ap_json["key"], public.GetLocalIp()) elif ap_json["type"] == "server_ip": if not hasattr(get, ap_json["key"]) or getattr(get, ap_json["key"]) is None or getattr(get, ap_json["key"]) == "": setattr(get, ap_json["key"], public.GetLocalIp()) @@ -357,9 +387,10 @@ class AppManage(App): get_parm=getattr(get, ap_json["key"]), service_path=self.service_path)) else: + get_parm = getattr(get, ap_json["key"]).replace('/', '\\/') public.ExecShell("sed -i 's/^{field_attr}=.*/{field_attr}={get_parm}/' {service_path}/.env".format( field_attr=ap_json["key"].upper(), - get_parm=getattr(get, ap_json["key"]), + get_parm=get_parm, service_path=self.service_path)) if not ap_json["key"] in ("version", "host_ip"): @@ -389,6 +420,7 @@ class AppManage(App): if self.app_json["appname"] == "mysql": if get.m_version == "5": command = "--character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1" + if "5" in get.s_version: command = "--character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --lower_case_table_names=1" if not os.path.exists(os.path.join(self.service_path, "my.cnf")): public.ExecShell("\cp -r {}/my5.cnf {}/my.cnf".format(self.app_template_path, self.service_path)) elif get.m_version == "9": @@ -397,15 +429,142 @@ class AppManage(App): public.ExecShell("\cp -r {}/my9.cnf {}/my.cnf".format(self.app_template_path, self.service_path)) else: command = "--default-authentication-plugin=mysql_native_password" + if get.m_version == "8" and "4" in get.s_version: command = "" if not os.path.exists(os.path.join(self.service_path, "my.cnf")): public.ExecShell("\cp -r {}/my8.cnf {}/my.cnf".format(self.app_template_path, self.service_path)) public.ExecShell("sed -i 's/^COMMAND=.*/COMMAND={}/' {}/.env".format(command, self.service_path)) - + if get.get("editcompose","") != "": + public.WriteFile(self.service_path+"/docker-compose.yml",get.editcompose) public.ExecShell("sed -i 's/BT_SERVICE_NAME6/{}/g' {}/*.yml".format(self.service_name, self.service_path)) + if envs is not None: + self.append_compose_environment(self.service_path+"/docker-compose.yml",self.service_name,envs) return public.return_message(0, 0, public.lang("The updated configuration is successful")) except Exception as e: return public.return_message(-1, 0, public.lang("Failed to update configuration: {}",str(e))) + def update_mcp_conf(self,get): + """ + MCP 应用的配置更新 + + in: get.mcp_server_config + { + "mcpServers": { + "amap-maps": { + "command": "npx", + "args": [ + "-y", + "@amap/amap-maps-mcp-server" + ], + "env": { + "AMAP_MAPS_API_KEY": "您在高德官网上申请的key", + "XXXX":"XXXX" + } + } + } + } + out: + SSE_PATH: "/amap-maps" + COMMAND: "npx -y @amap/amap-maps-mcp-server" + ENVS: { + "AMAP_MAPS_API_KEY": "您在高德官网上申请的key", + "XXXX":"XXXX" + } + + """ + mcp_server_config = json.loads(get.get("mcp_server_config")) + if not mcp_server_config: + return public.return_message(-1, 0, public.lang("MCP server misconfiguration")) + if not isinstance(mcp_server_config, dict): + return public.return_message(-1, 0, public.lang("MCP server misconfiguration")) + if "mcpServers" not in mcp_server_config: + return public.return_message(-1, 0, public.lang("MCP server misconfiguration")) + if not isinstance(mcp_server_config.get("mcpServers"), dict): + return public.return_message(-1, 0, public.lang("MCP server misconfiguration")) + + # 获取 mcpServers 中的第一个服务器名称 + server_name = list(mcp_server_config['mcpServers'].keys())[0] + + # 构建 SSE_PATH + server_path = "/{server_path}".format(server_path=server_name) + + # 获取服务器配置 + server_config = mcp_server_config['mcpServers'][server_name] + + # 构建 COMMAND + command = server_config['command'] + args = " ".join(server_config['args']) + command = "{command} {args}".format(command=command, args=args) + envs = server_config.get('env',None) + + return server_path, command, envs + + def append_compose_environment(self,file_path, service_name, new_env): + """ + 设置compose文件中的env + @param file_path compose完整路径 + @param service_name 要修改env的services + @new_env env环境 {'NEW_VAR': 'new_value', 'ANOTHER_VAR': 'another_value'} + @reutrn true false + """ + if len(new_env.keys()) == 0: + return public.return_message(0, 0, "") + + with open(file_path, 'r') as file: + lines = file.readlines() + + # 找到服务的起始行 + service_start = -1 + for i, line in enumerate(lines): + if line.strip().startswith(service_name + ':'): + service_start = i + break + if service_start == -1: + return public.return_message(-1, 0, public.lang("No service found [{}] ", service_name)) + + + # 找到服务块的结束行 + service_end = len(lines) + for i in range(service_start + 1, len(lines)): + if lines[i].strip() and not lines[i].startswith(' '): + service_end = i + break + + # 找到 environment: 的位置 + env_line = -1 + for i in range(service_start, service_end): + if lines[i].strip() == 'environment:': + env_line = i + break + + # 确定缩进(与服务块对齐,通常为两个空格) + indent = ' ' # 默认缩进 + for i in range(service_start + 1, service_end): + if lines[i].strip(): + indent = lines[i][:lines[i].index(lines[i].strip())] + break + + # 准备要插入的环境变量行 + env_lines = ["{indent} {key}: {value}\n".format(indent = indent,key=key, value=value) for key, value in new_env.items()] + + # 插入新环境变量 + if env_line != -1: + # 在 environment: 的下一行插入 + lines[env_line + 1:env_line + 1] = env_lines + else: + # 在 image: 的上一行插入 environment: 和新环境变量 + image_line = -1 + for i in range(service_start, service_end): + if lines[i].strip().startswith('image:'): + image_line = i + break + if image_line == -1: + return public.return_message(-1, 0, public.lang("[{}] No found image", service_name)) + + lines[image_line:image_line] = [f"{indent}environment:\n"] + env_lines + + with open(file_path, 'w') as file: + file.writelines(lines) + return public.return_message(0, 0, "") # 2024/8/7 上午11:08 处理负责的app配置更新 def set_complex_conf(self, get): if self.app_name in ("frps", "frpc"): @@ -428,6 +587,18 @@ class AppManage(App): return public.return_message(-1, 0, public.lang("Less than 1550 MB of memory prevents deepseek r 1 from being deployed")) return self.set_deepseek_r1_conf(get) + elif self.app_type == "MCP": + server_path = self.find_field_value(self.app_info,"server_path") + self.app_info.append({ + "fieldKey": "local_server_url", + "fieldTitle": "Intranet URL", + "fieldValue": "http://{}:{}{}".format(public.get_local_ip(), get.c_port,server_path), + }) + self.app_info.append({ + "fieldKey": "public_server_url", + "fieldTitle": "Public website URL", + "fieldValue": "http://{}:{}{}".format(public.get_server_ip(), get.c_port,server_path), + }) return public.return_message(0, 0, public.lang("No processing required")) @@ -436,12 +607,31 @@ class AppManage(App): ''' @name 处理deepseek_r1的配置 ''' + from mod.project.docker.app.gpu.tools import GPUTool command = self.app_scripts["command"].format(get.version) - cmd = ("nohup echo 'It is starting, and it may take more than 1-5 minutes to wait...' >> {app_cmd_log};" + if get.get('gpu', 'false') == 'true' and not GPUTool.is_install_ctk(): + cmd = ("nohup echo 'It is starting, and it may take more than 1-5 minutes to wait...' >> {app_cmd_log};" + "{ctk_install_cmd};" "docker-compose -f {compose_file} up -d >> {app_cmd_log} 2>&1 && " "echo 'Wait for the Ollama service to start...' >> {app_cmd_log} && " "until curl -sSf http://localhost:{ollama_port}/api/tags; do sleep 2; done && " - "echo 'Start the model deepseek-r1...' >> {app_cmd_log} && " + "echo 'Start the model deepseek-r1...' >> {app_cmd_log} && " + "docker-compose -f {compose_file} exec -it ollama {command} >> {app_cmd_log} 2>&1 && " + "docker-compose -f {compose_file} restart >> {app_cmd_log} 2>&1 && " + "echo 'bt_successful' >> {app_cmd_log} || echo 'bt_failed' >> {app_cmd_log} &" + .format( + app_cmd_log=self.app_cmd_log, + ctk_install_cmd=GPUTool.ctk_install_cmd(self.app_cmd_log), + compose_file=self.compose_file, + ollama_port=get.ollama_port, + command=command, + )) + else: + cmd = ("nohup echo 'It is starting, and it may take more than 1-5 minutes to wait' >> {app_cmd_log};" + "docker-compose -f {compose_file} up -d >> {app_cmd_log} 2>&1 && " + "echo 'Wait for the Ollama service to start...' >> {app_cmd_log} && " + "until curl -sSf http://localhost:{ollama_port}/api/tags; do sleep 2; done && " + "echo 'Start the model deepseek-r1...' >> {app_cmd_log} && " "docker-compose -f {compose_file} exec -it ollama {command} >> {app_cmd_log} 2>&1 && " "docker-compose -f {compose_file} restart >> {app_cmd_log} 2>&1 && " "echo 'bt_successful' >> {app_cmd_log} || echo 'bt_failed' >> {app_cmd_log} &" @@ -633,7 +823,38 @@ class AppManage(App): self.set_up_cmd(cmd) return public.return_message(0, 0, public.lang("Updated Openvpn configuration successfully")) + def rebuild_mysql_database(self, get): + try: + get.db_host = get.service_name + get.c_port = None + get.mysql_root_password = None + get.type = "mysql" + # 获取已安装的mysql应用信息 + installed_json = self.read_json(self.installed_json_file) + # 直接找到符合条件的 MySQL 应用 + target_app = next( + (i for app_list in installed_json.values() for i in app_list + if i["service_name"] == get.service_name and i["appname"] == "mysql"), + None + ) + + if target_app: + # 找到 MySQL 应用 + # 获取端口 + get.c_port = target_app["port"][0] + + # 直接获取 mysql_root_password + get.mysql_root_password = next( + (info["fieldValue"] for info in target_app["appinfo"] if info["fieldKey"] == "mysql_root_password"), + None + ) + + db_sid = self.get_database_sid(get) + if not db_sid: + self.apply_database_to_panel(get) + except Exception as e: + public.print_log(str(e)) # 2024/8/1 下午10:12 重建指定app def rebuild_app(self, get): ''' @@ -655,6 +876,9 @@ class AppManage(App): public.ExecShell(command) command = self.set_type(0).set_path(self.compose_file).get_compose_up_remove_orphans() public.ExecShell(command) + # 处理数据库容器,点击重建 解决远程数据库不存在的问题 + if get.app_name == "mysql": + self.rebuild_mysql_database(get) return public.return_message(0, 0, public.lang("Rebuilt successfully!")) # 2024/8/2 上午11:40 获取指定app支持升级的版本 @@ -674,10 +898,10 @@ class AppManage(App): canupdate_version = [] for app_type in installed_json.keys(): for i in installed_json[app_type]: - if i["m_version"] in ("main", "latest"): - return public.return_message(0, 0, []) - if i["id"] == get.id: + if i["m_version"] in ("main", "latest"): + return public.return_message(0, 0, []) + for app in self.apps_json: if app["appname"] == i["appname"]: for version in app["appversion"]: @@ -932,6 +1156,8 @@ class AppManage(App): return self.pageResult(True, data=page_data["data"], page=page_data["page"]) page_data = self.get_page(backup_json[get.id], get) + # 2025/1/6 15:20 时间倒序 + page_data["data"] = sorted(page_data["data"], key=lambda x: x["backup_time"], reverse=True) return self.pageResult(True, data=page_data["data"], page=page_data["page"]) # 2024/8/1 下午6:19 删除备份 @@ -1124,24 +1350,6 @@ class AppManage(App): elif get.status == "rebuild": return self.rebuild_app(get) - # 2024/8/1 下午3:29 构造分页数据 - def get_page(self, data, get): - get.row = get.get("row", 20) - # get.row = 20000 - get.p = get.get("p", 1) - import page - page = page.Page() - info = {'count': len(data), 'row': int(get.row), 'p': int(get.p), 'uri': {}, 'return_js': ''} - - result = {'page': page.GetPage(info)} - n = 0 - result['data'] = [] - for i in range(info['count']): - if n >= page.ROW: break - if i < page.SHIFT: continue - n += 1 - result['data'].append(data[i]) - return result # 2024/8/1 下午3:40 停止指定compose服务 def down_app(self): @@ -1186,7 +1394,6 @@ class AppManage(App): public.ExecShell("rm -rf {}".format(os.path.join(i["path"], i["service_name"]))) if not i["depDataBase"] is None: if i["depDataBase"]["type"] in ("mysql", "mariadb"): - # public.print_log("卸载传入 ---{}".format(i["depDataBase"])) self.delete_database_for_app(i["depDataBase"]["db"]) elif i["depDataBase"]["type"] in ("postgresql", ): self.delete_pgsql_database_for_app(i["depDataBase"]["db"]) @@ -1306,56 +1513,67 @@ class AppManage(App): public.ExecShell("rm -f {}".format(self.apps_json_file)) public.ExecShell("rm -f {}".format(self.app_tags_file)) public.ExecShell("rm -rf {}".format(self.templates_path)) + public.ExecShell("rm -f {}".format(self.ollama_online_models_file)) self.download_apps_json() self.update_ico() self.get_apps_json() if self.apps_json is None: return public.return_message(-1, 0, public.lang("Failed to obtain the application category, please click [Update Application List] in the upper right corner")) + from mod.project.docker.app.base import App + cbnet = App().check_baota_net() + if cbnet["status"] == -1: return cbnet get.app_type = get.get("app_type", "all") - # if get.app_type != "all" and not get.app_type in self.types: - # return public.return_message(-1, 0, public.lang("Application type error, please pass in:{}!".format(",".join(self.types)))) - get.query = get.get("query", None) + + get.row = 20000 + import re + query = get.get("query", None) + if query: + pattern = re.compile( + rf'.*{{}}.*'.format(re.escape(query)), + flags=re.IGNORECASE + ) + else: + # 无查询时直接匹配所有 + pattern = re.compile(rf'^.*$', flags=re.IGNORECASE) installed_json = self.read_json(self.installed_json_file) app_list = [] + from mod.project.docker.apphub.apphubManage import AppHub + apphub_json = AppHub().get_hub_apps() + self.apps_json = self.apps_json + apphub_json for app in self.apps_json: if app["appstatus"] == 0: continue app["installedCount"] = 0 - if get.app_type == "all": - if not get.query is None: - if (not get.query in app["appname"] and not get.query in app["apptitle"] and - not get.query in app["appdesc"]): + if app["apptype"] == "AI": + from mod.project.docker.app.gpu.tools import GPUTool + GPUTool.register_app_gpu_option(app) + + if get.app_type in ("all", app["apptype"],"AppHub"): + if(get.app_type == "AppHub" and app["appid"] != -1): continue + # 模糊搜索检查 + match = False + if (pattern.search(app["appname"]) or + pattern.search(app["apptitle"]) or + pattern.search(app["appdesc"])): + match = True + + if not match: + continue # 不匹配则跳过 + + # 计算安装次数 if not app["reuse"] and installed_json: for i in installed_json[app["apptype"]]: - if i["appname"] == app["appname"]: + if i["appname"] == app["appname"] and i["appid"] == app["appid"]: app["installedCount"] += 1 break elif installed_json: if app["apptype"] in installed_json: for i in installed_json[app["apptype"]]: - if i["appname"] == app["appname"]: - app["installedCount"] += 1 - - app_list.append(app) - elif app["apptype"] == get.app_type: - if not get.query is None: - if (not get.query in app["appname"] and not get.query in app["apptitle"] and - not get.query in app["appdesc"]): - continue - - if not app["reuse"] and installed_json: - for i in installed_json[app["apptype"]]: - if i["appname"] == app["appname"]: - app["installedCount"] += 1 - break - elif installed_json: - if app["apptype"] in installed_json: - for i in installed_json[app["apptype"]]: - if i["appname"] == app["appname"]: + if i["appname"] == app["appname"] and i["appid"] == app["appid"]: app["installedCount"] += 1 app_list.append(app) @@ -1473,4 +1691,65 @@ class AppManage(App): app_tags = self.read_json(self.app_tags_file) if not app_tags: return public.return_message(0, 0, []) - return public.return_message(0, 0,app_tags) + return public.return_message(0, 0, app_tags) + + def client_db_shell(self, get): + """ + 容器执行命令 + :param get: + :return: + """ + try: + if not hasattr(get, "id"): + return public.return_message(-1, 0, public.lang("Missing parameters! id")) + if not hasattr(get, "appname"): + return public.return_message(-1, 0, public.lang("Missing parameters! appname")) + + if get.appname.strip() not in ["mysql", "redis", "postgresql", "tdengine"]: + return public.return_message(-1, 0, public.lang("This app link is not supported!")) + + command = "docker exec -it {}" + + if get.appname == "mysql": + command = command.format(get.id) + " mysql -uroot -p{} --socket=/tmp/mysql.sock".format(get.password) + elif get.appname == "redis": + command = command.format(get.id) + " redis-cli -a {}".format(get.password) + elif get.appname == "postgresql": + command = command.format(get.id) + " psql -U postgres" + elif get.appname == "tdengine": + command = command.format(get.id) + " taos" + + return public.return_message(0, 0, command) + except Exception as e: + return public.return_message(-1, 0, public.lang('Failed to get the container')) + + def get_app_compose(self,get): + """ + 获取应用的docker-compose.yml文件内容 + :param get: + :return: + """ + app_name = get.get("app_name", None) + appid = get.get("appid", None) + if app_name is None: + return public.return_message(-1, 0, public.lang("Missing parameters! app_name")) + if "." in app_name or "/" in app_name: + return public.return_message(-1, 0, public.lang("The app name is not legal, please do not include illegal characters!")) + if get.get('gpu', 'false') == 'true': + app_name = app_name+"_gpu" + + if appid == '-1': + #/www/dk_project/dk_app/apphub/apphub + compose_path = os.path.join(self.project_path, "apphub", "apphub",app_name,"latest","docker-compose.yml") + self.app_template_path = compose_path + else: + #/www/dk_project/dk_app/templates + compose_path = os.path.join(self.project_path, "templates", app_name, "docker-compose.yml") + self.app_template_path = compose_path + self.check_app_template(get) + + if not os.path.exists(compose_path): + return public.return_message(-1, 0, public.lang("No docker-compose.yml file found for the specified app!")) + + compose_content = public.readFile(compose_path) + return public.return_message(0, 0, compose_content) diff --git a/mod/project/docker/app/base.py b/mod/project/docker/app/base.py index 0ba11b84..de6fd8eb 100644 --- a/mod/project/docker/app/base.py +++ b/mod/project/docker/app/base.py @@ -1,8 +1,8 @@ # coding: utf-8 # ------------------------------------------------------------------- -# 宝塔Linux面板 +# aaPanel # ------------------------------------------------------------------- -# Copyright (c) 2015-2099 宝塔软件(http://bt.cn) All rights reserved. +# Copyright (c) 2015-2099 aaPanel(www.aapanel.com) All rights reserved. # ------------------------------------------------------------------- # Author: wzz # ------------------------------------------------------------------- @@ -21,8 +21,14 @@ if "/www/server/panel/class" not in sys.path: import public from mod.project.docker.composeMod import main as composeMod - +dk_project_path="/www/dk_project" +project_path_file = "{}/class_v2/btdockerModelV2/config/project_path.pl".format(public.get_panel_path()) +if os.path.exists(project_path_file): + path = public.readFile(project_path_file) + if path: + dk_project_path = path.strip() class App(composeMod): + dk_project_path = dk_project_path def __init__(self): super(App, self).__init__() @@ -48,12 +54,12 @@ class App(composeMod): self.app_path = None self.service_path = None self.plugin_path = None - self.project_path = "/www/dk_project/dk_app" + self.project_path = os.path.join(self.dk_project_path, "dk_app") if not os.path.exists(self.project_path): public.ExecShell("mkdir -p {}".format(self.project_path)) + self.ollama_online_models_file = "{}/ollama_online_models.json".format(self.project_path) self.templates_path = os.path.join(self.project_path, "templates") self.app_template_path = None - self.add_proxy = False self.delete_pl = False self.r_id = False self.user_conf_file = None @@ -108,7 +114,7 @@ class App(composeMod): self.app_version = None self.plugin_version = None self.app_type = None - self.backup_path = "/www/dk_project/backup" + self.backup_path = os.path.join(self.dk_project_path, "backup") self.apps_backup_path = os.path.join(self.backup_path, "apps") self.service_backup_path = None self.backup_conf = { @@ -285,7 +291,7 @@ class App(composeMod): self.r_id = result['id'] break - self.add_proxy = True + return public.return_message(0, 0, '') # 2024/7/2 上午10:40 检查wordpress的compose.yml文件是否存在 @@ -351,31 +357,6 @@ class App(composeMod): return public.return_message(-1, 0, public.lang("Failed to create a baota net network. err: {}",stderr)) return public.return_message(0, 0, '') - # 2024/7/29 下午4:22 检查web服务是否正常 - def check_web_status(self): - ''' - @name 检查web服务是否正常 - @param "data":{"参数名":""} <数据类型> 参数描述 - @return dict{"status":True/False,"msg":"提示信息"} - ''' - from mod.base.web_conf import util - webserver = util.webserver() - if webserver != "nginx" or webserver is None: - return public.returnResult(status=False, msg="Domain name access only supports Nginx. Please go to the software store to install Nginx or choose not to use domain name access!") - - from panelSite import panelSite - site_obj = panelSite() - site_obj.check_default() - - wc_err = public.checkWebConfig() - if not wc_err: - return public.returnResult( - status=False, - msg='ERROR: An error in the configuration file has been detected. Please eliminate it before proceeding.

' + - wc_err.replace("\n", '
') + '
' - ) - - return public.return_message(0, 0, '') # 2024/7/29 下午4:32 检查端口是否被其他进程占用而非本应用 def check_port(self, get): @@ -410,7 +391,7 @@ class App(composeMod): from safeModel.firewallModel import main as firewall_main get.port = str(get.c_port) res_dict = firewall_main().get_listening_processes(get) - return public.return_message(-1, 0, public.lang("The {} port has been occupied by [{}], please change the port!",self.app_name.replace("dk_", ""), res_dict.get("process_name"))) + return public.return_message(-1, 0, public.lang("The {} port has been occupied by [{}], please change the port!", get.port, res_dict.get("process_name"))) return public.return_message(0, 0, '') @@ -641,6 +622,8 @@ class App(composeMod): from database import database db_list = database().GetCloudServer(get) for db in db_list: + if "db_type" not in db: + continue if db["ps"] == self.service_name: get.id = db['id'] database().RemoveCloudServer(get) @@ -681,7 +664,6 @@ class App(composeMod): args.db_type = "mysql" try: db_list = dataModel().get_data_list(args) - # public.print_log("卸载传入222 db_list---{}".format(db_list)) except: public.print_log(public.get_error_info()) @@ -750,7 +732,39 @@ class App(composeMod): ''' installed_apps = [] current_timestamp = int(time.time()) + # from btdockerModelV2 import dk_public as dp + server_ip = public.GetLocalIp() for i in installed_json[app_type]: + i["server_ip"] = server_ip + # if not "site_id" in i.keys(): + # i["site_id"] = None + # i["site_name"] = None + # i["site_addtime"] = None + + # if not i["domain"] is None and i["site_id"] is None: + # find_result = dp.sql("docker_sites").where("name=?", (i["domain"],)).find() + # if find_result: + # i["site_id"] = find_result["id"] + # i["site_name"] = i["domain"] + # i["site_addtime"] = find_result["addtime"] + # else: + # # 2024/11/21 15:18 如果网站没了则不显示域名 + # i["domain"] = None + # # 2024/11/21 15:08 如果id查询异常则尝试重新添加一个网站;先不使用,用上面的逻辑 + # # from mod.project.docker.sites.sitesManage import SitesManage + # # site_manage = SitesManage() + # # + # # args = public.to_dict_obj({ + # # "name": i["service_name"], + # # "type": "app", + # # "domains": i["domain"], + # # "port": i["port"][0], + # # "remark": i["domain"], + # # }) + # # create_result = site_manage.create_site(args) + # # # 2024/11/21 15:14 如果网站无法创建就不显示域名了 + # # if not create_result['status']: i["domain"] = None + i["createTime"] = i["createat"] time_diff = current_timestamp - i["createat"] time_diff_delta = timedelta(seconds=time_diff) @@ -780,6 +794,7 @@ class App(composeMod): continue for j in sk_container_list: + i["container_id"] = j["Id"] if not "createdBy" in j["Labels"].keys(): continue if j["Labels"]["createdBy"] != "bt_apps": @@ -796,16 +811,19 @@ class App(composeMod): break else: if os.path.exists("/tmp/{}.log".format(i["service_name"])): - check_bt_successful = public.ExecShell("cat /tmp/{}.log | grep bt_successful".format(i["service_name"]))[0] + check_bt_successful = \ + public.ExecShell("cat /tmp/{}.log | grep bt_successful".format(i["service_name"]))[0] if check_bt_successful == "": - check_bt_failed = public.ExecShell("cat /tmp/{}.log | grep bt_failed".format(i["service_name"]))[0] + check_bt_failed = \ + public.ExecShell("cat /tmp/{}.log | grep bt_failed".format(i["service_name"]))[0] if check_bt_failed != "": i["status"] = "exited" else: i["status"] = "initializing" else: if i["appname"] == "sftpgo": - check_started = public.ExecShell("cat /tmp/{}.log | grep Started".format(i["service_name"]))[0] + check_started = \ + public.ExecShell("cat /tmp/{}.log | grep Started".format(i["service_name"]))[0] if check_started =="": i["status"] = "initializing" else: @@ -831,20 +849,22 @@ class App(composeMod): elif i["appname"] == "nginx_proxy_manager": i["appinfo"].append({"fieldKey": "allow_access", "fieldTitle": "Default mailbox", "fieldValue": "admin@example.com"}) i["appinfo"].append({"fieldKey": "allow_access", "fieldTitle": "Default password", "fieldValue": "changeme"}) - elif i["appname"] == "alist": + elif i["appname"] =="openlist" or i["appname"] == "openlist": + appname = i["appname"] compose_file = "{}/{}/docker-compose.yml".format(i["path"], i["service_name"]) pass_file = "{}/{}/alist_pass.pl".format(i["path"], i["service_name"]) i["appinfo"].append({ - "fieldKey": "alist_user", - "fieldTitle": "Alist account", + "fieldKey": "{}_user".format(appname), + "fieldTitle": "{} account".format(appname), "fieldValue": "admin", }) if not os.path.exists(pass_file): alist_password = public.GetRandomString(10) i["appinfo"].append({ - "fieldKey": "alist_password", - "fieldTitle": "Set Alist password (copy to terminal)", - "fieldValue": "docker-compose -f {compose_file} exec -it {service_name} ./alist admin set {alist_password}".format( + "fieldKey": "{}_password".format(appname), + "fieldTitle": "Set {} password (copy to terminal)".format(appname), + "fieldValue": "docker-compose -f {compose_file} exec -it {service_name} ./{bin} admin set {alist_password}".format( + bin=appname, compose_file=compose_file, service_name=i["service_name"], alist_password=alist_password, @@ -854,14 +874,15 @@ class App(composeMod): else: alist_password = public.readFile(pass_file) i["appinfo"].append({ - "fieldKey": "alist_password", - "fieldTitle": "Alist password", + "fieldKey": "{}_password".format(appname), + "fieldTitle": "{} password".format(appname), "fieldValue": alist_password, }) i["appinfo"].append({ - "fieldKey": "alist_password", - "fieldTitle": "Reset Alist password (copy to terminal)", - "fieldValue": "docker-compose -f {compose_file} exec -it {service_name} ./alist admin set {alist_password}".format( + "fieldKey": "{}_password".format(appname), + "fieldTitle": "Reset {} password (copy to terminal)".format(appname), + "fieldValue": "docker-compose -f {compose_file} exec -it {service_name} ./{bin} admin set {alist_password}".format( + bin=appname, compose_file=compose_file, service_name=i["service_name"], alist_password=alist_password, @@ -869,7 +890,10 @@ class App(composeMod): }) elif i["appname"] == "openvpn": i["appinfo"].append({"fieldKey": "ovpnfile", "fieldTitle": "ovpn file (import client)", "fieldValue": "{}/{}/{}.ovpn".format(i["path"], i["service_name"], i["service_name"])}) - + elif i["appname"] == "rustdesk": + secret_key = public.readFile("{}/{}/data/id_ed25519.pub".format(i["path"], i["service_name"])) + i["appinfo"].append( + {"fieldKey": "secret_key", "fieldTitle": "密钥(key)", "fieldValue": "{}".format(secret_key)}) allow_access = "yes" if i["host_ip"] == "0.0.0.0" else "no" if i["domain"] is None else "yes" i["appinfo"].append({"fieldKey": "allow_access", "fieldTitle": "Allow external access", "fieldValue": allow_access}) # if i["status"] == "created": @@ -1025,6 +1049,9 @@ class App(composeMod): public.ExecShell("rm -rf {}".format(self.app_template_path)) app_url = "{}/src/dk_app/aapanel/apps/templates/{}.zip".format(public.get_url(), get.app_name) + # 检查GPU参数,重定向templates路径 + if get.get('gpu', 'false') == 'true': + app_url = "{}/src/dk_app/aapanel/apps/templates/{}_gpu.zip".format(public.get_url(), get.app_name) to_file = '/tmp/{}.zip'.format(get.app_name) if os.path.exists(to_file): public.ExecShell("rm -f {}".format(to_file)) @@ -1110,3 +1137,21 @@ class App(composeMod): return public.return_message(-1, 0, create_res["message"]) return public.return_message(0, 0, public.lang("The creation is successful!")) + def find_field_value(self,data, target_key): + """ + 用于从env中 找出某个env的值 + eg: + [{host:0.0.0.0},{port:2222}] port -> 2222 + + 参数: + - data: JSON 列表 + - target_key: 要查找的 fieldKey + + 返回: + - 匹配的 fieldValue,如果未找到则返回 None + + """ + for item in data: + if item.get("fieldKey") == target_key: + return item.get("fieldValue") + return None diff --git a/mod/project/docker/app/gpu/__init__.py b/mod/project/docker/app/gpu/__init__.py new file mode 100644 index 00000000..5561f1c7 --- /dev/null +++ b/mod/project/docker/app/gpu/__init__.py @@ -0,0 +1,23 @@ +from typing import List + +from .base import GPUBase +from .nvidia import NVIDIA +from .amd import AMD + +class Driver: + drivers: List[GPUBase] = [] + + def __init__(self): + if NVIDIA.is_support(): + self.drivers.append(NVIDIA()) + + if AMD.is_support(): + self.drivers.append(AMD()) + + @property + def support(self): + return len(self.drivers) > 0 + + def get_all_device_info(self, get): + for _driver in self.drivers: + pass \ No newline at end of file diff --git a/mod/project/docker/app/gpu/amd.py b/mod/project/docker/app/gpu/amd.py new file mode 100644 index 00000000..434cde4e --- /dev/null +++ b/mod/project/docker/app/gpu/amd.py @@ -0,0 +1,36 @@ +from mod.project.docker.app.gpu.base import GPUBase + +class AMD(GPUBase): + @classmethod + def is_support(cls): + pass + + def _get_device_version(self, *args, **kwargs): + pass + + def _get_device_name(self, *args, **kwargs): + pass + + def _get_fan_info(self, *args, **kwargs): + pass + + def main(self): + pass + + def get_info(self, gpu_id=0): + pass + + def _get_mem_info(self): + pass + + def _get_clock_info(self): + pass + + def _get_temp_info(self): + pass + + def _get_uti_info(self): + pass + + def _get_proc_uti(self, proc_name='', proc_pid=0): + pass diff --git a/mod/project/docker/app/gpu/base.py b/mod/project/docker/app/gpu/base.py new file mode 100644 index 00000000..c0b42182 --- /dev/null +++ b/mod/project/docker/app/gpu/base.py @@ -0,0 +1,70 @@ +from abc import ABC, abstractmethod + + +class GPUBase(ABC): + name = 'base' + support = None + @abstractmethod + def _get_mem_info(self, *args, **kwargs): + """ + 获取显存占用 + Returns: + + """ + pass + + @abstractmethod + def _get_clock_info(self, *args, **kwargs): + """ + 获取时钟信息 + Returns: + + """ + + pass + + @abstractmethod + def _get_temp_info(self, *args, **kwargs): + """ + 获取温度 + Returns: + + """ + pass + + @abstractmethod + def _get_uti_info(self, *args, **kwargs): + """ + 获取占用 + + + Returns: + + """ + pass + + @abstractmethod + def _get_proc_uti(self, *args, **kwargs): + """ + 获取进程占用 + Returns: + + """ + pass + + @abstractmethod + def _get_fan_info(self, *args, **kwargs): + pass + + @abstractmethod + def _get_device_name(self, *args, **kwargs): + pass + + @abstractmethod + def _get_device_version(self, *args, **kwargs): + pass + + @classmethod + @abstractmethod + def is_support(cls): + pass \ No newline at end of file diff --git a/mod/project/docker/app/gpu/constants.py b/mod/project/docker/app/gpu/constants.py new file mode 100644 index 00000000..9b372c9c --- /dev/null +++ b/mod/project/docker/app/gpu/constants.py @@ -0,0 +1,27 @@ +from dataclasses import dataclass + + +@dataclass +class CMD: + @dataclass + class CTK: + @dataclass + class APT: + GetGPGKey = "curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg" + AddSourcesList = "curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list" + APTUpdate = "sudo apt-get update" + Install = "sudo apt-get install -y nvidia-container-toolkit" + OneInstall = GetGPGKey + ';' + AddSourcesList + ';' + APTUpdate + ';' + Install + + @dataclass + class YUM: + AddRepo = "curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo" + Install = "sudo yum install -y nvidia-container-toolkit" + OneInstall = AddRepo + ';' + Install + + @dataclass + class ConfigureDocker: + Runtime = "sudo nvidia-ctk runtime configure --runtime=docker" + Restart = "sudo systemctl restart docker" + + CheckVersion = "nvidia-ctk -v" diff --git a/mod/project/docker/app/gpu/nvidia.py b/mod/project/docker/app/gpu/nvidia.py new file mode 100644 index 00000000..1e68b326 --- /dev/null +++ b/mod/project/docker/app/gpu/nvidia.py @@ -0,0 +1,199 @@ +import sys +from collections import defaultdict +from functools import wraps + +if "/www/server/panel/class" not in sys.path: + sys.path.append('/www/server/panel/class') + +import public + +try: + import pynvml +except: + public.ExecShell("btpip install nvidia-ml-py") + import pynvml + +try: + from mod.project.docker.app.gpu.base import GPUBase +except: + class GPUBase: + pass + +device_tasks = defaultdict() +system_tasks = defaultdict() + + +def register_task(name: str): + def task_decorator(task_func): + _task_type, _task_name = name.split(':') + if _task_type == 'device': + device_tasks[_task_name] = task_func + elif _task_type == 'system': + system_tasks[_task_name] = task_func + + @wraps(task_func) + def func_wrapper(*args, **kwargs): + return task_func(*args, **kwargs) + + return func_wrapper + + return task_decorator + + +class NVIDIA(GPUBase): + name = 'nvidia' + support = None + + def __init__(self): + # 判断是否支持,并在判断时初始化pynvml库。 + self.device_count = 0 + if self.is_support(): + self.device_count = pynvml.nvmlDeviceGetCount() + + def __del__(self): + if self.is_support(): + pynvml.nvmlShutdown() + + def get_all_device_info(self): + all_info = defaultdict() + all_info['system'] = self.get_system_info() + for index in range(self.device_count): + all_info[index] = self.get_info_by_index(index) + return all_info + + def get_info_by_index(self, index=0): + info = defaultdict() + handle = pynvml.nvmlDeviceGetHandleByIndex(index) + + for t_name, t_func in device_tasks.items(): + try: + info[t_name] = t_func(self, handle) + except: + # public.print_log("pynvml {t_name} error: {}") + info[t_name] = None + + return info + + def get_system_info(self): + info = defaultdict() + for t_name, t_func in system_tasks.items(): + try: + info[t_name] = t_func(self) + except: + # public.print_log(f"pynvml {t_name} error: {e}") + info[t_name] = None + return info + + @classmethod + def is_support(cls): + try: + pynvml.nvmlInit() + cls.support = True + return True + + except pynvml.NVMLError: + cls.support = False + # public.print_log("Nvidia was not supported!") + return False + + @register_task('device:memory') + def _get_mem_info(self, handle): + info = defaultdict() + info['size'] = int(pynvml.nvmlDeviceGetMemoryInfo(handle).total) / 1024 ** 3 + info['free'] = int(pynvml.nvmlDeviceGetMemoryInfo(handle).free) / 1024 ** 3 + info['used'] = int(pynvml.nvmlDeviceGetMemoryInfo(handle).used) / 1024 ** 3 + return info + + @register_task('device:clock') + def _get_clock_info(self, handle): + info = defaultdict() + info['graphics'] = pynvml.nvmlDeviceGetClockInfo(handle, pynvml.NVML_CLOCK_GRAPHICS) + info['sm'] = pynvml.nvmlDeviceGetClockInfo(handle, pynvml.NVML_CLOCK_SM) + info['memory'] = pynvml.nvmlDeviceGetClockInfo(handle, pynvml.NVML_CLOCK_MEM) + info['video'] = pynvml.nvmlDeviceGetClockInfo(handle, pynvml.NVML_CLOCK_VIDEO) + + return info + + @register_task('device:temperature') + def _get_temp_info(self, handle): + info = 0 + try: + info = pynvml.nvmlDeviceGetTemperature(handle, pynvml.NVML_TEMPERATURE_GPU) + except pynvml.NVMLError or AttributeError: + info = pynvml.nvmlDeviceGetTemperatureV1(handle, pynvml.NVML_TEMPERATURE_GPU) + return info + + @register_task('device:utilization') + def _get_uti_info(self, handle): + info = defaultdict() + info['gpu'] = pynvml.nvmlDeviceGetUtilizationRates(handle).gpu + info['memory'] = pynvml.nvmlDeviceGetUtilizationRates(handle).memory + + return info + + @register_task('device:processes') + def _get_proc_uti(self, handle): + info = list() + for p in pynvml.nvmlDeviceGetComputeRunningProcesses(handle): + p.__dict__['name'] = pynvml.nvmlSystemGetProcessName(p.pid) + p.__dict__['type'] = 'Compute' + info.append(p.__dict__) + + for p in pynvml.nvmlDeviceGetGraphicsRunningProcesses(handle): + p.__dict__['name'] = pynvml.nvmlSystemGetProcessName(p.pid) + p.__dict__['type'] = 'Graphics' + info.append(p.__dict__) + + for p in pynvml.nvmlDeviceGetMPSComputeRunningProcesses(handle): + p.__dict__['name'] = pynvml.nvmlSystemGetProcessName(p.pid) + p.__dict__['type'] = 'MPS' + info.append(p.__dict__) + + return info + + @register_task('device:fan') + def _get_fan_info(self, handle): + info = defaultdict() + try: + info['speed'] = pynvml.nvmlDeviceGetFanSpeedRPM(handle).speed + except AttributeError: + info['speed'] = pynvml.nvmlDeviceGetFanSpeed(handle) + except pynvml.NVMLError: + info['speed'] = pynvml.nvmlDeviceGetFanSpeed_v2(handle, 0) + except: + info['speed'] = 0 + return info + + @register_task('device:name') + def _get_device_name(self, handle): + return pynvml.nvmlDeviceGetName(handle) + + @register_task('device:power') + def _get_device_power(self, handle): + info = defaultdict() + info['current'] = pynvml.nvmlDeviceGetPowerUsage(handle) + info['max'] = pynvml.nvmlDeviceGetPowerManagementLimit(handle) + return info + + @register_task('system:version') + def _get_device_version(self): + info = defaultdict() + info['driver'] = pynvml.nvmlSystemGetDriverVersion() + + try: + info['cuda'] = pynvml.nvmlSystemGetCudaDriverVersion() + except pynvml.NVMLError or AttributeError: + info['cuda'] = pynvml.nvmlSystemGetCudaDriverVersion_v2() + + return info + + @register_task('system:count') + def _get_device_count(self): + info = 0 + info = pynvml.nvmlDeviceGetCount() + return info + + +if __name__ == '__main__': + nvidia = NVIDIA() + print(nvidia.get_all_device_info()) diff --git a/mod/project/docker/app/gpu/tools.py b/mod/project/docker/app/gpu/tools.py new file mode 100644 index 00000000..327a5a63 --- /dev/null +++ b/mod/project/docker/app/gpu/tools.py @@ -0,0 +1,158 @@ +import os +import sys +from typing import Tuple + +from mod.project.docker.app.gpu.constants import CMD +from mod.project.docker.app.gpu.nvidia import NVIDIA + +if "/www/server/panel/class" not in sys.path: + sys.path.append('/www/server/panel/class') + +import public + + +class GPUTool: + gpu_option = None + option_default = None + + @staticmethod + def __get_linux_distribution(): + """检测系统是否为 Debian/Ubuntu 或 CentOS/Red Hat 系列""" + try: + # 优先解析 /etc/os-release + with open("/etc/os-release", "r", encoding="utf-8") as f: + os_release = {} + for line in f: + line = line.strip() + if line and "=" in line: + key, value = line.split("=", 1) + os_release[key] = value.strip('"') + + dist_id = os_release.get("ID", "").lower() + id_like = os_release.get("ID_LIKE", "").lower() + + # 根据 ID 或 ID_LIKE 判断 + if dist_id in ["debian", "ubuntu"]: + return "debian" + elif dist_id in ["centos", "rhel", "fedora"]: + return "centos" + elif "debian" in id_like: + return "debian" + elif "rhel" in id_like or "fedora" in id_like: + return "centos" + + except FileNotFoundError: + # 如果 /etc/os-release 不存在,检查其他文件 + if os.path.exists("/etc/debian_version"): + return "debian" + elif os.path.exists("/etc/redhat-release"): + return "centos" + + except Exception: + raise ValueError("System Distribution Is Unknown") + + @classmethod + def __gpu_default_setting(cls) -> Tuple[bool, bool]: + """ + 检测是否开启GPU + Returns: + gpu_option: 返回是否开启GPU选择 + option_default: 默认GPU选择是否开启 + """ + if cls.gpu_option is not None and cls.option_default is not None: + return cls.gpu_option, cls.option_default + + driver = NVIDIA() + # 如果不支持直接返回 + if driver.support is None or driver.support is False: + cls.gpu_option = False + cls.option_default = False + return cls.gpu_option, cls.option_default + + # 如果支持则检查显存大小 + device_info = driver.get_all_device_info() + mem_size = 0 + for _, _device in device_info.items(): + mem_size = mem_size + _device.get('memory', {}).get('size', 0) + if mem_size > 3: + cls.gpu_option = True + cls.option_default = True + else: + cls.gpu_option = True + cls.option_default = False + + return cls.gpu_option, cls.option_default + + @classmethod + def register_app_gpu_option(cls, app): + option, default = cls.__gpu_default_setting() + for field in app.get('field', []): + if option == False and field.get('attr', '') == 'gpu': + app['field'].remove(field) + elif option == True and field.get('attr', '') == 'gpu': + field['default'] = default + field['suffix'] = field['suffix'] + ' | 已默认设置为{}'.format(default) + # public.print_log("\n\n\n\n{}\n\n\n\n".format(field['suffix'])) + return app + + @staticmethod + def is_install_ctk(): + stdout, stderr = public.ExecShell(CMD.CTK.CheckVersion) + if len(stderr) != 0: + return False + if not stdout.lower().find('version'): + public.print_log("Not Nvidia Container Toolkit") + return False + return True + + @classmethod + def __ctk_install_cmd_apt(cls, app_log): + return ("{get_gpg_key} >> {app_log};" + "{add_sources_list} >> {app_log};" + "{apt_update} >> {app_log};" + "{install} >> {app_log}" + .format(get_gpg_key=CMD.CTK.APT.GetGPGKey, + add_sources_list=CMD.CTK.APT.AddSourcesList, + apt_update=CMD.CTK.APT.APTUpdate, + install=CMD.CTK.APT.Install, + app_log=app_log + )) + + @classmethod + def __ctk_install_cmd_yum(cls, app_log): + return ("{add_repo} >> {app_log};" + "{install} >> {app_log}" + .format(add_repo=CMD.CTK.YUM.AddRepo, + install=CMD.CTK.YUM.Install, + app_log=app_log + )) + + @classmethod + def __config_docker(cls, app_log): + return ("{runtime} >> {app_log};" + "{restart} >> {app_log}" + .format(runtime=CMD.CTK.ConfigureDocker.Runtime, + restart=CMD.CTK.ConfigureDocker.Restart, + app_log=app_log)) + + @classmethod + def ctk_install_cmd(cls, app_log): + dtb = cls.__get_linux_distribution() + cmd = '' + if dtb == 'debian': + cmd = ( + "{install_cmd};" + "{config_docker}" + .format( + install_cmd=cls.__ctk_install_cmd_apt(app_log), + config_docker=cls.__config_docker(app_log), + )) + elif dtb == 'centos': + cmd = ( + "{install_cmd};" + "{config_docker}" + .format( + install_cmd=cls.__ctk_install_cmd_yum(app_log), + config_docker=cls.__config_docker(app_log), + )) + return cmd diff --git a/mod/project/docker/app/gpu/type.py b/mod/project/docker/app/gpu/type.py new file mode 100644 index 00000000..e69de29b diff --git a/mod/project/docker/app/sub_app/__init__.py b/mod/project/docker/app/sub_app/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mod/project/docker/app/sub_app/base.py b/mod/project/docker/app/sub_app/base.py new file mode 100644 index 00000000..0346dede --- /dev/null +++ b/mod/project/docker/app/sub_app/base.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# +------------------------------------------------------------------- +# | aaPanel +# +------------------------------------------------------------------- +# | Copyleft (c) 2015-2099 aaPanel(www.aapanel.com) All lefts reserved. +# +------------------------------------------------------------------- +# | Author: wzz +# | email : wzz@bt.cn +# +------------------------------------------------------------------- +# +------------------------------------------------------------------- +# | docker sub_app 管理模型 - +# +------------------------------------------------------------------- + +class base(): + def __init__(self): + pass diff --git a/mod/project/docker/app/sub_app/downModel.py b/mod/project/docker/app/sub_app/downModel.py new file mode 100644 index 00000000..b66ace0e --- /dev/null +++ b/mod/project/docker/app/sub_app/downModel.py @@ -0,0 +1,198 @@ +# -*- coding: utf-8 -*- +# +------------------------------------------------------------------- +# | aaPanel +# +------------------------------------------------------------------- +# | Copyleft (c) 2015-2099 aaPanel(www.aapanel.com) All lefts reserved. +# +------------------------------------------------------------------- +# | Author: wzz +# | email : wzz@bt.cn +# +------------------------------------------------------------------- +# +------------------------------------------------------------------- +# | docker sub_app 管理模型 - +# +------------------------------------------------------------------- +import json +import sys +import time +from collections import deque + +if "/www/server/panel/class" not in sys.path: + sys.path.append('/www/server/panel/class') + +import public + +def download_model(service_name, model_name, model_version, ollama_url, app_cmd_log): + """ + 下载Ollama模型的具体实现 + @param service_name: 服务名称 + @param model_name: 模型名称 + @param model_version: 模型版本 + @param ollama_url: Ollama API URL + @param app_cmd_log: 日志文件路径 + """ + def start_download(): + url = ollama_url + "/api/pull" + + # 准备请求数据 + data = { + "model": "{}:{}".format(model_name, model_version), + "stream": True + } + + try: + import requests + response = requests.post(url, json=data, stream=True) + + with open(app_cmd_log, 'a') as log_file: + log_file.write('{} model is being downloaded, and may need to wait more than 1-30 minutes...\n'.format(model_name)) + + download_tag = None + last_completed = 0 + last_time = time.time() + # 使用双端队列存储最近10秒的速度 + speed_history = deque(maxlen=60) + + count_sum = 0 + for line in response.iter_lines(): + if line: + json_response = json.loads(line) + status = json_response.get("status", "") + + # 记录下载进度 + if "pulling" in status: + status = status.split(" ") + if download_tag is None or status[1] != download_tag: + download_tag = status[1] + last_completed = 0 + last_time = time.time() + speed_history.clear() + + completed = json_response.get("completed", 0) + total = json_response.get("total", 0) + + if total > 0: + # 计算下载速度 + current_time = time.time() + time_diff = current_time - last_time + if time_diff >= 1: # 每秒更新一次 + bytes_diff = completed - last_completed + speed = bytes_diff / time_diff # bytes per second + + # 存储当前速度 + count_sum += 1 + if count_sum > 5: + speed_history.append(speed) + + # 检查速度是否异常 + avg_speed = None + if len(speed_history) >= 10: + avg_speed = sum(list(speed_history)[:-1]) / (len(speed_history) - 1) + current_speed = speed_history[-1] + + if current_speed < 1024000 and avg_speed < 1536000: # 当前速度小于1.2MB/s且平均速度小于1.5MB/s + log_file.write('Detected that the download speed is too low and is trying to reset the download...\n') + log_file.flush() + return False # 返回False表示需要重新下载 + + if current_speed < (avg_speed / 4) and avg_speed > 1024: # 确保有足够的平均速度 + log_file.write('Abnormal download speed or CF slowdown detected, trying to reset the download...\n') + log_file.flush() + return False # 返回False表示需要重新下载 + + # 转换速度单位 + speed_str = "" + if speed < 1024: + speed_str = "{:.2f} B/s".format(speed) + elif speed < 1024 * 1024: + speed_str = "{:.2f} KB/s".format(speed / 1024) + else: + speed_str = "{:.2f} MB/s".format(speed / (1024 * 1024)) + + avg_speed_str = "" + if not avg_speed is None: + if avg_speed < 1024: + avg_speed_str = "{:.2f} B/s".format(avg_speed) + elif avg_speed < 1024 * 1024: + avg_speed_str = "{:.2f} KB/s".format(avg_speed / 1024) + else: + avg_speed_str = "{:.2f} MB/s".format(avg_speed / (1024 * 1024)) + + progress = (completed / total) * 100 + log_file.write('File: {}, Download Progress: {:.2f}%, Average Speed: {}, Current Speed: {}\n'.format( + download_tag, + progress, + avg_speed_str, + speed_str + )) + log_file.flush() + + # 更新上次的数据 + last_completed = completed + last_time = current_time + else: + log_file.write(status + '\n') + log_file.flush() + + # 下载完成后验证模型是否存在 + verify_cmd = "docker-compose -p {service_name} exec -it {service_name_} ollama list | grep {model_name}:{model_version}".format( + service_name=service_name.lower(), + service_name_=service_name, + model_name=model_name, + model_version=model_version + ) + result = public.ExecShell(verify_cmd)[0] + + if model_name in result: + log_file.write('bt_successful\n') + return True + else: + public.writeFile("/tmp/{model_name}:{model_version}.failed".format( + model_name=model_name, + model_version=model_version, + ), "failed") + log_file.write('bt_failed\n') + return False + + except Exception as e: + # 发生异常时记录错误并标记失败 + with open(app_cmd_log, 'a') as log_file: + log_file.write('Download failed: {}\n'.format(str(e))) + log_file.write('bt_failed\n') + public.writeFile("/tmp/{model_name}:{model_version}.failed".format( + model_name=model_name, + model_version=model_version, + ), "failed") + return False + + # 设置下载状态标记 + public.ExecShell("echo 'downloading' > /tmp/{model_name}:{model_version}.pl".format( + model_name=model_name, + model_version=model_version + )) + public.ExecShell("echo 'downloading' > /tmp/nocandown.pl") + public.ExecShell("rm -f /tmp/{model_name}:{model_version}.failed".format( + model_name=model_name, + model_version=model_version, + )) + + try: + max_retries = 30 + retry_count = 0 + + while retry_count < max_retries: + if retry_count > 0: + with open(app_cmd_log, 'a') as log_file: + log_file.write('\n{} retry in progress...\n'.format(retry_count + 1)) + + if start_download(): + break + + retry_count += 1 + time.sleep(3) # 重试前等待3秒 + + finally: + # 清理状态文件 + public.ExecShell("rm -f /tmp/{model_name}:{model_version}.pl".format( + model_name=model_name, + model_version=model_version, + )) + public.ExecShell("rm -f /tmp/nocandown.pl") \ No newline at end of file diff --git a/mod/project/docker/app/sub_app/ollamaMod.py b/mod/project/docker/app/sub_app/ollamaMod.py new file mode 100644 index 00000000..8989960d --- /dev/null +++ b/mod/project/docker/app/sub_app/ollamaMod.py @@ -0,0 +1,324 @@ +# -*- coding: utf-8 -*- +# +------------------------------------------------------------------- +# | aaPanel +# +------------------------------------------------------------------- +# | Copyleft (c) 2015-2099 aaPanel(www.aapanel.com) All lefts reserved. +# +------------------------------------------------------------------- +# | Author: wzz +# | email : wzz@bt.cn +# +------------------------------------------------------------------- +# +------------------------------------------------------------------- +# | docker sub_app 管理模型 - +# +------------------------------------------------------------------- +import json +import os.path +import sys +import time +import traceback + +if "/www/server/panel/class" not in sys.path: + sys.path.append('/www/server/panel/class') + +import public +from mod.project.docker.app.base import App + +class OllamaBase(App): + def __init__(self): + super(OllamaBase, self).__init__() + self.ollama_port = "11434" + self.ollama_local_url = "http://127.0.0.1:{}".format(self.ollama_port) + + def set_ollama_port(self, port): + self.ollama_port = port + self.ollama_local_url = self.ollama_local_url.format(port) + return self + + def set_ollama_local_url(self, port): + self.ollama_local_url = "http://127.0.0.1:{}".format(port) + return self + + +class OllamaMod(OllamaBase): + + def __init__(self): + super(OllamaMod, self).__init__() + + # 2025/2/8 11:47 获取本地所有的models + # https://github.com/ollama/ollama/blob/main/docs/api.md#list-local-models + def list_local_models(self): + uri = "/api/tags" + + ps_json, stderr = public.ExecShell("docker-compose -p {service_name} ps --format json | {grep_v}".format( + service_name=self.service_name.lower(), + grep_v=self.grep_version, + )) + if "Segmentation fault" in ps_json: + return [] + + if not ps_json.startswith("["): + ps = json.loads("[" + ps_json.strip().replace("\n", ",") + "]") + else: + ps = json.loads(ps_json.strip().replace("\n", ",")) + + try: + p_port = "11434" + for i in ps: + if "ollama/ollama" in i["Image"]: + if len(i["Publishers"]) == 0: break + p_port = i["Publishers"][0]["PublishedPort"] + except: + p_port = "11434" + + self.set_ollama_local_url(p_port) + url = self.ollama_local_url + uri + response = public.HttpGet(url) + if not response: return [] + response = json.loads(response) + + if "models" in response: + models = response["models"] + for i in models: + i["version"] = i["name"].split(":")[-1] if ":" in i["name"] else i["name"] + i["l_name"] = i["name"].split(":")[0] if ":" in i["name"] else i["name"] + return models + return [] + + # 2025/2/10 15:52 获取指定模型的信息 + # https://github.com/ollama/ollama/blob/main/docs/api.md#show-model-information + def show_model_info(self, get): + ''' + @name 获取指定模型的信息 + ''' + get.model_name = get.get("model_name", None) + if get.model_name is None: + return public.return_message(-1, 0, public.lang("model_name parameter cannot be null")) + get.model_version = get.get("model_version", None) + if get.model_version is None: + return public.return_message(-1, 0, public.lang("model_version parameter cannot be null")) + get.service_name = get.get("service_name", None) + if get.service_name is None: + return public.return_message(-1, 0, public.lang("service_name parameter cannot be null")) + + self.set_service_name(get.service_name) + uri = "/api/show" + ps_json, stderr = public.ExecShell("docker-compose -p {service_name} ps --format json | {grep_v}".format( + service_name=self.service_name.lower(), + grep_v=self.grep_version, + )) + if "Segmentation fault" in ps_json: + return [] + + if not ps_json.startswith("["): + ps = json.loads("[" + ps_json.strip().replace("\n", ",") + "]") + else: + ps = json.loads(ps_json.strip().replace("\n", ",")) + + try: + p_port = "11434" + for i in ps: + if "ollama/ollama" in i["Image"]: + if len(i["Publishers"]) == 0: break + p_port = i["Publishers"][0]["PublishedPort"] + except: + p_port = "11434" + + self.set_ollama_local_url(p_port) + + url = self.ollama_local_url + uri + param = {"model": "{}:{}".format(get.model_name, get.model_version)} + + import requests + response = requests.post(url, data=json.dumps(param), timeout=10) + + return public.return_message(0, 0, response.json()) + + # 2025/2/10 14:51 获取在线的所有models + def list_online_models(self): + ''' + @name 获取在线的所有models + ''' + if not os.path.exists(self.ollama_online_models_file): + public.downloadFile(public.get_url() + '/src/dk_app/aapanel/apps/ollama_model.json', self.ollama_online_models_file) + + try: + models = json.loads(public.readFile(self.ollama_online_models_file)) + + res = [] + for i in models: + res.append({ + "name": i["name"], + "description": i["zh_cn_msg"], + "version": i["parameters"], + "size": i["size"], + "can_down": True, + }) + + return res + except: + return [] + + # 2025/2/10 14:54 获取模型列表 + def get_models_list(self, get): + ''' + @name 获取模型列表 + ''' + get.search = get.get("search", "") + get.p = get.get("p/d", 1) + get.row = get.get("limit/d", 20) + get.service_name = get.get("service_name", None) + if get.service_name is None: + return public.return_message(-1, 0, public.lang("service_name parameter cannot be null")) + get.status = get.get("status", "all") + self.set_service_name(get.service_name) + + local_models = self.list_local_models() + public.print_log(local_models) + online_models = self.list_online_models() + res = [] + can_down = True + if os.path.exists("/tmp/nocandown.pl"): + can_down = False + + # 2025/2/10 14:55 合并两个列表,增加status字段,已经安装了值为installed + for i in online_models: + i["can_down"] = can_down + + i["status"] = "uninstall" + for j in local_models: + if i["name"] == j["l_name"]: + i["status"] = "installed" if i["version"] == j["version"] else "uninstall" + + if os.path.exists("/tmp/{model_name}:{model_version}.failed".format( + model_name=i["name"], + model_version=i["version"], + )): + i["status"] = "failed" + + if os.path.exists("/tmp/{model_name}:{model_version}.pl".format( + model_name=i["name"], + model_version=i["version"], + )): + i["status"] = "downloading" + + if i["status"] in ("installed", "failed", "downloading"): + break + + if get.status != "all": + if get.status != i["status"]: continue + if get.search != "": + if get.search not in i["name"] and get.search not in i["description"]: continue + + res.append(i) + + page_data = self.get_page(res, get) + return self.pageResult(True, data=page_data["data"], page=page_data["page"]) + + # 2025/2/17 16:34 给指定应用安装指定模型 + def down_models(self, get): + ''' + @name 给指定应用安装指定模型 + @param service_name 服务名称 + @param model_name 模型名称 + @param model_version 模型版本 + ''' + get.service_name = get.get("service_name", None) + if get.service_name is None: + return public.return_message(-1, 0, public.lang("service_name parameter cannot be null")) + get.model_name = get.get("model_name", None) + if get.model_name is None: + return public.return_message(-1, 0, public.lang("model_name parameter cannot be null")) + get.model_version = get.get("model_version", None) + if get.model_version is None: + return public.return_message(-1, 0, public.lang("model_version parameter cannot be null")) + + self.set_service_name(get.service_name) + + # 获取容器信息 + ps_json, stderr = public.ExecShell("docker-compose -p {service_name} ps --format json | {grep_v}".format( + service_name=self.service_name.lower(), + grep_v=self.grep_version, + )) + if "Segmentation fault" in ps_json: + return public.return_message(-1, 0, public.lang("Failed to get container information, docker-compose execution is exceptional!")) + + if not ps_json.startswith("["): + ps = json.loads("[" + ps_json.strip().replace("\n", ",") + "]") + else: + ps = json.loads(ps_json.strip().replace("\n", ",")) + + try: + p_port = "11434" + for i in ps: + if "ollama/ollama" in i["Image"]: + if len(i["Publishers"]) == 0: break + p_port = i["Publishers"][0]["PublishedPort"] + except: + p_port = "11434" + + self.set_ollama_local_url(p_port) + + # 设置日志文件 + self.set_cmd_log() + public.ExecShell("echo > {}".format(self.app_cmd_log)) + + # 导入下载模块并执行下载 + from mod.project.docker.app.sub_app.downModel import download_model + import threading + + # 创建新线程执行下载 + download_thread = threading.Thread( + target=download_model, + args=( + get.service_name, + get.model_name, + get.model_version, + self.ollama_local_url, + self.app_cmd_log + ) + ) + download_thread.daemon = True + download_thread.start() + + return public.return_message(0, 0, public.lang("The model is being downloaded, please check the logs later")) + + # 2025/2/10 15:50 删除指定应用的指定模型 + def del_models(self, get): + ''' + @name 删除指定应用的指定模型 + ''' + get.service_name = get.get("service_name", None) + if get.service_name is None: + return public.return_message(-1, 0, public.lang("service_name parameter cannot be null")) + get.model_name = get.get("model_name", None) + if get.model_name is None: + return public.return_message(-1, 0, public.lang("model_name parameter cannot be null")) + get.model_version = get.get("model_version", None) + if get.model_version is None: + return public.return_message(-1, 0, public.lang("model_version parameter cannot be null")) + + self.set_service_name(get.service_name) + + ps_json, stderr = public.ExecShell("docker-compose -p {service_name} ps --format json | {grep_v}".format( + service_name=self.service_name.lower(), + grep_v=self.grep_version, + )) + if "Segmentation fault" in ps_json: + return public.return_message(0, 0, public.lang("Failed to delete model, docker-compose execution exception!")) + + if not ps_json.startswith("["): + ps = json.loads("[" + ps_json.strip().replace("\n", ",") + "]") + else: + ps = json.loads(ps_json.strip().replace("\n", ",")) + + serviceName = get.service_name + if len(ps) == 2: + serviceName = "ollama" + + cmd = ("docker-compose -p {service_name} exec -it {serviceName} ollama rm {model_name}:{model_version}".format( + service_name=get.service_name.lower(), + serviceName=serviceName, + model_name=get.model_name, + model_version=get.model_version, + )) + public.ExecShell(cmd) + return public.return_message(0, 0, public.lang("Successful deletion of model!")) diff --git a/mod/project/docker/apphub/__init__.py b/mod/project/docker/apphub/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mod/project/docker/apphub/apphubManage.py b/mod/project/docker/apphub/apphubManage.py new file mode 100644 index 00000000..cf55154a --- /dev/null +++ b/mod/project/docker/apphub/apphubManage.py @@ -0,0 +1,258 @@ +# coding: utf-8 +# ------------------------------------------------------------------- +# aaPanel +# ------------------------------------------------------------------- +# Copyright (c) 2015-2099 aaPanel(www.aapanel.com) All rights reserved. +# ------------------------------------------------------------------- +# Author: csj +# ------------------------------------------------------------------- +# ------------------------------ +# docker应用商店 apphub 业务类 +# ------------------------------ +import json +import os +import sys +import re +import time +from datetime import datetime, timedelta + +if "/www/server/panel/class" not in sys.path: + sys.path.insert(0, "/www/server/panel/class") + +import public +from mod.base.git_tool import GitTool +from mod.project.docker.app.base import App +import mod.base.git_tool.install as GitInstall + +class AppHub(): + _instance = None + hub_config_path = os.path.join(App.dk_project_path,'dk_app','apphub_config.json') #/www/dk_project/dk_app/apphub_config.json + hub_home_path = os.path.join(App.dk_project_path,'dk_app','apphub','apphub') #/www/dk_project/dk_app/apphub/apphub + hub_apps_path = os.path.join(hub_home_path,'apps.json') #/www/dk_project/dk_app/apphub/apphub/apps.json + + def __new__(cls, *args, **kwargs): + if not hasattr(cls, "_instance") or cls._instance is None: + cls._instance = super(AppHub, cls).__new__(cls) + return cls._instance + + @classmethod + def get_config(cls): + ''' + @name 获取外部应用配置 + ''' + if not os.path.exists(cls.hub_config_path): + apphub_config = { + "git_config": { + "git_url": "", + "git_branch": "main", + "user_config": { + "name": "", + "password": "" + } + } + } + public.writeFile(cls.hub_config_path, json.dumps(apphub_config)) + return json.loads(public.readFile(cls.hub_config_path)) + + def install_apphub(self,get): + + git_install = GitInstall.install_git() + if not git_install: + return public.return_message(-1, 0, public.lang("If the installation fails, check the network or install git manually")) + + return public.return_message(0, 0, public.lang("The environment was successfully installed")) + + def get_hub_apps(self): + ''' + @name 获取外部应用列表 + ''' + res = [] + try: + if os.path.exists(AppHub.hub_apps_path): + res=json.loads(public.readFile(self.hub_apps_path)) + except: + pass + return res + + def generate_apphub(self, get): + ''' + @name 解析外部应用列表 + ''' + apps = [] + if not os.path.isdir(self.hub_home_path): + return public.return_message(-1, 0, public.lang("The apphub directory does not exist")) + for name in os.listdir(self.hub_home_path): + app_dir = os.path.join(self.hub_home_path, name) + if not os.path.isdir(app_dir): continue + + app_info=public.readFile(os.path.join(app_dir, 'app.json')) + if not app_info: continue + + try: + app_info = json.loads(app_info) + except Exception as e: + continue + + if "reuse" not in app_info: app_info["reuse"] = True + if "icon" not in app_info: app_info["icon"] = "" + if "sort" not in app_info: app_info["sort"] = 999 + if "cpu" not in app_info: app_info["cpu"] = 0 + if "mem" not in app_info: app_info["mem"] = 0 + if "disk" not in app_info: app_info["disk"] = 10240 + if "installed" not in app_info: app_info["installed"] = False + if "updateat" not in app_info: app_info["updateat"] = 0 + + apps.append(app_info) + + self.apphub_apps = apps + + public.writeFile(self.hub_apps_path, json.dumps(apps, indent=4, ensure_ascii=False)) + + self.generate_apphub_icon() + + return public.return_message(0, 0, public.lang("The resolution was successful")) + + def generate_apphub_icon(self): + ''' + @name 创建外部应用图标 + #/static/img/soft_ico/apphub/ico-apphub_xxx.png + ''' + apphub_ico_path = "{}/BTPanel/static/img/soft_ico/apphub/".format(public.get_panel_path()) + if os.path.exists(apphub_ico_path): + public.ExecShell("rm -rf {}".format(apphub_ico_path)) + public.ExecShell("mkdir -p {}".format(apphub_ico_path)) + + for name in os.listdir(self.hub_home_path): + app_dir = os.path.join(self.hub_home_path, name,'icon.png') + if not os.path.exists(app_dir): continue + + app_icon_path = os.path.join(apphub_ico_path, "ico-apphub_{}.png".format(name)) + public.ExecShell("cp {} {}".format(app_dir,app_icon_path)) + return True + + def set_apphub_git(self, get): + ''' + @name 设置git配置 + @param get: git_url, git_branch, user, password + ''' + config = self.get_config() + git_config = config.get("git_config", {}) + git_config["git_url"] = get.git_url.strip() + git_config["git_branch"] = get.git_branch.strip() + if "name" in get and "password" in get: + git_config["user_config"] = { + "name": get.get("name", ""), + "password": get.get("password", "") + } + config["git_config"] = git_config + public.writeFile(self.hub_config_path, json.dumps(config, indent=4, ensure_ascii=False)) + return public.return_message(0, 0, public.lang("GIT INFORMATION IS SUCCESSFULLY CONFIGURED")) + + def import_git_apphub(self,get): + ''' + @name 从git导入外部应用 + @param None + ''' + if not GitInstall.installed(): + return public.return_message(-1, 0, public.lang("If you don't have a git environment, please install git first")) + + abs_path = os.path.dirname(self.hub_home_path) + if not os.path.exists(abs_path): os.makedirs(abs_path) + + gitconfig = self.get_config() + if not gitconfig or not gitconfig.get("git_config", {}).get("git_url", ""): + return public.return_message(-1, 0, public.lang("Please set the git information first")) + + git_url = gitconfig.get("git_config", {}).get("git_url", "") + git_user = gitconfig.get("git_config", {}).get("user_config", {}) + git_branch = gitconfig.get("git_config", {}).get("git_branch", {}) + + git = GitTool(project_path=abs_path, git_url=git_url,user_config=git_user,git_id="-1") + public.ExecShell("rm -rf /tmp/git_-1_log.log") + res = git.pull(git_branch) + + if res is not None: + return public.return_message(-1, 0, public.lang("Import from git failed")) + + #解析全部应用 + res = self.generate_apphub(get) + if not res["status"]: + return public.return_message(-1, 0, res["msg"]) + #删除模板 + public.ExecShell("rm -rf {}".format(os.path.join(AppHub.hub_home_path, "templates"))) + + public.set_module_logs('apphub', 'import_git_apphub', 1) + return public.return_message(0, 0, public.lang("Import from git successful")) + + def import_zip_apphub(self, get): + ''' + @name 从压缩到包导入外部应用 + @param get: sfile: zip文件路径 + ''' + sfile = get.sfile.strip() + files = sfile.split(",") + + for sfile in files: + + if not sfile.endswith(('.zip', '.gz')): + return public.return_message(-1, 0, public.lang("The file format is incorrect, please select the zip or gz file")) + + if not os.path.exists(self.hub_home_path): + os.makedirs(self.hub_home_path) + + if sfile.endswith('.zip'): + res, err = public.ExecShell("unzip -o {} -d {}".format(sfile, self.hub_home_path)) + elif sfile.endswith('.gz'): + res, err = public.ExecShell("tar -xzvf {} -C {}".format(sfile, self.hub_home_path)) + else: + err = "{},Unsupported file formats".format(sfile) + + if err: + return public.return_message(-1, 0, public.lang("Import failure:{}", str(err))) + + res = self.generate_apphub(get) + if not res["status"]: + return public.return_message(-1, 0, res["msg"]) + + public.set_module_logs('apphub', 'import_zip_apphub', 1) + + return public.return_message(0, 0, public.lang("Successful import")) + + def parser_zip_apphub(self, get): + ''' + @name 解析zip包 + @param get: sfile: zip文件路径 + @return app_list: 外部应用列表 + ''' + sfile = get.sfile.strip() + + app_list = [] + + from mod.project.docker.apphub.tool import GzHandler, ZipHandler + if sfile.endswith(".gz"): + handler = GzHandler() + else: + handler = ZipHandler() + + files = handler.get_files(sfile) + + if 'status' in files: + return public.return_message(-1, 0, files['msg']) + + for file, file_struck in files.items(): + if 'app.json' in file_struck and file_struck['app.json']['is_dir'] == 0: + + filename = file_struck['app.json']['fullpath'] + + appinfo = handler.get_file_info(sfile, filename) + if 'status' in appinfo and appinfo['status'] == False: + return public.return_message(-1, 0, appinfo['msg']) + + try: + appinfo = json.loads(appinfo['data']) + appinfo["parser_from"] = sfile + app_list.append(appinfo) + except: + pass + + return app_list \ No newline at end of file diff --git a/mod/project/docker/apphub/tool.py b/mod/project/docker/apphub/tool.py new file mode 100644 index 00000000..956a609f --- /dev/null +++ b/mod/project/docker/apphub/tool.py @@ -0,0 +1,190 @@ +import os +import json +import shutil +import datetime +import tarfile +import zipfile +import public + + +class BaseCompressHandler: + """压缩文件处理基类""" + + def __init__(self): + pass + + def get_files(self, sfile): + """获取压缩包内文件列表""" + pass + + def get_file_info(self, sfile,filename): + """获取压缩包内文件信息""" + pass + + def check_file_exists(self, file_path): + """检查文件是否存在""" + if not os.path.exists(file_path): + return False + return True + + +class GzHandler(BaseCompressHandler): + """tar.gz压缩文件处理类""" + + def get_filename(self, item): + """获取压缩包文件名""" + filename = item.name + try: + filename = item.name.encode('cp437').decode('gbk') + except: + pass + if item.isdir(): + filename += '/' + return filename + + def check_file_type(self, file_path): + """检查文件是否为tar文件""" + if not tarfile.is_tarfile(file_path): + if file_path[-3:] == ".gz": + return False, 'This is not tar.gz archive file, the gz archive file does not support preview, only decompression' + return False, 'Not a valid tar.gz archive file' + return True, '' + + def get_files(self, sfile): + """获取压缩包内文件列表""" + if not self.check_file_exists(sfile): + return public.returnMsg(False, 'FILE_NOT_EXISTS') + + is_valid, message = self.check_file_type(sfile) + if not is_valid: + return public.returnMsg(False, message) + + zip_file = tarfile.open(sfile) + data = {} + for item in zip_file.getmembers(): + file_name = self.get_filename(item) + + temp_list = file_name.split("/") + + sub_data = data + for name in temp_list: + if not name: continue + if name not in sub_data: + if file_name.endswith(name) and not ".{}".format(name) in file_name: + sub_data[name] = { + 'file_size': item.size, + 'filename': name, + 'fullpath': file_name, + 'date_time': public.format_date(times=item.mtime), + 'is_dir': 1 if item.isdir() else 0 + } + else: + sub_data[name] = {} + sub_data = sub_data[name] + + zip_file.close() + return data + + def get_file_info(self, sfile, filename): + """获取压缩包内文件信息""" + if not self.check_file_exists(sfile): + return public.returnMsg(False, 'FILE_NOT_EXISTS') + + tmp_path = '{}/tmp/{}'.format(public.get_panel_path(), public.md5(sfile + filename)) + result = {} + result['status'] = True + result['data'] = '' + with tarfile.open(sfile, 'r') as zip_file: + try: + zip_file.extract(filename, tmp_path) + result['data'] = public.readFile('{}/{}'.format(tmp_path, filename)) + except: + pass + public.ExecShell("rm -rf {}".format(tmp_path)) + return result + + +class ZipHandler(BaseCompressHandler): + """zip压缩文件处理类""" + + def check_file_type(self, sfile, is_close=False): + """检查文件是否为zip文件""" + zip_file = None + try: + zip_file = zipfile.ZipFile(sfile) + except: + pass + + if is_close and zip_file: + zip_file.close() + + return zip_file + + def get_filename(self, item): + """获取压缩包文件名""" + path = item.filename + try: + path_name = path.encode('cp437').decode('utf-8') + except: + try: + path_name = path.encode('cp437').decode('gbk') + path_name = path_name.encode('utf-8').decode('utf-8') + except: + path_name = path + + return path_name + + def get_files(self, sfile): + """获取压缩包内文件列表""" + if not self.check_file_exists(sfile): + return public.returnMsg(False, 'FILE_NOT_EXISTS') + + zip_file = self.check_file_type(sfile) + if not zip_file: + return public.returnMsg(False, 'NOT_ZIP_FILE') + + data = {} + for item in zip_file.infolist(): + file_name = self.get_filename(item) + + temp_list = file_name.lstrip("./").split("/") + + sub_data = data + for name in temp_list: + if not name: continue + if name not in sub_data: + if file_name.endswith(name): + sub_data[name] = { + 'file_size': item.file_size, + 'compress_size': item.compress_size, + 'compress_type': item.compress_type, + 'filename': name, + 'fullpath': file_name, + 'date_time': datetime.datetime(*item.date_time).strftime("%Y-%m-%d %H:%M:%S"), + 'is_dir': 1 if item.is_dir() else 0 + } + else: + sub_data[name] = {} + sub_data = sub_data[name] + + zip_file.close() + return data + + def get_file_info(self, sfile,filename): + """获取压缩包内文件信息""" + if not self.check_file_exists(sfile): + return public.returnMsg(False, 'FILE_NOT_EXISTS') + + result = {} + result['status'] = True + result['data'] = '' + with zipfile.ZipFile(sfile, 'r') as zip_file: + for item in zip_file.infolist(): + z_filename = self.get_filename(item) + if z_filename == filename: + buff = zip_file.read(item.filename) + encoding, srcBody = public.decode_data(buff) + result['encoding'] = encoding + result['data'] = srcBody + break + return result diff --git a/mod/project/docker/comMod.py b/mod/project/docker/comMod.py index ee6a596c..f266c651 100644 --- a/mod/project/docker/comMod.py +++ b/mod/project/docker/comMod.py @@ -1,8 +1,8 @@ # coding: utf-8 # ------------------------------------------------------------------- -# 宝塔Linux面板 +# aaPanel # ------------------------------------------------------------------- -# Copyright (c) 2015-2099 宝塔软件(http://bt.cn) All rights reserved. +# Copyright (c) 2015-2099 aaPanel(www.aapanel.com) All rights reserved. # ------------------------------------------------------------------- # Author: wzz # ------------------------------------------------------------------- @@ -21,13 +21,18 @@ os.chdir("/www/server/panel") import public from mod.project.docker.app.appManageMod import AppManage +# from mod.project.docker.runtime.runtimeManage import RuntimeManage +# from mod.project.docker.sites.sitesManage import SitesManage +from mod.project.docker.app.sub_app.ollamaMod import OllamaMod +from mod.project.docker.apphub.apphubManage import AppHub from btdockerModelV2 import dk_public as dp -class main(AppManage): +class main(AppManage, OllamaMod): def __init__(self): super(main, self).__init__() + OllamaMod.__init__(self) # 2024/6/26 下午5:49 获取所有已部署的项目列表 def get_project_list(self, get): @@ -119,7 +124,7 @@ class main(AppManage): time.sleep(2) except Exception as e: - return public.returnResult(False, str(e)) + return public.return_message(-1, 0, str(e)) # 2024/6/26 下午8:55 获取指定compose.yml的docker-compose ps def get_project_ps(self, get): @@ -163,7 +168,21 @@ class main(AppManage): continue l["Ports"] += "{}:{}->{}/{},".format(p["URL"], p["PublishedPort"], p["TargetPort"], p["Protocol"]) - + #构造容器详情所需的ports 实现参考了containerModel.struct_container_ports + ports_data = dict() + for port in l["Publishers"]: + key = str(port["TargetPort"]) + "/" + port["Protocol"] + if key not in ports_data.keys(): + ports_data[str(port["TargetPort"]) + "/" + port["Protocol"]] = [{ + "HostIp": port["URL"], + "HostPort": str(port["PublishedPort"]) + }] if port["URL"] != "" else None + else: + ports_data[str(port["TargetPort"]) + "/" + port["Protocol"]].append({ + "HostIp": port["URL"], + "HostPort": str(port["PublishedPort"]) + }) + l["ports"] =ports_data if hasattr(get, '_ws'): setattr(get._ws, 'btws_get_project_ps_{}'.format(get.path), True) get._ws.send(json.dumps(self.wsResult( @@ -173,7 +192,158 @@ class main(AppManage): time.sleep(2) except Exception as e: - return public.returnResult(False, str(e)) + return public.return_message(-1, 0, str(e)) + + # 2024/11/11 14:34 获取所有正在运行的容器信息和已安装的应用信息 + def get_some_info(self, get): + ''' + @name 获取所有正在运行的容器信息和已安装的应用信息 + ''' + get.type = get.get("type", "container") + if not get.type in ("container", "app"): + return public.return_message(-1, 0, public.lang("Only container and app types are supported")) + + if get.type == "container": + from btdockerModelV2.dockerSock import container + sk_container = container.dockerContainer() + sk_container_list = sk_container.get_container() + + data = [] + for container in sk_container_list: + if not "running" in container["State"]: continue + + port_list = [] + for p in container["Ports"]: + if not "PublicPort" in p: continue + if not p["PublicPort"] in port_list: + port_list.append(p["PublicPort"]) + + data.append({ + "id": container["Id"], + "name": container["Names"][0].replace("/", ""), + "status": container["State"], + "image": container["Image"], + "created_time": container["Created"], + "ports": port_list, + }) + + return public.return_message(0, 0, data) + else: + get.row = 10000 + installed_apps = self.get_installed_apps(get)['message'] + not_allow_category = ("Database", "System") + if installed_apps and installed_apps.get('data', []): + for app in installed_apps["data"]: + if not "running" in app["status"]: + installed_apps["data"].remove(app) + if app["apptype"] in not_allow_category: + installed_apps["data"].remove(app) if app in installed_apps["data"] else None + + # return public.returnResult(status=installed_apps["status"], data=installed_apps["data"]) + return public.return_message(0, 0, installed_apps) + + def generate_apphub(self, get): + ''' + @name 解析外部应用列表 + @author csj <2025/7/9> + @return dict{"status":True/False,"msg":"提示信息"} + ''' + return AppHub().generate_apphub(get) + + def create_app(self,get): + ''' + @name 创建应用 + @author csj <2025/7/9> + @return dict{"status":True/False,"msg":"提示信息"} + ''' + if get.get("appid","0") == "-1": # 从apphub创建应用 + self.templates_path = os.path.join(AppHub.hub_home_path, "templates") + self.apps_json_file = os.path.join(AppHub.hub_home_path, "apps.json") + + version = get.get("version","latest") + app_name = get.get("app_name","") + + if not os.path.exists(self.templates_path): + os.makedirs(self.templates_path) + + #/www/dk_project/dk_app/apphub/apphub/templates/app_name/version + app_version_path = os.path.join(AppHub.hub_home_path, app_name, version) + if not os.path.exists(app_version_path): + return public.return_message(-1, 0, public.lang("Version {} for applying {} does not exist", (version, app_name))) + + # /www/dk_project/dk_app/apphub/apphub/templates/app_name + app_template_path = os.path.join(self.templates_path, app_name) + + public.ExecShell("\cp -r {} {}".format(app_version_path,app_template_path)) + + return super().create_app(get) + + def get_apphub_config(self, get): + ''' + @name 获取apphub配置 + @author csj <2025/7/9> + @return dict{"status":True/False,"data":{}} + ''' + return public.return_message(0, 0, AppHub.get_config()) + + def set_apphub_git(self,get): + ''' + @name 设置外部应用的git地址 + @author csj <2025/7/9> + @param get: git_url, git_branch, user, password + ''' + if not hasattr(get, 'git_url') or not get.git_url: + return public.return_message(-1, 0, public.lang("GIT ADDRESS IS NOT SET")) + if not hasattr(get, 'git_branch') or not get.git_branch: + return public.return_message(-1, 0, public.lang("The branch name is not set")) + + return AppHub().set_apphub_git(get) + + def import_git_apphub(self,get): + ''' + @name 从git导入外部应用 + @author csj <2025/7/9> + ''' + return AppHub().import_git_apphub(get) + + def install_apphub(self,get): + ''' + @name 安装apphub所需环境 + @author csj <2025/7/9> + ''' + return AppHub().install_apphub(get) + + def import_zip_apphub(self,get): + ''' + @name 从zip包导入外部应用 + @author csj <2025/7/9> + @param get: sfile: zip文件路径 + ''' + if not hasattr(get, 'sfile') or not get.sfile: + return public.return_message(-1, 0, public.lang("The zip file path is not set")) + + return AppHub().import_zip_apphub(get) + + def parser_zip_apphub(self,get): + ''' + @name 解析zip包 + @author csj <2025/7/9> + @param get: sfile: zip文件路径 + @return dict{"status":True/False,"data":[]} + ''' + if not hasattr(get, 'sfile') or not get.sfile: + return public.return_message(-1, 0, public.lang("Please select the file path")) + + app_list = [] + files = get.sfile.split(',') + for sfile in files: + get.sfile = sfile + + apps = AppHub().parser_zip_apphub(get) + app_list.extend(apps) + public.print_log(app_list) + return public.return_message(0, 0, app_list) + if __name__ == '__main__': diff --git a/mod/project/docker/composeMod.py b/mod/project/docker/composeMod.py index 636bbe0c..32a7acbc 100644 --- a/mod/project/docker/composeMod.py +++ b/mod/project/docker/composeMod.py @@ -1,8 +1,8 @@ # coding: utf-8 # ------------------------------------------------------------------- -# 宝塔Linux面板 +# aaPanel # ------------------------------------------------------------------- -# Copyright (c) 2015-2099 宝塔软件(http://bt.cn) All rights reserved. +# Copyright (c) 2015-2099 aaPanel(www.aapanel.com) All rights reserved. # ------------------------------------------------------------------- # Author: wzz # ------------------------------------------------------------------- @@ -49,7 +49,7 @@ def check_file(func): func(self, get, *args, **kwargs) - if get.def_name in ("create", "up", "update", "start", "stop", "restart"): + if get.def_name in ("create", "up", "update", "start", "stop", "restart","rebuild"): get._ws.send( json.dumps(self.wsResult(True, public.lang(" {} completed, if the log no exception to close this window!\r\n",get.option), data=-1, code=-1))) except Exception as e: @@ -249,7 +249,7 @@ class main(Compose): @param get @return dict{"status":True/False,"msg":"提示信息"} ''' - self.set_tail("80") + self.set_tail("10") get.option = "Read the logs" command = self.set_type(1).set_path(get.path).get_compose_logs() @@ -280,8 +280,12 @@ class main(Compose): try: config_body = public.readFile(get.path) - env_body = public.readFile( - get.path.replace("docker-compose.yaml", ".env").replace("docker-compose.yml", ".env")) + # env_body = public.readFile(get.path.replace("docker-compose.yaml", ".env").replace("docker-compose.yml", ".env")) + # 获取文件路径 有些情况不是用标准文件名进行启动容器的 + file_path = os.path.dirname(get.path) + env_path = os.path.join(file_path, ".env") + # 判断路径下.env 文件是否存在 + env_body = public.readFile(env_path) if os.path.exists(env_path) else "" if hasattr(get, '_ws'): get._ws.send(json.dumps(self.wsResult(True, public.lang("Get ahead"), data={ "config": config_body if config_body else "", @@ -350,8 +354,8 @@ class main(Compose): return public.writeFile(get.path, get.config) - public.writeFile(get.path.replace("docker-compose.yaml", ".env").replace("docker-compose.yml", ".env"), - get.env) + env_path = os.path.join(os.path.dirname(get.path), ".env") + public.writeFile(env_path,get.env) # self.up(get) @@ -491,18 +495,21 @@ class main(Compose): ))) return - template_path = os.path.join(self.compose_project_path, "templates/{}".format(get.template_name)) + #添加编排模板 ---------- 可以直接引用composeModel.add_template + template_path = os.path.join(self.compose_project_path, "{}".format(get.template_name)) + compose_path = os.path.join(template_path,"docker-compose.yaml") + env_path = os.path.join(template_path,".env") pdata = { "name": get.template_name, "remark": "", - "path": os.path.join(template_path, "docker-compose.yaml"), + "path": template_path, + "add_in_path":1 } template_id = dp.sql("templates").insert(pdata) if not os.path.exists(template_path): os.makedirs(template_path, 0o755, True) - public.writeFile(pdata['path'], get.config) - public.writeFile(pdata['path'].replace("docker-compose.yaml", ".env").replace("docker-compose.yml", ".env"), - get.env) + public.writeFile(compose_path, get.config) + public.writeFile(env_path,get.env) get.remark = get.get("remark/s", "") stacks_info = dp.sql("stacks").where("name=?", (public.xsssec(get.project_name))).find() @@ -517,13 +524,17 @@ class main(Compose): } dp.sql("stacks").insert(pdata) else: - if hasattr(get, '_ws'): - get._ws.send(json.dumps(self.wsResult( - False, - public.lang("The project name already exists, please delete it before adding it!"), - code=3, - ))) - return + check_status = public.ExecShell("docker-compose ls |grep {}".format(get.path))[0] + if not check_status: + dp.sql("stacks").where("name=?", (public.xsssec(get.project_name))).delete() + else: + if hasattr(get, '_ws'): + get._ws.send(json.dumps(self.wsResult( + False, + public.lang("The project name already exists, please delete it before adding it!"), + code=3, + ))) + return self.up(get) @@ -559,24 +570,6 @@ class main(Compose): name_map.pop(bt_compose_name) public.writeFile(config_path, json.dumps(name_map)) - if not os.path.exists(get.path): - command = self.set_type(0).set_compose_name(get.project_name).get_compose_delete_for_ps() - else: - command = self.set_type(0).set_path(get.path).get_compose_delete() - stdout, stderr = public.ExecShell(command) - if "invalid compose project" in stderr: - command = self.set_type(0).set_compose_name(get.project_name).get_compose_delete_for_ps() - public.ExecShell(command) - - # public.ExecShell("rm -rf {}".format(os.path.dirname(get.path))) - if hasattr(get, '_ws'): - get._ws.send(json.dumps(self.wsResult( - True, - public.lang("Delete container orchestration"), - data=-1, - code=0 - ))) - stacks_list = dp.sql("stacks").select() compose_list = self.ls(get) for i in stacks_list: @@ -589,7 +582,33 @@ class main(Compose): else: dp.sql("stacks").where("name=?", (i['name'])).delete() - dp.write_log("Delete container orchestration [{}] succeeded!".format(public.xsssec(get.project_name))) + if not os.path.exists(get.path): + command = self.set_type(0).set_compose_name(get.project_name).get_compose_delete_for_ps() + else: + command = self.set_type(0).set_path(get.path).get_compose_delete() + stdout, stderr = public.ExecShell(command) + if "invalid compose project" in stderr: + command = self.set_type(0).set_compose_name(get.project_name).get_compose_delete_for_ps() + stdout, stderr = public.ExecShell(command) + + if stderr and "Error" in stderr: + if hasattr(get, '_ws'): + get._ws.send(json.dumps(self.wsResult( + False, + "Removal fails, check if the compose.yaml file format is correct:\r\n{}".format(stderr.replace("\n", "\r\n")), + data=-1, + code=4, + ))) + return + + if hasattr(get, '_ws'): + get._ws.send(json.dumps(self.wsResult( + True, + public.lang("Delete container orchestration"), + data=-1, + code=0 + ))) + # 2024/6/27 下午8:39 批量删除指定compose.yaml的docker-compose编排 def batch_delete(self, get): ''' diff --git a/mod/project/docker/docker_compose/base.py b/mod/project/docker/docker_compose/base.py index 1945156f..1c93e63c 100644 --- a/mod/project/docker/docker_compose/base.py +++ b/mod/project/docker/docker_compose/base.py @@ -1,8 +1,8 @@ # coding: utf-8 # ------------------------------------------------------------------- -# 宝塔Linux面板 +# aaPanel # ------------------------------------------------------------------- -# Copyright (c) 2015-2099 宝塔软件(http://bt.cn) All rights reserved. +# Copyright (c) 2015-2099 aaPanel(www.aapanel.com) All rights reserved. # ------------------------------------------------------------------- # Author: wzz # ------------------------------------------------------------------- @@ -81,6 +81,18 @@ class Compose(): else: return [self.cmd, '-f', self.path, 'down'] + def kill_compose(self) -> List[str] or str: + if self.type == 0: + return self.cmd + ' -f {} kill'.format(self.path) + else: + return [self.cmd, '-f', self.path, 'kill'] + + def rm_compose(self) -> List[str] or str: + if self.type == 0: + return self.cmd + ' -f {} rm -f'.format(self.path) + else: + return [self.cmd, '-f', self.path, 'rm', '-f'] + def get_compose_delete(self) -> List[str] or str: if self.type == 0: return self.cmd + ' -f {} down --volumes --remove-orphans'.format(self.path) @@ -158,6 +170,50 @@ class Compose(): # public.print_log("wsResult rs -- {} ".format(rs)) return rs + # 2024/8/1 下午3:29 构造分页数据 + def get_page(self, data, get): + get.row = get.get("row", 20) + # get.row = 20000 + get.p = get.get("p", 1) + import page + page = page.Page() + info = {'count': len(data), 'row': int(get.row), 'p': int(get.p), 'uri': {}, 'return_js': ''} + + result = {'page': page.GetPage(info)} + n = 0 + result['data'] = [] + for i in range(info['count']): + if n >= page.ROW: break + if i < page.SHIFT: continue + n += 1 + result['data'].append(data[i]) + return result + + # 2024/7/29 下午4:22 检查web服务是否正常 + def check_web_status(self): + ''' + @name 检查web服务是否正常 + @param "data":{"参数名":""} <数据类型> 参数描述 + @return dict{"status":True/False,"msg":"提示信息"} + ''' + from mod.base.web_conf import util + webserver = util.webserver() + if webserver != "nginx" or webserver is None: + return public.returnResult(status=False, msg="Domain name access only supports Nginx. Please go to the software store to install Nginx or choose not to use domain name access!") + + from panelSite import panelSite + site_obj = panelSite() + site_obj.check_default() + + wc_err = public.checkWebConfig() + if not wc_err: + return public.returnResult( + status=False, + msg='ERROR: An error in the configuration file has been detected. Please eliminate it before proceeding.

' + + wc_err.replace("\n", '
') + '
' + ) + + return public.return_message(0, 0, '') def pageResult(self, status: bool = True, msg: str = "", data: any = None, diff --git a/mod/project/docker/gpuMod.py b/mod/project/docker/gpuMod.py new file mode 100644 index 00000000..51097dc4 --- /dev/null +++ b/mod/project/docker/gpuMod.py @@ -0,0 +1,65 @@ +import sys + +from mod.project.docker.app.gpu import nvidia + +if "/www/server/panel/class" not in sys.path: + sys.path.append('/www/server/panel/class') + +import public + +def gpu_class(): + return 'nvidia' + + +class main: + def __init__(self): + self.driver = None + if gpu_class() == 'nvidia': + self.driver = nvidia.NVIDIA() + # elif gpu_class() == 'amd': + # self.driver = amd.AMD() + + def get_all_device_info(self, get): + """ + 获取所有gpu信息 + Args: + get: + + Returns: + dict: All gpu information are included. + """ + public.print_log('gpu info') + if not self.driver.support: + return public.return_message(0, 0, {}) + return public.return_message(0, 0, self.driver.get_all_device_info()) + + def get_info_by_index(self, get): + """ + 返回驱动信息 + Args: + get: + + Returns: + + """ + index = 0 + if not self.driver.support: + return public.return_message(0, 0, {}) + try: + index = int(get.index) + except ValueError as e: + public.returnResult(False, "{} need an int: {}".format(self.get_info_by_index.__name__, e)) + return public.return_message(0, 0, self.driver.get_info_by_index(index)) + + def get_system_info(self, get): + """ + 返回驱动信息 + Args: + get: + + Returns: + + """ + if not self.driver.support: + return public.return_message(0, 0, {}) + return public.return_message(0, 0, self.driver.get_system_info()) diff --git a/mod/project/docker/proxy/base.py b/mod/project/docker/proxy/base.py index cd9347b7..d41ecaec 100644 --- a/mod/project/docker/proxy/base.py +++ b/mod/project/docker/proxy/base.py @@ -1,8 +1,8 @@ # coding: utf-8 # ------------------------------------------------------------------- -# 宝塔Linux面板 +# aaPanel # ------------------------------------------------------------------- -# Copyright (c) 2015-2099 宝塔软件(http://bt.cn) All rights reserved. +# Copyright (c) 2015-2099 aaPanel(www.aapanel.com) All rights reserved. # ------------------------------------------------------------------- # Author: wzz # ------------------------------------------------------------------- diff --git a/mod/project/proxy/comMod.py b/mod/project/proxy/comMod.py index 1e70ff3f..e5754f6e 100644 --- a/mod/project/proxy/comMod.py +++ b/mod/project/proxy/comMod.py @@ -208,6 +208,7 @@ server {{ proxy_set_header X-Real-Port $remote_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; + {SNI} {timeout_conf} {websocket_support} {custom_conf} @@ -224,6 +225,9 @@ server {{ @param "data":{"参数名":""} <数据类型> 参数描述 @return dict{"status":True/False,"msg":"提示信息"} ''' + sni_conf = "" + if get.proxy_pass.startswith("https://"): + sni_conf = "proxy_ssl_server_name on;" get.proxy_conf = self._template_proxy_conf.format( ip_limit="", gzip="", @@ -234,6 +238,7 @@ server {{ proxy_pass=get.proxy_pass, proxy_host=get.proxy_host, proxy_path=get.proxy_path, + SNI=sni_conf, custom_conf="", timeout_conf=get.proxy_timeout, websocket_support=self._init_proxy_conf["websocket"]["websocket_conf"], @@ -1274,6 +1279,9 @@ server {{ return public.return_message(-1, 0,"[{}] already exists in Basicauth, please delete it before adding a reverse proxy!".format( get.proxy_path)) + sni_conf = "" + if get.proxy_pass.startswith("https://"): + sni_conf = "proxy_ssl_server_name on;" get.proxy_conf = self._template_proxy_conf.format( ip_limit="", gzip="", @@ -1284,6 +1292,7 @@ server {{ proxy_pass=get.proxy_pass, proxy_host=get.proxy_host, proxy_path=get.proxy_path, + SNI=sni_conf, custom_conf="", timeout_conf=get.proxy_timeout, websocket_support=get.proxy_json_conf["websocket"]["websocket_conf"], @@ -2058,7 +2067,9 @@ server {{ proxy_pass_target=info["proxy_pass"] if int(get.get("keepuri", 1)) ==0: proxy_pass_target+="/" - + sni_conf = "" + if info["proxy_pass"].startswith("https://"): + sni_conf = "proxy_ssl_server_name on;" tmp_conf = info["template_proxy_conf"].format( basic_auth=proxy_auth_conf, ip_limit=p_ip_limit_conf, @@ -2073,6 +2084,7 @@ server {{ timeout_conf=timeout_conf, websocket_support=p_websocket_support, rewrite_direct=rewriteconf, + SNI=sni_conf, ) if tmp_conf.find("rewrite_direct") == -1 and tmp_conf.find("rewrite ") == -1 and rewriteconf != "": rewrite_conf="{}\n\tproxy_pass".format(rewriteconf) diff --git a/script/modify_ports_multiple_services.py b/script/modify_ports_multiple_services.py index 76a18139..7725c5dc 100644 --- a/script/modify_ports_multiple_services.py +++ b/script/modify_ports_multiple_services.py @@ -82,9 +82,6 @@ def ols_update_config(status, is_restart=True): content = content.replace(pattern_ANY, '*:' + file) public.writeFile(os.path.join(listen_custom_dir, filename), content) - # 重启ols - public.webservice_operation('openlitespeed') - return True, "The ols configuration modification was successful!" @@ -129,18 +126,21 @@ def apache_update_config(status, is_restart=True) -> tuple[bool, str]: if os.path.exists(bar): shutil.move(bar, bar + '.bar') - # 修改虚拟主机端口配置 - site_name = public.M('sites').field('name,project_type').select() - for name in site_name: - # 判断是否是Node项目 - if name['project_type'] == 'Node': - check_node_project(name['name'], status) - path = os.path.join(public.get_panel_path(), 'vhost', 'apache', name['name'] + '.conf') - if os.path.exists(path): - content = public.readFile(path) - content = content.replace(f'*:{port_80}', f'*:{new_port_80}') - content = content.replace(f'*:{port_443}', f'*:{new_port_443}') - public.writeFile(path, content) + # 修改虚拟主机端口配置,匹配所有网站配置文件 + site_path_list = get_apache_site_conf() + for path in site_path_list: + if os.path.exists(path): + content = public.readFile(path) + content = content.replace(f'*:{port_80}', f'*:{new_port_80}') + content = content.replace(f'*:{port_443}', f'*:{new_port_443}') + content = content.replace(f'[::]:{port_80}', f'[::]:{new_port_80}') + content = content.replace(f'[::]:{port_443}', f'[::]:{new_port_443}') + public.writeFile(path, content) + + # 处理node + site_name = public.M('sites').where('project_type = ?', 'Node').field('name').select() + for name in site_name: + check_node_project(name, status) if os.path.exists(main_config): content = public.readFile(main_config) @@ -154,6 +154,8 @@ def apache_update_config(status, is_restart=True) -> tuple[bool, str]: content = content.replace(f'Listen {port_888}', f'Listen {new_port_888}') content = content.replace(f'*:{port_888}', f'*:{new_port_888}') content = content.replace(f'*:{port_80}', f'*:{new_port_80}') + content = content.replace(f'[::]:{port_888}', f'[::]:{new_port_888}') + content = content.replace(f'[::]:{port_80}', f'[::]:{new_port_80}') public.writeFile(httpd_vhosts, content) if os.path.exists(httpd_ssl): @@ -161,8 +163,6 @@ def apache_update_config(status, is_restart=True) -> tuple[bool, str]: content = content.replace(f'{port_443}', f'{new_port_443}') public.writeFile(httpd_ssl, content) - ok = public.webservice_operation('apache') - return True, ' ' # 检测node项目,多服务下默认走nginx @@ -178,12 +178,53 @@ def check_node_project(site_name, is_ = 'enable'): shutil.move(conf + '.barduo', conf ) return True +# 获取apache所有站点配置文件 +def get_apache_site_conf(): + pata =os.path.join(public.get_panel_path() , 'vhost' ,'apache') + if not os.path.exists(pata): + return [] + + conf_files = [] + for entry in os.listdir(pata): + full_path = os.path.join(pata, entry) + + if os.path.isfile(full_path) and entry.endswith('.conf'): + conf_files.append(full_path) + + return conf_files + def multi_service_check_repair(): try: # 尝试重新修改配置 ols_update_config('enable') apache_update_config('enable') - public.webservice_operation('nginx') + + # 重载服务 + setup_path = public.get_setup_path() + services = [ + ( + f"{setup_path}/nginx/sbin/nginx", + "/etc/init.d/nginx reload", + "pkill -9 nginx && sleep 1 && /etc/init.d/nginx start" + ), + ( + f"{setup_path}/apache/bin/apachectl", + "/etc/init.d/httpd reload", + None + ), + ( + "/usr/local/lsws/bin/lswsctrl", + "/usr/local/lsws/bin/lswsctrl reload", + None + ) + ] + + for path, cmd, err_cmd in services: + if os.path.exists(path): + result = public.ExecShell(cmd) + if "nginx" in path and result[1].find("nginx.pid") != -1: + public.ExecShell(err_cmd) + public.print_log("The modification of multiple service ports has been completed") except Exception as e: public.print_log(str(e)) diff --git a/task.py b/task.py index b9251c19..e93b037f 100644 --- a/task.py +++ b/task.py @@ -1960,6 +1960,53 @@ def malicious_file_scanning(): time.sleep(60*60*6) +# 多服务守护任务,仅在多服务下执行,每5分钟检查一次 +def multi_web_server_daemon(): + while True: + try: + if public.get_multi_webservice_status(): + import psutil + from panel_site_v2 import panelSite + from script.restart_services import DaemonManager + + obj = panelSite() + pid_paths = { + 'nginx': "/www/server/nginx/logs/nginx.pid", + 'apache': "/www/server/apache/logs/httpd.pid", + 'openlitespeed': "/tmp/lshttpd/lshttpd.pid" + } + + for service_name, pid_path in pid_paths.items(): + sys.path.append("..") + daemon_info = DaemonManager.safe_read() + if service_name not in daemon_info: + continue + + is_running = False + if os.path.exists(pid_path): + pid = public.readFile(pid_path) + + if pid: + try: + psutil.Process(int(pid)) + is_running = True + except: + pass + + if not is_running: + public.WriteLog("Service Daemon", f"Multi-WebServer: An error occurred in {service_name}. Initiate the repair") + obj.cheak_port_conflict('enable') + obj.ols_update_config('enable') + obj.apache_update_config('enable') + public.webservice_operation('nginx') + public.WriteLog("Service Daemon", f"Multi-WebServer: The {service_name} repair was successful") + break + except Exception as e: + public.print_log(f"Multi-WebServer: {e}") + + time.sleep(300) + + def run_thread(): global thread_dict,task_obj thread_keys = thread_dict.keys() @@ -1988,7 +2035,7 @@ def run_thread(): "update_software_list": update_software_list, # 每5小时更新软件列表 "malicious_file_scanning": malicious_file_scanning, # 每6小时进行恶意文件扫描 "domain_ssl_service": domain_ssl_service, # 每6小时进行域名SSL服务 - + "multi_web_server_daemon": multi_web_server_daemon, # 多服务守护每5分钟检测一次 "maillog_event": maillog_event, # 邮局日志事件监控 event loop "aggregate_maillogs": aggregate_maillogs_task, # 每分钟聚合邮局日志 "mail_automations": schedule_automations_forever, # 每分钟邮局自动化任务 @@ -2073,12 +2120,14 @@ def scan_log_site(): #预安装网站监控报表 def check_site_monitor(): site_total_uninstall = '{}/data/site_total_uninstall.pl'.format(public.get_panel_path()) + sleep_time = 60 while True: install_name = '' if not os.path.exists(site_total_uninstall): - if public.GetWebServer() !="openlitespeed" and not os.path.exists("/etc/systemd/system/site_total.service") and not os.path.exists(os.path.join(public.get_panel_path(),"plugin/monitor/info.json")) and public.M('tasks').where('name=? and status=?',(install_name,'0')).count() < 1: - install_name = 'Install [site_total_monitor]' + if public.GetWebServer() !="openlitespeed" and not os.path.exists("/etc/systemd/system/site_total.service") and not os.path.exists(os.path.join(public.get_panel_path(),"plugin/monitor/info.json")) and public.M('tasks').where('name=? and status=?',('Install [site_total_monitor]','0')).count() < 1: execstr="curl https://node.aapanel.com/site_total/install.sh|bash" + install_name = 'Install [site_total_monitor]' + sleep_time=86400 else: if os.path.exists("/etc/systemd/system/site_total.service"): install_name = 'Uninstall [site_total_monitor]' @@ -2086,7 +2135,7 @@ def check_site_monitor(): if install_name: public.M('tasks').add('id,name,type,status,addtime,execstr',(None, install_name,'execshell','0',time.strftime('%Y-%m-%d %H:%M:%S'),execstr)) public.writeFile('/tmp/panelTask.pl','True') - time.sleep(60) + time.sleep(sleep_time) # 检测防爆破计划任务 def check_breaking_through_cron():